From b87d5c96bbeac3f97d6dc99cb17d36582d5e8534 Mon Sep 17 00:00:00 2001 From: flash555588 Date: Sat, 27 Jun 2026 10:00:40 +0800 Subject: [PATCH] Budget GLTF external resources before parse --- CHANGELOG.md | 1 + main.js | 1164 +++++++++++++------------- src/view/model-render-budget.test.ts | 95 ++- src/view/model-render-budget.ts | 164 ++++ 4 files changed, 841 insertions(+), 583 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be79e63..13d1e57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- Performance: include external `.gltf` buffers and textures in pre-parse render budgeting so large resource-backed scenes start with safer quality settings. - Performance: defer reading-mode `3d` and `3dgrid` code block runtime imports until the rendered block approaches the viewport, reducing workspace restore work for long notes with offscreen model blocks. - Performance: deduplicate and limit concurrent Three.js `.gltf` external buffer/texture reads, reducing I/O and memory spikes for large resource-heavy models. - Performance: reuse cached Three.js renderable indexes while disposing switched or closed models, reducing repeated scene-tree walks for large assemblies. diff --git a/main.js b/main.js index b66c463..6a9e2e2 100644 --- a/main.js +++ b/main.js @@ -1,10 +1,10 @@ -"use strict";var jM=Object.defineProperty;var _J=Object.getOwnPropertyDescriptor;var gJ=Object.getOwnPropertyNames;var vJ=Object.prototype.hasOwnProperty;var I=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(i){throw t=[i],i}};var Be=(n,e)=>{for(var t in e)jM(n,t,{get:e[t],enumerable:!0})},EJ=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of gJ(e))!vJ.call(n,r)&&r!==t&&jM(n,r,{get:()=>e[r],enumerable:!(i=_J(e,r))||i.enumerable});return n};var SJ=n=>EJ(jM({},"__esModule",{value:!0}),n);function pd(n,e,t){return`${n}::${e}::${t}`}function KF(n,e){return!!(n.cacheVersion===2&&n.converterId&&n.converterCacheKey&&n.sourcePath&&n.sourceExt&&n.targetExt==="glb"&&n.outputPath&&n.outputExt==="glb"&&Number.isFinite(n.createdAt)&&e-n.createdAt<=2592e6)}function YF(n,e=Date.now()){let t=new Map;for(let i of n){if(!KF(i,e))continue;let r=pd(i.sourcePath,i.sourceExt,i.targetExt),s=t.get(r);(!s||i.createdAt>s.createdAt)&&t.set(r,i)}return[...t.values()].sort((i,r)=>r.createdAt-i.createdAt).slice(0,200)}function TJ(n,e){if(n.length>200)return null;let t=new Set,i=Number.POSITIVE_INFINITY;for(let r of n){if(!KF(r,e))return null;let s=pd(r.sourcePath,r.sourceExt,r.targetExt);if(t.has(s)||r.createdAt>i)return null;t.add(s),i=r.createdAt}return n}function AJ(n,e){return!!n&&!!e&&n.cacheVersion===e.cacheVersion&&n.converterId===e.converterId&&n.converterCacheKey===e.converterCacheKey&&n.sourcePath===e.sourcePath&&n.sourceExt===e.sourceExt&&n.targetExt===e.targetExt&&n.outputPath===e.outputPath&&n.outputExt===e.outputExt&&n.createdAt===e.createdAt&&n.warnings.join(` +"use strict";var QM=Object.defineProperty;var TJ=Object.getOwnPropertyDescriptor;var AJ=Object.getOwnPropertyNames;var xJ=Object.prototype.hasOwnProperty;var I=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(i){throw t=[i],i}};var Be=(n,e)=>{for(var t in e)QM(n,t,{get:e[t],enumerable:!0})},RJ=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of AJ(e))!xJ.call(n,r)&&r!==t&&QM(n,r,{get:()=>e[r],enumerable:!(i=TJ(e,r))||i.enumerable});return n};var bJ=n=>RJ(QM({},"__esModule",{value:!0}),n);function pd(n,e,t){return`${n}::${e}::${t}`}function QF(n,e){return!!(n.cacheVersion===2&&n.converterId&&n.converterCacheKey&&n.sourcePath&&n.sourceExt&&n.targetExt==="glb"&&n.outputPath&&n.outputExt==="glb"&&Number.isFinite(n.createdAt)&&e-n.createdAt<=2592e6)}function ZF(n,e=Date.now()){let t=new Map;for(let i of n){if(!QF(i,e))continue;let r=pd(i.sourcePath,i.sourceExt,i.targetExt),s=t.get(r);(!s||i.createdAt>s.createdAt)&&t.set(r,i)}return[...t.values()].sort((i,r)=>r.createdAt-i.createdAt).slice(0,200)}function MJ(n,e){if(n.length>200)return null;let t=new Set,i=Number.POSITIVE_INFINITY;for(let r of n){if(!QF(r,e))return null;let s=pd(r.sourcePath,r.sourceExt,r.targetExt);if(t.has(s)||r.createdAt>i)return null;t.add(s),i=r.createdAt}return n}function IJ(n,e){return!!n&&!!e&&n.cacheVersion===e.cacheVersion&&n.converterId===e.converterId&&n.converterCacheKey===e.converterCacheKey&&n.sourcePath===e.sourcePath&&n.sourceExt===e.sourceExt&&n.targetExt===e.targetExt&&n.outputPath===e.outputPath&&n.outputExt===e.outputExt&&n.createdAt===e.createdAt&&n.warnings.join(` `)===e.warnings.join(` -`)}function jF(n=[],e){var c;function t(){return YF([...a.values()])}function i(f){a.clear();for(let d of f)a.set(pd(d.sourcePath,d.sourceExt,d.targetExt),d)}let r=Date.now(),s=(c=TJ(n,r))!=null?c:YF(n,r),a=new Map(s.map(f=>[pd(f.sourcePath,f.sourceExt,f.targetExt),f]));function o(){let f=t();i(f),e==null||e(f)}return(n.length!==s.length||s.some((f,d)=>!AJ(f,n[d])))&&(e==null||e([...s])),{get(f,d,h){return a.get(pd(f,d,h))},set(f){a.set(pd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,h){let u=a.delete(pd(f,d,h));return u&&o(),u},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var qM=I(()=>{"use strict"});function Xa(n){return n.trim().toLowerCase().replace(/^\./,"")}function ZM(n){return xJ.get(Xa(n))}function Ya(n){let e=ZM(n);return!!(e!=null&&e.enabled)}function Kp(n){return["splat","spz","sog"].includes(Xa(n))}function Cl(){return qF.filter(n=>n.enabled).map(n=>n.ext)}var qF,xJ,Ka=I(()=>{"use strict";qF=[{ext:"glb",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"gltf",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"stl",family:"mesh",strategy:"direct",directLoader:"custom-stl",enabled:!0},{ext:"obj",family:"mesh",strategy:"direct",directLoader:"babylon",converterId:"obj2gltf",outputFormat:"glb",enabled:!0},{ext:"ply",family:"mesh",strategy:"direct",directLoader:"custom-ply",enabled:!0},{ext:"fbx",family:"mesh",strategy:"convert",converterId:"fbx2gltf",outputFormat:"glb",enabled:!0},{ext:"step",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"stp",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"iges",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"igs",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"brep",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"sldprt",family:"cad",strategy:"convert",converterId:"sldprt",outputFormat:"glb",enabled:!0},{ext:"3mf",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0},{ext:"dae",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0}],xJ=new Map(qF.map(n=>[n.ext,n]))});var LTe,Wc,QM=I(()=>{"use strict";Ka();LTe=new Set(Cl()),Wc={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"three-direct-glb",useThreeRenderer:!0,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function ZF(n){let e={...n},t=new Set;return{getState:()=>e,setState(i){e={...e,...i};let r=[...t];for(let s of r)s()},subscribe(i){return t.add(i),()=>{t.delete(i)}}}}var QF=I(()=>{"use strict"});function eE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function Xh(n){return[eE(n[0]),eE(n[1]),eE(n[2])]}function $F(n){return Object.is(eE(n),n)}var tE=I(()=>{"use strict"});function JF(n){return n.trim()}function RJ(n){let e=JF(n);return/^Registered from model group with /.test(e)||/^Registered from model component metadata with /.test(e)||/^Merged from [\d,]+ generic tiny meshes? to avoid over-splitting renderer fragments\.$/.test(e)||/^Component ID: .+\.$/.test(e)||/^Occurrence ID: .+\.$/.test(e)||/^Part number: .+\.$/.test(e)||/^Component path: .+\.$/.test(e)||/^Format lineage: .+\.$/.test(e)||/^[\d,]+ triangles? and [\d,]+ vertex(?:es|s)\.$/.test(e)||/^Bounding size [-+0-9.eE]+ x [-+0-9.eE]+ x [-+0-9.eE]+\.$/.test(e)||/^Uses material ".+"\.$/.test(e)}function bJ(n){return n.map(JF).filter(e=>e.length>0)}function e1(n){let e=bJ(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!RJ(t)).slice(0,16)}function $M(n){let e=e1(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function Yh(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:e1(n),registeredMatches:void 0}}var iE=I(()=>{"use strict"});function s1(n){let e=ZF(MJ),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(h=>console.error("[AI3D] Auto-save failed:",h))},500)}function o(){i+=1,a()}function l(){let h=e.getState();return{stateSchemaVersion:t1,settings:h.settings,convertedAssetRecords:h.convertedAssetRecords,modelAssetProfiles:h.modelAssetProfiles,agentDraft:h.agentDraft,agentPlan:h.agentPlan,lastKnowledgeGeneration:h.lastKnowledgeGeneration}}function c(h=!1){return h&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;ru[m]!==_)&&(e.setState({settings:{...u,...h}}),o())},setLastKnowledgeGeneration(h){h!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:h}),o())},async load(){var p,g,v,x,S;let h=await n.loadData();if(!h)return;d=!!((p=h.settings)!=null&&p.locale);let u=h.stateSchemaVersion===t1,{profiles:m,changed:_}=yJ(h.modelAssetProfiles,{trustPersistedSchema:u});e.setState({settings:{...Wc,...(g=h.settings)!=null?g:{}},convertedAssetRecords:(v=h.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(x=h.agentDraft)!=null?x:"",agentPlan:(S=h.agentPlan)!=null?S:null,lastKnowledgeGeneration:FJ(h.lastKnowledgeGeneration)}),(_||!u)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(E=>console.error("[AI3D] Normalized state save failed:",E))},IJ))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(h=>console.error("[AI3D] Final save on dispose failed:",h))}}}function yJ(n,e={}){if(!n||typeof n!="object")return{profiles:{},changed:!1};let t={},i=!1;for(let[r,s]of Object.entries(n)){if(!s||typeof s!="object")continue;if(e.trustPersistedSchema&&CJ(s)){t[r]=s;continue}let a=new Date().toISOString(),o=wJ(s.registeredParts,r);i=i||o.changed,t[r]={tags:Array.isArray(s.tags)?s.tags:[],notes:typeof s.notes=="string"?s.notes:"",annotations:Array.isArray(s.annotations)?s.annotations:[],registeredParts:o.parts,analysisVersion:typeof s.analysisVersion=="string"?s.analysisVersion:void 0,reportNotePath:typeof s.reportNotePath=="string"?s.reportNotePath:void 0,analysisSidecarPath:typeof s.analysisSidecarPath=="string"?s.analysisSidecarPath:void 0,previewImagePaths:Array.isArray(s.previewImagePaths)?s.previewImagePaths.filter(l=>typeof l=="string"):void 0,knowledgeIndexPath:typeof s.knowledgeIndexPath=="string"?s.knowledgeIndexPath:void 0,createdAt:typeof s.createdAt=="string"?s.createdAt:a,updatedAt:typeof s.updatedAt=="string"?s.updatedAt:a}}return{profiles:t,changed:i}}function CJ(n){return Array.isArray(n.tags)&&typeof n.notes=="string"&&Array.isArray(n.annotations)&&(n.registeredParts===void 0||Array.isArray(n.registeredParts)&&n.registeredParts.length<=rE)&&ja(n.analysisVersion)&&ja(n.reportNotePath)&&ja(n.analysisSidecarPath)&&ja(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function jp(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"&&i.trim().length>0):[];return Number.isFinite(e)?t.slice(0,e):t}function qp(n,e=Number.POSITIVE_INFINITY){return Array.isArray(n)&&(!Number.isFinite(e)||n.length<=e)&&n.every(t=>typeof t=="string"&&t.trim().length>0)}function i1(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Xh(e):void 0}function nE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&$F(Number(e)))}function a1(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function PJ(n){return n===void 0||a1(n)===n}function e0(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function r1(n){return n===void 0||e0(n)===n}function o1(n){return n==="direct"||n==="convert"?n:void 0}function DJ(n){return n===void 0||o1(n)===n}function ja(n){return n===void 0||typeof n=="string"}function JM(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function LJ(n){if(!n||typeof n!="object")return!1;let e=n;return"registeredMatches"in e?!1:typeof e.partId=="string"&&e.partId.length>0&&typeof e.assetId=="string"&&e.assetId.length>0&&typeof e.name=="string"&&e.name.length>0&&ja(e.parentPartId)&&PJ(e.source)&&ja(e.componentId)&&ja(e.occurrenceId)&&ja(e.partNumber)&&ja(e.componentPath)&&ja(e.category)&&qp(e.meshRefs,16)&&JM(e.childCount)&&qp(e.materialRefs,32)&&(e.bbox===void 0||nE(e.bbox))&&(e.center===void 0||nE(e.center))&&JM(e.triangleCount)&&JM(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&r1(e.sourceFormat)&&r1(e.effectiveFormat)&&DJ(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&qp(e.observations,16)&&$M(e)&&qp(e.inferredFunctions)&&qp(e.knowledgeTags)&&ja(e.notePath)&&typeof e.reviewed=="boolean"}function OJ(n){if(n.length===0)return;if(n.length>rE)return null;let e=new Set;for(let t of n){if(!LJ(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function n1(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function NJ(n){return n.length<=rE?n:[...n].sort((e,t)=>{var s,a;let i=n1(e)-n1(t);if(i!==0)return i;let r=t.confidence-e.confidence;return r!==0?r:((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0)}).slice(0,rE)}function wJ(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=OJ(n);if(t!==null)return{parts:t,changed:!1};let i=[],r=new Set,s=!1;for(let o of n){if(!o||typeof o!="object")continue;let l=o;"registeredMatches"in l&&(s=!0),(Array.isArray(l.meshRefs)&&l.meshRefs.length>16||Array.isArray(l.materialRefs)&&l.materialRefs.length>32||Array.isArray(l.observations)&&l.observations.length>16||l.bbox!==void 0&&!nE(l.bbox)||l.center!==void 0&&!nE(l.center))&&(s=!0);let c=typeof l.partId=="string"?l.partId:"",f=typeof l.name=="string"?l.name:"";if(!c||!f)continue;let d=typeof l.assetId=="string"&&l.assetId?l.assetId:e,h=`${d}:${c}`;if(r.has(h))continue;r.add(h);let u={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:a1(l.source),componentId:typeof l.componentId=="string"?l.componentId:void 0,occurrenceId:typeof l.occurrenceId=="string"?l.occurrenceId:void 0,partNumber:typeof l.partNumber=="string"?l.partNumber:void 0,componentPath:typeof l.componentPath=="string"?l.componentPath:void 0,category:typeof l.category=="string"?l.category:void 0,meshRefs:jp(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:jp(l.materialRefs,32),bbox:i1(l.bbox),center:i1(l.center),triangleCount:Number.isFinite(l.triangleCount)?Math.max(0,Math.floor(Number(l.triangleCount))):void 0,vertexCount:Number.isFinite(l.vertexCount)?Math.max(0,Math.floor(Number(l.vertexCount))):void 0,materialName:typeof l.materialName=="string"?l.materialName:null,sourceFormat:e0(l.sourceFormat),effectiveFormat:e0(l.effectiveFormat),loadStrategy:o1(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:jp(l.observations,16),inferredFunctions:jp(l.inferredFunctions),knowledgeTags:jp(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=Yh(u);$M(u)||(s=!0),i.push(m)}let a=NJ(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function FJ(n){if(!n||typeof n!="object")return null;let e=typeof n.modelPath=="string"?n.modelPath:"";return e?{modelPath:e,reportNotePath:typeof n.reportNotePath=="string"?n.reportNotePath:void 0,analysisSidecarPath:typeof n.analysisSidecarPath=="string"?n.analysisSidecarPath:void 0,knowledgeIndexPath:typeof n.knowledgeIndexPath=="string"?n.knowledgeIndexPath:void 0,partNoteCount:Number.isFinite(n.partNoteCount)?Math.max(0,Math.floor(n.partNoteCount)):0,previewImageCount:Number.isFinite(n.previewImageCount)?Math.max(0,Math.floor(n.previewImageCount)):0,generatedAt:typeof n.generatedAt=="string"?n.generatedAt:new Date().toISOString(),status:n.status==="failed"||n.status==="pending"?n.status:"success",warningCount:Number.isFinite(n.warningCount)?Math.max(0,Math.floor(n.warningCount)):0}:null}function t0(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var MJ,rE,IJ,t1,i0=I(()=>{"use strict";QM();QF();tE();iE();MJ={settings:{...Wc},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},rE=256,IJ=50,t1=1});var r0,l1=I(()=>{"use strict";r0={"settings.title":"AI 3d model workbench","settings.folders":"Folders","settings.behavior":"Behavior","settings.converters":"Converters","settings.converterMenu":"Model converters","settings.converterMenu.desc":"Closed by default. Open this section only when you want to manually enable an optional local conversion route.","settings.environmentInspector":"Environment inspector","settings.environmentInspector.desc":"Closed by default. Open this section when you need to configure command paths or run environment checks.","settings.paths":"Converter paths","settings.diagnostics":"Converter command diagnostics","settings.performance":"Performance & display","settings.mobileSupport":"Mobile support","settings.knowledgeGeneration":"Knowledge generation","settings.sourceModelFolder":"Source model folder","settings.sourceModelFolder.desc":"Vault folder where source model files are stored.","settings.reportFolder":"Report folder","settings.reportFolder.desc":"Vault folder where generated knowledge notes are saved.","settings.partFolder":"Part notes folder","settings.partFolder.desc":"Vault folder where generated part note drafts are saved.","settings.snapshotFolder":"Snapshot folder","settings.snapshotFolder.desc":"Vault folder where exported snapshots are saved.","settings.autoGenerateKnowledgeNotes":"Auto-generate knowledge notes","settings.autoGenerateKnowledgeNotes.desc":"Reserved for a future automation flow. For now, generate notes manually from the command palette.","settings.annotationPreviewMode":"Annotation preview mode","settings.annotationPreviewMode.desc":"Choose how bound note previews render in annotation popovers and the editor.","settings.annotationPreviewMode.plainText":"Plain text","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"Annotation display mode","settings.annotationDisplayMode.desc":"Choose how bookmark pins appear over the model.","settings.annotationDisplayMode.snippet":"Full snippet","settings.annotationDisplayMode.surface":"Single surface","settings.annotationDisplayMode.dot":"Single dot","settings.previewRendererRollout":"Preview compatibility mode","settings.previewRendererRollout.desc":"Controls how widely the Three.js preview path is used for single-model previews (GLB, GLTF, STL, PLY, OBJ). Switch back to Compatibility mode if pin projection, occlusion, edit pins, snapshots, or toolbar behavior regress. 3dgrid is not affected by this setting.","settings.previewRendererRollout.babylonSafe":"Compatibility mode","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view (Recommended)","settings.useThreeRenderer":"Use Three.js renderer","settings.useThreeRenderer.desc":"Toggle between Three.js (faster, lighter) and Babylon.js (full compatibility) for single-model previews. Three.js supports GLB/GLTF/STL/PLY/OBJ. 3dgrid always uses Babylon.js.","settings.experimentalThreeWorkbench":"Experimental Three workbench","settings.experimentalThreeWorkbench.desc":"Try the Three.js workbench path for direct GLB/GLTF files only. If loading fails, the file view falls back to Babylon.js automatically.","settings.autoRotateDefault":"Auto-rotate by default","settings.autoRotateDefault.desc":"Start model previews with auto-rotation enabled.","settings.snapshotNaming":"Snapshot naming","settings.snapshotNaming.desc":"How exported snapshot files are named.","settings.snapshotNaming.modelName":"Model name + timestamp","settings.snapshotNaming.timestamp":"Timestamp only","settings.logLevel":"Log level","settings.logLevel.desc":"Controls plugin runtime log verbosity in the developer console.","settings.language":"Language","settings.language.desc":"Display language for plugin settings. Takes effect immediately.","settings.analysisMode":"AI drafting mode","settings.analysisMode.desc":"Controls whether knowledge-note generation stays local or also requests a sanitized remote draft. Raw model upload is blocked by the current client.","settings.analysisMode.local":"Local evidence only","settings.analysisMode.hybrid":"Local evidence + remote draft","settings.analysisMode.remote":"Remote draft from evidence","settings.serviceBaseUrl":"Draft service URL","settings.serviceBaseUrl.desc":"Optional base URL for a service that accepts POST /draft-note. Leave empty to keep all drafting local.","settings.sendGeometrySummaryToRemote":"Send geometry summary","settings.sendGeometrySummaryToRemote.desc":"Allow sanitized mesh counts, bounds, part candidates, annotation coordinates, and nearest-part links to be included in remote draft input.","settings.sendPreviewImagesToRemote":"Send preview image references","settings.sendPreviewImagesToRemote.desc":"Allow generated preview image paths to be listed in the remote draft input. Image bytes are not uploaded by this client.","settings.sendRawModelToRemote":"Send raw model file","settings.sendRawModelToRemote.desc":"Reserved for future explicit upload support. If enabled manually, remote draft requests are blocked instead of uploading the model.","settings.enableCad":"Enable cad conversion for step, iges, and brep files","settings.enableCad.desc":"Enable cad conversion for step, iges, and brep formats. Requires cadquery and trimesh in your python environment.","settings.enableObj2gltf":"Enable obj2gltf converter (experimental)","settings.enableObj2gltf.desc":"Keep obj direct loading as the default. Enable this only if you want an optional local normalization route through obj2gltf.","settings.preferObj2gltf":"Prefer obj2gltf for obj","settings.preferObj2gltf.desc":"Recommended default is off. Turn this on only when you want normalized output files or direct obj loading is not good enough.","settings.enableFbx2gltf":"Enable FBX2glTF converter","settings.enableFbx2gltf.desc":"Enable conversion for fbx files via FBX2glTF. Requires the FBX2glTF binary installed locally.","settings.enableMesh":"Enable mesh conversion for 3mf and dae files","settings.enableMesh.desc":"Enable conversion for 3mf and dae formats via python trimesh. Requires trimesh, numpy, networkx, and pycollada in your python environment.","settings.enableSldprt":"Enable sldprt conversion for SolidWorks files","settings.enableSldprt.desc":"Enable conversion for SolidWorks sldprt files via FreeCAD. Requires FreeCAD installed locally.","settings.mobileSupport.desc":"On iOS, iPadOS, and Android, direct formats like GLB, GLTF, STL, OBJ, and PLY are supported. Local converter settings and diagnostics remain desktop-only.","settings.pythonCmd":"Path to the python command for cad conversion","settings.pythonCmd.desc":"Optional path to the python command used for cad conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.freecadCmd":"Path to the FreeCAD command for sldprt conversion","settings.freecadCmd.desc":"Optional path to the FreeCAD command used for SolidWorks file conversion. Windows usually uses FreeCADCmd.exe, macOS usually uses FreeCADCmd, and Linux usually uses freecadcmd. Overrides auto-discovery when set.","settings.obj2gltfCmd":"Path to the obj2gltf command","settings.obj2gltfCmd.desc":"Optional path to the obj2gltf command. Windows usually uses obj2gltf.cmd, and macOS and Linux usually use obj2gltf. Overrides auto-discovery when set.","settings.fbx2gltfCmd":"FBX2glTF command path","settings.fbx2gltfCmd.desc":"Optional path to the FBX2glTF command. Windows usually uses FBX2glTF.exe, and macOS and Linux usually use FBX2glTF. Overrides auto-discovery when set.","settings.assimpCmd":"Path to the python command for 3mf and dae conversion","settings.assimpCmd.desc":"Optional path to the python command used for 3mf and dae conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.diagnostics.desc":"Shows the exact executable path the plugin would use right now and runs lightweight self-checks for Python environments and converter CLIs.","settings.diagnostics.idle":"Diagnostics are off by default. Click Check now to run them manually.","settings.diagnostics.checkNow":"Check now","settings.diagnostics.checking":"Checking...","settings.diagnostics.refreshed":"Converter command diagnostics refreshed.","settings.diagnostics.checkingAvailability":"Checking converter command availability...","settings.diagnostics.available":"available","settings.diagnostics.notFound":"not found","settings.diagnostics.sourceLabel":"Source","settings.diagnostics.commandLabel":"Command","settings.diagnostics.resolvedPathLabel":"Resolved path","settings.diagnostics.selfCheckLabel":"Self-check","settings.diagnostics.selfCheckOk":"passed","settings.diagnostics.selfCheckFailed":"failed","settings.diagnostics.cadPythonCheck":"Python packages (cadquery, trimesh)","settings.diagnostics.meshPythonCheck":"Python packages (trimesh, numpy, networkx, collada)","settings.diagnostics.freecadCmdCheck":"FreeCADCmd launch probe","settings.diagnostics.obj2gltfCheck":"obj2gltf launch probe","settings.diagnostics.fbx2gltfCheck":"FBX2glTF launch probe","settings.canvasHeight":"Default canvas height","settings.canvasHeight.desc":"Default height (px) for inline model previews. Range: 200\u2013800.","settings.autoRotateSpeed":"Auto-rotate speed","settings.autoRotateSpeed.desc":"Rotation speed when auto-rotate is enabled. Range: 0.1\u20132.0.","settings.renderQuality":"Render quality","settings.renderQuality.desc":"Higher quality uses more GPU resources. Affects anti-aliasing and resolution.","settings.renderScale":"Resolution scale","settings.renderScale.desc":"Render resolution multiplier. 1.0 = native, 0.5 = half, 2.0 = double (supersampling). Range: 0.25\u20132.0.","modelLoad.warningTitle":"Model preview unavailable","modelLoad.warningMessage":"{ext} files need the {converterName} converter enabled in plugin settings before they can load.","modelLoad.warningHint":"Enable the matching converter in plugin settings, then reload this file.","modelLoad.mobileWarningMessage":"{ext} files need local conversion tools that are unavailable on iOS, iPadOS, and Android.","modelLoad.mobileWarningHint":"Open this file on desktop, or convert it to GLB, GLTF, OBJ, STL, or PLY first.","modelLoad.errorTitle":"Couldn't display this model","modelLoad.errorMessage":"Failed to load: {reason}","modelLoad.errorHint":"Check the file format or open the developer console for details.","headingPin.showSingle":"Show linked pin","headingPin.showMultiple":"Show linked pins","headingPin.linkedTo":"Pin linked to: {models}","helper.resetViewLabel":"Reset view","helper.resetViewDone":"Reset","helper.copyModelInfoLabel":"Copy model info as Markdown","helper.copySelectedPartInfoLabel":"Copy selected part info","helper.noSelectedPart":"Select a part first","helper.copied":"Copied!","helper.failed":"Failed","helper.toggleWireframeLabel":"Toggle wireframe","helper.wireframeOn":"Wireframe","helper.wireframeOff":"Solid","helper.toggleAxesLabel":"Toggle orientation axes","helper.axesOn":"Axes on","helper.axesOff":"Axes off","helper.toggleBoundingBoxLabel":"Toggle bounding box","helper.boundingBoxOn":"Bounding box on","helper.boundingBoxOff":"Bounding box off","helper.toggleFocusSelectionLabel":"Focus selected part","helper.focusSelectionOn":"Focus mode on","helper.focusSelectionOff":"Focus mode off","helper.toggleDisassemblyLabel":"Toggle disassembly mode","helper.disassemblyOn":"Disassembly on","helper.disassemblyOff":"Disassembly off","helper.changeResolutionLabel":"Change resolution","helper.resolutionValue":"Resolution: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Toggle distance measurement","helper.measurementOn":"Measurement on","helper.measurementOff":"Measurement off","helper.clearMeasurementsLabel":"Clear measurements","helper.measurementsCleared":"Cleared","helper.copyMeasurementsLabel":"Copy measurements","helper.noMeasurements":"No measurements","helper.measurementsCopied":"Measurements copied","helper.calibrateLabel":"Calibrate measurement scale","helper.calibrateTitle":"Measurement Calibration","helper.calibrateCurrent":"Current size:","helper.calibrateReal":"Real size:","helper.calibrateLock":"Lock ratio","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Scale applied","helper.calibrateResetDone":"Scale reset","helper.calibrateOpen":"Calibration panel opened","helper.calibrateClose":"Calibration panel closed","helper.removePreviewLabel":"Remove preview","helper.copySnapshotLabel":"Copy snapshot","helper.saveSnapshotLabel":"Save snapshot to vault","helper.saved":"Saved!","helper.downloadSnapshotLabel":"Download snapshot","helper.downloaded":"Downloaded!","helper.toggleAnnotationLabel":"Toggle annotation mode","helper.toggleAnnotationsVisibilityLabel":"Show or hide annotations","helper.annotateOn":"Annotation mode on","helper.annotateOff":"Annotation mode off","helper.annotationsVisible":"Annotations shown","helper.annotationsHidden":"Annotations hidden","helper.enableInteractionLabel":"Enable touch interaction","helper.disableInteractionLabel":"Return to scroll mode","helper.interactionOn":"Model interaction on","helper.interactionOff":"Scroll mode on","helper.showMoreActionsLabel":"Show more actions","helper.hideMoreActionsLabel":"Hide extra actions","helper.moreActionsShown":"More actions shown","helper.moreActionsHidden":"Extra actions hidden","helper.interactAction":"Interact","helper.scrollAction":"Scroll","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"No model","workbench.emptyText":'Use the "import 3D model" command to load a GLB, GLTF, STL, OBJ, or PLY file.',"workbench.modelTitle":"Model","workbench.studioTitle":"AI Model Workbench","workbench.studioTagline":"Inspect, annotate, and turn 3D assets into linked notes.","workbench.navLabel":"Workbench sections","workbench.navGallery":"Gallery","workbench.navLibrary":"Library","workbench.navNotebooks":"Notebooks","workbench.navSettings":"Settings","workbench.sourcesTitle":"Model sources","workbench.layersTitle":"Review layers","workbench.viewModeTitle":"View mode","workbench.modeMesh":"Mesh view","workbench.modeFocus":"Focus selection","workbench.modeMeshShort":"Mesh","workbench.modeFocusShort":"Focus","workbench.previewViewsTitle":"Preview views","workbench.connectionsTitle":"Knowledge connections","workbench.currentModelLabel":"Current model","workbench.noReportYet":"No report note yet","workbench.noIndexYet":"No knowledge index yet. Generate a knowledge note first.","workbench.noModelLoaded":"No model loaded","workbench.disassemblyTitle":"Disassembly","workbench.explodeLabel":"Explode","workbench.summaryTitle":"Summary","workbench.meshesLabel":"Meshes","workbench.splatsLabel":"Splats","workbench.trianglesLabel":"Triangles","workbench.verticesLabel":"Vertices","workbench.materialsLabel":"Materials","workbench.boundingSizeLabel":"Bounds","workbench.centerLabel":"Center","workbench.selectedPartTitle":"Selected Part","workbench.partMeshLabel":"Mesh","workbench.noSelectedPart":"Click a model part to inspect it here.","workbench.tagsTitle":"Tags","workbench.noTagsYet":"No tags yet","workbench.addTagPlaceholder":"Add tag...","workbench.addTagAction":"Add","workbench.annotationsTitle":"Annotations","workbench.exitAnnotate":"Exit annotate","workbench.annotate":"Annotate","workbench.annotateHintActive":"Click the model to add a label \xB7 press Esc to exit","workbench.annotateHintActiveMobile":"Tap the model to add a label. Switch back to Scroll when you want to move through the note again.","workbench.pinCount":"{count} pin(s)","workbench.editAction":"Edit","workbench.deleteAction":"Delete","workbench.resetViewAction":"Reset view","workbench.insertInfoAction":"Insert info","workbench.insertGalleryAction":"Insert Gallery","workbench.insertCompareAction":"Insert Compare","workbench.playAction":"Play","workbench.pauseAction":"Pause","workbench.saveProfileAction":"Save profile","workbench.generateNoteAction":"Generate note","workbench.openNoteAction":"Open note","workbench.openIndexAction":"Open index","workbench.recordTitle":"Specimen card","workbench.recordSubtitle":"Current asset profile","workbench.notesTitle":"Analysis notes","workbench.whereTitle":"Where it connects","workbench.noteReady":"Linked note ready","workbench.indexReady":"Knowledge index ready","workbench.notePending":"Linked note pending","workbench.analysisLabel":"Analysis","workbench.settingsUnavailable":"Open this plugin from Obsidian settings to change workbench options.","workbench.profileSaved":"Profile saved","workbench.viewReset":"View reset","workbench.infoInserted":"Model info inserted","workbench.infoCopied":"Model info copied","workbench.templateInserted":"Template inserted","workbench.templateCopied":"Template copied","workbench.mobileHint":"Mobile tip: tap Interact to move the model, then switch back to Scroll to keep reading the note.","workbench.mobileHintInteractive":"Interaction mode is on. Switch back to Scroll when you want to move through the note again.","directView.mobileHint":"Mobile tip: use the toolbar Interact button to switch between model interaction and note scrolling.","directWorkbench.modelLoadInterrupted":"Model load was interrupted by a newer request.","directWorkbench.backendLabel":"Backend","directWorkbench.routeLabel":"Route","directWorkbench.performanceLabel":"Performance","directWorkbench.partCandidatesLabel":"Part candidates","directWorkbench.knowledgeTitle":"Knowledge","directWorkbench.registeredTitle":"Registered part matches","directWorkbench.registeredLoading":"Checking...","directWorkbench.registeredCount":"{count} match(es)","directWorkbench.registeredEmpty":"No cross-model part match yet","directWorkbench.registeredUnavailable":"Part evidence unavailable","directWorkbench.registeredOpen":"Open","directWorkbench.registeredOpenNote":"Note","directWorkbench.registeredOpenModel":"Model","directWorkbench.registeredSourceModel":"From {model}","directWorkbench.registeredTargetPartNote":"Opens matched part note","directWorkbench.registeredTargetSourceModel":"Opens source model","directWorkbench.registeredTargetUnavailable":"No linked target","workbench.fileNotFound":"File not found: {path}","annotation.selectColor":"Select color {color}","annotation.sectionEmpty":"Section is empty.","modal.selectModel":"Select a 3D model...","main.commandImportModel":"Import a 3D model","main.commandGenerateNote":"Generate knowledge note","main.commandOpenKnowledgeIndex":"Open knowledge index","main.commandClearConversionCache":"Clear conversion cache","main.commandCheckConverters":"Check converters","main.commandCopyDiagnostics":"Copy diagnostics report","main.converterDiagnosticsMobileUnavailable":"Converter diagnostics are only available on desktop. On iOS, iPadOS, and Android, direct formats can still load.","main.diagnosticsCopied":"AI Model Workbench diagnostics copied to clipboard.","main.diagnosticsCopyFailed":"Couldn't copy diagnostics. A sanitized diagnostics note was created instead.","codeBlock.noModelPathOrConfig":"No model path or config specified.","codeBlock.jsonParseError":"JSON parse error: {error}","codeBlock.jsonParseLine":" (line {line})","codeBlock.noModelsInConfig":"No models specified in config.","codeBlock.unsupportedFormat":"Unsupported format: {ext}. Supported: {formats}","codeBlock.splatDisabled":"SPLAT preview is disabled in packaged builds. Local-only .splat support is planned first; .spz/.sog need locally bundled decoders before reevaluation.","codeBlock.noConfigSpecified":"No config specified.","codeBlock.noModelsSpecified":"No models specified.","codeBlock.mobileHint":"Mobile tip: use Interact to manipulate the model, then switch back to Scroll to keep moving through the note.","codeBlock.renderingGrid":"Rendering grid...","codeBlock.composeRequiresSections":'"compose" preset requires a "sections" array.',"codeBlock.composeNoValidSections":"Compose: no valid sections.","codeBlock.unknownPreset":'Unknown preset: "{preset}". Available: compare, showcase, explode, timeline, compose',"codeBlock.presetRequiresModels":'Preset "{preset}" requires {min}-{max} models, got {count}.',"codeBlock.gridFailed":"Grid failed: {reason}","livePreview.mobileHint":"Mobile tip: switch between Interact and Scroll depending on whether you want to move the model or keep reading.","loading.default":"Loading...","loading.preparingModel":"Preparing model...","loading.loadingModel":"Loading model..."}});var c1,f1=I(()=>{"use strict";c1={"settings.title":"AI 3D \u6A21\u578B\u5DE5\u4F5C\u53F0","settings.folders":"\u6587\u4EF6\u5939","settings.behavior":"\u884C\u4E3A","settings.converters":"\u8F6C\u6362\u5668","settings.converterMenu":"\u6A21\u578B\u8F6C\u6362\u5668","settings.converterMenu.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u4F60\u9700\u8981\u624B\u52A8\u542F\u7528\u67D0\u6761\u672C\u5730\u8F6C\u6362\u8DEF\u7EBF\u65F6\u518D\u5C55\u5F00\u3002","settings.environmentInspector":"\u73AF\u5883\u68C0\u67E5\u5668","settings.environmentInspector.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u9700\u8981\u914D\u7F6E\u547D\u4EE4\u8DEF\u5F84\u6216\u624B\u52A8\u6267\u884C\u73AF\u5883\u68C0\u67E5\u65F6\u518D\u5C55\u5F00\u3002","settings.paths":"\u8F6C\u6362\u5668\u8DEF\u5F84","settings.diagnostics":"\u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD","settings.performance":"\u6027\u80FD\u4E0E\u663E\u793A","settings.mobileSupport":"\u79FB\u52A8\u7AEF\u652F\u6301","settings.knowledgeGeneration":"\u77E5\u8BC6\u751F\u6210","settings.sourceModelFolder":"\u6E90\u6A21\u578B\u6587\u4EF6\u5939","settings.sourceModelFolder.desc":"\u5B58\u653E\u6E90 3D \u6A21\u578B\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.reportFolder":"\u62A5\u544A\u6587\u4EF6\u5939","settings.reportFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u77E5\u8BC6\u7B14\u8BB0\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.partFolder":"\u90E8\u4EF6\u7B14\u8BB0\u6587\u4EF6\u5939","settings.partFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u90E8\u4EF6\u7B14\u8BB0\u8349\u7A3F\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.snapshotFolder":"\u5FEB\u7167\u6587\u4EF6\u5939","settings.snapshotFolder.desc":"\u4FDD\u5B58\u5BFC\u51FA\u5FEB\u7167\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.autoGenerateKnowledgeNotes":"\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","settings.autoGenerateKnowledgeNotes.desc":"\u9884\u7559\u7ED9\u540E\u7EED\u81EA\u52A8\u5316\u6D41\u7A0B\u3002\u5F53\u524D\u8BF7\u901A\u8FC7\u547D\u4EE4\u6216\u5DE5\u4F5C\u53F0\u6309\u94AE\u624B\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","settings.annotationPreviewMode":"\u6807\u6CE8\u9884\u89C8\u6A21\u5F0F","settings.annotationPreviewMode.desc":"\u9009\u62E9\u6807\u6CE8\u7ED1\u5B9A\u7B14\u8BB0\u5728\u60AC\u6D6E\u9884\u89C8\u548C\u7F16\u8F91\u5668\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationPreviewMode.plainText":"\u7EAF\u6587\u672C","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"\u6807\u6CE8\u663E\u793A\u6A21\u5F0F","settings.annotationDisplayMode.desc":"\u9009\u62E9\u6A21\u578B\u4E0A\u4E66\u7B7E\u6807\u6CE8\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationDisplayMode.snippet":"\u5B8C\u6574\u7247\u6BB5","settings.annotationDisplayMode.surface":"\u5355\u4E2A\u6807\u7B7E\u9762","settings.annotationDisplayMode.dot":"\u5355\u4E2A\u5706\u70B9","settings.previewRendererRollout":"\u9884\u89C8\u517C\u5BB9\u6A21\u5F0F","settings.previewRendererRollout.desc":"\u63A7\u5236\u5355\u6A21\u578B\u9884\u89C8\uFF08GLB\u3001GLTF\u3001STL\u3001PLY\u3001OBJ\uFF09\u4E2D Three.js \u6E32\u67D3\u8DEF\u5F84\u7684\u542F\u7528\u8303\u56F4\u3002\u53EA\u8981\u51FA\u73B0 pin \u6295\u5F71\u3001\u906E\u6321\u3001\u7F16\u8F91\u6001 pin\u3001\u5FEB\u7167\u6216\u5DE5\u5177\u680F\u884C\u4E3A\u56DE\u9000\uFF0C\u5C31\u5207\u56DE\u201C\u517C\u5BB9\u4F18\u5148\u201D\u3002workbench \u548C 3dgrid \u4E0D\u53D7\u8FD9\u4E2A\u8BBE\u7F6E\u5F71\u54CD\u3002","settings.previewRendererRollout.babylonSafe":"\u517C\u5BB9\u4F18\u5148","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE\uFF08\u63A8\u8350\uFF09","settings.useThreeRenderer":"\u4F7F\u7528 Three.js \u6E32\u67D3\u5668","settings.useThreeRenderer.desc":"\u5728 Three.js\uFF08\u66F4\u5FEB\u3001\u66F4\u8F7B\u91CF\uFF09\u548C Babylon.js\uFF08\u5B8C\u5168\u517C\u5BB9\uFF09\u4E4B\u95F4\u5207\u6362\u5355\u6A21\u578B\u9884\u89C8\u6E32\u67D3\u5668\u3002Three.js \u652F\u6301 GLB/GLTF/STL/PLY/OBJ\u3002\u5DE5\u4F5C\u53F0\u548C 3dgrid \u59CB\u7EC8\u4F7F\u7528 Babylon.js\u3002","settings.experimentalThreeWorkbench":"\u5B9E\u9A8C\u6027 Three \u5DE5\u4F5C\u53F0","settings.experimentalThreeWorkbench.desc":"\u4EC5\u5BF9\u76F4\u8BFB GLB/GLTF \u6587\u4EF6\u5C1D\u8BD5\u4F7F\u7528 Three.js \u5DE5\u4F5C\u53F0\u8DEF\u5F84\u3002\u52A0\u8F7D\u5931\u8D25\u65F6\uFF0C\u6587\u4EF6\u89C6\u56FE\u4F1A\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002","settings.autoRotateDefault":"\u9ED8\u8BA4\u81EA\u52A8\u65CB\u8F6C","settings.autoRotateDefault.desc":"\u542F\u52A8 3D \u9884\u89C8\u65F6\u9ED8\u8BA4\u5F00\u542F\u81EA\u52A8\u65CB\u8F6C\u3002","settings.snapshotNaming":"\u5FEB\u7167\u547D\u540D","settings.snapshotNaming.desc":"\u5BFC\u51FA\u5FEB\u7167\u6587\u4EF6\u7684\u547D\u540D\u65B9\u5F0F\u3002","settings.snapshotNaming.modelName":"\u6A21\u578B\u540D + \u65F6\u95F4\u6233","settings.snapshotNaming.timestamp":"\u4EC5\u65F6\u95F4\u6233","settings.logLevel":"\u65E5\u5FD7\u7EA7\u522B","settings.logLevel.desc":"\u63A7\u5236\u63D2\u4EF6\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6\u3002","settings.language":"\u8BED\u8A00","settings.language.desc":"\u63D2\u4EF6\u8BBE\u7F6E\u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002\u7ACB\u5373\u751F\u6548\u3002","settings.analysisMode":"AI \u8349\u7A3F\u6A21\u5F0F","settings.analysisMode.desc":"\u63A7\u5236\u77E5\u8BC6\u7B14\u8BB0\u751F\u6210\u4FDD\u6301\u672C\u5730\uFF0C\u8FD8\u662F\u989D\u5916\u8BF7\u6C42\u7ECF\u8FC7\u88C1\u526A\u7684\u8FDC\u7A0B\u8349\u7A3F\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4F1A\u963B\u6B62\u539F\u59CB\u6A21\u578B\u4E0A\u4F20\u3002","settings.analysisMode.local":"\u4EC5\u672C\u5730\u8BC1\u636E","settings.analysisMode.hybrid":"\u672C\u5730\u8BC1\u636E + \u8FDC\u7A0B\u8349\u7A3F","settings.analysisMode.remote":"\u57FA\u4E8E\u8BC1\u636E\u7684\u8FDC\u7A0B\u8349\u7A3F","settings.serviceBaseUrl":"\u8349\u7A3F\u670D\u52A1 URL","settings.serviceBaseUrl.desc":"\u53EF\u9009\u7684\u8349\u7A3F\u670D\u52A1\u57FA\u7840\u5730\u5740\uFF0C\u670D\u52A1\u9700\u63A5\u6536 POST /draft-note\u3002\u7559\u7A7A\u65F6\u6240\u6709\u8349\u7A3F\u8F93\u5165\u90FD\u4FDD\u7559\u5728\u672C\u5730\u3002","settings.sendGeometrySummaryToRemote":"\u53D1\u9001\u51E0\u4F55\u6458\u8981","settings.sendGeometrySummaryToRemote.desc":"\u5141\u8BB8\u628A\u7ECF\u8FC7\u88C1\u526A\u7684\u7F51\u683C\u6570\u91CF\u3001\u5305\u56F4\u76D2\u3001\u90E8\u4EF6\u5019\u9009\u3001\u6807\u6CE8\u5750\u6807\u548C\u6700\u8FD1\u90E8\u4EF6\u5173\u8054\u52A0\u5165\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u3002","settings.sendPreviewImagesToRemote":"\u53D1\u9001\u9884\u89C8\u56FE\u5F15\u7528","settings.sendPreviewImagesToRemote.desc":"\u5141\u8BB8\u5728\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u4E2D\u5217\u51FA\u751F\u6210\u7684\u9884\u89C8\u56FE\u8DEF\u5F84\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4E0D\u4F1A\u4E0A\u4F20\u56FE\u7247\u5B57\u8282\u3002","settings.sendRawModelToRemote":"\u53D1\u9001\u539F\u59CB\u6A21\u578B\u6587\u4EF6","settings.sendRawModelToRemote.desc":"\u9884\u7559\u7ED9\u672A\u6765\u663E\u5F0F\u4E0A\u4F20\u652F\u6301\u3002\u82E5\u624B\u52A8\u5F00\u542F\uFF0C\u8FDC\u7A0B\u8349\u7A3F\u8BF7\u6C42\u4F1A\u88AB\u963B\u6B62\uFF0C\u4E0D\u4F1A\u4E0A\u4F20\u6A21\u578B\u3002","settings.enableCad":"\u542F\u7528 CAD \u8F6C\u6362\u5668 (STEP/IGES/BREP)","settings.enableCad.desc":"\u542F\u7528 STEP/IGES/BREP \u683C\u5F0F\u7684 CAD \u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python CadQuery (OpenCASCADE)\u3002\u9700\u8981\uFF1Apip install cadquery trimesh","settings.enableObj2gltf":"\u542F\u7528 obj2gltf \u8F6C\u6362\u5668\uFF08\u5B9E\u9A8C\u6027\uFF09","settings.enableObj2gltf.desc":"\u9ED8\u8BA4\u4F7F\u7528 OBJ \u76F4\u63A5\u52A0\u8F7D\u3002\u4EC5\u5728\u9700\u8981\u672C\u5730\u6807\u51C6\u5316 GLB \u8F93\u51FA\u65F6\u542F\u7528\u3002","settings.preferObj2gltf":"OBJ \u4F18\u5148\u4F7F\u7528 obj2gltf","settings.preferObj2gltf.desc":"\u9ED8\u8BA4\u5173\u95ED\u3002\u4EC5\u5728\u9700\u8981\u6807\u51C6\u5316 GLB \u8F93\u51FA\u6216\u76F4\u63A5 OBJ \u52A0\u8F7D\u6548\u679C\u4E0D\u4F73\u65F6\u5F00\u542F\u3002","settings.enableFbx2gltf":"\u542F\u7528 FBX2glTF \u8F6C\u6362\u5668","settings.enableFbx2gltf.desc":"\u542F\u7528 FBX \u6587\u4EF6\u901A\u8FC7 FBX2glTF \u8F6C\u6362\u3002\u9700\u8981\u672C\u5730\u5B89\u88C5 FBX2glTF \u4E8C\u8FDB\u5236\u6587\u4EF6\u3002","settings.enableMesh":"\u542F\u7528\u7F51\u683C\u8F6C\u6362\u5668 (3MF/DAE)","settings.enableMesh.desc":"\u542F\u7528 3MF \u548C DAE (Collada) \u683C\u5F0F\u7684\u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python trimesh\u3002\u9700\u8981\u5B89\u88C5 Python \u548C trimesh (pip install trimesh numpy networkx pycollada)\u3002","settings.enableSldprt":"\u542F\u7528 SLDPRT \u8F6C\u6362\u5668 (SolidWorks)","settings.enableSldprt.desc":"\u542F\u7528 SolidWorks .sldprt \u6587\u4EF6\u901A\u8FC7 FreeCAD \u8F6C\u6362\u3002\u9700\u8981\u5B89\u88C5 FreeCAD (https://www.freecad.org/downloads.php)\u3002","settings.mobileSupport.desc":"\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0CGLB\u3001GLTF\u3001STL\u3001OBJ\u3001PLY \u8FD9\u7C7B\u76F4\u8BFB\u683C\u5F0F\u53EF\u7528\u3002\u672C\u5730\u8F6C\u6362\u5668\u8BBE\u7F6E\u548C\u547D\u4EE4\u8BCA\u65AD\u4ECD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002","settings.pythonCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF08CAD \u7528\uFF09","settings.pythonCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E CAD \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECAD_CMD\u3002","settings.freecadCmd":"FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF08SLDPRT \u7528\uFF09","settings.freecadCmd.desc":"\u53EF\u9009\u7684 FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E SolidWorks \u6587\u4EF6\u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 FreeCADCmd.exe\uFF0CmacOS \u901A\u5E38\u7528 FreeCADCmd\uFF0CLinux \u901A\u5E38\u7528 freecadcmd\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECADCMD\u3002","settings.obj2gltfCmd":"obj2gltf \u547D\u4EE4\u8DEF\u5F84","settings.obj2gltfCmd.desc":"\u53EF\u9009\u7684 obj2gltf \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 obj2gltf.cmd\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 obj2gltf\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_OBJ2GLTF_CMD\u3002","settings.fbx2gltfCmd":"FBX2glTF \u547D\u4EE4\u8DEF\u5F84","settings.fbx2gltfCmd.desc":"\u53EF\u9009\u7684 FBX2glTF \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 FBX2glTF.exe\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 FBX2glTF\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FBX2GLTF_CMD\u3002","settings.assimpCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF083MF/DAE \u7528\uFF09","settings.assimpCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E 3MF \u548C DAE \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_ASSIMP_CMD\u3002","settings.diagnostics.desc":"\u663E\u793A\u63D2\u4EF6\u5F53\u524D\u5B9E\u9645\u4F7F\u7528\u7684\u53EF\u6267\u884C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5E76\u4E3A Python \u73AF\u5883\u548C\u8F6C\u6362\u5668\u547D\u4EE4\u6267\u884C\u8F7B\u91CF\u81EA\u68C0\u3002","settings.diagnostics.idle":"\u73AF\u5883\u68C0\u67E5\u9ED8\u8BA4\u5173\u95ED\u3002\u70B9\u51FB\u201C\u7ACB\u5373\u68C0\u67E5\u201D\u540E\u624D\u4F1A\u6267\u884C\u3002","settings.diagnostics.checkNow":"\u7ACB\u5373\u68C0\u67E5","settings.diagnostics.checking":"\u68C0\u67E5\u4E2D...","settings.diagnostics.refreshed":"AI 3D \u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD\u5DF2\u5237\u65B0\u3002","settings.diagnostics.checkingAvailability":"\u6B63\u5728\u68C0\u67E5\u8F6C\u6362\u5668\u547D\u4EE4\u53EF\u7528\u6027...","settings.diagnostics.available":"\u53EF\u7528","settings.diagnostics.notFound":"\u672A\u627E\u5230","settings.diagnostics.sourceLabel":"\u6765\u6E90","settings.diagnostics.commandLabel":"\u547D\u4EE4","settings.diagnostics.resolvedPathLabel":"\u89E3\u6790\u8DEF\u5F84","settings.diagnostics.selfCheckLabel":"\u81EA\u68C0","settings.diagnostics.selfCheckOk":"\u901A\u8FC7","settings.diagnostics.selfCheckFailed":"\u5931\u8D25","settings.diagnostics.cadPythonCheck":"Python \u5305\uFF08cadquery\u3001trimesh\uFF09","settings.diagnostics.meshPythonCheck":"Python \u5305\uFF08trimesh\u3001numpy\u3001networkx\u3001collada\uFF09","settings.diagnostics.freecadCmdCheck":"FreeCADCmd \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.obj2gltfCheck":"obj2gltf \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.fbx2gltfCheck":"FBX2glTF \u542F\u52A8\u63A2\u6D4B","settings.canvasHeight":"\u9ED8\u8BA4\u753B\u5E03\u9AD8\u5EA6","settings.canvasHeight.desc":"\u5185\u8054 3D \u9884\u89C8\u7684\u9ED8\u8BA4\u9AD8\u5EA6\uFF08\u50CF\u7D20\uFF09\u3002\u8303\u56F4\uFF1A200\u2013800\u3002","settings.autoRotateSpeed":"\u81EA\u52A8\u65CB\u8F6C\u901F\u5EA6","settings.autoRotateSpeed.desc":"\u542F\u7528\u81EA\u52A8\u65CB\u8F6C\u65F6\u7684\u65CB\u8F6C\u901F\u5EA6\u3002\u8303\u56F4\uFF1A0.1\u20132.0\u3002","settings.renderQuality":"\u6E32\u67D3\u8D28\u91CF","settings.renderQuality.desc":"\u66F4\u9AD8\u8D28\u91CF\u4F7F\u7528\u66F4\u591A GPU \u8D44\u6E90\u3002\u5F71\u54CD\u6297\u952F\u9F7F\u548C\u5206\u8FA8\u7387\u3002","settings.renderScale":"\u6E32\u67D3\u7F29\u653E","settings.renderScale.desc":"\u6E32\u67D3\u5206\u8FA8\u7387\u500D\u6570\u30021.0 = \u539F\u59CB\uFF0C0.5 = \u4E00\u534A\uFF0C2.0 = \u53CC\u500D\uFF08\u8D85\u91C7\u6837\uFF09\u3002\u8303\u56F4\uFF1A0.25\u20132.0\u3002","modelLoad.warningTitle":"\u6682\u65F6\u65E0\u6CD5\u9884\u89C8\u6A21\u578B","modelLoad.warningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528 {converterName} \u8F6C\u6362\u5668\uFF0C\u624D\u80FD\u52A0\u8F7D\u3002","modelLoad.warningHint":"\u8BF7\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528\u5BF9\u5E94\u8F6C\u6362\u5668\uFF0C\u7136\u540E\u91CD\u65B0\u52A0\u8F7D\u5F53\u524D\u6587\u4EF6\u3002","modelLoad.mobileWarningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u672C\u5730\u8F6C\u6362\u5DE5\u5177\uFF0C\u4F46\u8FD9\u4E9B\u5DE5\u5177\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\u4E0D\u53EF\u7528\u3002","modelLoad.mobileWarningHint":"\u8BF7\u5728\u684C\u9762\u7AEF\u6253\u5F00\u6B64\u6587\u4EF6\uFF0C\u6216\u5148\u5C06\u5B83\u8F6C\u6362\u4E3A GLB\u3001GLTF\u3001OBJ\u3001STL \u6216 PLY\u3002","modelLoad.errorTitle":"\u65E0\u6CD5\u663E\u793A\u8FD9\u4E2A\u6A21\u578B","modelLoad.errorMessage":"\u52A0\u8F7D\u5931\u8D25\uFF1A{reason}","modelLoad.errorHint":"\u8BF7\u68C0\u67E5\u6587\u4EF6\u683C\u5F0F\uFF0C\u6216\u6253\u5F00\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\u3002","headingPin.showSingle":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.showMultiple":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.linkedTo":"\u5173\u8054\u5230\uFF1A{models}","helper.resetViewLabel":"\u91CD\u7F6E\u89C6\u56FE","helper.resetViewDone":"\u5DF2\u91CD\u7F6E","helper.copyModelInfoLabel":"\u590D\u5236\u6A21\u578B\u4FE1\u606F\u4E3A Markdown","helper.copySelectedPartInfoLabel":"\u590D\u5236\u9009\u4E2D\u90E8\u4EF6\u4FE1\u606F","helper.noSelectedPart":"\u8BF7\u5148\u70B9\u51FB\u4E00\u4E2A\u90E8\u4EF6","helper.copied":"\u5DF2\u590D\u5236","helper.failed":"\u5931\u8D25","helper.toggleWireframeLabel":"\u5207\u6362\u7EBF\u6846\u663E\u793A","helper.wireframeOn":"\u7EBF\u6846","helper.wireframeOff":"\u5B9E\u4F53","helper.toggleAxesLabel":"\u5207\u6362\u65B9\u5411\u5750\u6807\u8F74","helper.axesOn":"\u5750\u6807\u8F74\u5DF2\u5F00\u542F","helper.axesOff":"\u5750\u6807\u8F74\u5DF2\u5173\u95ED","helper.toggleBoundingBoxLabel":"\u5207\u6362\u5305\u56F4\u76D2","helper.boundingBoxOn":"\u5305\u56F4\u76D2\u5DF2\u5F00\u542F","helper.boundingBoxOff":"\u5305\u56F4\u76D2\u5DF2\u5173\u95ED","helper.toggleFocusSelectionLabel":"\u805A\u7126\u9009\u4E2D\u90E8\u4EF6","helper.focusSelectionOn":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.focusSelectionOff":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.toggleDisassemblyLabel":"\u5207\u6362\u5206\u89E3\u6A21\u5F0F","helper.disassemblyOn":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.disassemblyOff":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.changeResolutionLabel":"\u5207\u6362\u5206\u8FA8\u7387","helper.resolutionValue":"\u5206\u8FA8\u7387\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u5207\u6362\u8DDD\u79BB\u6D4B\u91CF","helper.measurementOn":"\u6D4B\u91CF\u5DF2\u5F00\u542F","helper.measurementOff":"\u6D4B\u91CF\u5DF2\u5173\u95ED","helper.clearMeasurementsLabel":"\u6E05\u9664\u6D4B\u91CF","helper.measurementsCleared":"\u5DF2\u6E05\u9664","helper.copyMeasurementsLabel":"\u590D\u5236\u6D4B\u91CF","helper.noMeasurements":"\u6682\u65E0\u6D4B\u91CF","helper.measurementsCopied":"\u6D4B\u91CF\u5DF2\u590D\u5236","helper.calibrateLabel":"\u6821\u51C6\u6D4B\u91CF\u6BD4\u4F8B","helper.calibrateTitle":"\u6D4B\u91CF\u6821\u51C6","helper.calibrateCurrent":"\u5F53\u524D\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u771F\u5B9E\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u9501\u5B9A\u6BD4\u4F8B","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6BD4\u4F8B\u5DF2\u5E94\u7528","helper.calibrateResetDone":"\u6BD4\u4F8B\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6821\u51C6\u9762\u677F\u5DF2\u6253\u5F00","helper.calibrateClose":"\u6821\u51C6\u9762\u677F\u5DF2\u5173\u95ED","helper.removePreviewLabel":"\u79FB\u9664\u9884\u89C8","helper.copySnapshotLabel":"\u590D\u5236\u5FEB\u7167","helper.saveSnapshotLabel":"\u4FDD\u5B58\u5FEB\u7167\u5230\u4ED3\u5E93","helper.saved":"\u5DF2\u4FDD\u5B58","helper.downloadSnapshotLabel":"\u4E0B\u8F7D\u5FEB\u7167","helper.downloaded":"\u5DF2\u4E0B\u8F7D","helper.toggleAnnotationLabel":"\u5207\u6362\u6807\u6CE8\u6A21\u5F0F","helper.toggleAnnotationsVisibilityLabel":"\u663E\u793A\u6216\u9690\u85CF\u6807\u6CE8","helper.annotateOn":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.annotateOff":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.annotationsVisible":"\u6807\u6CE8\u5DF2\u663E\u793A","helper.annotationsHidden":"\u6807\u6CE8\u5DF2\u9690\u85CF","helper.enableInteractionLabel":"\u542F\u7528\u89E6\u63A7\u4EA4\u4E92","helper.disableInteractionLabel":"\u5207\u56DE\u6EDA\u52A8\u6A21\u5F0F","helper.interactionOn":"\u6A21\u578B\u4EA4\u4E92\u5DF2\u5F00\u542F","helper.interactionOff":"\u6EDA\u52A8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.showMoreActionsLabel":"\u663E\u793A\u66F4\u591A\u64CD\u4F5C","helper.hideMoreActionsLabel":"\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.moreActionsShown":"\u5DF2\u5C55\u5F00\u66F4\u591A\u64CD\u4F5C","helper.moreActionsHidden":"\u5DF2\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.interactAction":"\u4EA4\u4E92","helper.scrollAction":"\u6EDA\u52A8","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"\u6682\u65E0\u6A21\u578B","workbench.emptyText":"\u4F7F\u7528\u201C\u5BFC\u5165 3D \u6A21\u578B\u201D\u547D\u4EE4\u52A0\u8F7D GLB\u3001GLTF\u3001STL\u3001OBJ \u6216 PLY \u6587\u4EF6\u3002","workbench.modelTitle":"3D \u6A21\u578B","workbench.studioTitle":"AI \u6A21\u578B\u5DE5\u4F5C\u53F0","workbench.studioTagline":"\u68C0\u67E5\u3001\u6807\u6CE8\uFF0C\u5E76\u628A 3D \u8D44\u4EA7\u6574\u7406\u6210\u53CC\u94FE\u7B14\u8BB0\u3002","workbench.navLabel":"\u5DE5\u4F5C\u53F0\u5206\u533A","workbench.navGallery":"\u753B\u5ECA","workbench.navLibrary":"\u8D44\u6599\u5E93","workbench.navNotebooks":"\u7B14\u8BB0\u672C","workbench.navSettings":"\u8BBE\u7F6E","workbench.sourcesTitle":"\u6A21\u578B\u6765\u6E90","workbench.layersTitle":"\u5BA1\u9605\u5C42","workbench.viewModeTitle":"\u89C6\u56FE\u6A21\u5F0F","workbench.modeMesh":"\u7F51\u683C\u89C6\u56FE","workbench.modeFocus":"\u805A\u7126\u9009\u533A","workbench.modeMeshShort":"\u7F51\u683C","workbench.modeFocusShort":"\u805A\u7126","workbench.previewViewsTitle":"\u9884\u89C8\u89C6\u56FE","workbench.connectionsTitle":"\u77E5\u8BC6\u8FDE\u63A5","workbench.currentModelLabel":"\u5F53\u524D\u6A21\u578B","workbench.noReportYet":"\u8FD8\u6CA1\u6709\u62A5\u544A\u7B14\u8BB0","workbench.noIndexYet":"\u8FD8\u6CA1\u6709\u77E5\u8BC6\u7D22\u5F15\u3002\u8BF7\u5148\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","workbench.noModelLoaded":"\u5C1A\u672A\u52A0\u8F7D\u6A21\u578B","workbench.disassemblyTitle":"\u5206\u89E3","workbench.explodeLabel":"\u7206\u70B8","workbench.summaryTitle":"\u6458\u8981","workbench.meshesLabel":"\u7F51\u683C","workbench.splatsLabel":"\u70B9\u4E91","workbench.trianglesLabel":"\u4E09\u89D2\u5F62","workbench.verticesLabel":"\u9876\u70B9","workbench.materialsLabel":"\u6750\u8D28","workbench.boundingSizeLabel":"\u5305\u56F4\u76D2","workbench.centerLabel":"\u4E2D\u5FC3","workbench.selectedPartTitle":"\u5F53\u524D\u9009\u4E2D\u90E8\u4EF6","workbench.partMeshLabel":"\u7F51\u683C","workbench.noSelectedPart":"\u70B9\u51FB\u6A21\u578B\u4E2D\u7684\u90E8\u4EF6\u540E\u4F1A\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\u3002","workbench.tagsTitle":"\u6807\u7B7E","workbench.noTagsYet":"\u8FD8\u6CA1\u6709\u6807\u7B7E","workbench.addTagPlaceholder":"\u6DFB\u52A0\u6807\u7B7E...","workbench.addTagAction":"\u6DFB\u52A0","workbench.annotationsTitle":"\u6807\u6CE8","workbench.exitAnnotate":"\u9000\u51FA\u6807\u6CE8","workbench.annotate":"\u6807\u6CE8","workbench.annotateHintActive":"\u70B9\u51FB\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E \xB7 \u6309 Esc \u9000\u51FA","workbench.annotateHintActiveMobile":"\u70B9\u6309\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E\u3002\u9700\u8981\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.pinCount":"{count} \u4E2A\u6807\u6CE8","workbench.editAction":"\u7F16\u8F91","workbench.deleteAction":"\u5220\u9664","workbench.resetViewAction":"\u91CD\u7F6E\u89C6\u56FE","workbench.insertInfoAction":"\u63D2\u5165\u4FE1\u606F","workbench.insertGalleryAction":"\u63D2\u5165 Gallery","workbench.insertCompareAction":"\u63D2\u5165\u5BF9\u6BD4","workbench.playAction":"\u64AD\u653E","workbench.pauseAction":"\u6682\u505C","workbench.saveProfileAction":"\u4FDD\u5B58\u914D\u7F6E","workbench.generateNoteAction":"\u751F\u6210\u7B14\u8BB0","workbench.openNoteAction":"\u6253\u5F00\u7B14\u8BB0","workbench.openIndexAction":"\u6253\u5F00\u7D22\u5F15","workbench.recordTitle":"\u6807\u672C\u5361","workbench.recordSubtitle":"\u5F53\u524D\u8D44\u4EA7\u6863\u6848","workbench.notesTitle":"\u5206\u6790\u672D\u8BB0","workbench.whereTitle":"\u5173\u8054\u4F4D\u7F6E","workbench.noteReady":"\u5173\u8054\u7B14\u8BB0\u5DF2\u5C31\u7EEA","workbench.indexReady":"\u77E5\u8BC6\u7D22\u5F15\u5DF2\u5C31\u7EEA","workbench.notePending":"\u5173\u8054\u7B14\u8BB0\u5F85\u751F\u6210","workbench.analysisLabel":"\u5206\u6790","workbench.settingsUnavailable":"\u8BF7\u4ECE Obsidian \u8BBE\u7F6E\u4E2D\u6253\u5F00\u672C\u63D2\u4EF6\u6765\u8C03\u6574\u5DE5\u4F5C\u53F0\u9009\u9879\u3002","workbench.profileSaved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","workbench.viewReset":"\u89C6\u56FE\u5DF2\u91CD\u7F6E","workbench.infoInserted":"\u6A21\u578B\u4FE1\u606F\u5DF2\u63D2\u5165","workbench.infoCopied":"\u6A21\u578B\u4FE1\u606F\u5DF2\u590D\u5236","workbench.templateInserted":"\u6A21\u677F\u5DF2\u63D2\u5165","workbench.templateCopied":"\u6A21\u677F\u5DF2\u590D\u5236","workbench.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.mobileHintInteractive":"\u5F53\u524D\u4E3A\u4EA4\u4E92\u6A21\u5F0F\u3002\u9700\u8981\u7EE7\u7EED\u6EDA\u52A8\u7B14\u8BB0\u65F6\uFF0C\u8BF7\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","directView.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u4F7F\u7528\u4E0B\u65B9\u5DE5\u5177\u680F\u91CC\u7684\u201C\u4EA4\u4E92\u201D\u6309\u94AE\uFF0C\u5728\u6A21\u578B\u64CD\u4F5C\u548C\u7B14\u8BB0\u6EDA\u52A8\u4E4B\u95F4\u5207\u6362\u3002","directWorkbench.modelLoadInterrupted":"\u6A21\u578B\u52A0\u8F7D\u88AB\u65B0\u8BF7\u6C42\u4E2D\u65AD\u3002","directWorkbench.backendLabel":"\u540E\u7AEF","directWorkbench.routeLabel":"\u8DEF\u7531","directWorkbench.performanceLabel":"\u6027\u80FD","directWorkbench.partCandidatesLabel":"\u5019\u9009\u96F6\u4EF6","directWorkbench.knowledgeTitle":"\u77E5\u8BC6","directWorkbench.registeredTitle":"\u5DF2\u6CE8\u518C\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredLoading":"\u68C0\u67E5\u4E2D...","directWorkbench.registeredCount":"{count} \u4E2A\u5339\u914D","directWorkbench.registeredEmpty":"\u6682\u65E0\u8DE8\u6A21\u578B\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredUnavailable":"\u6682\u65E0\u96F6\u4EF6\u8BC1\u636E","directWorkbench.registeredOpen":"\u6253\u5F00","directWorkbench.registeredOpenNote":"\u7B14\u8BB0","directWorkbench.registeredOpenModel":"\u6A21\u578B","directWorkbench.registeredSourceModel":"\u6765\u81EA {model}","directWorkbench.registeredTargetPartNote":"\u6253\u5F00\u5339\u914D\u96F6\u4EF6\u7B14\u8BB0","directWorkbench.registeredTargetSourceModel":"\u6253\u5F00\u6765\u6E90\u6A21\u578B","directWorkbench.registeredTargetUnavailable":"\u6682\u65E0\u53EF\u6253\u5F00\u76EE\u6807","workbench.fileNotFound":"\u672A\u627E\u5230\u6587\u4EF6\uFF1A{path}","annotation.selectColor":"\u9009\u62E9\u989C\u8272 {color}","annotation.sectionEmpty":"\u8BE5\u6BB5\u5185\u5BB9\u4E3A\u7A7A\u3002","modal.selectModel":"\u9009\u62E9\u4E00\u4E2A 3D \u6A21\u578B...","main.commandImportModel":"\u5BFC\u5165 3D \u6A21\u578B","main.commandGenerateNote":"\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","main.commandOpenKnowledgeIndex":"\u6253\u5F00\u77E5\u8BC6\u7D22\u5F15","main.commandClearConversionCache":"\u6E05\u9664\u8F6C\u6362\u7F13\u5B58","main.commandCheckConverters":"\u68C0\u67E5\u8F6C\u6362\u5668","main.commandCopyDiagnostics":"\u590D\u5236\u8BCA\u65AD\u62A5\u544A","main.converterDiagnosticsMobileUnavailable":"\u8F6C\u6362\u5668\u8BCA\u65AD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0C\u76F4\u8BFB\u683C\u5F0F\u4ECD\u53EF\u52A0\u8F7D\u3002","main.diagnosticsCopied":"AI Model Workbench \u8BCA\u65AD\u62A5\u544A\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\u3002","main.diagnosticsCopyFailed":"\u65E0\u6CD5\u590D\u5236\u8BCA\u65AD\u62A5\u544A\uFF0C\u5DF2\u6539\u4E3A\u521B\u5EFA\u4E00\u4EFD\u8131\u654F\u8BCA\u65AD\u7B14\u8BB0\u3002","codeBlock.noModelPathOrConfig":"\u672A\u6307\u5B9A\u6A21\u578B\u8DEF\u5F84\u6216\u914D\u7F6E\u3002","codeBlock.jsonParseError":"JSON \u89E3\u6790\u9519\u8BEF\uFF1A{error}","codeBlock.jsonParseLine":"\uFF08\u7B2C {line} \u884C\uFF09","codeBlock.noModelsInConfig":"\u914D\u7F6E\u4E2D\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.unsupportedFormat":"\u4E0D\u652F\u6301\u7684\u683C\u5F0F\uFF1A{ext}\u3002\u652F\u6301\uFF1A{formats}","codeBlock.splatDisabled":"\u5F53\u524D\u6253\u5305\u7248\u672C\u6682\u672A\u542F\u7528 SPLAT \u9884\u89C8\u3002\u540E\u7EED\u4F1A\u4F18\u5148\u6062\u590D\u672C\u5730-only .splat\uFF1B.spz/.sog \u9700\u8981\u672C\u5730\u6253\u5305\u89E3\u7801\u5668\u540E\u518D\u8BC4\u4F30\u3002","codeBlock.noConfigSpecified":"\u672A\u6307\u5B9A\u914D\u7F6E\u3002","codeBlock.noModelsSpecified":"\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","codeBlock.renderingGrid":"\u6B63\u5728\u6E32\u67D3\u7F51\u683C...","codeBlock.composeRequiresSections":"\u201Ccompose\u201D \u9884\u8BBE\u9700\u8981\u63D0\u4F9B \u201Csections\u201D \u6570\u7EC4\u3002","codeBlock.composeNoValidSections":"Compose\uFF1A\u6CA1\u6709\u6709\u6548\u7684\u5206\u6BB5\u3002","codeBlock.unknownPreset":"\u672A\u77E5\u9884\u8BBE\uFF1A\u201C{preset}\u201D\u3002\u53EF\u7528\uFF1Acompare\u3001showcase\u3001explode\u3001timeline\u3001compose","codeBlock.presetRequiresModels":"\u9884\u8BBE \u201C{preset}\u201D \u9700\u8981 {min}-{max} \u4E2A\u6A21\u578B\uFF0C\u5F53\u524D\u4E3A {count} \u4E2A\u3002","codeBlock.gridFailed":"\u7F51\u683C\u6E32\u67D3\u5931\u8D25\uFF1A{reason}","livePreview.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u62D6\u52A8\u6A21\u578B\u65F6\u5207\u5230\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","loading.default":"\u52A0\u8F7D\u4E2D...","loading.preparingModel":"\u6B63\u5728\u51C6\u5907\u6A21\u578B...","loading.loadingModel":"\u6B63\u5728\u52A0\u8F7D\u6A21\u578B..."}});function Jp(n){d1=n;for(let e of n0)e()}function j(n){var e,t,i;return(i=(t=(e=BJ[d1])==null?void 0:e[n])!=null?t:r0[n])!=null?i:n}function h1(n){return n0.add(n),()=>{n0.delete(n)}}function UJ(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function qi(n,e){return UJ(j(n),e)}var BJ,d1,n0,vn=I(()=>{"use strict";l1();f1();BJ={en:r0,"zh-CN":c1},d1="en",n0=new Set});var _d,sE=I(()=>{"use strict";_d="ai3d-direct-view"});function GJ(n){return n!=null?n:m1}function Kh(n){var c;let e=n.ext.trim().toLowerCase(),t=(c=n.annotationMode)!=null?c:"none",i=!!n.allowEditModeOnThree,r=!!n.allowWorkbenchFeaturesOnThree,s=!!n.requireWorkbenchFeatures,a=GJ(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(u1.has(e)&&(!s||r)){if(s&&!VJ.has(e))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`workbench experimental Three supports GLB/GLTF only, ext=${e}`};if(t==="edit"&&a!=="three-direct-glb")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`annotationMode=edit, rendererRollout=${a}`};if(a==="babylon-safe")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`rendererRollout=${a}`};if(t==="edit"&&!i)return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"annotationMode=edit, allowEditModeOnThree=false"};let f=s?`${e} workbench preview`:t==="edit"?`${e} direct view edit preview`:t==="readonly"?`${e} preview with readonly annotations`:`simple ${e} preview`;return{backend:"three",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:f}}let l=[];return u1.has(e)||l.push(`ext=${e}`),t!=="none"&&l.push(`annotationMode=${t}`),t==="edit"&&!i&&l.push("allowEditModeOnThree=false"),s&&l.push("requireWorkbenchFeatures=true"),a!==m1&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function p1(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var m1,u1,VJ,aE=I(()=>{"use strict";m1="three-direct-glb",u1=new Set(["glb","gltf","stl","ply","obj"]),VJ=new Set(["glb","gltf"])});function kJ(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function WJ(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function pu(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function B3(){let n=pu("canvas");return n.style.display="block",n}function p_(...n){let e="THREE."+n.shift();_u?_u("log",e,...n):console.log(e,...n)}function U3(n){let e=n[0];if(typeof e=="string"&&e.startsWith("TSL:")){let t=n[1];t&&t.isStackTrace?n[0]+=" "+t.getLocation():n[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return n}function yt(...n){n=U3(n);let e="THREE."+n.shift();if(_u)_u("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function Bt(...n){n=U3(n);let e="THREE."+n.shift();if(_u)_u("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function jE(...n){let e=n.join(" ");e in _1||(_1[e]=!0,yt(...n))}function V3(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}function eo(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Pn[n&255]+Pn[n>>8&255]+Pn[n>>16&255]+Pn[n>>24&255]+"-"+Pn[e&255]+Pn[e>>8&255]+"-"+Pn[e>>16&15|64]+Pn[e>>24&255]+"-"+Pn[t&63|128]+Pn[t>>8&255]+"-"+Pn[t>>16&255]+Pn[t>>24&255]+Pn[i&255]+Pn[i>>8&255]+Pn[i>>16&255]+Pn[i>>24&255]).toLowerCase()}function mi(n,e,t){return Math.max(e,Math.min(t,n))}function cI(n,e){return(n%e+e)%e}function HJ(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function zJ(n,e,t){return n!==e?(t-n)/(e-n):0}function h_(n,e,t){return(1-t)*n+t*e}function XJ(n,e,t,i){return h_(n,e,1-Math.exp(-t*i))}function YJ(n,e=1){return e-Math.abs(cI(n,e*2)-e)}function KJ(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function jJ(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function qJ(n,e){return n+Math.floor(Math.random()*(e-n+1))}function ZJ(n,e){return n+Math.random()*(e-n)}function QJ(n){return n*(.5-Math.random())}function $J(n){n!==void 0&&(g1=n);let e=g1+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function JJ(n){return n*d_}function eee(n){return n*yd}function tee(n){return(n&n-1)===0&&n!==0}function iee(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function ree(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function nee(n,e,t,i,r){let s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+i)/2),f=a((e+i)/2),d=s((e-i)/2),h=a((e-i)/2),u=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*h,o*c);break;case"YZY":n.set(l*h,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*h,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*u,o*c);break;case"YXY":n.set(l*u,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*u,o*f,o*c);break;default:yt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function $a(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Zi(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}function see(){let n={enabled:!0,workingColorSpace:Jn,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ki&&(r.r=Bl(r.r),r.g=Bl(r.g),r.b=Bl(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ki&&(r.r=hu(r.r),r.g=hu(r.g),r.b=hu(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Hl?m_:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return jE("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return jE("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[Jn]:{primaries:e,whitePoint:i,transfer:m_,toXYZ:E1,fromXYZ:S1,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Mi},outputColorSpaceConfig:{drawingBufferColorSpace:Mi}},[Mi]:{primaries:e,whitePoint:i,transfer:Ki,toXYZ:E1,fromXYZ:S1,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Mi}}}),n}function Bl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function hu(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function o0(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?qE.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(yt("Texture: Unable to serialize Texture."),{})}function f0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function v0(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){vd.fromArray(n,s);let o=r.x*Math.abs(vd.x)+r.y*Math.abs(vd.y)+r.z*Math.abs(vd.z),l=e.dot(vd),c=t.dot(vd),f=i.dot(vd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function _E(n,e,t,i,r,s){ou.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(s_.x=s*ou.x-r*ou.y,s_.y=r*ou.x+s*ou.y):s_.copy(ou),n.copy(e),n.x+=s_.x,n.y+=s_.y,n.applyMatrix4(W3)}function Eee(n,e,t,i,r,s,a,o){let l;if(e.side===Sn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===Qs,o),l===null)return null;RE.copy(o),RE.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(RE);return ct.far?null:{distance:c,point:RE.clone(),object:n}}function bE(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,SE),n.getVertexPosition(l,TE),n.getVertexPosition(c,AE);let f=Eee(n,e,t,i,SE,TE,AE,O1);if(f){let d=new se;Fl.getBarycoord(O1,SE,TE,AE,d),r&&(f.uv=Fl.getInterpolatedAttribute(r,o,l,c,d,new Mt)),s&&(f.uv1=Fl.getInterpolatedAttribute(s,o,l,c,d,new Mt)),a&&(f.normal=Fl.getInterpolatedAttribute(a,o,l,c,d,new se),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let h={a:o,b:l,c,normal:new se,materialIndex:0};Fl.getNormal(SE,TE,AE,h.normal),f.face=h,f.barycoord=d}return f}function PE(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if($E.fromBufferAttribute(o,r),JE.fromBufferAttribute(o,s),t.distanceSqToSegment($E,JE,C0,W1)>i)return;C0.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(C0);if(!(ce.far))return{distance:c,point:W1.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function Y1(n,e,t,i,r,s,a){let o=w0.distanceSqToPoint(n);if(or.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}function Ud(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(K1(r))r.isRenderTargetTexture?(yt("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][i]=null):e[t][i]=r.clone();else if(Array.isArray(r))if(K1(r[0])){let s=[];for(let a=0,o=r.length;a{tf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},rf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},i3=0,H0=1,r3=2,F_=1,mS=2,Pu=3,Qs=0,Sn=1,Ta=2,Qo=0,Rd=1,z0=2,X0=3,Y0=4,n3=5,qc=100,s3=101,a3=102,o3=103,l3=104,c3=200,f3=201,d3=202,h3=203,UE=204,VE=205,u3=206,m3=207,p3=208,_3=209,g3=210,v3=211,E3=212,S3=213,T3=214,GE=0,kE=1,WE=2,bd=3,HE=4,zE=5,XE=6,YE=7,B_=0,A3=1,x3=2,Rs=0,K0=1,j0=2,q0=3,Z0=4,Q0=5,$0=6,J0=7,L0="attached",R3="detached",eI=300,nf=301,Fd=302,pS=303,_S=304,U_=306,Wo=1e3,Ea=1001,uu=1002,Nr=1003,gS=1004,Bd=1005,wr=1006,Du=1007,so=1008,bs=1009,tI=1010,iI=1011,Lu=1012,vS=1013,ao=1014,ea=1015,$o=1016,ES=1017,SS=1018,Ou=1020,rI=35902,nI=35899,sI=1021,aI=1022,ta=1023,Ho=1026,sf=1027,TS=1028,AS=1029,af=1030,xS=1031,RS=1033,V_=33776,G_=33777,k_=33778,W_=33779,bS=35840,MS=35841,IS=35842,yS=35843,CS=36196,PS=37492,DS=37496,LS=37488,OS=37489,H_=37490,NS=37491,wS=37808,FS=37809,BS=37810,US=37811,VS=37812,GS=37813,kS=37814,WS=37815,HS=37816,zS=37817,XS=37818,YS=37819,KS=37820,jS=37821,qS=36492,ZS=36494,QS=36495,$S=36283,JS=36284,z_=36285,eT=36286,b3=2200,M3=2201,I3=2202,Md=2300,Id=2301,BE=2302,O0=2303,Ad=2400,xd=2401,u_=2402,tT=2500,y3=2501,oI=0,X_=1,Nu=2,C3=3200,wu=0,P3=1,Hl="",Mi="srgb",Jn="srgb-linear",m_="linear",Ki="srgb",Td=7680,N0=519,D3=512,L3=513,O3=514,iT=515,N3=516,w3=517,rT=518,F3=519,KE=35044,lI="300 es",Ja=2e3,mu=2001;_1={},_u=null;G3={[GE]:kE,[WE]:XE,[HE]:YE,[bd]:zE,[kE]:GE,[XE]:WE,[YE]:HE,[zE]:bd},Sa=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){let i=this._listeners;if(i===void 0)return;let r=i[e];if(r!==void 0){let s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let i=t[e.type];if(i!==void 0){e.target=this;let r=i.slice(0);for(let s=0,a=r.length;s0){let u=.5/Math.sqrt(h+1);this._w=.25/u,this._x=(f-l)*u,this._y=(s-c)*u,this._z=(a-r)*u}else if(i>o&&i>d){let u=2*Math.sqrt(1+i-o-d);this._w=(f-l)/u,this._x=.25*u,this._y=(r+a)/u,this._z=(s+c)/u}else if(o>d){let u=2*Math.sqrt(1+o-i-d);this._w=(s-c)/u,this._x=(r+a)/u,this._y=.25*u,this._z=(l+f)/u}else{let u=2*Math.sqrt(1+d-i-o);this._w=(a-r)/u,this._x=(s+c)/u,this._y=(l+f)/u,this._z=.25*u}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(mi(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,f=t._w;return this._x=i*f+a*o+r*c-s*l,this._y=r*f+a*l+s*o-i*c,this._z=s*f+a*c+i*l-r*o,this._w=a*f-i*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,s=-s,a=-a,o=-o);let l=1-t;if(o<.9995){let c=Math.acos(o),f=Math.sin(c);l=Math.sin(l*c)/f,t=Math.sin(t*c)/f,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},pI=class pI{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(v1.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(v1.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*a,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*i),f=2*(o*t-s*r),d=2*(s*i-a*t);return this.x=t+l*c+a*d-o*f,this.y=i+l*f+o*c-s*d,this.z=r+l*d+s*f-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=mi(this.x,e.x,t.x),this.y=mi(this.y,e.y,t.y),this.z=mi(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=mi(this.x,e,t),this.y=mi(this.y,e,t),this.z=mi(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(mi(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-i*l,this.z=i*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return s0.copy(this).projectOnVector(e),this.sub(s0)}reflect(e){return this.sub(s0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(mi(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};pI.prototype.isVector3=!0;se=pI,s0=new se,v1=new Qr,_I=class _I{constructor(e,t,i,r,s,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,a,o,l,c)}set(e,t,i,r,s,a,o,l,c){let f=this.elements;return f[0]=e,f[1]=r,f[2]=o,f[3]=t,f[4]=s,f[5]=l,f[6]=i,f[7]=a,f[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,s=this.elements,a=i[0],o=i[3],l=i[6],c=i[1],f=i[4],d=i[7],h=i[2],u=i[5],m=i[8],_=r[0],p=r[3],g=r[6],v=r[1],x=r[4],S=r[7],E=r[2],T=r[5],R=r[8];return s[0]=a*_+o*v+l*E,s[3]=a*p+o*x+l*T,s[6]=a*g+o*S+l*R,s[1]=c*_+f*v+d*E,s[4]=c*p+f*x+d*T,s[7]=c*g+f*S+d*R,s[2]=h*_+u*v+m*E,s[5]=h*p+u*x+m*T,s[8]=h*g+u*S+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8];return t*a*f-t*o*c-i*s*f+i*o*l+r*s*c-r*a*l}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=f*a-o*c,h=o*l-f*s,u=c*s-a*l,m=t*d+i*h+r*u;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let _=1/m;return e[0]=d*_,e[1]=(r*c-f*i)*_,e[2]=(o*i-r*a)*_,e[3]=h*_,e[4]=(f*t-r*l)*_,e[5]=(r*s-o*t)*_,e[6]=u*_,e[7]=(i*l-c*t)*_,e[8]=(a*t-i*s)*_,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,a,o){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(a0.makeScale(e,t)),this}rotate(e){return this.premultiply(a0.makeRotation(-e)),this}translate(e,t){return this.premultiply(a0.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};_I.prototype.isMatrix3=!0;ii=_I,a0=new ii,E1=new ii().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),S1=new ii().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);ai=see();qE=class{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{jh===void 0&&(jh=pu("canvas")),jh.width=e.width,jh.height=e.height;let r=jh.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=jh}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=pu("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(l0).x}get height(){return this.source.getSize(l0).y}get depth(){return this.source.getSize(l0).z}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.normalized=e.normalized,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let i=e[t];if(i===void 0){yt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){yt(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,normalized:this.normalized,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==eI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Wo:e.x=e.x-Math.floor(e.x);break;case Ea:e.x=e.x<0?0:1;break;case uu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Wo:e.y=e.y-Math.floor(e.y);break;case Ea:e.y=e.y<0?0:1;break;case uu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};Rr.DEFAULT_IMAGE=null;Rr.DEFAULT_MAPPING=eI;Rr.DEFAULT_ANISOTROPY=1;gI=class gI{constructor(e=0,t=0,i=0,r=1){this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*i+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*i+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*i+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*i+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s,l=e.elements,c=l[0],f=l[4],d=l[8],h=l[1],u=l[5],m=l[9],_=l[2],p=l[6],g=l[10];if(Math.abs(f-h)<.01&&Math.abs(d-_)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+h)<.1&&Math.abs(d+_)<.1&&Math.abs(m+p)<.1&&Math.abs(c+u+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let x=(c+1)/2,S=(u+1)/2,E=(g+1)/2,T=(f+h)/4,R=(d+_)/4,M=(m+p)/4;return x>S&&x>E?x<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(x),r=T/i,s=R/i):S>E?S<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(S),i=T/r,s=M/r):E<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(E),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-_)*(d-_)+(h-f)*(h-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-_)/v,this.z=(h-f)/v,this.w=Math.acos((c+u+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=mi(this.x,e.x,t.x),this.y=mi(this.y,e.y,t.y),this.z=mi(this.z,e.z,t.z),this.w=mi(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=mi(this.x,e,t),this.y=mi(this.y,e,t),this.z=mi(this.z,e,t),this.w=mi(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(mi(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};gI.prototype.isVector4=!0;tr=gI,ZE=class extends Sa{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:wr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new tr(0,0,e,t),this.scissorTest=!1,this.viewport=new tr(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Rr(r),a=i.count;for(let o=0;o1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let l=o.shapes;if(Array.isArray(l))for(let c=0,f=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),f.length>0&&(i.images=f),d.length>0&&(i.shapes=d),h.length>0&&(i.skeletons=h),u.length>0&&(i.animations=u),m.length>0&&(i.nodes=m)}return i.object=r,i;function a(o){let l=[];for(let c in o){let f=o[c];delete f.metadata,l.push(f)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.pivot=e.pivot!==null?e.pivot.clone():null,this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;iu+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=u-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1,l.eventsEnabled&&l.dispatchEvent({type:"gripUpdated",data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(mee)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let i=new Zs;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},k3={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},zc={h:0,s:0,l:0},cE={h:0,s:0,l:0};ft=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){let r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Mi){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,ai.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=ai.workingColorSpace){return this.r=e,this.g=t,this.b=i,ai.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=ai.workingColorSpace){if(e=cI(e,1),t=mi(t,0,1),i=mi(i,0,1),t===0)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+t):i+t-i*t,a=2*i-s;this.r=f0(a,s,e+1/3),this.g=f0(a,s,e),this.b=f0(a,s,e-1/3)}return ai.colorSpaceToWorking(this,r),this}setStyle(e,t=Mi){function i(s){s!==void 0&&parseFloat(s)<1&&yt("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:yt("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);yt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Mi){let i=k3[e.toLowerCase()];return i!==void 0?this.setHex(i,t):yt("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Bl(e.r),this.g=Bl(e.g),this.b=Bl(e.b),this}copyLinearToSRGB(e){return this.r=hu(e.r),this.g=hu(e.g),this.b=hu(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Mi){return ai.workingToColorSpace(Dn.copy(this),e),Math.round(mi(Dn.r*255,0,255))*65536+Math.round(mi(Dn.g*255,0,255))*256+Math.round(mi(Dn.b*255,0,255))}getHexString(e=Mi){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=ai.workingColorSpace){ai.workingToColorSpace(Dn.copy(this),t);let i=Dn.r,r=Dn.g,s=Dn.b,a=Math.max(i,r,s),o=Math.min(i,r,s),l,c,f=(o+a)/2;if(o===a)l=0,c=0;else{let d=a-o;switch(c=f<=.5?d/(a+o):d/(2-a-o),a){case i:l=(r-s)/d+(r0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},Za=new se,Dl=new se,d0=new se,Ll=new se,$h=new se,Jh=new se,y1=new se,h0=new se,u0=new se,m0=new se,p0=new tr,_0=new tr,g0=new tr,Fl=class n{constructor(e=new se,t=new se,i=new se){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),Za.subVectors(e,t),r.cross(Za);let s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){Za.subVectors(r,t),Dl.subVectors(i,t),d0.subVectors(e,t);let a=Za.dot(Za),o=Za.dot(Dl),l=Za.dot(d0),c=Dl.dot(Dl),f=Dl.dot(d0),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let h=1/d,u=(c*l-o*f)*h,m=(a*f-o*l)*h;return s.set(1-u-m,m,u)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Ll)===null?!1:Ll.x>=0&&Ll.y>=0&&Ll.x+Ll.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,Ll)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Ll.x),l.addScaledVector(a,Ll.y),l.addScaledVector(o,Ll.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return p0.setScalar(0),_0.setScalar(0),g0.setScalar(0),p0.fromBufferAttribute(e,t),_0.fromBufferAttribute(e,i),g0.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(p0,s.x),a.addScaledVector(_0,s.y),a.addScaledVector(g0,s.z),a}static isFrontFacing(e,t,i,r){return Za.subVectors(i,t),Dl.subVectors(e,t),Za.cross(Dl).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Za.subVectors(this.c,this.b),Dl.subVectors(this.a,this.b),Za.cross(Dl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return n.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return n.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return n.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return n.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return n.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,r=this.b,s=this.c,a,o;$h.subVectors(r,i),Jh.subVectors(s,i),h0.subVectors(e,i);let l=$h.dot(h0),c=Jh.dot(h0);if(l<=0&&c<=0)return t.copy(i);u0.subVectors(e,r);let f=$h.dot(u0),d=Jh.dot(u0);if(f>=0&&d<=f)return t.copy(r);let h=l*d-f*c;if(h<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector($h,a);m0.subVectors(e,s);let u=$h.dot(m0),m=Jh.dot(m0);if(m>=0&&u<=m)return t.copy(s);let _=u*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(Jh,o);let p=f*m-u*d;if(p<=0&&d-f>=0&&u-m>=0)return y1.subVectors(s,r),o=(d-f)/(d-f+(u-m)),t.copy(r).addScaledVector(y1,o);let g=1/(p+_+h);return a=_*g,o=h*g,t.copy(i).addScaledVector($h,a).addScaledVector(Jh,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Fr=class{constructor(e=new se(1/0,1/0,1/0),t=new se(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Qa),Qa.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(t_),dE.subVectors(this.max,t_),eu.subVectors(e.a,t_),tu.subVectors(e.b,t_),iu.subVectors(e.c,t_),Xc.subVectors(tu,eu),Yc.subVectors(iu,tu),gd.subVectors(eu,iu);let t=[0,-Xc.z,Xc.y,0,-Yc.z,Yc.y,0,-gd.z,gd.y,Xc.z,0,-Xc.x,Yc.z,0,-Yc.x,gd.z,0,-gd.x,-Xc.y,Xc.x,0,-Yc.y,Yc.x,0,-gd.y,gd.x,0];return!v0(t,eu,tu,iu,dE)||(t=[1,0,0,0,1,0,0,0,1],!v0(t,eu,tu,iu,dE))?!1:(hE.crossVectors(Xc,Yc),t=[hE.x,hE.y,hE.z],v0(t,eu,tu,iu,dE))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Qa).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Qa).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ol[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ol[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ol[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ol[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ol[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ol[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ol[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ol[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ol),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}},Ol=[new se,new se,new se,new se,new se,new se,new se,new se],Qa=new se,fE=new Fr,eu=new se,tu=new se,iu=new se,Xc=new se,Yc=new se,gd=new se,t_=new se,dE=new se,hE=new se,vd=new se;zr=new se,uE=new Mt,pee=0,hr=class extends Sa{constructor(e,t,i=!1){if(super(),Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:pee++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=KE,this.updateRanges=[],this.gpuType=ea,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;i_.subVectors(e,this.center);let t=i_.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(i_,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(E0.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(i_.copy(e.center).add(E0)),this.expandByPoint(i_.copy(e.center).sub(E0))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}},gee=0,ga=new oi,S0=new zi,ru=new se,qs=new Fr,r_=new Fr,fn=new se,Xi=class n extends Sa{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:gee++}),this.uuid=eo(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(kJ(e)?v_:g_)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new ii().getNormalMatrix(e);i.applyNormalMatrix(s),i.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return ga.makeRotationFromQuaternion(e),this.applyMatrix4(ga),this}rotateX(e){return ga.makeRotationX(e),this.applyMatrix4(ga),this}rotateY(e){return ga.makeRotationY(e),this.applyMatrix4(ga),this}rotateZ(e){return ga.makeRotationZ(e),this.applyMatrix4(ga),this}translate(e,t,i){return ga.makeTranslation(e,t,i),this.applyMatrix4(ga),this}scale(e,t,i){return ga.makeScale(e,t,i),this.applyMatrix4(ga),this}lookAt(e){return S0.lookAt(e),S0.updateMatrix(),this.applyMatrix4(S0.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ru).negate(),this.translate(ru.x,ru.y,ru.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&yt("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Fr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Bt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new se(-1/0,-1/0,-1/0),new se(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let r={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],f=[];for(let d=0,h=c.length;d0&&(r[l]=f,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone());let r=e.attributes;for(let c in r){let f=r[c];this.setAttribute(c,f.clone(t))}let s=e.morphAttributes;for(let c in s){let f=[],d=s[c];for(let h=0,u=d.length;h0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){yt(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){yt(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Rd&&(i.blending=this.blending),this.side!==Qs&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==UE&&(i.blendSrc=this.blendSrc),this.blendDst!==VE&&(i.blendDst=this.blendDst),this.blendEquation!==qc&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==bd&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==N0&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Td&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Td&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Td&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){let a=[];for(let o in s){let l=s[o];delete l.metadata,a.push(l)}return a}if(t){let s=r(e.textures),a=r(e.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Su=class extends Br{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ft(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},n_=new se,su=new se,au=new se,ou=new Mt,s_=new Mt,W3=new oi,mE=new se,a_=new se,pE=new se,C1=new Mt,T0=new Mt,P1=new Mt,E_=class extends zi{constructor(e=new Su){if(super(),this.isSprite=!0,this.type="Sprite",nu===void 0){nu=new Xi;let t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Pd(t,5);nu.setIndex([0,1,2,0,2,3]),nu.setAttribute("position",new Zc(i,3,0,!1)),nu.setAttribute("uv",new Zc(i,2,3,!1))}this.geometry=nu,this.material=e,this.center=new Mt(.5,.5),this.count=1}raycast(e,t){e.camera===null&&Bt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),su.setFromMatrixScale(this.matrixWorld),W3.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),au.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&su.multiplyScalar(-au.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;_E(mE.set(-.5,-.5,0),au,a,su,r,s),_E(a_.set(.5,-.5,0),au,a,su,r,s),_E(pE.set(.5,.5,0),au,a,su,r,s),C1.set(0,0),T0.set(1,0),P1.set(1,1);let o=e.ray.intersectTriangle(mE,a_,pE,!1,n_);if(o===null&&(_E(a_.set(-.5,.5,0),au,a,su,r,s),T0.set(0,1),o=e.ray.intersectTriangle(mE,pE,a_,!1,n_),o===null))return;let l=e.ray.origin.distanceTo(n_);le.far||t.push({distance:l,point:n_.clone(),uv:Fl.getInterpolation(n_,mE,a_,pE,C1,T0,P1,new Mt),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};Nl=new se,A0=new se,gE=new se,Kc=new se,x0=new se,vE=new se,R0=new se,zo=class{constructor(e=new se,t=new se(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Nl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Nl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Nl.copy(this.origin).addScaledVector(this.direction,t),Nl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){A0.copy(e).add(t).multiplyScalar(.5),gE.copy(t).sub(e).normalize(),Kc.copy(this.origin).sub(A0);let s=e.distanceTo(t)*.5,a=-this.direction.dot(gE),o=Kc.dot(this.direction),l=-Kc.dot(gE),c=Kc.lengthSq(),f=Math.abs(1-a*a),d,h,u,m;if(f>0)if(d=a*l-o,h=a*o-l,m=s*f,d>=0)if(h>=-m)if(h<=m){let _=1/f;d*=_,h*=_,u=d*(d+a*h+2*o)+h*(a*d+h+2*l)+c}else h=s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h=-s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h<=-m?(d=Math.max(0,-(-a*s+o)),h=d>0?-s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c):h<=m?(d=0,h=Math.min(Math.max(-s,-l),s),u=h*(h+2*l)+c):(d=Math.max(0,-(a*s+o)),h=d>0?s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c);else h=a>0?-s:s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(A0).addScaledVector(gE,h),u}intersectSphere(e,t){Nl.subVectors(e.center,this.origin);let i=Nl.dot(this.direction),r=Nl.dot(Nl)-i*i,s=e.radius*e.radius;if(r>s)return null;let a=Math.sqrt(s-r),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,a,o,l,c=1/this.direction.x,f=1/this.direction.y,d=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,r=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,r=(e.min.x-h.x)*c),f>=0?(s=(e.min.y-h.y)*f,a=(e.max.y-h.y)*f):(s=(e.max.y-h.y)*f,a=(e.min.y-h.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-h.z)*d,l=(e.max.z-h.z)*d):(o=(e.max.z-h.z)*d,l=(e.min.z-h.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Nl)!==null}intersectTriangle(e,t,i,r,s){x0.subVectors(t,e),vE.subVectors(i,e),R0.crossVectors(x0,vE);let a=this.direction.dot(R0),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Kc.subVectors(this.origin,e);let l=o*this.direction.dot(vE.crossVectors(Kc,vE));if(l<0)return null;let c=o*this.direction.dot(x0.cross(Kc));if(c<0||l+c>a)return null;let f=-o*Kc.dot(R0);return f<0?null:this.at(f/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},es=class extends Br{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ft(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},D1=new oi,Ed=new zo,EE=new gs,L1=new se,SE=new se,TE=new se,AE=new se,b0=new se,xE=new se,O1=new se,RE=new se,li=class extends zi{constructor(e=new Xi,t=new es){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(D1.copy(s).invert(),Ed.copy(e.ray).applyMatrix4(D1),!(i.boundingBox!==null&&Ed.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Ed)))}_computeIntersections(e,t,i){let r,s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,f=s.attributes.uv1,d=s.attributes.normal,h=s.groups,u=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=h.length;m<_;m++){let p=h[m],g=a[p.materialIndex],v=Math.max(p.start,u.start),x=Math.min(o.count,Math.min(p.start+p.count,u.start+u.count));for(let S=v,E=x;S1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||Ree.getNormalMatrix(e),r=this.coplanarPoint(y0).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}},Sd=new gs,bee=new Mt(.5,.5),yE=new se,xu=class{constructor(e=new va,t=new va,i=new va,r=new va,s=new va,a=new va){this.planes=[e,t,i,r,s,a]}set(e,t,i,r,s,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=Ja,i=!1){let r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],f=s[4],d=s[5],h=s[6],u=s[7],m=s[8],_=s[9],p=s[10],g=s[11],v=s[12],x=s[13],S=s[14],E=s[15];if(r[0].setComponents(c-a,u-f,g-m,E-v).normalize(),r[1].setComponents(c+a,u+f,g+m,E+v).normalize(),r[2].setComponents(c+o,u+d,g+_,E+x).normalize(),r[3].setComponents(c-o,u-d,g-_,E-x).normalize(),i)r[4].setComponents(l,h,p,S).normalize(),r[5].setComponents(c-l,u-h,g-p,E-S).normalize();else if(r[4].setComponents(c-l,u-h,g-p,E-S).normalize(),t===Ja)r[5].setComponents(c+l,u+h,g+p,E+S).normalize();else if(t===mu)r[5].setComponents(l,h,p,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Sd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Sd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Sd)}intersectsSprite(e){Sd.center.set(0,0,0);let t=bee.distanceTo(e.center);return Sd.radius=.7071067811865476+t,Sd.applyMatrix4(e.matrixWorld),this.intersectsSphere(Sd)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,yE.y=r.normal.y>0?e.max.y:e.min.y,yE.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(yE)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},Ln=class extends Br{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ft(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},$E=new se,JE=new se,k1=new oi,f_=new zo,CE=new gs,C0=new se,W1=new se,Xo=class extends zi{constructor(e=new Xi,t=new Ln){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0?1:-1,f.push(Q.x,Q.y,Q.z),d.push(Y/R),d.push(1-te/M),V+=1}}for(let te=0;te0)&&u.push(x,S,T),(g!==i-1||l[pd(f.sourcePath,f.sourceExt,f.targetExt),f]));function o(){let f=t();i(f),e==null||e(f)}return(n.length!==s.length||s.some((f,d)=>!IJ(f,n[d])))&&(e==null||e([...s])),{get(f,d,h){return a.get(pd(f,d,h))},set(f){a.set(pd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,h){let u=a.delete(pd(f,d,h));return u&&o(),u},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var $M=I(()=>{"use strict"});function Xa(n){return n.trim().toLowerCase().replace(/^\./,"")}function JM(n){return yJ.get(Xa(n))}function Ya(n){let e=JM(n);return!!(e!=null&&e.enabled)}function Kp(n){return["splat","spz","sog"].includes(Xa(n))}function Cl(){return JF.filter(n=>n.enabled).map(n=>n.ext)}var JF,yJ,Ka=I(()=>{"use strict";JF=[{ext:"glb",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"gltf",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"stl",family:"mesh",strategy:"direct",directLoader:"custom-stl",enabled:!0},{ext:"obj",family:"mesh",strategy:"direct",directLoader:"babylon",converterId:"obj2gltf",outputFormat:"glb",enabled:!0},{ext:"ply",family:"mesh",strategy:"direct",directLoader:"custom-ply",enabled:!0},{ext:"fbx",family:"mesh",strategy:"convert",converterId:"fbx2gltf",outputFormat:"glb",enabled:!0},{ext:"step",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"stp",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"iges",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"igs",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"brep",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"sldprt",family:"cad",strategy:"convert",converterId:"sldprt",outputFormat:"glb",enabled:!0},{ext:"3mf",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0},{ext:"dae",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0}],yJ=new Map(JF.map(n=>[n.ext,n]))});var zTe,Wc,e0=I(()=>{"use strict";Ka();zTe=new Set(Cl()),Wc={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"three-direct-glb",useThreeRenderer:!0,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function e1(n){let e={...n},t=new Set;return{getState:()=>e,setState(i){e={...e,...i};let r=[...t];for(let s of r)s()},subscribe(i){return t.add(i),()=>{t.delete(i)}}}}var t1=I(()=>{"use strict"});function tE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function Xh(n){return[tE(n[0]),tE(n[1]),tE(n[2])]}function i1(n){return Object.is(tE(n),n)}var iE=I(()=>{"use strict"});function r1(n){return n.trim()}function CJ(n){let e=r1(n);return/^Registered from model group with /.test(e)||/^Registered from model component metadata with /.test(e)||/^Merged from [\d,]+ generic tiny meshes? to avoid over-splitting renderer fragments\.$/.test(e)||/^Component ID: .+\.$/.test(e)||/^Occurrence ID: .+\.$/.test(e)||/^Part number: .+\.$/.test(e)||/^Component path: .+\.$/.test(e)||/^Format lineage: .+\.$/.test(e)||/^[\d,]+ triangles? and [\d,]+ vertex(?:es|s)\.$/.test(e)||/^Bounding size [-+0-9.eE]+ x [-+0-9.eE]+ x [-+0-9.eE]+\.$/.test(e)||/^Uses material ".+"\.$/.test(e)}function PJ(n){return n.map(r1).filter(e=>e.length>0)}function n1(n){let e=PJ(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!CJ(t)).slice(0,16)}function t0(n){let e=n1(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function Yh(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:n1(n),registeredMatches:void 0}}var rE=I(()=>{"use strict"});function c1(n){let e=e1(DJ),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(h=>console.error("[AI3D] Auto-save failed:",h))},500)}function o(){i+=1,a()}function l(){let h=e.getState();return{stateSchemaVersion:s1,settings:h.settings,convertedAssetRecords:h.convertedAssetRecords,modelAssetProfiles:h.modelAssetProfiles,agentDraft:h.agentDraft,agentPlan:h.agentPlan,lastKnowledgeGeneration:h.lastKnowledgeGeneration}}function c(h=!1){return h&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;ru[m]!==_)&&(e.setState({settings:{...u,...h}}),o())},setLastKnowledgeGeneration(h){h!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:h}),o())},async load(){var p,g,v,x,S;let h=await n.loadData();if(!h)return;d=!!((p=h.settings)!=null&&p.locale);let u=h.stateSchemaVersion===s1,{profiles:m,changed:_}=OJ(h.modelAssetProfiles,{trustPersistedSchema:u});e.setState({settings:{...Wc,...(g=h.settings)!=null?g:{}},convertedAssetRecords:(v=h.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(x=h.agentDraft)!=null?x:"",agentPlan:(S=h.agentPlan)!=null?S:null,lastKnowledgeGeneration:kJ(h.lastKnowledgeGeneration)}),(_||!u)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(E=>console.error("[AI3D] Normalized state save failed:",E))},LJ))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(h=>console.error("[AI3D] Final save on dispose failed:",h))}}}function OJ(n,e={}){if(!n||typeof n!="object")return{profiles:{},changed:!1};let t={},i=!1;for(let[r,s]of Object.entries(n)){if(!s||typeof s!="object")continue;if(e.trustPersistedSchema&&NJ(s)){t[r]=s;continue}let a=new Date().toISOString(),o=GJ(s.registeredParts,r);i=i||o.changed,t[r]={tags:Array.isArray(s.tags)?s.tags:[],notes:typeof s.notes=="string"?s.notes:"",annotations:Array.isArray(s.annotations)?s.annotations:[],registeredParts:o.parts,analysisVersion:typeof s.analysisVersion=="string"?s.analysisVersion:void 0,reportNotePath:typeof s.reportNotePath=="string"?s.reportNotePath:void 0,analysisSidecarPath:typeof s.analysisSidecarPath=="string"?s.analysisSidecarPath:void 0,previewImagePaths:Array.isArray(s.previewImagePaths)?s.previewImagePaths.filter(l=>typeof l=="string"):void 0,knowledgeIndexPath:typeof s.knowledgeIndexPath=="string"?s.knowledgeIndexPath:void 0,createdAt:typeof s.createdAt=="string"?s.createdAt:a,updatedAt:typeof s.updatedAt=="string"?s.updatedAt:a}}return{profiles:t,changed:i}}function NJ(n){return Array.isArray(n.tags)&&typeof n.notes=="string"&&Array.isArray(n.annotations)&&(n.registeredParts===void 0||Array.isArray(n.registeredParts)&&n.registeredParts.length<=nE)&&ja(n.analysisVersion)&&ja(n.reportNotePath)&&ja(n.analysisSidecarPath)&&ja(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function jp(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"&&i.trim().length>0):[];return Number.isFinite(e)?t.slice(0,e):t}function qp(n,e=Number.POSITIVE_INFINITY){return Array.isArray(n)&&(!Number.isFinite(e)||n.length<=e)&&n.every(t=>typeof t=="string"&&t.trim().length>0)}function a1(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Xh(e):void 0}function sE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&i1(Number(e)))}function f1(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function wJ(n){return n===void 0||f1(n)===n}function r0(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function o1(n){return n===void 0||r0(n)===n}function d1(n){return n==="direct"||n==="convert"?n:void 0}function FJ(n){return n===void 0||d1(n)===n}function ja(n){return n===void 0||typeof n=="string"}function i0(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function BJ(n){if(!n||typeof n!="object")return!1;let e=n;return"registeredMatches"in e?!1:typeof e.partId=="string"&&e.partId.length>0&&typeof e.assetId=="string"&&e.assetId.length>0&&typeof e.name=="string"&&e.name.length>0&&ja(e.parentPartId)&&wJ(e.source)&&ja(e.componentId)&&ja(e.occurrenceId)&&ja(e.partNumber)&&ja(e.componentPath)&&ja(e.category)&&qp(e.meshRefs,16)&&i0(e.childCount)&&qp(e.materialRefs,32)&&(e.bbox===void 0||sE(e.bbox))&&(e.center===void 0||sE(e.center))&&i0(e.triangleCount)&&i0(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&o1(e.sourceFormat)&&o1(e.effectiveFormat)&&FJ(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&qp(e.observations,16)&&t0(e)&&qp(e.inferredFunctions)&&qp(e.knowledgeTags)&&ja(e.notePath)&&typeof e.reviewed=="boolean"}function UJ(n){if(n.length===0)return;if(n.length>nE)return null;let e=new Set;for(let t of n){if(!BJ(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function l1(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function VJ(n){return n.length<=nE?n:[...n].sort((e,t)=>{var s,a;let i=l1(e)-l1(t);if(i!==0)return i;let r=t.confidence-e.confidence;return r!==0?r:((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0)}).slice(0,nE)}function GJ(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=UJ(n);if(t!==null)return{parts:t,changed:!1};let i=[],r=new Set,s=!1;for(let o of n){if(!o||typeof o!="object")continue;let l=o;"registeredMatches"in l&&(s=!0),(Array.isArray(l.meshRefs)&&l.meshRefs.length>16||Array.isArray(l.materialRefs)&&l.materialRefs.length>32||Array.isArray(l.observations)&&l.observations.length>16||l.bbox!==void 0&&!sE(l.bbox)||l.center!==void 0&&!sE(l.center))&&(s=!0);let c=typeof l.partId=="string"?l.partId:"",f=typeof l.name=="string"?l.name:"";if(!c||!f)continue;let d=typeof l.assetId=="string"&&l.assetId?l.assetId:e,h=`${d}:${c}`;if(r.has(h))continue;r.add(h);let u={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:f1(l.source),componentId:typeof l.componentId=="string"?l.componentId:void 0,occurrenceId:typeof l.occurrenceId=="string"?l.occurrenceId:void 0,partNumber:typeof l.partNumber=="string"?l.partNumber:void 0,componentPath:typeof l.componentPath=="string"?l.componentPath:void 0,category:typeof l.category=="string"?l.category:void 0,meshRefs:jp(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:jp(l.materialRefs,32),bbox:a1(l.bbox),center:a1(l.center),triangleCount:Number.isFinite(l.triangleCount)?Math.max(0,Math.floor(Number(l.triangleCount))):void 0,vertexCount:Number.isFinite(l.vertexCount)?Math.max(0,Math.floor(Number(l.vertexCount))):void 0,materialName:typeof l.materialName=="string"?l.materialName:null,sourceFormat:r0(l.sourceFormat),effectiveFormat:r0(l.effectiveFormat),loadStrategy:d1(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:jp(l.observations,16),inferredFunctions:jp(l.inferredFunctions),knowledgeTags:jp(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=Yh(u);t0(u)||(s=!0),i.push(m)}let a=VJ(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function kJ(n){if(!n||typeof n!="object")return null;let e=typeof n.modelPath=="string"?n.modelPath:"";return e?{modelPath:e,reportNotePath:typeof n.reportNotePath=="string"?n.reportNotePath:void 0,analysisSidecarPath:typeof n.analysisSidecarPath=="string"?n.analysisSidecarPath:void 0,knowledgeIndexPath:typeof n.knowledgeIndexPath=="string"?n.knowledgeIndexPath:void 0,partNoteCount:Number.isFinite(n.partNoteCount)?Math.max(0,Math.floor(n.partNoteCount)):0,previewImageCount:Number.isFinite(n.previewImageCount)?Math.max(0,Math.floor(n.previewImageCount)):0,generatedAt:typeof n.generatedAt=="string"?n.generatedAt:new Date().toISOString(),status:n.status==="failed"||n.status==="pending"?n.status:"success",warningCount:Number.isFinite(n.warningCount)?Math.max(0,Math.floor(n.warningCount)):0}:null}function n0(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var DJ,nE,LJ,s1,s0=I(()=>{"use strict";e0();t1();iE();rE();DJ={settings:{...Wc},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},nE=256,LJ=50,s1=1});var a0,h1=I(()=>{"use strict";a0={"settings.title":"AI 3d model workbench","settings.folders":"Folders","settings.behavior":"Behavior","settings.converters":"Converters","settings.converterMenu":"Model converters","settings.converterMenu.desc":"Closed by default. Open this section only when you want to manually enable an optional local conversion route.","settings.environmentInspector":"Environment inspector","settings.environmentInspector.desc":"Closed by default. Open this section when you need to configure command paths or run environment checks.","settings.paths":"Converter paths","settings.diagnostics":"Converter command diagnostics","settings.performance":"Performance & display","settings.mobileSupport":"Mobile support","settings.knowledgeGeneration":"Knowledge generation","settings.sourceModelFolder":"Source model folder","settings.sourceModelFolder.desc":"Vault folder where source model files are stored.","settings.reportFolder":"Report folder","settings.reportFolder.desc":"Vault folder where generated knowledge notes are saved.","settings.partFolder":"Part notes folder","settings.partFolder.desc":"Vault folder where generated part note drafts are saved.","settings.snapshotFolder":"Snapshot folder","settings.snapshotFolder.desc":"Vault folder where exported snapshots are saved.","settings.autoGenerateKnowledgeNotes":"Auto-generate knowledge notes","settings.autoGenerateKnowledgeNotes.desc":"Reserved for a future automation flow. For now, generate notes manually from the command palette.","settings.annotationPreviewMode":"Annotation preview mode","settings.annotationPreviewMode.desc":"Choose how bound note previews render in annotation popovers and the editor.","settings.annotationPreviewMode.plainText":"Plain text","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"Annotation display mode","settings.annotationDisplayMode.desc":"Choose how bookmark pins appear over the model.","settings.annotationDisplayMode.snippet":"Full snippet","settings.annotationDisplayMode.surface":"Single surface","settings.annotationDisplayMode.dot":"Single dot","settings.previewRendererRollout":"Preview compatibility mode","settings.previewRendererRollout.desc":"Controls how widely the Three.js preview path is used for single-model previews (GLB, GLTF, STL, PLY, OBJ). Switch back to Compatibility mode if pin projection, occlusion, edit pins, snapshots, or toolbar behavior regress. 3dgrid is not affected by this setting.","settings.previewRendererRollout.babylonSafe":"Compatibility mode","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view (Recommended)","settings.useThreeRenderer":"Use Three.js renderer","settings.useThreeRenderer.desc":"Toggle between Three.js (faster, lighter) and Babylon.js (full compatibility) for single-model previews. Three.js supports GLB/GLTF/STL/PLY/OBJ. 3dgrid always uses Babylon.js.","settings.experimentalThreeWorkbench":"Experimental Three workbench","settings.experimentalThreeWorkbench.desc":"Try the Three.js workbench path for direct GLB/GLTF files only. If loading fails, the file view falls back to Babylon.js automatically.","settings.autoRotateDefault":"Auto-rotate by default","settings.autoRotateDefault.desc":"Start model previews with auto-rotation enabled.","settings.snapshotNaming":"Snapshot naming","settings.snapshotNaming.desc":"How exported snapshot files are named.","settings.snapshotNaming.modelName":"Model name + timestamp","settings.snapshotNaming.timestamp":"Timestamp only","settings.logLevel":"Log level","settings.logLevel.desc":"Controls plugin runtime log verbosity in the developer console.","settings.language":"Language","settings.language.desc":"Display language for plugin settings. Takes effect immediately.","settings.analysisMode":"AI drafting mode","settings.analysisMode.desc":"Controls whether knowledge-note generation stays local or also requests a sanitized remote draft. Raw model upload is blocked by the current client.","settings.analysisMode.local":"Local evidence only","settings.analysisMode.hybrid":"Local evidence + remote draft","settings.analysisMode.remote":"Remote draft from evidence","settings.serviceBaseUrl":"Draft service URL","settings.serviceBaseUrl.desc":"Optional base URL for a service that accepts POST /draft-note. Leave empty to keep all drafting local.","settings.sendGeometrySummaryToRemote":"Send geometry summary","settings.sendGeometrySummaryToRemote.desc":"Allow sanitized mesh counts, bounds, part candidates, annotation coordinates, and nearest-part links to be included in remote draft input.","settings.sendPreviewImagesToRemote":"Send preview image references","settings.sendPreviewImagesToRemote.desc":"Allow generated preview image paths to be listed in the remote draft input. Image bytes are not uploaded by this client.","settings.sendRawModelToRemote":"Send raw model file","settings.sendRawModelToRemote.desc":"Reserved for future explicit upload support. If enabled manually, remote draft requests are blocked instead of uploading the model.","settings.enableCad":"Enable cad conversion for step, iges, and brep files","settings.enableCad.desc":"Enable cad conversion for step, iges, and brep formats. Requires cadquery and trimesh in your python environment.","settings.enableObj2gltf":"Enable obj2gltf converter (experimental)","settings.enableObj2gltf.desc":"Keep obj direct loading as the default. Enable this only if you want an optional local normalization route through obj2gltf.","settings.preferObj2gltf":"Prefer obj2gltf for obj","settings.preferObj2gltf.desc":"Recommended default is off. Turn this on only when you want normalized output files or direct obj loading is not good enough.","settings.enableFbx2gltf":"Enable FBX2glTF converter","settings.enableFbx2gltf.desc":"Enable conversion for fbx files via FBX2glTF. Requires the FBX2glTF binary installed locally.","settings.enableMesh":"Enable mesh conversion for 3mf and dae files","settings.enableMesh.desc":"Enable conversion for 3mf and dae formats via python trimesh. Requires trimesh, numpy, networkx, and pycollada in your python environment.","settings.enableSldprt":"Enable sldprt conversion for SolidWorks files","settings.enableSldprt.desc":"Enable conversion for SolidWorks sldprt files via FreeCAD. Requires FreeCAD installed locally.","settings.mobileSupport.desc":"On iOS, iPadOS, and Android, direct formats like GLB, GLTF, STL, OBJ, and PLY are supported. Local converter settings and diagnostics remain desktop-only.","settings.pythonCmd":"Path to the python command for cad conversion","settings.pythonCmd.desc":"Optional path to the python command used for cad conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.freecadCmd":"Path to the FreeCAD command for sldprt conversion","settings.freecadCmd.desc":"Optional path to the FreeCAD command used for SolidWorks file conversion. Windows usually uses FreeCADCmd.exe, macOS usually uses FreeCADCmd, and Linux usually uses freecadcmd. Overrides auto-discovery when set.","settings.obj2gltfCmd":"Path to the obj2gltf command","settings.obj2gltfCmd.desc":"Optional path to the obj2gltf command. Windows usually uses obj2gltf.cmd, and macOS and Linux usually use obj2gltf. Overrides auto-discovery when set.","settings.fbx2gltfCmd":"FBX2glTF command path","settings.fbx2gltfCmd.desc":"Optional path to the FBX2glTF command. Windows usually uses FBX2glTF.exe, and macOS and Linux usually use FBX2glTF. Overrides auto-discovery when set.","settings.assimpCmd":"Path to the python command for 3mf and dae conversion","settings.assimpCmd.desc":"Optional path to the python command used for 3mf and dae conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.diagnostics.desc":"Shows the exact executable path the plugin would use right now and runs lightweight self-checks for Python environments and converter CLIs.","settings.diagnostics.idle":"Diagnostics are off by default. Click Check now to run them manually.","settings.diagnostics.checkNow":"Check now","settings.diagnostics.checking":"Checking...","settings.diagnostics.refreshed":"Converter command diagnostics refreshed.","settings.diagnostics.checkingAvailability":"Checking converter command availability...","settings.diagnostics.available":"available","settings.diagnostics.notFound":"not found","settings.diagnostics.sourceLabel":"Source","settings.diagnostics.commandLabel":"Command","settings.diagnostics.resolvedPathLabel":"Resolved path","settings.diagnostics.selfCheckLabel":"Self-check","settings.diagnostics.selfCheckOk":"passed","settings.diagnostics.selfCheckFailed":"failed","settings.diagnostics.cadPythonCheck":"Python packages (cadquery, trimesh)","settings.diagnostics.meshPythonCheck":"Python packages (trimesh, numpy, networkx, collada)","settings.diagnostics.freecadCmdCheck":"FreeCADCmd launch probe","settings.diagnostics.obj2gltfCheck":"obj2gltf launch probe","settings.diagnostics.fbx2gltfCheck":"FBX2glTF launch probe","settings.canvasHeight":"Default canvas height","settings.canvasHeight.desc":"Default height (px) for inline model previews. Range: 200\u2013800.","settings.autoRotateSpeed":"Auto-rotate speed","settings.autoRotateSpeed.desc":"Rotation speed when auto-rotate is enabled. Range: 0.1\u20132.0.","settings.renderQuality":"Render quality","settings.renderQuality.desc":"Higher quality uses more GPU resources. Affects anti-aliasing and resolution.","settings.renderScale":"Resolution scale","settings.renderScale.desc":"Render resolution multiplier. 1.0 = native, 0.5 = half, 2.0 = double (supersampling). Range: 0.25\u20132.0.","modelLoad.warningTitle":"Model preview unavailable","modelLoad.warningMessage":"{ext} files need the {converterName} converter enabled in plugin settings before they can load.","modelLoad.warningHint":"Enable the matching converter in plugin settings, then reload this file.","modelLoad.mobileWarningMessage":"{ext} files need local conversion tools that are unavailable on iOS, iPadOS, and Android.","modelLoad.mobileWarningHint":"Open this file on desktop, or convert it to GLB, GLTF, OBJ, STL, or PLY first.","modelLoad.errorTitle":"Couldn't display this model","modelLoad.errorMessage":"Failed to load: {reason}","modelLoad.errorHint":"Check the file format or open the developer console for details.","headingPin.showSingle":"Show linked pin","headingPin.showMultiple":"Show linked pins","headingPin.linkedTo":"Pin linked to: {models}","helper.resetViewLabel":"Reset view","helper.resetViewDone":"Reset","helper.copyModelInfoLabel":"Copy model info as Markdown","helper.copySelectedPartInfoLabel":"Copy selected part info","helper.noSelectedPart":"Select a part first","helper.copied":"Copied!","helper.failed":"Failed","helper.toggleWireframeLabel":"Toggle wireframe","helper.wireframeOn":"Wireframe","helper.wireframeOff":"Solid","helper.toggleAxesLabel":"Toggle orientation axes","helper.axesOn":"Axes on","helper.axesOff":"Axes off","helper.toggleBoundingBoxLabel":"Toggle bounding box","helper.boundingBoxOn":"Bounding box on","helper.boundingBoxOff":"Bounding box off","helper.toggleFocusSelectionLabel":"Focus selected part","helper.focusSelectionOn":"Focus mode on","helper.focusSelectionOff":"Focus mode off","helper.toggleDisassemblyLabel":"Toggle disassembly mode","helper.disassemblyOn":"Disassembly on","helper.disassemblyOff":"Disassembly off","helper.changeResolutionLabel":"Change resolution","helper.resolutionValue":"Resolution: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Toggle distance measurement","helper.measurementOn":"Measurement on","helper.measurementOff":"Measurement off","helper.clearMeasurementsLabel":"Clear measurements","helper.measurementsCleared":"Cleared","helper.copyMeasurementsLabel":"Copy measurements","helper.noMeasurements":"No measurements","helper.measurementsCopied":"Measurements copied","helper.calibrateLabel":"Calibrate measurement scale","helper.calibrateTitle":"Measurement Calibration","helper.calibrateCurrent":"Current size:","helper.calibrateReal":"Real size:","helper.calibrateLock":"Lock ratio","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Scale applied","helper.calibrateResetDone":"Scale reset","helper.calibrateOpen":"Calibration panel opened","helper.calibrateClose":"Calibration panel closed","helper.removePreviewLabel":"Remove preview","helper.copySnapshotLabel":"Copy snapshot","helper.saveSnapshotLabel":"Save snapshot to vault","helper.saved":"Saved!","helper.downloadSnapshotLabel":"Download snapshot","helper.downloaded":"Downloaded!","helper.toggleAnnotationLabel":"Toggle annotation mode","helper.toggleAnnotationsVisibilityLabel":"Show or hide annotations","helper.annotateOn":"Annotation mode on","helper.annotateOff":"Annotation mode off","helper.annotationsVisible":"Annotations shown","helper.annotationsHidden":"Annotations hidden","helper.enableInteractionLabel":"Enable touch interaction","helper.disableInteractionLabel":"Return to scroll mode","helper.interactionOn":"Model interaction on","helper.interactionOff":"Scroll mode on","helper.showMoreActionsLabel":"Show more actions","helper.hideMoreActionsLabel":"Hide extra actions","helper.moreActionsShown":"More actions shown","helper.moreActionsHidden":"Extra actions hidden","helper.interactAction":"Interact","helper.scrollAction":"Scroll","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"No model","workbench.emptyText":'Use the "import 3D model" command to load a GLB, GLTF, STL, OBJ, or PLY file.',"workbench.modelTitle":"Model","workbench.studioTitle":"AI Model Workbench","workbench.studioTagline":"Inspect, annotate, and turn 3D assets into linked notes.","workbench.navLabel":"Workbench sections","workbench.navGallery":"Gallery","workbench.navLibrary":"Library","workbench.navNotebooks":"Notebooks","workbench.navSettings":"Settings","workbench.sourcesTitle":"Model sources","workbench.layersTitle":"Review layers","workbench.viewModeTitle":"View mode","workbench.modeMesh":"Mesh view","workbench.modeFocus":"Focus selection","workbench.modeMeshShort":"Mesh","workbench.modeFocusShort":"Focus","workbench.previewViewsTitle":"Preview views","workbench.connectionsTitle":"Knowledge connections","workbench.currentModelLabel":"Current model","workbench.noReportYet":"No report note yet","workbench.noIndexYet":"No knowledge index yet. Generate a knowledge note first.","workbench.noModelLoaded":"No model loaded","workbench.disassemblyTitle":"Disassembly","workbench.explodeLabel":"Explode","workbench.summaryTitle":"Summary","workbench.meshesLabel":"Meshes","workbench.splatsLabel":"Splats","workbench.trianglesLabel":"Triangles","workbench.verticesLabel":"Vertices","workbench.materialsLabel":"Materials","workbench.boundingSizeLabel":"Bounds","workbench.centerLabel":"Center","workbench.selectedPartTitle":"Selected Part","workbench.partMeshLabel":"Mesh","workbench.noSelectedPart":"Click a model part to inspect it here.","workbench.tagsTitle":"Tags","workbench.noTagsYet":"No tags yet","workbench.addTagPlaceholder":"Add tag...","workbench.addTagAction":"Add","workbench.annotationsTitle":"Annotations","workbench.exitAnnotate":"Exit annotate","workbench.annotate":"Annotate","workbench.annotateHintActive":"Click the model to add a label \xB7 press Esc to exit","workbench.annotateHintActiveMobile":"Tap the model to add a label. Switch back to Scroll when you want to move through the note again.","workbench.pinCount":"{count} pin(s)","workbench.editAction":"Edit","workbench.deleteAction":"Delete","workbench.resetViewAction":"Reset view","workbench.insertInfoAction":"Insert info","workbench.insertGalleryAction":"Insert Gallery","workbench.insertCompareAction":"Insert Compare","workbench.playAction":"Play","workbench.pauseAction":"Pause","workbench.saveProfileAction":"Save profile","workbench.generateNoteAction":"Generate note","workbench.openNoteAction":"Open note","workbench.openIndexAction":"Open index","workbench.recordTitle":"Specimen card","workbench.recordSubtitle":"Current asset profile","workbench.notesTitle":"Analysis notes","workbench.whereTitle":"Where it connects","workbench.noteReady":"Linked note ready","workbench.indexReady":"Knowledge index ready","workbench.notePending":"Linked note pending","workbench.analysisLabel":"Analysis","workbench.settingsUnavailable":"Open this plugin from Obsidian settings to change workbench options.","workbench.profileSaved":"Profile saved","workbench.viewReset":"View reset","workbench.infoInserted":"Model info inserted","workbench.infoCopied":"Model info copied","workbench.templateInserted":"Template inserted","workbench.templateCopied":"Template copied","workbench.mobileHint":"Mobile tip: tap Interact to move the model, then switch back to Scroll to keep reading the note.","workbench.mobileHintInteractive":"Interaction mode is on. Switch back to Scroll when you want to move through the note again.","directView.mobileHint":"Mobile tip: use the toolbar Interact button to switch between model interaction and note scrolling.","directWorkbench.modelLoadInterrupted":"Model load was interrupted by a newer request.","directWorkbench.backendLabel":"Backend","directWorkbench.routeLabel":"Route","directWorkbench.performanceLabel":"Performance","directWorkbench.partCandidatesLabel":"Part candidates","directWorkbench.knowledgeTitle":"Knowledge","directWorkbench.registeredTitle":"Registered part matches","directWorkbench.registeredLoading":"Checking...","directWorkbench.registeredCount":"{count} match(es)","directWorkbench.registeredEmpty":"No cross-model part match yet","directWorkbench.registeredUnavailable":"Part evidence unavailable","directWorkbench.registeredOpen":"Open","directWorkbench.registeredOpenNote":"Note","directWorkbench.registeredOpenModel":"Model","directWorkbench.registeredSourceModel":"From {model}","directWorkbench.registeredTargetPartNote":"Opens matched part note","directWorkbench.registeredTargetSourceModel":"Opens source model","directWorkbench.registeredTargetUnavailable":"No linked target","workbench.fileNotFound":"File not found: {path}","annotation.selectColor":"Select color {color}","annotation.sectionEmpty":"Section is empty.","modal.selectModel":"Select a 3D model...","main.commandImportModel":"Import a 3D model","main.commandGenerateNote":"Generate knowledge note","main.commandOpenKnowledgeIndex":"Open knowledge index","main.commandClearConversionCache":"Clear conversion cache","main.commandCheckConverters":"Check converters","main.commandCopyDiagnostics":"Copy diagnostics report","main.converterDiagnosticsMobileUnavailable":"Converter diagnostics are only available on desktop. On iOS, iPadOS, and Android, direct formats can still load.","main.diagnosticsCopied":"AI Model Workbench diagnostics copied to clipboard.","main.diagnosticsCopyFailed":"Couldn't copy diagnostics. A sanitized diagnostics note was created instead.","codeBlock.noModelPathOrConfig":"No model path or config specified.","codeBlock.jsonParseError":"JSON parse error: {error}","codeBlock.jsonParseLine":" (line {line})","codeBlock.noModelsInConfig":"No models specified in config.","codeBlock.unsupportedFormat":"Unsupported format: {ext}. Supported: {formats}","codeBlock.splatDisabled":"SPLAT preview is disabled in packaged builds. Local-only .splat support is planned first; .spz/.sog need locally bundled decoders before reevaluation.","codeBlock.noConfigSpecified":"No config specified.","codeBlock.noModelsSpecified":"No models specified.","codeBlock.mobileHint":"Mobile tip: use Interact to manipulate the model, then switch back to Scroll to keep moving through the note.","codeBlock.renderingGrid":"Rendering grid...","codeBlock.composeRequiresSections":'"compose" preset requires a "sections" array.',"codeBlock.composeNoValidSections":"Compose: no valid sections.","codeBlock.unknownPreset":'Unknown preset: "{preset}". Available: compare, showcase, explode, timeline, compose',"codeBlock.presetRequiresModels":'Preset "{preset}" requires {min}-{max} models, got {count}.',"codeBlock.gridFailed":"Grid failed: {reason}","livePreview.mobileHint":"Mobile tip: switch between Interact and Scroll depending on whether you want to move the model or keep reading.","loading.default":"Loading...","loading.preparingModel":"Preparing model...","loading.loadingModel":"Loading model..."}});var u1,m1=I(()=>{"use strict";u1={"settings.title":"AI 3D \u6A21\u578B\u5DE5\u4F5C\u53F0","settings.folders":"\u6587\u4EF6\u5939","settings.behavior":"\u884C\u4E3A","settings.converters":"\u8F6C\u6362\u5668","settings.converterMenu":"\u6A21\u578B\u8F6C\u6362\u5668","settings.converterMenu.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u4F60\u9700\u8981\u624B\u52A8\u542F\u7528\u67D0\u6761\u672C\u5730\u8F6C\u6362\u8DEF\u7EBF\u65F6\u518D\u5C55\u5F00\u3002","settings.environmentInspector":"\u73AF\u5883\u68C0\u67E5\u5668","settings.environmentInspector.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u9700\u8981\u914D\u7F6E\u547D\u4EE4\u8DEF\u5F84\u6216\u624B\u52A8\u6267\u884C\u73AF\u5883\u68C0\u67E5\u65F6\u518D\u5C55\u5F00\u3002","settings.paths":"\u8F6C\u6362\u5668\u8DEF\u5F84","settings.diagnostics":"\u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD","settings.performance":"\u6027\u80FD\u4E0E\u663E\u793A","settings.mobileSupport":"\u79FB\u52A8\u7AEF\u652F\u6301","settings.knowledgeGeneration":"\u77E5\u8BC6\u751F\u6210","settings.sourceModelFolder":"\u6E90\u6A21\u578B\u6587\u4EF6\u5939","settings.sourceModelFolder.desc":"\u5B58\u653E\u6E90 3D \u6A21\u578B\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.reportFolder":"\u62A5\u544A\u6587\u4EF6\u5939","settings.reportFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u77E5\u8BC6\u7B14\u8BB0\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.partFolder":"\u90E8\u4EF6\u7B14\u8BB0\u6587\u4EF6\u5939","settings.partFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u90E8\u4EF6\u7B14\u8BB0\u8349\u7A3F\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.snapshotFolder":"\u5FEB\u7167\u6587\u4EF6\u5939","settings.snapshotFolder.desc":"\u4FDD\u5B58\u5BFC\u51FA\u5FEB\u7167\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.autoGenerateKnowledgeNotes":"\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","settings.autoGenerateKnowledgeNotes.desc":"\u9884\u7559\u7ED9\u540E\u7EED\u81EA\u52A8\u5316\u6D41\u7A0B\u3002\u5F53\u524D\u8BF7\u901A\u8FC7\u547D\u4EE4\u6216\u5DE5\u4F5C\u53F0\u6309\u94AE\u624B\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","settings.annotationPreviewMode":"\u6807\u6CE8\u9884\u89C8\u6A21\u5F0F","settings.annotationPreviewMode.desc":"\u9009\u62E9\u6807\u6CE8\u7ED1\u5B9A\u7B14\u8BB0\u5728\u60AC\u6D6E\u9884\u89C8\u548C\u7F16\u8F91\u5668\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationPreviewMode.plainText":"\u7EAF\u6587\u672C","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"\u6807\u6CE8\u663E\u793A\u6A21\u5F0F","settings.annotationDisplayMode.desc":"\u9009\u62E9\u6A21\u578B\u4E0A\u4E66\u7B7E\u6807\u6CE8\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationDisplayMode.snippet":"\u5B8C\u6574\u7247\u6BB5","settings.annotationDisplayMode.surface":"\u5355\u4E2A\u6807\u7B7E\u9762","settings.annotationDisplayMode.dot":"\u5355\u4E2A\u5706\u70B9","settings.previewRendererRollout":"\u9884\u89C8\u517C\u5BB9\u6A21\u5F0F","settings.previewRendererRollout.desc":"\u63A7\u5236\u5355\u6A21\u578B\u9884\u89C8\uFF08GLB\u3001GLTF\u3001STL\u3001PLY\u3001OBJ\uFF09\u4E2D Three.js \u6E32\u67D3\u8DEF\u5F84\u7684\u542F\u7528\u8303\u56F4\u3002\u53EA\u8981\u51FA\u73B0 pin \u6295\u5F71\u3001\u906E\u6321\u3001\u7F16\u8F91\u6001 pin\u3001\u5FEB\u7167\u6216\u5DE5\u5177\u680F\u884C\u4E3A\u56DE\u9000\uFF0C\u5C31\u5207\u56DE\u201C\u517C\u5BB9\u4F18\u5148\u201D\u3002workbench \u548C 3dgrid \u4E0D\u53D7\u8FD9\u4E2A\u8BBE\u7F6E\u5F71\u54CD\u3002","settings.previewRendererRollout.babylonSafe":"\u517C\u5BB9\u4F18\u5148","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE\uFF08\u63A8\u8350\uFF09","settings.useThreeRenderer":"\u4F7F\u7528 Three.js \u6E32\u67D3\u5668","settings.useThreeRenderer.desc":"\u5728 Three.js\uFF08\u66F4\u5FEB\u3001\u66F4\u8F7B\u91CF\uFF09\u548C Babylon.js\uFF08\u5B8C\u5168\u517C\u5BB9\uFF09\u4E4B\u95F4\u5207\u6362\u5355\u6A21\u578B\u9884\u89C8\u6E32\u67D3\u5668\u3002Three.js \u652F\u6301 GLB/GLTF/STL/PLY/OBJ\u3002\u5DE5\u4F5C\u53F0\u548C 3dgrid \u59CB\u7EC8\u4F7F\u7528 Babylon.js\u3002","settings.experimentalThreeWorkbench":"\u5B9E\u9A8C\u6027 Three \u5DE5\u4F5C\u53F0","settings.experimentalThreeWorkbench.desc":"\u4EC5\u5BF9\u76F4\u8BFB GLB/GLTF \u6587\u4EF6\u5C1D\u8BD5\u4F7F\u7528 Three.js \u5DE5\u4F5C\u53F0\u8DEF\u5F84\u3002\u52A0\u8F7D\u5931\u8D25\u65F6\uFF0C\u6587\u4EF6\u89C6\u56FE\u4F1A\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002","settings.autoRotateDefault":"\u9ED8\u8BA4\u81EA\u52A8\u65CB\u8F6C","settings.autoRotateDefault.desc":"\u542F\u52A8 3D \u9884\u89C8\u65F6\u9ED8\u8BA4\u5F00\u542F\u81EA\u52A8\u65CB\u8F6C\u3002","settings.snapshotNaming":"\u5FEB\u7167\u547D\u540D","settings.snapshotNaming.desc":"\u5BFC\u51FA\u5FEB\u7167\u6587\u4EF6\u7684\u547D\u540D\u65B9\u5F0F\u3002","settings.snapshotNaming.modelName":"\u6A21\u578B\u540D + \u65F6\u95F4\u6233","settings.snapshotNaming.timestamp":"\u4EC5\u65F6\u95F4\u6233","settings.logLevel":"\u65E5\u5FD7\u7EA7\u522B","settings.logLevel.desc":"\u63A7\u5236\u63D2\u4EF6\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6\u3002","settings.language":"\u8BED\u8A00","settings.language.desc":"\u63D2\u4EF6\u8BBE\u7F6E\u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002\u7ACB\u5373\u751F\u6548\u3002","settings.analysisMode":"AI \u8349\u7A3F\u6A21\u5F0F","settings.analysisMode.desc":"\u63A7\u5236\u77E5\u8BC6\u7B14\u8BB0\u751F\u6210\u4FDD\u6301\u672C\u5730\uFF0C\u8FD8\u662F\u989D\u5916\u8BF7\u6C42\u7ECF\u8FC7\u88C1\u526A\u7684\u8FDC\u7A0B\u8349\u7A3F\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4F1A\u963B\u6B62\u539F\u59CB\u6A21\u578B\u4E0A\u4F20\u3002","settings.analysisMode.local":"\u4EC5\u672C\u5730\u8BC1\u636E","settings.analysisMode.hybrid":"\u672C\u5730\u8BC1\u636E + \u8FDC\u7A0B\u8349\u7A3F","settings.analysisMode.remote":"\u57FA\u4E8E\u8BC1\u636E\u7684\u8FDC\u7A0B\u8349\u7A3F","settings.serviceBaseUrl":"\u8349\u7A3F\u670D\u52A1 URL","settings.serviceBaseUrl.desc":"\u53EF\u9009\u7684\u8349\u7A3F\u670D\u52A1\u57FA\u7840\u5730\u5740\uFF0C\u670D\u52A1\u9700\u63A5\u6536 POST /draft-note\u3002\u7559\u7A7A\u65F6\u6240\u6709\u8349\u7A3F\u8F93\u5165\u90FD\u4FDD\u7559\u5728\u672C\u5730\u3002","settings.sendGeometrySummaryToRemote":"\u53D1\u9001\u51E0\u4F55\u6458\u8981","settings.sendGeometrySummaryToRemote.desc":"\u5141\u8BB8\u628A\u7ECF\u8FC7\u88C1\u526A\u7684\u7F51\u683C\u6570\u91CF\u3001\u5305\u56F4\u76D2\u3001\u90E8\u4EF6\u5019\u9009\u3001\u6807\u6CE8\u5750\u6807\u548C\u6700\u8FD1\u90E8\u4EF6\u5173\u8054\u52A0\u5165\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u3002","settings.sendPreviewImagesToRemote":"\u53D1\u9001\u9884\u89C8\u56FE\u5F15\u7528","settings.sendPreviewImagesToRemote.desc":"\u5141\u8BB8\u5728\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u4E2D\u5217\u51FA\u751F\u6210\u7684\u9884\u89C8\u56FE\u8DEF\u5F84\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4E0D\u4F1A\u4E0A\u4F20\u56FE\u7247\u5B57\u8282\u3002","settings.sendRawModelToRemote":"\u53D1\u9001\u539F\u59CB\u6A21\u578B\u6587\u4EF6","settings.sendRawModelToRemote.desc":"\u9884\u7559\u7ED9\u672A\u6765\u663E\u5F0F\u4E0A\u4F20\u652F\u6301\u3002\u82E5\u624B\u52A8\u5F00\u542F\uFF0C\u8FDC\u7A0B\u8349\u7A3F\u8BF7\u6C42\u4F1A\u88AB\u963B\u6B62\uFF0C\u4E0D\u4F1A\u4E0A\u4F20\u6A21\u578B\u3002","settings.enableCad":"\u542F\u7528 CAD \u8F6C\u6362\u5668 (STEP/IGES/BREP)","settings.enableCad.desc":"\u542F\u7528 STEP/IGES/BREP \u683C\u5F0F\u7684 CAD \u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python CadQuery (OpenCASCADE)\u3002\u9700\u8981\uFF1Apip install cadquery trimesh","settings.enableObj2gltf":"\u542F\u7528 obj2gltf \u8F6C\u6362\u5668\uFF08\u5B9E\u9A8C\u6027\uFF09","settings.enableObj2gltf.desc":"\u9ED8\u8BA4\u4F7F\u7528 OBJ \u76F4\u63A5\u52A0\u8F7D\u3002\u4EC5\u5728\u9700\u8981\u672C\u5730\u6807\u51C6\u5316 GLB \u8F93\u51FA\u65F6\u542F\u7528\u3002","settings.preferObj2gltf":"OBJ \u4F18\u5148\u4F7F\u7528 obj2gltf","settings.preferObj2gltf.desc":"\u9ED8\u8BA4\u5173\u95ED\u3002\u4EC5\u5728\u9700\u8981\u6807\u51C6\u5316 GLB \u8F93\u51FA\u6216\u76F4\u63A5 OBJ \u52A0\u8F7D\u6548\u679C\u4E0D\u4F73\u65F6\u5F00\u542F\u3002","settings.enableFbx2gltf":"\u542F\u7528 FBX2glTF \u8F6C\u6362\u5668","settings.enableFbx2gltf.desc":"\u542F\u7528 FBX \u6587\u4EF6\u901A\u8FC7 FBX2glTF \u8F6C\u6362\u3002\u9700\u8981\u672C\u5730\u5B89\u88C5 FBX2glTF \u4E8C\u8FDB\u5236\u6587\u4EF6\u3002","settings.enableMesh":"\u542F\u7528\u7F51\u683C\u8F6C\u6362\u5668 (3MF/DAE)","settings.enableMesh.desc":"\u542F\u7528 3MF \u548C DAE (Collada) \u683C\u5F0F\u7684\u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python trimesh\u3002\u9700\u8981\u5B89\u88C5 Python \u548C trimesh (pip install trimesh numpy networkx pycollada)\u3002","settings.enableSldprt":"\u542F\u7528 SLDPRT \u8F6C\u6362\u5668 (SolidWorks)","settings.enableSldprt.desc":"\u542F\u7528 SolidWorks .sldprt \u6587\u4EF6\u901A\u8FC7 FreeCAD \u8F6C\u6362\u3002\u9700\u8981\u5B89\u88C5 FreeCAD (https://www.freecad.org/downloads.php)\u3002","settings.mobileSupport.desc":"\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0CGLB\u3001GLTF\u3001STL\u3001OBJ\u3001PLY \u8FD9\u7C7B\u76F4\u8BFB\u683C\u5F0F\u53EF\u7528\u3002\u672C\u5730\u8F6C\u6362\u5668\u8BBE\u7F6E\u548C\u547D\u4EE4\u8BCA\u65AD\u4ECD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002","settings.pythonCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF08CAD \u7528\uFF09","settings.pythonCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E CAD \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECAD_CMD\u3002","settings.freecadCmd":"FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF08SLDPRT \u7528\uFF09","settings.freecadCmd.desc":"\u53EF\u9009\u7684 FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E SolidWorks \u6587\u4EF6\u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 FreeCADCmd.exe\uFF0CmacOS \u901A\u5E38\u7528 FreeCADCmd\uFF0CLinux \u901A\u5E38\u7528 freecadcmd\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECADCMD\u3002","settings.obj2gltfCmd":"obj2gltf \u547D\u4EE4\u8DEF\u5F84","settings.obj2gltfCmd.desc":"\u53EF\u9009\u7684 obj2gltf \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 obj2gltf.cmd\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 obj2gltf\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_OBJ2GLTF_CMD\u3002","settings.fbx2gltfCmd":"FBX2glTF \u547D\u4EE4\u8DEF\u5F84","settings.fbx2gltfCmd.desc":"\u53EF\u9009\u7684 FBX2glTF \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 FBX2glTF.exe\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 FBX2glTF\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FBX2GLTF_CMD\u3002","settings.assimpCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF083MF/DAE \u7528\uFF09","settings.assimpCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E 3MF \u548C DAE \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_ASSIMP_CMD\u3002","settings.diagnostics.desc":"\u663E\u793A\u63D2\u4EF6\u5F53\u524D\u5B9E\u9645\u4F7F\u7528\u7684\u53EF\u6267\u884C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5E76\u4E3A Python \u73AF\u5883\u548C\u8F6C\u6362\u5668\u547D\u4EE4\u6267\u884C\u8F7B\u91CF\u81EA\u68C0\u3002","settings.diagnostics.idle":"\u73AF\u5883\u68C0\u67E5\u9ED8\u8BA4\u5173\u95ED\u3002\u70B9\u51FB\u201C\u7ACB\u5373\u68C0\u67E5\u201D\u540E\u624D\u4F1A\u6267\u884C\u3002","settings.diagnostics.checkNow":"\u7ACB\u5373\u68C0\u67E5","settings.diagnostics.checking":"\u68C0\u67E5\u4E2D...","settings.diagnostics.refreshed":"AI 3D \u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD\u5DF2\u5237\u65B0\u3002","settings.diagnostics.checkingAvailability":"\u6B63\u5728\u68C0\u67E5\u8F6C\u6362\u5668\u547D\u4EE4\u53EF\u7528\u6027...","settings.diagnostics.available":"\u53EF\u7528","settings.diagnostics.notFound":"\u672A\u627E\u5230","settings.diagnostics.sourceLabel":"\u6765\u6E90","settings.diagnostics.commandLabel":"\u547D\u4EE4","settings.diagnostics.resolvedPathLabel":"\u89E3\u6790\u8DEF\u5F84","settings.diagnostics.selfCheckLabel":"\u81EA\u68C0","settings.diagnostics.selfCheckOk":"\u901A\u8FC7","settings.diagnostics.selfCheckFailed":"\u5931\u8D25","settings.diagnostics.cadPythonCheck":"Python \u5305\uFF08cadquery\u3001trimesh\uFF09","settings.diagnostics.meshPythonCheck":"Python \u5305\uFF08trimesh\u3001numpy\u3001networkx\u3001collada\uFF09","settings.diagnostics.freecadCmdCheck":"FreeCADCmd \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.obj2gltfCheck":"obj2gltf \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.fbx2gltfCheck":"FBX2glTF \u542F\u52A8\u63A2\u6D4B","settings.canvasHeight":"\u9ED8\u8BA4\u753B\u5E03\u9AD8\u5EA6","settings.canvasHeight.desc":"\u5185\u8054 3D \u9884\u89C8\u7684\u9ED8\u8BA4\u9AD8\u5EA6\uFF08\u50CF\u7D20\uFF09\u3002\u8303\u56F4\uFF1A200\u2013800\u3002","settings.autoRotateSpeed":"\u81EA\u52A8\u65CB\u8F6C\u901F\u5EA6","settings.autoRotateSpeed.desc":"\u542F\u7528\u81EA\u52A8\u65CB\u8F6C\u65F6\u7684\u65CB\u8F6C\u901F\u5EA6\u3002\u8303\u56F4\uFF1A0.1\u20132.0\u3002","settings.renderQuality":"\u6E32\u67D3\u8D28\u91CF","settings.renderQuality.desc":"\u66F4\u9AD8\u8D28\u91CF\u4F7F\u7528\u66F4\u591A GPU \u8D44\u6E90\u3002\u5F71\u54CD\u6297\u952F\u9F7F\u548C\u5206\u8FA8\u7387\u3002","settings.renderScale":"\u6E32\u67D3\u7F29\u653E","settings.renderScale.desc":"\u6E32\u67D3\u5206\u8FA8\u7387\u500D\u6570\u30021.0 = \u539F\u59CB\uFF0C0.5 = \u4E00\u534A\uFF0C2.0 = \u53CC\u500D\uFF08\u8D85\u91C7\u6837\uFF09\u3002\u8303\u56F4\uFF1A0.25\u20132.0\u3002","modelLoad.warningTitle":"\u6682\u65F6\u65E0\u6CD5\u9884\u89C8\u6A21\u578B","modelLoad.warningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528 {converterName} \u8F6C\u6362\u5668\uFF0C\u624D\u80FD\u52A0\u8F7D\u3002","modelLoad.warningHint":"\u8BF7\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528\u5BF9\u5E94\u8F6C\u6362\u5668\uFF0C\u7136\u540E\u91CD\u65B0\u52A0\u8F7D\u5F53\u524D\u6587\u4EF6\u3002","modelLoad.mobileWarningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u672C\u5730\u8F6C\u6362\u5DE5\u5177\uFF0C\u4F46\u8FD9\u4E9B\u5DE5\u5177\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\u4E0D\u53EF\u7528\u3002","modelLoad.mobileWarningHint":"\u8BF7\u5728\u684C\u9762\u7AEF\u6253\u5F00\u6B64\u6587\u4EF6\uFF0C\u6216\u5148\u5C06\u5B83\u8F6C\u6362\u4E3A GLB\u3001GLTF\u3001OBJ\u3001STL \u6216 PLY\u3002","modelLoad.errorTitle":"\u65E0\u6CD5\u663E\u793A\u8FD9\u4E2A\u6A21\u578B","modelLoad.errorMessage":"\u52A0\u8F7D\u5931\u8D25\uFF1A{reason}","modelLoad.errorHint":"\u8BF7\u68C0\u67E5\u6587\u4EF6\u683C\u5F0F\uFF0C\u6216\u6253\u5F00\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\u3002","headingPin.showSingle":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.showMultiple":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.linkedTo":"\u5173\u8054\u5230\uFF1A{models}","helper.resetViewLabel":"\u91CD\u7F6E\u89C6\u56FE","helper.resetViewDone":"\u5DF2\u91CD\u7F6E","helper.copyModelInfoLabel":"\u590D\u5236\u6A21\u578B\u4FE1\u606F\u4E3A Markdown","helper.copySelectedPartInfoLabel":"\u590D\u5236\u9009\u4E2D\u90E8\u4EF6\u4FE1\u606F","helper.noSelectedPart":"\u8BF7\u5148\u70B9\u51FB\u4E00\u4E2A\u90E8\u4EF6","helper.copied":"\u5DF2\u590D\u5236","helper.failed":"\u5931\u8D25","helper.toggleWireframeLabel":"\u5207\u6362\u7EBF\u6846\u663E\u793A","helper.wireframeOn":"\u7EBF\u6846","helper.wireframeOff":"\u5B9E\u4F53","helper.toggleAxesLabel":"\u5207\u6362\u65B9\u5411\u5750\u6807\u8F74","helper.axesOn":"\u5750\u6807\u8F74\u5DF2\u5F00\u542F","helper.axesOff":"\u5750\u6807\u8F74\u5DF2\u5173\u95ED","helper.toggleBoundingBoxLabel":"\u5207\u6362\u5305\u56F4\u76D2","helper.boundingBoxOn":"\u5305\u56F4\u76D2\u5DF2\u5F00\u542F","helper.boundingBoxOff":"\u5305\u56F4\u76D2\u5DF2\u5173\u95ED","helper.toggleFocusSelectionLabel":"\u805A\u7126\u9009\u4E2D\u90E8\u4EF6","helper.focusSelectionOn":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.focusSelectionOff":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.toggleDisassemblyLabel":"\u5207\u6362\u5206\u89E3\u6A21\u5F0F","helper.disassemblyOn":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.disassemblyOff":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.changeResolutionLabel":"\u5207\u6362\u5206\u8FA8\u7387","helper.resolutionValue":"\u5206\u8FA8\u7387\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u5207\u6362\u8DDD\u79BB\u6D4B\u91CF","helper.measurementOn":"\u6D4B\u91CF\u5DF2\u5F00\u542F","helper.measurementOff":"\u6D4B\u91CF\u5DF2\u5173\u95ED","helper.clearMeasurementsLabel":"\u6E05\u9664\u6D4B\u91CF","helper.measurementsCleared":"\u5DF2\u6E05\u9664","helper.copyMeasurementsLabel":"\u590D\u5236\u6D4B\u91CF","helper.noMeasurements":"\u6682\u65E0\u6D4B\u91CF","helper.measurementsCopied":"\u6D4B\u91CF\u5DF2\u590D\u5236","helper.calibrateLabel":"\u6821\u51C6\u6D4B\u91CF\u6BD4\u4F8B","helper.calibrateTitle":"\u6D4B\u91CF\u6821\u51C6","helper.calibrateCurrent":"\u5F53\u524D\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u771F\u5B9E\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u9501\u5B9A\u6BD4\u4F8B","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6BD4\u4F8B\u5DF2\u5E94\u7528","helper.calibrateResetDone":"\u6BD4\u4F8B\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6821\u51C6\u9762\u677F\u5DF2\u6253\u5F00","helper.calibrateClose":"\u6821\u51C6\u9762\u677F\u5DF2\u5173\u95ED","helper.removePreviewLabel":"\u79FB\u9664\u9884\u89C8","helper.copySnapshotLabel":"\u590D\u5236\u5FEB\u7167","helper.saveSnapshotLabel":"\u4FDD\u5B58\u5FEB\u7167\u5230\u4ED3\u5E93","helper.saved":"\u5DF2\u4FDD\u5B58","helper.downloadSnapshotLabel":"\u4E0B\u8F7D\u5FEB\u7167","helper.downloaded":"\u5DF2\u4E0B\u8F7D","helper.toggleAnnotationLabel":"\u5207\u6362\u6807\u6CE8\u6A21\u5F0F","helper.toggleAnnotationsVisibilityLabel":"\u663E\u793A\u6216\u9690\u85CF\u6807\u6CE8","helper.annotateOn":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.annotateOff":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.annotationsVisible":"\u6807\u6CE8\u5DF2\u663E\u793A","helper.annotationsHidden":"\u6807\u6CE8\u5DF2\u9690\u85CF","helper.enableInteractionLabel":"\u542F\u7528\u89E6\u63A7\u4EA4\u4E92","helper.disableInteractionLabel":"\u5207\u56DE\u6EDA\u52A8\u6A21\u5F0F","helper.interactionOn":"\u6A21\u578B\u4EA4\u4E92\u5DF2\u5F00\u542F","helper.interactionOff":"\u6EDA\u52A8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.showMoreActionsLabel":"\u663E\u793A\u66F4\u591A\u64CD\u4F5C","helper.hideMoreActionsLabel":"\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.moreActionsShown":"\u5DF2\u5C55\u5F00\u66F4\u591A\u64CD\u4F5C","helper.moreActionsHidden":"\u5DF2\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.interactAction":"\u4EA4\u4E92","helper.scrollAction":"\u6EDA\u52A8","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"\u6682\u65E0\u6A21\u578B","workbench.emptyText":"\u4F7F\u7528\u201C\u5BFC\u5165 3D \u6A21\u578B\u201D\u547D\u4EE4\u52A0\u8F7D GLB\u3001GLTF\u3001STL\u3001OBJ \u6216 PLY \u6587\u4EF6\u3002","workbench.modelTitle":"3D \u6A21\u578B","workbench.studioTitle":"AI \u6A21\u578B\u5DE5\u4F5C\u53F0","workbench.studioTagline":"\u68C0\u67E5\u3001\u6807\u6CE8\uFF0C\u5E76\u628A 3D \u8D44\u4EA7\u6574\u7406\u6210\u53CC\u94FE\u7B14\u8BB0\u3002","workbench.navLabel":"\u5DE5\u4F5C\u53F0\u5206\u533A","workbench.navGallery":"\u753B\u5ECA","workbench.navLibrary":"\u8D44\u6599\u5E93","workbench.navNotebooks":"\u7B14\u8BB0\u672C","workbench.navSettings":"\u8BBE\u7F6E","workbench.sourcesTitle":"\u6A21\u578B\u6765\u6E90","workbench.layersTitle":"\u5BA1\u9605\u5C42","workbench.viewModeTitle":"\u89C6\u56FE\u6A21\u5F0F","workbench.modeMesh":"\u7F51\u683C\u89C6\u56FE","workbench.modeFocus":"\u805A\u7126\u9009\u533A","workbench.modeMeshShort":"\u7F51\u683C","workbench.modeFocusShort":"\u805A\u7126","workbench.previewViewsTitle":"\u9884\u89C8\u89C6\u56FE","workbench.connectionsTitle":"\u77E5\u8BC6\u8FDE\u63A5","workbench.currentModelLabel":"\u5F53\u524D\u6A21\u578B","workbench.noReportYet":"\u8FD8\u6CA1\u6709\u62A5\u544A\u7B14\u8BB0","workbench.noIndexYet":"\u8FD8\u6CA1\u6709\u77E5\u8BC6\u7D22\u5F15\u3002\u8BF7\u5148\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","workbench.noModelLoaded":"\u5C1A\u672A\u52A0\u8F7D\u6A21\u578B","workbench.disassemblyTitle":"\u5206\u89E3","workbench.explodeLabel":"\u7206\u70B8","workbench.summaryTitle":"\u6458\u8981","workbench.meshesLabel":"\u7F51\u683C","workbench.splatsLabel":"\u70B9\u4E91","workbench.trianglesLabel":"\u4E09\u89D2\u5F62","workbench.verticesLabel":"\u9876\u70B9","workbench.materialsLabel":"\u6750\u8D28","workbench.boundingSizeLabel":"\u5305\u56F4\u76D2","workbench.centerLabel":"\u4E2D\u5FC3","workbench.selectedPartTitle":"\u5F53\u524D\u9009\u4E2D\u90E8\u4EF6","workbench.partMeshLabel":"\u7F51\u683C","workbench.noSelectedPart":"\u70B9\u51FB\u6A21\u578B\u4E2D\u7684\u90E8\u4EF6\u540E\u4F1A\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\u3002","workbench.tagsTitle":"\u6807\u7B7E","workbench.noTagsYet":"\u8FD8\u6CA1\u6709\u6807\u7B7E","workbench.addTagPlaceholder":"\u6DFB\u52A0\u6807\u7B7E...","workbench.addTagAction":"\u6DFB\u52A0","workbench.annotationsTitle":"\u6807\u6CE8","workbench.exitAnnotate":"\u9000\u51FA\u6807\u6CE8","workbench.annotate":"\u6807\u6CE8","workbench.annotateHintActive":"\u70B9\u51FB\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E \xB7 \u6309 Esc \u9000\u51FA","workbench.annotateHintActiveMobile":"\u70B9\u6309\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E\u3002\u9700\u8981\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.pinCount":"{count} \u4E2A\u6807\u6CE8","workbench.editAction":"\u7F16\u8F91","workbench.deleteAction":"\u5220\u9664","workbench.resetViewAction":"\u91CD\u7F6E\u89C6\u56FE","workbench.insertInfoAction":"\u63D2\u5165\u4FE1\u606F","workbench.insertGalleryAction":"\u63D2\u5165 Gallery","workbench.insertCompareAction":"\u63D2\u5165\u5BF9\u6BD4","workbench.playAction":"\u64AD\u653E","workbench.pauseAction":"\u6682\u505C","workbench.saveProfileAction":"\u4FDD\u5B58\u914D\u7F6E","workbench.generateNoteAction":"\u751F\u6210\u7B14\u8BB0","workbench.openNoteAction":"\u6253\u5F00\u7B14\u8BB0","workbench.openIndexAction":"\u6253\u5F00\u7D22\u5F15","workbench.recordTitle":"\u6807\u672C\u5361","workbench.recordSubtitle":"\u5F53\u524D\u8D44\u4EA7\u6863\u6848","workbench.notesTitle":"\u5206\u6790\u672D\u8BB0","workbench.whereTitle":"\u5173\u8054\u4F4D\u7F6E","workbench.noteReady":"\u5173\u8054\u7B14\u8BB0\u5DF2\u5C31\u7EEA","workbench.indexReady":"\u77E5\u8BC6\u7D22\u5F15\u5DF2\u5C31\u7EEA","workbench.notePending":"\u5173\u8054\u7B14\u8BB0\u5F85\u751F\u6210","workbench.analysisLabel":"\u5206\u6790","workbench.settingsUnavailable":"\u8BF7\u4ECE Obsidian \u8BBE\u7F6E\u4E2D\u6253\u5F00\u672C\u63D2\u4EF6\u6765\u8C03\u6574\u5DE5\u4F5C\u53F0\u9009\u9879\u3002","workbench.profileSaved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","workbench.viewReset":"\u89C6\u56FE\u5DF2\u91CD\u7F6E","workbench.infoInserted":"\u6A21\u578B\u4FE1\u606F\u5DF2\u63D2\u5165","workbench.infoCopied":"\u6A21\u578B\u4FE1\u606F\u5DF2\u590D\u5236","workbench.templateInserted":"\u6A21\u677F\u5DF2\u63D2\u5165","workbench.templateCopied":"\u6A21\u677F\u5DF2\u590D\u5236","workbench.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.mobileHintInteractive":"\u5F53\u524D\u4E3A\u4EA4\u4E92\u6A21\u5F0F\u3002\u9700\u8981\u7EE7\u7EED\u6EDA\u52A8\u7B14\u8BB0\u65F6\uFF0C\u8BF7\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","directView.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u4F7F\u7528\u4E0B\u65B9\u5DE5\u5177\u680F\u91CC\u7684\u201C\u4EA4\u4E92\u201D\u6309\u94AE\uFF0C\u5728\u6A21\u578B\u64CD\u4F5C\u548C\u7B14\u8BB0\u6EDA\u52A8\u4E4B\u95F4\u5207\u6362\u3002","directWorkbench.modelLoadInterrupted":"\u6A21\u578B\u52A0\u8F7D\u88AB\u65B0\u8BF7\u6C42\u4E2D\u65AD\u3002","directWorkbench.backendLabel":"\u540E\u7AEF","directWorkbench.routeLabel":"\u8DEF\u7531","directWorkbench.performanceLabel":"\u6027\u80FD","directWorkbench.partCandidatesLabel":"\u5019\u9009\u96F6\u4EF6","directWorkbench.knowledgeTitle":"\u77E5\u8BC6","directWorkbench.registeredTitle":"\u5DF2\u6CE8\u518C\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredLoading":"\u68C0\u67E5\u4E2D...","directWorkbench.registeredCount":"{count} \u4E2A\u5339\u914D","directWorkbench.registeredEmpty":"\u6682\u65E0\u8DE8\u6A21\u578B\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredUnavailable":"\u6682\u65E0\u96F6\u4EF6\u8BC1\u636E","directWorkbench.registeredOpen":"\u6253\u5F00","directWorkbench.registeredOpenNote":"\u7B14\u8BB0","directWorkbench.registeredOpenModel":"\u6A21\u578B","directWorkbench.registeredSourceModel":"\u6765\u81EA {model}","directWorkbench.registeredTargetPartNote":"\u6253\u5F00\u5339\u914D\u96F6\u4EF6\u7B14\u8BB0","directWorkbench.registeredTargetSourceModel":"\u6253\u5F00\u6765\u6E90\u6A21\u578B","directWorkbench.registeredTargetUnavailable":"\u6682\u65E0\u53EF\u6253\u5F00\u76EE\u6807","workbench.fileNotFound":"\u672A\u627E\u5230\u6587\u4EF6\uFF1A{path}","annotation.selectColor":"\u9009\u62E9\u989C\u8272 {color}","annotation.sectionEmpty":"\u8BE5\u6BB5\u5185\u5BB9\u4E3A\u7A7A\u3002","modal.selectModel":"\u9009\u62E9\u4E00\u4E2A 3D \u6A21\u578B...","main.commandImportModel":"\u5BFC\u5165 3D \u6A21\u578B","main.commandGenerateNote":"\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","main.commandOpenKnowledgeIndex":"\u6253\u5F00\u77E5\u8BC6\u7D22\u5F15","main.commandClearConversionCache":"\u6E05\u9664\u8F6C\u6362\u7F13\u5B58","main.commandCheckConverters":"\u68C0\u67E5\u8F6C\u6362\u5668","main.commandCopyDiagnostics":"\u590D\u5236\u8BCA\u65AD\u62A5\u544A","main.converterDiagnosticsMobileUnavailable":"\u8F6C\u6362\u5668\u8BCA\u65AD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0C\u76F4\u8BFB\u683C\u5F0F\u4ECD\u53EF\u52A0\u8F7D\u3002","main.diagnosticsCopied":"AI Model Workbench \u8BCA\u65AD\u62A5\u544A\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\u3002","main.diagnosticsCopyFailed":"\u65E0\u6CD5\u590D\u5236\u8BCA\u65AD\u62A5\u544A\uFF0C\u5DF2\u6539\u4E3A\u521B\u5EFA\u4E00\u4EFD\u8131\u654F\u8BCA\u65AD\u7B14\u8BB0\u3002","codeBlock.noModelPathOrConfig":"\u672A\u6307\u5B9A\u6A21\u578B\u8DEF\u5F84\u6216\u914D\u7F6E\u3002","codeBlock.jsonParseError":"JSON \u89E3\u6790\u9519\u8BEF\uFF1A{error}","codeBlock.jsonParseLine":"\uFF08\u7B2C {line} \u884C\uFF09","codeBlock.noModelsInConfig":"\u914D\u7F6E\u4E2D\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.unsupportedFormat":"\u4E0D\u652F\u6301\u7684\u683C\u5F0F\uFF1A{ext}\u3002\u652F\u6301\uFF1A{formats}","codeBlock.splatDisabled":"\u5F53\u524D\u6253\u5305\u7248\u672C\u6682\u672A\u542F\u7528 SPLAT \u9884\u89C8\u3002\u540E\u7EED\u4F1A\u4F18\u5148\u6062\u590D\u672C\u5730-only .splat\uFF1B.spz/.sog \u9700\u8981\u672C\u5730\u6253\u5305\u89E3\u7801\u5668\u540E\u518D\u8BC4\u4F30\u3002","codeBlock.noConfigSpecified":"\u672A\u6307\u5B9A\u914D\u7F6E\u3002","codeBlock.noModelsSpecified":"\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","codeBlock.renderingGrid":"\u6B63\u5728\u6E32\u67D3\u7F51\u683C...","codeBlock.composeRequiresSections":"\u201Ccompose\u201D \u9884\u8BBE\u9700\u8981\u63D0\u4F9B \u201Csections\u201D \u6570\u7EC4\u3002","codeBlock.composeNoValidSections":"Compose\uFF1A\u6CA1\u6709\u6709\u6548\u7684\u5206\u6BB5\u3002","codeBlock.unknownPreset":"\u672A\u77E5\u9884\u8BBE\uFF1A\u201C{preset}\u201D\u3002\u53EF\u7528\uFF1Acompare\u3001showcase\u3001explode\u3001timeline\u3001compose","codeBlock.presetRequiresModels":"\u9884\u8BBE \u201C{preset}\u201D \u9700\u8981 {min}-{max} \u4E2A\u6A21\u578B\uFF0C\u5F53\u524D\u4E3A {count} \u4E2A\u3002","codeBlock.gridFailed":"\u7F51\u683C\u6E32\u67D3\u5931\u8D25\uFF1A{reason}","livePreview.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u62D6\u52A8\u6A21\u578B\u65F6\u5207\u5230\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","loading.default":"\u52A0\u8F7D\u4E2D...","loading.preparingModel":"\u6B63\u5728\u51C6\u5907\u6A21\u578B...","loading.loadingModel":"\u6B63\u5728\u52A0\u8F7D\u6A21\u578B..."}});function Jp(n){p1=n;for(let e of o0)e()}function j(n){var e,t,i;return(i=(t=(e=WJ[p1])==null?void 0:e[n])!=null?t:a0[n])!=null?i:n}function _1(n){return o0.add(n),()=>{o0.delete(n)}}function HJ(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function qi(n,e){return HJ(j(n),e)}var WJ,p1,o0,vn=I(()=>{"use strict";h1();m1();WJ={en:a0,"zh-CN":u1},p1="en",o0=new Set});var _d,aE=I(()=>{"use strict";_d="ai3d-direct-view"});function XJ(n){return n!=null?n:v1}function Kh(n){var c;let e=n.ext.trim().toLowerCase(),t=(c=n.annotationMode)!=null?c:"none",i=!!n.allowEditModeOnThree,r=!!n.allowWorkbenchFeaturesOnThree,s=!!n.requireWorkbenchFeatures,a=XJ(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(g1.has(e)&&(!s||r)){if(s&&!zJ.has(e))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`workbench experimental Three supports GLB/GLTF only, ext=${e}`};if(t==="edit"&&a!=="three-direct-glb")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`annotationMode=edit, rendererRollout=${a}`};if(a==="babylon-safe")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`rendererRollout=${a}`};if(t==="edit"&&!i)return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"annotationMode=edit, allowEditModeOnThree=false"};let f=s?`${e} workbench preview`:t==="edit"?`${e} direct view edit preview`:t==="readonly"?`${e} preview with readonly annotations`:`simple ${e} preview`;return{backend:"three",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:f}}let l=[];return g1.has(e)||l.push(`ext=${e}`),t!=="none"&&l.push(`annotationMode=${t}`),t==="edit"&&!i&&l.push("allowEditModeOnThree=false"),s&&l.push("requireWorkbenchFeatures=true"),a!==v1&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function E1(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var v1,g1,zJ,oE=I(()=>{"use strict";v1="three-direct-glb",g1=new Set(["glb","gltf","stl","ply","obj"]),zJ=new Set(["glb","gltf"])});function YJ(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function KJ(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function pu(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function k3(){let n=pu("canvas");return n.style.display="block",n}function p_(...n){let e="THREE."+n.shift();_u?_u("log",e,...n):console.log(e,...n)}function W3(n){let e=n[0];if(typeof e=="string"&&e.startsWith("TSL:")){let t=n[1];t&&t.isStackTrace?n[0]+=" "+t.getLocation():n[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return n}function yt(...n){n=W3(n);let e="THREE."+n.shift();if(_u)_u("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function Bt(...n){n=W3(n);let e="THREE."+n.shift();if(_u)_u("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function qE(...n){let e=n.join(" ");e in S1||(S1[e]=!0,yt(...n))}function H3(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}function eo(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Pn[n&255]+Pn[n>>8&255]+Pn[n>>16&255]+Pn[n>>24&255]+"-"+Pn[e&255]+Pn[e>>8&255]+"-"+Pn[e>>16&15|64]+Pn[e>>24&255]+"-"+Pn[t&63|128]+Pn[t>>8&255]+"-"+Pn[t>>16&255]+Pn[t>>24&255]+Pn[i&255]+Pn[i>>8&255]+Pn[i>>16&255]+Pn[i>>24&255]).toLowerCase()}function mi(n,e,t){return Math.max(e,Math.min(t,n))}function hI(n,e){return(n%e+e)%e}function jJ(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function qJ(n,e,t){return n!==e?(t-n)/(e-n):0}function h_(n,e,t){return(1-t)*n+t*e}function ZJ(n,e,t,i){return h_(n,e,1-Math.exp(-t*i))}function QJ(n,e=1){return e-Math.abs(hI(n,e*2)-e)}function $J(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function JJ(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function eee(n,e){return n+Math.floor(Math.random()*(e-n+1))}function tee(n,e){return n+Math.random()*(e-n)}function iee(n){return n*(.5-Math.random())}function ree(n){n!==void 0&&(T1=n);let e=T1+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function nee(n){return n*d_}function see(n){return n*yd}function aee(n){return(n&n-1)===0&&n!==0}function oee(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function lee(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function cee(n,e,t,i,r){let s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+i)/2),f=a((e+i)/2),d=s((e-i)/2),h=a((e-i)/2),u=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*h,o*c);break;case"YZY":n.set(l*h,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*h,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*u,o*c);break;case"YXY":n.set(l*u,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*u,o*f,o*c);break;default:yt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function $a(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Zi(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}function fee(){let n={enabled:!0,workingColorSpace:Jn,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ki&&(r.r=Bl(r.r),r.g=Bl(r.g),r.b=Bl(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ki&&(r.r=hu(r.r),r.g=hu(r.g),r.b=hu(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Hl?m_:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return qE("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return qE("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[Jn]:{primaries:e,whitePoint:i,transfer:m_,toXYZ:x1,fromXYZ:R1,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Mi},outputColorSpaceConfig:{drawingBufferColorSpace:Mi}},[Mi]:{primaries:e,whitePoint:i,transfer:Ki,toXYZ:x1,fromXYZ:R1,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Mi}}}),n}function Bl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function hu(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function f0(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?ZE.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(yt("Texture: Unable to serialize Texture."),{})}function u0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function T0(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){vd.fromArray(n,s);let o=r.x*Math.abs(vd.x)+r.y*Math.abs(vd.y)+r.z*Math.abs(vd.z),l=e.dot(vd),c=t.dot(vd),f=i.dot(vd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function gE(n,e,t,i,r,s){ou.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(s_.x=s*ou.x-r*ou.y,s_.y=r*ou.x+s*ou.y):s_.copy(ou),n.copy(e),n.x+=s_.x,n.y+=s_.y,n.applyMatrix4(Y3)}function Ree(n,e,t,i,r,s,a,o){let l;if(e.side===Sn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===Qs,o),l===null)return null;bE.copy(o),bE.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(bE);return ct.far?null:{distance:c,point:bE.clone(),object:n}}function ME(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,TE),n.getVertexPosition(l,AE),n.getVertexPosition(c,xE);let f=Ree(n,e,t,i,TE,AE,xE,B1);if(f){let d=new se;Fl.getBarycoord(B1,TE,AE,xE,d),r&&(f.uv=Fl.getInterpolatedAttribute(r,o,l,c,d,new Mt)),s&&(f.uv1=Fl.getInterpolatedAttribute(s,o,l,c,d,new Mt)),a&&(f.normal=Fl.getInterpolatedAttribute(a,o,l,c,d,new se),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let h={a:o,b:l,c,normal:new se,materialIndex:0};Fl.getNormal(TE,AE,xE,h.normal),f.face=h,f.barycoord=d}return f}function DE(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if(JE.fromBufferAttribute(o,r),eS.fromBufferAttribute(o,s),t.distanceSqToSegment(JE,eS,L0,Y1)>i)return;L0.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(L0);if(!(ce.far))return{distance:c,point:Y1.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function Z1(n,e,t,i,r,s,a){let o=U0.distanceSqToPoint(n);if(or.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}function Ud(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(Q1(r))r.isRenderTargetTexture?(yt("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][i]=null):e[t][i]=r.clone();else if(Array.isArray(r))if(Q1(r[0])){let s=[];for(let a=0,o=r.length;a{tf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},rf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},a3=0,Y0=1,o3=2,F_=1,pS=2,Pu=3,Qs=0,Sn=1,Ta=2,Qo=0,Rd=1,K0=2,j0=3,q0=4,l3=5,qc=100,c3=101,f3=102,d3=103,h3=104,u3=200,m3=201,p3=202,_3=203,VE=204,GE=205,g3=206,v3=207,E3=208,S3=209,T3=210,A3=211,x3=212,R3=213,b3=214,kE=0,WE=1,HE=2,bd=3,zE=4,XE=5,YE=6,KE=7,B_=0,M3=1,I3=2,Rs=0,Z0=1,Q0=2,$0=3,J0=4,eI=5,tI=6,iI=7,w0="attached",y3="detached",rI=300,nf=301,Fd=302,_S=303,gS=304,U_=306,Wo=1e3,Ea=1001,uu=1002,Nr=1003,vS=1004,Bd=1005,wr=1006,Du=1007,so=1008,bs=1009,nI=1010,sI=1011,Lu=1012,ES=1013,ao=1014,ea=1015,$o=1016,SS=1017,TS=1018,Ou=1020,aI=35902,oI=35899,lI=1021,cI=1022,ta=1023,Ho=1026,sf=1027,AS=1028,xS=1029,af=1030,RS=1031,bS=1033,V_=33776,G_=33777,k_=33778,W_=33779,MS=35840,IS=35841,yS=35842,CS=35843,PS=36196,DS=37492,LS=37496,OS=37488,NS=37489,H_=37490,wS=37491,FS=37808,BS=37809,US=37810,VS=37811,GS=37812,kS=37813,WS=37814,HS=37815,zS=37816,XS=37817,YS=37818,KS=37819,jS=37820,qS=37821,ZS=36492,QS=36494,$S=36495,JS=36283,eT=36284,z_=36285,tT=36286,C3=2200,P3=2201,D3=2202,Md=2300,Id=2301,UE=2302,F0=2303,Ad=2400,xd=2401,u_=2402,iT=2500,L3=2501,fI=0,X_=1,Nu=2,O3=3200,wu=0,N3=1,Hl="",Mi="srgb",Jn="srgb-linear",m_="linear",Ki="srgb",Td=7680,B0=519,w3=512,F3=513,B3=514,rT=515,U3=516,V3=517,nT=518,G3=519,jE=35044,dI="300 es",Ja=2e3,mu=2001;S1={},_u=null;z3={[kE]:WE,[HE]:YE,[zE]:KE,[bd]:XE,[WE]:kE,[YE]:HE,[KE]:zE,[XE]:bd},Sa=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){let i=this._listeners;if(i===void 0)return;let r=i[e];if(r!==void 0){let s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let i=t[e.type];if(i!==void 0){e.target=this;let r=i.slice(0);for(let s=0,a=r.length;s0){let u=.5/Math.sqrt(h+1);this._w=.25/u,this._x=(f-l)*u,this._y=(s-c)*u,this._z=(a-r)*u}else if(i>o&&i>d){let u=2*Math.sqrt(1+i-o-d);this._w=(f-l)/u,this._x=.25*u,this._y=(r+a)/u,this._z=(s+c)/u}else if(o>d){let u=2*Math.sqrt(1+o-i-d);this._w=(s-c)/u,this._x=(r+a)/u,this._y=.25*u,this._z=(l+f)/u}else{let u=2*Math.sqrt(1+d-i-o);this._w=(a-r)/u,this._x=(s+c)/u,this._y=(l+f)/u,this._z=.25*u}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(mi(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,f=t._w;return this._x=i*f+a*o+r*c-s*l,this._y=r*f+a*l+s*o-i*c,this._z=s*f+a*c+i*l-r*o,this._w=a*f-i*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,s=-s,a=-a,o=-o);let l=1-t;if(o<.9995){let c=Math.acos(o),f=Math.sin(c);l=Math.sin(l*c)/f,t=Math.sin(t*c)/f,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},vI=class vI{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(A1.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(A1.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*a,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*i),f=2*(o*t-s*r),d=2*(s*i-a*t);return this.x=t+l*c+a*d-o*f,this.y=i+l*f+o*c-s*d,this.z=r+l*d+s*f-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=mi(this.x,e.x,t.x),this.y=mi(this.y,e.y,t.y),this.z=mi(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=mi(this.x,e,t),this.y=mi(this.y,e,t),this.z=mi(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(mi(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-i*l,this.z=i*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return l0.copy(this).projectOnVector(e),this.sub(l0)}reflect(e){return this.sub(l0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(mi(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};vI.prototype.isVector3=!0;se=vI,l0=new se,A1=new Qr,EI=class EI{constructor(e,t,i,r,s,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,a,o,l,c)}set(e,t,i,r,s,a,o,l,c){let f=this.elements;return f[0]=e,f[1]=r,f[2]=o,f[3]=t,f[4]=s,f[5]=l,f[6]=i,f[7]=a,f[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,s=this.elements,a=i[0],o=i[3],l=i[6],c=i[1],f=i[4],d=i[7],h=i[2],u=i[5],m=i[8],_=r[0],p=r[3],g=r[6],v=r[1],x=r[4],S=r[7],E=r[2],T=r[5],R=r[8];return s[0]=a*_+o*v+l*E,s[3]=a*p+o*x+l*T,s[6]=a*g+o*S+l*R,s[1]=c*_+f*v+d*E,s[4]=c*p+f*x+d*T,s[7]=c*g+f*S+d*R,s[2]=h*_+u*v+m*E,s[5]=h*p+u*x+m*T,s[8]=h*g+u*S+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8];return t*a*f-t*o*c-i*s*f+i*o*l+r*s*c-r*a*l}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=f*a-o*c,h=o*l-f*s,u=c*s-a*l,m=t*d+i*h+r*u;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let _=1/m;return e[0]=d*_,e[1]=(r*c-f*i)*_,e[2]=(o*i-r*a)*_,e[3]=h*_,e[4]=(f*t-r*l)*_,e[5]=(r*s-o*t)*_,e[6]=u*_,e[7]=(i*l-c*t)*_,e[8]=(a*t-i*s)*_,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,a,o){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(c0.makeScale(e,t)),this}rotate(e){return this.premultiply(c0.makeRotation(-e)),this}translate(e,t){return this.premultiply(c0.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};EI.prototype.isMatrix3=!0;ii=EI,c0=new ii,x1=new ii().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),R1=new ii().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);ai=fee();ZE=class{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{jh===void 0&&(jh=pu("canvas")),jh.width=e.width,jh.height=e.height;let r=jh.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=jh}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=pu("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(d0).x}get height(){return this.source.getSize(d0).y}get depth(){return this.source.getSize(d0).z}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.normalized=e.normalized,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let i=e[t];if(i===void 0){yt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){yt(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,normalized:this.normalized,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==rI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Wo:e.x=e.x-Math.floor(e.x);break;case Ea:e.x=e.x<0?0:1;break;case uu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Wo:e.y=e.y-Math.floor(e.y);break;case Ea:e.y=e.y<0?0:1;break;case uu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};Rr.DEFAULT_IMAGE=null;Rr.DEFAULT_MAPPING=rI;Rr.DEFAULT_ANISOTROPY=1;SI=class SI{constructor(e=0,t=0,i=0,r=1){this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*i+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*i+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*i+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*i+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s,l=e.elements,c=l[0],f=l[4],d=l[8],h=l[1],u=l[5],m=l[9],_=l[2],p=l[6],g=l[10];if(Math.abs(f-h)<.01&&Math.abs(d-_)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+h)<.1&&Math.abs(d+_)<.1&&Math.abs(m+p)<.1&&Math.abs(c+u+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let x=(c+1)/2,S=(u+1)/2,E=(g+1)/2,T=(f+h)/4,R=(d+_)/4,M=(m+p)/4;return x>S&&x>E?x<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(x),r=T/i,s=R/i):S>E?S<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(S),i=T/r,s=M/r):E<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(E),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-_)*(d-_)+(h-f)*(h-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-_)/v,this.z=(h-f)/v,this.w=Math.acos((c+u+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=mi(this.x,e.x,t.x),this.y=mi(this.y,e.y,t.y),this.z=mi(this.z,e.z,t.z),this.w=mi(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=mi(this.x,e,t),this.y=mi(this.y,e,t),this.z=mi(this.z,e,t),this.w=mi(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(mi(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};SI.prototype.isVector4=!0;ir=SI,QE=class extends Sa{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:wr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new ir(0,0,e,t),this.scissorTest=!1,this.viewport=new ir(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Rr(r),a=i.count;for(let o=0;o1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let l=o.shapes;if(Array.isArray(l))for(let c=0,f=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),f.length>0&&(i.images=f),d.length>0&&(i.shapes=d),h.length>0&&(i.skeletons=h),u.length>0&&(i.animations=u),m.length>0&&(i.nodes=m)}return i.object=r,i;function a(o){let l=[];for(let c in o){let f=o[c];delete f.metadata,l.push(f)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.pivot=e.pivot!==null?e.pivot.clone():null,this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;iu+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=u-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1,l.eventsEnabled&&l.dispatchEvent({type:"gripUpdated",data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Eee)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let i=new Zs;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},X3={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},zc={h:0,s:0,l:0},fE={h:0,s:0,l:0};ft=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){let r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Mi){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,ai.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=ai.workingColorSpace){return this.r=e,this.g=t,this.b=i,ai.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=ai.workingColorSpace){if(e=hI(e,1),t=mi(t,0,1),i=mi(i,0,1),t===0)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+t):i+t-i*t,a=2*i-s;this.r=u0(a,s,e+1/3),this.g=u0(a,s,e),this.b=u0(a,s,e-1/3)}return ai.colorSpaceToWorking(this,r),this}setStyle(e,t=Mi){function i(s){s!==void 0&&parseFloat(s)<1&&yt("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:yt("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);yt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Mi){let i=X3[e.toLowerCase()];return i!==void 0?this.setHex(i,t):yt("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Bl(e.r),this.g=Bl(e.g),this.b=Bl(e.b),this}copyLinearToSRGB(e){return this.r=hu(e.r),this.g=hu(e.g),this.b=hu(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Mi){return ai.workingToColorSpace(Dn.copy(this),e),Math.round(mi(Dn.r*255,0,255))*65536+Math.round(mi(Dn.g*255,0,255))*256+Math.round(mi(Dn.b*255,0,255))}getHexString(e=Mi){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=ai.workingColorSpace){ai.workingToColorSpace(Dn.copy(this),t);let i=Dn.r,r=Dn.g,s=Dn.b,a=Math.max(i,r,s),o=Math.min(i,r,s),l,c,f=(o+a)/2;if(o===a)l=0,c=0;else{let d=a-o;switch(c=f<=.5?d/(a+o):d/(2-a-o),a){case i:l=(r-s)/d+(r0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},Za=new se,Dl=new se,m0=new se,Ll=new se,$h=new se,Jh=new se,L1=new se,p0=new se,_0=new se,g0=new se,v0=new ir,E0=new ir,S0=new ir,Fl=class n{constructor(e=new se,t=new se,i=new se){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),Za.subVectors(e,t),r.cross(Za);let s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){Za.subVectors(r,t),Dl.subVectors(i,t),m0.subVectors(e,t);let a=Za.dot(Za),o=Za.dot(Dl),l=Za.dot(m0),c=Dl.dot(Dl),f=Dl.dot(m0),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let h=1/d,u=(c*l-o*f)*h,m=(a*f-o*l)*h;return s.set(1-u-m,m,u)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Ll)===null?!1:Ll.x>=0&&Ll.y>=0&&Ll.x+Ll.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,Ll)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Ll.x),l.addScaledVector(a,Ll.y),l.addScaledVector(o,Ll.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return v0.setScalar(0),E0.setScalar(0),S0.setScalar(0),v0.fromBufferAttribute(e,t),E0.fromBufferAttribute(e,i),S0.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(v0,s.x),a.addScaledVector(E0,s.y),a.addScaledVector(S0,s.z),a}static isFrontFacing(e,t,i,r){return Za.subVectors(i,t),Dl.subVectors(e,t),Za.cross(Dl).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Za.subVectors(this.c,this.b),Dl.subVectors(this.a,this.b),Za.cross(Dl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return n.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return n.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return n.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return n.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return n.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,r=this.b,s=this.c,a,o;$h.subVectors(r,i),Jh.subVectors(s,i),p0.subVectors(e,i);let l=$h.dot(p0),c=Jh.dot(p0);if(l<=0&&c<=0)return t.copy(i);_0.subVectors(e,r);let f=$h.dot(_0),d=Jh.dot(_0);if(f>=0&&d<=f)return t.copy(r);let h=l*d-f*c;if(h<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector($h,a);g0.subVectors(e,s);let u=$h.dot(g0),m=Jh.dot(g0);if(m>=0&&u<=m)return t.copy(s);let _=u*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(Jh,o);let p=f*m-u*d;if(p<=0&&d-f>=0&&u-m>=0)return L1.subVectors(s,r),o=(d-f)/(d-f+(u-m)),t.copy(r).addScaledVector(L1,o);let g=1/(p+_+h);return a=_*g,o=h*g,t.copy(i).addScaledVector($h,a).addScaledVector(Jh,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},Fr=class{constructor(e=new se(1/0,1/0,1/0),t=new se(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Qa),Qa.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(t_),hE.subVectors(this.max,t_),eu.subVectors(e.a,t_),tu.subVectors(e.b,t_),iu.subVectors(e.c,t_),Xc.subVectors(tu,eu),Yc.subVectors(iu,tu),gd.subVectors(eu,iu);let t=[0,-Xc.z,Xc.y,0,-Yc.z,Yc.y,0,-gd.z,gd.y,Xc.z,0,-Xc.x,Yc.z,0,-Yc.x,gd.z,0,-gd.x,-Xc.y,Xc.x,0,-Yc.y,Yc.x,0,-gd.y,gd.x,0];return!T0(t,eu,tu,iu,hE)||(t=[1,0,0,0,1,0,0,0,1],!T0(t,eu,tu,iu,hE))?!1:(uE.crossVectors(Xc,Yc),t=[uE.x,uE.y,uE.z],T0(t,eu,tu,iu,hE))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Qa).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Qa).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ol[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ol[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ol[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ol[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ol[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ol[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ol[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ol[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ol),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}},Ol=[new se,new se,new se,new se,new se,new se,new se,new se],Qa=new se,dE=new Fr,eu=new se,tu=new se,iu=new se,Xc=new se,Yc=new se,gd=new se,t_=new se,hE=new se,uE=new se,vd=new se;zr=new se,mE=new Mt,See=0,hr=class extends Sa{constructor(e,t,i=!1){if(super(),Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:See++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=jE,this.updateRanges=[],this.gpuType=ea,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;i_.subVectors(e,this.center);let t=i_.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(i_,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(A0.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(i_.copy(e.center).add(A0)),this.expandByPoint(i_.copy(e.center).sub(A0))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}},Aee=0,ga=new oi,x0=new zi,ru=new se,qs=new Fr,r_=new Fr,fn=new se,Xi=class n extends Sa{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Aee++}),this.uuid=eo(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(YJ(e)?v_:g_)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new ii().getNormalMatrix(e);i.applyNormalMatrix(s),i.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return ga.makeRotationFromQuaternion(e),this.applyMatrix4(ga),this}rotateX(e){return ga.makeRotationX(e),this.applyMatrix4(ga),this}rotateY(e){return ga.makeRotationY(e),this.applyMatrix4(ga),this}rotateZ(e){return ga.makeRotationZ(e),this.applyMatrix4(ga),this}translate(e,t,i){return ga.makeTranslation(e,t,i),this.applyMatrix4(ga),this}scale(e,t,i){return ga.makeScale(e,t,i),this.applyMatrix4(ga),this}lookAt(e){return x0.lookAt(e),x0.updateMatrix(),this.applyMatrix4(x0.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ru).negate(),this.translate(ru.x,ru.y,ru.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&yt("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Fr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Bt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new se(-1/0,-1/0,-1/0),new se(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let r={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],f=[];for(let d=0,h=c.length;d0&&(r[l]=f,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone());let r=e.attributes;for(let c in r){let f=r[c];this.setAttribute(c,f.clone(t))}let s=e.morphAttributes;for(let c in s){let f=[],d=s[c];for(let h=0,u=d.length;h0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){yt(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){yt(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Rd&&(i.blending=this.blending),this.side!==Qs&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==VE&&(i.blendSrc=this.blendSrc),this.blendDst!==GE&&(i.blendDst=this.blendDst),this.blendEquation!==qc&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==bd&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==B0&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Td&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Td&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Td&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){let a=[];for(let o in s){let l=s[o];delete l.metadata,a.push(l)}return a}if(t){let s=r(e.textures),a=r(e.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Su=class extends Br{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ft(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},n_=new se,su=new se,au=new se,ou=new Mt,s_=new Mt,Y3=new oi,pE=new se,a_=new se,_E=new se,O1=new Mt,R0=new Mt,N1=new Mt,E_=class extends zi{constructor(e=new Su){if(super(),this.isSprite=!0,this.type="Sprite",nu===void 0){nu=new Xi;let t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Pd(t,5);nu.setIndex([0,1,2,0,2,3]),nu.setAttribute("position",new Zc(i,3,0,!1)),nu.setAttribute("uv",new Zc(i,2,3,!1))}this.geometry=nu,this.material=e,this.center=new Mt(.5,.5),this.count=1}raycast(e,t){e.camera===null&&Bt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),su.setFromMatrixScale(this.matrixWorld),Y3.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),au.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&su.multiplyScalar(-au.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;gE(pE.set(-.5,-.5,0),au,a,su,r,s),gE(a_.set(.5,-.5,0),au,a,su,r,s),gE(_E.set(.5,.5,0),au,a,su,r,s),O1.set(0,0),R0.set(1,0),N1.set(1,1);let o=e.ray.intersectTriangle(pE,a_,_E,!1,n_);if(o===null&&(gE(a_.set(-.5,.5,0),au,a,su,r,s),R0.set(0,1),o=e.ray.intersectTriangle(pE,_E,a_,!1,n_),o===null))return;let l=e.ray.origin.distanceTo(n_);le.far||t.push({distance:l,point:n_.clone(),uv:Fl.getInterpolation(n_,pE,a_,_E,O1,R0,N1,new Mt),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};Nl=new se,b0=new se,vE=new se,Kc=new se,M0=new se,EE=new se,I0=new se,zo=class{constructor(e=new se,t=new se(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Nl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Nl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Nl.copy(this.origin).addScaledVector(this.direction,t),Nl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){b0.copy(e).add(t).multiplyScalar(.5),vE.copy(t).sub(e).normalize(),Kc.copy(this.origin).sub(b0);let s=e.distanceTo(t)*.5,a=-this.direction.dot(vE),o=Kc.dot(this.direction),l=-Kc.dot(vE),c=Kc.lengthSq(),f=Math.abs(1-a*a),d,h,u,m;if(f>0)if(d=a*l-o,h=a*o-l,m=s*f,d>=0)if(h>=-m)if(h<=m){let _=1/f;d*=_,h*=_,u=d*(d+a*h+2*o)+h*(a*d+h+2*l)+c}else h=s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h=-s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h<=-m?(d=Math.max(0,-(-a*s+o)),h=d>0?-s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c):h<=m?(d=0,h=Math.min(Math.max(-s,-l),s),u=h*(h+2*l)+c):(d=Math.max(0,-(a*s+o)),h=d>0?s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c);else h=a>0?-s:s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(b0).addScaledVector(vE,h),u}intersectSphere(e,t){Nl.subVectors(e.center,this.origin);let i=Nl.dot(this.direction),r=Nl.dot(Nl)-i*i,s=e.radius*e.radius;if(r>s)return null;let a=Math.sqrt(s-r),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,a,o,l,c=1/this.direction.x,f=1/this.direction.y,d=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,r=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,r=(e.min.x-h.x)*c),f>=0?(s=(e.min.y-h.y)*f,a=(e.max.y-h.y)*f):(s=(e.max.y-h.y)*f,a=(e.min.y-h.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-h.z)*d,l=(e.max.z-h.z)*d):(o=(e.max.z-h.z)*d,l=(e.min.z-h.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Nl)!==null}intersectTriangle(e,t,i,r,s){M0.subVectors(t,e),EE.subVectors(i,e),I0.crossVectors(M0,EE);let a=this.direction.dot(I0),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Kc.subVectors(this.origin,e);let l=o*this.direction.dot(EE.crossVectors(Kc,EE));if(l<0)return null;let c=o*this.direction.dot(M0.cross(Kc));if(c<0||l+c>a)return null;let f=-o*Kc.dot(I0);return f<0?null:this.at(f/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},es=class extends Br{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ft(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},w1=new oi,Ed=new zo,SE=new gs,F1=new se,TE=new se,AE=new se,xE=new se,y0=new se,RE=new se,B1=new se,bE=new se,li=class extends zi{constructor(e=new Xi,t=new es){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(w1.copy(s).invert(),Ed.copy(e.ray).applyMatrix4(w1),!(i.boundingBox!==null&&Ed.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Ed)))}_computeIntersections(e,t,i){let r,s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,f=s.attributes.uv1,d=s.attributes.normal,h=s.groups,u=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=h.length;m<_;m++){let p=h[m],g=a[p.materialIndex],v=Math.max(p.start,u.start),x=Math.min(o.count,Math.min(p.start+p.count,u.start+u.count));for(let S=v,E=x;S1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||Cee.getNormalMatrix(e),r=this.coplanarPoint(D0).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}},Sd=new gs,Pee=new Mt(.5,.5),CE=new se,xu=class{constructor(e=new va,t=new va,i=new va,r=new va,s=new va,a=new va){this.planes=[e,t,i,r,s,a]}set(e,t,i,r,s,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=Ja,i=!1){let r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],f=s[4],d=s[5],h=s[6],u=s[7],m=s[8],_=s[9],p=s[10],g=s[11],v=s[12],x=s[13],S=s[14],E=s[15];if(r[0].setComponents(c-a,u-f,g-m,E-v).normalize(),r[1].setComponents(c+a,u+f,g+m,E+v).normalize(),r[2].setComponents(c+o,u+d,g+_,E+x).normalize(),r[3].setComponents(c-o,u-d,g-_,E-x).normalize(),i)r[4].setComponents(l,h,p,S).normalize(),r[5].setComponents(c-l,u-h,g-p,E-S).normalize();else if(r[4].setComponents(c-l,u-h,g-p,E-S).normalize(),t===Ja)r[5].setComponents(c+l,u+h,g+p,E+S).normalize();else if(t===mu)r[5].setComponents(l,h,p,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Sd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Sd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Sd)}intersectsSprite(e){Sd.center.set(0,0,0);let t=Pee.distanceTo(e.center);return Sd.radius=.7071067811865476+t,Sd.applyMatrix4(e.matrixWorld),this.intersectsSphere(Sd)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,CE.y=r.normal.y>0?e.max.y:e.min.y,CE.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(CE)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},Ln=class extends Br{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ft(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},JE=new se,eS=new se,X1=new oi,f_=new zo,PE=new gs,L0=new se,Y1=new se,Xo=class extends zi{constructor(e=new Xi,t=new Ln){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0?1:-1,f.push(Q.x,Q.y,Q.z),d.push(Y/R),d.push(1-te/M),V+=1}}for(let te=0;te0)&&u.push(x,S,T),(g!==i-1||l0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let i={};for(let r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},tS=class extends Js{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},En=class extends Br{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ft(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ss=class extends En{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Mt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return mi(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ft(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ft(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ft(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},Od=class extends Br{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ft(16777215),this.specular=new ft(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},I_=class extends Br{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ft(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},iS=class extends Br{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=C3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},rS=class extends Br{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Yo=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let a;i:{r:if(!(e=s)){let o=t[1];e=s)break t}a=i,i=0;break i}break e}for(;i>>1;et;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=i.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(Bt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(Bt("KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){let l=i[o];if(typeof l=="number"&&isNaN(l)){Bt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){Bt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&WJ(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){Bt("KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===BE,s=e.length-1,a=1;for(let o=1;o0){e[a]=e[s];for(let o=s*i,l=a*i,c=0;c!==i;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*i)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Ts.prototype.ValueTypeName="";Ts.prototype.TimeBufferType=Float32Array;Ts.prototype.ValueBufferType=Float32Array;Ts.prototype.DefaultInterpolation=Id;Vl=class extends Ts{constructor(e,t,i){super(e,t,i)}};Vl.prototype.ValueTypeName="bool";Vl.prototype.ValueBufferType=Array;Vl.prototype.DefaultInterpolation=Md;Vl.prototype.InterpolantFactoryMethodLinear=void 0;Vl.prototype.InterpolantFactoryMethodSmooth=void 0;C_=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};C_.prototype.ValueTypeName="color";Ko=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};Ko.prototype.ValueTypeName="number";oS=class extends Yo{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t),c=e*o;for(let f=c+o;c!==f;c+=4)Qr.slerpFlat(s,0,a,c-o,a,c,l);return s}},jo=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new oS(this.times,this.values,this.getValueSize(),e)}};jo.prototype.ValueTypeName="quaternion";jo.prototype.InterpolantFactoryMethodSmooth=void 0;Gl=class extends Ts{constructor(e,t,i){super(e,t,i)}};Gl.prototype.ValueTypeName="string";Gl.prototype.ValueBufferType=Array;Gl.prototype.DefaultInterpolation=Md;Gl.prototype.InterpolantFactoryMethodLinear=void 0;Gl.prototype.InterpolantFactoryMethodSmooth=void 0;qo=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};qo.prototype.ValueTypeName="vector";Nd=class{constructor(e="",t=-1,i=[],r=tT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=eo(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let a=0,o=i.length;a!==o;++a)t.push(Dee(i[a]).scale(r));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=i.length;s!==a;++s)t.push(Ts.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let s=t.length,a=[];for(let o=0;o1){let d=f[1],h=r[d];h||(r[d]=h=[]),h.push(c)}}let a=[];for(let o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return a}static parseAnimation(e,t){if(yt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Bt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,h,u,m,_){if(u.length!==0){let p=[],g=[];z3(u,p,g,m),p.length!==0&&_.push(new d(h,p,g))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let d=0;d{t&&t(s),this.manager.itemEnd(e)},0);return}if(wl[e]!==void 0){wl[e].push({onLoad:t,onProgress:i,onError:r});return}wl[e]=[],wl[e].push({onLoad:t,onProgress:i,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&yt("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=wl[e],d=c.body.getReader(),h=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),u=h?parseInt(h):0,m=u!==0,_=0,p=new ReadableStream({start(g){v();function v(){d.read().then(({done:x,value:S})=>{if(x)g.close();else{_+=S.byteLength;let E=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:u});for(let T=0,R=f.length;T{g.error(x)})}}});return new Response(p)}else throw new F0(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(f=>new DOMParser().parseFromString(f,o));case"json":return c.json();default:if(o==="")return c.text();{let d=/charset="?([^;"\s]*)"?/i.exec(o),h=d&&d[1]?d[1].toLowerCase():void 0,u=new TextDecoder(h);return c.arrayBuffer().then(m=>u.decode(m))}}}).then(c=>{ko.add(`file:${e}`,c);let f=wl[e];delete wl[e];for(let d=0,h=f.length;d{let f=wl[e];if(f===void 0)throw this.manager.itemError(e),c;delete wl[e];for(let d=0,h=f.length;d{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},cu=new WeakMap,lS=class extends dn{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,a=ko.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let d=cu.get(a);d===void 0&&(d=[],cu.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=pu("img");function l(){f(),t&&t(this);let d=cu.get(this)||[];for(let h=0;h{D0.has(a)===!0?(r&&r(D0.get(a)),s.manager.itemError(e),s.manager.itemEnd(e)):(t&&t(c),s.manager.itemEnd(e))});return}setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);return}let o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){ko.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),D0.set(l,c),ko.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});ko.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},fu=-90,du=1,cS=class extends zi{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new dr(fu,du,e,t);r.layers=this.layers,this.add(r);let s=new dr(fu,du,e,t);s.layers=this.layers,this.add(s);let a=new dr(fu,du,e,t);a.layers=this.layers,this.add(a);let o=new dr(fu,du,e,t);o.layers=this.layers,this.add(o);let l=new dr(fu,du,e,t);l.layers=this.layers,this.add(l);let c=new dr(fu,du,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[i,r,s,a,o,l]=t;for(let c of t)this.remove(c);if(e===Ja)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===mu)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,a,o,l,c,f]=this.children,d=e.getRenderTarget(),h=e.getActiveCubeFace(),u=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let _=i.texture.generateMipmaps;i.texture.generateMipmaps=!1;let p=!1;e.isWebGLRenderer===!0?p=e.state.buffers.depth.getReversed():p=e.reversedDepthBuffer,e.setRenderTarget(i,0,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,s),e.setRenderTarget(i,1,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,a),e.setRenderTarget(i,2,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,o),e.setRenderTarget(i,3,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,l),e.setRenderTarget(i,4,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,c),i.texture.generateMipmaps=_,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,h,u),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},fS=class extends dr{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},dS=class{constructor(e,t,i){this.binding=e,this.valueSize=i;let r,s,a;switch(t){case"quaternion":r=this._slerp,s=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case"string":case"bool":r=this._select,s=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:r=this._lerp,s=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=s,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let i=this.buffer,r=this.valueSize,s=e*r+r,a=this.cumulativeWeight;if(a===0){for(let o=0;o!==r;++o)i[s+o]=i[o];a=t}else{a+=t;let o=t/a;this._mixBufferRegion(i,s,0,o,r)}this.cumulativeWeight=a}accumulateAdditive(e){let t=this.buffer,i=this.valueSize,r=i*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,i=this.buffer,r=e*t+t,s=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s<1){let l=t*this._origIndex;this._mixBufferRegion(i,r,l,1-s,t)}a>0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,a=r;s!==a;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let a=0;a!==s;++a)e[t+a]=e[i+a]}_slerp(e,t,i,r){Qr.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;Qr.multiplyQuaternionsFlat(e,a,e,t,e,i),Qr.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,i,r,s){let a=1-r;for(let o=0;o!==s;++o){let l=t+o;e[l]=e[l]*a+e[i+o]*r}}_lerpAdditive(e,t,i,r,s){for(let a=0;a!==s;++a){let o=t+a;e[o]=e[o]+e[i+a]*r}}},dI="\\[\\]\\.:\\/",Lee=new RegExp("["+dI+"]","g"),hI="[^"+dI+"]",Oee="[^"+dI.replace("\\.","")+"]",Nee=/((?:WC+[\/:])*)/.source.replace("WC",hI),wee=/(WCOD+)?/.source.replace("WCOD",Oee),Fee=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",hI),Bee=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",hI),Uee=new RegExp("^"+Nee+wee+Fee+Bee+"$"),Vee=["material","materials","bones","map"],G0=class{constructor(e,t,i){let r=i||er.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},er=class n{constructor(e,t,i){this.path=t,this.parsedPath=i||n.parseTrackName(t),this.node=n.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new n.Composite(e,t,i):new n(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Lee,"")}static parseTrackName(e){let t=Uee.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);Vee.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let a=0;a0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case y3:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case tT:default:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,s=this._loopCount,a=i===I3;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===b3){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let o=Math.floor(r/t);r-=t*o,s+=Math.abs(o);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this._loopCount=s,this.time=r;if(a&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=xd,r.endingEnd=xd):(e?r.endingStart=this.zeroSlopeAtStart?xd:Ad:r.endingStart=u_,t?r.endingEnd=this.zeroSlopeAtEnd?xd:Ad:r.endingEnd=u_)}_scheduleFading(e,t,i){let r=this._mixer,s=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=s,l[0]=t,o[1]=s+e,l[1]=i,this}},Gee=new Float32Array(1),O_=class extends Sa{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,a=e._propertyBindings,o=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName,f=c[l];f===void 0&&(f={},c[l]=f);for(let d=0;d!==s;++d){let h=r[d],u=h.name,m=f[u];if(m!==void 0)++m.referenceCount,a[d]=m;else{if(m=a[d],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,u));continue}let _=t&&t._propertyBindings[d].binding.parsedPath;m=new dS(er.create(i,u,_),h.ValueTypeName,h.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,u),a[d]=m}o[d].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),a=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(r,e,s,a);let o=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)o[c].apply(a);return this}setTime(e){this.time=0;for(let t=0;tu.start-m.start);let h=0;for(let u=1;u0;x=e.get(x,S)}return x}function m(v){let x=!1,S=u(v);S===null?p(a,o):S&&S.isColor&&(p(S,1),x=!0);let E=n.xr.getEnvironmentBlendMode();E==="additive"?t.buffers.color.setClear(0,0,0,1,s):E==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||x)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function _(v,x){let S=u(x);S&&(S.isCubeTexture||S.mapping===U_)?(c===void 0&&(c=new li(new $c(1,1,1),new Js({name:"BackgroundCubeMaterial",uniforms:Ud(el.backgroundCube.uniforms),vertexShader:el.backgroundCube.vertexShader,fragmentShader:el.backgroundCube.fragmentShader,side:Sn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(E,T,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=S,c.material.uniforms.backgroundBlurriness.value=x.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(Rre.makeRotationFromEuler(x.backgroundRotation)).transpose(),S.isCubeTexture&&S.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(mB),c.material.toneMapped=ai.getTransfer(S.colorSpace)!==Ki,(f!==S||d!==S.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):S&&S.isTexture&&(l===void 0&&(l=new li(new Ld(2,2),new Js({name:"BackgroundMaterial",uniforms:Ud(el.background.uniforms),vertexShader:el.background.vertexShader,fragmentShader:el.background.fragmentShader,side:Qs,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=S,l.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,l.material.toneMapped=ai.getTransfer(S.colorSpace)!==Ki,S.matrixAutoUpdate===!0&&S.updateMatrix(),l.material.uniforms.uvTransform.value.copy(S.matrix),(f!==S||d!==S.version||h!==n.toneMapping)&&(l.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,x){v.getRGB(sT,fI(n)),t.buffers.color.setClear(sT.r,sT.g,sT.b,x,s)}function g(){c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0),l!==void 0&&(l.geometry.dispose(),l.material.dispose(),l=void 0)}return{getClearColor:function(){return a},setClearColor:function(v,x=1){a.set(v),o=x,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:_,dispose:g}}function Mre(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=h(null),s=r,a=!1;function o(L,w,G,O,N){let B=!1,V=d(L,O,G,w);s!==V&&(s=V,c(s.object)),B=u(L,O,G,N),B&&m(L,O,G,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,S(L,w,G,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(L){return n.bindVertexArray(L)}function f(L){return n.deleteVertexArray(L)}function d(L,w,G,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=L.isInstancedMesh===!0?L.id:0,J=B[V];J===void 0&&(J={},B[V]=J);let Q=J[G.id];Q===void 0&&(Q={},J[G.id]=Q);let te=Q[N];return te===void 0&&(te=h(l()),Q[N]=te),te}function h(L){let w=[],G=[],O=[];for(let N=0;N=0){let X=N[Q],Y=B[Q];if(Y===void 0&&(Q==="instanceMatrix"&&L.instanceMatrix&&(Y=L.instanceMatrix),Q==="instanceColor"&&L.instanceColor&&(Y=L.instanceColor)),X===void 0||X.attribute!==Y||Y&&X.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(L,w,G,O){let N={},B=w.attributes,V=0,J=G.getAttributes();for(let Q in J)if(J[Q].location>=0){let X=B[Q];X===void 0&&(Q==="instanceMatrix"&&L.instanceMatrix&&(X=L.instanceMatrix),Q==="instanceColor"&&L.instanceColor&&(X=L.instanceColor));let Y={};Y.attribute=X,X&&X.data&&(Y.data=X.data),N[Q]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function _(){let L=s.newAttributes;for(let w=0,G=L.length;w=0){let te=N[J];if(te===void 0&&(J==="instanceMatrix"&&L.instanceMatrix&&(te=L.instanceMatrix),J==="instanceColor"&&L.instanceColor&&(te=L.instanceColor)),te!==void 0){let X=te.normalized,Y=te.itemSize,ve=e.get(te);if(ve===void 0)continue;let Ee=ve.buffer,Ue=ve.type,ae=ve.bytesPerElement,me=Ue===n.INT||Ue===n.UNSIGNED_INT||te.gpuType===vS;if(te.isInterleavedBufferAttribute){let ne=te.data,fe=ne.stride,Pe=te.offset;if(ne.isInstancedInterleavedBuffer){for(let de=0;de0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp",f=l(c);f!==c&&(yt("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,h=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&h===!1&&yt("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),x=n.getParameter(n.MAX_VARYING_VECTORS),S=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),E=n.getParameter(n.MAX_SAMPLES),T=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:h,maxTextures:u,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:p,maxAttributes:g,maxVertexUniforms:v,maxVaryings:x,maxFragmentUniforms:S,maxSamples:E,samples:T}}function Cre(n){let e=this,t=null,i=0,r=!1,s=!1,a=new va,o=new ii,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,h){let u=d.length!==0||h||i!==0||r;return r=h,i=d.length,u},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,h){t=f(d,h,0)},this.setState=function(d,h,u){let m=d.clippingPlanes,_=d.clipIntersection,p=d.clipShadows,g=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,x=v*4,S=g.clippingState||null;l.value=S,S=f(m,h,x,u);for(let E=0;E!==x;++E)S[E]=t[E];g.clippingState=S,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=v}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function f(d,h,u,m){let _=d!==null?d.length:0,p=null;if(_!==0){if(p=l.value,m!==!0||p===null){let g=u+_*4,v=h.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.lengthn-of?l=X3[a-n+of-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,h=[f,f,d,f,d,d,f,f,d,d,f,d],u=6,m=6,_=3,p=2,g=1,v=new Float32Array(_*m*u),x=new Float32Array(p*m*u),S=new Float32Array(g*m*u);for(let T=0;T2?0:-1,y=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];v.set(y,_*m*T),x.set(h,p*m*T);let C=[T,T,T,T,T,T];S.set(C,g*m*T)}let E=new Xi;E.setAttribute("position",new hr(v,_)),E.setAttribute("uv",new hr(x,p)),E.setAttribute("faceIndex",new hr(S,g)),i.push(new li(E,null)),r>of&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function K3(n,e,t){let i=new $s(n,e,t);return i.texture.mapping=U_,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Fu(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function Ore(n,e,t){return new Js({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:Pre,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:cT(),fragmentShader:` +}`,Js=class extends Br{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Lee,this.fragmentShader=Oee,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Ud(e.uniforms),this.uniformsGroups=Dee(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this.defaultAttributeValues=Object.assign({},e.defaultAttributeValues),this.index0AttributeName=e.index0AttributeName,this.uniformsNeedUpdate=e.uniformsNeedUpdate,this}toJSON(e){let t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(let r in this.uniforms){let a=this.uniforms[r].value;a&&a.isTexture?t.uniforms[r]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[r]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[r]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[r]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[r]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[r]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[r]={type:"m4",value:a.toArray()}:t.uniforms[r]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let i={};for(let r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},iS=class extends Js{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},En=class extends Br{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ft(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ss=class extends En{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Mt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return mi(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ft(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ft(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ft(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},Od=class extends Br{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ft(16777215),this.specular=new ft(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},I_=class extends Br{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ft(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ft(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=wu,this.normalScale=new Mt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new to,this.combine=B_,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},rS=class extends Br{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=O3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},nS=class extends Br{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Yo=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let a;i:{r:if(!(e=s)){let o=t[1];e=s)break t}a=i,i=0;break i}break e}for(;i>>1;et;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=i.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(Bt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(Bt("KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){let l=i[o];if(typeof l=="number"&&isNaN(l)){Bt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){Bt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&KJ(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){Bt("KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===UE,s=e.length-1,a=1;for(let o=1;o0){e[a]=e[s];for(let o=s*i,l=a*i,c=0;c!==i;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*i)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Ts.prototype.ValueTypeName="";Ts.prototype.TimeBufferType=Float32Array;Ts.prototype.ValueBufferType=Float32Array;Ts.prototype.DefaultInterpolation=Id;Vl=class extends Ts{constructor(e,t,i){super(e,t,i)}};Vl.prototype.ValueTypeName="bool";Vl.prototype.ValueBufferType=Array;Vl.prototype.DefaultInterpolation=Md;Vl.prototype.InterpolantFactoryMethodLinear=void 0;Vl.prototype.InterpolantFactoryMethodSmooth=void 0;C_=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};C_.prototype.ValueTypeName="color";Ko=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};Ko.prototype.ValueTypeName="number";lS=class extends Yo{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t),c=e*o;for(let f=c+o;c!==f;c+=4)Qr.slerpFlat(s,0,a,c-o,a,c,l);return s}},jo=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new lS(this.times,this.values,this.getValueSize(),e)}};jo.prototype.ValueTypeName="quaternion";jo.prototype.InterpolantFactoryMethodSmooth=void 0;Gl=class extends Ts{constructor(e,t,i){super(e,t,i)}};Gl.prototype.ValueTypeName="string";Gl.prototype.ValueBufferType=Array;Gl.prototype.DefaultInterpolation=Md;Gl.prototype.InterpolantFactoryMethodLinear=void 0;Gl.prototype.InterpolantFactoryMethodSmooth=void 0;qo=class extends Ts{constructor(e,t,i,r){super(e,t,i,r)}};qo.prototype.ValueTypeName="vector";Nd=class{constructor(e="",t=-1,i=[],r=iT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=eo(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let a=0,o=i.length;a!==o;++a)t.push(Fee(i[a]).scale(r));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=i.length;s!==a;++s)t.push(Ts.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let s=t.length,a=[];for(let o=0;o1){let d=f[1],h=r[d];h||(r[d]=h=[]),h.push(c)}}let a=[];for(let o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return a}static parseAnimation(e,t){if(yt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Bt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,h,u,m,_){if(u.length!==0){let p=[],g=[];j3(u,p,g,m),p.length!==0&&_.push(new d(h,p,g))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let d=0;d{t&&t(s),this.manager.itemEnd(e)},0);return}if(wl[e]!==void 0){wl[e].push({onLoad:t,onProgress:i,onError:r});return}wl[e]=[],wl[e].push({onLoad:t,onProgress:i,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&yt("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=wl[e],d=c.body.getReader(),h=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),u=h?parseInt(h):0,m=u!==0,_=0,p=new ReadableStream({start(g){v();function v(){d.read().then(({done:x,value:S})=>{if(x)g.close();else{_+=S.byteLength;let E=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:u});for(let T=0,R=f.length;T{g.error(x)})}}});return new Response(p)}else throw new V0(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(f=>new DOMParser().parseFromString(f,o));case"json":return c.json();default:if(o==="")return c.text();{let d=/charset="?([^;"\s]*)"?/i.exec(o),h=d&&d[1]?d[1].toLowerCase():void 0,u=new TextDecoder(h);return c.arrayBuffer().then(m=>u.decode(m))}}}).then(c=>{ko.add(`file:${e}`,c);let f=wl[e];delete wl[e];for(let d=0,h=f.length;d{let f=wl[e];if(f===void 0)throw this.manager.itemError(e),c;delete wl[e];for(let d=0,h=f.length;d{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},cu=new WeakMap,cS=class extends dn{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,a=ko.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let d=cu.get(a);d===void 0&&(d=[],cu.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=pu("img");function l(){f(),t&&t(this);let d=cu.get(this)||[];for(let h=0;h{N0.has(a)===!0?(r&&r(N0.get(a)),s.manager.itemError(e),s.manager.itemEnd(e)):(t&&t(c),s.manager.itemEnd(e))});return}setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);return}let o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){ko.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),N0.set(l,c),ko.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});ko.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},fu=-90,du=1,fS=class extends zi{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new dr(fu,du,e,t);r.layers=this.layers,this.add(r);let s=new dr(fu,du,e,t);s.layers=this.layers,this.add(s);let a=new dr(fu,du,e,t);a.layers=this.layers,this.add(a);let o=new dr(fu,du,e,t);o.layers=this.layers,this.add(o);let l=new dr(fu,du,e,t);l.layers=this.layers,this.add(l);let c=new dr(fu,du,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[i,r,s,a,o,l]=t;for(let c of t)this.remove(c);if(e===Ja)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===mu)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,a,o,l,c,f]=this.children,d=e.getRenderTarget(),h=e.getActiveCubeFace(),u=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let _=i.texture.generateMipmaps;i.texture.generateMipmaps=!1;let p=!1;e.isWebGLRenderer===!0?p=e.state.buffers.depth.getReversed():p=e.reversedDepthBuffer,e.setRenderTarget(i,0,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,s),e.setRenderTarget(i,1,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,a),e.setRenderTarget(i,2,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,o),e.setRenderTarget(i,3,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,l),e.setRenderTarget(i,4,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,c),i.texture.generateMipmaps=_,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,h,u),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},dS=class extends dr{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},hS=class{constructor(e,t,i){this.binding=e,this.valueSize=i;let r,s,a;switch(t){case"quaternion":r=this._slerp,s=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case"string":case"bool":r=this._select,s=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:r=this._lerp,s=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=s,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let i=this.buffer,r=this.valueSize,s=e*r+r,a=this.cumulativeWeight;if(a===0){for(let o=0;o!==r;++o)i[s+o]=i[o];a=t}else{a+=t;let o=t/a;this._mixBufferRegion(i,s,0,o,r)}this.cumulativeWeight=a}accumulateAdditive(e){let t=this.buffer,i=this.valueSize,r=i*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,i=this.buffer,r=e*t+t,s=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s<1){let l=t*this._origIndex;this._mixBufferRegion(i,r,l,1-s,t)}a>0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,a=r;s!==a;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let a=0;a!==s;++a)e[t+a]=e[i+a]}_slerp(e,t,i,r){Qr.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;Qr.multiplyQuaternionsFlat(e,a,e,t,e,i),Qr.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,i,r,s){let a=1-r;for(let o=0;o!==s;++o){let l=t+o;e[l]=e[l]*a+e[i+o]*r}}_lerpAdditive(e,t,i,r,s){for(let a=0;a!==s;++a){let o=t+a;e[o]=e[o]+e[i+a]*r}}},mI="\\[\\]\\.:\\/",Bee=new RegExp("["+mI+"]","g"),pI="[^"+mI+"]",Uee="[^"+mI.replace("\\.","")+"]",Vee=/((?:WC+[\/:])*)/.source.replace("WC",pI),Gee=/(WCOD+)?/.source.replace("WCOD",Uee),kee=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",pI),Wee=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",pI),Hee=new RegExp("^"+Vee+Gee+kee+Wee+"$"),zee=["material","materials","bones","map"],H0=class{constructor(e,t,i){let r=i||tr.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},tr=class n{constructor(e,t,i){this.path=t,this.parsedPath=i||n.parseTrackName(t),this.node=n.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new n.Composite(e,t,i):new n(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Bee,"")}static parseTrackName(e){let t=Hee.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);zee.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let a=0;a0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case L3:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case iT:default:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,s=this._loopCount,a=i===D3;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===C3){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let o=Math.floor(r/t);r-=t*o,s+=Math.abs(o);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this._loopCount=s,this.time=r;if(a&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=xd,r.endingEnd=xd):(e?r.endingStart=this.zeroSlopeAtStart?xd:Ad:r.endingStart=u_,t?r.endingEnd=this.zeroSlopeAtEnd?xd:Ad:r.endingEnd=u_)}_scheduleFading(e,t,i){let r=this._mixer,s=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=s,l[0]=t,o[1]=s+e,l[1]=i,this}},Xee=new Float32Array(1),O_=class extends Sa{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,a=e._propertyBindings,o=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName,f=c[l];f===void 0&&(f={},c[l]=f);for(let d=0;d!==s;++d){let h=r[d],u=h.name,m=f[u];if(m!==void 0)++m.referenceCount,a[d]=m;else{if(m=a[d],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,u));continue}let _=t&&t._propertyBindings[d].binding.parsedPath;m=new hS(tr.create(i,u,_),h.ValueTypeName,h.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,u),a[d]=m}o[d].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),a=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(r,e,s,a);let o=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)o[c].apply(a);return this}setTime(e){this.time=0;for(let t=0;tu.start-m.start);let h=0;for(let u=1;u0;x=e.get(x,S)}return x}function m(v){let x=!1,S=u(v);S===null?p(a,o):S&&S.isColor&&(p(S,1),x=!0);let E=n.xr.getEnvironmentBlendMode();E==="additive"?t.buffers.color.setClear(0,0,0,1,s):E==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||x)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function _(v,x){let S=u(x);S&&(S.isCubeTexture||S.mapping===U_)?(c===void 0&&(c=new li(new $c(1,1,1),new Js({name:"BackgroundCubeMaterial",uniforms:Ud(el.backgroundCube.uniforms),vertexShader:el.backgroundCube.vertexShader,fragmentShader:el.backgroundCube.fragmentShader,side:Sn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(E,T,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=S,c.material.uniforms.backgroundBlurriness.value=x.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(Cre.makeRotationFromEuler(x.backgroundRotation)).transpose(),S.isCubeTexture&&S.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(vB),c.material.toneMapped=ai.getTransfer(S.colorSpace)!==Ki,(f!==S||d!==S.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):S&&S.isTexture&&(l===void 0&&(l=new li(new Ld(2,2),new Js({name:"BackgroundMaterial",uniforms:Ud(el.background.uniforms),vertexShader:el.background.vertexShader,fragmentShader:el.background.fragmentShader,side:Qs,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=S,l.material.uniforms.backgroundIntensity.value=x.backgroundIntensity,l.material.toneMapped=ai.getTransfer(S.colorSpace)!==Ki,S.matrixAutoUpdate===!0&&S.updateMatrix(),l.material.uniforms.uvTransform.value.copy(S.matrix),(f!==S||d!==S.version||h!==n.toneMapping)&&(l.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,x){v.getRGB(aT,uI(n)),t.buffers.color.setClear(aT.r,aT.g,aT.b,x,s)}function g(){c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0),l!==void 0&&(l.geometry.dispose(),l.material.dispose(),l=void 0)}return{getClearColor:function(){return a},setClearColor:function(v,x=1){a.set(v),o=x,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:_,dispose:g}}function Dre(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=h(null),s=r,a=!1;function o(L,w,G,O,N){let B=!1,V=d(L,O,G,w);s!==V&&(s=V,c(s.object)),B=u(L,O,G,N),B&&m(L,O,G,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,S(L,w,G,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(L){return n.bindVertexArray(L)}function f(L){return n.deleteVertexArray(L)}function d(L,w,G,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=L.isInstancedMesh===!0?L.id:0,J=B[V];J===void 0&&(J={},B[V]=J);let Q=J[G.id];Q===void 0&&(Q={},J[G.id]=Q);let te=Q[N];return te===void 0&&(te=h(l()),Q[N]=te),te}function h(L){let w=[],G=[],O=[];for(let N=0;N=0){let X=N[Q],Y=B[Q];if(Y===void 0&&(Q==="instanceMatrix"&&L.instanceMatrix&&(Y=L.instanceMatrix),Q==="instanceColor"&&L.instanceColor&&(Y=L.instanceColor)),X===void 0||X.attribute!==Y||Y&&X.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(L,w,G,O){let N={},B=w.attributes,V=0,J=G.getAttributes();for(let Q in J)if(J[Q].location>=0){let X=B[Q];X===void 0&&(Q==="instanceMatrix"&&L.instanceMatrix&&(X=L.instanceMatrix),Q==="instanceColor"&&L.instanceColor&&(X=L.instanceColor));let Y={};Y.attribute=X,X&&X.data&&(Y.data=X.data),N[Q]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function _(){let L=s.newAttributes;for(let w=0,G=L.length;w=0){let te=N[J];if(te===void 0&&(J==="instanceMatrix"&&L.instanceMatrix&&(te=L.instanceMatrix),J==="instanceColor"&&L.instanceColor&&(te=L.instanceColor)),te!==void 0){let X=te.normalized,Y=te.itemSize,ve=e.get(te);if(ve===void 0)continue;let Ee=ve.buffer,Ue=ve.type,ae=ve.bytesPerElement,me=Ue===n.INT||Ue===n.UNSIGNED_INT||te.gpuType===ES;if(te.isInterleavedBufferAttribute){let ne=te.data,fe=ne.stride,Pe=te.offset;if(ne.isInstancedInterleavedBuffer){for(let de=0;de0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp",f=l(c);f!==c&&(yt("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,h=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&h===!1&&yt("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),x=n.getParameter(n.MAX_VARYING_VECTORS),S=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),E=n.getParameter(n.MAX_SAMPLES),T=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:h,maxTextures:u,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:p,maxAttributes:g,maxVertexUniforms:v,maxVaryings:x,maxFragmentUniforms:S,maxSamples:E,samples:T}}function Nre(n){let e=this,t=null,i=0,r=!1,s=!1,a=new va,o=new ii,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,h){let u=d.length!==0||h||i!==0||r;return r=h,i=d.length,u},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,h){t=f(d,h,0)},this.setState=function(d,h,u){let m=d.clippingPlanes,_=d.clipIntersection,p=d.clipShadows,g=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,x=v*4,S=g.clippingState||null;l.value=S,S=f(m,h,x,u);for(let E=0;E!==x;++E)S[E]=t[E];g.clippingState=S,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=v}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function f(d,h,u,m){let _=d!==null?d.length:0,p=null;if(_!==0){if(p=l.value,m!==!0||p===null){let g=u+_*4,v=h.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.lengthn-of?l=q3[a-n+of-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,h=[f,f,d,f,d,d,f,f,d,d,f,d],u=6,m=6,_=3,p=2,g=1,v=new Float32Array(_*m*u),x=new Float32Array(p*m*u),S=new Float32Array(g*m*u);for(let T=0;T2?0:-1,y=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];v.set(y,_*m*T),x.set(h,p*m*T);let C=[T,T,T,T,T,T];S.set(C,g*m*T)}let E=new Xi;E.setAttribute("position",new hr(v,_)),E.setAttribute("uv",new hr(x,p)),E.setAttribute("faceIndex",new hr(S,g)),i.push(new li(E,null)),r>of&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function Q3(n,e,t){let i=new $s(n,e,t);return i.texture.mapping=U_,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Fu(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function Ure(n,e,t){return new Js({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:wre,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:fT(),fragmentShader:` precision highp float; precision highp int; @@ -108,7 +108,7 @@ gl_FragColor = vec4(prefilteredColor, 1.0); } - `,blending:Qo,depthTest:!1,depthWrite:!1})}function Nre(n,e,t){let i=new Float32Array(Vd),r=new se(0,1,0);return new Js({name:"SphericalGaussianBlur",defines:{n:Vd,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:cT(),fragmentShader:` + `,blending:Qo,depthTest:!1,depthWrite:!1})}function Vre(n,e,t){let i=new Float32Array(Vd),r=new se(0,1,0);return new Js({name:"SphericalGaussianBlur",defines:{n:Vd,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:fT(),fragmentShader:` precision mediump float; precision mediump int; @@ -168,7 +168,7 @@ } } - `,blending:Qo,depthTest:!1,depthWrite:!1})}function j3(){return new Js({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:cT(),fragmentShader:` + `,blending:Qo,depthTest:!1,depthWrite:!1})}function $3(){return new Js({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:fT(),fragmentShader:` precision mediump float; precision mediump int; @@ -187,7 +187,7 @@ gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:Qo,depthTest:!1,depthWrite:!1})}function q3(){return new Js({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:cT(),fragmentShader:` + `,blending:Qo,depthTest:!1,depthWrite:!1})}function J3(){return new Js({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:fT(),fragmentShader:` precision mediump float; precision mediump int; @@ -203,7 +203,7 @@ gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:Qo,depthTest:!1,depthWrite:!1})}function cT(){return` + `,blending:Qo,depthTest:!1,depthWrite:!1})}function fT(){return` precision mediump float; precision mediump int; @@ -258,7 +258,7 @@ gl_Position = vec4( position, 1.0 ); } - `}function wre(n){let e=new WeakMap,t=new WeakMap,i=null;function r(h,u=!1){return h==null?null:u?a(h):s(h)}function s(h){if(h&&h.isTexture){let u=h.mapping;if(u===pS||u===_S)if(e.has(h)){let m=e.get(h).texture;return o(m,h.mapping)}else{let m=h.image;if(m&&m.height>0){let _=new oT(m.height);return _.fromEquirectangularTexture(n,h),e.set(h,_),h.addEventListener("dispose",c),o(_.texture,h.mapping)}else return null}}return h}function a(h){if(h&&h.isTexture){let u=h.mapping,m=u===pS||u===_S,_=u===nf||u===Fd;if(m||_){let p=t.get(h),g=p!==void 0?p.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==g)return i===null&&(i=new Uu(n)),p=m?i.fromEquirectangular(h,p):i.fromCubemap(h,p),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),p.texture;if(p!==void 0)return p.texture;{let v=h.image;return m&&v&&v.height>0||_&&v&&l(v)?(i===null&&(i=new Uu(n)),p=m?i.fromEquirectangular(h):i.fromCubemap(h),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),h.addEventListener("dispose",f),p.texture):null}}}return h}function o(h,u){return u===pS?h.mapping=nf:u===_S&&(h.mapping=Fd),h}function l(h){let u=0,m=6;for(let _=0;_=65535?v_:g_)(h,1);p.version=_;let g=s.get(d);g&&e.remove(g),s.set(d,p)}function f(d){let h=s.get(d);if(h){let u=d.index;u!==null&&h.versione.maxTextureSize&&(E=Math.ceil(S/e.maxTextureSize),S=e.maxTextureSize);let T=new Float32Array(S*E*4*d),R=new __(T,S,E,d);R.type=ea,R.needsUpdate=!0;let M=x*4;for(let C=0;C0){let _=new lT(m.height);return _.fromEquirectangularTexture(n,h),e.set(h,_),h.addEventListener("dispose",c),o(_.texture,h.mapping)}else return null}}return h}function a(h){if(h&&h.isTexture){let u=h.mapping,m=u===_S||u===gS,_=u===nf||u===Fd;if(m||_){let p=t.get(h),g=p!==void 0?p.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==g)return i===null&&(i=new Uu(n)),p=m?i.fromEquirectangular(h,p):i.fromCubemap(h,p),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),p.texture;if(p!==void 0)return p.texture;{let v=h.image;return m&&v&&v.height>0||_&&v&&l(v)?(i===null&&(i=new Uu(n)),p=m?i.fromEquirectangular(h):i.fromCubemap(h),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),h.addEventListener("dispose",f),p.texture):null}}}return h}function o(h,u){return u===_S?h.mapping=nf:u===gS&&(h.mapping=Fd),h}function l(h){let u=0,m=6;for(let _=0;_=65535?v_:g_)(h,1);p.version=_;let g=s.get(d);g&&e.remove(g),s.set(d,p)}function f(d){let h=s.get(d);if(h){let u=d.index;u!==null&&h.versione.maxTextureSize&&(E=Math.ceil(S/e.maxTextureSize),S=e.maxTextureSize);let T=new Float32Array(S*E*4*d),R=new __(T,S,E,d);R.type=ea,R.needsUpdate=!0;let M=x*4;for(let C=0;C0&&p[0].isRenderPass===!0;let x=s.width,S=s.height;for(let E=0;E0)return n;let r=e*t,s=Z3[r];if(s===void 0&&(s=new Float32Array(r),Z3[r]=s),e!==0){i.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,n[a].toArray(s,o)}return s}function $r(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0&&p[0].isRenderPass===!0;let x=s.width,S=s.height;for(let E=0;E0)return n;let r=e*t,s=eB[r];if(s===void 0&&(s=new Float32Array(r),eB[r]=s),e!==0){i.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,n[a].toArray(s,o)}return s}function $r(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${o}: ${t[a]}`)}return i.join(` -`)}function Nne(n){ai._getMatrix(rB,ai.workingColorSpace,n);let e=`mat3( ${rB.elements.map(t=>t.toFixed(4))} )`;switch(ai.getTransfer(n)){case m_:return[e,"LinearTransferOETF"];case Ki:return[e,"sRGBTransferOETF"];default:return yt("WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function nB(n,e,t){let i=n.getShaderParameter(e,n.COMPILE_STATUS),s=(n.getShaderInfoLog(e)||"").trim();if(i&&s==="")return"";let a=/ERROR: 0:(\d+)/.exec(s);if(a){let o=parseInt(a[1]);return t.toUpperCase()+` +`)}function Vne(n){ai._getMatrix(oB,ai.workingColorSpace,n);let e=`mat3( ${oB.elements.map(t=>t.toFixed(4))} )`;switch(ai.getTransfer(n)){case m_:return[e,"LinearTransferOETF"];case Ki:return[e,"sRGBTransferOETF"];default:return yt("WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function lB(n,e,t){let i=n.getShaderParameter(e,n.COMPILE_STATUS),s=(n.getShaderInfoLog(e)||"").trim();if(i&&s==="")return"";let a=/ERROR: 0:(\d+)/.exec(s);if(a){let o=parseInt(a[1]);return t.toUpperCase()+` `+s+` -`+One(n.getShaderSource(e),o)}else return s}function wne(n,e){let t=Nne(e);return[`vec4 ${n}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` -`)}function Bne(n,e){let t=Fne[e];return t===void 0?(yt("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+n+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function Une(){ai.getLuminanceCoefficients(aT);let n=aT.x.toFixed(4),e=aT.y.toFixed(4),t=aT.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` -`)}function Vne(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(q_).join(` -`)}function Gne(n){let e=[];for(let t in n){let i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` -`)}function kne(n,e){let t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r")}return PI(t)}function oB(n){return n.replace(Xne,Yne)}function Yne(n,e,t,i){let r="";for(let s=parseInt(e);s")}return OI(t)}function dB(n){return n.replace(Zne,Qne)}function Qne(n,e,t,i){let r="";for(let s=parseInt(e);s0&&(p+=` `),g=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m].filter(q_).join(` `),g.length>0&&(g+=` -`)):(p=[lB(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+f:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexNormals?"#define HAS_NORMAL":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`)):(p=[hB(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+f:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexNormals?"#define HAS_NORMAL":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` `].filter(q_).join(` -`),g=[lB(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+f:"",t.envMap?"#define "+d:"",h?"#define CUBEUV_TEXEL_WIDTH "+h.texelWidth:"",h?"#define CUBEUV_TEXEL_HEIGHT "+h.texelHeight:"",h?"#define CUBEUV_MAX_MIP "+h.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.packedNormalMap?"#define USE_PACKED_NORMALMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas||t.batchingColor?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.numLightProbeGrids>0?"#define USE_LIGHT_PROBES_GRID":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Rs?"#define TONE_MAPPING":"",t.toneMapping!==Rs?di.tonemapping_pars_fragment:"",t.toneMapping!==Rs?Bne("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",di.colorspace_pars_fragment,wne("linearToOutputTexel",t.outputColorSpace),Une(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`),g=[hB(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+f:"",t.envMap?"#define "+d:"",h?"#define CUBEUV_TEXEL_WIDTH "+h.texelWidth:"",h?"#define CUBEUV_TEXEL_HEIGHT "+h.texelHeight:"",h?"#define CUBEUV_MAX_MIP "+h.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.packedNormalMap?"#define USE_PACKED_NORMALMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas||t.batchingColor?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.numLightProbeGrids>0?"#define USE_LIGHT_PROBES_GRID":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==Rs?"#define TONE_MAPPING":"",t.toneMapping!==Rs?di.tonemapping_pars_fragment:"",t.toneMapping!==Rs?Wne("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",di.colorspace_pars_fragment,Gne("linearToOutputTexel",t.outputColorSpace),Hne(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` `].filter(q_).join(` -`)),a=PI(a),a=sB(a,t),a=aB(a,t),o=PI(o),o=sB(o,t),o=aB(o,t),a=oB(a),o=oB(o),t.isRawShaderMaterial!==!0&&(v=`#version 300 es +`)),a=OI(a),a=cB(a,t),a=fB(a,t),o=OI(o),o=cB(o,t),o=fB(o,t),a=dB(a),o=dB(o),t.isRawShaderMaterial!==!0&&(v=`#version 300 es `,p=[u,"#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+p,g=["#define varying in",t.glslVersion===lI?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===lI?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`+p,g=["#define varying in",t.glslVersion===dI?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===dI?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` -`+g);let x=v+p+a,S=v+g+o,E=iB(r,r.VERTEX_SHADER,x),T=iB(r,r.FRAGMENT_SHADER,S);r.attachShader(_,E),r.attachShader(_,T),t.index0AttributeName!==void 0?r.bindAttribLocation(_,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(_,0,"position"),r.linkProgram(_);function R(L){if(n.debug.checkShaderErrors){let w=r.getProgramInfoLog(_)||"",G=r.getShaderInfoLog(E)||"",O=r.getShaderInfoLog(T)||"",N=w.trim(),B=G.trim(),V=O.trim(),J=!0,Q=!0;if(r.getProgramParameter(_,r.LINK_STATUS)===!1)if(J=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,_,E,T);else{let te=nB(r,E,"vertex"),X=nB(r,T,"fragment");Bt("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(_,r.VALIDATE_STATUS)+` +`+g);let x=v+p+a,S=v+g+o,E=aB(r,r.VERTEX_SHADER,x),T=aB(r,r.FRAGMENT_SHADER,S);r.attachShader(_,E),r.attachShader(_,T),t.index0AttributeName!==void 0?r.bindAttribLocation(_,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(_,0,"position"),r.linkProgram(_);function R(L){if(n.debug.checkShaderErrors){let w=r.getProgramInfoLog(_)||"",G=r.getShaderInfoLog(E)||"",O=r.getShaderInfoLog(T)||"",N=w.trim(),B=G.trim(),V=O.trim(),J=!0,Q=!0;if(r.getProgramParameter(_,r.LINK_STATUS)===!1)if(J=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,_,E,T);else{let te=lB(r,E,"vertex"),X=lB(r,T,"fragment");Bt("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(_,r.VALIDATE_STATUS)+` Material Name: `+L.name+` Material Type: `+L.type+` Program Info Log: `+N+` `+te+` -`+X)}else N!==""?yt("WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(Q=!1);Q&&(L.diagnostics={runnable:J,programLog:N,vertexShader:{log:B,prefix:p},fragmentShader:{log:V,prefix:g}})}r.deleteShader(E),r.deleteShader(T),M=new Bu(r,_),y=kne(r,_)}let M;this.getUniforms=function(){return M===void 0&&R(this),M};let y;this.getAttributes=function(){return y===void 0&&R(this),y};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(_,Dne)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Lne++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=E,this.fragmentShader=T,this}function nse(n){return n===af||n===H_||n===z_}function sse(n,e,t,i,r,s){let a=new vu,o=new DI,l=new Set,c=[],f=new Map,d=i.logarithmicDepthBuffer,h=i.precision,u={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function m(M){return l.add(M),M===0?"uv":`uv${M}`}function _(M,y,C,L,w,G){let O=L.fog,N=w.geometry,B=M.isMeshStandardMaterial||M.isMeshLambertMaterial||M.isMeshPhongMaterial?L.environment:null,V=M.isMeshStandardMaterial||M.isMeshLambertMaterial&&!M.envMap||M.isMeshPhongMaterial&&!M.envMap,J=e.get(M.envMap||B,V),Q=J&&J.mapping===U_?J.image.height:null,te=u[M.type];M.precision!==null&&(h=i.getMaxPrecision(M.precision),h!==M.precision&&yt("WebGLProgram.getParameters:",M.precision,"not supported, using",h,"instead."));let X=N.morphAttributes.position||N.morphAttributes.normal||N.morphAttributes.color,Y=X!==void 0?X.length:0,ve=0;N.morphAttributes.position!==void 0&&(ve=1),N.morphAttributes.normal!==void 0&&(ve=2),N.morphAttributes.color!==void 0&&(ve=3);let Ee,Ue,ae,me;if(te){let Zt=el[te];Ee=Zt.vertexShader,Ue=Zt.fragmentShader}else Ee=M.vertexShader,Ue=M.fragmentShader,o.update(M),ae=o.getVertexShaderID(M),me=o.getFragmentShaderID(M);let ne=n.getRenderTarget(),fe=n.state.buffers.depth.getReversed(),Pe=w.isInstancedMesh===!0,de=w.isBatchedMesh===!0,Re=!!M.map,Ye=!!M.matcap,Et=!!J,Ke=!!M.aoMap,Ze=!!M.lightMap,Jt=!!M.bumpMap,Lt=!!M.normalMap,xi=!!M.displacementMap,oe=!!M.emissiveMap,Gi=!!M.metalnessMap,ti=!!M.roughnessMap,Fi=M.anisotropy>0,ot=M.clearcoat>0,Di=M.dispersion>0,z=M.iridescence>0,U=M.sheen>0,ue=M.transmission>0,Le=Fi&&!!M.anisotropyMap,Ge=ot&&!!M.clearcoatMap,et=ot&&!!M.clearcoatNormalMap,rt=ot&&!!M.clearcoatRoughnessMap,Ce=z&&!!M.iridescenceMap,Me=z&&!!M.iridescenceThicknessMap,ct=U&&!!M.sheenColorMap,Tt=U&&!!M.sheenRoughnessMap,nt=!!M.specularMap,$e=!!M.specularColorMap,Wt=!!M.specularIntensityMap,qt=ue&&!!M.transmissionMap,re=ue&&!!M.thicknessMap,K=!!M.gradientMap,De=!!M.alphaMap,xe=M.alphaTest>0,je=!!M.alphaHash,qe=!!M.extensions,we=Rs;M.toneMapped&&(ne===null||ne.isXRRenderTarget===!0)&&(we=n.toneMapping);let At={shaderID:te,shaderType:M.type,shaderName:M.name,vertexShader:Ee,fragmentShader:Ue,defines:M.defines,customVertexShaderID:ae,customFragmentShaderID:me,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:h,batching:de,batchingColor:de&&w._colorsTexture!==null,instancing:Pe,instancingColor:Pe&&w.instanceColor!==null,instancingMorph:Pe&&w.morphTexture!==null,outputColorSpace:ne===null?n.outputColorSpace:ne.isXRRenderTarget===!0?ne.texture.colorSpace:ai.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:Re,matcap:Ye,envMap:Et,envMapMode:Et&&J.mapping,envMapCubeUVHeight:Q,aoMap:Ke,lightMap:Ze,bumpMap:Jt,normalMap:Lt,displacementMap:xi,emissiveMap:oe,normalMapObjectSpace:Lt&&M.normalMapType===P3,normalMapTangentSpace:Lt&&M.normalMapType===wu,packedNormalMap:Lt&&M.normalMapType===wu&&nse(M.normalMap.format),metalnessMap:Gi,roughnessMap:ti,anisotropy:Fi,anisotropyMap:Le,clearcoat:ot,clearcoatMap:Ge,clearcoatNormalMap:et,clearcoatRoughnessMap:rt,dispersion:Di,iridescence:z,iridescenceMap:Ce,iridescenceThicknessMap:Me,sheen:U,sheenColorMap:ct,sheenRoughnessMap:Tt,specularMap:nt,specularColorMap:$e,specularIntensityMap:Wt,transmission:ue,transmissionMap:qt,thicknessMap:re,gradientMap:K,opaque:M.transparent===!1&&M.blending===Rd&&M.alphaToCoverage===!1,alphaMap:De,alphaTest:xe,alphaHash:je,combine:M.combine,mapUv:Re&&m(M.map.channel),aoMapUv:Ke&&m(M.aoMap.channel),lightMapUv:Ze&&m(M.lightMap.channel),bumpMapUv:Jt&&m(M.bumpMap.channel),normalMapUv:Lt&&m(M.normalMap.channel),displacementMapUv:xi&&m(M.displacementMap.channel),emissiveMapUv:oe&&m(M.emissiveMap.channel),metalnessMapUv:Gi&&m(M.metalnessMap.channel),roughnessMapUv:ti&&m(M.roughnessMap.channel),anisotropyMapUv:Le&&m(M.anisotropyMap.channel),clearcoatMapUv:Ge&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:et&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:Ce&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:Me&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:Tt&&m(M.sheenRoughnessMap.channel),specularMapUv:nt&&m(M.specularMap.channel),specularColorMapUv:$e&&m(M.specularColorMap.channel),specularIntensityMapUv:Wt&&m(M.specularIntensityMap.channel),transmissionMapUv:qt&&m(M.transmissionMap.channel),thicknessMapUv:re&&m(M.thicknessMap.channel),alphaMapUv:De&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Lt||Fi),vertexNormals:!!N.attributes.normal,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!N.attributes.color&&N.attributes.color.itemSize===4,pointsUvs:w.isPoints===!0&&!!N.attributes.uv&&(Re||De),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Lt===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:fe,skinning:w.isSkinnedMesh===!0,morphTargets:N.morphAttributes.position!==void 0,morphNormals:N.morphAttributes.normal!==void 0,morphColors:N.morphAttributes.color!==void 0,morphTargetsCount:Y,morphTextureStride:ve,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numLightProbeGrids:G.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:we,decodeVideoTexture:Re&&M.map.isVideoTexture===!0&&ai.getTransfer(M.map.colorSpace)===Ki,decodeVideoTextureEmissive:oe&&M.emissiveMap.isVideoTexture===!0&&ai.getTransfer(M.emissiveMap.colorSpace)===Ki,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ta,flipSided:M.side===Sn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:qe&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(qe&&M.extensions.multiDraw===!0||de)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return At.vertexUv1s=l.has(1),At.vertexUv2s=l.has(2),At.vertexUv3s=l.has(3),l.clear(),At}function p(M){let y=[];if(M.shaderID?y.push(M.shaderID):(y.push(M.customVertexShaderID),y.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)y.push(C),y.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(g(y,M),v(y,M),y.push(n.outputColorSpace)),y.push(M.customProgramCacheKey),y.join()}function g(M,y){M.push(y.precision),M.push(y.outputColorSpace),M.push(y.envMapMode),M.push(y.envMapCubeUVHeight),M.push(y.mapUv),M.push(y.alphaMapUv),M.push(y.lightMapUv),M.push(y.aoMapUv),M.push(y.bumpMapUv),M.push(y.normalMapUv),M.push(y.displacementMapUv),M.push(y.emissiveMapUv),M.push(y.metalnessMapUv),M.push(y.roughnessMapUv),M.push(y.anisotropyMapUv),M.push(y.clearcoatMapUv),M.push(y.clearcoatNormalMapUv),M.push(y.clearcoatRoughnessMapUv),M.push(y.iridescenceMapUv),M.push(y.iridescenceThicknessMapUv),M.push(y.sheenColorMapUv),M.push(y.sheenRoughnessMapUv),M.push(y.specularMapUv),M.push(y.specularColorMapUv),M.push(y.specularIntensityMapUv),M.push(y.transmissionMapUv),M.push(y.thicknessMapUv),M.push(y.combine),M.push(y.fogExp2),M.push(y.sizeAttenuation),M.push(y.morphTargetsCount),M.push(y.morphAttributeCount),M.push(y.numDirLights),M.push(y.numPointLights),M.push(y.numSpotLights),M.push(y.numSpotLightMaps),M.push(y.numHemiLights),M.push(y.numRectAreaLights),M.push(y.numDirLightShadows),M.push(y.numPointLightShadows),M.push(y.numSpotLightShadows),M.push(y.numSpotLightShadowsWithMaps),M.push(y.numLightProbes),M.push(y.shadowMapType),M.push(y.toneMapping),M.push(y.numClippingPlanes),M.push(y.numClipIntersection),M.push(y.depthPacking)}function v(M,y){a.disableAll(),y.instancing&&a.enable(0),y.instancingColor&&a.enable(1),y.instancingMorph&&a.enable(2),y.matcap&&a.enable(3),y.envMap&&a.enable(4),y.normalMapObjectSpace&&a.enable(5),y.normalMapTangentSpace&&a.enable(6),y.clearcoat&&a.enable(7),y.iridescence&&a.enable(8),y.alphaTest&&a.enable(9),y.vertexColors&&a.enable(10),y.vertexAlphas&&a.enable(11),y.vertexUv1s&&a.enable(12),y.vertexUv2s&&a.enable(13),y.vertexUv3s&&a.enable(14),y.vertexTangents&&a.enable(15),y.anisotropy&&a.enable(16),y.alphaHash&&a.enable(17),y.batching&&a.enable(18),y.dispersion&&a.enable(19),y.batchingColor&&a.enable(20),y.gradientMap&&a.enable(21),y.packedNormalMap&&a.enable(22),y.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),y.fog&&a.enable(0),y.useFog&&a.enable(1),y.flatShading&&a.enable(2),y.logarithmicDepthBuffer&&a.enable(3),y.reversedDepthBuffer&&a.enable(4),y.skinning&&a.enable(5),y.morphTargets&&a.enable(6),y.morphNormals&&a.enable(7),y.morphColors&&a.enable(8),y.premultipliedAlpha&&a.enable(9),y.shadowMapEnabled&&a.enable(10),y.doubleSided&&a.enable(11),y.flipSided&&a.enable(12),y.useDepthPacking&&a.enable(13),y.dithering&&a.enable(14),y.transmission&&a.enable(15),y.sheen&&a.enable(16),y.opaque&&a.enable(17),y.pointsUvs&&a.enable(18),y.decodeVideoTexture&&a.enable(19),y.decodeVideoTextureEmissive&&a.enable(20),y.alphaToCoverage&&a.enable(21),y.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function x(M){let y=u[M.type],C;if(y){let L=el[y];C=H3.clone(L.uniforms)}else C=M.uniforms;return C}function S(M,y){let C=f.get(y);return C!==void 0?++C.usedTimes:(C=new ise(n,y,M,r),c.push(C),f.set(y,C)),C}function E(M){if(--M.usedTimes===0){let y=c.indexOf(M);c[y]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function T(M){o.remove(M)}function R(){o.dispose()}return{getParameters:_,getProgramCacheKey:p,getUniforms:x,acquireProgram:S,releaseProgram:E,releaseShaderCache:T,programs:c,dispose:R}}function ase(){let n=new WeakMap;function e(a){return n.has(a)}function t(a){let o=n.get(a);return o===void 0&&(o={},n.set(a,o)),o}function i(a){n.delete(a)}function r(a,o,l){n.get(a)[o]=l}function s(){n=new WeakMap}return{has:e,get:t,remove:i,update:r,dispose:s}}function ose(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.material.id!==e.material.id?n.material.id-e.material.id:n.materialVariant!==e.materialVariant?n.materialVariant-e.materialVariant:n.z!==e.z?n.z-e.z:n.id-e.id}function cB(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.z!==e.z?e.z-n.z:n.id-e.id}function fB(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(h){let u=0;return h.isInstancedMesh&&(u+=2),h.isSkinnedMesh&&(u+=1),u}function o(h,u,m,_,p,g){let v=n[e];return v===void 0?(v={id:h.id,object:h,geometry:u,material:m,materialVariant:a(h),groupOrder:_,renderOrder:h.renderOrder,z:p,group:g},n[e]=v):(v.id=h.id,v.object=h,v.geometry=u,v.material=m,v.materialVariant=a(h),v.groupOrder=_,v.renderOrder=h.renderOrder,v.z=p,v.group=g),e++,v}function l(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(h,u){t.length>1&&t.sort(h||ose),i.length>1&&i.sort(u||cB),r.length>1&&r.sort(u||cB)}function d(){for(let h=e,u=n.length;h=s.length?(a=new fB,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function cse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new se,color:new ft};break;case"SpotLight":t={position:new se,direction:new se,color:new ft,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new se,color:new ft,distance:0,decay:0};break;case"HemisphereLight":t={direction:new se,skyColor:new ft,groundColor:new ft};break;case"RectAreaLight":t={color:new ft,position:new se,halfWidth:new se,halfHeight:new se};break}return n[e.id]=t,t}}}function fse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function hse(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function use(n){let e=new cse,t=fse(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)i.probe.push(new se);let r=new se,s=new oi,a=new oi;function o(c){let f=0,d=0,h=0;for(let y=0;y<9;y++)i.probe[y].set(0,0,0);let u=0,m=0,_=0,p=0,g=0,v=0,x=0,S=0,E=0,T=0,R=0;c.sort(hse);for(let y=0,C=c.length;y0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=pt.LTC_FLOAT_1,i.rectAreaLTC2=pt.LTC_FLOAT_2):(i.rectAreaLTC1=pt.LTC_HALF_1,i.rectAreaLTC2=pt.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=h;let M=i.hash;(M.directionalLength!==u||M.pointLength!==m||M.spotLength!==_||M.rectAreaLength!==p||M.hemiLength!==g||M.numDirectionalShadows!==v||M.numPointShadows!==x||M.numSpotShadows!==S||M.numSpotMaps!==E||M.numLightProbes!==R)&&(i.directional.length=u,i.spot.length=_,i.rectArea.length=p,i.point.length=m,i.hemi.length=g,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=x,i.pointShadowMap.length=x,i.spotShadow.length=S,i.spotShadowMap.length=S,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=x,i.spotLightMatrix.length=S+E-T,i.spotLightMap.length=E,i.numSpotLightShadowsWithMaps=T,i.numLightProbes=R,M.directionalLength=u,M.pointLength=m,M.spotLength=_,M.rectAreaLength=p,M.hemiLength=g,M.numDirectionalShadows=v,M.numPointShadows=x,M.numSpotShadows=S,M.numSpotMaps=E,M.numLightProbes=R,i.version=dse++)}function l(c,f){let d=0,h=0,u=0,m=0,_=0,p=f.matrixWorldInverse;for(let g=0,v=c.length;g=a.length?(o=new dB(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function Ese(n,e,t){let i=new xu,r=new Mt,s=new Mt,a=new tr,o=new iS,l=new rS,c={},f=t.maxTextureSize,d={[Qs]:Sn,[Sn]:Qs,[Ta]:Ta},h=new Js({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Mt},radius:{value:4}},vertexShader:pse,fragmentShader:_se}),u=h.clone();u.defines.HORIZONTAL_PASS=1;let m=new Xi;m.setAttribute("position",new hr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new li(m,h),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=F_;let g=this.type;this.render=function(T,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||T.length===0)return;this.type===mS&&(yt("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=F_);let y=n.getRenderTarget(),C=n.getActiveCubeFace(),L=n.getActiveMipmapLevel(),w=n.state;w.setBlending(Qo),w.buffers.depth.getReversed()===!0?w.buffers.color.setClear(0,0,0,0):w.buffers.color.setClear(1,1,1,1),w.buffers.depth.setTest(!0),w.setScissorTest(!1);let G=g!==this.type;G&&R.traverse(function(O){O.material&&(Array.isArray(O.material)?O.material.forEach(N=>N.needsUpdate=!0):O.material.needsUpdate=!0)});for(let O=0,N=T.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/J.x),r.x=s.x*J.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/J.y),r.y=s.y*J.y,V.mapSize.y=s.y));let Q=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=Q,V.map===null||G===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===Pu){if(B.isPointLight){yt("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new $s(r.x,r.y,{format:af,type:$o,minFilter:wr,magFilter:wr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new Ul(r.x,r.y,ea),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=Ho,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Nr,V.map.depthTexture.magFilter=Nr}else B.isPointLight?(V.map=new oT(r.x),V.map.depthTexture=new eS(r.x,ao)):(V.map=new $s(r.x,r.y),V.map.depthTexture=new Ul(r.x,r.y,ao)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=Ho,this.type===F_?(V.map.depthTexture.compareFunction=Q?rT:iT,V.map.depthTexture.minFilter=wr,V.map.depthTexture.magFilter=wr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Nr,V.map.depthTexture.magFilter=Nr);V.camera.updateProjectionMatrix()}let te=V.map.isWebGLCubeRenderTarget?6:1;for(let X=0;X0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,G=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[G];N===void 0&&(N=C.clone(),O[G]=N,R.addEventListener("dispose",E)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,y===Pu?C.side=R.shadowSide!==null?R.shadowSide:R.side:C.side=R.shadowSide!==null?R.shadowSide:d[R.side],C.alphaMap=R.alphaMap,C.alphaTest=R.alphaToCoverage===!0?.5:R.alphaTest,C.map=R.map,C.clipShadows=R.clipShadows,C.clippingPlanes=R.clippingPlanes,C.clipIntersection=R.clipIntersection,C.displacementMap=R.displacementMap,C.displacementScale=R.displacementScale,C.displacementBias=R.displacementBias,C.wireframeLinewidth=R.wireframeLinewidth,C.linewidth=R.linewidth,M.isPointLight===!0&&C.isMeshDistanceMaterial===!0){let w=n.properties.get(C);w.light=M}return C}function S(T,R,M,y,C){if(T.visible===!1)return;if(T.layers.test(R.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&C===Pu)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,T.matrixWorld);let G=e.update(T),O=T.material;if(Array.isArray(O)){let N=G.groups;for(let B=0,V=N.length;B=1):Q.indexOf("OpenGL ES")!==-1&&(J=parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]),V=J>=2);let te=null,X={},Y=n.getParameter(n.SCISSOR_BOX),ve=n.getParameter(n.VIEWPORT),Ee=new tr().fromArray(Y),Ue=new tr().fromArray(ve);function ae(K,De,xe,je){let qe=new Uint8Array(4),we=n.createTexture();n.bindTexture(K,we),n.texParameteri(K,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(K,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let At=0;Atue||Ge.height>ue)&&(Le=ue/Math.max(Ge.width,Ge.height)),Le<1)if(typeof HTMLImageElement!="undefined"&&z instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&z instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&z instanceof ImageBitmap||typeof VideoFrame!="undefined"&&z instanceof VideoFrame){let et=Math.floor(Le*Ge.width),rt=Math.floor(Le*Ge.height);h===void 0&&(h=_(et,rt));let Ce=U?_(et,rt):h;return Ce.width=et,Ce.height=rt,Ce.getContext("2d").drawImage(z,0,0,et,rt),yt("WebGLRenderer: Texture has been resized from ("+Ge.width+"x"+Ge.height+") to ("+et+"x"+rt+")."),Ce}else return"data"in z&&yt("WebGLRenderer: Image in DataTexture is too big ("+Ge.width+"x"+Ge.height+")."),z;return z}function g(z){return z.generateMipmaps}function v(z){n.generateMipmap(z)}function x(z){return z.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:z.isWebGL3DRenderTarget?n.TEXTURE_3D:z.isWebGLArrayRenderTarget||z.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function S(z,U,ue,Le,Ge,et=!1){if(z!==null){if(n[z]!==void 0)return n[z];yt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+z+"'")}let rt;Le&&(rt=e.get("EXT_texture_norm16"),rt||yt("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let Ce=U;if(U===n.RED&&(ue===n.FLOAT&&(Ce=n.R32F),ue===n.HALF_FLOAT&&(Ce=n.R16F),ue===n.UNSIGNED_BYTE&&(Ce=n.R8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.R16_EXT),ue===n.SHORT&&rt&&(Ce=rt.R16_SNORM_EXT)),U===n.RED_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.R8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.R16UI),ue===n.UNSIGNED_INT&&(Ce=n.R32UI),ue===n.BYTE&&(Ce=n.R8I),ue===n.SHORT&&(Ce=n.R16I),ue===n.INT&&(Ce=n.R32I)),U===n.RG&&(ue===n.FLOAT&&(Ce=n.RG32F),ue===n.HALF_FLOAT&&(Ce=n.RG16F),ue===n.UNSIGNED_BYTE&&(Ce=n.RG8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RG16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RG8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RG16UI),ue===n.UNSIGNED_INT&&(Ce=n.RG32UI),ue===n.BYTE&&(Ce=n.RG8I),ue===n.SHORT&&(Ce=n.RG16I),ue===n.INT&&(Ce=n.RG32I)),U===n.RGB_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RGB8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RGB16UI),ue===n.UNSIGNED_INT&&(Ce=n.RGB32UI),ue===n.BYTE&&(Ce=n.RGB8I),ue===n.SHORT&&(Ce=n.RGB16I),ue===n.INT&&(Ce=n.RGB32I)),U===n.RGBA_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RGBA8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RGBA16UI),ue===n.UNSIGNED_INT&&(Ce=n.RGBA32UI),ue===n.BYTE&&(Ce=n.RGBA8I),ue===n.SHORT&&(Ce=n.RGBA16I),ue===n.INT&&(Ce=n.RGBA32I)),U===n.RGB&&(ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RGB16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RGB16_SNORM_EXT),ue===n.UNSIGNED_INT_5_9_9_9_REV&&(Ce=n.RGB9_E5),ue===n.UNSIGNED_INT_10F_11F_11F_REV&&(Ce=n.R11F_G11F_B10F)),U===n.RGBA){let Me=et?m_:ai.getTransfer(Ge);ue===n.FLOAT&&(Ce=n.RGBA32F),ue===n.HALF_FLOAT&&(Ce=n.RGBA16F),ue===n.UNSIGNED_BYTE&&(Ce=Me===Ki?n.SRGB8_ALPHA8:n.RGBA8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RGBA16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RGBA16_SNORM_EXT),ue===n.UNSIGNED_SHORT_4_4_4_4&&(Ce=n.RGBA4),ue===n.UNSIGNED_SHORT_5_5_5_1&&(Ce=n.RGB5_A1)}return(Ce===n.R16F||Ce===n.R32F||Ce===n.RG16F||Ce===n.RG32F||Ce===n.RGBA16F||Ce===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Ce}function E(z,U){let ue;return z?U===null||U===ao||U===Ou?ue=n.DEPTH24_STENCIL8:U===ea?ue=n.DEPTH32F_STENCIL8:U===Lu&&(ue=n.DEPTH24_STENCIL8,yt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===ao||U===Ou?ue=n.DEPTH_COMPONENT24:U===ea?ue=n.DEPTH_COMPONENT32F:U===Lu&&(ue=n.DEPTH_COMPONENT16),ue}function T(z,U){return g(z)===!0||z.isFramebufferTexture&&z.minFilter!==Nr&&z.minFilter!==wr?Math.log2(Math.max(U.width,U.height))+1:z.mipmaps!==void 0&&z.mipmaps.length>0?z.mipmaps.length:z.isCompressedTexture&&Array.isArray(z.image)?U.mipmaps.length:1}function R(z){let U=z.target;U.removeEventListener("dispose",R),y(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(z){let U=z.target;U.removeEventListener("dispose",M),L(U)}function y(z){let U=i.get(z);if(U.__webglInit===void 0)return;let ue=z.source,Le=u.get(ue);if(Le){let Ge=Le[U.__cacheKey];Ge.usedTimes--,Ge.usedTimes===0&&C(z),Object.keys(Le).length===0&&u.delete(ue)}i.remove(z)}function C(z){let U=i.get(z);n.deleteTexture(U.__webglTexture);let ue=z.source,Le=u.get(ue);delete Le[U.__cacheKey],a.memory.textures--}function L(z){let U=i.get(z);if(z.depthTexture&&(z.depthTexture.dispose(),i.remove(z.depthTexture)),z.isWebGLCubeRenderTarget)for(let Le=0;Le<6;Le++){if(Array.isArray(U.__webglFramebuffer[Le]))for(let Ge=0;Ge=r.maxTextures&&yt("WebGLTextures: Trying to use "+z+" texture units while this GPU supports only "+r.maxTextures),w+=1,z}function V(z){let U=[];return U.push(z.wrapS),U.push(z.wrapT),U.push(z.wrapR||0),U.push(z.magFilter),U.push(z.minFilter),U.push(z.anisotropy),U.push(z.internalFormat),U.push(z.format),U.push(z.type),U.push(z.generateMipmaps),U.push(z.premultiplyAlpha),U.push(z.flipY),U.push(z.unpackAlignment),U.push(z.colorSpace),U.join()}function J(z,U){let ue=i.get(z);if(z.isVideoTexture&&Fi(z),z.isRenderTargetTexture===!1&&z.isExternalTexture!==!0&&z.version>0&&ue.__version!==z.version){let Le=z.image;if(Le===null)yt("WebGLRenderer: Texture marked for update but no image data found.");else if(Le.complete===!1)yt("WebGLRenderer: Texture marked for update but image is incomplete");else{fe(ue,z,U);return}}else z.isExternalTexture&&(ue.__webglTexture=z.sourceTexture?z.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,ue.__webglTexture,n.TEXTURE0+U)}function Q(z,U){let ue=i.get(z);if(z.isRenderTargetTexture===!1&&z.version>0&&ue.__version!==z.version){fe(ue,z,U);return}else z.isExternalTexture&&(ue.__webglTexture=z.sourceTexture?z.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,ue.__webglTexture,n.TEXTURE0+U)}function te(z,U){let ue=i.get(z);if(z.isRenderTargetTexture===!1&&z.version>0&&ue.__version!==z.version){fe(ue,z,U);return}t.bindTexture(n.TEXTURE_3D,ue.__webglTexture,n.TEXTURE0+U)}function X(z,U){let ue=i.get(z);if(z.isCubeDepthTexture!==!0&&z.version>0&&ue.__version!==z.version){Pe(ue,z,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,ue.__webglTexture,n.TEXTURE0+U)}let Y={[Wo]:n.REPEAT,[Ea]:n.CLAMP_TO_EDGE,[uu]:n.MIRRORED_REPEAT},ve={[Nr]:n.NEAREST,[gS]:n.NEAREST_MIPMAP_NEAREST,[Bd]:n.NEAREST_MIPMAP_LINEAR,[wr]:n.LINEAR,[Du]:n.LINEAR_MIPMAP_NEAREST,[so]:n.LINEAR_MIPMAP_LINEAR},Ee={[D3]:n.NEVER,[F3]:n.ALWAYS,[L3]:n.LESS,[iT]:n.LEQUAL,[O3]:n.EQUAL,[rT]:n.GEQUAL,[N3]:n.GREATER,[w3]:n.NOTEQUAL};function Ue(z,U){if(U.type===ea&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===wr||U.magFilter===Du||U.magFilter===Bd||U.magFilter===so||U.minFilter===wr||U.minFilter===Du||U.minFilter===Bd||U.minFilter===so)&&yt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(z,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(z,n.TEXTURE_WRAP_T,Y[U.wrapT]),(z===n.TEXTURE_3D||z===n.TEXTURE_2D_ARRAY)&&n.texParameteri(z,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(z,n.TEXTURE_MAG_FILTER,ve[U.magFilter]),n.texParameteri(z,n.TEXTURE_MIN_FILTER,ve[U.minFilter]),U.compareFunction&&(n.texParameteri(z,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(z,n.TEXTURE_COMPARE_FUNC,Ee[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Nr||U.minFilter!==Bd&&U.minFilter!==so||U.type===ea&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let ue=e.get("EXT_texture_filter_anisotropic");n.texParameterf(z,ue.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function ae(z,U){let ue=!1;z.__webglInit===void 0&&(z.__webglInit=!0,U.addEventListener("dispose",R));let Le=U.source,Ge=u.get(Le);Ge===void 0&&(Ge={},u.set(Le,Ge));let et=V(U);if(et!==z.__cacheKey){Ge[et]===void 0&&(Ge[et]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,ue=!0),Ge[et].usedTimes++;let rt=Ge[z.__cacheKey];rt!==void 0&&(Ge[z.__cacheKey].usedTimes--,rt.usedTimes===0&&C(U)),z.__cacheKey=et,z.__webglTexture=Ge[et].texture}return ue}function me(z,U,ue){return Math.floor(Math.floor(z/ue)/U)}function ne(z,U,ue,Le){let et=z.updateRanges;if(et.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,ue,Le,U.data);else{et.sort((Tt,nt)=>Tt.start-nt.start);let rt=0;for(let Tt=1;Tt0){qt&&re&&t.texStorage2D(n.TEXTURE_2D,De,nt,Wt[0].width,Wt[0].height);for(let xe=0,je=Wt.length;xe0){let qe=uI($e.width,$e.height,U.format,U.type);for(let we of U.layerUpdates){let At=$e.data.subarray(we*qe/$e.data.BYTES_PER_ELEMENT,(we+1)*qe/$e.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,we,$e.width,$e.height,1,ct,At)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,0,$e.width,$e.height,Me.depth,ct,$e.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,xe,nt,$e.width,$e.height,Me.depth,0,$e.data,0,0);else yt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else qt?K&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,0,$e.width,$e.height,Me.depth,ct,Tt,$e.data):t.texImage3D(n.TEXTURE_2D_ARRAY,xe,nt,$e.width,$e.height,Me.depth,0,ct,Tt,$e.data)}else{qt&&re&&t.texStorage2D(n.TEXTURE_2D,De,nt,Wt[0].width,Wt[0].height);for(let xe=0,je=Wt.length;xe0){let xe=uI(Me.width,Me.height,U.format,U.type);for(let je of U.layerUpdates){let qe=Me.data.subarray(je*xe/Me.data.BYTES_PER_ELEMENT,(je+1)*xe/Me.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,je,Me.width,Me.height,1,ct,Tt,qe)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Me.width,Me.height,Me.depth,ct,Tt,Me.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,nt,Me.width,Me.height,Me.depth,0,ct,Tt,Me.data);else if(U.isData3DTexture)qt?(re&&t.texStorage3D(n.TEXTURE_3D,De,nt,Me.width,Me.height,Me.depth),K&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Me.width,Me.height,Me.depth,ct,Tt,Me.data)):t.texImage3D(n.TEXTURE_3D,0,nt,Me.width,Me.height,Me.depth,0,ct,Tt,Me.data);else if(U.isFramebufferTexture){if(re)if(qt)t.texStorage2D(n.TEXTURE_2D,De,nt,Me.width,Me.height);else{let xe=Me.width,je=Me.height;for(let qe=0;qe>=1,je>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let xe=n.canvas;if(xe.hasAttribute("layoutsubtree")||xe.setAttribute("layoutsubtree","true"),Me.parentNode!==xe){xe.appendChild(Me),d.add(U),xe.onpaint=Zt=>{let rr=Zt.changedElements;for(let vi of d)rr.includes(vi.image)&&(vi.needsUpdate=!0)},xe.requestPaint();return}let je=0,qe=n.RGBA,we=n.RGBA,At=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,je,qe,we,At,Me),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)}}else if(Wt.length>0){if(qt&&re){let xe=Di(Wt[0]);t.texStorage2D(n.TEXTURE_2D,De,nt,xe.width,xe.height)}for(let xe=0,je=Wt.length;xe0&&je++;let we=Di(nt[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,je,re,we.width,we.height)}for(let we=0;we<6;we++)if(Tt){K?xe&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+we,0,0,0,nt[we].width,nt[we].height,Wt,qt,nt[we].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+we,0,re,nt[we].width,nt[we].height,0,Wt,qt,nt[we].data);for(let At=0;At>et),$e=Math.max(1,U.height>>et);Ge===n.TEXTURE_3D||Ge===n.TEXTURE_2D_ARRAY?t.texImage3D(Ge,et,Me,nt,$e,U.depth,0,rt,Ce,null):t.texImage2D(Ge,et,Me,nt,$e,0,rt,Ce,null)}t.bindFramebuffer(n.FRAMEBUFFER,z),ti(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,Le,Ge,Tt.__webglTexture,0,Gi(U)):(Ge===n.TEXTURE_2D||Ge>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ge<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Le,Ge,Tt.__webglTexture,et),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Re(z,U,ue){if(n.bindRenderbuffer(n.RENDERBUFFER,z),U.depthBuffer){let Le=U.depthTexture,Ge=Le&&Le.isDepthTexture?Le.type:null,et=E(U.stencilBuffer,Ge),rt=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;ti(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Gi(U),et,U.width,U.height):ue?n.renderbufferStorageMultisample(n.RENDERBUFFER,Gi(U),et,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,et,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,rt,n.RENDERBUFFER,z)}else{let Le=U.textures;for(let Ge=0;Ge{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,Le.removeEventListener("dispose",Ge)};Le.addEventListener("dispose",Ge),U.__depthDisposeCallback=Ge}U.__boundDepthTexture=Le}if(z.depthTexture&&!U.__autoAllocateDepthBuffer)if(ue)for(let Le=0;Le<6;Le++)Ye(U.__webglFramebuffer[Le],z,Le);else{let Le=z.texture.mipmaps;Le&&Le.length>0?Ye(U.__webglFramebuffer[0],z,0):Ye(U.__webglFramebuffer,z,0)}else if(ue){U.__webglDepthbuffer=[];for(let Le=0;Le<6;Le++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[Le]),U.__webglDepthbuffer[Le]===void 0)U.__webglDepthbuffer[Le]=n.createRenderbuffer(),Re(U.__webglDepthbuffer[Le],z,!1);else{let Ge=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer[Le];n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ge,n.RENDERBUFFER,et)}}else{let Le=z.texture.mipmaps;if(Le&&Le.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),Re(U.__webglDepthbuffer,z,!1);else{let Ge=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ge,n.RENDERBUFFER,et)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ke(z,U,ue){let Le=i.get(z);U!==void 0&&de(Le.__webglFramebuffer,z,z.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),ue!==void 0&&Et(z)}function Ze(z){let U=z.texture,ue=i.get(z),Le=i.get(U);z.addEventListener("dispose",M);let Ge=z.textures,et=z.isWebGLCubeRenderTarget===!0,rt=Ge.length>1;if(rt||(Le.__webglTexture===void 0&&(Le.__webglTexture=n.createTexture()),Le.__version=U.version,a.memory.textures++),et){ue.__webglFramebuffer=[];for(let Ce=0;Ce<6;Ce++)if(U.mipmaps&&U.mipmaps.length>0){ue.__webglFramebuffer[Ce]=[];for(let Me=0;Me0){ue.__webglFramebuffer=[];for(let Ce=0;Ce0&&ti(z)===!1){ue.__webglMultisampledFramebuffer=n.createFramebuffer(),ue.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,ue.__webglMultisampledFramebuffer);for(let Ce=0;Ce0)for(let Me=0;Me0)for(let Me=0;Me0){if(ti(z)===!1){let U=z.textures,ue=z.width,Le=z.height,Ge=n.COLOR_BUFFER_BIT,et=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,rt=i.get(z),Ce=U.length>1;if(Ce)for(let ct=0;ct0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,rt.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,rt.__webglFramebuffer);for(let ct=0;ct0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&U.__useRenderToTexture!==!1}function Fi(z){let U=a.render.frame;f.get(z)!==U&&(f.set(z,U),z.update())}function ot(z,U){let ue=z.colorSpace,Le=z.format,Ge=z.type;return z.isCompressedTexture===!0||z.isVideoTexture===!0||ue!==Jn&&ue!==Hl&&(ai.getTransfer(ue)===Ki?(Le!==ta||Ge!==bs)&&yt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Bt("WebGLTextures: Unsupported texture color space:",ue)),U}function Di(z){return typeof HTMLImageElement!="undefined"&&z instanceof HTMLImageElement?(c.width=z.naturalWidth||z.width,c.height=z.naturalHeight||z.height):typeof VideoFrame!="undefined"&&z instanceof VideoFrame?(c.width=z.displayWidth,c.height=z.displayHeight):(c.width=z.width,c.height=z.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=G,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=J,this.setTexture2DArray=Q,this.setTexture3D=te,this.setTextureCube=X,this.rebindTextures=Ke,this.setupRenderTarget=Ze,this.updateRenderTargetMipmap=Jt,this.updateMultisampleRenderTarget=oe,this.setupDepthRenderbuffer=Et,this.setupFrameBufferTexture=de,this.useMultisampledRTT=ti,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function Ase(n,e){function t(i,r=Hl){let s,a=ai.getTransfer(r);if(i===bs)return n.UNSIGNED_BYTE;if(i===ES)return n.UNSIGNED_SHORT_4_4_4_4;if(i===SS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===rI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===nI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===tI)return n.BYTE;if(i===iI)return n.SHORT;if(i===Lu)return n.UNSIGNED_SHORT;if(i===vS)return n.INT;if(i===ao)return n.UNSIGNED_INT;if(i===ea)return n.FLOAT;if(i===$o)return n.HALF_FLOAT;if(i===sI)return n.ALPHA;if(i===aI)return n.RGB;if(i===ta)return n.RGBA;if(i===Ho)return n.DEPTH_COMPONENT;if(i===sf)return n.DEPTH_STENCIL;if(i===TS)return n.RED;if(i===AS)return n.RED_INTEGER;if(i===af)return n.RG;if(i===xS)return n.RG_INTEGER;if(i===RS)return n.RGBA_INTEGER;if(i===V_||i===G_||i===k_||i===W_)if(a===Ki)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===V_)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===G_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===k_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===W_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===V_)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===G_)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===k_)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===W_)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===bS||i===MS||i===IS||i===yS)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===bS)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===MS)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===IS)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===yS)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===CS||i===PS||i===DS||i===LS||i===OS||i===H_||i===NS)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===CS||i===PS)return a===Ki?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===DS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===LS)return s.COMPRESSED_R11_EAC;if(i===OS)return s.COMPRESSED_SIGNED_R11_EAC;if(i===H_)return s.COMPRESSED_RG11_EAC;if(i===NS)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===wS||i===FS||i===BS||i===US||i===VS||i===GS||i===kS||i===WS||i===HS||i===zS||i===XS||i===YS||i===KS||i===jS)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===wS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===FS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===BS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===US)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===VS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===GS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===kS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===WS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===HS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===zS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===XS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===YS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===KS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===jS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===qS||i===ZS||i===QS)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===qS)return a===Ki?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===ZS)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===QS)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===$S||i===JS||i===z_||i===eT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===$S)return s.COMPRESSED_RED_RGTC1_EXT;if(i===JS)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===z_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===eT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Ou?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function Mse(n,e){function t(p,g){p.matrixAutoUpdate===!0&&p.updateMatrix(),g.value.copy(p.matrix)}function i(p,g){g.color.getRGB(p.fogColor.value,fI(n)),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function r(p,g,v,x,S){g.isNodeMaterial?g.uniformsNeedUpdate=!1:g.isMeshBasicMaterial?s(p,g):g.isMeshLambertMaterial?(s(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshToonMaterial?(s(p,g),d(p,g)):g.isMeshPhongMaterial?(s(p,g),f(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshStandardMaterial?(s(p,g),h(p,g),g.isMeshPhysicalMaterial&&u(p,g,S)):g.isMeshMatcapMaterial?(s(p,g),m(p,g)):g.isMeshDepthMaterial?s(p,g):g.isMeshDistanceMaterial?(s(p,g),_(p,g)):g.isMeshNormalMaterial?s(p,g):g.isLineBasicMaterial?(a(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?l(p,g,v,x):g.isSpriteMaterial?c(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.bumpMap&&(p.bumpMap.value=g.bumpMap,t(g.bumpMap,p.bumpMapTransform),p.bumpScale.value=g.bumpScale,g.side===Sn&&(p.bumpScale.value*=-1)),g.normalMap&&(p.normalMap.value=g.normalMap,t(g.normalMap,p.normalMapTransform),p.normalScale.value.copy(g.normalScale),g.side===Sn&&p.normalScale.value.negate()),g.displacementMap&&(p.displacementMap.value=g.displacementMap,t(g.displacementMap,p.displacementMapTransform),p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,p.emissiveMapTransform)),g.specularMap&&(p.specularMap.value=g.specularMap,t(g.specularMap,p.specularMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let v=e.get(g),x=v.envMap,S=v.envMapRotation;x&&(p.envMap.value=x,p.envMapRotation.value.setFromMatrix4(bse.makeRotationFromEuler(S)).transpose(),x.isCubeTexture&&x.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(EB),p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap&&(p.lightMap.value=g.lightMap,p.lightMapIntensity.value=g.lightMapIntensity,t(g.lightMap,p.lightMapTransform)),g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,p.aoMapTransform))}function a(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform))}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function l(p,g,v,x){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*v,p.scale.value=x*.5,g.map&&(p.map.value=g.map,t(g.map,p.uvTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function c(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function f(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function d(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.metalness.value=g.metalness,g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,p.metalnessMapTransform)),p.roughness.value=g.roughness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,p.roughnessMapTransform)),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function u(p,g,v){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,p.sheenColorMapTransform)),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,p.sheenRoughnessMapTransform))),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,p.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(p.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===Sn&&p.clearcoatNormalScale.value.negate())),g.dispersion>0&&(p.dispersion.value=g.dispersion),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,p.iridescenceMapTransform)),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,p.transmissionMapTransform)),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(p.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(p.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,p.specularColorMapTransform)),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,g){g.matcap&&(p.matcap.value=g.matcap)}function _(p,g){let v=e.get(g).light;p.referencePosition.value.setFromMatrixPosition(v.matrixWorld),p.nearDistance.value=v.shadow.camera.near,p.farDistance.value=v.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function Ise(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,x){let S=x.program;i.uniformBlockBinding(v,S)}function c(v,x){let S=r[v.id];S===void 0&&(m(v),S=f(v),r[v.id]=S,v.addEventListener("dispose",p));let E=x.program;i.updateUBOMapping(v,E);let T=e.render.frame;s[v.id]!==T&&(h(v),s[v.id]=T)}function f(v){let x=d();v.__bindingPointIndex=x;let S=n.createBuffer(),E=v.__size,T=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,S),n.bufferData(n.UNIFORM_BUFFER,E,T),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,x,S),S}function d(){for(let v=0;v0&&(S+=E-T),v.__size=S,v.__cache={},this}function _(v){let x={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(x.boundary=4,x.storage=4):v.isVector2?(x.boundary=8,x.storage=8):v.isVector3||v.isColor?(x.boundary=16,x.storage=12):v.isVector4?(x.boundary=16,x.storage=16):v.isMatrix3?(x.boundary=48,x.storage=48):v.isMatrix4?(x.boundary=64,x.storage=64):v.isTexture?yt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(x.boundary=16,x.storage=v.byteLength):yt("WebGLRenderer: Unsupported uniform value type.",v),x}function p(v){let x=v.target;x.removeEventListener("dispose",p);let S=a.indexOf(x.__bindingPointIndex);a.splice(S,1),n.deleteBuffer(r[x.id]),delete r[x.id],delete s[x.id]}function g(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:g}}function Cse(){return Jo===null&&(Jo=new Au(yse,16,16,af,$o),Jo.name="DFG_LUT",Jo.minFilter=wr,Jo.magFilter=wr,Jo.wrapS=Ea,Jo.wrapT=Ea,Jo.generateMipmaps=!1,Jo.needsUpdate=!0),Jo}var zee,Xee,Yee,Kee,jee,qee,Zee,Qee,$ee,Jee,ete,tte,ite,rte,nte,ste,ate,ote,lte,cte,fte,dte,hte,ute,mte,pte,_te,gte,vte,Ete,Ste,Tte,Ate,xte,Rte,bte,Mte,Ite,yte,Cte,Pte,Dte,Lte,Ote,Nte,wte,Fte,Bte,Ute,Vte,Gte,kte,Wte,Hte,zte,Xte,Yte,Kte,jte,qte,Zte,Qte,$te,Jte,eie,tie,iie,rie,nie,sie,aie,oie,lie,cie,fie,die,hie,uie,mie,pie,_ie,gie,vie,Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,Iie,yie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,Hie,zie,Xie,Yie,Kie,jie,qie,Zie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,hre,ure,mre,pre,_re,gre,vre,Ere,Sre,Tre,Are,xre,di,pt,el,sT,Rre,mB,of,X3,Vd,Pre,K_,Y3,SI,TI,AI,xI,Dre,Uu,oT,Wre,pB,MI,_B,gB,vB,Z3,Q3,$3,J3,eB,II,yI,CI,RI,Bu,Dne,Lne,rB,Fne,aT,Wne,Hne,Xne,Kne,qne,Qne,Jne,rse,DI,LI,dse,pse,_se,gse,vse,hB,j_,bI,xse,Rse,OI,NI,bse,EB,yse,Jo,lT,ts=I(()=>{EI();EI();zee=`#ifdef USE_ALPHAHASH +`+X)}else N!==""?yt("WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(Q=!1);Q&&(L.diagnostics={runnable:J,programLog:N,vertexShader:{log:B,prefix:p},fragmentShader:{log:V,prefix:g}})}r.deleteShader(E),r.deleteShader(T),M=new Bu(r,_),y=Yne(r,_)}let M;this.getUniforms=function(){return M===void 0&&R(this),M};let y;this.getAttributes=function(){return y===void 0&&R(this),y};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(_,Fne)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Bne++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=E,this.fragmentShader=T,this}function cse(n){return n===af||n===H_||n===z_}function fse(n,e,t,i,r,s){let a=new vu,o=new NI,l=new Set,c=[],f=new Map,d=i.logarithmicDepthBuffer,h=i.precision,u={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function m(M){return l.add(M),M===0?"uv":`uv${M}`}function _(M,y,C,L,w,G){let O=L.fog,N=w.geometry,B=M.isMeshStandardMaterial||M.isMeshLambertMaterial||M.isMeshPhongMaterial?L.environment:null,V=M.isMeshStandardMaterial||M.isMeshLambertMaterial&&!M.envMap||M.isMeshPhongMaterial&&!M.envMap,J=e.get(M.envMap||B,V),Q=J&&J.mapping===U_?J.image.height:null,te=u[M.type];M.precision!==null&&(h=i.getMaxPrecision(M.precision),h!==M.precision&&yt("WebGLProgram.getParameters:",M.precision,"not supported, using",h,"instead."));let X=N.morphAttributes.position||N.morphAttributes.normal||N.morphAttributes.color,Y=X!==void 0?X.length:0,ve=0;N.morphAttributes.position!==void 0&&(ve=1),N.morphAttributes.normal!==void 0&&(ve=2),N.morphAttributes.color!==void 0&&(ve=3);let Ee,Ue,ae,me;if(te){let Zt=el[te];Ee=Zt.vertexShader,Ue=Zt.fragmentShader}else Ee=M.vertexShader,Ue=M.fragmentShader,o.update(M),ae=o.getVertexShaderID(M),me=o.getFragmentShaderID(M);let ne=n.getRenderTarget(),fe=n.state.buffers.depth.getReversed(),Pe=w.isInstancedMesh===!0,de=w.isBatchedMesh===!0,Re=!!M.map,Ye=!!M.matcap,Et=!!J,Ke=!!M.aoMap,Ze=!!M.lightMap,Jt=!!M.bumpMap,Lt=!!M.normalMap,xi=!!M.displacementMap,oe=!!M.emissiveMap,Gi=!!M.metalnessMap,ti=!!M.roughnessMap,Fi=M.anisotropy>0,ot=M.clearcoat>0,Di=M.dispersion>0,z=M.iridescence>0,U=M.sheen>0,ue=M.transmission>0,Le=Fi&&!!M.anisotropyMap,Ge=ot&&!!M.clearcoatMap,et=ot&&!!M.clearcoatNormalMap,rt=ot&&!!M.clearcoatRoughnessMap,Ce=z&&!!M.iridescenceMap,Me=z&&!!M.iridescenceThicknessMap,ct=U&&!!M.sheenColorMap,Tt=U&&!!M.sheenRoughnessMap,nt=!!M.specularMap,$e=!!M.specularColorMap,Wt=!!M.specularIntensityMap,qt=ue&&!!M.transmissionMap,re=ue&&!!M.thicknessMap,K=!!M.gradientMap,De=!!M.alphaMap,xe=M.alphaTest>0,je=!!M.alphaHash,qe=!!M.extensions,we=Rs;M.toneMapped&&(ne===null||ne.isXRRenderTarget===!0)&&(we=n.toneMapping);let At={shaderID:te,shaderType:M.type,shaderName:M.name,vertexShader:Ee,fragmentShader:Ue,defines:M.defines,customVertexShaderID:ae,customFragmentShaderID:me,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:h,batching:de,batchingColor:de&&w._colorsTexture!==null,instancing:Pe,instancingColor:Pe&&w.instanceColor!==null,instancingMorph:Pe&&w.morphTexture!==null,outputColorSpace:ne===null?n.outputColorSpace:ne.isXRRenderTarget===!0?ne.texture.colorSpace:ai.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:Re,matcap:Ye,envMap:Et,envMapMode:Et&&J.mapping,envMapCubeUVHeight:Q,aoMap:Ke,lightMap:Ze,bumpMap:Jt,normalMap:Lt,displacementMap:xi,emissiveMap:oe,normalMapObjectSpace:Lt&&M.normalMapType===N3,normalMapTangentSpace:Lt&&M.normalMapType===wu,packedNormalMap:Lt&&M.normalMapType===wu&&cse(M.normalMap.format),metalnessMap:Gi,roughnessMap:ti,anisotropy:Fi,anisotropyMap:Le,clearcoat:ot,clearcoatMap:Ge,clearcoatNormalMap:et,clearcoatRoughnessMap:rt,dispersion:Di,iridescence:z,iridescenceMap:Ce,iridescenceThicknessMap:Me,sheen:U,sheenColorMap:ct,sheenRoughnessMap:Tt,specularMap:nt,specularColorMap:$e,specularIntensityMap:Wt,transmission:ue,transmissionMap:qt,thicknessMap:re,gradientMap:K,opaque:M.transparent===!1&&M.blending===Rd&&M.alphaToCoverage===!1,alphaMap:De,alphaTest:xe,alphaHash:je,combine:M.combine,mapUv:Re&&m(M.map.channel),aoMapUv:Ke&&m(M.aoMap.channel),lightMapUv:Ze&&m(M.lightMap.channel),bumpMapUv:Jt&&m(M.bumpMap.channel),normalMapUv:Lt&&m(M.normalMap.channel),displacementMapUv:xi&&m(M.displacementMap.channel),emissiveMapUv:oe&&m(M.emissiveMap.channel),metalnessMapUv:Gi&&m(M.metalnessMap.channel),roughnessMapUv:ti&&m(M.roughnessMap.channel),anisotropyMapUv:Le&&m(M.anisotropyMap.channel),clearcoatMapUv:Ge&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:et&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:Ce&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:Me&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:Tt&&m(M.sheenRoughnessMap.channel),specularMapUv:nt&&m(M.specularMap.channel),specularColorMapUv:$e&&m(M.specularColorMap.channel),specularIntensityMapUv:Wt&&m(M.specularIntensityMap.channel),transmissionMapUv:qt&&m(M.transmissionMap.channel),thicknessMapUv:re&&m(M.thicknessMap.channel),alphaMapUv:De&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Lt||Fi),vertexNormals:!!N.attributes.normal,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!N.attributes.color&&N.attributes.color.itemSize===4,pointsUvs:w.isPoints===!0&&!!N.attributes.uv&&(Re||De),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Lt===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:fe,skinning:w.isSkinnedMesh===!0,morphTargets:N.morphAttributes.position!==void 0,morphNormals:N.morphAttributes.normal!==void 0,morphColors:N.morphAttributes.color!==void 0,morphTargetsCount:Y,morphTextureStride:ve,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numLightProbeGrids:G.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:we,decodeVideoTexture:Re&&M.map.isVideoTexture===!0&&ai.getTransfer(M.map.colorSpace)===Ki,decodeVideoTextureEmissive:oe&&M.emissiveMap.isVideoTexture===!0&&ai.getTransfer(M.emissiveMap.colorSpace)===Ki,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ta,flipSided:M.side===Sn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:qe&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(qe&&M.extensions.multiDraw===!0||de)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return At.vertexUv1s=l.has(1),At.vertexUv2s=l.has(2),At.vertexUv3s=l.has(3),l.clear(),At}function p(M){let y=[];if(M.shaderID?y.push(M.shaderID):(y.push(M.customVertexShaderID),y.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)y.push(C),y.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(g(y,M),v(y,M),y.push(n.outputColorSpace)),y.push(M.customProgramCacheKey),y.join()}function g(M,y){M.push(y.precision),M.push(y.outputColorSpace),M.push(y.envMapMode),M.push(y.envMapCubeUVHeight),M.push(y.mapUv),M.push(y.alphaMapUv),M.push(y.lightMapUv),M.push(y.aoMapUv),M.push(y.bumpMapUv),M.push(y.normalMapUv),M.push(y.displacementMapUv),M.push(y.emissiveMapUv),M.push(y.metalnessMapUv),M.push(y.roughnessMapUv),M.push(y.anisotropyMapUv),M.push(y.clearcoatMapUv),M.push(y.clearcoatNormalMapUv),M.push(y.clearcoatRoughnessMapUv),M.push(y.iridescenceMapUv),M.push(y.iridescenceThicknessMapUv),M.push(y.sheenColorMapUv),M.push(y.sheenRoughnessMapUv),M.push(y.specularMapUv),M.push(y.specularColorMapUv),M.push(y.specularIntensityMapUv),M.push(y.transmissionMapUv),M.push(y.thicknessMapUv),M.push(y.combine),M.push(y.fogExp2),M.push(y.sizeAttenuation),M.push(y.morphTargetsCount),M.push(y.morphAttributeCount),M.push(y.numDirLights),M.push(y.numPointLights),M.push(y.numSpotLights),M.push(y.numSpotLightMaps),M.push(y.numHemiLights),M.push(y.numRectAreaLights),M.push(y.numDirLightShadows),M.push(y.numPointLightShadows),M.push(y.numSpotLightShadows),M.push(y.numSpotLightShadowsWithMaps),M.push(y.numLightProbes),M.push(y.shadowMapType),M.push(y.toneMapping),M.push(y.numClippingPlanes),M.push(y.numClipIntersection),M.push(y.depthPacking)}function v(M,y){a.disableAll(),y.instancing&&a.enable(0),y.instancingColor&&a.enable(1),y.instancingMorph&&a.enable(2),y.matcap&&a.enable(3),y.envMap&&a.enable(4),y.normalMapObjectSpace&&a.enable(5),y.normalMapTangentSpace&&a.enable(6),y.clearcoat&&a.enable(7),y.iridescence&&a.enable(8),y.alphaTest&&a.enable(9),y.vertexColors&&a.enable(10),y.vertexAlphas&&a.enable(11),y.vertexUv1s&&a.enable(12),y.vertexUv2s&&a.enable(13),y.vertexUv3s&&a.enable(14),y.vertexTangents&&a.enable(15),y.anisotropy&&a.enable(16),y.alphaHash&&a.enable(17),y.batching&&a.enable(18),y.dispersion&&a.enable(19),y.batchingColor&&a.enable(20),y.gradientMap&&a.enable(21),y.packedNormalMap&&a.enable(22),y.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),y.fog&&a.enable(0),y.useFog&&a.enable(1),y.flatShading&&a.enable(2),y.logarithmicDepthBuffer&&a.enable(3),y.reversedDepthBuffer&&a.enable(4),y.skinning&&a.enable(5),y.morphTargets&&a.enable(6),y.morphNormals&&a.enable(7),y.morphColors&&a.enable(8),y.premultipliedAlpha&&a.enable(9),y.shadowMapEnabled&&a.enable(10),y.doubleSided&&a.enable(11),y.flipSided&&a.enable(12),y.useDepthPacking&&a.enable(13),y.dithering&&a.enable(14),y.transmission&&a.enable(15),y.sheen&&a.enable(16),y.opaque&&a.enable(17),y.pointsUvs&&a.enable(18),y.decodeVideoTexture&&a.enable(19),y.decodeVideoTextureEmissive&&a.enable(20),y.alphaToCoverage&&a.enable(21),y.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function x(M){let y=u[M.type],C;if(y){let L=el[y];C=K3.clone(L.uniforms)}else C=M.uniforms;return C}function S(M,y){let C=f.get(y);return C!==void 0?++C.usedTimes:(C=new ose(n,y,M,r),c.push(C),f.set(y,C)),C}function E(M){if(--M.usedTimes===0){let y=c.indexOf(M);c[y]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function T(M){o.remove(M)}function R(){o.dispose()}return{getParameters:_,getProgramCacheKey:p,getUniforms:x,acquireProgram:S,releaseProgram:E,releaseShaderCache:T,programs:c,dispose:R}}function dse(){let n=new WeakMap;function e(a){return n.has(a)}function t(a){let o=n.get(a);return o===void 0&&(o={},n.set(a,o)),o}function i(a){n.delete(a)}function r(a,o,l){n.get(a)[o]=l}function s(){n=new WeakMap}return{has:e,get:t,remove:i,update:r,dispose:s}}function hse(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.material.id!==e.material.id?n.material.id-e.material.id:n.materialVariant!==e.materialVariant?n.materialVariant-e.materialVariant:n.z!==e.z?n.z-e.z:n.id-e.id}function uB(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.z!==e.z?e.z-n.z:n.id-e.id}function mB(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(h){let u=0;return h.isInstancedMesh&&(u+=2),h.isSkinnedMesh&&(u+=1),u}function o(h,u,m,_,p,g){let v=n[e];return v===void 0?(v={id:h.id,object:h,geometry:u,material:m,materialVariant:a(h),groupOrder:_,renderOrder:h.renderOrder,z:p,group:g},n[e]=v):(v.id=h.id,v.object=h,v.geometry=u,v.material=m,v.materialVariant=a(h),v.groupOrder=_,v.renderOrder=h.renderOrder,v.z=p,v.group=g),e++,v}function l(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(h,u){t.length>1&&t.sort(h||hse),i.length>1&&i.sort(u||uB),r.length>1&&r.sort(u||uB)}function d(){for(let h=e,u=n.length;h=s.length?(a=new mB,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function mse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new se,color:new ft};break;case"SpotLight":t={position:new se,direction:new se,color:new ft,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new se,color:new ft,distance:0,decay:0};break;case"HemisphereLight":t={direction:new se,skyColor:new ft,groundColor:new ft};break;case"RectAreaLight":t={color:new ft,position:new se,halfWidth:new se,halfHeight:new se};break}return n[e.id]=t,t}}}function pse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Mt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function gse(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function vse(n){let e=new mse,t=pse(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)i.probe.push(new se);let r=new se,s=new oi,a=new oi;function o(c){let f=0,d=0,h=0;for(let y=0;y<9;y++)i.probe[y].set(0,0,0);let u=0,m=0,_=0,p=0,g=0,v=0,x=0,S=0,E=0,T=0,R=0;c.sort(gse);for(let y=0,C=c.length;y0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=pt.LTC_FLOAT_1,i.rectAreaLTC2=pt.LTC_FLOAT_2):(i.rectAreaLTC1=pt.LTC_HALF_1,i.rectAreaLTC2=pt.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=h;let M=i.hash;(M.directionalLength!==u||M.pointLength!==m||M.spotLength!==_||M.rectAreaLength!==p||M.hemiLength!==g||M.numDirectionalShadows!==v||M.numPointShadows!==x||M.numSpotShadows!==S||M.numSpotMaps!==E||M.numLightProbes!==R)&&(i.directional.length=u,i.spot.length=_,i.rectArea.length=p,i.point.length=m,i.hemi.length=g,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=x,i.pointShadowMap.length=x,i.spotShadow.length=S,i.spotShadowMap.length=S,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=x,i.spotLightMatrix.length=S+E-T,i.spotLightMap.length=E,i.numSpotLightShadowsWithMaps=T,i.numLightProbes=R,M.directionalLength=u,M.pointLength=m,M.spotLength=_,M.rectAreaLength=p,M.hemiLength=g,M.numDirectionalShadows=v,M.numPointShadows=x,M.numSpotShadows=S,M.numSpotMaps=E,M.numLightProbes=R,i.version=_se++)}function l(c,f){let d=0,h=0,u=0,m=0,_=0,p=f.matrixWorldInverse;for(let g=0,v=c.length;g=a.length?(o=new pB(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function Rse(n,e,t){let i=new xu,r=new Mt,s=new Mt,a=new ir,o=new rS,l=new nS,c={},f=t.maxTextureSize,d={[Qs]:Sn,[Sn]:Qs,[Ta]:Ta},h=new Js({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Mt},radius:{value:4}},vertexShader:Sse,fragmentShader:Tse}),u=h.clone();u.defines.HORIZONTAL_PASS=1;let m=new Xi;m.setAttribute("position",new hr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new li(m,h),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=F_;let g=this.type;this.render=function(T,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||T.length===0)return;this.type===pS&&(yt("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=F_);let y=n.getRenderTarget(),C=n.getActiveCubeFace(),L=n.getActiveMipmapLevel(),w=n.state;w.setBlending(Qo),w.buffers.depth.getReversed()===!0?w.buffers.color.setClear(0,0,0,0):w.buffers.color.setClear(1,1,1,1),w.buffers.depth.setTest(!0),w.setScissorTest(!1);let G=g!==this.type;G&&R.traverse(function(O){O.material&&(Array.isArray(O.material)?O.material.forEach(N=>N.needsUpdate=!0):O.material.needsUpdate=!0)});for(let O=0,N=T.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/J.x),r.x=s.x*J.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/J.y),r.y=s.y*J.y,V.mapSize.y=s.y));let Q=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=Q,V.map===null||G===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===Pu){if(B.isPointLight){yt("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new $s(r.x,r.y,{format:af,type:$o,minFilter:wr,magFilter:wr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new Ul(r.x,r.y,ea),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=Ho,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Nr,V.map.depthTexture.magFilter=Nr}else B.isPointLight?(V.map=new lT(r.x),V.map.depthTexture=new tS(r.x,ao)):(V.map=new $s(r.x,r.y),V.map.depthTexture=new Ul(r.x,r.y,ao)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=Ho,this.type===F_?(V.map.depthTexture.compareFunction=Q?nT:rT,V.map.depthTexture.minFilter=wr,V.map.depthTexture.magFilter=wr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Nr,V.map.depthTexture.magFilter=Nr);V.camera.updateProjectionMatrix()}let te=V.map.isWebGLCubeRenderTarget?6:1;for(let X=0;X0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,G=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[G];N===void 0&&(N=C.clone(),O[G]=N,R.addEventListener("dispose",E)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,y===Pu?C.side=R.shadowSide!==null?R.shadowSide:R.side:C.side=R.shadowSide!==null?R.shadowSide:d[R.side],C.alphaMap=R.alphaMap,C.alphaTest=R.alphaToCoverage===!0?.5:R.alphaTest,C.map=R.map,C.clipShadows=R.clipShadows,C.clippingPlanes=R.clippingPlanes,C.clipIntersection=R.clipIntersection,C.displacementMap=R.displacementMap,C.displacementScale=R.displacementScale,C.displacementBias=R.displacementBias,C.wireframeLinewidth=R.wireframeLinewidth,C.linewidth=R.linewidth,M.isPointLight===!0&&C.isMeshDistanceMaterial===!0){let w=n.properties.get(C);w.light=M}return C}function S(T,R,M,y,C){if(T.visible===!1)return;if(T.layers.test(R.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&C===Pu)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,T.matrixWorld);let G=e.update(T),O=T.material;if(Array.isArray(O)){let N=G.groups;for(let B=0,V=N.length;B=1):Q.indexOf("OpenGL ES")!==-1&&(J=parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]),V=J>=2);let te=null,X={},Y=n.getParameter(n.SCISSOR_BOX),ve=n.getParameter(n.VIEWPORT),Ee=new ir().fromArray(Y),Ue=new ir().fromArray(ve);function ae(K,De,xe,je){let qe=new Uint8Array(4),we=n.createTexture();n.bindTexture(K,we),n.texParameteri(K,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(K,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let At=0;Atue||Ge.height>ue)&&(Le=ue/Math.max(Ge.width,Ge.height)),Le<1)if(typeof HTMLImageElement!="undefined"&&z instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&z instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&z instanceof ImageBitmap||typeof VideoFrame!="undefined"&&z instanceof VideoFrame){let et=Math.floor(Le*Ge.width),rt=Math.floor(Le*Ge.height);h===void 0&&(h=_(et,rt));let Ce=U?_(et,rt):h;return Ce.width=et,Ce.height=rt,Ce.getContext("2d").drawImage(z,0,0,et,rt),yt("WebGLRenderer: Texture has been resized from ("+Ge.width+"x"+Ge.height+") to ("+et+"x"+rt+")."),Ce}else return"data"in z&&yt("WebGLRenderer: Image in DataTexture is too big ("+Ge.width+"x"+Ge.height+")."),z;return z}function g(z){return z.generateMipmaps}function v(z){n.generateMipmap(z)}function x(z){return z.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:z.isWebGL3DRenderTarget?n.TEXTURE_3D:z.isWebGLArrayRenderTarget||z.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function S(z,U,ue,Le,Ge,et=!1){if(z!==null){if(n[z]!==void 0)return n[z];yt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+z+"'")}let rt;Le&&(rt=e.get("EXT_texture_norm16"),rt||yt("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let Ce=U;if(U===n.RED&&(ue===n.FLOAT&&(Ce=n.R32F),ue===n.HALF_FLOAT&&(Ce=n.R16F),ue===n.UNSIGNED_BYTE&&(Ce=n.R8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.R16_EXT),ue===n.SHORT&&rt&&(Ce=rt.R16_SNORM_EXT)),U===n.RED_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.R8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.R16UI),ue===n.UNSIGNED_INT&&(Ce=n.R32UI),ue===n.BYTE&&(Ce=n.R8I),ue===n.SHORT&&(Ce=n.R16I),ue===n.INT&&(Ce=n.R32I)),U===n.RG&&(ue===n.FLOAT&&(Ce=n.RG32F),ue===n.HALF_FLOAT&&(Ce=n.RG16F),ue===n.UNSIGNED_BYTE&&(Ce=n.RG8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RG16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RG8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RG16UI),ue===n.UNSIGNED_INT&&(Ce=n.RG32UI),ue===n.BYTE&&(Ce=n.RG8I),ue===n.SHORT&&(Ce=n.RG16I),ue===n.INT&&(Ce=n.RG32I)),U===n.RGB_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RGB8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RGB16UI),ue===n.UNSIGNED_INT&&(Ce=n.RGB32UI),ue===n.BYTE&&(Ce=n.RGB8I),ue===n.SHORT&&(Ce=n.RGB16I),ue===n.INT&&(Ce=n.RGB32I)),U===n.RGBA_INTEGER&&(ue===n.UNSIGNED_BYTE&&(Ce=n.RGBA8UI),ue===n.UNSIGNED_SHORT&&(Ce=n.RGBA16UI),ue===n.UNSIGNED_INT&&(Ce=n.RGBA32UI),ue===n.BYTE&&(Ce=n.RGBA8I),ue===n.SHORT&&(Ce=n.RGBA16I),ue===n.INT&&(Ce=n.RGBA32I)),U===n.RGB&&(ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RGB16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RGB16_SNORM_EXT),ue===n.UNSIGNED_INT_5_9_9_9_REV&&(Ce=n.RGB9_E5),ue===n.UNSIGNED_INT_10F_11F_11F_REV&&(Ce=n.R11F_G11F_B10F)),U===n.RGBA){let Me=et?m_:ai.getTransfer(Ge);ue===n.FLOAT&&(Ce=n.RGBA32F),ue===n.HALF_FLOAT&&(Ce=n.RGBA16F),ue===n.UNSIGNED_BYTE&&(Ce=Me===Ki?n.SRGB8_ALPHA8:n.RGBA8),ue===n.UNSIGNED_SHORT&&rt&&(Ce=rt.RGBA16_EXT),ue===n.SHORT&&rt&&(Ce=rt.RGBA16_SNORM_EXT),ue===n.UNSIGNED_SHORT_4_4_4_4&&(Ce=n.RGBA4),ue===n.UNSIGNED_SHORT_5_5_5_1&&(Ce=n.RGB5_A1)}return(Ce===n.R16F||Ce===n.R32F||Ce===n.RG16F||Ce===n.RG32F||Ce===n.RGBA16F||Ce===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Ce}function E(z,U){let ue;return z?U===null||U===ao||U===Ou?ue=n.DEPTH24_STENCIL8:U===ea?ue=n.DEPTH32F_STENCIL8:U===Lu&&(ue=n.DEPTH24_STENCIL8,yt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===ao||U===Ou?ue=n.DEPTH_COMPONENT24:U===ea?ue=n.DEPTH_COMPONENT32F:U===Lu&&(ue=n.DEPTH_COMPONENT16),ue}function T(z,U){return g(z)===!0||z.isFramebufferTexture&&z.minFilter!==Nr&&z.minFilter!==wr?Math.log2(Math.max(U.width,U.height))+1:z.mipmaps!==void 0&&z.mipmaps.length>0?z.mipmaps.length:z.isCompressedTexture&&Array.isArray(z.image)?U.mipmaps.length:1}function R(z){let U=z.target;U.removeEventListener("dispose",R),y(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(z){let U=z.target;U.removeEventListener("dispose",M),L(U)}function y(z){let U=i.get(z);if(U.__webglInit===void 0)return;let ue=z.source,Le=u.get(ue);if(Le){let Ge=Le[U.__cacheKey];Ge.usedTimes--,Ge.usedTimes===0&&C(z),Object.keys(Le).length===0&&u.delete(ue)}i.remove(z)}function C(z){let U=i.get(z);n.deleteTexture(U.__webglTexture);let ue=z.source,Le=u.get(ue);delete Le[U.__cacheKey],a.memory.textures--}function L(z){let U=i.get(z);if(z.depthTexture&&(z.depthTexture.dispose(),i.remove(z.depthTexture)),z.isWebGLCubeRenderTarget)for(let Le=0;Le<6;Le++){if(Array.isArray(U.__webglFramebuffer[Le]))for(let Ge=0;Ge=r.maxTextures&&yt("WebGLTextures: Trying to use "+z+" texture units while this GPU supports only "+r.maxTextures),w+=1,z}function V(z){let U=[];return U.push(z.wrapS),U.push(z.wrapT),U.push(z.wrapR||0),U.push(z.magFilter),U.push(z.minFilter),U.push(z.anisotropy),U.push(z.internalFormat),U.push(z.format),U.push(z.type),U.push(z.generateMipmaps),U.push(z.premultiplyAlpha),U.push(z.flipY),U.push(z.unpackAlignment),U.push(z.colorSpace),U.join()}function J(z,U){let ue=i.get(z);if(z.isVideoTexture&&Fi(z),z.isRenderTargetTexture===!1&&z.isExternalTexture!==!0&&z.version>0&&ue.__version!==z.version){let Le=z.image;if(Le===null)yt("WebGLRenderer: Texture marked for update but no image data found.");else if(Le.complete===!1)yt("WebGLRenderer: Texture marked for update but image is incomplete");else{fe(ue,z,U);return}}else z.isExternalTexture&&(ue.__webglTexture=z.sourceTexture?z.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,ue.__webglTexture,n.TEXTURE0+U)}function Q(z,U){let ue=i.get(z);if(z.isRenderTargetTexture===!1&&z.version>0&&ue.__version!==z.version){fe(ue,z,U);return}else z.isExternalTexture&&(ue.__webglTexture=z.sourceTexture?z.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,ue.__webglTexture,n.TEXTURE0+U)}function te(z,U){let ue=i.get(z);if(z.isRenderTargetTexture===!1&&z.version>0&&ue.__version!==z.version){fe(ue,z,U);return}t.bindTexture(n.TEXTURE_3D,ue.__webglTexture,n.TEXTURE0+U)}function X(z,U){let ue=i.get(z);if(z.isCubeDepthTexture!==!0&&z.version>0&&ue.__version!==z.version){Pe(ue,z,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,ue.__webglTexture,n.TEXTURE0+U)}let Y={[Wo]:n.REPEAT,[Ea]:n.CLAMP_TO_EDGE,[uu]:n.MIRRORED_REPEAT},ve={[Nr]:n.NEAREST,[vS]:n.NEAREST_MIPMAP_NEAREST,[Bd]:n.NEAREST_MIPMAP_LINEAR,[wr]:n.LINEAR,[Du]:n.LINEAR_MIPMAP_NEAREST,[so]:n.LINEAR_MIPMAP_LINEAR},Ee={[w3]:n.NEVER,[G3]:n.ALWAYS,[F3]:n.LESS,[rT]:n.LEQUAL,[B3]:n.EQUAL,[nT]:n.GEQUAL,[U3]:n.GREATER,[V3]:n.NOTEQUAL};function Ue(z,U){if(U.type===ea&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===wr||U.magFilter===Du||U.magFilter===Bd||U.magFilter===so||U.minFilter===wr||U.minFilter===Du||U.minFilter===Bd||U.minFilter===so)&&yt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(z,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(z,n.TEXTURE_WRAP_T,Y[U.wrapT]),(z===n.TEXTURE_3D||z===n.TEXTURE_2D_ARRAY)&&n.texParameteri(z,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(z,n.TEXTURE_MAG_FILTER,ve[U.magFilter]),n.texParameteri(z,n.TEXTURE_MIN_FILTER,ve[U.minFilter]),U.compareFunction&&(n.texParameteri(z,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(z,n.TEXTURE_COMPARE_FUNC,Ee[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Nr||U.minFilter!==Bd&&U.minFilter!==so||U.type===ea&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let ue=e.get("EXT_texture_filter_anisotropic");n.texParameterf(z,ue.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function ae(z,U){let ue=!1;z.__webglInit===void 0&&(z.__webglInit=!0,U.addEventListener("dispose",R));let Le=U.source,Ge=u.get(Le);Ge===void 0&&(Ge={},u.set(Le,Ge));let et=V(U);if(et!==z.__cacheKey){Ge[et]===void 0&&(Ge[et]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,ue=!0),Ge[et].usedTimes++;let rt=Ge[z.__cacheKey];rt!==void 0&&(Ge[z.__cacheKey].usedTimes--,rt.usedTimes===0&&C(U)),z.__cacheKey=et,z.__webglTexture=Ge[et].texture}return ue}function me(z,U,ue){return Math.floor(Math.floor(z/ue)/U)}function ne(z,U,ue,Le){let et=z.updateRanges;if(et.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,ue,Le,U.data);else{et.sort((Tt,nt)=>Tt.start-nt.start);let rt=0;for(let Tt=1;Tt0){qt&&re&&t.texStorage2D(n.TEXTURE_2D,De,nt,Wt[0].width,Wt[0].height);for(let xe=0,je=Wt.length;xe0){let qe=_I($e.width,$e.height,U.format,U.type);for(let we of U.layerUpdates){let At=$e.data.subarray(we*qe/$e.data.BYTES_PER_ELEMENT,(we+1)*qe/$e.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,we,$e.width,$e.height,1,ct,At)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,0,$e.width,$e.height,Me.depth,ct,$e.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,xe,nt,$e.width,$e.height,Me.depth,0,$e.data,0,0);else yt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else qt?K&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,xe,0,0,0,$e.width,$e.height,Me.depth,ct,Tt,$e.data):t.texImage3D(n.TEXTURE_2D_ARRAY,xe,nt,$e.width,$e.height,Me.depth,0,ct,Tt,$e.data)}else{qt&&re&&t.texStorage2D(n.TEXTURE_2D,De,nt,Wt[0].width,Wt[0].height);for(let xe=0,je=Wt.length;xe0){let xe=_I(Me.width,Me.height,U.format,U.type);for(let je of U.layerUpdates){let qe=Me.data.subarray(je*xe/Me.data.BYTES_PER_ELEMENT,(je+1)*xe/Me.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,je,Me.width,Me.height,1,ct,Tt,qe)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Me.width,Me.height,Me.depth,ct,Tt,Me.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,nt,Me.width,Me.height,Me.depth,0,ct,Tt,Me.data);else if(U.isData3DTexture)qt?(re&&t.texStorage3D(n.TEXTURE_3D,De,nt,Me.width,Me.height,Me.depth),K&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Me.width,Me.height,Me.depth,ct,Tt,Me.data)):t.texImage3D(n.TEXTURE_3D,0,nt,Me.width,Me.height,Me.depth,0,ct,Tt,Me.data);else if(U.isFramebufferTexture){if(re)if(qt)t.texStorage2D(n.TEXTURE_2D,De,nt,Me.width,Me.height);else{let xe=Me.width,je=Me.height;for(let qe=0;qe>=1,je>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let xe=n.canvas;if(xe.hasAttribute("layoutsubtree")||xe.setAttribute("layoutsubtree","true"),Me.parentNode!==xe){xe.appendChild(Me),d.add(U),xe.onpaint=Zt=>{let nr=Zt.changedElements;for(let vi of d)nr.includes(vi.image)&&(vi.needsUpdate=!0)},xe.requestPaint();return}let je=0,qe=n.RGBA,we=n.RGBA,At=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,je,qe,we,At,Me),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)}}else if(Wt.length>0){if(qt&&re){let xe=Di(Wt[0]);t.texStorage2D(n.TEXTURE_2D,De,nt,xe.width,xe.height)}for(let xe=0,je=Wt.length;xe0&&je++;let we=Di(nt[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,je,re,we.width,we.height)}for(let we=0;we<6;we++)if(Tt){K?xe&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+we,0,0,0,nt[we].width,nt[we].height,Wt,qt,nt[we].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+we,0,re,nt[we].width,nt[we].height,0,Wt,qt,nt[we].data);for(let At=0;At>et),$e=Math.max(1,U.height>>et);Ge===n.TEXTURE_3D||Ge===n.TEXTURE_2D_ARRAY?t.texImage3D(Ge,et,Me,nt,$e,U.depth,0,rt,Ce,null):t.texImage2D(Ge,et,Me,nt,$e,0,rt,Ce,null)}t.bindFramebuffer(n.FRAMEBUFFER,z),ti(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,Le,Ge,Tt.__webglTexture,0,Gi(U)):(Ge===n.TEXTURE_2D||Ge>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ge<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Le,Ge,Tt.__webglTexture,et),t.bindFramebuffer(n.FRAMEBUFFER,null)}function Re(z,U,ue){if(n.bindRenderbuffer(n.RENDERBUFFER,z),U.depthBuffer){let Le=U.depthTexture,Ge=Le&&Le.isDepthTexture?Le.type:null,et=E(U.stencilBuffer,Ge),rt=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;ti(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Gi(U),et,U.width,U.height):ue?n.renderbufferStorageMultisample(n.RENDERBUFFER,Gi(U),et,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,et,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,rt,n.RENDERBUFFER,z)}else{let Le=U.textures;for(let Ge=0;Ge{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,Le.removeEventListener("dispose",Ge)};Le.addEventListener("dispose",Ge),U.__depthDisposeCallback=Ge}U.__boundDepthTexture=Le}if(z.depthTexture&&!U.__autoAllocateDepthBuffer)if(ue)for(let Le=0;Le<6;Le++)Ye(U.__webglFramebuffer[Le],z,Le);else{let Le=z.texture.mipmaps;Le&&Le.length>0?Ye(U.__webglFramebuffer[0],z,0):Ye(U.__webglFramebuffer,z,0)}else if(ue){U.__webglDepthbuffer=[];for(let Le=0;Le<6;Le++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[Le]),U.__webglDepthbuffer[Le]===void 0)U.__webglDepthbuffer[Le]=n.createRenderbuffer(),Re(U.__webglDepthbuffer[Le],z,!1);else{let Ge=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer[Le];n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ge,n.RENDERBUFFER,et)}}else{let Le=z.texture.mipmaps;if(Le&&Le.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),Re(U.__webglDepthbuffer,z,!1);else{let Ge=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ge,n.RENDERBUFFER,et)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ke(z,U,ue){let Le=i.get(z);U!==void 0&&de(Le.__webglFramebuffer,z,z.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),ue!==void 0&&Et(z)}function Ze(z){let U=z.texture,ue=i.get(z),Le=i.get(U);z.addEventListener("dispose",M);let Ge=z.textures,et=z.isWebGLCubeRenderTarget===!0,rt=Ge.length>1;if(rt||(Le.__webglTexture===void 0&&(Le.__webglTexture=n.createTexture()),Le.__version=U.version,a.memory.textures++),et){ue.__webglFramebuffer=[];for(let Ce=0;Ce<6;Ce++)if(U.mipmaps&&U.mipmaps.length>0){ue.__webglFramebuffer[Ce]=[];for(let Me=0;Me0){ue.__webglFramebuffer=[];for(let Ce=0;Ce0&&ti(z)===!1){ue.__webglMultisampledFramebuffer=n.createFramebuffer(),ue.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,ue.__webglMultisampledFramebuffer);for(let Ce=0;Ce0)for(let Me=0;Me0)for(let Me=0;Me0){if(ti(z)===!1){let U=z.textures,ue=z.width,Le=z.height,Ge=n.COLOR_BUFFER_BIT,et=z.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,rt=i.get(z),Ce=U.length>1;if(Ce)for(let ct=0;ct0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,rt.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,rt.__webglFramebuffer);for(let ct=0;ct0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&U.__useRenderToTexture!==!1}function Fi(z){let U=a.render.frame;f.get(z)!==U&&(f.set(z,U),z.update())}function ot(z,U){let ue=z.colorSpace,Le=z.format,Ge=z.type;return z.isCompressedTexture===!0||z.isVideoTexture===!0||ue!==Jn&&ue!==Hl&&(ai.getTransfer(ue)===Ki?(Le!==ta||Ge!==bs)&&yt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Bt("WebGLTextures: Unsupported texture color space:",ue)),U}function Di(z){return typeof HTMLImageElement!="undefined"&&z instanceof HTMLImageElement?(c.width=z.naturalWidth||z.width,c.height=z.naturalHeight||z.height):typeof VideoFrame!="undefined"&&z instanceof VideoFrame?(c.width=z.displayWidth,c.height=z.displayHeight):(c.width=z.width,c.height=z.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=G,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=J,this.setTexture2DArray=Q,this.setTexture3D=te,this.setTextureCube=X,this.rebindTextures=Ke,this.setupRenderTarget=Ze,this.updateRenderTargetMipmap=Jt,this.updateMultisampleRenderTarget=oe,this.setupDepthRenderbuffer=Et,this.setupFrameBufferTexture=de,this.useMultisampledRTT=ti,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function Ise(n,e){function t(i,r=Hl){let s,a=ai.getTransfer(r);if(i===bs)return n.UNSIGNED_BYTE;if(i===SS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===TS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===aI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===oI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===nI)return n.BYTE;if(i===sI)return n.SHORT;if(i===Lu)return n.UNSIGNED_SHORT;if(i===ES)return n.INT;if(i===ao)return n.UNSIGNED_INT;if(i===ea)return n.FLOAT;if(i===$o)return n.HALF_FLOAT;if(i===lI)return n.ALPHA;if(i===cI)return n.RGB;if(i===ta)return n.RGBA;if(i===Ho)return n.DEPTH_COMPONENT;if(i===sf)return n.DEPTH_STENCIL;if(i===AS)return n.RED;if(i===xS)return n.RED_INTEGER;if(i===af)return n.RG;if(i===RS)return n.RG_INTEGER;if(i===bS)return n.RGBA_INTEGER;if(i===V_||i===G_||i===k_||i===W_)if(a===Ki)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===V_)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===G_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===k_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===W_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===V_)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===G_)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===k_)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===W_)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===MS||i===IS||i===yS||i===CS)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===MS)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===IS)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===yS)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===CS)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===PS||i===DS||i===LS||i===OS||i===NS||i===H_||i===wS)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===PS||i===DS)return a===Ki?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===LS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===OS)return s.COMPRESSED_R11_EAC;if(i===NS)return s.COMPRESSED_SIGNED_R11_EAC;if(i===H_)return s.COMPRESSED_RG11_EAC;if(i===wS)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===FS||i===BS||i===US||i===VS||i===GS||i===kS||i===WS||i===HS||i===zS||i===XS||i===YS||i===KS||i===jS||i===qS)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===FS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===BS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===US)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===VS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===GS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===kS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===WS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===HS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===zS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===XS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===YS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===KS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===jS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===qS)return a===Ki?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===ZS||i===QS||i===$S)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===ZS)return a===Ki?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===QS)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===$S)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===JS||i===eT||i===z_||i===tT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===JS)return s.COMPRESSED_RED_RGTC1_EXT;if(i===eT)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===z_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===tT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Ou?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function Dse(n,e){function t(p,g){p.matrixAutoUpdate===!0&&p.updateMatrix(),g.value.copy(p.matrix)}function i(p,g){g.color.getRGB(p.fogColor.value,uI(n)),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function r(p,g,v,x,S){g.isNodeMaterial?g.uniformsNeedUpdate=!1:g.isMeshBasicMaterial?s(p,g):g.isMeshLambertMaterial?(s(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshToonMaterial?(s(p,g),d(p,g)):g.isMeshPhongMaterial?(s(p,g),f(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshStandardMaterial?(s(p,g),h(p,g),g.isMeshPhysicalMaterial&&u(p,g,S)):g.isMeshMatcapMaterial?(s(p,g),m(p,g)):g.isMeshDepthMaterial?s(p,g):g.isMeshDistanceMaterial?(s(p,g),_(p,g)):g.isMeshNormalMaterial?s(p,g):g.isLineBasicMaterial?(a(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?l(p,g,v,x):g.isSpriteMaterial?c(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.bumpMap&&(p.bumpMap.value=g.bumpMap,t(g.bumpMap,p.bumpMapTransform),p.bumpScale.value=g.bumpScale,g.side===Sn&&(p.bumpScale.value*=-1)),g.normalMap&&(p.normalMap.value=g.normalMap,t(g.normalMap,p.normalMapTransform),p.normalScale.value.copy(g.normalScale),g.side===Sn&&p.normalScale.value.negate()),g.displacementMap&&(p.displacementMap.value=g.displacementMap,t(g.displacementMap,p.displacementMapTransform),p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,p.emissiveMapTransform)),g.specularMap&&(p.specularMap.value=g.specularMap,t(g.specularMap,p.specularMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let v=e.get(g),x=v.envMap,S=v.envMapRotation;x&&(p.envMap.value=x,p.envMapRotation.value.setFromMatrix4(Pse.makeRotationFromEuler(S)).transpose(),x.isCubeTexture&&x.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(xB),p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap&&(p.lightMap.value=g.lightMap,p.lightMapIntensity.value=g.lightMapIntensity,t(g.lightMap,p.lightMapTransform)),g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,p.aoMapTransform))}function a(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform))}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function l(p,g,v,x){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*v,p.scale.value=x*.5,g.map&&(p.map.value=g.map,t(g.map,p.uvTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function c(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function f(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function d(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.metalness.value=g.metalness,g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,p.metalnessMapTransform)),p.roughness.value=g.roughness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,p.roughnessMapTransform)),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function u(p,g,v){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,p.sheenColorMapTransform)),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,p.sheenRoughnessMapTransform))),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,p.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(p.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===Sn&&p.clearcoatNormalScale.value.negate())),g.dispersion>0&&(p.dispersion.value=g.dispersion),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,p.iridescenceMapTransform)),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,p.transmissionMapTransform)),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(p.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(p.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,p.specularColorMapTransform)),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,g){g.matcap&&(p.matcap.value=g.matcap)}function _(p,g){let v=e.get(g).light;p.referencePosition.value.setFromMatrixPosition(v.matrixWorld),p.nearDistance.value=v.shadow.camera.near,p.farDistance.value=v.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function Lse(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,x){let S=x.program;i.uniformBlockBinding(v,S)}function c(v,x){let S=r[v.id];S===void 0&&(m(v),S=f(v),r[v.id]=S,v.addEventListener("dispose",p));let E=x.program;i.updateUBOMapping(v,E);let T=e.render.frame;s[v.id]!==T&&(h(v),s[v.id]=T)}function f(v){let x=d();v.__bindingPointIndex=x;let S=n.createBuffer(),E=v.__size,T=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,S),n.bufferData(n.UNIFORM_BUFFER,E,T),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,x,S),S}function d(){for(let v=0;v0&&(S+=E-T),v.__size=S,v.__cache={},this}function _(v){let x={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(x.boundary=4,x.storage=4):v.isVector2?(x.boundary=8,x.storage=8):v.isVector3||v.isColor?(x.boundary=16,x.storage=12):v.isVector4?(x.boundary=16,x.storage=16):v.isMatrix3?(x.boundary=48,x.storage=48):v.isMatrix4?(x.boundary=64,x.storage=64):v.isTexture?yt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(x.boundary=16,x.storage=v.byteLength):yt("WebGLRenderer: Unsupported uniform value type.",v),x}function p(v){let x=v.target;x.removeEventListener("dispose",p);let S=a.indexOf(x.__bindingPointIndex);a.splice(S,1),n.deleteBuffer(r[x.id]),delete r[x.id],delete s[x.id]}function g(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:g}}function Nse(){return Jo===null&&(Jo=new Au(Ose,16,16,af,$o),Jo.name="DFG_LUT",Jo.minFilter=wr,Jo.magFilter=wr,Jo.wrapS=Ea,Jo.wrapT=Ea,Jo.generateMipmaps=!1,Jo.needsUpdate=!0),Jo}var qee,Zee,Qee,$ee,Jee,ete,tte,ite,rte,nte,ste,ate,ote,lte,cte,fte,dte,hte,ute,mte,pte,_te,gte,vte,Ete,Ste,Tte,Ate,xte,Rte,bte,Mte,Ite,yte,Cte,Pte,Dte,Lte,Ote,Nte,wte,Fte,Bte,Ute,Vte,Gte,kte,Wte,Hte,zte,Xte,Yte,Kte,jte,qte,Zte,Qte,$te,Jte,eie,tie,iie,rie,nie,sie,aie,oie,lie,cie,fie,die,hie,uie,mie,pie,_ie,gie,vie,Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,Iie,yie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,Hie,zie,Xie,Yie,Kie,jie,qie,Zie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,hre,ure,mre,pre,_re,gre,vre,Ere,Sre,Tre,Are,xre,Rre,bre,Mre,Ire,yre,di,pt,el,aT,Cre,vB,of,q3,Vd,wre,K_,Z3,xI,RI,bI,MI,Fre,Uu,lT,Kre,EB,CI,SB,TB,AB,eB,tB,iB,rB,nB,PI,DI,LI,II,Bu,Fne,Bne,oB,kne,oT,Kne,jne,Zne,$ne,ese,ise,nse,lse,NI,wI,_se,Sse,Tse,Ase,xse,_B,j_,yI,yse,Cse,FI,BI,Pse,xB,Ose,Jo,cT,ts=I(()=>{AI();AI();qee=`#ifdef USE_ALPHAHASH if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; -#endif`,Xee=`#ifdef USE_ALPHAHASH +#endif`,Zee=`#ifdef USE_ALPHAHASH const float ALPHA_HASH_SCALE = 0.05; float hash2D( vec2 value ) { return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) ); @@ -392,20 +392,20 @@ Program Info Log: `+N+` : cases.z; return clamp( threshold , 1.0e-6, 1.0 ); } -#endif`,Yee=`#ifdef USE_ALPHAMAP +#endif`,Qee=`#ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; -#endif`,Kee=`#ifdef USE_ALPHAMAP +#endif`,$ee=`#ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,jee=`#ifdef USE_ALPHATEST +#endif`,Jee=`#ifdef USE_ALPHATEST #ifdef ALPHA_TO_COVERAGE diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a ); if ( diffuseColor.a == 0.0 ) discard; #else if ( diffuseColor.a < alphaTest ) discard; #endif -#endif`,qee=`#ifdef USE_ALPHATEST +#endif`,ete=`#ifdef USE_ALPHATEST uniform float alphaTest; -#endif`,Zee=`#ifdef USE_AOMAP +#endif`,tte=`#ifdef USE_AOMAP float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0; reflectedLight.indirectDiffuse *= ambientOcclusion; #if defined( USE_CLEARCOAT ) @@ -418,10 +418,10 @@ Program Info Log: `+N+` float dotNV = saturate( dot( geometryNormal, geometryViewDir ) ); reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness ); #endif -#endif`,Qee=`#ifdef USE_AOMAP +#endif`,ite=`#ifdef USE_AOMAP uniform sampler2D aoMap; uniform float aoMapIntensity; -#endif`,$ee=`#ifdef USE_BATCHING +#endif`,rte=`#ifdef USE_BATCHING #if ! defined( GL_ANGLE_multi_draw ) #define gl_DrawID _gl_DrawID uniform int _gl_DrawID; @@ -455,15 +455,15 @@ Program Info Log: `+N+` int y = j / size; return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ); } -#endif`,Jee=`#ifdef USE_BATCHING +#endif`,nte=`#ifdef USE_BATCHING mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); -#endif`,ete=`vec3 transformed = vec3( position ); +#endif`,ste=`vec3 transformed = vec3( position ); #ifdef USE_ALPHAHASH vPosition = vec3( position ); -#endif`,tte=`vec3 objectNormal = vec3( normal ); +#endif`,ate=`vec3 objectNormal = vec3( normal ); #ifdef USE_TANGENT vec3 objectTangent = vec3( tangent.xyz ); -#endif`,ite=`float G_BlinnPhong_Implicit( ) { +#endif`,ote=`float G_BlinnPhong_Implicit( ) { return 0.25; } float D_BlinnPhong( const in float shininess, const in float dotNH ) { @@ -477,7 +477,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve float G = G_BlinnPhong_Implicit( ); float D = D_BlinnPhong( shininess, dotNH ); return F * ( G * D ); -} // validated`,rte=`#ifdef USE_IRIDESCENCE +} // validated`,lte=`#ifdef USE_IRIDESCENCE const mat3 XYZ_TO_REC709 = mat3( 3.2404542, -0.9692660, 0.0556434, -1.5371385, 1.8760108, -0.2040259, @@ -540,7 +540,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve } return max( I, vec3( 0.0 ) ); } -#endif`,nte=`#ifdef USE_BUMPMAP +#endif`,cte=`#ifdef USE_BUMPMAP uniform sampler2D bumpMap; uniform float bumpScale; vec2 dHdxy_fwd() { @@ -561,7 +561,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); return normalize( abs( fDet ) * surf_norm - vGrad ); } -#endif`,ste=`#if NUM_CLIPPING_PLANES > 0 +#endif`,fte=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #ifdef ALPHA_TO_COVERAGE float distanceToPlane, distanceGradient; @@ -607,20 +607,20 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve if ( clipped ) discard; #endif #endif -#endif`,ate=`#if NUM_CLIPPING_PLANES > 0 +#endif`,dte=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,ote=`#if NUM_CLIPPING_PLANES > 0 +#endif`,hte=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,lte=`#if NUM_CLIPPING_PLANES > 0 +#endif`,ute=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,cte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) +#endif`,mte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; -#endif`,fte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) +#endif`,pte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) varying vec4 vColor; -#endif`,dte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) +#endif`,_te=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) varying vec4 vColor; -#endif`,hte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) +#endif`,gte=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) vColor = vec4( 1.0 ); #endif #ifdef USE_COLOR_ALPHA @@ -633,7 +633,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #endif #ifdef USE_BATCHING_COLOR vColor *= getBatchingColor( getIndirectIndex( gl_DrawID ) ); -#endif`,ute=`#define PI 3.141592653589793 +#endif`,vte=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -700,7 +700,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,mte=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,Ete=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -793,7 +793,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,pte=`vec3 transformedNormal = objectNormal; +#endif`,Ste=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -822,21 +822,21 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,_te=`#ifdef USE_DISPLACEMENTMAP +#endif`,Tte=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,gte=`#ifdef USE_DISPLACEMENTMAP +#endif`,Ate=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,vte=`#ifdef USE_EMISSIVEMAP +#endif`,xte=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE emissiveColor = sRGBTransferEOTF( emissiveColor ); #endif totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,Ete=`#ifdef USE_EMISSIVEMAP +#endif`,Rte=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,Ste="gl_FragColor = linearToOutputTexel( gl_FragColor );",Tte=`vec4 LinearTransferOETF( in vec4 value ) { +#endif`,bte="gl_FragColor = linearToOutputTexel( gl_FragColor );",Mte=`vec4 LinearTransferOETF( in vec4 value ) { return value; } vec4 sRGBTransferEOTF( in vec4 value ) { @@ -844,7 +844,7 @@ vec4 sRGBTransferEOTF( in vec4 value ) { } vec4 sRGBTransferOETF( in vec4 value ) { return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -}`,Ate=`#ifdef USE_ENVMAP +}`,Ite=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -871,7 +871,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif #endif -#endif`,xte=`#ifdef USE_ENVMAP +#endif`,yte=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform mat3 envMapRotation; #ifdef ENVMAP_TYPE_CUBE @@ -879,7 +879,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #else uniform sampler2D envMap; #endif -#endif`,Rte=`#ifdef USE_ENVMAP +#endif`,Cte=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -890,7 +890,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,bte=`#ifdef USE_ENVMAP +#endif`,Pte=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -901,7 +901,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,Mte=`#ifdef USE_ENVMAP +#endif`,Dte=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -918,18 +918,18 @@ vec4 sRGBTransferOETF( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,Ite=`#ifdef USE_FOG +#endif`,Lte=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,yte=`#ifdef USE_FOG +#endif`,Ote=`#ifdef USE_FOG varying float vFogDepth; -#endif`,Cte=`#ifdef USE_FOG +#endif`,Nte=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,Pte=`#ifdef USE_FOG +#endif`,wte=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -938,7 +938,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,Dte=`#ifdef USE_GRADIENTMAP +#endif`,Fte=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -950,12 +950,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,Lte=`#ifdef USE_LIGHTMAP +}`,Bte=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,Ote=`LambertMaterial material; +#endif`,Ute=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,Nte=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Vte=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -969,7 +969,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,wte=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Gte=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -1086,7 +1086,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi return irradiance; } #endif -#include `,Fte=`#ifdef USE_ENVMAP +#include `,kte=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -1119,8 +1119,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,Bte=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,Ute=`varying vec3 vViewPosition; +#endif`,Wte=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,Hte=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -1132,11 +1132,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Vte=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,zte=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,Gte=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Xte=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -1153,7 +1153,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,kte=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Yte=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb; material.diffuseContribution = diffuseColor.rgb * ( 1.0 - metalnessFactor ); material.metalness = metalnessFactor; @@ -1243,7 +1243,7 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,Wte=`uniform sampler2D dfgLUT; +#endif`,Kte=`uniform sampler2D dfgLUT; struct PhysicalMaterial { vec3 diffuseColor; vec3 diffuseContribution; @@ -1603,7 +1603,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,Hte=` +}`,jte=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1725,7 +1725,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,zte=`#if defined( RE_IndirectDiffuse ) +#endif`,qte=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1746,7 +1746,7 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,Xte=`#if defined( RE_IndirectDiffuse ) +#endif`,Zte=`#if defined( RE_IndirectDiffuse ) #if defined( LAMBERT ) || defined( PHONG ) irradiance += iblIrradiance; #endif @@ -1754,7 +1754,7 @@ IncidentLight directLight; #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,Yte=`#ifdef USE_LIGHT_PROBES_GRID +#endif`,Qte=`#ifdef USE_LIGHT_PROBES_GRID uniform highp sampler3D probesSH; uniform vec3 probesMin; uniform vec3 probesMax; @@ -1799,27 +1799,27 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { result += c8 * 0.429043 * ( x * x - y * y ); return max( result, vec3( 0.0 ) ); } -#endif`,Kte=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) +#endif`,$te=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,jte=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) +#endif`,Jte=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,qte=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER +#endif`,eie=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER varying float vFragDepth; varying float vIsPerspective; -#endif`,Zte=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER +#endif`,tie=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,Qte=`#ifdef USE_MAP +#endif`,iie=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,$te=`#ifdef USE_MAP +#endif`,rie=`#ifdef USE_MAP uniform sampler2D map; -#endif`,Jte=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,nie=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1831,7 +1831,7 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,eie=`#if defined( USE_POINTS_UV ) +#endif`,sie=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1843,19 +1843,19 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,tie=`float metalnessFactor = metalness; +#endif`,aie=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,iie=`#ifdef USE_METALNESSMAP +#endif`,oie=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,rie=`#ifdef USE_INSTANCING_MORPH +#endif`,lie=`#ifdef USE_INSTANCING_MORPH float morphTargetInfluences[ MORPHTARGETS_COUNT ]; float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; } -#endif`,nie=`#if defined( USE_MORPHCOLORS ) +#endif`,cie=`#if defined( USE_MORPHCOLORS ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1864,12 +1864,12 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,sie=`#ifdef USE_MORPHNORMALS +#endif`,fie=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; } -#endif`,aie=`#ifdef USE_MORPHTARGETS +#endif`,die=`#ifdef USE_MORPHTARGETS #ifndef USE_INSTANCING_MORPH uniform float morphTargetBaseInfluence; uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1883,12 +1883,12 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { ivec3 morphUV = ivec3( x, y, morphTargetIndex ); return texelFetch( morphTargetsTexture, morphUV, 0 ); } -#endif`,oie=`#ifdef USE_MORPHTARGETS +#endif`,hie=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; } -#endif`,lie=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,uie=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1929,7 +1929,7 @@ vec3 getLightProbeGridIrradiance( vec3 worldPos, vec3 worldNormal ) { tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,cie=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,mie=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1947,25 +1947,25 @@ vec3 nonPerturbedNormal = normal;`,cie=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,fie=`#ifndef FLAT_SHADED +#endif`,pie=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,die=`#ifndef FLAT_SHADED +#endif`,_ie=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,hie=`#ifndef FLAT_SHADED +#endif`,gie=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,uie=`#ifdef USE_NORMALMAP +#endif`,vie=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1987,13 +1987,13 @@ vec3 nonPerturbedNormal = normal;`,cie=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,mie=`#ifdef USE_CLEARCOAT +#endif`,Eie=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,pie=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,Sie=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,_ie=`#ifdef USE_CLEARCOATMAP +#endif`,Tie=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -2002,18 +2002,18 @@ vec3 nonPerturbedNormal = normal;`,cie=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,gie=`#ifdef USE_IRIDESCENCEMAP +#endif`,Aie=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,vie=`#ifdef OPAQUE +#endif`,xie=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Eie=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Rie=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -2092,9 +2092,9 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const #else return ( near * far ) / ( ( far - near ) * depth - far ); #endif -}`,Sie=`#ifdef PREMULTIPLIED_ALPHA +}`,bie=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,Tie=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,Mie=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -2102,22 +2102,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,Iie=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,xie=`#ifdef DITHERING +#endif`,yie=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,Rie=`float roughnessFactor = roughness; +#endif`,Cie=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,bie=`#ifdef USE_ROUGHNESSMAP +#endif`,Pie=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,Mie=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,Die=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -2317,7 +2317,7 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING } #endif #endif -#endif`,Iie=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,Lie=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -2358,7 +2358,7 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,yie=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,Oie=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) #ifdef HAS_NORMAL vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); #else @@ -2394,7 +2394,7 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,Cie=`float getShadowMask() { +#endif`,Nie=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -2426,12 +2426,12 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING #endif #endif return shadow; -}`,Pie=`#ifdef USE_SKINNING +}`,wie=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,Die=`#ifdef USE_SKINNING +#endif`,Fie=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2446,7 +2446,7 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,Lie=`#ifdef USE_SKINNING +#endif`,Bie=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2454,7 +2454,7 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,Oie=`#ifdef USE_SKINNING +#endif`,Uie=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2465,17 +2465,17 @@ gl_Position = projectionMatrix * mvPosition;`,Aie=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,Nie=`float specularStrength; +#endif`,Vie=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,wie=`#ifdef USE_SPECULARMAP +#endif`,Gie=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,Fie=`#if defined( TONE_MAPPING ) +#endif`,kie=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,Bie=`#ifndef saturate +#endif`,Wie=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2572,7 +2572,7 @@ vec3 NeutralToneMapping( vec3 color ) { float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); return mix( color, vec3( newPeak ), g ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,Hie=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2593,7 +2593,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,Vie=`#ifdef USE_TRANSMISSION +#endif`,zie=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2719,7 +2719,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,Gie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Xie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2789,7 +2789,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,kie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Yie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2883,7 +2883,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,Wie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Kie=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2954,7 +2954,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,Hie=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,jie=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2963,12 +2963,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Uie=`#ifdef USE_TRANSMIS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`,zie=`varying vec2 vUv; +#endif`,qie=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,Xie=`uniform sampler2D t2D; +}`,Zie=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2980,14 +2980,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,Yie=`varying vec3 vWorldDirection; +}`,Qie=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,Kie=`#ifdef ENVMAP_TYPE_CUBE +}`,$ie=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -3009,14 +3009,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,jie=`varying vec3 vWorldDirection; +}`,Jie=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,qie=`uniform samplerCube tCube; +}`,ere=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -3026,7 +3026,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,Zie=`#include +}`,tre=`#include #include #include #include @@ -3053,7 +3053,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,Qie=`#if DEPTH_PACKING == 3200 +}`,ire=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -3091,7 +3091,7 @@ void main() { #elif DEPTH_PACKING == 3203 gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); #endif -}`,$ie=`#define DISTANCE +}`,rre=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -3118,7 +3118,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,Jie=`#define DISTANCE +}`,nre=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -3141,13 +3141,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = vec4( dist, 0.0, 0.0, 1.0 ); -}`,ere=`varying vec3 vWorldDirection; +}`,sre=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,tre=`uniform sampler2D tEquirect; +}`,are=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -3156,7 +3156,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,ire=`uniform float scale; +}`,ore=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -3178,7 +3178,7 @@ void main() { #include #include #include -}`,rre=`uniform vec3 diffuse; +}`,lre=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -3206,7 +3206,7 @@ void main() { #include #include #include -}`,nre=`#include +}`,cre=`#include #include #include #include @@ -3238,7 +3238,7 @@ void main() { #include #include #include -}`,sre=`uniform vec3 diffuse; +}`,fre=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -3286,7 +3286,7 @@ void main() { #include #include #include -}`,are=`#define LAMBERT +}`,dre=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -3325,7 +3325,7 @@ void main() { #include #include #include -}`,ore=`#define LAMBERT +}`,hre=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3383,7 +3383,7 @@ void main() { #include #include #include -}`,lre=`#define MATCAP +}`,ure=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -3417,7 +3417,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,cre=`#define MATCAP +}`,mre=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3463,7 +3463,7 @@ void main() { #include #include #include -}`,fre=`#define NORMAL +}`,pre=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3496,7 +3496,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,dre=`#define NORMAL +}`,_re=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3517,7 +3517,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,hre=`#define PHONG +}`,gre=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3556,7 +3556,7 @@ void main() { #include #include #include -}`,ure=`#define PHONG +}`,vre=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3616,7 +3616,7 @@ void main() { #include #include #include -}`,mre=`#define STANDARD +}`,Ere=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3659,7 +3659,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,pre=`#define STANDARD +}`,Sre=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3784,7 +3784,7 @@ void main() { #include #include #include -}`,_re=`#define TOON +}`,Tre=`#define TOON varying vec3 vViewPosition; #include #include @@ -3821,7 +3821,7 @@ void main() { #include #include #include -}`,gre=`#define TOON +}`,Are=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3873,7 +3873,7 @@ void main() { #include #include #include -}`,vre=`uniform float size; +}`,xre=`uniform float size; uniform float scale; #include #include @@ -3904,7 +3904,7 @@ void main() { #include #include #include -}`,Ere=`uniform vec3 diffuse; +}`,Rre=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3929,7 +3929,7 @@ void main() { #include #include #include -}`,Sre=`#include +}`,bre=`#include #include #include #include @@ -3952,7 +3952,7 @@ void main() { #include #include #include -}`,Tre=`uniform vec3 color; +}`,Mre=`uniform vec3 color; uniform float opacity; #include #include @@ -3968,7 +3968,7 @@ void main() { #include #include #include -}`,Are=`uniform float rotation; +}`,Ire=`uniform float rotation; uniform vec2 center; #include #include @@ -3992,7 +3992,7 @@ void main() { #include #include #include -}`,xre=`uniform vec3 diffuse; +}`,yre=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -4017,7 +4017,7 @@ void main() { #include #include #include -}`,di={alphahash_fragment:zee,alphahash_pars_fragment:Xee,alphamap_fragment:Yee,alphamap_pars_fragment:Kee,alphatest_fragment:jee,alphatest_pars_fragment:qee,aomap_fragment:Zee,aomap_pars_fragment:Qee,batching_pars_vertex:$ee,batching_vertex:Jee,begin_vertex:ete,beginnormal_vertex:tte,bsdfs:ite,iridescence_fragment:rte,bumpmap_pars_fragment:nte,clipping_planes_fragment:ste,clipping_planes_pars_fragment:ate,clipping_planes_pars_vertex:ote,clipping_planes_vertex:lte,color_fragment:cte,color_pars_fragment:fte,color_pars_vertex:dte,color_vertex:hte,common:ute,cube_uv_reflection_fragment:mte,defaultnormal_vertex:pte,displacementmap_pars_vertex:_te,displacementmap_vertex:gte,emissivemap_fragment:vte,emissivemap_pars_fragment:Ete,colorspace_fragment:Ste,colorspace_pars_fragment:Tte,envmap_fragment:Ate,envmap_common_pars_fragment:xte,envmap_pars_fragment:Rte,envmap_pars_vertex:bte,envmap_physical_pars_fragment:Fte,envmap_vertex:Mte,fog_vertex:Ite,fog_pars_vertex:yte,fog_fragment:Cte,fog_pars_fragment:Pte,gradientmap_pars_fragment:Dte,lightmap_pars_fragment:Lte,lights_lambert_fragment:Ote,lights_lambert_pars_fragment:Nte,lights_pars_begin:wte,lights_toon_fragment:Bte,lights_toon_pars_fragment:Ute,lights_phong_fragment:Vte,lights_phong_pars_fragment:Gte,lights_physical_fragment:kte,lights_physical_pars_fragment:Wte,lights_fragment_begin:Hte,lights_fragment_maps:zte,lights_fragment_end:Xte,lightprobes_pars_fragment:Yte,logdepthbuf_fragment:Kte,logdepthbuf_pars_fragment:jte,logdepthbuf_pars_vertex:qte,logdepthbuf_vertex:Zte,map_fragment:Qte,map_pars_fragment:$te,map_particle_fragment:Jte,map_particle_pars_fragment:eie,metalnessmap_fragment:tie,metalnessmap_pars_fragment:iie,morphinstance_vertex:rie,morphcolor_vertex:nie,morphnormal_vertex:sie,morphtarget_pars_vertex:aie,morphtarget_vertex:oie,normal_fragment_begin:lie,normal_fragment_maps:cie,normal_pars_fragment:fie,normal_pars_vertex:die,normal_vertex:hie,normalmap_pars_fragment:uie,clearcoat_normal_fragment_begin:mie,clearcoat_normal_fragment_maps:pie,clearcoat_pars_fragment:_ie,iridescence_pars_fragment:gie,opaque_fragment:vie,packing:Eie,premultiplied_alpha_fragment:Sie,project_vertex:Tie,dithering_fragment:Aie,dithering_pars_fragment:xie,roughnessmap_fragment:Rie,roughnessmap_pars_fragment:bie,shadowmap_pars_fragment:Mie,shadowmap_pars_vertex:Iie,shadowmap_vertex:yie,shadowmask_pars_fragment:Cie,skinbase_vertex:Pie,skinning_pars_vertex:Die,skinning_vertex:Lie,skinnormal_vertex:Oie,specularmap_fragment:Nie,specularmap_pars_fragment:wie,tonemapping_fragment:Fie,tonemapping_pars_fragment:Bie,transmission_fragment:Uie,transmission_pars_fragment:Vie,uv_pars_fragment:Gie,uv_pars_vertex:kie,uv_vertex:Wie,worldpos_vertex:Hie,background_vert:zie,background_frag:Xie,backgroundCube_vert:Yie,backgroundCube_frag:Kie,cube_vert:jie,cube_frag:qie,depth_vert:Zie,depth_frag:Qie,distance_vert:$ie,distance_frag:Jie,equirect_vert:ere,equirect_frag:tre,linedashed_vert:ire,linedashed_frag:rre,meshbasic_vert:nre,meshbasic_frag:sre,meshlambert_vert:are,meshlambert_frag:ore,meshmatcap_vert:lre,meshmatcap_frag:cre,meshnormal_vert:fre,meshnormal_frag:dre,meshphong_vert:hre,meshphong_frag:ure,meshphysical_vert:mre,meshphysical_frag:pre,meshtoon_vert:_re,meshtoon_frag:gre,points_vert:vre,points_frag:Ere,shadow_vert:Sre,shadow_frag:Tre,sprite_vert:Are,sprite_frag:xre},pt={common:{diffuse:{value:new ft(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ii},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ii}},envmap:{envMap:{value:null},envMapRotation:{value:new ii},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ii}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ii}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ii},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ii},normalScale:{value:new Mt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ii},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ii}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ii}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ii}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ft(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new se},probesMax:{value:new se},probesResolution:{value:new se}},points:{diffuse:{value:new ft(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0},uvTransform:{value:new ii}},sprite:{diffuse:{value:new ft(16777215)},opacity:{value:1},center:{value:new Mt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ii},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0}}},el={basic:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.fog]),vertexShader:di.meshbasic_vert,fragmentShader:di.meshbasic_frag},lambert:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},envMapIntensity:{value:1}}]),vertexShader:di.meshlambert_vert,fragmentShader:di.meshlambert_frag},phong:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},specular:{value:new ft(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:di.meshphong_vert,fragmentShader:di.meshphong_frag},standard:{uniforms:On([pt.common,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.roughnessmap,pt.metalnessmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:di.meshphysical_vert,fragmentShader:di.meshphysical_frag},toon:{uniforms:On([pt.common,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.gradientmap,pt.fog,pt.lights,{emissive:{value:new ft(0)}}]),vertexShader:di.meshtoon_vert,fragmentShader:di.meshtoon_frag},matcap:{uniforms:On([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,{matcap:{value:null}}]),vertexShader:di.meshmatcap_vert,fragmentShader:di.meshmatcap_frag},points:{uniforms:On([pt.points,pt.fog]),vertexShader:di.points_vert,fragmentShader:di.points_frag},dashed:{uniforms:On([pt.common,pt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:di.linedashed_vert,fragmentShader:di.linedashed_frag},depth:{uniforms:On([pt.common,pt.displacementmap]),vertexShader:di.depth_vert,fragmentShader:di.depth_frag},normal:{uniforms:On([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,{opacity:{value:1}}]),vertexShader:di.meshnormal_vert,fragmentShader:di.meshnormal_frag},sprite:{uniforms:On([pt.sprite,pt.fog]),vertexShader:di.sprite_vert,fragmentShader:di.sprite_frag},background:{uniforms:{uvTransform:{value:new ii},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:di.background_vert,fragmentShader:di.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ii}},vertexShader:di.backgroundCube_vert,fragmentShader:di.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:di.cube_vert,fragmentShader:di.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:di.equirect_vert,fragmentShader:di.equirect_frag},distance:{uniforms:On([pt.common,pt.displacementmap,{referencePosition:{value:new se},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:di.distance_vert,fragmentShader:di.distance_frag},shadow:{uniforms:On([pt.lights,pt.fog,{color:{value:new ft(0)},opacity:{value:1}}]),vertexShader:di.shadow_vert,fragmentShader:di.shadow_frag}};el.physical={uniforms:On([el.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ii},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ii},clearcoatNormalScale:{value:new Mt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ii},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ii},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ii},sheen:{value:0},sheenColor:{value:new ft(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ii},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ii},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ii},transmissionSamplerSize:{value:new Mt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ii},attenuationDistance:{value:0},attenuationColor:{value:new ft(0)},specularColor:{value:new ft(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ii},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ii},anisotropyVector:{value:new Mt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ii}}]),vertexShader:di.meshphysical_vert,fragmentShader:di.meshphysical_frag};sT={r:0,b:0,g:0},Rre=new oi,mB=new ii;mB.set(-1,0,0,0,1,0,0,0,1);of=4,X3=[.125,.215,.35,.446,.526,.582],Vd=20,Pre=256,K_=new xs,Y3=new ft,SI=null,TI=0,AI=0,xI=!1,Dre=new se,Uu=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,i=.1,r=100,s={}){let{size:a=256,position:o=Dre}=s;SI=this._renderer.getRenderTarget(),TI=this._renderer.getActiveCubeFace(),AI=this._renderer.getActiveMipmapLevel(),xI=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,i,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=q3(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=j3(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?E:0,E,E),d.setRenderTarget(r),g&&d.render(_,l),d.render(e,l)}d.toneMapping=u,d.autoClear=h,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===nf||e.mapping===Fd;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=q3()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=j3());let s=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=s;let o=s.uniforms;o.envMap.value=e;let l=this._cubeSize;Fu(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,K_)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-of?i-m+of:0),g=4*(this._cubeSize-_);l.envMap.value=e.texture,l.roughness.value=u,l.mipInt.value=m-t,Fu(s,p,g,3*_,2*_),r.setRenderTarget(s),r.render(o,K_),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,Fu(e,p,g,3*_,2*_),r.setRenderTarget(e),r.render(o,K_)}_blur(e,t,i,r,s){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,i,r,"latitudinal",s),this._halfBlur(a,e,i,i,r,"longitudinal",s)}_halfBlur(e,t,i,r,s,a,o){let l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&Bt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let h=c.uniforms,u=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*u):2*Math.PI/(2*Vd-1),_=s/m,p=isFinite(s)?1+Math.floor(f*_):Vd;p>Vd&&yt(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Vd}`);let g=[],v=0;for(let R=0;Rx-of?r-x+of:0),T=4*(this._cubeSize-S);Fu(t,E,T,3*S,2*S),l.setRenderTarget(t),l.render(d,K_)}};oT=class extends $s{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new x_(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` +}`,di={alphahash_fragment:qee,alphahash_pars_fragment:Zee,alphamap_fragment:Qee,alphamap_pars_fragment:$ee,alphatest_fragment:Jee,alphatest_pars_fragment:ete,aomap_fragment:tte,aomap_pars_fragment:ite,batching_pars_vertex:rte,batching_vertex:nte,begin_vertex:ste,beginnormal_vertex:ate,bsdfs:ote,iridescence_fragment:lte,bumpmap_pars_fragment:cte,clipping_planes_fragment:fte,clipping_planes_pars_fragment:dte,clipping_planes_pars_vertex:hte,clipping_planes_vertex:ute,color_fragment:mte,color_pars_fragment:pte,color_pars_vertex:_te,color_vertex:gte,common:vte,cube_uv_reflection_fragment:Ete,defaultnormal_vertex:Ste,displacementmap_pars_vertex:Tte,displacementmap_vertex:Ate,emissivemap_fragment:xte,emissivemap_pars_fragment:Rte,colorspace_fragment:bte,colorspace_pars_fragment:Mte,envmap_fragment:Ite,envmap_common_pars_fragment:yte,envmap_pars_fragment:Cte,envmap_pars_vertex:Pte,envmap_physical_pars_fragment:kte,envmap_vertex:Dte,fog_vertex:Lte,fog_pars_vertex:Ote,fog_fragment:Nte,fog_pars_fragment:wte,gradientmap_pars_fragment:Fte,lightmap_pars_fragment:Bte,lights_lambert_fragment:Ute,lights_lambert_pars_fragment:Vte,lights_pars_begin:Gte,lights_toon_fragment:Wte,lights_toon_pars_fragment:Hte,lights_phong_fragment:zte,lights_phong_pars_fragment:Xte,lights_physical_fragment:Yte,lights_physical_pars_fragment:Kte,lights_fragment_begin:jte,lights_fragment_maps:qte,lights_fragment_end:Zte,lightprobes_pars_fragment:Qte,logdepthbuf_fragment:$te,logdepthbuf_pars_fragment:Jte,logdepthbuf_pars_vertex:eie,logdepthbuf_vertex:tie,map_fragment:iie,map_pars_fragment:rie,map_particle_fragment:nie,map_particle_pars_fragment:sie,metalnessmap_fragment:aie,metalnessmap_pars_fragment:oie,morphinstance_vertex:lie,morphcolor_vertex:cie,morphnormal_vertex:fie,morphtarget_pars_vertex:die,morphtarget_vertex:hie,normal_fragment_begin:uie,normal_fragment_maps:mie,normal_pars_fragment:pie,normal_pars_vertex:_ie,normal_vertex:gie,normalmap_pars_fragment:vie,clearcoat_normal_fragment_begin:Eie,clearcoat_normal_fragment_maps:Sie,clearcoat_pars_fragment:Tie,iridescence_pars_fragment:Aie,opaque_fragment:xie,packing:Rie,premultiplied_alpha_fragment:bie,project_vertex:Mie,dithering_fragment:Iie,dithering_pars_fragment:yie,roughnessmap_fragment:Cie,roughnessmap_pars_fragment:Pie,shadowmap_pars_fragment:Die,shadowmap_pars_vertex:Lie,shadowmap_vertex:Oie,shadowmask_pars_fragment:Nie,skinbase_vertex:wie,skinning_pars_vertex:Fie,skinning_vertex:Bie,skinnormal_vertex:Uie,specularmap_fragment:Vie,specularmap_pars_fragment:Gie,tonemapping_fragment:kie,tonemapping_pars_fragment:Wie,transmission_fragment:Hie,transmission_pars_fragment:zie,uv_pars_fragment:Xie,uv_pars_vertex:Yie,uv_vertex:Kie,worldpos_vertex:jie,background_vert:qie,background_frag:Zie,backgroundCube_vert:Qie,backgroundCube_frag:$ie,cube_vert:Jie,cube_frag:ere,depth_vert:tre,depth_frag:ire,distance_vert:rre,distance_frag:nre,equirect_vert:sre,equirect_frag:are,linedashed_vert:ore,linedashed_frag:lre,meshbasic_vert:cre,meshbasic_frag:fre,meshlambert_vert:dre,meshlambert_frag:hre,meshmatcap_vert:ure,meshmatcap_frag:mre,meshnormal_vert:pre,meshnormal_frag:_re,meshphong_vert:gre,meshphong_frag:vre,meshphysical_vert:Ere,meshphysical_frag:Sre,meshtoon_vert:Tre,meshtoon_frag:Are,points_vert:xre,points_frag:Rre,shadow_vert:bre,shadow_frag:Mre,sprite_vert:Ire,sprite_frag:yre},pt={common:{diffuse:{value:new ft(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ii},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ii}},envmap:{envMap:{value:null},envMapRotation:{value:new ii},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ii}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ii}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ii},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ii},normalScale:{value:new Mt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ii},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ii}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ii}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ii}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ft(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new se},probesMax:{value:new se},probesResolution:{value:new se}},points:{diffuse:{value:new ft(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0},uvTransform:{value:new ii}},sprite:{diffuse:{value:new ft(16777215)},opacity:{value:1},center:{value:new Mt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ii},alphaMap:{value:null},alphaMapTransform:{value:new ii},alphaTest:{value:0}}},el={basic:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.fog]),vertexShader:di.meshbasic_vert,fragmentShader:di.meshbasic_frag},lambert:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},envMapIntensity:{value:1}}]),vertexShader:di.meshlambert_vert,fragmentShader:di.meshlambert_frag},phong:{uniforms:On([pt.common,pt.specularmap,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},specular:{value:new ft(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:di.meshphong_vert,fragmentShader:di.meshphong_frag},standard:{uniforms:On([pt.common,pt.envmap,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.roughnessmap,pt.metalnessmap,pt.fog,pt.lights,{emissive:{value:new ft(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:di.meshphysical_vert,fragmentShader:di.meshphysical_frag},toon:{uniforms:On([pt.common,pt.aomap,pt.lightmap,pt.emissivemap,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.gradientmap,pt.fog,pt.lights,{emissive:{value:new ft(0)}}]),vertexShader:di.meshtoon_vert,fragmentShader:di.meshtoon_frag},matcap:{uniforms:On([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,pt.fog,{matcap:{value:null}}]),vertexShader:di.meshmatcap_vert,fragmentShader:di.meshmatcap_frag},points:{uniforms:On([pt.points,pt.fog]),vertexShader:di.points_vert,fragmentShader:di.points_frag},dashed:{uniforms:On([pt.common,pt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:di.linedashed_vert,fragmentShader:di.linedashed_frag},depth:{uniforms:On([pt.common,pt.displacementmap]),vertexShader:di.depth_vert,fragmentShader:di.depth_frag},normal:{uniforms:On([pt.common,pt.bumpmap,pt.normalmap,pt.displacementmap,{opacity:{value:1}}]),vertexShader:di.meshnormal_vert,fragmentShader:di.meshnormal_frag},sprite:{uniforms:On([pt.sprite,pt.fog]),vertexShader:di.sprite_vert,fragmentShader:di.sprite_frag},background:{uniforms:{uvTransform:{value:new ii},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:di.background_vert,fragmentShader:di.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ii}},vertexShader:di.backgroundCube_vert,fragmentShader:di.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:di.cube_vert,fragmentShader:di.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:di.equirect_vert,fragmentShader:di.equirect_frag},distance:{uniforms:On([pt.common,pt.displacementmap,{referencePosition:{value:new se},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:di.distance_vert,fragmentShader:di.distance_frag},shadow:{uniforms:On([pt.lights,pt.fog,{color:{value:new ft(0)},opacity:{value:1}}]),vertexShader:di.shadow_vert,fragmentShader:di.shadow_frag}};el.physical={uniforms:On([el.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ii},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ii},clearcoatNormalScale:{value:new Mt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ii},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ii},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ii},sheen:{value:0},sheenColor:{value:new ft(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ii},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ii},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ii},transmissionSamplerSize:{value:new Mt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ii},attenuationDistance:{value:0},attenuationColor:{value:new ft(0)},specularColor:{value:new ft(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ii},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ii},anisotropyVector:{value:new Mt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ii}}]),vertexShader:di.meshphysical_vert,fragmentShader:di.meshphysical_frag};aT={r:0,b:0,g:0},Cre=new oi,vB=new ii;vB.set(-1,0,0,0,1,0,0,0,1);of=4,q3=[.125,.215,.35,.446,.526,.582],Vd=20,wre=256,K_=new xs,Z3=new ft,xI=null,RI=0,bI=0,MI=!1,Fre=new se,Uu=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,i=.1,r=100,s={}){let{size:a=256,position:o=Fre}=s;xI=this._renderer.getRenderTarget(),RI=this._renderer.getActiveCubeFace(),bI=this._renderer.getActiveMipmapLevel(),MI=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,i,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=J3(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=$3(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?E:0,E,E),d.setRenderTarget(r),g&&d.render(_,l),d.render(e,l)}d.toneMapping=u,d.autoClear=h,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===nf||e.mapping===Fd;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=J3()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=$3());let s=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=s;let o=s.uniforms;o.envMap.value=e;let l=this._cubeSize;Fu(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,K_)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-of?i-m+of:0),g=4*(this._cubeSize-_);l.envMap.value=e.texture,l.roughness.value=u,l.mipInt.value=m-t,Fu(s,p,g,3*_,2*_),r.setRenderTarget(s),r.render(o,K_),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,Fu(e,p,g,3*_,2*_),r.setRenderTarget(e),r.render(o,K_)}_blur(e,t,i,r,s){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,i,r,"latitudinal",s),this._halfBlur(a,e,i,i,r,"longitudinal",s)}_halfBlur(e,t,i,r,s,a,o){let l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&Bt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let h=c.uniforms,u=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*u):2*Math.PI/(2*Vd-1),_=s/m,p=isFinite(s)?1+Math.floor(f*_):Vd;p>Vd&&yt(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Vd}`);let g=[],v=0;for(let R=0;Rx-of?r-x+of:0),T=4*(this._cubeSize-S);Fu(t,E,T,3*S,2*S),l.setRenderTarget(t),l.render(d,K_)}};lT=class extends $s{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new x_(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -4052,9 +4052,9 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},r=new $c(5,5,5),s=new Js({name:"CubemapFromEquirect",uniforms:Ud(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Sn,blending:Qo});s.uniforms.tEquirect.value=t;let a=new li(r,s),o=t.minFilter;return t.minFilter===so&&(t.minFilter=wr),new cS(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,i=!0,r=!0){let s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,i,r);e.setRenderTarget(s)}};Wre={[K0]:"LINEAR_TONE_MAPPING",[j0]:"REINHARD_TONE_MAPPING",[q0]:"CINEON_TONE_MAPPING",[Z0]:"ACES_FILMIC_TONE_MAPPING",[$0]:"AGX_TONE_MAPPING",[J0]:"NEUTRAL_TONE_MAPPING",[Q0]:"CUSTOM_TONE_MAPPING"};pB=new Rr,MI=new Ul(1,1),_B=new __,gB=new QE,vB=new x_,Z3=[],Q3=[],$3=new Float32Array(16),J3=new Float32Array(9),eB=new Float32Array(4);II=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=cne(t.type)}},yI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Cne(t.type)}},CI=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){let r=this.seq;for(let s=0,a=r.length;s!==a;++s){let o=r[s];o.setValue(e,t[o.id],i)}}},RI=/(\w+)(\])?(\[|\.)?/g;Bu=class{constructor(e,t){this.seq=[],this.map={};let i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let a=0;a0&&(this.seq=r.concat(s))}setValue(e,t,i,r){let s=this.map[t];s!==void 0&&s.setValue(e,i,r)}setOptional(e,t,i){let r=t[i];r!==void 0&&this.setValue(e,i,r)}static upload(e,t,i,r){for(let s=0,a=t.length;s!==a;++s){let o=t[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){let i=[];for(let r=0,s=e.length;r!==s;++r){let a=e[r];a.id in t&&i.push(a)}return i}};Dne=37297,Lne=0;rB=new ii;Fne={[K0]:"Linear",[j0]:"Reinhard",[q0]:"Cineon",[Z0]:"ACESFilmic",[$0]:"AgX",[J0]:"Neutral",[Q0]:"Custom"};aT=new se;Wne=/^[ \t]*#include +<([\w\d./]+)>/gm;Hne=new Map;Xne=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;Kne={[F_]:"SHADOWMAP_TYPE_PCF",[Pu]:"SHADOWMAP_TYPE_VSM"};qne={[nf]:"ENVMAP_TYPE_CUBE",[Fd]:"ENVMAP_TYPE_CUBE",[U_]:"ENVMAP_TYPE_CUBE_UV"};Qne={[Fd]:"ENVMAP_MODE_REFRACTION"};Jne={[B_]:"ENVMAP_BLENDING_MULTIPLY",[A3]:"ENVMAP_BLENDING_MIX",[x3]:"ENVMAP_BLENDING_ADD"};rse=0,DI=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return i===void 0&&(i=new LI(e),t.set(e,i)),i}},LI=class{constructor(e){this.id=rse++,this.code=e,this.usedTimes=0}};dse=0;pse=`void main() { + `},r=new $c(5,5,5),s=new Js({name:"CubemapFromEquirect",uniforms:Ud(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Sn,blending:Qo});s.uniforms.tEquirect.value=t;let a=new li(r,s),o=t.minFilter;return t.minFilter===so&&(t.minFilter=wr),new fS(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,i=!0,r=!0){let s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,i,r);e.setRenderTarget(s)}};Kre={[Z0]:"LINEAR_TONE_MAPPING",[Q0]:"REINHARD_TONE_MAPPING",[$0]:"CINEON_TONE_MAPPING",[J0]:"ACES_FILMIC_TONE_MAPPING",[tI]:"AGX_TONE_MAPPING",[iI]:"NEUTRAL_TONE_MAPPING",[eI]:"CUSTOM_TONE_MAPPING"};EB=new Rr,CI=new Ul(1,1),SB=new __,TB=new $E,AB=new x_,eB=[],tB=[],iB=new Float32Array(16),rB=new Float32Array(9),nB=new Float32Array(4);PI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=mne(t.type)}},DI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Nne(t.type)}},LI=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){let r=this.seq;for(let s=0,a=r.length;s!==a;++s){let o=r[s];o.setValue(e,t[o.id],i)}}},II=/(\w+)(\])?(\[|\.)?/g;Bu=class{constructor(e,t){this.seq=[],this.map={};let i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let a=0;a0&&(this.seq=r.concat(s))}setValue(e,t,i,r){let s=this.map[t];s!==void 0&&s.setValue(e,i,r)}setOptional(e,t,i){let r=t[i];r!==void 0&&this.setValue(e,i,r)}static upload(e,t,i,r){for(let s=0,a=t.length;s!==a;++s){let o=t[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){let i=[];for(let r=0,s=e.length;r!==s;++r){let a=e[r];a.id in t&&i.push(a)}return i}};Fne=37297,Bne=0;oB=new ii;kne={[Z0]:"Linear",[Q0]:"Reinhard",[$0]:"Cineon",[J0]:"ACESFilmic",[tI]:"AgX",[iI]:"Neutral",[eI]:"Custom"};oT=new se;Kne=/^[ \t]*#include +<([\w\d./]+)>/gm;jne=new Map;Zne=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;$ne={[F_]:"SHADOWMAP_TYPE_PCF",[Pu]:"SHADOWMAP_TYPE_VSM"};ese={[nf]:"ENVMAP_TYPE_CUBE",[Fd]:"ENVMAP_TYPE_CUBE",[U_]:"ENVMAP_TYPE_CUBE_UV"};ise={[Fd]:"ENVMAP_MODE_REFRACTION"};nse={[B_]:"ENVMAP_BLENDING_MULTIPLY",[M3]:"ENVMAP_BLENDING_MIX",[I3]:"ENVMAP_BLENDING_ADD"};lse=0,NI=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return i===void 0&&(i=new wI(e),t.set(e,i)),i}},wI=class{constructor(e){this.id=lse++,this.code=e,this.usedTimes=0}};_se=0;Sse=`void main() { gl_Position = vec4( position, 1.0 ); -}`,_se=`uniform sampler2D shadow_pass; +}`,Tse=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; void main() { @@ -4079,12 +4079,12 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) ); gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 ); -}`,gse=[new se(1,0,0),new se(-1,0,0),new se(0,1,0),new se(0,-1,0),new se(0,0,1),new se(0,0,-1)],vse=[new se(0,-1,0),new se(0,-1,0),new se(0,0,1),new se(0,0,-1),new se(0,-1,0),new se(0,-1,0)],hB=new oi,j_=new se,bI=new se;xse=` +}`,Ase=[new se(1,0,0),new se(-1,0,0),new se(0,1,0),new se(0,-1,0),new se(0,0,1),new se(0,0,-1)],xse=[new se(0,-1,0),new se(0,-1,0),new se(0,0,1),new se(0,0,-1),new se(0,-1,0),new se(0,-1,0)],_B=new oi,j_=new se,yI=new se;yse=` void main() { gl_Position = vec4( position, 1.0 ); -}`,Rse=` +}`,Cse=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; @@ -4103,52 +4103,52 @@ void main() { } -}`,OI=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new b_(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,i=new Js({vertexShader:xse,fragmentShader:Rse,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new li(new Ld(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},NI=class extends Sa{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,h=null,u=null,m=null,_=typeof XRWebGLBinding!="undefined",p=new OI,g={},v=t.getContextAttributes(),x=null,S=null,E=[],T=[],R=new Mt,M=null,y=new dr;y.viewport=new tr;let C=new dr;C.viewport=new tr;let L=[y,C],w=new fS,G=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getTargetRaySpace()},this.getControllerGrip=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getGripSpace()},this.getHand=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getHandSpace()};function N(ae){let me=T.indexOf(ae.inputSource);if(me===-1)return;let ne=E[me];ne!==void 0&&(ne.update(ae.inputSource,ae.frame,c||a),ne.dispatchEvent({type:ae.type,data:ae.inputSource}))}function B(){r.removeEventListener("select",N),r.removeEventListener("selectstart",N),r.removeEventListener("selectend",N),r.removeEventListener("squeeze",N),r.removeEventListener("squeezestart",N),r.removeEventListener("squeezeend",N),r.removeEventListener("end",B),r.removeEventListener("inputsourceschange",V);for(let ae=0;ae=0&&(T[fe]=null,E[fe].disconnect(ne))}for(let me=0;me=T.length){T.push(ne),fe=de;break}else if(T[de]===null){T[de]=ne,fe=de;break}if(fe===-1)break}let Pe=E[fe];Pe&&Pe.connect(ne)}}let J=new se,Q=new se;function te(ae,me,ne){J.setFromMatrixPosition(me.matrixWorld),Q.setFromMatrixPosition(ne.matrixWorld);let fe=J.distanceTo(Q),Pe=me.projectionMatrix.elements,de=ne.projectionMatrix.elements,Re=Pe[14]/(Pe[10]-1),Ye=Pe[14]/(Pe[10]+1),Et=(Pe[9]+1)/Pe[5],Ke=(Pe[9]-1)/Pe[5],Ze=(Pe[8]-1)/Pe[0],Jt=(de[8]+1)/de[0],Lt=Re*Ze,xi=Re*Jt,oe=fe/(-Ze+Jt),Gi=oe*-Ze;if(me.matrixWorld.decompose(ae.position,ae.quaternion,ae.scale),ae.translateX(Gi),ae.translateZ(oe),ae.matrixWorld.compose(ae.position,ae.quaternion,ae.scale),ae.matrixWorldInverse.copy(ae.matrixWorld).invert(),Pe[10]===-1)ae.projectionMatrix.copy(me.projectionMatrix),ae.projectionMatrixInverse.copy(me.projectionMatrixInverse);else{let ti=Re+oe,Fi=Ye+oe,ot=Lt-Gi,Di=xi+(fe-Gi),z=Et*Ye/Fi*ti,U=Ke*Ye/Fi*ti;ae.projectionMatrix.makePerspective(ot,Di,z,U,ti,Fi),ae.projectionMatrixInverse.copy(ae.projectionMatrix).invert()}}function X(ae,me){me===null?ae.matrixWorld.copy(ae.matrix):ae.matrixWorld.multiplyMatrices(me.matrixWorld,ae.matrix),ae.matrixWorldInverse.copy(ae.matrixWorld).invert()}this.updateCamera=function(ae){if(r===null)return;let me=ae.near,ne=ae.far;p.texture!==null&&(p.depthNear>0&&(me=p.depthNear),p.depthFar>0&&(ne=p.depthFar)),w.near=C.near=y.near=me,w.far=C.far=y.far=ne,(G!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),G=w.near,O=w.far),w.layers.mask=ae.layers.mask|6,y.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let fe=ae.parent,Pe=w.cameras;X(w,fe);for(let de=0;de{function St(){if(Te.forEach(function(Rt){z.get(Rt).currentProgram.isReady()&&Te.delete(Rt)}),Te.size===0){Ae(H);return}setTimeout(St,10)}ti.get("KHR_parallel_shader_compile")!==null?St():setTimeout(St,10)})};let za=null;function Yp(H){za&&za(H)}function YM(){md.stop()}function Qv(){md.start()}let md=new uB;md.setAnimationLoop(Yp),typeof self!="undefined"&&md.setContext(self),this.setAnimationLoop=function(H){za=H,qe.setAnimationLoop(H),H===null?md.stop():md.start()},qe.addEventListener("sessionstart",YM),qe.addEventListener("sessionend",Qv),this.render=function(H,he){if(he!==void 0&&he.isCamera!==!0){Bt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(L===!0)return;w!==null&&w.renderStart(H,he);let be=qe.enabled===!0&&qe.isPresenting===!0,Te=y!==null&&(N===null||be)&&y.begin(C,N);if(H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),he.parent===null&&he.matrixWorldAutoUpdate===!0&&he.updateMatrixWorld(),qe.enabled===!0&&qe.isPresenting===!0&&(y===null||y.isCompositing()===!1)&&(qe.cameraAutoUpdate===!0&&qe.updateCamera(he),he=qe.getCamera()),H.isScene===!0&&H.onBeforeRender(C,H,he,N),T=ct.get(H,M.length),T.init(he),T.state.textureUnits=U.getTextureUnits(),M.push(T),Et.multiplyMatrices(he.projectionMatrix,he.matrixWorldInverse),de.setFromProjectionMatrix(Et,Ja,he.reversedDepth),Ye=this.localClippingEnabled,Re=Tt.init(this.clippingPlanes,Ye),E=Me.get(H,R.length),E.init(),R.push(E),qe.enabled===!0&&qe.isPresenting===!0){let Rt=C.xr.getDepthSensingMesh();Rt!==null&&KM(Rt,he,-1/0,C.sortObjects)}KM(H,he,0,C.sortObjects),E.finish(),C.sortObjects===!0&&E.sort(ae,me),Lt=qe.enabled===!1||qe.isPresenting===!1||qe.hasDepthSensing()===!1,Lt&&$e.addToRenderList(E,H),this.info.render.frame++,Re===!0&&Tt.beginShadows();let Ae=T.state.shadowsArray;if(nt.render(Ae,H,he),Re===!0&&Tt.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Te&&y.hasRenderPass())===!1){let Rt=E.opaque,_t=E.transmissive;if(T.setupLights(),he.isArrayCamera){let Ct=he.cameras;if(_t.length>0)for(let Dt=0,ci=Ct.length;Dt0&&kF(Rt,_t,H,he),Lt&&$e.render(H),GF(E,H,he)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Te&&y.end(C),H.isScene===!0&&H.onAfterRender(C,H,he),De.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(T=M[M.length-1],U.setTextureUnits(T.state.textureUnits),Re===!0&&Tt.setGlobalState(C.clippingPlanes,T.state.camera)):T=null,R.pop(),R.length>0?E=R[R.length-1]:E=null,w!==null&&w.renderEnd()};function KM(H,he,be,Te){if(H.visible===!1)return;if(H.layers.test(he.layers)){if(H.isGroup)be=H.renderOrder;else if(H.isLOD)H.autoUpdate===!0&&H.update(he);else if(H.isLightProbeGrid)T.pushLightProbeGrid(H);else if(H.isLight)T.pushLight(H),H.castShadow&&T.pushShadow(H);else if(H.isSprite){if(!H.frustumCulled||de.intersectsSprite(H)){Te&&Ze.setFromMatrixPosition(H.matrixWorld).applyMatrix4(Et);let Rt=et.update(H),_t=H.material;_t.visible&&E.push(H,Rt,_t,be,Ze.z,null)}}else if((H.isMesh||H.isLine||H.isPoints)&&(!H.frustumCulled||de.intersectsObject(H))){let Rt=et.update(H),_t=H.material;if(Te&&(H.boundingSphere!==void 0?(H.boundingSphere===null&&H.computeBoundingSphere(),Ze.copy(H.boundingSphere.center)):(Rt.boundingSphere===null&&Rt.computeBoundingSphere(),Ze.copy(Rt.boundingSphere.center)),Ze.applyMatrix4(H.matrixWorld).applyMatrix4(Et)),Array.isArray(_t)){let Ct=Rt.groups;for(let Dt=0,ci=Ct.length;Dt0&&$v(Ae,he,be),St.length>0&&$v(St,he,be),Rt.length>0&&$v(Rt,he,be),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function kF(H,he,be,Te){if((be.isScene===!0?be.overrideMaterial:null)!==null)return;if(T.state.transmissionRenderTarget[Te.id]===void 0){let Ot=ti.has("EXT_color_buffer_half_float")||ti.has("EXT_color_buffer_float");T.state.transmissionRenderTarget[Te.id]=new $s(1,1,{generateMipmaps:!0,type:Ot?$o:bs,minFilter:so,samples:Math.max(4,Fi.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:ai.workingColorSpace})}let St=T.state.transmissionRenderTarget[Te.id],Rt=Te.viewport||J;St.setSize(Rt.z*C.transmissionResolutionScale,Rt.w*C.transmissionResolutionScale);let _t=C.getRenderTarget(),Ct=C.getActiveCubeFace(),Dt=C.getActiveMipmapLevel();C.setRenderTarget(St),C.getClearColor(X),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Lt&&$e.render(be);let ci=C.toneMapping;C.toneMapping=Rs;let ui=Te.viewport;if(Te.viewport!==void 0&&(Te.viewport=void 0),T.setupLightsView(Te),Re===!0&&Tt.setGlobalState(C.clippingPlanes,Te),$v(H,be,Te),U.updateMultisampleRenderTarget(St),U.updateRenderTargetMipmap(St),ti.has("WEBGL_multisampled_render_to_texture")===!1){let Ot=!1;for(let Ji=0,Lr=he.length;Ji0,Te.currentProgram=ui,Te.uniformsList=null,ui}function HF(H){if(H.uniformsList===null){let he=H.currentProgram.getUniforms();H.uniformsList=Bu.seqWithValue(he.seq,H.uniforms)}return H.uniformsList}function zF(H,he){let be=z.get(H);be.outputColorSpace=he.outputColorSpace,be.batching=he.batching,be.batchingColor=he.batchingColor,be.instancing=he.instancing,be.instancingColor=he.instancingColor,be.instancingMorph=he.instancingMorph,be.skinning=he.skinning,be.morphTargets=he.morphTargets,be.morphNormals=he.morphNormals,be.morphColors=he.morphColors,be.morphTargetsCount=he.morphTargetsCount,be.numClippingPlanes=he.numClippingPlanes,be.numIntersection=he.numClipIntersection,be.vertexAlphas=he.vertexAlphas,be.vertexTangents=he.vertexTangents,be.toneMapping=he.toneMapping}function cJ(H,he){if(H.length===0)return null;if(H.length===1)return H[0].texture!==null?H[0]:null;S.setFromMatrixPosition(he.matrixWorld);for(let be=0,Te=H.length;be0),Ot=!!be.morphAttributes.position,Ji=!!be.morphAttributes.normal,Lr=!!be.morphAttributes.color,yr=Rs;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(yr=C.toneMapping);let nr=be.morphAttributes.position||be.morphAttributes.normal||be.morphAttributes.color,Cn=nr!==void 0?nr.length:0,xt=z.get(Te),Ks=T.state.lights;if(Re===!0&&(Ye===!0||H!==V)){let fr=H===V&&Te.id===B;Tt.setState(Te,H,fr)}let Bi=!1;Te.version===xt.__version?(xt.needsLights&&xt.lightsStateVersion!==Ks.state.version||xt.outputColorSpace!==_t||Ae.isBatchedMesh&&xt.batching===!1||!Ae.isBatchedMesh&&xt.batching===!0||Ae.isBatchedMesh&&xt.batchingColor===!0&&Ae.colorTexture===null||Ae.isBatchedMesh&&xt.batchingColor===!1&&Ae.colorTexture!==null||Ae.isInstancedMesh&&xt.instancing===!1||!Ae.isInstancedMesh&&xt.instancing===!0||Ae.isSkinnedMesh&&xt.skinning===!1||!Ae.isSkinnedMesh&&xt.skinning===!0||Ae.isInstancedMesh&&xt.instancingColor===!0&&Ae.instanceColor===null||Ae.isInstancedMesh&&xt.instancingColor===!1&&Ae.instanceColor!==null||Ae.isInstancedMesh&&xt.instancingMorph===!0&&Ae.morphTexture===null||Ae.isInstancedMesh&&xt.instancingMorph===!1&&Ae.morphTexture!==null||xt.envMap!==Dt||Te.fog===!0&&xt.fog!==St||xt.numClippingPlanes!==void 0&&(xt.numClippingPlanes!==Tt.numPlanes||xt.numIntersection!==Tt.numIntersection)||xt.vertexAlphas!==ci||xt.vertexTangents!==ui||xt.morphTargets!==Ot||xt.morphNormals!==Ji||xt.morphColors!==Lr||xt.toneMapping!==yr||xt.morphTargetsCount!==Cn||!!xt.lightProbeGrid!=T.state.lightProbeGridArray.length>0)&&(Bi=!0):(Bi=!0,xt.__version=Te.version);let _a=xt.currentProgram;Bi===!0&&(_a=Jv(Te,he,Ae),w&&Te.isNodeMaterial&&w.onUpdateProgram(Te,_a,xt));let Vo=!1,Vc=!1,Hh=!1,sr=_a.getUniforms(),Or=xt.uniforms;if(ot.useProgram(_a.program)&&(Vo=!0,Vc=!0,Hh=!0),Te.id!==B&&(B=Te.id,Vc=!0),xt.needsLights){let fr=cJ(T.state.lightProbeGridArray,Ae);xt.lightProbeGrid!==fr&&(xt.lightProbeGrid=fr,Vc=!0)}if(Vo||V!==H){ot.buffers.depth.getReversed()&&H.reversedDepth!==!0&&(H._reversedDepth=!0,H.updateProjectionMatrix()),sr.setValue(oe,"projectionMatrix",H.projectionMatrix),sr.setValue(oe,"viewMatrix",H.matrixWorldInverse);let kc=sr.map.cameraPosition;kc!==void 0&&kc.setValue(oe,Ke.setFromMatrixPosition(H.matrixWorld)),Fi.logarithmicDepthBuffer&&sr.setValue(oe,"logDepthBufFC",2/(Math.log(H.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&sr.setValue(oe,"isOrthographic",H.isOrthographicCamera===!0),V!==H&&(V=H,Vc=!0,Hh=!0)}if(xt.needsLights&&(Ks.state.directionalShadowMap.length>0&&sr.setValue(oe,"directionalShadowMap",Ks.state.directionalShadowMap,U),Ks.state.spotShadowMap.length>0&&sr.setValue(oe,"spotShadowMap",Ks.state.spotShadowMap,U),Ks.state.pointShadowMap.length>0&&sr.setValue(oe,"pointShadowMap",Ks.state.pointShadowMap,U)),Ae.isSkinnedMesh){sr.setOptional(oe,Ae,"bindMatrix"),sr.setOptional(oe,Ae,"bindMatrixInverse");let fr=Ae.skeleton;fr&&(fr.boneTexture===null&&fr.computeBoneTexture(),sr.setValue(oe,"boneTexture",fr.boneTexture,U))}Ae.isBatchedMesh&&(sr.setOptional(oe,Ae,"batchingTexture"),sr.setValue(oe,"batchingTexture",Ae._matricesTexture,U),sr.setOptional(oe,Ae,"batchingIdTexture"),sr.setValue(oe,"batchingIdTexture",Ae._indirectTexture,U),sr.setOptional(oe,Ae,"batchingColorTexture"),Ae._colorsTexture!==null&&sr.setValue(oe,"batchingColorTexture",Ae._colorsTexture,U));let Gc=be.morphAttributes;if((Gc.position!==void 0||Gc.normal!==void 0||Gc.color!==void 0)&&Wt.update(Ae,be,_a),(Vc||xt.receiveShadow!==Ae.receiveShadow)&&(xt.receiveShadow=Ae.receiveShadow,sr.setValue(oe,"receiveShadow",Ae.receiveShadow)),(Te.isMeshStandardMaterial||Te.isMeshLambertMaterial||Te.isMeshPhongMaterial)&&Te.envMap===null&&he.environment!==null&&(Or.envMapIntensity.value=he.environmentIntensity),Or.dfgLUT!==void 0&&(Or.dfgLUT.value=Cse()),Vc){if(sr.setValue(oe,"toneMappingExposure",C.toneMappingExposure),xt.needsLights&&dJ(Or,Hh),St&&Te.fog===!0&&Ce.refreshFogUniforms(Or,St),Ce.refreshMaterialUniforms(Or,Te,Ue,Ee,T.state.transmissionRenderTarget[H.id]),xt.needsLights&&xt.lightProbeGrid){let fr=xt.lightProbeGrid;Or.probesSH.value=fr.texture,Or.probesMin.value.copy(fr.boundingBox.min),Or.probesMax.value.copy(fr.boundingBox.max),Or.probesResolution.value.copy(fr.resolution)}Bu.upload(oe,HF(xt),Or,U)}if(Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(Bu.upload(oe,HF(xt),Or,U),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&sr.setValue(oe,"center",Ae.center),sr.setValue(oe,"modelViewMatrix",Ae.modelViewMatrix),sr.setValue(oe,"normalMatrix",Ae.normalMatrix),sr.setValue(oe,"modelMatrix",Ae.matrixWorld),Te.uniformsGroups!==void 0){let fr=Te.uniformsGroups;for(let kc=0,zh=fr.length;kc0&&U.useMultisampledRTT(H)===!1?Te=z.get(H).__webglMultisampledFramebuffer:Array.isArray(Dt)?Te=Dt[be]:Te=Dt,J.copy(H.viewport),Q.copy(H.scissor),te=H.scissorTest}else J.copy(ne).multiplyScalar(Ue).floor(),Q.copy(fe).multiplyScalar(Ue).floor(),te=Pe;if(be!==0&&(Te=uJ),ot.bindFramebuffer(oe.FRAMEBUFFER,Te)&&ot.drawBuffers(H,Te),ot.viewport(J),ot.scissor(Q),ot.setScissorTest(te),Ae){let _t=z.get(H.texture);oe.framebufferTexture2D(oe.FRAMEBUFFER,oe.COLOR_ATTACHMENT0,oe.TEXTURE_CUBE_MAP_POSITIVE_X+he,_t.__webglTexture,be)}else if(St){let _t=he;for(let Ct=0;Ct1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+_t),!Fi.textureFormatReadable(ci)){Bt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Fi.textureTypeReadable(ui)){Bt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}he>=0&&he<=H.width-Te&&be>=0&&be<=H.height-Ae&&oe.readPixels(he,be,Te,Ae,K.convert(ci),K.convert(ui),St)}finally{let Dt=N!==null?z.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,Dt)}}},this.readRenderTargetPixelsAsync=async function(H,he,be,Te,Ae,St,Rt,_t=0){if(!(H&&H.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ct=z.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Rt!==void 0&&(Ct=Ct[Rt]),Ct)if(he>=0&&he<=H.width-Te&&be>=0&&be<=H.height-Ae){ot.bindFramebuffer(oe.FRAMEBUFFER,Ct);let Dt=H.textures[_t],ci=Dt.format,ui=Dt.type;if(H.textures.length>1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+_t),!Fi.textureFormatReadable(ci))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Fi.textureTypeReadable(ui))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Ot=oe.createBuffer();oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Ot),oe.bufferData(oe.PIXEL_PACK_BUFFER,St.byteLength,oe.STREAM_READ),oe.readPixels(he,be,Te,Ae,K.convert(ci),K.convert(ui),0);let Ji=N!==null?z.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,Ji);let Lr=oe.fenceSync(oe.SYNC_GPU_COMMANDS_COMPLETE,0);return oe.flush(),await V3(oe,Lr,4),oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Ot),oe.getBufferSubData(oe.PIXEL_PACK_BUFFER,0,St),oe.deleteBuffer(Ot),oe.deleteSync(Lr),St}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(H,he=null,be=0){let Te=Math.pow(2,-be),Ae=Math.floor(H.image.width*Te),St=Math.floor(H.image.height*Te),Rt=he!==null?he.x:0,_t=he!==null?he.y:0;U.setTexture2D(H,0),oe.copyTexSubImage2D(oe.TEXTURE_2D,be,0,0,Rt,_t,Ae,St),ot.unbindTexture()};let mJ=oe.createFramebuffer(),pJ=oe.createFramebuffer();this.copyTextureToTexture=function(H,he,be=null,Te=null,Ae=0,St=0){let Rt,_t,Ct,Dt,ci,ui,Ot,Ji,Lr,yr=H.isCompressedTexture?H.mipmaps[St]:H.image;if(be!==null)Rt=be.max.x-be.min.x,_t=be.max.y-be.min.y,Ct=be.isBox3?be.max.z-be.min.z:1,Dt=be.min.x,ci=be.min.y,ui=be.isBox3?be.min.z:0;else{let Or=Math.pow(2,-Ae);Rt=Math.floor(yr.width*Or),_t=Math.floor(yr.height*Or),H.isDataArrayTexture?Ct=yr.depth:H.isData3DTexture?Ct=Math.floor(yr.depth*Or):Ct=1,Dt=0,ci=0,ui=0}Te!==null?(Ot=Te.x,Ji=Te.y,Lr=Te.z):(Ot=0,Ji=0,Lr=0);let nr=K.convert(he.format),Cn=K.convert(he.type),xt;he.isData3DTexture?(U.setTexture3D(he,0),xt=oe.TEXTURE_3D):he.isDataArrayTexture||he.isCompressedArrayTexture?(U.setTexture2DArray(he,0),xt=oe.TEXTURE_2D_ARRAY):(U.setTexture2D(he,0),xt=oe.TEXTURE_2D),ot.activeTexture(oe.TEXTURE0),ot.pixelStorei(oe.UNPACK_FLIP_Y_WEBGL,he.flipY),ot.pixelStorei(oe.UNPACK_PREMULTIPLY_ALPHA_WEBGL,he.premultiplyAlpha),ot.pixelStorei(oe.UNPACK_ALIGNMENT,he.unpackAlignment);let Ks=ot.getParameter(oe.UNPACK_ROW_LENGTH),Bi=ot.getParameter(oe.UNPACK_IMAGE_HEIGHT),_a=ot.getParameter(oe.UNPACK_SKIP_PIXELS),Vo=ot.getParameter(oe.UNPACK_SKIP_ROWS),Vc=ot.getParameter(oe.UNPACK_SKIP_IMAGES);ot.pixelStorei(oe.UNPACK_ROW_LENGTH,yr.width),ot.pixelStorei(oe.UNPACK_IMAGE_HEIGHT,yr.height),ot.pixelStorei(oe.UNPACK_SKIP_PIXELS,Dt),ot.pixelStorei(oe.UNPACK_SKIP_ROWS,ci),ot.pixelStorei(oe.UNPACK_SKIP_IMAGES,ui);let Hh=H.isDataArrayTexture||H.isData3DTexture,sr=he.isDataArrayTexture||he.isData3DTexture;if(H.isDepthTexture){let Or=z.get(H),Gc=z.get(he),fr=z.get(Or.__renderTarget),kc=z.get(Gc.__renderTarget);ot.bindFramebuffer(oe.READ_FRAMEBUFFER,fr.__webglFramebuffer),ot.bindFramebuffer(oe.DRAW_FRAMEBUFFER,kc.__webglFramebuffer);for(let zh=0;zh{ts();SB={type:"change"},FI={type:"start"},AB={type:"end"},dT=new zo,TB=new va,Pse=Math.cos(70*Y_.DEG2RAD),en=new se,Ms=2*Math.PI,ir={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},wI=1e-6,hT=class extends w_{constructor(e,t=null){super(e,t),this.state=ir.NONE,this.target=new se,this.cursor=new se,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:tf.ROTATE,MIDDLE:tf.DOLLY,RIGHT:tf.PAN},this.touches={ONE:rf.ROTATE,TWO:rf.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new se,this._lastQuaternion=new Qr,this._lastTargetPosition=new se,this._quat=new Qr().setFromUnitVectors(e.up,new se(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new yu,this._sphericalDelta=new yu,this._scale=1,this._panOffset=new se,this._rotateStart=new Mt,this._rotateEnd=new Mt,this._rotateDelta=new Mt,this._panStart=new Mt,this._panEnd=new Mt,this._panDelta=new Mt,this._dollyStart=new Mt,this._dollyEnd=new Mt,this._dollyDelta=new Mt,this._dollyDirection=new se,this._mouse=new Mt,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Lse.bind(this),this._onPointerDown=Dse.bind(this),this._onPointerUp=Ose.bind(this),this._onContextMenu=Gse.bind(this),this._onMouseWheel=Fse.bind(this),this._onKeyDown=Bse.bind(this),this._onTouchStart=Use.bind(this),this._onTouchMove=Vse.bind(this),this._onMouseDown=Nse.bind(this),this._onMouseMove=wse.bind(this),this._interceptControlDown=kse.bind(this),this._interceptControlUp=Wse.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(SB),this.update(),this.state=ir.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let t=this.object.position;en.copy(t).sub(this.target),en.applyQuaternion(this._quat),this._spherical.setFromVector3(en),this.autoRotate&&this.state===ir.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(i)&&isFinite(r)&&(i<-Math.PI?i+=Ms:i>Math.PI&&(i-=Ms),r<-Math.PI?r+=Ms:r>Math.PI&&(r-=Ms),i<=r?this._spherical.theta=Math.max(i,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+r)/2?Math.max(i,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(en.setFromSpherical(this._spherical),en.applyQuaternion(this._quatInverse),t.copy(this.target).add(en),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){let o=en.length();a=this._clampDistance(o*this._scale);let l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){let o=new se(this._mouse.x,this._mouse.y,0);o.unproject(this.object);let l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;let c=new se(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=en.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(dT.origin.copy(this.object.position),dT.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(dT.direction))wI||8*(1-this._lastQuaternion.dot(this.object.quaternion))>wI||this._lastTargetPosition.distanceToSquared(this.target)>wI?(this.dispatchEvent(SB),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Ms/60*this.autoRotateSpeed*e:Ms/60/60*this.autoRotateSpeed}_getZoomScale(e){let t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){en.setFromMatrixColumn(t,0),en.multiplyScalar(-e),this._panOffset.add(en)}_panUp(e,t){this.screenSpacePanning===!0?en.setFromMatrixColumn(t,1):(en.setFromMatrixColumn(t,0),en.crossVectors(this.object.up,en)),en.multiplyScalar(e),this._panOffset.add(en)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;en.copy(r).sub(this.target);let s=en.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/i.clientHeight,this.object.matrix),this._panUp(2*t*s/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let i=this.domElement.getBoundingClientRect(),r=e-i.left,s=t-i.top,a=i.width,o=i.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Ms*this._rotateDelta.x/t.clientHeight),this._rotateUp(Ms*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(i,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(i,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let i=this._getSecondPointerPosition(e),r=.5*(e.pageX+i.x),s=.5*(e.pageY+i.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Ms*this._rotateDelta.x/t.clientHeight),this._rotateUp(Ms*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(i,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t{ts();uT=class extends Cd{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new $c;e.deleteAttribute("uv");let t=new En({side:Sn}),i=new En,r=new ro(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new li(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new Dd(e,i,6),o=new zi;o.position.set(-10.906,2.009,1.846),o.rotation.set(0,-.195,0),o.scale.set(2.328,7.905,4.651),o.updateMatrix(),a.setMatrixAt(0,o.matrix),o.position.set(-5.607,-.754,-.758),o.rotation.set(0,.994,0),o.scale.set(1.97,1.534,3.955),o.updateMatrix(),a.setMatrixAt(1,o.matrix),o.position.set(6.167,.857,7.803),o.rotation.set(0,.561,0),o.scale.set(3.927,6.285,3.687),o.updateMatrix(),a.setMatrixAt(2,o.matrix),o.position.set(-2.017,.018,6.124),o.rotation.set(0,.333,0),o.scale.set(2.002,4.566,2.064),o.updateMatrix(),a.setMatrixAt(3,o.matrix),o.position.set(2.291,-.756,-2.621),o.rotation.set(0,-.286,0),o.scale.set(1.546,1.552,1.496),o.updateMatrix(),a.setMatrixAt(4,o.matrix),o.position.set(-2.193,-.369,-5.547),o.rotation.set(0,.516,0),o.scale.set(3.875,3.487,2.986),o.updateMatrix(),a.setMatrixAt(5,o.matrix),this.add(a);let l=new li(e,Gu(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new li(e,Gu(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new li(e,Gu(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new li(e,Gu(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let h=new li(e,Gu(20));h.position.set(3.235,11.486,-12.541),h.scale.set(2.5,2,.1),this.add(h);let u=new li(e,Gu(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){let e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(let t of e)t.dispose()}}});var mT,BI,bB=I(()=>{ts();mT=class extends dn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?no.extractUrlBase(e):this.path,o=new As(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{t(s.parse(l,a))}catch(c){r?r(c):console.error(c),s.manager.itemError(e)}},i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split(` -`),r={},s=/\s+/,a={};for(let l=0;l=0?c.substring(0,f):c;d=d.toLowerCase();let h=f>=0?c.substring(f+1):"";if(h=h.trim(),d==="newmtl")r={name:h},a[h]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let u=h.split(s,3);r[d]=[parseFloat(u[0]),parseFloat(u[1]),parseFloat(u[2])]}else r[d]=h}let o=new BI(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},BI=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Qs,this.wrap=this.options.wrap!==void 0?this.options.wrap:Wo}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],s={};t[i]=s;for(let a in r){let o=!0,l=r[a],c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break;default:break}o&&(s[c]=l)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function s(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(r[o])return;let c=t.getTextureParams(l,r),f=t.loadTexture(s(t.baseUrl,c.url));f.repeat.copy(c.scale),f.offset.copy(c.offset),f.wrapS=t.wrap,f.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(f.colorSpace=Mi),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"ks":r.specular=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"ke":r.emissive=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"disp":a("displacementMap",l);break;case"map_d":a("alphaMap",l),r.transparent=!0;break;case"ns":r.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(r.opacity=c,r.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(r.opacity=1-c,r.transparent=!0);break;default:break}}return this.materials[e]=new Od(r),this.materials[e]}getTextureParams(e,t){let i={scale:new Mt(1,1),offset:new Mt(0,0)},r=e.split(/\s+/),s;return s=r.indexOf("-bm"),s>=0&&(t.bumpScale=parseFloat(r[s+1]),r.splice(s,2)),s=r.indexOf("-mm"),s>=0&&(t.displacementBias=parseFloat(r[s+1]),t.displacementScale=parseFloat(r[s+2]),r.splice(s,3)),s=r.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),s=r.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),i.url=r.join(" ").trim(),i}loadTexture(e,t,i,r,s){let a=this.manager!==void 0?this.manager:nT,o=a.getHandler(e);o===null&&(o=new wd(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function Kse(){let n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);let o={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){let r=i.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseNormalIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseUVIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/2)*2},addVertex:function(e,t,i){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,s=this.object.geometry.normals;IB.fromArray(r,e),UI.fromArray(r,t),yB.fromArray(r,i),Aa.subVectors(yB,UI),CB.subVectors(IB,UI),Aa.cross(CB),Aa.normalize(),s.push(Aa.x,Aa.y,Aa.z),s.push(Aa.x,Aa.y,Aa.z),s.push(Aa.x,Aa.y,Aa.z)},addColor:function(e,t,i){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[i]!==void 0&&s.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,s,a,o,l,c){let f=this.vertices.length,d=this.parseVertexIndex(e,f),h=this.parseVertexIndex(t,f),u=this.parseVertexIndex(i,f);if(this.addVertex(d,h,u),this.addColor(d,h,u),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),h=this.parseNormalIndex(l,m),u=this.parseNormalIndex(c,m),this.addNormal(d,h,u)}else this.addFaceNormal(d,h,u);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),h=this.parseUVIndex(s,m),u=this.parseUVIndex(a,m),this.addUV(d,h,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i{ts();Hse=/^[og]\s*(.+)?/,zse=/^mtllib /,Xse=/^usemtl /,Yse=/^usemap /,MB=/\s+/,IB=new se,UI=new se,yB=new se,CB=new se,Aa=new se,pT=new ft;_T=class extends dn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new Kse;e.indexOf(`\r +}`,FI=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new b_(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,i=new Js({vertexShader:yse,fragmentShader:Cse,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new li(new Ld(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},BI=class extends Sa{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,h=null,u=null,m=null,_=typeof XRWebGLBinding!="undefined",p=new FI,g={},v=t.getContextAttributes(),x=null,S=null,E=[],T=[],R=new Mt,M=null,y=new dr;y.viewport=new ir;let C=new dr;C.viewport=new ir;let L=[y,C],w=new dS,G=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getTargetRaySpace()},this.getControllerGrip=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getGripSpace()},this.getHand=function(ae){let me=E[ae];return me===void 0&&(me=new Eu,E[ae]=me),me.getHandSpace()};function N(ae){let me=T.indexOf(ae.inputSource);if(me===-1)return;let ne=E[me];ne!==void 0&&(ne.update(ae.inputSource,ae.frame,c||a),ne.dispatchEvent({type:ae.type,data:ae.inputSource}))}function B(){r.removeEventListener("select",N),r.removeEventListener("selectstart",N),r.removeEventListener("selectend",N),r.removeEventListener("squeeze",N),r.removeEventListener("squeezestart",N),r.removeEventListener("squeezeend",N),r.removeEventListener("end",B),r.removeEventListener("inputsourceschange",V);for(let ae=0;ae=0&&(T[fe]=null,E[fe].disconnect(ne))}for(let me=0;me=T.length){T.push(ne),fe=de;break}else if(T[de]===null){T[de]=ne,fe=de;break}if(fe===-1)break}let Pe=E[fe];Pe&&Pe.connect(ne)}}let J=new se,Q=new se;function te(ae,me,ne){J.setFromMatrixPosition(me.matrixWorld),Q.setFromMatrixPosition(ne.matrixWorld);let fe=J.distanceTo(Q),Pe=me.projectionMatrix.elements,de=ne.projectionMatrix.elements,Re=Pe[14]/(Pe[10]-1),Ye=Pe[14]/(Pe[10]+1),Et=(Pe[9]+1)/Pe[5],Ke=(Pe[9]-1)/Pe[5],Ze=(Pe[8]-1)/Pe[0],Jt=(de[8]+1)/de[0],Lt=Re*Ze,xi=Re*Jt,oe=fe/(-Ze+Jt),Gi=oe*-Ze;if(me.matrixWorld.decompose(ae.position,ae.quaternion,ae.scale),ae.translateX(Gi),ae.translateZ(oe),ae.matrixWorld.compose(ae.position,ae.quaternion,ae.scale),ae.matrixWorldInverse.copy(ae.matrixWorld).invert(),Pe[10]===-1)ae.projectionMatrix.copy(me.projectionMatrix),ae.projectionMatrixInverse.copy(me.projectionMatrixInverse);else{let ti=Re+oe,Fi=Ye+oe,ot=Lt-Gi,Di=xi+(fe-Gi),z=Et*Ye/Fi*ti,U=Ke*Ye/Fi*ti;ae.projectionMatrix.makePerspective(ot,Di,z,U,ti,Fi),ae.projectionMatrixInverse.copy(ae.projectionMatrix).invert()}}function X(ae,me){me===null?ae.matrixWorld.copy(ae.matrix):ae.matrixWorld.multiplyMatrices(me.matrixWorld,ae.matrix),ae.matrixWorldInverse.copy(ae.matrixWorld).invert()}this.updateCamera=function(ae){if(r===null)return;let me=ae.near,ne=ae.far;p.texture!==null&&(p.depthNear>0&&(me=p.depthNear),p.depthFar>0&&(ne=p.depthFar)),w.near=C.near=y.near=me,w.far=C.far=y.far=ne,(G!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),G=w.near,O=w.far),w.layers.mask=ae.layers.mask|6,y.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let fe=ae.parent,Pe=w.cameras;X(w,fe);for(let de=0;de{function St(){if(Te.forEach(function(Rt){z.get(Rt).currentProgram.isReady()&&Te.delete(Rt)}),Te.size===0){Ae(H);return}setTimeout(St,10)}ti.get("KHR_parallel_shader_compile")!==null?St():setTimeout(St,10)})};let za=null;function Yp(H){za&&za(H)}function qM(){md.stop()}function $v(){md.start()}let md=new gB;md.setAnimationLoop(Yp),typeof self!="undefined"&&md.setContext(self),this.setAnimationLoop=function(H){za=H,qe.setAnimationLoop(H),H===null?md.stop():md.start()},qe.addEventListener("sessionstart",qM),qe.addEventListener("sessionend",$v),this.render=function(H,he){if(he!==void 0&&he.isCamera!==!0){Bt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(L===!0)return;w!==null&&w.renderStart(H,he);let be=qe.enabled===!0&&qe.isPresenting===!0,Te=y!==null&&(N===null||be)&&y.begin(C,N);if(H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),he.parent===null&&he.matrixWorldAutoUpdate===!0&&he.updateMatrixWorld(),qe.enabled===!0&&qe.isPresenting===!0&&(y===null||y.isCompositing()===!1)&&(qe.cameraAutoUpdate===!0&&qe.updateCamera(he),he=qe.getCamera()),H.isScene===!0&&H.onBeforeRender(C,H,he,N),T=ct.get(H,M.length),T.init(he),T.state.textureUnits=U.getTextureUnits(),M.push(T),Et.multiplyMatrices(he.projectionMatrix,he.matrixWorldInverse),de.setFromProjectionMatrix(Et,Ja,he.reversedDepth),Ye=this.localClippingEnabled,Re=Tt.init(this.clippingPlanes,Ye),E=Me.get(H,R.length),E.init(),R.push(E),qe.enabled===!0&&qe.isPresenting===!0){let Rt=C.xr.getDepthSensingMesh();Rt!==null&&ZM(Rt,he,-1/0,C.sortObjects)}ZM(H,he,0,C.sortObjects),E.finish(),C.sortObjects===!0&&E.sort(ae,me),Lt=qe.enabled===!1||qe.isPresenting===!1||qe.hasDepthSensing()===!1,Lt&&$e.addToRenderList(E,H),this.info.render.frame++,Re===!0&&Tt.beginShadows();let Ae=T.state.shadowsArray;if(nt.render(Ae,H,he),Re===!0&&Tt.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Te&&y.hasRenderPass())===!1){let Rt=E.opaque,_t=E.transmissive;if(T.setupLights(),he.isArrayCamera){let Ct=he.cameras;if(_t.length>0)for(let Dt=0,ci=Ct.length;Dt0&&XF(Rt,_t,H,he),Lt&&$e.render(H),zF(E,H,he)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Te&&y.end(C),H.isScene===!0&&H.onAfterRender(C,H,he),De.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(T=M[M.length-1],U.setTextureUnits(T.state.textureUnits),Re===!0&&Tt.setGlobalState(C.clippingPlanes,T.state.camera)):T=null,R.pop(),R.length>0?E=R[R.length-1]:E=null,w!==null&&w.renderEnd()};function ZM(H,he,be,Te){if(H.visible===!1)return;if(H.layers.test(he.layers)){if(H.isGroup)be=H.renderOrder;else if(H.isLOD)H.autoUpdate===!0&&H.update(he);else if(H.isLightProbeGrid)T.pushLightProbeGrid(H);else if(H.isLight)T.pushLight(H),H.castShadow&&T.pushShadow(H);else if(H.isSprite){if(!H.frustumCulled||de.intersectsSprite(H)){Te&&Ze.setFromMatrixPosition(H.matrixWorld).applyMatrix4(Et);let Rt=et.update(H),_t=H.material;_t.visible&&E.push(H,Rt,_t,be,Ze.z,null)}}else if((H.isMesh||H.isLine||H.isPoints)&&(!H.frustumCulled||de.intersectsObject(H))){let Rt=et.update(H),_t=H.material;if(Te&&(H.boundingSphere!==void 0?(H.boundingSphere===null&&H.computeBoundingSphere(),Ze.copy(H.boundingSphere.center)):(Rt.boundingSphere===null&&Rt.computeBoundingSphere(),Ze.copy(Rt.boundingSphere.center)),Ze.applyMatrix4(H.matrixWorld).applyMatrix4(Et)),Array.isArray(_t)){let Ct=Rt.groups;for(let Dt=0,ci=Ct.length;Dt0&&Jv(Ae,he,be),St.length>0&&Jv(St,he,be),Rt.length>0&&Jv(Rt,he,be),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function XF(H,he,be,Te){if((be.isScene===!0?be.overrideMaterial:null)!==null)return;if(T.state.transmissionRenderTarget[Te.id]===void 0){let Ot=ti.has("EXT_color_buffer_half_float")||ti.has("EXT_color_buffer_float");T.state.transmissionRenderTarget[Te.id]=new $s(1,1,{generateMipmaps:!0,type:Ot?$o:bs,minFilter:so,samples:Math.max(4,Fi.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:ai.workingColorSpace})}let St=T.state.transmissionRenderTarget[Te.id],Rt=Te.viewport||J;St.setSize(Rt.z*C.transmissionResolutionScale,Rt.w*C.transmissionResolutionScale);let _t=C.getRenderTarget(),Ct=C.getActiveCubeFace(),Dt=C.getActiveMipmapLevel();C.setRenderTarget(St),C.getClearColor(X),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Lt&&$e.render(be);let ci=C.toneMapping;C.toneMapping=Rs;let ui=Te.viewport;if(Te.viewport!==void 0&&(Te.viewport=void 0),T.setupLightsView(Te),Re===!0&&Tt.setGlobalState(C.clippingPlanes,Te),Jv(H,be,Te),U.updateMultisampleRenderTarget(St),U.updateRenderTargetMipmap(St),ti.has("WEBGL_multisampled_render_to_texture")===!1){let Ot=!1;for(let er=0,Lr=he.length;er0,Te.currentProgram=ui,Te.uniformsList=null,ui}function KF(H){if(H.uniformsList===null){let he=H.currentProgram.getUniforms();H.uniformsList=Bu.seqWithValue(he.seq,H.uniforms)}return H.uniformsList}function jF(H,he){let be=z.get(H);be.outputColorSpace=he.outputColorSpace,be.batching=he.batching,be.batchingColor=he.batchingColor,be.instancing=he.instancing,be.instancingColor=he.instancingColor,be.instancingMorph=he.instancingMorph,be.skinning=he.skinning,be.morphTargets=he.morphTargets,be.morphNormals=he.morphNormals,be.morphColors=he.morphColors,be.morphTargetsCount=he.morphTargetsCount,be.numClippingPlanes=he.numClippingPlanes,be.numIntersection=he.numClipIntersection,be.vertexAlphas=he.vertexAlphas,be.vertexTangents=he.vertexTangents,be.toneMapping=he.toneMapping}function mJ(H,he){if(H.length===0)return null;if(H.length===1)return H[0].texture!==null?H[0]:null;S.setFromMatrixPosition(he.matrixWorld);for(let be=0,Te=H.length;be0),Ot=!!be.morphAttributes.position,er=!!be.morphAttributes.normal,Lr=!!be.morphAttributes.color,yr=Rs;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(yr=C.toneMapping);let sr=be.morphAttributes.position||be.morphAttributes.normal||be.morphAttributes.color,Cn=sr!==void 0?sr.length:0,xt=z.get(Te),Ks=T.state.lights;if(Re===!0&&(Ye===!0||H!==V)){let fr=H===V&&Te.id===B;Tt.setState(Te,H,fr)}let Bi=!1;Te.version===xt.__version?(xt.needsLights&&xt.lightsStateVersion!==Ks.state.version||xt.outputColorSpace!==_t||Ae.isBatchedMesh&&xt.batching===!1||!Ae.isBatchedMesh&&xt.batching===!0||Ae.isBatchedMesh&&xt.batchingColor===!0&&Ae.colorTexture===null||Ae.isBatchedMesh&&xt.batchingColor===!1&&Ae.colorTexture!==null||Ae.isInstancedMesh&&xt.instancing===!1||!Ae.isInstancedMesh&&xt.instancing===!0||Ae.isSkinnedMesh&&xt.skinning===!1||!Ae.isSkinnedMesh&&xt.skinning===!0||Ae.isInstancedMesh&&xt.instancingColor===!0&&Ae.instanceColor===null||Ae.isInstancedMesh&&xt.instancingColor===!1&&Ae.instanceColor!==null||Ae.isInstancedMesh&&xt.instancingMorph===!0&&Ae.morphTexture===null||Ae.isInstancedMesh&&xt.instancingMorph===!1&&Ae.morphTexture!==null||xt.envMap!==Dt||Te.fog===!0&&xt.fog!==St||xt.numClippingPlanes!==void 0&&(xt.numClippingPlanes!==Tt.numPlanes||xt.numIntersection!==Tt.numIntersection)||xt.vertexAlphas!==ci||xt.vertexTangents!==ui||xt.morphTargets!==Ot||xt.morphNormals!==er||xt.morphColors!==Lr||xt.toneMapping!==yr||xt.morphTargetsCount!==Cn||!!xt.lightProbeGrid!=T.state.lightProbeGridArray.length>0)&&(Bi=!0):(Bi=!0,xt.__version=Te.version);let _a=xt.currentProgram;Bi===!0&&(_a=eE(Te,he,Ae),w&&Te.isNodeMaterial&&w.onUpdateProgram(Te,_a,xt));let Vo=!1,Vc=!1,Hh=!1,ar=_a.getUniforms(),Or=xt.uniforms;if(ot.useProgram(_a.program)&&(Vo=!0,Vc=!0,Hh=!0),Te.id!==B&&(B=Te.id,Vc=!0),xt.needsLights){let fr=mJ(T.state.lightProbeGridArray,Ae);xt.lightProbeGrid!==fr&&(xt.lightProbeGrid=fr,Vc=!0)}if(Vo||V!==H){ot.buffers.depth.getReversed()&&H.reversedDepth!==!0&&(H._reversedDepth=!0,H.updateProjectionMatrix()),ar.setValue(oe,"projectionMatrix",H.projectionMatrix),ar.setValue(oe,"viewMatrix",H.matrixWorldInverse);let kc=ar.map.cameraPosition;kc!==void 0&&kc.setValue(oe,Ke.setFromMatrixPosition(H.matrixWorld)),Fi.logarithmicDepthBuffer&&ar.setValue(oe,"logDepthBufFC",2/(Math.log(H.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&ar.setValue(oe,"isOrthographic",H.isOrthographicCamera===!0),V!==H&&(V=H,Vc=!0,Hh=!0)}if(xt.needsLights&&(Ks.state.directionalShadowMap.length>0&&ar.setValue(oe,"directionalShadowMap",Ks.state.directionalShadowMap,U),Ks.state.spotShadowMap.length>0&&ar.setValue(oe,"spotShadowMap",Ks.state.spotShadowMap,U),Ks.state.pointShadowMap.length>0&&ar.setValue(oe,"pointShadowMap",Ks.state.pointShadowMap,U)),Ae.isSkinnedMesh){ar.setOptional(oe,Ae,"bindMatrix"),ar.setOptional(oe,Ae,"bindMatrixInverse");let fr=Ae.skeleton;fr&&(fr.boneTexture===null&&fr.computeBoneTexture(),ar.setValue(oe,"boneTexture",fr.boneTexture,U))}Ae.isBatchedMesh&&(ar.setOptional(oe,Ae,"batchingTexture"),ar.setValue(oe,"batchingTexture",Ae._matricesTexture,U),ar.setOptional(oe,Ae,"batchingIdTexture"),ar.setValue(oe,"batchingIdTexture",Ae._indirectTexture,U),ar.setOptional(oe,Ae,"batchingColorTexture"),Ae._colorsTexture!==null&&ar.setValue(oe,"batchingColorTexture",Ae._colorsTexture,U));let Gc=be.morphAttributes;if((Gc.position!==void 0||Gc.normal!==void 0||Gc.color!==void 0)&&Wt.update(Ae,be,_a),(Vc||xt.receiveShadow!==Ae.receiveShadow)&&(xt.receiveShadow=Ae.receiveShadow,ar.setValue(oe,"receiveShadow",Ae.receiveShadow)),(Te.isMeshStandardMaterial||Te.isMeshLambertMaterial||Te.isMeshPhongMaterial)&&Te.envMap===null&&he.environment!==null&&(Or.envMapIntensity.value=he.environmentIntensity),Or.dfgLUT!==void 0&&(Or.dfgLUT.value=Nse()),Vc){if(ar.setValue(oe,"toneMappingExposure",C.toneMappingExposure),xt.needsLights&&_J(Or,Hh),St&&Te.fog===!0&&Ce.refreshFogUniforms(Or,St),Ce.refreshMaterialUniforms(Or,Te,Ue,Ee,T.state.transmissionRenderTarget[H.id]),xt.needsLights&&xt.lightProbeGrid){let fr=xt.lightProbeGrid;Or.probesSH.value=fr.texture,Or.probesMin.value.copy(fr.boundingBox.min),Or.probesMax.value.copy(fr.boundingBox.max),Or.probesResolution.value.copy(fr.resolution)}Bu.upload(oe,KF(xt),Or,U)}if(Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(Bu.upload(oe,KF(xt),Or,U),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&ar.setValue(oe,"center",Ae.center),ar.setValue(oe,"modelViewMatrix",Ae.modelViewMatrix),ar.setValue(oe,"normalMatrix",Ae.normalMatrix),ar.setValue(oe,"modelMatrix",Ae.matrixWorld),Te.uniformsGroups!==void 0){let fr=Te.uniformsGroups;for(let kc=0,zh=fr.length;kc0&&U.useMultisampledRTT(H)===!1?Te=z.get(H).__webglMultisampledFramebuffer:Array.isArray(Dt)?Te=Dt[be]:Te=Dt,J.copy(H.viewport),Q.copy(H.scissor),te=H.scissorTest}else J.copy(ne).multiplyScalar(Ue).floor(),Q.copy(fe).multiplyScalar(Ue).floor(),te=Pe;if(be!==0&&(Te=vJ),ot.bindFramebuffer(oe.FRAMEBUFFER,Te)&&ot.drawBuffers(H,Te),ot.viewport(J),ot.scissor(Q),ot.setScissorTest(te),Ae){let _t=z.get(H.texture);oe.framebufferTexture2D(oe.FRAMEBUFFER,oe.COLOR_ATTACHMENT0,oe.TEXTURE_CUBE_MAP_POSITIVE_X+he,_t.__webglTexture,be)}else if(St){let _t=he;for(let Ct=0;Ct1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+_t),!Fi.textureFormatReadable(ci)){Bt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Fi.textureTypeReadable(ui)){Bt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}he>=0&&he<=H.width-Te&&be>=0&&be<=H.height-Ae&&oe.readPixels(he,be,Te,Ae,K.convert(ci),K.convert(ui),St)}finally{let Dt=N!==null?z.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,Dt)}}},this.readRenderTargetPixelsAsync=async function(H,he,be,Te,Ae,St,Rt,_t=0){if(!(H&&H.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ct=z.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Rt!==void 0&&(Ct=Ct[Rt]),Ct)if(he>=0&&he<=H.width-Te&&be>=0&&be<=H.height-Ae){ot.bindFramebuffer(oe.FRAMEBUFFER,Ct);let Dt=H.textures[_t],ci=Dt.format,ui=Dt.type;if(H.textures.length>1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+_t),!Fi.textureFormatReadable(ci))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Fi.textureTypeReadable(ui))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Ot=oe.createBuffer();oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Ot),oe.bufferData(oe.PIXEL_PACK_BUFFER,St.byteLength,oe.STREAM_READ),oe.readPixels(he,be,Te,Ae,K.convert(ci),K.convert(ui),0);let er=N!==null?z.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,er);let Lr=oe.fenceSync(oe.SYNC_GPU_COMMANDS_COMPLETE,0);return oe.flush(),await H3(oe,Lr,4),oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Ot),oe.getBufferSubData(oe.PIXEL_PACK_BUFFER,0,St),oe.deleteBuffer(Ot),oe.deleteSync(Lr),St}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(H,he=null,be=0){let Te=Math.pow(2,-be),Ae=Math.floor(H.image.width*Te),St=Math.floor(H.image.height*Te),Rt=he!==null?he.x:0,_t=he!==null?he.y:0;U.setTexture2D(H,0),oe.copyTexSubImage2D(oe.TEXTURE_2D,be,0,0,Rt,_t,Ae,St),ot.unbindTexture()};let EJ=oe.createFramebuffer(),SJ=oe.createFramebuffer();this.copyTextureToTexture=function(H,he,be=null,Te=null,Ae=0,St=0){let Rt,_t,Ct,Dt,ci,ui,Ot,er,Lr,yr=H.isCompressedTexture?H.mipmaps[St]:H.image;if(be!==null)Rt=be.max.x-be.min.x,_t=be.max.y-be.min.y,Ct=be.isBox3?be.max.z-be.min.z:1,Dt=be.min.x,ci=be.min.y,ui=be.isBox3?be.min.z:0;else{let Or=Math.pow(2,-Ae);Rt=Math.floor(yr.width*Or),_t=Math.floor(yr.height*Or),H.isDataArrayTexture?Ct=yr.depth:H.isData3DTexture?Ct=Math.floor(yr.depth*Or):Ct=1,Dt=0,ci=0,ui=0}Te!==null?(Ot=Te.x,er=Te.y,Lr=Te.z):(Ot=0,er=0,Lr=0);let sr=K.convert(he.format),Cn=K.convert(he.type),xt;he.isData3DTexture?(U.setTexture3D(he,0),xt=oe.TEXTURE_3D):he.isDataArrayTexture||he.isCompressedArrayTexture?(U.setTexture2DArray(he,0),xt=oe.TEXTURE_2D_ARRAY):(U.setTexture2D(he,0),xt=oe.TEXTURE_2D),ot.activeTexture(oe.TEXTURE0),ot.pixelStorei(oe.UNPACK_FLIP_Y_WEBGL,he.flipY),ot.pixelStorei(oe.UNPACK_PREMULTIPLY_ALPHA_WEBGL,he.premultiplyAlpha),ot.pixelStorei(oe.UNPACK_ALIGNMENT,he.unpackAlignment);let Ks=ot.getParameter(oe.UNPACK_ROW_LENGTH),Bi=ot.getParameter(oe.UNPACK_IMAGE_HEIGHT),_a=ot.getParameter(oe.UNPACK_SKIP_PIXELS),Vo=ot.getParameter(oe.UNPACK_SKIP_ROWS),Vc=ot.getParameter(oe.UNPACK_SKIP_IMAGES);ot.pixelStorei(oe.UNPACK_ROW_LENGTH,yr.width),ot.pixelStorei(oe.UNPACK_IMAGE_HEIGHT,yr.height),ot.pixelStorei(oe.UNPACK_SKIP_PIXELS,Dt),ot.pixelStorei(oe.UNPACK_SKIP_ROWS,ci),ot.pixelStorei(oe.UNPACK_SKIP_IMAGES,ui);let Hh=H.isDataArrayTexture||H.isData3DTexture,ar=he.isDataArrayTexture||he.isData3DTexture;if(H.isDepthTexture){let Or=z.get(H),Gc=z.get(he),fr=z.get(Or.__renderTarget),kc=z.get(Gc.__renderTarget);ot.bindFramebuffer(oe.READ_FRAMEBUFFER,fr.__webglFramebuffer),ot.bindFramebuffer(oe.DRAW_FRAMEBUFFER,kc.__webglFramebuffer);for(let zh=0;zh{ts();RB={type:"change"},VI={type:"start"},MB={type:"end"},hT=new zo,bB=new va,wse=Math.cos(70*Y_.DEG2RAD),en=new se,Ms=2*Math.PI,rr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},UI=1e-6,uT=class extends w_{constructor(e,t=null){super(e,t),this.state=rr.NONE,this.target=new se,this.cursor=new se,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:tf.ROTATE,MIDDLE:tf.DOLLY,RIGHT:tf.PAN},this.touches={ONE:rf.ROTATE,TWO:rf.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new se,this._lastQuaternion=new Qr,this._lastTargetPosition=new se,this._quat=new Qr().setFromUnitVectors(e.up,new se(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new yu,this._sphericalDelta=new yu,this._scale=1,this._panOffset=new se,this._rotateStart=new Mt,this._rotateEnd=new Mt,this._rotateDelta=new Mt,this._panStart=new Mt,this._panEnd=new Mt,this._panDelta=new Mt,this._dollyStart=new Mt,this._dollyEnd=new Mt,this._dollyDelta=new Mt,this._dollyDirection=new se,this._mouse=new Mt,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Bse.bind(this),this._onPointerDown=Fse.bind(this),this._onPointerUp=Use.bind(this),this._onContextMenu=Xse.bind(this),this._onMouseWheel=kse.bind(this),this._onKeyDown=Wse.bind(this),this._onTouchStart=Hse.bind(this),this._onTouchMove=zse.bind(this),this._onMouseDown=Vse.bind(this),this._onMouseMove=Gse.bind(this),this._interceptControlDown=Yse.bind(this),this._interceptControlUp=Kse.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(RB),this.update(),this.state=rr.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let t=this.object.position;en.copy(t).sub(this.target),en.applyQuaternion(this._quat),this._spherical.setFromVector3(en),this.autoRotate&&this.state===rr.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(i)&&isFinite(r)&&(i<-Math.PI?i+=Ms:i>Math.PI&&(i-=Ms),r<-Math.PI?r+=Ms:r>Math.PI&&(r-=Ms),i<=r?this._spherical.theta=Math.max(i,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+r)/2?Math.max(i,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(en.setFromSpherical(this._spherical),en.applyQuaternion(this._quatInverse),t.copy(this.target).add(en),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){let o=en.length();a=this._clampDistance(o*this._scale);let l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){let o=new se(this._mouse.x,this._mouse.y,0);o.unproject(this.object);let l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;let c=new se(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=en.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(hT.origin.copy(this.object.position),hT.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(hT.direction))UI||8*(1-this._lastQuaternion.dot(this.object.quaternion))>UI||this._lastTargetPosition.distanceToSquared(this.target)>UI?(this.dispatchEvent(RB),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Ms/60*this.autoRotateSpeed*e:Ms/60/60*this.autoRotateSpeed}_getZoomScale(e){let t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){en.setFromMatrixColumn(t,0),en.multiplyScalar(-e),this._panOffset.add(en)}_panUp(e,t){this.screenSpacePanning===!0?en.setFromMatrixColumn(t,1):(en.setFromMatrixColumn(t,0),en.crossVectors(this.object.up,en)),en.multiplyScalar(e),this._panOffset.add(en)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;en.copy(r).sub(this.target);let s=en.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/i.clientHeight,this.object.matrix),this._panUp(2*t*s/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let i=this.domElement.getBoundingClientRect(),r=e-i.left,s=t-i.top,a=i.width,o=i.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Ms*this._rotateDelta.x/t.clientHeight),this._rotateUp(Ms*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Ms*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(i,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(i,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let i=this._getSecondPointerPosition(e),r=.5*(e.pageX+i.x),s=.5*(e.pageY+i.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Ms*this._rotateDelta.x/t.clientHeight),this._rotateUp(Ms*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(i,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t{ts();mT=class extends Cd{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new $c;e.deleteAttribute("uv");let t=new En({side:Sn}),i=new En,r=new ro(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new li(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new Dd(e,i,6),o=new zi;o.position.set(-10.906,2.009,1.846),o.rotation.set(0,-.195,0),o.scale.set(2.328,7.905,4.651),o.updateMatrix(),a.setMatrixAt(0,o.matrix),o.position.set(-5.607,-.754,-.758),o.rotation.set(0,.994,0),o.scale.set(1.97,1.534,3.955),o.updateMatrix(),a.setMatrixAt(1,o.matrix),o.position.set(6.167,.857,7.803),o.rotation.set(0,.561,0),o.scale.set(3.927,6.285,3.687),o.updateMatrix(),a.setMatrixAt(2,o.matrix),o.position.set(-2.017,.018,6.124),o.rotation.set(0,.333,0),o.scale.set(2.002,4.566,2.064),o.updateMatrix(),a.setMatrixAt(3,o.matrix),o.position.set(2.291,-.756,-2.621),o.rotation.set(0,-.286,0),o.scale.set(1.546,1.552,1.496),o.updateMatrix(),a.setMatrixAt(4,o.matrix),o.position.set(-2.193,-.369,-5.547),o.rotation.set(0,.516,0),o.scale.set(3.875,3.487,2.986),o.updateMatrix(),a.setMatrixAt(5,o.matrix),this.add(a);let l=new li(e,Gu(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new li(e,Gu(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new li(e,Gu(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new li(e,Gu(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let h=new li(e,Gu(20));h.position.set(3.235,11.486,-12.541),h.scale.set(2.5,2,.1),this.add(h);let u=new li(e,Gu(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){let e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(let t of e)t.dispose()}}});var pT,GI,CB=I(()=>{ts();pT=class extends dn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?no.extractUrlBase(e):this.path,o=new As(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{t(s.parse(l,a))}catch(c){r?r(c):console.error(c),s.manager.itemError(e)}},i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split(` +`),r={},s=/\s+/,a={};for(let l=0;l=0?c.substring(0,f):c;d=d.toLowerCase();let h=f>=0?c.substring(f+1):"";if(h=h.trim(),d==="newmtl")r={name:h},a[h]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let u=h.split(s,3);r[d]=[parseFloat(u[0]),parseFloat(u[1]),parseFloat(u[2])]}else r[d]=h}let o=new GI(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},GI=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:Qs,this.wrap=this.options.wrap!==void 0?this.options.wrap:Wo}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],s={};t[i]=s;for(let a in r){let o=!0,l=r[a],c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break;default:break}o&&(s[c]=l)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function s(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(r[o])return;let c=t.getTextureParams(l,r),f=t.loadTexture(s(t.baseUrl,c.url));f.repeat.copy(c.scale),f.offset.copy(c.offset),f.wrapS=t.wrap,f.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(f.colorSpace=Mi),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"ks":r.specular=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"ke":r.emissive=ai.colorSpaceToWorking(new ft().fromArray(l),Mi);break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"disp":a("displacementMap",l);break;case"map_d":a("alphaMap",l),r.transparent=!0;break;case"ns":r.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(r.opacity=c,r.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(r.opacity=1-c,r.transparent=!0);break;default:break}}return this.materials[e]=new Od(r),this.materials[e]}getTextureParams(e,t){let i={scale:new Mt(1,1),offset:new Mt(0,0)},r=e.split(/\s+/),s;return s=r.indexOf("-bm"),s>=0&&(t.bumpScale=parseFloat(r[s+1]),r.splice(s,2)),s=r.indexOf("-mm"),s>=0&&(t.displacementBias=parseFloat(r[s+1]),t.displacementScale=parseFloat(r[s+2]),r.splice(s,3)),s=r.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),s=r.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),i.url=r.join(" ").trim(),i}loadTexture(e,t,i,r,s){let a=this.manager!==void 0?this.manager:sT,o=a.getHandler(e);o===null&&(o=new wd(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function $se(){let n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);let o={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){let r=i.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseNormalIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseUVIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/2)*2},addVertex:function(e,t,i){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,s=this.object.geometry.normals;DB.fromArray(r,e),kI.fromArray(r,t),LB.fromArray(r,i),Aa.subVectors(LB,kI),OB.subVectors(DB,kI),Aa.cross(OB),Aa.normalize(),s.push(Aa.x,Aa.y,Aa.z),s.push(Aa.x,Aa.y,Aa.z),s.push(Aa.x,Aa.y,Aa.z)},addColor:function(e,t,i){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[i]!==void 0&&s.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,s,a,o,l,c){let f=this.vertices.length,d=this.parseVertexIndex(e,f),h=this.parseVertexIndex(t,f),u=this.parseVertexIndex(i,f);if(this.addVertex(d,h,u),this.addColor(d,h,u),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),h=this.parseNormalIndex(l,m),u=this.parseNormalIndex(c,m),this.addNormal(d,h,u)}else this.addFaceNormal(d,h,u);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),h=this.parseUVIndex(s,m),u=this.parseUVIndex(a,m),this.addUV(d,h,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i{ts();jse=/^[og]\s*(.+)?/,qse=/^mtllib /,Zse=/^usemtl /,Qse=/^usemap /,PB=/\s+/,DB=new se,kI=new se,LB=new se,OB=new se,Aa=new se,_T=new ft;gT=class extends dn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new $se;e.indexOf(`\r `)!==-1&&(e=e.replace(/\r\n/g,` `)),e.indexOf(`\\ `)!==-1&&(e=e.replace(/\\\n/g,""));let i=e.split(` -`),r=[];for(let o=0,l=i.length;o=7?(pT.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Mi),t.colors.push(pT.r,pT.g,pT.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":t.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(f==="f"){let h=c.slice(1).trim().split(MB),u=[];for(let _=0,p=h.length;_0){let v=g.split("/");u.push(v)}}let m=u[0];for(let _=1,p=u.length-1;_1){let h=r[1].trim().toLowerCase();t.object.smooth=h!=="0"&&h!=="off"}else t.object.smooth=!0;let d=t.object.currentMaterial();d&&(d.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();let s=new Zs;if(s.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o0&&_.setAttribute("normal",new fi(f.normals,3)),f.colors.length>0&&(m=!0,_.setAttribute("color",new fi(f.colors,3))),f.hasUVIndices===!0&&_.setAttribute("uv",new fi(f.uvs,2));let p=[];for(let v=0,x=d.length;v1){for(let v=0,x=d.length;v0){let o=new vs({size:1,sizeAttenuation:!1}),l=new Xi;l.setAttribute("position",new fi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new fi(t.colors,3)),o.vertexColors=!0);let c=new Es(l,o);s.add(c)}return s}}});var Is,gT,VI,DB=I(()=>{ts();Is=new ft,gT=class extends dn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(p,g=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,x="",S=v.exec(p);S!==null&&(x=S[1]);let E={comments:[],elements:[],headerLength:g,objInfo:""},T=x.split(/\r\n|\r|\n/),R;function M(y,C){let L={type:y[0]};return L.type==="list"?(L.name=y[3],L.countType=y[1],L.itemType=y[2]):L.name=y[1],L.name in C&&(L.name=C[L.name]),L}for(let y=0;yx.name);function v(x){for(let S=0,E=x.length;S0&&g.setIndex(p.indices),g.setAttribute("position",new fi(p.vertices,3)),p.normals.length>0&&g.setAttribute("normal",new fi(p.normals,3)),p.uvs.length>0&&g.setAttribute("uv",new fi(p.uvs,2)),p.colors.length>0&&g.setAttribute("color",new fi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(g=g.toNonIndexed(),p.faceVertexUvs.length>0&&g.setAttribute("uv",new fi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&g.setAttribute("color",new fi(p.faceVertexColors,3)));for(let v of Object.keys(_.customPropertyMapping))p[v].length>0&&g.setAttribute(v,new fi(p[v],_.customPropertyMapping[v].length));return g.computeBoundingSphere(),g}function c(p,g,v,x){if(g==="vertex"){p.vertices.push(v[x.attrX],v[x.attrY],v[x.attrZ]),x.attrNX!==null&&x.attrNY!==null&&x.attrNZ!==null&&p.normals.push(v[x.attrNX],v[x.attrNY],v[x.attrNZ]),x.attrS!==null&&x.attrT!==null&&p.uvs.push(v[x.attrS],v[x.attrT]),x.attrR!==null&&x.attrG!==null&&x.attrB!==null&&(Is.setRGB(v[x.attrR]/255,v[x.attrG]/255,v[x.attrB]/255,Mi),p.colors.push(Is.r,Is.g,Is.b));for(let S of Object.keys(_.customPropertyMapping))for(let E of _.customPropertyMapping[S])p[S].push(v[E])}else if(g==="face"){let S=v.vertex_indices||v.vertex_index,E=v.texcoord;S.length===3?(p.indices.push(S[0],S[1],S[2]),E&&E.length===6&&(p.faceVertexUvs.push(E[0],E[1]),p.faceVertexUvs.push(E[2],E[3]),p.faceVertexUvs.push(E[4],E[5]))):S.length===4&&(p.indices.push(S[0],S[1],S[3]),p.indices.push(S[1],S[2],S[3])),x.attrR!==null&&x.attrG!==null&&x.attrB!==null&&(Is.setRGB(v[x.attrR]/255,v[x.attrG]/255,v[x.attrB]/255,Mi),p.faceVertexColors.push(Is.r,Is.g,Is.b),p.faceVertexColors.push(Is.r,Is.g,Is.b),p.faceVertexColors.push(Is.r,Is.g,Is.b))}}function f(p,g){let v={},x=0;for(let S=0;SS.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>S.getUint8(R),size:1};case"int16":case"short":return{read:R=>S.getInt16(R,T),size:2};case"uint16":case"ushort":return{read:R=>S.getUint16(R,T),size:2};case"int32":case"int":return{read:R=>S.getInt32(R,T),size:4};case"uint32":case"uint":return{read:R=>S.getUint32(R,T),size:4};case"float32":case"float":return{read:R=>S.getFloat32(R,T),size:4};case"float64":case"double":return{read:R=>S.getFloat64(R,T),size:8}}}for(let S=0,E=p.length;S=this.arr.length}next(){return this.arr[this.i++]}}});var vT,LB=I(()=>{ts();vT=class extends dn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}parse(e){function t(c){let f=new DataView(c),d=32/8*3+32/8*3*3+16/8,h=f.getUint32(80,!0);if(80+32/8+h*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let _=0;_<5;_++)if(i(m,f,_))return!1;return!0}function i(c,f,d){for(let h=0,u=c.length;h>5&31)/31,m=(B>>10&31)/31):(h=g,u=v,m=x)}for(let B=1;B<=3;B++){let V=w+B*12,J=L*3*3+(B-1)*3;M[J]=f.getFloat32(V,!0),M[J+1]=f.getFloat32(V+4,!0),M[J+2]=f.getFloat32(V+8,!0),y[J]=G,y[J+1]=O,y[J+2]=N,_&&(C.setRGB(h,u,m,Mi),p[J]=C.r,p[J+1]=C.g,p[J+2]=C.b)}}return R.setAttribute("position",new hr(M,3)),R.setAttribute("normal",new hr(y,3)),_&&(R.setAttribute("color",new hr(p,3)),R.hasColors=!0,R.alpha=S),R}function s(c){let f=new Xi,d=/solid([\s\S]*?)endsolid/g,h=/facet([\s\S]*?)endfacet/g,u=/solid\s(.+)/,m=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+_+_+_,"g"),g=new RegExp("normal"+_+_+_,"g"),v=[],x=[],S=[],E=new se,T,R=0,M=0,y=0;for(;(T=d.exec(c))!==null;){M=y;let C=T[0],L=(T=u.exec(C))!==null?T[1]:"";for(S.push(L);(T=h.exec(C))!==null;){let O=0,N=0,B=T[0];for(;(T=g.exec(B))!==null;)E.x=parseFloat(T[1]),E.y=parseFloat(T[2]),E.z=parseFloat(T[3]),N++;for(;(T=p.exec(B))!==null;)v.push(parseFloat(T[1]),parseFloat(T[2]),parseFloat(T[3])),x.push(E.x,E.y,E.z),O++,y++;N!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+m),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+m),m++}let w=M,G=y-M;f.userData.groupNames=S,f.addGroup(w,G,R),R++}return f.setAttribute("position",new fi(v,3)),f.setAttribute("normal",new fi(x,3)),f}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){let f=new Uint8Array(c.length);for(let d=0;d{ts()});function NB(n){let e=new Map,t=new Map,i=n.clone();return wB(n,i,function(r,s){e.set(s,r),t.set(r,s)}),i.traverse(function(r){if(!r.isSkinnedMesh)return;let s=r,a=e.get(r),o=a.skeleton.bones;s.skeleton=a.skeleton.clone(),s.bindMatrix.copy(a.bindMatrix),s.skeleton.bones=o.map(function(l){return t.get(l)}),s.bind(s.skeleton,s.bindMatrix)}),i}function wB(n,e,t){t(n,e);for(let i=0;i{});function jse(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}function Ur(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function Qse(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new En({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Qs})),n.DefaultMaterial}function Gd(n,e,t){for(let i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function tl(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function $se(n,e,t){let i=!1,r=!1,s=!1;for(let c=0,f=e.length;c0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}function rae(n,e,t){let i=e.attributes,r=new Fr;if(i.POSITION!==void 0){let o=t.json.accessors[i.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new se(l[0],l[1],l[2]),new se(c[0],c[1],c[2])),o.normalized){let f=uy(ku[o.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=e.targets;if(s!==void 0){let o=new se,l=new se;for(let c=0,f=s.length;c{ts();OB();FB();Q_=class extends dn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new KI(t)}),this.register(function(t){return new jI(t)}),this.register(function(t){return new ry(t)}),this.register(function(t){return new ny(t)}),this.register(function(t){return new sy(t)}),this.register(function(t){return new ZI(t)}),this.register(function(t){return new QI(t)}),this.register(function(t){return new $I(t)}),this.register(function(t){return new JI(t)}),this.register(function(t){return new YI(t)}),this.register(function(t){return new ey(t)}),this.register(function(t){return new qI(t)}),this.register(function(t){return new iy(t)}),this.register(function(t){return new ty(t)}),this.register(function(t){return new zI(t)}),this.register(function(t){return new ET(t,Ei.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new ET(t,Ei.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new ay(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=no.extractUrlBase(e);a=no.resolveURL(c,this.path)}else a=no.extractUrlBase(e);this.manager.itemStart(e);let o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new As(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(f){t(f),s.manager.itemEnd(e)},o)}catch(f){o(f)}},i,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,r){let s,a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===kB){try{a[Ei.KHR_BINARY_GLTF]=new oy(e)}catch(d){r&&r(d);return}s=JSON.parse(a[Ei.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new my(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f=0&&o[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(i,r)}parseAsync(e,t){let i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}};Ei={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},zI=class{constructor(e){this.parser=e,this.name=Ei.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}},ny=class{constructor(e){this.parser=e,this.name=Ei.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},sy=class{constructor(e){this.parser=e,this.name=Ei.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},ET=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){let l=r.byteOffset||0,c=r.byteLength||0,f=r.count,d=r.byteStride,h=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,h,r.mode,r.filter).then(function(u){return u.buffer}):a.ready.then(function(){let u=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(u),f,d,h,r.mode,r.filter),u})})}else return null}},ay=class{constructor(e){this.name=Ei.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;let r=t.meshes[i.mesh];for(let c of r.primitives)if(c.mode!==xa.TRIANGLES&&c.mode!==xa.TRIANGLE_STRIP&&c.mode!==xa.TRIANGLE_FAN&&c.mode!==void 0)return null;let a=i.extensions[this.name].attributes,o=[],l={};for(let c in a)o.push(this.parser.getDependency("accessor",a[c]).then(f=>(l[c]=f,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{let f=c.pop(),d=f.isGroup?f.children:[f],h=c[0].count,u=[];for(let m of d){let _=new oi,p=new se,g=new Qr,v=new se(1,1,1),x=new Dd(m.geometry,m.material,h);for(let S=0;S-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new wd(this.options.manager):this.textureLoader=new L_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new As(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(a){let o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:i,userData:{}};return Gd(s,o,r),tl(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(let l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{let l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(let[c,f]of a.children.entries())s(f,o.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&p.setY(y,T[R*l+1]),l>=3&&p.setZ(y,T[R*l+2]),l>=4&&p.setW(y,T[R*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=m}return p})}loadTexture(e){let t=this.json,i=this.options,s=t.textures[e].source,a=t.images[s],o=this.textureLoader;if(a.uri){let l=i.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){let r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(t,i).then(function(f){f.flipY=!1,f.name=a.name||o.name||"",f.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(f.name=o.uri);let h=(s.samplers||{})[a.sampler]||{};return f.magFilter=UB[h.magFilter]||wr,f.minFilter=UB[h.minFilter]||so,f.wrapS=VB[h.wrapS]||Wo,f.wrapT=VB[h.wrapT]||Wo,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Nr&&f.minFilter!==wr,r.associations.set(f,{textures:e}),f}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){let i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());let a=r.images[e],o=self.URL||self.webkitURL,l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=i.getDependency("bufferView",a.bufferView).then(function(d){c=!0;let h=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(h),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let f=Promise.resolve(l).then(function(d){return new Promise(function(h,u){let m=h;t.isImageBitmapLoader===!0&&(m=function(_){let p=new Rr(_);p.needsUpdate=!0,h(p)}),t.load(no.resolveURL(d,s.path),m,void 0,u)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),tl(d,a),d.userData.mimeType=a.mimeType||tae(a.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=f,f}assignTexture(e,t,i,r){let s=this;return this.getDependency("texture",i.index).then(function(a){if(!a)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(a=a.clone(),a.channel=i.texCoord),s.extensions[Ei.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[Ei.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[Ei.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let o="PointsMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new vs,Br.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){let o="LineBasicMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Ln,Br.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||s||a){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return En}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[Ei.KHR_MATERIALS_UNLIT]){let d=r[Ei.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ft(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let h=d.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],Jn),o.opacity=h[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Mi)),o.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,o.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",d.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ta);let f=s.alphaMode||WI.OPAQUE;if(f===WI.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===WI.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==es&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new Mt(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==es&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==es){let d=s.emissiveFactor;o.emissive=new ft().setRGB(d[0],d[1],d[2],Jn)}return s.emissiveTexture!==void 0&&a!==es&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Mi)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),tl(d,s),t.associations.set(d,{materials:e}),s.extensions&&Gd(r,d,s),d})}createUniqueName(e){let t=er.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function s(o){return i[Ei.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return GB(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&Jse(g,s),g.name=t.createUniqueName(s.name||"mesh_"+e),tl(g,s),p.extensions&&Gd(r,g,p),t.assignFinalMaterial(g),d.push(g)}for(let u=0,m=d.length;u0){let u=f.userData.pivot,m=d[0];f.pivot=new se().fromArray(u),f.position.x-=u[0],f.position.y-=u[1],f.position.z-=u[2],m.position.set(0,0,0),delete f.userData.pivot}return f})}_loadNodeShallow(e){let t=this.json,i=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let f;if(s.isBone===!0?f=new Tu:c.length>1?f=new Zs:c.length===1?f=c[0]:f=new zi,f!==c[0])for(let d=0,h=c.length;d1){let d=r.associations.get(f);r.associations.set(f,{...d})}return r.associations.get(f).nodes=e,f}),this.nodeCache[e]}loadScene(e){let t=this.extensions,i=this.json.scenes[e],r=this,s=new Zs;i.name&&(s.name=r.createUniqueName(i.name)),tl(s,i),i.extensions&&Gd(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[h,u]of r.associations)(h instanceof Br||h instanceof Rr)&&d.set(h,u);return f.traverse(h=>{let u=r.associations.get(h);u!=null&&d.set(h,u)}),d};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){let a=[],o=e.name?e.name:e.uuid,l=[];function c(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}lf[s.path]===lf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(lf[s.path]){case lf.weights:f=Ko;break;case lf.rotation:f=jo;break;case lf.translation:case lf.scale:f=qo;break;default:i.itemSize===1?f=Ko:f=qo;break}let d=r.interpolation!==void 0?Zse[r.interpolation]:Id,h=this._getArrayFromAccessor(i);for(let u=0,m=l.length;urs,X_OK:()=>Ey,access:()=>is,execFile:()=>na,getRuntimeProcess:()=>Wu,mkdir:()=>Nn,osTmpdir:()=>zd,pathBasename:()=>ra,pathDelimiter:()=>Sy,pathDirname:()=>wn,pathExtname:()=>ns,pathIsAbsolute:()=>Fn,pathJoin:()=>Ui,pathNormalize:()=>AT,readFile:()=>ia,rm:()=>Wd,stat:()=>Hd,writeFile:()=>kd});function zB(){return typeof activeWindow=="undefined"?void 0:activeWindow}function nae(){let n=zB();if(!(!n||!("require"in n)))return n.require}function Wu(){let n=zB();if(!(!n||!("process"in n)))return n.process}function TT(n){let e=nae();if(!e)return null;try{return e(n)}catch(t){return null}}function Hu(){return py===void 0&&(py=TT("node:fs/promises")),py}function zu(){return _y===void 0&&(_y=TT("node:path")),_y}function sae(){return gy===void 0&&(gy=TT("node:child_process")),gy}function aae(){return vy===void 0&&(vy=TT("node:os")),vy}function ys(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function is(n,e){return ys(Hu(),"node:fs/promises").access(n,e)}function ia(n){return ys(Hu(),"node:fs/promises").readFile(n)}function kd(n,e,t){return ys(Hu(),"node:fs/promises").writeFile(n,e,{encoding:t})}function Nn(n,e){return ys(Hu(),"node:fs/promises").mkdir(n,e)}function Wd(n,e){return ys(Hu(),"node:fs/promises").rm(n,e)}function Hd(n){return ys(Hu(),"node:fs/promises").stat(n)}function Ui(...n){return ys(zu(),"node:path").join(...n)}function wn(n){return ys(zu(),"node:path").dirname(n)}function ra(n,e){return ys(zu(),"node:path").basename(n,e)}function ns(n){return ys(zu(),"node:path").extname(n)}function AT(n){return ys(zu(),"node:path").normalize(n)}function Fn(n){return ys(zu(),"node:path").isAbsolute(n)}function na(n,e,t,i){ys(sae(),"node:child_process").execFile(n,e,t,i)}function zd(){return ys(aae(),"node:os").tmpdir()}var py,_y,gy,vy,rs,Ey,HB,Sy,ar=I(()=>{"use strict";rs=0,Ey=1;Sy=((HB=Wu())==null?void 0:HB.platform)==="win32"?";":":"});function Ty(n){return n.replace(/\\/g,"/")}function xT(n){let e=Ty(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function YB(n){try{return decodeURIComponent(n)}catch(e){return n}}function ss(n,e){var r;let t=YB((r=e.split(/[?#]/,1)[0])!=null?r:e),i=xT(t);return n?xT(`${n}/${i}`):i}function $_(n){let e=Ty(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Cs(n){let e=Ty(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function tn(n){return Cs(n).replace(/\.[^.]+$/,"")}async function oae(n,e){let t=xT(e);if(!t)return null;let i=t.split("/"),r="",s=n.vault.getRoot().children;for(let a of i){let o=s.find(c=>c.name===a),l=o!=null?o:s.find(c=>c.name.toLowerCase()===a.toLowerCase());if(!l)return null;if(r=r?`${r}/${l.name}`:l.name,l instanceof Xu.TFile)return r;if(!(l instanceof Xu.TFolder))return null;s=l.children}return null}function lae(n){return n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}function cae(n){let e=n.vault.adapter;return typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null}function cf(n,e){var r,s;let t=n.vault.getAbstractFileByPath(e);if(t)return t.path;let i=(s=(r=n.metadataCache)==null?void 0:r.getFirstLinkpathDest)==null?void 0:s.call(r,e,"");return i?i.path:null}function oo(n,e){if(Fn(e))return AT(e);let t=cae(n);return t?AT(Ui(t,e)):null}async function lo(n,e){if(Fn(e)){let r=await ia(e);return lae(r)}let t=xT(YB(e)),i=n.vault.getAbstractFileByPath(t);if(!(i instanceof Xu.TFile)){let r=await oae(n,t);if(r){let s=n.vault.getAbstractFileByPath(r);if(s instanceof Xu.TFile)return n.vault.readBinary(s)}throw new Error(`File not found: ${t}`)}return n.vault.readBinary(i)}var Xu,Ps=I(()=>{"use strict";Xu=require("obsidian");ar();ar()});function Xd(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function dae(n){return fae.has(n)}function bT(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Rr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),dae(r)&&(i.colorTextureCount++,s.colorSpace=Mi,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function Ay(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new se),i=Math.max(t.x,t.y,t.z);return!Number.isFinite(i)||i<=0?.02:Math.min(Math.max(i/180,5e-4),.05)}var fae,xy=I(()=>{"use strict";ts();fae=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function jB(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=hae[e])!=null?r:`image/${e}`}function qB(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function Ry(n){return qB(n).replace(/\\/g,"/").replace(/^\.\//,"")}function MT(n,e,t){e&&n.set(Ry(e),t)}function pae(n,e,t,i,r){let s=qB(t);MT(n,s,r),MT(n,ss("",s),r),MT(n,i,r),e&&MT(n,`${e}/${s}`,r)}function _ae(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=Ry(s);if(!o)return;let l=e.get(o);if(l){l.aliases.push(s),(c=l.mimeType)!=null||(l.mimeType=a);return}e.set(o,{uri:s,mimeType:a,aliases:[s]})};for(let s of(i=n.buffers)!=null?i:[])t(s.uri,"application/octet-stream");for(let s of(r=n.images)!=null?r:[])t(s.uri);return[...e.values()]}async function gae(n,e,t){let i=0,r=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:r},async()=>{for(;i{var f;let l=await Tae(n,e,o.uri),c=URL.createObjectURL(new Blob([l.data],{type:(f=o.mimeType)!=null?f:jB(l.path)}));r.push(c);for(let d of o.aliases)pae(i,e,d,l.path,c)};return await gae(_ae(t),mae,a),s.setURLModifier(o=>{var c,f;let l=Ry(o);return(f=(c=i.get(l))!=null?c:i.get(ss("",l)))!=null?f:o}),{manager:s,dispose:()=>{for(let o of r)URL.revokeObjectURL(o)}}}function Eae(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function Sae(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}async function Tae(n,e,t){let i=ss(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function Aae(n,e,t){let i=Cs(e),r=i.replace(/\.[^.]+$/,""),s=tn(t),a=[ss(n,e),ss(n,i)];if(s)for(let o of KB)a.push(ss(n,`${s}.${o}`));for(let o of KB){let l=`${r}.${o}`;l!==i&&a.push(ss(n,l))}return a}async function ZB(n,e,t,i){var l,c;let r=[];if(e==="gltf"&&t&&i){let f=new TextDecoder().decode(new Uint8Array(n)),d=JSON.parse(f),h=$_(i),u=await vae(t,h,d),m=new Q_(u.manager);try{let _=await m.parseAsync(n,h?`${h}/`:""),p=_.scene||((l=_.scenes)==null?void 0:l[0]);if(!p)throw new Error("GLTF did not contain a scene");return{scene:p,animations:_.animations,warnings:r}}finally{u.dispose()}}let a=await new Q_().parseAsync(n,""),o=a.scene||((c=a.scenes)==null?void 0:c[0]);if(!o)throw new Error("GLB did not contain a scene");return{scene:o,animations:a.animations,warnings:r}}async function QB(n){let t=new vT().parse(n),i=t.hasAttribute("color")?new En({color:16777215,vertexColors:!0}):new En({color:13421772}),r=new li(t,i);return r.name=Cs("")||"stl-model",r}async function $B(n){let t=new gT().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new En({vertexColors:!0});return new li(t,a)}let s=new vs({size:Ay(t),vertexColors:!0});return new Es(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new En({color:13421772});return new li(t,s)}let r=new vs({size:Ay(t),color:13421772});return new Es(t,r)}function xae(n){return n?Array.isArray(n)?n:[n]:[]}function Rae(n){n.traverse(e=>{if(!(e instanceof li))return;let t=e;for(let i of xae(t.material))bT(i,1)})}async function JB(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n)),r=[],s=null,a=i.match(/mtllib\s+(.+)/);if(a&&e&&t){let c=Eae(a[1]),f=$_(t),d=ss(f,c);try{let h=await e(d),m=new TextDecoder().decode(new Uint8Array(h)).split(` -`),_=new Map;for(let S=0;SS!=="");if(!p.some(S=>/^\s*Kd\s+/i.test(S))){let S=p.findIndex(E=>/^\s*newmtl\s+/i.test(E));p.splice(S>=0?S+1:0,0,"Kd 0.80 0.80 0.80")}let x=new mT().parse(p.join(` -`),f?`${f}/`:"");x.preload(),s=x}catch(h){r.push(`OBJ material library not found: ${d}`)}}else a&&(!e||!t)&&r.push("OBJ material library could not be resolved without a model path.");let o=new _T;s&&o.setMaterials(s);let l=o.parse(i);return Rae(l),{object:l,warnings:r}}var hae,KB,uae,mae,e2=I(()=>{"use strict";bB();PB();DB();LB();WB();ts();Ps();RT();xy();hae={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",tga:"image/x-tga",webp:"image/webp",tif:"image/tiff",tiff:"image/tiff"},KB=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],uae=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,mae=4});function gr(){return t2.Platform.isMobile}var t2,sa=I(()=>{"use strict";t2=require("obsidian")});function Qt(n){return{x:n.x,y:n.y,z:n.z}}function rn(n){return{x:n.x,y:n.y,z:n.z}}function Yu(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function J_(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function n2(n,e){let t=Yu(n,e);return Math.hypot(t.x,t.y,t.z)}function by(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:J_(n,1/e)}function Yd(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function i2(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function s2(n,e,t){return{x:e==="x"?n.x+t:n.x,y:e==="y"?n.y+t:n.y,z:e==="z"?n.z+t:n.z}}function a2(n){return Math.max(n*.01,.01)}function ff(n,e,t=a2(e)){return n{"use strict"});function hf(n,e){return{min:rn(n),max:rn(e)}}function Kd(n,e){return n?{min:{x:Math.min(n.min.x,e.min.x),y:Math.min(n.min.y,e.min.y),z:Math.min(n.min.z,e.min.z)},max:{x:Math.max(n.max.x,e.max.x),y:Math.max(n.max.y,e.max.y),z:Math.max(n.max.z,e.max.z)}}:hf(e.min,e.max)}function ji(n){return Yu(n.max,n.min)}function vr(n){return Yd(n.min,J_(ji(n),.5))}function o2(n){return n2(n.min,n.max)}function eg(n){return o2(n)/2}function l2(n){let e=ji(n);return Math.max(e.x,e.y,e.z)}function My(n){let e=ji(n),t=o2(n);return{center:Yd(n.min,J_(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var il=I(()=>{"use strict";Ds()});function Iy(n,e,t={}){var s,a,o,l,c;let i=Math.max(e,Number.EPSILON),r=(s=t.radiusMultiplier)!=null?s:2.5;return{target:rn(n),radius:i*r,lowerRadiusLimit:i*((a=t.lowerRadiusFactor)!=null?a:.05),upperRadiusLimit:i*((o=t.upperRadiusFactor)!=null?o:10),near:i*((l=t.nearFactor)!=null?l:.001),far:i*((c=t.farFactor)!=null?c:20)}}function DT(n,e={}){let t=My(n);return Iy(t.center,t.radius,e)}function c2(n,e={}){var o,l,c,f,d,h;let t=My(n),i=Math.max(t.maxSpan,t.radius,Number.EPSILON),r=i*((o=e.distanceMultiplier)!=null?o:1.8),s=Math.max((l=e.minNear)!=null?l:Math.max(i/1e4,1e-5),i/((c=e.nearDivisor)!=null?c:1e3)),a=Math.max((d=e.minFar)!=null?d:Math.max(i*((f=e.farMultiplier)!=null?f:20),1),r+t.radius*4);return{target:rn(t.center),position:Yd(t.center,{x:r,y:r*((h=e.elevationFactor)!=null?h:.65),z:r}),near:s,far:a}}var LT=I(()=>{"use strict";il();Ds()});function Li(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var OT=I(()=>{"use strict"});function NT(n){var s;let e=new Set,t=0,i=0;for(let a of n.meshes){t+=a.triangleCount,i+=a.vertexCount;for(let o of(s=a.materialKeys)!=null?s:[])o!=null&&e.add(o)}let r=Iae({triangleCount:t,splatCount:n.splatCount,meshCount:n.meshes.length,materialCount:e.size});return{meshCount:n.meshes.length,triangleCount:t,splatCount:n.splatCount,vertexCount:i,materialCount:e.size,performanceTier:r,performanceHint:yae(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:rn(n.boundingSize),rootName:n.rootName}}function Iae(n){var e,t,i;return((e=n.splatCount)!=null?e:0)>=15e5||n.triangleCount>=12e5||n.materialCount>=96||n.meshCount>=240?"extreme":((t=n.splatCount)!=null?t:0)>=65e4||n.triangleCount>=45e4||n.materialCount>=48||n.meshCount>=120?"heavy":((i=n.splatCount)!=null?i:0)>=18e4||n.triangleCount>=12e4||n.materialCount>=18||n.meshCount>=48?"medium":"light"}function yae(n,e){var r;let t=((r=e.splatCount)!=null?r:e.triangleCount).toLocaleString(),i=e.splatCount!==void 0?"splats":"triangles";return n==="extreme"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Expect automatic quality throttling while interacting.`:n==="heavy"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Interaction may lower shadows and resolution temporarily.`:n==="medium"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance should be steady on most desktop GPUs.`:`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance tier: light.`}function zl(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:rn(n.boundingSize),center:rn(n.center),source:n.source,meshNames:n.meshNames?[...n.meshNames]:void 0,childCount:n.childCount,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath}}function f2(n){return n.splatCount!==void 0?"Splats":"Triangles"}function d2(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var wT=I(()=>{"use strict";Ds()});function ju(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function Cae(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function Pae(n){var r,s,a,o;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(s=(r=n.sourceFormat)!=null?r:n.effectiveFormat)!=null?s:"unknown",t=(a=n.effectiveFormat)!=null?a:e,i=(o=n.loadStrategy)!=null?o:e!==t?"convert":"direct";return`${e.toUpperCase()}${t!==e?` -> ${t.toUpperCase()}`:""} (${i})`}function Dae(n,e=8){if(!(n!=null&&n.length))return null;let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i} more`:t}function h2(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:f2(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${d2(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${yy(n.boundingSize,{decimals:i})} |`]}function co(n){return Li(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function yy(n,e={}){var r,s;let t=(r=e.decimals)!=null?r:3,i=(s=e.separator)!=null?s:" x ";return`${n.x.toFixed(t)}${i}${n.y.toFixed(t)}${i}${n.z.toFixed(t)}`}function u2(n,e={}){return["| Metric | Value |","|--------|-------|",...h2(n,e)]}function Lae(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...h2(e,t)]}function FT(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...Lae(n.format,n.summary,{countLabel:n.countLabel})),e.push("");let t=(r=n.meshBreakdown)!=null?r:[];t.length>1&&t.length<=50&&(e.push("### Mesh Breakdown"),e.push(""),e.push("| # | Name | Triangles | Vertices | Material |"),e.push("|---|------|-----------|----------|----------|"),t.forEach((a,o)=>{let l=a.triangleCount===null?"-":a.triangleCount.toLocaleString();e.push(`| ${o+1} | ${co(ju(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${co(ju(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>ju(a,"")).filter(a=>a.length>0);if(i.length>0){let a=Array.from(new Set(i));e.push("### Materials"),e.push("");for(let o of a)e.push(`- ${Li(o)}`);e.push("")}return e.join(` -`)}function BT(n,e={}){var o;let t=Li(ju((o=e.title)!=null?o:n.name,"Selected Part")),i=[];i.push(`## ${t} - Part Info`),i.push(""),i.push("| Property | Value |"),i.push("|----------|-------|"),i.push(`| Mesh | ${co(ju(n.name))} |`);let r=Cae(n.source);r&&i.push(`| Source | ${co(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${co(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${co(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${co(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${co(n.componentPath)} |`);let s=Pae(n);s&&i.push(`| Format Lineage | ${co(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${co(ju(n.materialName))} |`),i.push(`| Bounding Size | ${yy(n.boundingSize)} |`),i.push(`| Center | ${yy(n.center,{separator:", "})} |`);let a=Dae(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${co(a)} |`),i.push(""),i.join(` -`)}var UT=I(()=>{"use strict";OT();wT()});function VT(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function GT(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function m2(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function p2(n,e,t){return!m2(n)||e.clientWidth===0||e.clientHeight===0?!1:(t.screenX=(n.x+1)/2*e.clientWidth,t.screenY=(1-n.y)/2*e.clientHeight,t.depth=(n.z+1)/2,!0)}function _2(n,e,t,i,r){return!m2(n)||e===0||t===0||i.clientWidth===0||i.clientHeight===0?!1:(r.screenX=n.x*(i.clientWidth/e),r.screenY=n.y*(i.clientHeight/t),r.depth=n.z,!0)}var Cy=I(()=>{"use strict"});function jd(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function Oae(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function Nae(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function wae(n){let e=n.trim().toLowerCase();return/^(mesh|node|object|primitive|points|pointcloud|geometry)[-_\s.]?\d+$/i.test(e)||/^(mesh|node|object|primitive|points|pointcloud|geometry)$/i.test(e)}function Fae(n){let e={x:n.boundingSize.x/2,y:n.boundingSize.y/2,z:n.boundingSize.z/2};return{min:{x:n.center.x-e.x,y:n.center.y-e.y,z:n.center.z-e.z},max:{x:n.center.x+e.x,y:n.center.y+e.y,z:n.center.z+e.z}}}function Bae(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!wae(n.name))return!1;let t=Oae(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Uae(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=Kd(e,Fae(l)),t+=l.triangleCount,i+=l.vertexCount,l.materialName&&r.add(l.materialName),s.push(...(o=l.meshNames)!=null&&o.length?l.meshNames:[l.name]);let a=e!=null?e:{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};return{name:"Small detail cluster",triangleCount:t,vertexCount:i,materialName:jd(r),boundingSize:ji(a),center:vr(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function Vae(n,e,t){let i=Nae(n),r=t.filter(o=>Bae(o,i));if(r.length<2)return e.length>0?[...e,...t]:[...t];let s=new Set(r),a=t.filter(o=>!s.has(o));return[...e,Uae(r),...a]}function kT(n){var e;return{summary:n.summary,parts:Gae(n),materialNames:kae(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Gae(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return Vae(n.summary,n.groupedPartCandidates.parts,e)}function kae(n,e){let t=new Set;for(let i of n)for(let r of e(i))r&&t.add(r);return Array.from(t).sort((i,r)=>i.localeCompare(r))}var tg=I(()=>{"use strict";il()});function WT(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function ng(n){return{x:Number.isFinite(n.x)&&n.x>0?n.x:1,y:Number.isFinite(n.y)&&n.y>0?n.y:1,z:Number.isFinite(n.z)&&n.z>0?n.z:1}}function HT(n,e,t,i){let r=ng(t),s={x:(e.x-n.x)*r.x,y:(e.y-n.y)*r.y,z:(e.z-n.z)*r.z},a={x:Math.abs(s.x),y:Math.abs(s.y),z:Math.abs(s.z)};return{distance:Math.sqrt(s.x*s.x+s.y*s.y+s.z*s.z),delta:s,absDelta:a,unit:i}}function rg(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function Hae(n,e){if(n===0)return e;let t=Math.abs(n)*Dy[e];return t<.001?"um":t<.1?"mm":t<1?"cm":"m"}function v2(n){return n==="um"?"um":Wae[n]}function ig(n,e,t=!0){let i=t?Hae(n,e):e,r=n*Dy[e]/Dy[i],s=Math.abs(r),a=s>=100?1:s>=10?2:3;return`${rg(r,a)} ${v2(i)}`}function Py(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return rg(e,t)}function qu(n){return{primary:ig(n.distance,n.unit),secondary:[`X ${Py(n.absDelta.x)}`,`Y ${Py(n.absDelta.y)}`,`Z ${Py(n.absDelta.z)}`,v2(n.unit)].join(" ")}}function zT(n){if(n.length===0)return"";let e=["## Measurements","","| # | Distance | Delta X | Delta Y | Delta Z | Start | End |","|---|----------|---------|---------|---------|-------|-----|"];for(let t of n){let i=t.reading.unit,r=g2(t.start),s=g2(t.end);e.push([t.index,ig(t.reading.distance,i),ig(t.reading.absDelta.x,i,!1),ig(t.reading.absDelta.y,i,!1),ig(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` -`)}function g2(n){return`${rg(n.x,3)}, ${rg(n.y,3)}, ${rg(n.z,3)}`}var Dy,Wae,Ly=I(()=>{"use strict";Dy={um:1e-6,mm:.001,cm:.01,m:1},Wae={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function zae(n){return typeof globalThis.requestAnimationFrame=="function"?globalThis.requestAnimationFrame(n):globalThis.setTimeout(()=>n(performance.now()),16)}function Xae(n){if(typeof globalThis.cancelAnimationFrame=="function"){globalThis.cancelAnimationFrame(n);return}globalThis.clearTimeout(n)}function YT(n){return new Oy(n)}var XT,Oy,Ny=I(()=>{"use strict";XT=class XT{constructor(e){this.originals=new Map;this.unsubscribe=null;this.active=!1;this.drag=null;this.pendingDrag=null;this.selected=null;this.activePointerId=null;this.frameCount=0;this.pendingDragEvent=null;this.dragUpdateFrame=null;this.adapter=e}isEnabled(){return this.active}setEnabled(e){var t,i,r;return this.active===e?this.active:(this.active=e,this.finishDrag(),this.setSelected(null),this.activePointerId=null,e?this.unsubscribe=this.adapter.subscribe({onPointerDown:(s,a)=>this.handlePointerDown(s,a),onPointerMove:s=>this.handlePointerMove(s),onPointerUp:s=>this.handlePointerUp(s),onRender:()=>this.handleRender()}):((t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null),(r=(i=this.adapter).requestRender)==null||r.call(i),this.active)}toggle(){return this.setEnabled(!this.active)}reset(){var e,t;this.finishDrag(),this.setSelected(null);for(let{part:i,transform:r}of this.originals.values())this.adapter.isDisposed(i)||this.adapter.restoreTransform(i,r);this.activePointerId=null,(t=(e=this.adapter).requestRender)==null||t.call(e)}dispose(){this.setEnabled(!1),this.originals.clear()}handlePointerDown(e,t){if(t.button!==0||t.isPrimary===!1)return;let i=this.adapter.resolvePart(e);if(!i){this.drag=null,this.pendingDrag=null,this.activePointerId=null,this.setSelected(null);return}this.activePointerId=t.pointerId,this.setSelected(i),this.pendingDrag={part:i,event:t,x:t.clientX,y:t.clientY}}handlePointerMove(e){if(!(this.activePointerId!==null&&e.pointerId!==this.activePointerId)){if(!this.drag&&this.pendingDrag){if(e.pointerType==="mouse"&&(e.buttons&1)===0){this.pendingDrag=null,this.activePointerId=null;return}if(Math.hypot(e.clientX-this.pendingDrag.x,e.clientY-this.pendingDrag.y){this.dragUpdateFrame=null,this.flushDragUpdate()}))}flushDragUpdate(){this.dragUpdateFrame!==null&&(Xae(this.dragUpdateFrame),this.dragUpdateFrame=null);let e=this.pendingDragEvent;this.pendingDragEvent=null,!(!this.drag||!e)&&this.adapter.updateDrag(this.drag,e)}setSelected(e){this.selected=e,this.frameCount=0,this.adapter.setSelected(e)}captureOriginalTransform(e){let t=this.adapter.getPartId(e);this.originals.has(t)||this.originals.set(t,{part:e,transform:this.adapter.captureTransform(e)})}};XT.DRAG_START_DISTANCE=4;Oy=XT});function $ae(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function KT(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function Jae(n){if(typeof n=="string"){let e=n.trim();return e.length>0?e:void 0}if(typeof n=="number"&&Number.isFinite(n))return String(n)}function E2(n,e=0){if(!$ae(n)||e>2)return[];let t=[];for(let i of Qae)for(let[r,s]of Object.entries(n))KT(r)===KT(i)&&t.push(...E2(s,e+1));return t.push(n),t}function sg(n,e){let t=new Set(e.map(KT));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has(KT(r)))continue;let a=Jae(s);if(a)return a}}function aa(n,e={}){var c,f;let t=E2(n),i=sg(t,Yae),r=sg(t,Kae),s=sg(t,jae),a=(c=sg(t,Zae))!=null?c:e.path,o=(f=sg(t,qae))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Yae,Kae,jae,qae,Zae,Qae,wy=I(()=>{"use strict";Yae=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],Kae=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],jae=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],qae=["displayName","partName","componentName","cadName","name"],Zae=["componentPath","cadPath","assemblyPath","occurrencePath"],Qae=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function Ra(n){return n instanceof li}function ag(n){return n instanceof Es}function Qu(n){return Ra(n)||ag(n)}function Ls(n){return n?Array.isArray(n)?n:[n]:[]}function og(n){var r,s,a,o;if(ag(n))return 0;let e=n.geometry,t=(s=(r=e.getIndex())==null?void 0:r.count)!=null?s:0;if(t>0)return Math.floor(t/3);let i=(o=(a=e.getAttribute("position"))==null?void 0:a.count)!=null?o:0;return Math.floor(i/3)}function $u(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function Ju(n){return n?n.name||n.type||`material-${n.uuid}`:null}function fo(n,e){var i;let t=(i=n.userData)==null?void 0:i.name;return typeof t=="string"&&t.trim().length>0?t:n.name||e}function Zu(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(fo(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function hn(n){let e=new Fr().setFromObject(n);return hf(Qt(e.min),Qt(e.max))}function S2(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,hn(t));return e}function T2(n){return Ls(n.material).map(e=>Ju(e))}function A2(n){return{name:fo(n,ag(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:ag(n)?null:og(n),vertexCount:$u(n),materialName:Ju(Ls(n.material)[0])}}function eoe(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:hn(n),r=fo(n,`mesh-${n.id}`),s=aa(n.userData,{name:r,path:e?Zu(e,n):r});return zl({name:ZT(s,r),triangleCount:og(n),vertexCount:$u(n),materialName:Ju(Ls(n.material)[0]),boundingSize:ji(i),center:vr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function Fy(n,e,t){var a;if(Ra(n))return eoe(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:hn(n),r=fo(n,`points-${n.id}`),s=aa(n.userData,{name:r,path:e?Zu(e,n):r});return zl({name:ZT(s,r),triangleCount:0,vertexCount:$u(n),materialName:Ju(Ls(n.material)[0]),boundingSize:ji(i),center:vr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function toe(n,e){let t=[];return n.traverse(i=>{Ra(i)&&e.has(i)&&t.push(i)}),t}function em(n,e){let t=new Map;for(let i of e){let r=i.parent;for(;r&&r!==n;){let s=t.get(r);s||(s=[],t.set(r,s)),s.push(i),r=r.parent}}return t}function x2(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:toe(n,e)}function ioe(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function roe(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function R2(n,e,t,i,r){var m;if(Qu(n))return Fy(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(_=>{Ra(_)&&s.add(_)});let a=x2(n,s,i),o=null,l=new Set,c=0,f=0;for(let _ of a){_.updateWorldMatrix(!0,!1),o=Kd(o,(m=r==null?void 0:r.get(_))!=null?m:hn(_)),c+=og(_),f+=$u(_);for(let p of Ls(_.material)){let g=Ju(p);g&&l.add(g)}}a.length===0&&(o=hn(n));let d=o!=null?o:hf({x:0,y:0,z:0},{x:0,y:0,z:0}),h=fo(n,`group-${n.id}`),u=aa(n.userData,{name:h,path:e?Zu(e,n):h});return zl({name:ZT(u,h),triangleCount:c,vertexCount:f,materialName:jd(l),boundingSize:ji(d),center:vr(d),source:u.hasExplicitIdentity?"component":"group",meshNames:a.map(_=>fo(_,`mesh-${_.id}`)),childCount:a.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function jT(n,e,t,i){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=x2(o,r,i);if(f.length>0&&f.length1&&h.trim()&&!ioe(h)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function b2(n,e,t=em(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||Ra(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=aa(o.userData,{name:fo(o,`component-${o.id}`),path:Zu(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=aa(o.userData,{name:fo(o,`group-${o.id}`),path:Zu(n,o)});!c.hasExplicitIdentity&&!o.name.trim()||a.push({object:o,childMeshes:l,identity:c})}),a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({object:o,childMeshes:l,identity:c})=>{var p;let f=l.filter(g=>!s.has(g));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let g of f)s.add(g);let d=null;for(let g of f)g.updateWorldMatrix(!0,!1),d=Kd(d,(p=i==null?void 0:i.get(g))!=null?p:hn(g));let h=new Set,u=0,m=0;for(let g of f){u+=og(g),m+=$u(g);for(let v of Ls(g.material)){let x=Ju(v);x&&h.add(x)}}let _=d!=null?d:hf({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(zl({name:ZT(c,fo(o,`group-${o.id}`)),triangleCount:u,vertexCount:m,materialName:jd(h),boundingSize:ji(_),center:vr(_),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(g=>fo(g,`mesh-${g.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function qT(n,e,t=[],i){return NT({rootName:n.name||"__root__",boundingSize:ji(i!=null?i:hn(n)),meshes:e.map(r=>({triangleCount:og(r),vertexCount:$u(r),materialKeys:Ls(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function M2(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=ji(t!=null?t:hn(n)),s=Math.max(r.x,r.y,r.z),a=Math.max(s*.04,Number.EPSILON),o=0,l=0,c=Number.POSITIVE_INFINITY;for(let d of e){ag(d)&&o++;let h=ji((f=i==null?void 0:i.get(d))!=null?f:hn(d)),u=Math.max(h.x,h.y,h.z);Number.isFinite(u)&&u>0&&(c=Math.min(c,u),Ra(d)&&u<=a&&u0?Number(s.toPrecision(6)):null}}function ZT(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var By=I(()=>{"use strict";ts();il();wy();tg();Ds();wT()});function noe(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function soe(n,e,t=em(n,e)){let i=new Map;for(let r of e){let s=jT(n,r,e,t),a=i.get(s);a||(a={id:s.id,object:s,meshes:[]},i.set(s,a)),a.meshes.push(r)}return Array.from(i.values())}function aoe(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function y2(n,e,t,i,r,s,a,o){return YT(new Uy(n,e,t,i,r,s,a,o))}var I2,ooe,Uy,C2=I(()=>{"use strict";ts();Ds();Ny();By();I2=new ft(4890367),ooe=new ft(1722990),Uy=class{constructor(e,t,i,r,s,a,o,l=em(r,s)){this.meshToPart=new Map;this.raycaster=new ef;this.pointer=new Mt;this.tempBox=new Fr;this.tempCenter=new se;this.tempDirection=new se;this.tempCameraForward=new se;this.tempCameraRight=new se;this.tempCameraUp=new se;this.tempDragOffset=new se;this.tempNextPosition=new se;this.tempHelperDelta=new se;this.partCenterCache=new Map;this.selectionHelper=null;this.lastOccluded=!1;this.selected=null;this.lastPointerDown=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.canvas=i,this.meshes=s,this.parts=soe(r,s,l);for(let c of this.parts)for(let f of c.meshes)this.meshToPart.set(f.id,c);this.controls=a,this.invalidate=o}requestRender(){this.invalidate()}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return!e.object.parent&&!this.scene.children.includes(e.object)}captureTransform(e){return{parent:e.object.parent,position:e.object.position.clone(),quaternion:e.object.quaternion.clone(),scale:e.object.scale.clone()}}restoreTransform(e,t){t.parent?t.parent.add(e.object):this.scene.add(e.object),e.object.position.copy(t.position),e.object.quaternion.copy(t.quaternion),e.object.scale.copy(t.scale),e.object.updateMatrixWorld(!0),this.invalidatePartCenter(e),this.requestRender()}subscribe(e){this.canvas.classList.add("ai3d-disassembly-active");let t=s=>{var o,l;if(s.button!==0||s.isPrimary===!1)return;this.lastPointerDown={x:s.clientX,y:s.clientY};let a=this.resolvePickTarget(s);if(this.partPointerActive=!!a,this.partPointerActive){s.preventDefault(),s.stopPropagation(),this.controls.enabled=!1,this.activePointerId=s.pointerId;try{(l=(o=this.canvas).setPointerCapture)==null||l.call(o,s.pointerId)}catch(c){}}e.onPointerDown(a,s)},i=s=>{this.activePointerId!==null&&s.pointerId!==this.activePointerId||(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),e.onPointerMove(s))},r=s=>{var a,o;if(!(this.activePointerId!==null&&s.pointerId!==this.activePointerId)){if(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),this.lastPointerDown=null,e.onPointerUp(s),this.partPointerActive=!1,this.activePointerId!==null&&((o=(a=this.canvas).hasPointerCapture)!=null&&o.call(a,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(l){}this.activePointerId=null,this.controls.enabled=!0}};return this.canvas.addEventListener("pointerdown",t),window.addEventListener("pointermove",i),window.addEventListener("pointerup",r),()=>{var s,a;if(this.canvas.removeEventListener("pointerdown",t),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",r),this.canvas.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.partPointerActive=!1,this.activePointerId!==null&&((a=(s=this.canvas).hasPointerCapture)!=null&&a.call(s,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(o){}this.activePointerId=null,this.controls.enabled=!0}}resolvePart(e){var t;return noe(e)?this.parts.includes(e)?e:null:e&&(t=this.meshToPart.get(e.id))!=null?t:null}setSelected(e){var t;(t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=null,this.selected=e,this.lastOccluded=!1,e&&!this.isDisposed(e)&&(this.selectionHelper=new Wl(e.object,I2),this.scene.add(this.selectionHelper)),this.requestRender()}beginDrag(e,t){let i=this.getPartWorldCenter(e,this.tempCenter).clone(),r=this.getPointOnDragPlane(i,t);if(!r)return null;t.preventDefault(),t.stopPropagation(),aoe(this.scene,e.object),this.canvas.classList.add("ai3d-disassembly-dragging");let s="move";t.shiftKey&&(s="rotate");let a=this.tempCameraForward;this.camera.getWorldDirection(a);let o=Ku(Qt(r),Qt(a));return o?(this.controls.enabled=!1,this.requestRender(),{part:e,mode:s,plane:o,startPoint:r.clone(),startPosition:e.object.position.clone(),startQuaternion:e.object.quaternion.clone(),pivot:i,pointerX:t.clientX,pointerY:t.clientY}):null}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=this.tempDragOffset.copy(i).sub(e.startPoint),s=this.tempNextPosition.copy(e.startPosition).add(r),a=this.tempHelperDelta.copy(s).sub(e.part.object.position);e.part.object.position.copy(s),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),this.translateSelectionHelper(a),this.requestRender()}endDrag(e){var t;this.controls.enabled=!0,this.canvas.classList.remove("ai3d-disassembly-dragging"),(t=this.selectionHelper)==null||t.update(),this.requestRender()}updateSelectionOcclusion(e){let t=this.getPartWorldCenter(e,this.tempCenter),i=this.camera.position,r=df(Qt(i),Qt(t));if(!r)return;let s=this.tempDirection.set(r.direction.x,r.direction.y,r.direction.z);this.raycaster.set(i,s),this.raycaster.far=r.distance;let a=this.raycaster.intersectObjects(this.meshes,!1)[0],o=!!a&&ff(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?ooe:I2),this.requestRender()))}updateRotation(e,t){var c;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=this.tempCameraForward;this.camera.getWorldDirection(s);let a=this.tempCameraUp.copy(this.camera.up).normalize(),o=this.tempCameraRight.crossVectors(a,s).normalize(),l=PT({startPosition:Qt(e.startPosition),pivot:Qt(e.pivot),startRotationQuaternion:CT(e.startQuaternion),yawAxis:Qt(a),pitchAxis:Qt(o),deltaX:i,deltaY:r,sensitivity:.01});l&&(e.part.object.position.set(l.position.x,l.position.y,l.position.z),e.part.object.quaternion.set(l.rotationQuaternion.x,l.rotationQuaternion.y,l.rotationQuaternion.z,l.rotationQuaternion.w),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),(c=this.selectionHelper)==null||c.update(),this.requestRender())}resolvePickTarget(e){let t=this.canvas.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.meshes,!1)[0];return(i==null?void 0:i.object)instanceof li?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=Ku(Qt(e),Qt(i));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:e}getRayPlanePoint(e,t){let i=this.canvas.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top;this.pointer.set(r/i.width*2-1,-(s/i.height)*2+1),this.raycaster.setFromCamera(this.pointer,this.camera);let a=yT({origin:Qt(this.raycaster.ray.origin),direction:Qt(this.raycaster.ray.direction)},t);return a?new se(a.x,a.y,a.z):null}getPartWorldCenter(e,t){let i=this.partCenterCache.get(e.id);return i?t.copy(i):(this.tempBox.setFromObject(e.object).getCenter(t),this.partCenterCache.set(e.id,t.clone()),t)}invalidatePartCenter(e){this.partCenterCache.delete(e.id)}translateSelectionHelper(e){if(!this.selectionHelper||e.lengthSq()<=Number.EPSILON)return;let t=this.selectionHelper.geometry.getAttribute("position");for(let i=0;ie.uuid).join("|"):n.uuid}function doe(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var loe,QT,D2=I(()=>{"use strict";loe=.242;QT=class{constructor(){this.materials=new Map}get(e){let t=foe(e),i=this.materials.get(t);if(i)return i;let r=coe(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())doe(e);this.materials.clear()}get size(){return this.materials.size}}});function L2(n){return rn(n)}function hoe(n,e){return{originalPosition:L2(n),originalCenter:L2(e)}}function $T(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=hoe(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,s2(s.originalPosition,t,a))}}function JT(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var Vy=I(()=>{"use strict";Ds()});function eA(n){return rn(n)}function uoe(n){return n instanceof li}function moe(n){let e=[];return n.traverse(t=>{uoe(t)&&t.geometry&&e.push(t)}),e}function O2(n,e,t){$T(new tA(n),e,t)}function Gy(n){JT(new tA(n))}var tA,N2=I(()=>{"use strict";ts();Ds();il();Vy();tA=class{constructor(e){this.root=e}getParts(){return moe(this.root)}getRootCenter(){let e=new Fr().setFromObject(this.root);return vr({min:Qt(e.min),max:Qt(e.max)})}getPartPosition(e){return Qt(e.position)}getPartCenter(e){let i=new Fr().setFromObject(e).getCenter(new se);return Qt(i)}setPartPosition(e,t){e.position.set(t.x,t.y,t.z)}getPartState(e){var i;let t=(i=e.userData)!=null?i:{};return t._previewExplodeState?{originalPosition:eA(t._previewExplodeState.originalPosition),originalCenter:eA(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:eA(t.originalPosition),originalCenter:eA(t.originalCenter)}}}});function w2(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var iA,F2=I(()=>{"use strict";iA=class{constructor(e=120){this.maxSamples=e;this.samples=[];this.renderedFrameCount=0;this.idleFrameSkipCount=0;this.slowFrameCount=0;this.maxRenderMs=0;this.adaptiveScaleChangeCount=0}recordRenderedFrame(e,t){!Number.isFinite(e)||e<0||(this.renderedFrameCount++,e>=t&&this.slowFrameCount++,this.maxRenderMs=Math.max(this.maxRenderMs,e),this.samples.push(e),this.samples.length>this.maxSamples&&this.samples.shift())}recordIdleFrameSkip(){this.idleFrameSkipCount++}recordAdaptiveScaleChange(){this.adaptiveScaleChangeCount++}snapshot(){let e=[...this.samples].sort((r,s)=>r-s),t=this.samples.reduce((r,s)=>r+s,0),i=e.length===0?-1:Math.min(e.length-1,Math.ceil(e.length*.95)-1);return{renderedFrameCount:this.renderedFrameCount,idleFrameSkipCount:this.idleFrameSkipCount,slowFrameCount:this.slowFrameCount,averageRenderMs:e.length?Number((t/e.length).toFixed(2)):0,p95RenderMs:i>=0?Number(e[i].toFixed(2)):0,maxRenderMs:Number(this.maxRenderMs.toFixed(2)),adaptiveScaleChangeCount:this.adaptiveScaleChangeCount}}}});var G2={};Be(G2,{ThreeModelPreview:()=>nA,createThreeModelPreview:()=>Doe});function V2(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function Poe(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function ky(n){return n instanceof Zo||n instanceof ro||n instanceof kl}function Doe(n){return new nA(n)}var rA,poe,_oe,goe,voe,Eoe,B2,Soe,U2,Toe,Aoe,xoe,Roe,boe,Moe,Ioe,yoe,Coe,nA,k2=I(()=>{"use strict";ts();xB();RB();e2();sa();il();LT();UT();Cy();Ds();tg();Ly();C2();D2();N2();Ps();xy();F2();By();rA=new ft("#20242e"),poe=.28,_oe=2.5,goe=1.5,voe=1.15,Eoe=260,B2=30,Soe=8,U2=28,Toe=18,Aoe=2,xoe=28,Roe=.86,boe=1.08,Moe=.62,Ioe=.86,yoe=4,Coe=120;nA=class{constructor(e){this.raycaster=new ef;this.occlusionRaycaster=new ef;this.renderObservers=new Set;this.pointer=new Mt;this.annotationProjection=new se;this.annotationDirection=new se;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=V2();this.renderHandle=0;this.contextLost=!1;this.quality="high";this.renderScale=1;this.interactivePixelRatioActive=!1;this.interactionPixelRatioDeadline=0;this.renderObserverSettleFrames=0;this.frameBudgetPixelRatioScale=1;this.frameBudgetSlowStreak=0;this.frameBudgetFastStreak=0;this.frameBudgetObserverStride=1;this.frameBudgetObserverCursor=0;this.frameBudgetShadowDeferred=!1;this.lastFrameDurationMs=0;this.smoothness=new iA;this.viewportVisible=!0;this.viewportObserver=null;this.lastDisposalAudit={reason:"initial",meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};this.axesHelper=null;this.bboxHelper=null;this.groundShadowMesh=null;this.meshShadowFlagsPrepared=!1;this.gridHelper=null;this.bboxEnabled=!1;this.wireframeEnabled=!1;this.wireframeOriginalMaterials=new Map;this.sceneConfig={};this.focusSelectionEnabled=!1;this.explodeStateActive=!1;this.focusedObject=null;this.highlightedObject=null;this.selectionHelper=null;this.focusHelper=null;this.mixer=null;this.animationPlaying=!1;this.initialTarget=new se;this.initialPosition=new se(3,2,3);this.initialFov=45;this.initialZoom=1;this.initialCameraMode="perspective";this.cameraMode="perspective";this.lastPointerDown=null;this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new QT;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.disassembly=null;this.disassemblySetup=!1;this.renderDirty=!0;this.stlMaterial=null;this.cachedMeshes=null;this.cachedMeshRoot=null;this.cachedRenderables=null;this.cachedRenderableRoot=null;this.cachedRenderableObjectCount=null;this.cachedChildMeshMap=null;this.cachedChildMeshMapRoot=null;this.cachedRenderableBoundsMap=null;this.cachedRenderableBoundsMapRoot=null;this.cachedRootPreviewBounds=null;this.cachedRootPreviewBoundsObject=null;this.cachedGeometryQualityStats=null;this.cameraAnimHandle=0;this.preventCanvasWheelScroll=e=>{this.prepareInteractiveFrameBudget(),e.preventDefault(),e.stopPropagation(),this.markDirty()};this.handleControlsChange=()=>{this.prepareInteractiveFrameBudget(),this.markDirty()};this.handleViewportIntersection=e=>{let t=e[e.length-1];if(!t)return;let i=t.isIntersecting&&t.intersectionRatio>0;i!==this.viewportVisible&&(this.viewportVisible=i,i?(this.clock.last=performance.now(),this.markDirty(),this.markShadowDirty(),this.startRenderLoop()):(cancelAnimationFrame(this.renderHandle),this.renderHandle=0))};this.handlePointerDown=e=>{e.button!==0||e.isPrimary===!1||(this.lastPointerDown={x:e.clientX,y:e.clientY},this.prepareInteractiveFrameBudget())};this.handlePointerUp=e=>{var i;if(e.button!==0||e.isPrimary===!1)return;let t=this.lastPointerDown;this.lastPointerDown=null,t&&(Math.hypot(e.clientX-t.x,e.clientY-t.y)>4||(i=this.disassembly)!=null&&i.isEnabled()||this.dispatchPick(e))};this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},e.buttons&1&&this.prepareInteractiveFrameBudget(),!this.measurementActive||(this.pendingPoint&&this.schedulePreviewLineUpdate(),this.measurementMarkers.length===0))return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.measurementMarkers,!1),r=i.length>0?this.measurementMarkers.indexOf(i[0].object):-1;if(r!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&r{e.preventDefault(),this.contextLost=!0,this.renderHandle&&(cancelAnimationFrame(this.renderHandle),this.renderHandle=0)};this.handleContextRestored=()=>{this.contextLost=!1,this.markDirty(),this.startRenderLoop()};this.renderer=new lT({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Mi,this.renderer.toneMapping=Rs,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=mS,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(rA,1),this.scene=new Cd,this.camera=new dr(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new hT(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.85,this.controls.screenSpacePanning=!0,this.controls.target.copy(this.initialTarget),this.controls.addEventListener("change",this.handleControlsChange),this.installDefaultLighting(),this.resizeObs=new ResizeObserver(()=>this.resizeRenderer()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointerup",this.handlePointerUp),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.resizeRenderer(),this.startRenderLoop()}async loadModel(e,t,i,r){var f;this.clearLoadedModel("model-switch"),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=V2();let s,a=[];if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let d=await ZB(e,this.loadedExt,i,r);s=d.scene,a=d.animations,this.resourceWarnings=d.warnings}else if(this.loadedExt==="stl")s=await QB(e),this.stlMaterial=Ra(s)?s.material:null;else if(this.loadedExt==="ply")s=await $B(e);else if(this.loadedExt==="obj"){let d=await JB(e,i,r);s=d.object,this.resourceWarnings=d.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);this.rootObject=s,this.scene.add(s),this.invalidateMeshCache();let o=this.getRenderableObjects(s);this.prepareModelForQuality(o),this.syncShadowFeatures();let l=this.getRootPreviewBounds(s);if(this.updateShadowFraming(l),this.syncSceneHelpers(),this.markDirty(),a.length>0){this.mixer=new O_(s);for(let d of a)this.mixer.clipAction(d).play();this.animationPlaying=!0}let c=qT(s,o,this.resourceWarnings,l!=null?l:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(s,l!=null?l:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(f=this.disassembly)==null||f.dispose(),this.disassembly=null,c}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.applySTLConfig(e.stl)}applySTLConfig(e){let t=this.stlMaterial;t&&(e.color!==void 0&&t.color.set(e.color),e.wireframe!==void 0&&(t.wireframe=e.wireframe,t.needsUpdate=!0),this.markDirty())}destroy(){var t,i;cancelAnimationFrame(this.renderHandle),cancelAnimationFrame(this.cameraAnimHandle),this._onPickCallbacks=[],this.renderObservers.clear(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.clearFocusedMesh(),this.clearSelectionHighlight(),this.clearLoadedModel("destroy");for(let r of this.configLights)this.disposeConfiguredLight(r);this.configLights.length=0;for(let r of this.defaultLights)this.disposeConfiguredLight(r);this.defaultLights.length=0,this.disposeGlobalEnvironment(),this.controls.removeEventListener("change",this.handleControlsChange),this.controls.dispose();let e=this.renderer.domElement;e.removeEventListener("wheel",this.preventCanvasWheelScroll),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointerup",this.handlePointerUp),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.resizeObs.disconnect(),(i=this.viewportObserver)==null||i.disconnect(),this.viewportObserver=null,this.renderer.dispose()}getCanvas(){return this.renderer.domElement}captureSnapshot(){return this.renderNow(0),this.renderer.domElement.toDataURL("image/png")}getAnnotationProvider(){let e=this.renderer.domElement;return VT({canvas:e,observeRender:t=>(this.renderObservers.add(t),this.setRenderObserverSettleFrames(),this.markDirty(),{remove:()=>{this.renderObservers.delete(t),this.renderObservers.size===0&&this.setRenderObserverSettleFrames(0)}}),getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}exportModelInfo(e){var s;if(!this.rootObject)return"";let t=this.getRenderableObjects(this.rootObject),i=qT(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Cs(e)||i.rootName;return FT({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(A2)})}getModelEvidence(){var o;if(!this.rootObject)return null;let e=this.getRenderableObjects(this.rootObject),t=this.getRenderableMeshes(this.rootObject),i=this.getChildRenderableMeshMap(this.rootObject),r=this.getRenderableBoundsMap(this.rootObject),s=b2(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return kT({summary:qT(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>Fy(l,this.rootObject,r),getMeshMaterialNames:T2,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:this._lastPickResult.mesh instanceof zi?this._lastPickResult.mesh:null;if(!e)return null;let t=this.rootObject?this.getRenderableMeshes(this.rootObject):[],i=this.rootObject?this.getChildRenderableMeshMap(this.rootObject):void 0;return R2(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?BT(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Qt(e.pickedPoint):e.mesh instanceof zi?vr(hn(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(Gy(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty()),this.resetDisassembly(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.switchCameraMode(this.initialCameraMode),this.camera.position.copy(this.initialPosition),this.controls.target.copy(this.initialTarget),this.camera.lookAt(this.controls.target),this.camera instanceof dr&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now())}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof zi&&this.setFocusedObject(this._lastPickResult.mesh)):this.clearFocusedMesh(),this.markDirty(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}setWireframe(e){e!==this.wireframeEnabled&&(this.wireframeEnabled=e,this.applyWireframe(e),this.markDirty())}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}applyWireframe(e){if(this.rootObject)for(let t of this.getRenderableMeshes(this.rootObject))if(e){this.wireframeOriginalMaterials.set(t.id,t.material);let r=Ls(t.material).map(s=>{if(s instanceof En){let a=new es({color:s.color,transparent:s.transparent,opacity:s.opacity,side:s.side,visible:s.visible});return a.wireframe=!0,a}if("wireframe"in s){let a=s.clone();return a.wireframe=!0,a}return s});t.material=Array.isArray(t.material)?r:r[0]}else{let i=this.wireframeOriginalMaterials.get(t.id);i&&(t.material=i),this.wireframeOriginalMaterials.delete(t.id)}}toggleOrientationGizmo(){if(!this.axesHelper){this.axesHelper=new Cu(1.2),this.axesHelper.visible=!1;let e=this.axesHelper.material;e.depthTest=!1,e.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}return this.axesHelper.visible=!this.axesHelper.visible,this.axesHelper.position.copy(this.controls.target),this.markDirty(),this.axesHelper.visible}isOrientationGizmoEnabled(){var e;return!!((e=this.axesHelper)!=null&&e.visible)}toggleBoundingBox(){var e;return this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled?(this.ensureBoundingBoxHelper(),this.markDirty(),!!this.bboxHelper):((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=null,this.markDirty(),!1)}hasAnimations(){return this.mixer!==null}toggleAnimation(){return this.mixer?(this.animationPlaying=!this.animationPlaying,this.mixer.timeScale=this.animationPlaying?1:0,this.markDirty(),this.animationPlaying):!1}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.measurementActive||this.cancelPendingMeasurement(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments){i.line.removeFromParent(),i.line.geometry.dispose(),i.line.material.dispose(),i.label.removeFromParent();let r=i.label.material;(t=r.map)==null||t.dispose(),r.dispose()}this.measurementSegments=[];for(let i of this.measurementMarkers){i.removeFromParent(),i.geometry.dispose();let r=i.material;if(Array.isArray(r))for(let s of r)s.dispose();else r.dispose()}this.measurementMarkers=[],this.markDirty()}setMeasurementScale(e){this.measurementScale=ng(e),this.updateMeasurementLabels()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=WT(e),this.updateMeasurementLabels()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootObject)return null;let e=hn(this.rootObject);return ji(e)}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return zT(this.createMeasurementRecords())}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let i of this.measurementSegments){let r=qu(this.createMeasurementReading(i.start,i.end));i.label.removeFromParent();let s=i.label.material;(t=s.map)==null||t.dispose(),s.dispose();let a=new se().addVectors(i.start,i.end).multiplyScalar(.5);i.label=this.createMeasurementLabelSprite(r,a,e),this.scene.add(i.label)}this.markDirty()}setRenderQuality(e,t=this.renderScale){this.quality=e,this.renderScale=t,this.syncGlobalEnvironmentForQuality(),this.applyShadowQuality(),this.resizeRenderer()}setRenderScale(e){return this.renderScale=Math.min(2,Math.max(.25,e)),this.resizeRenderer(),Number(this.renderScale.toFixed(2))}getPerformanceSnapshot(){let e=this.smoothness.snapshot(),t=this.getQualitySnapshot();return{backend:"three",renderScale:Number(this.renderScale.toFixed(2)),quality:this.quality,pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),interactivePixelRatioActive:this.interactivePixelRatioActive,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames,frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,frameBudgetShadowDeferred:this.frameBudgetShadowDeferred,lastFrameDurationMs:Number(this.lastFrameDurationMs.toFixed(2)),averageRenderMs:e.averageRenderMs,p95RenderMs:e.p95RenderMs,maxRenderMs:e.maxRenderMs,renderedFrameCount:e.renderedFrameCount,slowFrameCount:e.slowFrameCount,idleFrameSkipCount:e.idleFrameSkipCount,adaptiveScaleChangeCount:e.adaptiveScaleChangeCount,viewportVisible:this.viewportVisible,disposalAudit:{...this.lastDisposalAudit},meshCount:t.geometry.meshCount,qualitySnapshot:t}}getQualitySnapshot(){let e=this.getGeometryQualityStats(),t=this.smoothness.snapshot();return{backend:"three",supportedFormats:["glb","gltf","stl","ply","obj"],colorPipeline:{outputColorSpace:String(this.renderer.outputColorSpace),toneMapping:this.renderer.toneMapping===Rs?"NoToneMapping":String(this.renderer.toneMapping),textureCount:this.textureAudit.textureCount,colorTextureCount:this.textureAudit.colorTextureCount,srgbColorTextureCount:this.textureAudit.srgbColorTextureCount},geometry:e,camera:{near:Number(this.camera.near.toPrecision(6)),far:Number(this.camera.far.toPrecision(6)),nearFarRatio:Number((this.camera.far/Math.max(this.camera.near,Number.EPSILON)).toPrecision(6))},performance:{renderScale:Number(this.renderScale.toFixed(2)),pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,viewportVisible:this.viewportVisible,renderedFrameCount:t.renderedFrameCount,idleFrameSkipCount:t.idleFrameSkipCount,slowFrameCount:t.slowFrameCount,averageRenderMs:t.averageRenderMs,p95RenderMs:t.p95RenderMs,maxRenderMs:t.maxRenderMs,adaptiveScaleChangeCount:t.adaptiveScaleChangeCount}}}setExplode(e,t){if(!this.rootObject)return;let i=Math.abs(e)>Number.EPSILON;!i&&!this.explodeStateActive||(O2(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(Gy(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new se(e.x,e.y,e.z),i=this.camera.position.distanceTo(this.controls.target),r=t.clone().sub(this.camera.position).normalize(),s=t.clone().sub(r.multiplyScalar(i));this.animateCamera(s,t)}toggleDisassembly(){if(this.ensureDisassembly(),!this.disassembly)return!1;let e=!this.disassembly.isEnabled();e&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh(),this.clearSelectionHighlight());let t=this.disassembly.setEnabled(e);return t||this.disassembly.reset(),t}resetDisassembly(){this.disassembly&&(this.disassembly.reset(),this.invalidateRootBoundsCache())}isDisassemblyEnabled(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}ensureDisassembly(){if(this.disassemblySetup||(this.disassemblySetup=!0,!this.rootObject))return;let e=this.getRenderableMeshes(this.rootObject);e.length!==0&&(this.disassembly=y2(this.scene,this.camera,this.renderer.domElement,this.rootObject,e,this.controls,()=>{this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty()},this.getChildRenderableMeshMap(this.rootObject)))}animateCamera(e,t){cancelAnimationFrame(this.cameraAnimHandle);let i=this.camera.position.clone(),r=this.controls.target.clone(),s=500,a=performance.now(),o=()=>{let l=performance.now()-a,c=Math.min(1,l/s),f=c<.5?4*c*c*c:1-Math.pow(-2*c+2,3)/2;this.camera.position.lerpVectors(i,e,f),this.controls.target.lerpVectors(r,t,f),this.controls.update(),this.markDirty(),c<1&&(this.cameraAnimHandle=window.requestAnimationFrame(o))};this.cameraAnimHandle=window.requestAnimationFrame(o)}startRenderLoop(){if(this.renderHandle||!this.viewportVisible||this.contextLost)return;let e=()=>{if(!this.viewportVisible||this.contextLost){this.renderHandle=0;return}let t=this.renderNow(performance.now());this.renderHandle=t?window.requestAnimationFrame(e):0};this.renderHandle=window.requestAnimationFrame(e)}renderNow(e){var l,c,f;let t=this.renderer.domElement;if(!this.viewportVisible||!t.isConnected||t.clientWidth<=0||t.clientHeight<=0)return!1;let i=Math.max(0,(e-this.clock.last)/1e3);this.clock.last=e;let r=this.controls.update(),s=!!this.mixer&&this.animationPlaying;if(s&&this.mixer&&(this.mixer.update(i),this.markShadowDirty()),this.restoreInteractivePixelRatioIfIdle(e,r),!r&&!s&&!this.renderDirty)return this.smoothness.recordIdleFrameSkip(),this.renderObserverSettleFrames>0&&(this.renderObserverSettleFrames--,this.notifyRenderObservers()),this.shouldContinueRenderLoop(r,s);this.renderDirty=!1,this.setRenderObserverSettleFrames(),(l=this.bboxHelper)==null||l.update(),(c=this.selectionHelper)==null||c.update(),(f=this.focusHelper)==null||f.update(),this.axesHelper&&this.axesHelper.visible&&this.axesHelper.position.copy(this.controls.target);let a=performance.now();this.renderer.render(this.scene,this.camera);let o=performance.now()-a;return this.smoothness.recordRenderedFrame(o,U2),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return w2({cameraMoved:e,animating:t,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames})}notifyRenderObservers(){if(!(this.frameBudgetObserverStride>1&&(this.frameBudgetObserverCursor=(this.frameBudgetObserverCursor+1)%this.frameBudgetObserverStride,this.frameBudgetObserverCursor!==0)))for(let e of this.renderObservers)e()}markDirty(){this.renderDirty=!0,this.startRenderLoop()}markShadowDirty(){if(!this.renderer.shadowMap.enabled){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}if(this.shouldDeferShadowRefresh()){this.frameBudgetShadowDeferred=!0;return}this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!0}prepareInteractiveFrameBudget(){let e=performance.now();this.interactionPixelRatioDeadline=e+Eoe,this.activateInteractivePixelRatio()&&this.resizeRenderer()}activateInteractivePixelRatio(){if(this.interactivePixelRatioActive)return!1;let e=this.computePixelRatio(!1);return this.computePixelRatio(!0)>=e?!1:(this.interactivePixelRatioActive=!0,!0)}restoreInteractivePixelRatioIfIdle(e,t){!this.interactivePixelRatioActive||t||e=U2?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=Toe?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=Aoe){this.frameBudgetSlowStreak=0;let t=Math.max(Moe,this.frameBudgetPixelRatioScale*Roe);t=xoe&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*boe),this.frameBudgetObserverStride=Math.max(1,this.frameBudgetObserverStride-1),this.setRenderObserverSettleFrames(),this.smoothness.recordAdaptiveScaleChange(),this.resizeRenderer())}}resetFrameBudget(){let e=this.frameBudgetPixelRatioScale!==1||this.frameBudgetObserverStride!==1;this.frameBudgetPixelRatioScale=1,this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0,this.frameBudgetObserverStride=1,this.frameBudgetObserverCursor=0,this.setRenderObserverSettleFrames(),e&&this.markDirty()}setRenderObserverSettleFrames(e=B2){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=Ioe}resizeRenderer(){let e=this.renderer.domElement,t=Math.max(1,Math.round(e.clientWidth||e.width||1)),i=Math.max(1,Math.round(e.clientHeight||e.height||1));this.renderer.setPixelRatio(this.computePixelRatio()),this.renderer.setSize(t,i,!1),this.camera instanceof xs?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:hn(this.rootObject),t=ji(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof xs))return;let i=this.computeOrthographicViewSpan()/2,r=i*e;this.camera.left=-r,this.camera.right=r,this.camera.top=i,this.camera.bottom=-i}updateOrthographicFrustumForCamera(e,t){let r=this.computeOrthographicViewSpan()/2,s=r*t;e.left=-s,e.right=s,e.top=r,e.bottom=-r,e.updateProjectionMatrix()}switchCameraMode(e){if(this.cameraMode===e&&(e==="perspective"&&this.camera instanceof dr||e==="orthographic"&&this.camera instanceof xs))return;let t=this.renderer.domElement,i=Math.max(1,Math.round(t.clientWidth||t.width||1)),r=Math.max(1,Math.round(t.clientHeight||t.height||1)),s=i/r,a=this.camera,o=a.position.clone(),l=this.controls.target.clone(),c=a.zoom||1,f=a.near,d=a.far;if(this.scene.remove(a),e==="orthographic"){let h=new xs(-1,1,1,-1,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.updateOrthographicFrustumForCamera(h,s),this.camera=h}else{let h=new dr(this.initialFov,s,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.camera=h}this.scene.add(this.camera),this.controls.object=this.camera,this.controls.target.copy(l),this.controls.update(),this.cameraMode=e}applyCameraConfig(e){var i;let t=(i=e.mode)!=null?i:this.cameraMode;e.mode&&(this.initialCameraMode=e.mode),this.switchCameraMode(t),this.camera instanceof dr&&typeof e.fov=="number"&&Number.isFinite(e.fov)&&(this.camera.fov=e.fov,this.initialFov=e.fov),e.position&&(this.camera.position.set(...e.position),this.initialPosition.set(...e.position)),e.lookAt&&(this.controls.target.set(...e.lookAt),this.camera.lookAt(this.controls.target),this.initialTarget.set(...e.lookAt)),typeof e.near=="number"&&Number.isFinite(e.near)&&(this.camera.near=e.near),typeof e.far=="number"&&Number.isFinite(e.far)&&(this.camera.far=e.far),typeof e.zoom=="number"&&Number.isFinite(e.zoom)&&(this.camera.zoom=e.zoom,this.initialZoom=e.zoom),this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty()}applyLightConfig(e){for(let i of this.configLights)this.disposeConfiguredLight(i);this.configLights.length=0;let t=e.length>0;for(let i of this.defaultLights)i.visible=!t;for(let i of e){let r=this.createConfiguredLight(i);r&&(this.configLights.push(r),r.parent!==this.camera&&this.scene.add(r))}this.syncShadowFeatures(),this.updateShadowFraming(),this.markShadowDirty(),this.markDirty()}applySceneConfig(e){if(this.sceneConfig={...this.sceneConfig,...e},e.transparent!==void 0||e.background!==void 0)if(this.sceneConfig.transparent)this.scene.background=null,this.renderer.setClearColor(rA,0);else if(this.sceneConfig.background){let t=new ft(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=rA,this.renderer.setClearColor(rA,1);typeof e.autoRotate=="boolean"&&(this.controls.autoRotate=e.autoRotate),typeof e.autoRotateSpeed=="number"&&(this.controls.autoRotateSpeed=e.autoRotateSpeed),typeof e.axis=="boolean"&&this.syncAxisHelper(e.axis),this.syncSceneHelpers(),this.syncShadowFeatures(),this.markDirty()}installDefaultLighting(){let e=new Iu(16777215,.96);e.name="default-global-ambient";let t=new Mu(16777215,7172736,.34);t.name="default-hemi",this.defaultLights.push(e,t);for(let i of this.defaultLights)this.scene.add(i)}installGlobalEnvironment(){this.disposeGlobalEnvironment();let e=new Uu(this.renderer),t=new uT;this.environmentTarget=e.fromScene(t,.04),this.scene.environment=this.environmentTarget.texture,this.scene.environmentIntensity=.48,t.dispose(),e.dispose()}syncGlobalEnvironmentForQuality(){if(this.quality==="low"){this.cancelGlobalEnvironmentInstall(),this.disposeGlobalEnvironment(),this.markDirty();return}this.rootObject&&!this.environmentTarget&&this.scheduleGlobalEnvironmentInstall()}scheduleGlobalEnvironmentInstall(){this.quality==="low"||this.environmentTarget||this.environmentInstallHandle||(this.environmentInstallHandle=window.setTimeout(()=>{this.environmentInstallHandle=0,!(this.quality==="low"||this.contextLost||!this.rootObject)&&(this.installGlobalEnvironment(),this.markDirty())},Coe))}cancelGlobalEnvironmentInstall(){this.environmentInstallHandle&&(window.clearTimeout(this.environmentInstallHandle),this.environmentInstallHandle=0)}disposeGlobalEnvironment(){var e;this.cancelGlobalEnvironmentInstall(),this.scene.environment=null,(e=this.environmentTarget)==null||e.dispose(),this.environmentTarget=null}createConfiguredLight(e){var r,s,a,o,l,c,f;let t=e.color?new ft(e.color):new ft(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new Iu(t,i);case"hemisphere":{let d=e.groundColor?new ft(e.groundColor):new ft(4473924);return new Mu(t,d,i)}case"directional":{let d=new Zo(t,i),h=(s=e.position)!=null?s:[-1,2,1],u=(a=e.target)!=null?a:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new ro(t,i),h=(o=e.position)!=null?o:[0,5,0];return d.position.set(...h),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new kl(t,i),h=(l=e.position)!=null?l:[0,5,0],u=(c=e.target)!=null?c:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.angle=e.angle?e.angle*Math.PI/180:Math.PI/4,d.penumbra=(f=e.penumbra)!=null?f:.5,typeof e.decay=="number"&&(d.decay=e.decay),d.castShadow=!!e.castShadow,d}case"attachToCam":{let d=new ro(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof Zo||e instanceof kl)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=this.renderer.capabilities.getMaxAnisotropy(),i=new Set;for(let r of e)for(let s of Ls(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){Poe(this.textureAudit,bT(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!ky(i)||!i.castShadow||(i.shadow.mapSize.set(e,e),i.shadow.bias=-12e-5,i.shadow.normalBias=.018,i.shadow.needsUpdate=!0,t=!0);t&&(this.syncShadowFeatures(),this.markShadowDirty(),this.markDirty())}updateShadowFraming(e=this.getRootPreviewBounds()){if(!this.rootObject||!e)return;let t=vr(e),i=ji(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new se(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!ky(l)||!l.castShadow)){if(this.ensureMeshShadowFlags(),l.shadow.mapSize.set(this.shadowMapSize(),this.shadowMapSize()),l.shadow.bias=-12e-5,l.shadow.normalBias=.018,l instanceof Zo){let c=l.position.clone().sub(l.target.position);if(c.lengthSq()<.001&&c.set(4,7,5),l.target.position.copy(a),l.target.parent||this.scene.add(l.target),l.position.copy(a).add(c.normalize().multiplyScalar(s*2.4)),l.shadow.camera instanceof xs){let f=l.shadow.camera;f.left=-s,f.right=s,f.top=s,f.bottom=-s,f.near=.1,f.far=s*5,f.updateProjectionMatrix()}}l.shadow.needsUpdate=!0,o=!0}o&&this.markShadowDirty()}shadowMapSize(){return this.quality==="low"?512:this.quality==="medium"?1024:2048}allLights(){return[...this.defaultLights,...this.configLights]}hasActiveShadowFeatures(){return!!this.sceneConfig.groundShadow||this.allLights().some(e=>ky(e)&&e.castShadow)}syncShadowFeatures(){let e=this.hasActiveShadowFeatures();if(this.renderer.shadowMap.enabled!==e&&(this.renderer.shadowMap.enabled=e),!e){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}this.ensureMeshShadowFlags(),this.renderer.shadowMap.needsUpdate=!0}ensureMeshShadowFlags(){if(!(!this.rootObject||this.meshShadowFlagsPrepared)){for(let e of this.getRenderableObjects(this.rootObject))Ra(e)&&(e.castShadow=!0,e.receiveShadow=!0);this.meshShadowFlagsPrepared=!0}}syncSceneHelpers(){this.sceneConfig.groundShadow?this.createGroundShadow():this.removeGroundShadow(),this.sceneConfig.grid?this.createGrid():this.removeGrid(),typeof this.sceneConfig.axis=="boolean"&&this.syncAxisHelper(this.sceneConfig.axis)}syncAxisHelper(e){if(!this.axesHelper){this.axesHelper=new Cu(1.2);let t=this.axesHelper.material;t.depthTest=!1,t.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}this.axesHelper.visible=e,this.axesHelper.position.copy(this.controls.target)}createGroundShadow(){var l;if(!this.rootObject||this.groundShadowMesh)return;this.ensureMeshShadowFlags();let e=(l=this.getRootPreviewBounds())!=null?l:hn(this.rootObject),t=vr(e),i=ji(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*3,.001),a=e.min.y-Math.max(s*.002,1e-5),o=new li(new Ld(s,s),new M_({color:0,opacity:poe,transparent:!0}));o.name="ai3d-ground-shadow",o.rotation.x=-Math.PI/2,o.position.set(t.x,a,t.z),o.receiveShadow=!0,o.renderOrder=-1,this.scene.add(o),this.groundShadowMesh=o}removeGroundShadow(){if(this.groundShadowMesh){this.groundShadowMesh.removeFromParent(),this.groundShadowMesh.geometry.dispose();for(let e of Ls(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:hn(this.rootObject),t=vr(e),i=ji(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new N_(s,20,7305093,3423046);a.name="ai3d-grid",a.position.set(t.x,e.min.y-Math.max(s*.003,1e-5),t.z);for(let l of Ls(a.material))l.transparent=!0,l.opacity=.42;this.scene.add(a),this.gridHelper=a}removeGrid(){if(this.gridHelper){this.gridHelper.removeFromParent(),this.gridHelper.geometry.dispose();for(let e of Ls(this.gridHelper.material))e.dispose();this.gridHelper=null}}dispatchPick(e){var c,f,d;if(!this.rootObject||(c=this.disassembly)!=null&&c.isEnabled())return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],r=Qu(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?jT(this.rootObject,r,s,a):null,l={mesh:o,pickedPoint:(d=(f=i==null?void 0:i.point)==null?void 0:f.clone())!=null?d:null,screenX:e.clientX,screenY:e.clientY};if(this._lastPickResult=l,this.measurementActive&&(i!=null&&i.point)){this.addMeasurementPoint(i.point.clone());return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(h=>h(l))}clearLoadedModel(e="model-switch"){var t,i;if(this.cancelGlobalEnvironmentInstall(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.explodeStateActive=!1,this.meshShadowFlagsPrepared=!1,this.invalidateMeshCache(),this.markDirty(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.disposeMeasurementOverlays(!0),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,(i=this.bboxHelper)==null||i.removeFromParent(),this.bboxHelper=null,this.bboxEnabled=!1,this.removeGroundShadow(),this.removeGrid(),this.mixer=null,this.animationPlaying=!1,!this.rootObject){this.lastDisposalAudit={reason:e,meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};return}this.scene.remove(this.rootObject),this.lastDisposalAudit=this.disposeObjectGraph(this.rootObject,e),this.rootObject=null,this.invalidateMeshCache(),this.markShadowDirty()}disposeObjectGraph(e,t){var c;let i=new Set,r=new Set,s=new Set,a=0,o=0,l=f=>{Ra(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let h of Ls(f.material))this.disposeMaterialWithTextures(h,r,s)};if(this.cachedRenderables&&this.cachedRenderableRoot===e){o=(c=this.cachedRenderableObjectCount)!=null?c:this.cachedRenderables.length;for(let f of this.cachedRenderables)l(f)}else e.traverse(f=>{o++,Qu(f)&&l(f)});return{reason:t,meshCount:a,geometryCount:i.size,materialCount:r.size,textureCount:s.size,objectCount:o,timestamp:performance.now()}}disposeMaterialWithTextures(e,t,i){if(t.has(e.uuid))return;let r=e;for(let s of Object.values(r))if(s instanceof Rr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Rr&&!i.has(a.uuid)&&(a.dispose(),i.add(a.uuid));e.dispose(),t.add(e.uuid)}fitCameraToObject(e,t){var l;let i=(l=t!=null?t:this.getRootPreviewBounds(e))!=null?l:hn(e),r=c2(i);this.initialTarget.set(r.target.x,r.target.y,r.target.z),this.initialPosition.set(r.position.x,r.position.y,r.position.z),this.initialFov=45;let s=ji(i),a=Math.max(s.x,s.y,s.z,Number.EPSILON),o=this.initialPosition.distanceTo(this.initialTarget);this.controls.minDistance=Math.max(r.near*4,a*.02,1e-5),this.controls.maxDistance=Math.max(o*8,this.controls.minDistance*10),this.raycaster.params.Points={threshold:Math.max(a*.01,1e-5)},this.raycaster.params.Line={threshold:Math.max(a*.002,1e-5)},this.occlusionRaycaster.params.Points={threshold:Math.max(a*.006,1e-5)},this.occlusionRaycaster.params.Line={threshold:Math.max(a*.001,1e-5)},this.resetView(),this.axesHelper&&(this.axesHelper.position.copy(this.controls.target),this.axesHelper.scale.setScalar(Math.max(a*.25,5e-4))),this.camera.near=r.near,this.camera.far=r.far,this.camera.updateProjectionMatrix(),this.markDirty()}getAnnotationCameraStateKey(){return GT([{value:this.camera.position.x,digits:3},{value:this.camera.position.y,digits:3},{value:this.camera.position.z,digits:3},{value:this.controls.target.x,digits:2},{value:this.controls.target.y,digits:2},{value:this.controls.target.z,digits:2},{value:this.camera instanceof dr?this.camera.fov:this.camera.zoom,digits:this.camera instanceof dr?2:3}])}projectAnnotationWorldPoint(e,t){let i=this.renderer.domElement;return!i.isConnected||i.clientWidth===0||i.clientHeight===0?!1:(this.scene.updateMatrixWorld(),this.camera.updateMatrixWorld(),this.annotationProjection.set(e.x,e.y,e.z).project(this.camera),p2(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=df(Qt(this.camera.position),e);if(!t)return!1;this.rootObject.updateWorldMatrix(!0,!0),this.annotationDirection.set(t.direction.x,t.direction.y,t.direction.z),this.occlusionRaycaster.set(this.camera.position,this.annotationDirection),this.occlusionRaycaster.far=t.distance;let i=this.occlusionRaycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];return!!i&&ff(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{Ra(i)&&i.geometry&&t.push(i)}),this.cachedMeshes=t,this.cachedMeshRoot=e,t}getRenderableObjects(e){if(this.cachedRenderables&&this.cachedRenderableRoot===e)return this.cachedRenderables;let t=[],i=0;return e.traverse(r=>{i++,Qu(r)&&r.geometry&&t.push(r)}),this.cachedRenderables=t,this.cachedRenderableRoot=e,this.cachedRenderableObjectCount=i,t}getChildRenderableMeshMap(e){return this.cachedChildMeshMap&&this.cachedChildMeshMapRoot===e?this.cachedChildMeshMap:(this.cachedChildMeshMap=em(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=S2(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=M2(this.rootObject,this.getRenderableObjects(this.rootObject),(e=this.getRootPreviewBounds())!=null?e:void 0,this.getRenderableBoundsMap(this.rootObject))),this.cachedGeometryQualityStats):{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null}}invalidateMeshCache(){this.cachedMeshes=null,this.cachedMeshRoot=null,this.cachedRenderables=null,this.cachedRenderableRoot=null,this.cachedRenderableObjectCount=null,this.cachedChildMeshMap=null,this.cachedChildMeshMapRoot=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.invalidateRootBoundsCache()}invalidateRootBoundsCache(){this.cachedRootPreviewBounds=null,this.cachedRootPreviewBoundsObject=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.cachedGeometryQualityStats=null}getRootPreviewBounds(e=this.rootObject){return e?this.cachedRootPreviewBounds&&this.cachedRootPreviewBoundsObject===e?this.cachedRootPreviewBounds:(this.cachedRootPreviewBounds=hn(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new Wl(this.rootObject,16436245),this.scene.add(this.bboxHelper))}updateSelectionHighlight(e){var t;if(!this.rootObject||!e){this.clearSelectionHighlight();return}this.highlightedObject===e&&this.selectionHelper||((t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=new Wl(e,4890367),this.scene.add(this.selectionHelper),this.highlightedObject=e,this.markDirty())}setFocusedObject(e){var r,s;if(!this.rootObject||!e){this.clearFocusedMesh();return}if(this.focusedObject===e)return;let t=this.getRenderableMeshes(this.rootObject),i=Ra(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!Qu(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new Wl(e,3065087),this.scene.add(this.focusHelper),this.focusedObject=e,this.focusedSelectedMeshes.clear();for(let a of i)this.focusedSelectedMeshes.set(a.id,a);this.markDirty()}clearFocusedMesh(){var e;this.restoreFocusedMaterials(),this.disposeFocusDimMaterials(),this.originalMaterials.clear(),this.focusedSelectedMeshes.clear(),(e=this.focusHelper)==null||e.removeFromParent(),this.focusHelper=null,this.focusedObject=null,this.markDirty()}restoreFocusedMaterials(){if(this.rootObject)for(let e of this.getRenderableMeshes(this.rootObject)){let t=this.originalMaterials.get(e.id);t&&(e.material=t)}}applyInitialFocusMaterials(e,t){let i=new Set(t.map(r=>r.id));for(let r of e)this.originalMaterials.set(r.id,r.material),!i.has(r.id)&&(r.material=this.focusDimMaterialCache.get(r.material))}applyFocusSelectionDelta(e){var i,r;let t=new Set(e.map(s=>s.id));for(let[s,a]of this.focusedSelectedMeshes){if(t.has(s))continue;let o=(i=this.originalMaterials.get(s))!=null?i:a.material;this.originalMaterials.has(s)||this.originalMaterials.set(s,o),a.material=this.focusDimMaterialCache.get(o)}for(let s of e){let a=(r=this.originalMaterials.get(s.id))!=null?r:s.material;this.originalMaterials.has(s.id)||this.originalMaterials.set(s.id,a),s.material=a}}disposeFocusDimMaterials(){this.focusDimMaterialCache.clear()}clearSelectionHighlight(){var e;(e=this.selectionHelper)==null||e.removeFromParent(),this.selectionHelper=null,this.highlightedObject=null,this.markDirty()}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:hn(this.rootObject),t=ji(e);return Math.max(t.x,t.y,t.z,.001)*.015}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(16739179));e&&this.markDirty()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>t.start.distanceTo(e)<1e-4||t.end.distanceTo(e)<1e-4)}disposeMeasurementMarker(e){e.removeFromParent(),e.geometry.dispose();let t=e.material;if(Array.isArray(t))for(let i of t)i.dispose();else t.dispose()}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(i.distanceTo(this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=new Ru(r,16,16),a=new es({color:16739179,depthTest:!1}),o=new li(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(16739179)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=new Ru(r,16,16),a=new es({color:16739179,depthTest:!1}),o=new li(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o),this.pendingMarker=o}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(5361510),this.pendingPoint=i,this.ensurePreviewLine()}this.markDirty()}createMeasurementSegment(e,t){let i=new Xi().setFromPoints([e,t]),r=new Xo(i,new Ln({color:16739179,depthTest:!1}));r.renderOrder=998,this.scene.add(r);let s=qu(this.createMeasurementReading(e,t)),a=new se().addVectors(e,t).multiplyScalar(.5),o=this.createMeasurementLabelSprite(s,a,this.getMeasurementMarkerSize()*4);this.scene.add(o),this.measurementSegments.push({start:e,end:t,line:r,label:o})}createMeasurementLabelSprite(e,t,i){let r=activeDocument.createEl("canvas"),s=r.getContext("2d");r.width=640,r.height=160,s.fillStyle="rgba(32, 36, 46, 0.9)",s.beginPath(),s.roundRect(0,0,640,160,18),s.fill(),s.strokeStyle="#ff6b6b",s.lineWidth=4,s.stroke(),s.fillStyle="#ffffff",s.textAlign="center",s.textBaseline="middle",s.font="bold 46px sans-serif",s.fillText(e.primary,320,58),s.font="28px sans-serif",s.fillStyle="rgba(255, 255, 255, 0.82)",s.fillText(e.secondary,320,112);let a=new R_(r),o=new Su({map:a,depthTest:!1}),l=new E_(o);return l.position.copy(t),l.scale.set(i*5,i*1.25,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Xi().setFromPoints([new se,new se]);this.previewLine=new Xo(e,new Ln({color:16777215,transparent:!0,opacity:.5,depthTest:!1})),this.previewLine.renderOrder=997,this.scene.add(this.previewLine)}updatePreviewLine(){if(this.previewLineUpdateHandle=0,!this.pendingPoint||!this.previewLine||!this.rootObject)return;let e=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-e.left)/e.width*2-1,this.pointer.y=-((this.lastPointerClient.y-e.top)/e.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let t=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],i;t!=null&&t.point?i=t.point.clone():i=this.pendingPoint.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5));let r=this.previewLine.geometry.getAttribute("position");r.setXYZ(0,this.pendingPoint.x,this.pendingPoint.y,this.pendingPoint.z),r.setXYZ(1,i.x,i.y,i.z),r.needsUpdate=!0,this.previewLine.geometry.computeBoundingSphere(),this.markDirty()}schedulePreviewLineUpdate(){this.previewLineUpdateHandle||(this.previewLineUpdateHandle=window.requestAnimationFrame(()=>this.updatePreviewLine()))}cancelPreviewLineUpdate(){this.previewLineUpdateHandle&&(window.cancelAnimationFrame(this.previewLineUpdateHandle),this.previewLineUpdateHandle=0)}removePreviewLine(){this.cancelPreviewLineUpdate(),this.previewLine&&(this.previewLine.removeFromParent(),this.previewLine.geometry.dispose(),this.previewLine.material.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return HT(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}}});var Loe,Wy,Hy,ie,hi=I(()=>{Loe=typeof WeakRef!="undefined",Wy=class{constructor(e,t=!1,i,r){this.initialize(e,t,i,r)}initialize(e,t=!1,i,r){return this.mask=e,this.skipNextObservers=t,this.target=i,this.currentTarget=r,this}},Hy=class{constructor(e,t,i=null){this.callback=e,this.mask=t,this.scope=i,this._willBeUnregistered=!1,this.unregisterOnNextCall=!1,this._remove=null}remove(e=!1){this._remove&&this._remove(e)}},ie=class n{static FromPromise(e,t){let i=new n;return e.then(r=>{i.notifyObservers(r)}).catch(r=>{if(t)t.notifyObservers(r);else throw r}),i}get observers(){return this._observers}constructor(e,t=!1){this.notifyIfTriggered=t,this._observers=new Array,this._numObserversMarkedAsDeleted=0,this._hasNotified=!1,this._eventState=new Wy(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new Hy(e,t,r);a.unregisterOnNextCall=s,i?this._observers.unshift(a):this._observers.push(a),this._onObserverAdded&&this._onObserverAdded(a),this._hasNotified&&this.notifyIfTriggered&&this._lastNotifiedValue!==void 0&&this.notifyObserver(a,this._lastNotifiedValue);let o=Loe?new WeakRef(this):{deref:()=>this};return a._remove=(l=!1)=>{let c=o.deref();c&&(l?c.remove(a):c._remove(a))},a}addOnce(e){return this.add(e,void 0,void 0,void 0,!0)}remove(e){return e?(e._remove=null,this._observers.indexOf(e)!==-1?(this._deferUnregister(e),!0):!1):!1}removeCallback(e,t){for(let i=0;i{this._remove(e)},0))}_remove(e,t=!0){if(!e)return!1;let i=this._observers.indexOf(e);return i!==-1?(t&&this._numObserversMarkedAsDeleted--,this._observers.splice(i,1),!0):!1}makeObserverTopPriority(e){this._remove(e,!1),this._observers.unshift(e)}makeObserverBottomPriority(e){this._remove(e,!1),this._observers.push(e)}notifyObservers(e,t=-1,i,r,s){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=e),!this._observers.length)return!0;let a=this._eventState;a.mask=t,a.target=i,a.currentTarget=r,a.skipNextObservers=!1,a.lastReturnValue=e,a.userInfo=s;for(let o of this._observers)if(!o._willBeUnregistered&&(o.mask&t&&(o.unregisterOnNextCall&&this._deferUnregister(o),o.scope?a.lastReturnValue=o.callback.apply(o.scope,[e,a]):a.lastReturnValue=o.callback(e,a)),a.skipNextObservers))return!1;return!0}notifyObserver(e,t,i=-1){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=t),e._willBeUnregistered)return;let r=this._eventState;r.mask=i,r.skipNextObservers=!1,e.unregisterOnNextCall&&this._deferUnregister(e),e.callback(t,r)}hasObservers(){return this._observers.length-this._numObserversMarkedAsDeleted>0}clear(){for(;this._observers.length;){let e=this._observers.pop();e&&(e._remove=null)}this._onObserverAdded=null,this._numObserversMarkedAsDeleted=0,this.cleanLastNotifiedState()}cleanLastNotifiedState(){this._hasNotified=!1,this._lastNotifiedValue=void 0}clone(){let e=new n;return e._observers=this._observers.slice(0),e}hasSpecificMask(e=-1){for(let t of this._observers)if(t.mask&e||t.mask===e)return!0;return!1}}});var sA,W2=I(()=>{sA=class{get wrapU(){return this._cachedWrapU}set wrapU(e){this._cachedWrapU=e}get wrapV(){return this._cachedWrapV}set wrapV(e){this._cachedWrapV=e}get wrapR(){return this._cachedWrapR}set wrapR(e){this._cachedWrapR=e}get anisotropicFilteringLevel(){return this._cachedAnisotropicFilteringLevel}set anisotropicFilteringLevel(e){this._cachedAnisotropicFilteringLevel=e}get comparisonFunction(){return this._comparisonFunction}set comparisonFunction(e){this._comparisonFunction=e}get useMipMaps(){return this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}constructor(){this.samplingMode=-1,this._useMipMaps=!0,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this._comparisonFunction=0}setParameters(e=1,t=1,i=1,r=1,s=2,a=0){return this._cachedWrapU=e,this._cachedWrapV=t,this._cachedWrapR=i,this._cachedAnisotropicFilteringLevel=r,this.samplingMode=s,this._comparisonFunction=a,this}compareSampler(e){return this._cachedWrapU===e._cachedWrapU&&this._cachedWrapV===e._cachedWrapV&&this._cachedWrapR===e._cachedWrapR&&this._cachedAnisotropicFilteringLevel===e._cachedAnisotropicFilteringLevel&&this.samplingMode===e.samplingMode&&this._comparisonFunction===e._comparisonFunction&&this._useMipMaps===e._useMipMaps}}});var H2,Oi,Os=I(()=>{hi();W2();(function(n){n[n.Unknown=0]="Unknown",n[n.Url=1]="Url",n[n.Temp=2]="Temp",n[n.Raw=3]="Raw",n[n.Dynamic=4]="Dynamic",n[n.RenderTarget=5]="RenderTarget",n[n.MultiRenderTarget=6]="MultiRenderTarget",n[n.Cube=7]="Cube",n[n.CubeRaw=8]="CubeRaw",n[n.CubePrefiltered=9]="CubePrefiltered",n[n.Raw3D=10]="Raw3D",n[n.Raw2DArray=11]="Raw2DArray",n[n.DepthStencil=12]="DepthStencil",n[n.CubeRawRGBD=13]="CubeRawRGBD",n[n.Depth=14]="Depth"})(H2||(H2={}));Oi=class n extends sA{get useMipMaps(){return this._useMipMaps===null?this.generateMipMaps:this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}get uniqueId(){return this._uniqueId}_setUniqueId(e){this._uniqueId=e}getEngine(){return this._engine}get source(){return this._source}constructor(e,t,i=!1){super(),this.isReady=!1,this.isCube=!1,this.is3D=!1,this.is2DArray=!1,this.isMultiview=!1,this.url="",this.generateMipMaps=!1,this._useMipMaps=null,this.mipLevelCount=1,this.samples=0,this.type=-1,this.format=-1,this.onLoadedObservable=new ie,this.onErrorObservable=new ie,this.onRebuildCallback=null,this.width=0,this.height=0,this.depth=0,this.baseWidth=0,this.baseHeight=0,this.baseDepth=0,this.invertY=!1,this._invertVScale=!1,this._associatedChannel=-1,this._source=0,this._buffer=null,this._bufferView=null,this._bufferViewArray=null,this._bufferViewArrayArray=null,this._size=0,this._extension="",this._files=null,this._workingCanvas=null,this._workingContext=null,this._cachedCoordinatesMode=null,this._isDisabled=!1,this._compression=null,this._sphericalPolynomial=null,this._sphericalPolynomialPromise=null,this._sphericalPolynomialComputed=!1,this._lodGenerationScale=0,this._lodGenerationOffset=0,this._useSRGBBuffer=!1,this._creationFlags=0,this._lodTextureHigh=null,this._lodTextureMid=null,this._lodTextureLow=null,this._isRGBD=!1,this._linearSpecularLOD=!1,this._irradianceTexture=null,this._hardwareTexture=null,this._maxLodLevel=null,this._references=1,this._gammaSpace=null,this._premulAlpha=!1,this._dynamicTextureSource=null,this._autoMSAAManagement=!1,this._engine=e,this._source=t,this._uniqueId=n._Counter++,i||(this._hardwareTexture=e._createHardwareTexture())}incrementReferences(){this._references++}updateSize(e,t,i=1){this._engine.updateTextureDimensions(this,e,t,i),this.width=e,this.height=t,this.depth=i,this.baseWidth=e,this.baseHeight=t,this.baseDepth=i,this._size=e*t*i}_rebuild(){var t,i;if(this.isReady=!1,this._cachedCoordinatesMode=null,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this.onRebuildCallback){let r=this.onRebuildCallback(this),s=a=>{a._swapAndDie(this,!1),this.isReady=r.isReady};r.isAsync?r.proxy.then(s):s(r.proxy);return}let e;switch(this.source){case 2:break;case 1:e=this._engine.createTexture((t=this._originalUrl)!=null?t:this.url,!this.generateMipMaps,this.invertY,null,this.samplingMode,r=>{r._swapAndDie(this,!1),this.isReady=!0},null,this._buffer,void 0,this.format,this._extension,void 0,void 0,void 0,this._useSRGBBuffer);return;case 3:if(e=this._engine.createRawTexture(this._bufferView,this.baseWidth,this.baseHeight,this.format,this.generateMipMaps,this.invertY,this.samplingMode,this._compression,this.type,this._creationFlags,this._useSRGBBuffer,this.mipLevelCount),e._swapAndDie(this,!1),this._bufferViewArray)for(let r=0;r{e._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension,!1,0,0,null,void 0,this._useSRGBBuffer,ArrayBuffer.isView(this._buffer)?this._buffer:null);return;case 8:e=this._engine.createRawCubeTexture(this._bufferViewArray,this.width,(i=this._originalFormat)!=null?i:this.format,this.type,this.generateMipMaps,this.invertY,this.samplingMode,this._compression),e._swapAndDie(this,!1),this.isReady=!0;break;case 13:return;case 9:e=this._engine.createPrefilteredCubeTexture(this.url,null,this._lodGenerationScale,this._lodGenerationOffset,r=>{r&&r._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension),e._sphericalPolynomial=this._sphericalPolynomial;return;case 12:case 14:break}}_swapAndDie(e,t=!0){var s;(s=this._hardwareTexture)==null||s.setUsage(e._source,this.generateMipMaps,this.is2DArray,this.isCube,this.is3D,this.width,this.height,this.depth),e._hardwareTexture=this._hardwareTexture,t&&(e._isRGBD=this._isRGBD),this._lodTextureHigh&&(e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureHigh=this._lodTextureHigh),this._lodTextureMid&&(e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureMid=this._lodTextureMid),this._lodTextureLow&&(e._lodTextureLow&&e._lodTextureLow.dispose(),e._lodTextureLow=this._lodTextureLow),this._irradianceTexture&&(e._irradianceTexture&&e._irradianceTexture.dispose(),e._irradianceTexture=this._irradianceTexture);let i=this._engine.getLoadedTexturesCache(),r=i.indexOf(this);r!==-1&&i.splice(r,1),r=i.indexOf(e),r===-1&&i.push(e)}dispose(){this._references--,this._references===0&&(this.onLoadedObservable.clear(),this.onErrorObservable.clear(),this._engine._releaseTexture(this),this._hardwareTexture=null,this._dynamicTextureSource=null)}};Oi._Counter=0});var Oe,Ni=I(()=>{hi();Oe=class{static get LastCreatedEngine(){return this.Instances.length===0?null:this.Instances[this.Instances.length-1]}static get LastCreatedScene(){return this._LastCreatedScene}};Oe.Instances=[];Oe.OnEnginesDisposedObservable=new ie;Oe._LastCreatedScene=null;Oe.UseFallbackTexture=!0;Oe.FallbackTexture=""});var ee,Pt=I(()=>{ee=class n{static _CheckLimit(e,t){let i=n._LogLimitOutputs[e];return i?i.current++:(i={limit:t,current:1},n._LogLimitOutputs[e]=i),i.current<=i.limit}static _GenerateLimitMessage(e,t=1){var s;let i=n._LogLimitOutputs[e];if(!i||!n.MessageLimitReached)return;let r=this._Levels[t];i.current===i.limit&&n[r.name](n.MessageLimitReached.replace(/%LIMIT%/g,""+i.limit).replace(/%TYPE%/g,(s=r.name)!=null?s:""))}static _AddLogEntry(e){n._LogCache=e+n._LogCache,n.OnNewCacheEntry&&n.OnNewCacheEntry(e)}static _FormatMessage(e){let t=r=>r<10?"0"+r:""+r,i=new Date;return"["+t(i.getHours())+":"+t(i.getMinutes())+":"+t(i.getSeconds())+"]: "+e}static _LogDisabled(e,t){}static _LogEnabled(e=1,t,i){let r=Array.isArray(t)?t[0]:t;if(i!==void 0&&!n._CheckLimit(r,i))return;let s=n._FormatMessage(r),a=this._Levels[e],o=Array.isArray(t)?t.slice(1):[];a.logFunc&&a.logFunc("BJS - "+s,...o);let l=`
${s}

`;n._AddLogEntry(l),n._GenerateLimitMessage(r,e)}static get LogCache(){return n._LogCache}static ClearLogCache(){n._LogCache="",n._LogLimitOutputs={},n.errorsCount=0}static set LogLevels(e){n.Log=n._LogDisabled,n.Warn=n._LogDisabled,n.Error=n._LogDisabled;let t=[n.MessageLogLevel,n.WarningLogLevel,n.ErrorLogLevel];for(let i of t)if((e&i)===i){let r=this._Levels[i];n[r.name]=n._LogEnabled.bind(n,i)}}};ee.NoneLogLevel=0;ee.MessageLogLevel=1;ee.WarningLogLevel=2;ee.ErrorLogLevel=4;ee.AllLogLevel=7;ee.MessageLimitReached="Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.";ee._LogCache="";ee._LogLimitOutputs={};ee._Levels=[{},{color:"white",logFunc:console.log,name:"Log"},{color:"orange",logFunc:console.warn,name:"Warn"},{},{color:"red",logFunc:console.error,name:"Error"}];ee.errorsCount=0;ee.Log=ee._LogEnabled.bind(ee,ee.MessageLogLevel);ee.Warn=ee._LogEnabled.bind(ee,ee.WarningLogLevel);ee.Error=ee._LogEnabled.bind(ee,ee.ErrorLogLevel)});var A,k=I(()=>{A=class n{static GetShadersRepository(e=0){return e===0?n.ShadersRepository:n.ShadersRepositoryWGSL}static GetShadersStore(e=0){return e===0?n.ShadersStore:n.ShadersStoreWGSL}static GetIncludesShadersStore(e=0){return e===0?n.IncludesShadersStore:n.IncludesShadersStoreWGSL}};A.ShadersRepository="src/Shaders/";A.ShadersStore={};A.IncludesShadersStore={};A.ShadersRepositoryWGSL="src/ShadersWGSL/";A.ShadersStoreWGSL={};A.IncludesShadersStoreWGSL={}});function ur(){return typeof window!="undefined"}function Xl(){return typeof navigator!="undefined"}function uf(){return typeof document!="undefined"}function aA(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var ba=I(()=>{});var oA,z2=I(()=>{oA=class{constructor(){this._valueCache={},this.vertexCompilationError=null,this.fragmentCompilationError=null,this.programLinkError=null,this.programValidationError=null,this._isDisposed=!1}get isAsync(){return this.isParallelCompiled}get isReady(){return this.program?this.isParallelCompiled?this.engine._isRenderingStateCompiled(this):!0:!1}_handlesSpectorRebuildCallback(e){e&&this.program&&e(this.program)}setEngine(e){this.engine=e}_fillEffectInformation(e,t,i,r,s,a,o,l){let c=this.engine;if(c.supportsUniformBuffers)for(let h in t)e.bindUniformBlock(h,t[h]);this.engine.getUniforms(this,i).forEach((h,u)=>{r[i[u]]=h}),this._uniforms=r;let d;for(d=0;d{a[h]=u});for(let h of c.getAttributes(this,o))l.push(h)}dispose(){this._uniforms={},this._isDisposed=!0}_cacheMatrix(e,t){let i=this._valueCache[e],r=t.updateFlag;return i!==void 0&&i===r?!1:(this._valueCache[e]=r,!0)}_cacheFloat2(e,t,i){let r=this._valueCache[e];if(!r||r.length!==2)return r=[t,i],this._valueCache[e]=r,!0;let s=!1;return r[0]!==t&&(r[0]=t,s=!0),r[1]!==i&&(r[1]=i,s=!0),s}_cacheFloat3(e,t,i,r){let s=this._valueCache[e];if(!s||s.length!==3)return s=[t,i,r],this._valueCache[e]=s,!0;let a=!1;return s[0]!==t&&(s[0]=t,a=!0),s[1]!==i&&(s[1]=i,a=!0),s[2]!==r&&(s[2]=r,a=!0),a}_cacheFloat4(e,t,i,r,s){let a=this._valueCache[e];if(!a||a.length!==4)return a=[t,i,r,s],this._valueCache[e]=a,!0;let o=!1;return a[0]!==t&&(a[0]=t,o=!0),a[1]!==i&&(a[1]=i,o=!0),a[2]!==r&&(a[2]=r,o=!0),a[3]!==s&&(a[3]=s,o=!0),o}setInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setIntArray(e,t){this._valueCache[e]=null,this.engine.setIntArray(this._uniforms[e],t)}setIntArray2(e,t){this._valueCache[e]=null,this.engine.setIntArray2(this._uniforms[e],t)}setIntArray3(e,t){this._valueCache[e]=null,this.engine.setIntArray3(this._uniforms[e],t)}setIntArray4(e,t){this._valueCache[e]=null,this.engine.setIntArray4(this._uniforms[e],t)}setUInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setUInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setUInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setUInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setUInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setUInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setUInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setUInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setUIntArray(e,t){this._valueCache[e]=null,this.engine.setUIntArray(this._uniforms[e],t)}setUIntArray2(e,t){this._valueCache[e]=null,this.engine.setUIntArray2(this._uniforms[e],t)}setUIntArray3(e,t){this._valueCache[e]=null,this.engine.setUIntArray3(this._uniforms[e],t)}setUIntArray4(e,t){this._valueCache[e]=null,this.engine.setUIntArray4(this._uniforms[e],t)}setArray(e,t){this._valueCache[e]=null,this.engine.setArray(this._uniforms[e],t)}setArray2(e,t){this._valueCache[e]=null,this.engine.setArray2(this._uniforms[e],t)}setArray3(e,t){this._valueCache[e]=null,this.engine.setArray3(this._uniforms[e],t)}setArray4(e,t){this._valueCache[e]=null,this.engine.setArray4(this._uniforms[e],t)}setMatrices(e,t){t&&(this._valueCache[e]=null,this.engine.setMatrices(this._uniforms[e],t))}setMatrix(e,t){this._cacheMatrix(e,t)&&(this.engine.setMatrices(this._uniforms[e],t.asArray())||(this._valueCache[e]=null))}setMatrix3x3(e,t){this._valueCache[e]=null,this.engine.setMatrix3x3(this._uniforms[e],t)}setMatrix2x2(e,t){this._valueCache[e]=null,this.engine.setMatrix2x2(this._uniforms[e],t)}setFloat(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setFloat(this._uniforms[e],t)&&(this._valueCache[e]=t)}setVector2(e,t){this._cacheFloat2(e,t.x,t.y)&&(this.engine.setFloat2(this._uniforms[e],t.x,t.y)||(this._valueCache[e]=null))}setFloat2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setFloat2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setVector3(e,t){this._cacheFloat3(e,t.x,t.y,t.z)&&(this.engine.setFloat3(this._uniforms[e],t.x,t.y,t.z)||(this._valueCache[e]=null))}setFloat3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setFloat3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setVector4(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setQuaternion(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setFloat4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setFloat4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setColor3(e,t){this._cacheFloat3(e,t.r,t.g,t.b)&&(this.engine.setFloat3(this._uniforms[e],t.r,t.g,t.b)||(this._valueCache[e]=null))}setColor4(e,t,i){this._cacheFloat4(e,t.r,t.g,t.b,i)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,i)||(this._valueCache[e]=null))}setDirectColor4(e,t){this._cacheFloat4(e,t.r,t.g,t.b,t.a)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,t.a)||(this._valueCache[e]=null))}_getVertexShaderCode(){return this.vertexShader?this.engine._getShaderSource(this.vertexShader):null}_getFragmentShaderCode(){return this.fragmentShader?this.engine._getShaderSource(this.fragmentShader):null}}});function Qe(n,e=!1){if(!(e&&X2[n]))return X2[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var X2,un=I(()=>{X2={}});function lA(n,e,t=""){return t+(e?e+` -`:"")+n}function cA(n,e,t,i,r,s,a){let o=a||tm.loadFile;if(o)return o(n,e,t,i,r,s);throw Qe("FileTools")}function fA(n,e,t,i){if(n){e?n.IS_NDC_HALF_ZRANGE="":delete n.IS_NDC_HALF_ZRANGE,t?n.USE_REVERSE_DEPTHBUFFER="":delete n.USE_REVERSE_DEPTHBUFFER,i?n.USE_EXACT_SRGB_CONVERSIONS="":delete n.USE_EXACT_SRGB_CONVERSIONS;return}else{let r="";return e&&(r+="#define IS_NDC_HALF_ZRANGE"),t&&(r&&(r+=` +`),r=[];for(let o=0,l=i.length;o=7?(_T.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Mi),t.colors.push(_T.r,_T.g,_T.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":t.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(f==="f"){let h=c.slice(1).trim().split(PB),u=[];for(let _=0,p=h.length;_0){let v=g.split("/");u.push(v)}}let m=u[0];for(let _=1,p=u.length-1;_1){let h=r[1].trim().toLowerCase();t.object.smooth=h!=="0"&&h!=="off"}else t.object.smooth=!0;let d=t.object.currentMaterial();d&&(d.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();let s=new Zs;if(s.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o0&&_.setAttribute("normal",new fi(f.normals,3)),f.colors.length>0&&(m=!0,_.setAttribute("color",new fi(f.colors,3))),f.hasUVIndices===!0&&_.setAttribute("uv",new fi(f.uvs,2));let p=[];for(let v=0,x=d.length;v1){for(let v=0,x=d.length;v0){let o=new vs({size:1,sizeAttenuation:!1}),l=new Xi;l.setAttribute("position",new fi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new fi(t.colors,3)),o.vertexColors=!0);let c=new Es(l,o);s.add(c)}return s}}});var Is,vT,WI,wB=I(()=>{ts();Is=new ft,vT=class extends dn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(p,g=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,x="",S=v.exec(p);S!==null&&(x=S[1]);let E={comments:[],elements:[],headerLength:g,objInfo:""},T=x.split(/\r\n|\r|\n/),R;function M(y,C){let L={type:y[0]};return L.type==="list"?(L.name=y[3],L.countType=y[1],L.itemType=y[2]):L.name=y[1],L.name in C&&(L.name=C[L.name]),L}for(let y=0;yx.name);function v(x){for(let S=0,E=x.length;S0&&g.setIndex(p.indices),g.setAttribute("position",new fi(p.vertices,3)),p.normals.length>0&&g.setAttribute("normal",new fi(p.normals,3)),p.uvs.length>0&&g.setAttribute("uv",new fi(p.uvs,2)),p.colors.length>0&&g.setAttribute("color",new fi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(g=g.toNonIndexed(),p.faceVertexUvs.length>0&&g.setAttribute("uv",new fi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&g.setAttribute("color",new fi(p.faceVertexColors,3)));for(let v of Object.keys(_.customPropertyMapping))p[v].length>0&&g.setAttribute(v,new fi(p[v],_.customPropertyMapping[v].length));return g.computeBoundingSphere(),g}function c(p,g,v,x){if(g==="vertex"){p.vertices.push(v[x.attrX],v[x.attrY],v[x.attrZ]),x.attrNX!==null&&x.attrNY!==null&&x.attrNZ!==null&&p.normals.push(v[x.attrNX],v[x.attrNY],v[x.attrNZ]),x.attrS!==null&&x.attrT!==null&&p.uvs.push(v[x.attrS],v[x.attrT]),x.attrR!==null&&x.attrG!==null&&x.attrB!==null&&(Is.setRGB(v[x.attrR]/255,v[x.attrG]/255,v[x.attrB]/255,Mi),p.colors.push(Is.r,Is.g,Is.b));for(let S of Object.keys(_.customPropertyMapping))for(let E of _.customPropertyMapping[S])p[S].push(v[E])}else if(g==="face"){let S=v.vertex_indices||v.vertex_index,E=v.texcoord;S.length===3?(p.indices.push(S[0],S[1],S[2]),E&&E.length===6&&(p.faceVertexUvs.push(E[0],E[1]),p.faceVertexUvs.push(E[2],E[3]),p.faceVertexUvs.push(E[4],E[5]))):S.length===4&&(p.indices.push(S[0],S[1],S[3]),p.indices.push(S[1],S[2],S[3])),x.attrR!==null&&x.attrG!==null&&x.attrB!==null&&(Is.setRGB(v[x.attrR]/255,v[x.attrG]/255,v[x.attrB]/255,Mi),p.faceVertexColors.push(Is.r,Is.g,Is.b),p.faceVertexColors.push(Is.r,Is.g,Is.b),p.faceVertexColors.push(Is.r,Is.g,Is.b))}}function f(p,g){let v={},x=0;for(let S=0;SS.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>S.getUint8(R),size:1};case"int16":case"short":return{read:R=>S.getInt16(R,T),size:2};case"uint16":case"ushort":return{read:R=>S.getUint16(R,T),size:2};case"int32":case"int":return{read:R=>S.getInt32(R,T),size:4};case"uint32":case"uint":return{read:R=>S.getUint32(R,T),size:4};case"float32":case"float":return{read:R=>S.getFloat32(R,T),size:4};case"float64":case"double":return{read:R=>S.getFloat64(R,T),size:8}}}for(let S=0,E=p.length;S=this.arr.length}next(){return this.arr[this.i++]}}});var ET,FB=I(()=>{ts();ET=class extends dn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new As(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}parse(e){function t(c){let f=new DataView(c),d=32/8*3+32/8*3*3+16/8,h=f.getUint32(80,!0);if(80+32/8+h*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let _=0;_<5;_++)if(i(m,f,_))return!1;return!0}function i(c,f,d){for(let h=0,u=c.length;h>5&31)/31,m=(B>>10&31)/31):(h=g,u=v,m=x)}for(let B=1;B<=3;B++){let V=w+B*12,J=L*3*3+(B-1)*3;M[J]=f.getFloat32(V,!0),M[J+1]=f.getFloat32(V+4,!0),M[J+2]=f.getFloat32(V+8,!0),y[J]=G,y[J+1]=O,y[J+2]=N,_&&(C.setRGB(h,u,m,Mi),p[J]=C.r,p[J+1]=C.g,p[J+2]=C.b)}}return R.setAttribute("position",new hr(M,3)),R.setAttribute("normal",new hr(y,3)),_&&(R.setAttribute("color",new hr(p,3)),R.hasColors=!0,R.alpha=S),R}function s(c){let f=new Xi,d=/solid([\s\S]*?)endsolid/g,h=/facet([\s\S]*?)endfacet/g,u=/solid\s(.+)/,m=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+_+_+_,"g"),g=new RegExp("normal"+_+_+_,"g"),v=[],x=[],S=[],E=new se,T,R=0,M=0,y=0;for(;(T=d.exec(c))!==null;){M=y;let C=T[0],L=(T=u.exec(C))!==null?T[1]:"";for(S.push(L);(T=h.exec(C))!==null;){let O=0,N=0,B=T[0];for(;(T=g.exec(B))!==null;)E.x=parseFloat(T[1]),E.y=parseFloat(T[2]),E.z=parseFloat(T[3]),N++;for(;(T=p.exec(B))!==null;)v.push(parseFloat(T[1]),parseFloat(T[2]),parseFloat(T[3])),x.push(E.x,E.y,E.z),O++,y++;N!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+m),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+m),m++}let w=M,G=y-M;f.userData.groupNames=S,f.addGroup(w,G,R),R++}return f.setAttribute("position",new fi(v,3)),f.setAttribute("normal",new fi(x,3)),f}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){let f=new Uint8Array(c.length);for(let d=0;d{ts()});function UB(n){let e=new Map,t=new Map,i=n.clone();return VB(n,i,function(r,s){e.set(s,r),t.set(r,s)}),i.traverse(function(r){if(!r.isSkinnedMesh)return;let s=r,a=e.get(r),o=a.skeleton.bones;s.skeleton=a.skeleton.clone(),s.bindMatrix.copy(a.bindMatrix),s.skeleton.bones=o.map(function(l){return t.get(l)}),s.bind(s.skeleton,s.bindMatrix)}),i}function VB(n,e,t){t(n,e);for(let i=0;i{});function Jse(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}function Ur(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function iae(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new En({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Qs})),n.DefaultMaterial}function Gd(n,e,t){for(let i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function tl(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function rae(n,e,t){let i=!1,r=!1,s=!1;for(let c=0,f=e.length;c0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}function lae(n,e,t){let i=e.attributes,r=new Fr;if(i.POSITION!==void 0){let o=t.json.accessors[i.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new se(l[0],l[1],l[2]),new se(c[0],c[1],c[2])),o.normalized){let f=_y(ku[o.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=e.targets;if(s!==void 0){let o=new se,l=new se;for(let c=0,f=s.length;c{ts();BB();GB();Q_=class extends dn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new ZI(t)}),this.register(function(t){return new QI(t)}),this.register(function(t){return new ay(t)}),this.register(function(t){return new oy(t)}),this.register(function(t){return new ly(t)}),this.register(function(t){return new JI(t)}),this.register(function(t){return new ey(t)}),this.register(function(t){return new ty(t)}),this.register(function(t){return new iy(t)}),this.register(function(t){return new qI(t)}),this.register(function(t){return new ry(t)}),this.register(function(t){return new $I(t)}),this.register(function(t){return new sy(t)}),this.register(function(t){return new ny(t)}),this.register(function(t){return new KI(t)}),this.register(function(t){return new ST(t,Ei.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new ST(t,Ei.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new cy(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=no.extractUrlBase(e);a=no.resolveURL(c,this.path)}else a=no.extractUrlBase(e);this.manager.itemStart(e);let o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new As(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(f){t(f),s.manager.itemEnd(e)},o)}catch(f){o(f)}},i,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,r){let s,a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===XB){try{a[Ei.KHR_BINARY_GLTF]=new fy(e)}catch(d){r&&r(d);return}s=JSON.parse(a[Ei.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new gy(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f=0&&o[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(i,r)}parseAsync(e,t){let i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}};Ei={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},KI=class{constructor(e){this.parser=e,this.name=Ei.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}},oy=class{constructor(e){this.parser=e,this.name=Ei.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},ly=class{constructor(e){this.parser=e,this.name=Ei.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},ST=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){let l=r.byteOffset||0,c=r.byteLength||0,f=r.count,d=r.byteStride,h=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,h,r.mode,r.filter).then(function(u){return u.buffer}):a.ready.then(function(){let u=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(u),f,d,h,r.mode,r.filter),u})})}else return null}},cy=class{constructor(e){this.name=Ei.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;let r=t.meshes[i.mesh];for(let c of r.primitives)if(c.mode!==xa.TRIANGLES&&c.mode!==xa.TRIANGLE_STRIP&&c.mode!==xa.TRIANGLE_FAN&&c.mode!==void 0)return null;let a=i.extensions[this.name].attributes,o=[],l={};for(let c in a)o.push(this.parser.getDependency("accessor",a[c]).then(f=>(l[c]=f,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{let f=c.pop(),d=f.isGroup?f.children:[f],h=c[0].count,u=[];for(let m of d){let _=new oi,p=new se,g=new Qr,v=new se(1,1,1),x=new Dd(m.geometry,m.material,h);for(let S=0;S-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new wd(this.options.manager):this.textureLoader=new L_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new As(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(a){let o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:i,userData:{}};return Gd(s,o,r),tl(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(let l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{let l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(let[c,f]of a.children.entries())s(f,o.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&p.setY(y,T[R*l+1]),l>=3&&p.setZ(y,T[R*l+2]),l>=4&&p.setW(y,T[R*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=m}return p})}loadTexture(e){let t=this.json,i=this.options,s=t.textures[e].source,a=t.images[s],o=this.textureLoader;if(a.uri){let l=i.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){let r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(t,i).then(function(f){f.flipY=!1,f.name=a.name||o.name||"",f.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(f.name=o.uri);let h=(s.samplers||{})[a.sampler]||{};return f.magFilter=WB[h.magFilter]||wr,f.minFilter=WB[h.minFilter]||so,f.wrapS=HB[h.wrapS]||Wo,f.wrapT=HB[h.wrapT]||Wo,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Nr&&f.minFilter!==wr,r.associations.set(f,{textures:e}),f}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){let i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());let a=r.images[e],o=self.URL||self.webkitURL,l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=i.getDependency("bufferView",a.bufferView).then(function(d){c=!0;let h=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(h),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let f=Promise.resolve(l).then(function(d){return new Promise(function(h,u){let m=h;t.isImageBitmapLoader===!0&&(m=function(_){let p=new Rr(_);p.needsUpdate=!0,h(p)}),t.load(no.resolveURL(d,s.path),m,void 0,u)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),tl(d,a),d.userData.mimeType=a.mimeType||aae(a.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=f,f}assignTexture(e,t,i,r){let s=this;return this.getDependency("texture",i.index).then(function(a){if(!a)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(a=a.clone(),a.channel=i.texCoord),s.extensions[Ei.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[Ei.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[Ei.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let o="PointsMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new vs,Br.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){let o="LineBasicMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Ln,Br.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||s||a){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return En}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[Ei.KHR_MATERIALS_UNLIT]){let d=r[Ei.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ft(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let h=d.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],Jn),o.opacity=h[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Mi)),o.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,o.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",d.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ta);let f=s.alphaMode||XI.OPAQUE;if(f===XI.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===XI.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==es&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new Mt(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==es&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==es){let d=s.emissiveFactor;o.emissive=new ft().setRGB(d[0],d[1],d[2],Jn)}return s.emissiveTexture!==void 0&&a!==es&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Mi)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),tl(d,s),t.associations.set(d,{materials:e}),s.extensions&&Gd(r,d,s),d})}createUniqueName(e){let t=tr.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function s(o){return i[Ei.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return zB(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&nae(g,s),g.name=t.createUniqueName(s.name||"mesh_"+e),tl(g,s),p.extensions&&Gd(r,g,p),t.assignFinalMaterial(g),d.push(g)}for(let u=0,m=d.length;u0){let u=f.userData.pivot,m=d[0];f.pivot=new se().fromArray(u),f.position.x-=u[0],f.position.y-=u[1],f.position.z-=u[2],m.position.set(0,0,0),delete f.userData.pivot}return f})}_loadNodeShallow(e){let t=this.json,i=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let f;if(s.isBone===!0?f=new Tu:c.length>1?f=new Zs:c.length===1?f=c[0]:f=new zi,f!==c[0])for(let d=0,h=c.length;d1){let d=r.associations.get(f);r.associations.set(f,{...d})}return r.associations.get(f).nodes=e,f}),this.nodeCache[e]}loadScene(e){let t=this.extensions,i=this.json.scenes[e],r=this,s=new Zs;i.name&&(s.name=r.createUniqueName(i.name)),tl(s,i),i.extensions&&Gd(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[h,u]of r.associations)(h instanceof Br||h instanceof Rr)&&d.set(h,u);return f.traverse(h=>{let u=r.associations.get(h);u!=null&&d.set(h,u)}),d};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){let a=[],o=e.name?e.name:e.uuid,l=[];function c(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}lf[s.path]===lf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(lf[s.path]){case lf.weights:f=Ko;break;case lf.rotation:f=jo;break;case lf.translation:case lf.scale:f=qo;break;default:i.itemSize===1?f=Ko:f=qo;break}let d=r.interpolation!==void 0?tae[r.interpolation]:Id,h=this._getArrayFromAccessor(i);for(let u=0,m=l.length;urs,X_OK:()=>Ay,access:()=>is,execFile:()=>na,getRuntimeProcess:()=>Wu,mkdir:()=>Nn,osTmpdir:()=>zd,pathBasename:()=>ra,pathDelimiter:()=>xy,pathDirname:()=>wn,pathExtname:()=>ns,pathIsAbsolute:()=>Fn,pathJoin:()=>Ui,pathNormalize:()=>xT,readFile:()=>ia,rm:()=>Wd,stat:()=>Hd,writeFile:()=>kd});function jB(){return typeof activeWindow=="undefined"?void 0:activeWindow}function cae(){let n=jB();if(!(!n||!("require"in n)))return n.require}function Wu(){let n=jB();if(!(!n||!("process"in n)))return n.process}function AT(n){let e=cae();if(!e)return null;try{return e(n)}catch(t){return null}}function Hu(){return vy===void 0&&(vy=AT("node:fs/promises")),vy}function zu(){return Ey===void 0&&(Ey=AT("node:path")),Ey}function fae(){return Sy===void 0&&(Sy=AT("node:child_process")),Sy}function dae(){return Ty===void 0&&(Ty=AT("node:os")),Ty}function ys(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function is(n,e){return ys(Hu(),"node:fs/promises").access(n,e)}function ia(n){return ys(Hu(),"node:fs/promises").readFile(n)}function kd(n,e,t){return ys(Hu(),"node:fs/promises").writeFile(n,e,{encoding:t})}function Nn(n,e){return ys(Hu(),"node:fs/promises").mkdir(n,e)}function Wd(n,e){return ys(Hu(),"node:fs/promises").rm(n,e)}function Hd(n){return ys(Hu(),"node:fs/promises").stat(n)}function Ui(...n){return ys(zu(),"node:path").join(...n)}function wn(n){return ys(zu(),"node:path").dirname(n)}function ra(n,e){return ys(zu(),"node:path").basename(n,e)}function ns(n){return ys(zu(),"node:path").extname(n)}function xT(n){return ys(zu(),"node:path").normalize(n)}function Fn(n){return ys(zu(),"node:path").isAbsolute(n)}function na(n,e,t,i){ys(fae(),"node:child_process").execFile(n,e,t,i)}function zd(){return ys(dae(),"node:os").tmpdir()}var vy,Ey,Sy,Ty,rs,Ay,KB,xy,Qi=I(()=>{"use strict";rs=0,Ay=1;xy=((KB=Wu())==null?void 0:KB.platform)==="win32"?";":":"});function Ry(n){return n.replace(/\\/g,"/")}function bT(n){let e=Ry(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function qB(n){try{return decodeURIComponent(n)}catch(e){return n}}function ss(n,e){var r;let t=qB((r=e.split(/[?#]/,1)[0])!=null?r:e),i=bT(t);return n?bT(`${n}/${i}`):i}function $_(n){let e=Ry(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Cs(n){let e=Ry(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function tn(n){return Cs(n).replace(/\.[^.]+$/,"")}async function hae(n,e){let t=bT(e);if(!t)return null;let i=t.split("/"),r="",s=n.vault.getRoot().children;for(let a of i){let o=s.find(c=>c.name===a),l=o!=null?o:s.find(c=>c.name.toLowerCase()===a.toLowerCase());if(!l)return null;if(r=r?`${r}/${l.name}`:l.name,l instanceof Xu.TFile)return r;if(!(l instanceof Xu.TFolder))return null;s=l.children}return null}function uae(n){return n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}function mae(n){let e=n.vault.adapter;return typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null}function cf(n,e){var r,s;let t=n.vault.getAbstractFileByPath(e);if(t)return t.path;let i=(s=(r=n.metadataCache)==null?void 0:r.getFirstLinkpathDest)==null?void 0:s.call(r,e,"");return i?i.path:null}function oo(n,e){if(Fn(e))return xT(e);let t=mae(n);return t?xT(Ui(t,e)):null}async function lo(n,e){if(Fn(e)){let r=await ia(e);return uae(r)}let t=bT(qB(e)),i=n.vault.getAbstractFileByPath(t);if(!(i instanceof Xu.TFile)){let r=await hae(n,t);if(r){let s=n.vault.getAbstractFileByPath(r);if(s instanceof Xu.TFile)return n.vault.readBinary(s)}throw new Error(`File not found: ${t}`)}return n.vault.readBinary(i)}var Xu,Ps=I(()=>{"use strict";Xu=require("obsidian");Qi();Qi()});function Xd(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function _ae(n){return pae.has(n)}function IT(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Rr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),_ae(r)&&(i.colorTextureCount++,s.colorSpace=Mi,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function by(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new se),i=Math.max(t.x,t.y,t.z);return!Number.isFinite(i)||i<=0?.02:Math.min(Math.max(i/180,5e-4),.05)}var pae,My=I(()=>{"use strict";ts();pae=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function QB(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=gae[e])!=null?r:`image/${e}`}function $B(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function Iy(n){return $B(n).replace(/\\/g,"/").replace(/^\.\//,"")}function yT(n,e,t){e&&n.set(Iy(e),t)}function Sae(n,e,t,i,r){let s=$B(t);yT(n,s,r),yT(n,ss("",s),r),yT(n,i,r),e&&yT(n,`${e}/${s}`,r)}function Tae(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=Iy(s);if(!o)return;let l=e.get(o);if(l){l.aliases.push(s),(c=l.mimeType)!=null||(l.mimeType=a);return}e.set(o,{uri:s,mimeType:a,aliases:[s]})};for(let s of(i=n.buffers)!=null?i:[])t(s.uri,"application/octet-stream");for(let s of(r=n.images)!=null?r:[])t(s.uri);return[...e.values()]}async function Aae(n,e,t){let i=0,r=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:r},async()=>{for(;i{var f;let l=await Mae(n,e,o.uri),c=URL.createObjectURL(new Blob([l.data],{type:(f=o.mimeType)!=null?f:QB(l.path)}));r.push(c);for(let d of o.aliases)Sae(i,e,d,l.path,c)};return await Aae(Tae(t),Eae,a),s.setURLModifier(o=>{var c,f;let l=Iy(o);return(f=(c=i.get(l))!=null?c:i.get(ss("",l)))!=null?f:o}),{manager:s,dispose:()=>{for(let o of r)URL.revokeObjectURL(o)}}}function Rae(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function bae(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}async function Mae(n,e,t){let i=ss(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function Iae(n,e,t){let i=Cs(e),r=i.replace(/\.[^.]+$/,""),s=tn(t),a=[ss(n,e),ss(n,i)];if(s)for(let o of ZB)a.push(ss(n,`${s}.${o}`));for(let o of ZB){let l=`${r}.${o}`;l!==i&&a.push(ss(n,l))}return a}async function JB(n,e,t,i){var l,c;let r=[];if(e==="gltf"&&t&&i){let f=new TextDecoder().decode(new Uint8Array(n)),d=JSON.parse(f),h=$_(i),u=await xae(t,h,d),m=new Q_(u.manager);try{let _=await m.parseAsync(n,h?`${h}/`:""),p=_.scene||((l=_.scenes)==null?void 0:l[0]);if(!p)throw new Error("GLTF did not contain a scene");return{scene:p,animations:_.animations,warnings:r}}finally{u.dispose()}}let a=await new Q_().parseAsync(n,""),o=a.scene||((c=a.scenes)==null?void 0:c[0]);if(!o)throw new Error("GLB did not contain a scene");return{scene:o,animations:a.animations,warnings:r}}async function e2(n){let t=new ET().parse(n),i=t.hasAttribute("color")?new En({color:16777215,vertexColors:!0}):new En({color:13421772}),r=new li(t,i);return r.name=Cs("")||"stl-model",r}async function t2(n){let t=new vT().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new En({vertexColors:!0});return new li(t,a)}let s=new vs({size:by(t),vertexColors:!0});return new Es(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new En({color:13421772});return new li(t,s)}let r=new vs({size:by(t),color:13421772});return new Es(t,r)}function yae(n){return n?Array.isArray(n)?n:[n]:[]}function Cae(n){n.traverse(e=>{if(!(e instanceof li))return;let t=e;for(let i of yae(t.material))IT(i,1)})}async function i2(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n)),r=[],s=null,a=i.match(/mtllib\s+(.+)/);if(a&&e&&t){let c=Rae(a[1]),f=$_(t),d=ss(f,c);try{let h=await e(d),m=new TextDecoder().decode(new Uint8Array(h)).split(` +`),_=new Map;for(let S=0;SS!=="");if(!p.some(S=>/^\s*Kd\s+/i.test(S))){let S=p.findIndex(E=>/^\s*newmtl\s+/i.test(E));p.splice(S>=0?S+1:0,0,"Kd 0.80 0.80 0.80")}let x=new pT().parse(p.join(` +`),f?`${f}/`:"");x.preload(),s=x}catch(h){r.push(`OBJ material library not found: ${d}`)}}else a&&(!e||!t)&&r.push("OBJ material library could not be resolved without a model path.");let o=new gT;s&&o.setMaterials(s);let l=o.parse(i);return Cae(l),{object:l,warnings:r}}var gae,ZB,vae,Eae,r2=I(()=>{"use strict";CB();NB();wB();FB();YB();ts();Ps();MT();My();gae={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",tga:"image/x-tga",webp:"image/webp",tif:"image/tiff",tiff:"image/tiff"},ZB=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],vae=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Eae=4});function gr(){return n2.Platform.isMobile}var n2,sa=I(()=>{"use strict";n2=require("obsidian")});function Qt(n){return{x:n.x,y:n.y,z:n.z}}function rn(n){return{x:n.x,y:n.y,z:n.z}}function Yu(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function J_(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function o2(n,e){let t=Yu(n,e);return Math.hypot(t.x,t.y,t.z)}function yy(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:J_(n,1/e)}function Yd(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function s2(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function l2(n,e,t){return{x:e==="x"?n.x+t:n.x,y:e==="y"?n.y+t:n.y,z:e==="z"?n.z+t:n.z}}function c2(n){return Math.max(n*.01,.01)}function ff(n,e,t=c2(e)){return n{"use strict"});function hf(n,e){return{min:rn(n),max:rn(e)}}function Kd(n,e){return n?{min:{x:Math.min(n.min.x,e.min.x),y:Math.min(n.min.y,e.min.y),z:Math.min(n.min.z,e.min.z)},max:{x:Math.max(n.max.x,e.max.x),y:Math.max(n.max.y,e.max.y),z:Math.max(n.max.z,e.max.z)}}:hf(e.min,e.max)}function ji(n){return Yu(n.max,n.min)}function vr(n){return Yd(n.min,J_(ji(n),.5))}function f2(n){return o2(n.min,n.max)}function eg(n){return f2(n)/2}function d2(n){let e=ji(n);return Math.max(e.x,e.y,e.z)}function Cy(n){let e=ji(n),t=f2(n);return{center:Yd(n.min,J_(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var il=I(()=>{"use strict";Ds()});function Py(n,e,t={}){var s,a,o,l,c;let i=Math.max(e,Number.EPSILON),r=(s=t.radiusMultiplier)!=null?s:2.5;return{target:rn(n),radius:i*r,lowerRadiusLimit:i*((a=t.lowerRadiusFactor)!=null?a:.05),upperRadiusLimit:i*((o=t.upperRadiusFactor)!=null?o:10),near:i*((l=t.nearFactor)!=null?l:.001),far:i*((c=t.farFactor)!=null?c:20)}}function OT(n,e={}){let t=Cy(n);return Py(t.center,t.radius,e)}function h2(n,e={}){var o,l,c,f,d,h;let t=Cy(n),i=Math.max(t.maxSpan,t.radius,Number.EPSILON),r=i*((o=e.distanceMultiplier)!=null?o:1.8),s=Math.max((l=e.minNear)!=null?l:Math.max(i/1e4,1e-5),i/((c=e.nearDivisor)!=null?c:1e3)),a=Math.max((d=e.minFar)!=null?d:Math.max(i*((f=e.farMultiplier)!=null?f:20),1),r+t.radius*4);return{target:rn(t.center),position:Yd(t.center,{x:r,y:r*((h=e.elevationFactor)!=null?h:.65),z:r}),near:s,far:a}}var NT=I(()=>{"use strict";il();Ds()});function Li(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var wT=I(()=>{"use strict"});function FT(n){var s;let e=new Set,t=0,i=0;for(let a of n.meshes){t+=a.triangleCount,i+=a.vertexCount;for(let o of(s=a.materialKeys)!=null?s:[])o!=null&&e.add(o)}let r=Lae({triangleCount:t,splatCount:n.splatCount,meshCount:n.meshes.length,materialCount:e.size});return{meshCount:n.meshes.length,triangleCount:t,splatCount:n.splatCount,vertexCount:i,materialCount:e.size,performanceTier:r,performanceHint:Oae(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:rn(n.boundingSize),rootName:n.rootName}}function Lae(n){var e,t,i;return((e=n.splatCount)!=null?e:0)>=15e5||n.triangleCount>=12e5||n.materialCount>=96||n.meshCount>=240?"extreme":((t=n.splatCount)!=null?t:0)>=65e4||n.triangleCount>=45e4||n.materialCount>=48||n.meshCount>=120?"heavy":((i=n.splatCount)!=null?i:0)>=18e4||n.triangleCount>=12e4||n.materialCount>=18||n.meshCount>=48?"medium":"light"}function Oae(n,e){var r;let t=((r=e.splatCount)!=null?r:e.triangleCount).toLocaleString(),i=e.splatCount!==void 0?"splats":"triangles";return n==="extreme"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Expect automatic quality throttling while interacting.`:n==="heavy"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Interaction may lower shadows and resolution temporarily.`:n==="medium"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance should be steady on most desktop GPUs.`:`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance tier: light.`}function zl(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:rn(n.boundingSize),center:rn(n.center),source:n.source,meshNames:n.meshNames?[...n.meshNames]:void 0,childCount:n.childCount,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath}}function u2(n){return n.splatCount!==void 0?"Splats":"Triangles"}function m2(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var BT=I(()=>{"use strict";Ds()});function ju(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function Nae(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function wae(n){var r,s,a,o;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(s=(r=n.sourceFormat)!=null?r:n.effectiveFormat)!=null?s:"unknown",t=(a=n.effectiveFormat)!=null?a:e,i=(o=n.loadStrategy)!=null?o:e!==t?"convert":"direct";return`${e.toUpperCase()}${t!==e?` -> ${t.toUpperCase()}`:""} (${i})`}function Fae(n,e=8){if(!(n!=null&&n.length))return null;let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i} more`:t}function p2(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:u2(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${m2(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${Dy(n.boundingSize,{decimals:i})} |`]}function co(n){return Li(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function Dy(n,e={}){var r,s;let t=(r=e.decimals)!=null?r:3,i=(s=e.separator)!=null?s:" x ";return`${n.x.toFixed(t)}${i}${n.y.toFixed(t)}${i}${n.z.toFixed(t)}`}function _2(n,e={}){return["| Metric | Value |","|--------|-------|",...p2(n,e)]}function Bae(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...p2(e,t)]}function UT(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...Bae(n.format,n.summary,{countLabel:n.countLabel})),e.push("");let t=(r=n.meshBreakdown)!=null?r:[];t.length>1&&t.length<=50&&(e.push("### Mesh Breakdown"),e.push(""),e.push("| # | Name | Triangles | Vertices | Material |"),e.push("|---|------|-----------|----------|----------|"),t.forEach((a,o)=>{let l=a.triangleCount===null?"-":a.triangleCount.toLocaleString();e.push(`| ${o+1} | ${co(ju(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${co(ju(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>ju(a,"")).filter(a=>a.length>0);if(i.length>0){let a=Array.from(new Set(i));e.push("### Materials"),e.push("");for(let o of a)e.push(`- ${Li(o)}`);e.push("")}return e.join(` +`)}function VT(n,e={}){var o;let t=Li(ju((o=e.title)!=null?o:n.name,"Selected Part")),i=[];i.push(`## ${t} - Part Info`),i.push(""),i.push("| Property | Value |"),i.push("|----------|-------|"),i.push(`| Mesh | ${co(ju(n.name))} |`);let r=Nae(n.source);r&&i.push(`| Source | ${co(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${co(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${co(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${co(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${co(n.componentPath)} |`);let s=wae(n);s&&i.push(`| Format Lineage | ${co(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${co(ju(n.materialName))} |`),i.push(`| Bounding Size | ${Dy(n.boundingSize)} |`),i.push(`| Center | ${Dy(n.center,{separator:", "})} |`);let a=Fae(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${co(a)} |`),i.push(""),i.join(` +`)}var GT=I(()=>{"use strict";wT();BT()});function kT(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function WT(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function g2(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function v2(n,e,t){return!g2(n)||e.clientWidth===0||e.clientHeight===0?!1:(t.screenX=(n.x+1)/2*e.clientWidth,t.screenY=(1-n.y)/2*e.clientHeight,t.depth=(n.z+1)/2,!0)}function E2(n,e,t,i,r){return!g2(n)||e===0||t===0||i.clientWidth===0||i.clientHeight===0?!1:(r.screenX=n.x*(i.clientWidth/e),r.screenY=n.y*(i.clientHeight/t),r.depth=n.z,!0)}var Ly=I(()=>{"use strict"});function jd(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function Uae(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function Vae(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function Gae(n){let e=n.trim().toLowerCase();return/^(mesh|node|object|primitive|points|pointcloud|geometry)[-_\s.]?\d+$/i.test(e)||/^(mesh|node|object|primitive|points|pointcloud|geometry)$/i.test(e)}function kae(n){let e={x:n.boundingSize.x/2,y:n.boundingSize.y/2,z:n.boundingSize.z/2};return{min:{x:n.center.x-e.x,y:n.center.y-e.y,z:n.center.z-e.z},max:{x:n.center.x+e.x,y:n.center.y+e.y,z:n.center.z+e.z}}}function Wae(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!Gae(n.name))return!1;let t=Uae(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Hae(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=Kd(e,kae(l)),t+=l.triangleCount,i+=l.vertexCount,l.materialName&&r.add(l.materialName),s.push(...(o=l.meshNames)!=null&&o.length?l.meshNames:[l.name]);let a=e!=null?e:{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};return{name:"Small detail cluster",triangleCount:t,vertexCount:i,materialName:jd(r),boundingSize:ji(a),center:vr(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function zae(n,e,t){let i=Vae(n),r=t.filter(o=>Wae(o,i));if(r.length<2)return e.length>0?[...e,...t]:[...t];let s=new Set(r),a=t.filter(o=>!s.has(o));return[...e,Hae(r),...a]}function HT(n){var e;return{summary:n.summary,parts:Xae(n),materialNames:Yae(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Xae(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return zae(n.summary,n.groupedPartCandidates.parts,e)}function Yae(n,e){let t=new Set;for(let i of n)for(let r of e(i))r&&t.add(r);return Array.from(t).sort((i,r)=>i.localeCompare(r))}var tg=I(()=>{"use strict";il()});function zT(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function ng(n){return{x:Number.isFinite(n.x)&&n.x>0?n.x:1,y:Number.isFinite(n.y)&&n.y>0?n.y:1,z:Number.isFinite(n.z)&&n.z>0?n.z:1}}function XT(n,e,t,i){let r=ng(t),s={x:(e.x-n.x)*r.x,y:(e.y-n.y)*r.y,z:(e.z-n.z)*r.z},a={x:Math.abs(s.x),y:Math.abs(s.y),z:Math.abs(s.z)};return{distance:Math.sqrt(s.x*s.x+s.y*s.y+s.z*s.z),delta:s,absDelta:a,unit:i}}function rg(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function jae(n,e){if(n===0)return e;let t=Math.abs(n)*Ny[e];return t<.001?"um":t<.1?"mm":t<1?"cm":"m"}function T2(n){return n==="um"?"um":Kae[n]}function ig(n,e,t=!0){let i=t?jae(n,e):e,r=n*Ny[e]/Ny[i],s=Math.abs(r),a=s>=100?1:s>=10?2:3;return`${rg(r,a)} ${T2(i)}`}function Oy(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return rg(e,t)}function qu(n){return{primary:ig(n.distance,n.unit),secondary:[`X ${Oy(n.absDelta.x)}`,`Y ${Oy(n.absDelta.y)}`,`Z ${Oy(n.absDelta.z)}`,T2(n.unit)].join(" ")}}function YT(n){if(n.length===0)return"";let e=["## Measurements","","| # | Distance | Delta X | Delta Y | Delta Z | Start | End |","|---|----------|---------|---------|---------|-------|-----|"];for(let t of n){let i=t.reading.unit,r=S2(t.start),s=S2(t.end);e.push([t.index,ig(t.reading.distance,i),ig(t.reading.absDelta.x,i,!1),ig(t.reading.absDelta.y,i,!1),ig(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` +`)}function S2(n){return`${rg(n.x,3)}, ${rg(n.y,3)}, ${rg(n.z,3)}`}var Ny,Kae,wy=I(()=>{"use strict";Ny={um:1e-6,mm:.001,cm:.01,m:1},Kae={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function qae(n){return typeof globalThis.requestAnimationFrame=="function"?globalThis.requestAnimationFrame(n):globalThis.setTimeout(()=>n(performance.now()),16)}function Zae(n){if(typeof globalThis.cancelAnimationFrame=="function"){globalThis.cancelAnimationFrame(n);return}globalThis.clearTimeout(n)}function jT(n){return new Fy(n)}var KT,Fy,By=I(()=>{"use strict";KT=class KT{constructor(e){this.originals=new Map;this.unsubscribe=null;this.active=!1;this.drag=null;this.pendingDrag=null;this.selected=null;this.activePointerId=null;this.frameCount=0;this.pendingDragEvent=null;this.dragUpdateFrame=null;this.adapter=e}isEnabled(){return this.active}setEnabled(e){var t,i,r;return this.active===e?this.active:(this.active=e,this.finishDrag(),this.setSelected(null),this.activePointerId=null,e?this.unsubscribe=this.adapter.subscribe({onPointerDown:(s,a)=>this.handlePointerDown(s,a),onPointerMove:s=>this.handlePointerMove(s),onPointerUp:s=>this.handlePointerUp(s),onRender:()=>this.handleRender()}):((t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null),(r=(i=this.adapter).requestRender)==null||r.call(i),this.active)}toggle(){return this.setEnabled(!this.active)}reset(){var e,t;this.finishDrag(),this.setSelected(null);for(let{part:i,transform:r}of this.originals.values())this.adapter.isDisposed(i)||this.adapter.restoreTransform(i,r);this.activePointerId=null,(t=(e=this.adapter).requestRender)==null||t.call(e)}dispose(){this.setEnabled(!1),this.originals.clear()}handlePointerDown(e,t){if(t.button!==0||t.isPrimary===!1)return;let i=this.adapter.resolvePart(e);if(!i){this.drag=null,this.pendingDrag=null,this.activePointerId=null,this.setSelected(null);return}this.activePointerId=t.pointerId,this.setSelected(i),this.pendingDrag={part:i,event:t,x:t.clientX,y:t.clientY}}handlePointerMove(e){if(!(this.activePointerId!==null&&e.pointerId!==this.activePointerId)){if(!this.drag&&this.pendingDrag){if(e.pointerType==="mouse"&&(e.buttons&1)===0){this.pendingDrag=null,this.activePointerId=null;return}if(Math.hypot(e.clientX-this.pendingDrag.x,e.clientY-this.pendingDrag.y){this.dragUpdateFrame=null,this.flushDragUpdate()}))}flushDragUpdate(){this.dragUpdateFrame!==null&&(Zae(this.dragUpdateFrame),this.dragUpdateFrame=null);let e=this.pendingDragEvent;this.pendingDragEvent=null,!(!this.drag||!e)&&this.adapter.updateDrag(this.drag,e)}setSelected(e){this.selected=e,this.frameCount=0,this.adapter.setSelected(e)}captureOriginalTransform(e){let t=this.adapter.getPartId(e);this.originals.has(t)||this.originals.set(t,{part:e,transform:this.adapter.captureTransform(e)})}};KT.DRAG_START_DISTANCE=4;Fy=KT});function roe(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function qT(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function noe(n){if(typeof n=="string"){let e=n.trim();return e.length>0?e:void 0}if(typeof n=="number"&&Number.isFinite(n))return String(n)}function A2(n,e=0){if(!roe(n)||e>2)return[];let t=[];for(let i of ioe)for(let[r,s]of Object.entries(n))qT(r)===qT(i)&&t.push(...A2(s,e+1));return t.push(n),t}function sg(n,e){let t=new Set(e.map(qT));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has(qT(r)))continue;let a=noe(s);if(a)return a}}function aa(n,e={}){var c,f;let t=A2(n),i=sg(t,Qae),r=sg(t,$ae),s=sg(t,Jae),a=(c=sg(t,toe))!=null?c:e.path,o=(f=sg(t,eoe))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Qae,$ae,Jae,eoe,toe,ioe,Uy=I(()=>{"use strict";Qae=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],$ae=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],Jae=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],eoe=["displayName","partName","componentName","cadName","name"],toe=["componentPath","cadPath","assemblyPath","occurrencePath"],ioe=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function Ra(n){return n instanceof li}function ag(n){return n instanceof Es}function Qu(n){return Ra(n)||ag(n)}function Ls(n){return n?Array.isArray(n)?n:[n]:[]}function og(n){var r,s,a,o;if(ag(n))return 0;let e=n.geometry,t=(s=(r=e.getIndex())==null?void 0:r.count)!=null?s:0;if(t>0)return Math.floor(t/3);let i=(o=(a=e.getAttribute("position"))==null?void 0:a.count)!=null?o:0;return Math.floor(i/3)}function $u(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function Ju(n){return n?n.name||n.type||`material-${n.uuid}`:null}function fo(n,e){var i;let t=(i=n.userData)==null?void 0:i.name;return typeof t=="string"&&t.trim().length>0?t:n.name||e}function Zu(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(fo(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function hn(n){let e=new Fr().setFromObject(n);return hf(Qt(e.min),Qt(e.max))}function x2(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,hn(t));return e}function R2(n){return Ls(n.material).map(e=>Ju(e))}function b2(n){return{name:fo(n,ag(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:ag(n)?null:og(n),vertexCount:$u(n),materialName:Ju(Ls(n.material)[0])}}function soe(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:hn(n),r=fo(n,`mesh-${n.id}`),s=aa(n.userData,{name:r,path:e?Zu(e,n):r});return zl({name:$T(s,r),triangleCount:og(n),vertexCount:$u(n),materialName:Ju(Ls(n.material)[0]),boundingSize:ji(i),center:vr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function Vy(n,e,t){var a;if(Ra(n))return soe(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:hn(n),r=fo(n,`points-${n.id}`),s=aa(n.userData,{name:r,path:e?Zu(e,n):r});return zl({name:$T(s,r),triangleCount:0,vertexCount:$u(n),materialName:Ju(Ls(n.material)[0]),boundingSize:ji(i),center:vr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function aoe(n,e){let t=[];return n.traverse(i=>{Ra(i)&&e.has(i)&&t.push(i)}),t}function em(n,e){let t=new Map;for(let i of e){let r=i.parent;for(;r&&r!==n;){let s=t.get(r);s||(s=[],t.set(r,s)),s.push(i),r=r.parent}}return t}function M2(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:aoe(n,e)}function ooe(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function loe(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function I2(n,e,t,i,r){var m;if(Qu(n))return Vy(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(_=>{Ra(_)&&s.add(_)});let a=M2(n,s,i),o=null,l=new Set,c=0,f=0;for(let _ of a){_.updateWorldMatrix(!0,!1),o=Kd(o,(m=r==null?void 0:r.get(_))!=null?m:hn(_)),c+=og(_),f+=$u(_);for(let p of Ls(_.material)){let g=Ju(p);g&&l.add(g)}}a.length===0&&(o=hn(n));let d=o!=null?o:hf({x:0,y:0,z:0},{x:0,y:0,z:0}),h=fo(n,`group-${n.id}`),u=aa(n.userData,{name:h,path:e?Zu(e,n):h});return zl({name:$T(u,h),triangleCount:c,vertexCount:f,materialName:jd(l),boundingSize:ji(d),center:vr(d),source:u.hasExplicitIdentity?"component":"group",meshNames:a.map(_=>fo(_,`mesh-${_.id}`)),childCount:a.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function ZT(n,e,t,i){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=M2(o,r,i);if(f.length>0&&f.length1&&h.trim()&&!ooe(h)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function y2(n,e,t=em(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||Ra(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=aa(o.userData,{name:fo(o,`component-${o.id}`),path:Zu(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=aa(o.userData,{name:fo(o,`group-${o.id}`),path:Zu(n,o)});!c.hasExplicitIdentity&&!o.name.trim()||a.push({object:o,childMeshes:l,identity:c})}),a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({object:o,childMeshes:l,identity:c})=>{var p;let f=l.filter(g=>!s.has(g));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let g of f)s.add(g);let d=null;for(let g of f)g.updateWorldMatrix(!0,!1),d=Kd(d,(p=i==null?void 0:i.get(g))!=null?p:hn(g));let h=new Set,u=0,m=0;for(let g of f){u+=og(g),m+=$u(g);for(let v of Ls(g.material)){let x=Ju(v);x&&h.add(x)}}let _=d!=null?d:hf({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(zl({name:$T(c,fo(o,`group-${o.id}`)),triangleCount:u,vertexCount:m,materialName:jd(h),boundingSize:ji(_),center:vr(_),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(g=>fo(g,`mesh-${g.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function QT(n,e,t=[],i){return FT({rootName:n.name||"__root__",boundingSize:ji(i!=null?i:hn(n)),meshes:e.map(r=>({triangleCount:og(r),vertexCount:$u(r),materialKeys:Ls(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function C2(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=ji(t!=null?t:hn(n)),s=Math.max(r.x,r.y,r.z),a=Math.max(s*.04,Number.EPSILON),o=0,l=0,c=Number.POSITIVE_INFINITY;for(let d of e){ag(d)&&o++;let h=ji((f=i==null?void 0:i.get(d))!=null?f:hn(d)),u=Math.max(h.x,h.y,h.z);Number.isFinite(u)&&u>0&&(c=Math.min(c,u),Ra(d)&&u<=a&&u0?Number(s.toPrecision(6)):null}}function $T(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var Gy=I(()=>{"use strict";ts();il();Uy();tg();Ds();BT()});function coe(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function foe(n,e,t=em(n,e)){let i=new Map;for(let r of e){let s=ZT(n,r,e,t),a=i.get(s);a||(a={id:s.id,object:s,meshes:[]},i.set(s,a)),a.meshes.push(r)}return Array.from(i.values())}function doe(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function D2(n,e,t,i,r,s,a,o){return jT(new ky(n,e,t,i,r,s,a,o))}var P2,hoe,ky,L2=I(()=>{"use strict";ts();Ds();By();Gy();P2=new ft(4890367),hoe=new ft(1722990),ky=class{constructor(e,t,i,r,s,a,o,l=em(r,s)){this.meshToPart=new Map;this.raycaster=new ef;this.pointer=new Mt;this.tempBox=new Fr;this.tempCenter=new se;this.tempDirection=new se;this.tempCameraForward=new se;this.tempCameraRight=new se;this.tempCameraUp=new se;this.tempDragOffset=new se;this.tempNextPosition=new se;this.tempHelperDelta=new se;this.partCenterCache=new Map;this.selectionHelper=null;this.lastOccluded=!1;this.selected=null;this.lastPointerDown=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.canvas=i,this.meshes=s,this.parts=foe(r,s,l);for(let c of this.parts)for(let f of c.meshes)this.meshToPart.set(f.id,c);this.controls=a,this.invalidate=o}requestRender(){this.invalidate()}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return!e.object.parent&&!this.scene.children.includes(e.object)}captureTransform(e){return{parent:e.object.parent,position:e.object.position.clone(),quaternion:e.object.quaternion.clone(),scale:e.object.scale.clone()}}restoreTransform(e,t){t.parent?t.parent.add(e.object):this.scene.add(e.object),e.object.position.copy(t.position),e.object.quaternion.copy(t.quaternion),e.object.scale.copy(t.scale),e.object.updateMatrixWorld(!0),this.invalidatePartCenter(e),this.requestRender()}subscribe(e){this.canvas.classList.add("ai3d-disassembly-active");let t=s=>{var o,l;if(s.button!==0||s.isPrimary===!1)return;this.lastPointerDown={x:s.clientX,y:s.clientY};let a=this.resolvePickTarget(s);if(this.partPointerActive=!!a,this.partPointerActive){s.preventDefault(),s.stopPropagation(),this.controls.enabled=!1,this.activePointerId=s.pointerId;try{(l=(o=this.canvas).setPointerCapture)==null||l.call(o,s.pointerId)}catch(c){}}e.onPointerDown(a,s)},i=s=>{this.activePointerId!==null&&s.pointerId!==this.activePointerId||(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),e.onPointerMove(s))},r=s=>{var a,o;if(!(this.activePointerId!==null&&s.pointerId!==this.activePointerId)){if(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),this.lastPointerDown=null,e.onPointerUp(s),this.partPointerActive=!1,this.activePointerId!==null&&((o=(a=this.canvas).hasPointerCapture)!=null&&o.call(a,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(l){}this.activePointerId=null,this.controls.enabled=!0}};return this.canvas.addEventListener("pointerdown",t),window.addEventListener("pointermove",i),window.addEventListener("pointerup",r),()=>{var s,a;if(this.canvas.removeEventListener("pointerdown",t),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",r),this.canvas.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.partPointerActive=!1,this.activePointerId!==null&&((a=(s=this.canvas).hasPointerCapture)!=null&&a.call(s,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(o){}this.activePointerId=null,this.controls.enabled=!0}}resolvePart(e){var t;return coe(e)?this.parts.includes(e)?e:null:e&&(t=this.meshToPart.get(e.id))!=null?t:null}setSelected(e){var t;(t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=null,this.selected=e,this.lastOccluded=!1,e&&!this.isDisposed(e)&&(this.selectionHelper=new Wl(e.object,P2),this.scene.add(this.selectionHelper)),this.requestRender()}beginDrag(e,t){let i=this.getPartWorldCenter(e,this.tempCenter).clone(),r=this.getPointOnDragPlane(i,t);if(!r)return null;t.preventDefault(),t.stopPropagation(),doe(this.scene,e.object),this.canvas.classList.add("ai3d-disassembly-dragging");let s="move";t.shiftKey&&(s="rotate");let a=this.tempCameraForward;this.camera.getWorldDirection(a);let o=Ku(Qt(r),Qt(a));return o?(this.controls.enabled=!1,this.requestRender(),{part:e,mode:s,plane:o,startPoint:r.clone(),startPosition:e.object.position.clone(),startQuaternion:e.object.quaternion.clone(),pivot:i,pointerX:t.clientX,pointerY:t.clientY}):null}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=this.tempDragOffset.copy(i).sub(e.startPoint),s=this.tempNextPosition.copy(e.startPosition).add(r),a=this.tempHelperDelta.copy(s).sub(e.part.object.position);e.part.object.position.copy(s),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),this.translateSelectionHelper(a),this.requestRender()}endDrag(e){var t;this.controls.enabled=!0,this.canvas.classList.remove("ai3d-disassembly-dragging"),(t=this.selectionHelper)==null||t.update(),this.requestRender()}updateSelectionOcclusion(e){let t=this.getPartWorldCenter(e,this.tempCenter),i=this.camera.position,r=df(Qt(i),Qt(t));if(!r)return;let s=this.tempDirection.set(r.direction.x,r.direction.y,r.direction.z);this.raycaster.set(i,s),this.raycaster.far=r.distance;let a=this.raycaster.intersectObjects(this.meshes,!1)[0],o=!!a&&ff(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?hoe:P2),this.requestRender()))}updateRotation(e,t){var c;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=this.tempCameraForward;this.camera.getWorldDirection(s);let a=this.tempCameraUp.copy(this.camera.up).normalize(),o=this.tempCameraRight.crossVectors(a,s).normalize(),l=LT({startPosition:Qt(e.startPosition),pivot:Qt(e.pivot),startRotationQuaternion:DT(e.startQuaternion),yawAxis:Qt(a),pitchAxis:Qt(o),deltaX:i,deltaY:r,sensitivity:.01});l&&(e.part.object.position.set(l.position.x,l.position.y,l.position.z),e.part.object.quaternion.set(l.rotationQuaternion.x,l.rotationQuaternion.y,l.rotationQuaternion.z,l.rotationQuaternion.w),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),(c=this.selectionHelper)==null||c.update(),this.requestRender())}resolvePickTarget(e){let t=this.canvas.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.meshes,!1)[0];return(i==null?void 0:i.object)instanceof li?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=Ku(Qt(e),Qt(i));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:e}getRayPlanePoint(e,t){let i=this.canvas.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top;this.pointer.set(r/i.width*2-1,-(s/i.height)*2+1),this.raycaster.setFromCamera(this.pointer,this.camera);let a=PT({origin:Qt(this.raycaster.ray.origin),direction:Qt(this.raycaster.ray.direction)},t);return a?new se(a.x,a.y,a.z):null}getPartWorldCenter(e,t){let i=this.partCenterCache.get(e.id);return i?t.copy(i):(this.tempBox.setFromObject(e.object).getCenter(t),this.partCenterCache.set(e.id,t.clone()),t)}invalidatePartCenter(e){this.partCenterCache.delete(e.id)}translateSelectionHelper(e){if(!this.selectionHelper||e.lengthSq()<=Number.EPSILON)return;let t=this.selectionHelper.geometry.getAttribute("position");for(let i=0;ie.uuid).join("|"):n.uuid}function _oe(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var uoe,JT,N2=I(()=>{"use strict";uoe=.242;JT=class{constructor(){this.materials=new Map}get(e){let t=poe(e),i=this.materials.get(t);if(i)return i;let r=moe(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())_oe(e);this.materials.clear()}get size(){return this.materials.size}}});function w2(n){return rn(n)}function goe(n,e){return{originalPosition:w2(n),originalCenter:w2(e)}}function eA(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=goe(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,l2(s.originalPosition,t,a))}}function tA(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var Wy=I(()=>{"use strict";Ds()});function iA(n){return rn(n)}function voe(n){return n instanceof li}function Eoe(n){let e=[];return n.traverse(t=>{voe(t)&&t.geometry&&e.push(t)}),e}function F2(n,e,t){eA(new rA(n),e,t)}function Hy(n){tA(new rA(n))}var rA,B2=I(()=>{"use strict";ts();Ds();il();Wy();rA=class{constructor(e){this.root=e}getParts(){return Eoe(this.root)}getRootCenter(){let e=new Fr().setFromObject(this.root);return vr({min:Qt(e.min),max:Qt(e.max)})}getPartPosition(e){return Qt(e.position)}getPartCenter(e){let i=new Fr().setFromObject(e).getCenter(new se);return Qt(i)}setPartPosition(e,t){e.position.set(t.x,t.y,t.z)}getPartState(e){var i;let t=(i=e.userData)!=null?i:{};return t._previewExplodeState?{originalPosition:iA(t._previewExplodeState.originalPosition),originalCenter:iA(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:iA(t.originalPosition),originalCenter:iA(t.originalCenter)}}}});function U2(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var nA,V2=I(()=>{"use strict";nA=class{constructor(e=120){this.maxSamples=e;this.samples=[];this.renderedFrameCount=0;this.idleFrameSkipCount=0;this.slowFrameCount=0;this.maxRenderMs=0;this.adaptiveScaleChangeCount=0}recordRenderedFrame(e,t){!Number.isFinite(e)||e<0||(this.renderedFrameCount++,e>=t&&this.slowFrameCount++,this.maxRenderMs=Math.max(this.maxRenderMs,e),this.samples.push(e),this.samples.length>this.maxSamples&&this.samples.shift())}recordIdleFrameSkip(){this.idleFrameSkipCount++}recordAdaptiveScaleChange(){this.adaptiveScaleChangeCount++}snapshot(){let e=[...this.samples].sort((r,s)=>r-s),t=this.samples.reduce((r,s)=>r+s,0),i=e.length===0?-1:Math.min(e.length-1,Math.ceil(e.length*.95)-1);return{renderedFrameCount:this.renderedFrameCount,idleFrameSkipCount:this.idleFrameSkipCount,slowFrameCount:this.slowFrameCount,averageRenderMs:e.length?Number((t/e.length).toFixed(2)):0,p95RenderMs:i>=0?Number(e[i].toFixed(2)):0,maxRenderMs:Number(this.maxRenderMs.toFixed(2)),adaptiveScaleChangeCount:this.adaptiveScaleChangeCount}}}});var H2={};Be(H2,{ThreeModelPreview:()=>aA,createThreeModelPreview:()=>Foe});function W2(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function woe(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function zy(n){return n instanceof Zo||n instanceof ro||n instanceof kl}function Foe(n){return new aA(n)}var sA,Soe,Toe,Aoe,xoe,Roe,G2,boe,k2,Moe,Ioe,yoe,Coe,Poe,Doe,Loe,Ooe,Noe,aA,z2=I(()=>{"use strict";ts();IB();yB();r2();sa();il();NT();GT();Ly();Ds();tg();wy();L2();N2();B2();Ps();My();V2();Gy();sA=new ft("#20242e"),Soe=.28,Toe=2.5,Aoe=1.5,xoe=1.15,Roe=260,G2=30,boe=8,k2=28,Moe=18,Ioe=2,yoe=28,Coe=.86,Poe=1.08,Doe=.62,Loe=.86,Ooe=4,Noe=120;aA=class{constructor(e){this.raycaster=new ef;this.occlusionRaycaster=new ef;this.renderObservers=new Set;this.pointer=new Mt;this.annotationProjection=new se;this.annotationDirection=new se;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=W2();this.renderHandle=0;this.contextLost=!1;this.quality="high";this.renderScale=1;this.interactivePixelRatioActive=!1;this.interactionPixelRatioDeadline=0;this.renderObserverSettleFrames=0;this.frameBudgetPixelRatioScale=1;this.frameBudgetSlowStreak=0;this.frameBudgetFastStreak=0;this.frameBudgetObserverStride=1;this.frameBudgetObserverCursor=0;this.frameBudgetShadowDeferred=!1;this.lastFrameDurationMs=0;this.smoothness=new nA;this.viewportVisible=!0;this.viewportObserver=null;this.lastDisposalAudit={reason:"initial",meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};this.axesHelper=null;this.bboxHelper=null;this.groundShadowMesh=null;this.meshShadowFlagsPrepared=!1;this.gridHelper=null;this.bboxEnabled=!1;this.wireframeEnabled=!1;this.wireframeOriginalMaterials=new Map;this.sceneConfig={};this.focusSelectionEnabled=!1;this.explodeStateActive=!1;this.focusedObject=null;this.highlightedObject=null;this.selectionHelper=null;this.focusHelper=null;this.mixer=null;this.animationPlaying=!1;this.initialTarget=new se;this.initialPosition=new se(3,2,3);this.initialFov=45;this.initialZoom=1;this.initialCameraMode="perspective";this.cameraMode="perspective";this.lastPointerDown=null;this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new JT;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.disassembly=null;this.disassemblySetup=!1;this.renderDirty=!0;this.stlMaterial=null;this.cachedMeshes=null;this.cachedMeshRoot=null;this.cachedRenderables=null;this.cachedRenderableRoot=null;this.cachedRenderableObjectCount=null;this.cachedChildMeshMap=null;this.cachedChildMeshMapRoot=null;this.cachedRenderableBoundsMap=null;this.cachedRenderableBoundsMapRoot=null;this.cachedRootPreviewBounds=null;this.cachedRootPreviewBoundsObject=null;this.cachedGeometryQualityStats=null;this.cameraAnimHandle=0;this.preventCanvasWheelScroll=e=>{this.prepareInteractiveFrameBudget(),e.preventDefault(),e.stopPropagation(),this.markDirty()};this.handleControlsChange=()=>{this.prepareInteractiveFrameBudget(),this.markDirty()};this.handleViewportIntersection=e=>{let t=e[e.length-1];if(!t)return;let i=t.isIntersecting&&t.intersectionRatio>0;i!==this.viewportVisible&&(this.viewportVisible=i,i?(this.clock.last=performance.now(),this.markDirty(),this.markShadowDirty(),this.startRenderLoop()):(cancelAnimationFrame(this.renderHandle),this.renderHandle=0))};this.handlePointerDown=e=>{e.button!==0||e.isPrimary===!1||(this.lastPointerDown={x:e.clientX,y:e.clientY},this.prepareInteractiveFrameBudget())};this.handlePointerUp=e=>{var i;if(e.button!==0||e.isPrimary===!1)return;let t=this.lastPointerDown;this.lastPointerDown=null,t&&(Math.hypot(e.clientX-t.x,e.clientY-t.y)>4||(i=this.disassembly)!=null&&i.isEnabled()||this.dispatchPick(e))};this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},e.buttons&1&&this.prepareInteractiveFrameBudget(),!this.measurementActive||(this.pendingPoint&&this.schedulePreviewLineUpdate(),this.measurementMarkers.length===0))return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.measurementMarkers,!1),r=i.length>0?this.measurementMarkers.indexOf(i[0].object):-1;if(r!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&r{e.preventDefault(),this.contextLost=!0,this.renderHandle&&(cancelAnimationFrame(this.renderHandle),this.renderHandle=0)};this.handleContextRestored=()=>{this.contextLost=!1,this.markDirty(),this.startRenderLoop()};this.renderer=new cT({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Mi,this.renderer.toneMapping=Rs,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=pS,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(sA,1),this.scene=new Cd,this.camera=new dr(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new uT(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.85,this.controls.screenSpacePanning=!0,this.controls.target.copy(this.initialTarget),this.controls.addEventListener("change",this.handleControlsChange),this.installDefaultLighting(),this.resizeObs=new ResizeObserver(()=>this.resizeRenderer()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointerup",this.handlePointerUp),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.resizeRenderer(),this.startRenderLoop()}async loadModel(e,t,i,r){var f;this.clearLoadedModel("model-switch"),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=W2();let s,a=[];if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let d=await JB(e,this.loadedExt,i,r);s=d.scene,a=d.animations,this.resourceWarnings=d.warnings}else if(this.loadedExt==="stl")s=await e2(e),this.stlMaterial=Ra(s)?s.material:null;else if(this.loadedExt==="ply")s=await t2(e);else if(this.loadedExt==="obj"){let d=await i2(e,i,r);s=d.object,this.resourceWarnings=d.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);this.rootObject=s,this.scene.add(s),this.invalidateMeshCache();let o=this.getRenderableObjects(s);this.prepareModelForQuality(o),this.syncShadowFeatures();let l=this.getRootPreviewBounds(s);if(this.updateShadowFraming(l),this.syncSceneHelpers(),this.markDirty(),a.length>0){this.mixer=new O_(s);for(let d of a)this.mixer.clipAction(d).play();this.animationPlaying=!0}let c=QT(s,o,this.resourceWarnings,l!=null?l:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(s,l!=null?l:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(f=this.disassembly)==null||f.dispose(),this.disassembly=null,c}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.applySTLConfig(e.stl)}applySTLConfig(e){let t=this.stlMaterial;t&&(e.color!==void 0&&t.color.set(e.color),e.wireframe!==void 0&&(t.wireframe=e.wireframe,t.needsUpdate=!0),this.markDirty())}destroy(){var t,i;cancelAnimationFrame(this.renderHandle),cancelAnimationFrame(this.cameraAnimHandle),this._onPickCallbacks=[],this.renderObservers.clear(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.clearFocusedMesh(),this.clearSelectionHighlight(),this.clearLoadedModel("destroy");for(let r of this.configLights)this.disposeConfiguredLight(r);this.configLights.length=0;for(let r of this.defaultLights)this.disposeConfiguredLight(r);this.defaultLights.length=0,this.disposeGlobalEnvironment(),this.controls.removeEventListener("change",this.handleControlsChange),this.controls.dispose();let e=this.renderer.domElement;e.removeEventListener("wheel",this.preventCanvasWheelScroll),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointerup",this.handlePointerUp),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.resizeObs.disconnect(),(i=this.viewportObserver)==null||i.disconnect(),this.viewportObserver=null,this.renderer.dispose()}getCanvas(){return this.renderer.domElement}captureSnapshot(){return this.renderNow(0),this.renderer.domElement.toDataURL("image/png")}getAnnotationProvider(){let e=this.renderer.domElement;return kT({canvas:e,observeRender:t=>(this.renderObservers.add(t),this.setRenderObserverSettleFrames(),this.markDirty(),{remove:()=>{this.renderObservers.delete(t),this.renderObservers.size===0&&this.setRenderObserverSettleFrames(0)}}),getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}exportModelInfo(e){var s;if(!this.rootObject)return"";let t=this.getRenderableObjects(this.rootObject),i=QT(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Cs(e)||i.rootName;return UT({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(b2)})}getModelEvidence(){var o;if(!this.rootObject)return null;let e=this.getRenderableObjects(this.rootObject),t=this.getRenderableMeshes(this.rootObject),i=this.getChildRenderableMeshMap(this.rootObject),r=this.getRenderableBoundsMap(this.rootObject),s=y2(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return HT({summary:QT(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>Vy(l,this.rootObject,r),getMeshMaterialNames:R2,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:this._lastPickResult.mesh instanceof zi?this._lastPickResult.mesh:null;if(!e)return null;let t=this.rootObject?this.getRenderableMeshes(this.rootObject):[],i=this.rootObject?this.getChildRenderableMeshMap(this.rootObject):void 0;return I2(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?VT(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Qt(e.pickedPoint):e.mesh instanceof zi?vr(hn(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(Hy(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty()),this.resetDisassembly(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.switchCameraMode(this.initialCameraMode),this.camera.position.copy(this.initialPosition),this.controls.target.copy(this.initialTarget),this.camera.lookAt(this.controls.target),this.camera instanceof dr&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now())}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof zi&&this.setFocusedObject(this._lastPickResult.mesh)):this.clearFocusedMesh(),this.markDirty(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}setWireframe(e){e!==this.wireframeEnabled&&(this.wireframeEnabled=e,this.applyWireframe(e),this.markDirty())}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}applyWireframe(e){if(this.rootObject)for(let t of this.getRenderableMeshes(this.rootObject))if(e){this.wireframeOriginalMaterials.set(t.id,t.material);let r=Ls(t.material).map(s=>{if(s instanceof En){let a=new es({color:s.color,transparent:s.transparent,opacity:s.opacity,side:s.side,visible:s.visible});return a.wireframe=!0,a}if("wireframe"in s){let a=s.clone();return a.wireframe=!0,a}return s});t.material=Array.isArray(t.material)?r:r[0]}else{let i=this.wireframeOriginalMaterials.get(t.id);i&&(t.material=i),this.wireframeOriginalMaterials.delete(t.id)}}toggleOrientationGizmo(){if(!this.axesHelper){this.axesHelper=new Cu(1.2),this.axesHelper.visible=!1;let e=this.axesHelper.material;e.depthTest=!1,e.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}return this.axesHelper.visible=!this.axesHelper.visible,this.axesHelper.position.copy(this.controls.target),this.markDirty(),this.axesHelper.visible}isOrientationGizmoEnabled(){var e;return!!((e=this.axesHelper)!=null&&e.visible)}toggleBoundingBox(){var e;return this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled?(this.ensureBoundingBoxHelper(),this.markDirty(),!!this.bboxHelper):((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=null,this.markDirty(),!1)}hasAnimations(){return this.mixer!==null}toggleAnimation(){return this.mixer?(this.animationPlaying=!this.animationPlaying,this.mixer.timeScale=this.animationPlaying?1:0,this.markDirty(),this.animationPlaying):!1}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.measurementActive||this.cancelPendingMeasurement(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments){i.line.removeFromParent(),i.line.geometry.dispose(),i.line.material.dispose(),i.label.removeFromParent();let r=i.label.material;(t=r.map)==null||t.dispose(),r.dispose()}this.measurementSegments=[];for(let i of this.measurementMarkers){i.removeFromParent(),i.geometry.dispose();let r=i.material;if(Array.isArray(r))for(let s of r)s.dispose();else r.dispose()}this.measurementMarkers=[],this.markDirty()}setMeasurementScale(e){this.measurementScale=ng(e),this.updateMeasurementLabels()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=zT(e),this.updateMeasurementLabels()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootObject)return null;let e=hn(this.rootObject);return ji(e)}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return YT(this.createMeasurementRecords())}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let i of this.measurementSegments){let r=qu(this.createMeasurementReading(i.start,i.end));i.label.removeFromParent();let s=i.label.material;(t=s.map)==null||t.dispose(),s.dispose();let a=new se().addVectors(i.start,i.end).multiplyScalar(.5);i.label=this.createMeasurementLabelSprite(r,a,e),this.scene.add(i.label)}this.markDirty()}setRenderQuality(e,t=this.renderScale){this.quality=e,this.renderScale=t,this.syncGlobalEnvironmentForQuality(),this.applyShadowQuality(),this.resizeRenderer()}setRenderScale(e){return this.renderScale=Math.min(2,Math.max(.25,e)),this.resizeRenderer(),Number(this.renderScale.toFixed(2))}getPerformanceSnapshot(){let e=this.smoothness.snapshot(),t=this.getQualitySnapshot();return{backend:"three",renderScale:Number(this.renderScale.toFixed(2)),quality:this.quality,pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),interactivePixelRatioActive:this.interactivePixelRatioActive,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames,frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,frameBudgetShadowDeferred:this.frameBudgetShadowDeferred,lastFrameDurationMs:Number(this.lastFrameDurationMs.toFixed(2)),averageRenderMs:e.averageRenderMs,p95RenderMs:e.p95RenderMs,maxRenderMs:e.maxRenderMs,renderedFrameCount:e.renderedFrameCount,slowFrameCount:e.slowFrameCount,idleFrameSkipCount:e.idleFrameSkipCount,adaptiveScaleChangeCount:e.adaptiveScaleChangeCount,viewportVisible:this.viewportVisible,disposalAudit:{...this.lastDisposalAudit},meshCount:t.geometry.meshCount,qualitySnapshot:t}}getQualitySnapshot(){let e=this.getGeometryQualityStats(),t=this.smoothness.snapshot();return{backend:"three",supportedFormats:["glb","gltf","stl","ply","obj"],colorPipeline:{outputColorSpace:String(this.renderer.outputColorSpace),toneMapping:this.renderer.toneMapping===Rs?"NoToneMapping":String(this.renderer.toneMapping),textureCount:this.textureAudit.textureCount,colorTextureCount:this.textureAudit.colorTextureCount,srgbColorTextureCount:this.textureAudit.srgbColorTextureCount},geometry:e,camera:{near:Number(this.camera.near.toPrecision(6)),far:Number(this.camera.far.toPrecision(6)),nearFarRatio:Number((this.camera.far/Math.max(this.camera.near,Number.EPSILON)).toPrecision(6))},performance:{renderScale:Number(this.renderScale.toFixed(2)),pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,viewportVisible:this.viewportVisible,renderedFrameCount:t.renderedFrameCount,idleFrameSkipCount:t.idleFrameSkipCount,slowFrameCount:t.slowFrameCount,averageRenderMs:t.averageRenderMs,p95RenderMs:t.p95RenderMs,maxRenderMs:t.maxRenderMs,adaptiveScaleChangeCount:t.adaptiveScaleChangeCount}}}setExplode(e,t){if(!this.rootObject)return;let i=Math.abs(e)>Number.EPSILON;!i&&!this.explodeStateActive||(F2(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(Hy(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new se(e.x,e.y,e.z),i=this.camera.position.distanceTo(this.controls.target),r=t.clone().sub(this.camera.position).normalize(),s=t.clone().sub(r.multiplyScalar(i));this.animateCamera(s,t)}toggleDisassembly(){if(this.ensureDisassembly(),!this.disassembly)return!1;let e=!this.disassembly.isEnabled();e&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh(),this.clearSelectionHighlight());let t=this.disassembly.setEnabled(e);return t||this.disassembly.reset(),t}resetDisassembly(){this.disassembly&&(this.disassembly.reset(),this.invalidateRootBoundsCache())}isDisassemblyEnabled(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}ensureDisassembly(){if(this.disassemblySetup||(this.disassemblySetup=!0,!this.rootObject))return;let e=this.getRenderableMeshes(this.rootObject);e.length!==0&&(this.disassembly=D2(this.scene,this.camera,this.renderer.domElement,this.rootObject,e,this.controls,()=>{this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty()},this.getChildRenderableMeshMap(this.rootObject)))}animateCamera(e,t){cancelAnimationFrame(this.cameraAnimHandle);let i=this.camera.position.clone(),r=this.controls.target.clone(),s=500,a=performance.now(),o=()=>{let l=performance.now()-a,c=Math.min(1,l/s),f=c<.5?4*c*c*c:1-Math.pow(-2*c+2,3)/2;this.camera.position.lerpVectors(i,e,f),this.controls.target.lerpVectors(r,t,f),this.controls.update(),this.markDirty(),c<1&&(this.cameraAnimHandle=window.requestAnimationFrame(o))};this.cameraAnimHandle=window.requestAnimationFrame(o)}startRenderLoop(){if(this.renderHandle||!this.viewportVisible||this.contextLost)return;let e=()=>{if(!this.viewportVisible||this.contextLost){this.renderHandle=0;return}let t=this.renderNow(performance.now());this.renderHandle=t?window.requestAnimationFrame(e):0};this.renderHandle=window.requestAnimationFrame(e)}renderNow(e){var l,c,f;let t=this.renderer.domElement;if(!this.viewportVisible||!t.isConnected||t.clientWidth<=0||t.clientHeight<=0)return!1;let i=Math.max(0,(e-this.clock.last)/1e3);this.clock.last=e;let r=this.controls.update(),s=!!this.mixer&&this.animationPlaying;if(s&&this.mixer&&(this.mixer.update(i),this.markShadowDirty()),this.restoreInteractivePixelRatioIfIdle(e,r),!r&&!s&&!this.renderDirty)return this.smoothness.recordIdleFrameSkip(),this.renderObserverSettleFrames>0&&(this.renderObserverSettleFrames--,this.notifyRenderObservers()),this.shouldContinueRenderLoop(r,s);this.renderDirty=!1,this.setRenderObserverSettleFrames(),(l=this.bboxHelper)==null||l.update(),(c=this.selectionHelper)==null||c.update(),(f=this.focusHelper)==null||f.update(),this.axesHelper&&this.axesHelper.visible&&this.axesHelper.position.copy(this.controls.target);let a=performance.now();this.renderer.render(this.scene,this.camera);let o=performance.now()-a;return this.smoothness.recordRenderedFrame(o,k2),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return U2({cameraMoved:e,animating:t,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames})}notifyRenderObservers(){if(!(this.frameBudgetObserverStride>1&&(this.frameBudgetObserverCursor=(this.frameBudgetObserverCursor+1)%this.frameBudgetObserverStride,this.frameBudgetObserverCursor!==0)))for(let e of this.renderObservers)e()}markDirty(){this.renderDirty=!0,this.startRenderLoop()}markShadowDirty(){if(!this.renderer.shadowMap.enabled){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}if(this.shouldDeferShadowRefresh()){this.frameBudgetShadowDeferred=!0;return}this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!0}prepareInteractiveFrameBudget(){let e=performance.now();this.interactionPixelRatioDeadline=e+Roe,this.activateInteractivePixelRatio()&&this.resizeRenderer()}activateInteractivePixelRatio(){if(this.interactivePixelRatioActive)return!1;let e=this.computePixelRatio(!1);return this.computePixelRatio(!0)>=e?!1:(this.interactivePixelRatioActive=!0,!0)}restoreInteractivePixelRatioIfIdle(e,t){!this.interactivePixelRatioActive||t||e=k2?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=Moe?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=Ioe){this.frameBudgetSlowStreak=0;let t=Math.max(Doe,this.frameBudgetPixelRatioScale*Coe);t=yoe&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*Poe),this.frameBudgetObserverStride=Math.max(1,this.frameBudgetObserverStride-1),this.setRenderObserverSettleFrames(),this.smoothness.recordAdaptiveScaleChange(),this.resizeRenderer())}}resetFrameBudget(){let e=this.frameBudgetPixelRatioScale!==1||this.frameBudgetObserverStride!==1;this.frameBudgetPixelRatioScale=1,this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0,this.frameBudgetObserverStride=1,this.frameBudgetObserverCursor=0,this.setRenderObserverSettleFrames(),e&&this.markDirty()}setRenderObserverSettleFrames(e=G2){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=Loe}resizeRenderer(){let e=this.renderer.domElement,t=Math.max(1,Math.round(e.clientWidth||e.width||1)),i=Math.max(1,Math.round(e.clientHeight||e.height||1));this.renderer.setPixelRatio(this.computePixelRatio()),this.renderer.setSize(t,i,!1),this.camera instanceof xs?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:hn(this.rootObject),t=ji(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof xs))return;let i=this.computeOrthographicViewSpan()/2,r=i*e;this.camera.left=-r,this.camera.right=r,this.camera.top=i,this.camera.bottom=-i}updateOrthographicFrustumForCamera(e,t){let r=this.computeOrthographicViewSpan()/2,s=r*t;e.left=-s,e.right=s,e.top=r,e.bottom=-r,e.updateProjectionMatrix()}switchCameraMode(e){if(this.cameraMode===e&&(e==="perspective"&&this.camera instanceof dr||e==="orthographic"&&this.camera instanceof xs))return;let t=this.renderer.domElement,i=Math.max(1,Math.round(t.clientWidth||t.width||1)),r=Math.max(1,Math.round(t.clientHeight||t.height||1)),s=i/r,a=this.camera,o=a.position.clone(),l=this.controls.target.clone(),c=a.zoom||1,f=a.near,d=a.far;if(this.scene.remove(a),e==="orthographic"){let h=new xs(-1,1,1,-1,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.updateOrthographicFrustumForCamera(h,s),this.camera=h}else{let h=new dr(this.initialFov,s,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.camera=h}this.scene.add(this.camera),this.controls.object=this.camera,this.controls.target.copy(l),this.controls.update(),this.cameraMode=e}applyCameraConfig(e){var i;let t=(i=e.mode)!=null?i:this.cameraMode;e.mode&&(this.initialCameraMode=e.mode),this.switchCameraMode(t),this.camera instanceof dr&&typeof e.fov=="number"&&Number.isFinite(e.fov)&&(this.camera.fov=e.fov,this.initialFov=e.fov),e.position&&(this.camera.position.set(...e.position),this.initialPosition.set(...e.position)),e.lookAt&&(this.controls.target.set(...e.lookAt),this.camera.lookAt(this.controls.target),this.initialTarget.set(...e.lookAt)),typeof e.near=="number"&&Number.isFinite(e.near)&&(this.camera.near=e.near),typeof e.far=="number"&&Number.isFinite(e.far)&&(this.camera.far=e.far),typeof e.zoom=="number"&&Number.isFinite(e.zoom)&&(this.camera.zoom=e.zoom,this.initialZoom=e.zoom),this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty()}applyLightConfig(e){for(let i of this.configLights)this.disposeConfiguredLight(i);this.configLights.length=0;let t=e.length>0;for(let i of this.defaultLights)i.visible=!t;for(let i of e){let r=this.createConfiguredLight(i);r&&(this.configLights.push(r),r.parent!==this.camera&&this.scene.add(r))}this.syncShadowFeatures(),this.updateShadowFraming(),this.markShadowDirty(),this.markDirty()}applySceneConfig(e){if(this.sceneConfig={...this.sceneConfig,...e},e.transparent!==void 0||e.background!==void 0)if(this.sceneConfig.transparent)this.scene.background=null,this.renderer.setClearColor(sA,0);else if(this.sceneConfig.background){let t=new ft(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=sA,this.renderer.setClearColor(sA,1);typeof e.autoRotate=="boolean"&&(this.controls.autoRotate=e.autoRotate),typeof e.autoRotateSpeed=="number"&&(this.controls.autoRotateSpeed=e.autoRotateSpeed),typeof e.axis=="boolean"&&this.syncAxisHelper(e.axis),this.syncSceneHelpers(),this.syncShadowFeatures(),this.markDirty()}installDefaultLighting(){let e=new Iu(16777215,.96);e.name="default-global-ambient";let t=new Mu(16777215,7172736,.34);t.name="default-hemi",this.defaultLights.push(e,t);for(let i of this.defaultLights)this.scene.add(i)}installGlobalEnvironment(){this.disposeGlobalEnvironment();let e=new Uu(this.renderer),t=new mT;this.environmentTarget=e.fromScene(t,.04),this.scene.environment=this.environmentTarget.texture,this.scene.environmentIntensity=.48,t.dispose(),e.dispose()}syncGlobalEnvironmentForQuality(){if(this.quality==="low"){this.cancelGlobalEnvironmentInstall(),this.disposeGlobalEnvironment(),this.markDirty();return}this.rootObject&&!this.environmentTarget&&this.scheduleGlobalEnvironmentInstall()}scheduleGlobalEnvironmentInstall(){this.quality==="low"||this.environmentTarget||this.environmentInstallHandle||(this.environmentInstallHandle=window.setTimeout(()=>{this.environmentInstallHandle=0,!(this.quality==="low"||this.contextLost||!this.rootObject)&&(this.installGlobalEnvironment(),this.markDirty())},Noe))}cancelGlobalEnvironmentInstall(){this.environmentInstallHandle&&(window.clearTimeout(this.environmentInstallHandle),this.environmentInstallHandle=0)}disposeGlobalEnvironment(){var e;this.cancelGlobalEnvironmentInstall(),this.scene.environment=null,(e=this.environmentTarget)==null||e.dispose(),this.environmentTarget=null}createConfiguredLight(e){var r,s,a,o,l,c,f;let t=e.color?new ft(e.color):new ft(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new Iu(t,i);case"hemisphere":{let d=e.groundColor?new ft(e.groundColor):new ft(4473924);return new Mu(t,d,i)}case"directional":{let d=new Zo(t,i),h=(s=e.position)!=null?s:[-1,2,1],u=(a=e.target)!=null?a:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new ro(t,i),h=(o=e.position)!=null?o:[0,5,0];return d.position.set(...h),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new kl(t,i),h=(l=e.position)!=null?l:[0,5,0],u=(c=e.target)!=null?c:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.angle=e.angle?e.angle*Math.PI/180:Math.PI/4,d.penumbra=(f=e.penumbra)!=null?f:.5,typeof e.decay=="number"&&(d.decay=e.decay),d.castShadow=!!e.castShadow,d}case"attachToCam":{let d=new ro(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof Zo||e instanceof kl)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=this.renderer.capabilities.getMaxAnisotropy(),i=new Set;for(let r of e)for(let s of Ls(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){woe(this.textureAudit,IT(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!zy(i)||!i.castShadow||(i.shadow.mapSize.set(e,e),i.shadow.bias=-12e-5,i.shadow.normalBias=.018,i.shadow.needsUpdate=!0,t=!0);t&&(this.syncShadowFeatures(),this.markShadowDirty(),this.markDirty())}updateShadowFraming(e=this.getRootPreviewBounds()){if(!this.rootObject||!e)return;let t=vr(e),i=ji(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new se(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!zy(l)||!l.castShadow)){if(this.ensureMeshShadowFlags(),l.shadow.mapSize.set(this.shadowMapSize(),this.shadowMapSize()),l.shadow.bias=-12e-5,l.shadow.normalBias=.018,l instanceof Zo){let c=l.position.clone().sub(l.target.position);if(c.lengthSq()<.001&&c.set(4,7,5),l.target.position.copy(a),l.target.parent||this.scene.add(l.target),l.position.copy(a).add(c.normalize().multiplyScalar(s*2.4)),l.shadow.camera instanceof xs){let f=l.shadow.camera;f.left=-s,f.right=s,f.top=s,f.bottom=-s,f.near=.1,f.far=s*5,f.updateProjectionMatrix()}}l.shadow.needsUpdate=!0,o=!0}o&&this.markShadowDirty()}shadowMapSize(){return this.quality==="low"?512:this.quality==="medium"?1024:2048}allLights(){return[...this.defaultLights,...this.configLights]}hasActiveShadowFeatures(){return!!this.sceneConfig.groundShadow||this.allLights().some(e=>zy(e)&&e.castShadow)}syncShadowFeatures(){let e=this.hasActiveShadowFeatures();if(this.renderer.shadowMap.enabled!==e&&(this.renderer.shadowMap.enabled=e),!e){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}this.ensureMeshShadowFlags(),this.renderer.shadowMap.needsUpdate=!0}ensureMeshShadowFlags(){if(!(!this.rootObject||this.meshShadowFlagsPrepared)){for(let e of this.getRenderableObjects(this.rootObject))Ra(e)&&(e.castShadow=!0,e.receiveShadow=!0);this.meshShadowFlagsPrepared=!0}}syncSceneHelpers(){this.sceneConfig.groundShadow?this.createGroundShadow():this.removeGroundShadow(),this.sceneConfig.grid?this.createGrid():this.removeGrid(),typeof this.sceneConfig.axis=="boolean"&&this.syncAxisHelper(this.sceneConfig.axis)}syncAxisHelper(e){if(!this.axesHelper){this.axesHelper=new Cu(1.2);let t=this.axesHelper.material;t.depthTest=!1,t.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}this.axesHelper.visible=e,this.axesHelper.position.copy(this.controls.target)}createGroundShadow(){var l;if(!this.rootObject||this.groundShadowMesh)return;this.ensureMeshShadowFlags();let e=(l=this.getRootPreviewBounds())!=null?l:hn(this.rootObject),t=vr(e),i=ji(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*3,.001),a=e.min.y-Math.max(s*.002,1e-5),o=new li(new Ld(s,s),new M_({color:0,opacity:Soe,transparent:!0}));o.name="ai3d-ground-shadow",o.rotation.x=-Math.PI/2,o.position.set(t.x,a,t.z),o.receiveShadow=!0,o.renderOrder=-1,this.scene.add(o),this.groundShadowMesh=o}removeGroundShadow(){if(this.groundShadowMesh){this.groundShadowMesh.removeFromParent(),this.groundShadowMesh.geometry.dispose();for(let e of Ls(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:hn(this.rootObject),t=vr(e),i=ji(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new N_(s,20,7305093,3423046);a.name="ai3d-grid",a.position.set(t.x,e.min.y-Math.max(s*.003,1e-5),t.z);for(let l of Ls(a.material))l.transparent=!0,l.opacity=.42;this.scene.add(a),this.gridHelper=a}removeGrid(){if(this.gridHelper){this.gridHelper.removeFromParent(),this.gridHelper.geometry.dispose();for(let e of Ls(this.gridHelper.material))e.dispose();this.gridHelper=null}}dispatchPick(e){var c,f,d;if(!this.rootObject||(c=this.disassembly)!=null&&c.isEnabled())return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],r=Qu(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?ZT(this.rootObject,r,s,a):null,l={mesh:o,pickedPoint:(d=(f=i==null?void 0:i.point)==null?void 0:f.clone())!=null?d:null,screenX:e.clientX,screenY:e.clientY};if(this._lastPickResult=l,this.measurementActive&&(i!=null&&i.point)){this.addMeasurementPoint(i.point.clone());return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(h=>h(l))}clearLoadedModel(e="model-switch"){var t,i;if(this.cancelGlobalEnvironmentInstall(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.explodeStateActive=!1,this.meshShadowFlagsPrepared=!1,this.invalidateMeshCache(),this.markDirty(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.disposeMeasurementOverlays(!0),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,(i=this.bboxHelper)==null||i.removeFromParent(),this.bboxHelper=null,this.bboxEnabled=!1,this.removeGroundShadow(),this.removeGrid(),this.mixer=null,this.animationPlaying=!1,!this.rootObject){this.lastDisposalAudit={reason:e,meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};return}this.scene.remove(this.rootObject),this.lastDisposalAudit=this.disposeObjectGraph(this.rootObject,e),this.rootObject=null,this.invalidateMeshCache(),this.markShadowDirty()}disposeObjectGraph(e,t){var c;let i=new Set,r=new Set,s=new Set,a=0,o=0,l=f=>{Ra(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let h of Ls(f.material))this.disposeMaterialWithTextures(h,r,s)};if(this.cachedRenderables&&this.cachedRenderableRoot===e){o=(c=this.cachedRenderableObjectCount)!=null?c:this.cachedRenderables.length;for(let f of this.cachedRenderables)l(f)}else e.traverse(f=>{o++,Qu(f)&&l(f)});return{reason:t,meshCount:a,geometryCount:i.size,materialCount:r.size,textureCount:s.size,objectCount:o,timestamp:performance.now()}}disposeMaterialWithTextures(e,t,i){if(t.has(e.uuid))return;let r=e;for(let s of Object.values(r))if(s instanceof Rr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Rr&&!i.has(a.uuid)&&(a.dispose(),i.add(a.uuid));e.dispose(),t.add(e.uuid)}fitCameraToObject(e,t){var l;let i=(l=t!=null?t:this.getRootPreviewBounds(e))!=null?l:hn(e),r=h2(i);this.initialTarget.set(r.target.x,r.target.y,r.target.z),this.initialPosition.set(r.position.x,r.position.y,r.position.z),this.initialFov=45;let s=ji(i),a=Math.max(s.x,s.y,s.z,Number.EPSILON),o=this.initialPosition.distanceTo(this.initialTarget);this.controls.minDistance=Math.max(r.near*4,a*.02,1e-5),this.controls.maxDistance=Math.max(o*8,this.controls.minDistance*10),this.raycaster.params.Points={threshold:Math.max(a*.01,1e-5)},this.raycaster.params.Line={threshold:Math.max(a*.002,1e-5)},this.occlusionRaycaster.params.Points={threshold:Math.max(a*.006,1e-5)},this.occlusionRaycaster.params.Line={threshold:Math.max(a*.001,1e-5)},this.resetView(),this.axesHelper&&(this.axesHelper.position.copy(this.controls.target),this.axesHelper.scale.setScalar(Math.max(a*.25,5e-4))),this.camera.near=r.near,this.camera.far=r.far,this.camera.updateProjectionMatrix(),this.markDirty()}getAnnotationCameraStateKey(){return WT([{value:this.camera.position.x,digits:3},{value:this.camera.position.y,digits:3},{value:this.camera.position.z,digits:3},{value:this.controls.target.x,digits:2},{value:this.controls.target.y,digits:2},{value:this.controls.target.z,digits:2},{value:this.camera instanceof dr?this.camera.fov:this.camera.zoom,digits:this.camera instanceof dr?2:3}])}projectAnnotationWorldPoint(e,t){let i=this.renderer.domElement;return!i.isConnected||i.clientWidth===0||i.clientHeight===0?!1:(this.scene.updateMatrixWorld(),this.camera.updateMatrixWorld(),this.annotationProjection.set(e.x,e.y,e.z).project(this.camera),v2(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=df(Qt(this.camera.position),e);if(!t)return!1;this.rootObject.updateWorldMatrix(!0,!0),this.annotationDirection.set(t.direction.x,t.direction.y,t.direction.z),this.occlusionRaycaster.set(this.camera.position,this.annotationDirection),this.occlusionRaycaster.far=t.distance;let i=this.occlusionRaycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];return!!i&&ff(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{Ra(i)&&i.geometry&&t.push(i)}),this.cachedMeshes=t,this.cachedMeshRoot=e,t}getRenderableObjects(e){if(this.cachedRenderables&&this.cachedRenderableRoot===e)return this.cachedRenderables;let t=[],i=0;return e.traverse(r=>{i++,Qu(r)&&r.geometry&&t.push(r)}),this.cachedRenderables=t,this.cachedRenderableRoot=e,this.cachedRenderableObjectCount=i,t}getChildRenderableMeshMap(e){return this.cachedChildMeshMap&&this.cachedChildMeshMapRoot===e?this.cachedChildMeshMap:(this.cachedChildMeshMap=em(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=x2(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=C2(this.rootObject,this.getRenderableObjects(this.rootObject),(e=this.getRootPreviewBounds())!=null?e:void 0,this.getRenderableBoundsMap(this.rootObject))),this.cachedGeometryQualityStats):{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null}}invalidateMeshCache(){this.cachedMeshes=null,this.cachedMeshRoot=null,this.cachedRenderables=null,this.cachedRenderableRoot=null,this.cachedRenderableObjectCount=null,this.cachedChildMeshMap=null,this.cachedChildMeshMapRoot=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.invalidateRootBoundsCache()}invalidateRootBoundsCache(){this.cachedRootPreviewBounds=null,this.cachedRootPreviewBoundsObject=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.cachedGeometryQualityStats=null}getRootPreviewBounds(e=this.rootObject){return e?this.cachedRootPreviewBounds&&this.cachedRootPreviewBoundsObject===e?this.cachedRootPreviewBounds:(this.cachedRootPreviewBounds=hn(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new Wl(this.rootObject,16436245),this.scene.add(this.bboxHelper))}updateSelectionHighlight(e){var t;if(!this.rootObject||!e){this.clearSelectionHighlight();return}this.highlightedObject===e&&this.selectionHelper||((t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=new Wl(e,4890367),this.scene.add(this.selectionHelper),this.highlightedObject=e,this.markDirty())}setFocusedObject(e){var r,s;if(!this.rootObject||!e){this.clearFocusedMesh();return}if(this.focusedObject===e)return;let t=this.getRenderableMeshes(this.rootObject),i=Ra(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!Qu(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new Wl(e,3065087),this.scene.add(this.focusHelper),this.focusedObject=e,this.focusedSelectedMeshes.clear();for(let a of i)this.focusedSelectedMeshes.set(a.id,a);this.markDirty()}clearFocusedMesh(){var e;this.restoreFocusedMaterials(),this.disposeFocusDimMaterials(),this.originalMaterials.clear(),this.focusedSelectedMeshes.clear(),(e=this.focusHelper)==null||e.removeFromParent(),this.focusHelper=null,this.focusedObject=null,this.markDirty()}restoreFocusedMaterials(){if(this.rootObject)for(let e of this.getRenderableMeshes(this.rootObject)){let t=this.originalMaterials.get(e.id);t&&(e.material=t)}}applyInitialFocusMaterials(e,t){let i=new Set(t.map(r=>r.id));for(let r of e)this.originalMaterials.set(r.id,r.material),!i.has(r.id)&&(r.material=this.focusDimMaterialCache.get(r.material))}applyFocusSelectionDelta(e){var i,r;let t=new Set(e.map(s=>s.id));for(let[s,a]of this.focusedSelectedMeshes){if(t.has(s))continue;let o=(i=this.originalMaterials.get(s))!=null?i:a.material;this.originalMaterials.has(s)||this.originalMaterials.set(s,o),a.material=this.focusDimMaterialCache.get(o)}for(let s of e){let a=(r=this.originalMaterials.get(s.id))!=null?r:s.material;this.originalMaterials.has(s.id)||this.originalMaterials.set(s.id,a),s.material=a}}disposeFocusDimMaterials(){this.focusDimMaterialCache.clear()}clearSelectionHighlight(){var e;(e=this.selectionHelper)==null||e.removeFromParent(),this.selectionHelper=null,this.highlightedObject=null,this.markDirty()}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:hn(this.rootObject),t=ji(e);return Math.max(t.x,t.y,t.z,.001)*.015}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(16739179));e&&this.markDirty()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>t.start.distanceTo(e)<1e-4||t.end.distanceTo(e)<1e-4)}disposeMeasurementMarker(e){e.removeFromParent(),e.geometry.dispose();let t=e.material;if(Array.isArray(t))for(let i of t)i.dispose();else t.dispose()}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(i.distanceTo(this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=new Ru(r,16,16),a=new es({color:16739179,depthTest:!1}),o=new li(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(16739179)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=new Ru(r,16,16),a=new es({color:16739179,depthTest:!1}),o=new li(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o),this.pendingMarker=o}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(5361510),this.pendingPoint=i,this.ensurePreviewLine()}this.markDirty()}createMeasurementSegment(e,t){let i=new Xi().setFromPoints([e,t]),r=new Xo(i,new Ln({color:16739179,depthTest:!1}));r.renderOrder=998,this.scene.add(r);let s=qu(this.createMeasurementReading(e,t)),a=new se().addVectors(e,t).multiplyScalar(.5),o=this.createMeasurementLabelSprite(s,a,this.getMeasurementMarkerSize()*4);this.scene.add(o),this.measurementSegments.push({start:e,end:t,line:r,label:o})}createMeasurementLabelSprite(e,t,i){let r=activeDocument.createEl("canvas"),s=r.getContext("2d");r.width=640,r.height=160,s.fillStyle="rgba(32, 36, 46, 0.9)",s.beginPath(),s.roundRect(0,0,640,160,18),s.fill(),s.strokeStyle="#ff6b6b",s.lineWidth=4,s.stroke(),s.fillStyle="#ffffff",s.textAlign="center",s.textBaseline="middle",s.font="bold 46px sans-serif",s.fillText(e.primary,320,58),s.font="28px sans-serif",s.fillStyle="rgba(255, 255, 255, 0.82)",s.fillText(e.secondary,320,112);let a=new R_(r),o=new Su({map:a,depthTest:!1}),l=new E_(o);return l.position.copy(t),l.scale.set(i*5,i*1.25,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Xi().setFromPoints([new se,new se]);this.previewLine=new Xo(e,new Ln({color:16777215,transparent:!0,opacity:.5,depthTest:!1})),this.previewLine.renderOrder=997,this.scene.add(this.previewLine)}updatePreviewLine(){if(this.previewLineUpdateHandle=0,!this.pendingPoint||!this.previewLine||!this.rootObject)return;let e=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-e.left)/e.width*2-1,this.pointer.y=-((this.lastPointerClient.y-e.top)/e.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let t=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],i;t!=null&&t.point?i=t.point.clone():i=this.pendingPoint.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5));let r=this.previewLine.geometry.getAttribute("position");r.setXYZ(0,this.pendingPoint.x,this.pendingPoint.y,this.pendingPoint.z),r.setXYZ(1,i.x,i.y,i.z),r.needsUpdate=!0,this.previewLine.geometry.computeBoundingSphere(),this.markDirty()}schedulePreviewLineUpdate(){this.previewLineUpdateHandle||(this.previewLineUpdateHandle=window.requestAnimationFrame(()=>this.updatePreviewLine()))}cancelPreviewLineUpdate(){this.previewLineUpdateHandle&&(window.cancelAnimationFrame(this.previewLineUpdateHandle),this.previewLineUpdateHandle=0)}removePreviewLine(){this.cancelPreviewLineUpdate(),this.previewLine&&(this.previewLine.removeFromParent(),this.previewLine.geometry.dispose(),this.previewLine.material.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return XT(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}}});var Boe,Xy,Yy,ie,hi=I(()=>{Boe=typeof WeakRef!="undefined",Xy=class{constructor(e,t=!1,i,r){this.initialize(e,t,i,r)}initialize(e,t=!1,i,r){return this.mask=e,this.skipNextObservers=t,this.target=i,this.currentTarget=r,this}},Yy=class{constructor(e,t,i=null){this.callback=e,this.mask=t,this.scope=i,this._willBeUnregistered=!1,this.unregisterOnNextCall=!1,this._remove=null}remove(e=!1){this._remove&&this._remove(e)}},ie=class n{static FromPromise(e,t){let i=new n;return e.then(r=>{i.notifyObservers(r)}).catch(r=>{if(t)t.notifyObservers(r);else throw r}),i}get observers(){return this._observers}constructor(e,t=!1){this.notifyIfTriggered=t,this._observers=new Array,this._numObserversMarkedAsDeleted=0,this._hasNotified=!1,this._eventState=new Xy(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new Yy(e,t,r);a.unregisterOnNextCall=s,i?this._observers.unshift(a):this._observers.push(a),this._onObserverAdded&&this._onObserverAdded(a),this._hasNotified&&this.notifyIfTriggered&&this._lastNotifiedValue!==void 0&&this.notifyObserver(a,this._lastNotifiedValue);let o=Boe?new WeakRef(this):{deref:()=>this};return a._remove=(l=!1)=>{let c=o.deref();c&&(l?c.remove(a):c._remove(a))},a}addOnce(e){return this.add(e,void 0,void 0,void 0,!0)}remove(e){return e?(e._remove=null,this._observers.indexOf(e)!==-1?(this._deferUnregister(e),!0):!1):!1}removeCallback(e,t){for(let i=0;i{this._remove(e)},0))}_remove(e,t=!0){if(!e)return!1;let i=this._observers.indexOf(e);return i!==-1?(t&&this._numObserversMarkedAsDeleted--,this._observers.splice(i,1),!0):!1}makeObserverTopPriority(e){this._remove(e,!1),this._observers.unshift(e)}makeObserverBottomPriority(e){this._remove(e,!1),this._observers.push(e)}notifyObservers(e,t=-1,i,r,s){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=e),!this._observers.length)return!0;let a=this._eventState;a.mask=t,a.target=i,a.currentTarget=r,a.skipNextObservers=!1,a.lastReturnValue=e,a.userInfo=s;for(let o of this._observers)if(!o._willBeUnregistered&&(o.mask&t&&(o.unregisterOnNextCall&&this._deferUnregister(o),o.scope?a.lastReturnValue=o.callback.apply(o.scope,[e,a]):a.lastReturnValue=o.callback(e,a)),a.skipNextObservers))return!1;return!0}notifyObserver(e,t,i=-1){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=t),e._willBeUnregistered)return;let r=this._eventState;r.mask=i,r.skipNextObservers=!1,e.unregisterOnNextCall&&this._deferUnregister(e),e.callback(t,r)}hasObservers(){return this._observers.length-this._numObserversMarkedAsDeleted>0}clear(){for(;this._observers.length;){let e=this._observers.pop();e&&(e._remove=null)}this._onObserverAdded=null,this._numObserversMarkedAsDeleted=0,this.cleanLastNotifiedState()}cleanLastNotifiedState(){this._hasNotified=!1,this._lastNotifiedValue=void 0}clone(){let e=new n;return e._observers=this._observers.slice(0),e}hasSpecificMask(e=-1){for(let t of this._observers)if(t.mask&e||t.mask===e)return!0;return!1}}});var oA,X2=I(()=>{oA=class{get wrapU(){return this._cachedWrapU}set wrapU(e){this._cachedWrapU=e}get wrapV(){return this._cachedWrapV}set wrapV(e){this._cachedWrapV=e}get wrapR(){return this._cachedWrapR}set wrapR(e){this._cachedWrapR=e}get anisotropicFilteringLevel(){return this._cachedAnisotropicFilteringLevel}set anisotropicFilteringLevel(e){this._cachedAnisotropicFilteringLevel=e}get comparisonFunction(){return this._comparisonFunction}set comparisonFunction(e){this._comparisonFunction=e}get useMipMaps(){return this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}constructor(){this.samplingMode=-1,this._useMipMaps=!0,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this._comparisonFunction=0}setParameters(e=1,t=1,i=1,r=1,s=2,a=0){return this._cachedWrapU=e,this._cachedWrapV=t,this._cachedWrapR=i,this._cachedAnisotropicFilteringLevel=r,this.samplingMode=s,this._comparisonFunction=a,this}compareSampler(e){return this._cachedWrapU===e._cachedWrapU&&this._cachedWrapV===e._cachedWrapV&&this._cachedWrapR===e._cachedWrapR&&this._cachedAnisotropicFilteringLevel===e._cachedAnisotropicFilteringLevel&&this.samplingMode===e.samplingMode&&this._comparisonFunction===e._comparisonFunction&&this._useMipMaps===e._useMipMaps}}});var Y2,Oi,Os=I(()=>{hi();X2();(function(n){n[n.Unknown=0]="Unknown",n[n.Url=1]="Url",n[n.Temp=2]="Temp",n[n.Raw=3]="Raw",n[n.Dynamic=4]="Dynamic",n[n.RenderTarget=5]="RenderTarget",n[n.MultiRenderTarget=6]="MultiRenderTarget",n[n.Cube=7]="Cube",n[n.CubeRaw=8]="CubeRaw",n[n.CubePrefiltered=9]="CubePrefiltered",n[n.Raw3D=10]="Raw3D",n[n.Raw2DArray=11]="Raw2DArray",n[n.DepthStencil=12]="DepthStencil",n[n.CubeRawRGBD=13]="CubeRawRGBD",n[n.Depth=14]="Depth"})(Y2||(Y2={}));Oi=class n extends oA{get useMipMaps(){return this._useMipMaps===null?this.generateMipMaps:this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}get uniqueId(){return this._uniqueId}_setUniqueId(e){this._uniqueId=e}getEngine(){return this._engine}get source(){return this._source}constructor(e,t,i=!1){super(),this.isReady=!1,this.isCube=!1,this.is3D=!1,this.is2DArray=!1,this.isMultiview=!1,this.url="",this.generateMipMaps=!1,this._useMipMaps=null,this.mipLevelCount=1,this.samples=0,this.type=-1,this.format=-1,this.onLoadedObservable=new ie,this.onErrorObservable=new ie,this.onRebuildCallback=null,this.width=0,this.height=0,this.depth=0,this.baseWidth=0,this.baseHeight=0,this.baseDepth=0,this.invertY=!1,this._invertVScale=!1,this._associatedChannel=-1,this._source=0,this._buffer=null,this._bufferView=null,this._bufferViewArray=null,this._bufferViewArrayArray=null,this._size=0,this._extension="",this._files=null,this._workingCanvas=null,this._workingContext=null,this._cachedCoordinatesMode=null,this._isDisabled=!1,this._compression=null,this._sphericalPolynomial=null,this._sphericalPolynomialPromise=null,this._sphericalPolynomialComputed=!1,this._lodGenerationScale=0,this._lodGenerationOffset=0,this._useSRGBBuffer=!1,this._creationFlags=0,this._lodTextureHigh=null,this._lodTextureMid=null,this._lodTextureLow=null,this._isRGBD=!1,this._linearSpecularLOD=!1,this._irradianceTexture=null,this._hardwareTexture=null,this._maxLodLevel=null,this._references=1,this._gammaSpace=null,this._premulAlpha=!1,this._dynamicTextureSource=null,this._autoMSAAManagement=!1,this._engine=e,this._source=t,this._uniqueId=n._Counter++,i||(this._hardwareTexture=e._createHardwareTexture())}incrementReferences(){this._references++}updateSize(e,t,i=1){this._engine.updateTextureDimensions(this,e,t,i),this.width=e,this.height=t,this.depth=i,this.baseWidth=e,this.baseHeight=t,this.baseDepth=i,this._size=e*t*i}_rebuild(){var t,i;if(this.isReady=!1,this._cachedCoordinatesMode=null,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this.onRebuildCallback){let r=this.onRebuildCallback(this),s=a=>{a._swapAndDie(this,!1),this.isReady=r.isReady};r.isAsync?r.proxy.then(s):s(r.proxy);return}let e;switch(this.source){case 2:break;case 1:e=this._engine.createTexture((t=this._originalUrl)!=null?t:this.url,!this.generateMipMaps,this.invertY,null,this.samplingMode,r=>{r._swapAndDie(this,!1),this.isReady=!0},null,this._buffer,void 0,this.format,this._extension,void 0,void 0,void 0,this._useSRGBBuffer);return;case 3:if(e=this._engine.createRawTexture(this._bufferView,this.baseWidth,this.baseHeight,this.format,this.generateMipMaps,this.invertY,this.samplingMode,this._compression,this.type,this._creationFlags,this._useSRGBBuffer,this.mipLevelCount),e._swapAndDie(this,!1),this._bufferViewArray)for(let r=0;r{e._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension,!1,0,0,null,void 0,this._useSRGBBuffer,ArrayBuffer.isView(this._buffer)?this._buffer:null);return;case 8:e=this._engine.createRawCubeTexture(this._bufferViewArray,this.width,(i=this._originalFormat)!=null?i:this.format,this.type,this.generateMipMaps,this.invertY,this.samplingMode,this._compression),e._swapAndDie(this,!1),this.isReady=!0;break;case 13:return;case 9:e=this._engine.createPrefilteredCubeTexture(this.url,null,this._lodGenerationScale,this._lodGenerationOffset,r=>{r&&r._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension),e._sphericalPolynomial=this._sphericalPolynomial;return;case 12:case 14:break}}_swapAndDie(e,t=!0){var s;(s=this._hardwareTexture)==null||s.setUsage(e._source,this.generateMipMaps,this.is2DArray,this.isCube,this.is3D,this.width,this.height,this.depth),e._hardwareTexture=this._hardwareTexture,t&&(e._isRGBD=this._isRGBD),this._lodTextureHigh&&(e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureHigh=this._lodTextureHigh),this._lodTextureMid&&(e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureMid=this._lodTextureMid),this._lodTextureLow&&(e._lodTextureLow&&e._lodTextureLow.dispose(),e._lodTextureLow=this._lodTextureLow),this._irradianceTexture&&(e._irradianceTexture&&e._irradianceTexture.dispose(),e._irradianceTexture=this._irradianceTexture);let i=this._engine.getLoadedTexturesCache(),r=i.indexOf(this);r!==-1&&i.splice(r,1),r=i.indexOf(e),r===-1&&i.push(e)}dispose(){this._references--,this._references===0&&(this.onLoadedObservable.clear(),this.onErrorObservable.clear(),this._engine._releaseTexture(this),this._hardwareTexture=null,this._dynamicTextureSource=null)}};Oi._Counter=0});var Oe,Ni=I(()=>{hi();Oe=class{static get LastCreatedEngine(){return this.Instances.length===0?null:this.Instances[this.Instances.length-1]}static get LastCreatedScene(){return this._LastCreatedScene}};Oe.Instances=[];Oe.OnEnginesDisposedObservable=new ie;Oe._LastCreatedScene=null;Oe.UseFallbackTexture=!0;Oe.FallbackTexture=""});var ee,Pt=I(()=>{ee=class n{static _CheckLimit(e,t){let i=n._LogLimitOutputs[e];return i?i.current++:(i={limit:t,current:1},n._LogLimitOutputs[e]=i),i.current<=i.limit}static _GenerateLimitMessage(e,t=1){var s;let i=n._LogLimitOutputs[e];if(!i||!n.MessageLimitReached)return;let r=this._Levels[t];i.current===i.limit&&n[r.name](n.MessageLimitReached.replace(/%LIMIT%/g,""+i.limit).replace(/%TYPE%/g,(s=r.name)!=null?s:""))}static _AddLogEntry(e){n._LogCache=e+n._LogCache,n.OnNewCacheEntry&&n.OnNewCacheEntry(e)}static _FormatMessage(e){let t=r=>r<10?"0"+r:""+r,i=new Date;return"["+t(i.getHours())+":"+t(i.getMinutes())+":"+t(i.getSeconds())+"]: "+e}static _LogDisabled(e,t){}static _LogEnabled(e=1,t,i){let r=Array.isArray(t)?t[0]:t;if(i!==void 0&&!n._CheckLimit(r,i))return;let s=n._FormatMessage(r),a=this._Levels[e],o=Array.isArray(t)?t.slice(1):[];a.logFunc&&a.logFunc("BJS - "+s,...o);let l=`
${s}

`;n._AddLogEntry(l),n._GenerateLimitMessage(r,e)}static get LogCache(){return n._LogCache}static ClearLogCache(){n._LogCache="",n._LogLimitOutputs={},n.errorsCount=0}static set LogLevels(e){n.Log=n._LogDisabled,n.Warn=n._LogDisabled,n.Error=n._LogDisabled;let t=[n.MessageLogLevel,n.WarningLogLevel,n.ErrorLogLevel];for(let i of t)if((e&i)===i){let r=this._Levels[i];n[r.name]=n._LogEnabled.bind(n,i)}}};ee.NoneLogLevel=0;ee.MessageLogLevel=1;ee.WarningLogLevel=2;ee.ErrorLogLevel=4;ee.AllLogLevel=7;ee.MessageLimitReached="Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.";ee._LogCache="";ee._LogLimitOutputs={};ee._Levels=[{},{color:"white",logFunc:console.log,name:"Log"},{color:"orange",logFunc:console.warn,name:"Warn"},{},{color:"red",logFunc:console.error,name:"Error"}];ee.errorsCount=0;ee.Log=ee._LogEnabled.bind(ee,ee.MessageLogLevel);ee.Warn=ee._LogEnabled.bind(ee,ee.WarningLogLevel);ee.Error=ee._LogEnabled.bind(ee,ee.ErrorLogLevel)});var A,k=I(()=>{A=class n{static GetShadersRepository(e=0){return e===0?n.ShadersRepository:n.ShadersRepositoryWGSL}static GetShadersStore(e=0){return e===0?n.ShadersStore:n.ShadersStoreWGSL}static GetIncludesShadersStore(e=0){return e===0?n.IncludesShadersStore:n.IncludesShadersStoreWGSL}};A.ShadersRepository="src/Shaders/";A.ShadersStore={};A.IncludesShadersStore={};A.ShadersRepositoryWGSL="src/ShadersWGSL/";A.ShadersStoreWGSL={};A.IncludesShadersStoreWGSL={}});function ur(){return typeof window!="undefined"}function Xl(){return typeof navigator!="undefined"}function uf(){return typeof document!="undefined"}function lA(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var ba=I(()=>{});var cA,K2=I(()=>{cA=class{constructor(){this._valueCache={},this.vertexCompilationError=null,this.fragmentCompilationError=null,this.programLinkError=null,this.programValidationError=null,this._isDisposed=!1}get isAsync(){return this.isParallelCompiled}get isReady(){return this.program?this.isParallelCompiled?this.engine._isRenderingStateCompiled(this):!0:!1}_handlesSpectorRebuildCallback(e){e&&this.program&&e(this.program)}setEngine(e){this.engine=e}_fillEffectInformation(e,t,i,r,s,a,o,l){let c=this.engine;if(c.supportsUniformBuffers)for(let h in t)e.bindUniformBlock(h,t[h]);this.engine.getUniforms(this,i).forEach((h,u)=>{r[i[u]]=h}),this._uniforms=r;let d;for(d=0;d{a[h]=u});for(let h of c.getAttributes(this,o))l.push(h)}dispose(){this._uniforms={},this._isDisposed=!0}_cacheMatrix(e,t){let i=this._valueCache[e],r=t.updateFlag;return i!==void 0&&i===r?!1:(this._valueCache[e]=r,!0)}_cacheFloat2(e,t,i){let r=this._valueCache[e];if(!r||r.length!==2)return r=[t,i],this._valueCache[e]=r,!0;let s=!1;return r[0]!==t&&(r[0]=t,s=!0),r[1]!==i&&(r[1]=i,s=!0),s}_cacheFloat3(e,t,i,r){let s=this._valueCache[e];if(!s||s.length!==3)return s=[t,i,r],this._valueCache[e]=s,!0;let a=!1;return s[0]!==t&&(s[0]=t,a=!0),s[1]!==i&&(s[1]=i,a=!0),s[2]!==r&&(s[2]=r,a=!0),a}_cacheFloat4(e,t,i,r,s){let a=this._valueCache[e];if(!a||a.length!==4)return a=[t,i,r,s],this._valueCache[e]=a,!0;let o=!1;return a[0]!==t&&(a[0]=t,o=!0),a[1]!==i&&(a[1]=i,o=!0),a[2]!==r&&(a[2]=r,o=!0),a[3]!==s&&(a[3]=s,o=!0),o}setInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setIntArray(e,t){this._valueCache[e]=null,this.engine.setIntArray(this._uniforms[e],t)}setIntArray2(e,t){this._valueCache[e]=null,this.engine.setIntArray2(this._uniforms[e],t)}setIntArray3(e,t){this._valueCache[e]=null,this.engine.setIntArray3(this._uniforms[e],t)}setIntArray4(e,t){this._valueCache[e]=null,this.engine.setIntArray4(this._uniforms[e],t)}setUInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setUInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setUInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setUInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setUInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setUInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setUInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setUInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setUIntArray(e,t){this._valueCache[e]=null,this.engine.setUIntArray(this._uniforms[e],t)}setUIntArray2(e,t){this._valueCache[e]=null,this.engine.setUIntArray2(this._uniforms[e],t)}setUIntArray3(e,t){this._valueCache[e]=null,this.engine.setUIntArray3(this._uniforms[e],t)}setUIntArray4(e,t){this._valueCache[e]=null,this.engine.setUIntArray4(this._uniforms[e],t)}setArray(e,t){this._valueCache[e]=null,this.engine.setArray(this._uniforms[e],t)}setArray2(e,t){this._valueCache[e]=null,this.engine.setArray2(this._uniforms[e],t)}setArray3(e,t){this._valueCache[e]=null,this.engine.setArray3(this._uniforms[e],t)}setArray4(e,t){this._valueCache[e]=null,this.engine.setArray4(this._uniforms[e],t)}setMatrices(e,t){t&&(this._valueCache[e]=null,this.engine.setMatrices(this._uniforms[e],t))}setMatrix(e,t){this._cacheMatrix(e,t)&&(this.engine.setMatrices(this._uniforms[e],t.asArray())||(this._valueCache[e]=null))}setMatrix3x3(e,t){this._valueCache[e]=null,this.engine.setMatrix3x3(this._uniforms[e],t)}setMatrix2x2(e,t){this._valueCache[e]=null,this.engine.setMatrix2x2(this._uniforms[e],t)}setFloat(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setFloat(this._uniforms[e],t)&&(this._valueCache[e]=t)}setVector2(e,t){this._cacheFloat2(e,t.x,t.y)&&(this.engine.setFloat2(this._uniforms[e],t.x,t.y)||(this._valueCache[e]=null))}setFloat2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setFloat2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setVector3(e,t){this._cacheFloat3(e,t.x,t.y,t.z)&&(this.engine.setFloat3(this._uniforms[e],t.x,t.y,t.z)||(this._valueCache[e]=null))}setFloat3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setFloat3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setVector4(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setQuaternion(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setFloat4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setFloat4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setColor3(e,t){this._cacheFloat3(e,t.r,t.g,t.b)&&(this.engine.setFloat3(this._uniforms[e],t.r,t.g,t.b)||(this._valueCache[e]=null))}setColor4(e,t,i){this._cacheFloat4(e,t.r,t.g,t.b,i)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,i)||(this._valueCache[e]=null))}setDirectColor4(e,t){this._cacheFloat4(e,t.r,t.g,t.b,t.a)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,t.a)||(this._valueCache[e]=null))}_getVertexShaderCode(){return this.vertexShader?this.engine._getShaderSource(this.vertexShader):null}_getFragmentShaderCode(){return this.fragmentShader?this.engine._getShaderSource(this.fragmentShader):null}}});function Qe(n,e=!1){if(!(e&&j2[n]))return j2[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var j2,un=I(()=>{j2={}});function fA(n,e,t=""){return t+(e?e+` +`:"")+n}function dA(n,e,t,i,r,s,a){let o=a||tm.loadFile;if(o)return o(n,e,t,i,r,s);throw Qe("FileTools")}function hA(n,e,t,i){if(n){e?n.IS_NDC_HALF_ZRANGE="":delete n.IS_NDC_HALF_ZRANGE,t?n.USE_REVERSE_DEPTHBUFFER="":delete n.USE_REVERSE_DEPTHBUFFER,i?n.USE_EXACT_SRGB_CONVERSIONS="":delete n.USE_EXACT_SRGB_CONVERSIONS;return}else{let r="";return e&&(r+="#define IS_NDC_HALF_ZRANGE"),t&&(r&&(r+=` `),r+="#define USE_REVERSE_DEPTHBUFFER"),i&&(r&&(r+=` -`),r+="#define USE_EXACT_SRGB_CONVERSIONS"),r}}function Y2(n,e,t=!1,i){switch(n){case 3:{let s=new Int8Array(e);return i&&s.set(new Int8Array(i)),s}case 0:{let s=new Uint8Array(e);return i&&s.set(new Uint8Array(i)),s}case 4:{let s=typeof e!="number"?new Int16Array(e):new Int16Array(t?e/2:e);return i&&s.set(new Int16Array(i)),s}case 5:case 8:case 9:case 10:case 2:{let s=typeof e!="number"?new Uint16Array(e):new Uint16Array(t?e/2:e);return i&&s.set(new Uint16Array(i)),s}case 6:{let s=typeof e!="number"?new Int32Array(e):new Int32Array(t?e/4:e);return i&&s.set(new Int32Array(i)),s}case 7:case 11:case 12:case 13:case 14:case 15:{let s=typeof e!="number"?new Uint32Array(e):new Uint32Array(t?e/4:e);return i&&s.set(new Uint32Array(i)),s}case 1:{let s=typeof e!="number"?new Float32Array(e):new Float32Array(t?e/4:e);return i&&s.set(new Float32Array(i)),s}}let r=new Uint8Array(e);return i&&r.set(new Uint8Array(i)),r}var tm,mf=I(()=>{un();ba();tm={}});function Bn(n){let e=zy.get(n);if(!e){if(!n)return Ooe;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},zy.set(n,e)}return e}function dA(n){zy.delete(n)}function Yy(n,e,t,i,r,s){var c;let a=Bn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:hA);let o=Xy(e,"vertex",i,a._contextWasLost),l=Xy(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function Ky(n,e,t,i,r,s=null,a){var d;let o=Bn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:hA);let l=o._webGLVersion>1?`#version 300 es +`),r+="#define USE_EXACT_SRGB_CONVERSIONS"),r}}function q2(n,e,t=!1,i){switch(n){case 3:{let s=new Int8Array(e);return i&&s.set(new Int8Array(i)),s}case 0:{let s=new Uint8Array(e);return i&&s.set(new Uint8Array(i)),s}case 4:{let s=typeof e!="number"?new Int16Array(e):new Int16Array(t?e/2:e);return i&&s.set(new Int16Array(i)),s}case 5:case 8:case 9:case 10:case 2:{let s=typeof e!="number"?new Uint16Array(e):new Uint16Array(t?e/2:e);return i&&s.set(new Uint16Array(i)),s}case 6:{let s=typeof e!="number"?new Int32Array(e):new Int32Array(t?e/4:e);return i&&s.set(new Int32Array(i)),s}case 7:case 11:case 12:case 13:case 14:case 15:{let s=typeof e!="number"?new Uint32Array(e):new Uint32Array(t?e/4:e);return i&&s.set(new Uint32Array(i)),s}case 1:{let s=typeof e!="number"?new Float32Array(e):new Float32Array(t?e/4:e);return i&&s.set(new Float32Array(i)),s}}let r=new Uint8Array(e);return i&&r.set(new Uint8Array(i)),r}var tm,mf=I(()=>{un();ba();tm={}});function Bn(n){let e=Ky.get(n);if(!e){if(!n)return Uoe;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},Ky.set(n,e)}return e}function uA(n){Ky.delete(n)}function qy(n,e,t,i,r,s){var c;let a=Bn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:mA);let o=jy(e,"vertex",i,a._contextWasLost),l=jy(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function Zy(n,e,t,i,r,s=null,a){var d;let o=Bn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:mA);let l=o._webGLVersion>1?`#version 300 es #define WEBGL2 -`:"",c=K2(e,"vertex",i,l,r,o._contextWasLost),f=K2(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function j2(n,e){let t=new oA,i=Bn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function hA(n,e,t,i,r=null,s){let a=i.createProgram();if(n.program=a,!a)throw new Error("Unable to create program");return i.attachShader(a,e),i.attachShader(a,t),i.linkProgram(a),n.context=i,n.vertexShader=e,n.fragmentShader=t,n.isParallelCompiled||uA(n,i,s),a}function q2(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Bn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(uA(i,e,t),!0):!1}function uA(n,e,t){let i=n.context,r=n.vertexShader,s=n.fragmentShader,a=n.program;if(!i.getProgramParameter(a,i.LINK_STATUS)){if(!e.getShaderParameter(r,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(r);if(c)throw n.vertexCompilationError=c,new Error("VERTEX SHADER "+c)}if(!e.getShaderParameter(s,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(s);if(c)throw n.fragmentCompilationError=c,new Error("FRAGMENT SHADER "+c)}let l=i.getProgramInfoLog(a);if(l)throw n.programLinkError=l,new Error(l)}if(t&&(i.validateProgram(a),!i.getProgramParameter(a,i.VALIDATE_STATUS))){let c=i.getProgramInfoLog(a);if(c)throw n.programValidationError=c,new Error(c)}i.deleteShader(r),i.deleteShader(s),n.vertexShader=void 0,n.fragmentShader=void 0,n.onCompiled&&(n.onCompiled(),n.onCompiled=void 0)}function Z2(n,e,t,i,r,s,a,o,l,c="",f,d,h){var _,p;let u=Bn(n.context);d||(d=(_=u.createRawShaderProgramInjection)!=null?_:Yy),h||(h=(p=u.createShaderProgramInjection)!=null?p:Ky);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=h(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function K2(n,e,t,i,r,s){return Xy(lA(n,t,i),e,r,s)}function Xy(n,e,t,i){let r=t.createShader(e==="vertex"?t.VERTEX_SHADER:t.FRAGMENT_SHADER);if(!r){let s=t.NO_ERROR,a;for(;(a=t.getError())!==t.NO_ERROR;)s=a;throw new Error(`Something went wrong while creating a gl ${e} shader object. gl error=${s}, gl isContextLost=${t.isContextLost()}, _contextWasLost=${i}`)}return t.shaderSource(r,n),t.compileShader(r),r}function Q2(n,e){e.useProgram(n)}function $2(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var zy,Ooe,jy=I(()=>{z2();mf();zy=new WeakMap,Ooe={_webGLVersion:2,cachedPipelines:{}}});var Noe,woe,rl,mA=I(()=>{Noe="attribute",woe="varying",rl=class{constructor(){this.children=[]}isValid(e){return!0}process(e,t,i){var s,a,o,l,c,f,d;let r="";if(this.line){let h=this.line,u=t.processor;if(u){u.lineProcessor&&(h=u.lineProcessor(h,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Noe,_=t.isFragment&&((o=t.processor)!=null&&o.varyingFragmentKeywordName)?(l=t.processor)==null?void 0:l.varyingFragmentKeywordName:!t.isFragment&&((c=t.processor)!=null&&c.varyingVertexKeywordName)?(f=t.processor)==null?void 0:f.varyingVertexKeywordName:woe;!t.isFragment&&u.attributeProcessor&&this.line.startsWith(m)?h=u.attributeProcessor(this.line,e,t.processingContext):u.varyingProcessor&&((d=u.varyingCheck)!=null&&d.call(u,this.line,t.isFragment)||!u.varyingCheck&&this.line.startsWith(_))?h=u.varyingProcessor(this.line,t.isFragment,e,t.processingContext):u.uniformProcessor&&u.uniformRegexp&&u.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&u.uniformBufferRegexp&&u.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):u.textureProcessor&&u.textureRegexp&&u.textureRegexp.test(this.line)?h=u.textureProcessor(this.line,t.isFragment,e,t.processingContext):(u.uniformProcessor||u.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?u.uniformProcessor&&(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,u.endOfUniformBufferProcessor&&(h=u.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=h+` -`}for(let h of this.children)r+=h.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var pA,J2=I(()=>{pA=class{constructor(){this._lines=[]}get currentLine(){return this._lines[this.lineIndex]}get canRead(){return this.lineIndex1&&this._lines.push(i);else{let s=t.split(";");for(let a=0;a{mA();im=class extends rl{process(e,t,i){for(let r=0;r{mA();_A=class extends rl{isValid(e){return this.testExpression.isTrue(e)}}});var Tn,rm=I(()=>{Tn=class n{isTrue(e){return!0}static postfixToInfix(e){let t=[];for(let i of e)if(n._OperatorPriority[i]===void 0)t.push(i);else{let r=t[t.length-1],s=t[t.length-2];t.length-=2,t.push(`(${s}${i}${r})`)}return t[t.length-1]}static infixToPostfix(e){let t=n._InfixToPostfixCache.get(e);if(t)return t.accessTime=Date.now(),t.result;if(!e.includes("&&")&&!e.includes("||")&&!e.includes(")")&&!e.includes("("))return[e];let i=[],r=-1,s=()=>{f=f.trim(),f!==""&&(i.push(f),f="")},a=d=>{rn._Stack[r],l=()=>r===-1?"!!INVALID EXPRESSION!!":n._Stack[r--],c=0,f="";for(;c1){for(s();r!==-1&&n._OperatorPriority[o()]>=n._OperatorPriority[h];)i.push(l());a(h),c++}else f+=d;c++}for(s();r!==-1;)o()==="("?l():i.push(l());return n._InfixToPostfixCache.size>=n.InfixToPostfixCacheLimitSize&&n.ClearCache(),n._InfixToPostfixCache.set(e,{result:i,accessTime:Date.now()}),i}static ClearCache(){let e=Array.from(n._InfixToPostfixCache.entries()).sort((t,i)=>t[1].accessTime-i[1].accessTime);for(let t=0;t{rm();qd=class extends Tn{constructor(e,t=!1){super(),this.define=e,this.not=t}isTrue(e){let t=e[this.define]!==void 0;return this.not&&(t=!t),t}}});var gA,rU=I(()=>{rm();gA=class extends Tn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var vA,nU=I(()=>{rm();vA=class extends Tn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var EA,sU=I(()=>{rm();EA=class extends Tn{constructor(e,t,i){super(),this.define=e,this.operand=t,this.testValue=i}toString(){return`${this.define} ${this.operand} ${this.testValue}`}isTrue(e){let t=!1,i=parseInt(e[this.define]!=null?e[this.define]:this.define),r=parseInt(e[this.testValue]!=null?e[this.testValue]:this.testValue);if(isNaN(i)||isNaN(r))return!1;switch(this.operand){case">":t=i>r;break;case"<":t=i=":t=i>=r;break;case"==":t=i===r;break;case"!=":t=i!==r;break}return t}}});function lU(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function Jy(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),lg(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=zoe(s,e,i);t(a,s)})}function cU(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function Goe(n,e){var i;if((i=e.processor)!=null&&i.noPrecision)return n;let t=e.shouldUseHighPrecisionShader;return n.indexOf("precision highp float")===-1?t?n=`precision highp float; +`:"",c=Z2(e,"vertex",i,l,r,o._contextWasLost),f=Z2(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function Q2(n,e){let t=new cA,i=Bn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function mA(n,e,t,i,r=null,s){let a=i.createProgram();if(n.program=a,!a)throw new Error("Unable to create program");return i.attachShader(a,e),i.attachShader(a,t),i.linkProgram(a),n.context=i,n.vertexShader=e,n.fragmentShader=t,n.isParallelCompiled||pA(n,i,s),a}function $2(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Bn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(pA(i,e,t),!0):!1}function pA(n,e,t){let i=n.context,r=n.vertexShader,s=n.fragmentShader,a=n.program;if(!i.getProgramParameter(a,i.LINK_STATUS)){if(!e.getShaderParameter(r,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(r);if(c)throw n.vertexCompilationError=c,new Error("VERTEX SHADER "+c)}if(!e.getShaderParameter(s,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(s);if(c)throw n.fragmentCompilationError=c,new Error("FRAGMENT SHADER "+c)}let l=i.getProgramInfoLog(a);if(l)throw n.programLinkError=l,new Error(l)}if(t&&(i.validateProgram(a),!i.getProgramParameter(a,i.VALIDATE_STATUS))){let c=i.getProgramInfoLog(a);if(c)throw n.programValidationError=c,new Error(c)}i.deleteShader(r),i.deleteShader(s),n.vertexShader=void 0,n.fragmentShader=void 0,n.onCompiled&&(n.onCompiled(),n.onCompiled=void 0)}function J2(n,e,t,i,r,s,a,o,l,c="",f,d,h){var _,p;let u=Bn(n.context);d||(d=(_=u.createRawShaderProgramInjection)!=null?_:qy),h||(h=(p=u.createShaderProgramInjection)!=null?p:Zy);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=h(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function Z2(n,e,t,i,r,s){return jy(fA(n,t,i),e,r,s)}function jy(n,e,t,i){let r=t.createShader(e==="vertex"?t.VERTEX_SHADER:t.FRAGMENT_SHADER);if(!r){let s=t.NO_ERROR,a;for(;(a=t.getError())!==t.NO_ERROR;)s=a;throw new Error(`Something went wrong while creating a gl ${e} shader object. gl error=${s}, gl isContextLost=${t.isContextLost()}, _contextWasLost=${i}`)}return t.shaderSource(r,n),t.compileShader(r),r}function eU(n,e){e.useProgram(n)}function tU(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var Ky,Uoe,Qy=I(()=>{K2();mf();Ky=new WeakMap,Uoe={_webGLVersion:2,cachedPipelines:{}}});var Voe,Goe,rl,_A=I(()=>{Voe="attribute",Goe="varying",rl=class{constructor(){this.children=[]}isValid(e){return!0}process(e,t,i){var s,a,o,l,c,f,d;let r="";if(this.line){let h=this.line,u=t.processor;if(u){u.lineProcessor&&(h=u.lineProcessor(h,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Voe,_=t.isFragment&&((o=t.processor)!=null&&o.varyingFragmentKeywordName)?(l=t.processor)==null?void 0:l.varyingFragmentKeywordName:!t.isFragment&&((c=t.processor)!=null&&c.varyingVertexKeywordName)?(f=t.processor)==null?void 0:f.varyingVertexKeywordName:Goe;!t.isFragment&&u.attributeProcessor&&this.line.startsWith(m)?h=u.attributeProcessor(this.line,e,t.processingContext):u.varyingProcessor&&((d=u.varyingCheck)!=null&&d.call(u,this.line,t.isFragment)||!u.varyingCheck&&this.line.startsWith(_))?h=u.varyingProcessor(this.line,t.isFragment,e,t.processingContext):u.uniformProcessor&&u.uniformRegexp&&u.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&u.uniformBufferRegexp&&u.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):u.textureProcessor&&u.textureRegexp&&u.textureRegexp.test(this.line)?h=u.textureProcessor(this.line,t.isFragment,e,t.processingContext):(u.uniformProcessor||u.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?u.uniformProcessor&&(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,u.endOfUniformBufferProcessor&&(h=u.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=h+` +`}for(let h of this.children)r+=h.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var gA,iU=I(()=>{gA=class{constructor(){this._lines=[]}get currentLine(){return this._lines[this.lineIndex]}get canRead(){return this.lineIndex1&&this._lines.push(i);else{let s=t.split(";");for(let a=0;a{_A();im=class extends rl{process(e,t,i){for(let r=0;r{_A();vA=class extends rl{isValid(e){return this.testExpression.isTrue(e)}}});var Tn,rm=I(()=>{Tn=class n{isTrue(e){return!0}static postfixToInfix(e){let t=[];for(let i of e)if(n._OperatorPriority[i]===void 0)t.push(i);else{let r=t[t.length-1],s=t[t.length-2];t.length-=2,t.push(`(${s}${i}${r})`)}return t[t.length-1]}static infixToPostfix(e){let t=n._InfixToPostfixCache.get(e);if(t)return t.accessTime=Date.now(),t.result;if(!e.includes("&&")&&!e.includes("||")&&!e.includes(")")&&!e.includes("("))return[e];let i=[],r=-1,s=()=>{f=f.trim(),f!==""&&(i.push(f),f="")},a=d=>{rn._Stack[r],l=()=>r===-1?"!!INVALID EXPRESSION!!":n._Stack[r--],c=0,f="";for(;c1){for(s();r!==-1&&n._OperatorPriority[o()]>=n._OperatorPriority[h];)i.push(l());a(h),c++}else f+=d;c++}for(s();r!==-1;)o()==="("?l():i.push(l());return n._InfixToPostfixCache.size>=n.InfixToPostfixCacheLimitSize&&n.ClearCache(),n._InfixToPostfixCache.set(e,{result:i,accessTime:Date.now()}),i}static ClearCache(){let e=Array.from(n._InfixToPostfixCache.entries()).sort((t,i)=>t[1].accessTime-i[1].accessTime);for(let t=0;t{rm();qd=class extends Tn{constructor(e,t=!1){super(),this.define=e,this.not=t}isTrue(e){let t=e[this.define]!==void 0;return this.not&&(t=!t),t}}});var EA,aU=I(()=>{rm();EA=class extends Tn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var SA,oU=I(()=>{rm();SA=class extends Tn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var TA,lU=I(()=>{rm();TA=class extends Tn{constructor(e,t,i){super(),this.define=e,this.operand=t,this.testValue=i}toString(){return`${this.define} ${this.operand} ${this.testValue}`}isTrue(e){let t=!1,i=parseInt(e[this.define]!=null?e[this.define]:this.define),r=parseInt(e[this.testValue]!=null?e[this.testValue]:this.testValue);if(isNaN(i)||isNaN(r))return!1;switch(this.operand){case">":t=i>r;break;case"<":t=i=":t=i>=r;break;case"==":t=i===r;break;case"!=":t=i!==r;break}return t}}});function dU(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function iC(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),lg(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=qoe(s,e,i);t(a,s)})}function hU(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function Xoe(n,e){var i;if((i=e.processor)!=null&&i.noPrecision)return n;let t=e.shouldUseHighPrecisionShader;return n.indexOf("precision highp float")===-1?t?n=`precision highp float; `+n:n=`precision mediump float; -`+n:t||(n=n.replace("precision highp float","precision mediump float")),n}function Zy(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new qd(t[1].trim(),n[0]==="!");let i=["==","!=",">=","<=","<",">"],r="",s=0;for(r of i)if(s=n.indexOf(r),s>-1)break;if(s===-1)return new qd(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new EA(a,r,o)}function koe(n){n=n.replace(Foe,"defined[$1]");let e=Tn.infixToPostfix(n),t=[];for(let r of e)if(r!=="||"&&r!=="&&")t.push(r);else if(t.length>=2){let s=t[t.length-1],a=t[t.length-2];t.length-=2;let o=r=="&&"?new vA:new gA;typeof s=="string"&&(s=s.replace(qy,"defined($1)")),typeof a=="string"&&(a=a.replace(qy,"defined($1)")),o.leftOperand=typeof a=="string"?Zy(a):a,o.rightOperand=typeof s=="string"?Zy(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace(qy,"defined($1)")),typeof i=="string"?Zy(i):i}function TA(n,e){let t=new _A,i=n.substring(0,e),r=n.substring(e);return r=r.substring(0,(r.indexOf("//")+1||r.length+1)-1).trim(),i==="#ifdef"?t.testExpression=new qd(r):i==="#ifndef"?t.testExpression=new qd(r,!0):t.testExpression=koe(r),t}function Qy(n,e,t,i){let r;for(;$y(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new rl;e.children.push(a),$y(n,a,i);return}else if(s==="#elif"){let a=TA(r,5);e.children.push(a),t=a}}}function $y(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=Voe.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new im;e.children.push(o);let l=TA(i,6);o.children.push(l),Qy(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new im;e.children.push(o);let l=TA(i,7);o.children.push(l),Qy(n,o,l,t);break}case"#if":{let o=new im,l=TA(i,3);e.children.push(o),o.children.push(l),Qy(n,o,l,t);break}}continue}}let r=new rl;if(r.line=i,e.children.push(r),i[0]==="#"&&i[1]==="d"){let s=i.replace(";","").split(" ");r.additionalDefineKey=s[1],s.length===3&&(r.additionalDefineValue=s[2])}}return!1}function Woe(n,e,t,i){let r=new rl,s=new pA;return s.lineIndex=-1,s.lines=n.split(` -`),$y(s,r,i),r.process(e,t,i)}function Hoe(n,e){var r;let t=n.defines,i={};for(let s of t){let o=s.replace("#define","").replace(";","").trim().split(" ");i[o[0]]=o.length>1?o[1]:""}return((r=n.processor)==null?void 0:r.shaderLanguage)===0&&(i.GL_ES="true"),i.__VERSION__=n.version,i[n.platformName]="true",fA(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function zoe(n,e,t){let i=Goe(n,e);if(!e.processor||e.processor.shaderLanguage===0&&i.indexOf("#version 3")!==-1&&(i=i.replace("#version 300 es",""),!e.processor.parseGLES3))return i;let r=e.defines,s=Hoe(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Woe(i,s,e,a),e.processor.postProcessor&&(i=e.processor.postProcessor(i,r,e.isFragment,e.processingContext,t?{drawBuffersExtensionDisabled:!t.getCaps().drawBuffersExtension}:{},s,a)),t!=null&&t._features.needShaderCodeInlining&&(i=t.inlineShaderCode(i)),i}function lg(n,e,t){SA.length=0;let i;for(;(i=Boe.exec(n))!==null;)SA.push(i);let r=[n],s=!1;for(let o of SA){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(Uoe,""),e.supportsUniformBuffers&&(l=l.replace("Vertex","Ubo").replace("Fragment","Ubo")),l=l+"Declaration"),e.includesShadersStore[l]){let c=e.includesShadersStore[l];if(o[2]){let d=o[3].split(",");for(let h=0;hv+"{X}")),c+=_.replace(oU,p.toString())+` -`}else e.supportsUniformBuffers||(c=c.replace(aU,(h,u)=>u+"{X}")),c=c.replace(oU,d)}let f=[];for(let d of r){let h=d.split(o[0]);for(let u=0;u=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";eC.loadFile(c,f=>{e.includesShadersStore[l]=f,lg(r.join(""),e,t)});return}}SA.length=0;let a=r.join("");s?lg(a.toString(),e,t):t(a)}var Foe,qy,Boe,Uoe,aU,oU,SA,Voe,eC,AA=I(()=>{mA();J2();eU();tU();iU();rU();nU();rm();sU();un();mf();Foe=/defined\s*?\((.+?)\)/g,qy=/defined\s*?\[(.+?)\]/g,Boe=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,Uoe=/__decl__/,aU=/light\{X\}.(\w*)/g,oU=/\{X\}/g,SA=[],Voe=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;eC={loadFile:(n,e,t,i,r,s)=>{throw Qe("FileTools")}}});function dU(n,e){return Bn(e).cachedPipelines[n]}function xA(n){let e=n._name,t=n.context;if(e&&t){let i=Bn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function hU(n,e,t,i,r,s,a){let o,l,c=ur()?s==null?void 0:s.getHostDocument():null;typeof e=="string"?o=e:typeof e.vertexSource=="string"?o="source:"+e.vertexSource:typeof e.vertexElement=="string"?o=(c==null?void 0:c.getElementById(e.vertexElement))||e.vertexElement:o=e.vertex||e,typeof e=="string"?l=e:typeof e.fragmentSource=="string"?l="source:"+e.fragmentSource:typeof e.fragmentElement=="string"?l=(c==null?void 0:c.getElementById(e.fragmentElement))||e.fragmentElement:l=e.fragment||e;let f=[void 0,void 0],d=()=>{if(f[0]&&f[1]){let[h,u]=f;lU(n),Jy(h,n,(m,_)=>{a&&(a._vertexSourceCodeBeforeMigration=_),t&&(m=t("vertex",m)),n.isFragment=!0,Jy(u,n,(p,g)=>{a&&(a._fragmentSourceCodeBeforeMigration=g),t&&(p=t("fragment",p));let v=cU(m,p,n);n=null;let x=Xoe(v.vertexCode,v.fragmentCode,e,r);i==null||i(x.vertexSourceCode,x.fragmentSourceCode)},s)},s)}};fU(o,"Vertex","",h=>{a&&(a._rawVertexSourceCode=h),f[0]=h,d()},r),fU(l,"Fragment","Pixel",h=>{a&&(a._rawFragmentSourceCode=h),f[1]=h,d()},r)}function fU(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=aA(n);i(l);return}if(n.substring(0,7)==="source:"){i(n.substring(7));return}if(n.substring(0,7)==="base64:"){let l=window.atob(n.substring(7));i(l);return}let a=A.GetShadersStore(r);if(a[n+e+"Shader"]){i(a[n+e+"Shader"]);return}if(t&&a[n+t+"Shader"]){i(a[n+t+"Shader"]);return}let o;if(n[0]==="."||n[0]==="/"||n.indexOf("http")>-1?o=n:o=A.GetShadersRepository(r)+n,s=s||cA,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function Xoe(n,e,t,i){if(t){let r=t.vertexElement||t.vertex||t.spectorName||t,s=t.fragmentElement||t.fragment||t.spectorName||t;return{vertexSourceCode:(i===1?"//":"")+"#define SHADER_NAME vertex:"+r+` +`+n:t||(n=n.replace("precision highp float","precision mediump float")),n}function Jy(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new qd(t[1].trim(),n[0]==="!");let i=["==","!=",">=","<=","<",">"],r="",s=0;for(r of i)if(s=n.indexOf(r),s>-1)break;if(s===-1)return new qd(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new TA(a,r,o)}function Yoe(n){n=n.replace(koe,"defined[$1]");let e=Tn.infixToPostfix(n),t=[];for(let r of e)if(r!=="||"&&r!=="&&")t.push(r);else if(t.length>=2){let s=t[t.length-1],a=t[t.length-2];t.length-=2;let o=r=="&&"?new SA:new EA;typeof s=="string"&&(s=s.replace($y,"defined($1)")),typeof a=="string"&&(a=a.replace($y,"defined($1)")),o.leftOperand=typeof a=="string"?Jy(a):a,o.rightOperand=typeof s=="string"?Jy(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace($y,"defined($1)")),typeof i=="string"?Jy(i):i}function xA(n,e){let t=new vA,i=n.substring(0,e),r=n.substring(e);return r=r.substring(0,(r.indexOf("//")+1||r.length+1)-1).trim(),i==="#ifdef"?t.testExpression=new qd(r):i==="#ifndef"?t.testExpression=new qd(r,!0):t.testExpression=Yoe(r),t}function eC(n,e,t,i){let r;for(;tC(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new rl;e.children.push(a),tC(n,a,i);return}else if(s==="#elif"){let a=xA(r,5);e.children.push(a),t=a}}}function tC(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=zoe.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new im;e.children.push(o);let l=xA(i,6);o.children.push(l),eC(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new im;e.children.push(o);let l=xA(i,7);o.children.push(l),eC(n,o,l,t);break}case"#if":{let o=new im,l=xA(i,3);e.children.push(o),o.children.push(l),eC(n,o,l,t);break}}continue}}let r=new rl;if(r.line=i,e.children.push(r),i[0]==="#"&&i[1]==="d"){let s=i.replace(";","").split(" ");r.additionalDefineKey=s[1],s.length===3&&(r.additionalDefineValue=s[2])}}return!1}function Koe(n,e,t,i){let r=new rl,s=new gA;return s.lineIndex=-1,s.lines=n.split(` +`),tC(s,r,i),r.process(e,t,i)}function joe(n,e){var r;let t=n.defines,i={};for(let s of t){let o=s.replace("#define","").replace(";","").trim().split(" ");i[o[0]]=o.length>1?o[1]:""}return((r=n.processor)==null?void 0:r.shaderLanguage)===0&&(i.GL_ES="true"),i.__VERSION__=n.version,i[n.platformName]="true",hA(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function qoe(n,e,t){let i=Xoe(n,e);if(!e.processor||e.processor.shaderLanguage===0&&i.indexOf("#version 3")!==-1&&(i=i.replace("#version 300 es",""),!e.processor.parseGLES3))return i;let r=e.defines,s=joe(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Koe(i,s,e,a),e.processor.postProcessor&&(i=e.processor.postProcessor(i,r,e.isFragment,e.processingContext,t?{drawBuffersExtensionDisabled:!t.getCaps().drawBuffersExtension}:{},s,a)),t!=null&&t._features.needShaderCodeInlining&&(i=t.inlineShaderCode(i)),i}function lg(n,e,t){AA.length=0;let i;for(;(i=Woe.exec(n))!==null;)AA.push(i);let r=[n],s=!1;for(let o of AA){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(Hoe,""),e.supportsUniformBuffers&&(l=l.replace("Vertex","Ubo").replace("Fragment","Ubo")),l=l+"Declaration"),e.includesShadersStore[l]){let c=e.includesShadersStore[l];if(o[2]){let d=o[3].split(",");for(let h=0;hv+"{X}")),c+=_.replace(fU,p.toString())+` +`}else e.supportsUniformBuffers||(c=c.replace(cU,(h,u)=>u+"{X}")),c=c.replace(fU,d)}let f=[];for(let d of r){let h=d.split(o[0]);for(let u=0;u=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";rC.loadFile(c,f=>{e.includesShadersStore[l]=f,lg(r.join(""),e,t)});return}}AA.length=0;let a=r.join("");s?lg(a.toString(),e,t):t(a)}var koe,$y,Woe,Hoe,cU,fU,AA,zoe,rC,RA=I(()=>{_A();iU();rU();nU();sU();aU();oU();rm();lU();un();mf();koe=/defined\s*?\((.+?)\)/g,$y=/defined\s*?\[(.+?)\]/g,Woe=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,Hoe=/__decl__/,cU=/light\{X\}.(\w*)/g,fU=/\{X\}/g,AA=[],zoe=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;rC={loadFile:(n,e,t,i,r,s)=>{throw Qe("FileTools")}}});function mU(n,e){return Bn(e).cachedPipelines[n]}function bA(n){let e=n._name,t=n.context;if(e&&t){let i=Bn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function pU(n,e,t,i,r,s,a){let o,l,c=ur()?s==null?void 0:s.getHostDocument():null;typeof e=="string"?o=e:typeof e.vertexSource=="string"?o="source:"+e.vertexSource:typeof e.vertexElement=="string"?o=(c==null?void 0:c.getElementById(e.vertexElement))||e.vertexElement:o=e.vertex||e,typeof e=="string"?l=e:typeof e.fragmentSource=="string"?l="source:"+e.fragmentSource:typeof e.fragmentElement=="string"?l=(c==null?void 0:c.getElementById(e.fragmentElement))||e.fragmentElement:l=e.fragment||e;let f=[void 0,void 0],d=()=>{if(f[0]&&f[1]){let[h,u]=f;dU(n),iC(h,n,(m,_)=>{a&&(a._vertexSourceCodeBeforeMigration=_),t&&(m=t("vertex",m)),n.isFragment=!0,iC(u,n,(p,g)=>{a&&(a._fragmentSourceCodeBeforeMigration=g),t&&(p=t("fragment",p));let v=hU(m,p,n);n=null;let x=Zoe(v.vertexCode,v.fragmentCode,e,r);i==null||i(x.vertexSourceCode,x.fragmentSourceCode)},s)},s)}};uU(o,"Vertex","",h=>{a&&(a._rawVertexSourceCode=h),f[0]=h,d()},r),uU(l,"Fragment","Pixel",h=>{a&&(a._rawFragmentSourceCode=h),f[1]=h,d()},r)}function uU(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=lA(n);i(l);return}if(n.substring(0,7)==="source:"){i(n.substring(7));return}if(n.substring(0,7)==="base64:"){let l=window.atob(n.substring(7));i(l);return}let a=A.GetShadersStore(r);if(a[n+e+"Shader"]){i(a[n+e+"Shader"]);return}if(t&&a[n+t+"Shader"]){i(a[n+t+"Shader"]);return}let o;if(n[0]==="."||n[0]==="/"||n.indexOf("http")>-1?o=n:o=A.GetShadersRepository(r)+n,s=s||dA,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function Zoe(n,e,t,i){if(t){let r=t.vertexElement||t.vertex||t.spectorName||t,s=t.fragmentElement||t.fragment||t.spectorName||t;return{vertexSourceCode:(i===1?"//":"")+"#define SHADER_NAME vertex:"+r+` `+n,fragmentSourceCode:(i===1?"//":"")+"#define SHADER_NAME fragment:"+s+` -`+e}}else return{vertexSourceCode:n,fragmentSourceCode:e}}var uU,tC=I(()=>{ba();jy();k();Pt();AA();mf();uU=(n,e,t,i)=>{try{let r=n.context?Bn(n.context):null;r&&(r.disableParallelShaderCompile=n.disableParallelCompilation);let s=n.existingPipelineContext||e(n.shaderProcessingContext);return s._name=n.name,n.name&&r&&(r.cachedPipelines[n.name]=s),t(s,n.vertex,n.fragment,!!n.createAsRaw,"","",n.rebuildRebind,n.defines,n.transformFeedbackVaryings,"",()=>{i(s,()=>{var a;(a=n.onRenderingStateCompiled)==null||a.call(n,s)})}),s}catch(r){throw ee.Error("Error compiling effect"),r}}});function mU(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var RA,ho,nl,sl=I(()=>{RA=[],ho=class{static SetImmediate(e){RA.length===0&&setTimeout(()=>{let t=RA;RA=[];for(let i of t)i()},1),RA.push(e)}};nl=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&mU(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!mU(n,e,t)){if(r-=i,r<0){t==null||t(new Error("Operation timed out after maximum retries. "+(a||"")),!0);return}l=setTimeout(c,i)}};return l=setTimeout(c,i),()=>{o=!0,l!==null&&clearTimeout(l)}}});var or,Zd=I(()=>{hi();Pt();k();tC();sl();or=class n{static get ShadersRepository(){return A.ShadersRepository}static set ShadersRepository(e){A.ShadersRepository=e}get isDisposed(){return this._isDisposed}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new ie),this._onBindObservable}get shaderLanguage(){return this._shaderLanguage}constructor(e,t,i,r=null,s,a=null,o=null,l=null,c=null,f,d="",h=0,u){var p,g,v,x;this.defines="",this.onCompiled=null,this.onError=null,this.onBind=null,this.uniqueId=0,this.onCompileObservable=new ie,this.onErrorObservable=new ie,this._onBindObservable=null,this._isDisposed=!1,this._refCount=1,this._bonesComputationForcedToCPU=!1,this._uniformBuffersNames={},this._multiTarget=!1,this._samplers={},this._isReady=!1,this._compilationError="",this._allFallbacksProcessed=!1,this._uniforms={},this._key="",this._fallbacks=null,this._vertexSourceCodeOverride="",this._fragmentSourceCodeOverride="",this._transformFeedbackVaryings=null,this._disableParallelShaderCompilation=!1,this._pipelineContext=null,this._vertexSourceCode="",this._fragmentSourceCode="",this._vertexSourceCodeBeforeMigration="",this._fragmentSourceCodeBeforeMigration="",this._rawVertexSourceCode="",this._rawFragmentSourceCode="",this._processCodeAfterIncludes=void 0,this._processFinalCode=null,this._onReleaseEffectsObserver=null,this.name=e,this._key=d;let m=this._key.replace(/\r/g,"").replace(/\n/g,"|"),_;if(t.attributes){let S=t;if(this._engine=i,this._attributesNames=S.attributes,this._uniformsNames=S.uniformsNames.concat(S.samplers),this._samplerList=S.samplers.slice(),this.defines=S.defines,this.onError=S.onError,this.onCompiled=S.onCompiled,this._fallbacks=S.fallbacks,this._indexParameters=S.indexParameters,this._transformFeedbackVaryings=S.transformFeedbackVaryings||null,this._multiTarget=!!S.multiTarget,this._shaderLanguage=(p=S.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!S.disableParallelShaderCompilation,S.uniformBuffersNames){this._uniformBuffersNamesList=S.uniformBuffersNames.slice();for(let E=0;E{this._onReleaseEffectsObserver=null,!this.isDisposed&&this.dispose(!0)})}async _processShaderCodeAsync(e=null,t=!1,i=null,r){r&&await r(),this._processingContext=i||this._engine._getShaderProcessingContext(this._shaderLanguage,!1);let s={defines:this.defines.split(` -`),indexParameters:this._indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:e!=null?e:this._engine._getShaderProcessor(this._shaderLanguage),supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:A.GetShadersRepository(this._shaderLanguage),includesShadersStore:A.GetIncludesShadersStore(this._shaderLanguage),version:(this._engine.version*100).toString(),platformName:this._engine.shaderPlatformName,processingContext:this._processingContext,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,processCodeAfterIncludes:this._processCodeAfterIncludes};hU(s,this.name,this._processFinalCode,(a,o)=>{this._vertexSourceCode=a,this._fragmentSourceCode=o,this._prepareEffect(t)},this._shaderLanguage,this._engine,this)}get key(){return this._key}isReady(){try{return this._isReadyInternal()}catch(e){return!1}}_isReadyInternal(){return this._engine.isDisposed||this._isReady?!0:this._pipelineContext?this._pipelineContext.isReady:!1}getEngine(){return this._engine}getPipelineContext(){return this._pipelineContext}getAttributesNames(){return this._attributesNames}getAttributeLocation(e){return this._attributes[e]}getAttributeLocationByName(e){return this._attributeLocationByName[e]}getAttributesCount(){return this._attributes.length}getUniformIndex(e){return this._uniformsNames.indexOf(e)}getUniform(e){return this._uniforms[e]}getSamplers(){return this._samplerList}getUniformNames(){return this._uniformsNames}getUniformBuffersNames(){return this._uniformBuffersNamesList}getIndexParameters(){return this._indexParameters}getCompilationError(){return this._compilationError}allFallbacksProcessed(){return this._allFallbacksProcessed}async whenCompiledAsync(){return await new Promise(e=>{this.executeWhenCompiled(e)})}executeWhenCompiled(e){if(this.isReady()){e(this);return}this.onCompileObservable.add(t=>{e(t)}),(!this._pipelineContext||this._pipelineContext.isAsync)&&this._checkIsReady(null)}_checkIsReady(e){nl(()=>this._isReadyInternal()||this._isDisposed,()=>{},t=>{this._processCompilationErrors(t,e)},16,12e4,!0,` - Effect: ${typeof this.name=="string"?this.name:this.key}`)}get vertexSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._vertexSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getVertexShaderCode())!=null?t:this._vertexSourceCode}get fragmentSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._fragmentSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getFragmentShaderCode())!=null?t:this._fragmentSourceCode}get vertexSourceCodeBeforeMigration(){return this._vertexSourceCodeBeforeMigration}get fragmentSourceCodeBeforeMigration(){return this._fragmentSourceCodeBeforeMigration}get rawVertexSourceCode(){return this._rawVertexSourceCode}get rawFragmentSourceCode(){return this._rawFragmentSourceCode}getPipelineGenerationOptions(){return{platformName:this._engine.shaderPlatformName,shaderLanguage:this._shaderLanguage,shaderNameOrContent:this.name,key:this._key,defines:this.defines.split(` -`),addGlobalDefines:!1,extendedProcessingOptions:{indexParameters:this._indexParameters,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,supportsUniformBuffers:this._engine.supportsUniformBuffers},extendedCreatePipelineOptions:{transformFeedbackVaryings:this._transformFeedbackVaryings,createAsRaw:!!(this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride)}}}_rebuildProgram(e,t,i,r){this._isReady=!1,this._vertexSourceCodeOverride=e,this._fragmentSourceCodeOverride=t,this.onError=(s,a)=>{r&&r(a)},this.onCompiled=()=>{var a,o;let s=this.getEngine().scenes;if(s)for(let l=0;lthis._rebuildProgram(l,c,f,d),defines:r,transformFeedbackVaryings:this._transformFeedbackVaryings,name:this._key.replace(/\r/g,"").replace(/\n/g,"|"),createAsRaw:i,disableParallelCompilation:this._disableParallelShaderCompilation,shaderProcessingContext:this._processingContext,onRenderingStateCompiled:l=>{t&&!e&&this._engine._deletePipelineContext(t),l&&this._onRenderingStateCompiled(l)}},this._engine.createPipelineContext.bind(this._engine),this._engine._preparePipelineContextAsync.bind(this._engine),this._engine._executeWhenRenderingStateIsCompiled.bind(this._engine)),this._pipelineContext.isAsync&&this._checkIsReady(t)}catch(i){this._processCompilationErrors(i,t)}}_getShaderCodeAndErrorLine(e,t,i){let r=i?/FRAGMENT SHADER ERROR: 0:(\d+?):/:/VERTEX SHADER ERROR: 0:(\d+?):/,s=null;if(t&&e){let a=t.match(r);if(a&&a.length===2){let o=parseInt(a[1]),l=e.split(` +`+e}}else return{vertexSourceCode:n,fragmentSourceCode:e}}var _U,nC=I(()=>{ba();Qy();k();Pt();RA();mf();_U=(n,e,t,i)=>{try{let r=n.context?Bn(n.context):null;r&&(r.disableParallelShaderCompile=n.disableParallelCompilation);let s=n.existingPipelineContext||e(n.shaderProcessingContext);return s._name=n.name,n.name&&r&&(r.cachedPipelines[n.name]=s),t(s,n.vertex,n.fragment,!!n.createAsRaw,"","",n.rebuildRebind,n.defines,n.transformFeedbackVaryings,"",()=>{i(s,()=>{var a;(a=n.onRenderingStateCompiled)==null||a.call(n,s)})}),s}catch(r){throw ee.Error("Error compiling effect"),r}}});function gU(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var MA,ho,nl,sl=I(()=>{MA=[],ho=class{static SetImmediate(e){MA.length===0&&setTimeout(()=>{let t=MA;MA=[];for(let i of t)i()},1),MA.push(e)}};nl=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&gU(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!gU(n,e,t)){if(r-=i,r<0){t==null||t(new Error("Operation timed out after maximum retries. "+(a||"")),!0);return}l=setTimeout(c,i)}};return l=setTimeout(c,i),()=>{o=!0,l!==null&&clearTimeout(l)}}});var or,Zd=I(()=>{hi();Pt();k();nC();sl();or=class n{static get ShadersRepository(){return A.ShadersRepository}static set ShadersRepository(e){A.ShadersRepository=e}get isDisposed(){return this._isDisposed}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new ie),this._onBindObservable}get shaderLanguage(){return this._shaderLanguage}constructor(e,t,i,r=null,s,a=null,o=null,l=null,c=null,f,d="",h=0,u){var p,g,v,x;this.defines="",this.onCompiled=null,this.onError=null,this.onBind=null,this.uniqueId=0,this.onCompileObservable=new ie,this.onErrorObservable=new ie,this._onBindObservable=null,this._isDisposed=!1,this._refCount=1,this._bonesComputationForcedToCPU=!1,this._uniformBuffersNames={},this._multiTarget=!1,this._samplers={},this._isReady=!1,this._compilationError="",this._allFallbacksProcessed=!1,this._uniforms={},this._key="",this._fallbacks=null,this._vertexSourceCodeOverride="",this._fragmentSourceCodeOverride="",this._transformFeedbackVaryings=null,this._disableParallelShaderCompilation=!1,this._pipelineContext=null,this._vertexSourceCode="",this._fragmentSourceCode="",this._vertexSourceCodeBeforeMigration="",this._fragmentSourceCodeBeforeMigration="",this._rawVertexSourceCode="",this._rawFragmentSourceCode="",this._processCodeAfterIncludes=void 0,this._processFinalCode=null,this._onReleaseEffectsObserver=null,this.name=e,this._key=d;let m=this._key.replace(/\r/g,"").replace(/\n/g,"|"),_;if(t.attributes){let S=t;if(this._engine=i,this._attributesNames=S.attributes,this._uniformsNames=S.uniformsNames.concat(S.samplers),this._samplerList=S.samplers.slice(),this.defines=S.defines,this.onError=S.onError,this.onCompiled=S.onCompiled,this._fallbacks=S.fallbacks,this._indexParameters=S.indexParameters,this._transformFeedbackVaryings=S.transformFeedbackVaryings||null,this._multiTarget=!!S.multiTarget,this._shaderLanguage=(p=S.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!S.disableParallelShaderCompilation,S.uniformBuffersNames){this._uniformBuffersNamesList=S.uniformBuffersNames.slice();for(let E=0;E{this._onReleaseEffectsObserver=null,!this.isDisposed&&this.dispose(!0)})}async _processShaderCodeAsync(e=null,t=!1,i=null,r){r&&await r(),this._processingContext=i||this._engine._getShaderProcessingContext(this._shaderLanguage,!1);let s={defines:this.defines.split(` +`),indexParameters:this._indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:e!=null?e:this._engine._getShaderProcessor(this._shaderLanguage),supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:A.GetShadersRepository(this._shaderLanguage),includesShadersStore:A.GetIncludesShadersStore(this._shaderLanguage),version:(this._engine.version*100).toString(),platformName:this._engine.shaderPlatformName,processingContext:this._processingContext,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,processCodeAfterIncludes:this._processCodeAfterIncludes};pU(s,this.name,this._processFinalCode,(a,o)=>{this._vertexSourceCode=a,this._fragmentSourceCode=o,this._prepareEffect(t)},this._shaderLanguage,this._engine,this)}get key(){return this._key}isReady(){try{return this._isReadyInternal()}catch(e){return!1}}_isReadyInternal(){return this._engine.isDisposed||this._isReady?!0:this._pipelineContext?this._pipelineContext.isReady:!1}getEngine(){return this._engine}getPipelineContext(){return this._pipelineContext}getAttributesNames(){return this._attributesNames}getAttributeLocation(e){return this._attributes[e]}getAttributeLocationByName(e){return this._attributeLocationByName[e]}getAttributesCount(){return this._attributes.length}getUniformIndex(e){return this._uniformsNames.indexOf(e)}getUniform(e){return this._uniforms[e]}getSamplers(){return this._samplerList}getUniformNames(){return this._uniformsNames}getUniformBuffersNames(){return this._uniformBuffersNamesList}getIndexParameters(){return this._indexParameters}getCompilationError(){return this._compilationError}allFallbacksProcessed(){return this._allFallbacksProcessed}async whenCompiledAsync(){return await new Promise(e=>{this.executeWhenCompiled(e)})}executeWhenCompiled(e){if(this.isReady()){e(this);return}this.onCompileObservable.add(t=>{e(t)}),(!this._pipelineContext||this._pipelineContext.isAsync)&&this._checkIsReady(null)}_checkIsReady(e){nl(()=>this._isReadyInternal()||this._isDisposed,()=>{},t=>{this._processCompilationErrors(t,e)},16,12e4,!0,` - Effect: ${typeof this.name=="string"?this.name:this.key}`)}get vertexSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._vertexSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getVertexShaderCode())!=null?t:this._vertexSourceCode}get fragmentSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._fragmentSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getFragmentShaderCode())!=null?t:this._fragmentSourceCode}get vertexSourceCodeBeforeMigration(){return this._vertexSourceCodeBeforeMigration}get fragmentSourceCodeBeforeMigration(){return this._fragmentSourceCodeBeforeMigration}get rawVertexSourceCode(){return this._rawVertexSourceCode}get rawFragmentSourceCode(){return this._rawFragmentSourceCode}getPipelineGenerationOptions(){return{platformName:this._engine.shaderPlatformName,shaderLanguage:this._shaderLanguage,shaderNameOrContent:this.name,key:this._key,defines:this.defines.split(` +`),addGlobalDefines:!1,extendedProcessingOptions:{indexParameters:this._indexParameters,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,supportsUniformBuffers:this._engine.supportsUniformBuffers},extendedCreatePipelineOptions:{transformFeedbackVaryings:this._transformFeedbackVaryings,createAsRaw:!!(this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride)}}}_rebuildProgram(e,t,i,r){this._isReady=!1,this._vertexSourceCodeOverride=e,this._fragmentSourceCodeOverride=t,this.onError=(s,a)=>{r&&r(a)},this.onCompiled=()=>{var a,o;let s=this.getEngine().scenes;if(s)for(let l=0;lthis._rebuildProgram(l,c,f,d),defines:r,transformFeedbackVaryings:this._transformFeedbackVaryings,name:this._key.replace(/\r/g,"").replace(/\n/g,"|"),createAsRaw:i,disableParallelCompilation:this._disableParallelShaderCompilation,shaderProcessingContext:this._processingContext,onRenderingStateCompiled:l=>{t&&!e&&this._engine._deletePipelineContext(t),l&&this._onRenderingStateCompiled(l)}},this._engine.createPipelineContext.bind(this._engine),this._engine._preparePipelineContextAsync.bind(this._engine),this._engine._executeWhenRenderingStateIsCompiled.bind(this._engine)),this._pipelineContext.isAsync&&this._checkIsReady(t)}catch(i){this._processCompilationErrors(i,t)}}_getShaderCodeAndErrorLine(e,t,i){let r=i?/FRAGMENT SHADER ERROR: 0:(\d+?):/:/VERTEX SHADER ERROR: 0:(\d+?):/,s=null;if(t&&e){let a=t.match(r);if(a&&a.length===2){let o=parseInt(a[1]),l=e.split(` `,-1);l.length>=o&&(s=`Offending line [${o}] in ${i?"fragment":"vertex"} code: ${l[o-1]}`)}}return[e,s]}_processCompilationErrors(e,t=null){var a,o,l;this._compilationError=e.message;let i=this._attributesNames,r=this._fallbacks;if(ee.Error("Unable to compile effect:"),ee.Error(`Uniforms: ${this._uniformsNames.join(" ")}`),ee.Error(`Attributes: ${i.join(" ")}`),ee.Error(`Defines: -`+this.defines),n.LogShaderCodeOnCompilationError){let c=null,f=null,d;(a=this._pipelineContext)!=null&&a._getVertexShaderCode()&&([d,c]=this._getShaderCodeAndErrorLine(this._pipelineContext._getVertexShaderCode(),this._compilationError,!1),d&&(ee.Error("Vertex code:"),ee.Error(d))),(o=this._pipelineContext)!=null&&o._getFragmentShaderCode()&&([d,f]=this._getShaderCodeAndErrorLine((l=this._pipelineContext)==null?void 0:l._getFragmentShaderCode(),this._compilationError,!0),d&&(ee.Error("Fragment code:"),ee.Error(d))),c&&ee.Error(c),f&&ee.Error(f)}ee.Error("Error: "+this._compilationError);let s=()=>{this.onError&&this.onError(this,this._compilationError),this.onErrorObservable.notifyObservers(this),this._engine.onEffectErrorObservable.notifyObservers({effect:this,errors:this._compilationError})};t&&(this._pipelineContext=t,this._isReady=!0,s()),r?(this._pipelineContext=null,r.hasMoreFallbacks?(this._allFallbacksProcessed=!1,ee.Error("Trying next fallback."),this.defines=r.reduce(this.defines,this),this._prepareEffect()):(this._allFallbacksProcessed=!0,s(),this.onErrorObservable.clear(),this._fallbacks&&this._fallbacks.unBindMesh())):(this._allFallbacksProcessed=!0,t||s())}get isSupported(){return this._compilationError===""}_bindTexture(e,t){this._engine._bindTexture(this._samplers[e],t,e)}setTexture(e,t){this._engine.setTexture(this._samplers[e],this._uniforms[e],t,e)}setTextureArray(e,t){let i=e+"Ex";if(this._samplerList.indexOf(i+"0")===-1){let r=this._samplerList.indexOf(e);for(let a=1;a0||this._isDisposed||(this._onReleaseEffectsObserver&&(this._engine.onReleaseEffectsObservable.remove(this._onReleaseEffectsObserver),this._onReleaseEffectsObserver=null),this._pipelineContext&&xA(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(A.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(A.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};or.LogShaderCodeOnCompilationError=!0;or.PersistentMode=!1;or.AutomaticallyClearCodeCache=!1;or._UniqueIdSeed=0;or._BaseCache={};or.ShadersStore=A.ShadersStore;or.IncludesShadersStore=A.IncludesShadersStore});var as,iC=I(()=>{as=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{ba();Er=class{static get Now(){return ur()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var bA,pU=I(()=>{bA=class{constructor(e=!0){this._isDepthTestDirty=!1,this._isDepthMaskDirty=!1,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!1,this._isFrontFaceDirty=!1,e&&this.reset()}get isDirty(){return this._isDepthFuncDirty||this._isDepthTestDirty||this._isDepthMaskDirty||this._isCullFaceDirty||this._isCullDirty||this._isZOffsetDirty||this._isFrontFaceDirty}get zOffset(){return this._zOffset}set zOffset(e){this._zOffset!==e&&(this._zOffset=e,this._isZOffsetDirty=!0)}get zOffsetUnits(){return this._zOffsetUnits}set zOffsetUnits(e){this._zOffsetUnits!==e&&(this._zOffsetUnits=e,this._isZOffsetDirty=!0)}get cullFace(){return this._cullFace}set cullFace(e){this._cullFace!==e&&(this._cullFace=e,this._isCullFaceDirty=!0)}get cull(){return this._cull}set cull(e){this._cull!==e&&(this._cull=e,this._isCullDirty=!0)}get depthFunc(){return this._depthFunc}set depthFunc(e){this._depthFunc!==e&&(this._depthFunc=e,this._isDepthFuncDirty=!0)}get depthMask(){return this._depthMask}set depthMask(e){this._depthMask!==e&&(this._depthMask=e,this._isDepthMaskDirty=!0)}get depthTest(){return this._depthTest}set depthTest(e){this._depthTest!==e&&(this._depthTest=e,this._isDepthTestDirty=!0)}get frontFace(){return this._frontFace}set frontFace(e){this._frontFace!==e&&(this._frontFace=e,this._isFrontFaceDirty=!0)}reset(){this._depthMask=!0,this._depthTest=!0,this._depthFunc=null,this._cullFace=null,this._cull=null,this._zOffset=0,this._zOffsetUnits=0,this._frontFace=null,this._isDepthTestDirty=!0,this._isDepthMaskDirty=!0,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!0,this._isFrontFaceDirty=!1}apply(e){this.isDirty&&(this._isCullDirty&&(this.cull?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this._isCullDirty=!1),this._isCullFaceDirty&&(e.cullFace(this.cullFace),this._isCullFaceDirty=!1),this._isDepthMaskDirty&&(e.depthMask(this.depthMask),this._isDepthMaskDirty=!1),this._isDepthTestDirty&&(this.depthTest?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this._isDepthTestDirty=!1),this._isDepthFuncDirty&&(e.depthFunc(this.depthFunc),this._isDepthFuncDirty=!1),this._isZOffsetDirty&&(this.zOffset||this.zOffsetUnits?(e.enable(e.POLYGON_OFFSET_FILL),e.polygonOffset(this.zOffset,this.zOffsetUnits)):e.disable(e.POLYGON_OFFSET_FILL),this._isZOffsetDirty=!1),this._isFrontFaceDirty&&(e.frontFace(this.frontFace),this._isFrontFaceDirty=!1))}}});var MA,_U=I(()=>{MA=class{get isDirty(){return this._isStencilTestDirty||this._isStencilMaskDirty||this._isStencilFuncDirty||this._isStencilOpDirty}get func(){return this._func}set func(e){this._func!==e&&(this._func=e,this._isStencilFuncDirty=!0)}get backFunc(){return this._func}set backFunc(e){this._backFunc!==e&&(this._backFunc=e,this._isStencilFuncDirty=!0)}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef!==e&&(this._funcRef=e,this._isStencilFuncDirty=!0)}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask!==e&&(this._funcMask=e,this._isStencilFuncDirty=!0)}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail!==e&&(this._opStencilFail=e,this._isStencilOpDirty=!0)}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail!==e&&(this._opDepthFail=e,this._isStencilOpDirty=!0)}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass!==e&&(this._opStencilDepthPass=e,this._isStencilOpDirty=!0)}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail!==e&&(this._backOpStencilFail=e,this._isStencilOpDirty=!0)}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail!==e&&(this._backOpDepthFail=e,this._isStencilOpDirty=!0)}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass!==e&&(this._backOpStencilDepthPass=e,this._isStencilOpDirty=!0)}get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this._isStencilMaskDirty=!0)}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this._isStencilTestDirty=!0)}constructor(e=!0){this._isStencilTestDirty=!1,this._isStencilMaskDirty=!1,this._isStencilFuncDirty=!1,this._isStencilOpDirty=!1,this.useStencilGlobalOnly=!1,e&&this.reset()}reset(){var e;this.stencilMaterial=void 0,(e=this.stencilGlobal)==null||e.reset(),this._isStencilTestDirty=!0,this._isStencilMaskDirty=!0,this._isStencilFuncDirty=!0,this._isStencilOpDirty=!0}apply(e){var i;if(!e)return;let t=!this.useStencilGlobalOnly&&!!((i=this.stencilMaterial)!=null&&i.enabled);this.enabled=t?this.stencilMaterial.enabled:this.stencilGlobal.enabled,this.func=t?this.stencilMaterial.func:this.stencilGlobal.func,this.backFunc=t?this.stencilMaterial.backFunc:this.stencilGlobal.backFunc,this.funcRef=t?this.stencilMaterial.funcRef:this.stencilGlobal.funcRef,this.funcMask=t?this.stencilMaterial.funcMask:this.stencilGlobal.funcMask,this.opStencilFail=t?this.stencilMaterial.opStencilFail:this.stencilGlobal.opStencilFail,this.opDepthFail=t?this.stencilMaterial.opDepthFail:this.stencilGlobal.opDepthFail,this.opStencilDepthPass=t?this.stencilMaterial.opStencilDepthPass:this.stencilGlobal.opStencilDepthPass,this.backOpStencilFail=t?this.stencilMaterial.backOpStencilFail:this.stencilGlobal.backOpStencilFail,this.backOpDepthFail=t?this.stencilMaterial.backOpDepthFail:this.stencilGlobal.backOpDepthFail,this.backOpStencilDepthPass=t?this.stencilMaterial.backOpStencilDepthPass:this.stencilGlobal.backOpStencilDepthPass,this.mask=t?this.stencilMaterial.mask:this.stencilGlobal.mask,this.isDirty&&(this._isStencilTestDirty&&(this.enabled?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this._isStencilTestDirty=!1),this._isStencilMaskDirty&&(e.stencilMask(this.mask),this._isStencilMaskDirty=!1),this._isStencilFuncDirty&&(e.stencilFuncSeparate(e.FRONT,this.func,this.funcRef,this.funcMask),e.stencilFuncSeparate(e.BACK,this.backFunc,this.funcRef,this.funcMask),this._isStencilFuncDirty=!1),this._isStencilOpDirty&&(e.stencilOpSeparate(e.FRONT,this.opStencilFail,this.opDepthFail,this.opStencilDepthPass),e.stencilOpSeparate(e.BACK,this.backOpStencilFail,this.backOpDepthFail,this.backOpStencilDepthPass),this._isStencilOpDirty=!1))}}});var Qd,gU=I(()=>{Qd=class n{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=n.ALWAYS,this.opStencilFail=n.KEEP,this.opDepthFail=n.KEEP,this.opStencilDepthPass=n.REPLACE,this.backFunc=n.ALWAYS,this.backOpStencilFail=n.KEEP,this.backOpDepthFail=n.KEEP,this.backOpStencilDepthPass=n.REPLACE}get stencilFunc(){return this.func}set stencilFunc(e){this.func=e}get stencilBackFunc(){return this.backFunc}set stencilBackFunc(e){this.backFunc=e}get stencilFuncRef(){return this.funcRef}set stencilFuncRef(e){this.funcRef=e}get stencilFuncMask(){return this.funcMask}set stencilFuncMask(e){this.funcMask=e}get stencilOpStencilFail(){return this.opStencilFail}set stencilOpStencilFail(e){this.opStencilFail=e}get stencilOpDepthFail(){return this.opDepthFail}set stencilOpDepthFail(e){this.opDepthFail=e}get stencilOpStencilDepthPass(){return this.opStencilDepthPass}set stencilOpStencilDepthPass(e){this.opStencilDepthPass=e}get stencilBackOpStencilFail(){return this.backOpStencilFail}set stencilBackOpStencilFail(e){this.backOpStencilFail=e}get stencilBackOpDepthFail(){return this.backOpDepthFail}set stencilBackOpDepthFail(e){this.backOpDepthFail=e}get stencilBackOpStencilDepthPass(){return this.backOpStencilDepthPass}set stencilBackOpStencilDepthPass(e){this.backOpStencilDepthPass=e}get stencilMask(){return this.mask}set stencilMask(e){this.mask=e}get stencilTest(){return this.enabled}set stencilTest(e){this.enabled=e}};Qd.ALWAYS=519;Qd.KEEP=7680;Qd.REPLACE=7681});var nm,rC=I(()=>{nm=class{constructor(e){this._supportBlendParametersPerTarget=e,this._blendFunctionParameters=new Array(32),this._blendEquationParameters=new Array(16),this._blendConstants=new Array(4),this._isBlendConstantsDirty=!1,this._alphaBlend=Array(8).fill(!1),this._numTargetEnabled=0,this._isAlphaBlendDirty=!1,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this.reset()}get isDirty(){return this._isAlphaBlendDirty||this._isBlendFunctionParametersDirty||this._isBlendEquationParametersDirty}get alphaBlend(){return this._numTargetEnabled>0}set alphaBlend(e){this.setAlphaBlend(e)}setAlphaBlend(e,t=0){this._alphaBlend[t]!==e&&(e?this._numTargetEnabled++:this._numTargetEnabled--,this._alphaBlend[t]=e,this._isAlphaBlendDirty=!0)}setAlphaBlendConstants(e,t,i,r){this._blendConstants[0]===e&&this._blendConstants[1]===t&&this._blendConstants[2]===i&&this._blendConstants[3]===r||(this._blendConstants[0]=e,this._blendConstants[1]=t,this._blendConstants[2]=i,this._blendConstants[3]=r,this._isBlendConstantsDirty=!0)}setAlphaBlendFunctionParameters(e,t,i,r,s=0){let a=s*4;this._blendFunctionParameters[a+0]===e&&this._blendFunctionParameters[a+1]===t&&this._blendFunctionParameters[a+2]===i&&this._blendFunctionParameters[a+3]===r||(this._blendFunctionParameters[a+0]=e,this._blendFunctionParameters[a+1]=t,this._blendFunctionParameters[a+2]=i,this._blendFunctionParameters[a+3]=r,this._isBlendFunctionParametersDirty=!0)}setAlphaEquationParameters(e,t,i=0){let r=i*2;this._blendEquationParameters[r+0]===e&&this._blendEquationParameters[r+1]===t||(this._blendEquationParameters[r+0]=e,this._blendEquationParameters[r+1]=t,this._isBlendEquationParametersDirty=!0)}reset(){this._alphaBlend.fill(!1),this._numTargetEnabled=0,this._blendFunctionParameters.fill(null),this._blendEquationParameters.fill(null),this._blendConstants[0]=null,this._blendConstants[1]=null,this._blendConstants[2]=null,this._blendConstants[3]=null,this._isAlphaBlendDirty=!0,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this._isBlendConstantsDirty=!1}apply(e,t=1){if(!this.isDirty)return;if(this._isBlendConstantsDirty&&(e.blendColor(this._blendConstants[0],this._blendConstants[1],this._blendConstants[2],this._blendConstants[3]),this._isBlendConstantsDirty=!1),t===1||!this._supportBlendParametersPerTarget){this._isAlphaBlendDirty&&(this._alphaBlend[0]?e.enable(e.BLEND):e.disable(e.BLEND),this._isAlphaBlendDirty=!1),this._isBlendFunctionParametersDirty&&(e.blendFuncSeparate(this._blendFunctionParameters[0],this._blendFunctionParameters[1],this._blendFunctionParameters[2],this._blendFunctionParameters[3]),this._isBlendFunctionParametersDirty=!1),this._isBlendEquationParametersDirty&&(e.blendEquationSeparate(this._blendEquationParameters[0],this._blendEquationParameters[1]),this._isBlendEquationParametersDirty=!1);return}let i=e;if(this._isAlphaBlendDirty){for(let r=0;r{hi();Zd();Ni();Pt();iC();Yl();pU();_U();gU();rC();un();Os();ba();mf();Ie=class n{get frameId(){return this._frameId}get isWebGPU(){return this._isWebGPU}_getShaderProcessor(e){return this._shaderProcessor}_resetAlphaMode(){this._alphaMode.fill(-1),this._alphaEquation.fill(-1)}get shaderPlatformName(){return this._shaderPlatformName}_clearEmptyResources(){this._emptyTexture=null,this._emptyCubeTexture=null,this._emptyTexture3D=null,this._emptyTexture2DArray=null}get useReverseDepthBuffer(){return this._useReverseDepthBuffer}set useReverseDepthBuffer(e){e!==this._useReverseDepthBuffer&&(this._useReverseDepthBuffer=e,e?this._depthCullingState.depthFunc=518:this._depthCullingState.depthFunc=515)}setColorWrite(e){e!==this._colorWrite&&(this._colorWriteChanged=!0,this._colorWrite=e)}getColorWrite(){return this._colorWrite}get depthCullingState(){return this._depthCullingState}get alphaState(){return this._alphaState}get stencilState(){return this._stencilState}get stencilStateComposer(){return this._stencilStateComposer}_getGlobalDefines(e){if(e){this.isNDCHalfZRange?e.IS_NDC_HALF_ZRANGE="":delete e.IS_NDC_HALF_ZRANGE,this.useReverseDepthBuffer?e.USE_REVERSE_DEPTHBUFFER="":delete e.USE_REVERSE_DEPTHBUFFER,this.useExactSrgbConversions?e.USE_EXACT_SRGB_CONVERSIONS="":delete e.USE_EXACT_SRGB_CONVERSIONS;return}else{let t="";return this.isNDCHalfZRange&&(t+="#define IS_NDC_HALF_ZRANGE"),this.useReverseDepthBuffer&&(t&&(t+=` +`+this.defines),n.LogShaderCodeOnCompilationError){let c=null,f=null,d;(a=this._pipelineContext)!=null&&a._getVertexShaderCode()&&([d,c]=this._getShaderCodeAndErrorLine(this._pipelineContext._getVertexShaderCode(),this._compilationError,!1),d&&(ee.Error("Vertex code:"),ee.Error(d))),(o=this._pipelineContext)!=null&&o._getFragmentShaderCode()&&([d,f]=this._getShaderCodeAndErrorLine((l=this._pipelineContext)==null?void 0:l._getFragmentShaderCode(),this._compilationError,!0),d&&(ee.Error("Fragment code:"),ee.Error(d))),c&&ee.Error(c),f&&ee.Error(f)}ee.Error("Error: "+this._compilationError);let s=()=>{this.onError&&this.onError(this,this._compilationError),this.onErrorObservable.notifyObservers(this),this._engine.onEffectErrorObservable.notifyObservers({effect:this,errors:this._compilationError})};t&&(this._pipelineContext=t,this._isReady=!0,s()),r?(this._pipelineContext=null,r.hasMoreFallbacks?(this._allFallbacksProcessed=!1,ee.Error("Trying next fallback."),this.defines=r.reduce(this.defines,this),this._prepareEffect()):(this._allFallbacksProcessed=!0,s(),this.onErrorObservable.clear(),this._fallbacks&&this._fallbacks.unBindMesh())):(this._allFallbacksProcessed=!0,t||s())}get isSupported(){return this._compilationError===""}_bindTexture(e,t){this._engine._bindTexture(this._samplers[e],t,e)}setTexture(e,t){this._engine.setTexture(this._samplers[e],this._uniforms[e],t,e)}setTextureArray(e,t){let i=e+"Ex";if(this._samplerList.indexOf(i+"0")===-1){let r=this._samplerList.indexOf(e);for(let a=1;a0||this._isDisposed||(this._onReleaseEffectsObserver&&(this._engine.onReleaseEffectsObservable.remove(this._onReleaseEffectsObserver),this._onReleaseEffectsObserver=null),this._pipelineContext&&bA(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(A.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(A.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};or.LogShaderCodeOnCompilationError=!0;or.PersistentMode=!1;or.AutomaticallyClearCodeCache=!1;or._UniqueIdSeed=0;or._BaseCache={};or.ShadersStore=A.ShadersStore;or.IncludesShadersStore=A.IncludesShadersStore});var as,sC=I(()=>{as=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{ba();Er=class{static get Now(){return ur()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var IA,vU=I(()=>{IA=class{constructor(e=!0){this._isDepthTestDirty=!1,this._isDepthMaskDirty=!1,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!1,this._isFrontFaceDirty=!1,e&&this.reset()}get isDirty(){return this._isDepthFuncDirty||this._isDepthTestDirty||this._isDepthMaskDirty||this._isCullFaceDirty||this._isCullDirty||this._isZOffsetDirty||this._isFrontFaceDirty}get zOffset(){return this._zOffset}set zOffset(e){this._zOffset!==e&&(this._zOffset=e,this._isZOffsetDirty=!0)}get zOffsetUnits(){return this._zOffsetUnits}set zOffsetUnits(e){this._zOffsetUnits!==e&&(this._zOffsetUnits=e,this._isZOffsetDirty=!0)}get cullFace(){return this._cullFace}set cullFace(e){this._cullFace!==e&&(this._cullFace=e,this._isCullFaceDirty=!0)}get cull(){return this._cull}set cull(e){this._cull!==e&&(this._cull=e,this._isCullDirty=!0)}get depthFunc(){return this._depthFunc}set depthFunc(e){this._depthFunc!==e&&(this._depthFunc=e,this._isDepthFuncDirty=!0)}get depthMask(){return this._depthMask}set depthMask(e){this._depthMask!==e&&(this._depthMask=e,this._isDepthMaskDirty=!0)}get depthTest(){return this._depthTest}set depthTest(e){this._depthTest!==e&&(this._depthTest=e,this._isDepthTestDirty=!0)}get frontFace(){return this._frontFace}set frontFace(e){this._frontFace!==e&&(this._frontFace=e,this._isFrontFaceDirty=!0)}reset(){this._depthMask=!0,this._depthTest=!0,this._depthFunc=null,this._cullFace=null,this._cull=null,this._zOffset=0,this._zOffsetUnits=0,this._frontFace=null,this._isDepthTestDirty=!0,this._isDepthMaskDirty=!0,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!0,this._isFrontFaceDirty=!1}apply(e){this.isDirty&&(this._isCullDirty&&(this.cull?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this._isCullDirty=!1),this._isCullFaceDirty&&(e.cullFace(this.cullFace),this._isCullFaceDirty=!1),this._isDepthMaskDirty&&(e.depthMask(this.depthMask),this._isDepthMaskDirty=!1),this._isDepthTestDirty&&(this.depthTest?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this._isDepthTestDirty=!1),this._isDepthFuncDirty&&(e.depthFunc(this.depthFunc),this._isDepthFuncDirty=!1),this._isZOffsetDirty&&(this.zOffset||this.zOffsetUnits?(e.enable(e.POLYGON_OFFSET_FILL),e.polygonOffset(this.zOffset,this.zOffsetUnits)):e.disable(e.POLYGON_OFFSET_FILL),this._isZOffsetDirty=!1),this._isFrontFaceDirty&&(e.frontFace(this.frontFace),this._isFrontFaceDirty=!1))}}});var yA,EU=I(()=>{yA=class{get isDirty(){return this._isStencilTestDirty||this._isStencilMaskDirty||this._isStencilFuncDirty||this._isStencilOpDirty}get func(){return this._func}set func(e){this._func!==e&&(this._func=e,this._isStencilFuncDirty=!0)}get backFunc(){return this._func}set backFunc(e){this._backFunc!==e&&(this._backFunc=e,this._isStencilFuncDirty=!0)}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef!==e&&(this._funcRef=e,this._isStencilFuncDirty=!0)}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask!==e&&(this._funcMask=e,this._isStencilFuncDirty=!0)}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail!==e&&(this._opStencilFail=e,this._isStencilOpDirty=!0)}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail!==e&&(this._opDepthFail=e,this._isStencilOpDirty=!0)}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass!==e&&(this._opStencilDepthPass=e,this._isStencilOpDirty=!0)}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail!==e&&(this._backOpStencilFail=e,this._isStencilOpDirty=!0)}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail!==e&&(this._backOpDepthFail=e,this._isStencilOpDirty=!0)}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass!==e&&(this._backOpStencilDepthPass=e,this._isStencilOpDirty=!0)}get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this._isStencilMaskDirty=!0)}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this._isStencilTestDirty=!0)}constructor(e=!0){this._isStencilTestDirty=!1,this._isStencilMaskDirty=!1,this._isStencilFuncDirty=!1,this._isStencilOpDirty=!1,this.useStencilGlobalOnly=!1,e&&this.reset()}reset(){var e;this.stencilMaterial=void 0,(e=this.stencilGlobal)==null||e.reset(),this._isStencilTestDirty=!0,this._isStencilMaskDirty=!0,this._isStencilFuncDirty=!0,this._isStencilOpDirty=!0}apply(e){var i;if(!e)return;let t=!this.useStencilGlobalOnly&&!!((i=this.stencilMaterial)!=null&&i.enabled);this.enabled=t?this.stencilMaterial.enabled:this.stencilGlobal.enabled,this.func=t?this.stencilMaterial.func:this.stencilGlobal.func,this.backFunc=t?this.stencilMaterial.backFunc:this.stencilGlobal.backFunc,this.funcRef=t?this.stencilMaterial.funcRef:this.stencilGlobal.funcRef,this.funcMask=t?this.stencilMaterial.funcMask:this.stencilGlobal.funcMask,this.opStencilFail=t?this.stencilMaterial.opStencilFail:this.stencilGlobal.opStencilFail,this.opDepthFail=t?this.stencilMaterial.opDepthFail:this.stencilGlobal.opDepthFail,this.opStencilDepthPass=t?this.stencilMaterial.opStencilDepthPass:this.stencilGlobal.opStencilDepthPass,this.backOpStencilFail=t?this.stencilMaterial.backOpStencilFail:this.stencilGlobal.backOpStencilFail,this.backOpDepthFail=t?this.stencilMaterial.backOpDepthFail:this.stencilGlobal.backOpDepthFail,this.backOpStencilDepthPass=t?this.stencilMaterial.backOpStencilDepthPass:this.stencilGlobal.backOpStencilDepthPass,this.mask=t?this.stencilMaterial.mask:this.stencilGlobal.mask,this.isDirty&&(this._isStencilTestDirty&&(this.enabled?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this._isStencilTestDirty=!1),this._isStencilMaskDirty&&(e.stencilMask(this.mask),this._isStencilMaskDirty=!1),this._isStencilFuncDirty&&(e.stencilFuncSeparate(e.FRONT,this.func,this.funcRef,this.funcMask),e.stencilFuncSeparate(e.BACK,this.backFunc,this.funcRef,this.funcMask),this._isStencilFuncDirty=!1),this._isStencilOpDirty&&(e.stencilOpSeparate(e.FRONT,this.opStencilFail,this.opDepthFail,this.opStencilDepthPass),e.stencilOpSeparate(e.BACK,this.backOpStencilFail,this.backOpDepthFail,this.backOpStencilDepthPass),this._isStencilOpDirty=!1))}}});var Qd,SU=I(()=>{Qd=class n{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=n.ALWAYS,this.opStencilFail=n.KEEP,this.opDepthFail=n.KEEP,this.opStencilDepthPass=n.REPLACE,this.backFunc=n.ALWAYS,this.backOpStencilFail=n.KEEP,this.backOpDepthFail=n.KEEP,this.backOpStencilDepthPass=n.REPLACE}get stencilFunc(){return this.func}set stencilFunc(e){this.func=e}get stencilBackFunc(){return this.backFunc}set stencilBackFunc(e){this.backFunc=e}get stencilFuncRef(){return this.funcRef}set stencilFuncRef(e){this.funcRef=e}get stencilFuncMask(){return this.funcMask}set stencilFuncMask(e){this.funcMask=e}get stencilOpStencilFail(){return this.opStencilFail}set stencilOpStencilFail(e){this.opStencilFail=e}get stencilOpDepthFail(){return this.opDepthFail}set stencilOpDepthFail(e){this.opDepthFail=e}get stencilOpStencilDepthPass(){return this.opStencilDepthPass}set stencilOpStencilDepthPass(e){this.opStencilDepthPass=e}get stencilBackOpStencilFail(){return this.backOpStencilFail}set stencilBackOpStencilFail(e){this.backOpStencilFail=e}get stencilBackOpDepthFail(){return this.backOpDepthFail}set stencilBackOpDepthFail(e){this.backOpDepthFail=e}get stencilBackOpStencilDepthPass(){return this.backOpStencilDepthPass}set stencilBackOpStencilDepthPass(e){this.backOpStencilDepthPass=e}get stencilMask(){return this.mask}set stencilMask(e){this.mask=e}get stencilTest(){return this.enabled}set stencilTest(e){this.enabled=e}};Qd.ALWAYS=519;Qd.KEEP=7680;Qd.REPLACE=7681});var nm,aC=I(()=>{nm=class{constructor(e){this._supportBlendParametersPerTarget=e,this._blendFunctionParameters=new Array(32),this._blendEquationParameters=new Array(16),this._blendConstants=new Array(4),this._isBlendConstantsDirty=!1,this._alphaBlend=Array(8).fill(!1),this._numTargetEnabled=0,this._isAlphaBlendDirty=!1,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this.reset()}get isDirty(){return this._isAlphaBlendDirty||this._isBlendFunctionParametersDirty||this._isBlendEquationParametersDirty}get alphaBlend(){return this._numTargetEnabled>0}set alphaBlend(e){this.setAlphaBlend(e)}setAlphaBlend(e,t=0){this._alphaBlend[t]!==e&&(e?this._numTargetEnabled++:this._numTargetEnabled--,this._alphaBlend[t]=e,this._isAlphaBlendDirty=!0)}setAlphaBlendConstants(e,t,i,r){this._blendConstants[0]===e&&this._blendConstants[1]===t&&this._blendConstants[2]===i&&this._blendConstants[3]===r||(this._blendConstants[0]=e,this._blendConstants[1]=t,this._blendConstants[2]=i,this._blendConstants[3]=r,this._isBlendConstantsDirty=!0)}setAlphaBlendFunctionParameters(e,t,i,r,s=0){let a=s*4;this._blendFunctionParameters[a+0]===e&&this._blendFunctionParameters[a+1]===t&&this._blendFunctionParameters[a+2]===i&&this._blendFunctionParameters[a+3]===r||(this._blendFunctionParameters[a+0]=e,this._blendFunctionParameters[a+1]=t,this._blendFunctionParameters[a+2]=i,this._blendFunctionParameters[a+3]=r,this._isBlendFunctionParametersDirty=!0)}setAlphaEquationParameters(e,t,i=0){let r=i*2;this._blendEquationParameters[r+0]===e&&this._blendEquationParameters[r+1]===t||(this._blendEquationParameters[r+0]=e,this._blendEquationParameters[r+1]=t,this._isBlendEquationParametersDirty=!0)}reset(){this._alphaBlend.fill(!1),this._numTargetEnabled=0,this._blendFunctionParameters.fill(null),this._blendEquationParameters.fill(null),this._blendConstants[0]=null,this._blendConstants[1]=null,this._blendConstants[2]=null,this._blendConstants[3]=null,this._isAlphaBlendDirty=!0,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this._isBlendConstantsDirty=!1}apply(e,t=1){if(!this.isDirty)return;if(this._isBlendConstantsDirty&&(e.blendColor(this._blendConstants[0],this._blendConstants[1],this._blendConstants[2],this._blendConstants[3]),this._isBlendConstantsDirty=!1),t===1||!this._supportBlendParametersPerTarget){this._isAlphaBlendDirty&&(this._alphaBlend[0]?e.enable(e.BLEND):e.disable(e.BLEND),this._isAlphaBlendDirty=!1),this._isBlendFunctionParametersDirty&&(e.blendFuncSeparate(this._blendFunctionParameters[0],this._blendFunctionParameters[1],this._blendFunctionParameters[2],this._blendFunctionParameters[3]),this._isBlendFunctionParametersDirty=!1),this._isBlendEquationParametersDirty&&(e.blendEquationSeparate(this._blendEquationParameters[0],this._blendEquationParameters[1]),this._isBlendEquationParametersDirty=!1);return}let i=e;if(this._isAlphaBlendDirty){for(let r=0;r{hi();Zd();Ni();Pt();sC();Yl();vU();EU();SU();aC();un();Os();ba();mf();Ie=class n{get frameId(){return this._frameId}get isWebGPU(){return this._isWebGPU}_getShaderProcessor(e){return this._shaderProcessor}_resetAlphaMode(){this._alphaMode.fill(-1),this._alphaEquation.fill(-1)}get shaderPlatformName(){return this._shaderPlatformName}_clearEmptyResources(){this._emptyTexture=null,this._emptyCubeTexture=null,this._emptyTexture3D=null,this._emptyTexture2DArray=null}get useReverseDepthBuffer(){return this._useReverseDepthBuffer}set useReverseDepthBuffer(e){e!==this._useReverseDepthBuffer&&(this._useReverseDepthBuffer=e,e?this._depthCullingState.depthFunc=518:this._depthCullingState.depthFunc=515)}setColorWrite(e){e!==this._colorWrite&&(this._colorWriteChanged=!0,this._colorWrite=e)}getColorWrite(){return this._colorWrite}get depthCullingState(){return this._depthCullingState}get alphaState(){return this._alphaState}get stencilState(){return this._stencilState}get stencilStateComposer(){return this._stencilStateComposer}_getGlobalDefines(e){if(e){this.isNDCHalfZRange?e.IS_NDC_HALF_ZRANGE="":delete e.IS_NDC_HALF_ZRANGE,this.useReverseDepthBuffer?e.USE_REVERSE_DEPTHBUFFER="":delete e.USE_REVERSE_DEPTHBUFFER,this.useExactSrgbConversions?e.USE_EXACT_SRGB_CONVERSIONS="":delete e.USE_EXACT_SRGB_CONVERSIONS;return}else{let t="";return this.isNDCHalfZRange&&(t+="#define IS_NDC_HALF_ZRANGE"),this.useReverseDepthBuffer&&(t&&(t+=` `),t+="#define USE_REVERSE_DEPTHBUFFER"),this.useExactSrgbConversions&&(t&&(t+=` -`),t+="#define USE_EXACT_SRGB_CONVERSIONS"),t}}_rebuildInternalTextures(){let e=this._internalTexturesCache.slice();for(let t of e)t._rebuild()}_rebuildRenderTargetWrappers(){let e=this._renderTargetWrapperCache.slice();for(let t of e)t._rebuild()}_rebuildEffects(){for(let e in this._compiledEffects){let t=this._compiledEffects[e];t._pipelineContext=null,t._prepareEffect()}or.ResetCache()}_rebuildGraphicsResources(){var e;this.wipeCaches(!0),this._rebuildEffects(),(e=this._rebuildComputeEffects)==null||e.call(this),this._rebuildBuffers(),this._rebuildInternalTextures(),this._rebuildTextures(),this._rebuildRenderTargetWrappers(),this.wipeCaches(!0)}_flagContextRestored(){ee.Warn(this.name+" context successfully restored."),this.onContextRestoredObservable.notifyObservers(this),this._contextWasLost=!1}_restoreEngineAfterContextLost(e){setTimeout(()=>{this._clearEmptyResources();let t=this._depthCullingState.depthTest,i=this._depthCullingState.depthFunc,r=this._depthCullingState.depthMask,s=this._stencilState.stencilTest;e(),this._rebuildGraphicsResources(),this._depthCullingState.depthTest=t,this._depthCullingState.depthFunc=i,this._depthCullingState.depthMask=r,this._stencilState.stencilTest=s,this._flagContextRestored()},0)}get isDisposed(){return this._isDisposed}get snapshotRendering(){return!1}set snapshotRendering(e){}get snapshotRenderingMode(){return 0}set snapshotRenderingMode(e){}getClassName(){return"AbstractEngine"}get emptyTexture(){return this._emptyTexture||(this._emptyTexture=this.createRawTexture(new Uint8Array(4),1,1,5,!1,!1,1)),this._emptyTexture}get emptyTexture3D(){return this._emptyTexture3D||(this._emptyTexture3D=this.createRawTexture3D(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture3D}get emptyTexture2DArray(){return this._emptyTexture2DArray||(this._emptyTexture2DArray=this.createRawTexture2DArray(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture2DArray}get emptyCubeTexture(){if(!this._emptyCubeTexture){let e=new Uint8Array(4),t=[e,e,e,e,e,e];this._emptyCubeTexture=this.createRawCubeTexture(t,1,5,0,!1,!1,1)}return this._emptyCubeTexture}get activeRenderLoops(){return this._activeRenderLoops}stopRenderLoop(e){if(!e){this._activeRenderLoops.length=0,this._cancelFrame();return}let t=this._activeRenderLoops.indexOf(e);t>=0&&(this._activeRenderLoops.splice(t,1),this._activeRenderLoops.length==0&&this._cancelFrame())}_cancelFrame(){if(this._frameHandler!==0){let e=this._frameHandler;if(this._frameHandler=0,ur()){let{cancelAnimationFrame:t}=this.getHostWindow()||window;if(typeof t=="function")return t(e)}else if(typeof cancelAnimationFrame=="function")return cancelAnimationFrame(e);return clearTimeout(e)}}beginFrame(){this.onBeginFrameObservable.notifyObservers(this)}endFrame(){this._frameId++,this.onEndFrameObservable.notifyObservers(this)}get maxFPS(){return this._maxFPS}set maxFPS(e){if(this._maxFPS=e,e!==void 0){if(e<=0){this._minFrameTime=Number.MAX_VALUE;return}this._minFrameTime=1e3/e}}_isOverFrameTime(e){if(!e||this._maxFPS===void 0)return!1;let t=e-this._lastFrameTime;return this._lastFrameTime=e,this._renderAccumulator+=t,this._renderAccumulatorthis._minFrameTime&&(this._renderAccumulator=this._minFrameTime),!1)}_processFrame(e){if(this._frameHandler=0,!this._contextWasLost&&!this._isOverFrameTime(e)){let t=!0;(this.isDisposed||!this.renderEvenInBackground&&this._windowIsBackground)&&(t=!1),t&&(this.beginFrame(),!this.skipFrameRender&&!this._renderViews()&&this._renderFrame(),this.endFrame())}}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}_renderFrame(){for(let e=0;e-1?e.substring(T).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let y=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(S),S.url=e,S.generateMipMaps=!t,S.samplingMode=s,S.invertY=i,S._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(S._buffer=f);let C=null;a&&!d&&(C=S.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(S);let L=(w,G)=>{r&&r.removePendingData(S),e===E?(C&&S.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,S.invertY,r,s,null,o,l,c,f,S),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),S.onErrorObservable.notifyObservers({message:w,exception:G}),o&&o(w,G)):(ee.Warn(`Failed to load ${e}, falling back to ${E}`),this._createTextureBase(E,t,S.invertY,r,s,a,o,l,c,f,S,h,u,m,_,p))};if(y){let w=async G=>{(await y).loadData(G,S,(N,B,V,J,Q,te)=>{te?L("TextureLoader failed to load data"):l(S,R,r,{width:N,height:B},S.invertY,!V,J,()=>(Q(),!1),s)},_)};if(!f)this._loadFile(e,async G=>{try{await w(new Uint8Array(G))}catch(O){L("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(G,O)=>{L("Unable to load "+(G&&G.responseURL,O))});else{let G=async O=>{try{await w(O)}catch(N){L("Failed to parse texture data",N)}};f instanceof ArrayBuffer?G(new Uint8Array(f)):ArrayBuffer.isView(f)?G(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=G=>{v&&!this._doNotHandleContextLost&&(S._buffer=G),l(S,R,r,G,S.invertY,t,!1,c,s)};!g||x?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,L,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):typeof f=="string"||f instanceof ArrayBuffer||ArrayBuffer.isView(f)||f instanceof Blob?n._FileToolsLoadImage(f,w,L,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return S}_rebuildBuffers(){for(let e of this._uniformBuffers)e._rebuildAfterContextLost()}get _shouldUseHighPrecisionShader(){return!!(this._caps.highPrecisionShaderSupported&&this._highPrecisionShadersAllowed)}getHostDocument(){return this._renderingCanvas&&this._renderingCanvas.ownerDocument?this._renderingCanvas.ownerDocument:uf()?document:null}getLoadedTexturesCache(){return this._internalTexturesCache}clearInternalTexturesCache(){this._internalTexturesCache.length=0}getCaps(){return this._caps}resetTextureCache(){for(let e in this._boundTexturesCache)Object.prototype.hasOwnProperty.call(this._boundTexturesCache,e)&&(this._boundTexturesCache[e]=null);this._currentTextureChannel=-1}get name(){return this._name}set name(e){this._name=e}static get NpmPackage(){return"babylonjs@9.6.0"}static get Version(){return"9.6.0"}getRenderingCanvas(){return this._renderingCanvas}getAudioContext(){return this._audioContext}getAudioDestination(){return this._audioDestination}setHardwareScalingLevel(e){this._hardwareScalingLevel=e,this.resize()}getHardwareScalingLevel(){return this._hardwareScalingLevel}get doNotHandleContextLost(){return this._doNotHandleContextLost}set doNotHandleContextLost(e){this._doNotHandleContextLost=e}get isStencilEnable(){return this._isStencilEnable}getCreationOptions(){return this._creationOptions}constructor(e,t,i){var a,o,l,c,f,d,h,u,m,_;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new bA,this._stencilStateComposer=new MA,this._stencilState=new Qd,this._alphaState=new nm(!1),this._alphaMode=Array(8).fill(-1),this._alphaEquation=Array(8).fill(-1),this._activeRequests=[],this._badOS=!1,this._badDesktopOS=!1,this._compatibilityMode=!0,this._internalTexturesCache=new Array,this._currentRenderTarget=null,this._boundTexturesCache={},this._activeChannel=0,this._currentTextureChannel=-1,this._viewportCached={x:0,y:0,z:0,w:0},this._isWebGPU=!1,this._enableGPUDebugMarkers=!1,this.onCanvasBlurObservable=new ie,this.onCanvasFocusObservable=new ie,this.onNewSceneAddedObservable=new ie,this.onResizeObservable=new ie,this.onCanvasPointerOutObservable=new ie,this.onEffectErrorObservable=new ie,this.disablePerformanceMonitorInBackground=!1,this.disableVertexArrayObjects=!1,this._frameId=0,this.hostInformation={isMobile:!1},this.isFullscreen=!1,this.enableOfflineSupport=!1,this.disableManifestCheck=!1,this.disableContextMenu=!0,this.currentRenderPassId=0,this.isPointerLock=!1,this.postProcesses=[],this.canvasTabIndex=1,this._contextWasLost=!1,this._useReverseDepthBuffer=!1,this.isNDCHalfZRange=!1,this.hasOriginBottomLeft=!0,this._renderTargetWrapperCache=new Array,this._compiledEffects={},this._isDisposed=!1,this.scenes=[],this._virtualScenes=new Array,this.onBeforeTextureInitObservable=new ie,this.renderEvenInBackground=!0,this.preventCacheWipeBetweenFrames=!1,this._frameHandler=0,this._activeRenderLoops=new Array,this._windowIsBackground=!1,this._boundRenderFunction=p=>this._renderLoop(p),this._lastFrameTime=0,this._renderAccumulator=0,this.skipFrameRender=!1,this.onBeforeShaderCompilationObservable=new ie,this.onAfterShaderCompilationObservable=new ie,this.onBeginFrameObservable=new ie,this.onEndFrameObservable=new ie,this._transformTextureUrl=null,this._uniformBuffers=new Array,this._storageBuffers=new Array,this._highPrecisionShadersAllowed=!0,this.onContextLostObservable=new ie,this.onContextRestoredObservable=new ie,this._name="",this.premultipliedAlpha=!0,this.adaptToDeviceRatio=!1,this._lastDevicePixelRatio=1,this._doNotHandleContextLost=!1,this.cullBackFaces=null,this._renderPassNames=["main"],this._fps=60,this._deltaTime=0,this._deterministicLockstep=!1,this._lockstepMaxSteps=4,this._timeStep=1/60,this.onDisposeObservable=new ie,this.onReleaseEffectsObservable=new ie,Oe.Instances.push(this),this.startTime=Er.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,as.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),Xl()&&navigator.userAgent&&(this._badOS=/iPad/i.test(navigator.userAgent)||/iPhone/i.test(navigator.userAgent),this._badDesktopOS=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),this.adaptToDeviceRatio=i!=null?i:!1,t.antialias=e!=null?e:t.antialias,t.deterministicLockstep=(a=t.deterministicLockstep)!=null?a:!1,t.lockstepMaxSteps=(o=t.lockstepMaxSteps)!=null?o:4,t.timeStep=(l=t.timeStep)!=null?l:1/60,t.stencil=(c=t.stencil)!=null?c:!0,this._audioContext=(d=(f=t.audioEngineOptions)==null?void 0:f.audioContext)!=null?d:null,this._audioDestination=(u=(h=t.audioEngineOptions)==null?void 0:h.audioDestination)!=null?u:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(_=t.useExactSrgbConversions)!=null?_:!1;let r=ur()&&window.devicePixelRatio||1,s=t.limitDeviceRatio||r;i=i||t.adaptToDeviceRatio||!1,this._hardwareScalingLevel=i?1/Math.min(s,r):1,this._lastDevicePixelRatio=r,this._creationOptions=t}resize(e=!1){var r,s;let t,i;if(this.adaptToDeviceRatio){let a=ur()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(ur()&&uf())if(this._renderingCanvas){let a=(s=(r=this._renderingCanvas).getBoundingClientRect)==null?void 0:s.call(r);t=this._renderingCanvas.clientWidth||(a==null?void 0:a.width)||this._renderingCanvas.width*this._hardwareScalingLevel||100,i=this._renderingCanvas.clientHeight||(a==null?void 0:a.height)||this._renderingCanvas.height*this._hardwareScalingLevel||100}else t=window.innerWidth,i=window.innerHeight;else t=this._renderingCanvas?this._renderingCanvas.width:100,i=this._renderingCanvas?this._renderingCanvas.height:100;this.setSize(t/this._hardwareScalingLevel,i/this._hardwareScalingLevel,e)}setSize(e,t,i=!1){if(!this._renderingCanvas||(e=e|0,t=t|0,!i&&this._renderingCanvas.width===e&&this._renderingCanvas.height===t))return!1;if(this._renderingCanvas.width=e,this._renderingCanvas.height=t,this.scenes){for(let r=0;r{let e=navigator.userAgent;this.hostInformation.isMobile=e.indexOf("Mobile")!==-1||e.indexOf("Mac")!==-1&&uf()&&"ontouchend"in document},this._checkForMobile(),ur()&&window.addEventListener("resize",this._checkForMobile))}createVideoElement(e){return document.createElement("video")}_reportDrawCall(e=1){var t;(t=this._drawCalls)==null||t.addCount(e,!1)}getFps(){return this._fps}getDeltaTime(){return this._deltaTime}isDeterministicLockStep(){return this._deterministicLockstep}getLockstepMaxSteps(){return this._lockstepMaxSteps}getTimeStep(){return this._timeStep*1e3}_createImageBitmapFromSource(e,t){throw new Error("createImageBitmapFromSource is not implemented")}createImageBitmap(e,t){return createImageBitmap(e,t)}resizeImageBitmap(e,t,i){throw new Error("resizeImageBitmap is not implemented")}getFontOffset(e){throw new Error("getFontOffset is not implemented")}static _CreateCanvas(e,t){if(typeof document=="undefined")return new OffscreenCanvas(e,t);let i=document.createElement("canvas");return i.width=e,i.height=t,i}createCanvas(e,t){return n._CreateCanvas(e,t)}static _FileToolsLoadImage(e,t,i,r,s,a,o){throw Qe("FileTools")}_loadFile(e,t,i,r,s,a){let o=cA(e,t,i,r,s,a);return this._activeRequests.push(o),o.onCompleteObservable.add(()=>{let l=this._activeRequests.indexOf(o);l!==-1&&this._activeRequests.splice(l,1)}),o}static _FileToolsLoadFile(e,t,i,r,s,a){if(tm.loadFile)return tm.loadFile(e,t,i,r,s,a);throw Qe("FileTools")}dispose(){var t;for(this.releaseEffects(),this._isDisposed=!0,this.stopRenderLoop(),this._emptyTexture&&(this._releaseTexture(this._emptyTexture),this._emptyTexture=null),this._emptyCubeTexture&&(this._releaseTexture(this._emptyCubeTexture),this._emptyCubeTexture=null),this._renderingCanvas=null,this.onBeforeTextureInitObservable&&this.onBeforeTextureInitObservable.clear();this.postProcesses.length;)this.postProcesses[0].dispose();for(;this.scenes.length;)this.scenes[0].dispose();for(;this._virtualScenes.length;)this._virtualScenes[0].dispose();(t=this.releaseComputeEffects)==null||t.call(this),or.ResetCache();for(let i of this._activeRequests)i.abort();this._boundRenderFunction=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onResizeObservable.clear(),this.onCanvasBlurObservable.clear(),this.onCanvasFocusObservable.clear(),this.onCanvasPointerOutObservable.clear(),this.onNewSceneAddedObservable.clear(),this.onEffectErrorObservable.clear(),ur()&&window.removeEventListener("resize",this._checkForMobile);let e=Oe.Instances.indexOf(this);e>=0&&Oe.Instances.splice(e,1),Oe.Instances.length||(Oe.OnEnginesDisposedObservable.notifyObservers(this),Oe.OnEnginesDisposedObservable.clear()),this.onBeginFrameObservable.clear(),this.onEndFrameObservable.clear()}static DefaultLoadingScreenFactory(e){throw Qe("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var yA,EU=I(()=>{yA=class{constructor(){this.shaderLanguage=0}postProcessor(e,t,i,r,s){if(s.drawBuffersExtensionDisabled){let a=/#extension.+GL_EXT_draw_buffers.+(enable|require)/g;e=e.replace(a,"")}return e}}});var Yoe,CA,SU=I(()=>{Yoe=/(flat\s)?\s*varying\s*.*/,CA=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return Yoe.test(e)}varyingProcessor(e,t){return e.replace("varying",t?"in":"out")}postProcessor(e,t,i){let r=e.search(/#extension.+GL_EXT_draw_buffers.+require/)!==-1,s=/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;if(e=e.replace(s,""),e=e.replace(/texture2D\s*\(/g,"texture("),i){let a=e.search(/layout *\(location *= *0\) *out/g)!==-1,o=t.indexOf("#define DUAL_SOURCE_BLENDING")!==-1,l=o?`layout(location = 0, index = 0) out vec4 glFragColor; +`),t+="#define USE_EXACT_SRGB_CONVERSIONS"),t}}_rebuildInternalTextures(){let e=this._internalTexturesCache.slice();for(let t of e)t._rebuild()}_rebuildRenderTargetWrappers(){let e=this._renderTargetWrapperCache.slice();for(let t of e)t._rebuild()}_rebuildEffects(){for(let e in this._compiledEffects){let t=this._compiledEffects[e];t._pipelineContext=null,t._prepareEffect()}or.ResetCache()}_rebuildGraphicsResources(){var e;this.wipeCaches(!0),this._rebuildEffects(),(e=this._rebuildComputeEffects)==null||e.call(this),this._rebuildBuffers(),this._rebuildInternalTextures(),this._rebuildTextures(),this._rebuildRenderTargetWrappers(),this.wipeCaches(!0)}_flagContextRestored(){ee.Warn(this.name+" context successfully restored."),this.onContextRestoredObservable.notifyObservers(this),this._contextWasLost=!1}_restoreEngineAfterContextLost(e){setTimeout(()=>{this._clearEmptyResources();let t=this._depthCullingState.depthTest,i=this._depthCullingState.depthFunc,r=this._depthCullingState.depthMask,s=this._stencilState.stencilTest;e(),this._rebuildGraphicsResources(),this._depthCullingState.depthTest=t,this._depthCullingState.depthFunc=i,this._depthCullingState.depthMask=r,this._stencilState.stencilTest=s,this._flagContextRestored()},0)}get isDisposed(){return this._isDisposed}get snapshotRendering(){return!1}set snapshotRendering(e){}get snapshotRenderingMode(){return 0}set snapshotRenderingMode(e){}getClassName(){return"AbstractEngine"}get emptyTexture(){return this._emptyTexture||(this._emptyTexture=this.createRawTexture(new Uint8Array(4),1,1,5,!1,!1,1)),this._emptyTexture}get emptyTexture3D(){return this._emptyTexture3D||(this._emptyTexture3D=this.createRawTexture3D(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture3D}get emptyTexture2DArray(){return this._emptyTexture2DArray||(this._emptyTexture2DArray=this.createRawTexture2DArray(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture2DArray}get emptyCubeTexture(){if(!this._emptyCubeTexture){let e=new Uint8Array(4),t=[e,e,e,e,e,e];this._emptyCubeTexture=this.createRawCubeTexture(t,1,5,0,!1,!1,1)}return this._emptyCubeTexture}get activeRenderLoops(){return this._activeRenderLoops}stopRenderLoop(e){if(!e){this._activeRenderLoops.length=0,this._cancelFrame();return}let t=this._activeRenderLoops.indexOf(e);t>=0&&(this._activeRenderLoops.splice(t,1),this._activeRenderLoops.length==0&&this._cancelFrame())}_cancelFrame(){if(this._frameHandler!==0){let e=this._frameHandler;if(this._frameHandler=0,ur()){let{cancelAnimationFrame:t}=this.getHostWindow()||window;if(typeof t=="function")return t(e)}else if(typeof cancelAnimationFrame=="function")return cancelAnimationFrame(e);return clearTimeout(e)}}beginFrame(){this.onBeginFrameObservable.notifyObservers(this)}endFrame(){this._frameId++,this.onEndFrameObservable.notifyObservers(this)}get maxFPS(){return this._maxFPS}set maxFPS(e){if(this._maxFPS=e,e!==void 0){if(e<=0){this._minFrameTime=Number.MAX_VALUE;return}this._minFrameTime=1e3/e}}_isOverFrameTime(e){if(!e||this._maxFPS===void 0)return!1;let t=e-this._lastFrameTime;return this._lastFrameTime=e,this._renderAccumulator+=t,this._renderAccumulatorthis._minFrameTime&&(this._renderAccumulator=this._minFrameTime),!1)}_processFrame(e){if(this._frameHandler=0,!this._contextWasLost&&!this._isOverFrameTime(e)){let t=!0;(this.isDisposed||!this.renderEvenInBackground&&this._windowIsBackground)&&(t=!1),t&&(this.beginFrame(),!this.skipFrameRender&&!this._renderViews()&&this._renderFrame(),this.endFrame())}}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}_renderFrame(){for(let e=0;e-1?e.substring(T).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let y=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(S),S.url=e,S.generateMipMaps=!t,S.samplingMode=s,S.invertY=i,S._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(S._buffer=f);let C=null;a&&!d&&(C=S.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(S);let L=(w,G)=>{r&&r.removePendingData(S),e===E?(C&&S.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,S.invertY,r,s,null,o,l,c,f,S),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),S.onErrorObservable.notifyObservers({message:w,exception:G}),o&&o(w,G)):(ee.Warn(`Failed to load ${e}, falling back to ${E}`),this._createTextureBase(E,t,S.invertY,r,s,a,o,l,c,f,S,h,u,m,_,p))};if(y){let w=async G=>{(await y).loadData(G,S,(N,B,V,J,Q,te)=>{te?L("TextureLoader failed to load data"):l(S,R,r,{width:N,height:B},S.invertY,!V,J,()=>(Q(),!1),s)},_)};if(!f)this._loadFile(e,async G=>{try{await w(new Uint8Array(G))}catch(O){L("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(G,O)=>{L("Unable to load "+(G&&G.responseURL,O))});else{let G=async O=>{try{await w(O)}catch(N){L("Failed to parse texture data",N)}};f instanceof ArrayBuffer?G(new Uint8Array(f)):ArrayBuffer.isView(f)?G(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=G=>{v&&!this._doNotHandleContextLost&&(S._buffer=G),l(S,R,r,G,S.invertY,t,!1,c,s)};!g||x?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,L,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):typeof f=="string"||f instanceof ArrayBuffer||ArrayBuffer.isView(f)||f instanceof Blob?n._FileToolsLoadImage(f,w,L,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return S}_rebuildBuffers(){for(let e of this._uniformBuffers)e._rebuildAfterContextLost()}get _shouldUseHighPrecisionShader(){return!!(this._caps.highPrecisionShaderSupported&&this._highPrecisionShadersAllowed)}getHostDocument(){return this._renderingCanvas&&this._renderingCanvas.ownerDocument?this._renderingCanvas.ownerDocument:uf()?document:null}getLoadedTexturesCache(){return this._internalTexturesCache}clearInternalTexturesCache(){this._internalTexturesCache.length=0}getCaps(){return this._caps}resetTextureCache(){for(let e in this._boundTexturesCache)Object.prototype.hasOwnProperty.call(this._boundTexturesCache,e)&&(this._boundTexturesCache[e]=null);this._currentTextureChannel=-1}get name(){return this._name}set name(e){this._name=e}static get NpmPackage(){return"babylonjs@9.6.0"}static get Version(){return"9.6.0"}getRenderingCanvas(){return this._renderingCanvas}getAudioContext(){return this._audioContext}getAudioDestination(){return this._audioDestination}setHardwareScalingLevel(e){this._hardwareScalingLevel=e,this.resize()}getHardwareScalingLevel(){return this._hardwareScalingLevel}get doNotHandleContextLost(){return this._doNotHandleContextLost}set doNotHandleContextLost(e){this._doNotHandleContextLost=e}get isStencilEnable(){return this._isStencilEnable}getCreationOptions(){return this._creationOptions}constructor(e,t,i){var a,o,l,c,f,d,h,u,m,_;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new IA,this._stencilStateComposer=new yA,this._stencilState=new Qd,this._alphaState=new nm(!1),this._alphaMode=Array(8).fill(-1),this._alphaEquation=Array(8).fill(-1),this._activeRequests=[],this._badOS=!1,this._badDesktopOS=!1,this._compatibilityMode=!0,this._internalTexturesCache=new Array,this._currentRenderTarget=null,this._boundTexturesCache={},this._activeChannel=0,this._currentTextureChannel=-1,this._viewportCached={x:0,y:0,z:0,w:0},this._isWebGPU=!1,this._enableGPUDebugMarkers=!1,this.onCanvasBlurObservable=new ie,this.onCanvasFocusObservable=new ie,this.onNewSceneAddedObservable=new ie,this.onResizeObservable=new ie,this.onCanvasPointerOutObservable=new ie,this.onEffectErrorObservable=new ie,this.disablePerformanceMonitorInBackground=!1,this.disableVertexArrayObjects=!1,this._frameId=0,this.hostInformation={isMobile:!1},this.isFullscreen=!1,this.enableOfflineSupport=!1,this.disableManifestCheck=!1,this.disableContextMenu=!0,this.currentRenderPassId=0,this.isPointerLock=!1,this.postProcesses=[],this.canvasTabIndex=1,this._contextWasLost=!1,this._useReverseDepthBuffer=!1,this.isNDCHalfZRange=!1,this.hasOriginBottomLeft=!0,this._renderTargetWrapperCache=new Array,this._compiledEffects={},this._isDisposed=!1,this.scenes=[],this._virtualScenes=new Array,this.onBeforeTextureInitObservable=new ie,this.renderEvenInBackground=!0,this.preventCacheWipeBetweenFrames=!1,this._frameHandler=0,this._activeRenderLoops=new Array,this._windowIsBackground=!1,this._boundRenderFunction=p=>this._renderLoop(p),this._lastFrameTime=0,this._renderAccumulator=0,this.skipFrameRender=!1,this.onBeforeShaderCompilationObservable=new ie,this.onAfterShaderCompilationObservable=new ie,this.onBeginFrameObservable=new ie,this.onEndFrameObservable=new ie,this._transformTextureUrl=null,this._uniformBuffers=new Array,this._storageBuffers=new Array,this._highPrecisionShadersAllowed=!0,this.onContextLostObservable=new ie,this.onContextRestoredObservable=new ie,this._name="",this.premultipliedAlpha=!0,this.adaptToDeviceRatio=!1,this._lastDevicePixelRatio=1,this._doNotHandleContextLost=!1,this.cullBackFaces=null,this._renderPassNames=["main"],this._fps=60,this._deltaTime=0,this._deterministicLockstep=!1,this._lockstepMaxSteps=4,this._timeStep=1/60,this.onDisposeObservable=new ie,this.onReleaseEffectsObservable=new ie,Oe.Instances.push(this),this.startTime=Er.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,as.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),Xl()&&navigator.userAgent&&(this._badOS=/iPad/i.test(navigator.userAgent)||/iPhone/i.test(navigator.userAgent),this._badDesktopOS=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),this.adaptToDeviceRatio=i!=null?i:!1,t.antialias=e!=null?e:t.antialias,t.deterministicLockstep=(a=t.deterministicLockstep)!=null?a:!1,t.lockstepMaxSteps=(o=t.lockstepMaxSteps)!=null?o:4,t.timeStep=(l=t.timeStep)!=null?l:1/60,t.stencil=(c=t.stencil)!=null?c:!0,this._audioContext=(d=(f=t.audioEngineOptions)==null?void 0:f.audioContext)!=null?d:null,this._audioDestination=(u=(h=t.audioEngineOptions)==null?void 0:h.audioDestination)!=null?u:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(_=t.useExactSrgbConversions)!=null?_:!1;let r=ur()&&window.devicePixelRatio||1,s=t.limitDeviceRatio||r;i=i||t.adaptToDeviceRatio||!1,this._hardwareScalingLevel=i?1/Math.min(s,r):1,this._lastDevicePixelRatio=r,this._creationOptions=t}resize(e=!1){var r,s;let t,i;if(this.adaptToDeviceRatio){let a=ur()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(ur()&&uf())if(this._renderingCanvas){let a=(s=(r=this._renderingCanvas).getBoundingClientRect)==null?void 0:s.call(r);t=this._renderingCanvas.clientWidth||(a==null?void 0:a.width)||this._renderingCanvas.width*this._hardwareScalingLevel||100,i=this._renderingCanvas.clientHeight||(a==null?void 0:a.height)||this._renderingCanvas.height*this._hardwareScalingLevel||100}else t=window.innerWidth,i=window.innerHeight;else t=this._renderingCanvas?this._renderingCanvas.width:100,i=this._renderingCanvas?this._renderingCanvas.height:100;this.setSize(t/this._hardwareScalingLevel,i/this._hardwareScalingLevel,e)}setSize(e,t,i=!1){if(!this._renderingCanvas||(e=e|0,t=t|0,!i&&this._renderingCanvas.width===e&&this._renderingCanvas.height===t))return!1;if(this._renderingCanvas.width=e,this._renderingCanvas.height=t,this.scenes){for(let r=0;r{let e=navigator.userAgent;this.hostInformation.isMobile=e.indexOf("Mobile")!==-1||e.indexOf("Mac")!==-1&&uf()&&"ontouchend"in document},this._checkForMobile(),ur()&&window.addEventListener("resize",this._checkForMobile))}createVideoElement(e){return document.createElement("video")}_reportDrawCall(e=1){var t;(t=this._drawCalls)==null||t.addCount(e,!1)}getFps(){return this._fps}getDeltaTime(){return this._deltaTime}isDeterministicLockStep(){return this._deterministicLockstep}getLockstepMaxSteps(){return this._lockstepMaxSteps}getTimeStep(){return this._timeStep*1e3}_createImageBitmapFromSource(e,t){throw new Error("createImageBitmapFromSource is not implemented")}createImageBitmap(e,t){return createImageBitmap(e,t)}resizeImageBitmap(e,t,i){throw new Error("resizeImageBitmap is not implemented")}getFontOffset(e){throw new Error("getFontOffset is not implemented")}static _CreateCanvas(e,t){if(typeof document=="undefined")return new OffscreenCanvas(e,t);let i=document.createElement("canvas");return i.width=e,i.height=t,i}createCanvas(e,t){return n._CreateCanvas(e,t)}static _FileToolsLoadImage(e,t,i,r,s,a,o){throw Qe("FileTools")}_loadFile(e,t,i,r,s,a){let o=dA(e,t,i,r,s,a);return this._activeRequests.push(o),o.onCompleteObservable.add(()=>{let l=this._activeRequests.indexOf(o);l!==-1&&this._activeRequests.splice(l,1)}),o}static _FileToolsLoadFile(e,t,i,r,s,a){if(tm.loadFile)return tm.loadFile(e,t,i,r,s,a);throw Qe("FileTools")}dispose(){var t;for(this.releaseEffects(),this._isDisposed=!0,this.stopRenderLoop(),this._emptyTexture&&(this._releaseTexture(this._emptyTexture),this._emptyTexture=null),this._emptyCubeTexture&&(this._releaseTexture(this._emptyCubeTexture),this._emptyCubeTexture=null),this._renderingCanvas=null,this.onBeforeTextureInitObservable&&this.onBeforeTextureInitObservable.clear();this.postProcesses.length;)this.postProcesses[0].dispose();for(;this.scenes.length;)this.scenes[0].dispose();for(;this._virtualScenes.length;)this._virtualScenes[0].dispose();(t=this.releaseComputeEffects)==null||t.call(this),or.ResetCache();for(let i of this._activeRequests)i.abort();this._boundRenderFunction=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onResizeObservable.clear(),this.onCanvasBlurObservable.clear(),this.onCanvasFocusObservable.clear(),this.onCanvasPointerOutObservable.clear(),this.onNewSceneAddedObservable.clear(),this.onEffectErrorObservable.clear(),ur()&&window.removeEventListener("resize",this._checkForMobile);let e=Oe.Instances.indexOf(this);e>=0&&Oe.Instances.splice(e,1),Oe.Instances.length||(Oe.OnEnginesDisposedObservable.notifyObservers(this),Oe.OnEnginesDisposedObservable.clear()),this.onBeginFrameObservable.clear(),this.onEndFrameObservable.clear()}static DefaultLoadingScreenFactory(e){throw Qe("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var PA,AU=I(()=>{PA=class{constructor(){this.shaderLanguage=0}postProcessor(e,t,i,r,s){if(s.drawBuffersExtensionDisabled){let a=/#extension.+GL_EXT_draw_buffers.+(enable|require)/g;e=e.replace(a,"")}return e}}});var Qoe,DA,xU=I(()=>{Qoe=/(flat\s)?\s*varying\s*.*/,DA=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return Qoe.test(e)}varyingProcessor(e,t){return e.replace("varying",t?"in":"out")}postProcessor(e,t,i){let r=e.search(/#extension.+GL_EXT_draw_buffers.+require/)!==-1,s=/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;if(e=e.replace(s,""),e=e.replace(/texture2D\s*\(/g,"texture("),i){let a=e.search(/layout *\(location *= *0\) *out/g)!==-1,o=t.indexOf("#define DUAL_SOURCE_BLENDING")!==-1,l=o?`layout(location = 0, index = 0) out vec4 glFragColor; layout(location = 0, index = 1) out vec4 glFragColor2; `:`layout(location = 0) out vec4 glFragColor; `;o&&(e=`#extension GL_EXT_blend_func_extended : require `+e),e=e.replace(/texture2DLodEXT\s*\(/g,"textureLod("),e=e.replace(/textureCubeLodEXT\s*\(/g,"textureLod("),e=e.replace(/textureCube\s*\(/g,"texture("),e=e.replace(/gl_FragDepthEXT/g,"gl_FragDepth"),e=e.replace(/gl_FragColor/g,"glFragColor"),e=e.replace(/gl_FragData/g,"glFragData"),e=e.replace(/void\s+?main\s*\(/g,(r||a?"":l)+"void main(")}else if(t.indexOf("#define VERTEXOUTPUT_INVARIANT")>=0&&(e=`invariant gl_Position; `+e),t.indexOf("#define MULTIVIEW")!==-1)return`#extension GL_OVR_multiview2 : require layout (num_views = 2) in; -`+e;return e}}});var $d,sC=I(()=>{$d=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};$d._Counter=0});var al,PA=I(()=>{sC();al=class extends $d{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function Jd(n){let e=1;do e*=2;while(en-t?t:e}function TU(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function DA(n){return n=n|n>>1,n=n|n>>2,n=n|n>>4,n=n|n>>8,n=n|n>>16,n-(n>>1)}function An(n,e,t=2){let i;switch(t){case 1:i=DA(n);break;case 2:i=aC(n);break;default:i=TU(n);break}return Math.min(i,e)}var uo=I(()=>{});var sm,oC=I(()=>{sm=class{get underlyingResource(){return this._webGLTexture}constructor(e=null,t){if(this._MSAARenderBuffers=null,this._context=t,!e&&(e=t.createTexture(),!e))throw new Error("Unable to create webGL texture");this.set(e)}setUsage(){}set(e){this._webGLTexture=e}reset(){this._webGLTexture=null,this._MSAARenderBuffers=null}addMSAARenderBuffer(e){this._MSAARenderBuffers||(this._MSAARenderBuffers=[]),this._MSAARenderBuffers.push(e)}releaseMSAARenderBuffers(){if(this._MSAARenderBuffers){for(let e of this._MSAARenderBuffers)this._context.deleteRenderbuffer(e);this._MSAARenderBuffers=null}}getMSAARenderBuffer(e=0){var t,i;return(i=(t=this._MSAARenderBuffers)==null?void 0:t[e])!=null?i:null}release(){this.releaseMSAARenderBuffers(),this._webGLTexture&&this._context.deleteTexture(this._webGLTexture),this.reset()}}});function lC(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function Kl(n){return n===13||n===17||n===18||n===19}var fg=I(()=>{});var AU={};Be(AU,{ThinEngine:()=>bt});var cC,bt,os=I(()=>{Zd();jy();Vr();nC();Pt();ba();EU();SU();PA();uo();oC();Os();mf();tC();fg();rC();cC=class{},bt=class n extends Ie{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return or.ShadersRepository}static set ShadersRepository(e){or.ShadersRepository=e}get supportsUniformBuffers(){return this.webGLVersion>1&&!this.disableUniformBuffers}get needPOTTextures(){return this._webGLVersion<2||this.forcePOTTextures}get _supportsHardwareTextureRescaling(){return!1}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e}snapshotRenderingReset(){this.snapshotRendering=!1}constructor(e,t,i,r){if(i=i||{},super(t!=null?t:i.antialias,i,r),this._name="WebGL",this.forcePOTTextures=!1,this.validateShaderPrograms=!1,this.disableUniformBuffers=!1,this._webGLVersion=1,this._vertexAttribArraysEnabled=[],this._uintIndicesCurrentlySet=!1,this._currentBoundBuffer=new Array,this._currentFramebuffer=null,this._dummyFramebuffer=null,this._currentBufferPointers=new Array,this._currentInstanceLocations=new Array,this._currentInstanceBuffers=new Array,this._vaoRecordInProgress=!1,this._mustWipeVertexAttributes=!1,this._nextFreeTextureSlots=new Array,this._maxSimultaneousTextures=0,this._maxMSAASamplesOverride=null,this._unpackFlipYCached=null,this.enableUnpackFlipYCached=!0,this._boundUniforms={},!e)return;let s;if(e.getContext){if(s=e,i.preserveDrawingBuffer===void 0&&(i.preserveDrawingBuffer=!1),i.xrCompatible===void 0&&(i.xrCompatible=!1),navigator&&navigator.userAgent){this._setupMobileChecks();let l=navigator.userAgent;for(let c of n.ExceptionList){let f=c.key,d=c.targets;if(new RegExp(f).test(l)){if(c.capture&&c.captureConstraint){let u=c.capture,m=c.captureConstraint,p=new RegExp(u).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let u of d)switch(u){case"uniformBuffer":this.disableUniformBuffers=!0;break;case"vao":this.disableVertexArrayObjects=!0;break;case"antialias":i.antialias=!1;break;case"maxMSAASamples":this._maxMSAASamplesOverride=1;break}}}}if(this._doNotHandleContextLost?this._onContextLost=()=>{dA(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,dA(this._gl),ee.Warn("WebGL context lost."),this.onContextLostObservable.notifyObservers(this)},this._onContextRestored=()=>{this._restoreEngineAfterContextLost(()=>this._initGLContext())},s.addEventListener("webglcontextrestored",this._onContextRestored,!1),i.powerPreference=i.powerPreference||"high-performance"),s.addEventListener("webglcontextlost",this._onContextLost,!1),this._badDesktopOS&&(i.xrCompatible=!1),!i.disableWebGL2Support)try{this._gl=s.getContext("webgl2",i)||s.getContext("experimental-webgl2",i),this._gl&&(this._webGLVersion=2,this._shaderPlatformName="WEBGL2",this._gl.deleteQuery||(this._webGLVersion=1,this._shaderPlatformName="WEBGL1"))}catch(l){}if(!this._gl){if(!s)throw new Error("The provided canvas is null or undefined.");try{this._gl=s.getContext("webgl",i)||s.getContext("experimental-webgl",i)}catch(l){throw new Error("WebGL not supported",{cause:l})}}if(!this._gl)throw new Error("WebGL not supported")}else{this._gl=e,s=this._gl.canvas,this._gl.renderbufferStorageMultisample?(this._webGLVersion=2,this._shaderPlatformName="WEBGL2"):this._shaderPlatformName="WEBGL1";let l=this._gl.getContextAttributes();l&&(i.stencil=l.stencil)}this._sharedInit(s),this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),i.useHighPrecisionFloats!==void 0&&(this._highPrecisionShadersAllowed=i.useHighPrecisionFloats),this.resize(),this._initGLContext(),this._initFeatures();for(let l=0;l1?new CA:new yA;let a=`Babylon.js v${n.Version}`;ee.Log(a+` - ${this.description}`),this._renderingCanvas&&this._renderingCanvas.setAttribute&&this._renderingCanvas.setAttribute("data-engine",a);let o=Bn(this._gl);o.validateShaderPrograms=this.validateShaderPrograms,o.parallelShaderCompile=this._caps.parallelShaderCompile}_clearEmptyResources(){this._dummyFramebuffer=null,super._clearEmptyResources()}_getShaderProcessingContext(e){return null}areAllEffectsReady(){for(let e in this._compiledEffects)if(!this._compiledEffects[e].isReady())return!1;return!0}_initGLContext(){var i;this._caps={maxTexturesImageUnits:this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS),maxCombinedTexturesImageUnits:this._gl.getParameter(this._gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),maxSamples:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_SAMPLES):1,maxCubemapTextureSize:this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE),maxRenderTextureSize:this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:this._gl.getParameter(this._gl.MAX_VERTEX_ATTRIBS),maxVaryingVectors:this._gl.getParameter(this._gl.MAX_VARYING_VECTORS),maxFragmentUniformVectors:this._gl.getParameter(this._gl.MAX_FRAGMENT_UNIFORM_VECTORS),maxVertexUniformVectors:this._gl.getParameter(this._gl.MAX_VERTEX_UNIFORM_VECTORS),shaderFloatPrecision:0,parallelShaderCompile:this._gl.getExtension("KHR_parallel_shader_compile")||void 0,standardDerivatives:this._webGLVersion>1||this._gl.getExtension("OES_standard_derivatives")!==null,maxAnisotropy:1,astc:this._gl.getExtension("WEBGL_compressed_texture_astc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),bptc:this._gl.getExtension("EXT_texture_compression_bptc")||this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),s3tc:this._gl.getExtension("WEBGL_compressed_texture_s3tc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),s3tc_srgb:this._gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),pvrtc:this._gl.getExtension("WEBGL_compressed_texture_pvrtc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:this._gl.getExtension("WEBGL_compressed_texture_etc1")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),etc2:this._gl.getExtension("WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBGL_compressed_texture_es3_0"),textureAnisotropicFilterExtension:this._gl.getExtension("EXT_texture_filter_anisotropic")||this._gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||this._gl.getExtension("MOZ_EXT_texture_filter_anisotropic"),uintIndices:this._webGLVersion>1||this._gl.getExtension("OES_element_index_uint")!==null,fragmentDepthSupported:this._webGLVersion>1||this._gl.getExtension("EXT_frag_depth")!==null,highPrecisionShaderSupported:!1,timerQuery:this._gl.getExtension("EXT_disjoint_timer_query_webgl2")||this._gl.getExtension("EXT_disjoint_timer_query"),supportOcclusionQuery:this._webGLVersion>1,canUseTimestampForTimerQuery:!1,drawBuffersExtension:!1,maxMSAASamples:1,colorBufferFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_float")),blendFloat:this._gl.getExtension("EXT_float_blend")!==null,supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:!1,colorBufferHalfFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_half_float")),textureFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_float")),textureHalfFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_half_float")),textureHalfFloatRender:!1,textureFloatLinearFiltering:!1,textureFloatRender:!1,textureHalfFloatLinearFiltering:!1,vertexArrayObject:!1,instancedArrays:!1,textureLOD:!!(this._webGLVersion>1||this._gl.getExtension("EXT_shader_texture_lod")),texelFetch:this._webGLVersion!==1,blendMinMax:!1,multiview:this._gl.getExtension("OVR_multiview2"),oculusMultiview:this._gl.getExtension("OCULUS_multiview"),depthTextureExtension:!1,canUseGLInstanceID:this._webGLVersion>1,canUseGLVertexID:this._webGLVersion>1,supportComputeShaders:!1,supportSRGBBuffers:!1,supportTransformFeedbacks:this._webGLVersion>1,textureMaxLevel:this._webGLVersion>1,texture2DArrayMaxLayerCount:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS):128,disableMorphTargetTexture:!1,textureNorm16:!!this._gl.getExtension("EXT_texture_norm16"),blendParametersPerTarget:!1,dualSourceBlending:!1,supportReadWriteStorageTextures:!1},this._caps.supportFloatTexturesResolve=this._caps.colorBufferFloat,this._caps.rg11b10ufColorRenderable=this._caps.colorBufferFloat,this._glVersion=this._gl.getParameter(this._gl.VERSION);let e=this._gl.getExtension("WEBGL_debug_renderer_info");e!=null&&(this._glRenderer=this._gl.getParameter(e.UNMASKED_RENDERER_WEBGL),this._glVendor=this._gl.getParameter(e.UNMASKED_VENDOR_WEBGL)),this._glVendor||(this._glVendor=this._gl.getParameter(this._gl.VENDOR)||"Unknown vendor"),this._glRenderer||(this._glRenderer=this._gl.getParameter(this._gl.RENDERER)||"Unknown renderer"),this._gl.HALF_FLOAT_OES!==36193&&(this._gl.HALF_FLOAT_OES=36193),this._gl.RGBA16F!==34842&&(this._gl.RGBA16F=34842),this._gl.RGBA32F!==34836&&(this._gl.RGBA32F=34836),this._gl.DEPTH24_STENCIL8!==35056&&(this._gl.DEPTH24_STENCIL8=35056),this._caps.timerQuery&&(this._webGLVersion===1&&(this._gl.getQuery=this._caps.timerQuery.getQueryEXT.bind(this._caps.timerQuery)),this._caps.canUseTimestampForTimerQuery=((i=this._gl.getQuery(this._caps.timerQuery.TIMESTAMP_EXT,this._caps.timerQuery.QUERY_COUNTER_BITS_EXT))!=null?i:0)>0),this._caps.maxAnisotropy=this._caps.textureAnisotropicFilterExtension?this._gl.getParameter(this._caps.textureAnisotropicFilterExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,this._caps.textureFloatLinearFiltering=!!(this._caps.textureFloat&&this._gl.getExtension("OES_texture_float_linear")),this._caps.textureFloatRender=!!(this._caps.textureFloat&&this._canRenderToFloatFramebuffer()),this._caps.textureHalfFloatLinearFiltering=!!(this._webGLVersion>1||this._caps.textureHalfFloat&&this._gl.getExtension("OES_texture_half_float_linear")),this._caps.textureNorm16&&(this._gl.R16_EXT=33322,this._gl.RG16_EXT=33324,this._gl.RGB16_EXT=32852,this._gl.RGBA16_EXT=32859,this._gl.R16_SNORM_EXT=36760,this._gl.RG16_SNORM_EXT=36761,this._gl.RGB16_SNORM_EXT=36762,this._gl.RGBA16_SNORM_EXT=36763);let t=this._gl.getExtension("OES_draw_buffers_indexed");if(this._caps.blendParametersPerTarget=!!t,this._alphaState=new nm(this._caps.blendParametersPerTarget),t&&(this._gl.blendEquationSeparateIndexed=t.blendEquationSeparateiOES.bind(t),this._gl.blendEquationIndexed=t.blendEquationiOES.bind(t),this._gl.blendFuncSeparateIndexed=t.blendFuncSeparateiOES.bind(t),this._gl.blendFuncIndexed=t.blendFunciOES.bind(t),this._gl.colorMaskIndexed=t.colorMaskiOES.bind(t),this._gl.disableIndexed=t.disableiOES.bind(t),this._gl.enableIndexed=t.enableiOES.bind(t)),this._caps.dualSourceBlending=!!this._gl.getExtension("WEBGL_blend_func_extended"),this._caps.astc&&(this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR),this._caps.bptc&&(this._gl.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=this._caps.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT),this._caps.s3tc_srgb&&(this._gl.COMPRESSED_SRGB_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT),this._caps.etc2&&(this._gl.COMPRESSED_SRGB8_ETC2=this._caps.etc2.COMPRESSED_SRGB8_ETC2,this._gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=this._caps.etc2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC),this._webGLVersion>1&&this._gl.HALF_FLOAT_OES!==5131&&(this._gl.HALF_FLOAT_OES=5131),this._caps.textureHalfFloatRender=this._caps.textureHalfFloat&&this._canRenderToHalfFloatFramebuffer(),this._webGLVersion>1)this._caps.drawBuffersExtension=!0,this._caps.maxMSAASamples=this._maxMSAASamplesOverride!==null?this._maxMSAASamplesOverride:this._gl.getParameter(this._gl.MAX_SAMPLES),this._caps.maxDrawBuffers=this._gl.getParameter(this._gl.MAX_DRAW_BUFFERS);else{let r=this._gl.getExtension("WEBGL_draw_buffers");if(r!==null){this._caps.drawBuffersExtension=!0,this._gl.drawBuffers=r.drawBuffersWEBGL.bind(r),this._caps.maxDrawBuffers=this._gl.getParameter(r.MAX_DRAW_BUFFERS_WEBGL),this._gl.DRAW_FRAMEBUFFER=this._gl.FRAMEBUFFER;for(let s=0;s<16;s++)this._gl["COLOR_ATTACHMENT"+s+"_WEBGL"]=r["COLOR_ATTACHMENT"+s+"_WEBGL"]}}if(this._webGLVersion>1)this._caps.depthTextureExtension=!0;else{let r=this._gl.getExtension("WEBGL_depth_texture");r!=null&&(this._caps.depthTextureExtension=!0,this._gl.UNSIGNED_INT_24_8=r.UNSIGNED_INT_24_8_WEBGL)}if(this.disableVertexArrayObjects)this._caps.vertexArrayObject=!1;else if(this._webGLVersion>1)this._caps.vertexArrayObject=!0;else{let r=this._gl.getExtension("OES_vertex_array_object");r!=null&&(this._caps.vertexArrayObject=!0,this._gl.createVertexArray=r.createVertexArrayOES.bind(r),this._gl.bindVertexArray=r.bindVertexArrayOES.bind(r),this._gl.deleteVertexArray=r.deleteVertexArrayOES.bind(r))}if(this._webGLVersion>1)this._caps.instancedArrays=!0;else{let r=this._gl.getExtension("ANGLE_instanced_arrays");r!=null?(this._caps.instancedArrays=!0,this._gl.drawArraysInstanced=r.drawArraysInstancedANGLE.bind(r),this._gl.drawElementsInstanced=r.drawElementsInstancedANGLE.bind(r),this._gl.vertexAttribDivisor=r.vertexAttribDivisorANGLE.bind(r)):this._caps.instancedArrays=!1}if(this._gl.getShaderPrecisionFormat){let r=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.HIGH_FLOAT),s=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.HIGH_FLOAT);if(r&&s&&(this._caps.highPrecisionShaderSupported=r.precision!==0&&s.precision!==0,this._caps.shaderFloatPrecision=Math.min(r.precision,s.precision)),!this._shouldUseHighPrecisionShader){let a=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.MEDIUM_FLOAT),o=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.MEDIUM_FLOAT);a&&o&&(this._caps.shaderFloatPrecision=Math.min(a.precision,o.precision))}this._caps.shaderFloatPrecision<10&&(this._caps.shaderFloatPrecision=10)}if(this._webGLVersion>1)this._caps.blendMinMax=!0;else{let r=this._gl.getExtension("EXT_blend_minmax");r!=null&&(this._caps.blendMinMax=!0,this._gl.MAX=r.MAX_EXT,this._gl.MIN=r.MIN_EXT)}if(!this._caps.supportSRGBBuffers){if(this._webGLVersion>1)this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:WebGL2RenderingContext.SRGB,SRGB8:WebGL2RenderingContext.SRGB8,SRGB8_ALPHA8:WebGL2RenderingContext.SRGB8_ALPHA8};else{let r=this._gl.getExtension("EXT_sRGB");r!=null&&(this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:r.SRGB_EXT,SRGB8:r.SRGB_ALPHA_EXT,SRGB8_ALPHA8:r.SRGB_ALPHA_EXT})}if(this._creationOptions){let r=this._creationOptions.forceSRGBBufferSupportState;r!==void 0&&(this._caps.supportSRGBBuffers=this._caps.supportSRGBBuffers&&r)}}this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=this._gl.LEQUAL,this._depthCullingState.depthMask=!0,this._maxSimultaneousTextures=this._caps.maxCombinedTexturesImageUnits;for(let r=0;r=65535)return new Uint32Array(e);return new Uint16Array(e)}return new Uint16Array(e)}bindArrayBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ARRAY_BUFFER)}bindUniformBlock(e,t,i){let r=e.program,s=this._gl.getUniformBlockIndex(r,t);this._gl.uniformBlockBinding(r,s,i)}bindIndexBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ELEMENT_ARRAY_BUFFER)}_bindBuffer(e,t){(this._vaoRecordInProgress||this._currentBoundBuffer[t]!==e)&&(this._gl.bindBuffer(t,e?e.underlyingResource:null),this._currentBoundBuffer[t]=e)}updateArrayBuffer(e){this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,e)}_vertexAttribPointer(e,t,i,r,s,a,o){let l=this._currentBufferPointers[t];if(!l)return;let c=!1;l.active?(l.buffer!==e&&(l.buffer=e,c=!0),l.size!==i&&(l.size=i,c=!0),l.type!==r&&(l.type=r,c=!0),l.normalized!==s&&(l.normalized=s,c=!0),l.stride!==a&&(l.stride=a,c=!0),l.offset!==o&&(l.offset=o,c=!0)):(c=!0,l.active=!0,l.index=t,l.size=i,l.type=r,l.normalized=s,l.stride=a,l.offset=o,l.buffer=e),(c||this._vaoRecordInProgress)&&(this.bindArrayBuffer(e),r===this._gl.UNSIGNED_INT||r===this._gl.INT?this._gl.vertexAttribIPointer(t,i,r,a,o):this._gl.vertexAttribPointer(t,i,r,s,a,o))}_bindIndexBufferWithCache(e){e!=null&&this._cachedIndexBuffer!==e&&(this._cachedIndexBuffer=e,this.bindIndexBuffer(e),this._uintIndicesCurrentlySet=e.is32Bits)}_bindVertexBuffersAttributes(e,t,i){let r=t.getAttributesNames();this._vaoRecordInProgress||this._unbindVertexArrayObject(),this.unbindAllAttributes();for(let s=0;s=0){let o=r[s],l=null;if(i&&(l=i[o]),l||(l=e[o]),!l)continue;this._gl.enableVertexAttribArray(a),this._vaoRecordInProgress||(this._vertexAttribArraysEnabled[a]=!0);let c=l.getBuffer();c&&(this._vertexAttribPointer(c,a,l.getSize(),l.type,l.normalized,l.byteStride,l.byteOffset),l.getIsInstanced()&&(this._gl.vertexAttribDivisor(a,l.getInstanceDivisor()),this._vaoRecordInProgress||(this._currentInstanceLocations.push(a),this._currentInstanceBuffers.push(c))))}}}recordVertexArrayObject(e,t,i,r){let s=this._gl.createVertexArray();if(!s)throw new Error("Unable to create VAO");return this._vaoRecordInProgress=!0,this._gl.bindVertexArray(s),this._mustWipeVertexAttributes=!0,this._bindVertexBuffersAttributes(e,i,r),this.bindIndexBuffer(t),this._vaoRecordInProgress=!1,this._gl.bindVertexArray(null),s}bindVertexArrayObject(e,t){this._cachedVertexArrayObject!==e&&(this._cachedVertexArrayObject=e,this._gl.bindVertexArray(e),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._uintIndicesCurrentlySet=t!=null&&t.is32Bits,this._mustWipeVertexAttributes=!0)}bindBuffersDirectly(e,t,i,r,s){if(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==s){this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=s;let a=s.getAttributesCount();this._unbindVertexArrayObject(),this.unbindAllAttributes();let o=0;for(let l=0;l=0&&(this._gl.enableVertexAttribArray(c),this._vertexAttribArraysEnabled[c]=!0,this._vertexAttribPointer(e,c,i[l],this._gl.FLOAT,!1,r,o)),o+=i[l]*4}}this._bindIndexBufferWithCache(t)}_unbindVertexArrayObject(){this._cachedVertexArrayObject&&(this._cachedVertexArrayObject=null,this._gl.bindVertexArray(null))}bindBuffers(e,t,i,r){(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==i)&&(this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=i,this._bindVertexBuffersAttributes(e,i,r)),this._bindIndexBufferWithCache(t)}unbindInstanceAttributes(){let e;for(let t=0,i=this._currentInstanceLocations.length;t1||this.isWebGPU)),(o===1&&!this._caps.textureFloatLinearFiltering||o===2&&!this._caps.textureHalfFloatLinearFiltering)&&(l=1),o===1&&!this._caps.textureFloat&&(o=0,ee.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));let p=lC(c),g=Kl(c),v=this._gl,x=new Oi(this,r),S=e.width||e,E=e.height||e,T=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),y=R!==0?v.TEXTURE_2D_ARRAY:T!==0?v.TEXTURE_3D:_?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,g):this._getRGBABufferInternalSizedFormat(o,c,f),L=p?g?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(y,x),R!==0)x.is2DArray=!0,v.texImage3D(y,0,C,S,E,R,0,L,w,null);else if(T!==0)x.is3D=!0,v.texImage3D(y,0,C,S,E,T,0,L,w,null);else if(_){x.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,S,E,0,L,w,null)}else v.texImage2D(y,0,C,S,E,0,L,w,null);if(v.texParameteri(y,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(y,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(y,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(y,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(y),this._bindTextureDirectly(y,null),x._useSRGBBuffer=f,x.baseWidth=S,x.baseHeight=E,x.width=S,x.height=E,x.depth=R||T,x.isReady=!0,x.samples=d,x.generateMipMaps=s,x.samplingMode=l,x.type=o,x.format=c,x.label=h,x.comparisonFunction=m,this._internalTexturesCache.push(x),u){let O;if(lC(x.format)?O=this._setupFramebufferDepthAttachments(Kl(x.format),x.format!==19,x.width,x.height,d,x.format,!0):O=this._createRenderBuffer(x.width,x.height,d,-1,this._getRGBABufferInternalSizedFormat(x.type,x.format,x._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");x._autoMSAAManagement=!0;let N=x._hardwareTexture;N||(N=x._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return x}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers&&(this.webGLVersion>1||t)}createTexture(e,t,i,r,s=3,a=null,o=null,l=null,c=null,f=null,d=null,h,u,m,_){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,g,v,x,S,E)=>{let T=this._gl,R=v.width===p&&v.height===g;S._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(S.format,S._useSRGBBuffer);if(R)return T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let y=this._caps.maxTextureSize;if(v.width>y||v.height>y||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=g,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,g),T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),S.width=p,S.height=g),!1;{let C=new Oi(this,2);this._bindTextureDirectly(T.TEXTURE_2D,C,!0),T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,S,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(T.TEXTURE_2D,S,!0),E()})}return!0},l,c,f,d,h,u,_)}_getTexImageParametersForCreateTexture(e,t){let i,r;return this.webGLVersion===1?(i=this._getInternalFormat(e,t),r=i):(i=this._getInternalFormat(e,!1),r=this._getRGBABufferInternalSizedFormat(0,e,t)),{internalFormat:r,format:i,type:this._gl.UNSIGNED_BYTE}}_rescaleTexture(e,t,i,r,s){}_unpackFlipY(e){this._unpackFlipYCached!==e&&(this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,e?1:0),this.enableUnpackFlipYCached&&(this._unpackFlipYCached=e))}_getUnpackAlignement(){return this._gl.getParameter(this._gl.UNPACK_ALIGNMENT)}_getTextureTarget(e){return e.isCube?this._gl.TEXTURE_CUBE_MAP:e.is3D?this._gl.TEXTURE_3D:e.is2DArray||e.isMultiview?this._gl.TEXTURE_2D_ARRAY:this._gl.TEXTURE_2D}updateTextureSamplingMode(e,t,i=!1){let r=this._getTextureTarget(t),s=this._getSamplingParameters(e,t.useMipMaps||i);this._setTextureParameterInteger(r,this._gl.TEXTURE_MAG_FILTER,s.mag,t),this._setTextureParameterInteger(r,this._gl.TEXTURE_MIN_FILTER,s.min),i&&s.hasMipMaps&&(t.generateMipMaps=!0,this._gl.generateMipmap(r)),this._bindTextureDirectly(r,null),t.samplingMode=e}updateTextureDimensions(e,t,i,r=1){}updateTextureWrappingMode(e,t,i=null,r=null){let s=this._getTextureTarget(e);t!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t),e),e._cachedWrapU=t),i!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(i),e),e._cachedWrapV=i),(e.is2DArray||e.is3D)&&r!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(r),e),e._cachedWrapR=r),this._bindTextureDirectly(s,null)}_uploadCompressedDataToTextureDirectly(e,t,i,r,s,a=0,o=0){let l=this._gl,c=l.TEXTURE_2D;if(e.isCube&&(c=l.TEXTURE_CUBE_MAP_POSITIVE_X+a),e._useSRGBBuffer)switch(t){case 37492:case 36196:this._caps.etc2?t=l.COMPRESSED_SRGB8_ETC2:e._useSRGBBuffer=!1;break;case 37496:this._caps.etc2?t=l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:e._useSRGBBuffer=!1;break;case 36492:t=l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;break;case 37808:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;break;case 37809:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;break;case 37810:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;break;case 37811:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;break;case 37812:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;break;case 37813:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;break;case 37814:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;break;case 37815:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;break;case 37816:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;break;case 37817:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;break;case 37818:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;break;case 37819:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;break;case 37820:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;break;case 37821:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR;break;case 33776:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33777:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33779:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:e._useSRGBBuffer=!1;break;default:e._useSRGBBuffer=!1;break}if(e.generateMipMaps){let f=e._hardwareTexture;f.memoryAllocated||(l.texStorage2D(e.isCube?l.TEXTURE_CUBE_MAP:l.TEXTURE_2D,Math.floor(Math.log2(Math.max(i,r)))+1,t,e.width,e.height),f.memoryAllocated=!0),this._gl.compressedTexSubImage2D(c,o,0,0,i,r,t,s)}else this._gl.compressedTexImage2D(c,o,t,i,r,0,s)}_uploadDataToTextureDirectly(e,t,i=0,r=0,s,a=!1){let o=this._gl,l=this._getWebGLTextureType(e.type),c=this._getInternalFormat(e.format),f=s===void 0?this._getRGBABufferInternalSizedFormat(e.type,e.format,e._useSRGBBuffer):this._getInternalFormat(s,e._useSRGBBuffer);this._unpackFlipY(e.invertY);let d=o.TEXTURE_2D;e.isCube&&(d=o.TEXTURE_CUBE_MAP_POSITIVE_X+i);let h=Math.round(Math.log(e.width)*Math.LOG2E),u=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(h-r,0)),_=a?e.height:Math.pow(2,Math.max(u-r,0));o.texImage2D(d,r,f,m,_,0,c,l,t)}updateTextureData(e,t,i,r,s,a,o=0,l=0,c=!1){let f=this._gl,d=this._getWebGLTextureType(e.type),h=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let u=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,u=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(u,e,!0),f.texSubImage2D(m,l,i,r,s,a,h,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(u,null)}_uploadArrayBufferViewToTexture(e,t,i=0,r=0){let s=this._gl,a=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(a,e,!0),this._uploadDataToTextureDirectly(e,t,i,r),this._bindTextureDirectly(a,null,!0)}_prepareWebGLTextureContinuation(e,t,i,r,s){let a=this._gl;if(!a)return;let o=this._getSamplingParameters(s,!i);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,o.mag),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,o.min),!i&&!r&&a.generateMipmap(a.TEXTURE_2D),this._bindTextureDirectly(a.TEXTURE_2D,null),t&&t.removePendingData(e),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}_prepareWebGLTexture(e,t,i,r,s,a,o,l,c,f){let d=this.getCaps().maxTextureSize,h=Math.min(d,this.needPOTTextures?An(r.width,d):r.width),u=Math.min(d,this.needPOTTextures?An(r.height,d):r.height),m=this._gl;if(m){if(!e._hardwareTexture){i&&i.removePendingData(e);return}this._bindTextureDirectly(m.TEXTURE_2D,e,!0),this._unpackFlipY(s===void 0?!0:!!s),e.baseWidth=r.width,e.baseHeight=r.height,e.width=h,e.height=u,e.isReady=!0,e.type=e.type!==-1?e.type:0,e.format=e.format!==-1?e.format:f!=null?f:t===".jpg"&&!e._useSRGBBuffer?4:5,!l(h,u,r,t,e,()=>{this._prepareWebGLTextureContinuation(e,i,a,o,c)})&&this._prepareWebGLTextureContinuation(e,i,a,o,c)}}_getInternalFormatFromDepthTextureFormat(e,t,i){let r=this._gl;if(!t)return r.STENCIL_INDEX8;let a=i?r.DEPTH_STENCIL:r.DEPTH_COMPONENT;return this.webGLVersion>1?e===15?a=r.DEPTH_COMPONENT16:e===16?a=r.DEPTH_COMPONENT24:e===17||e===13?a=i?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24:e===14?a=r.DEPTH_COMPONENT32F:e===18&&(a=i?r.DEPTH32F_STENCIL8:r.DEPTH_COMPONENT32F):a=r.DEPTH_COMPONENT16,a}_getWebGLTextureTypeFromDepthTextureFormat(e){let t=this._gl,i=t.UNSIGNED_INT;return e===15?i=t.UNSIGNED_SHORT:e===17||e===13?i=t.UNSIGNED_INT_24_8:e===14?i=t.FLOAT:e===18?i=t.FLOAT_32_UNSIGNED_INT_24_8_REV:e===19&&(i=t.UNSIGNED_BYTE),i}_setupFramebufferDepthAttachments(e,t,i,r,s=1,a,o=!1){let l=this._gl;a=a!=null?a:e?13:14;let c=this._getInternalFormatFromDepthTextureFormat(a,t,e);return e&&t?this._createRenderBuffer(i,r,s,l.DEPTH_STENCIL,c,o?-1:l.DEPTH_STENCIL_ATTACHMENT):t?this._createRenderBuffer(i,r,s,c,c,o?-1:l.DEPTH_ATTACHMENT):e?this._createRenderBuffer(i,r,s,c,c,o?-1:l.STENCIL_ATTACHMENT):null}_createRenderBuffer(e,t,i,r,s,a,o=!0){let c=this._gl.createRenderbuffer();return this._updateRenderBuffer(c,e,t,i,r,s,a,o)}_updateRenderBuffer(e,t,i,r,s,a,o,l=!0){let c=this._gl;return c.bindRenderbuffer(c.RENDERBUFFER,e),r>1&&c.renderbufferStorageMultisample?c.renderbufferStorageMultisample(c.RENDERBUFFER,r,a,t,i):c.renderbufferStorage(c.RENDERBUFFER,s,t,i),o!==-1&&c.framebufferRenderbuffer(c.FRAMEBUFFER,o,c.RENDERBUFFER,e),l&&c.bindRenderbuffer(c.RENDERBUFFER,null),e}_releaseTexture(e){this._deleteTexture(e._hardwareTexture),this.unbindAllTextures();let t=this._internalTexturesCache.indexOf(e);t!==-1&&this._internalTexturesCache.splice(t,1),e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureLow&&e._lodTextureLow.dispose(),e._irradianceTexture&&e._irradianceTexture.dispose()}_deleteTexture(e){e==null||e.release()}_setProgram(e){this._currentProgram!==e&&(Q2(e,this._gl),this._currentProgram=e)}bindSamplers(e){let t=e.getPipelineContext();this._setProgram(t.program);let i=e.getSamplers();for(let r=0;r-1;if(i&&a&&(this._activeChannel=t._associatedChannel),this._boundTexturesCache[this._activeChannel]!==t||r){if(this._activateCurrentTexture(),t&&t.isMultiview)throw ee.Error(["_bindTextureDirectly called with a multiview texture!",e,t]),"_bindTextureDirectly called with a multiview texture!";this._gl.bindTexture(e,(c=(l=t==null?void 0:t._hardwareTexture)==null?void 0:l.underlyingResource)!=null?c:null),this._boundTexturesCache[this._activeChannel]=t,t&&(t._associatedChannel=this._activeChannel)}else i&&(s=!0,this._activateCurrentTexture());return a&&!i&&this._bindSamplerUniformToChannel(t._associatedChannel,this._activeChannel),s}_bindTexture(e,t,i){if(e===void 0)return;t&&(t._associatedChannel=e),this._activeChannel=e;let r=t?this._getTextureTarget(t):this._gl.TEXTURE_2D;this._bindTextureDirectly(r,t)}unbindAllTextures(){for(let e=0;e1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))}setTexture(e,t,i,r){e!==void 0&&(t&&(this._boundUniforms[e]=t),this._setTexture(e,i))}_bindSamplerUniformToChannel(e,t){let i=this._boundUniforms[e];!i||i._currentState===t||(this._gl.uniform1i(i,t),i._currentState=t)}_getTextureWrapMode(e){switch(e){case 1:return this._gl.REPEAT;case 0:return this._gl.CLAMP_TO_EDGE;case 2:return this._gl.MIRRORED_REPEAT}return this._gl.REPEAT}_setTexture(e,t,i=!1,r=!1,s=""){if(!t)return this._boundTexturesCache[e]!=null&&(this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))),!1;if(t.video){this._activeChannel=e;let c=t.getInternalTexture();c&&(c._associatedChannel=e),t.update()}else if(t.delayLoadState===4)return t.delayLoad(),!1;let a;r?a=t.depthStencilTexture:t.isReady()?a=t.getInternalTexture():t.isCube?a=this.emptyCubeTexture:t.is3D?a=this.emptyTexture3D:t.is2DArray?a=this.emptyTexture2DArray:a=this.emptyTexture,!i&&a&&(a._associatedChannel=e);let o=!0;this._boundTexturesCache[e]===a&&(i||this._bindSamplerUniformToChannel(a._associatedChannel,e),o=!1),this._activeChannel=e;let l=this._getTextureTarget(a);if(o&&this._bindTextureDirectly(l,a,i),a&&!a.isMultiview){if(a.isCube&&a._cachedCoordinatesMode!==t.coordinatesMode){a._cachedCoordinatesMode=t.coordinatesMode;let c=t.coordinatesMode!==3&&t.coordinatesMode!==5?1:0;t.wrapU=c,t.wrapV=c}a._cachedWrapU!==t.wrapU&&(a._cachedWrapU=t.wrapU,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t.wrapU),a)),a._cachedWrapV!==t.wrapV&&(a._cachedWrapV=t.wrapV,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(t.wrapV),a)),a.is3D&&a._cachedWrapR!==t.wrapR&&(a._cachedWrapR=t.wrapR,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(t.wrapR),a)),this._setAnisotropicLevel(l,a,t.anisotropicFilteringLevel)}return!0}setTextureArray(e,t,i,r){if(!(e===void 0||!t)){(!this._textureUnits||this._textureUnits.length!==i.length)&&(this._textureUnits=new Int32Array(i.length));for(let s=0;s=this._caps.maxVertexAttribs||!this._vertexAttribArraysEnabled[e]||this.disableAttributeByIndex(e)}releaseEffects(){this._compiledEffects={},this.onReleaseEffectsObservable.notifyObservers(this)}dispose(){var e;ur()&&this._renderingCanvas&&(this._renderingCanvas.removeEventListener("webglcontextlost",this._onContextLost),this._onContextRestored&&this._renderingCanvas.removeEventListener("webglcontextrestored",this._onContextRestored)),super.dispose(),this._dummyFramebuffer&&this._gl.deleteFramebuffer(this._dummyFramebuffer),this.unbindAllAttributes(),this._boundUniforms={},this._workingCanvas=null,this._workingContext=null,this._currentBufferPointers.length=0,this._currentProgram=null,this._creationOptions.loseContextOnDispose&&((e=this._gl.getExtension("WEBGL_lose_context"))==null||e.loseContext()),dA(this._gl)}attachContextLostEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextlost",e,!1)}attachContextRestoredEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextrestored",e,!1)}getError(){return this._gl.getError()}_canRenderToFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(1)}_canRenderToHalfFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(2)}_canRenderToFramebuffer(e){let t=this._gl;for(;t.getError()!==t.NO_ERROR;);let i=!0,r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,this._getRGBABufferInternalSizedFormat(e),1,1,0,t.RGBA,this._getWebGLTextureType(e),null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);let a=t.checkFramebufferStatus(t.FRAMEBUFFER);if(i=i&&a===t.FRAMEBUFFER_COMPLETE,i=i&&t.getError()===t.NO_ERROR,i&&(t.clear(t.COLOR_BUFFER_BIT),i=i&&t.getError()===t.NO_ERROR),i){t.bindFramebuffer(t.FRAMEBUFFER,null);let o=t.RGBA,l=t.UNSIGNED_BYTE,c=new Uint8Array(4);t.readPixels(0,0,1,1,o,l,c),i=i&&t.getError()===t.NO_ERROR}for(t.deleteTexture(r),t.deleteFramebuffer(s),t.bindFramebuffer(t.FRAMEBUFFER,null);!i&&t.getError()!==t.NO_ERROR;);return i}_getWebGLTextureType(e){if(this._webGLVersion===1){switch(e){case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT_OES;case 0:return this._gl.UNSIGNED_BYTE;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5}return this._gl.UNSIGNED_BYTE}switch(e){case 3:return this._gl.BYTE;case 0:return this._gl.UNSIGNED_BYTE;case 4:return this._gl.SHORT;case 5:return this._gl.UNSIGNED_SHORT;case 6:return this._gl.INT;case 7:return this._gl.UNSIGNED_INT;case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5;case 11:return this._gl.UNSIGNED_INT_2_10_10_10_REV;case 12:return this._gl.UNSIGNED_INT_24_8;case 13:return this._gl.UNSIGNED_INT_10F_11F_11F_REV;case 14:return this._gl.UNSIGNED_INT_5_9_9_9_REV;case 15:return this._gl.FLOAT_32_UNSIGNED_INT_24_8_REV}return this._gl.UNSIGNED_BYTE}_getInternalFormat(e,t=!1){let i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;switch(e){case 0:i=this._gl.ALPHA;break;case 1:i=this._gl.LUMINANCE;break;case 2:i=this._gl.LUMINANCE_ALPHA;break;case 6:case 33322:case 36760:i=this._gl.RED;break;case 7:case 33324:case 36761:i=this._gl.RG;break;case 4:case 32852:case 36762:i=t?this._glSRGBExtensionValues.SRGB:this._gl.RGB;break;case 5:case 32859:case 36763:i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;break}if(this._webGLVersion>1)switch(e){case 8:i=this._gl.RED_INTEGER;break;case 9:i=this._gl.RG_INTEGER;break;case 10:i=this._gl.RGB_INTEGER;break;case 11:i=this._gl.RGBA_INTEGER;break}return i}_getRGBABufferInternalSizedFormat(e,t,i=!1){if(this._webGLVersion===1){if(t!==void 0)switch(t){case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;case 4:return i?this._glSRGBExtensionValues.SRGB:this._gl.RGB}return this._gl.RGBA}switch(e){case 3:switch(t){case 6:return this._gl.R8_SNORM;case 7:return this._gl.RG8_SNORM;case 4:return this._gl.RGB8_SNORM;case 8:return this._gl.R8I;case 9:return this._gl.RG8I;case 10:return this._gl.RGB8I;case 11:return this._gl.RGBA8I;default:return this._gl.RGBA8_SNORM}case 0:switch(t){case 6:return this._gl.R8;case 7:return this._gl.RG8;case 4:return i?this._glSRGBExtensionValues.SRGB8:this._gl.RGB8;case 5:return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8;case 8:return this._gl.R8UI;case 9:return this._gl.RG8UI;case 10:return this._gl.RGB8UI;case 11:return this._gl.RGBA8UI;case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;default:return this._gl.RGBA8}case 4:switch(t){case 8:return this._gl.R16I;case 36760:return this._gl.R16_SNORM_EXT;case 36761:return this._gl.RG16_SNORM_EXT;case 36762:return this._gl.RGB16_SNORM_EXT;case 36763:return this._gl.RGBA16_SNORM_EXT;case 9:return this._gl.RG16I;case 10:return this._gl.RGB16I;case 11:return this._gl.RGBA16I;default:return this._gl.RGBA16I}case 5:switch(t){case 8:return this._gl.R16UI;case 33322:return this._gl.R16_EXT;case 33324:return this._gl.RG16_EXT;case 32852:return this._gl.RGB16_EXT;case 32859:return this._gl.RGBA16_EXT;case 9:return this._gl.RG16UI;case 10:return this._gl.RGB16UI;case 11:return this._gl.RGBA16UI;default:return this._gl.RGBA16UI}case 6:switch(t){case 8:return this._gl.R32I;case 9:return this._gl.RG32I;case 10:return this._gl.RGB32I;case 11:return this._gl.RGBA32I;default:return this._gl.RGBA32I}case 7:switch(t){case 8:return this._gl.R32UI;case 9:return this._gl.RG32UI;case 10:return this._gl.RGB32UI;case 11:return this._gl.RGBA32UI;default:return this._gl.RGBA32UI}case 1:switch(t){case 6:return this._gl.R32F;case 7:return this._gl.RG32F;case 4:return this._gl.RGB32F;case 5:return this._gl.RGBA32F;default:return this._gl.RGBA32F}case 2:switch(t){case 6:return this._gl.R16F;case 7:return this._gl.RG16F;case 4:return this._gl.RGB16F;case 5:return this._gl.RGBA16F;default:return this._gl.RGBA16F}case 10:return this._gl.RGB565;case 13:return this._gl.R11F_G11F_B10F;case 14:return this._gl.RGB9_E5;case 8:return this._gl.RGBA4;case 9:return this._gl.RGB5_A1;case 11:switch(t){case 5:return this._gl.RGB10_A2;case 11:return this._gl.RGB10_A2UI;default:return this._gl.RGB10_A2}}return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8}readPixels(e,t,i,r,s=!0,a=!0,o=null){let l=s?4:3,c=s?this._gl.RGBA:this._gl.RGB,f=i*r*l;if(!o)o=new Uint8Array(f);else if(o.length{Yl();LA=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new fC(e)}sampleFrame(e=Er.Now){if(this._enabled){if(this._lastFrameTimeMs!=null){let t=e-this._lastFrameTimeMs;this._rollingFrameTime.add(t)}this._lastFrameTimeMs=e}}get averageFrameTime(){return this._rollingFrameTime.average}get averageFrameTimeVariance(){return this._rollingFrameTime.variance}get instantaneousFrameTime(){return this._rollingFrameTime.history(0)}get averageFPS(){return 1e3/this._rollingFrameTime.average}get instantaneousFPS(){let e=this._rollingFrameTime.history(0);return e===0?0:1e3/e}get isSaturated(){return this._rollingFrameTime.isSaturated()}enable(){this._enabled=!0}disable(){this._enabled=!1,this._lastFrameTimeMs=null}get isEnabled(){return this._enabled}reset(){this._lastFrameTimeMs=null,this._rollingFrameTime.reset()}},fC=class{constructor(e){this._samples=new Array(e),this.reset()}add(e){let t;if(this.isSaturated()){let i=this._samples[this._pos];t=i-this.average,this.average-=t/(this._sampleCount-1),this._m2-=t*(i-this.average)}else this._sampleCount++;t=e-this.average,this.average+=t/this._sampleCount,this._m2+=t*(e-this.average),this.variance=this._m2/(this._sampleCount-1),this._samples[this._pos]=e,this._pos++,this._pos%=this._samples.length}history(e){if(e>=this._sampleCount||e>=this._samples.length)return 0;let t=this._wrapPosition(this._pos-1);return this._samples[this._wrapPosition(t-e)]}isSaturated(){return this._sampleCount>=this._samples.length}reset(){this.average=0,this.variance=0,this._sampleCount=0,this._pos=0,this._m2=0}_wrapPosition(e){let t=this._samples.length;return(e%t+t)%t}}});var RU=I(()=>{os();bt.prototype.setAlphaMode=function(n,e=!1,t=0){if(this._alphaMode[t]===n){if(!e){let r=n===0;this.depthCullingState.depthMask!==r&&(this.depthCullingState.depthMask=r)}return}let i=n===0;this._alphaState.setAlphaBlend(!i,t),this._alphaState.setAlphaMode(n,t),e||(this.depthCullingState.depthMask=i),this._alphaMode[t]=n}});function bU(n,e,t,i){let r,s=1;i===1?r=new Float32Array(e*t*4):i===2?(r=new Uint16Array(e*t*4),s=15360):i===7?r=new Uint32Array(e*t*4):r=new Uint8Array(e*t*4);for(let a=0;a{Os();Pt();os();uo();bt.prototype.updateRawTexture=function(n,e,t,i,r=null,s=0,a=!1){if(!n)return;let o=this._getRGBABufferInternalSizedFormat(s,t,a),l=this._getInternalFormat(t),c=this._getWebGLTextureType(s);this._bindTextureDirectly(this._gl.TEXTURE_2D,n,!0),this._unpackFlipY(i===void 0?!0:!!i),this._doNotHandleContextLost||(n._bufferView=e,n.format=t,n.type=s,n.invertY=i,n._compression=r),n.width%4!==0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),r&&e?this._gl.compressedTexImage2D(this._gl.TEXTURE_2D,0,this.getCaps().s3tc[r],n.width,n.height,0,e):this._gl.texImage2D(this._gl.TEXTURE_2D,0,o,n.width,n.height,0,l,c,e),n.generateMipMaps&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),n.isReady=!0};bt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Oi(this,3);d.baseWidth=e,d.baseHeight=t,d.width=e,d.height=t,d.format=i,d.generateMipMaps=r,d.samplingMode=a,d.invertY=s,d._compression=o,d.type=l,d._useSRGBBuffer=this._getUseSRGBBuffer(f,!r),this._doNotHandleContextLost||(d._bufferView=n),this.updateRawTexture(d,n,i,s,o,l,d._useSRGBBuffer),this._bindTextureDirectly(this._gl.TEXTURE_2D,d,!0);let h=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,h.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,h.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};bt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Oi(this,8);c.isCube=!0,c.format=t,c.type=i,this._doNotHandleContextLost||(c._bufferViewArray=n);let f=this._getWebGLTextureType(i),d=this._getInternalFormat(t);d===l.RGB&&(d=l.RGBA),f===l.FLOAT&&!this._caps.textureFloatLinearFiltering?(r=!1,a=1,ee.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===this._gl.HALF_FLOAT_OES&&!this._caps.textureHalfFloatLinearFiltering?(r=!1,a=1,ee.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===l.FLOAT&&!this._caps.textureFloatRender?(r=!1,ee.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):f===l.HALF_FLOAT&&!this._caps.colorBufferFloat&&(r=!1,ee.Warn("Render to half float textures is not supported. Mipmap generation forced to false."));let h=e,u=h;if(c.width=h,c.height=u,c.invertY=s,c._compression=o,!this.needPOTTextures||Jd(c.width)&&Jd(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),g=0;this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,c,!0);for(let v=0;v<6;v++)o?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,p,c.width,c.height,0,d,f,null);this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)}this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,c,!0),n&&r&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);let _=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,_.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,_.min),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,null),c.generateMipMaps=r,c.samplingMode=a,c.isReady=!0,c};bt.prototype.updateRawCubeTexture=function(n,e,t,i,r,s=null,a=0){n._bufferViewArray=e,n.format=t,n.type=i,n.invertY=r,n._compression=s;let o=this._gl,l=this._getWebGLTextureType(i),c=this._getInternalFormat(t),f=this._getRGBABufferInternalSizedFormat(i),d=!1;c===o.RGB&&(c=o.RGBA,d=!0),this._bindTextureDirectly(o.TEXTURE_CUBE_MAP,n,!0),this._unpackFlipY(r===void 0?!0:!!r),n.width%4!==0&&o.pixelStorei(o.UNPACK_ALIGNMENT,1);for(let u=0;u<6;u++){let m=e[u];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=bU(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||Jd(n.width)&&Jd(n.height))&&n.generateMipMaps&&a===0&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),n.isReady=!0};bt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let h=this._gl,u=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(u),u.url=n,u.isReady=!1,this._internalTexturesCache.push(u);let m=(p,g)=>{e==null||e.removePendingData(u),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",g)},_=async p=>{if(!u._hardwareTexture)return;let g=a(p);if(!g)return;let v=g instanceof Promise?await g:g,x=u.width;if(o){let S=this._getWebGLTextureType(r),E=this._getInternalFormat(i),T=this._getRGBABufferInternalSizedFormat(r),R=!1;E===h.RGB&&(E=h.RGBA,R=!0),this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,u,!0),this._unpackFlipY(!1);let M=o(v);for(let y=0;y>y;for(let L=0;L<6;L++){let w=M[y][L];R&&(w=bU(w,C,C,r)),h.texImage2D(L,y,T,C,C,0,E,S,w)}}this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(u,v,i,r,d);u.isReady=!0,e==null||e.removePendingData(u),u.onLoadedObservable.notifyObservers(u),u.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{_(p).catch(g=>{m(void 0,g)})},void 0,e==null?void 0:e.offlineProvider,!0,m),u};bt.prototype.createRawTexture2DArray=MU(!1);bt.prototype.createRawTexture3D=MU(!0);bt.prototype.updateRawTexture2DArray=IU(!1);bt.prototype.updateRawTexture3D=IU(!0)});var CU=I(()=>{os();mf();bt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var h,u,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let _=f.createFramebuffer();if(!_)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=_}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(h=n._hardwareTexture)==null?void 0:h.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r):f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,(m=n._hardwareTexture)==null?void 0:m.underlyingResource,r);let d=n.type!==void 0?this._getWebGLTextureType(n.type):f.UNSIGNED_BYTE;return o?s||(s=Y2(n.type,4*e*t)):d===f.UNSIGNED_BYTE?(s||(s=new Uint8Array(4*e*t)),d=f.UNSIGNED_BYTE):(s||(s=new Float32Array(4*e*t)),d=f.FLOAT),a&&this.flushFramebuffer(),f.readPixels(l,c,e,t,f.RGBA,d,s),f.bindFramebuffer(f.FRAMEBUFFER,this._currentFramebuffer),s};bt.prototype._readTexturePixels=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){return Promise.resolve(this._readTexturePixelsSync(n,e,t,i,r,s,a,o,l,c))}});var PU=I(()=>{os();bt.prototype.updateDynamicIndexBuffer=function(n,e,t=0){this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER]=null,this.bindIndexBuffer(n);let i;n.is32Bits?i=e instanceof Uint32Array?e:new Uint32Array(e):i=e instanceof Uint16Array?e:new Uint16Array(e),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,i,this._gl.DYNAMIC_DRAW),this._resetIndexBufferBinding()};bt.prototype.updateDynamicVertexBuffer=function(n,e,t,i){this.bindArrayBuffer(n),t===void 0&&(t=0);let r=e.byteLength||e.length;i===void 0||i>=r&&t===0?e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e)):this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e):e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e).subarray(0,i/4)):(ArrayBuffer.isView(e)?e=new Uint8Array(e.buffer,e.byteOffset,i):e=new Uint8Array(e,0,i),this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e)),this._resetVertexBufferBinding()}});var DU=I(()=>{os();Os();Pt();uo();bt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Oi(this,12);if(t.isCube=!0,this.webGLVersion===1)return ee.Error("Depth cube texture is not supported by WebGL 1."),t;let i={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e},r=this._gl;this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,t,!0),this._setupDepthStencilTexture(t,n,i.bilinearFiltering,i.comparisonFunction);for(let s=0;s<6;s++)i.generateStencil?r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH24_STENCIL8,n,n,0,r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8,null):r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH_COMPONENT24,n,n,0,r.DEPTH_COMPONENT,r.UNSIGNED_INT,null);return this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._internalTexturesCache.push(t),t};bt.prototype._setCubeMapTextureParams=function(n,e,t){let i=this._gl;i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MIN_FILTER,e?i.LINEAR_MIPMAP_LINEAR:i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),n.samplingMode=e?3:2,e&&this.getCaps().textureMaxLevel&&t!==void 0&&t>0&&(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAX_LEVEL,t),n._maxLodLevel=t),this._bindTextureDirectly(i.TEXTURE_CUBE_MAP,null)};bt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h,u=!1,m=null){let _=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),(p,g)=>{let v=this.needPOTTextures?An(g[0].width,this._caps.maxCubemapTextureSize):g[0].width,x=v,S=[_.TEXTURE_CUBE_MAP_POSITIVE_X,_.TEXTURE_CUBE_MAP_POSITIVE_Y,_.TEXTURE_CUBE_MAP_POSITIVE_Z,_.TEXTURE_CUBE_MAP_NEGATIVE_X,_.TEXTURE_CUBE_MAP_NEGATIVE_Y,_.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let E=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:_.RGBA,T=a?this._getInternalFormat(a):_.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(T=E);for(let R=0;R{fg();OA=class{get depthStencilTexture(){return this._depthStencilTexture}setDepthStencilTexture(e,t=!0){t&&this._depthStencilTexture&&this._depthStencilTexture.dispose(),this._depthStencilTexture=e,this._generateDepthBuffer=this._generateStencilBuffer=this._depthStencilTextureWithStencil=!1,e&&(this._generateDepthBuffer=!0,this._generateStencilBuffer=this._depthStencilTextureWithStencil=Kl(e.format))}get depthStencilTextureWithStencil(){return this._depthStencilTextureWithStencil}get isCube(){return this._isCube}get isMulti(){return this._isMulti}get is2DArray(){return this.layers>0}get is3D(){return this.depth>0}get size(){return this.width}get width(){var e;return(e=this._size.width)!=null?e:this._size}get height(){var e;return(e=this._size.height)!=null?e:this._size}get layers(){return this._size.layers||0}get depth(){return this._size.depth||0}get texture(){var e,t;return(t=(e=this._textures)==null?void 0:e[0])!=null?t:null}get textures(){return this._textures}get faceIndices(){return this._faceIndices}get layerIndices(){return this._layerIndices}getBaseArrayLayer(e){var s,a,o,l;if(!this._textures)return-1;let t=this._textures[e],i=(a=(s=this._layerIndices)==null?void 0:s[e])!=null?a:0,r=(l=(o=this._faceIndices)==null?void 0:o[e])!=null?l:0;return t.isCube?i*6+r:t.is3D?0:i}get samples(){return this._samples}setSamples(e,t=!0,i=!1){if(this.samples===e&&!i)return e;let r=this._isMulti?this._engine.updateMultipleRenderTargetTextureSampleCount(this,e,t):this._engine.updateRenderTargetTextureSampleCount(this,e);return this._samples=e,r}resolveMSAATextures(){this.isMulti?this._engine.resolveMultiFramebuffer(this):this._engine.resolveFramebuffer(this)}generateMipMaps(){this._engine._currentRenderTarget===this&&(this.isMulti?this._engine.unBindMultiColorAttachmentFramebuffer(this,!0):this._engine.unBindFramebuffer(this,!0)),this.isMulti?this._engine.generateMipMapsMultiFramebuffer(this):this._engine.generateMipMapsFramebuffer(this)}constructor(e,t,i,r,s){this._textures=null,this._faceIndices=null,this._layerIndices=null,this._samples=1,this._attachments=null,this._generateStencilBuffer=!1,this._generateDepthBuffer=!1,this._depthStencilTextureWithStencil=!1,this.disableAutomaticMSAAResolve=!1,this.resolveMSAAColors=!0,this.resolveMSAADepth=!1,this.resolveMSAAStencil=!1,this.depthReadOnly=!1,this.stencilReadOnly=!1,this._isMulti=e,this._isCube=t,this._size=i,this._engine=r,this._depthStencilTexture=null,this.label=s}setTextures(e){Array.isArray(e)?this._textures=e:e?this._textures=[e]:this._textures=null}setTexture(e,t=0,i=!0){this._textures||(this._textures=[]),this._textures[t]!==e&&(this._textures[t]&&i&&this._textures[t].dispose(),this._textures[t]=e)}setLayerAndFaceIndices(e,t){this._layerIndices=e,this._faceIndices=t}setLayerAndFaceIndex(e=0,t,i){this._layerIndices||(this._layerIndices=[]),this._faceIndices||(this._faceIndices=[]),t!==void 0&&t>=0&&(this._layerIndices[e]=t),i!==void 0&&i>=0&&(this._faceIndices[e]=i)}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;return(o=this._depthStencilTexture)==null||o.dispose(),this._depthStencilTextureWithStencil=i,this._depthStencilTextureLabel=a,this._depthStencilTexture=this._engine.createDepthStencilTexture(this._size,{bilinearFiltering:t,comparisonFunction:e,generateStencil:i,isCube:this._isCube,samples:r,depthTextureFormat:s,label:a},this),this._depthStencilTexture}_shareDepth(e){this.shareDepth(e)}shareDepth(e){this._depthStencilTexture&&(e._depthStencilTexture&&e._depthStencilTexture.dispose(),e._depthStencilTexture=this._depthStencilTexture,e._depthStencilTextureWithStencil=this._depthStencilTextureWithStencil,this._depthStencilTexture.incrementReferences())}_swapAndDie(e){this.texture&&this.texture._swapAndDie(e),this._textures=null,this.dispose(!0)}_cloneRenderTargetWrapper(){var t,i,r,s,a,o,l,c;let e=null;if(this._isMulti){let f=this.textures;if(f&&f.length>0){let d=!1,h=f.length,u=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,u=f[f.length-1].format,h--);let _=[],p=[],g=[],v=[],x=[],S=[],E=[],T={};for(let y=0;y1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{LU();fg();NA=class extends OA{setDepthStencilTexture(e,t=!0){if(super.setDepthStencilTexture(e,t),!e)return;let i=this._engine,r=this._context,s=e._hardwareTexture;if(s&&e._autoMSAAManagement&&this._MSAAFramebuffer){let a=i._currentFramebuffer;i._bindUnboundFramebuffer(this._MSAAFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,Kl(e.format)?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,r.RENDERBUFFER,s.getMSAARenderBuffer()),i._bindUnboundFramebuffer(a)}}constructor(e,t,i,r,s){super(e,t,i,r),this._framebuffer=null,this._depthStencilBuffer=null,this._MSAAFramebuffer=null,this._colorTextureArray=null,this._depthStencilTextureArray=null,this._disposeOnlyFramebuffers=!1,this._currentLOD=0,this._context=s}_cloneRenderTargetWrapper(){let e;return this._colorTextureArray&&this._depthStencilTextureArray?(e=this._engine.createMultiviewRenderTargetTexture(this.width,this.height),e.texture.isReady=!0):e=super._cloneRenderTargetWrapper(),e}_swapRenderTargetWrapper(e){super._swapRenderTargetWrapper(e),e._framebuffer=this._framebuffer,e._depthStencilBuffer=this._depthStencilBuffer,e._MSAAFramebuffer=this._MSAAFramebuffer,e._colorTextureArray=this._colorTextureArray,e._depthStencilTextureArray=this._depthStencilTextureArray,this._framebuffer=this._depthStencilBuffer=this._MSAAFramebuffer=this._colorTextureArray=this._depthStencilTextureArray=null}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){if(this._depthStencilBuffer){let o=this._engine,l=o._currentFramebuffer,c=this._context;o._bindUnboundFramebuffer(this._framebuffer),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.STENCIL_ATTACHMENT,c.RENDERBUFFER,null),o._bindUnboundFramebuffer(l),c.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null}return super.createDepthStencilTexture(e,t,i,r,s,a)}shareDepth(e){super.shareDepth(e);let t=this._context,i=this._depthStencilBuffer,r=e._MSAAFramebuffer||e._framebuffer,s=this._engine;e._depthStencilBuffer&&e._depthStencilBuffer!==i&&t.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=i;let a=e._generateStencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;s._bindUnboundFramebuffer(r),t.framebufferRenderbuffer(t.FRAMEBUFFER,a,t.RENDERBUFFER,i),s._bindUnboundFramebuffer(null)}_bindTextureRenderTarget(e,t=0,i,r=0){var f,d,h,u;let s=e._hardwareTexture;if(!s)return;let a=this._framebuffer,o=this._engine,l=o._currentFramebuffer;o._bindUnboundFramebuffer(a);let c;if(o.webGLVersion>1){let m=this._context;c=m["COLOR_ATTACHMENT"+t],e.is2DArray||e.is3D?(i=(d=i!=null?i:(f=this.layerIndices)==null?void 0:f[t])!=null?d:0,m.framebufferTextureLayer(m.FRAMEBUFFER,c,s.underlyingResource,r,i)):e.isCube?(i=(u=i!=null?i:(h=this.faceIndices)==null?void 0:h[t])!=null?u:0,m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_CUBE_MAP_POSITIVE_X+i,s.underlyingResource,r)):m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_2D,s.underlyingResource,r)}else{let m=this._context;c=m["COLOR_ATTACHMENT"+t+"_WEBGL"];let _=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,_,s.underlyingResource,r)}if(e._autoMSAAManagement&&this._MSAAFramebuffer){let m=this._context;o._bindUnboundFramebuffer(this._MSAAFramebuffer),m.framebufferRenderbuffer(m.FRAMEBUFFER,c,m.RENDERBUFFER,s.getMSAARenderBuffer())}o._bindUnboundFramebuffer(l)}setTexture(e,t=0,i=!0){super.setTexture(e,t,i),this._bindTextureRenderTarget(e,t)}setLayerAndFaceIndices(e,t){var r,s;if(super.setLayerAndFaceIndices(e,t),!this.textures||!this.layerIndices||!this.faceIndices)return;let i=(s=(r=this._attachments)==null?void 0:r.length)!=null?s:this.textures.length;for(let a=0;a{Vr();Ie.prototype.createDepthStencilTexture=function(n,e,t){if(e.isCube){let i=n.width||n;return this._createDepthStencilCubeTexture(i,e)}else return this._createDepthStencilTexture(n,e,t)}});var NU=I(()=>{Os();Pt();os();OU();fg();dC();bt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new NA(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};bt.prototype.createRenderTargetTexture=function(n,e){var _,p;let t=this._createHardwareRenderTargetWrapper(!1,!1,n),i=!0,r=!1,s=!1,a,o=1,l;e!==void 0&&typeof e=="object"&&(i=(_=e.generateDepthBuffer)!=null?_:!0,r=!!e.generateStencilBuffer,s=!!e.noColorAttachment,a=e.colorAttachment,o=(p=e.samples)!=null?p:1,l=e.label);let c=a||(s?null:this._createInternalTexture(n,e,!0,5)),f=n.width||n,d=n.height||n,h=this._currentFramebuffer,u=this._gl,m=u.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(h),t.label=l!=null?l:"RenderTargetWrapper",t._framebuffer=m,t._generateDepthBuffer=i,t._generateStencilBuffer=r,t.setTextures(c),!a)this.updateRenderTargetTextureSampleCount(t,o);else if(t._samples=a.samples,a.samples>1){let g=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=u.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),u.framebufferRenderbuffer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.RENDERBUFFER,g),this._bindUnboundFramebuffer(null)}return t};bt.prototype._createDepthStencilTexture=function(n,e,t){var u;let i=this._gl,r=n.layers||0,s=n.depth||0,a=i.TEXTURE_2D;r!==0?a=i.TEXTURE_2D_ARRAY:s!==0&&(a=i.TEXTURE_3D);let o=new Oi(this,12);if(o.label=e.label,!this._caps.depthTextureExtension)return ee.Error("Depth texture is not supported by your browser or hardware."),o;let l={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e};if(this._bindTextureDirectly(a,o,!0),this._setupDepthStencilTexture(o,n,l.comparisonFunction===0?!1:l.bilinearFiltering,l.comparisonFunction,l.samples),l.depthTextureFormat!==void 0){if(l.depthTextureFormat!==15&&l.depthTextureFormat!==16&&l.depthTextureFormat!==17&&l.depthTextureFormat!==13&&l.depthTextureFormat!==14&&l.depthTextureFormat!==18)return ee.Error(`Depth texture ${l.depthTextureFormat} format is not supported.`),o;o.format=l.depthTextureFormat}else o.format=l.generateStencil?13:16;let c=Kl(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,h=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,h,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,h,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,h,o.width,o.height,0,d,f,null),this._bindTextureDirectly(a,null),this._internalTexturesCache.push(o),t._depthStencilBuffer&&(i.deleteRenderbuffer(t._depthStencilBuffer),t._depthStencilBuffer=null),this._bindUnboundFramebuffer((u=t._MSAAFramebuffer)!=null?u:t._framebuffer),t._generateStencilBuffer=c,t._depthStencilTextureWithStencil=c,t._depthStencilBuffer=this._setupFramebufferDepthAttachments(t._generateStencilBuffer,t._generateDepthBuffer,t.width,t.height,t.samples,o.format),this._bindUnboundFramebuffer(null),o};bt.prototype.updateRenderTargetTextureSampleCount=function(n,e){var s,a;if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let t=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(t.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(t.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let i=(s=n.texture)==null?void 0:s._hardwareTexture;if(i==null||i.releaseMSAARenderBuffers(),n.texture&&e>1&&typeof t.renderbufferStorageMultisample=="function"){let o=t.createFramebuffer();if(!o)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=o,this._bindUnboundFramebuffer(n._MSAAFramebuffer);let l=this._createRenderBuffer(n.texture.width,n.texture.height,e,-1,this._getRGBABufferInternalSizedFormat(n.texture.type,n.texture.format,n.texture._useSRGBBuffer),t.COLOR_ATTACHMENT0,!1);if(!l)throw new Error("Unable to create multi sampled framebuffer");i==null||i.addMSAARenderBuffer(l)}this._bindUnboundFramebuffer((a=n._MSAAFramebuffer)!=null?a:n._framebuffer),n.texture&&(n.texture.samples=e),n._samples=e;let r=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,r),this._bindUnboundFramebuffer(null),e};bt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var h,u;let s=(h=e.width)!=null?h:e,a=(u=e.height)!=null?u:e,o=e.layers||0,l=e.depth||0;n.baseWidth=s,n.baseHeight=a,n.width=s,n.height=a,n.is2DArray=o>0,n.depth=o||l,n.isReady=!0,n.samples=r,n.generateMipMaps=!1,n.samplingMode=t?2:1,n.type=0,n._comparisonFunction=i;let c=this._gl,f=this._getTextureTarget(n),d=this._getSamplingParameters(n.samplingMode,!1);c.texParameteri(f,c.TEXTURE_MAG_FILTER,d.mag),c.texParameteri(f,c.TEXTURE_MIN_FILTER,d.min),c.texParameteri(f,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(f,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),this.webGLVersion>1&&(i===0?(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,515),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.NONE)):(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,i),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.COMPARE_REF_TO_TEXTURE)))}});var wU=I(()=>{os();bt.prototype.setDepthStencilTexture=function(n,e,t,i){n!==void 0&&(e&&(this._boundUniforms[n]=e),!t||!t.depthStencilTexture?this._setTexture(n,null,void 0,void 0,i):this._setTexture(n,t,!1,!0,i))}});var FU=I(()=>{Os();Pt();os();bt.prototype.createRenderTargetCubeTexture=function(n,e){let t=this._createHardwareRenderTargetWrapper(!1,!0,n),i={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:0,samplingMode:3,format:5,...e};i.generateStencilBuffer=i.generateDepthBuffer&&i.generateStencilBuffer,(i.type===1&&!this._caps.textureFloatLinearFiltering||i.type===2&&!this._caps.textureHalfFloatLinearFiltering)&&(i.samplingMode=1);let r=this._gl,s=new Oi(this,5);this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,s,!0);let a=this._getSamplingParameters(i.samplingMode,i.generateMipMaps);i.type===1&&!this._caps.textureFloat&&(i.type=0,ee.Warn("Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type")),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,a.mag),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,a.min),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE);for(let l=0;l<6;l++)r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,this._getRGBABufferInternalSizedFormat(i.type,i.format),n,n,0,this._getInternalFormat(i.format),this._getWebGLTextureType(i.type),null);let o=r.createFramebuffer();return this._bindUnboundFramebuffer(o),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(i.generateStencilBuffer,i.generateDepthBuffer,n,n),i.generateMipMaps&&r.generateMipmap(r.TEXTURE_CUBE_MAP),this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._bindUnboundFramebuffer(null),t._framebuffer=o,t._generateDepthBuffer=i.generateDepthBuffer,t._generateStencilBuffer=i.generateStencilBuffer,s.width=n,s.height=n,s.isReady=!0,s.isCube=!0,s.samples=1,s.generateMipMaps=i.generateMipMaps,s.samplingMode=i.samplingMode,s.type=i.type,s.format=i.format,this._internalTexturesCache.push(s),t.setTextures(s),t}});var BU,am,Sr,Nt,Un=I(()=>{BU=.45454545454545453,am=2.2,Sr=(1+Math.sqrt(5))/2,Nt=.001});function mn(n,e){let t=[];for(let i=0;i{let s=r.previous;if(!s)return;let a=r.next;a?(s.next=a,a.previous=s):(s.next=void 0,n[e]=s),r.next=void 0,r.previous=void 0}}function wA(n,e){let t=joe.map(i=>Koe(n,i,e));return()=>{for(let i of t)i==null||i()}}var joe,ol=I(()=>{joe=["push","splice","pop","shift","unshift"]});function Ft(n,e){UU[n]=e}function xn(n){return UU[n]}var UU,Yi=I(()=>{UU={}});function Si(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function lr(n,e){return n===e?n:Math.random()*(e-n)+n}function mo(n,e,t){return n+(e-n)*t}function VU(n,e,t,i,r){let s=r*r,a=r*s,o=2*a-3*s+1,l=-2*a+3*s,c=a-2*s+r,f=a-s;return n*o+t*l+e*c+i*f}function wt(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function GU(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function po(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function kU(n){if(Math.log2)return Math.floor(Math.log2(n));if(n<0)return NaN;if(n===0)return-1/0;let e=0;if(n<1){for(;n<1;)e++,n=n*2;e=-e}else if(n>1)for(;n>1;)e++,n=Math.floor(n/2);return e}function FA(n,e){let t=n%e;return t===0?e:FA(e,t)}var Vn=I(()=>{});function WU(n){n.updateFlag=om._UpdateFlagSeed++}function hC(n,e,t,i=0){let r=n.asArray(),s=e.asArray(),a=r[0],o=r[1],l=r[2],c=r[3],f=r[4],d=r[5],h=r[6],u=r[7],m=r[8],_=r[9],p=r[10],g=r[11],v=r[12],x=r[13],S=r[14],E=r[15],T=s[0],R=s[1],M=s[2],y=s[3],C=s[4],L=s[5],w=s[6],G=s[7],O=s[8],N=s[9],B=s[10],V=s[11],J=s[12],Q=s[13],te=s[14],X=s[15];t[i]=a*T+o*C+l*O+c*J,t[i+1]=a*R+o*L+l*N+c*Q,t[i+2]=a*M+o*w+l*B+c*te,t[i+3]=a*y+o*G+l*V+c*X,t[i+4]=f*T+d*C+h*O+u*J,t[i+5]=f*R+d*L+h*N+u*Q,t[i+6]=f*M+d*w+h*B+u*te,t[i+7]=f*y+d*G+h*V+u*X,t[i+8]=m*T+_*C+p*O+g*J,t[i+9]=m*R+_*L+p*N+g*Q,t[i+10]=m*M+_*w+p*B+g*te,t[i+11]=m*y+_*G+p*V+g*X,t[i+12]=v*T+x*C+S*O+E*J,t[i+13]=v*R+x*L+S*N+E*Q,t[i+14]=v*M+x*w+S*B+E*te,t[i+15]=v*y+x*G+S*V+E*X}function eh(n,e,t,i=0){hC(n,e,t.asArray(),i),WU(t)}function HU(n,e,t=0){let i=n.asArray();e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15]}function dg(n,e){let t=uC(n,e.asArray());return t&&WU(e),t}function uC(n,e){let t=n.asArray(),i=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],f=t[7],d=t[8],h=t[9],u=t[10],m=t[11],_=t[12],p=t[13],g=t[14],v=t[15],x=u*v-g*m,S=h*v-p*m,E=h*g-p*u,T=d*v-_*m,R=d*g-u*_,M=d*p-_*h,y=+(l*x-c*S+f*E),C=-(o*x-c*T+f*R),L=+(o*S-l*T+f*M),w=-(o*E-l*R+c*M),G=i*y+r*C+s*L+a*w;if(G===0)return!1;let O=1/G,N=c*v-g*f,B=l*v-p*f,V=l*g-p*c,J=o*v-_*f,Q=o*g-_*c,te=o*p-_*l,X=c*m-u*f,Y=l*m-h*f,ve=l*u-h*c,Ee=o*m-d*f,Ue=o*u-d*c,ae=o*h-d*l,me=-(r*x-s*S+a*E),ne=+(i*x-s*T+a*R),fe=-(i*S-r*T+a*M),Pe=+(i*E-r*R+s*M),de=+(r*N-s*B+a*V),Re=-(i*N-s*J+a*Q),Ye=+(i*B-r*J+a*te),Et=-(i*V-r*Q+s*te),Ke=-(r*X-s*Y+a*ve),Ze=+(i*X-s*Ee+a*Ue),Jt=-(i*Y-r*Ee+a*ae),Lt=+(i*ve-r*Ue+s*ae);return e[0]=y*O,e[1]=me*O,e[2]=de*O,e[3]=Ke*O,e[4]=C*O,e[5]=ne*O,e[6]=Re*O,e[7]=Ze*O,e[8]=L*O,e[9]=fe*O,e[10]=Ye*O,e[11]=Jt*O,e[12]=w*O,e[13]=Pe*O,e[14]=Et*O,e[15]=Lt*O,!0}var om,mC=I(()=>{om=class{};om._UpdateFlagSeed=0});var ls,Fe,b,Ii,Xe,q,ze,$,th,ke=I(()=>{Un();ol();Yi();iC();Ni();Vn();mC();ls=n=>parseInt(n.toString().replace(/\W/g,"")),Fe=class n{constructor(e=0,t=0){this.x=e,this.y=t}toString(){return`{X: ${this.x} Y: ${this.y}}`}getClassName(){return"Vector2"}getHashCode(){let e=ls(this.x),t=ls(this.y),i=e;return i=i*397^t,i}toArray(e,t=0){return e[t]=this.x,e[t+1]=this.y,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}asArray(){return[this.x,this.y]}copyFrom(e){return this.x=e.x,this.y=e.y,this}copyFromFloats(e,t){return this.x=e,this.y=t,this}set(e,t){return this.copyFromFloats(e,t)}setAll(e){return this.copyFromFloats(e,e)}add(e){return new n(this.x+e.x,this.y+e.y)}addToRef(e,t){return t.x=this.x+e.x,t.y=this.y+e.y,t}addInPlace(e){return this.x+=e.x,this.y+=e.y,this}addInPlaceFromFloats(e,t){return this.x+=e,this.y+=t,this}addVector3(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new n(this.x-e.x,this.y-e.y)}subtractToRef(e,t){return t.x=this.x-e.x,t.y=this.y-e.y,t}subtractInPlace(e){return this.x-=e.x,this.y-=e.y,this}multiplyInPlace(e){return this.x*=e.x,this.y*=e.y,this}multiply(e){return new n(this.x*e.x,this.y*e.y)}multiplyToRef(e,t){return t.x=this.x*e.x,t.y=this.y*e.y,t}multiplyByFloats(e,t){return new n(this.x*e,this.y*t)}divide(e){return new n(this.x/e.x,this.y/e.y)}divideToRef(e,t){return t.x=this.x/e.x,t.y=this.y/e.y,t}divideInPlace(e){return this.x=this.x/e.x,this.y=this.y/e.y,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.x,e.y)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.x,e.y)}minimizeInPlaceFromFloats(e,t){return this.x=Math.min(e,this.x),this.y=Math.min(t,this.y),this}maximizeInPlaceFromFloats(e,t){return this.x=Math.max(e,this.x),this.y=Math.max(t,this.y),this}subtractFromFloats(e,t){return new n(this.x-e,this.y-t)}subtractFromFloatsToRef(e,t,i){return i.x=this.x-e,i.y=this.y-t,i}negate(){return new n(-this.x,-this.y)}negateInPlace(){return this.x*=-1,this.y*=-1,this}negateToRef(e){return e.x=-this.x,e.y=-this.y,e}scaleInPlace(e){return this.x*=e,this.y*=e,this}scale(e){return new n(this.x*e,this.y*e)}scaleToRef(e,t){return t.x=this.x*e,t.y=this.y*e,t}scaleAndAddToRef(e,t){return t.x+=this.x*e,t.y+=this.y*e,t}equals(e){return e&&this.x===e.x&&this.y===e.y}equalsWithEpsilon(e,t=Nt){return e&&Si(this.x,e.x,t)&&Si(this.y,e.y,t)}equalsToFloats(e,t){return this.x===e&&this.y===t}floor(){return new n(Math.floor(this.x),Math.floor(this.y))}floorToRef(e){return e.x=Math.floor(this.x),e.y=Math.floor(this.y),e}fract(){return new n(this.x-Math.floor(this.x),this.y-Math.floor(this.y))}fractToRef(e){return e.x=this.x-Math.floor(this.x),e.y=this.y-Math.floor(this.y),e}rotate(e){return this.rotateToRef(e,new n)}rotateToRef(e,t){let i=Math.cos(e),r=Math.sin(e);return t.x=i*this.x-r*this.y,t.y=r*this.x+i*this.y,t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSquared(){return this.x*this.x+this.y*this.y}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n;return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0&&(e.x=this.x,e.y=this.y),this.scaleToRef(1/t,e)}clone(){return new n(this.x,this.y)}dot(e){return this.x*e.x+this.y*e.y}static Zero(){return new n(0,0)}static One(){return new n(1,1)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t))}static get ZeroReadOnly(){return n._ZeroReadOnly}static FromArray(e,t=0){return new n(e[t],e[t+1])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i}static FromFloatsToRef(e,t,i){return i.copyFromFloats(e,t),i}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t.x+(-e.x+i.x)*s+(2*e.x-5*t.x+4*i.x-r.x)*a+(-e.x+3*t.x-3*i.x+r.x)*o),c=.5*(2*t.y+(-e.y+i.y)*s+(2*e.y-5*t.y+4*i.y-r.y)*a+(-e.y+3*t.y-3*i.y+r.y)*o);return new n(l,c)}static ClampToRef(e,t,i,r){return r.x=wt(e.x,t.x,i.x),r.y=wt(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=wt(e.x,t.x,i.x),s=wt(e.y,t.y,i.y);return new n(r,s)}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.x*l+i.x*c+t.x*f+r.x*d,u=e.y*l+i.y*c+t.y*f+r.y*d;return new n(h,u)}static Hermite1stDerivative(e,t,i,r,s){return this.Hermite1stDerivativeToRef(e,t,i,r,s,new n)}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a.x=(o-s)*6*e.x+(3*o-4*s+1)*t.x+(-o+s)*6*i.x+(3*o-2*s)*r.x,a.y=(o-s)*6*e.y+(3*o-4*s+1)*t.y+(-o+s)*6*i.y+(3*o-2*s)*r.y,a}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.x=e.x+(t.x-e.x)*i,r.y=e.y+(t.y-e.y)*i,r}static Dot(e,t){return e.x*t.x+e.y*t.y}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=e.xt.x?e.x:t.x,r=e.y>t.y?e.y:t.y;return new n(i,r)}static Transform(e,t){return n.TransformToRef(e,t,new n)}static TransformToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+r[12],a=e.x*r[1]+e.y*r[5]+r[13];return i.x=s,i.y=a,i}static PointInTriangle(e,t,i,r){let s=.5*(-i.y*r.x+t.y*(-i.x+r.x)+t.x*(i.y-r.y)+i.x*r.y),a=s<0?-1:1,o=(t.y*r.x-t.x*r.y+(r.y-t.y)*e.x+(t.x-r.x)*e.y)*a,l=(t.x*i.y-t.y*i.x+(t.y-i.y)*e.x+(i.x-t.x)*e.y)*a;return o>0&&l>0&&o+l<2*s*a}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y;return i*i+r*r}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2)}static DistanceOfPointFromSegment(e,t,i){let r=n.DistanceSquared(t,i);if(r===0)return n.Distance(e,t);let s=i.subtract(t),a=Math.max(0,Math.min(1,n.Dot(e.subtract(t),s)/r)),o=t.add(s.multiplyByFloats(a,a));return n.Distance(e,o)}};Fe._V8PerformanceHack=new Fe(.5,.5);Fe._ZeroReadOnly=Fe.Zero();Object.defineProperties(Fe.prototype,{dimension:{value:[2]},rank:{value:1}});b=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}constructor(e=0,t=0,i=0){this._isDirty=!0,this._x=e,this._y=t,this._z=i}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z}}`}getClassName(){return"Vector3"}getHashCode(){let e=ls(this._x),t=ls(this._y),i=ls(this._z),r=e;return r=r*397^t,r=r*397^i,r}asArray(){return[this._x,this._y,this._z]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toQuaternion(){return Xe.RotationYawPitchRoll(this._y,this._x,this._z)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._isDirty=!0,this}addInPlaceFromFloats(e,t,i){return this._x+=e,this._y+=t,this._z+=i,this._isDirty=!0,this}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z)}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._isDirty=!0,t}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._isDirty=!0,this}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z)}subtractToRef(e,t){return this.subtractFromFloatsToRef(e._x,e._y,e._z,t)}subtractFromFloats(e,t,i){return new n(this._x-e,this._y-t,this._z-i)}subtractFromFloatsToRef(e,t,i,r){return r._x=this._x-e,r._y=this._y-t,r._z=this._z-i,r._isDirty=!0,r}negate(){return new n(-this._x,-this._y,-this._z)}negateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}negateToRef(e){return e._x=this._x*-1,e._y=this._y*-1,e._z=this._z*-1,e._isDirty=!0,e}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._isDirty=!0,t}getNormalToRef(e){let t=this.length(),i=Math.acos(this._y/t),r=Math.atan2(this._z,this._x);i>Math.PI/2?i-=Math.PI/2:i+=Math.PI/2;let s=t*Math.sin(i)*Math.cos(r),a=t*Math.cos(i),o=t*Math.sin(i)*Math.sin(r);return e.set(s,a,o),e}applyRotationQuaternionToRef(e,t){let i=this._x,r=this._y,s=this._z,a=e._x,o=e._y,l=e._z,c=e._w,f=2*(o*s-l*r),d=2*(l*i-a*s),h=2*(a*r-o*i);return t._x=i+c*f+o*h-l*d,t._y=r+c*d+l*f-a*h,t._z=s+c*h+a*d-o*f,t._isDirty=!0,t}applyRotationQuaternionInPlace(e){return this.applyRotationQuaternionToRef(e,this)}applyRotationQuaternion(e){return this.applyRotationQuaternionToRef(e,new n)}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._isDirty=!0,t}projectOnPlane(e,t){return this.projectOnPlaneToRef(e,t,new n)}projectOnPlaneToRef(e,t,i){let r=e.normal,s=e.d,a=ze.Vector3[0];this.subtractToRef(t,a),a.normalize();let o=n.Dot(a,r);if(Math.abs(o)<1e-10)i.setAll(1/0);else{let l=-(n.Dot(t,r)+s)/o,c=a.scaleInPlace(l);t.addToRef(c,i)}return i}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z}equalsWithEpsilon(e,t=Nt){return e&&Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)}equalsToFloats(e,t,i){return this._x===e&&this._y===t&&this._z===i}multiplyInPlace(e){return this._x*=e._x,this._y*=e._y,this._z*=e._z,this._isDirty=!0,this}multiply(e){return this.multiplyByFloats(e._x,e._y,e._z)}multiplyToRef(e,t){return t._x=this._x*e._x,t._y=this._y*e._y,t._z=this._z*e._z,t._isDirty=!0,t}multiplyByFloats(e,t,i){return new n(this._x*e,this._y*t,this._z*i)}divide(e){return new n(this._x/e._x,this._y/e._y,this._z/e._z)}divideToRef(e,t){return t._x=this._x/e._x,t._y=this._y/e._y,t._z=this._z/e._z,t._isDirty=!0,t}divideInPlace(e){return this._x=this._x/e._x,this._y=this._y/e._y,this._z=this._z/e._z,this._isDirty=!0,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e._x,e._y,e._z)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e._x,e._y,e._z)}minimizeInPlaceFromFloats(e,t,i){return ethis._x&&(this.x=e),t>this._y&&(this.y=t),i>this._z&&(this.z=i),this}isNonUniformWithinEpsilon(e){let t=Math.abs(this._x),i=Math.abs(this._y);if(!Si(t,i,e))return!0;let r=Math.abs(this._z);return!Si(t,r,e)||!Si(i,r,e)}get isNonUniform(){let e=Math.abs(this._x),t=Math.abs(this._y);if(e!==t)return!0;let i=Math.abs(this._z);return e!==i}floorToRef(e){return e._x=Math.floor(this._x),e._y=Math.floor(this._y),e._z=Math.floor(this._z),e._isDirty=!0,e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))}fractToRef(e){return e._x=this._x-Math.floor(this._x),e._y=this._y-Math.floor(this._y),e._z=this._z-Math.floor(this._z),e._isDirty=!0,e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z))}length(){return Math.sqrt(this.lengthSquared())}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z}get hasAZeroComponent(){return this._x*this._y*this._z===0}normalize(){return this.normalizeFromLength(this.length())}reorderInPlace(e){if(e=e.toLowerCase(),e==="xyz")return this;let t=ze.Vector3[0].copyFrom(this);return this.x=t[e[0]],this.y=t[e[1]],this.z=t[e[2]],this}rotateByQuaternionToRef(e,t){return e.toRotationMatrix(ze.Matrix[0]),n.TransformCoordinatesToRef(this,ze.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,ze.Vector3[0]),ze.Vector3[0].rotateByQuaternionToRef(e,ze.Vector3[0]),t.addToRef(ze.Vector3[0],i),i}cross(e){return n.CrossToRef(this,e,new n)}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e._x=this._x,e._y=this._y,e._z=this._z,e._isDirty=!0,e):this.scaleToRef(1/t,e)}clone(){return new n(this._x,this._y,this._z)}copyFrom(e){return this.copyFromFloats(e._x,e._y,e._z)}copyFromFloats(e,t,i){return this._x=e,this._y=t,this._z=i,this._isDirty=!0,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this._x=this._y=this._z=e,this._isDirty=!0,this}static GetClipFactor(e,t,i,r){let s=n.Dot(e,i),a=n.Dot(t,i);return(s-r)/(s-a)}static GetAngleBetweenVectors(e,t,i){let r=e.normalizeToRef(ze.Vector3[1]),s=t.normalizeToRef(ze.Vector3[2]),a=n.Dot(r,s);a=wt(a,-1,1);let o=Math.acos(a),l=ze.Vector3[3];return n.CrossToRef(r,s,l),n.Dot(l,i)>0?isNaN(o)?0:o:isNaN(o)?-Math.PI:-Math.acos(a)}static GetAngleBetweenVectorsOnPlane(e,t,i){ze.Vector3[0].copyFrom(e);let r=ze.Vector3[0];ze.Vector3[1].copyFrom(t);let s=ze.Vector3[1];ze.Vector3[2].copyFrom(i);let a=ze.Vector3[2],o=ze.Vector3[3],l=ze.Vector3[4];r.normalize(),s.normalize(),a.normalize(),n.CrossToRef(a,r,o),n.CrossToRef(o,a,l);let c=Math.atan2(n.Dot(s,o),n.Dot(s,l));return GU(c)}static PitchYawRollToMoveBetweenPointsToRef(e,t,i){let r=$.Vector3[0];return t.subtractToRef(e,r),i._y=Math.atan2(r.x,r.z)||0,i._x=Math.atan2(Math.sqrt(r.x**2+r.z**2),r.y)||0,i._z=0,i._isDirty=!0,i}static PitchYawRollToMoveBetweenPoints(e,t){let i=n.Zero();return n.PitchYawRollToMoveBetweenPointsToRef(e,t,i)}static SlerpToRef(e,t,i,r){i=wt(i,0,1);let s=ze.Vector3[0],a=ze.Vector3[1];s.copyFrom(e);let o=s.length();s.normalizeFromLength(o),a.copyFrom(t);let l=a.length();a.normalizeFromLength(l);let c=n.Dot(s,a),f,d;if(c<1-Nt){let h=Math.acos(c),u=1/Math.sin(h);f=Math.sin((1-i)*h)*u,d=Math.sin(i*h)*u}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(mo(o,l,i)),r}static SmoothToRef(e,t,i,r,s){return n.SlerpToRef(e,t,r===0?1:i/r,s),s}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromFloatArray(e,t){return n.FromArray(e,t)}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._isDirty=!0,i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i)}static FromFloatsToRef(e,t,i,r){return r.copyFromFloats(e,t,i),r}static Zero(){return new n(0,0,0)}static One(){return new n(1,1,1)}static Up(){return new n(0,1,0)}static get UpReadOnly(){return n._UpReadOnly}static get DownReadOnly(){return n._DownReadOnly}static get RightReadOnly(){return n._RightReadOnly}static get LeftReadOnly(){return n._LeftReadOnly}static get LeftHandedForwardReadOnly(){return n._LeftHandedForwardReadOnly}static get RightHandedForwardReadOnly(){return n._RightHandedForwardReadOnly}static get LeftHandedBackwardReadOnly(){return n._LeftHandedBackwardReadOnly}static get RightHandedBackwardReadOnly(){return n._RightHandedBackwardReadOnly}static get ZeroReadOnly(){return n._ZeroReadOnly}static get OneReadOnly(){return n._OneReadOnly}static Down(){return new n(0,-1,0)}static Forward(e=!1){return new n(0,0,e?-1:1)}static Backward(e=!1){return new n(0,0,e?1:-1)}static Right(){return new n(1,0,0)}static Left(){return new n(-1,0,0)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t),lr(e,t))}static TransformCoordinates(e,t){let i=n.Zero();return n.TransformCoordinatesToRef(e,t,i),i}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=1/(e*a[3]+t*a[7]+i*a[11]+a[15]);return s._x=o*f,s._y=l*f,s._z=c*f,s._isDirty=!0,s}static TransformNormal(e,t){let i=n.Zero();return n.TransformNormalToRef(e,t,i),i}static TransformNormalToRef(e,t,i){return this.TransformNormalFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformNormalFromFloatsToRef(e,t,i,r,s){let a=r.m;return s._x=e*a[0]+t*a[4]+i*a[8],s._y=e*a[1]+t*a[5]+i*a[9],s._z=e*a[2]+t*a[6]+i*a[10],s._isDirty=!0,s}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t._x+(-e._x+i._x)*s+(2*e._x-5*t._x+4*i._x-r._x)*a+(-e._x+3*t._x-3*i._x+r._x)*o),c=.5*(2*t._y+(-e._y+i._y)*s+(2*e._y-5*t._y+4*i._y-r._y)*a+(-e._y+3*t._y-3*i._y+r._y)*o),f=.5*(2*t._z+(-e._z+i._z)*s+(2*e._z-5*t._z+4*i._z-r._z)*a+(-e._z+3*t._z-3*i._z+r._z)*o);return new n(l,c,f)}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){let s=e._x;s=s>i._x?i._x:s,s=si._y?i._y:a,a=ai._z?i._z:o,o=o0&&C<0?(w.copyFrom(a),G=t,O=i):C>0&&L<0?(w.copyFrom(l),G=i,O=r):(w.copyFrom(o).scaleInPlace(-1),G=r,O=t);let N=ze.Vector3[9],B=ze.Vector3[4];if(G.subtractToRef(v,T),O.subtractToRef(v,N),n.CrossToRef(T,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(_*p);let J=ze.Vector3[5];n.CrossToRef(w,B,J),J.normalize();let Q=ze.Vector3[9];Q.copyFrom(G).subtractInPlace(v);let te=Q.length();if(tethis._x&&(this.x=e.x),e.y>this._y&&(this.y=e.y),e.z>this._z&&(this.z=e.z),e.w>this._w&&(this.w=e.w),this}minimizeInPlaceFromFloats(e,t,i,r){return this.x=Math.min(e,this._x),this.y=Math.min(t,this._y),this.z=Math.min(i,this._z),this.w=Math.min(r,this._w),this}maximizeInPlaceFromFloats(e,t,i,r){return this.x=Math.max(e,this._x),this.y=Math.max(t,this._y),this.z=Math.max(i,this._z),this.w=Math.max(r,this._w),this}floorToRef(e){return e.x=Math.floor(this._x),e.y=Math.floor(this._y),e.z=Math.floor(this._z),e.w=Math.floor(this._w),e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),Math.floor(this._w))}fractToRef(e){return e.x=this._x-Math.floor(this._x),e.y=this._y-Math.floor(this._y),e.z=this._z-Math.floor(this._z),e.w=this._w-Math.floor(this._w),e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z),this._w-Math.floor(this._w))}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e.x=this._x,e.y=this._y,e.z=this._z,e.w=this._w,e):this.scaleToRef(1/t,e)}toVector3(){return new b(this._x,this._y,this._z)}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}copyFromFloats(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.x=this.y=this.z=this.w=e,this}dot(e){return this._x*e.x+this._y*e.y+this._z*e.z+this._w*e.w}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i.z=e[t+2],i.w=e[t+3],i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i),i}static FromFloatsToRef(e,t,i,r,s){return s.x=e,s.y=t,s.z=i,s.w=r,s}static Zero(){return new n(0,0,0,0)}static One(){return new n(1,1,1,1)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.x=lr(e,t),i.y=lr(e,t),i.z=lr(e,t),i.w=lr(e,t),i}static Clamp(e,t,i){return n.ClampToRef(e,t,i,new n)}static ClampToRef(e,t,i,r){return r.x=wt(e.x,t.x,i.x),r.y=wt(e.y,t.y,i.y),r.z=wt(e.z,t.z,i.z),r.w=wt(e.w,t.w,i.w),r}static CheckExtends(e,t,i){t.minimizeInPlace(e),i.maximizeInPlace(e)}static get ZeroReadOnly(){return n._ZeroReadOnly}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=new n;return i.copyFrom(e),i.minimizeInPlace(t),i}static Maximize(e,t){let i=new n;return i.copyFrom(e),i.maximizeInPlace(t),i}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.x=(e.x+t.x)/2,i.y=(e.y+t.y)/2,i.z=(e.z+t.z)/2,i.w=(e.w+t.w)/2,i}static TransformCoordinates(e,t){return n.TransformCoordinatesToRef(e,t,new n)}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=e*a[3]+t*a[7]+i*a[11]+a[15];return s.x=o,s.y=l,s.z=c,s.w=f,s}static TransformNormal(e,t){return n.TransformNormalToRef(e,t,new n)}static TransformNormalToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+e.z*r[8],a=e.x*r[1]+e.y*r[5]+e.z*r[9],o=e.x*r[2]+e.y*r[6]+e.z*r[10];return i.x=s,i.y=a,i.z=o,i.w=e.w,i}static TransformNormalFromFloatsToRef(e,t,i,r,s,a){let o=s.m;return a.x=e*o[0]+t*o[4]+i*o[8],a.y=e*o[1]+t*o[5]+i*o[9],a.z=e*o[2]+t*o[6]+i*o[10],a.w=r,a}static FromVector3(e,t=0){return new n(e._x,e._y,e._z,t)}static Dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}};Ii._V8PerformanceHack=new Ii(.5,.5,.5,.5);Ii._ZeroReadOnly=Ii.Zero();Object.defineProperties(Ii.prototype,{dimension:{value:[4]},rank:{value:1}});Xe=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}get w(){return this._w}set w(e){this._w=e,this._isDirty=!0}constructor(e=0,t=0,i=0,r=1){this._isDirty=!0,this._x=e,this._y=t,this._z=i,this._w=r}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z} W: ${this._w}}`}getClassName(){return"Quaternion"}getHashCode(){let e=ls(this._x),t=ls(this._y),i=ls(this._z),r=ls(this._w),s=e;return s=s*397^t,s=s*397^i,s=s*397^r,s}asArray(){return[this._x,this._y,this._z,this._w]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z&&this._w===e._w}equalsWithEpsilon(e,t=Nt){return e&&Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)&&Si(this._w,e._w,t)}isApprox(e,t=Nt){return e&&(Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)&&Si(this._w,e._w,t)||Si(this._x,-e._x,t)&&Si(this._y,-e._y,t)&&Si(this._z,-e._z,t)&&Si(this._w,-e._w,t))}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._w=e._w,this._isDirty=!0,this}copyFromFloats(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._isDirty=!0,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.copyFromFloats(e,e,e,e)}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z,this._w+e._w)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._w+=e._w,this._isDirty=!0,this}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._w=this._w+e._w,t._isDirty=!0,t}addInPlaceFromFloats(e,t,i,r){return this._x+=e,this._y+=t,this._z+=i,this._w+=r,this._isDirty=!0,this}subtractToRef(e,t){return t._x=this._x-e._x,t._y=this._y-e._y,t._z=this._z-e._z,t._w=this._w-e._w,t._isDirty=!0,t}subtractFromFloats(e,t,i,r){return this.subtractFromFloatsToRef(e,t,i,r,new n)}subtractFromFloatsToRef(e,t,i,r,s){return s._x=this._x-e,s._y=this._y-t,s._z=this._z-i,s._w=this._w-r,s._isDirty=!0,s}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z,this._w-e._w)}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._w-=e._w,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e,this._w*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._w=this._w*e,t._isDirty=!0,t}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._w*=e,this._isDirty=!0,this}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._w+=this._w*e,t._isDirty=!0,t}multiply(e){let t=new n(0,0,0,1);return this.multiplyToRef(e,t),t}multiplyToRef(e,t){let i=this._x*e._w+this._y*e._z-this._z*e._y+this._w*e._x,r=-this._x*e._z+this._y*e._w+this._z*e._x+this._w*e._y,s=this._x*e._y-this._y*e._x+this._z*e._w+this._w*e._z,a=-this._x*e._x-this._y*e._y-this._z*e._z+this._w*e._w;return t.copyFromFloats(i,r,s,a),t}multiplyInPlace(e){return this.multiplyToRef(e,this)}multiplyByFloats(e,t,i,r){return this._x*=e,this._y*=t,this._z*=i,this._w*=r,this._isDirty=!0,this}divide(e){throw new ReferenceError("Can not divide a quaternion")}divideToRef(e,t){throw new ReferenceError("Can not divide a quaternion")}divideInPlace(e){throw new ReferenceError("Can not divide a quaternion")}minimizeInPlace(){throw new ReferenceError("Can not minimize a quaternion")}minimizeInPlaceFromFloats(){throw new ReferenceError("Can not minimize a quaternion")}maximizeInPlace(){throw new ReferenceError("Can not maximize a quaternion")}maximizeInPlaceFromFloats(){throw new ReferenceError("Can not maximize a quaternion")}negate(){return this.negateToRef(new n)}negateInPlace(){return this._x=-this._x,this._y=-this._y,this._z=-this._z,this._w=-this._w,this._isDirty=!0,this}negateToRef(e){return e._x=-this._x,e._y=-this._y,e._z=-this._z,e._w=-this._w,e._isDirty=!0,e}equalsToFloats(e,t,i,r){return this._x===e&&this._y===t&&this._z===i&&this._w===r}floorToRef(e){throw new ReferenceError("Can not floor a quaternion")}floor(){throw new ReferenceError("Can not floor a quaternion")}fractToRef(e){throw new ReferenceError("Can not fract a quaternion")}fract(){throw new ReferenceError("Can not fract a quaternion")}conjugateToRef(e){return e.copyFromFloats(-this._x,-this._y,-this._z,this._w),e}conjugateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}conjugate(){return new n(-this._x,-this._y,-this._z,this._w)}invert(){let e=this.conjugate(),t=this.lengthSquared();return t==0||t==1||e.scaleInPlace(1/t),e}invertInPlace(){this.conjugateInPlace();let e=this.lengthSquared();return e==0||e==1?this:(this.scaleInPlace(1/e),this)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this.lengthSquared())}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n(0,0,0,1);return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0||t===1?e.copyFromFloats(this._x,this._y,this._z,this._w):this.scaleToRef(1/t,e)}toEulerAngles(){let e=b.Zero();return this.toEulerAnglesToRef(e),e}toEulerAnglesToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=r*t-i*s,o=.4999999;if(a<-o)e._y=2*Math.atan2(r,s),e._x=Math.PI/2,e._z=0,e._isDirty=!0;else if(a>o)e._y=2*Math.atan2(r,s),e._x=-Math.PI/2,e._z=0,e._isDirty=!0;else{let l=s*s,c=t*t,f=i*i,d=r*r;e._z=Math.atan2(2*(i*r+t*s),-c-f+d+l),e._x=Math.asin(-2*a),e._y=Math.atan2(2*(t*i+r*s),c-f-d+l),e._isDirty=!0}return e}toAlphaBetaGammaToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=Math.sqrt(i*i+r*r),o=Math.sqrt(t*t+s*s),l=2*Math.atan2(a,o),c=2*Math.atan2(t,s),f=2*Math.atan2(r,i),d=(c+f)/2,h=(c-f)/2;return e.set(h,l,d),e}toRotationMatrix(e){return q.FromQuaternionToRef(this,e),e}fromRotationMatrix(e){return n.FromRotationMatrixToRef(e,this),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}toAxisAngle(){let e=b.Zero(),t=this.toAxisAngleToRef(e);return{axis:e,angle:t}}toAxisAngleToRef(e){let t,i=Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z),r=this._w;return i>0?(t=2*Math.atan2(i,r),e.set(this._x/i,this._y/i,this._z/i)):(t=0,e.set(1,0,0)),t}static FromRotationMatrix(e){let t=new n;return n.FromRotationMatrixToRef(e,t),t}static FromRotationMatrixToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],c=i[9],f=i[2],d=i[6],h=i[10],u=r+l+h,m;return u>0?(m=.5/Math.sqrt(u+1),t._w=.25/m,t._x=(d-c)*m,t._y=(a-f)*m,t._z=(o-s)*m,t._isDirty=!0):r>l&&r>h?(m=2*Math.sqrt(1+r-l-h),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>h?(m=2*Math.sqrt(1+l-r-h),t._w=(a-f)/m,t._x=(s+o)/m,t._y=.25*m,t._z=(c+d)/m,t._isDirty=!0):(m=2*Math.sqrt(1+h-r-l),t._w=(o-s)/m,t._x=(a+f)/m,t._y=(c+d)/m,t._z=.25*m,t._isDirty=!0),t}static Dot(e,t){return e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w}static AreClose(e,t,i=.1){let r=n.Dot(e,t);return 1-r*r<=i}static SmoothToRef(e,t,i,r,s){let a=r===0?1:i/r;return a=wt(a,0,1),n.SlerpToRef(e,t,a,s),s}static Zero(){return new n(0,0,0,0)}static Inverse(e){return new n(-e._x,-e._y,-e._z,e._w)}static InverseToRef(e,t){return t.set(-e._x,-e._y,-e._z,e._w),t}static Identity(){return new n(0,0,0,1)}static IsIdentity(e){return e&&e._x===0&&e._y===0&&e._z===0&&e._w===1}static RotationAxis(e,t){return n.RotationAxisToRef(e,t,new n)}static RotationAxisToRef(e,t,i){i._w=Math.cos(t/2);let r=Math.sin(t/2)/e.length();return i._x=e._x*r,i._y=e._y*r,i._z=e._z*r,i._isDirty=!0,i}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._w=e[t+3],i._isDirty=!0,i}static FromFloatsToRef(e,t,i,r,s){return s.copyFromFloats(e,t,i,r),s}static FromEulerAngles(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerAnglesToRef(e,t,i,r){return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerVector(e){let t=new n;return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromEulerVectorToRef(e,t){return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromUnitVectorsToRef(e,t,i,r=Nt){let s=b.Dot(e,t)+1;return sMath.abs(e.z)?i.set(-e.y,e.x,0,0):i.set(0,-e.z,e.y,0):(b.CrossToRef(e,t,$.Vector3[0]),i.set($.Vector3[0].x,$.Vector3[0].y,$.Vector3[0].z,s)),i.normalize()}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){let s=i*.5,a=t*.5,o=e*.5,l=Math.sin(s),c=Math.cos(s),f=Math.sin(a),d=Math.cos(a),h=Math.sin(o),u=Math.cos(o);return r._x=u*f*c+h*d*l,r._y=h*d*c-u*f*l,r._z=u*d*l-h*f*c,r._w=u*d*c+h*f*l,r._isDirty=!0,r}static RotationAlphaBetaGamma(e,t,i){let r=new n;return n.RotationAlphaBetaGammaToRef(e,t,i,r),r}static RotationAlphaBetaGammaToRef(e,t,i,r){let s=(i+e)*.5,a=(i-e)*.5,o=t*.5;return r._x=Math.cos(a)*Math.sin(o),r._y=Math.sin(a)*Math.sin(o),r._z=Math.sin(s)*Math.cos(o),r._w=Math.cos(s)*Math.cos(o),r._isDirty=!0,r}static RotationQuaternionFromAxis(e,t,i){let r=new n(0,0,0,0);return n.RotationQuaternionFromAxisToRef(e,t,i,r),r}static RotationQuaternionFromAxisToRef(e,t,i,r){let s=ze.Matrix[0];return e=e.normalizeToRef(ze.Vector3[0]),t=t.normalizeToRef(ze.Vector3[1]),i=i.normalizeToRef(ze.Vector3[2]),q.FromXYZAxesToRef(e,t,i,s),n.FromRotationMatrixToRef(s,r),r}static FromLookDirectionLH(e,t){let i=new n;return n.FromLookDirectionLHToRef(e,t,i),i}static FromLookDirectionLHToRef(e,t,i){let r=ze.Matrix[0];return q.LookDirectionLHToRef(e,t,r),n.FromRotationMatrixToRef(r,i),i}static FromLookDirectionRH(e,t){let i=new n;return n.FromLookDirectionRHToRef(e,t,i),i}static FromLookDirectionRHToRef(e,t,i){let r=ze.Matrix[0];return q.LookDirectionRHToRef(e,t,r),n.FromRotationMatrixToRef(r,i)}static Slerp(e,t,i){let r=n.Identity();return n.SlerpToRef(e,t,i,r),r}static SlerpToRef(e,t,i,r){let s,a,o=e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w,l=!1;if(o<0&&(l=!0,o=-o),o>.999999)a=1-i,s=l?-i:i;else{let c=Math.acos(o),f=1/Math.sin(c);a=Math.sin((1-i)*c)*f,s=l?-Math.sin(i*c)*f:Math.sin(i*c)*f}return r._x=a*e._x+s*t._x,r._y=a*e._y+s*t._y,r._z=a*e._z+s*t._z,r._w=a*e._w+s*t._w,r._isDirty=!0,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e._x*l+i._x*c+t._x*f+r._x*d,u=e._y*l+i._y*c+t._y*f+r._y*d,m=e._z*l+i._z*c+t._z*f+r._z*d,_=e._w*l+i._w*c+t._w*f+r._w*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a._x=(o-s)*6*e._x+(3*o-4*s+1)*t._x+(-o+s)*6*i._x+(3*o-2*s)*r._x,a._y=(o-s)*6*e._y+(3*o-4*s+1)*t._y+(-o+s)*6*i._y+(3*o-2*s)*r._y,a._z=(o-s)*6*e._z+(3*o-4*s+1)*t._z+(-o+s)*6*i._z+(3*o-2*s)*r._z,a._w=(o-s)*6*e._w+(3*o-4*s+1)*t._w+(-o+s)*6*i._w+(3*o-2*s)*r._w,a._isDirty=!0,a}static Normalize(e){let t=n.Zero();return n.NormalizeToRef(e,t),t}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){return r.copyFromFloats(wt(e.x,t.x,i.x),wt(e.y,t.y,i.y),wt(e.z,t.z,i.z),wt(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static Minimize(){throw new ReferenceError("Quaternion.Minimize does not make sense")}static Maximize(){throw new ReferenceError("Quaternion.Maximize does not make sense")}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,n.Zero())}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2,(e.w+t.w)/2)}};Xe._V8PerformanceHack=new Xe(.5,.5,.5,.5);Object.defineProperties(Xe.prototype,{dimension:{value:[4]},rank:{value:1}});q=class n{static get Use64Bits(){return as.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=om._UpdateFlagSeed++,this._isIdentity=!1,this._isIdentity3x2=!1,this._isIdentityDirty=!0,this._isIdentity3x2Dirty=!0}_updateIdentityStatus(e,t=!1,i=!1,r=!0){this._isIdentity=e,this._isIdentity3x2=e||i,this._isIdentityDirty=this._isIdentity?!1:t,this._isIdentity3x2Dirty=this._isIdentity3x2?!1:r}constructor(){this._isIdentity=!1,this._isIdentityDirty=!0,this._isIdentity3x2=!0,this._isIdentity3x2Dirty=!0,this.updateFlag=-1,as.MatrixTrackPrecisionChange&&as.MatrixTrackedMatrices.push(this),this._m=new as.MatrixCurrentType(16),this.markAsUpdated()}isIdentity(){if(this._isIdentityDirty){this._isIdentityDirty=!1;let e=this._m;this._isIdentity=e[0]===1&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0&&e[8]===0&&e[9]===0&&e[10]===1&&e[11]===0&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1}return this._isIdentity}isIdentityAs3x2(){return this._isIdentity3x2Dirty&&(this._isIdentity3x2Dirty=!1,this._m[0]!==1||this._m[5]!==1||this._m[15]!==1?this._isIdentity3x2=!1:this._m[1]!==0||this._m[2]!==0||this._m[3]!==0||this._m[4]!==0||this._m[6]!==0||this._m[7]!==0||this._m[8]!==0||this._m[9]!==0||this._m[10]!==0||this._m[11]!==0||this._m[12]!==0||this._m[13]!==0||this._m[14]!==0?this._isIdentity3x2=!1:this._isIdentity3x2=!0),this._isIdentity3x2}determinant(){if(this._isIdentity===!0)return 1;let e=this._m,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=e[9],h=e[10],u=e[11],m=e[12],_=e[13],p=e[14],g=e[15],v=h*g-p*u,x=d*g-_*u,S=d*p-_*h,E=f*g-m*u,T=f*p-h*m,R=f*_-m*d,M=+(o*v-l*x+c*S),y=-(a*v-l*E+c*T),C=+(a*x-o*E+c*R),L=-(a*S-o*T+l*R);return t*M+i*y+r*C+s*L}toString(){return`{${this.m[0]}, ${this.m[1]}, ${this.m[2]}, ${this.m[3]} +`+e;return e}}});var $d,lC=I(()=>{$d=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};$d._Counter=0});var al,LA=I(()=>{lC();al=class extends $d{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function Jd(n){let e=1;do e*=2;while(en-t?t:e}function RU(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function OA(n){return n=n|n>>1,n=n|n>>2,n=n|n>>4,n=n|n>>8,n=n|n>>16,n-(n>>1)}function An(n,e,t=2){let i;switch(t){case 1:i=OA(n);break;case 2:i=cC(n);break;default:i=RU(n);break}return Math.min(i,e)}var uo=I(()=>{});var sm,fC=I(()=>{sm=class{get underlyingResource(){return this._webGLTexture}constructor(e=null,t){if(this._MSAARenderBuffers=null,this._context=t,!e&&(e=t.createTexture(),!e))throw new Error("Unable to create webGL texture");this.set(e)}setUsage(){}set(e){this._webGLTexture=e}reset(){this._webGLTexture=null,this._MSAARenderBuffers=null}addMSAARenderBuffer(e){this._MSAARenderBuffers||(this._MSAARenderBuffers=[]),this._MSAARenderBuffers.push(e)}releaseMSAARenderBuffers(){if(this._MSAARenderBuffers){for(let e of this._MSAARenderBuffers)this._context.deleteRenderbuffer(e);this._MSAARenderBuffers=null}}getMSAARenderBuffer(e=0){var t,i;return(i=(t=this._MSAARenderBuffers)==null?void 0:t[e])!=null?i:null}release(){this.releaseMSAARenderBuffers(),this._webGLTexture&&this._context.deleteTexture(this._webGLTexture),this.reset()}}});function dC(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function Kl(n){return n===13||n===17||n===18||n===19}var fg=I(()=>{});var bU={};Be(bU,{ThinEngine:()=>bt});var hC,bt,os=I(()=>{Zd();Qy();Vr();oC();Pt();ba();AU();xU();LA();uo();fC();Os();mf();nC();fg();aC();hC=class{},bt=class n extends Ie{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return or.ShadersRepository}static set ShadersRepository(e){or.ShadersRepository=e}get supportsUniformBuffers(){return this.webGLVersion>1&&!this.disableUniformBuffers}get needPOTTextures(){return this._webGLVersion<2||this.forcePOTTextures}get _supportsHardwareTextureRescaling(){return!1}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e}snapshotRenderingReset(){this.snapshotRendering=!1}constructor(e,t,i,r){if(i=i||{},super(t!=null?t:i.antialias,i,r),this._name="WebGL",this.forcePOTTextures=!1,this.validateShaderPrograms=!1,this.disableUniformBuffers=!1,this._webGLVersion=1,this._vertexAttribArraysEnabled=[],this._uintIndicesCurrentlySet=!1,this._currentBoundBuffer=new Array,this._currentFramebuffer=null,this._dummyFramebuffer=null,this._currentBufferPointers=new Array,this._currentInstanceLocations=new Array,this._currentInstanceBuffers=new Array,this._vaoRecordInProgress=!1,this._mustWipeVertexAttributes=!1,this._nextFreeTextureSlots=new Array,this._maxSimultaneousTextures=0,this._maxMSAASamplesOverride=null,this._unpackFlipYCached=null,this.enableUnpackFlipYCached=!0,this._boundUniforms={},!e)return;let s;if(e.getContext){if(s=e,i.preserveDrawingBuffer===void 0&&(i.preserveDrawingBuffer=!1),i.xrCompatible===void 0&&(i.xrCompatible=!1),navigator&&navigator.userAgent){this._setupMobileChecks();let l=navigator.userAgent;for(let c of n.ExceptionList){let f=c.key,d=c.targets;if(new RegExp(f).test(l)){if(c.capture&&c.captureConstraint){let u=c.capture,m=c.captureConstraint,p=new RegExp(u).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let u of d)switch(u){case"uniformBuffer":this.disableUniformBuffers=!0;break;case"vao":this.disableVertexArrayObjects=!0;break;case"antialias":i.antialias=!1;break;case"maxMSAASamples":this._maxMSAASamplesOverride=1;break}}}}if(this._doNotHandleContextLost?this._onContextLost=()=>{uA(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,uA(this._gl),ee.Warn("WebGL context lost."),this.onContextLostObservable.notifyObservers(this)},this._onContextRestored=()=>{this._restoreEngineAfterContextLost(()=>this._initGLContext())},s.addEventListener("webglcontextrestored",this._onContextRestored,!1),i.powerPreference=i.powerPreference||"high-performance"),s.addEventListener("webglcontextlost",this._onContextLost,!1),this._badDesktopOS&&(i.xrCompatible=!1),!i.disableWebGL2Support)try{this._gl=s.getContext("webgl2",i)||s.getContext("experimental-webgl2",i),this._gl&&(this._webGLVersion=2,this._shaderPlatformName="WEBGL2",this._gl.deleteQuery||(this._webGLVersion=1,this._shaderPlatformName="WEBGL1"))}catch(l){}if(!this._gl){if(!s)throw new Error("The provided canvas is null or undefined.");try{this._gl=s.getContext("webgl",i)||s.getContext("experimental-webgl",i)}catch(l){throw new Error("WebGL not supported",{cause:l})}}if(!this._gl)throw new Error("WebGL not supported")}else{this._gl=e,s=this._gl.canvas,this._gl.renderbufferStorageMultisample?(this._webGLVersion=2,this._shaderPlatformName="WEBGL2"):this._shaderPlatformName="WEBGL1";let l=this._gl.getContextAttributes();l&&(i.stencil=l.stencil)}this._sharedInit(s),this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),i.useHighPrecisionFloats!==void 0&&(this._highPrecisionShadersAllowed=i.useHighPrecisionFloats),this.resize(),this._initGLContext(),this._initFeatures();for(let l=0;l1?new DA:new PA;let a=`Babylon.js v${n.Version}`;ee.Log(a+` - ${this.description}`),this._renderingCanvas&&this._renderingCanvas.setAttribute&&this._renderingCanvas.setAttribute("data-engine",a);let o=Bn(this._gl);o.validateShaderPrograms=this.validateShaderPrograms,o.parallelShaderCompile=this._caps.parallelShaderCompile}_clearEmptyResources(){this._dummyFramebuffer=null,super._clearEmptyResources()}_getShaderProcessingContext(e){return null}areAllEffectsReady(){for(let e in this._compiledEffects)if(!this._compiledEffects[e].isReady())return!1;return!0}_initGLContext(){var i;this._caps={maxTexturesImageUnits:this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS),maxCombinedTexturesImageUnits:this._gl.getParameter(this._gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),maxSamples:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_SAMPLES):1,maxCubemapTextureSize:this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE),maxRenderTextureSize:this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:this._gl.getParameter(this._gl.MAX_VERTEX_ATTRIBS),maxVaryingVectors:this._gl.getParameter(this._gl.MAX_VARYING_VECTORS),maxFragmentUniformVectors:this._gl.getParameter(this._gl.MAX_FRAGMENT_UNIFORM_VECTORS),maxVertexUniformVectors:this._gl.getParameter(this._gl.MAX_VERTEX_UNIFORM_VECTORS),shaderFloatPrecision:0,parallelShaderCompile:this._gl.getExtension("KHR_parallel_shader_compile")||void 0,standardDerivatives:this._webGLVersion>1||this._gl.getExtension("OES_standard_derivatives")!==null,maxAnisotropy:1,astc:this._gl.getExtension("WEBGL_compressed_texture_astc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),bptc:this._gl.getExtension("EXT_texture_compression_bptc")||this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),s3tc:this._gl.getExtension("WEBGL_compressed_texture_s3tc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),s3tc_srgb:this._gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),pvrtc:this._gl.getExtension("WEBGL_compressed_texture_pvrtc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:this._gl.getExtension("WEBGL_compressed_texture_etc1")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),etc2:this._gl.getExtension("WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBGL_compressed_texture_es3_0"),textureAnisotropicFilterExtension:this._gl.getExtension("EXT_texture_filter_anisotropic")||this._gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||this._gl.getExtension("MOZ_EXT_texture_filter_anisotropic"),uintIndices:this._webGLVersion>1||this._gl.getExtension("OES_element_index_uint")!==null,fragmentDepthSupported:this._webGLVersion>1||this._gl.getExtension("EXT_frag_depth")!==null,highPrecisionShaderSupported:!1,timerQuery:this._gl.getExtension("EXT_disjoint_timer_query_webgl2")||this._gl.getExtension("EXT_disjoint_timer_query"),supportOcclusionQuery:this._webGLVersion>1,canUseTimestampForTimerQuery:!1,drawBuffersExtension:!1,maxMSAASamples:1,colorBufferFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_float")),blendFloat:this._gl.getExtension("EXT_float_blend")!==null,supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:!1,colorBufferHalfFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_half_float")),textureFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_float")),textureHalfFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_half_float")),textureHalfFloatRender:!1,textureFloatLinearFiltering:!1,textureFloatRender:!1,textureHalfFloatLinearFiltering:!1,vertexArrayObject:!1,instancedArrays:!1,textureLOD:!!(this._webGLVersion>1||this._gl.getExtension("EXT_shader_texture_lod")),texelFetch:this._webGLVersion!==1,blendMinMax:!1,multiview:this._gl.getExtension("OVR_multiview2"),oculusMultiview:this._gl.getExtension("OCULUS_multiview"),depthTextureExtension:!1,canUseGLInstanceID:this._webGLVersion>1,canUseGLVertexID:this._webGLVersion>1,supportComputeShaders:!1,supportSRGBBuffers:!1,supportTransformFeedbacks:this._webGLVersion>1,textureMaxLevel:this._webGLVersion>1,texture2DArrayMaxLayerCount:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS):128,disableMorphTargetTexture:!1,textureNorm16:!!this._gl.getExtension("EXT_texture_norm16"),blendParametersPerTarget:!1,dualSourceBlending:!1,supportReadWriteStorageTextures:!1},this._caps.supportFloatTexturesResolve=this._caps.colorBufferFloat,this._caps.rg11b10ufColorRenderable=this._caps.colorBufferFloat,this._glVersion=this._gl.getParameter(this._gl.VERSION);let e=this._gl.getExtension("WEBGL_debug_renderer_info");e!=null&&(this._glRenderer=this._gl.getParameter(e.UNMASKED_RENDERER_WEBGL),this._glVendor=this._gl.getParameter(e.UNMASKED_VENDOR_WEBGL)),this._glVendor||(this._glVendor=this._gl.getParameter(this._gl.VENDOR)||"Unknown vendor"),this._glRenderer||(this._glRenderer=this._gl.getParameter(this._gl.RENDERER)||"Unknown renderer"),this._gl.HALF_FLOAT_OES!==36193&&(this._gl.HALF_FLOAT_OES=36193),this._gl.RGBA16F!==34842&&(this._gl.RGBA16F=34842),this._gl.RGBA32F!==34836&&(this._gl.RGBA32F=34836),this._gl.DEPTH24_STENCIL8!==35056&&(this._gl.DEPTH24_STENCIL8=35056),this._caps.timerQuery&&(this._webGLVersion===1&&(this._gl.getQuery=this._caps.timerQuery.getQueryEXT.bind(this._caps.timerQuery)),this._caps.canUseTimestampForTimerQuery=((i=this._gl.getQuery(this._caps.timerQuery.TIMESTAMP_EXT,this._caps.timerQuery.QUERY_COUNTER_BITS_EXT))!=null?i:0)>0),this._caps.maxAnisotropy=this._caps.textureAnisotropicFilterExtension?this._gl.getParameter(this._caps.textureAnisotropicFilterExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,this._caps.textureFloatLinearFiltering=!!(this._caps.textureFloat&&this._gl.getExtension("OES_texture_float_linear")),this._caps.textureFloatRender=!!(this._caps.textureFloat&&this._canRenderToFloatFramebuffer()),this._caps.textureHalfFloatLinearFiltering=!!(this._webGLVersion>1||this._caps.textureHalfFloat&&this._gl.getExtension("OES_texture_half_float_linear")),this._caps.textureNorm16&&(this._gl.R16_EXT=33322,this._gl.RG16_EXT=33324,this._gl.RGB16_EXT=32852,this._gl.RGBA16_EXT=32859,this._gl.R16_SNORM_EXT=36760,this._gl.RG16_SNORM_EXT=36761,this._gl.RGB16_SNORM_EXT=36762,this._gl.RGBA16_SNORM_EXT=36763);let t=this._gl.getExtension("OES_draw_buffers_indexed");if(this._caps.blendParametersPerTarget=!!t,this._alphaState=new nm(this._caps.blendParametersPerTarget),t&&(this._gl.blendEquationSeparateIndexed=t.blendEquationSeparateiOES.bind(t),this._gl.blendEquationIndexed=t.blendEquationiOES.bind(t),this._gl.blendFuncSeparateIndexed=t.blendFuncSeparateiOES.bind(t),this._gl.blendFuncIndexed=t.blendFunciOES.bind(t),this._gl.colorMaskIndexed=t.colorMaskiOES.bind(t),this._gl.disableIndexed=t.disableiOES.bind(t),this._gl.enableIndexed=t.enableiOES.bind(t)),this._caps.dualSourceBlending=!!this._gl.getExtension("WEBGL_blend_func_extended"),this._caps.astc&&(this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR),this._caps.bptc&&(this._gl.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=this._caps.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT),this._caps.s3tc_srgb&&(this._gl.COMPRESSED_SRGB_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT),this._caps.etc2&&(this._gl.COMPRESSED_SRGB8_ETC2=this._caps.etc2.COMPRESSED_SRGB8_ETC2,this._gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=this._caps.etc2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC),this._webGLVersion>1&&this._gl.HALF_FLOAT_OES!==5131&&(this._gl.HALF_FLOAT_OES=5131),this._caps.textureHalfFloatRender=this._caps.textureHalfFloat&&this._canRenderToHalfFloatFramebuffer(),this._webGLVersion>1)this._caps.drawBuffersExtension=!0,this._caps.maxMSAASamples=this._maxMSAASamplesOverride!==null?this._maxMSAASamplesOverride:this._gl.getParameter(this._gl.MAX_SAMPLES),this._caps.maxDrawBuffers=this._gl.getParameter(this._gl.MAX_DRAW_BUFFERS);else{let r=this._gl.getExtension("WEBGL_draw_buffers");if(r!==null){this._caps.drawBuffersExtension=!0,this._gl.drawBuffers=r.drawBuffersWEBGL.bind(r),this._caps.maxDrawBuffers=this._gl.getParameter(r.MAX_DRAW_BUFFERS_WEBGL),this._gl.DRAW_FRAMEBUFFER=this._gl.FRAMEBUFFER;for(let s=0;s<16;s++)this._gl["COLOR_ATTACHMENT"+s+"_WEBGL"]=r["COLOR_ATTACHMENT"+s+"_WEBGL"]}}if(this._webGLVersion>1)this._caps.depthTextureExtension=!0;else{let r=this._gl.getExtension("WEBGL_depth_texture");r!=null&&(this._caps.depthTextureExtension=!0,this._gl.UNSIGNED_INT_24_8=r.UNSIGNED_INT_24_8_WEBGL)}if(this.disableVertexArrayObjects)this._caps.vertexArrayObject=!1;else if(this._webGLVersion>1)this._caps.vertexArrayObject=!0;else{let r=this._gl.getExtension("OES_vertex_array_object");r!=null&&(this._caps.vertexArrayObject=!0,this._gl.createVertexArray=r.createVertexArrayOES.bind(r),this._gl.bindVertexArray=r.bindVertexArrayOES.bind(r),this._gl.deleteVertexArray=r.deleteVertexArrayOES.bind(r))}if(this._webGLVersion>1)this._caps.instancedArrays=!0;else{let r=this._gl.getExtension("ANGLE_instanced_arrays");r!=null?(this._caps.instancedArrays=!0,this._gl.drawArraysInstanced=r.drawArraysInstancedANGLE.bind(r),this._gl.drawElementsInstanced=r.drawElementsInstancedANGLE.bind(r),this._gl.vertexAttribDivisor=r.vertexAttribDivisorANGLE.bind(r)):this._caps.instancedArrays=!1}if(this._gl.getShaderPrecisionFormat){let r=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.HIGH_FLOAT),s=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.HIGH_FLOAT);if(r&&s&&(this._caps.highPrecisionShaderSupported=r.precision!==0&&s.precision!==0,this._caps.shaderFloatPrecision=Math.min(r.precision,s.precision)),!this._shouldUseHighPrecisionShader){let a=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.MEDIUM_FLOAT),o=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.MEDIUM_FLOAT);a&&o&&(this._caps.shaderFloatPrecision=Math.min(a.precision,o.precision))}this._caps.shaderFloatPrecision<10&&(this._caps.shaderFloatPrecision=10)}if(this._webGLVersion>1)this._caps.blendMinMax=!0;else{let r=this._gl.getExtension("EXT_blend_minmax");r!=null&&(this._caps.blendMinMax=!0,this._gl.MAX=r.MAX_EXT,this._gl.MIN=r.MIN_EXT)}if(!this._caps.supportSRGBBuffers){if(this._webGLVersion>1)this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:WebGL2RenderingContext.SRGB,SRGB8:WebGL2RenderingContext.SRGB8,SRGB8_ALPHA8:WebGL2RenderingContext.SRGB8_ALPHA8};else{let r=this._gl.getExtension("EXT_sRGB");r!=null&&(this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:r.SRGB_EXT,SRGB8:r.SRGB_ALPHA_EXT,SRGB8_ALPHA8:r.SRGB_ALPHA_EXT})}if(this._creationOptions){let r=this._creationOptions.forceSRGBBufferSupportState;r!==void 0&&(this._caps.supportSRGBBuffers=this._caps.supportSRGBBuffers&&r)}}this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=this._gl.LEQUAL,this._depthCullingState.depthMask=!0,this._maxSimultaneousTextures=this._caps.maxCombinedTexturesImageUnits;for(let r=0;r=65535)return new Uint32Array(e);return new Uint16Array(e)}return new Uint16Array(e)}bindArrayBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ARRAY_BUFFER)}bindUniformBlock(e,t,i){let r=e.program,s=this._gl.getUniformBlockIndex(r,t);this._gl.uniformBlockBinding(r,s,i)}bindIndexBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ELEMENT_ARRAY_BUFFER)}_bindBuffer(e,t){(this._vaoRecordInProgress||this._currentBoundBuffer[t]!==e)&&(this._gl.bindBuffer(t,e?e.underlyingResource:null),this._currentBoundBuffer[t]=e)}updateArrayBuffer(e){this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,e)}_vertexAttribPointer(e,t,i,r,s,a,o){let l=this._currentBufferPointers[t];if(!l)return;let c=!1;l.active?(l.buffer!==e&&(l.buffer=e,c=!0),l.size!==i&&(l.size=i,c=!0),l.type!==r&&(l.type=r,c=!0),l.normalized!==s&&(l.normalized=s,c=!0),l.stride!==a&&(l.stride=a,c=!0),l.offset!==o&&(l.offset=o,c=!0)):(c=!0,l.active=!0,l.index=t,l.size=i,l.type=r,l.normalized=s,l.stride=a,l.offset=o,l.buffer=e),(c||this._vaoRecordInProgress)&&(this.bindArrayBuffer(e),r===this._gl.UNSIGNED_INT||r===this._gl.INT?this._gl.vertexAttribIPointer(t,i,r,a,o):this._gl.vertexAttribPointer(t,i,r,s,a,o))}_bindIndexBufferWithCache(e){e!=null&&this._cachedIndexBuffer!==e&&(this._cachedIndexBuffer=e,this.bindIndexBuffer(e),this._uintIndicesCurrentlySet=e.is32Bits)}_bindVertexBuffersAttributes(e,t,i){let r=t.getAttributesNames();this._vaoRecordInProgress||this._unbindVertexArrayObject(),this.unbindAllAttributes();for(let s=0;s=0){let o=r[s],l=null;if(i&&(l=i[o]),l||(l=e[o]),!l)continue;this._gl.enableVertexAttribArray(a),this._vaoRecordInProgress||(this._vertexAttribArraysEnabled[a]=!0);let c=l.getBuffer();c&&(this._vertexAttribPointer(c,a,l.getSize(),l.type,l.normalized,l.byteStride,l.byteOffset),l.getIsInstanced()&&(this._gl.vertexAttribDivisor(a,l.getInstanceDivisor()),this._vaoRecordInProgress||(this._currentInstanceLocations.push(a),this._currentInstanceBuffers.push(c))))}}}recordVertexArrayObject(e,t,i,r){let s=this._gl.createVertexArray();if(!s)throw new Error("Unable to create VAO");return this._vaoRecordInProgress=!0,this._gl.bindVertexArray(s),this._mustWipeVertexAttributes=!0,this._bindVertexBuffersAttributes(e,i,r),this.bindIndexBuffer(t),this._vaoRecordInProgress=!1,this._gl.bindVertexArray(null),s}bindVertexArrayObject(e,t){this._cachedVertexArrayObject!==e&&(this._cachedVertexArrayObject=e,this._gl.bindVertexArray(e),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._uintIndicesCurrentlySet=t!=null&&t.is32Bits,this._mustWipeVertexAttributes=!0)}bindBuffersDirectly(e,t,i,r,s){if(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==s){this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=s;let a=s.getAttributesCount();this._unbindVertexArrayObject(),this.unbindAllAttributes();let o=0;for(let l=0;l=0&&(this._gl.enableVertexAttribArray(c),this._vertexAttribArraysEnabled[c]=!0,this._vertexAttribPointer(e,c,i[l],this._gl.FLOAT,!1,r,o)),o+=i[l]*4}}this._bindIndexBufferWithCache(t)}_unbindVertexArrayObject(){this._cachedVertexArrayObject&&(this._cachedVertexArrayObject=null,this._gl.bindVertexArray(null))}bindBuffers(e,t,i,r){(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==i)&&(this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=i,this._bindVertexBuffersAttributes(e,i,r)),this._bindIndexBufferWithCache(t)}unbindInstanceAttributes(){let e;for(let t=0,i=this._currentInstanceLocations.length;t1||this.isWebGPU)),(o===1&&!this._caps.textureFloatLinearFiltering||o===2&&!this._caps.textureHalfFloatLinearFiltering)&&(l=1),o===1&&!this._caps.textureFloat&&(o=0,ee.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));let p=dC(c),g=Kl(c),v=this._gl,x=new Oi(this,r),S=e.width||e,E=e.height||e,T=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),y=R!==0?v.TEXTURE_2D_ARRAY:T!==0?v.TEXTURE_3D:_?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,g):this._getRGBABufferInternalSizedFormat(o,c,f),L=p?g?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(y,x),R!==0)x.is2DArray=!0,v.texImage3D(y,0,C,S,E,R,0,L,w,null);else if(T!==0)x.is3D=!0,v.texImage3D(y,0,C,S,E,T,0,L,w,null);else if(_){x.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,S,E,0,L,w,null)}else v.texImage2D(y,0,C,S,E,0,L,w,null);if(v.texParameteri(y,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(y,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(y,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(y,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(y),this._bindTextureDirectly(y,null),x._useSRGBBuffer=f,x.baseWidth=S,x.baseHeight=E,x.width=S,x.height=E,x.depth=R||T,x.isReady=!0,x.samples=d,x.generateMipMaps=s,x.samplingMode=l,x.type=o,x.format=c,x.label=h,x.comparisonFunction=m,this._internalTexturesCache.push(x),u){let O;if(dC(x.format)?O=this._setupFramebufferDepthAttachments(Kl(x.format),x.format!==19,x.width,x.height,d,x.format,!0):O=this._createRenderBuffer(x.width,x.height,d,-1,this._getRGBABufferInternalSizedFormat(x.type,x.format,x._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");x._autoMSAAManagement=!0;let N=x._hardwareTexture;N||(N=x._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return x}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers&&(this.webGLVersion>1||t)}createTexture(e,t,i,r,s=3,a=null,o=null,l=null,c=null,f=null,d=null,h,u,m,_){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,g,v,x,S,E)=>{let T=this._gl,R=v.width===p&&v.height===g;S._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(S.format,S._useSRGBBuffer);if(R)return T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let y=this._caps.maxTextureSize;if(v.width>y||v.height>y||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=g,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,g),T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),S.width=p,S.height=g),!1;{let C=new Oi(this,2);this._bindTextureDirectly(T.TEXTURE_2D,C,!0),T.texImage2D(T.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,S,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(T.TEXTURE_2D,S,!0),E()})}return!0},l,c,f,d,h,u,_)}_getTexImageParametersForCreateTexture(e,t){let i,r;return this.webGLVersion===1?(i=this._getInternalFormat(e,t),r=i):(i=this._getInternalFormat(e,!1),r=this._getRGBABufferInternalSizedFormat(0,e,t)),{internalFormat:r,format:i,type:this._gl.UNSIGNED_BYTE}}_rescaleTexture(e,t,i,r,s){}_unpackFlipY(e){this._unpackFlipYCached!==e&&(this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,e?1:0),this.enableUnpackFlipYCached&&(this._unpackFlipYCached=e))}_getUnpackAlignement(){return this._gl.getParameter(this._gl.UNPACK_ALIGNMENT)}_getTextureTarget(e){return e.isCube?this._gl.TEXTURE_CUBE_MAP:e.is3D?this._gl.TEXTURE_3D:e.is2DArray||e.isMultiview?this._gl.TEXTURE_2D_ARRAY:this._gl.TEXTURE_2D}updateTextureSamplingMode(e,t,i=!1){let r=this._getTextureTarget(t),s=this._getSamplingParameters(e,t.useMipMaps||i);this._setTextureParameterInteger(r,this._gl.TEXTURE_MAG_FILTER,s.mag,t),this._setTextureParameterInteger(r,this._gl.TEXTURE_MIN_FILTER,s.min),i&&s.hasMipMaps&&(t.generateMipMaps=!0,this._gl.generateMipmap(r)),this._bindTextureDirectly(r,null),t.samplingMode=e}updateTextureDimensions(e,t,i,r=1){}updateTextureWrappingMode(e,t,i=null,r=null){let s=this._getTextureTarget(e);t!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t),e),e._cachedWrapU=t),i!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(i),e),e._cachedWrapV=i),(e.is2DArray||e.is3D)&&r!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(r),e),e._cachedWrapR=r),this._bindTextureDirectly(s,null)}_uploadCompressedDataToTextureDirectly(e,t,i,r,s,a=0,o=0){let l=this._gl,c=l.TEXTURE_2D;if(e.isCube&&(c=l.TEXTURE_CUBE_MAP_POSITIVE_X+a),e._useSRGBBuffer)switch(t){case 37492:case 36196:this._caps.etc2?t=l.COMPRESSED_SRGB8_ETC2:e._useSRGBBuffer=!1;break;case 37496:this._caps.etc2?t=l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:e._useSRGBBuffer=!1;break;case 36492:t=l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;break;case 37808:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;break;case 37809:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;break;case 37810:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;break;case 37811:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;break;case 37812:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;break;case 37813:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;break;case 37814:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;break;case 37815:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;break;case 37816:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;break;case 37817:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;break;case 37818:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;break;case 37819:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;break;case 37820:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;break;case 37821:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR;break;case 33776:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33777:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33779:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:e._useSRGBBuffer=!1;break;default:e._useSRGBBuffer=!1;break}if(e.generateMipMaps){let f=e._hardwareTexture;f.memoryAllocated||(l.texStorage2D(e.isCube?l.TEXTURE_CUBE_MAP:l.TEXTURE_2D,Math.floor(Math.log2(Math.max(i,r)))+1,t,e.width,e.height),f.memoryAllocated=!0),this._gl.compressedTexSubImage2D(c,o,0,0,i,r,t,s)}else this._gl.compressedTexImage2D(c,o,t,i,r,0,s)}_uploadDataToTextureDirectly(e,t,i=0,r=0,s,a=!1){let o=this._gl,l=this._getWebGLTextureType(e.type),c=this._getInternalFormat(e.format),f=s===void 0?this._getRGBABufferInternalSizedFormat(e.type,e.format,e._useSRGBBuffer):this._getInternalFormat(s,e._useSRGBBuffer);this._unpackFlipY(e.invertY);let d=o.TEXTURE_2D;e.isCube&&(d=o.TEXTURE_CUBE_MAP_POSITIVE_X+i);let h=Math.round(Math.log(e.width)*Math.LOG2E),u=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(h-r,0)),_=a?e.height:Math.pow(2,Math.max(u-r,0));o.texImage2D(d,r,f,m,_,0,c,l,t)}updateTextureData(e,t,i,r,s,a,o=0,l=0,c=!1){let f=this._gl,d=this._getWebGLTextureType(e.type),h=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let u=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,u=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(u,e,!0),f.texSubImage2D(m,l,i,r,s,a,h,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(u,null)}_uploadArrayBufferViewToTexture(e,t,i=0,r=0){let s=this._gl,a=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(a,e,!0),this._uploadDataToTextureDirectly(e,t,i,r),this._bindTextureDirectly(a,null,!0)}_prepareWebGLTextureContinuation(e,t,i,r,s){let a=this._gl;if(!a)return;let o=this._getSamplingParameters(s,!i);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,o.mag),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,o.min),!i&&!r&&a.generateMipmap(a.TEXTURE_2D),this._bindTextureDirectly(a.TEXTURE_2D,null),t&&t.removePendingData(e),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}_prepareWebGLTexture(e,t,i,r,s,a,o,l,c,f){let d=this.getCaps().maxTextureSize,h=Math.min(d,this.needPOTTextures?An(r.width,d):r.width),u=Math.min(d,this.needPOTTextures?An(r.height,d):r.height),m=this._gl;if(m){if(!e._hardwareTexture){i&&i.removePendingData(e);return}this._bindTextureDirectly(m.TEXTURE_2D,e,!0),this._unpackFlipY(s===void 0?!0:!!s),e.baseWidth=r.width,e.baseHeight=r.height,e.width=h,e.height=u,e.isReady=!0,e.type=e.type!==-1?e.type:0,e.format=e.format!==-1?e.format:f!=null?f:t===".jpg"&&!e._useSRGBBuffer?4:5,!l(h,u,r,t,e,()=>{this._prepareWebGLTextureContinuation(e,i,a,o,c)})&&this._prepareWebGLTextureContinuation(e,i,a,o,c)}}_getInternalFormatFromDepthTextureFormat(e,t,i){let r=this._gl;if(!t)return r.STENCIL_INDEX8;let a=i?r.DEPTH_STENCIL:r.DEPTH_COMPONENT;return this.webGLVersion>1?e===15?a=r.DEPTH_COMPONENT16:e===16?a=r.DEPTH_COMPONENT24:e===17||e===13?a=i?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24:e===14?a=r.DEPTH_COMPONENT32F:e===18&&(a=i?r.DEPTH32F_STENCIL8:r.DEPTH_COMPONENT32F):a=r.DEPTH_COMPONENT16,a}_getWebGLTextureTypeFromDepthTextureFormat(e){let t=this._gl,i=t.UNSIGNED_INT;return e===15?i=t.UNSIGNED_SHORT:e===17||e===13?i=t.UNSIGNED_INT_24_8:e===14?i=t.FLOAT:e===18?i=t.FLOAT_32_UNSIGNED_INT_24_8_REV:e===19&&(i=t.UNSIGNED_BYTE),i}_setupFramebufferDepthAttachments(e,t,i,r,s=1,a,o=!1){let l=this._gl;a=a!=null?a:e?13:14;let c=this._getInternalFormatFromDepthTextureFormat(a,t,e);return e&&t?this._createRenderBuffer(i,r,s,l.DEPTH_STENCIL,c,o?-1:l.DEPTH_STENCIL_ATTACHMENT):t?this._createRenderBuffer(i,r,s,c,c,o?-1:l.DEPTH_ATTACHMENT):e?this._createRenderBuffer(i,r,s,c,c,o?-1:l.STENCIL_ATTACHMENT):null}_createRenderBuffer(e,t,i,r,s,a,o=!0){let c=this._gl.createRenderbuffer();return this._updateRenderBuffer(c,e,t,i,r,s,a,o)}_updateRenderBuffer(e,t,i,r,s,a,o,l=!0){let c=this._gl;return c.bindRenderbuffer(c.RENDERBUFFER,e),r>1&&c.renderbufferStorageMultisample?c.renderbufferStorageMultisample(c.RENDERBUFFER,r,a,t,i):c.renderbufferStorage(c.RENDERBUFFER,s,t,i),o!==-1&&c.framebufferRenderbuffer(c.FRAMEBUFFER,o,c.RENDERBUFFER,e),l&&c.bindRenderbuffer(c.RENDERBUFFER,null),e}_releaseTexture(e){this._deleteTexture(e._hardwareTexture),this.unbindAllTextures();let t=this._internalTexturesCache.indexOf(e);t!==-1&&this._internalTexturesCache.splice(t,1),e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureLow&&e._lodTextureLow.dispose(),e._irradianceTexture&&e._irradianceTexture.dispose()}_deleteTexture(e){e==null||e.release()}_setProgram(e){this._currentProgram!==e&&(eU(e,this._gl),this._currentProgram=e)}bindSamplers(e){let t=e.getPipelineContext();this._setProgram(t.program);let i=e.getSamplers();for(let r=0;r-1;if(i&&a&&(this._activeChannel=t._associatedChannel),this._boundTexturesCache[this._activeChannel]!==t||r){if(this._activateCurrentTexture(),t&&t.isMultiview)throw ee.Error(["_bindTextureDirectly called with a multiview texture!",e,t]),"_bindTextureDirectly called with a multiview texture!";this._gl.bindTexture(e,(c=(l=t==null?void 0:t._hardwareTexture)==null?void 0:l.underlyingResource)!=null?c:null),this._boundTexturesCache[this._activeChannel]=t,t&&(t._associatedChannel=this._activeChannel)}else i&&(s=!0,this._activateCurrentTexture());return a&&!i&&this._bindSamplerUniformToChannel(t._associatedChannel,this._activeChannel),s}_bindTexture(e,t,i){if(e===void 0)return;t&&(t._associatedChannel=e),this._activeChannel=e;let r=t?this._getTextureTarget(t):this._gl.TEXTURE_2D;this._bindTextureDirectly(r,t)}unbindAllTextures(){for(let e=0;e1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))}setTexture(e,t,i,r){e!==void 0&&(t&&(this._boundUniforms[e]=t),this._setTexture(e,i))}_bindSamplerUniformToChannel(e,t){let i=this._boundUniforms[e];!i||i._currentState===t||(this._gl.uniform1i(i,t),i._currentState=t)}_getTextureWrapMode(e){switch(e){case 1:return this._gl.REPEAT;case 0:return this._gl.CLAMP_TO_EDGE;case 2:return this._gl.MIRRORED_REPEAT}return this._gl.REPEAT}_setTexture(e,t,i=!1,r=!1,s=""){if(!t)return this._boundTexturesCache[e]!=null&&(this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))),!1;if(t.video){this._activeChannel=e;let c=t.getInternalTexture();c&&(c._associatedChannel=e),t.update()}else if(t.delayLoadState===4)return t.delayLoad(),!1;let a;r?a=t.depthStencilTexture:t.isReady()?a=t.getInternalTexture():t.isCube?a=this.emptyCubeTexture:t.is3D?a=this.emptyTexture3D:t.is2DArray?a=this.emptyTexture2DArray:a=this.emptyTexture,!i&&a&&(a._associatedChannel=e);let o=!0;this._boundTexturesCache[e]===a&&(i||this._bindSamplerUniformToChannel(a._associatedChannel,e),o=!1),this._activeChannel=e;let l=this._getTextureTarget(a);if(o&&this._bindTextureDirectly(l,a,i),a&&!a.isMultiview){if(a.isCube&&a._cachedCoordinatesMode!==t.coordinatesMode){a._cachedCoordinatesMode=t.coordinatesMode;let c=t.coordinatesMode!==3&&t.coordinatesMode!==5?1:0;t.wrapU=c,t.wrapV=c}a._cachedWrapU!==t.wrapU&&(a._cachedWrapU=t.wrapU,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t.wrapU),a)),a._cachedWrapV!==t.wrapV&&(a._cachedWrapV=t.wrapV,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(t.wrapV),a)),a.is3D&&a._cachedWrapR!==t.wrapR&&(a._cachedWrapR=t.wrapR,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(t.wrapR),a)),this._setAnisotropicLevel(l,a,t.anisotropicFilteringLevel)}return!0}setTextureArray(e,t,i,r){if(!(e===void 0||!t)){(!this._textureUnits||this._textureUnits.length!==i.length)&&(this._textureUnits=new Int32Array(i.length));for(let s=0;s=this._caps.maxVertexAttribs||!this._vertexAttribArraysEnabled[e]||this.disableAttributeByIndex(e)}releaseEffects(){this._compiledEffects={},this.onReleaseEffectsObservable.notifyObservers(this)}dispose(){var e;ur()&&this._renderingCanvas&&(this._renderingCanvas.removeEventListener("webglcontextlost",this._onContextLost),this._onContextRestored&&this._renderingCanvas.removeEventListener("webglcontextrestored",this._onContextRestored)),super.dispose(),this._dummyFramebuffer&&this._gl.deleteFramebuffer(this._dummyFramebuffer),this.unbindAllAttributes(),this._boundUniforms={},this._workingCanvas=null,this._workingContext=null,this._currentBufferPointers.length=0,this._currentProgram=null,this._creationOptions.loseContextOnDispose&&((e=this._gl.getExtension("WEBGL_lose_context"))==null||e.loseContext()),uA(this._gl)}attachContextLostEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextlost",e,!1)}attachContextRestoredEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextrestored",e,!1)}getError(){return this._gl.getError()}_canRenderToFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(1)}_canRenderToHalfFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(2)}_canRenderToFramebuffer(e){let t=this._gl;for(;t.getError()!==t.NO_ERROR;);let i=!0,r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,this._getRGBABufferInternalSizedFormat(e),1,1,0,t.RGBA,this._getWebGLTextureType(e),null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);let a=t.checkFramebufferStatus(t.FRAMEBUFFER);if(i=i&&a===t.FRAMEBUFFER_COMPLETE,i=i&&t.getError()===t.NO_ERROR,i&&(t.clear(t.COLOR_BUFFER_BIT),i=i&&t.getError()===t.NO_ERROR),i){t.bindFramebuffer(t.FRAMEBUFFER,null);let o=t.RGBA,l=t.UNSIGNED_BYTE,c=new Uint8Array(4);t.readPixels(0,0,1,1,o,l,c),i=i&&t.getError()===t.NO_ERROR}for(t.deleteTexture(r),t.deleteFramebuffer(s),t.bindFramebuffer(t.FRAMEBUFFER,null);!i&&t.getError()!==t.NO_ERROR;);return i}_getWebGLTextureType(e){if(this._webGLVersion===1){switch(e){case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT_OES;case 0:return this._gl.UNSIGNED_BYTE;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5}return this._gl.UNSIGNED_BYTE}switch(e){case 3:return this._gl.BYTE;case 0:return this._gl.UNSIGNED_BYTE;case 4:return this._gl.SHORT;case 5:return this._gl.UNSIGNED_SHORT;case 6:return this._gl.INT;case 7:return this._gl.UNSIGNED_INT;case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5;case 11:return this._gl.UNSIGNED_INT_2_10_10_10_REV;case 12:return this._gl.UNSIGNED_INT_24_8;case 13:return this._gl.UNSIGNED_INT_10F_11F_11F_REV;case 14:return this._gl.UNSIGNED_INT_5_9_9_9_REV;case 15:return this._gl.FLOAT_32_UNSIGNED_INT_24_8_REV}return this._gl.UNSIGNED_BYTE}_getInternalFormat(e,t=!1){let i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;switch(e){case 0:i=this._gl.ALPHA;break;case 1:i=this._gl.LUMINANCE;break;case 2:i=this._gl.LUMINANCE_ALPHA;break;case 6:case 33322:case 36760:i=this._gl.RED;break;case 7:case 33324:case 36761:i=this._gl.RG;break;case 4:case 32852:case 36762:i=t?this._glSRGBExtensionValues.SRGB:this._gl.RGB;break;case 5:case 32859:case 36763:i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;break}if(this._webGLVersion>1)switch(e){case 8:i=this._gl.RED_INTEGER;break;case 9:i=this._gl.RG_INTEGER;break;case 10:i=this._gl.RGB_INTEGER;break;case 11:i=this._gl.RGBA_INTEGER;break}return i}_getRGBABufferInternalSizedFormat(e,t,i=!1){if(this._webGLVersion===1){if(t!==void 0)switch(t){case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;case 4:return i?this._glSRGBExtensionValues.SRGB:this._gl.RGB}return this._gl.RGBA}switch(e){case 3:switch(t){case 6:return this._gl.R8_SNORM;case 7:return this._gl.RG8_SNORM;case 4:return this._gl.RGB8_SNORM;case 8:return this._gl.R8I;case 9:return this._gl.RG8I;case 10:return this._gl.RGB8I;case 11:return this._gl.RGBA8I;default:return this._gl.RGBA8_SNORM}case 0:switch(t){case 6:return this._gl.R8;case 7:return this._gl.RG8;case 4:return i?this._glSRGBExtensionValues.SRGB8:this._gl.RGB8;case 5:return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8;case 8:return this._gl.R8UI;case 9:return this._gl.RG8UI;case 10:return this._gl.RGB8UI;case 11:return this._gl.RGBA8UI;case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;default:return this._gl.RGBA8}case 4:switch(t){case 8:return this._gl.R16I;case 36760:return this._gl.R16_SNORM_EXT;case 36761:return this._gl.RG16_SNORM_EXT;case 36762:return this._gl.RGB16_SNORM_EXT;case 36763:return this._gl.RGBA16_SNORM_EXT;case 9:return this._gl.RG16I;case 10:return this._gl.RGB16I;case 11:return this._gl.RGBA16I;default:return this._gl.RGBA16I}case 5:switch(t){case 8:return this._gl.R16UI;case 33322:return this._gl.R16_EXT;case 33324:return this._gl.RG16_EXT;case 32852:return this._gl.RGB16_EXT;case 32859:return this._gl.RGBA16_EXT;case 9:return this._gl.RG16UI;case 10:return this._gl.RGB16UI;case 11:return this._gl.RGBA16UI;default:return this._gl.RGBA16UI}case 6:switch(t){case 8:return this._gl.R32I;case 9:return this._gl.RG32I;case 10:return this._gl.RGB32I;case 11:return this._gl.RGBA32I;default:return this._gl.RGBA32I}case 7:switch(t){case 8:return this._gl.R32UI;case 9:return this._gl.RG32UI;case 10:return this._gl.RGB32UI;case 11:return this._gl.RGBA32UI;default:return this._gl.RGBA32UI}case 1:switch(t){case 6:return this._gl.R32F;case 7:return this._gl.RG32F;case 4:return this._gl.RGB32F;case 5:return this._gl.RGBA32F;default:return this._gl.RGBA32F}case 2:switch(t){case 6:return this._gl.R16F;case 7:return this._gl.RG16F;case 4:return this._gl.RGB16F;case 5:return this._gl.RGBA16F;default:return this._gl.RGBA16F}case 10:return this._gl.RGB565;case 13:return this._gl.R11F_G11F_B10F;case 14:return this._gl.RGB9_E5;case 8:return this._gl.RGBA4;case 9:return this._gl.RGB5_A1;case 11:switch(t){case 5:return this._gl.RGB10_A2;case 11:return this._gl.RGB10_A2UI;default:return this._gl.RGB10_A2}}return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8}readPixels(e,t,i,r,s=!0,a=!0,o=null){let l=s?4:3,c=s?this._gl.RGBA:this._gl.RGB,f=i*r*l;if(!o)o=new Uint8Array(f);else if(o.length{Yl();NA=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new uC(e)}sampleFrame(e=Er.Now){if(this._enabled){if(this._lastFrameTimeMs!=null){let t=e-this._lastFrameTimeMs;this._rollingFrameTime.add(t)}this._lastFrameTimeMs=e}}get averageFrameTime(){return this._rollingFrameTime.average}get averageFrameTimeVariance(){return this._rollingFrameTime.variance}get instantaneousFrameTime(){return this._rollingFrameTime.history(0)}get averageFPS(){return 1e3/this._rollingFrameTime.average}get instantaneousFPS(){let e=this._rollingFrameTime.history(0);return e===0?0:1e3/e}get isSaturated(){return this._rollingFrameTime.isSaturated()}enable(){this._enabled=!0}disable(){this._enabled=!1,this._lastFrameTimeMs=null}get isEnabled(){return this._enabled}reset(){this._lastFrameTimeMs=null,this._rollingFrameTime.reset()}},uC=class{constructor(e){this._samples=new Array(e),this.reset()}add(e){let t;if(this.isSaturated()){let i=this._samples[this._pos];t=i-this.average,this.average-=t/(this._sampleCount-1),this._m2-=t*(i-this.average)}else this._sampleCount++;t=e-this.average,this.average+=t/this._sampleCount,this._m2+=t*(e-this.average),this.variance=this._m2/(this._sampleCount-1),this._samples[this._pos]=e,this._pos++,this._pos%=this._samples.length}history(e){if(e>=this._sampleCount||e>=this._samples.length)return 0;let t=this._wrapPosition(this._pos-1);return this._samples[this._wrapPosition(t-e)]}isSaturated(){return this._sampleCount>=this._samples.length}reset(){this.average=0,this.variance=0,this._sampleCount=0,this._pos=0,this._m2=0}_wrapPosition(e){let t=this._samples.length;return(e%t+t)%t}}});var IU=I(()=>{os();bt.prototype.setAlphaMode=function(n,e=!1,t=0){if(this._alphaMode[t]===n){if(!e){let r=n===0;this.depthCullingState.depthMask!==r&&(this.depthCullingState.depthMask=r)}return}let i=n===0;this._alphaState.setAlphaBlend(!i,t),this._alphaState.setAlphaMode(n,t),e||(this.depthCullingState.depthMask=i),this._alphaMode[t]=n}});function yU(n,e,t,i){let r,s=1;i===1?r=new Float32Array(e*t*4):i===2?(r=new Uint16Array(e*t*4),s=15360):i===7?r=new Uint32Array(e*t*4):r=new Uint8Array(e*t*4);for(let a=0;a{Os();Pt();os();uo();bt.prototype.updateRawTexture=function(n,e,t,i,r=null,s=0,a=!1){if(!n)return;let o=this._getRGBABufferInternalSizedFormat(s,t,a),l=this._getInternalFormat(t),c=this._getWebGLTextureType(s);this._bindTextureDirectly(this._gl.TEXTURE_2D,n,!0),this._unpackFlipY(i===void 0?!0:!!i),this._doNotHandleContextLost||(n._bufferView=e,n.format=t,n.type=s,n.invertY=i,n._compression=r),n.width%4!==0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),r&&e?this._gl.compressedTexImage2D(this._gl.TEXTURE_2D,0,this.getCaps().s3tc[r],n.width,n.height,0,e):this._gl.texImage2D(this._gl.TEXTURE_2D,0,o,n.width,n.height,0,l,c,e),n.generateMipMaps&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),n.isReady=!0};bt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Oi(this,3);d.baseWidth=e,d.baseHeight=t,d.width=e,d.height=t,d.format=i,d.generateMipMaps=r,d.samplingMode=a,d.invertY=s,d._compression=o,d.type=l,d._useSRGBBuffer=this._getUseSRGBBuffer(f,!r),this._doNotHandleContextLost||(d._bufferView=n),this.updateRawTexture(d,n,i,s,o,l,d._useSRGBBuffer),this._bindTextureDirectly(this._gl.TEXTURE_2D,d,!0);let h=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,h.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,h.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};bt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Oi(this,8);c.isCube=!0,c.format=t,c.type=i,this._doNotHandleContextLost||(c._bufferViewArray=n);let f=this._getWebGLTextureType(i),d=this._getInternalFormat(t);d===l.RGB&&(d=l.RGBA),f===l.FLOAT&&!this._caps.textureFloatLinearFiltering?(r=!1,a=1,ee.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===this._gl.HALF_FLOAT_OES&&!this._caps.textureHalfFloatLinearFiltering?(r=!1,a=1,ee.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===l.FLOAT&&!this._caps.textureFloatRender?(r=!1,ee.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):f===l.HALF_FLOAT&&!this._caps.colorBufferFloat&&(r=!1,ee.Warn("Render to half float textures is not supported. Mipmap generation forced to false."));let h=e,u=h;if(c.width=h,c.height=u,c.invertY=s,c._compression=o,!this.needPOTTextures||Jd(c.width)&&Jd(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),g=0;this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,c,!0);for(let v=0;v<6;v++)o?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,p,c.width,c.height,0,d,f,null);this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)}this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,c,!0),n&&r&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);let _=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,_.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,_.min),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,null),c.generateMipMaps=r,c.samplingMode=a,c.isReady=!0,c};bt.prototype.updateRawCubeTexture=function(n,e,t,i,r,s=null,a=0){n._bufferViewArray=e,n.format=t,n.type=i,n.invertY=r,n._compression=s;let o=this._gl,l=this._getWebGLTextureType(i),c=this._getInternalFormat(t),f=this._getRGBABufferInternalSizedFormat(i),d=!1;c===o.RGB&&(c=o.RGBA,d=!0),this._bindTextureDirectly(o.TEXTURE_CUBE_MAP,n,!0),this._unpackFlipY(r===void 0?!0:!!r),n.width%4!==0&&o.pixelStorei(o.UNPACK_ALIGNMENT,1);for(let u=0;u<6;u++){let m=e[u];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=yU(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||Jd(n.width)&&Jd(n.height))&&n.generateMipMaps&&a===0&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),n.isReady=!0};bt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let h=this._gl,u=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(u),u.url=n,u.isReady=!1,this._internalTexturesCache.push(u);let m=(p,g)=>{e==null||e.removePendingData(u),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",g)},_=async p=>{if(!u._hardwareTexture)return;let g=a(p);if(!g)return;let v=g instanceof Promise?await g:g,x=u.width;if(o){let S=this._getWebGLTextureType(r),E=this._getInternalFormat(i),T=this._getRGBABufferInternalSizedFormat(r),R=!1;E===h.RGB&&(E=h.RGBA,R=!0),this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,u,!0),this._unpackFlipY(!1);let M=o(v);for(let y=0;y>y;for(let L=0;L<6;L++){let w=M[y][L];R&&(w=yU(w,C,C,r)),h.texImage2D(L,y,T,C,C,0,E,S,w)}}this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(u,v,i,r,d);u.isReady=!0,e==null||e.removePendingData(u),u.onLoadedObservable.notifyObservers(u),u.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{_(p).catch(g=>{m(void 0,g)})},void 0,e==null?void 0:e.offlineProvider,!0,m),u};bt.prototype.createRawTexture2DArray=CU(!1);bt.prototype.createRawTexture3D=CU(!0);bt.prototype.updateRawTexture2DArray=PU(!1);bt.prototype.updateRawTexture3D=PU(!0)});var LU=I(()=>{os();mf();bt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var h,u,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let _=f.createFramebuffer();if(!_)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=_}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(h=n._hardwareTexture)==null?void 0:h.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r):f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,(m=n._hardwareTexture)==null?void 0:m.underlyingResource,r);let d=n.type!==void 0?this._getWebGLTextureType(n.type):f.UNSIGNED_BYTE;return o?s||(s=q2(n.type,4*e*t)):d===f.UNSIGNED_BYTE?(s||(s=new Uint8Array(4*e*t)),d=f.UNSIGNED_BYTE):(s||(s=new Float32Array(4*e*t)),d=f.FLOAT),a&&this.flushFramebuffer(),f.readPixels(l,c,e,t,f.RGBA,d,s),f.bindFramebuffer(f.FRAMEBUFFER,this._currentFramebuffer),s};bt.prototype._readTexturePixels=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){return Promise.resolve(this._readTexturePixelsSync(n,e,t,i,r,s,a,o,l,c))}});var OU=I(()=>{os();bt.prototype.updateDynamicIndexBuffer=function(n,e,t=0){this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER]=null,this.bindIndexBuffer(n);let i;n.is32Bits?i=e instanceof Uint32Array?e:new Uint32Array(e):i=e instanceof Uint16Array?e:new Uint16Array(e),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,i,this._gl.DYNAMIC_DRAW),this._resetIndexBufferBinding()};bt.prototype.updateDynamicVertexBuffer=function(n,e,t,i){this.bindArrayBuffer(n),t===void 0&&(t=0);let r=e.byteLength||e.length;i===void 0||i>=r&&t===0?e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e)):this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e):e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e).subarray(0,i/4)):(ArrayBuffer.isView(e)?e=new Uint8Array(e.buffer,e.byteOffset,i):e=new Uint8Array(e,0,i),this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e)),this._resetVertexBufferBinding()}});var NU=I(()=>{os();Os();Pt();uo();bt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Oi(this,12);if(t.isCube=!0,this.webGLVersion===1)return ee.Error("Depth cube texture is not supported by WebGL 1."),t;let i={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e},r=this._gl;this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,t,!0),this._setupDepthStencilTexture(t,n,i.bilinearFiltering,i.comparisonFunction);for(let s=0;s<6;s++)i.generateStencil?r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH24_STENCIL8,n,n,0,r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8,null):r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH_COMPONENT24,n,n,0,r.DEPTH_COMPONENT,r.UNSIGNED_INT,null);return this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._internalTexturesCache.push(t),t};bt.prototype._setCubeMapTextureParams=function(n,e,t){let i=this._gl;i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MIN_FILTER,e?i.LINEAR_MIPMAP_LINEAR:i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),n.samplingMode=e?3:2,e&&this.getCaps().textureMaxLevel&&t!==void 0&&t>0&&(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAX_LEVEL,t),n._maxLodLevel=t),this._bindTextureDirectly(i.TEXTURE_CUBE_MAP,null)};bt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h,u=!1,m=null){let _=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),(p,g)=>{let v=this.needPOTTextures?An(g[0].width,this._caps.maxCubemapTextureSize):g[0].width,x=v,S=[_.TEXTURE_CUBE_MAP_POSITIVE_X,_.TEXTURE_CUBE_MAP_POSITIVE_Y,_.TEXTURE_CUBE_MAP_POSITIVE_Z,_.TEXTURE_CUBE_MAP_NEGATIVE_X,_.TEXTURE_CUBE_MAP_NEGATIVE_Y,_.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let E=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:_.RGBA,T=a?this._getInternalFormat(a):_.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(T=E);for(let R=0;R{fg();wA=class{get depthStencilTexture(){return this._depthStencilTexture}setDepthStencilTexture(e,t=!0){t&&this._depthStencilTexture&&this._depthStencilTexture.dispose(),this._depthStencilTexture=e,this._generateDepthBuffer=this._generateStencilBuffer=this._depthStencilTextureWithStencil=!1,e&&(this._generateDepthBuffer=!0,this._generateStencilBuffer=this._depthStencilTextureWithStencil=Kl(e.format))}get depthStencilTextureWithStencil(){return this._depthStencilTextureWithStencil}get isCube(){return this._isCube}get isMulti(){return this._isMulti}get is2DArray(){return this.layers>0}get is3D(){return this.depth>0}get size(){return this.width}get width(){var e;return(e=this._size.width)!=null?e:this._size}get height(){var e;return(e=this._size.height)!=null?e:this._size}get layers(){return this._size.layers||0}get depth(){return this._size.depth||0}get texture(){var e,t;return(t=(e=this._textures)==null?void 0:e[0])!=null?t:null}get textures(){return this._textures}get faceIndices(){return this._faceIndices}get layerIndices(){return this._layerIndices}getBaseArrayLayer(e){var s,a,o,l;if(!this._textures)return-1;let t=this._textures[e],i=(a=(s=this._layerIndices)==null?void 0:s[e])!=null?a:0,r=(l=(o=this._faceIndices)==null?void 0:o[e])!=null?l:0;return t.isCube?i*6+r:t.is3D?0:i}get samples(){return this._samples}setSamples(e,t=!0,i=!1){if(this.samples===e&&!i)return e;let r=this._isMulti?this._engine.updateMultipleRenderTargetTextureSampleCount(this,e,t):this._engine.updateRenderTargetTextureSampleCount(this,e);return this._samples=e,r}resolveMSAATextures(){this.isMulti?this._engine.resolveMultiFramebuffer(this):this._engine.resolveFramebuffer(this)}generateMipMaps(){this._engine._currentRenderTarget===this&&(this.isMulti?this._engine.unBindMultiColorAttachmentFramebuffer(this,!0):this._engine.unBindFramebuffer(this,!0)),this.isMulti?this._engine.generateMipMapsMultiFramebuffer(this):this._engine.generateMipMapsFramebuffer(this)}constructor(e,t,i,r,s){this._textures=null,this._faceIndices=null,this._layerIndices=null,this._samples=1,this._attachments=null,this._generateStencilBuffer=!1,this._generateDepthBuffer=!1,this._depthStencilTextureWithStencil=!1,this.disableAutomaticMSAAResolve=!1,this.resolveMSAAColors=!0,this.resolveMSAADepth=!1,this.resolveMSAAStencil=!1,this.depthReadOnly=!1,this.stencilReadOnly=!1,this._isMulti=e,this._isCube=t,this._size=i,this._engine=r,this._depthStencilTexture=null,this.label=s}setTextures(e){Array.isArray(e)?this._textures=e:e?this._textures=[e]:this._textures=null}setTexture(e,t=0,i=!0){this._textures||(this._textures=[]),this._textures[t]!==e&&(this._textures[t]&&i&&this._textures[t].dispose(),this._textures[t]=e)}setLayerAndFaceIndices(e,t){this._layerIndices=e,this._faceIndices=t}setLayerAndFaceIndex(e=0,t,i){this._layerIndices||(this._layerIndices=[]),this._faceIndices||(this._faceIndices=[]),t!==void 0&&t>=0&&(this._layerIndices[e]=t),i!==void 0&&i>=0&&(this._faceIndices[e]=i)}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;return(o=this._depthStencilTexture)==null||o.dispose(),this._depthStencilTextureWithStencil=i,this._depthStencilTextureLabel=a,this._depthStencilTexture=this._engine.createDepthStencilTexture(this._size,{bilinearFiltering:t,comparisonFunction:e,generateStencil:i,isCube:this._isCube,samples:r,depthTextureFormat:s,label:a},this),this._depthStencilTexture}_shareDepth(e){this.shareDepth(e)}shareDepth(e){this._depthStencilTexture&&(e._depthStencilTexture&&e._depthStencilTexture.dispose(),e._depthStencilTexture=this._depthStencilTexture,e._depthStencilTextureWithStencil=this._depthStencilTextureWithStencil,this._depthStencilTexture.incrementReferences())}_swapAndDie(e){this.texture&&this.texture._swapAndDie(e),this._textures=null,this.dispose(!0)}_cloneRenderTargetWrapper(){var t,i,r,s,a,o,l,c;let e=null;if(this._isMulti){let f=this.textures;if(f&&f.length>0){let d=!1,h=f.length,u=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,u=f[f.length-1].format,h--);let _=[],p=[],g=[],v=[],x=[],S=[],E=[],T={};for(let y=0;y1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{wU();fg();FA=class extends wA{setDepthStencilTexture(e,t=!0){if(super.setDepthStencilTexture(e,t),!e)return;let i=this._engine,r=this._context,s=e._hardwareTexture;if(s&&e._autoMSAAManagement&&this._MSAAFramebuffer){let a=i._currentFramebuffer;i._bindUnboundFramebuffer(this._MSAAFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,Kl(e.format)?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,r.RENDERBUFFER,s.getMSAARenderBuffer()),i._bindUnboundFramebuffer(a)}}constructor(e,t,i,r,s){super(e,t,i,r),this._framebuffer=null,this._depthStencilBuffer=null,this._MSAAFramebuffer=null,this._colorTextureArray=null,this._depthStencilTextureArray=null,this._disposeOnlyFramebuffers=!1,this._currentLOD=0,this._context=s}_cloneRenderTargetWrapper(){let e;return this._colorTextureArray&&this._depthStencilTextureArray?(e=this._engine.createMultiviewRenderTargetTexture(this.width,this.height),e.texture.isReady=!0):e=super._cloneRenderTargetWrapper(),e}_swapRenderTargetWrapper(e){super._swapRenderTargetWrapper(e),e._framebuffer=this._framebuffer,e._depthStencilBuffer=this._depthStencilBuffer,e._MSAAFramebuffer=this._MSAAFramebuffer,e._colorTextureArray=this._colorTextureArray,e._depthStencilTextureArray=this._depthStencilTextureArray,this._framebuffer=this._depthStencilBuffer=this._MSAAFramebuffer=this._colorTextureArray=this._depthStencilTextureArray=null}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){if(this._depthStencilBuffer){let o=this._engine,l=o._currentFramebuffer,c=this._context;o._bindUnboundFramebuffer(this._framebuffer),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.STENCIL_ATTACHMENT,c.RENDERBUFFER,null),o._bindUnboundFramebuffer(l),c.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null}return super.createDepthStencilTexture(e,t,i,r,s,a)}shareDepth(e){super.shareDepth(e);let t=this._context,i=this._depthStencilBuffer,r=e._MSAAFramebuffer||e._framebuffer,s=this._engine;e._depthStencilBuffer&&e._depthStencilBuffer!==i&&t.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=i;let a=e._generateStencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;s._bindUnboundFramebuffer(r),t.framebufferRenderbuffer(t.FRAMEBUFFER,a,t.RENDERBUFFER,i),s._bindUnboundFramebuffer(null)}_bindTextureRenderTarget(e,t=0,i,r=0){var f,d,h,u;let s=e._hardwareTexture;if(!s)return;let a=this._framebuffer,o=this._engine,l=o._currentFramebuffer;o._bindUnboundFramebuffer(a);let c;if(o.webGLVersion>1){let m=this._context;c=m["COLOR_ATTACHMENT"+t],e.is2DArray||e.is3D?(i=(d=i!=null?i:(f=this.layerIndices)==null?void 0:f[t])!=null?d:0,m.framebufferTextureLayer(m.FRAMEBUFFER,c,s.underlyingResource,r,i)):e.isCube?(i=(u=i!=null?i:(h=this.faceIndices)==null?void 0:h[t])!=null?u:0,m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_CUBE_MAP_POSITIVE_X+i,s.underlyingResource,r)):m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_2D,s.underlyingResource,r)}else{let m=this._context;c=m["COLOR_ATTACHMENT"+t+"_WEBGL"];let _=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,_,s.underlyingResource,r)}if(e._autoMSAAManagement&&this._MSAAFramebuffer){let m=this._context;o._bindUnboundFramebuffer(this._MSAAFramebuffer),m.framebufferRenderbuffer(m.FRAMEBUFFER,c,m.RENDERBUFFER,s.getMSAARenderBuffer())}o._bindUnboundFramebuffer(l)}setTexture(e,t=0,i=!0){super.setTexture(e,t,i),this._bindTextureRenderTarget(e,t)}setLayerAndFaceIndices(e,t){var r,s;if(super.setLayerAndFaceIndices(e,t),!this.textures||!this.layerIndices||!this.faceIndices)return;let i=(s=(r=this._attachments)==null?void 0:r.length)!=null?s:this.textures.length;for(let a=0;a{Vr();Ie.prototype.createDepthStencilTexture=function(n,e,t){if(e.isCube){let i=n.width||n;return this._createDepthStencilCubeTexture(i,e)}else return this._createDepthStencilTexture(n,e,t)}});var BU=I(()=>{Os();Pt();os();FU();fg();mC();bt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new FA(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};bt.prototype.createRenderTargetTexture=function(n,e){var _,p;let t=this._createHardwareRenderTargetWrapper(!1,!1,n),i=!0,r=!1,s=!1,a,o=1,l;e!==void 0&&typeof e=="object"&&(i=(_=e.generateDepthBuffer)!=null?_:!0,r=!!e.generateStencilBuffer,s=!!e.noColorAttachment,a=e.colorAttachment,o=(p=e.samples)!=null?p:1,l=e.label);let c=a||(s?null:this._createInternalTexture(n,e,!0,5)),f=n.width||n,d=n.height||n,h=this._currentFramebuffer,u=this._gl,m=u.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(h),t.label=l!=null?l:"RenderTargetWrapper",t._framebuffer=m,t._generateDepthBuffer=i,t._generateStencilBuffer=r,t.setTextures(c),!a)this.updateRenderTargetTextureSampleCount(t,o);else if(t._samples=a.samples,a.samples>1){let g=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=u.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),u.framebufferRenderbuffer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.RENDERBUFFER,g),this._bindUnboundFramebuffer(null)}return t};bt.prototype._createDepthStencilTexture=function(n,e,t){var u;let i=this._gl,r=n.layers||0,s=n.depth||0,a=i.TEXTURE_2D;r!==0?a=i.TEXTURE_2D_ARRAY:s!==0&&(a=i.TEXTURE_3D);let o=new Oi(this,12);if(o.label=e.label,!this._caps.depthTextureExtension)return ee.Error("Depth texture is not supported by your browser or hardware."),o;let l={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e};if(this._bindTextureDirectly(a,o,!0),this._setupDepthStencilTexture(o,n,l.comparisonFunction===0?!1:l.bilinearFiltering,l.comparisonFunction,l.samples),l.depthTextureFormat!==void 0){if(l.depthTextureFormat!==15&&l.depthTextureFormat!==16&&l.depthTextureFormat!==17&&l.depthTextureFormat!==13&&l.depthTextureFormat!==14&&l.depthTextureFormat!==18)return ee.Error(`Depth texture ${l.depthTextureFormat} format is not supported.`),o;o.format=l.depthTextureFormat}else o.format=l.generateStencil?13:16;let c=Kl(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,h=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,h,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,h,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,h,o.width,o.height,0,d,f,null),this._bindTextureDirectly(a,null),this._internalTexturesCache.push(o),t._depthStencilBuffer&&(i.deleteRenderbuffer(t._depthStencilBuffer),t._depthStencilBuffer=null),this._bindUnboundFramebuffer((u=t._MSAAFramebuffer)!=null?u:t._framebuffer),t._generateStencilBuffer=c,t._depthStencilTextureWithStencil=c,t._depthStencilBuffer=this._setupFramebufferDepthAttachments(t._generateStencilBuffer,t._generateDepthBuffer,t.width,t.height,t.samples,o.format),this._bindUnboundFramebuffer(null),o};bt.prototype.updateRenderTargetTextureSampleCount=function(n,e){var s,a;if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let t=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(t.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(t.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let i=(s=n.texture)==null?void 0:s._hardwareTexture;if(i==null||i.releaseMSAARenderBuffers(),n.texture&&e>1&&typeof t.renderbufferStorageMultisample=="function"){let o=t.createFramebuffer();if(!o)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=o,this._bindUnboundFramebuffer(n._MSAAFramebuffer);let l=this._createRenderBuffer(n.texture.width,n.texture.height,e,-1,this._getRGBABufferInternalSizedFormat(n.texture.type,n.texture.format,n.texture._useSRGBBuffer),t.COLOR_ATTACHMENT0,!1);if(!l)throw new Error("Unable to create multi sampled framebuffer");i==null||i.addMSAARenderBuffer(l)}this._bindUnboundFramebuffer((a=n._MSAAFramebuffer)!=null?a:n._framebuffer),n.texture&&(n.texture.samples=e),n._samples=e;let r=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,r),this._bindUnboundFramebuffer(null),e};bt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var h,u;let s=(h=e.width)!=null?h:e,a=(u=e.height)!=null?u:e,o=e.layers||0,l=e.depth||0;n.baseWidth=s,n.baseHeight=a,n.width=s,n.height=a,n.is2DArray=o>0,n.depth=o||l,n.isReady=!0,n.samples=r,n.generateMipMaps=!1,n.samplingMode=t?2:1,n.type=0,n._comparisonFunction=i;let c=this._gl,f=this._getTextureTarget(n),d=this._getSamplingParameters(n.samplingMode,!1);c.texParameteri(f,c.TEXTURE_MAG_FILTER,d.mag),c.texParameteri(f,c.TEXTURE_MIN_FILTER,d.min),c.texParameteri(f,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(f,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),this.webGLVersion>1&&(i===0?(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,515),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.NONE)):(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,i),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.COMPARE_REF_TO_TEXTURE)))}});var UU=I(()=>{os();bt.prototype.setDepthStencilTexture=function(n,e,t,i){n!==void 0&&(e&&(this._boundUniforms[n]=e),!t||!t.depthStencilTexture?this._setTexture(n,null,void 0,void 0,i):this._setTexture(n,t,!1,!0,i))}});var VU=I(()=>{Os();Pt();os();bt.prototype.createRenderTargetCubeTexture=function(n,e){let t=this._createHardwareRenderTargetWrapper(!1,!0,n),i={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:0,samplingMode:3,format:5,...e};i.generateStencilBuffer=i.generateDepthBuffer&&i.generateStencilBuffer,(i.type===1&&!this._caps.textureFloatLinearFiltering||i.type===2&&!this._caps.textureHalfFloatLinearFiltering)&&(i.samplingMode=1);let r=this._gl,s=new Oi(this,5);this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,s,!0);let a=this._getSamplingParameters(i.samplingMode,i.generateMipMaps);i.type===1&&!this._caps.textureFloat&&(i.type=0,ee.Warn("Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type")),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,a.mag),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,a.min),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE);for(let l=0;l<6;l++)r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,this._getRGBABufferInternalSizedFormat(i.type,i.format),n,n,0,this._getInternalFormat(i.format),this._getWebGLTextureType(i.type),null);let o=r.createFramebuffer();return this._bindUnboundFramebuffer(o),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(i.generateStencilBuffer,i.generateDepthBuffer,n,n),i.generateMipMaps&&r.generateMipmap(r.TEXTURE_CUBE_MAP),this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._bindUnboundFramebuffer(null),t._framebuffer=o,t._generateDepthBuffer=i.generateDepthBuffer,t._generateStencilBuffer=i.generateStencilBuffer,s.width=n,s.height=n,s.isReady=!0,s.isCube=!0,s.samples=1,s.generateMipMaps=i.generateMipMaps,s.samplingMode=i.samplingMode,s.type=i.type,s.format=i.format,this._internalTexturesCache.push(s),t.setTextures(s),t}});var GU,am,Sr,Nt,Un=I(()=>{GU=.45454545454545453,am=2.2,Sr=(1+Math.sqrt(5))/2,Nt=.001});function mn(n,e){let t=[];for(let i=0;i{let s=r.previous;if(!s)return;let a=r.next;a?(s.next=a,a.previous=s):(s.next=void 0,n[e]=s),r.next=void 0,r.previous=void 0}}function BA(n,e){let t=Joe.map(i=>$oe(n,i,e));return()=>{for(let i of t)i==null||i()}}var Joe,ol=I(()=>{Joe=["push","splice","pop","shift","unshift"]});function Ft(n,e){kU[n]=e}function xn(n){return kU[n]}var kU,Yi=I(()=>{kU={}});function Si(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function lr(n,e){return n===e?n:Math.random()*(e-n)+n}function mo(n,e,t){return n+(e-n)*t}function WU(n,e,t,i,r){let s=r*r,a=r*s,o=2*a-3*s+1,l=-2*a+3*s,c=a-2*s+r,f=a-s;return n*o+t*l+e*c+i*f}function wt(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function HU(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function po(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function zU(n){if(Math.log2)return Math.floor(Math.log2(n));if(n<0)return NaN;if(n===0)return-1/0;let e=0;if(n<1){for(;n<1;)e++,n=n*2;e=-e}else if(n>1)for(;n>1;)e++,n=Math.floor(n/2);return e}function UA(n,e){let t=n%e;return t===0?e:UA(e,t)}var Vn=I(()=>{});function XU(n){n.updateFlag=om._UpdateFlagSeed++}function pC(n,e,t,i=0){let r=n.asArray(),s=e.asArray(),a=r[0],o=r[1],l=r[2],c=r[3],f=r[4],d=r[5],h=r[6],u=r[7],m=r[8],_=r[9],p=r[10],g=r[11],v=r[12],x=r[13],S=r[14],E=r[15],T=s[0],R=s[1],M=s[2],y=s[3],C=s[4],L=s[5],w=s[6],G=s[7],O=s[8],N=s[9],B=s[10],V=s[11],J=s[12],Q=s[13],te=s[14],X=s[15];t[i]=a*T+o*C+l*O+c*J,t[i+1]=a*R+o*L+l*N+c*Q,t[i+2]=a*M+o*w+l*B+c*te,t[i+3]=a*y+o*G+l*V+c*X,t[i+4]=f*T+d*C+h*O+u*J,t[i+5]=f*R+d*L+h*N+u*Q,t[i+6]=f*M+d*w+h*B+u*te,t[i+7]=f*y+d*G+h*V+u*X,t[i+8]=m*T+_*C+p*O+g*J,t[i+9]=m*R+_*L+p*N+g*Q,t[i+10]=m*M+_*w+p*B+g*te,t[i+11]=m*y+_*G+p*V+g*X,t[i+12]=v*T+x*C+S*O+E*J,t[i+13]=v*R+x*L+S*N+E*Q,t[i+14]=v*M+x*w+S*B+E*te,t[i+15]=v*y+x*G+S*V+E*X}function eh(n,e,t,i=0){pC(n,e,t.asArray(),i),XU(t)}function YU(n,e,t=0){let i=n.asArray();e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15]}function dg(n,e){let t=_C(n,e.asArray());return t&&XU(e),t}function _C(n,e){let t=n.asArray(),i=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],f=t[7],d=t[8],h=t[9],u=t[10],m=t[11],_=t[12],p=t[13],g=t[14],v=t[15],x=u*v-g*m,S=h*v-p*m,E=h*g-p*u,T=d*v-_*m,R=d*g-u*_,M=d*p-_*h,y=+(l*x-c*S+f*E),C=-(o*x-c*T+f*R),L=+(o*S-l*T+f*M),w=-(o*E-l*R+c*M),G=i*y+r*C+s*L+a*w;if(G===0)return!1;let O=1/G,N=c*v-g*f,B=l*v-p*f,V=l*g-p*c,J=o*v-_*f,Q=o*g-_*c,te=o*p-_*l,X=c*m-u*f,Y=l*m-h*f,ve=l*u-h*c,Ee=o*m-d*f,Ue=o*u-d*c,ae=o*h-d*l,me=-(r*x-s*S+a*E),ne=+(i*x-s*T+a*R),fe=-(i*S-r*T+a*M),Pe=+(i*E-r*R+s*M),de=+(r*N-s*B+a*V),Re=-(i*N-s*J+a*Q),Ye=+(i*B-r*J+a*te),Et=-(i*V-r*Q+s*te),Ke=-(r*X-s*Y+a*ve),Ze=+(i*X-s*Ee+a*Ue),Jt=-(i*Y-r*Ee+a*ae),Lt=+(i*ve-r*Ue+s*ae);return e[0]=y*O,e[1]=me*O,e[2]=de*O,e[3]=Ke*O,e[4]=C*O,e[5]=ne*O,e[6]=Re*O,e[7]=Ze*O,e[8]=L*O,e[9]=fe*O,e[10]=Ye*O,e[11]=Jt*O,e[12]=w*O,e[13]=Pe*O,e[14]=Et*O,e[15]=Lt*O,!0}var om,gC=I(()=>{om=class{};om._UpdateFlagSeed=0});var ls,Fe,b,Ii,Xe,q,ze,$,th,ke=I(()=>{Un();ol();Yi();sC();Ni();Vn();gC();ls=n=>parseInt(n.toString().replace(/\W/g,"")),Fe=class n{constructor(e=0,t=0){this.x=e,this.y=t}toString(){return`{X: ${this.x} Y: ${this.y}}`}getClassName(){return"Vector2"}getHashCode(){let e=ls(this.x),t=ls(this.y),i=e;return i=i*397^t,i}toArray(e,t=0){return e[t]=this.x,e[t+1]=this.y,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}asArray(){return[this.x,this.y]}copyFrom(e){return this.x=e.x,this.y=e.y,this}copyFromFloats(e,t){return this.x=e,this.y=t,this}set(e,t){return this.copyFromFloats(e,t)}setAll(e){return this.copyFromFloats(e,e)}add(e){return new n(this.x+e.x,this.y+e.y)}addToRef(e,t){return t.x=this.x+e.x,t.y=this.y+e.y,t}addInPlace(e){return this.x+=e.x,this.y+=e.y,this}addInPlaceFromFloats(e,t){return this.x+=e,this.y+=t,this}addVector3(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new n(this.x-e.x,this.y-e.y)}subtractToRef(e,t){return t.x=this.x-e.x,t.y=this.y-e.y,t}subtractInPlace(e){return this.x-=e.x,this.y-=e.y,this}multiplyInPlace(e){return this.x*=e.x,this.y*=e.y,this}multiply(e){return new n(this.x*e.x,this.y*e.y)}multiplyToRef(e,t){return t.x=this.x*e.x,t.y=this.y*e.y,t}multiplyByFloats(e,t){return new n(this.x*e,this.y*t)}divide(e){return new n(this.x/e.x,this.y/e.y)}divideToRef(e,t){return t.x=this.x/e.x,t.y=this.y/e.y,t}divideInPlace(e){return this.x=this.x/e.x,this.y=this.y/e.y,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.x,e.y)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.x,e.y)}minimizeInPlaceFromFloats(e,t){return this.x=Math.min(e,this.x),this.y=Math.min(t,this.y),this}maximizeInPlaceFromFloats(e,t){return this.x=Math.max(e,this.x),this.y=Math.max(t,this.y),this}subtractFromFloats(e,t){return new n(this.x-e,this.y-t)}subtractFromFloatsToRef(e,t,i){return i.x=this.x-e,i.y=this.y-t,i}negate(){return new n(-this.x,-this.y)}negateInPlace(){return this.x*=-1,this.y*=-1,this}negateToRef(e){return e.x=-this.x,e.y=-this.y,e}scaleInPlace(e){return this.x*=e,this.y*=e,this}scale(e){return new n(this.x*e,this.y*e)}scaleToRef(e,t){return t.x=this.x*e,t.y=this.y*e,t}scaleAndAddToRef(e,t){return t.x+=this.x*e,t.y+=this.y*e,t}equals(e){return e&&this.x===e.x&&this.y===e.y}equalsWithEpsilon(e,t=Nt){return e&&Si(this.x,e.x,t)&&Si(this.y,e.y,t)}equalsToFloats(e,t){return this.x===e&&this.y===t}floor(){return new n(Math.floor(this.x),Math.floor(this.y))}floorToRef(e){return e.x=Math.floor(this.x),e.y=Math.floor(this.y),e}fract(){return new n(this.x-Math.floor(this.x),this.y-Math.floor(this.y))}fractToRef(e){return e.x=this.x-Math.floor(this.x),e.y=this.y-Math.floor(this.y),e}rotate(e){return this.rotateToRef(e,new n)}rotateToRef(e,t){let i=Math.cos(e),r=Math.sin(e);return t.x=i*this.x-r*this.y,t.y=r*this.x+i*this.y,t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSquared(){return this.x*this.x+this.y*this.y}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n;return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0&&(e.x=this.x,e.y=this.y),this.scaleToRef(1/t,e)}clone(){return new n(this.x,this.y)}dot(e){return this.x*e.x+this.y*e.y}static Zero(){return new n(0,0)}static One(){return new n(1,1)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t))}static get ZeroReadOnly(){return n._ZeroReadOnly}static FromArray(e,t=0){return new n(e[t],e[t+1])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i}static FromFloatsToRef(e,t,i){return i.copyFromFloats(e,t),i}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t.x+(-e.x+i.x)*s+(2*e.x-5*t.x+4*i.x-r.x)*a+(-e.x+3*t.x-3*i.x+r.x)*o),c=.5*(2*t.y+(-e.y+i.y)*s+(2*e.y-5*t.y+4*i.y-r.y)*a+(-e.y+3*t.y-3*i.y+r.y)*o);return new n(l,c)}static ClampToRef(e,t,i,r){return r.x=wt(e.x,t.x,i.x),r.y=wt(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=wt(e.x,t.x,i.x),s=wt(e.y,t.y,i.y);return new n(r,s)}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.x*l+i.x*c+t.x*f+r.x*d,u=e.y*l+i.y*c+t.y*f+r.y*d;return new n(h,u)}static Hermite1stDerivative(e,t,i,r,s){return this.Hermite1stDerivativeToRef(e,t,i,r,s,new n)}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a.x=(o-s)*6*e.x+(3*o-4*s+1)*t.x+(-o+s)*6*i.x+(3*o-2*s)*r.x,a.y=(o-s)*6*e.y+(3*o-4*s+1)*t.y+(-o+s)*6*i.y+(3*o-2*s)*r.y,a}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.x=e.x+(t.x-e.x)*i,r.y=e.y+(t.y-e.y)*i,r}static Dot(e,t){return e.x*t.x+e.y*t.y}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=e.xt.x?e.x:t.x,r=e.y>t.y?e.y:t.y;return new n(i,r)}static Transform(e,t){return n.TransformToRef(e,t,new n)}static TransformToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+r[12],a=e.x*r[1]+e.y*r[5]+r[13];return i.x=s,i.y=a,i}static PointInTriangle(e,t,i,r){let s=.5*(-i.y*r.x+t.y*(-i.x+r.x)+t.x*(i.y-r.y)+i.x*r.y),a=s<0?-1:1,o=(t.y*r.x-t.x*r.y+(r.y-t.y)*e.x+(t.x-r.x)*e.y)*a,l=(t.x*i.y-t.y*i.x+(t.y-i.y)*e.x+(i.x-t.x)*e.y)*a;return o>0&&l>0&&o+l<2*s*a}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y;return i*i+r*r}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2)}static DistanceOfPointFromSegment(e,t,i){let r=n.DistanceSquared(t,i);if(r===0)return n.Distance(e,t);let s=i.subtract(t),a=Math.max(0,Math.min(1,n.Dot(e.subtract(t),s)/r)),o=t.add(s.multiplyByFloats(a,a));return n.Distance(e,o)}};Fe._V8PerformanceHack=new Fe(.5,.5);Fe._ZeroReadOnly=Fe.Zero();Object.defineProperties(Fe.prototype,{dimension:{value:[2]},rank:{value:1}});b=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}constructor(e=0,t=0,i=0){this._isDirty=!0,this._x=e,this._y=t,this._z=i}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z}}`}getClassName(){return"Vector3"}getHashCode(){let e=ls(this._x),t=ls(this._y),i=ls(this._z),r=e;return r=r*397^t,r=r*397^i,r}asArray(){return[this._x,this._y,this._z]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toQuaternion(){return Xe.RotationYawPitchRoll(this._y,this._x,this._z)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._isDirty=!0,this}addInPlaceFromFloats(e,t,i){return this._x+=e,this._y+=t,this._z+=i,this._isDirty=!0,this}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z)}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._isDirty=!0,t}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._isDirty=!0,this}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z)}subtractToRef(e,t){return this.subtractFromFloatsToRef(e._x,e._y,e._z,t)}subtractFromFloats(e,t,i){return new n(this._x-e,this._y-t,this._z-i)}subtractFromFloatsToRef(e,t,i,r){return r._x=this._x-e,r._y=this._y-t,r._z=this._z-i,r._isDirty=!0,r}negate(){return new n(-this._x,-this._y,-this._z)}negateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}negateToRef(e){return e._x=this._x*-1,e._y=this._y*-1,e._z=this._z*-1,e._isDirty=!0,e}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._isDirty=!0,t}getNormalToRef(e){let t=this.length(),i=Math.acos(this._y/t),r=Math.atan2(this._z,this._x);i>Math.PI/2?i-=Math.PI/2:i+=Math.PI/2;let s=t*Math.sin(i)*Math.cos(r),a=t*Math.cos(i),o=t*Math.sin(i)*Math.sin(r);return e.set(s,a,o),e}applyRotationQuaternionToRef(e,t){let i=this._x,r=this._y,s=this._z,a=e._x,o=e._y,l=e._z,c=e._w,f=2*(o*s-l*r),d=2*(l*i-a*s),h=2*(a*r-o*i);return t._x=i+c*f+o*h-l*d,t._y=r+c*d+l*f-a*h,t._z=s+c*h+a*d-o*f,t._isDirty=!0,t}applyRotationQuaternionInPlace(e){return this.applyRotationQuaternionToRef(e,this)}applyRotationQuaternion(e){return this.applyRotationQuaternionToRef(e,new n)}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._isDirty=!0,t}projectOnPlane(e,t){return this.projectOnPlaneToRef(e,t,new n)}projectOnPlaneToRef(e,t,i){let r=e.normal,s=e.d,a=ze.Vector3[0];this.subtractToRef(t,a),a.normalize();let o=n.Dot(a,r);if(Math.abs(o)<1e-10)i.setAll(1/0);else{let l=-(n.Dot(t,r)+s)/o,c=a.scaleInPlace(l);t.addToRef(c,i)}return i}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z}equalsWithEpsilon(e,t=Nt){return e&&Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)}equalsToFloats(e,t,i){return this._x===e&&this._y===t&&this._z===i}multiplyInPlace(e){return this._x*=e._x,this._y*=e._y,this._z*=e._z,this._isDirty=!0,this}multiply(e){return this.multiplyByFloats(e._x,e._y,e._z)}multiplyToRef(e,t){return t._x=this._x*e._x,t._y=this._y*e._y,t._z=this._z*e._z,t._isDirty=!0,t}multiplyByFloats(e,t,i){return new n(this._x*e,this._y*t,this._z*i)}divide(e){return new n(this._x/e._x,this._y/e._y,this._z/e._z)}divideToRef(e,t){return t._x=this._x/e._x,t._y=this._y/e._y,t._z=this._z/e._z,t._isDirty=!0,t}divideInPlace(e){return this._x=this._x/e._x,this._y=this._y/e._y,this._z=this._z/e._z,this._isDirty=!0,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e._x,e._y,e._z)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e._x,e._y,e._z)}minimizeInPlaceFromFloats(e,t,i){return ethis._x&&(this.x=e),t>this._y&&(this.y=t),i>this._z&&(this.z=i),this}isNonUniformWithinEpsilon(e){let t=Math.abs(this._x),i=Math.abs(this._y);if(!Si(t,i,e))return!0;let r=Math.abs(this._z);return!Si(t,r,e)||!Si(i,r,e)}get isNonUniform(){let e=Math.abs(this._x),t=Math.abs(this._y);if(e!==t)return!0;let i=Math.abs(this._z);return e!==i}floorToRef(e){return e._x=Math.floor(this._x),e._y=Math.floor(this._y),e._z=Math.floor(this._z),e._isDirty=!0,e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))}fractToRef(e){return e._x=this._x-Math.floor(this._x),e._y=this._y-Math.floor(this._y),e._z=this._z-Math.floor(this._z),e._isDirty=!0,e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z))}length(){return Math.sqrt(this.lengthSquared())}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z}get hasAZeroComponent(){return this._x*this._y*this._z===0}normalize(){return this.normalizeFromLength(this.length())}reorderInPlace(e){if(e=e.toLowerCase(),e==="xyz")return this;let t=ze.Vector3[0].copyFrom(this);return this.x=t[e[0]],this.y=t[e[1]],this.z=t[e[2]],this}rotateByQuaternionToRef(e,t){return e.toRotationMatrix(ze.Matrix[0]),n.TransformCoordinatesToRef(this,ze.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,ze.Vector3[0]),ze.Vector3[0].rotateByQuaternionToRef(e,ze.Vector3[0]),t.addToRef(ze.Vector3[0],i),i}cross(e){return n.CrossToRef(this,e,new n)}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e._x=this._x,e._y=this._y,e._z=this._z,e._isDirty=!0,e):this.scaleToRef(1/t,e)}clone(){return new n(this._x,this._y,this._z)}copyFrom(e){return this.copyFromFloats(e._x,e._y,e._z)}copyFromFloats(e,t,i){return this._x=e,this._y=t,this._z=i,this._isDirty=!0,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this._x=this._y=this._z=e,this._isDirty=!0,this}static GetClipFactor(e,t,i,r){let s=n.Dot(e,i),a=n.Dot(t,i);return(s-r)/(s-a)}static GetAngleBetweenVectors(e,t,i){let r=e.normalizeToRef(ze.Vector3[1]),s=t.normalizeToRef(ze.Vector3[2]),a=n.Dot(r,s);a=wt(a,-1,1);let o=Math.acos(a),l=ze.Vector3[3];return n.CrossToRef(r,s,l),n.Dot(l,i)>0?isNaN(o)?0:o:isNaN(o)?-Math.PI:-Math.acos(a)}static GetAngleBetweenVectorsOnPlane(e,t,i){ze.Vector3[0].copyFrom(e);let r=ze.Vector3[0];ze.Vector3[1].copyFrom(t);let s=ze.Vector3[1];ze.Vector3[2].copyFrom(i);let a=ze.Vector3[2],o=ze.Vector3[3],l=ze.Vector3[4];r.normalize(),s.normalize(),a.normalize(),n.CrossToRef(a,r,o),n.CrossToRef(o,a,l);let c=Math.atan2(n.Dot(s,o),n.Dot(s,l));return HU(c)}static PitchYawRollToMoveBetweenPointsToRef(e,t,i){let r=$.Vector3[0];return t.subtractToRef(e,r),i._y=Math.atan2(r.x,r.z)||0,i._x=Math.atan2(Math.sqrt(r.x**2+r.z**2),r.y)||0,i._z=0,i._isDirty=!0,i}static PitchYawRollToMoveBetweenPoints(e,t){let i=n.Zero();return n.PitchYawRollToMoveBetweenPointsToRef(e,t,i)}static SlerpToRef(e,t,i,r){i=wt(i,0,1);let s=ze.Vector3[0],a=ze.Vector3[1];s.copyFrom(e);let o=s.length();s.normalizeFromLength(o),a.copyFrom(t);let l=a.length();a.normalizeFromLength(l);let c=n.Dot(s,a),f,d;if(c<1-Nt){let h=Math.acos(c),u=1/Math.sin(h);f=Math.sin((1-i)*h)*u,d=Math.sin(i*h)*u}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(mo(o,l,i)),r}static SmoothToRef(e,t,i,r,s){return n.SlerpToRef(e,t,r===0?1:i/r,s),s}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromFloatArray(e,t){return n.FromArray(e,t)}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._isDirty=!0,i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i)}static FromFloatsToRef(e,t,i,r){return r.copyFromFloats(e,t,i),r}static Zero(){return new n(0,0,0)}static One(){return new n(1,1,1)}static Up(){return new n(0,1,0)}static get UpReadOnly(){return n._UpReadOnly}static get DownReadOnly(){return n._DownReadOnly}static get RightReadOnly(){return n._RightReadOnly}static get LeftReadOnly(){return n._LeftReadOnly}static get LeftHandedForwardReadOnly(){return n._LeftHandedForwardReadOnly}static get RightHandedForwardReadOnly(){return n._RightHandedForwardReadOnly}static get LeftHandedBackwardReadOnly(){return n._LeftHandedBackwardReadOnly}static get RightHandedBackwardReadOnly(){return n._RightHandedBackwardReadOnly}static get ZeroReadOnly(){return n._ZeroReadOnly}static get OneReadOnly(){return n._OneReadOnly}static Down(){return new n(0,-1,0)}static Forward(e=!1){return new n(0,0,e?-1:1)}static Backward(e=!1){return new n(0,0,e?1:-1)}static Right(){return new n(1,0,0)}static Left(){return new n(-1,0,0)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t),lr(e,t))}static TransformCoordinates(e,t){let i=n.Zero();return n.TransformCoordinatesToRef(e,t,i),i}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=1/(e*a[3]+t*a[7]+i*a[11]+a[15]);return s._x=o*f,s._y=l*f,s._z=c*f,s._isDirty=!0,s}static TransformNormal(e,t){let i=n.Zero();return n.TransformNormalToRef(e,t,i),i}static TransformNormalToRef(e,t,i){return this.TransformNormalFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformNormalFromFloatsToRef(e,t,i,r,s){let a=r.m;return s._x=e*a[0]+t*a[4]+i*a[8],s._y=e*a[1]+t*a[5]+i*a[9],s._z=e*a[2]+t*a[6]+i*a[10],s._isDirty=!0,s}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t._x+(-e._x+i._x)*s+(2*e._x-5*t._x+4*i._x-r._x)*a+(-e._x+3*t._x-3*i._x+r._x)*o),c=.5*(2*t._y+(-e._y+i._y)*s+(2*e._y-5*t._y+4*i._y-r._y)*a+(-e._y+3*t._y-3*i._y+r._y)*o),f=.5*(2*t._z+(-e._z+i._z)*s+(2*e._z-5*t._z+4*i._z-r._z)*a+(-e._z+3*t._z-3*i._z+r._z)*o);return new n(l,c,f)}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){let s=e._x;s=s>i._x?i._x:s,s=si._y?i._y:a,a=ai._z?i._z:o,o=o0&&C<0?(w.copyFrom(a),G=t,O=i):C>0&&L<0?(w.copyFrom(l),G=i,O=r):(w.copyFrom(o).scaleInPlace(-1),G=r,O=t);let N=ze.Vector3[9],B=ze.Vector3[4];if(G.subtractToRef(v,T),O.subtractToRef(v,N),n.CrossToRef(T,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(_*p);let J=ze.Vector3[5];n.CrossToRef(w,B,J),J.normalize();let Q=ze.Vector3[9];Q.copyFrom(G).subtractInPlace(v);let te=Q.length();if(tethis._x&&(this.x=e.x),e.y>this._y&&(this.y=e.y),e.z>this._z&&(this.z=e.z),e.w>this._w&&(this.w=e.w),this}minimizeInPlaceFromFloats(e,t,i,r){return this.x=Math.min(e,this._x),this.y=Math.min(t,this._y),this.z=Math.min(i,this._z),this.w=Math.min(r,this._w),this}maximizeInPlaceFromFloats(e,t,i,r){return this.x=Math.max(e,this._x),this.y=Math.max(t,this._y),this.z=Math.max(i,this._z),this.w=Math.max(r,this._w),this}floorToRef(e){return e.x=Math.floor(this._x),e.y=Math.floor(this._y),e.z=Math.floor(this._z),e.w=Math.floor(this._w),e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),Math.floor(this._w))}fractToRef(e){return e.x=this._x-Math.floor(this._x),e.y=this._y-Math.floor(this._y),e.z=this._z-Math.floor(this._z),e.w=this._w-Math.floor(this._w),e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z),this._w-Math.floor(this._w))}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e.x=this._x,e.y=this._y,e.z=this._z,e.w=this._w,e):this.scaleToRef(1/t,e)}toVector3(){return new b(this._x,this._y,this._z)}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}copyFromFloats(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.x=this.y=this.z=this.w=e,this}dot(e){return this._x*e.x+this._y*e.y+this._z*e.z+this._w*e.w}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i.z=e[t+2],i.w=e[t+3],i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i),i}static FromFloatsToRef(e,t,i,r,s){return s.x=e,s.y=t,s.z=i,s.w=r,s}static Zero(){return new n(0,0,0,0)}static One(){return new n(1,1,1,1)}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.x=lr(e,t),i.y=lr(e,t),i.z=lr(e,t),i.w=lr(e,t),i}static Clamp(e,t,i){return n.ClampToRef(e,t,i,new n)}static ClampToRef(e,t,i,r){return r.x=wt(e.x,t.x,i.x),r.y=wt(e.y,t.y,i.y),r.z=wt(e.z,t.z,i.z),r.w=wt(e.w,t.w,i.w),r}static CheckExtends(e,t,i){t.minimizeInPlace(e),i.maximizeInPlace(e)}static get ZeroReadOnly(){return n._ZeroReadOnly}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=new n;return i.copyFrom(e),i.minimizeInPlace(t),i}static Maximize(e,t){let i=new n;return i.copyFrom(e),i.maximizeInPlace(t),i}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.x=(e.x+t.x)/2,i.y=(e.y+t.y)/2,i.z=(e.z+t.z)/2,i.w=(e.w+t.w)/2,i}static TransformCoordinates(e,t){return n.TransformCoordinatesToRef(e,t,new n)}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=e*a[3]+t*a[7]+i*a[11]+a[15];return s.x=o,s.y=l,s.z=c,s.w=f,s}static TransformNormal(e,t){return n.TransformNormalToRef(e,t,new n)}static TransformNormalToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+e.z*r[8],a=e.x*r[1]+e.y*r[5]+e.z*r[9],o=e.x*r[2]+e.y*r[6]+e.z*r[10];return i.x=s,i.y=a,i.z=o,i.w=e.w,i}static TransformNormalFromFloatsToRef(e,t,i,r,s,a){let o=s.m;return a.x=e*o[0]+t*o[4]+i*o[8],a.y=e*o[1]+t*o[5]+i*o[9],a.z=e*o[2]+t*o[6]+i*o[10],a.w=r,a}static FromVector3(e,t=0){return new n(e._x,e._y,e._z,t)}static Dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}};Ii._V8PerformanceHack=new Ii(.5,.5,.5,.5);Ii._ZeroReadOnly=Ii.Zero();Object.defineProperties(Ii.prototype,{dimension:{value:[4]},rank:{value:1}});Xe=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}get w(){return this._w}set w(e){this._w=e,this._isDirty=!0}constructor(e=0,t=0,i=0,r=1){this._isDirty=!0,this._x=e,this._y=t,this._z=i,this._w=r}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z} W: ${this._w}}`}getClassName(){return"Quaternion"}getHashCode(){let e=ls(this._x),t=ls(this._y),i=ls(this._z),r=ls(this._w),s=e;return s=s*397^t,s=s*397^i,s=s*397^r,s}asArray(){return[this._x,this._y,this._z,this._w]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z&&this._w===e._w}equalsWithEpsilon(e,t=Nt){return e&&Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)&&Si(this._w,e._w,t)}isApprox(e,t=Nt){return e&&(Si(this._x,e._x,t)&&Si(this._y,e._y,t)&&Si(this._z,e._z,t)&&Si(this._w,e._w,t)||Si(this._x,-e._x,t)&&Si(this._y,-e._y,t)&&Si(this._z,-e._z,t)&&Si(this._w,-e._w,t))}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._w=e._w,this._isDirty=!0,this}copyFromFloats(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._isDirty=!0,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.copyFromFloats(e,e,e,e)}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z,this._w+e._w)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._w+=e._w,this._isDirty=!0,this}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._w=this._w+e._w,t._isDirty=!0,t}addInPlaceFromFloats(e,t,i,r){return this._x+=e,this._y+=t,this._z+=i,this._w+=r,this._isDirty=!0,this}subtractToRef(e,t){return t._x=this._x-e._x,t._y=this._y-e._y,t._z=this._z-e._z,t._w=this._w-e._w,t._isDirty=!0,t}subtractFromFloats(e,t,i,r){return this.subtractFromFloatsToRef(e,t,i,r,new n)}subtractFromFloatsToRef(e,t,i,r,s){return s._x=this._x-e,s._y=this._y-t,s._z=this._z-i,s._w=this._w-r,s._isDirty=!0,s}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z,this._w-e._w)}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._w-=e._w,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e,this._w*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._w=this._w*e,t._isDirty=!0,t}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._w*=e,this._isDirty=!0,this}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._w+=this._w*e,t._isDirty=!0,t}multiply(e){let t=new n(0,0,0,1);return this.multiplyToRef(e,t),t}multiplyToRef(e,t){let i=this._x*e._w+this._y*e._z-this._z*e._y+this._w*e._x,r=-this._x*e._z+this._y*e._w+this._z*e._x+this._w*e._y,s=this._x*e._y-this._y*e._x+this._z*e._w+this._w*e._z,a=-this._x*e._x-this._y*e._y-this._z*e._z+this._w*e._w;return t.copyFromFloats(i,r,s,a),t}multiplyInPlace(e){return this.multiplyToRef(e,this)}multiplyByFloats(e,t,i,r){return this._x*=e,this._y*=t,this._z*=i,this._w*=r,this._isDirty=!0,this}divide(e){throw new ReferenceError("Can not divide a quaternion")}divideToRef(e,t){throw new ReferenceError("Can not divide a quaternion")}divideInPlace(e){throw new ReferenceError("Can not divide a quaternion")}minimizeInPlace(){throw new ReferenceError("Can not minimize a quaternion")}minimizeInPlaceFromFloats(){throw new ReferenceError("Can not minimize a quaternion")}maximizeInPlace(){throw new ReferenceError("Can not maximize a quaternion")}maximizeInPlaceFromFloats(){throw new ReferenceError("Can not maximize a quaternion")}negate(){return this.negateToRef(new n)}negateInPlace(){return this._x=-this._x,this._y=-this._y,this._z=-this._z,this._w=-this._w,this._isDirty=!0,this}negateToRef(e){return e._x=-this._x,e._y=-this._y,e._z=-this._z,e._w=-this._w,e._isDirty=!0,e}equalsToFloats(e,t,i,r){return this._x===e&&this._y===t&&this._z===i&&this._w===r}floorToRef(e){throw new ReferenceError("Can not floor a quaternion")}floor(){throw new ReferenceError("Can not floor a quaternion")}fractToRef(e){throw new ReferenceError("Can not fract a quaternion")}fract(){throw new ReferenceError("Can not fract a quaternion")}conjugateToRef(e){return e.copyFromFloats(-this._x,-this._y,-this._z,this._w),e}conjugateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}conjugate(){return new n(-this._x,-this._y,-this._z,this._w)}invert(){let e=this.conjugate(),t=this.lengthSquared();return t==0||t==1||e.scaleInPlace(1/t),e}invertInPlace(){this.conjugateInPlace();let e=this.lengthSquared();return e==0||e==1?this:(this.scaleInPlace(1/e),this)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this.lengthSquared())}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n(0,0,0,1);return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0||t===1?e.copyFromFloats(this._x,this._y,this._z,this._w):this.scaleToRef(1/t,e)}toEulerAngles(){let e=b.Zero();return this.toEulerAnglesToRef(e),e}toEulerAnglesToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=r*t-i*s,o=.4999999;if(a<-o)e._y=2*Math.atan2(r,s),e._x=Math.PI/2,e._z=0,e._isDirty=!0;else if(a>o)e._y=2*Math.atan2(r,s),e._x=-Math.PI/2,e._z=0,e._isDirty=!0;else{let l=s*s,c=t*t,f=i*i,d=r*r;e._z=Math.atan2(2*(i*r+t*s),-c-f+d+l),e._x=Math.asin(-2*a),e._y=Math.atan2(2*(t*i+r*s),c-f-d+l),e._isDirty=!0}return e}toAlphaBetaGammaToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=Math.sqrt(i*i+r*r),o=Math.sqrt(t*t+s*s),l=2*Math.atan2(a,o),c=2*Math.atan2(t,s),f=2*Math.atan2(r,i),d=(c+f)/2,h=(c-f)/2;return e.set(h,l,d),e}toRotationMatrix(e){return q.FromQuaternionToRef(this,e),e}fromRotationMatrix(e){return n.FromRotationMatrixToRef(e,this),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}toAxisAngle(){let e=b.Zero(),t=this.toAxisAngleToRef(e);return{axis:e,angle:t}}toAxisAngleToRef(e){let t,i=Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z),r=this._w;return i>0?(t=2*Math.atan2(i,r),e.set(this._x/i,this._y/i,this._z/i)):(t=0,e.set(1,0,0)),t}static FromRotationMatrix(e){let t=new n;return n.FromRotationMatrixToRef(e,t),t}static FromRotationMatrixToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],c=i[9],f=i[2],d=i[6],h=i[10],u=r+l+h,m;return u>0?(m=.5/Math.sqrt(u+1),t._w=.25/m,t._x=(d-c)*m,t._y=(a-f)*m,t._z=(o-s)*m,t._isDirty=!0):r>l&&r>h?(m=2*Math.sqrt(1+r-l-h),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>h?(m=2*Math.sqrt(1+l-r-h),t._w=(a-f)/m,t._x=(s+o)/m,t._y=.25*m,t._z=(c+d)/m,t._isDirty=!0):(m=2*Math.sqrt(1+h-r-l),t._w=(o-s)/m,t._x=(a+f)/m,t._y=(c+d)/m,t._z=.25*m,t._isDirty=!0),t}static Dot(e,t){return e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w}static AreClose(e,t,i=.1){let r=n.Dot(e,t);return 1-r*r<=i}static SmoothToRef(e,t,i,r,s){let a=r===0?1:i/r;return a=wt(a,0,1),n.SlerpToRef(e,t,a,s),s}static Zero(){return new n(0,0,0,0)}static Inverse(e){return new n(-e._x,-e._y,-e._z,e._w)}static InverseToRef(e,t){return t.set(-e._x,-e._y,-e._z,e._w),t}static Identity(){return new n(0,0,0,1)}static IsIdentity(e){return e&&e._x===0&&e._y===0&&e._z===0&&e._w===1}static RotationAxis(e,t){return n.RotationAxisToRef(e,t,new n)}static RotationAxisToRef(e,t,i){i._w=Math.cos(t/2);let r=Math.sin(t/2)/e.length();return i._x=e._x*r,i._y=e._y*r,i._z=e._z*r,i._isDirty=!0,i}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._w=e[t+3],i._isDirty=!0,i}static FromFloatsToRef(e,t,i,r,s){return s.copyFromFloats(e,t,i,r),s}static FromEulerAngles(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerAnglesToRef(e,t,i,r){return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerVector(e){let t=new n;return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromEulerVectorToRef(e,t){return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromUnitVectorsToRef(e,t,i,r=Nt){let s=b.Dot(e,t)+1;return sMath.abs(e.z)?i.set(-e.y,e.x,0,0):i.set(0,-e.z,e.y,0):(b.CrossToRef(e,t,$.Vector3[0]),i.set($.Vector3[0].x,$.Vector3[0].y,$.Vector3[0].z,s)),i.normalize()}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){let s=i*.5,a=t*.5,o=e*.5,l=Math.sin(s),c=Math.cos(s),f=Math.sin(a),d=Math.cos(a),h=Math.sin(o),u=Math.cos(o);return r._x=u*f*c+h*d*l,r._y=h*d*c-u*f*l,r._z=u*d*l-h*f*c,r._w=u*d*c+h*f*l,r._isDirty=!0,r}static RotationAlphaBetaGamma(e,t,i){let r=new n;return n.RotationAlphaBetaGammaToRef(e,t,i,r),r}static RotationAlphaBetaGammaToRef(e,t,i,r){let s=(i+e)*.5,a=(i-e)*.5,o=t*.5;return r._x=Math.cos(a)*Math.sin(o),r._y=Math.sin(a)*Math.sin(o),r._z=Math.sin(s)*Math.cos(o),r._w=Math.cos(s)*Math.cos(o),r._isDirty=!0,r}static RotationQuaternionFromAxis(e,t,i){let r=new n(0,0,0,0);return n.RotationQuaternionFromAxisToRef(e,t,i,r),r}static RotationQuaternionFromAxisToRef(e,t,i,r){let s=ze.Matrix[0];return e=e.normalizeToRef(ze.Vector3[0]),t=t.normalizeToRef(ze.Vector3[1]),i=i.normalizeToRef(ze.Vector3[2]),q.FromXYZAxesToRef(e,t,i,s),n.FromRotationMatrixToRef(s,r),r}static FromLookDirectionLH(e,t){let i=new n;return n.FromLookDirectionLHToRef(e,t,i),i}static FromLookDirectionLHToRef(e,t,i){let r=ze.Matrix[0];return q.LookDirectionLHToRef(e,t,r),n.FromRotationMatrixToRef(r,i),i}static FromLookDirectionRH(e,t){let i=new n;return n.FromLookDirectionRHToRef(e,t,i),i}static FromLookDirectionRHToRef(e,t,i){let r=ze.Matrix[0];return q.LookDirectionRHToRef(e,t,r),n.FromRotationMatrixToRef(r,i)}static Slerp(e,t,i){let r=n.Identity();return n.SlerpToRef(e,t,i,r),r}static SlerpToRef(e,t,i,r){let s,a,o=e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w,l=!1;if(o<0&&(l=!0,o=-o),o>.999999)a=1-i,s=l?-i:i;else{let c=Math.acos(o),f=1/Math.sin(c);a=Math.sin((1-i)*c)*f,s=l?-Math.sin(i*c)*f:Math.sin(i*c)*f}return r._x=a*e._x+s*t._x,r._y=a*e._y+s*t._y,r._z=a*e._z+s*t._z,r._w=a*e._w+s*t._w,r._isDirty=!0,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e._x*l+i._x*c+t._x*f+r._x*d,u=e._y*l+i._y*c+t._y*f+r._y*d,m=e._z*l+i._z*c+t._z*f+r._z*d,_=e._w*l+i._w*c+t._w*f+r._w*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a._x=(o-s)*6*e._x+(3*o-4*s+1)*t._x+(-o+s)*6*i._x+(3*o-2*s)*r._x,a._y=(o-s)*6*e._y+(3*o-4*s+1)*t._y+(-o+s)*6*i._y+(3*o-2*s)*r._y,a._z=(o-s)*6*e._z+(3*o-4*s+1)*t._z+(-o+s)*6*i._z+(3*o-2*s)*r._z,a._w=(o-s)*6*e._w+(3*o-4*s+1)*t._w+(-o+s)*6*i._w+(3*o-2*s)*r._w,a._isDirty=!0,a}static Normalize(e){let t=n.Zero();return n.NormalizeToRef(e,t),t}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){return r.copyFromFloats(wt(e.x,t.x,i.x),wt(e.y,t.y,i.y),wt(e.z,t.z,i.z),wt(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(lr(e,t),lr(e,t),lr(e,t),lr(e,t))}static Minimize(){throw new ReferenceError("Quaternion.Minimize does not make sense")}static Maximize(){throw new ReferenceError("Quaternion.Maximize does not make sense")}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,n.Zero())}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2,(e.w+t.w)/2)}};Xe._V8PerformanceHack=new Xe(.5,.5,.5,.5);Object.defineProperties(Xe.prototype,{dimension:{value:[4]},rank:{value:1}});q=class n{static get Use64Bits(){return as.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=om._UpdateFlagSeed++,this._isIdentity=!1,this._isIdentity3x2=!1,this._isIdentityDirty=!0,this._isIdentity3x2Dirty=!0}_updateIdentityStatus(e,t=!1,i=!1,r=!0){this._isIdentity=e,this._isIdentity3x2=e||i,this._isIdentityDirty=this._isIdentity?!1:t,this._isIdentity3x2Dirty=this._isIdentity3x2?!1:r}constructor(){this._isIdentity=!1,this._isIdentityDirty=!0,this._isIdentity3x2=!0,this._isIdentity3x2Dirty=!0,this.updateFlag=-1,as.MatrixTrackPrecisionChange&&as.MatrixTrackedMatrices.push(this),this._m=new as.MatrixCurrentType(16),this.markAsUpdated()}isIdentity(){if(this._isIdentityDirty){this._isIdentityDirty=!1;let e=this._m;this._isIdentity=e[0]===1&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0&&e[8]===0&&e[9]===0&&e[10]===1&&e[11]===0&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1}return this._isIdentity}isIdentityAs3x2(){return this._isIdentity3x2Dirty&&(this._isIdentity3x2Dirty=!1,this._m[0]!==1||this._m[5]!==1||this._m[15]!==1?this._isIdentity3x2=!1:this._m[1]!==0||this._m[2]!==0||this._m[3]!==0||this._m[4]!==0||this._m[6]!==0||this._m[7]!==0||this._m[8]!==0||this._m[9]!==0||this._m[10]!==0||this._m[11]!==0||this._m[12]!==0||this._m[13]!==0||this._m[14]!==0?this._isIdentity3x2=!1:this._isIdentity3x2=!0),this._isIdentity3x2}determinant(){if(this._isIdentity===!0)return 1;let e=this._m,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=e[9],h=e[10],u=e[11],m=e[12],_=e[13],p=e[14],g=e[15],v=h*g-p*u,x=d*g-_*u,S=d*p-_*h,E=f*g-m*u,T=f*p-h*m,R=f*_-m*d,M=+(o*v-l*x+c*S),y=-(a*v-l*E+c*T),C=+(a*x-o*E+c*R),L=-(a*S-o*T+l*R);return t*M+i*y+r*C+s*L}toString(){return`{${this.m[0]}, ${this.m[1]}, ${this.m[2]}, ${this.m[3]} ${this.m[4]}, ${this.m[5]}, ${this.m[6]}, ${this.m[7]} ${this.m[8]}, ${this.m[9]}, ${this.m[10]}, ${this.m[11]} -${this.m[12]}, ${this.m[13]}, ${this.m[14]}, ${this.m[15]}}`}toArray(e=null,t=0){if(!e)return this._m;let i=this._m;for(let r=0;r<16;r++)e[t+r]=i[r];return this}asArray(){return this._m}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}copyFromFloats(...e){return n.FromArrayToRef(e,0,this)}set(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=e[i];return this.markAsUpdated(),this}setAll(e){let t=this._m;for(let i=0;i<16;i++)t[i]=e;return this.markAsUpdated(),this}invert(){return this.invertToRef(this),this}reset(){return n.FromValuesToRef(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,this),this._updateIdentityStatus(!1),this}add(e){let t=new n;return this.addToRef(e,t),t}addToRef(e,t){let i=this._m,r=t._m,s=e.m;for(let a=0;a<16;a++)r[a]=i[a]+s[a];return t.markAsUpdated(),t}addToSelf(e){let t=this._m,i=e.m;return t[0]+=i[0],t[1]+=i[1],t[2]+=i[2],t[3]+=i[3],t[4]+=i[4],t[5]+=i[5],t[6]+=i[6],t[7]+=i[7],t[8]+=i[8],t[9]+=i[9],t[10]+=i[10],t[11]+=i[11],t[12]+=i[12],t[13]+=i[13],t[14]+=i[14],t[15]+=i[15],this.markAsUpdated(),this}addInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]+=i[r];return this.markAsUpdated(),this}addInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]+=e[i];return this.markAsUpdated(),this}subtract(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]-r[a];return t.markAsUpdated(),t}subtractInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractFromFloats(...e){return this.subtractFromFloatsToRef(...e,new n)}subtractFromFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]-s[a];return t.markAsUpdated(),t}invertToRef(e){return this._isIdentity===!0?(n.IdentityToRef(e),e):(uC(this,e.asArray())?e.markAsUpdated():e.copyFrom(this),e)}addAtIndex(e,t){return this._m[e]+=t,this.markAsUpdated(),this}multiplyAtIndex(e,t){return this._m[e]*=t,this.markAsUpdated(),this}setTranslationFromFloats(e,t,i){return this._m[12]=e,this._m[13]=t,this._m[14]=i,this.markAsUpdated(),this}addTranslationFromFloats(e,t,i){return this._m[12]+=e,this._m[13]+=t,this._m[14]+=i,this.markAsUpdated(),this}setTranslation(e){return this.setTranslationFromFloats(e._x,e._y,e._z)}getTranslation(){return new b(this._m[12],this._m[13],this._m[14])}getTranslationToRef(e){return e.x=this._m[12],e.y=this._m[13],e.z=this._m[14],e}removeRotationAndScaling(){let e=this.m;return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e[12],e[13],e[14],e[15],this),this._updateIdentityStatus(e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1),this}copyFrom(e){e.copyToArray(this._m);let t=e;return this.updateFlag=t.updateFlag,this._updateIdentityStatus(t._isIdentity,t._isIdentityDirty,t._isIdentity3x2,t._isIdentity3x2Dirty),this}copyToArray(e,t=0){return HU(this,e,t),this}multiply(e){let t=new n;return this.multiplyToRef(e,t),t}multiplyInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]*=i[r];return this.markAsUpdated(),this}multiplyByFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e[i];return this.markAsUpdated(),this}multiplyByFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]*s[a];return t.markAsUpdated(),t}multiplyToRef(e,t){return this._isIdentity?(t.copyFrom(e),t):e._isIdentity?(t.copyFrom(this),t):(this.multiplyToArray(e,t._m,0),t.markAsUpdated(),t)}multiplyToArray(e,t,i){return hC(this,e,t,i),this}divide(e){return this.divideToRef(e,new n)}divideToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]/r[a];return t.markAsUpdated(),t}divideInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]/=i[r];return this.markAsUpdated(),this}minimizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}minimizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}maximizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}maximizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}negate(){return this.negateToRef(new n)}negateInPlace(){let e=this._m;for(let t=0;t<16;t++)e[t]=-e[t];return this.markAsUpdated(),this}negateToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=-t[r];return e.markAsUpdated(),e}equals(e){let t=e;if(!t)return!1;if((this._isIdentity||t._isIdentity)&&!this._isIdentityDirty&&!t._isIdentityDirty)return this._isIdentity&&t._isIdentity;let i=this.m,r=t.m;return i[0]===r[0]&&i[1]===r[1]&&i[2]===r[2]&&i[3]===r[3]&&i[4]===r[4]&&i[5]===r[5]&&i[6]===r[6]&&i[7]===r[7]&&i[8]===r[8]&&i[9]===r[9]&&i[10]===r[10]&&i[11]===r[11]&&i[12]===r[12]&&i[13]===r[13]&&i[14]===r[14]&&i[15]===r[15]}equalsWithEpsilon(e,t=0){let i=this._m,r=e.m;for(let s=0;s<16;s++)if(!Si(i[s],r[s],t))return!1;return!0}equalsToFloats(...e){let t=this._m;for(let i=0;i<16;i++)if(t[i]!=e[i])return!1;return!0}floor(){return this.floorToRef(new n)}floorToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=Math.floor(t[r]);return e.markAsUpdated(),e}fract(){return this.fractToRef(new n)}fractToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=t[r]-Math.floor(t[r]);return e.markAsUpdated(),e}clone(){let e=new n;return e.copyFrom(this),e}getClassName(){return"Matrix"}getHashCode(){let e=ls(this._m[0]);for(let t=1;t<16;t++)e=e*397^ls(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new Xe,this.decompose(e.scaling,e.rotationQuaternion,e.position)}decompose(e,t,i,r,s=!0){if(this._isIdentity)return i&&i.setAll(0),e&&e.setAll(1),t&&t.copyFromFloats(0,0,0,1),!0;let a=this._m;if(i&&i.copyFromFloats(a[12],a[13],a[14]),e=e||ze.Vector3[0],e.x=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]),e.y=Math.sqrt(a[4]*a[4]+a[5]*a[5]+a[6]*a[6]),e.z=Math.sqrt(a[8]*a[8]+a[9]*a[9]+a[10]*a[10]),r){let o=(s?r.absoluteScaling.x:r.scaling.x)<0?-1:1,l=(s?r.absoluteScaling.y:r.scaling.y)<0?-1:1,c=(s?r.absoluteScaling.z:r.scaling.z)<0?-1:1;e.x*=o,e.y*=l,e.z*=c}else this.determinant()<=0&&(e.y*=-1);if(e._x===0||e._y===0||e._z===0)return t&&t.copyFromFloats(0,0,0,1),!1;if(t){let o=1/e._x,l=1/e._y,c=1/e._z;n.FromValuesToRef(a[0]*o,a[1]*o,a[2]*o,0,a[4]*l,a[5]*l,a[6]*l,0,a[8]*c,a[9]*c,a[10]*c,0,0,0,0,1,ze.Matrix[0]),Xe.FromRotationMatrixToRef(ze.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Ii(this._m[t+0],this._m[t+1],this._m[t+2],this._m[t+3])}getRowToRef(e,t){if(e>=0&&e<=3){let i=e*4;t.x=this._m[i+0],t.y=this._m[i+1],t.z=this._m[i+2],t.w=this._m[i+3]}return t}setRow(e,t){return this.setRowFromFloats(e,t.x,t.y,t.z,t.w)}transpose(){let e=new n;return n.TransposeToRef(this,e),e}transposeToRef(e){return n.TransposeToRef(this,e),e}setRowFromFloats(e,t,i,r,s){if(e<0||e>3)return this;let a=e*4;return this._m[a+0]=t,this._m[a+1]=i,this._m[a+2]=r,this._m[a+3]=s,this.markAsUpdated(),this}scale(e){let t=new n;return this.scaleToRef(e,t),t}scaleToRef(e,t){for(let i=0;i<16;i++)t._m[i]=this._m[i]*e;return t.markAsUpdated(),t}scaleAndAddToRef(e,t){for(let i=0;i<16;i++)t._m[i]+=this._m[i]*e;return t.markAsUpdated(),t}scaleInPlace(e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e;return this.markAsUpdated(),this}toNormalMatrix(e){let t=ze.Matrix[0];this.invertToRef(t),t.transposeToRef(e);let i=e._m;return n.FromValuesToRef(i[0],i[1],i[2],0,i[4],i[5],i[6],0,i[8],i[9],i[10],0,0,0,0,1,e),e}getRotationMatrix(){let e=new n;return this.getRotationMatrixToRef(e),e}getRotationMatrixToRef(e){let t=ze.Vector3[0];if(!this.decompose(t))return n.IdentityToRef(e),e;let i=this._m,r=1/t._x,s=1/t._y,a=1/t._z;return n.FromValuesToRef(i[0]*r,i[1]*r,i[2]*r,0,i[4]*s,i[5]*s,i[6]*s,0,i[8]*a,i[9]*a,i[10]*a,0,0,0,0,1,e),e}toggleModelMatrixHandInPlace(){let e=this._m;return e[2]*=-1,e[6]*=-1,e[8]*=-1,e[9]*=-1,e[14]*=-1,this.markAsUpdated(),this}toggleProjectionMatrixHandInPlace(){let e=this._m;return e[8]*=-1,e[9]*=-1,e[10]*=-1,e[11]*=-1,this.markAsUpdated(),this}static FromArray(e,t=0){let i=new n;return n.FromArrayToRef(e,t,i),i}static FromArrayToRef(e,t,i){for(let r=0;r<16;r++)i._m[r]=e[r+t];return i.markAsUpdated(),i}static FromFloat32ArrayToRefScaled(e,t,i,r){return r._m[0]=e[0+t]*i,r._m[1]=e[1+t]*i,r._m[2]=e[2+t]*i,r._m[3]=e[3+t]*i,r._m[4]=e[4+t]*i,r._m[5]=e[5+t]*i,r._m[6]=e[6+t]*i,r._m[7]=e[7+t]*i,r._m[8]=e[8+t]*i,r._m[9]=e[9+t]*i,r._m[10]=e[10+t]*i,r._m[11]=e[11+t]*i,r._m[12]=e[12+t]*i,r._m[13]=e[13+t]*i,r._m[14]=e[14+t]*i,r._m[15]=e[15+t]*i,r.markAsUpdated(),r}static get IdentityReadOnly(){return n._IdentityReadOnly}static FromValuesToRef(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){let v=g._m;v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p){let g=new n,v=g._m;return v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated(),g}static Compose(e,t,i){let r=new n;return n.ComposeToRef(e,t,i,r),r}static ComposeToRef(e,t,i,r){let s=r._m,a=t._x,o=t._y,l=t._z,c=t._w,f=a+a,d=o+o,h=l+l,u=a*f,m=a*d,_=a*h,p=o*d,g=o*h,v=l*h,x=c*f,S=c*d,E=c*h,T=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*T,s[1]=(m+E)*T,s[2]=(_-S)*T,s[3]=0,s[4]=(m-E)*R,s[5]=(1-(u+v))*R,s[6]=(g+x)*R,s[7]=0,s[8]=(_+S)*M,s[9]=(g-x)*M,s[10]=(1-(u+p))*M,s[11]=0,s[12]=i._x,s[13]=i._y,s[14]=i._z,s[15]=1,r.markAsUpdated(),r}static Identity(){let e=n.FromValues(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return e._updateIdentityStatus(!0),e}static IdentityToRef(e){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,e),e._updateIdentityStatus(!0),e}static Zero(){let e=n.FromValues(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return e._updateIdentityStatus(!1),e}static RotationX(e){let t=new n;return n.RotationXToRef(e,t),t}static Invert(e){let t=new n;return e.invertToRef(t),t}static RotationXToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(1,0,0,0,0,r,i,0,0,-i,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationY(e){let t=new n;return n.RotationYToRef(e,t),t}static RotationYToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,0,-i,0,0,1,0,0,i,0,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationZ(e){let t=new n;return n.RotationZToRef(e,t),t}static RotationZToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,i,0,0,-i,r,0,0,0,0,1,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationAxis(e,t){let i=new n;return n.RotationAxisToRef(e,t,i),i}static RotationAxisToRef(e,t,i){let r=Math.sin(-t),s=Math.cos(-t),a=1-s;e=e.normalizeToRef(ze.Vector3[0]);let o=i._m;return o[0]=e._x*e._x*a+s,o[1]=e._x*e._y*a-e._z*r,o[2]=e._x*e._z*a+e._y*r,o[3]=0,o[4]=e._y*e._x*a+e._z*r,o[5]=e._y*e._y*a+s,o[6]=e._y*e._z*a-e._x*r,o[7]=0,o[8]=e._z*e._x*a-e._y*r,o[9]=e._z*e._y*a+e._x*r,o[10]=e._z*e._z*a+s,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,i.markAsUpdated(),i}static RotationAlignToRef(e,t,i,r=!1){let s=b.Dot(t,e),a=i._m;if(s<-1+Nt)a[0]=-1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=r?1:-1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=r?-1:1,a[11]=0;else{let o=b.Cross(t,e),l=1/(1+s);a[0]=o._x*o._x*l+s,a[1]=o._y*o._x*l-o._z,a[2]=o._z*o._x*l+o._y,a[3]=0,a[4]=o._x*o._y*l+o._z,a[5]=o._y*o._y*l+s,a[6]=o._z*o._y*l-o._x,a[7]=0,a[8]=o._x*o._z*l-o._y,a[9]=o._y*o._z*l+o._x,a[10]=o._z*o._z*l+s,a[11]=0}return a[12]=0,a[13]=0,a[14]=0,a[15]=1,i.markAsUpdated(),i}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){return Xe.RotationYawPitchRollToRef(e,t,i,ze.Quaternion[0]),ze.Quaternion[0].toRotationMatrix(r),r}static Scaling(e,t,i){let r=new n;return n.ScalingToRef(e,t,i,r),r}static ScalingToRef(e,t,i,r){return n.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1,r),r._updateIdentityStatus(e===1&&t===1&&i===1),r}static Translation(e,t,i){let r=new n;return n.TranslationToRef(e,t,i,r),r}static TranslationToRef(e,t,i,r){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e,t,i,1,r),r._updateIdentityStatus(e===0&&t===0&&i===0),r}static Lerp(e,t,i){let r=new n;return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){let s=r._m,a=e.m,o=t.m;for(let l=0;l<16;l++)s[l]=a[l]*(1-i)+o[l]*i;return r.markAsUpdated(),r}static DecomposeLerp(e,t,i){let r=new n;return n.DecomposeLerpToRef(e,t,i,r),r}static DecomposeLerpToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Quaternion[0],o=ze.Vector3[1];e.decompose(s,a,o);let l=ze.Vector3[2],c=ze.Quaternion[1],f=ze.Vector3[3];t.decompose(l,c,f);let d=ze.Vector3[4];b.LerpToRef(s,l,i,d);let h=ze.Quaternion[2];Xe.SlerpToRef(a,c,i,h);let u=ze.Vector3[5];return b.LerpToRef(o,f,i,u),n.ComposeToRef(d,h,u,r),r}static LookAtLH(e,t,i){let r=new n;return n.LookAtLHToRef(e,t,i,r),r}static LookAtLHToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Vector3[1],o=ze.Vector3[2];t.subtractToRef(e,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookAtRH(e,t,i){let r=new n;return n.LookAtRHToRef(e,t,i,r),r}static LookAtRHToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Vector3[1],o=ze.Vector3[2];e.subtractToRef(t,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookDirectionLH(e,t){let i=new n;return n.LookDirectionLHToRef(e,t,i),i}static LookDirectionLHToRef(e,t,i){let r=ze.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=ze.Vector3[1];return b.CrossToRef(t,r,s),n.FromValuesToRef(s._x,s._y,s._z,0,t._x,t._y,t._z,0,r._x,r._y,r._z,0,0,0,0,1,i),i}static LookDirectionRH(e,t){let i=new n;return n.LookDirectionRHToRef(e,t,i),i}static LookDirectionRHToRef(e,t,i){let r=ze.Vector3[2];return b.CrossToRef(t,e,r),n.FromValuesToRef(r._x,r._y,r._z,0,t._x,t._y,t._z,0,e._x,e._y,e._z,0,0,0,0,1,i),i}static OrthoLH(e,t,i,r,s){let a=new n;return n.OrthoLHToRef(e,t,i,r,a,s),a}static OrthoLHToRef(e,t,i,r,s,a){let o=i,l=r,c=2/e,f=2/t,d=2/(l-o),h=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,h,1,s),a&&s.multiplyToRef(th,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&h===0),s}static OrthoOffCenterLH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l){let c=s,f=a,d=2/(t-e),h=2/(r-i),u=2/(f-c),m=-(f+c)/(f-c),_=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,h,0,0,0,0,u,0,_,p,m,1,o),l&&o.multiplyToRef(th,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=-o*Math.cos(l),u=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,ze.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,ze.Matrix[0]),ze.Matrix[1].multiplyToRef(ze.Matrix[0],ze.Matrix[0]),n.TranslationToRef(0,0,c,ze.Matrix[1]),ze.Matrix[0].multiplyToRef(ze.Matrix[1],ze.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),ze.Matrix[0].multiplyToRef(f,f),f}static OrthoOffCenterRH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterRHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterRHToRef(e,t,i,r,s,a,o,l){return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l),o._m[10]*=-1,o}static ObliqueOffCenterRHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=o*Math.cos(l),u=o*Math.sin(l);return n.TranslationToRef(0,0,c,ze.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,ze.Matrix[0]),ze.Matrix[1].multiplyToRef(ze.Matrix[0],ze.Matrix[0]),n.TranslationToRef(0,0,-c,ze.Matrix[1]),ze.Matrix[0].multiplyToRef(ze.Matrix[1],ze.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),ze.Matrix[0].multiplyToRef(f,f),f}static PerspectiveLH(e,t,i,r,s,a=0){let o=new n,l=i,c=r,f=2*l/e,d=2*l/t,h=(c+l)/(c-l),u=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,h,1,0,0,u,0,o),s&&o.multiplyToRef(th,o),o._updateIdentityStatus(!1),o}static PerspectiveFovLH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovLHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovLHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?-1:d!==0?(d+f)/(d-f):1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,1,0,0,p,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseLHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovRH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovRHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovRHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?1:d!==0?-(d+f)/(d-f):-1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,-1,0,0,p,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseRHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static GetFinalMatrix(e,t,i,r,s,a){let o=e.width,l=e.height,c=e.x,f=e.y,d=n.FromValues(o/2,0,0,0,0,-l/2,0,0,0,0,a-s,0,c+o/2,l/2+f,s,1),h=new n;return t.multiplyToRef(i,h),h.multiplyToRef(r,h),h.multiplyToRef(d,h)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return as.MatrixUse64Bits?i:new Float32Array(i)}static GetAsMatrix3x3(e){let t=e.m,i=[t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]];return as.MatrixUse64Bits?i:new Float32Array(i)}static Transpose(e){let t=new n;return n.TransposeToRef(e,t),t}static TransposeToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[12],l=i[1],c=i[5],f=i[9],d=i[13],h=i[2],u=i[6],m=i[10],_=i[14],p=i[3],g=i[7],v=i[11],x=i[15],S=t._m;return S[0]=r,S[1]=s,S[2]=a,S[3]=o,S[4]=l,S[5]=c,S[6]=f,S[7]=d,S[8]=h,S[9]=u,S[10]=m,S[11]=_,S[12]=p,S[13]=g,S[14]=v,S[15]=x,t.markAsUpdated(),t._updateIdentityStatus(e._isIdentity,e._isIdentityDirty),t}static Reflection(e){let t=new n;return n.ReflectionToRef(e,t),t}static ReflectionToRef(e,t){e.normalize();let i=e.normal.x,r=e.normal.y,s=e.normal.z,a=-2*i,o=-2*r,l=-2*s;return n.FromValuesToRef(a*i+1,o*i,l*i,0,a*r,o*r+1,l*r,0,a*s,o*s,l*s+1,0,a*e.d,o*e.d,l*e.d,1,t),t}static FromXYZAxesToRef(e,t,i,r){return n.FromValuesToRef(e._x,e._y,e._z,0,t._x,t._y,t._z,0,i._x,i._y,i._z,0,0,0,0,1,r),r}static FromQuaternionToRef(e,t){let i=e._x*e._x,r=e._y*e._y,s=e._z*e._z,a=e._x*e._y,o=e._z*e._w,l=e._z*e._x,c=e._y*e._w,f=e._y*e._z,d=e._x*e._w;return t._m[0]=1-2*(r+s),t._m[1]=2*(a+o),t._m[2]=2*(l-c),t._m[3]=0,t._m[4]=2*(a-o),t._m[5]=1-2*(s+i),t._m[6]=2*(f+d),t._m[7]=0,t._m[8]=2*(l+c),t._m[9]=2*(f-d),t._m[10]=1-2*(r+i),t._m[11]=0,t._m[12]=0,t._m[13]=0,t._m[14]=0,t._m[15]=1,t.markAsUpdated(),t}};q._IdentityReadOnly=q.Identity();Object.defineProperties(q.prototype,{dimension:{value:[4,4]},rank:{value:2}});ze=class{};ze.Vector3=jl(11,b.Zero);ze.Matrix=jl(2,q.Identity);ze.Quaternion=jl(3,Xe.Zero);$=class{};$.Vector2=jl(3,Fe.Zero);$.Vector3=jl(13,b.Zero);$.Vector4=jl(3,Ii.Zero);$.Quaternion=jl(3,Xe.Zero);$.Matrix=jl(8,q.Identity);Ft("BABYLON.Vector2",Fe);Ft("BABYLON.Vector3",b);Ft("BABYLON.Vector4",Ii);Ft("BABYLON.Matrix",q);th=q.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var zU,Ns,XU,lm=I(()=>{ke();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(zU||(zU={}));Ns=class{};Ns.X=new b(1,0,0);Ns.Y=new b(0,1,0);Ns.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(XU||(XU={}))});function cm(n){return Math.pow(n,am)}function fm(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function dm(n){return Math.pow(n,BU)}function hm(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var pe,lt,Rn,Ht=I(()=>{ol();Yi();Un();Vn();pe=class n{constructor(e=0,t=0,i=0){this.r=e,this.g=t,this.b=i}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+"}"}getClassName(){return"Color3"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toColor4(e=1){return new lt(this.r,this.g,this.b,e)}asArray(){return[this.r,this.g,this.b]}toLuminance(){return this.r*.3+this.g*.59+this.b*.11}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyByFloats(e,t,i){return new n(this.r*e,this.g*t,this.b*i)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.r,e.g,e.b)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.r,e.g,e.b)}minimizeInPlaceFromFloats(e,t,i){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this}maximizeInPlaceFromFloats(e,t,i){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b}equalsFloats(e,t,i){return this.equalsToFloats(e,t,i)}equalsToFloats(e,t,i){return this.r===e&&this.g===t&&this.b===i}equalsWithEpsilon(e,t=Nt){return Si(this.r,e.r,t)&&Si(this.g,e.g,t)&&Si(this.b,e.b,t)}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}scale(e){return new n(this.r*e,this.g*e,this.b*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t}clampToRef(e=0,t=1,i){return i.r=wt(this.r,e,t),i.g=wt(this.g,e,t),i.b=wt(this.b,e,t),i}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b)}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addInPlaceFromFloats(e,t,i){return this.r+=e,this.g+=t,this.b+=i,this}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this}subtractFromFloats(e,t,i){return new n(this.r-e,this.g-t,this.b-i)}subtractFromFloatsToRef(e,t,i,r){return r.r=this.r-e,r.g=this.g-t,r.b=this.b-i,r}clone(){return new n(this.r,this.g,this.b)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copyFromFloats(e,t,i){return this.r=e,this.g=t,this.b=i,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this.r=this.g=this.b=e,this}toHexString(){let e=Math.round(this.r*255),t=Math.round(this.g*255),i=Math.round(this.b*255);return"#"+po(e)+po(t)+po(i)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,this)}toHSV(){return this.toHSVToRef(new n)}toHSVToRef(e){let t=this.r,i=this.g,r=this.b,s=Math.max(t,i,r),a=Math.min(t,i,r),o=0,l=0,c=s,f=s-a;return s!==0&&(l=f/s),s!=a&&(s==t?(o=(i-r)/f,i=0&&a<=1?(l=s,c=o):a>=1&&a<=2?(l=o,c=s):a>=2&&a<=3?(c=s,f=o):a>=3&&a<=4?(c=o,f=s):a>=4&&a<=5?(l=o,f=s):a>=5&&a<=6&&(l=s,f=o);let d=i-s;return r.r=l+d,r.g=c+d,r.b=f+d,r}static FromHSV(e,t,i){let r=new n(0,0,0);return n.HSVtoRGBToRef(e,t,i,r),r}static FromHexString(e){return new n(0,0,0).fromHexString(e)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2]}static FromInts(e,t,i){return new n(e/255,t/255,i/255)}static Lerp(e,t,i){let r=new n(0,0,0);return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d;return new n(h,u,m)}static Hermite1stDerivative(e,t,i,r,s){let a=n.Black();return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b}static Red(){return new n(1,0,0)}static Green(){return new n(0,1,0)}static Blue(){return new n(0,0,1)}static Black(){return new n(0,0,0)}static get BlackReadOnly(){return n._BlackReadOnly}static White(){return new n(1,1,1)}static Purple(){return new n(.5,0,.5)}static Magenta(){return new n(1,0,1)}static Yellow(){return new n(1,1,0)}static Gray(){return new n(.5,.5,.5)}static Teal(){return new n(0,1,1)}static Random(){return new n(Math.random(),Math.random(),Math.random())}};pe._V8PerformanceHack=new pe(.5,.5,.5);pe._BlackReadOnly=pe.Black();Object.defineProperties(pe.prototype,{dimension:{value:[3]},rank:{value:1}});lt=class n{constructor(e=0,t=0,i=0,r=1){this.r=e,this.g=t,this.b=i,this.a=r}asArray(){return[this.r,this.g,this.b,this.a]}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e[t+3]=this.a,this}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this.a=e[t+3],this}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b,this.a+e.a)}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t.a=this.a+e.a,t}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this.a+=e.a,this}addInPlaceFromFloats(e,t,i,r){return this.r+=e,this.g+=t,this.b+=i,this.a+=r,this}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b,this.a-e.a)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t.a=this.a-e.a,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this.a-=e.a,this}subtractFromFloats(e,t,i,r){return new n(this.r-e,this.g-t,this.b-i,this.a-r)}subtractFromFloatsToRef(e,t,i,r,s){return s.r=this.r-e,s.g=this.g-t,s.b=this.b-i,s.a=this.a-r,s}scale(e){return new n(this.r*e,this.g*e,this.b*e,this.a*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this.a*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t.a=this.a*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t.a+=this.a*e,t}clampToRef(e=0,t=1,i){return i.r=wt(this.r,e,t),i.g=wt(this.g,e,t),i.b=wt(this.b,e,t),i.a=wt(this.a,e,t),i}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b,this.a*e.a)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t.a=this.a*e.a,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this.a*=e.a,this}multiplyByFloats(e,t,i,r){return new n(this.r*e,this.g*t,this.b*i,this.a*r)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.r=Math.min(this.r,e.r),this.g=Math.min(this.g,e.g),this.b=Math.min(this.b,e.b),this.a=Math.min(this.a,e.a),this}maximizeInPlace(e){return this.r=Math.max(this.r,e.r),this.g=Math.max(this.g,e.g),this.b=Math.max(this.b,e.b),this.a=Math.max(this.a,e.a),this}minimizeInPlaceFromFloats(e,t,i,r){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this.a=Math.min(r,this.a),this}maximizeInPlaceFromFloats(e,t,i,r){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this.a=Math.max(r,this.a),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}equalsWithEpsilon(e,t=Nt){return Si(this.r,e.r,t)&&Si(this.g,e.g,t)&&Si(this.b,e.b,t)&&Si(this.a,e.a,t)}equalsToFloats(e,t,i,r){return this.r===e&&this.g===t&&this.b===i&&this.a===r}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+" A:"+this.a+"}"}getClassName(){return"Color4"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e=e*397^(this.a*255|0),e}clone(){return new n().copyFrom(this)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this}copyFromFloats(e,t,i,r){return this.r=e,this.g=t,this.b=i,this.a=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.r=this.g=this.b=this.a=e,this}toHexString(e=!1){let t=Math.round(this.r*255),i=Math.round(this.g*255),r=Math.round(this.b*255);if(e)return"#"+po(t)+po(i)+po(r);let s=Math.round(this.a*255);return"#"+po(t)+po(i)+po(r)+po(s)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,e.length===9&&(this.a=parseInt(e.substring(7,9),16)/255),this)}toLinearSpace(e=!1){let t=new n;return this.toLinearSpaceToRef(t,e),t}toLinearSpaceToRef(e,t=!1){return t?(e.r=fm(this.r),e.g=fm(this.g),e.b=fm(this.b)):(e.r=cm(this.r),e.g=cm(this.g),e.b=cm(this.b)),e.a=this.a,this}toGammaSpace(e=!1){let t=new n;return this.toGammaSpaceToRef(t,e),t}toGammaSpaceToRef(e,t=!1){return t?(e.r=hm(this.r),e.g=hm(this.g),e.b=hm(this.b)):(e.r=dm(this.r),e.g=dm(this.g),e.b=dm(this.b)),e.a=this.a,this}static FromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?new n(0,0,0,0):new n(0,0,0,1).fromHexString(e)}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i,r.a=e.a+(t.a-e.a)*i,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d,_=e.a*l+i.a*c+t.a*f+r.a*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b,a.a=(o-s)*6*e.a+(3*o-4*s+1)*t.a+(-o+s)*6*i.a+(3*o-2*s)*r.a}static FromColor3(e,t=1){return new n(e.r,e.g,e.b,t)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2],i.a=e[t+3]}static FromInts(e,t,i,r){return new n(e/255,t/255,i/255,r/255)}static CheckColors4(e,t){if(e.length===t*3){let i=[];for(let r=0;rnew lt(0,0,0,0));Ft("BABYLON.Color3",pe);Ft("BABYLON.Color4",lt)});var _o,um=I(()=>{ke();_o=class n{constructor(e,t,i,r){this.normal=new b(e,t,i),this.d=r}asArray(){return[this.normal.x,this.normal.y,this.normal.z,this.d]}clone(){return new n(this.normal.x,this.normal.y,this.normal.z,this.d)}getClassName(){return"Plane"}getHashCode(){let e=this.normal.getHashCode();return e=e*397^(this.d|0),e}normalize(){let e=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y+this.normal.z*this.normal.z),t=0;return e!==0&&(t=1/e),this.normal.x*=t,this.normal.y*=t,this.normal.z*=t,this.d*=t,this}transform(e){let t=n._TmpMatrix;e.invertToRef(t);let i=t.m,r=this.normal.x,s=this.normal.y,a=this.normal.z,o=this.d,l=r*i[0]+s*i[1]+a*i[2]+o*i[3],c=r*i[4]+s*i[5]+a*i[6]+o*i[7],f=r*i[8]+s*i[9]+a*i[10]+o*i[11],d=r*i[12]+s*i[13]+a*i[14]+o*i[15];return new n(l,c,f,d)}dotCoordinate(e){return this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z+this.d}copyFromPoints(e,t,i){let r=t.x-e.x,s=t.y-e.y,a=t.z-e.z,o=i.x-e.x,l=i.y-e.y,c=i.z-e.z,f=s*c-a*l,d=a*o-r*c,h=r*l-s*o,u=Math.sqrt(f*f+d*d+h*h),m;return u!==0?m=1/u:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=h*m,this.d=-(this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z),this}isFrontFacingTo(e,t){return b.Dot(this.normal,e)<=t}signedDistanceTo(e){return b.Dot(e,this.normal)+this.d}static FromArray(e){return new n(e[0],e[1],e[2],e[3])}static FromPoints(e,t,i){let r=new n(0,0,0,0);return r.copyFromPoints(e,t,i),r}static FromPositionAndNormal(e,t){let i=new n(0,0,0,0);return this.FromPositionAndNormalToRef(e,t,i)}static FromPositionAndNormalToRef(e,t,i){return i.normal.copyFrom(t),i.normal.normalize(),i.d=-e.dot(i.normal),i}static SignedDistanceToPlaneFromPositionAndNormal(e,t,i){let r=-(t.x*e.x+t.y*e.y+t.z*e.z);return b.Dot(i,t)+r}};_o._TmpMatrix=q.Identity()});var pf,BA=I(()=>{um();pf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new _o(0,0,0,0));return n.GetPlanesToRef(e,t),t}static GetNearPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[2],t.normal.y=i[7]+i[6],t.normal.z=i[11]+i[10],t.d=i[15]+i[14],t.normalize()}static GetFarPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[2],t.normal.y=i[7]-i[6],t.normal.z=i[11]-i[10],t.d=i[15]-i[14],t.normalize()}static GetLeftPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[0],t.normal.y=i[7]+i[4],t.normal.z=i[11]+i[8],t.d=i[15]+i[12],t.normalize()}static GetRightPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[0],t.normal.y=i[7]-i[4],t.normal.z=i[11]-i[8],t.d=i[15]-i[12],t.normalize()}static GetTopPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[1],t.normal.y=i[7]-i[5],t.normal.z=i[11]-i[9],t.d=i[15]-i[13],t.normalize()}static GetBottomPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[1],t.normal.y=i[7]+i[5],t.normal.z=i[11]+i[9],t.d=i[15]+i[13],t.normalize()}static GetPlanesToRef(e,t){n.GetNearPlaneToRef(e,t[0]),n.GetFarPlaneToRef(e,t[1]),n.GetLeftPlaneToRef(e,t[2]),n.GetRightPlaneToRef(e,t[3]),n.GetTopPlaneToRef(e,t[4]),n.GetBottomPlaneToRef(e,t[5])}static IsPointInFrustum(e,t){for(let i=0;i<6;i++)if(t[i].dotCoordinate(e)<0)return!1;return!0}}});var YU,mm,pC,pm,ih,rh=I(()=>{Vn();ke();Un();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(YU||(YU={}));mm=class n{constructor(e){this._radians=e,this._radians<0&&(this._radians+=2*Math.PI)}degrees(){return this._radians*180/Math.PI}radians(){return this._radians}static BetweenTwoPoints(e,t){let i=t.subtract(e),r=Math.atan2(i.y,i.x);return new n(r)}static BetweenTwoVectors(e,t){let i=e.lengthSquared()*t.lengthSquared();if(i===0)return new n(Math.PI/2);i=Math.sqrt(i);let r=e.dot(t)/i;r=wt(r,-1,1);let s=Math.acos(r);return new n(s)}static FromRadians(e){return new n(e)}static FromDegrees(e){return new n(e*Math.PI/180)}},pC=class{constructor(e,t,i){this.startPoint=e,this.midPoint=t,this.endPoint=i;let r=Math.pow(t.x,2)+Math.pow(t.y,2),s=(Math.pow(e.x,2)+Math.pow(e.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,o=(e.x-t.x)*(t.y-i.y)-(t.x-i.x)*(e.y-t.y);this.centerPoint=new Fe((s*(t.y-i.y)-a*(e.y-t.y))/o,((e.x-t.x)*a-(t.x-i.x)*s)/o),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=mm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=mm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=mm.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();c-l>180&&(c-=360),c-l<-180&&(c+=360),f-c>180&&(f-=360),f-c<-180&&(f+=360),this.orientation=c-l<0?0:1,this.angle=mm.FromDegrees(this.orientation===0?l-f:f-l)}},pm=class n{constructor(e,t){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new Fe(e,t))}addLineTo(e,t){if(this.closed)return this;let i=new Fe(e,t),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this}addArcTo(e,t,i,r,s=36){if(this.closed)return this;let a=this._points[this._points.length-1],o=new Fe(e,t),l=new Fe(i,r),c=new pC(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let h=0;h(1-l)*(1-l)*c+2*l*(1-l)*f+l*l*d,o=this._points[this._points.length-1];for(let l=0;l<=s;l++){let c=l/s,f=a(c,o.x,e,i),d=a(c,o.y,t,r);this.addLineTo(f,d)}return this}addBezierCurveTo(e,t,i,r,s,a,o=36){if(this.closed)return this;let l=(f,d,h,u,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*h+3*f*f*(1-f)*u+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,h=l(d,c.x,e,i,s),u=l(d,c.y,t,r,a);this.addLineTo(h,u)}return this}isPointInside(e){let t=!1,i=this._points.length;for(let r=i-1,s=0;sNumber.EPSILON){if(c<0&&(a=this._points[s],l=-l,o=this._points[r],c=-c),e.yo.y)continue;if(e.y===a.y&&e.x===a.x)return!0;{let f=c*(e.x-a.x)-l*(e.y-a.y);if(f===0)return!0;if(f<0)continue;t=!t}}else{if(e.y!==a.y)continue;if(o.x<=e.x&&e.x<=a.x||a.x<=e.x&&e.x<=o.x)return!0}}return t}close(){return this.closed=!0,this}length(){let e=this._length;if(this.closed){let t=this._points[this._points.length-1],i=this._points[0];e+=i.subtract(t).length()}return e}area(){let e=this._points.length,t=0;for(let i=e-1,r=0;r1)return Fe.Zero();let t=e*this.length(),i=0;for(let r=0;r=i&&t<=c){let f=l.normalize(),d=t-i;return new Fe(a.x+f.x*d,a.y+f.y*d)}i=c}return Fe.Zero()}static StartingAt(e,t){return new n(e,t)}},ih=class n{constructor(e,t=null,i,r=!1){this.path=e,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:b.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:q.Identity()};for(let s=0;st){let c=e;e=t,t=c}let i=this.getCurve(),r=this.getPointAt(e),s=this.getPreviousPointIndexAt(e),a=this.getPointAt(t),o=this.getPreviousPointIndexAt(t)+1,l=[];return e!==0&&(s++,l.push(r)),l.push(...i.slice(s,o)),(t!==1||e===1)&&l.push(a),new n(l,this.getNormalAt(e),this._raw,this._alignTangentsWithPath)}update(e,t=null,i=!1){for(let r=0;rt+1;)t++,i=this._curve[e].subtract(this._curve[e-t]);return i}_normalVector(e,t){let i,r=e.length();if(r===0&&(r=1),t==null){let s;Si(Math.abs(e.y)/r,1,Nt)?Si(Math.abs(e.x)/r,1,Nt)?Si(Math.abs(e.z)/r,1,Nt)?s=b.Zero():s=new b(0,0,1):s=new b(1,0,0):s=new b(0,-1,0),i=b.Cross(e,s)}else i=b.Cross(e,t),b.CrossToRef(i,e,i);return i.normalize(),i}_updatePointAtData(e,t=!1){if(this._pointAtData.id===e)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=e;let i=this.getPoints();if(e<=0)return this._setPointAtData(0,0,i[0],0,t);if(e>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,t);let r=i[0],s,a=0,o=e*this.length();for(let l=1;lo){let d=(a-o)/c,h=r.subtract(s),u=s.add(h.scaleInPlace(d));return this._setPointAtData(e,1-d,u,l-1,t)}r=s}return this._pointAtData}_setPointAtData(e,t,i,r,s){return this._pointAtData.point=i,this._pointAtData.position=e,this._pointAtData.subPosition=t,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=s,s&&this._updateInterpolationMatrix(),this._pointAtData}_updateInterpolationMatrix(){this._pointAtData.interpolationMatrix=q.Identity();let e=this._pointAtData.previousPointArrayIndex;if(e!==this._tangents.length-1){let t=e+1,i=this._tangents[e].clone(),r=this._normals[e].clone(),s=this._binormals[e].clone(),a=this._tangents[t].clone(),o=this._normals[t].clone(),l=this._binormals[t].clone(),c=Xe.RotationQuaternionFromAxis(r,s,i),f=Xe.RotationQuaternionFromAxis(o,l,a);Xe.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var ql,UA=I(()=>{ql=class n{constructor(e,t){this.width=e,this.height=t}toString(){return`{W: ${this.width}, H: ${this.height}}`}getClassName(){return"Size"}getHashCode(){let e=this.width|0;return e=e*397^(this.height|0),e}copyFrom(e){this.width=e.width,this.height=e.height}copyFromFloats(e,t){return this.width=e,this.height=t,this}set(e,t){return this.copyFromFloats(e,t)}multiplyByFloats(e,t){return new n(this.width*e,this.height*t)}clone(){return new n(this.width,this.height)}equals(e){return e?this.width===e.width&&this.height===e.height:!1}get surface(){return this.width*this.height}static Zero(){return new n(0,0)}add(e){return new n(this.width+e.width,this.height+e.height)}subtract(e){return new n(this.width-e.width,this.height-e.height)}scale(e){return new n(this.width*e,this.height*e)}static Lerp(e,t,i){let r=e.width+(t.width-e.width)*i,s=e.height+(t.height-e.height)*i;return new n(r,s)}}});var KU=I(()=>{ke()});var go,_m=I(()=>{go=class n{constructor(e,t,i,r){this.x=e,this.y=t,this.width=i,this.height=r}toGlobal(e,t){return new n(this.x*e,this.y*t,this.width*e,this.height*t)}toGlobalToRef(e,t,i){return i.x=this.x*e,i.y=this.y*t,i.width=this.width*e,i.height=this.height*t,this}clone(){return new n(this.x,this.y,this.width,this.height)}}});var jU=I(()=>{lm();Ht();Un();BA();rh();um();UA();ke();KU();_m()});var ll,qoe,Zl,Ql,hg,cl,ug=I(()=>{ke();jU();ll=[Math.sqrt(1/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(3/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(15/(4*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(5/(16*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(15/(16*Math.PI))],qoe=[()=>1,n=>n.y,n=>n.z,n=>n.x,n=>n.x*n.y,n=>n.y*n.z,n=>3*n.z*n.z-1,n=>n.x*n.z,n=>n.x*n.x-n.y*n.y],Zl=(n,e)=>ll[n]*qoe[n](e),Ql=[Math.PI,2*Math.PI/3,2*Math.PI/3,2*Math.PI/3,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4],hg=class n{constructor(){this.preScaled=!1,this.l00=b.Zero(),this.l1_1=b.Zero(),this.l10=b.Zero(),this.l11=b.Zero(),this.l2_2=b.Zero(),this.l2_1=b.Zero(),this.l20=b.Zero(),this.l21=b.Zero(),this.l22=b.Zero()}addLight(e,t,i){$.Vector3[0].set(t.r,t.g,t.b);let r=$.Vector3[0],s=$.Vector3[1];r.scaleToRef(i,s),s.scaleToRef(Zl(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(Zl(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(Zl(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(Zl(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(Zl(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(Zl(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(Zl(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(Zl(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(Zl(8,e),$.Vector3[2]),this.l22.addInPlace($.Vector3[2])}scaleInPlace(e){this.l00.scaleInPlace(e),this.l1_1.scaleInPlace(e),this.l10.scaleInPlace(e),this.l11.scaleInPlace(e),this.l2_2.scaleInPlace(e),this.l2_1.scaleInPlace(e),this.l20.scaleInPlace(e),this.l21.scaleInPlace(e),this.l22.scaleInPlace(e)}convertIncidentRadianceToIrradiance(){this.l00.scaleInPlace(Ql[0]),this.l1_1.scaleInPlace(Ql[1]),this.l10.scaleInPlace(Ql[2]),this.l11.scaleInPlace(Ql[3]),this.l2_2.scaleInPlace(Ql[4]),this.l2_1.scaleInPlace(Ql[5]),this.l20.scaleInPlace(Ql[6]),this.l21.scaleInPlace(Ql[7]),this.l22.scaleInPlace(Ql[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(ll[0]),this.l1_1.scaleInPlace(ll[1]),this.l10.scaleInPlace(ll[2]),this.l11.scaleInPlace(ll[3]),this.l2_2.scaleInPlace(ll[4]),this.l2_1.scaleInPlace(ll[5]),this.l20.scaleInPlace(ll[6]),this.l21.scaleInPlace(ll[7]),this.l22.scaleInPlace(ll[8])}updateFromArray(e){return b.FromArrayToRef(e[0],0,this.l00),b.FromArrayToRef(e[1],0,this.l1_1),b.FromArrayToRef(e[2],0,this.l10),b.FromArrayToRef(e[3],0,this.l11),b.FromArrayToRef(e[4],0,this.l2_2),b.FromArrayToRef(e[5],0,this.l2_1),b.FromArrayToRef(e[6],0,this.l20),b.FromArrayToRef(e[7],0,this.l21),b.FromArrayToRef(e[8],0,this.l22),this}updateFromFloatsArray(e){return b.FromFloatsToRef(e[0],e[1],e[2],this.l00),b.FromFloatsToRef(e[3],e[4],e[5],this.l1_1),b.FromFloatsToRef(e[6],e[7],e[8],this.l10),b.FromFloatsToRef(e[9],e[10],e[11],this.l11),b.FromFloatsToRef(e[12],e[13],e[14],this.l2_2),b.FromFloatsToRef(e[15],e[16],e[17],this.l2_1),b.FromFloatsToRef(e[18],e[19],e[20],this.l20),b.FromFloatsToRef(e[21],e[22],e[23],this.l21),b.FromFloatsToRef(e[24],e[25],e[26],this.l22),this}static FromArray(e){return new n().updateFromArray(e)}static FromPolynomial(e){let t=new n;return t.l00=e.xx.scale(.376127).add(e.yy.scale(.376127)).add(e.zz.scale(.376126)),t.l1_1=e.y.scale(.977204),t.l10=e.z.scale(.977204),t.l11=e.x.scale(.977204),t.l2_2=e.xy.scale(1.16538),t.l2_1=e.yz.scale(1.16538),t.l20=e.zz.scale(1.34567).subtract(e.xx.scale(.672834)).subtract(e.yy.scale(.672834)),t.l21=e.zx.scale(1.16538),t.l22=e.xx.scale(1.16538).subtract(e.yy.scale(1.16538)),t.l1_1.scaleInPlace(-1),t.l11.scaleInPlace(-1),t.l2_1.scaleInPlace(-1),t.l21.scaleInPlace(-1),t.scaleInPlace(Math.PI),t}},cl=class n{constructor(){this.x=b.Zero(),this.y=b.Zero(),this.z=b.Zero(),this.xx=b.Zero(),this.yy=b.Zero(),this.zz=b.Zero(),this.xy=b.Zero(),this.yz=b.Zero(),this.zx=b.Zero()}get preScaledHarmonics(){return this._harmonics||(this._harmonics=hg.FromPolynomial(this)),this._harmonics.preScaled||this._harmonics.preScaleForRendering(),this._harmonics}addAmbient(e){$.Vector3[0].copyFromFloats(e.r,e.g,e.b);let t=$.Vector3[0];this.xx.addInPlace(t),this.yy.addInPlace(t),this.zz.addInPlace(t)}scaleInPlace(e){this.x.scaleInPlace(e),this.y.scaleInPlace(e),this.z.scaleInPlace(e),this.xx.scaleInPlace(e),this.yy.scaleInPlace(e),this.zz.scaleInPlace(e),this.yz.scaleInPlace(e),this.zx.scaleInPlace(e),this.xy.scaleInPlace(e)}updateFromHarmonics(e){return this._harmonics=e,this.x.copyFrom(e.l11),this.x.scaleInPlace(1.02333).scaleInPlace(-1),this.y.copyFrom(e.l1_1),this.y.scaleInPlace(1.02333).scaleInPlace(-1),this.z.copyFrom(e.l10),this.z.scaleInPlace(1.02333),this.xx.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.247708),$.Vector3[1].copyFrom(e.l22).scaleInPlace(.429043),this.xx.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).addInPlace($.Vector3[1]),this.yy.copyFrom(e.l00),this.yy.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).subtractInPlace($.Vector3[1]),this.zz.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.495417),this.zz.scaleInPlace(.886277).addInPlace($.Vector3[0]),this.yz.copyFrom(e.l2_1),this.yz.scaleInPlace(.858086).scaleInPlace(-1),this.zx.copyFrom(e.l21),this.zx.scaleInPlace(.858086).scaleInPlace(-1),this.xy.copyFrom(e.l2_2),this.xy.scaleInPlace(.858086),this.scaleInPlace(1/Math.PI),this}static FromHarmonics(e){return new n().updateFromHarmonics(e)}static FromArray(e){let t=new n;return b.FromArrayToRef(e[0],0,t.x),b.FromArrayToRef(e[1],0,t.y),b.FromArrayToRef(e[2],0,t.z),b.FromArrayToRef(e[3],0,t.xx),b.FromArrayToRef(e[4],0,t.yy),b.FromArrayToRef(e[5],0,t.zz),b.FromArrayToRef(e[6],0,t.yz),b.FromArrayToRef(e[7],0,t.zx),b.FromArrayToRef(e[8],0,t.xy),t}}});function P(n,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,i);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(s=(r<3?a(s):r>3?a(e,t,s):a(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s}var Gt=I(()=>{});function qU(n){let e=n.getClassName();return GA[e]||(GA[e]={}),GA[e]}function kA(n){let e=n.getClassName();if(VA[e])return VA[e];VA[e]={};let t=VA[e],i=n,r=e;for(;r;){let s=GA[r];for(let l in s)t[l]=s[l];let a,o=!1;do{if(a=Object.getPrototypeOf(i),!a.getClassName){o=!0;break}if(a.getClassName()!==r)break;i=a}while(a);if(o)break;r=a.getClassName(),i=a}return t}var VA,GA,_C=I(()=>{VA={},GA={}});function Ma(n,e){return(t,i)=>{let r=qU(t);r[i]||(r[i]={type:n,sourceName:e})}}function Zoe(n,e=null){return(t,i)=>{let r=e||"_"+i;Object.defineProperty(t,i,{get:function(){return this[r]},set:function(s){var a;typeof((a=this[r])==null?void 0:a.equals)=="function"&&this[r].equals(s)||this[r]!==s&&(this[r]=s,t[n].apply(this))},enumerable:!0,configurable:!0})}}function le(n,e=null){return Zoe(n,e)}function F(n){return Ma(0,n)}function Ut(n){return Ma(1,n)}function Tr(n){return Ma(2,n)}function gm(n){return Ma(3,n)}function vm(n){return Ma(4,n)}function Xr(n){return Ma(5,n)}function WA(n){return Ma(6,n)}function ZU(n){return Ma(7,n)}function Em(n){return Ma(8,n)}function QU(n){return Ma(9,n)}function $U(n){return Ma(10,n)}function JU(n){return Ma(11,n)}function ws(n,e,t,i){let r=t.value;t.value=(...s)=>{let a=r;if(typeof _native!="undefined"&&_native[e]){let o=_native[e];i?a=(...l)=>i(...l)?o(...l):r(...l):a=o}return n[e]=a,a(...s)}}function ut(n,e=null){return(t,i)=>{let r=i;Object.defineProperty(t,e||"",{get:function(){return this[r].value},set:function(a){var o,l;typeof((l=(o=this[r])==null?void 0:o.value)==null?void 0:l.equals)=="function"&&this[r].value.equals(a)||this[r].value!==a&&(this[r].value=a,t[n].apply(this))},enumerable:!0,configurable:!0})}}var Vt=I(()=>{_C();ws.filter=function(n){return(e,t,i)=>ws(e,t,i,n)}});function _f(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}var mg=I(()=>{});function Qoe(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var Cr,nh=I(()=>{Cr=class n{constructor(){this._xhr=Qoe(),this._requestURL=""}static get IsCustomRequestAvailable(){return Object.keys(n.CustomRequestHeaders).length>0||n.CustomRequestModifiers.length>0}static _CleanUrl(e){return e=e.replace("file:http:","http:"),e=e.replace("file:https:","https:"),e}static _ShouldSkipRequestModifications(e){return n.SkipRequestModificationForBabylonCDN&&(e.includes("preview.babylonjs.com")||e.includes("cdn.babylonjs.com"))}static _CollectCustomizations(e,t={}){let i={...t};if(n._ShouldSkipRequestModifications(e))return{url:e,headers:i};for(let s in n.CustomRequestHeaders){let a=n.CustomRequestHeaders[s];a&&(i[s]=a)}let r={setRequestHeader:(s,a)=>{i[s]=a}};for(let s of n.CustomRequestModifiers){if(n._ShouldSkipRequestModifications(e))break;let a=s(r,e);typeof a=="string"&&(e=a)}return{url:e,headers:i}}static async FetchAsync(e,t={}){var r,s,a;let i=(r=t.method)!=null?r:"GET";if(typeof fetch!="undefined"){let{url:o,headers:l}=n._CollectCustomizations(n._CleanUrl(e),(s=t.headers)!=null?s:{});return await fetch(o,{method:i,headers:l,body:(a=t.body)!=null?a:void 0})}return await new Promise((o,l)=>{var f;let c=new n;c.responseType="arraybuffer",c.addEventListener("readystatechange",()=>{if(c.readyState===4)if(c.status>=200&&c.status<300){let d=typeof Headers!="undefined"?new Headers:void 0,h=c.getResponseHeader("Content-Type");h&&d&&d.set("Content-Type",h),o(typeof Response!="undefined"?new Response(c.response,{status:c.status,statusText:c.statusText,headers:d}):{ok:!0,status:c.status,statusText:c.statusText,headers:{get:u=>c.getResponseHeader(u)},arrayBuffer:async()=>await Promise.resolve(c.response)})}else l(new Error(`HTTP ${c.status} loading '${c.requestURL}': ${c.statusText}`))}),c.open(i,e,t.headers),c.send((f=t.body)!=null?f:null)})}get requestURL(){return this._requestURL}get onprogress(){return this._xhr.onprogress}set onprogress(e){this._xhr.onprogress=e}get readyState(){return this._xhr.readyState}get status(){return this._xhr.status}get statusText(){return this._xhr.statusText}get response(){return this._xhr.response}get responseURL(){return this._xhr.responseURL}get responseText(){return this._xhr.responseText}get responseType(){return this._xhr.responseType}set responseType(e){this._xhr.responseType=e}get timeout(){return this._xhr.timeout}set timeout(e){this._xhr.timeout=e}addEventListener(e,t,i){this._xhr.addEventListener(e,t,i)}removeEventListener(e,t,i){this._xhr.removeEventListener(e,t,i)}abort(){this._xhr.abort()}send(e){this._xhr.send(e)}open(e,t,i){let{url:r,headers:s}=n._CollectCustomizations(t,i);this._requestURL=n._CleanUrl(r),this._xhr.open(e,this._requestURL,!0);for(let a in s)this._xhr.setRequestHeader(a,s[a])}setRequestHeader(e,t){this._xhr.setRequestHeader(e,t)}getResponseHeader(e){return this._xhr.getResponseHeader(e)}};Cr.CustomRequestHeaders={};Cr.CustomRequestModifiers=new Array;Cr.SkipRequestModificationForBabylonCDN=!0});var gf,eV=I(()=>{gf=class{};gf.FilesToLoad={}});var HA,tV=I(()=>{HA=class{static ExponentialBackoff(e=3,t=500){return(i,r,s)=>r.status!==0||s>=e||i.indexOf("file:")!==-1?-1:Math.pow(2,s)*t}}});var $l,Ia,Fs,pg=I(()=>{$l=class extends Error{};$l._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));Ia={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Fs=class n extends $l{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",$l._setPrototypeOf(this,n.prototype)}}});function $oe(n){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="",i,r,s,a,o,l,c,f=0;for(;f>2,o=(i&3)<<4|r>>4,l=(r&15)<<2|s>>6,c=s&63,isNaN(r)?l=c=64:isNaN(s)&&(c=64),t+=e.charAt(a)+e.charAt(o)+e.charAt(l)+e.charAt(c);return t}function Joe(n){let e=gC(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{iV=n=>{if(typeof TextDecoder!="undefined")return new TextDecoder().decode(n);let e="";for(let t=0;t{let e=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);return typeof e.toBase64=="function"?e.toBase64():$oe(e)},gC=n=>atob(n),rV=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:Joe(n)});function ele(n,e,t,i){switch(e){case 5120:{let r=n.getInt8(t);return i&&(r=Math.max(r/127,-1)),r}case 5121:{let r=n.getUint8(t);return i&&(r=r/255),r}case 5122:{let r=n.getInt16(t,!0);return i&&(r=Math.max(r/32767,-1)),r}case 5123:{let r=n.getUint16(t,!0);return i&&(r=r/65535),r}case 5124:return n.getInt32(t,!0);case 5125:return n.getUint32(t,!0);case 5126:return n.getFloat32(t,!0);default:throw new Error(`Invalid component type ${e}`)}}function tle(n,e,t,i,r){switch(e){case 5120:{i&&(r=Math.round(r*127)),n.setInt8(t,r);break}case 5121:{i&&(r=Math.round(r*255)),n.setUint8(t,r);break}case 5122:{i&&(r=Math.round(r*32767)),n.setInt16(t,r,!0);break}case 5123:{i&&(r=Math.round(r*65535)),n.setUint16(t,r,!0);break}case 5124:{n.setInt32(t,r,!0);break}case 5125:{n.setUint32(t,r,!0);break}case 5126:{n.setFloat32(t,r,!0);break}default:throw new Error(`Invalid component type ${e}`)}}function fl(n){switch(n){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5124:case 5125:case 5126:return 4;default:throw new Error(`Invalid type '${n}'`)}}function vC(n){switch(n){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error(`Invalid component type '${n}'`)}}function sh(n,e,t,i,r,s,a,o){let l=new Array(i),c=new Array(i);if(n instanceof Array){let f=e/4,d=t/4;for(let h=0;h{for(let u=0;un.length)throw new Error("Last accessed index is out of bounds.");if(_{for(let S=0;Sf.byteLength)throw new Error("Last accessed byte is out of bounds.");let u=e*o;if(r{for(let g=0;g{for(let h=0;h{Pt()});function Ef(n){return rV(n.split(",")[1])}var oV,Am,XA,SC,ile,ki,YA,aV,xm,ah,dl,KA,lV,cV,vf,fV,dV,rle,gg,nle,Jl=I(()=>{nh();ba();hi();eV();tV();pg();_g();AA();Ni();Pt();sl();mf();Vr();Tm();oV=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),Am=class n extends Fs{constructor(e,t){super(e,Ia.LoadFileError),this.name="LoadFileError",$l._setPrototypeOf(this,n.prototype),t instanceof Cr?this.request=t:this.file=t}},XA=class n extends Fs{constructor(e,t){super(e,Ia.RequestFileError),this.request=t,this.name="RequestFileError",$l._setPrototypeOf(this,n.prototype)}},SC=class n extends Fs{constructor(e,t){super(e,Ia.ReadFileError),this.file=t,this.name="ReadFileError",$l._setPrototypeOf(this,n.prototype)}},ile=n=>(n=n.replace(/#/gm,"%23"),n),ki={DefaultRetryStrategy:HA.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:ile},YA=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&ki.CorsBehavior)if(typeof ki.CorsBehavior=="string"||ki.CorsBehavior instanceof String)e.crossOrigin=ki.CorsBehavior;else{let t=ki.CorsBehavior(n);t&&(e.crossOrigin=t)}},aV={getRequiredSize:null},xm=(n,e,t,i,r="",s,a=Oe.LastCreatedEngine)=>{if(typeof HTMLImageElement=="undefined"&&!(a!=null&&a._features.forceBitmapOverHTMLImageElement))return t("LoadImage is only supported in web or BabylonNative environments."),null;let o,l=!1;if(n instanceof ArrayBuffer||ArrayBuffer.isView(n))if(typeof Blob!="undefined"&&typeof URL!="undefined"){let E;n instanceof ArrayBuffer?E=n:E=zA(n),o=URL.createObjectURL(new Blob([E],{type:r})),l=!0}else o=`data:${r};base64,`+Sm(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=ki.CleanUrl(n),o=ki.PreprocessUrl(o));let c=E=>{if(t){let T=o||n.toString();t(`Error while trying to load image: ${T.indexOf("http")===0||T.length<=128?T:T.slice(0,128)+"..."}`,E)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return dl(o,E=>{a.createImageBitmap(new Blob([E],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(T=>{e(T),l&&URL.revokeObjectURL(o)}).catch(T=>{t&&t("Error while trying to load image: "+n,T)})},void 0,i||void 0,!0,(E,T)=>{c(T)}),null;let f=new Image;if(aV.getRequiredSize){let E=aV.getRequiredSize(n);E.width&&(f.width=E.width),E.height&&(f.height=E.height)}YA(o,f);let d=[],h=()=>{for(let E of d)E.target.addEventListener(E.name,E.handler)},u=()=>{for(let E of d)E.target.removeEventListener(E.name,E.handler);d.length=0},m=()=>{u(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},_=E=>{u(),c(E),l&&f.src&&URL.revokeObjectURL(f.src)},p=E=>{if(E.blockedURI!==f.src||E.disposition==="report")return;u();let T=new Error(`CSP violation of policy ${E.effectiveDirective} ${E.blockedURI}. Current policy is ${E.originalPolicy}`);Oe.UseFallbackTexture=!1,c(T),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:_}),d.push({target:document,name:"securitypolicyviolation",handler:p}),h();let g=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",x=()=>{g||v||!Cr.IsCustomRequestAvailable?f.src=o:dl(o,(E,T,R)=>{let M=!r&&R?R:r,y=new Blob([E],{type:M}),C=URL.createObjectURL(y);l=!0,f.src=C},void 0,i||void 0,!0,(E,T)=>{c(T)})},S=()=>{i&&i.loadImage(o,f)};if(!g&&!v&&i&&i.enableTexturesOffline)i.open(S,x);else{if(o.indexOf("file:")!==-1){let E=decodeURIComponent(o.substring(5).toLowerCase());if(gf.FilesToLoad[E]&&typeof URL!="undefined"){try{let T;try{T=URL.createObjectURL(gf.FilesToLoad[E])}catch(R){T=URL.createObjectURL(gf.FilesToLoad[E])}f.src=T,l=!0}catch(T){f.src=""}return f}}x()}return f},ah=(n,e,t,i,r)=>{let s=new FileReader,a={onCompleteObservable:new ie,abort:()=>s.abort()};return s.onloadend=()=>a.onCompleteObservable.notifyObservers(a),r&&(s.onerror=()=>{r(new SC(`Unable to read ${n.name}`,n))}),s.onload=o=>{e(o.target.result)},t&&(s.onprogress=t),i?s.readAsArrayBuffer(n):s.readAsText(n),a},dl=(n,e,t,i,r,s,a)=>{if(n.name)return ah(n,e,t,r,s?f=>{s(void 0,f)}:void 0);let o=n;if(o.indexOf("file:")!==-1){let f=decodeURIComponent(o.substring(5).toLowerCase());f.indexOf("./")===0&&(f=f.substring(2));let d=gf.FilesToLoad[f];if(d)return ah(d,e,t,r,s?h=>s(void 0,new Am(h.message,h.file)):void 0)}let{match:l,type:c}=fV(o);if(l){let f={onCompleteObservable:new ie,abort:()=>()=>{}};try{let d=r?Ef(o):dV(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return ho.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return KA(o,(f,d)=>{e(f,d==null?void 0:d.responseURL,d==null?void 0:d.getResponseHeader("content-type"))},t,i,r,s?f=>{s(f.request,new Am(f.message,f.request))}:void 0,a)},KA=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=ki.CleanUrl(n),n=ki.PreprocessUrl(n);let o=ki.BaseUrl+n,l=!1,c={onCompleteObservable:new ie,abort:()=>l=!0},f=()=>{let h=new Cr,u=null,m,_=()=>{h&&(t&&h.removeEventListener("progress",t),m&&h.removeEventListener("readystatechange",m),h.removeEventListener("loadend",p))},p=()=>{_(),c.onCompleteObservable.notifyObservers(c),c.onCompleteObservable.clear(),t=void 0,m=null,p=null,s=void 0,a=void 0,e=void 0};c.abort=()=>{l=!0,p&&p(),h&&h.readyState!==(XMLHttpRequest.DONE||4)&&h.abort(),u!==null&&(clearTimeout(u),u=null),h=null};let g=x=>{let S=x.message||"Unknown error";s&&h?s(new XA(S,h)):ee.Error(S)},v=x=>{if(h){if(h.open("GET",o),a)try{a(h)}catch(S){g(S);return}r&&(h.responseType="arraybuffer"),t&&h.addEventListener("progress",t),p&&h.addEventListener("loadend",p),m=()=>{if(!(l||!h)&&h.readyState===(XMLHttpRequest.DONE||4)){if(m&&h.removeEventListener("readystatechange",m),h.status>=200&&h.status<300||h.status===0&&(!ur()||cV())){let T=r?h.response:h.responseText;if(T!==null){try{e&&e(T,h)}catch(R){g(R)}return}}let S=ki.DefaultRetryStrategy;if(S){let T=S(o,h,x);if(T!==-1){_(),h=new Cr,u=setTimeout(()=>v(x+1),T);return}}let E=new XA("Error status: "+h.status+" "+h.statusText+" - Unable to load "+o,h);s&&s(E)}},h.addEventListener("readystatechange",m),h.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let h=m=>{m&&m.status>400?s&&s(m):f()},u=()=>{i&&i.loadFile(ki.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,h,r)};i.open(u,h)}else f();return c},lV=n=>{let{match:e,type:t}=fV(n);if(e)return t||void 0;let i=n.lastIndexOf(".");switch(n.substring(i+1).toLowerCase()){case"glb":return"model/gltf-binary";case"bin":return"application/octet-stream";case"gltf":return"model/gltf+json";case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp";case"ktx":return"image/ktx";case"ktx2":return"image/ktx2";case"avif":return"image/avif";default:return}},cV=()=>typeof location!="undefined"&&location.protocol==="file:",vf=n=>oV.test(n),fV=n=>{let e=oV.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};dV=n=>gC(n.split(",")[1]),rle=()=>{Ie._FileToolsLoadImage=xm,tm.loadFile=dl,eC.loadFile=dl};rle();nle=(n,e,t,i,r,s,a,o,l,c)=>{gg={DecodeBase64UrlToBinary:n,DecodeBase64UrlToString:e,DefaultRetryStrategy:t.DefaultRetryStrategy,BaseUrl:t.BaseUrl,CorsBehavior:t.CorsBehavior,PreprocessUrl:t.PreprocessUrl,IsBase64DataUrl:i,IsFileURL:r,LoadFile:s,LoadImage:a,ReadFile:o,RequestFile:l,SetCorsBehavior:c},Object.defineProperty(gg,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(gg,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(gg,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(gg,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};nle(Ef,dV,ki,vf,cV,dl,xm,ah,KA,YA)});var jA,hV=I(()=>{UA();jA=class n{get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get coordinatesMode(){return 0}get isCube(){return this._texture?this._texture.isCube:!1}set isCube(e){this._texture&&(this._texture.isCube=e)}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}getClassName(){return"ThinTexture"}static _IsRenderTargetWrapper(e){return(e==null?void 0:e.shareDepth)!==void 0}constructor(e){var t,i,r;this._wrapU=1,this._wrapV=1,this.wrapR=1,this.anisotropicFilteringLevel=4,this.delayLoadState=0,this._texture=null,this._engine=null,this._cachedSize=ql.Zero(),this._cachedBaseSize=ql.Zero(),this._initialSamplingMode=2,this._texture=n._IsRenderTargetWrapper(e)?e.texture:e,this._texture&&(this._engine=this._texture.getEngine(),this.wrapU=(t=this._texture._cachedWrapU)!=null?t:this.wrapU,this.wrapV=(i=this._texture._cachedWrapV)!=null?i:this.wrapV,this.wrapR=(r=this._texture._cachedWrapR)!=null?r:this.wrapR)}isReady(){return this.delayLoadState===4?(this.delayLoad(),!1):this._texture?this._texture.isReady:!1}delayLoad(){}getInternalTexture(){return this._texture}getSize(){if(this._texture){if(this._texture.width)return this._cachedSize.width=this._texture.width,this._cachedSize.height=this._texture.height,this._cachedSize;if(this._texture._size)return this._cachedSize.width=this._texture._size,this._cachedSize.height=this._texture._size,this._cachedSize}return this._cachedSize}getBaseSize(){return!this.isReady()||!this._texture?(this._cachedBaseSize.width=0,this._cachedBaseSize.height=0,this._cachedBaseSize):this._texture._size?(this._cachedBaseSize.width=this._texture._size,this._cachedBaseSize.height=this._texture._size,this._cachedBaseSize):(this._cachedBaseSize.width=this._texture.baseWidth,this._cachedBaseSize.height=this._texture.baseHeight,this._cachedBaseSize)}get samplingMode(){return this._texture?this._texture.samplingMode:this._initialSamplingMode}updateSamplingMode(e,t=!1){this._texture&&this._engine&&this._engine.updateTextureSamplingMode(e,this._texture,this._texture.generateMipMaps&&t)}releaseInternalTexture(){this._texture&&(this._texture.dispose(),this._texture=null)}dispose(){this._texture&&(this.releaseInternalTexture(),this._engine=null)}}});var qA,uV=I(()=>{qA=class n{static Eval(e,t){return e.match(/\([^()]*\)/g)?e=e.replace(/\([^()]*\)/g,i=>(i=i.slice(1,i.length-1),n._HandleParenthesisContent(i,t))):e=n._HandleParenthesisContent(e,t),e==="true"?!0:e==="false"?!1:n.Eval(e,t)}static _HandleParenthesisContent(e,t){t=t||(s=>s==="true");let i,r=e.split("||");for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=n._SimplifyNegation(r[s].trim()),o=a.split("&&");if(o.length>1)for(let l=0;l(t=t.replace(/[\s]/g,()=>""),t.length%2?"!":"")),e=e.trim(),e==="!true"?e="false":e==="!false"&&(e="true"),e}}});var $t,Sf=I(()=>{uV();$t=class n{static EnableFor(e){e._tags=e._tags||{},e.hasTags=()=>n.HasTags(e),e.addTags=t=>n.AddTagsTo(e,t),e.removeTags=t=>n.RemoveTagsFrom(e,t),e.matchesTagsQuery=t=>n.MatchesQuery(e,t)}static DisableFor(e){delete e._tags,delete e.hasTags,delete e.addTags,delete e.removeTags,delete e.matchesTagsQuery}static HasTags(e){if(!e._tags)return!1;let t=e._tags;for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))return!0;return!1}static GetTags(e,t=!0){if(!e._tags)return null;if(t){let i=[];for(let r in e._tags)Object.prototype.hasOwnProperty.call(e._tags,r)&&e._tags[r]===!0&&i.push(r);return i.join(" ")}else return e._tags}static AddTagsTo(e,t){if(!t||typeof t!="string")return;let i=t.split(" ");for(let r of i)n._AddTagTo(e,r)}static _AddTagTo(e,t){t=t.trim(),!(t===""||t==="true"||t==="false")&&(t.match(/[\s]/)||t.match(/^([!]|([|]|[&]){2})/)||(n.EnableFor(e),e._tags[t]=!0))}static RemoveTagsFrom(e,t){if(!n.HasTags(e))return;let i=t.split(" ");for(let r in i)n._RemoveTagFrom(e,i[r])}static _RemoveTagFrom(e,t){delete e._tags[t]}static MatchesQuery(e,t){return t===void 0?!0:t===""?n.HasTags(e):qA.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var mV,it,br=I(()=>{un();Sf();Ht();ke();_C();mV=function(n,e,t,i={}){let r=n();$t&&$t.HasTags(e)&&$t.AddTagsTo(r,$t.GetTags(e,!0));let s=kA(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||it.AllowLoadingUniqueId))switch(f){case 0:case 6:case 9:case 11:typeof c.slice=="function"?r[o]=c.slice():r[o]=c;break;case 1:i.cloneTexturesOnlyOnce&&a[c.uniqueId]?r[o]=a[c.uniqueId]:(r[o]=t||c.isRenderTarget?c:c.clone(),a[c.uniqueId]=r[o]);break;case 2:case 3:case 4:case 5:case 7:case 8:case 10:case 12:r[o]=t?c:c.clone();break}}return r},it=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw Qe("ImageProcessingConfiguration")};it._FresnelParametersParser=n=>{throw Qe("FresnelParameters")};it._ColorCurvesParser=n=>{throw Qe("ColorCurves")};it._TextureParser=(n,e,t)=>{throw Qe("Texture")}});var pi,vg=I(()=>{Gt();Vt();hi();ke();Ni();mg();Jl();hV();br();pi=class n extends jA{set hasAlpha(e){this._hasAlpha!==e&&(this._hasAlpha=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get hasAlpha(){return this._hasAlpha}set getAlphaFromRGB(e){this._getAlphaFromRGB!==e&&(this._getAlphaFromRGB=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get getAlphaFromRGB(){return this._getAlphaFromRGB}set coordinatesIndex(e){this._coordinatesIndex!==e&&(this._coordinatesIndex=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesIndex(){return this._coordinatesIndex}set coordinatesMode(e){this._coordinatesMode!==e&&(this._coordinatesMode=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesMode(){return this._coordinatesMode}get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get isCube(){return this._texture?this._texture.isCube:this._isCube}set isCube(e){this._texture?this._texture.isCube=e:this._isCube=e}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}get gammaSpace(){if(this._texture)this._texture._gammaSpace===null&&(this._texture._gammaSpace=this._gammaSpace);else return this._gammaSpace;return this._texture._gammaSpace&&!this._texture._useSRGBBuffer}set gammaSpace(e){var t;if(this._texture){if(this._texture._gammaSpace===e)return;this._texture._gammaSpace=e}else{if(this._gammaSpace===e)return;this._gammaSpace=e}(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this))}get isRGBD(){return this._texture!=null&&this._texture._isRGBD}set isRGBD(e){var t;e!==this.isRGBD&&(this._texture&&(this._texture._isRGBD=e),(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)))}get noMipmap(){return!1}get lodGenerationOffset(){return this._texture?this._texture._lodGenerationOffset:0}set lodGenerationOffset(e){this._texture&&(this._texture._lodGenerationOffset=e)}get lodGenerationScale(){return this._texture?this._texture._lodGenerationScale:0}set lodGenerationScale(e){this._texture&&(this._texture._lodGenerationScale=e)}get linearSpecularLOD(){return this._texture?this._texture._linearSpecularLOD:!1}set linearSpecularLOD(e){this._texture&&(this._texture._linearSpecularLOD=e)}get irradianceTexture(){return this._texture?this._texture._irradianceTexture:null}set irradianceTexture(e){this._texture&&(this._texture._irradianceTexture=e)}get uid(){return this._uid||(this._uid=_f()),this._uid}toString(){return this.name}getClassName(){return"BaseTexture"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get isBlocking(){return!0}get loadingError(){return this._loadingError}get errorObject(){return this._errorObject}constructor(e,t=null){super(null),this.metadata=null,this.reservedDataStore=null,this._hasAlpha=!1,this._getAlphaFromRGB=!1,this.level=1,this._coordinatesIndex=0,this.optimizeUVAllocation=!0,this._coordinatesMode=0,this.wrapR=1,this.anisotropicFilteringLevel=n.DEFAULT_ANISOTROPIC_FILTERING_LEVEL,this._isCube=!1,this._gammaSpace=!0,this.invertZ=!1,this.lodLevelInAlpha=!1,this._dominantDirection=null,this.isRenderTarget=!1,this._prefiltered=!1,this._forceSerialize=!1,this.animations=[],this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._scene=null,this._uid=null,this._parentContainer=null,this._loadingError=!1,e?n._IsScene(e)?this._scene=e:this._engine=e:this._scene=Oe.LastCreatedScene,this._scene&&(this.uniqueId=this._scene.getUniqueId(),this._scene.addTexture(this),this._engine=this._scene.getEngine()),this._texture=t,this._uid=null}getScene(){return this._scene}_getEngine(){return this._engine}getTextureMatrix(){return q.IdentityReadOnly}getReflectionTextureMatrix(){return q.IdentityReadOnly}getRefractionTextureMatrix(){return this.getReflectionTextureMatrix()}isReadyOrNotBlocking(){return!this.isBlocking||this.isReady()||this.loadingError}scale(e){}get canRescale(){return!1}_getFromCache(e,t,i,r,s,a){let o=this._getEngine();if(!o)return null;let l=o._getUseSRGBBuffer(!!s,t),c=o.getLoadedTexturesCache();for(let f=0;f=0&&this._scene.textures.splice(e,1),this._scene.onTextureRemovedObservable.notifyObservers(this),this._scene=null,this._parentContainer){let t=this._parentContainer.textures.indexOf(this);t>-1&&this._parentContainer.textures.splice(t,1),this._parentContainer=null}}this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.metadata=null,super.dispose()}serialize(e=!1){if(!this.name&&!e)return null;let t=it.Serialize(this);return it.AppendSerializedAnimations(this,t),t}static WhenAllReady(e,t){let i=e.length;if(i===0){t();return}for(let r=0;r{--i===0&&t()}):--i===0&&t()}}}static _IsScene(e){return e.getClassName()==="Scene"}};pi.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],pi.prototype,"uniqueId",void 0);P([F()],pi.prototype,"name",void 0);P([F()],pi.prototype,"displayName",void 0);P([F()],pi.prototype,"metadata",void 0);P([F("hasAlpha")],pi.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],pi.prototype,"_getAlphaFromRGB",void 0);P([F()],pi.prototype,"level",void 0);P([F("coordinatesIndex")],pi.prototype,"_coordinatesIndex",void 0);P([F()],pi.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],pi.prototype,"_coordinatesMode",void 0);P([F()],pi.prototype,"wrapU",null);P([F()],pi.prototype,"wrapV",null);P([F()],pi.prototype,"wrapR",void 0);P([F()],pi.prototype,"anisotropicFilteringLevel",void 0);P([F()],pi.prototype,"isCube",null);P([F()],pi.prototype,"is3D",null);P([F()],pi.prototype,"is2DArray",null);P([F()],pi.prototype,"gammaSpace",null);P([F()],pi.prototype,"invertZ",void 0);P([F()],pi.prototype,"lodLevelInAlpha",void 0);P([F()],pi.prototype,"lodGenerationOffset",null);P([F()],pi.prototype,"lodGenerationScale",null);P([F()],pi.prototype,"linearSpecularLOD",null);P([Ut()],pi.prototype,"irradianceTexture",null);P([F()],pi.prototype,"isRenderTarget",void 0)});var Tf,ec,TC=I(()=>{ke();Vn();ug();Un();Ht();Tf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},ec=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((x=e._texture)==null?void 0:x.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,h,u,m]).then(([E,T,R,M,y,C])=>{let L=l;g&&(E=this._DownsampleFace(E,t,r,4),T=this._DownsampleFace(T,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),y=this._DownsampleFace(y,t,r,4),C=this._DownsampleFace(C,t,r,4),L=r);let w={size:L,right:T,left:E,up:R,down:M,front:y,back:C,format:p,type:E instanceof Float32Array?1:0,gammaSpace:_};S(this.ConvertCubeMapToSphericalPolynomial(w))})})}static _AreaElement(e,t){return Math.atan2(e*t,Math.sqrt(e*e+t*t+1))}static _DownsampleFace(e,t,i,r){let s=e instanceof Float32Array?e:Float32Array.from(e),a=i*i*r,o=new Float32Array(a),l=t/i,c=1/(l*l);for(let h=0;h0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,_=["right","left","up","down","front","back"],p={};for(let g of _)p[g]=this._DownsampleFace(e[g],e.size,i,m);e={...e,...p,size:i}}let r=new hg,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let _=this._FileFaces[m],p=e[_.name],g=c,v=e.format===5?4:3;for(let x=0;xL){let O=L/G;M*=O,y*=O,C*=O}}else M=wt(M,0,L),y=wt(y,0,L),C=wt(C,0,L);let w=new pe(M,y,C);r.addLight(T,w,R),s+=R,S+=a}g+=o}}let u=4*Math.PI*6/6/s;return r.scaleInPlace(u),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),cl.FromHarmonics(r)}};ec._FileFaces=[new Tf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Tf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Tf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Tf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Tf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Tf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];ec.MAX_HDRI_VALUE=4096;ec.PRESERVE_CLAMPED_COLORS=!1});var tc,AC=I(()=>{Pt();Yi();tc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=xn(e);if(t)return t;ee.Warn(e+" not found, you may have missed an import.");let i=e.split("."),r=window||this;for(let s=0,a=i.length;s=0;){let d=n[c];d<0?d=0:d>1&&(d=1),f[c]=d*255}n=f}let s=document.createElement("canvas");s.width=i,s.height=r;let a=s.getContext("2d");if(!a)return null;let o=a.createImageData(i,r);if(o.data.set(n),a.putImageData(o,0,0),t){let c=document.createElement("canvas");c.width=i,c.height=r;let f=c.getContext("2d");return f?(f.translate(0,r),f.scale(1,-1),f.drawImage(s,0,0),c.toDataURL("image/png")):null}return s.toDataURL("image/png")}function _V(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?pV(r,n.getSize(),i.invertY):null}async function gV(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?pV(r,n.getSize(),i.invertY):null}var vV=I(()=>{});var It,nn=I(()=>{It=!1});var ge,Gr=I(()=>{Gt();Vt();hi();ke();vg();Yi();un();sl();AC();um();_g();vV();nn();br();ge=class n extends pi{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw Qe("VideoTexture")}get noMipmap(){return this._noMipmap}get mimeType(){return this._mimeType}set isBlocking(e){this._isBlocking=e}get isBlocking(){return this._isBlocking}get invertY(){return this._invertY}constructor(e,t,i,r,s=n.TRILINEAR_SAMPLINGMODE,a=null,o=null,l=null,c=!1,f,d,h,u,m){var R,M,y,C,L,w,G,O,N,B,V;super(t),this.url=null,this.uOffset=0,this.vOffset=0,this.uScale=1,this.vScale=1,this.uAng=0,this.vAng=0,this.wAng=0,this.uRotationCenter=.5,this.vRotationCenter=.5,this.wRotationCenter=.5,this.homogeneousRotationInUVTransform=!1,this.inspectableCustomProperties=null,this._noMipmap=!1,this._invertY=!1,this._rowGenerationMatrix=null,this._cachedTextureMatrix=null,this._projectionModeMatrix=null,this._t0=null,this._t1=null,this._t2=null,this._cachedUOffset=-1,this._cachedVOffset=-1,this._cachedUScale=0,this._cachedVScale=0,this._cachedUAng=-1,this._cachedVAng=-1,this._cachedWAng=-1,this._cachedReflectionProjectionMatrixId=-1,this._cachedURotationCenter=-1,this._cachedVRotationCenter=-1,this._cachedWRotationCenter=-1,this._cachedHomogeneousRotationInUVTransform=!1,this._cachedIdentity3x2=!0,this._cachedReflectionTextureMatrix=null,this._cachedReflectionUOffset=-1,this._cachedReflectionVOffset=-1,this._cachedReflectionUScale=0,this._cachedReflectionVScale=0,this._cachedReflectionCoordinatesMode=-1,this._buffer=null,this._deleteBuffer=!1,this._format=null,this._delayedOnLoad=null,this._delayedOnError=null,this.onLoadObservable=new ie,this._isBlocking=!0,this.name=e||"",this.url=e;let _,p=!1,g=null,v=!0;typeof i=="object"&&i!==null?(_=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!It,s=(y=i.samplingMode)!=null?y:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(L=i.onError)!=null?L:null,l=(w=i.buffer)!=null?w:null,c=(G=i.deleteBuffer)!=null?G:!1,f=i.format,d=i.mimeType,h=i.loaderOptions,u=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,g=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):_=!!i,this._gammaSpace=v,this._noMipmap=_,this._invertY=r===void 0?!It:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=h,this._creationFlags=u,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let x=this.getScene(),S=this._getEngine();if(!S)return;S.onBeforeTextureInitObservable.notifyObservers(this);let E=()=>{this._texture&&(this._texture._invertVScale&&(this.vScale*=-1,this.vOffset+=1),this._texture._cachedWrapU!==null&&(this.wrapU=this._texture._cachedWrapU,this._texture._cachedWrapU=null),this._texture._cachedWrapV!==null&&(this.wrapV=this._texture._cachedWrapV,this._texture._cachedWrapV=null),this._texture._cachedWrapR!==null&&(this.wrapR=this._texture._cachedWrapR,this._texture._cachedWrapR=null)),this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),a&&a(),!this.isBlocking&&x&&x.resetCachedMaterial()},T=(J,Q)=>{this._loadingError=!0,this._errorObject={message:J,exception:Q},o&&o(J,Q),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!g){this._delayedOnLoad=E,this._delayedOnError=T;return}if(this._texture=g!=null?g:this._getFromCache(this.url,_,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)ho.SetImmediate(()=>E());else{let J=this._texture.onLoadedObservable.add(E);this._texture.onErrorObservable.add(Q=>{var te;T(Q.message,Q.exception),(te=this._texture)==null||te.onLoadedObservable.remove(J)})}else if(!x||!x.useDelayedTextureLoading){try{this._texture=S.createTexture(this.url,_,this._invertY,x,s,E,T,this._buffer,void 0,this._format,this._forcedExtension,d,h,u,p)}catch(J){throw T("error loading",J),J}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=E,this._delayedOnError=T}updateURL(e,t=null,i,r){this.url&&(this.releaseInternalTexture(),this.getScene().markAllMaterialsAsDirty(1,o=>o.hasTexture(this))),(!this.name||this.name.startsWith("data:"))&&(this.name=e),this.url=e,this._buffer=t,this._forcedExtension=r,this.delayLoadState=4;let s=this._delayedOnLoad,a=()=>{s?s():this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),i&&i()};this._delayedOnLoad=a,this.delayLoad()}delayLoad(){if(this.delayLoadState!==4)return;let e=this.getScene();if(!e)return;let t=this.url;!t&&(this.name.indexOf("://")>0||this.name.startsWith("data:"))&&(t=this.name),this.delayLoadState=1,this._texture=this._getFromCache(t,this._noMipmap,this.samplingMode,this._invertY,this._useSRGBBuffer,this.isCube),this._texture?this._delayedOnLoad&&(this._texture.isReady?ho.SetImmediate(this._delayedOnLoad):this._texture.onLoadedObservable.add(this._delayedOnLoad)):(this._texture=e.getEngine().createTexture(t,this._noMipmap,this._invertY,e,this.samplingMode,this._delayedOnLoad,this._delayedOnError,this._buffer,null,this._format,this._forcedExtension,this._mimeType,this._loaderOptions,this._creationFlags,this._useSRGBBuffer),this._deleteBuffer&&(this._buffer=null)),this._delayedOnLoad=null,this._delayedOnError=null}_prepareRowForTextureGeneration(e,t,i,r){e*=this._cachedUScale,t*=this._cachedVScale,e-=this.uRotationCenter*this._cachedUScale,t-=this.vRotationCenter*this._cachedVScale,i-=this.wRotationCenter,b.TransformCoordinatesFromFloatsToRef(e,t,i,this._rowGenerationMatrix,r),r.x+=this.uRotationCenter*this._cachedUScale+this._cachedUOffset,r.y+=this.vRotationCenter*this._cachedVScale+this._cachedVOffset,r.z+=this.wRotationCenter}getTextureMatrix(e=1){if(this.uOffset===this._cachedUOffset&&this.vOffset===this._cachedVOffset&&this.uScale*e===this._cachedUScale&&this.vScale===this._cachedVScale&&this.uAng===this._cachedUAng&&this.vAng===this._cachedVAng&&this.wAng===this._cachedWAng&&this.uRotationCenter===this._cachedURotationCenter&&this.vRotationCenter===this._cachedVRotationCenter&&this.wRotationCenter===this._cachedWRotationCenter&&this.homogeneousRotationInUVTransform===this._cachedHomogeneousRotationInUVTransform)return this._cachedTextureMatrix;this._cachedUOffset=this.uOffset,this._cachedVOffset=this.vOffset,this._cachedUScale=this.uScale*e,this._cachedVScale=this.vScale,this._cachedUAng=this.uAng,this._cachedVAng=this.vAng,this._cachedWAng=this.wAng,this._cachedURotationCenter=this.uRotationCenter,this._cachedVRotationCenter=this.vRotationCenter,this._cachedWRotationCenter=this.wRotationCenter,this._cachedHomogeneousRotationInUVTransform=this.homogeneousRotationInUVTransform,(!this._cachedTextureMatrix||!this._rowGenerationMatrix)&&(this._cachedTextureMatrix=q.Zero(),this._rowGenerationMatrix=new q,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),q.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(q.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),q.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),q.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),q.TranslationToRef(this._cachedUOffset,this._cachedVOffset,0,$.Matrix[3]),$.Matrix[0].multiplyToRef(this._rowGenerationMatrix,this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[1],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[2],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[3],this._cachedTextureMatrix),this._cachedTextureMatrix.setRowFromFloats(2,this._cachedTextureMatrix.m[12],this._cachedTextureMatrix.m[13],this._cachedTextureMatrix.m[14],1)):(this._prepareRowForTextureGeneration(0,0,0,this._t0),this._prepareRowForTextureGeneration(1,0,0,this._t1),this._prepareRowForTextureGeneration(0,1,0,this._t2),this._t1.subtractInPlace(this._t0),this._t2.subtractInPlace(this._t0),q.FromValuesToRef(this._t1.x,this._t1.y,this._t1.z,0,this._t2.x,this._t2.y,this._t2.z,0,this._t0.x,this._t0.y,this._t0.z,0,0,0,0,1,this._cachedTextureMatrix));let t=this.getScene();if(!t)return this._cachedTextureMatrix;let i=this._cachedIdentity3x2;return this._cachedIdentity3x2=this._cachedTextureMatrix.isIdentityAs3x2(),this.optimizeUVAllocation&&i!==this._cachedIdentity3x2&&t.markAllMaterialsAsDirty(1,r=>r.hasTexture(this)),this._cachedTextureMatrix}getReflectionTextureMatrix(){let e=this.getScene();if(!e)return this._cachedReflectionTextureMatrix;if(this.uOffset===this._cachedReflectionUOffset&&this.vOffset===this._cachedReflectionVOffset&&this.uScale===this._cachedReflectionUScale&&this.vScale===this._cachedReflectionVScale&&this.coordinatesMode===this._cachedReflectionCoordinatesMode)if(this.coordinatesMode===n.PROJECTION_MODE){if(this._cachedReflectionProjectionMatrixId===e.getProjectionMatrix().updateFlag)return this._cachedReflectionTextureMatrix}else return this._cachedReflectionTextureMatrix;this._cachedReflectionTextureMatrix||(this._cachedReflectionTextureMatrix=q.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=q.Zero());let t=this._cachedReflectionCoordinatesMode!==this.coordinatesMode;switch(this._cachedReflectionUOffset=this.uOffset,this._cachedReflectionVOffset=this.vOffset,this._cachedReflectionUScale=this.uScale,this._cachedReflectionVScale=this.vScale,this._cachedReflectionCoordinatesMode=this.coordinatesMode,this.coordinatesMode){case n.PLANAR_MODE:{q.IdentityToRef(this._cachedReflectionTextureMatrix),this._cachedReflectionTextureMatrix[0]=this.uScale,this._cachedReflectionTextureMatrix[5]=this.vScale,this._cachedReflectionTextureMatrix[12]=this.uOffset,this._cachedReflectionTextureMatrix[13]=this.vOffset;break}case n.PROJECTION_MODE:{q.FromValuesToRef(.5,0,0,0,0,-.5,0,0,0,0,0,0,.5,.5,1,1,this._projectionModeMatrix);let i=e.getProjectionMatrix();this._cachedReflectionProjectionMatrixId=i.updateFlag,i.multiplyToRef(this._projectionModeMatrix,this._cachedReflectionTextureMatrix);break}default:q.IdentityToRef(this._cachedReflectionTextureMatrix);break}return t&&e.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)),this._cachedReflectionTextureMatrix}clone(){let e={noMipmap:this._noMipmap,invertY:this._invertY,samplingMode:this.samplingMode,onLoad:void 0,onError:void 0,buffer:this._texture?this._texture._buffer:void 0,deleteBuffer:this._deleteBuffer,format:this.textureFormat,mimeType:this.mimeType,loaderOptions:this._loaderOptions,creationFlags:this._creationFlags,useSRGBBuffer:this._useSRGBBuffer};return it.Clone(()=>new n(this._texture?this._texture.url:null,this.getScene(),e),this)}serialize(){var i,r;let e=this.name;n.SerializeBuffers||this.name.startsWith("data:")&&(this.name=""),this.name.startsWith("data:")&&this.url===this.name&&(this.url="");let t=super.serialize(n._SerializeInternalTextureUniqueId);if(!t)return null;if(n.SerializeBuffers||n.ForceSerializeBuffers)if(typeof this._buffer=="string"&&this._buffer.startsWith("data:"))t.base64String=this._buffer,t.name=t.name.replace("data:","");else if(this.url&&this.url.startsWith("data:")&&this._buffer instanceof Uint8Array){let s=this.mimeType||"image/png";t.base64String=`data:${s};base64,${Sm(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?_V(this):gV(this));return t.invertY=this._invertY,t.samplingMode=this.samplingMode,t._creationFlags=this._creationFlags,t._useSRGBBuffer=this._useSRGBBuffer,n._SerializeInternalTextureUniqueId&&(t.internalTextureUniqueId=(i=this._texture)==null?void 0:i.uniqueId),t.internalTextureLabel=(r=this._texture)==null?void 0:r.label,t.noMipmap=this._noMipmap,this.name=e,t}getClassName(){return"Texture"}dispose(){super.dispose(),this.onLoadObservable.clear(),this._delayedOnLoad=null,this._delayedOnError=null,this._buffer=null}static Parse(e,t,i){if(e.customType){let c=tc.Instantiate(e.customType).Parse(e,t,i);return e.samplingMode&&c.updateSamplingMode&&c._samplingMode&&c._samplingMode!==e.samplingMode&&c.updateSamplingMode(e.samplingMode),c}if(e.isCube&&!e.isRenderTarget)return n._CubeTextureParser(e,t,i);let r=e.internalTextureUniqueId!==void 0;if(!e.name&&!e.isRenderTarget&&!r)return null;let s;if(r){let l=t.getEngine().getLoadedTexturesCache();for(let c of l)if(c.uniqueId===e.internalTextureUniqueId){s=c;break}}let a=l=>{if(l&&l._texture&&(l._texture._cachedWrapU=null,l._texture._cachedWrapV=null,l._texture._cachedWrapR=null),e.samplingMode){let c=e.samplingMode;l&&l.samplingMode!==c&&l.updateSamplingMode(c)}if(l&&e.animations)for(let c=0;c{var c,f,d,h,u;let l=!0;if(e.noMipmap&&(l=!1),e.mirrorPlane){let m=n._CreateMirror(e.name,e.renderTargetSize,t,l);return m._waitingRenderList=e.renderList,m.mirrorPlane=_o.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let _=0;_{a(m)}},p=e.base64String,g=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",g,t,_),m.name=e.name}else{let _;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?_=e.name:_=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(_=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(h=e._useSRGBBuffer)!=null?h:!1,creationFlags:(u=e._creationFlags)!=null?u:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(_,t,p)}return m}},e,t)}static CreateFromBase64String(e,t,i,r,s,a=n.TRILINEAR_SAMPLINGMODE,o=null,l=null,c=5,f,d){return new n("data:"+t,i,r,s,a,o,l,e,!1,c,void 0,void 0,f,d)}static LoadFromDataString(e,t,i,r=!1,s,a=!0,o=n.TRILINEAR_SAMPLINGMODE,l=null,c=null,f=5,d,h){return e.substring(0,5)!=="data:"&&(e="data:"+e),new n(e,i,s,a,o,l,c,t,r,f,void 0,void 0,d,h)}};ge.SerializeBuffers=!0;ge.ForceSerializeBuffers=!1;ge.OnTextureLoadErrorObservable=new ie;ge._SerializeInternalTextureUniqueId=!1;ge._CubeTextureParser=(n,e,t)=>{throw Qe("CubeTexture")};ge._CreateMirror=(n,e,t,i)=>{throw Qe("MirrorTexture")};ge._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw Qe("RenderTargetTexture")};ge.NEAREST_SAMPLINGMODE=1;ge.NEAREST_NEAREST_MIPLINEAR=8;ge.BILINEAR_SAMPLINGMODE=2;ge.LINEAR_LINEAR_MIPNEAREST=11;ge.TRILINEAR_SAMPLINGMODE=3;ge.LINEAR_LINEAR_MIPLINEAR=3;ge.NEAREST_NEAREST_MIPNEAREST=4;ge.NEAREST_LINEAR_MIPNEAREST=5;ge.NEAREST_LINEAR_MIPLINEAR=6;ge.NEAREST_LINEAR=7;ge.NEAREST_NEAREST=1;ge.LINEAR_NEAREST_MIPNEAREST=9;ge.LINEAR_NEAREST_MIPLINEAR=10;ge.LINEAR_LINEAR=2;ge.LINEAR_NEAREST=12;ge.EXPLICIT_MODE=0;ge.SPHERICAL_MODE=1;ge.PLANAR_MODE=2;ge.CUBIC_MODE=3;ge.PROJECTION_MODE=4;ge.SKYBOX_MODE=5;ge.INVCUBIC_MODE=6;ge.EQUIRECTANGULAR_MODE=7;ge.FIXED_EQUIRECTANGULAR_MODE=8;ge.FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;ge.CLAMP_ADDRESSMODE=0;ge.WRAP_ADDRESSMODE=1;ge.MIRROR_ADDRESSMODE=2;ge.UseSerializedUrlIfAny=!1;P([F()],ge.prototype,"url",void 0);P([F()],ge.prototype,"uOffset",void 0);P([F()],ge.prototype,"vOffset",void 0);P([F()],ge.prototype,"uScale",void 0);P([F()],ge.prototype,"vScale",void 0);P([F()],ge.prototype,"uAng",void 0);P([F()],ge.prototype,"vAng",void 0);P([F()],ge.prototype,"wAng",void 0);P([F()],ge.prototype,"uRotationCenter",void 0);P([F()],ge.prototype,"vRotationCenter",void 0);P([F()],ge.prototype,"wRotationCenter",void 0);P([F()],ge.prototype,"homogeneousRotationInUVTransform",void 0);P([F()],ge.prototype,"isBlocking",null);Ft("BABYLON.Texture",ge);it._TextureParser=ge.Parse});var vo,D,Wi=I(()=>{sC();Pt();Tm();vo=class{get isDisposed(){return this._isDisposed}constructor(e,t,i,r=0,s=!1,a=!1,o=!1,l,c){this._isAlreadyOwned=!1,this._isDisposed=!1,e&&e.getScene?this._engine=e.getScene().getEngine():this._engine=e,this._updatable=i,this._instanced=a,this._divisor=l||1,this._label=c,t instanceof $d?(this._data=null,this._buffer=t):(this._data=t,this._buffer=null),this.byteStride=o?r:r*Float32Array.BYTES_PER_ELEMENT,s||this.create()}createVertexBuffer(e,t,i,r,s,a=!1,o){let l=a?t:t*Float32Array.BYTES_PER_ELEMENT,c=r?a?r:r*Float32Array.BYTES_PER_ELEMENT:this.byteStride;return new D(this._engine,this,e,this._updatable,!0,c,s===void 0?this._instanced:s,l,i,void 0,void 0,!0,this._divisor||o)}isUpdatable(){return this._updatable}getData(){return this._data}getBuffer(){return this._buffer}getStrideSize(){return this.byteStride/Float32Array.BYTES_PER_ELEMENT}create(e=null){!e&&this._buffer||(e=e||this._data,e&&(this._buffer?this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e),this._data=e):this._updatable?(this._buffer=this._engine.createDynamicVertexBuffer(e,this._label),this._data=e):this._buffer=this._engine.createVertexBuffer(e,void 0,this._label)))}_rebuild(){if(this._data)this._buffer=null,this.create(this._data);else{if(!this._buffer)return;if(this._buffer.capacity>0){this._updatable?this._buffer=this._engine.createDynamicVertexBuffer(this._buffer.capacity,this._label):this._buffer=this._engine.createVertexBuffer(this._buffer.capacity,void 0,this._label);return}ee.Warn(`Missing data for buffer "${this._label}" ${this._buffer?"(uniqueId: "+this._buffer.uniqueId+")":""}. Buffer reconstruction failed.`),this._buffer=null}}update(e){this.create(e)}updateDirectly(e,t,i,r=!1){this._buffer&&this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e,r?t:t*Float32Array.BYTES_PER_ELEMENT,i?i*this.byteStride:void 0),t===0&&i===void 0?this._data=e:this._data=null)}_increaseReferences(){if(this._buffer){if(!this._isAlreadyOwned){this._isAlreadyOwned=!0;return}this._buffer.references++}}dispose(){this._buffer&&this._engine._releaseBuffer(this._buffer)&&(this._isDisposed=!0,this._data=null,this._buffer=null)}},D=class n{get isDisposed(){return this._isDisposed}get instanceDivisor(){return this._instanceDivisor}set instanceDivisor(e){let t=e!=0;this._instanceDivisor=e,t!==this._instanced&&(this._instanced=t,this._computeHashCode())}get _maxVerticesCount(){let e=this.getData();return e?Array.isArray(e)?e.length/(this.byteStride/4)-this.byteOffset/4:(e.byteLength-this.byteOffset)/this.byteStride:0}constructor(e,t,i,r,s,a,o,l,c,f,d=!1,h=!1,u=1,m=!1){var g,v,x,S,E;this._isDisposed=!1;let _;if(this.engine=e,typeof r=="object"&&r!==null?(_=(g=r.updatable)!=null?g:!1,s=r.postponeInternalCreation,a=r.stride,o=r.instanced,l=r.offset,c=r.size,f=r.type,d=(v=r.normalized)!=null?v:!1,h=(x=r.useBytes)!=null?x:!1,u=(S=r.divisor)!=null?S:1,m=(E=r.takeBufferOwnership)!=null?E:!1,this._label=r.label):_=!!r,t instanceof vo?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new vo(e,t,_,a,s,o,h,u,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let T=this.getData();this.type=T?n.GetDataType(T):n.FLOAT}else this.type=f;let p=fl(this.type);h?(this._size=c||(a?a/p:n.DeduceStride(i)),this.byteStride=a||this._buffer.byteStride||this._size*p,this.byteOffset=l||0):(this._size=c||a||n.DeduceStride(i),this.byteStride=a?a*p:this._buffer.byteStride||this._size*p,this.byteOffset=(l||0)*p),this.normalized=d,this._instanced=o!==void 0?o:!1,this._instanceDivisor=o?u:0,this._alignBuffer(),this._computeHashCode()}_computeHashCode(){this.hashCode=(this.type-5120<<0)+((this.normalized?1:0)<<3)+(this._size<<4)+((this._instanced?1:0)<<6)+(this.byteStride<<12)}_rebuild(){var e;(e=this._buffer)==null||e._rebuild()}getKind(){return this._kind}isUpdatable(){return this._buffer.isUpdatable()}getData(){return this._buffer.getData()}getFloatData(e,t){let i=this.getData();return i?EC(i,this._size,this.type,this.byteOffset,this.byteStride,this.normalized,e,t):null}getBuffer(){return this._buffer.getBuffer()}getWrapperBuffer(){return this._buffer}getStrideSize(){return this.byteStride/fl(this.type)}getOffset(){return this.byteOffset/fl(this.type)}getSize(e=!1){return e?this._size*fl(this.type):this._size}getIsInstanced(){return this._instanced}getInstanceDivisor(){return this._instanceDivisor}create(e){this._buffer.create(e),this._alignBuffer()}update(e){this._buffer.update(e),this._alignBuffer()}updateDirectly(e,t,i=!1){this._buffer.updateDirectly(e,t,void 0,i),this._alignBuffer()}dispose(){this._ownsBuffer&&this._buffer.dispose(),this._isDisposed=!0}forEach(e,t){sh(this._buffer.getData(),this.byteOffset,this.byteStride,this._size,this.type,e,this.normalized,(i,r)=>{for(let s=0;s{for(let d=0;d{Wi();hi();ic=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new ie,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[D.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[D.PositionKind]=new D(this._scene.getEngine(),e,D.PositionKind,!1,!1,2),this._buildIndexBuffer()}_buildIndexBuffer(){let e=[];e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),this._indexBuffer=this._scene.getEngine().createIndexBuffer(e)}_getActivePostProcesses(e){let t=this._activePostProcesses;t.length=0;for(let i=0;i{Pt();EV=(n,e,t)=>!n||n.getClassName&&n.getClassName()==="Mesh"?null:n.getClassName&&(n.getClassName()==="SubMesh"||n.getClassName()==="PhysicsBody")?n.clone(e):n.clone?n.clone():Array.isArray(n)?n.slice():t&&typeof n=="object"?{...n}:null;hl=class{static DeepCopy(e,t,i,r,s=!1){let a=sle(e);for(let o of a){if(o[0]==="_"&&(!r||r.indexOf(o)===-1)||o.endsWith("Observable")||i&&i.indexOf(o)!==-1)continue;let l=e[o],c=typeof l;if(c!=="function")try{if(c==="object")if(l instanceof Uint8Array)t[o]=Uint8Array.from(l);else if(l instanceof Array){if(t[o]=[],l.length>0)if(typeof l[0]=="object")for(let f=0;f{hi();ba();Pt();Eg();Yl();un();nh();Ni();Jl();sl();AC();mg();uo();_e=class{static get BaseUrl(){return ki.BaseUrl}static set BaseUrl(e){ki.BaseUrl=e}static get CleanUrl(){return ki.CleanUrl}static set CleanUrl(e){ki.CleanUrl=e}static IsAbsoluteUrl(e){return e.indexOf("//")===0?!0:e.indexOf("://")===-1||e.indexOf(".")===-1||e.indexOf("/")===-1||e.indexOf(":")>e.indexOf("/")?!1:e.indexOf("://"){dl(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(gt.AssetBaseUrl&&e.startsWith(gt._DefaultAssetsUrl)){let t=gt.AssetBaseUrl.endsWith("/")?gt.AssetBaseUrl.slice(0,-1):gt.AssetBaseUrl;return e.replace(gt._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(gt._DefaultCdnUrl)){if(gt.ScriptBaseUrl){let i=gt.ScriptBaseUrl.endsWith("/")?gt.ScriptBaseUrl.slice(0,-1):gt.ScriptBaseUrl;e=e.replace(gt._DefaultCdnUrl,i)}else if(gt._CdnVersion){let i=`${gt._DefaultCdnUrl}/v${gt._CdnVersion}`;e.startsWith(i)||(e=e.replace(gt._DefaultCdnUrl,i))}}return e=gt.ScriptPreprocessUrl(e),t&&!gt.IsAbsoluteUrl(e)&&(e=gt.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=gt.GetBabylonScriptURL(e),gt.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=gt.GetBabylonScriptURL(e),await gt.LoadScriptAsync(e)}static _LoadScriptNative(e,t,i){let r=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(r.message,r)}static _LoadScriptWeb(e,t,i,r,s=!1){let a=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(a.message,a)}static async LoadScriptAsync(e,t){return await new Promise((i,r)=>{this.LoadScript(e,()=>{i()},(s,a)=>{r(a||new Error(s))},t)})}static ReadFileAsDataURL(e,t,i){let r=new FileReader,s={onCompleteObservable:new ie,abort:()=>r.abort()};return r.onloadend=()=>{s.onCompleteObservable.notifyObservers(s)},r.onload=a=>{t(a.target.result)},r.onprogress=i,r.readAsDataURL(e),s}static ReadFile(e,t,i,r,s){return ah(e,t,i,r,s)}static FileAsURL(e){let t=new Blob([e]);return window.URL.createObjectURL(t)}static Format(e,t=2){return e.toFixed(t)}static DeepCopy(e,t,i,r){hl.DeepCopy(e,t,i,r)}static IsEmpty(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}static RegisterTopRootEvents(e,t){for(let i=0;i{let l=atob(this.toDataURL(a,o).split(",")[1]),c=l.length,f=new Uint8Array(c);for(let d=0;dt(s)):e.toBlob(function(s){t(s)},i,r)}static DownloadBlob(e,t){if("download"in document.createElement("a")){if(!t){let i=new Date;t="screenshot_"+((i.getFullYear()+"-"+(i.getMonth()+1)).slice(2)+"-"+i.getDate()+"_"+i.getHours()+"-"+("0"+i.getMinutes()).slice(-2))+".png"}gt.Download(e,t)}else if(e&&typeof URL!="undefined"){let i=URL.createObjectURL(e),r=window.open("");if(!r)return;let s=r.document.createElement("img");s.onload=function(){URL.revokeObjectURL(i)},s.src=i,r.document.body.appendChild(s)}}static EncodeScreenshotCanvasData(e,t,i="image/png",r,s){if(typeof r=="string"||!t)this.ToBlob(e,function(a){a&>.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(gt._IsOffScreenCanvas(e)){e.convertToBlob({type:i,quality:s}).then(o=>{let l=new FileReader;l.readAsDataURL(o),l.onloadend=()=>{let c=l.result;t(c)}});return}let a=e.toDataURL(i,s);t(a)}}static Download(e,t){if(typeof URL=="undefined")return;let i=window.URL.createObjectURL(e),r=document.createElement("a");document.body.appendChild(r),r.style.display="none",r.href=i,r.download=t,r.addEventListener("click",()=>{r.parentElement&&r.parentElement.removeChild(r)}),r.click(),window.URL.revokeObjectURL(i)}static BackCompatCameraNoPreventDefault(e){return typeof e[0]=="boolean"?e[0]:typeof e[1]=="boolean"?e[1]:!1}static CreateScreenshot(e,t,i,r,s="image/png",a=!1,o){throw Qe("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw Qe("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,h,u){throw Qe("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,h){throw Qe("ScreenshotTools")}static RandomId(){return _f()}static IsBase64(e){return vf(e)}static DecodeBase64(e){return Ef(e)}static get errorsCount(){return ee.errorsCount}static Log(e){ee.Log(e)}static Warn(e){ee.Warn(e)}static Error(e){ee.Error(e)}static get LogCache(){return ee.LogCache}static ClearLogCache(){ee.ClearLogCache()}static set LogLevels(e){ee.LogLevels=e}static set PerformanceLogLevel(e){var t;if((e>.PerformanceUserMarkLogLevel)===gt.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),gt.StartPerformanceCounter=gt._StartMarkNative,gt.EndPerformanceCounter=gt._EndMarkNative):(gt.StartPerformanceCounter=gt._StartUserMark,gt.EndPerformanceCounter=gt._EndUserMark);return}if((e>.PerformanceConsoleLogLevel)===gt.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),gt.StartPerformanceCounter=gt._StartMarkNative,gt.EndPerformanceCounter=gt._EndMarkNative):(gt.StartPerformanceCounter=gt._StartPerformanceConsole,gt.EndPerformanceCounter=gt._EndPerformanceConsole);return}gt.StartPerformanceCounter=gt._StartPerformanceCounterDisabled,gt.EndPerformanceCounter=gt._EndPerformanceCounterDisabled,(t=_native==null?void 0:_native.disablePerformanceLogging)==null||t.call(_native)}static _StartPerformanceCounterDisabled(e,t){}static _EndPerformanceCounterDisabled(e,t){}static _StartUserMark(e,t=!0){if(!gt._Performance){if(!ur())return;gt._Performance=window.performance}!t||!gt._Performance.mark||gt._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!gt._Performance.mark||(gt._Performance.mark(e+"-End"),gt._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(gt._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(gt._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(gt._NativePerformanceCounterHandles.has(e))gt.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);gt._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=gt._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),gt._NativePerformanceCounterHandles.delete(e)):gt.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return Er.Now}static GetClassName(e,t=!1){let i=null;return!t&&e.getClassName?i=e.getClassName():(e instanceof Object&&(i=(t?e:Object.getPrototypeOf(e)).constructor.__bjsclassName__),i||(i=typeof e)),i}static First(e,t){for(let i of e)if(t(i))return i;return null}static getFullClassName(e,t=!1){let i=null,r=null;if(!t&&e.getClassName)i=e.getClassName();else{if(e instanceof Object){let s=t?e:Object.getPrototypeOf(e);i=s.constructor.__bjsclassName__,r=s.constructor.__bjsmoduleName__}i||(i=typeof e)}return i?(r!=null?r+".":"")+i:null}static async DelayAsync(e){await new Promise(t=>{setTimeout(()=>{t()},e)})}static IsSafari(){return Xl()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};gt=_e;_e.AssetBaseUrl="";_e.UseCustomRequestHeaders=!1;_e.CustomRequestHeaders=Cr.CustomRequestHeaders;_e.GetDOMTextContent=aA;_e._DefaultCdnUrl="https://cdn.babylonjs.com";_e._CdnVersion="9.6.0";_e._DefaultAssetsUrl="https://assets.babylonjs.com/core";_e.LoadScript=typeof _native=="undefined"?gt._LoadScriptWeb:gt._LoadScriptNative;_e.GetAbsoluteUrl=typeof document=="object"?n=>{let e=document.createElement("a");return e.href=n,e.href}:typeof URL=="function"&&typeof location=="object"?n=>new URL(n,location.origin).href:()=>{throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.")};_e.NoneLogLevel=ee.NoneLogLevel;_e.MessageLogLevel=ee.MessageLogLevel;_e.WarningLogLevel=ee.WarningLogLevel;_e.ErrorLogLevel=ee.ErrorLogLevel;_e.AllLogLevel=ee.AllLogLevel;_e.IsWindowObjectExist=ur;_e.PerformanceNoneLogLevel=0;_e.PerformanceUserMarkLogLevel=1;_e.PerformanceConsoleLogLevel=2;_e._NativePerformanceCounterHandles=new Map;_e.StartPerformanceCounter=gt._StartPerformanceCounterDisabled;_e.EndPerformanceCounter=gt._EndPerformanceCounterDisabled;QA=class n{constructor(e,t,i,r=0){this.iterations=e,this.index=r-1,this._done=!1,this._fn=t,this._successCallback=i}executeNext(){this._done||(this.index+1{s&&s()?o.breakLoop():setTimeout(()=>{for(let l=0;l=e)break;if(i(c),s&&s()){o.breakLoop();break}}o.executeNext()},a)},r)}};_e.Mix=cg;_e.IsExponentOfTwo=Jd;Oe.FallbackTexture="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z"});var mr,Af=I(()=>{Pt();yi();mr=class n{constructor(e,t,i=!1,r,s=!1,a){this._uniformNames=[],this._valueCache={},this._engine=e,this._noUBO=!e.supportsUniformBuffers||s,this._dynamic=i,this._name=r!=null?r:"no-name",this._data=t||[],this._uniformLocations={},this._uniformSizes={},this._uniformArraySizes={},this._uniformLocationPointer=0,this._needSync=!1,this._trackUBOsInFrame=!1,(a===void 0&&this._engine._features.trackUbosInFrame||a===!0)&&(this._buffers=[],this._bufferIndex=-1,this._bufferUpdatedLastFrame=!1,this._createBufferOnWrite=!1,this._currentFrameId=0,this._trackUBOsInFrame=!0),this._noUBO?(this.updateMatrix3x3=this._updateMatrix3x3ForEffect,this.updateMatrix2x2=this._updateMatrix2x2ForEffect,this.updateFloat=this._updateFloatForEffect,this.updateFloat2=this._updateFloat2ForEffect,this.updateFloat3=this._updateFloat3ForEffect,this.updateFloat4=this._updateFloat4ForEffect,this.updateFloatArray=this._updateFloatArrayForEffect,this.updateArray=this._updateArrayForEffect,this.updateIntArray=this._updateIntArrayForEffect,this.updateUIntArray=this._updateUIntArrayForEffect,this.updateMatrix=this._updateMatrixForEffect,this.updateMatrices=this._updateMatricesForEffect,this.updateVector3=this._updateVector3ForEffect,this.updateVector4=this._updateVector4ForEffect,this.updateColor3=this._updateColor3ForEffect,this.updateColor4=this._updateColor4ForEffect,this.updateDirectColor4=this._updateDirectColor4ForEffect,this.updateInt=this._updateIntForEffect,this.updateInt2=this._updateInt2ForEffect,this.updateInt3=this._updateInt3ForEffect,this.updateInt4=this._updateInt4ForEffect,this.updateUInt=this._updateUIntForEffect,this.updateUInt2=this._updateUInt2ForEffect,this.updateUInt3=this._updateUInt3ForEffect,this.updateUInt4=this._updateUInt4ForEffect):(this._engine._uniformBuffers.push(this),this.updateMatrix3x3=this._updateMatrix3x3ForUniform,this.updateMatrix2x2=this._updateMatrix2x2ForUniform,this.updateFloat=this._updateFloatForUniform,this.updateFloat2=this._updateFloat2ForUniform,this.updateFloat3=this._updateFloat3ForUniform,this.updateFloat4=this._updateFloat4ForUniform,this.updateFloatArray=this._updateFloatArrayForUniform,this.updateArray=this._updateArrayForUniform,this.updateIntArray=this._updateIntArrayForUniform,this.updateUIntArray=this._updateUIntArrayForUniform,this.updateMatrix=this._updateMatrixForUniform,this.updateMatrices=this._updateMatricesForUniform,this.updateVector3=this._updateVector3ForUniform,this.updateVector4=this._updateVector4ForUniform,this.updateColor3=this._updateColor3ForUniform,this.updateColor4=this._updateColor4ForUniform,this.updateDirectColor4=this._updateDirectColor4ForUniform,this.updateInt=this._updateIntForUniform,this.updateInt2=this._updateInt2ForUniform,this.updateInt3=this._updateInt3ForUniform,this.updateInt4=this._updateInt4ForUniform,this.updateUInt=this._updateUIntForUniform,this.updateUInt2=this._updateUInt2ForUniform,this.updateUInt3=this._updateUInt3ForUniform,this.updateUInt4=this._updateUInt4ForUniform)}get useUbo(){return!this._noUBO}get isSync(){return!this._needSync}isDynamic(){return this._dynamic}getData(){return this._bufferData}getBuffer(){return this._buffer}getUniformNames(){return this._uniformNames}_fillAlignment(e){let t;if(e<=2?t=e:t=4,this._uniformLocationPointer%t!==0){let i=this._uniformLocationPointer;this._uniformLocationPointer+=t-this._uniformLocationPointer%t;let r=this._uniformLocationPointer-i;for(let s=0;s0&&typeof t=="number"&&(this._uniformArraySizes[e]={strideSize:t,arraySize:i}),this._uniformLocations[e]!==void 0||(this._uniformNames.push(e),this._noUBO))return;let r;if(i>0){if(t instanceof Array)throw"addUniform should not be use with Array in UBO: "+e;if(this._fillAlignment(4),t==16)t=t*i;else{let a=(4-t)*i;t=t*i+a}r=[];for(let s=0;s1&&this._buffers[this._bufferIndex][1])if(this._buffersEqual(this._bufferData,this._buffers[this._bufferIndex][1])){this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame;return}else this._copyBuffer(this._bufferData,this._buffers[this._bufferIndex][1]);this._bufferUpdatedLastFrame=!0,this._engine.updateUniformBuffer(this._buffer,this._bufferData),this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame}}_createNewBuffer(){this._bufferIndex+10?(this._buffers.length===1?this._needSync=!this._bufferUpdatedLastFrame:this._needSync=this._bufferIndex!==0,this._bufferIndex=0,this._buffer=this._buffers[this._bufferIndex][0]):this._bufferIndex=-1)}updateUniform(e,t,i){this._checkNewFrame();let r=this._uniformLocations[e];if(r===void 0){if(this._buffer){ee.Error("Cannot add an uniform after UBO has been created. uniformName="+e);return}this.addUniform(e,i),r=this._uniformLocations[e]}if(this._buffer||this.create(),this._dynamic)for(let s=0;s1&&this._buffers[t][1]&&this._bufferData.set(this._buffers[t][1]),this._valueCache={},this._currentFrameId=this._engine.frameId,!0;return!1}has(e){return this._uniformLocations[e]!==void 0}dispose(){if(this._noUBO)return;let e=this._engine._uniformBuffers,t=e.indexOf(this);if(t!==-1&&(e[t]=e[e.length-1],e.pop()),this._trackUBOsInFrame&&this._buffers)for(let i=0;i{Vi=class n{constructor(e){this.length=0,this.data=new Array(e),this._id=n._GlobalId++}push(e){this.data[this.length++]=e,this.length>this.data.length&&(this.data.length*=2)}forEach(e){for(let t=0;tthis.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t=this.length?-1:t}contains(e){return this.indexOf(e)!==-1}};Vi._GlobalId=0;Eo=class extends Vi{constructor(){super(...arguments),this._duplicateId=0}push(e){super.push(e),e.__smartArrayFlags||(e.__smartArrayFlags={}),e.__smartArrayFlags[this._id]=this._duplicateId}pushNoDuplicate(e){return e.__smartArrayFlags&&e.__smartArrayFlags[this._id]===this._duplicateId?!1:(this.push(e),!0)}reset(){super.reset(),this._duplicateId++}concatWithNoDuplicate(e){if(e.length!==0){this.length+e.length>this.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t{So();ke();Sg=class n{set opaqueSortCompareFn(e){e?this._opaqueSortCompareFn=e:this._opaqueSortCompareFn=n.PainterSortCompare,this._renderOpaque=this._renderOpaqueSorted}set alphaTestSortCompareFn(e){e?this._alphaTestSortCompareFn=e:this._alphaTestSortCompareFn=n.PainterSortCompare,this._renderAlphaTest=this._renderAlphaTestSorted}set transparentSortCompareFn(e){e?this._transparentSortCompareFn=e:this._transparentSortCompareFn=n.defaultTransparentSortCompare,this._renderTransparent=this._renderTransparentSorted}constructor(e,t,i=null,r=null,s=null){this.index=e,this._opaqueSubMeshes=new Vi(256),this._transparentSubMeshes=new Vi(256),this._alphaTestSubMeshes=new Vi(256),this._depthOnlySubMeshes=new Vi(256),this._particleSystems=new Vi(256),this._spriteManagers=new Vi(256),this._empty=!0,this._edgesRenderers=new Eo(16),this.disableDepthPrePass=!1,this._scene=t,this.opaqueSortCompareFn=i,this.alphaTestSortCompareFn=r,this.transparentSortCompareFn=s}render(e,t,i,r,s=!0,a=!0,o=!0,l=!0,c){if(e){e(this._opaqueSubMeshes,this._alphaTestSubMeshes,this._transparentSubMeshes,this._depthOnlySubMeshes);return}let f=this._scene.getEngine();s&&this._depthOnlySubMeshes.length!==0&&(f.setColorWrite(!1),this._renderAlphaTest(this._depthOnlySubMeshes),f.setColorWrite(!0)),a&&this._opaqueSubMeshes.length!==0&&this._renderOpaque(this._opaqueSubMeshes),o&&this._alphaTestSubMeshes.length!==0&&this._renderAlphaTest(this._alphaTestSubMeshes);let d=f.getStencilBuffer();if(f.setStencilBuffer(!1),t&&this._renderSprites(),i&&this._renderParticles(r),this.onBeforeTransparentRendering&&this.onBeforeTransparentRendering(),l&&(c||this._transparentSubMeshes.length!==0||this._scene.useOrderIndependentTransparency)){if(f.setStencilBuffer(d),c)c(this._transparentSubMeshes,this);else if(this._scene.useOrderIndependentTransparency){let h=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);h.length&&this._renderTransparent(h)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let h=0;ht._alphaIndex?1:e._alphaIndext._distanceToCamera?-1:0}static frontToBackSortCompare(e,t){return e._distanceToCamerat._distanceToCamera?1:0}static PainterSortCompare(e,t){let i=e.getMesh(),r=t.getMesh();return i.material&&r.material?i.material.uniqueId-r.material.uniqueId:i.uniqueId-r.uniqueId}prepare(){this._opaqueSubMeshes.reset(),this._transparentSubMeshes.reset(),this._alphaTestSubMeshes.reset(),this._depthOnlySubMeshes.reset(),this._particleSystems.reset(),this.prepareSprites(),this._edgesRenderers.reset(),this._empty=!0}prepareSprites(){this._spriteManagers.reset()}dispose(){this._opaqueSubMeshes.dispose(),this._transparentSubMeshes.dispose(),this._alphaTestSubMeshes.dispose(),this._depthOnlySubMeshes.dispose(),this._particleSystems.dispose(),this._spriteManagers.dispose(),this._edgesRenderers.dispose()}dispatch(e,t,i){t===void 0&&(t=e.getMesh()),i===void 0&&(i=e.getMaterial()),i!=null&&(i.needAlphaBlendingForMesh(t)?this._transparentSubMeshes.push(e):i.needAlphaTestingForMesh(t)?(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._alphaTestSubMeshes.push(e)):(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._opaqueSubMeshes.push(e)),t._renderingGroup=this,t._edgesRenderer&&t.isEnabled()&&t.isVisible&&t._edgesRenderer.isEnabled&&this._edgesRenderers.pushNoDuplicate(t._edgesRenderer),this._empty=!1)}dispatchSprites(e){this._spriteManagers.push(e),this._empty=!1}dispatchParticles(e){this._particleSystems.push(e),this._empty=!1}_renderParticles(e){if(this._particleSystems.length===0)return;let t=this._scene.activeCamera;this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);for(let i=0;i{SV();xC=class{},ya=class n{get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e;for(let t of this._renderingGroups)t.disableDepthPrePass=e}get maintainStateBetweenFrames(){return this._maintainStateBetweenFrames}set maintainStateBetweenFrames(e){e!==this._maintainStateBetweenFrames&&(this._maintainStateBetweenFrames=e,this._maintainStateBetweenFrames||this.restoreDispachedFlags())}restoreDispachedFlags(){for(let e of this._scene.meshes)if(e.subMeshes)for(let t of e.subMeshes)t._wasDispatched=!1;if(this._scene.spriteManagers)for(let e of this._scene.spriteManagers)e._wasDispatched=!1;for(let e of this._scene.particleSystems)e._wasDispatched=!1}constructor(e){this._useSceneAutoClearSetup=!1,this._disableDepthPrePass=!1,this._renderingGroups=new Array,this._autoClearDepthStencil={},this._customOpaqueSortCompareFn={},this._customAlphaTestSortCompareFn={},this._customTransparentSortCompareFn={},this._renderingGroupInfo=new xC,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{Xt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};Xt.FALLOFF_DEFAULT=0;Xt.FALLOFF_PHYSICAL=1;Xt.FALLOFF_GLTF=2;Xt.FALLOFF_STANDARD=3;Xt.LIGHTMAP_DEFAULT=0;Xt.LIGHTMAP_SPECULAR=1;Xt.LIGHTMAP_SHADOWSONLY=2;Xt.INTENSITYMODE_AUTOMATIC=0;Xt.INTENSITYMODE_LUMINOUSPOWER=1;Xt.INTENSITYMODE_LUMINOUSINTENSITY=2;Xt.INTENSITYMODE_ILLUMINANCE=3;Xt.INTENSITYMODE_LUMINANCE=4;Xt.LIGHTTYPEID_POINTLIGHT=0;Xt.LIGHTTYPEID_DIRECTIONALLIGHT=1;Xt.LIGHTTYPEID_SPOTLIGHT=2;Xt.LIGHTTYPEID_HEMISPHERICLIGHT=3;Xt.LIGHTTYPEID_RECT_AREALIGHT=4;Xt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ca,RC=I(()=>{Af();hi();$A();ol();sl();Pt();So();Tg();Ca=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=wA(e,this._renderListHasChanged)),this._renderList=e)}get disableImageProcessing(){return this._disableImageProcessing}set disableImageProcessing(e){e!==this._disableImageProcessing&&(this._disableImageProcessing=e,this._scene.markAllMaterialsAsDirty(64))}get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e,this._renderingManager.disableDepthPrePass=e}get name(){return this._name}set name(e){if(this._name!==e){if(this._name=e,this._sceneUBOs)for(let t=0;tthis._checkReadiness(),()=>{if(this._freezeActiveMeshesCancel=null,e)for(let t=0;t{this._freezeActiveMeshesCancel=null,i?(ee.Error("ObjectRenderer: Timeout while waiting for the renderer to be ready."),t&&ee.Error(t)):(ee.Error("ObjectRenderer: An unexpected error occurred while waiting for the renderer to be ready."),t&&(ee.Error(t),t.stack&&ee.Error(t.stack)))})}_unfreezeActiveMeshes(){var e;(e=this._freezeActiveMeshesCancel)==null||e.call(this),this._freezeActiveMeshesCancel=null;for(let t=0;t{let a=this._renderList?this._renderList.length:0;if(s===0&&a>0||a===0)for(let o of this._scene.meshes)o._markSubMeshesAsLightDirty()},this.particleSystemList=null,this.getCustomRenderList=null,this.renderMeshes=!0,this.renderDepthOnlyMeshes=!0,this.renderOpaqueMeshes=!0,this.renderAlphaTestMeshes=!0,this.renderTransparentMeshes=!0,this.renderParticles=!0,this.renderSprites=!1,this.forceLayerMaskCheck=!1,this.enableBoundingBoxRendering=!1,this.enableOutlineRendering=!0,this._disableImageProcessing=!1,this.dontSetTransformationMatrix=!1,this._disableDepthPrePass=!1,this.onBeforeRenderObservable=new ie,this.onAfterRenderObservable=new ie,this.onBeforeRenderingManagerRenderObservable=new ie,this.onAfterRenderingManagerRenderObservable=new ie,this.onInitRenderingObservable=new ie,this.onFinishRenderingObservable=new ie,this.onFastPathRenderObservable=new ie,this._currentRefreshId=-1,this._refreshRate=1,this._currentApplyByPostProcessSetting=!1,this._activeMeshes=new Vi(256),this._activeBoundingBoxes=new Vi(32),this._currentFrameId=-1,this._currentSceneUBOIndex=0,this._isFrozen=!1,this._freezeActiveMeshesCancel=null,this._currentSceneCamera=null,this.name=e,this._scene=t,this._engine=this._scene.getEngine(),this._useUBO=this._engine.supportsUniformBuffers,this.renderList=[],this._renderPassIds=[],this.options={numPasses:1,doNotChangeAspectRatio:!0,enableClusteredLights:!1,...i},this._createRenderPassId(),this.renderPassId=this._renderPassIds[0],this._renderingManager=new ya(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===Xt.LIGHTTYPEID_CLUSTERED_CONTAINER&&r.isSupported&&r._updateBatches(this.activeCamera).render()}),this._scene.addObjectRenderer(this)}_releaseRenderPassId(){for(let e=0;e=this._sceneUBOs.length){let s=this._sceneUBOs.length;this._sceneUBOs.push(this._createSceneUBO(`Scene ubo #${s} for ${this.name}`,t)),this._sceneUBOIsMultiview.push(t)}else this._sceneUBOIsMultiview[this._currentSceneUBOIndex]!==t&&(this._sceneUBOs[this._currentSceneUBOIndex].dispose(),this._sceneUBOs[this._currentSceneUBOIndex]=this._createSceneUBO(`Scene ubo #${this._currentSceneUBOIndex} for ${this.name}`,t),this._sceneUBOIsMultiview[this._currentSceneUBOIndex]=t);let i=this._sceneUBOs[this._currentSceneUBOIndex++];return i.unbindEffect(),i}resetRefreshCounter(){this._currentRefreshId=-1}get refreshRate(){return this._refreshRate}set refreshRate(e){this._refreshRate=e,this.resetRefreshCounter()}shouldRender(){return this._engine.snapshotRendering?!0:this._currentRefreshId===-1?(this._currentRefreshId=1,!0):this.refreshRate===this._currentRefreshId?(this._currentRefreshId=1,!0):(this._currentRefreshId++,!1)}isReadyForRendering(e,t){this.prepareRenderList(),this.initRender(e,t);let i=this._checkReadiness();return this.finishRender(),i}prepareRenderList(){let e=this._scene;if(this._waitingRenderList){if(!this.renderListPredicate){this.renderList=[];for(let t=0;t1&&(e.incrementRenderId(),e.resetCachedMaterial())}let s=this.particleSystemList||e.particleSystems;for(let a of s)a.isReady()||(i=!1);return this._engine.currentRenderPassId=t,i}_prepareRenderingManager(e=0,t=!1){var h,u;let i=this._scene,r=null,s,a,o=this.renderList?this.renderList:i.frameGraph?i.meshes:i.getActiveMeshes().data,l=this.renderList||i.frameGraph?o.length:i.getActiveMeshes().length;if(this.getCustomRenderList&&(r=this.getCustomRenderList(e,o,l)),r)s=r.length,a=this.forceLayerMaskCheck;else{if(this._defaultRenderListPrepared&&!t&&!this._engine.isWebGPU)return o;this._defaultRenderListPrepared=!0,r=o,s=l,a=!this.renderList||this.forceLayerMaskCheck}let c=i.activeCamera,f=(h=this.cameraForLOD)!=null?h:c,d=(u=i.getBoundingBoxRenderer)==null?void 0:u.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{sl();cs=class{static GetEffect(e){return e.getPipelineContext===void 0?e.effect:e}constructor(e,t=!0){this._wasPreviouslyReady=!1,this._forceRebindOnNextCall=!0,this._wasPreviouslyUsingInstances=null,this.effect=null,this.defines=null,this.drawContext=e.createDrawContext(),t&&(this.materialContext=e.createMaterialContext())}setEffect(e,t,i=!0){var r;this.effect=e,t!==void 0&&(this.defines=t),i&&((r=this.drawContext)==null||r.reset())}dispose(e=!1){var t;if(this.effect){let i=this.effect;e?i.dispose():ho.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var AV={};Be(AV,{postprocessVertexShader:()=>ale});var bC,TV,ale,MC=I(()=>{k();bC="postprocessVertexShader",TV=`attribute vec2 position;uniform vec2 scale;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); +${this.m[12]}, ${this.m[13]}, ${this.m[14]}, ${this.m[15]}}`}toArray(e=null,t=0){if(!e)return this._m;let i=this._m;for(let r=0;r<16;r++)e[t+r]=i[r];return this}asArray(){return this._m}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}copyFromFloats(...e){return n.FromArrayToRef(e,0,this)}set(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=e[i];return this.markAsUpdated(),this}setAll(e){let t=this._m;for(let i=0;i<16;i++)t[i]=e;return this.markAsUpdated(),this}invert(){return this.invertToRef(this),this}reset(){return n.FromValuesToRef(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,this),this._updateIdentityStatus(!1),this}add(e){let t=new n;return this.addToRef(e,t),t}addToRef(e,t){let i=this._m,r=t._m,s=e.m;for(let a=0;a<16;a++)r[a]=i[a]+s[a];return t.markAsUpdated(),t}addToSelf(e){let t=this._m,i=e.m;return t[0]+=i[0],t[1]+=i[1],t[2]+=i[2],t[3]+=i[3],t[4]+=i[4],t[5]+=i[5],t[6]+=i[6],t[7]+=i[7],t[8]+=i[8],t[9]+=i[9],t[10]+=i[10],t[11]+=i[11],t[12]+=i[12],t[13]+=i[13],t[14]+=i[14],t[15]+=i[15],this.markAsUpdated(),this}addInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]+=i[r];return this.markAsUpdated(),this}addInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]+=e[i];return this.markAsUpdated(),this}subtract(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]-r[a];return t.markAsUpdated(),t}subtractInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractFromFloats(...e){return this.subtractFromFloatsToRef(...e,new n)}subtractFromFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]-s[a];return t.markAsUpdated(),t}invertToRef(e){return this._isIdentity===!0?(n.IdentityToRef(e),e):(_C(this,e.asArray())?e.markAsUpdated():e.copyFrom(this),e)}addAtIndex(e,t){return this._m[e]+=t,this.markAsUpdated(),this}multiplyAtIndex(e,t){return this._m[e]*=t,this.markAsUpdated(),this}setTranslationFromFloats(e,t,i){return this._m[12]=e,this._m[13]=t,this._m[14]=i,this.markAsUpdated(),this}addTranslationFromFloats(e,t,i){return this._m[12]+=e,this._m[13]+=t,this._m[14]+=i,this.markAsUpdated(),this}setTranslation(e){return this.setTranslationFromFloats(e._x,e._y,e._z)}getTranslation(){return new b(this._m[12],this._m[13],this._m[14])}getTranslationToRef(e){return e.x=this._m[12],e.y=this._m[13],e.z=this._m[14],e}removeRotationAndScaling(){let e=this.m;return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e[12],e[13],e[14],e[15],this),this._updateIdentityStatus(e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1),this}copyFrom(e){e.copyToArray(this._m);let t=e;return this.updateFlag=t.updateFlag,this._updateIdentityStatus(t._isIdentity,t._isIdentityDirty,t._isIdentity3x2,t._isIdentity3x2Dirty),this}copyToArray(e,t=0){return YU(this,e,t),this}multiply(e){let t=new n;return this.multiplyToRef(e,t),t}multiplyInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]*=i[r];return this.markAsUpdated(),this}multiplyByFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e[i];return this.markAsUpdated(),this}multiplyByFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]*s[a];return t.markAsUpdated(),t}multiplyToRef(e,t){return this._isIdentity?(t.copyFrom(e),t):e._isIdentity?(t.copyFrom(this),t):(this.multiplyToArray(e,t._m,0),t.markAsUpdated(),t)}multiplyToArray(e,t,i){return pC(this,e,t,i),this}divide(e){return this.divideToRef(e,new n)}divideToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]/r[a];return t.markAsUpdated(),t}divideInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]/=i[r];return this.markAsUpdated(),this}minimizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}minimizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}maximizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}maximizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}negate(){return this.negateToRef(new n)}negateInPlace(){let e=this._m;for(let t=0;t<16;t++)e[t]=-e[t];return this.markAsUpdated(),this}negateToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=-t[r];return e.markAsUpdated(),e}equals(e){let t=e;if(!t)return!1;if((this._isIdentity||t._isIdentity)&&!this._isIdentityDirty&&!t._isIdentityDirty)return this._isIdentity&&t._isIdentity;let i=this.m,r=t.m;return i[0]===r[0]&&i[1]===r[1]&&i[2]===r[2]&&i[3]===r[3]&&i[4]===r[4]&&i[5]===r[5]&&i[6]===r[6]&&i[7]===r[7]&&i[8]===r[8]&&i[9]===r[9]&&i[10]===r[10]&&i[11]===r[11]&&i[12]===r[12]&&i[13]===r[13]&&i[14]===r[14]&&i[15]===r[15]}equalsWithEpsilon(e,t=0){let i=this._m,r=e.m;for(let s=0;s<16;s++)if(!Si(i[s],r[s],t))return!1;return!0}equalsToFloats(...e){let t=this._m;for(let i=0;i<16;i++)if(t[i]!=e[i])return!1;return!0}floor(){return this.floorToRef(new n)}floorToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=Math.floor(t[r]);return e.markAsUpdated(),e}fract(){return this.fractToRef(new n)}fractToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=t[r]-Math.floor(t[r]);return e.markAsUpdated(),e}clone(){let e=new n;return e.copyFrom(this),e}getClassName(){return"Matrix"}getHashCode(){let e=ls(this._m[0]);for(let t=1;t<16;t++)e=e*397^ls(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new Xe,this.decompose(e.scaling,e.rotationQuaternion,e.position)}decompose(e,t,i,r,s=!0){if(this._isIdentity)return i&&i.setAll(0),e&&e.setAll(1),t&&t.copyFromFloats(0,0,0,1),!0;let a=this._m;if(i&&i.copyFromFloats(a[12],a[13],a[14]),e=e||ze.Vector3[0],e.x=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]),e.y=Math.sqrt(a[4]*a[4]+a[5]*a[5]+a[6]*a[6]),e.z=Math.sqrt(a[8]*a[8]+a[9]*a[9]+a[10]*a[10]),r){let o=(s?r.absoluteScaling.x:r.scaling.x)<0?-1:1,l=(s?r.absoluteScaling.y:r.scaling.y)<0?-1:1,c=(s?r.absoluteScaling.z:r.scaling.z)<0?-1:1;e.x*=o,e.y*=l,e.z*=c}else this.determinant()<=0&&(e.y*=-1);if(e._x===0||e._y===0||e._z===0)return t&&t.copyFromFloats(0,0,0,1),!1;if(t){let o=1/e._x,l=1/e._y,c=1/e._z;n.FromValuesToRef(a[0]*o,a[1]*o,a[2]*o,0,a[4]*l,a[5]*l,a[6]*l,0,a[8]*c,a[9]*c,a[10]*c,0,0,0,0,1,ze.Matrix[0]),Xe.FromRotationMatrixToRef(ze.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Ii(this._m[t+0],this._m[t+1],this._m[t+2],this._m[t+3])}getRowToRef(e,t){if(e>=0&&e<=3){let i=e*4;t.x=this._m[i+0],t.y=this._m[i+1],t.z=this._m[i+2],t.w=this._m[i+3]}return t}setRow(e,t){return this.setRowFromFloats(e,t.x,t.y,t.z,t.w)}transpose(){let e=new n;return n.TransposeToRef(this,e),e}transposeToRef(e){return n.TransposeToRef(this,e),e}setRowFromFloats(e,t,i,r,s){if(e<0||e>3)return this;let a=e*4;return this._m[a+0]=t,this._m[a+1]=i,this._m[a+2]=r,this._m[a+3]=s,this.markAsUpdated(),this}scale(e){let t=new n;return this.scaleToRef(e,t),t}scaleToRef(e,t){for(let i=0;i<16;i++)t._m[i]=this._m[i]*e;return t.markAsUpdated(),t}scaleAndAddToRef(e,t){for(let i=0;i<16;i++)t._m[i]+=this._m[i]*e;return t.markAsUpdated(),t}scaleInPlace(e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e;return this.markAsUpdated(),this}toNormalMatrix(e){let t=ze.Matrix[0];this.invertToRef(t),t.transposeToRef(e);let i=e._m;return n.FromValuesToRef(i[0],i[1],i[2],0,i[4],i[5],i[6],0,i[8],i[9],i[10],0,0,0,0,1,e),e}getRotationMatrix(){let e=new n;return this.getRotationMatrixToRef(e),e}getRotationMatrixToRef(e){let t=ze.Vector3[0];if(!this.decompose(t))return n.IdentityToRef(e),e;let i=this._m,r=1/t._x,s=1/t._y,a=1/t._z;return n.FromValuesToRef(i[0]*r,i[1]*r,i[2]*r,0,i[4]*s,i[5]*s,i[6]*s,0,i[8]*a,i[9]*a,i[10]*a,0,0,0,0,1,e),e}toggleModelMatrixHandInPlace(){let e=this._m;return e[2]*=-1,e[6]*=-1,e[8]*=-1,e[9]*=-1,e[14]*=-1,this.markAsUpdated(),this}toggleProjectionMatrixHandInPlace(){let e=this._m;return e[8]*=-1,e[9]*=-1,e[10]*=-1,e[11]*=-1,this.markAsUpdated(),this}static FromArray(e,t=0){let i=new n;return n.FromArrayToRef(e,t,i),i}static FromArrayToRef(e,t,i){for(let r=0;r<16;r++)i._m[r]=e[r+t];return i.markAsUpdated(),i}static FromFloat32ArrayToRefScaled(e,t,i,r){return r._m[0]=e[0+t]*i,r._m[1]=e[1+t]*i,r._m[2]=e[2+t]*i,r._m[3]=e[3+t]*i,r._m[4]=e[4+t]*i,r._m[5]=e[5+t]*i,r._m[6]=e[6+t]*i,r._m[7]=e[7+t]*i,r._m[8]=e[8+t]*i,r._m[9]=e[9+t]*i,r._m[10]=e[10+t]*i,r._m[11]=e[11+t]*i,r._m[12]=e[12+t]*i,r._m[13]=e[13+t]*i,r._m[14]=e[14+t]*i,r._m[15]=e[15+t]*i,r.markAsUpdated(),r}static get IdentityReadOnly(){return n._IdentityReadOnly}static FromValuesToRef(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){let v=g._m;v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p){let g=new n,v=g._m;return v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated(),g}static Compose(e,t,i){let r=new n;return n.ComposeToRef(e,t,i,r),r}static ComposeToRef(e,t,i,r){let s=r._m,a=t._x,o=t._y,l=t._z,c=t._w,f=a+a,d=o+o,h=l+l,u=a*f,m=a*d,_=a*h,p=o*d,g=o*h,v=l*h,x=c*f,S=c*d,E=c*h,T=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*T,s[1]=(m+E)*T,s[2]=(_-S)*T,s[3]=0,s[4]=(m-E)*R,s[5]=(1-(u+v))*R,s[6]=(g+x)*R,s[7]=0,s[8]=(_+S)*M,s[9]=(g-x)*M,s[10]=(1-(u+p))*M,s[11]=0,s[12]=i._x,s[13]=i._y,s[14]=i._z,s[15]=1,r.markAsUpdated(),r}static Identity(){let e=n.FromValues(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return e._updateIdentityStatus(!0),e}static IdentityToRef(e){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,e),e._updateIdentityStatus(!0),e}static Zero(){let e=n.FromValues(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return e._updateIdentityStatus(!1),e}static RotationX(e){let t=new n;return n.RotationXToRef(e,t),t}static Invert(e){let t=new n;return e.invertToRef(t),t}static RotationXToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(1,0,0,0,0,r,i,0,0,-i,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationY(e){let t=new n;return n.RotationYToRef(e,t),t}static RotationYToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,0,-i,0,0,1,0,0,i,0,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationZ(e){let t=new n;return n.RotationZToRef(e,t),t}static RotationZToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,i,0,0,-i,r,0,0,0,0,1,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationAxis(e,t){let i=new n;return n.RotationAxisToRef(e,t,i),i}static RotationAxisToRef(e,t,i){let r=Math.sin(-t),s=Math.cos(-t),a=1-s;e=e.normalizeToRef(ze.Vector3[0]);let o=i._m;return o[0]=e._x*e._x*a+s,o[1]=e._x*e._y*a-e._z*r,o[2]=e._x*e._z*a+e._y*r,o[3]=0,o[4]=e._y*e._x*a+e._z*r,o[5]=e._y*e._y*a+s,o[6]=e._y*e._z*a-e._x*r,o[7]=0,o[8]=e._z*e._x*a-e._y*r,o[9]=e._z*e._y*a+e._x*r,o[10]=e._z*e._z*a+s,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,i.markAsUpdated(),i}static RotationAlignToRef(e,t,i,r=!1){let s=b.Dot(t,e),a=i._m;if(s<-1+Nt)a[0]=-1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=r?1:-1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=r?-1:1,a[11]=0;else{let o=b.Cross(t,e),l=1/(1+s);a[0]=o._x*o._x*l+s,a[1]=o._y*o._x*l-o._z,a[2]=o._z*o._x*l+o._y,a[3]=0,a[4]=o._x*o._y*l+o._z,a[5]=o._y*o._y*l+s,a[6]=o._z*o._y*l-o._x,a[7]=0,a[8]=o._x*o._z*l-o._y,a[9]=o._y*o._z*l+o._x,a[10]=o._z*o._z*l+s,a[11]=0}return a[12]=0,a[13]=0,a[14]=0,a[15]=1,i.markAsUpdated(),i}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){return Xe.RotationYawPitchRollToRef(e,t,i,ze.Quaternion[0]),ze.Quaternion[0].toRotationMatrix(r),r}static Scaling(e,t,i){let r=new n;return n.ScalingToRef(e,t,i,r),r}static ScalingToRef(e,t,i,r){return n.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1,r),r._updateIdentityStatus(e===1&&t===1&&i===1),r}static Translation(e,t,i){let r=new n;return n.TranslationToRef(e,t,i,r),r}static TranslationToRef(e,t,i,r){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e,t,i,1,r),r._updateIdentityStatus(e===0&&t===0&&i===0),r}static Lerp(e,t,i){let r=new n;return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){let s=r._m,a=e.m,o=t.m;for(let l=0;l<16;l++)s[l]=a[l]*(1-i)+o[l]*i;return r.markAsUpdated(),r}static DecomposeLerp(e,t,i){let r=new n;return n.DecomposeLerpToRef(e,t,i,r),r}static DecomposeLerpToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Quaternion[0],o=ze.Vector3[1];e.decompose(s,a,o);let l=ze.Vector3[2],c=ze.Quaternion[1],f=ze.Vector3[3];t.decompose(l,c,f);let d=ze.Vector3[4];b.LerpToRef(s,l,i,d);let h=ze.Quaternion[2];Xe.SlerpToRef(a,c,i,h);let u=ze.Vector3[5];return b.LerpToRef(o,f,i,u),n.ComposeToRef(d,h,u,r),r}static LookAtLH(e,t,i){let r=new n;return n.LookAtLHToRef(e,t,i,r),r}static LookAtLHToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Vector3[1],o=ze.Vector3[2];t.subtractToRef(e,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookAtRH(e,t,i){let r=new n;return n.LookAtRHToRef(e,t,i,r),r}static LookAtRHToRef(e,t,i,r){let s=ze.Vector3[0],a=ze.Vector3[1],o=ze.Vector3[2];e.subtractToRef(t,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookDirectionLH(e,t){let i=new n;return n.LookDirectionLHToRef(e,t,i),i}static LookDirectionLHToRef(e,t,i){let r=ze.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=ze.Vector3[1];return b.CrossToRef(t,r,s),n.FromValuesToRef(s._x,s._y,s._z,0,t._x,t._y,t._z,0,r._x,r._y,r._z,0,0,0,0,1,i),i}static LookDirectionRH(e,t){let i=new n;return n.LookDirectionRHToRef(e,t,i),i}static LookDirectionRHToRef(e,t,i){let r=ze.Vector3[2];return b.CrossToRef(t,e,r),n.FromValuesToRef(r._x,r._y,r._z,0,t._x,t._y,t._z,0,e._x,e._y,e._z,0,0,0,0,1,i),i}static OrthoLH(e,t,i,r,s){let a=new n;return n.OrthoLHToRef(e,t,i,r,a,s),a}static OrthoLHToRef(e,t,i,r,s,a){let o=i,l=r,c=2/e,f=2/t,d=2/(l-o),h=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,h,1,s),a&&s.multiplyToRef(th,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&h===0),s}static OrthoOffCenterLH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l){let c=s,f=a,d=2/(t-e),h=2/(r-i),u=2/(f-c),m=-(f+c)/(f-c),_=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,h,0,0,0,0,u,0,_,p,m,1,o),l&&o.multiplyToRef(th,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=-o*Math.cos(l),u=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,ze.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,ze.Matrix[0]),ze.Matrix[1].multiplyToRef(ze.Matrix[0],ze.Matrix[0]),n.TranslationToRef(0,0,c,ze.Matrix[1]),ze.Matrix[0].multiplyToRef(ze.Matrix[1],ze.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),ze.Matrix[0].multiplyToRef(f,f),f}static OrthoOffCenterRH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterRHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterRHToRef(e,t,i,r,s,a,o,l){return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l),o._m[10]*=-1,o}static ObliqueOffCenterRHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=o*Math.cos(l),u=o*Math.sin(l);return n.TranslationToRef(0,0,c,ze.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,ze.Matrix[0]),ze.Matrix[1].multiplyToRef(ze.Matrix[0],ze.Matrix[0]),n.TranslationToRef(0,0,-c,ze.Matrix[1]),ze.Matrix[0].multiplyToRef(ze.Matrix[1],ze.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),ze.Matrix[0].multiplyToRef(f,f),f}static PerspectiveLH(e,t,i,r,s,a=0){let o=new n,l=i,c=r,f=2*l/e,d=2*l/t,h=(c+l)/(c-l),u=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,h,1,0,0,u,0,o),s&&o.multiplyToRef(th,o),o._updateIdentityStatus(!1),o}static PerspectiveFovLH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovLHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovLHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?-1:d!==0?(d+f)/(d-f):1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,1,0,0,p,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseLHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovRH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovRHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovRHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?1:d!==0?-(d+f)/(d-f):-1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,-1,0,0,p,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseRHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(th,s),s._updateIdentityStatus(!1),s}static GetFinalMatrix(e,t,i,r,s,a){let o=e.width,l=e.height,c=e.x,f=e.y,d=n.FromValues(o/2,0,0,0,0,-l/2,0,0,0,0,a-s,0,c+o/2,l/2+f,s,1),h=new n;return t.multiplyToRef(i,h),h.multiplyToRef(r,h),h.multiplyToRef(d,h)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return as.MatrixUse64Bits?i:new Float32Array(i)}static GetAsMatrix3x3(e){let t=e.m,i=[t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]];return as.MatrixUse64Bits?i:new Float32Array(i)}static Transpose(e){let t=new n;return n.TransposeToRef(e,t),t}static TransposeToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[12],l=i[1],c=i[5],f=i[9],d=i[13],h=i[2],u=i[6],m=i[10],_=i[14],p=i[3],g=i[7],v=i[11],x=i[15],S=t._m;return S[0]=r,S[1]=s,S[2]=a,S[3]=o,S[4]=l,S[5]=c,S[6]=f,S[7]=d,S[8]=h,S[9]=u,S[10]=m,S[11]=_,S[12]=p,S[13]=g,S[14]=v,S[15]=x,t.markAsUpdated(),t._updateIdentityStatus(e._isIdentity,e._isIdentityDirty),t}static Reflection(e){let t=new n;return n.ReflectionToRef(e,t),t}static ReflectionToRef(e,t){e.normalize();let i=e.normal.x,r=e.normal.y,s=e.normal.z,a=-2*i,o=-2*r,l=-2*s;return n.FromValuesToRef(a*i+1,o*i,l*i,0,a*r,o*r+1,l*r,0,a*s,o*s,l*s+1,0,a*e.d,o*e.d,l*e.d,1,t),t}static FromXYZAxesToRef(e,t,i,r){return n.FromValuesToRef(e._x,e._y,e._z,0,t._x,t._y,t._z,0,i._x,i._y,i._z,0,0,0,0,1,r),r}static FromQuaternionToRef(e,t){let i=e._x*e._x,r=e._y*e._y,s=e._z*e._z,a=e._x*e._y,o=e._z*e._w,l=e._z*e._x,c=e._y*e._w,f=e._y*e._z,d=e._x*e._w;return t._m[0]=1-2*(r+s),t._m[1]=2*(a+o),t._m[2]=2*(l-c),t._m[3]=0,t._m[4]=2*(a-o),t._m[5]=1-2*(s+i),t._m[6]=2*(f+d),t._m[7]=0,t._m[8]=2*(l+c),t._m[9]=2*(f-d),t._m[10]=1-2*(r+i),t._m[11]=0,t._m[12]=0,t._m[13]=0,t._m[14]=0,t._m[15]=1,t.markAsUpdated(),t}};q._IdentityReadOnly=q.Identity();Object.defineProperties(q.prototype,{dimension:{value:[4,4]},rank:{value:2}});ze=class{};ze.Vector3=jl(11,b.Zero);ze.Matrix=jl(2,q.Identity);ze.Quaternion=jl(3,Xe.Zero);$=class{};$.Vector2=jl(3,Fe.Zero);$.Vector3=jl(13,b.Zero);$.Vector4=jl(3,Ii.Zero);$.Quaternion=jl(3,Xe.Zero);$.Matrix=jl(8,q.Identity);Ft("BABYLON.Vector2",Fe);Ft("BABYLON.Vector3",b);Ft("BABYLON.Vector4",Ii);Ft("BABYLON.Matrix",q);th=q.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var KU,Ns,jU,lm=I(()=>{ke();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(KU||(KU={}));Ns=class{};Ns.X=new b(1,0,0);Ns.Y=new b(0,1,0);Ns.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(jU||(jU={}))});function cm(n){return Math.pow(n,am)}function fm(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function dm(n){return Math.pow(n,GU)}function hm(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var pe,lt,Rn,Ht=I(()=>{ol();Yi();Un();Vn();pe=class n{constructor(e=0,t=0,i=0){this.r=e,this.g=t,this.b=i}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+"}"}getClassName(){return"Color3"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toColor4(e=1){return new lt(this.r,this.g,this.b,e)}asArray(){return[this.r,this.g,this.b]}toLuminance(){return this.r*.3+this.g*.59+this.b*.11}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyByFloats(e,t,i){return new n(this.r*e,this.g*t,this.b*i)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.r,e.g,e.b)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.r,e.g,e.b)}minimizeInPlaceFromFloats(e,t,i){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this}maximizeInPlaceFromFloats(e,t,i){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b}equalsFloats(e,t,i){return this.equalsToFloats(e,t,i)}equalsToFloats(e,t,i){return this.r===e&&this.g===t&&this.b===i}equalsWithEpsilon(e,t=Nt){return Si(this.r,e.r,t)&&Si(this.g,e.g,t)&&Si(this.b,e.b,t)}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}scale(e){return new n(this.r*e,this.g*e,this.b*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t}clampToRef(e=0,t=1,i){return i.r=wt(this.r,e,t),i.g=wt(this.g,e,t),i.b=wt(this.b,e,t),i}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b)}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addInPlaceFromFloats(e,t,i){return this.r+=e,this.g+=t,this.b+=i,this}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this}subtractFromFloats(e,t,i){return new n(this.r-e,this.g-t,this.b-i)}subtractFromFloatsToRef(e,t,i,r){return r.r=this.r-e,r.g=this.g-t,r.b=this.b-i,r}clone(){return new n(this.r,this.g,this.b)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copyFromFloats(e,t,i){return this.r=e,this.g=t,this.b=i,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this.r=this.g=this.b=e,this}toHexString(){let e=Math.round(this.r*255),t=Math.round(this.g*255),i=Math.round(this.b*255);return"#"+po(e)+po(t)+po(i)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,this)}toHSV(){return this.toHSVToRef(new n)}toHSVToRef(e){let t=this.r,i=this.g,r=this.b,s=Math.max(t,i,r),a=Math.min(t,i,r),o=0,l=0,c=s,f=s-a;return s!==0&&(l=f/s),s!=a&&(s==t?(o=(i-r)/f,i=0&&a<=1?(l=s,c=o):a>=1&&a<=2?(l=o,c=s):a>=2&&a<=3?(c=s,f=o):a>=3&&a<=4?(c=o,f=s):a>=4&&a<=5?(l=o,f=s):a>=5&&a<=6&&(l=s,f=o);let d=i-s;return r.r=l+d,r.g=c+d,r.b=f+d,r}static FromHSV(e,t,i){let r=new n(0,0,0);return n.HSVtoRGBToRef(e,t,i,r),r}static FromHexString(e){return new n(0,0,0).fromHexString(e)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2]}static FromInts(e,t,i){return new n(e/255,t/255,i/255)}static Lerp(e,t,i){let r=new n(0,0,0);return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d;return new n(h,u,m)}static Hermite1stDerivative(e,t,i,r,s){let a=n.Black();return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b}static Red(){return new n(1,0,0)}static Green(){return new n(0,1,0)}static Blue(){return new n(0,0,1)}static Black(){return new n(0,0,0)}static get BlackReadOnly(){return n._BlackReadOnly}static White(){return new n(1,1,1)}static Purple(){return new n(.5,0,.5)}static Magenta(){return new n(1,0,1)}static Yellow(){return new n(1,1,0)}static Gray(){return new n(.5,.5,.5)}static Teal(){return new n(0,1,1)}static Random(){return new n(Math.random(),Math.random(),Math.random())}};pe._V8PerformanceHack=new pe(.5,.5,.5);pe._BlackReadOnly=pe.Black();Object.defineProperties(pe.prototype,{dimension:{value:[3]},rank:{value:1}});lt=class n{constructor(e=0,t=0,i=0,r=1){this.r=e,this.g=t,this.b=i,this.a=r}asArray(){return[this.r,this.g,this.b,this.a]}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e[t+3]=this.a,this}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this.a=e[t+3],this}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b,this.a+e.a)}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t.a=this.a+e.a,t}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this.a+=e.a,this}addInPlaceFromFloats(e,t,i,r){return this.r+=e,this.g+=t,this.b+=i,this.a+=r,this}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b,this.a-e.a)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t.a=this.a-e.a,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this.a-=e.a,this}subtractFromFloats(e,t,i,r){return new n(this.r-e,this.g-t,this.b-i,this.a-r)}subtractFromFloatsToRef(e,t,i,r,s){return s.r=this.r-e,s.g=this.g-t,s.b=this.b-i,s.a=this.a-r,s}scale(e){return new n(this.r*e,this.g*e,this.b*e,this.a*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this.a*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t.a=this.a*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t.a+=this.a*e,t}clampToRef(e=0,t=1,i){return i.r=wt(this.r,e,t),i.g=wt(this.g,e,t),i.b=wt(this.b,e,t),i.a=wt(this.a,e,t),i}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b,this.a*e.a)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t.a=this.a*e.a,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this.a*=e.a,this}multiplyByFloats(e,t,i,r){return new n(this.r*e,this.g*t,this.b*i,this.a*r)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.r=Math.min(this.r,e.r),this.g=Math.min(this.g,e.g),this.b=Math.min(this.b,e.b),this.a=Math.min(this.a,e.a),this}maximizeInPlace(e){return this.r=Math.max(this.r,e.r),this.g=Math.max(this.g,e.g),this.b=Math.max(this.b,e.b),this.a=Math.max(this.a,e.a),this}minimizeInPlaceFromFloats(e,t,i,r){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this.a=Math.min(r,this.a),this}maximizeInPlaceFromFloats(e,t,i,r){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this.a=Math.max(r,this.a),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}equalsWithEpsilon(e,t=Nt){return Si(this.r,e.r,t)&&Si(this.g,e.g,t)&&Si(this.b,e.b,t)&&Si(this.a,e.a,t)}equalsToFloats(e,t,i,r){return this.r===e&&this.g===t&&this.b===i&&this.a===r}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+" A:"+this.a+"}"}getClassName(){return"Color4"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e=e*397^(this.a*255|0),e}clone(){return new n().copyFrom(this)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this}copyFromFloats(e,t,i,r){return this.r=e,this.g=t,this.b=i,this.a=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.r=this.g=this.b=this.a=e,this}toHexString(e=!1){let t=Math.round(this.r*255),i=Math.round(this.g*255),r=Math.round(this.b*255);if(e)return"#"+po(t)+po(i)+po(r);let s=Math.round(this.a*255);return"#"+po(t)+po(i)+po(r)+po(s)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,e.length===9&&(this.a=parseInt(e.substring(7,9),16)/255),this)}toLinearSpace(e=!1){let t=new n;return this.toLinearSpaceToRef(t,e),t}toLinearSpaceToRef(e,t=!1){return t?(e.r=fm(this.r),e.g=fm(this.g),e.b=fm(this.b)):(e.r=cm(this.r),e.g=cm(this.g),e.b=cm(this.b)),e.a=this.a,this}toGammaSpace(e=!1){let t=new n;return this.toGammaSpaceToRef(t,e),t}toGammaSpaceToRef(e,t=!1){return t?(e.r=hm(this.r),e.g=hm(this.g),e.b=hm(this.b)):(e.r=dm(this.r),e.g=dm(this.g),e.b=dm(this.b)),e.a=this.a,this}static FromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?new n(0,0,0,0):new n(0,0,0,1).fromHexString(e)}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i,r.a=e.a+(t.a-e.a)*i,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d,_=e.a*l+i.a*c+t.a*f+r.a*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b,a.a=(o-s)*6*e.a+(3*o-4*s+1)*t.a+(-o+s)*6*i.a+(3*o-2*s)*r.a}static FromColor3(e,t=1){return new n(e.r,e.g,e.b,t)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2],i.a=e[t+3]}static FromInts(e,t,i,r){return new n(e/255,t/255,i/255,r/255)}static CheckColors4(e,t){if(e.length===t*3){let i=[];for(let r=0;rnew lt(0,0,0,0));Ft("BABYLON.Color3",pe);Ft("BABYLON.Color4",lt)});var _o,um=I(()=>{ke();_o=class n{constructor(e,t,i,r){this.normal=new b(e,t,i),this.d=r}asArray(){return[this.normal.x,this.normal.y,this.normal.z,this.d]}clone(){return new n(this.normal.x,this.normal.y,this.normal.z,this.d)}getClassName(){return"Plane"}getHashCode(){let e=this.normal.getHashCode();return e=e*397^(this.d|0),e}normalize(){let e=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y+this.normal.z*this.normal.z),t=0;return e!==0&&(t=1/e),this.normal.x*=t,this.normal.y*=t,this.normal.z*=t,this.d*=t,this}transform(e){let t=n._TmpMatrix;e.invertToRef(t);let i=t.m,r=this.normal.x,s=this.normal.y,a=this.normal.z,o=this.d,l=r*i[0]+s*i[1]+a*i[2]+o*i[3],c=r*i[4]+s*i[5]+a*i[6]+o*i[7],f=r*i[8]+s*i[9]+a*i[10]+o*i[11],d=r*i[12]+s*i[13]+a*i[14]+o*i[15];return new n(l,c,f,d)}dotCoordinate(e){return this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z+this.d}copyFromPoints(e,t,i){let r=t.x-e.x,s=t.y-e.y,a=t.z-e.z,o=i.x-e.x,l=i.y-e.y,c=i.z-e.z,f=s*c-a*l,d=a*o-r*c,h=r*l-s*o,u=Math.sqrt(f*f+d*d+h*h),m;return u!==0?m=1/u:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=h*m,this.d=-(this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z),this}isFrontFacingTo(e,t){return b.Dot(this.normal,e)<=t}signedDistanceTo(e){return b.Dot(e,this.normal)+this.d}static FromArray(e){return new n(e[0],e[1],e[2],e[3])}static FromPoints(e,t,i){let r=new n(0,0,0,0);return r.copyFromPoints(e,t,i),r}static FromPositionAndNormal(e,t){let i=new n(0,0,0,0);return this.FromPositionAndNormalToRef(e,t,i)}static FromPositionAndNormalToRef(e,t,i){return i.normal.copyFrom(t),i.normal.normalize(),i.d=-e.dot(i.normal),i}static SignedDistanceToPlaneFromPositionAndNormal(e,t,i){let r=-(t.x*e.x+t.y*e.y+t.z*e.z);return b.Dot(i,t)+r}};_o._TmpMatrix=q.Identity()});var pf,VA=I(()=>{um();pf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new _o(0,0,0,0));return n.GetPlanesToRef(e,t),t}static GetNearPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[2],t.normal.y=i[7]+i[6],t.normal.z=i[11]+i[10],t.d=i[15]+i[14],t.normalize()}static GetFarPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[2],t.normal.y=i[7]-i[6],t.normal.z=i[11]-i[10],t.d=i[15]-i[14],t.normalize()}static GetLeftPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[0],t.normal.y=i[7]+i[4],t.normal.z=i[11]+i[8],t.d=i[15]+i[12],t.normalize()}static GetRightPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[0],t.normal.y=i[7]-i[4],t.normal.z=i[11]-i[8],t.d=i[15]-i[12],t.normalize()}static GetTopPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[1],t.normal.y=i[7]-i[5],t.normal.z=i[11]-i[9],t.d=i[15]-i[13],t.normalize()}static GetBottomPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[1],t.normal.y=i[7]+i[5],t.normal.z=i[11]+i[9],t.d=i[15]+i[13],t.normalize()}static GetPlanesToRef(e,t){n.GetNearPlaneToRef(e,t[0]),n.GetFarPlaneToRef(e,t[1]),n.GetLeftPlaneToRef(e,t[2]),n.GetRightPlaneToRef(e,t[3]),n.GetTopPlaneToRef(e,t[4]),n.GetBottomPlaneToRef(e,t[5])}static IsPointInFrustum(e,t){for(let i=0;i<6;i++)if(t[i].dotCoordinate(e)<0)return!1;return!0}}});var qU,mm,vC,pm,ih,rh=I(()=>{Vn();ke();Un();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(qU||(qU={}));mm=class n{constructor(e){this._radians=e,this._radians<0&&(this._radians+=2*Math.PI)}degrees(){return this._radians*180/Math.PI}radians(){return this._radians}static BetweenTwoPoints(e,t){let i=t.subtract(e),r=Math.atan2(i.y,i.x);return new n(r)}static BetweenTwoVectors(e,t){let i=e.lengthSquared()*t.lengthSquared();if(i===0)return new n(Math.PI/2);i=Math.sqrt(i);let r=e.dot(t)/i;r=wt(r,-1,1);let s=Math.acos(r);return new n(s)}static FromRadians(e){return new n(e)}static FromDegrees(e){return new n(e*Math.PI/180)}},vC=class{constructor(e,t,i){this.startPoint=e,this.midPoint=t,this.endPoint=i;let r=Math.pow(t.x,2)+Math.pow(t.y,2),s=(Math.pow(e.x,2)+Math.pow(e.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,o=(e.x-t.x)*(t.y-i.y)-(t.x-i.x)*(e.y-t.y);this.centerPoint=new Fe((s*(t.y-i.y)-a*(e.y-t.y))/o,((e.x-t.x)*a-(t.x-i.x)*s)/o),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=mm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=mm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=mm.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();c-l>180&&(c-=360),c-l<-180&&(c+=360),f-c>180&&(f-=360),f-c<-180&&(f+=360),this.orientation=c-l<0?0:1,this.angle=mm.FromDegrees(this.orientation===0?l-f:f-l)}},pm=class n{constructor(e,t){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new Fe(e,t))}addLineTo(e,t){if(this.closed)return this;let i=new Fe(e,t),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this}addArcTo(e,t,i,r,s=36){if(this.closed)return this;let a=this._points[this._points.length-1],o=new Fe(e,t),l=new Fe(i,r),c=new vC(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let h=0;h(1-l)*(1-l)*c+2*l*(1-l)*f+l*l*d,o=this._points[this._points.length-1];for(let l=0;l<=s;l++){let c=l/s,f=a(c,o.x,e,i),d=a(c,o.y,t,r);this.addLineTo(f,d)}return this}addBezierCurveTo(e,t,i,r,s,a,o=36){if(this.closed)return this;let l=(f,d,h,u,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*h+3*f*f*(1-f)*u+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,h=l(d,c.x,e,i,s),u=l(d,c.y,t,r,a);this.addLineTo(h,u)}return this}isPointInside(e){let t=!1,i=this._points.length;for(let r=i-1,s=0;sNumber.EPSILON){if(c<0&&(a=this._points[s],l=-l,o=this._points[r],c=-c),e.yo.y)continue;if(e.y===a.y&&e.x===a.x)return!0;{let f=c*(e.x-a.x)-l*(e.y-a.y);if(f===0)return!0;if(f<0)continue;t=!t}}else{if(e.y!==a.y)continue;if(o.x<=e.x&&e.x<=a.x||a.x<=e.x&&e.x<=o.x)return!0}}return t}close(){return this.closed=!0,this}length(){let e=this._length;if(this.closed){let t=this._points[this._points.length-1],i=this._points[0];e+=i.subtract(t).length()}return e}area(){let e=this._points.length,t=0;for(let i=e-1,r=0;r1)return Fe.Zero();let t=e*this.length(),i=0;for(let r=0;r=i&&t<=c){let f=l.normalize(),d=t-i;return new Fe(a.x+f.x*d,a.y+f.y*d)}i=c}return Fe.Zero()}static StartingAt(e,t){return new n(e,t)}},ih=class n{constructor(e,t=null,i,r=!1){this.path=e,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:b.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:q.Identity()};for(let s=0;st){let c=e;e=t,t=c}let i=this.getCurve(),r=this.getPointAt(e),s=this.getPreviousPointIndexAt(e),a=this.getPointAt(t),o=this.getPreviousPointIndexAt(t)+1,l=[];return e!==0&&(s++,l.push(r)),l.push(...i.slice(s,o)),(t!==1||e===1)&&l.push(a),new n(l,this.getNormalAt(e),this._raw,this._alignTangentsWithPath)}update(e,t=null,i=!1){for(let r=0;rt+1;)t++,i=this._curve[e].subtract(this._curve[e-t]);return i}_normalVector(e,t){let i,r=e.length();if(r===0&&(r=1),t==null){let s;Si(Math.abs(e.y)/r,1,Nt)?Si(Math.abs(e.x)/r,1,Nt)?Si(Math.abs(e.z)/r,1,Nt)?s=b.Zero():s=new b(0,0,1):s=new b(1,0,0):s=new b(0,-1,0),i=b.Cross(e,s)}else i=b.Cross(e,t),b.CrossToRef(i,e,i);return i.normalize(),i}_updatePointAtData(e,t=!1){if(this._pointAtData.id===e)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=e;let i=this.getPoints();if(e<=0)return this._setPointAtData(0,0,i[0],0,t);if(e>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,t);let r=i[0],s,a=0,o=e*this.length();for(let l=1;lo){let d=(a-o)/c,h=r.subtract(s),u=s.add(h.scaleInPlace(d));return this._setPointAtData(e,1-d,u,l-1,t)}r=s}return this._pointAtData}_setPointAtData(e,t,i,r,s){return this._pointAtData.point=i,this._pointAtData.position=e,this._pointAtData.subPosition=t,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=s,s&&this._updateInterpolationMatrix(),this._pointAtData}_updateInterpolationMatrix(){this._pointAtData.interpolationMatrix=q.Identity();let e=this._pointAtData.previousPointArrayIndex;if(e!==this._tangents.length-1){let t=e+1,i=this._tangents[e].clone(),r=this._normals[e].clone(),s=this._binormals[e].clone(),a=this._tangents[t].clone(),o=this._normals[t].clone(),l=this._binormals[t].clone(),c=Xe.RotationQuaternionFromAxis(r,s,i),f=Xe.RotationQuaternionFromAxis(o,l,a);Xe.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var ql,GA=I(()=>{ql=class n{constructor(e,t){this.width=e,this.height=t}toString(){return`{W: ${this.width}, H: ${this.height}}`}getClassName(){return"Size"}getHashCode(){let e=this.width|0;return e=e*397^(this.height|0),e}copyFrom(e){this.width=e.width,this.height=e.height}copyFromFloats(e,t){return this.width=e,this.height=t,this}set(e,t){return this.copyFromFloats(e,t)}multiplyByFloats(e,t){return new n(this.width*e,this.height*t)}clone(){return new n(this.width,this.height)}equals(e){return e?this.width===e.width&&this.height===e.height:!1}get surface(){return this.width*this.height}static Zero(){return new n(0,0)}add(e){return new n(this.width+e.width,this.height+e.height)}subtract(e){return new n(this.width-e.width,this.height-e.height)}scale(e){return new n(this.width*e,this.height*e)}static Lerp(e,t,i){let r=e.width+(t.width-e.width)*i,s=e.height+(t.height-e.height)*i;return new n(r,s)}}});var ZU=I(()=>{ke()});var go,_m=I(()=>{go=class n{constructor(e,t,i,r){this.x=e,this.y=t,this.width=i,this.height=r}toGlobal(e,t){return new n(this.x*e,this.y*t,this.width*e,this.height*t)}toGlobalToRef(e,t,i){return i.x=this.x*e,i.y=this.y*t,i.width=this.width*e,i.height=this.height*t,this}clone(){return new n(this.x,this.y,this.width,this.height)}}});var QU=I(()=>{lm();Ht();Un();VA();rh();um();GA();ke();ZU();_m()});var ll,ele,Zl,Ql,hg,cl,ug=I(()=>{ke();QU();ll=[Math.sqrt(1/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(3/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(15/(4*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(5/(16*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(15/(16*Math.PI))],ele=[()=>1,n=>n.y,n=>n.z,n=>n.x,n=>n.x*n.y,n=>n.y*n.z,n=>3*n.z*n.z-1,n=>n.x*n.z,n=>n.x*n.x-n.y*n.y],Zl=(n,e)=>ll[n]*ele[n](e),Ql=[Math.PI,2*Math.PI/3,2*Math.PI/3,2*Math.PI/3,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4],hg=class n{constructor(){this.preScaled=!1,this.l00=b.Zero(),this.l1_1=b.Zero(),this.l10=b.Zero(),this.l11=b.Zero(),this.l2_2=b.Zero(),this.l2_1=b.Zero(),this.l20=b.Zero(),this.l21=b.Zero(),this.l22=b.Zero()}addLight(e,t,i){$.Vector3[0].set(t.r,t.g,t.b);let r=$.Vector3[0],s=$.Vector3[1];r.scaleToRef(i,s),s.scaleToRef(Zl(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(Zl(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(Zl(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(Zl(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(Zl(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(Zl(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(Zl(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(Zl(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(Zl(8,e),$.Vector3[2]),this.l22.addInPlace($.Vector3[2])}scaleInPlace(e){this.l00.scaleInPlace(e),this.l1_1.scaleInPlace(e),this.l10.scaleInPlace(e),this.l11.scaleInPlace(e),this.l2_2.scaleInPlace(e),this.l2_1.scaleInPlace(e),this.l20.scaleInPlace(e),this.l21.scaleInPlace(e),this.l22.scaleInPlace(e)}convertIncidentRadianceToIrradiance(){this.l00.scaleInPlace(Ql[0]),this.l1_1.scaleInPlace(Ql[1]),this.l10.scaleInPlace(Ql[2]),this.l11.scaleInPlace(Ql[3]),this.l2_2.scaleInPlace(Ql[4]),this.l2_1.scaleInPlace(Ql[5]),this.l20.scaleInPlace(Ql[6]),this.l21.scaleInPlace(Ql[7]),this.l22.scaleInPlace(Ql[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(ll[0]),this.l1_1.scaleInPlace(ll[1]),this.l10.scaleInPlace(ll[2]),this.l11.scaleInPlace(ll[3]),this.l2_2.scaleInPlace(ll[4]),this.l2_1.scaleInPlace(ll[5]),this.l20.scaleInPlace(ll[6]),this.l21.scaleInPlace(ll[7]),this.l22.scaleInPlace(ll[8])}updateFromArray(e){return b.FromArrayToRef(e[0],0,this.l00),b.FromArrayToRef(e[1],0,this.l1_1),b.FromArrayToRef(e[2],0,this.l10),b.FromArrayToRef(e[3],0,this.l11),b.FromArrayToRef(e[4],0,this.l2_2),b.FromArrayToRef(e[5],0,this.l2_1),b.FromArrayToRef(e[6],0,this.l20),b.FromArrayToRef(e[7],0,this.l21),b.FromArrayToRef(e[8],0,this.l22),this}updateFromFloatsArray(e){return b.FromFloatsToRef(e[0],e[1],e[2],this.l00),b.FromFloatsToRef(e[3],e[4],e[5],this.l1_1),b.FromFloatsToRef(e[6],e[7],e[8],this.l10),b.FromFloatsToRef(e[9],e[10],e[11],this.l11),b.FromFloatsToRef(e[12],e[13],e[14],this.l2_2),b.FromFloatsToRef(e[15],e[16],e[17],this.l2_1),b.FromFloatsToRef(e[18],e[19],e[20],this.l20),b.FromFloatsToRef(e[21],e[22],e[23],this.l21),b.FromFloatsToRef(e[24],e[25],e[26],this.l22),this}static FromArray(e){return new n().updateFromArray(e)}static FromPolynomial(e){let t=new n;return t.l00=e.xx.scale(.376127).add(e.yy.scale(.376127)).add(e.zz.scale(.376126)),t.l1_1=e.y.scale(.977204),t.l10=e.z.scale(.977204),t.l11=e.x.scale(.977204),t.l2_2=e.xy.scale(1.16538),t.l2_1=e.yz.scale(1.16538),t.l20=e.zz.scale(1.34567).subtract(e.xx.scale(.672834)).subtract(e.yy.scale(.672834)),t.l21=e.zx.scale(1.16538),t.l22=e.xx.scale(1.16538).subtract(e.yy.scale(1.16538)),t.l1_1.scaleInPlace(-1),t.l11.scaleInPlace(-1),t.l2_1.scaleInPlace(-1),t.l21.scaleInPlace(-1),t.scaleInPlace(Math.PI),t}},cl=class n{constructor(){this.x=b.Zero(),this.y=b.Zero(),this.z=b.Zero(),this.xx=b.Zero(),this.yy=b.Zero(),this.zz=b.Zero(),this.xy=b.Zero(),this.yz=b.Zero(),this.zx=b.Zero()}get preScaledHarmonics(){return this._harmonics||(this._harmonics=hg.FromPolynomial(this)),this._harmonics.preScaled||this._harmonics.preScaleForRendering(),this._harmonics}addAmbient(e){$.Vector3[0].copyFromFloats(e.r,e.g,e.b);let t=$.Vector3[0];this.xx.addInPlace(t),this.yy.addInPlace(t),this.zz.addInPlace(t)}scaleInPlace(e){this.x.scaleInPlace(e),this.y.scaleInPlace(e),this.z.scaleInPlace(e),this.xx.scaleInPlace(e),this.yy.scaleInPlace(e),this.zz.scaleInPlace(e),this.yz.scaleInPlace(e),this.zx.scaleInPlace(e),this.xy.scaleInPlace(e)}updateFromHarmonics(e){return this._harmonics=e,this.x.copyFrom(e.l11),this.x.scaleInPlace(1.02333).scaleInPlace(-1),this.y.copyFrom(e.l1_1),this.y.scaleInPlace(1.02333).scaleInPlace(-1),this.z.copyFrom(e.l10),this.z.scaleInPlace(1.02333),this.xx.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.247708),$.Vector3[1].copyFrom(e.l22).scaleInPlace(.429043),this.xx.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).addInPlace($.Vector3[1]),this.yy.copyFrom(e.l00),this.yy.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).subtractInPlace($.Vector3[1]),this.zz.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.495417),this.zz.scaleInPlace(.886277).addInPlace($.Vector3[0]),this.yz.copyFrom(e.l2_1),this.yz.scaleInPlace(.858086).scaleInPlace(-1),this.zx.copyFrom(e.l21),this.zx.scaleInPlace(.858086).scaleInPlace(-1),this.xy.copyFrom(e.l2_2),this.xy.scaleInPlace(.858086),this.scaleInPlace(1/Math.PI),this}static FromHarmonics(e){return new n().updateFromHarmonics(e)}static FromArray(e){let t=new n;return b.FromArrayToRef(e[0],0,t.x),b.FromArrayToRef(e[1],0,t.y),b.FromArrayToRef(e[2],0,t.z),b.FromArrayToRef(e[3],0,t.xx),b.FromArrayToRef(e[4],0,t.yy),b.FromArrayToRef(e[5],0,t.zz),b.FromArrayToRef(e[6],0,t.yz),b.FromArrayToRef(e[7],0,t.zx),b.FromArrayToRef(e[8],0,t.xy),t}}});function P(n,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,i);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(s=(r<3?a(s):r>3?a(e,t,s):a(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s}var Gt=I(()=>{});function $U(n){let e=n.getClassName();return WA[e]||(WA[e]={}),WA[e]}function HA(n){let e=n.getClassName();if(kA[e])return kA[e];kA[e]={};let t=kA[e],i=n,r=e;for(;r;){let s=WA[r];for(let l in s)t[l]=s[l];let a,o=!1;do{if(a=Object.getPrototypeOf(i),!a.getClassName){o=!0;break}if(a.getClassName()!==r)break;i=a}while(a);if(o)break;r=a.getClassName(),i=a}return t}var kA,WA,EC=I(()=>{kA={},WA={}});function Ma(n,e){return(t,i)=>{let r=$U(t);r[i]||(r[i]={type:n,sourceName:e})}}function tle(n,e=null){return(t,i)=>{let r=e||"_"+i;Object.defineProperty(t,i,{get:function(){return this[r]},set:function(s){var a;typeof((a=this[r])==null?void 0:a.equals)=="function"&&this[r].equals(s)||this[r]!==s&&(this[r]=s,t[n].apply(this))},enumerable:!0,configurable:!0})}}function le(n,e=null){return tle(n,e)}function F(n){return Ma(0,n)}function Ut(n){return Ma(1,n)}function Tr(n){return Ma(2,n)}function gm(n){return Ma(3,n)}function vm(n){return Ma(4,n)}function Xr(n){return Ma(5,n)}function zA(n){return Ma(6,n)}function JU(n){return Ma(7,n)}function Em(n){return Ma(8,n)}function eV(n){return Ma(9,n)}function tV(n){return Ma(10,n)}function iV(n){return Ma(11,n)}function ws(n,e,t,i){let r=t.value;t.value=(...s)=>{let a=r;if(typeof _native!="undefined"&&_native[e]){let o=_native[e];i?a=(...l)=>i(...l)?o(...l):r(...l):a=o}return n[e]=a,a(...s)}}function ut(n,e=null){return(t,i)=>{let r=i;Object.defineProperty(t,e||"",{get:function(){return this[r].value},set:function(a){var o,l;typeof((l=(o=this[r])==null?void 0:o.value)==null?void 0:l.equals)=="function"&&this[r].value.equals(a)||this[r].value!==a&&(this[r].value=a,t[n].apply(this))},enumerable:!0,configurable:!0})}}var Vt=I(()=>{EC();ws.filter=function(n){return(e,t,i)=>ws(e,t,i,n)}});function _f(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}var mg=I(()=>{});function ile(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var Cr,nh=I(()=>{Cr=class n{constructor(){this._xhr=ile(),this._requestURL=""}static get IsCustomRequestAvailable(){return Object.keys(n.CustomRequestHeaders).length>0||n.CustomRequestModifiers.length>0}static _CleanUrl(e){return e=e.replace("file:http:","http:"),e=e.replace("file:https:","https:"),e}static _ShouldSkipRequestModifications(e){return n.SkipRequestModificationForBabylonCDN&&(e.includes("preview.babylonjs.com")||e.includes("cdn.babylonjs.com"))}static _CollectCustomizations(e,t={}){let i={...t};if(n._ShouldSkipRequestModifications(e))return{url:e,headers:i};for(let s in n.CustomRequestHeaders){let a=n.CustomRequestHeaders[s];a&&(i[s]=a)}let r={setRequestHeader:(s,a)=>{i[s]=a}};for(let s of n.CustomRequestModifiers){if(n._ShouldSkipRequestModifications(e))break;let a=s(r,e);typeof a=="string"&&(e=a)}return{url:e,headers:i}}static async FetchAsync(e,t={}){var r,s,a;let i=(r=t.method)!=null?r:"GET";if(typeof fetch!="undefined"){let{url:o,headers:l}=n._CollectCustomizations(n._CleanUrl(e),(s=t.headers)!=null?s:{});return await fetch(o,{method:i,headers:l,body:(a=t.body)!=null?a:void 0})}return await new Promise((o,l)=>{var f;let c=new n;c.responseType="arraybuffer",c.addEventListener("readystatechange",()=>{if(c.readyState===4)if(c.status>=200&&c.status<300){let d=typeof Headers!="undefined"?new Headers:void 0,h=c.getResponseHeader("Content-Type");h&&d&&d.set("Content-Type",h),o(typeof Response!="undefined"?new Response(c.response,{status:c.status,statusText:c.statusText,headers:d}):{ok:!0,status:c.status,statusText:c.statusText,headers:{get:u=>c.getResponseHeader(u)},arrayBuffer:async()=>await Promise.resolve(c.response)})}else l(new Error(`HTTP ${c.status} loading '${c.requestURL}': ${c.statusText}`))}),c.open(i,e,t.headers),c.send((f=t.body)!=null?f:null)})}get requestURL(){return this._requestURL}get onprogress(){return this._xhr.onprogress}set onprogress(e){this._xhr.onprogress=e}get readyState(){return this._xhr.readyState}get status(){return this._xhr.status}get statusText(){return this._xhr.statusText}get response(){return this._xhr.response}get responseURL(){return this._xhr.responseURL}get responseText(){return this._xhr.responseText}get responseType(){return this._xhr.responseType}set responseType(e){this._xhr.responseType=e}get timeout(){return this._xhr.timeout}set timeout(e){this._xhr.timeout=e}addEventListener(e,t,i){this._xhr.addEventListener(e,t,i)}removeEventListener(e,t,i){this._xhr.removeEventListener(e,t,i)}abort(){this._xhr.abort()}send(e){this._xhr.send(e)}open(e,t,i){let{url:r,headers:s}=n._CollectCustomizations(t,i);this._requestURL=n._CleanUrl(r),this._xhr.open(e,this._requestURL,!0);for(let a in s)this._xhr.setRequestHeader(a,s[a])}setRequestHeader(e,t){this._xhr.setRequestHeader(e,t)}getResponseHeader(e){return this._xhr.getResponseHeader(e)}};Cr.CustomRequestHeaders={};Cr.CustomRequestModifiers=new Array;Cr.SkipRequestModificationForBabylonCDN=!0});var gf,rV=I(()=>{gf=class{};gf.FilesToLoad={}});var XA,nV=I(()=>{XA=class{static ExponentialBackoff(e=3,t=500){return(i,r,s)=>r.status!==0||s>=e||i.indexOf("file:")!==-1?-1:Math.pow(2,s)*t}}});var $l,Ia,Fs,pg=I(()=>{$l=class extends Error{};$l._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));Ia={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Fs=class n extends $l{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",$l._setPrototypeOf(this,n.prototype)}}});function rle(n){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="",i,r,s,a,o,l,c,f=0;for(;f>2,o=(i&3)<<4|r>>4,l=(r&15)<<2|s>>6,c=s&63,isNaN(r)?l=c=64:isNaN(s)&&(c=64),t+=e.charAt(a)+e.charAt(o)+e.charAt(l)+e.charAt(c);return t}function nle(n){let e=SC(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{sV=n=>{if(typeof TextDecoder!="undefined")return new TextDecoder().decode(n);let e="";for(let t=0;t{let e=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);return typeof e.toBase64=="function"?e.toBase64():rle(e)},SC=n=>atob(n),aV=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:nle(n)});function sle(n,e,t,i){switch(e){case 5120:{let r=n.getInt8(t);return i&&(r=Math.max(r/127,-1)),r}case 5121:{let r=n.getUint8(t);return i&&(r=r/255),r}case 5122:{let r=n.getInt16(t,!0);return i&&(r=Math.max(r/32767,-1)),r}case 5123:{let r=n.getUint16(t,!0);return i&&(r=r/65535),r}case 5124:return n.getInt32(t,!0);case 5125:return n.getUint32(t,!0);case 5126:return n.getFloat32(t,!0);default:throw new Error(`Invalid component type ${e}`)}}function ale(n,e,t,i,r){switch(e){case 5120:{i&&(r=Math.round(r*127)),n.setInt8(t,r);break}case 5121:{i&&(r=Math.round(r*255)),n.setUint8(t,r);break}case 5122:{i&&(r=Math.round(r*32767)),n.setInt16(t,r,!0);break}case 5123:{i&&(r=Math.round(r*65535)),n.setUint16(t,r,!0);break}case 5124:{n.setInt32(t,r,!0);break}case 5125:{n.setUint32(t,r,!0);break}case 5126:{n.setFloat32(t,r,!0);break}default:throw new Error(`Invalid component type ${e}`)}}function fl(n){switch(n){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5124:case 5125:case 5126:return 4;default:throw new Error(`Invalid type '${n}'`)}}function TC(n){switch(n){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error(`Invalid component type '${n}'`)}}function sh(n,e,t,i,r,s,a,o){let l=new Array(i),c=new Array(i);if(n instanceof Array){let f=e/4,d=t/4;for(let h=0;h{for(let u=0;un.length)throw new Error("Last accessed index is out of bounds.");if(_{for(let S=0;Sf.byteLength)throw new Error("Last accessed byte is out of bounds.");let u=e*o;if(r{for(let g=0;g{for(let h=0;h{Pt()});function Ef(n){return aV(n.split(",")[1])}var fV,Am,KA,xC,ole,ki,jA,cV,xm,ah,dl,qA,dV,hV,vf,uV,mV,lle,gg,cle,Jl=I(()=>{nh();ba();hi();rV();nV();pg();_g();RA();Ni();Pt();sl();mf();Vr();Tm();fV=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),Am=class n extends Fs{constructor(e,t){super(e,Ia.LoadFileError),this.name="LoadFileError",$l._setPrototypeOf(this,n.prototype),t instanceof Cr?this.request=t:this.file=t}},KA=class n extends Fs{constructor(e,t){super(e,Ia.RequestFileError),this.request=t,this.name="RequestFileError",$l._setPrototypeOf(this,n.prototype)}},xC=class n extends Fs{constructor(e,t){super(e,Ia.ReadFileError),this.file=t,this.name="ReadFileError",$l._setPrototypeOf(this,n.prototype)}},ole=n=>(n=n.replace(/#/gm,"%23"),n),ki={DefaultRetryStrategy:XA.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:ole},jA=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&ki.CorsBehavior)if(typeof ki.CorsBehavior=="string"||ki.CorsBehavior instanceof String)e.crossOrigin=ki.CorsBehavior;else{let t=ki.CorsBehavior(n);t&&(e.crossOrigin=t)}},cV={getRequiredSize:null},xm=(n,e,t,i,r="",s,a=Oe.LastCreatedEngine)=>{if(typeof HTMLImageElement=="undefined"&&!(a!=null&&a._features.forceBitmapOverHTMLImageElement))return t("LoadImage is only supported in web or BabylonNative environments."),null;let o,l=!1;if(n instanceof ArrayBuffer||ArrayBuffer.isView(n))if(typeof Blob!="undefined"&&typeof URL!="undefined"){let E;n instanceof ArrayBuffer?E=n:E=YA(n),o=URL.createObjectURL(new Blob([E],{type:r})),l=!0}else o=`data:${r};base64,`+Sm(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=ki.CleanUrl(n),o=ki.PreprocessUrl(o));let c=E=>{if(t){let T=o||n.toString();t(`Error while trying to load image: ${T.indexOf("http")===0||T.length<=128?T:T.slice(0,128)+"..."}`,E)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return dl(o,E=>{a.createImageBitmap(new Blob([E],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(T=>{e(T),l&&URL.revokeObjectURL(o)}).catch(T=>{t&&t("Error while trying to load image: "+n,T)})},void 0,i||void 0,!0,(E,T)=>{c(T)}),null;let f=new Image;if(cV.getRequiredSize){let E=cV.getRequiredSize(n);E.width&&(f.width=E.width),E.height&&(f.height=E.height)}jA(o,f);let d=[],h=()=>{for(let E of d)E.target.addEventListener(E.name,E.handler)},u=()=>{for(let E of d)E.target.removeEventListener(E.name,E.handler);d.length=0},m=()=>{u(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},_=E=>{u(),c(E),l&&f.src&&URL.revokeObjectURL(f.src)},p=E=>{if(E.blockedURI!==f.src||E.disposition==="report")return;u();let T=new Error(`CSP violation of policy ${E.effectiveDirective} ${E.blockedURI}. Current policy is ${E.originalPolicy}`);Oe.UseFallbackTexture=!1,c(T),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:_}),d.push({target:document,name:"securitypolicyviolation",handler:p}),h();let g=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",x=()=>{g||v||!Cr.IsCustomRequestAvailable?f.src=o:dl(o,(E,T,R)=>{let M=!r&&R?R:r,y=new Blob([E],{type:M}),C=URL.createObjectURL(y);l=!0,f.src=C},void 0,i||void 0,!0,(E,T)=>{c(T)})},S=()=>{i&&i.loadImage(o,f)};if(!g&&!v&&i&&i.enableTexturesOffline)i.open(S,x);else{if(o.indexOf("file:")!==-1){let E=decodeURIComponent(o.substring(5).toLowerCase());if(gf.FilesToLoad[E]&&typeof URL!="undefined"){try{let T;try{T=URL.createObjectURL(gf.FilesToLoad[E])}catch(R){T=URL.createObjectURL(gf.FilesToLoad[E])}f.src=T,l=!0}catch(T){f.src=""}return f}}x()}return f},ah=(n,e,t,i,r)=>{let s=new FileReader,a={onCompleteObservable:new ie,abort:()=>s.abort()};return s.onloadend=()=>a.onCompleteObservable.notifyObservers(a),r&&(s.onerror=()=>{r(new xC(`Unable to read ${n.name}`,n))}),s.onload=o=>{e(o.target.result)},t&&(s.onprogress=t),i?s.readAsArrayBuffer(n):s.readAsText(n),a},dl=(n,e,t,i,r,s,a)=>{if(n.name)return ah(n,e,t,r,s?f=>{s(void 0,f)}:void 0);let o=n;if(o.indexOf("file:")!==-1){let f=decodeURIComponent(o.substring(5).toLowerCase());f.indexOf("./")===0&&(f=f.substring(2));let d=gf.FilesToLoad[f];if(d)return ah(d,e,t,r,s?h=>s(void 0,new Am(h.message,h.file)):void 0)}let{match:l,type:c}=uV(o);if(l){let f={onCompleteObservable:new ie,abort:()=>()=>{}};try{let d=r?Ef(o):mV(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return ho.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return qA(o,(f,d)=>{e(f,d==null?void 0:d.responseURL,d==null?void 0:d.getResponseHeader("content-type"))},t,i,r,s?f=>{s(f.request,new Am(f.message,f.request))}:void 0,a)},qA=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=ki.CleanUrl(n),n=ki.PreprocessUrl(n);let o=ki.BaseUrl+n,l=!1,c={onCompleteObservable:new ie,abort:()=>l=!0},f=()=>{let h=new Cr,u=null,m,_=()=>{h&&(t&&h.removeEventListener("progress",t),m&&h.removeEventListener("readystatechange",m),h.removeEventListener("loadend",p))},p=()=>{_(),c.onCompleteObservable.notifyObservers(c),c.onCompleteObservable.clear(),t=void 0,m=null,p=null,s=void 0,a=void 0,e=void 0};c.abort=()=>{l=!0,p&&p(),h&&h.readyState!==(XMLHttpRequest.DONE||4)&&h.abort(),u!==null&&(clearTimeout(u),u=null),h=null};let g=x=>{let S=x.message||"Unknown error";s&&h?s(new KA(S,h)):ee.Error(S)},v=x=>{if(h){if(h.open("GET",o),a)try{a(h)}catch(S){g(S);return}r&&(h.responseType="arraybuffer"),t&&h.addEventListener("progress",t),p&&h.addEventListener("loadend",p),m=()=>{if(!(l||!h)&&h.readyState===(XMLHttpRequest.DONE||4)){if(m&&h.removeEventListener("readystatechange",m),h.status>=200&&h.status<300||h.status===0&&(!ur()||hV())){let T=r?h.response:h.responseText;if(T!==null){try{e&&e(T,h)}catch(R){g(R)}return}}let S=ki.DefaultRetryStrategy;if(S){let T=S(o,h,x);if(T!==-1){_(),h=new Cr,u=setTimeout(()=>v(x+1),T);return}}let E=new KA("Error status: "+h.status+" "+h.statusText+" - Unable to load "+o,h);s&&s(E)}},h.addEventListener("readystatechange",m),h.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let h=m=>{m&&m.status>400?s&&s(m):f()},u=()=>{i&&i.loadFile(ki.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,h,r)};i.open(u,h)}else f();return c},dV=n=>{let{match:e,type:t}=uV(n);if(e)return t||void 0;let i=n.lastIndexOf(".");switch(n.substring(i+1).toLowerCase()){case"glb":return"model/gltf-binary";case"bin":return"application/octet-stream";case"gltf":return"model/gltf+json";case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp";case"ktx":return"image/ktx";case"ktx2":return"image/ktx2";case"avif":return"image/avif";default:return}},hV=()=>typeof location!="undefined"&&location.protocol==="file:",vf=n=>fV.test(n),uV=n=>{let e=fV.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};mV=n=>SC(n.split(",")[1]),lle=()=>{Ie._FileToolsLoadImage=xm,tm.loadFile=dl,rC.loadFile=dl};lle();cle=(n,e,t,i,r,s,a,o,l,c)=>{gg={DecodeBase64UrlToBinary:n,DecodeBase64UrlToString:e,DefaultRetryStrategy:t.DefaultRetryStrategy,BaseUrl:t.BaseUrl,CorsBehavior:t.CorsBehavior,PreprocessUrl:t.PreprocessUrl,IsBase64DataUrl:i,IsFileURL:r,LoadFile:s,LoadImage:a,ReadFile:o,RequestFile:l,SetCorsBehavior:c},Object.defineProperty(gg,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(gg,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(gg,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(gg,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};cle(Ef,mV,ki,vf,hV,dl,xm,ah,qA,jA)});var ZA,pV=I(()=>{GA();ZA=class n{get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get coordinatesMode(){return 0}get isCube(){return this._texture?this._texture.isCube:!1}set isCube(e){this._texture&&(this._texture.isCube=e)}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}getClassName(){return"ThinTexture"}static _IsRenderTargetWrapper(e){return(e==null?void 0:e.shareDepth)!==void 0}constructor(e){var t,i,r;this._wrapU=1,this._wrapV=1,this.wrapR=1,this.anisotropicFilteringLevel=4,this.delayLoadState=0,this._texture=null,this._engine=null,this._cachedSize=ql.Zero(),this._cachedBaseSize=ql.Zero(),this._initialSamplingMode=2,this._texture=n._IsRenderTargetWrapper(e)?e.texture:e,this._texture&&(this._engine=this._texture.getEngine(),this.wrapU=(t=this._texture._cachedWrapU)!=null?t:this.wrapU,this.wrapV=(i=this._texture._cachedWrapV)!=null?i:this.wrapV,this.wrapR=(r=this._texture._cachedWrapR)!=null?r:this.wrapR)}isReady(){return this.delayLoadState===4?(this.delayLoad(),!1):this._texture?this._texture.isReady:!1}delayLoad(){}getInternalTexture(){return this._texture}getSize(){if(this._texture){if(this._texture.width)return this._cachedSize.width=this._texture.width,this._cachedSize.height=this._texture.height,this._cachedSize;if(this._texture._size)return this._cachedSize.width=this._texture._size,this._cachedSize.height=this._texture._size,this._cachedSize}return this._cachedSize}getBaseSize(){return!this.isReady()||!this._texture?(this._cachedBaseSize.width=0,this._cachedBaseSize.height=0,this._cachedBaseSize):this._texture._size?(this._cachedBaseSize.width=this._texture._size,this._cachedBaseSize.height=this._texture._size,this._cachedBaseSize):(this._cachedBaseSize.width=this._texture.baseWidth,this._cachedBaseSize.height=this._texture.baseHeight,this._cachedBaseSize)}get samplingMode(){return this._texture?this._texture.samplingMode:this._initialSamplingMode}updateSamplingMode(e,t=!1){this._texture&&this._engine&&this._engine.updateTextureSamplingMode(e,this._texture,this._texture.generateMipMaps&&t)}releaseInternalTexture(){this._texture&&(this._texture.dispose(),this._texture=null)}dispose(){this._texture&&(this.releaseInternalTexture(),this._engine=null)}}});var QA,_V=I(()=>{QA=class n{static Eval(e,t){return e.match(/\([^()]*\)/g)?e=e.replace(/\([^()]*\)/g,i=>(i=i.slice(1,i.length-1),n._HandleParenthesisContent(i,t))):e=n._HandleParenthesisContent(e,t),e==="true"?!0:e==="false"?!1:n.Eval(e,t)}static _HandleParenthesisContent(e,t){t=t||(s=>s==="true");let i,r=e.split("||");for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=n._SimplifyNegation(r[s].trim()),o=a.split("&&");if(o.length>1)for(let l=0;l(t=t.replace(/[\s]/g,()=>""),t.length%2?"!":"")),e=e.trim(),e==="!true"?e="false":e==="!false"&&(e="true"),e}}});var $t,Sf=I(()=>{_V();$t=class n{static EnableFor(e){e._tags=e._tags||{},e.hasTags=()=>n.HasTags(e),e.addTags=t=>n.AddTagsTo(e,t),e.removeTags=t=>n.RemoveTagsFrom(e,t),e.matchesTagsQuery=t=>n.MatchesQuery(e,t)}static DisableFor(e){delete e._tags,delete e.hasTags,delete e.addTags,delete e.removeTags,delete e.matchesTagsQuery}static HasTags(e){if(!e._tags)return!1;let t=e._tags;for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))return!0;return!1}static GetTags(e,t=!0){if(!e._tags)return null;if(t){let i=[];for(let r in e._tags)Object.prototype.hasOwnProperty.call(e._tags,r)&&e._tags[r]===!0&&i.push(r);return i.join(" ")}else return e._tags}static AddTagsTo(e,t){if(!t||typeof t!="string")return;let i=t.split(" ");for(let r of i)n._AddTagTo(e,r)}static _AddTagTo(e,t){t=t.trim(),!(t===""||t==="true"||t==="false")&&(t.match(/[\s]/)||t.match(/^([!]|([|]|[&]){2})/)||(n.EnableFor(e),e._tags[t]=!0))}static RemoveTagsFrom(e,t){if(!n.HasTags(e))return;let i=t.split(" ");for(let r in i)n._RemoveTagFrom(e,i[r])}static _RemoveTagFrom(e,t){delete e._tags[t]}static MatchesQuery(e,t){return t===void 0?!0:t===""?n.HasTags(e):QA.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var gV,it,br=I(()=>{un();Sf();Ht();ke();EC();gV=function(n,e,t,i={}){let r=n();$t&&$t.HasTags(e)&&$t.AddTagsTo(r,$t.GetTags(e,!0));let s=HA(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||it.AllowLoadingUniqueId))switch(f){case 0:case 6:case 9:case 11:typeof c.slice=="function"?r[o]=c.slice():r[o]=c;break;case 1:i.cloneTexturesOnlyOnce&&a[c.uniqueId]?r[o]=a[c.uniqueId]:(r[o]=t||c.isRenderTarget?c:c.clone(),a[c.uniqueId]=r[o]);break;case 2:case 3:case 4:case 5:case 7:case 8:case 10:case 12:r[o]=t?c:c.clone();break}}return r},it=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw Qe("ImageProcessingConfiguration")};it._FresnelParametersParser=n=>{throw Qe("FresnelParameters")};it._ColorCurvesParser=n=>{throw Qe("ColorCurves")};it._TextureParser=(n,e,t)=>{throw Qe("Texture")}});var pi,vg=I(()=>{Gt();Vt();hi();ke();Ni();mg();Jl();pV();br();pi=class n extends ZA{set hasAlpha(e){this._hasAlpha!==e&&(this._hasAlpha=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get hasAlpha(){return this._hasAlpha}set getAlphaFromRGB(e){this._getAlphaFromRGB!==e&&(this._getAlphaFromRGB=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get getAlphaFromRGB(){return this._getAlphaFromRGB}set coordinatesIndex(e){this._coordinatesIndex!==e&&(this._coordinatesIndex=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesIndex(){return this._coordinatesIndex}set coordinatesMode(e){this._coordinatesMode!==e&&(this._coordinatesMode=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesMode(){return this._coordinatesMode}get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get isCube(){return this._texture?this._texture.isCube:this._isCube}set isCube(e){this._texture?this._texture.isCube=e:this._isCube=e}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}get gammaSpace(){if(this._texture)this._texture._gammaSpace===null&&(this._texture._gammaSpace=this._gammaSpace);else return this._gammaSpace;return this._texture._gammaSpace&&!this._texture._useSRGBBuffer}set gammaSpace(e){var t;if(this._texture){if(this._texture._gammaSpace===e)return;this._texture._gammaSpace=e}else{if(this._gammaSpace===e)return;this._gammaSpace=e}(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this))}get isRGBD(){return this._texture!=null&&this._texture._isRGBD}set isRGBD(e){var t;e!==this.isRGBD&&(this._texture&&(this._texture._isRGBD=e),(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)))}get noMipmap(){return!1}get lodGenerationOffset(){return this._texture?this._texture._lodGenerationOffset:0}set lodGenerationOffset(e){this._texture&&(this._texture._lodGenerationOffset=e)}get lodGenerationScale(){return this._texture?this._texture._lodGenerationScale:0}set lodGenerationScale(e){this._texture&&(this._texture._lodGenerationScale=e)}get linearSpecularLOD(){return this._texture?this._texture._linearSpecularLOD:!1}set linearSpecularLOD(e){this._texture&&(this._texture._linearSpecularLOD=e)}get irradianceTexture(){return this._texture?this._texture._irradianceTexture:null}set irradianceTexture(e){this._texture&&(this._texture._irradianceTexture=e)}get uid(){return this._uid||(this._uid=_f()),this._uid}toString(){return this.name}getClassName(){return"BaseTexture"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get isBlocking(){return!0}get loadingError(){return this._loadingError}get errorObject(){return this._errorObject}constructor(e,t=null){super(null),this.metadata=null,this.reservedDataStore=null,this._hasAlpha=!1,this._getAlphaFromRGB=!1,this.level=1,this._coordinatesIndex=0,this.optimizeUVAllocation=!0,this._coordinatesMode=0,this.wrapR=1,this.anisotropicFilteringLevel=n.DEFAULT_ANISOTROPIC_FILTERING_LEVEL,this._isCube=!1,this._gammaSpace=!0,this.invertZ=!1,this.lodLevelInAlpha=!1,this._dominantDirection=null,this.isRenderTarget=!1,this._prefiltered=!1,this._forceSerialize=!1,this.animations=[],this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._scene=null,this._uid=null,this._parentContainer=null,this._loadingError=!1,e?n._IsScene(e)?this._scene=e:this._engine=e:this._scene=Oe.LastCreatedScene,this._scene&&(this.uniqueId=this._scene.getUniqueId(),this._scene.addTexture(this),this._engine=this._scene.getEngine()),this._texture=t,this._uid=null}getScene(){return this._scene}_getEngine(){return this._engine}getTextureMatrix(){return q.IdentityReadOnly}getReflectionTextureMatrix(){return q.IdentityReadOnly}getRefractionTextureMatrix(){return this.getReflectionTextureMatrix()}isReadyOrNotBlocking(){return!this.isBlocking||this.isReady()||this.loadingError}scale(e){}get canRescale(){return!1}_getFromCache(e,t,i,r,s,a){let o=this._getEngine();if(!o)return null;let l=o._getUseSRGBBuffer(!!s,t),c=o.getLoadedTexturesCache();for(let f=0;f=0&&this._scene.textures.splice(e,1),this._scene.onTextureRemovedObservable.notifyObservers(this),this._scene=null,this._parentContainer){let t=this._parentContainer.textures.indexOf(this);t>-1&&this._parentContainer.textures.splice(t,1),this._parentContainer=null}}this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.metadata=null,super.dispose()}serialize(e=!1){if(!this.name&&!e)return null;let t=it.Serialize(this);return it.AppendSerializedAnimations(this,t),t}static WhenAllReady(e,t){let i=e.length;if(i===0){t();return}for(let r=0;r{--i===0&&t()}):--i===0&&t()}}}static _IsScene(e){return e.getClassName()==="Scene"}};pi.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],pi.prototype,"uniqueId",void 0);P([F()],pi.prototype,"name",void 0);P([F()],pi.prototype,"displayName",void 0);P([F()],pi.prototype,"metadata",void 0);P([F("hasAlpha")],pi.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],pi.prototype,"_getAlphaFromRGB",void 0);P([F()],pi.prototype,"level",void 0);P([F("coordinatesIndex")],pi.prototype,"_coordinatesIndex",void 0);P([F()],pi.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],pi.prototype,"_coordinatesMode",void 0);P([F()],pi.prototype,"wrapU",null);P([F()],pi.prototype,"wrapV",null);P([F()],pi.prototype,"wrapR",void 0);P([F()],pi.prototype,"anisotropicFilteringLevel",void 0);P([F()],pi.prototype,"isCube",null);P([F()],pi.prototype,"is3D",null);P([F()],pi.prototype,"is2DArray",null);P([F()],pi.prototype,"gammaSpace",null);P([F()],pi.prototype,"invertZ",void 0);P([F()],pi.prototype,"lodLevelInAlpha",void 0);P([F()],pi.prototype,"lodGenerationOffset",null);P([F()],pi.prototype,"lodGenerationScale",null);P([F()],pi.prototype,"linearSpecularLOD",null);P([Ut()],pi.prototype,"irradianceTexture",null);P([F()],pi.prototype,"isRenderTarget",void 0)});var Tf,ec,RC=I(()=>{ke();Vn();ug();Un();Ht();Tf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},ec=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((x=e._texture)==null?void 0:x.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,h,u,m]).then(([E,T,R,M,y,C])=>{let L=l;g&&(E=this._DownsampleFace(E,t,r,4),T=this._DownsampleFace(T,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),y=this._DownsampleFace(y,t,r,4),C=this._DownsampleFace(C,t,r,4),L=r);let w={size:L,right:T,left:E,up:R,down:M,front:y,back:C,format:p,type:E instanceof Float32Array?1:0,gammaSpace:_};S(this.ConvertCubeMapToSphericalPolynomial(w))})})}static _AreaElement(e,t){return Math.atan2(e*t,Math.sqrt(e*e+t*t+1))}static _DownsampleFace(e,t,i,r){let s=e instanceof Float32Array?e:Float32Array.from(e),a=i*i*r,o=new Float32Array(a),l=t/i,c=1/(l*l);for(let h=0;h0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,_=["right","left","up","down","front","back"],p={};for(let g of _)p[g]=this._DownsampleFace(e[g],e.size,i,m);e={...e,...p,size:i}}let r=new hg,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let _=this._FileFaces[m],p=e[_.name],g=c,v=e.format===5?4:3;for(let x=0;xL){let O=L/G;M*=O,y*=O,C*=O}}else M=wt(M,0,L),y=wt(y,0,L),C=wt(C,0,L);let w=new pe(M,y,C);r.addLight(T,w,R),s+=R,S+=a}g+=o}}let u=4*Math.PI*6/6/s;return r.scaleInPlace(u),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),cl.FromHarmonics(r)}};ec._FileFaces=[new Tf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Tf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Tf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Tf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Tf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Tf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];ec.MAX_HDRI_VALUE=4096;ec.PRESERVE_CLAMPED_COLORS=!1});var tc,bC=I(()=>{Pt();Yi();tc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=xn(e);if(t)return t;ee.Warn(e+" not found, you may have missed an import.");let i=e.split("."),r=window||this;for(let s=0,a=i.length;s=0;){let d=n[c];d<0?d=0:d>1&&(d=1),f[c]=d*255}n=f}let s=document.createElement("canvas");s.width=i,s.height=r;let a=s.getContext("2d");if(!a)return null;let o=a.createImageData(i,r);if(o.data.set(n),a.putImageData(o,0,0),t){let c=document.createElement("canvas");c.width=i,c.height=r;let f=c.getContext("2d");return f?(f.translate(0,r),f.scale(1,-1),f.drawImage(s,0,0),c.toDataURL("image/png")):null}return s.toDataURL("image/png")}function EV(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?vV(r,n.getSize(),i.invertY):null}async function SV(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?vV(r,n.getSize(),i.invertY):null}var TV=I(()=>{});var It,nn=I(()=>{It=!1});var ge,Gr=I(()=>{Gt();Vt();hi();ke();vg();Yi();un();sl();bC();um();_g();TV();nn();br();ge=class n extends pi{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw Qe("VideoTexture")}get noMipmap(){return this._noMipmap}get mimeType(){return this._mimeType}set isBlocking(e){this._isBlocking=e}get isBlocking(){return this._isBlocking}get invertY(){return this._invertY}constructor(e,t,i,r,s=n.TRILINEAR_SAMPLINGMODE,a=null,o=null,l=null,c=!1,f,d,h,u,m){var R,M,y,C,L,w,G,O,N,B,V;super(t),this.url=null,this.uOffset=0,this.vOffset=0,this.uScale=1,this.vScale=1,this.uAng=0,this.vAng=0,this.wAng=0,this.uRotationCenter=.5,this.vRotationCenter=.5,this.wRotationCenter=.5,this.homogeneousRotationInUVTransform=!1,this.inspectableCustomProperties=null,this._noMipmap=!1,this._invertY=!1,this._rowGenerationMatrix=null,this._cachedTextureMatrix=null,this._projectionModeMatrix=null,this._t0=null,this._t1=null,this._t2=null,this._cachedUOffset=-1,this._cachedVOffset=-1,this._cachedUScale=0,this._cachedVScale=0,this._cachedUAng=-1,this._cachedVAng=-1,this._cachedWAng=-1,this._cachedReflectionProjectionMatrixId=-1,this._cachedURotationCenter=-1,this._cachedVRotationCenter=-1,this._cachedWRotationCenter=-1,this._cachedHomogeneousRotationInUVTransform=!1,this._cachedIdentity3x2=!0,this._cachedReflectionTextureMatrix=null,this._cachedReflectionUOffset=-1,this._cachedReflectionVOffset=-1,this._cachedReflectionUScale=0,this._cachedReflectionVScale=0,this._cachedReflectionCoordinatesMode=-1,this._buffer=null,this._deleteBuffer=!1,this._format=null,this._delayedOnLoad=null,this._delayedOnError=null,this.onLoadObservable=new ie,this._isBlocking=!0,this.name=e||"",this.url=e;let _,p=!1,g=null,v=!0;typeof i=="object"&&i!==null?(_=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!It,s=(y=i.samplingMode)!=null?y:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(L=i.onError)!=null?L:null,l=(w=i.buffer)!=null?w:null,c=(G=i.deleteBuffer)!=null?G:!1,f=i.format,d=i.mimeType,h=i.loaderOptions,u=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,g=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):_=!!i,this._gammaSpace=v,this._noMipmap=_,this._invertY=r===void 0?!It:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=h,this._creationFlags=u,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let x=this.getScene(),S=this._getEngine();if(!S)return;S.onBeforeTextureInitObservable.notifyObservers(this);let E=()=>{this._texture&&(this._texture._invertVScale&&(this.vScale*=-1,this.vOffset+=1),this._texture._cachedWrapU!==null&&(this.wrapU=this._texture._cachedWrapU,this._texture._cachedWrapU=null),this._texture._cachedWrapV!==null&&(this.wrapV=this._texture._cachedWrapV,this._texture._cachedWrapV=null),this._texture._cachedWrapR!==null&&(this.wrapR=this._texture._cachedWrapR,this._texture._cachedWrapR=null)),this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),a&&a(),!this.isBlocking&&x&&x.resetCachedMaterial()},T=(J,Q)=>{this._loadingError=!0,this._errorObject={message:J,exception:Q},o&&o(J,Q),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!g){this._delayedOnLoad=E,this._delayedOnError=T;return}if(this._texture=g!=null?g:this._getFromCache(this.url,_,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)ho.SetImmediate(()=>E());else{let J=this._texture.onLoadedObservable.add(E);this._texture.onErrorObservable.add(Q=>{var te;T(Q.message,Q.exception),(te=this._texture)==null||te.onLoadedObservable.remove(J)})}else if(!x||!x.useDelayedTextureLoading){try{this._texture=S.createTexture(this.url,_,this._invertY,x,s,E,T,this._buffer,void 0,this._format,this._forcedExtension,d,h,u,p)}catch(J){throw T("error loading",J),J}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=E,this._delayedOnError=T}updateURL(e,t=null,i,r){this.url&&(this.releaseInternalTexture(),this.getScene().markAllMaterialsAsDirty(1,o=>o.hasTexture(this))),(!this.name||this.name.startsWith("data:"))&&(this.name=e),this.url=e,this._buffer=t,this._forcedExtension=r,this.delayLoadState=4;let s=this._delayedOnLoad,a=()=>{s?s():this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),i&&i()};this._delayedOnLoad=a,this.delayLoad()}delayLoad(){if(this.delayLoadState!==4)return;let e=this.getScene();if(!e)return;let t=this.url;!t&&(this.name.indexOf("://")>0||this.name.startsWith("data:"))&&(t=this.name),this.delayLoadState=1,this._texture=this._getFromCache(t,this._noMipmap,this.samplingMode,this._invertY,this._useSRGBBuffer,this.isCube),this._texture?this._delayedOnLoad&&(this._texture.isReady?ho.SetImmediate(this._delayedOnLoad):this._texture.onLoadedObservable.add(this._delayedOnLoad)):(this._texture=e.getEngine().createTexture(t,this._noMipmap,this._invertY,e,this.samplingMode,this._delayedOnLoad,this._delayedOnError,this._buffer,null,this._format,this._forcedExtension,this._mimeType,this._loaderOptions,this._creationFlags,this._useSRGBBuffer),this._deleteBuffer&&(this._buffer=null)),this._delayedOnLoad=null,this._delayedOnError=null}_prepareRowForTextureGeneration(e,t,i,r){e*=this._cachedUScale,t*=this._cachedVScale,e-=this.uRotationCenter*this._cachedUScale,t-=this.vRotationCenter*this._cachedVScale,i-=this.wRotationCenter,b.TransformCoordinatesFromFloatsToRef(e,t,i,this._rowGenerationMatrix,r),r.x+=this.uRotationCenter*this._cachedUScale+this._cachedUOffset,r.y+=this.vRotationCenter*this._cachedVScale+this._cachedVOffset,r.z+=this.wRotationCenter}getTextureMatrix(e=1){if(this.uOffset===this._cachedUOffset&&this.vOffset===this._cachedVOffset&&this.uScale*e===this._cachedUScale&&this.vScale===this._cachedVScale&&this.uAng===this._cachedUAng&&this.vAng===this._cachedVAng&&this.wAng===this._cachedWAng&&this.uRotationCenter===this._cachedURotationCenter&&this.vRotationCenter===this._cachedVRotationCenter&&this.wRotationCenter===this._cachedWRotationCenter&&this.homogeneousRotationInUVTransform===this._cachedHomogeneousRotationInUVTransform)return this._cachedTextureMatrix;this._cachedUOffset=this.uOffset,this._cachedVOffset=this.vOffset,this._cachedUScale=this.uScale*e,this._cachedVScale=this.vScale,this._cachedUAng=this.uAng,this._cachedVAng=this.vAng,this._cachedWAng=this.wAng,this._cachedURotationCenter=this.uRotationCenter,this._cachedVRotationCenter=this.vRotationCenter,this._cachedWRotationCenter=this.wRotationCenter,this._cachedHomogeneousRotationInUVTransform=this.homogeneousRotationInUVTransform,(!this._cachedTextureMatrix||!this._rowGenerationMatrix)&&(this._cachedTextureMatrix=q.Zero(),this._rowGenerationMatrix=new q,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),q.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(q.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),q.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),q.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),q.TranslationToRef(this._cachedUOffset,this._cachedVOffset,0,$.Matrix[3]),$.Matrix[0].multiplyToRef(this._rowGenerationMatrix,this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[1],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[2],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[3],this._cachedTextureMatrix),this._cachedTextureMatrix.setRowFromFloats(2,this._cachedTextureMatrix.m[12],this._cachedTextureMatrix.m[13],this._cachedTextureMatrix.m[14],1)):(this._prepareRowForTextureGeneration(0,0,0,this._t0),this._prepareRowForTextureGeneration(1,0,0,this._t1),this._prepareRowForTextureGeneration(0,1,0,this._t2),this._t1.subtractInPlace(this._t0),this._t2.subtractInPlace(this._t0),q.FromValuesToRef(this._t1.x,this._t1.y,this._t1.z,0,this._t2.x,this._t2.y,this._t2.z,0,this._t0.x,this._t0.y,this._t0.z,0,0,0,0,1,this._cachedTextureMatrix));let t=this.getScene();if(!t)return this._cachedTextureMatrix;let i=this._cachedIdentity3x2;return this._cachedIdentity3x2=this._cachedTextureMatrix.isIdentityAs3x2(),this.optimizeUVAllocation&&i!==this._cachedIdentity3x2&&t.markAllMaterialsAsDirty(1,r=>r.hasTexture(this)),this._cachedTextureMatrix}getReflectionTextureMatrix(){let e=this.getScene();if(!e)return this._cachedReflectionTextureMatrix;if(this.uOffset===this._cachedReflectionUOffset&&this.vOffset===this._cachedReflectionVOffset&&this.uScale===this._cachedReflectionUScale&&this.vScale===this._cachedReflectionVScale&&this.coordinatesMode===this._cachedReflectionCoordinatesMode)if(this.coordinatesMode===n.PROJECTION_MODE){if(this._cachedReflectionProjectionMatrixId===e.getProjectionMatrix().updateFlag)return this._cachedReflectionTextureMatrix}else return this._cachedReflectionTextureMatrix;this._cachedReflectionTextureMatrix||(this._cachedReflectionTextureMatrix=q.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=q.Zero());let t=this._cachedReflectionCoordinatesMode!==this.coordinatesMode;switch(this._cachedReflectionUOffset=this.uOffset,this._cachedReflectionVOffset=this.vOffset,this._cachedReflectionUScale=this.uScale,this._cachedReflectionVScale=this.vScale,this._cachedReflectionCoordinatesMode=this.coordinatesMode,this.coordinatesMode){case n.PLANAR_MODE:{q.IdentityToRef(this._cachedReflectionTextureMatrix),this._cachedReflectionTextureMatrix[0]=this.uScale,this._cachedReflectionTextureMatrix[5]=this.vScale,this._cachedReflectionTextureMatrix[12]=this.uOffset,this._cachedReflectionTextureMatrix[13]=this.vOffset;break}case n.PROJECTION_MODE:{q.FromValuesToRef(.5,0,0,0,0,-.5,0,0,0,0,0,0,.5,.5,1,1,this._projectionModeMatrix);let i=e.getProjectionMatrix();this._cachedReflectionProjectionMatrixId=i.updateFlag,i.multiplyToRef(this._projectionModeMatrix,this._cachedReflectionTextureMatrix);break}default:q.IdentityToRef(this._cachedReflectionTextureMatrix);break}return t&&e.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)),this._cachedReflectionTextureMatrix}clone(){let e={noMipmap:this._noMipmap,invertY:this._invertY,samplingMode:this.samplingMode,onLoad:void 0,onError:void 0,buffer:this._texture?this._texture._buffer:void 0,deleteBuffer:this._deleteBuffer,format:this.textureFormat,mimeType:this.mimeType,loaderOptions:this._loaderOptions,creationFlags:this._creationFlags,useSRGBBuffer:this._useSRGBBuffer};return it.Clone(()=>new n(this._texture?this._texture.url:null,this.getScene(),e),this)}serialize(){var i,r;let e=this.name;n.SerializeBuffers||this.name.startsWith("data:")&&(this.name=""),this.name.startsWith("data:")&&this.url===this.name&&(this.url="");let t=super.serialize(n._SerializeInternalTextureUniqueId);if(!t)return null;if(n.SerializeBuffers||n.ForceSerializeBuffers)if(typeof this._buffer=="string"&&this._buffer.startsWith("data:"))t.base64String=this._buffer,t.name=t.name.replace("data:","");else if(this.url&&this.url.startsWith("data:")&&this._buffer instanceof Uint8Array){let s=this.mimeType||"image/png";t.base64String=`data:${s};base64,${Sm(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?EV(this):SV(this));return t.invertY=this._invertY,t.samplingMode=this.samplingMode,t._creationFlags=this._creationFlags,t._useSRGBBuffer=this._useSRGBBuffer,n._SerializeInternalTextureUniqueId&&(t.internalTextureUniqueId=(i=this._texture)==null?void 0:i.uniqueId),t.internalTextureLabel=(r=this._texture)==null?void 0:r.label,t.noMipmap=this._noMipmap,this.name=e,t}getClassName(){return"Texture"}dispose(){super.dispose(),this.onLoadObservable.clear(),this._delayedOnLoad=null,this._delayedOnError=null,this._buffer=null}static Parse(e,t,i){if(e.customType){let c=tc.Instantiate(e.customType).Parse(e,t,i);return e.samplingMode&&c.updateSamplingMode&&c._samplingMode&&c._samplingMode!==e.samplingMode&&c.updateSamplingMode(e.samplingMode),c}if(e.isCube&&!e.isRenderTarget)return n._CubeTextureParser(e,t,i);let r=e.internalTextureUniqueId!==void 0;if(!e.name&&!e.isRenderTarget&&!r)return null;let s;if(r){let l=t.getEngine().getLoadedTexturesCache();for(let c of l)if(c.uniqueId===e.internalTextureUniqueId){s=c;break}}let a=l=>{if(l&&l._texture&&(l._texture._cachedWrapU=null,l._texture._cachedWrapV=null,l._texture._cachedWrapR=null),e.samplingMode){let c=e.samplingMode;l&&l.samplingMode!==c&&l.updateSamplingMode(c)}if(l&&e.animations)for(let c=0;c{var c,f,d,h,u;let l=!0;if(e.noMipmap&&(l=!1),e.mirrorPlane){let m=n._CreateMirror(e.name,e.renderTargetSize,t,l);return m._waitingRenderList=e.renderList,m.mirrorPlane=_o.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let _=0;_{a(m)}},p=e.base64String,g=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",g,t,_),m.name=e.name}else{let _;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?_=e.name:_=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(_=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(h=e._useSRGBBuffer)!=null?h:!1,creationFlags:(u=e._creationFlags)!=null?u:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(_,t,p)}return m}},e,t)}static CreateFromBase64String(e,t,i,r,s,a=n.TRILINEAR_SAMPLINGMODE,o=null,l=null,c=5,f,d){return new n("data:"+t,i,r,s,a,o,l,e,!1,c,void 0,void 0,f,d)}static LoadFromDataString(e,t,i,r=!1,s,a=!0,o=n.TRILINEAR_SAMPLINGMODE,l=null,c=null,f=5,d,h){return e.substring(0,5)!=="data:"&&(e="data:"+e),new n(e,i,s,a,o,l,c,t,r,f,void 0,void 0,d,h)}};ge.SerializeBuffers=!0;ge.ForceSerializeBuffers=!1;ge.OnTextureLoadErrorObservable=new ie;ge._SerializeInternalTextureUniqueId=!1;ge._CubeTextureParser=(n,e,t)=>{throw Qe("CubeTexture")};ge._CreateMirror=(n,e,t,i)=>{throw Qe("MirrorTexture")};ge._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw Qe("RenderTargetTexture")};ge.NEAREST_SAMPLINGMODE=1;ge.NEAREST_NEAREST_MIPLINEAR=8;ge.BILINEAR_SAMPLINGMODE=2;ge.LINEAR_LINEAR_MIPNEAREST=11;ge.TRILINEAR_SAMPLINGMODE=3;ge.LINEAR_LINEAR_MIPLINEAR=3;ge.NEAREST_NEAREST_MIPNEAREST=4;ge.NEAREST_LINEAR_MIPNEAREST=5;ge.NEAREST_LINEAR_MIPLINEAR=6;ge.NEAREST_LINEAR=7;ge.NEAREST_NEAREST=1;ge.LINEAR_NEAREST_MIPNEAREST=9;ge.LINEAR_NEAREST_MIPLINEAR=10;ge.LINEAR_LINEAR=2;ge.LINEAR_NEAREST=12;ge.EXPLICIT_MODE=0;ge.SPHERICAL_MODE=1;ge.PLANAR_MODE=2;ge.CUBIC_MODE=3;ge.PROJECTION_MODE=4;ge.SKYBOX_MODE=5;ge.INVCUBIC_MODE=6;ge.EQUIRECTANGULAR_MODE=7;ge.FIXED_EQUIRECTANGULAR_MODE=8;ge.FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;ge.CLAMP_ADDRESSMODE=0;ge.WRAP_ADDRESSMODE=1;ge.MIRROR_ADDRESSMODE=2;ge.UseSerializedUrlIfAny=!1;P([F()],ge.prototype,"url",void 0);P([F()],ge.prototype,"uOffset",void 0);P([F()],ge.prototype,"vOffset",void 0);P([F()],ge.prototype,"uScale",void 0);P([F()],ge.prototype,"vScale",void 0);P([F()],ge.prototype,"uAng",void 0);P([F()],ge.prototype,"vAng",void 0);P([F()],ge.prototype,"wAng",void 0);P([F()],ge.prototype,"uRotationCenter",void 0);P([F()],ge.prototype,"vRotationCenter",void 0);P([F()],ge.prototype,"wRotationCenter",void 0);P([F()],ge.prototype,"homogeneousRotationInUVTransform",void 0);P([F()],ge.prototype,"isBlocking",null);Ft("BABYLON.Texture",ge);it._TextureParser=ge.Parse});var vo,D,Wi=I(()=>{lC();Pt();Tm();vo=class{get isDisposed(){return this._isDisposed}constructor(e,t,i,r=0,s=!1,a=!1,o=!1,l,c){this._isAlreadyOwned=!1,this._isDisposed=!1,e&&e.getScene?this._engine=e.getScene().getEngine():this._engine=e,this._updatable=i,this._instanced=a,this._divisor=l||1,this._label=c,t instanceof $d?(this._data=null,this._buffer=t):(this._data=t,this._buffer=null),this.byteStride=o?r:r*Float32Array.BYTES_PER_ELEMENT,s||this.create()}createVertexBuffer(e,t,i,r,s,a=!1,o){let l=a?t:t*Float32Array.BYTES_PER_ELEMENT,c=r?a?r:r*Float32Array.BYTES_PER_ELEMENT:this.byteStride;return new D(this._engine,this,e,this._updatable,!0,c,s===void 0?this._instanced:s,l,i,void 0,void 0,!0,this._divisor||o)}isUpdatable(){return this._updatable}getData(){return this._data}getBuffer(){return this._buffer}getStrideSize(){return this.byteStride/Float32Array.BYTES_PER_ELEMENT}create(e=null){!e&&this._buffer||(e=e||this._data,e&&(this._buffer?this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e),this._data=e):this._updatable?(this._buffer=this._engine.createDynamicVertexBuffer(e,this._label),this._data=e):this._buffer=this._engine.createVertexBuffer(e,void 0,this._label)))}_rebuild(){if(this._data)this._buffer=null,this.create(this._data);else{if(!this._buffer)return;if(this._buffer.capacity>0){this._updatable?this._buffer=this._engine.createDynamicVertexBuffer(this._buffer.capacity,this._label):this._buffer=this._engine.createVertexBuffer(this._buffer.capacity,void 0,this._label);return}ee.Warn(`Missing data for buffer "${this._label}" ${this._buffer?"(uniqueId: "+this._buffer.uniqueId+")":""}. Buffer reconstruction failed.`),this._buffer=null}}update(e){this.create(e)}updateDirectly(e,t,i,r=!1){this._buffer&&this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e,r?t:t*Float32Array.BYTES_PER_ELEMENT,i?i*this.byteStride:void 0),t===0&&i===void 0?this._data=e:this._data=null)}_increaseReferences(){if(this._buffer){if(!this._isAlreadyOwned){this._isAlreadyOwned=!0;return}this._buffer.references++}}dispose(){this._buffer&&this._engine._releaseBuffer(this._buffer)&&(this._isDisposed=!0,this._data=null,this._buffer=null)}},D=class n{get isDisposed(){return this._isDisposed}get instanceDivisor(){return this._instanceDivisor}set instanceDivisor(e){let t=e!=0;this._instanceDivisor=e,t!==this._instanced&&(this._instanced=t,this._computeHashCode())}get _maxVerticesCount(){let e=this.getData();return e?Array.isArray(e)?e.length/(this.byteStride/4)-this.byteOffset/4:(e.byteLength-this.byteOffset)/this.byteStride:0}constructor(e,t,i,r,s,a,o,l,c,f,d=!1,h=!1,u=1,m=!1){var g,v,x,S,E;this._isDisposed=!1;let _;if(this.engine=e,typeof r=="object"&&r!==null?(_=(g=r.updatable)!=null?g:!1,s=r.postponeInternalCreation,a=r.stride,o=r.instanced,l=r.offset,c=r.size,f=r.type,d=(v=r.normalized)!=null?v:!1,h=(x=r.useBytes)!=null?x:!1,u=(S=r.divisor)!=null?S:1,m=(E=r.takeBufferOwnership)!=null?E:!1,this._label=r.label):_=!!r,t instanceof vo?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new vo(e,t,_,a,s,o,h,u,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let T=this.getData();this.type=T?n.GetDataType(T):n.FLOAT}else this.type=f;let p=fl(this.type);h?(this._size=c||(a?a/p:n.DeduceStride(i)),this.byteStride=a||this._buffer.byteStride||this._size*p,this.byteOffset=l||0):(this._size=c||a||n.DeduceStride(i),this.byteStride=a?a*p:this._buffer.byteStride||this._size*p,this.byteOffset=(l||0)*p),this.normalized=d,this._instanced=o!==void 0?o:!1,this._instanceDivisor=o?u:0,this._alignBuffer(),this._computeHashCode()}_computeHashCode(){this.hashCode=(this.type-5120<<0)+((this.normalized?1:0)<<3)+(this._size<<4)+((this._instanced?1:0)<<6)+(this.byteStride<<12)}_rebuild(){var e;(e=this._buffer)==null||e._rebuild()}getKind(){return this._kind}isUpdatable(){return this._buffer.isUpdatable()}getData(){return this._buffer.getData()}getFloatData(e,t){let i=this.getData();return i?AC(i,this._size,this.type,this.byteOffset,this.byteStride,this.normalized,e,t):null}getBuffer(){return this._buffer.getBuffer()}getWrapperBuffer(){return this._buffer}getStrideSize(){return this.byteStride/fl(this.type)}getOffset(){return this.byteOffset/fl(this.type)}getSize(e=!1){return e?this._size*fl(this.type):this._size}getIsInstanced(){return this._instanced}getInstanceDivisor(){return this._instanceDivisor}create(e){this._buffer.create(e),this._alignBuffer()}update(e){this._buffer.update(e),this._alignBuffer()}updateDirectly(e,t,i=!1){this._buffer.updateDirectly(e,t,void 0,i),this._alignBuffer()}dispose(){this._ownsBuffer&&this._buffer.dispose(),this._isDisposed=!0}forEach(e,t){sh(this._buffer.getData(),this.byteOffset,this.byteStride,this._size,this.type,e,this.normalized,(i,r)=>{for(let s=0;s{for(let d=0;d{Wi();hi();ic=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new ie,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[D.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[D.PositionKind]=new D(this._scene.getEngine(),e,D.PositionKind,!1,!1,2),this._buildIndexBuffer()}_buildIndexBuffer(){let e=[];e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),this._indexBuffer=this._scene.getEngine().createIndexBuffer(e)}_getActivePostProcesses(e){let t=this._activePostProcesses;t.length=0;for(let i=0;i{Pt();AV=(n,e,t)=>!n||n.getClassName&&n.getClassName()==="Mesh"?null:n.getClassName&&(n.getClassName()==="SubMesh"||n.getClassName()==="PhysicsBody")?n.clone(e):n.clone?n.clone():Array.isArray(n)?n.slice():t&&typeof n=="object"?{...n}:null;hl=class{static DeepCopy(e,t,i,r,s=!1){let a=fle(e);for(let o of a){if(o[0]==="_"&&(!r||r.indexOf(o)===-1)||o.endsWith("Observable")||i&&i.indexOf(o)!==-1)continue;let l=e[o],c=typeof l;if(c!=="function")try{if(c==="object")if(l instanceof Uint8Array)t[o]=Uint8Array.from(l);else if(l instanceof Array){if(t[o]=[],l.length>0)if(typeof l[0]=="object")for(let f=0;f{hi();ba();Pt();Eg();Yl();un();nh();Ni();Jl();sl();bC();mg();uo();_e=class{static get BaseUrl(){return ki.BaseUrl}static set BaseUrl(e){ki.BaseUrl=e}static get CleanUrl(){return ki.CleanUrl}static set CleanUrl(e){ki.CleanUrl=e}static IsAbsoluteUrl(e){return e.indexOf("//")===0?!0:e.indexOf("://")===-1||e.indexOf(".")===-1||e.indexOf("/")===-1||e.indexOf(":")>e.indexOf("/")?!1:e.indexOf("://"){dl(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(gt.AssetBaseUrl&&e.startsWith(gt._DefaultAssetsUrl)){let t=gt.AssetBaseUrl.endsWith("/")?gt.AssetBaseUrl.slice(0,-1):gt.AssetBaseUrl;return e.replace(gt._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(gt._DefaultCdnUrl)){if(gt.ScriptBaseUrl){let i=gt.ScriptBaseUrl.endsWith("/")?gt.ScriptBaseUrl.slice(0,-1):gt.ScriptBaseUrl;e=e.replace(gt._DefaultCdnUrl,i)}else if(gt._CdnVersion){let i=`${gt._DefaultCdnUrl}/v${gt._CdnVersion}`;e.startsWith(i)||(e=e.replace(gt._DefaultCdnUrl,i))}}return e=gt.ScriptPreprocessUrl(e),t&&!gt.IsAbsoluteUrl(e)&&(e=gt.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=gt.GetBabylonScriptURL(e),gt.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=gt.GetBabylonScriptURL(e),await gt.LoadScriptAsync(e)}static _LoadScriptNative(e,t,i){let r=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(r.message,r)}static _LoadScriptWeb(e,t,i,r,s=!1){let a=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(a.message,a)}static async LoadScriptAsync(e,t){return await new Promise((i,r)=>{this.LoadScript(e,()=>{i()},(s,a)=>{r(a||new Error(s))},t)})}static ReadFileAsDataURL(e,t,i){let r=new FileReader,s={onCompleteObservable:new ie,abort:()=>r.abort()};return r.onloadend=()=>{s.onCompleteObservable.notifyObservers(s)},r.onload=a=>{t(a.target.result)},r.onprogress=i,r.readAsDataURL(e),s}static ReadFile(e,t,i,r,s){return ah(e,t,i,r,s)}static FileAsURL(e){let t=new Blob([e]);return window.URL.createObjectURL(t)}static Format(e,t=2){return e.toFixed(t)}static DeepCopy(e,t,i,r){hl.DeepCopy(e,t,i,r)}static IsEmpty(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}static RegisterTopRootEvents(e,t){for(let i=0;i{let l=atob(this.toDataURL(a,o).split(",")[1]),c=l.length,f=new Uint8Array(c);for(let d=0;dt(s)):e.toBlob(function(s){t(s)},i,r)}static DownloadBlob(e,t){if("download"in document.createElement("a")){if(!t){let i=new Date;t="screenshot_"+((i.getFullYear()+"-"+(i.getMonth()+1)).slice(2)+"-"+i.getDate()+"_"+i.getHours()+"-"+("0"+i.getMinutes()).slice(-2))+".png"}gt.Download(e,t)}else if(e&&typeof URL!="undefined"){let i=URL.createObjectURL(e),r=window.open("");if(!r)return;let s=r.document.createElement("img");s.onload=function(){URL.revokeObjectURL(i)},s.src=i,r.document.body.appendChild(s)}}static EncodeScreenshotCanvasData(e,t,i="image/png",r,s){if(typeof r=="string"||!t)this.ToBlob(e,function(a){a&>.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(gt._IsOffScreenCanvas(e)){e.convertToBlob({type:i,quality:s}).then(o=>{let l=new FileReader;l.readAsDataURL(o),l.onloadend=()=>{let c=l.result;t(c)}});return}let a=e.toDataURL(i,s);t(a)}}static Download(e,t){if(typeof URL=="undefined")return;let i=window.URL.createObjectURL(e),r=document.createElement("a");document.body.appendChild(r),r.style.display="none",r.href=i,r.download=t,r.addEventListener("click",()=>{r.parentElement&&r.parentElement.removeChild(r)}),r.click(),window.URL.revokeObjectURL(i)}static BackCompatCameraNoPreventDefault(e){return typeof e[0]=="boolean"?e[0]:typeof e[1]=="boolean"?e[1]:!1}static CreateScreenshot(e,t,i,r,s="image/png",a=!1,o){throw Qe("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw Qe("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,h,u){throw Qe("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,h){throw Qe("ScreenshotTools")}static RandomId(){return _f()}static IsBase64(e){return vf(e)}static DecodeBase64(e){return Ef(e)}static get errorsCount(){return ee.errorsCount}static Log(e){ee.Log(e)}static Warn(e){ee.Warn(e)}static Error(e){ee.Error(e)}static get LogCache(){return ee.LogCache}static ClearLogCache(){ee.ClearLogCache()}static set LogLevels(e){ee.LogLevels=e}static set PerformanceLogLevel(e){var t;if((e>.PerformanceUserMarkLogLevel)===gt.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),gt.StartPerformanceCounter=gt._StartMarkNative,gt.EndPerformanceCounter=gt._EndMarkNative):(gt.StartPerformanceCounter=gt._StartUserMark,gt.EndPerformanceCounter=gt._EndUserMark);return}if((e>.PerformanceConsoleLogLevel)===gt.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),gt.StartPerformanceCounter=gt._StartMarkNative,gt.EndPerformanceCounter=gt._EndMarkNative):(gt.StartPerformanceCounter=gt._StartPerformanceConsole,gt.EndPerformanceCounter=gt._EndPerformanceConsole);return}gt.StartPerformanceCounter=gt._StartPerformanceCounterDisabled,gt.EndPerformanceCounter=gt._EndPerformanceCounterDisabled,(t=_native==null?void 0:_native.disablePerformanceLogging)==null||t.call(_native)}static _StartPerformanceCounterDisabled(e,t){}static _EndPerformanceCounterDisabled(e,t){}static _StartUserMark(e,t=!0){if(!gt._Performance){if(!ur())return;gt._Performance=window.performance}!t||!gt._Performance.mark||gt._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!gt._Performance.mark||(gt._Performance.mark(e+"-End"),gt._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(gt._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(gt._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(gt._NativePerformanceCounterHandles.has(e))gt.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);gt._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=gt._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),gt._NativePerformanceCounterHandles.delete(e)):gt.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return Er.Now}static GetClassName(e,t=!1){let i=null;return!t&&e.getClassName?i=e.getClassName():(e instanceof Object&&(i=(t?e:Object.getPrototypeOf(e)).constructor.__bjsclassName__),i||(i=typeof e)),i}static First(e,t){for(let i of e)if(t(i))return i;return null}static getFullClassName(e,t=!1){let i=null,r=null;if(!t&&e.getClassName)i=e.getClassName();else{if(e instanceof Object){let s=t?e:Object.getPrototypeOf(e);i=s.constructor.__bjsclassName__,r=s.constructor.__bjsmoduleName__}i||(i=typeof e)}return i?(r!=null?r+".":"")+i:null}static async DelayAsync(e){await new Promise(t=>{setTimeout(()=>{t()},e)})}static IsSafari(){return Xl()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};gt=_e;_e.AssetBaseUrl="";_e.UseCustomRequestHeaders=!1;_e.CustomRequestHeaders=Cr.CustomRequestHeaders;_e.GetDOMTextContent=lA;_e._DefaultCdnUrl="https://cdn.babylonjs.com";_e._CdnVersion="9.6.0";_e._DefaultAssetsUrl="https://assets.babylonjs.com/core";_e.LoadScript=typeof _native=="undefined"?gt._LoadScriptWeb:gt._LoadScriptNative;_e.GetAbsoluteUrl=typeof document=="object"?n=>{let e=document.createElement("a");return e.href=n,e.href}:typeof URL=="function"&&typeof location=="object"?n=>new URL(n,location.origin).href:()=>{throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.")};_e.NoneLogLevel=ee.NoneLogLevel;_e.MessageLogLevel=ee.MessageLogLevel;_e.WarningLogLevel=ee.WarningLogLevel;_e.ErrorLogLevel=ee.ErrorLogLevel;_e.AllLogLevel=ee.AllLogLevel;_e.IsWindowObjectExist=ur;_e.PerformanceNoneLogLevel=0;_e.PerformanceUserMarkLogLevel=1;_e.PerformanceConsoleLogLevel=2;_e._NativePerformanceCounterHandles=new Map;_e.StartPerformanceCounter=gt._StartPerformanceCounterDisabled;_e.EndPerformanceCounter=gt._EndPerformanceCounterDisabled;JA=class n{constructor(e,t,i,r=0){this.iterations=e,this.index=r-1,this._done=!1,this._fn=t,this._successCallback=i}executeNext(){this._done||(this.index+1{s&&s()?o.breakLoop():setTimeout(()=>{for(let l=0;l=e)break;if(i(c),s&&s()){o.breakLoop();break}}o.executeNext()},a)},r)}};_e.Mix=cg;_e.IsExponentOfTwo=Jd;Oe.FallbackTexture="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z"});var mr,Af=I(()=>{Pt();yi();mr=class n{constructor(e,t,i=!1,r,s=!1,a){this._uniformNames=[],this._valueCache={},this._engine=e,this._noUBO=!e.supportsUniformBuffers||s,this._dynamic=i,this._name=r!=null?r:"no-name",this._data=t||[],this._uniformLocations={},this._uniformSizes={},this._uniformArraySizes={},this._uniformLocationPointer=0,this._needSync=!1,this._trackUBOsInFrame=!1,(a===void 0&&this._engine._features.trackUbosInFrame||a===!0)&&(this._buffers=[],this._bufferIndex=-1,this._bufferUpdatedLastFrame=!1,this._createBufferOnWrite=!1,this._currentFrameId=0,this._trackUBOsInFrame=!0),this._noUBO?(this.updateMatrix3x3=this._updateMatrix3x3ForEffect,this.updateMatrix2x2=this._updateMatrix2x2ForEffect,this.updateFloat=this._updateFloatForEffect,this.updateFloat2=this._updateFloat2ForEffect,this.updateFloat3=this._updateFloat3ForEffect,this.updateFloat4=this._updateFloat4ForEffect,this.updateFloatArray=this._updateFloatArrayForEffect,this.updateArray=this._updateArrayForEffect,this.updateIntArray=this._updateIntArrayForEffect,this.updateUIntArray=this._updateUIntArrayForEffect,this.updateMatrix=this._updateMatrixForEffect,this.updateMatrices=this._updateMatricesForEffect,this.updateVector3=this._updateVector3ForEffect,this.updateVector4=this._updateVector4ForEffect,this.updateColor3=this._updateColor3ForEffect,this.updateColor4=this._updateColor4ForEffect,this.updateDirectColor4=this._updateDirectColor4ForEffect,this.updateInt=this._updateIntForEffect,this.updateInt2=this._updateInt2ForEffect,this.updateInt3=this._updateInt3ForEffect,this.updateInt4=this._updateInt4ForEffect,this.updateUInt=this._updateUIntForEffect,this.updateUInt2=this._updateUInt2ForEffect,this.updateUInt3=this._updateUInt3ForEffect,this.updateUInt4=this._updateUInt4ForEffect):(this._engine._uniformBuffers.push(this),this.updateMatrix3x3=this._updateMatrix3x3ForUniform,this.updateMatrix2x2=this._updateMatrix2x2ForUniform,this.updateFloat=this._updateFloatForUniform,this.updateFloat2=this._updateFloat2ForUniform,this.updateFloat3=this._updateFloat3ForUniform,this.updateFloat4=this._updateFloat4ForUniform,this.updateFloatArray=this._updateFloatArrayForUniform,this.updateArray=this._updateArrayForUniform,this.updateIntArray=this._updateIntArrayForUniform,this.updateUIntArray=this._updateUIntArrayForUniform,this.updateMatrix=this._updateMatrixForUniform,this.updateMatrices=this._updateMatricesForUniform,this.updateVector3=this._updateVector3ForUniform,this.updateVector4=this._updateVector4ForUniform,this.updateColor3=this._updateColor3ForUniform,this.updateColor4=this._updateColor4ForUniform,this.updateDirectColor4=this._updateDirectColor4ForUniform,this.updateInt=this._updateIntForUniform,this.updateInt2=this._updateInt2ForUniform,this.updateInt3=this._updateInt3ForUniform,this.updateInt4=this._updateInt4ForUniform,this.updateUInt=this._updateUIntForUniform,this.updateUInt2=this._updateUInt2ForUniform,this.updateUInt3=this._updateUInt3ForUniform,this.updateUInt4=this._updateUInt4ForUniform)}get useUbo(){return!this._noUBO}get isSync(){return!this._needSync}isDynamic(){return this._dynamic}getData(){return this._bufferData}getBuffer(){return this._buffer}getUniformNames(){return this._uniformNames}_fillAlignment(e){let t;if(e<=2?t=e:t=4,this._uniformLocationPointer%t!==0){let i=this._uniformLocationPointer;this._uniformLocationPointer+=t-this._uniformLocationPointer%t;let r=this._uniformLocationPointer-i;for(let s=0;s0&&typeof t=="number"&&(this._uniformArraySizes[e]={strideSize:t,arraySize:i}),this._uniformLocations[e]!==void 0||(this._uniformNames.push(e),this._noUBO))return;let r;if(i>0){if(t instanceof Array)throw"addUniform should not be use with Array in UBO: "+e;if(this._fillAlignment(4),t==16)t=t*i;else{let a=(4-t)*i;t=t*i+a}r=[];for(let s=0;s1&&this._buffers[this._bufferIndex][1])if(this._buffersEqual(this._bufferData,this._buffers[this._bufferIndex][1])){this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame;return}else this._copyBuffer(this._bufferData,this._buffers[this._bufferIndex][1]);this._bufferUpdatedLastFrame=!0,this._engine.updateUniformBuffer(this._buffer,this._bufferData),this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame}}_createNewBuffer(){this._bufferIndex+10?(this._buffers.length===1?this._needSync=!this._bufferUpdatedLastFrame:this._needSync=this._bufferIndex!==0,this._bufferIndex=0,this._buffer=this._buffers[this._bufferIndex][0]):this._bufferIndex=-1)}updateUniform(e,t,i){this._checkNewFrame();let r=this._uniformLocations[e];if(r===void 0){if(this._buffer){ee.Error("Cannot add an uniform after UBO has been created. uniformName="+e);return}this.addUniform(e,i),r=this._uniformLocations[e]}if(this._buffer||this.create(),this._dynamic)for(let s=0;s1&&this._buffers[t][1]&&this._bufferData.set(this._buffers[t][1]),this._valueCache={},this._currentFrameId=this._engine.frameId,!0;return!1}has(e){return this._uniformLocations[e]!==void 0}dispose(){if(this._noUBO)return;let e=this._engine._uniformBuffers,t=e.indexOf(this);if(t!==-1&&(e[t]=e[e.length-1],e.pop()),this._trackUBOsInFrame&&this._buffers)for(let i=0;i{Vi=class n{constructor(e){this.length=0,this.data=new Array(e),this._id=n._GlobalId++}push(e){this.data[this.length++]=e,this.length>this.data.length&&(this.data.length*=2)}forEach(e){for(let t=0;tthis.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t=this.length?-1:t}contains(e){return this.indexOf(e)!==-1}};Vi._GlobalId=0;Eo=class extends Vi{constructor(){super(...arguments),this._duplicateId=0}push(e){super.push(e),e.__smartArrayFlags||(e.__smartArrayFlags={}),e.__smartArrayFlags[this._id]=this._duplicateId}pushNoDuplicate(e){return e.__smartArrayFlags&&e.__smartArrayFlags[this._id]===this._duplicateId?!1:(this.push(e),!0)}reset(){super.reset(),this._duplicateId++}concatWithNoDuplicate(e){if(e.length!==0){this.length+e.length>this.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t{So();ke();Sg=class n{set opaqueSortCompareFn(e){e?this._opaqueSortCompareFn=e:this._opaqueSortCompareFn=n.PainterSortCompare,this._renderOpaque=this._renderOpaqueSorted}set alphaTestSortCompareFn(e){e?this._alphaTestSortCompareFn=e:this._alphaTestSortCompareFn=n.PainterSortCompare,this._renderAlphaTest=this._renderAlphaTestSorted}set transparentSortCompareFn(e){e?this._transparentSortCompareFn=e:this._transparentSortCompareFn=n.defaultTransparentSortCompare,this._renderTransparent=this._renderTransparentSorted}constructor(e,t,i=null,r=null,s=null){this.index=e,this._opaqueSubMeshes=new Vi(256),this._transparentSubMeshes=new Vi(256),this._alphaTestSubMeshes=new Vi(256),this._depthOnlySubMeshes=new Vi(256),this._particleSystems=new Vi(256),this._spriteManagers=new Vi(256),this._empty=!0,this._edgesRenderers=new Eo(16),this.disableDepthPrePass=!1,this._scene=t,this.opaqueSortCompareFn=i,this.alphaTestSortCompareFn=r,this.transparentSortCompareFn=s}render(e,t,i,r,s=!0,a=!0,o=!0,l=!0,c){if(e){e(this._opaqueSubMeshes,this._alphaTestSubMeshes,this._transparentSubMeshes,this._depthOnlySubMeshes);return}let f=this._scene.getEngine();s&&this._depthOnlySubMeshes.length!==0&&(f.setColorWrite(!1),this._renderAlphaTest(this._depthOnlySubMeshes),f.setColorWrite(!0)),a&&this._opaqueSubMeshes.length!==0&&this._renderOpaque(this._opaqueSubMeshes),o&&this._alphaTestSubMeshes.length!==0&&this._renderAlphaTest(this._alphaTestSubMeshes);let d=f.getStencilBuffer();if(f.setStencilBuffer(!1),t&&this._renderSprites(),i&&this._renderParticles(r),this.onBeforeTransparentRendering&&this.onBeforeTransparentRendering(),l&&(c||this._transparentSubMeshes.length!==0||this._scene.useOrderIndependentTransparency)){if(f.setStencilBuffer(d),c)c(this._transparentSubMeshes,this);else if(this._scene.useOrderIndependentTransparency){let h=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);h.length&&this._renderTransparent(h)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let h=0;ht._alphaIndex?1:e._alphaIndext._distanceToCamera?-1:0}static frontToBackSortCompare(e,t){return e._distanceToCamerat._distanceToCamera?1:0}static PainterSortCompare(e,t){let i=e.getMesh(),r=t.getMesh();return i.material&&r.material?i.material.uniqueId-r.material.uniqueId:i.uniqueId-r.uniqueId}prepare(){this._opaqueSubMeshes.reset(),this._transparentSubMeshes.reset(),this._alphaTestSubMeshes.reset(),this._depthOnlySubMeshes.reset(),this._particleSystems.reset(),this.prepareSprites(),this._edgesRenderers.reset(),this._empty=!0}prepareSprites(){this._spriteManagers.reset()}dispose(){this._opaqueSubMeshes.dispose(),this._transparentSubMeshes.dispose(),this._alphaTestSubMeshes.dispose(),this._depthOnlySubMeshes.dispose(),this._particleSystems.dispose(),this._spriteManagers.dispose(),this._edgesRenderers.dispose()}dispatch(e,t,i){t===void 0&&(t=e.getMesh()),i===void 0&&(i=e.getMaterial()),i!=null&&(i.needAlphaBlendingForMesh(t)?this._transparentSubMeshes.push(e):i.needAlphaTestingForMesh(t)?(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._alphaTestSubMeshes.push(e)):(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._opaqueSubMeshes.push(e)),t._renderingGroup=this,t._edgesRenderer&&t.isEnabled()&&t.isVisible&&t._edgesRenderer.isEnabled&&this._edgesRenderers.pushNoDuplicate(t._edgesRenderer),this._empty=!1)}dispatchSprites(e){this._spriteManagers.push(e),this._empty=!1}dispatchParticles(e){this._particleSystems.push(e),this._empty=!1}_renderParticles(e){if(this._particleSystems.length===0)return;let t=this._scene.activeCamera;this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);for(let i=0;i{xV();MC=class{},ya=class n{get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e;for(let t of this._renderingGroups)t.disableDepthPrePass=e}get maintainStateBetweenFrames(){return this._maintainStateBetweenFrames}set maintainStateBetweenFrames(e){e!==this._maintainStateBetweenFrames&&(this._maintainStateBetweenFrames=e,this._maintainStateBetweenFrames||this.restoreDispachedFlags())}restoreDispachedFlags(){for(let e of this._scene.meshes)if(e.subMeshes)for(let t of e.subMeshes)t._wasDispatched=!1;if(this._scene.spriteManagers)for(let e of this._scene.spriteManagers)e._wasDispatched=!1;for(let e of this._scene.particleSystems)e._wasDispatched=!1}constructor(e){this._useSceneAutoClearSetup=!1,this._disableDepthPrePass=!1,this._renderingGroups=new Array,this._autoClearDepthStencil={},this._customOpaqueSortCompareFn={},this._customAlphaTestSortCompareFn={},this._customTransparentSortCompareFn={},this._renderingGroupInfo=new MC,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{Xt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};Xt.FALLOFF_DEFAULT=0;Xt.FALLOFF_PHYSICAL=1;Xt.FALLOFF_GLTF=2;Xt.FALLOFF_STANDARD=3;Xt.LIGHTMAP_DEFAULT=0;Xt.LIGHTMAP_SPECULAR=1;Xt.LIGHTMAP_SHADOWSONLY=2;Xt.INTENSITYMODE_AUTOMATIC=0;Xt.INTENSITYMODE_LUMINOUSPOWER=1;Xt.INTENSITYMODE_LUMINOUSINTENSITY=2;Xt.INTENSITYMODE_ILLUMINANCE=3;Xt.INTENSITYMODE_LUMINANCE=4;Xt.LIGHTTYPEID_POINTLIGHT=0;Xt.LIGHTTYPEID_DIRECTIONALLIGHT=1;Xt.LIGHTTYPEID_SPOTLIGHT=2;Xt.LIGHTTYPEID_HEMISPHERICLIGHT=3;Xt.LIGHTTYPEID_RECT_AREALIGHT=4;Xt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ca,IC=I(()=>{Af();hi();ex();ol();sl();Pt();So();Tg();Ca=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=BA(e,this._renderListHasChanged)),this._renderList=e)}get disableImageProcessing(){return this._disableImageProcessing}set disableImageProcessing(e){e!==this._disableImageProcessing&&(this._disableImageProcessing=e,this._scene.markAllMaterialsAsDirty(64))}get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e,this._renderingManager.disableDepthPrePass=e}get name(){return this._name}set name(e){if(this._name!==e){if(this._name=e,this._sceneUBOs)for(let t=0;tthis._checkReadiness(),()=>{if(this._freezeActiveMeshesCancel=null,e)for(let t=0;t{this._freezeActiveMeshesCancel=null,i?(ee.Error("ObjectRenderer: Timeout while waiting for the renderer to be ready."),t&&ee.Error(t)):(ee.Error("ObjectRenderer: An unexpected error occurred while waiting for the renderer to be ready."),t&&(ee.Error(t),t.stack&&ee.Error(t.stack)))})}_unfreezeActiveMeshes(){var e;(e=this._freezeActiveMeshesCancel)==null||e.call(this),this._freezeActiveMeshesCancel=null;for(let t=0;t{let a=this._renderList?this._renderList.length:0;if(s===0&&a>0||a===0)for(let o of this._scene.meshes)o._markSubMeshesAsLightDirty()},this.particleSystemList=null,this.getCustomRenderList=null,this.renderMeshes=!0,this.renderDepthOnlyMeshes=!0,this.renderOpaqueMeshes=!0,this.renderAlphaTestMeshes=!0,this.renderTransparentMeshes=!0,this.renderParticles=!0,this.renderSprites=!1,this.forceLayerMaskCheck=!1,this.enableBoundingBoxRendering=!1,this.enableOutlineRendering=!0,this._disableImageProcessing=!1,this.dontSetTransformationMatrix=!1,this._disableDepthPrePass=!1,this.onBeforeRenderObservable=new ie,this.onAfterRenderObservable=new ie,this.onBeforeRenderingManagerRenderObservable=new ie,this.onAfterRenderingManagerRenderObservable=new ie,this.onInitRenderingObservable=new ie,this.onFinishRenderingObservable=new ie,this.onFastPathRenderObservable=new ie,this._currentRefreshId=-1,this._refreshRate=1,this._currentApplyByPostProcessSetting=!1,this._activeMeshes=new Vi(256),this._activeBoundingBoxes=new Vi(32),this._currentFrameId=-1,this._currentSceneUBOIndex=0,this._isFrozen=!1,this._freezeActiveMeshesCancel=null,this._currentSceneCamera=null,this.name=e,this._scene=t,this._engine=this._scene.getEngine(),this._useUBO=this._engine.supportsUniformBuffers,this.renderList=[],this._renderPassIds=[],this.options={numPasses:1,doNotChangeAspectRatio:!0,enableClusteredLights:!1,...i},this._createRenderPassId(),this.renderPassId=this._renderPassIds[0],this._renderingManager=new ya(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===Xt.LIGHTTYPEID_CLUSTERED_CONTAINER&&r.isSupported&&r._updateBatches(this.activeCamera).render()}),this._scene.addObjectRenderer(this)}_releaseRenderPassId(){for(let e=0;e=this._sceneUBOs.length){let s=this._sceneUBOs.length;this._sceneUBOs.push(this._createSceneUBO(`Scene ubo #${s} for ${this.name}`,t)),this._sceneUBOIsMultiview.push(t)}else this._sceneUBOIsMultiview[this._currentSceneUBOIndex]!==t&&(this._sceneUBOs[this._currentSceneUBOIndex].dispose(),this._sceneUBOs[this._currentSceneUBOIndex]=this._createSceneUBO(`Scene ubo #${this._currentSceneUBOIndex} for ${this.name}`,t),this._sceneUBOIsMultiview[this._currentSceneUBOIndex]=t);let i=this._sceneUBOs[this._currentSceneUBOIndex++];return i.unbindEffect(),i}resetRefreshCounter(){this._currentRefreshId=-1}get refreshRate(){return this._refreshRate}set refreshRate(e){this._refreshRate=e,this.resetRefreshCounter()}shouldRender(){return this._engine.snapshotRendering?!0:this._currentRefreshId===-1?(this._currentRefreshId=1,!0):this.refreshRate===this._currentRefreshId?(this._currentRefreshId=1,!0):(this._currentRefreshId++,!1)}isReadyForRendering(e,t){this.prepareRenderList(),this.initRender(e,t);let i=this._checkReadiness();return this.finishRender(),i}prepareRenderList(){let e=this._scene;if(this._waitingRenderList){if(!this.renderListPredicate){this.renderList=[];for(let t=0;t1&&(e.incrementRenderId(),e.resetCachedMaterial())}let s=this.particleSystemList||e.particleSystems;for(let a of s)a.isReady()||(i=!1);return this._engine.currentRenderPassId=t,i}_prepareRenderingManager(e=0,t=!1){var h,u;let i=this._scene,r=null,s,a,o=this.renderList?this.renderList:i.frameGraph?i.meshes:i.getActiveMeshes().data,l=this.renderList||i.frameGraph?o.length:i.getActiveMeshes().length;if(this.getCustomRenderList&&(r=this.getCustomRenderList(e,o,l)),r)s=r.length,a=this.forceLayerMaskCheck;else{if(this._defaultRenderListPrepared&&!t&&!this._engine.isWebGPU)return o;this._defaultRenderListPrepared=!0,r=o,s=l,a=!this.renderList||this.forceLayerMaskCheck}let c=i.activeCamera,f=(h=this.cameraForLOD)!=null?h:c,d=(u=i.getBoundingBoxRenderer)==null?void 0:u.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{sl();cs=class{static GetEffect(e){return e.getPipelineContext===void 0?e.effect:e}constructor(e,t=!0){this._wasPreviouslyReady=!1,this._forceRebindOnNextCall=!0,this._wasPreviouslyUsingInstances=null,this.effect=null,this.defines=null,this.drawContext=e.createDrawContext(),t&&(this.materialContext=e.createMaterialContext())}setEffect(e,t,i=!0){var r;this.effect=e,t!==void 0&&(this.defines=t),i&&((r=this.drawContext)==null||r.reset())}dispose(e=!1){var t;if(this.effect){let i=this.effect;e?i.dispose():ho.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var bV={};Be(bV,{postprocessVertexShader:()=>dle});var yC,RV,dle,CC=I(()=>{k();yC="postprocessVertexShader",RV=`attribute vec2 position;uniform vec2 scale;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); #define CUSTOM_VERTEX_DEFINITIONS void main(void) { #define CUSTOM_VERTEX_MAIN_BEGIN vUV=(position*madd+madd)*scale;gl_Position=vec4(position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStore[bC]||(A.ShadersStore[bC]=TV);ale={name:bC,shader:TV}});var RV={};Be(RV,{postprocessVertexShaderWGSL:()=>ole});var IC,xV,ole,yC=I(()=>{k();IC="postprocessVertexShader",xV=`attribute position: vec2;uniform scale: vec2;varying vUV: vec2;const madd=vec2(0.5,0.5); +}`;A.ShadersStore[yC]||(A.ShadersStore[yC]=RV);dle={name:yC,shader:RV}});var IV={};Be(IV,{postprocessVertexShaderWGSL:()=>hle});var PC,MV,hle,DC=I(()=>{k();PC="postprocessVertexShader",MV=`attribute position: vec2;uniform scale: vec2;varying vUV: vec2;const madd=vec2(0.5,0.5); #define CUSTOM_VERTEX_DEFINITIONS @vertex fn main(input : VertexInputs)->FragmentInputs { @@ -4156,16 +4156,16 @@ fn main(input : VertexInputs)->FragmentInputs { vertexOutputs.vUV=(vertexInputs.position*madd+madd)*uniforms.scale;vertexOutputs.position=vec4(vertexInputs.position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStoreWGSL[IC]||(A.ShadersStoreWGSL[IC]=xV);ole={name:IC,shader:xV}});var CC,JA,Yr,lh=I(()=>{Wi();_m();hi();Zd();oh();MC();yC();CC={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},JA=class{constructor(e,t=CC){var s,a;this._fullscreenViewport=new go(0,0,1,1);let i=(s=t.positions)!=null?s:CC.positions,r=(a=t.indices)!=null?a:CC.indices;this.engine=e,this._vertexBuffers={[D.PositionKind]:new D(e,i,D.PositionKind,!1,!1,2)},this._indexBuffer=e.createIndexBuffer(r),this._indexBufferLength=r.length,this._onContextRestoredObserver=e.onContextRestoredObservable.add(()=>{this._indexBuffer=e.createIndexBuffer(r);for(let o in this._vertexBuffers)this._vertexBuffers[o]._rebuild()})}setViewport(e=this._fullscreenViewport){this.engine.setViewport(e)}bindBuffers(e){this.engine.bindBuffers(this._vertexBuffers,this._indexBuffer,e)}applyEffectWrapper(e,t=!1,i=!1){this.engine.setState(!0),this.engine.depthCullingState.depthTest=t,this.engine.stencilState.stencilTest=i,this.engine.enableEffect(e.drawWrapper),this.bindBuffers(e.effect),e.onApplyObservable.notifyObservers({})}saveStates(){this._savedStateDepthTest=this.engine.depthCullingState.depthTest,this._savedStateStencilTest=this.engine.stencilState.stencilTest}restoreStates(){this.engine.depthCullingState.depthTest=this._savedStateDepthTest,this.engine.stencilState.stencilTest=this._savedStateStencilTest}draw(){this.engine.drawElementsType(0,0,this._indexBufferLength)}_isRenderTargetTexture(e){return e.renderTarget!==void 0}render(e,t=null){if(!e.effect.isReady())return;this.saveStates(),this.setViewport();let i=t===null?null:this._isRenderTargetTexture(t)?t.renderTarget:t;i&&this.engine.bindFramebuffer(i),this.applyEffectWrapper(e),this.draw(),i&&this.engine.unBindFramebuffer(i),this.restoreStates()}dispose(){let e=this._vertexBuffers[D.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[D.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},Yr=class n{static RegisterShaderCodeProcessing(e,t){if(!t){delete n._CustomShaderCodeProcessing[e!=null?e:""];return}n._CustomShaderCodeProcessing[e!=null?e:""]=t}static _GetShaderCodeProcessing(e){var t;return(t=n._CustomShaderCodeProcessing[e])!=null?t:n._CustomShaderCodeProcessing[""]}get name(){return this.options.name}set name(e){this.options.name=e}isReady(){var e,t;return(t=(e=this._drawWrapper.effect)==null?void 0:e.isReady())!=null?t:!1}get drawWrapper(){return this._drawWrapper}get effect(){return this._drawWrapper.effect}set effect(e){this._drawWrapper.effect=e}constructor(e){var i,r;this.alphaMode=0,this.onEffectCreatedObservable=new ie(void 0,!0),this.onApplyObservable=new ie,this._shadersLoaded=!1,this._webGPUReady=!1,this._importPromises=[],this.options={...e,name:e.name||"effectWrapper",engine:e.engine,uniforms:e.uniforms||e.uniformNames||[],uniformNames:void 0,samplers:e.samplers||e.samplerNames||[],samplerNames:void 0,attributeNames:e.attributeNames||["position"],uniformBuffers:e.uniformBuffers||[],defines:e.defines||"",useShaderStore:e.useShaderStore||!1,vertexUrl:e.vertexUrl||e.vertexShader||"postprocess",vertexShader:void 0,fragmentShader:e.fragmentShader||"pass",indexParameters:e.indexParameters,blockCompilation:e.blockCompilation||!1,shaderLanguage:e.shaderLanguage||0,onCompiled:e.onCompiled||void 0,extraInitializations:e.extraInitializations||void 0,extraInitializationsAsync:e.extraInitializationsAsync||void 0,useAsPostProcess:(i=e.useAsPostProcess)!=null?i:!1,allowEmptySourceTexture:(r=e.allowEmptySourceTexture)!=null?r:!1},this.options.uniformNames=this.options.uniforms,this.options.samplerNames=this.options.samplers,this.options.vertexShader=this.options.vertexUrl,this.options.useAsPostProcess&&(!this.options.allowEmptySourceTexture&&this.options.samplers.indexOf("textureSampler")===-1&&this.options.samplers.push("textureSampler"),this.options.uniforms.indexOf("scale")===-1&&this.options.uniforms.push("scale")),e.vertexUrl||e.vertexShader?this._shaderPath={vertexSource:this.options.vertexShader}:(this.options.useAsPostProcess||(this.options.uniforms.push("scale"),this.onApplyObservable.add(()=>{this.effect.setFloat2("scale",1,1)})),this._shaderPath={vertex:this.options.vertexShader}),this._shaderPath.fragmentSource=this.options.fragmentShader,this._shaderPath.spectorName=this.options.name,this.options.useShaderStore&&(this._shaderPath.fragment=this._shaderPath.fragmentSource,this._shaderPath.vertex||(this._shaderPath.vertex=this._shaderPath.vertexSource),delete this._shaderPath.fragmentSource,delete this._shaderPath.vertexSource),this.onApplyObservable.add(()=>{this.bind()}),this.options.useShaderStore||(this._onContextRestoredObserver=this.options.engine.onContextRestoredObservable.add(()=>{this.effect._pipelineContext=null,this.effect._prepareEffect()})),this._drawWrapper=new cs(this.options.engine),this._webGPUReady=this.options.shaderLanguage===1;let t=Array.isArray(this.options.defines)?this.options.defines.join(` -`):this.options.defines;this._postConstructor(this.options.blockCompilation,t,this.options.extraInitializations)}_gatherImports(e=!1,t){}_postConstructor(e,t=null,i,r){this._importPromises.length=0,r&&this._importPromises.push(...r);let s=this.options.engine.isWebGPU&&!n.ForceGLSL;this._gatherImports(s,this._importPromises),i!==void 0&&i(s,this._importPromises),s&&this._webGPUReady&&(this.options.shaderLanguage=1),e||this.updateEffect(t)}updateEffect(e=null,t=null,i=null,r,s,a,o,l){var h,u;let c=n._GetShaderCodeProcessing(this.name);if(c!=null&&c.defineCustomBindings){let m=(h=t==null?void 0:t.slice())!=null?h:[];m.push(...this.options.uniforms);let _=(u=i==null?void 0:i.slice())!=null?u:[];_.push(...this.options.samplers),e=c.defineCustomBindings(this.name,e,m,_),t=m,i=_}this.options.defines=e||"";let f=this._shadersLoaded||this._importPromises.length===0?void 0:async()=>{await Promise.all(this._importPromises),this._shadersLoaded=!0},d;this.options.extraInitializationsAsync?d=async()=>{f==null||f(),await this.options.extraInitializationsAsync()}:d=f,this.options.useShaderStore?this._drawWrapper.effect=this.options.engine.createEffect({vertex:o!=null?o:this._shaderPath.vertex,fragment:l!=null?l:this._shaderPath.fragment},{attributes:this.options.attributeNames,uniformsNames:t||this.options.uniforms,uniformBuffersNames:this.options.uniformBuffers,samplers:i||this.options.samplers,defines:e!==null?e:"",fallbacks:null,onCompiled:s!=null?s:this.options.onCompiled,onError:a!=null?a:null,indexParameters:r||this.options.indexParameters,processCodeAfterIncludes:c!=null&&c.processCodeAfterIncludes?(m,_)=>c.processCodeAfterIncludes(this.name,m,_):null,processFinalCode:c!=null&&c.processFinalCode?(m,_)=>c.processFinalCode(this.name,m,_):null,shaderLanguage:this.options.shaderLanguage,extraInitializationsAsync:d},this.options.engine):this._drawWrapper.effect=new or(this._shaderPath,this.options.attributeNames,t||this.options.uniforms,i||this.options.samplerNames,this.options.engine,e,void 0,s||this.options.onCompiled,void 0,void 0,void 0,this.options.shaderLanguage,d),this.onEffectCreatedObservable.notifyObservers(this._drawWrapper.effect)}bind(e=!1){var t,i;this.options.useAsPostProcess&&!e&&(this.options.engine.setAlphaMode(this.alphaMode),this.drawWrapper.effect.setFloat2("scale",1,1)),(i=(t=n._GetShaderCodeProcessing(this.name))==null?void 0:t.bindCustomBindings)==null||i.call(t,this.name,this._drawWrapper.effect)}dispose(e=!1){this._onContextRestoredObserver&&(this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null),this.onEffectCreatedObservable.clear(),this._drawWrapper.dispose(!0)}};Yr.ForceGLSL=!1;Yr._CustomShaderCodeProcessing={}});var DC={};Be(DC,{passPixelShader:()=>lle});var PC,bV,lle,LC=I(()=>{k();PC="passPixelShader",bV=`varying vec2 vUV;uniform sampler2D textureSampler; +`;A.ShadersStoreWGSL[PC]||(A.ShadersStoreWGSL[PC]=MV);hle={name:PC,shader:MV}});var LC,tx,Yr,lh=I(()=>{Wi();_m();hi();Zd();oh();CC();DC();LC={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},tx=class{constructor(e,t=LC){var s,a;this._fullscreenViewport=new go(0,0,1,1);let i=(s=t.positions)!=null?s:LC.positions,r=(a=t.indices)!=null?a:LC.indices;this.engine=e,this._vertexBuffers={[D.PositionKind]:new D(e,i,D.PositionKind,!1,!1,2)},this._indexBuffer=e.createIndexBuffer(r),this._indexBufferLength=r.length,this._onContextRestoredObserver=e.onContextRestoredObservable.add(()=>{this._indexBuffer=e.createIndexBuffer(r);for(let o in this._vertexBuffers)this._vertexBuffers[o]._rebuild()})}setViewport(e=this._fullscreenViewport){this.engine.setViewport(e)}bindBuffers(e){this.engine.bindBuffers(this._vertexBuffers,this._indexBuffer,e)}applyEffectWrapper(e,t=!1,i=!1){this.engine.setState(!0),this.engine.depthCullingState.depthTest=t,this.engine.stencilState.stencilTest=i,this.engine.enableEffect(e.drawWrapper),this.bindBuffers(e.effect),e.onApplyObservable.notifyObservers({})}saveStates(){this._savedStateDepthTest=this.engine.depthCullingState.depthTest,this._savedStateStencilTest=this.engine.stencilState.stencilTest}restoreStates(){this.engine.depthCullingState.depthTest=this._savedStateDepthTest,this.engine.stencilState.stencilTest=this._savedStateStencilTest}draw(){this.engine.drawElementsType(0,0,this._indexBufferLength)}_isRenderTargetTexture(e){return e.renderTarget!==void 0}render(e,t=null){if(!e.effect.isReady())return;this.saveStates(),this.setViewport();let i=t===null?null:this._isRenderTargetTexture(t)?t.renderTarget:t;i&&this.engine.bindFramebuffer(i),this.applyEffectWrapper(e),this.draw(),i&&this.engine.unBindFramebuffer(i),this.restoreStates()}dispose(){let e=this._vertexBuffers[D.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[D.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},Yr=class n{static RegisterShaderCodeProcessing(e,t){if(!t){delete n._CustomShaderCodeProcessing[e!=null?e:""];return}n._CustomShaderCodeProcessing[e!=null?e:""]=t}static _GetShaderCodeProcessing(e){var t;return(t=n._CustomShaderCodeProcessing[e])!=null?t:n._CustomShaderCodeProcessing[""]}get name(){return this.options.name}set name(e){this.options.name=e}isReady(){var e,t;return(t=(e=this._drawWrapper.effect)==null?void 0:e.isReady())!=null?t:!1}get drawWrapper(){return this._drawWrapper}get effect(){return this._drawWrapper.effect}set effect(e){this._drawWrapper.effect=e}constructor(e){var i,r;this.alphaMode=0,this.onEffectCreatedObservable=new ie(void 0,!0),this.onApplyObservable=new ie,this._shadersLoaded=!1,this._webGPUReady=!1,this._importPromises=[],this.options={...e,name:e.name||"effectWrapper",engine:e.engine,uniforms:e.uniforms||e.uniformNames||[],uniformNames:void 0,samplers:e.samplers||e.samplerNames||[],samplerNames:void 0,attributeNames:e.attributeNames||["position"],uniformBuffers:e.uniformBuffers||[],defines:e.defines||"",useShaderStore:e.useShaderStore||!1,vertexUrl:e.vertexUrl||e.vertexShader||"postprocess",vertexShader:void 0,fragmentShader:e.fragmentShader||"pass",indexParameters:e.indexParameters,blockCompilation:e.blockCompilation||!1,shaderLanguage:e.shaderLanguage||0,onCompiled:e.onCompiled||void 0,extraInitializations:e.extraInitializations||void 0,extraInitializationsAsync:e.extraInitializationsAsync||void 0,useAsPostProcess:(i=e.useAsPostProcess)!=null?i:!1,allowEmptySourceTexture:(r=e.allowEmptySourceTexture)!=null?r:!1},this.options.uniformNames=this.options.uniforms,this.options.samplerNames=this.options.samplers,this.options.vertexShader=this.options.vertexUrl,this.options.useAsPostProcess&&(!this.options.allowEmptySourceTexture&&this.options.samplers.indexOf("textureSampler")===-1&&this.options.samplers.push("textureSampler"),this.options.uniforms.indexOf("scale")===-1&&this.options.uniforms.push("scale")),e.vertexUrl||e.vertexShader?this._shaderPath={vertexSource:this.options.vertexShader}:(this.options.useAsPostProcess||(this.options.uniforms.push("scale"),this.onApplyObservable.add(()=>{this.effect.setFloat2("scale",1,1)})),this._shaderPath={vertex:this.options.vertexShader}),this._shaderPath.fragmentSource=this.options.fragmentShader,this._shaderPath.spectorName=this.options.name,this.options.useShaderStore&&(this._shaderPath.fragment=this._shaderPath.fragmentSource,this._shaderPath.vertex||(this._shaderPath.vertex=this._shaderPath.vertexSource),delete this._shaderPath.fragmentSource,delete this._shaderPath.vertexSource),this.onApplyObservable.add(()=>{this.bind()}),this.options.useShaderStore||(this._onContextRestoredObserver=this.options.engine.onContextRestoredObservable.add(()=>{this.effect._pipelineContext=null,this.effect._prepareEffect()})),this._drawWrapper=new cs(this.options.engine),this._webGPUReady=this.options.shaderLanguage===1;let t=Array.isArray(this.options.defines)?this.options.defines.join(` +`):this.options.defines;this._postConstructor(this.options.blockCompilation,t,this.options.extraInitializations)}_gatherImports(e=!1,t){}_postConstructor(e,t=null,i,r){this._importPromises.length=0,r&&this._importPromises.push(...r);let s=this.options.engine.isWebGPU&&!n.ForceGLSL;this._gatherImports(s,this._importPromises),i!==void 0&&i(s,this._importPromises),s&&this._webGPUReady&&(this.options.shaderLanguage=1),e||this.updateEffect(t)}updateEffect(e=null,t=null,i=null,r,s,a,o,l){var h,u;let c=n._GetShaderCodeProcessing(this.name);if(c!=null&&c.defineCustomBindings){let m=(h=t==null?void 0:t.slice())!=null?h:[];m.push(...this.options.uniforms);let _=(u=i==null?void 0:i.slice())!=null?u:[];_.push(...this.options.samplers),e=c.defineCustomBindings(this.name,e,m,_),t=m,i=_}this.options.defines=e||"";let f=this._shadersLoaded||this._importPromises.length===0?void 0:async()=>{await Promise.all(this._importPromises),this._shadersLoaded=!0},d;this.options.extraInitializationsAsync?d=async()=>{f==null||f(),await this.options.extraInitializationsAsync()}:d=f,this.options.useShaderStore?this._drawWrapper.effect=this.options.engine.createEffect({vertex:o!=null?o:this._shaderPath.vertex,fragment:l!=null?l:this._shaderPath.fragment},{attributes:this.options.attributeNames,uniformsNames:t||this.options.uniforms,uniformBuffersNames:this.options.uniformBuffers,samplers:i||this.options.samplers,defines:e!==null?e:"",fallbacks:null,onCompiled:s!=null?s:this.options.onCompiled,onError:a!=null?a:null,indexParameters:r||this.options.indexParameters,processCodeAfterIncludes:c!=null&&c.processCodeAfterIncludes?(m,_)=>c.processCodeAfterIncludes(this.name,m,_):null,processFinalCode:c!=null&&c.processFinalCode?(m,_)=>c.processFinalCode(this.name,m,_):null,shaderLanguage:this.options.shaderLanguage,extraInitializationsAsync:d},this.options.engine):this._drawWrapper.effect=new or(this._shaderPath,this.options.attributeNames,t||this.options.uniforms,i||this.options.samplerNames,this.options.engine,e,void 0,s||this.options.onCompiled,void 0,void 0,void 0,this.options.shaderLanguage,d),this.onEffectCreatedObservable.notifyObservers(this._drawWrapper.effect)}bind(e=!1){var t,i;this.options.useAsPostProcess&&!e&&(this.options.engine.setAlphaMode(this.alphaMode),this.drawWrapper.effect.setFloat2("scale",1,1)),(i=(t=n._GetShaderCodeProcessing(this.name))==null?void 0:t.bindCustomBindings)==null||i.call(t,this.name,this._drawWrapper.effect)}dispose(e=!1){this._onContextRestoredObserver&&(this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null),this.onEffectCreatedObservable.clear(),this._drawWrapper.dispose(!0)}};Yr.ForceGLSL=!1;Yr._CustomShaderCodeProcessing={}});var NC={};Be(NC,{passPixelShader:()=>ule});var OC,yV,ule,wC=I(()=>{k();OC="passPixelShader",yV=`varying vec2 vUV;uniform sampler2D textureSampler; #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=texture2D(textureSampler,vUV);}`;A.ShadersStore[PC]||(A.ShadersStore[PC]=bV);lle={name:PC,shader:bV}});var MV={};Be(MV,{Dispose:()=>NC,DumpData:()=>ex,DumpDataAsync:()=>xg,DumpFramebuffer:()=>OC,DumpTools:()=>hle,EncodeImageAsync:()=>dle});async function cle(){var o,l;let n=(l=(o=Oe.LastCreatedEngine)==null?void 0:o.createCanvas(100,100))!=null?l:new OffscreenCanvas(100,100);n instanceof OffscreenCanvas&&ee.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");let{ThinEngine:e}=await Promise.resolve().then(()=>(os(),AU));if(!e.IsSupported)throw new Error("DumpData: No WebGL context available. Cannot dump data.");let t={preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1},i=new e(n,!1,t);Oe.Instances.pop(),Oe.OnEnginesDisposedObservable.add(c=>{i&&c!==i&&!i.isDisposed&&Oe.Instances.length===0&&NC()}),i.getCaps().parallelShaderCompile=void 0;let r=new JA(i),{passPixelShader:s}=await Promise.resolve().then(()=>(LC(),DC)),a=new Yr({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function fle(){return xf||(xf=cle()),await xf}async function OC(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);ex(n,e,l,i,r,s,!0,void 0,a)}async function xg(n,e,t,i="image/png",r,s=!1,a=!1,o){if(t instanceof Float32Array){let f=new Uint8Array(t.length),d=t.length;for(;d--;){let h=t[d];f[d]=Math.round(wt(h)*255)}t=f}let l=await Ag.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&_e.DownloadBlob(l,r),l.type!==i&&ee.Warn(`DumpData: The requested mimeType '${i}' is not supported. The result has mimeType '${l.type}' instead.`);let c=await l.arrayBuffer();return a?c:`data:${i};base64,${Sm(c)}`}function ex(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),xg(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function NC(){xf&&(xf==null||xf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),xf=null)}var xf,Ag,dle,hle,ule,wC=I(()=>{Gt();lh();yi();Vn();Ni();Pt();_g();Vt();xf=null;Ag=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await fle(),l=o.dumpEngine;l.engine.setSize(t,i,!0);let c=l.engine.createRawTexture(e,t,i,5,!1,!s,1);return l.renderer.setViewport(),l.renderer.applyEffectWrapper(l.wrapper),l.wrapper.effect._bindTexture("textureSampler",c),l.renderer.draw(),c.dispose(),await new Promise((f,d)=>{_e.ToBlob(o.canvas,h=>{h?f(h):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([ws],Ag,"EncodeImageAsync",null);dle=Ag.EncodeImageAsync;hle={DumpData:ex,DumpDataAsync:xg,DumpFramebuffer:OC,Dispose:NC},ule=()=>{_e.DumpData=ex,_e.DumpDataAsync=xg,_e.DumpFramebuffer=OC};ule()});var kr,Rf=I(()=>{hi();ke();Gr();ZA();uo();Zd();Pt();RC();or.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};kr=class n extends ge{get renderListPredicate(){return this._objectRenderer.renderListPredicate}set renderListPredicate(e){this._objectRenderer.renderListPredicate=e}get renderList(){return this._objectRenderer.renderList}set renderList(e){this._objectRenderer.renderList=e}get particleSystemList(){return this._objectRenderer.particleSystemList}set particleSystemList(e){this._objectRenderer.particleSystemList=e}get getCustomRenderList(){return this._objectRenderer.getCustomRenderList}set getCustomRenderList(e){this._objectRenderer.getCustomRenderList=e}get renderParticles(){return this._objectRenderer.renderParticles}set renderParticles(e){this._objectRenderer.renderParticles=e}get renderSprites(){return this._objectRenderer.renderSprites}set renderSprites(e){this._objectRenderer.renderSprites=e}get enableBoundingBoxRendering(){return this._objectRenderer.enableBoundingBoxRendering}set enableBoundingBoxRendering(e){this._objectRenderer.enableBoundingBoxRendering=e}get enableOutlineRendering(){return this._objectRenderer.enableOutlineRendering}set enableOutlineRendering(e){this._objectRenderer.enableOutlineRendering=e}get forceLayerMaskCheck(){return this._objectRenderer.forceLayerMaskCheck}set forceLayerMaskCheck(e){this._objectRenderer.forceLayerMaskCheck=e}get activeCamera(){return this._objectRenderer.activeCamera}set activeCamera(e){this._objectRenderer.activeCamera=e}get cameraForLOD(){return this._objectRenderer.cameraForLOD}set cameraForLOD(e){this._objectRenderer.cameraForLOD=e}get disableImageProcessing(){return this._objectRenderer.disableImageProcessing}set disableImageProcessing(e){this._objectRenderer.disableImageProcessing=e}get customIsReadyFunction(){return this._objectRenderer.customIsReadyFunction}set customIsReadyFunction(e){this._objectRenderer.customIsReadyFunction=e}get customRenderFunction(){return this._objectRenderer.customRenderFunction}set customRenderFunction(e){this._objectRenderer.customRenderFunction=e}get postProcesses(){return this._postProcesses}get _prePassEnabled(){return!!this._prePassRenderTarget&&this._prePassRenderTarget.enabled}set onAfterUnbind(e){this._onAfterUnbindObserver&&this.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=this.onAfterUnbindObservable.add(e)}get onBeforeRenderObservable(){return this._objectRenderer.onBeforeRenderObservable}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}get onAfterRenderObservable(){return this._objectRenderer.onAfterRenderObservable}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}set onClear(e){this._onClearObserver&&this.onClearObservable.remove(this._onClearObserver),this._onClearObserver=this.onClearObservable.add(e)}get _waitingRenderList(){return this._objectRenderer._waitingRenderList}set _waitingRenderList(e){this._objectRenderer._waitingRenderList=e}get renderPassId(){return this._objectRenderer.renderPassId}get renderPassIds(){return this._objectRenderer.renderPassIds}get currentRefreshId(){return this._objectRenderer.currentRefreshId}setMaterialForRendering(e,t){this._objectRenderer.setMaterialForRendering(e,t)}get isMulti(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.isMulti)!=null?t:!1}get renderTargetOptions(){return this._renderTargetOptions}get renderTarget(){return this._renderTarget}_onRatioRescale(){this._sizeRatio&&this.resize(this._initialSizeParameter)}set boundingBoxSize(e){if(this._boundingBoxSize&&this._boundingBoxSize.equals(e))return;this._boundingBoxSize=e;let t=this.getScene();t&&t.markAllMaterialsAsDirty(1)}get boundingBoxSize(){return this._boundingBoxSize}get depthStencilTexture(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e._depthStencilTexture)!=null?t:null}constructor(e,t,i,r=!1,s=!0,a=0,o=!1,l=ge.TRILINEAR_SAMPLINGMODE,c=!0,f=!1,d=!1,h=5,u=!1,m,_,p=!1,g=!1){var R,M,y,C,L,w,G;let v,x=!0,S,E=!1;if(typeof r=="object"){let O=r;r=!!O.generateMipMaps,s=(R=O.doNotChangeAspectRatio)!=null?R:!0,a=(M=O.type)!=null?M:0,o=!!O.isCube,l=(y=O.samplingMode)!=null?y:ge.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,h=(L=O.format)!=null?L:5,u=!!O.delayAllocation,m=O.samples,_=O.creationFlags,p=!!O.noColorAttachment,g=!!O.useSRGBBuffer,v=O.colorAttachment,x=(w=O.gammaSpace)!=null?w:x,S=O.existingObjectRenderer,E=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,h),this.ignoreCameraViewport=!1,this.onBeforeBindObservable=new ie,this.onAfterUnbindObservable=new ie,this.onClearObservable=new ie,this.onResizeObservable=new ie,this._cleared=!1,this.skipInitialClear=!1,this._samples=1,this._canRescale=!0,this._renderTarget=null,this._dontDisposeObjectRenderer=!1,this.boundingBoxPosition=b.Zero(),this._disableEngineStages=!1,this._dumpToolsLoading=!1,i=this.getScene(),!i)return;let T=this.getScene().getEngine();this._gammaSpace=x,this._coordinatesMode=ge.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!S,this._processSizeParameter(t),this._objectRenderer=S!=null?S:new Ca(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:E}),this._onBeforeRenderingManagerRenderObserver=this._objectRenderer.onBeforeRenderingManagerRenderObservable.add(()=>{var N;let O=this._scene;if(!this._disableEngineStages)for(let B of O._beforeRenderTargetClearStage)B.action(this,this._currentFaceIndex,this._currentLayer);if(this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(T):this.skipInitialClear||T.clear((N=this.clearColor)!=null?N:O.clearColor,!0,!0,!0),this._doNotChangeAspectRatio||O.updateTransformMatrix(!0),!this._disableEngineStages)for(let B of O._beforeRenderTargetDrawStage)B.action(this,this._currentFaceIndex,this._currentLayer);T._debugPushGroup&&T._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,J;if(T._debugPopGroup&&T._debugPopGroup(),!this._disableEngineStages)for(let Q of this._scene._afterRenderTargetDrawStage)Q.action(this,this._currentFaceIndex,this._currentLayer);let O=(B=(N=this._texture)==null?void 0:N.generateMipMaps)!=null?B:!1;if(this._texture&&(this._texture.generateMipMaps=!1),this._postProcessManager?this._postProcessManager._finalizeFrame(!1,(V=this._renderTarget)!=null?V:void 0,this._currentFaceIndex,this._postProcesses,this.ignoreCameraViewport):this._currentUseCameraPostProcess&&this._scene.postProcessManager._finalizeFrame(!1,(J=this._renderTarget)!=null?J:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let Q of this._scene._afterRenderTargetPostProcessStage)Q.action(this,this._currentFaceIndex,this._currentLayer);this._texture&&(this._texture.generateMipMaps=O),this._doNotChangeAspectRatio||this._scene.updateTransformMatrix(!0),this._currentDumpForDebug&&(this._dumpTools?this._dumpTools.DumpFramebuffer(this.getRenderWidth(),this.getRenderHeight(),T):ee.Error("dumpTools module is still being loaded. To speed up the process import dump tools directly in your project"))}),this._onFastPathRenderObserver=this._objectRenderer.onFastPathRenderObservable.add(()=>{this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(T):this.skipInitialClear||T.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=T.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(G=this._format)!=null?G:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:_,noColorAttachment:p,useSRGBBuffer:g,colorAttachment:v,label:this.name},this.samplingMode===ge.NEAREST_SAMPLINGMODE&&(this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE),u||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=ge.INVCUBIC_MODE,this._textureMatrix=q.Identity()):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,m!==void 0&&(this.samples=m)))}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;(o=this._renderTarget)==null||o.createDepthStencilTexture(e,t,i,r,s,a)}_processSizeParameter(e){if(e.ratio){this._sizeRatio=e.ratio;let t=this._getEngine();this._size={width:this._bestReflectionRenderTargetDimension(t.getRenderWidth(),this._sizeRatio),height:this._bestReflectionRenderTargetDimension(t.getRenderHeight(),this._sizeRatio)}}else this._size=e}get samples(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.samples)!=null?t:this._samples}set samples(e){this._renderTarget&&(this._samples=this._renderTarget.setSamples(e))}addPostProcess(e){if(!this._postProcessManager){let t=this.getScene();if(!t)return;this._postProcessManager=new ic(t),this._postProcesses=new Array}this._postProcesses.push(e),this._postProcesses[0].autoClear=!1}clearPostProcesses(e=!1){if(this._postProcesses){if(e)for(let t of this._postProcesses)t.dispose();this._postProcesses=[]}}removePostProcess(e){if(!this._postProcesses)return;let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses.splice(t,1),this._postProcesses.length>0&&(this._postProcesses[0].autoClear=!1))}resetRefreshCounter(){this._objectRenderer.resetRefreshCounter()}get refreshRate(){return this._objectRenderer.refreshRate}set refreshRate(e){this._objectRenderer.refreshRate=e}_shouldRender(){return this._objectRenderer.shouldRender()}getRenderSize(){return this.getRenderWidth()}getRenderWidth(){return this._size.width?this._size.width:this._size}getRenderHeight(){return this._size.width?this._size.height:this._size}getRenderLayers(){let e=this._size.layers;if(e)return e;let t=this._size.depth;return t||0}disableRescaling(){this._canRescale=!1}get canRescale(){return this._canRescale}scale(e){let t=Math.max(1,this.getRenderSize()*e);this.resize(t)}getReflectionTextureMatrix(){return this.isCube?this._textureMatrix:super.getReflectionTextureMatrix()}resize(e){var r;let t=this.isCube;(r=this._renderTarget)==null||r.dispose(),this._renderTarget=null;let i=this.getScene();i&&(this._processSizeParameter(e),t?this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,this._renderTargetOptions.samples!==void 0&&(this.samples=this._renderTargetOptions.samples),this.onResizeObservable.hasObservers()&&this.onResizeObservable.notifyObservers(this))}render(e=!1,t=!1){this._render(e,t)}isReadyForRendering(){this._dumpToolsLoading||(this._dumpToolsLoading=!0,Promise.resolve().then(()=>(wC(),MV)).then(t=>this._dumpTools=t)),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight());let e=this._objectRenderer._checkReadiness();return this.onAfterUnbindObservable.notifyObservers(this),this._objectRenderer.finishRender(),e}_render(e=!1,t=!1){let i=this.getScene();if(!i)return;this.useCameraPostProcesses!==void 0&&(e=this.useCameraPostProcesses);let r=i.getEngine();if(r._debugPushGroup&&r._debugPushGroup(`Render to ${this.name}`),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight()),(this.is2DArray||this.is3D)&&!this.isMulti)for(let s=0;s{this.onAfterRenderObservable.notifyObservers(t)})}_prepareFrame(e,t,i,r){this._postProcessManager?this._prePassEnabled||this._postProcessManager._prepareFrame(this._texture,this._postProcesses)||this._bindFrameBuffer(t,i):(!r||!e.postProcessManager._prepareFrame(this._texture))&&this._bindFrameBuffer(t,i)}_renderToTarget(e,t,i,r=0){let s=this.getScene();if(!s)return;let a=s.getEngine();this._currentFaceIndex=e,this._currentLayer=r,this._currentUseCameraPostProcess=t,this._currentDumpForDebug=i,this._prepareFrame(s,e,r,t),this._objectRenderer.render(e+r,!0),this._unbindFrameBuffer(a,e),this._texture&&this.isCube&&e===5&&a.generateMipMapsForCubemap(this._texture,!0)}setRenderingOrder(e,t=null,i=null,r=null){this._objectRenderer.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t){this._objectRenderer.setRenderingAutoClearDepthStencil(e,t)}clone(){let e=this.getSize(),t=new n(this.name,e,this.getScene(),this._renderTargetOptions.generateMipMaps,this._doNotChangeAspectRatio,this._renderTargetOptions.type,this.isCube,this._renderTargetOptions.samplingMode,this._renderTargetOptions.generateDepthBuffer,this._renderTargetOptions.generateStencilBuffer,void 0,this._renderTargetOptions.format,void 0,this._renderTargetOptions.samples);return t.hasAlpha=this.hasAlpha,t.level=this.level,t.coordinatesMode=this.coordinatesMode,this.renderList&&(t.renderList=this.renderList.slice(0)),t}serialize(){if(!this.name)return null;let e=super.serialize();if(e.renderTargetSize=this.getRenderSize(),e.renderList=[],this.renderList)for(let t=0;t=0&&e.customRenderTargets.splice(t,1);for(let r of e.cameras)t=r.customRenderTargets.indexOf(this),t>=0&&r.customRenderTargets.splice(t,1);(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null,this._texture=null,super.dispose()}_rebuild(){this._objectRenderer._rebuild(),this._postProcessManager&&this._postProcessManager._rebuild()}freeRenderingGroups(){this._objectRenderer.freeRenderingGroups()}getViewCount(){return 1}};kr.REFRESHRATE_RENDER_ONCE=Ca.REFRESHRATE_RENDER_ONCE;kr.REFRESHRATE_RENDER_ONEVERYFRAME=Ca.REFRESHRATE_RENDER_ONEVERYFRAME;kr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ca.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;ge._CreateRenderTargetTexture=(n,e,t,i,r)=>new kr(n,e,t,i)});var Ri,rc=I(()=>{Gt();So();hi();ke();Zd();Vt();br();Yi();Vr();uo();lh();Ie.prototype.setTextureFromPostProcess=function(n,e,t){var r;let i=null;e&&(e._forcedOutputTexture?i=e._forcedOutputTexture:e._textures.data[e._currentRenderTextureInd]&&(i=e._textures.data[e._currentRenderTextureInd])),this._bindTexture(n,(r=i==null?void 0:i.texture)!=null?r:null,t)};Ie.prototype.setTextureFromPostProcessOutput=function(n,e,t){var i,r;this._bindTexture(n,(r=(i=e==null?void 0:e._outputTexture)==null?void 0:i.texture)!=null?r:null,t)};or.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};or.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Ri=class n{static get ForceGLSL(){return Yr.ForceGLSL}static set ForceGLSL(e){Yr.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){Yr.RegisterShaderCodeProcessing(e,t)}get name(){return this._effectWrapper.name}set name(e){this._effectWrapper.name=e}get alphaMode(){return this._effectWrapper.alphaMode}set alphaMode(e){this._effectWrapper.alphaMode=e}get samples(){return this._samples}set samples(e){this._samples=Math.min(e,this._engine.getCaps().maxMSAASamples),this._textures.forEach(t=>{t.setSamples(this._samples)})}get shaderLanguage(){return this._shaderLanguage}getEffectName(){return this._fragmentUrl}set onActivate(e){this._onActivateObserver&&this.onActivateObservable.remove(this._onActivateObserver),e&&(this._onActivateObserver=this.onActivateObservable.add(e))}set onSizeChanged(e){this._onSizeChangedObserver&&this.onSizeChangedObservable.remove(this._onSizeChangedObserver),this._onSizeChangedObserver=this.onSizeChangedObservable.add(e)}set onApply(e){this._onApplyObserver&&this.onApplyObservable.remove(this._onApplyObserver),this._onApplyObserver=this.onApplyObservable.add(e)}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}get inputTexture(){return this._textures.data[this._currentRenderTextureInd]}set inputTexture(e){this._forcedOutputTexture=e}restoreDefaultInputTexture(){this._forcedOutputTexture&&(this._forcedOutputTexture=null,this.markTextureDirty())}getCamera(){return this._camera}get texelSize(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.texelSize:(this._forcedOutputTexture&&this._texelSize.copyFromFloats(1/this._forcedOutputTexture.width,1/this._forcedOutputTexture.height),this._texelSize)}constructor(e,t,i,r,s,a,o=1,l,c,f=null,d=0,h="postprocess",u,m=!1,_=5,p,g){var E,T,R,M,y,C,L,w,G,O,N,B;this._parentContainer=null,this.width=-1,this.height=-1,this.nodeMaterialSource=null,this._outputTexture=null,this.autoClear=!0,this.forceAutoClearInAlphaMode=!1,this.animations=[],this.enablePixelPerfectMode=!1,this.forceFullscreenViewport=!0,this.scaleMode=1,this.alwaysForcePOT=!1,this._samples=1,this.adaptScaleToCurrentViewport=!1,this.doNotSerialize=!1,this._webGPUReady=!1,this._reusable=!1,this._renderId=0,this.externalTextureSamplerBinding=!1,this._textures=new Vi(2),this._textureCache=[],this._currentRenderTextureInd=0,this._scaleRatio=new Fe(1,1),this._texelSize=Fe.Zero(),this.onActivateObservable=new ie,this.onSizeChangedObservable=new ie,this.onApplyObservable=new ie,this.onBeforeRenderObservable=new ie,this.onAfterRenderObservable=new ie,this.onDisposeObservable=new ie;let v=1,x=null,S;if(i&&!Array.isArray(i)){let V=i;i=(E=V.uniforms)!=null?E:null,r=(T=V.samplers)!=null?T:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(y=V.samplingMode)!=null?y:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` -`):(C=V.defines)!=null?C:null,d=(L=V.textureType)!=null?L:0,h=(w=V.vertexUrl)!=null?w:"postprocess",u=V.indexParameters,m=(G=V.blockCompilation)!=null?G:!1,_=(O=V.textureFormat)!=null?O:5,p=(N=V.shaderLanguage)!=null?N:0,x=(B=V.uniformBuffers)!=null?B:null,g=V.extraInitializations,S=V.effectWrapper}else s&&(typeof s=="number"?v=s:v={width:s.width,height:s.height});if(this._useExistingThinPostProcess=!!S,this._effectWrapper=S!=null?S:new Yr({name:e,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:t,engine:l||(a==null?void 0:a.getScene().getEngine()),uniforms:i,samplers:r,uniformBuffers:x,defines:f,vertexUrl:h,indexParameters:u,blockCompilation:!0,shaderLanguage:p,extraInitializations:void 0}),this.name=e,this.onEffectCreatedObservable=this._effectWrapper.onEffectCreatedObservable,a!=null?(this._camera=a,this._scene=a.getScene(),a.attachPostProcess(this),this._engine=this._scene.getEngine(),this._scene.addPostProcess(this),this.uniqueId=this._scene.getUniqueId()):l&&(this._engine=l,this._engine.postProcesses.push(this)),this._options=v,this.renderTargetSamplingMode=o||1,this._reusable=c||!1,this._textureType=d,this._textureFormat=_,this._shaderLanguage=p||0,this._samplers=r||[],this._samplers.indexOf("textureSampler")===-1&&this._samplers.push("textureSampler"),this._fragmentUrl=t,this._vertexUrl=h,this._parameters=i||[],this._parameters.indexOf("scale")===-1&&this._parameters.push("scale"),this._uniformBuffers=x||[],this._indexParameters=u,!this._useExistingThinPostProcess){this._webGPUReady=this._shaderLanguage===1;let V=[];this._gatherImports(this._engine.isWebGPU&&!n.ForceGLSL,V),this._effectWrapper._webGPUReady=this._webGPUReady,this._effectWrapper._postConstructor(m,f,g,V)}}_gatherImports(e=!1,t){e&&this._webGPUReady?t.push(Promise.all([Promise.resolve().then(()=>(yC(),RV))])):t.push(Promise.all([Promise.resolve().then(()=>(MC(),AV))]))}getClassName(){return"PostProcess"}getEngine(){return this._engine}getEffect(){return this._effectWrapper.drawWrapper.effect}shareOutputWith(e){return this._disposeTextures(),this._shareOutputWithPostProcess=e,this}useOwnOutput(){this._textures.length==0&&(this._textures=new Vi(2)),this._shareOutputWithPostProcess=null}updateEffect(e=null,t=null,i=null,r,s,a,o,l){this._effectWrapper.updateEffect(e,t,i,r,s,a,o,l),this._postProcessDefines=Array.isArray(this._effectWrapper.options.defines)?this._effectWrapper.options.defines.join(` -`):this._effectWrapper.options.defines}isReusable(){return this._reusable}markTextureDirty(){this.width=-1}_createRenderTargetTexture(e,t,i=0){for(let s=0;s=0;t--)if(e-this._textureCache[t].lastUsedRenderId>100){let i=!1;for(let r=0;r0&&this._textures.reset(),this.width=e,this.height=t;let a=null;if(i){for(let c=0;c{g.samples!==this.samples&&this._engine.updateRenderTargetTextureSampleCount(g,this.samples)}),this._flushTextureCache(),this._renderId++}return u||(u=this._getTarget()),this.enablePixelPerfectMode?(this._scaleRatio.copyFromFloats(l/f,c/d),this._engine.bindFramebuffer(u,0,l,c,this.forceFullscreenViewport)):(this._scaleRatio.copyFromFloats(1,1),this._engine.bindFramebuffer(u,0,void 0,void 0,this.forceFullscreenViewport)),(p=(_=this._engine)._debugInsertMarker)==null||p.call(_,`post process ${this.name} input`),this.onActivateObservable.notifyObservers(r),this.autoClear&&(this.alphaMode===0||this.forceAutoClearInAlphaMode)&&this._engine.clear(this.clearColor?this.clearColor:s.clearColor,s._allowPostProcessClearColor,!0,!0),this._reusable&&(this._currentRenderTextureInd=(this._currentRenderTextureInd+1)%2),u}get isSupported(){return this._effectWrapper.drawWrapper.effect.isSupported}get aspectRatio(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.aspectRatio:this._forcedOutputTexture?this._forcedOutputTexture.width/this._forcedOutputTexture.height:this.width/this.height}isReady(){return this._effectWrapper.isReady()}apply(){if(!this._effectWrapper.isReady())return null;this._engine.enableEffect(this._effectWrapper.drawWrapper),this._engine.setState(!1),this._engine.setDepthBuffer(!1),this._engine.setDepthWrite(!1),this.alphaConstants&&this.getEngine().setAlphaConstants(this.alphaConstants.r,this.alphaConstants.g,this.alphaConstants.b,this.alphaConstants.a),this._engine.setAlphaMode(this.alphaMode);let e;return this._shareOutputWithPostProcess?e=this._shareOutputWithPostProcess.inputTexture:this._forcedOutputTexture?e=this._forcedOutputTexture:e=this.inputTexture,this.externalTextureSamplerBinding||this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler",e==null?void 0:e.texture),this._effectWrapper.drawWrapper.effect.setVector2("scale",this._scaleRatio),this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect),this._effectWrapper.bind(!0),this._effectWrapper.drawWrapper.effect}_disposeTextures(){if(this._shareOutputWithPostProcess||this._forcedOutputTexture){this._disposeTextureCache();return}this._disposeTextureCache(),this._textures.dispose()}_disposeTextureCache(){for(let e=this._textureCache.length-1;e>=0;e--)this._textureCache[e].texture.dispose();this._textureCache.length=0}setPrePassRenderer(e){return this._prePassEffectConfiguration?(this._prePassEffectConfiguration=e.addEffectConfiguration(this._prePassEffectConfiguration),this._prePassEffectConfiguration.enabled=!0,!0):!1}dispose(e){e=e||this._camera,this._useExistingThinPostProcess||this._effectWrapper.dispose(),this._disposeTextures(),this._scene&&this._scene.removePostProcess(this);let t;if(this._parentContainer&&(t=this._parentContainer.postProcesses.indexOf(this),t>-1&&this._parentContainer.postProcesses.splice(t,1),this._parentContainer=null),t=this._engine.postProcesses.indexOf(this),t!==-1&&this._engine.postProcesses.splice(t,1),this.onDisposeObservable.notifyObservers(),!!e){if(e.detachPostProcess(this),t=e._postProcesses.indexOf(this),t===0&&e._postProcesses.length>0){let i=this._camera._getFirstPostProcess();i&&i.markTextureDirty()}this.onActivateObservable.clear(),this.onAfterRenderObservable.clear(),this.onApplyObservable.clear(),this.onBeforeRenderObservable.clear(),this.onSizeChangedObservable.clear(),this.onEffectCreatedObservable.clear()}}serialize(){let e=it.Serialize(this),t=this.getCamera()||this._scene&&this._scene.activeCamera;return e.customType="BABYLON."+this.getClassName(),e.cameraId=t?t.id:null,e.reusable=this._reusable,e.textureType=this._textureType,e.fragmentUrl=this._fragmentUrl,e.parameters=this._parameters,e.samplers=this._samplers,e.uniformBuffers=this._uniformBuffers,e.options=this._options,e.defines=this._postProcessDefines,e.textureFormat=this._textureFormat,e.vertexUrl=this._vertexUrl,e.indexParameters=this._indexParameters,e}clone(){let e=this.serialize();e._engine=this._engine,e.cameraId=null;let t=n.Parse(e,this._scene,"");return t?(t.onActivateObservable=this.onActivateObservable.clone(),t.onSizeChangedObservable=this.onSizeChangedObservable.clone(),t.onApplyObservable=this.onApplyObservable.clone(),t.onBeforeRenderObservable=this.onBeforeRenderObservable.clone(),t.onAfterRenderObservable=this.onAfterRenderObservable.clone(),t._prePassEffectConfiguration=this._prePassEffectConfiguration,t):null}static Parse(e,t,i){let r=xn(e.customType);if(!r||!r._Parse)return null;let s=t?t.getCameraById(e.cameraId):null;return r._Parse(e,s,t,i)}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.fragmentUrl,e.parameters,e.samplers,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable,e.defines,e.textureType,e.vertexUrl,e.indexParameters,!1,e.textureFormat),e,i,r)}};P([F()],Ri.prototype,"uniqueId",void 0);P([F()],Ri.prototype,"name",null);P([F()],Ri.prototype,"width",void 0);P([F()],Ri.prototype,"height",void 0);P([F()],Ri.prototype,"renderTargetSamplingMode",void 0);P([Em()],Ri.prototype,"clearColor",void 0);P([F()],Ri.prototype,"autoClear",void 0);P([F()],Ri.prototype,"forceAutoClearInAlphaMode",void 0);P([F()],Ri.prototype,"alphaMode",null);P([F()],Ri.prototype,"alphaConstants",void 0);P([F()],Ri.prototype,"enablePixelPerfectMode",void 0);P([F()],Ri.prototype,"forceFullscreenViewport",void 0);P([F()],Ri.prototype,"scaleMode",void 0);P([F()],Ri.prototype,"alwaysForcePOT",void 0);P([F("samples")],Ri.prototype,"_samples",void 0);P([F()],Ri.prototype,"adaptScaleToCurrentViewport",void 0);Ft("BABYLON.PostProcess",Ri)});var yV={};Be(yV,{passPixelShaderWGSL:()=>mle});var FC,IV,mle,CV=I(()=>{k();FC="passPixelShader",IV=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +{gl_FragColor=texture2D(textureSampler,vUV);}`;A.ShadersStore[OC]||(A.ShadersStore[OC]=yV);ule={name:OC,shader:yV}});var CV={};Be(CV,{Dispose:()=>BC,DumpData:()=>ix,DumpDataAsync:()=>xg,DumpFramebuffer:()=>FC,DumpTools:()=>gle,EncodeImageAsync:()=>_le});async function mle(){var o,l;let n=(l=(o=Oe.LastCreatedEngine)==null?void 0:o.createCanvas(100,100))!=null?l:new OffscreenCanvas(100,100);n instanceof OffscreenCanvas&&ee.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");let{ThinEngine:e}=await Promise.resolve().then(()=>(os(),bU));if(!e.IsSupported)throw new Error("DumpData: No WebGL context available. Cannot dump data.");let t={preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1},i=new e(n,!1,t);Oe.Instances.pop(),Oe.OnEnginesDisposedObservable.add(c=>{i&&c!==i&&!i.isDisposed&&Oe.Instances.length===0&&BC()}),i.getCaps().parallelShaderCompile=void 0;let r=new tx(i),{passPixelShader:s}=await Promise.resolve().then(()=>(wC(),NC)),a=new Yr({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function ple(){return xf||(xf=mle()),await xf}async function FC(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);ix(n,e,l,i,r,s,!0,void 0,a)}async function xg(n,e,t,i="image/png",r,s=!1,a=!1,o){if(t instanceof Float32Array){let f=new Uint8Array(t.length),d=t.length;for(;d--;){let h=t[d];f[d]=Math.round(wt(h)*255)}t=f}let l=await Ag.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&_e.DownloadBlob(l,r),l.type!==i&&ee.Warn(`DumpData: The requested mimeType '${i}' is not supported. The result has mimeType '${l.type}' instead.`);let c=await l.arrayBuffer();return a?c:`data:${i};base64,${Sm(c)}`}function ix(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),xg(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function BC(){xf&&(xf==null||xf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),xf=null)}var xf,Ag,_le,gle,vle,UC=I(()=>{Gt();lh();yi();Vn();Ni();Pt();_g();Vt();xf=null;Ag=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await ple(),l=o.dumpEngine;l.engine.setSize(t,i,!0);let c=l.engine.createRawTexture(e,t,i,5,!1,!s,1);return l.renderer.setViewport(),l.renderer.applyEffectWrapper(l.wrapper),l.wrapper.effect._bindTexture("textureSampler",c),l.renderer.draw(),c.dispose(),await new Promise((f,d)=>{_e.ToBlob(o.canvas,h=>{h?f(h):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([ws],Ag,"EncodeImageAsync",null);_le=Ag.EncodeImageAsync;gle={DumpData:ix,DumpDataAsync:xg,DumpFramebuffer:FC,Dispose:BC},vle=()=>{_e.DumpData=ix,_e.DumpDataAsync=xg,_e.DumpFramebuffer=FC};vle()});var kr,Rf=I(()=>{hi();ke();Gr();$A();uo();Zd();Pt();IC();or.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};kr=class n extends ge{get renderListPredicate(){return this._objectRenderer.renderListPredicate}set renderListPredicate(e){this._objectRenderer.renderListPredicate=e}get renderList(){return this._objectRenderer.renderList}set renderList(e){this._objectRenderer.renderList=e}get particleSystemList(){return this._objectRenderer.particleSystemList}set particleSystemList(e){this._objectRenderer.particleSystemList=e}get getCustomRenderList(){return this._objectRenderer.getCustomRenderList}set getCustomRenderList(e){this._objectRenderer.getCustomRenderList=e}get renderParticles(){return this._objectRenderer.renderParticles}set renderParticles(e){this._objectRenderer.renderParticles=e}get renderSprites(){return this._objectRenderer.renderSprites}set renderSprites(e){this._objectRenderer.renderSprites=e}get enableBoundingBoxRendering(){return this._objectRenderer.enableBoundingBoxRendering}set enableBoundingBoxRendering(e){this._objectRenderer.enableBoundingBoxRendering=e}get enableOutlineRendering(){return this._objectRenderer.enableOutlineRendering}set enableOutlineRendering(e){this._objectRenderer.enableOutlineRendering=e}get forceLayerMaskCheck(){return this._objectRenderer.forceLayerMaskCheck}set forceLayerMaskCheck(e){this._objectRenderer.forceLayerMaskCheck=e}get activeCamera(){return this._objectRenderer.activeCamera}set activeCamera(e){this._objectRenderer.activeCamera=e}get cameraForLOD(){return this._objectRenderer.cameraForLOD}set cameraForLOD(e){this._objectRenderer.cameraForLOD=e}get disableImageProcessing(){return this._objectRenderer.disableImageProcessing}set disableImageProcessing(e){this._objectRenderer.disableImageProcessing=e}get customIsReadyFunction(){return this._objectRenderer.customIsReadyFunction}set customIsReadyFunction(e){this._objectRenderer.customIsReadyFunction=e}get customRenderFunction(){return this._objectRenderer.customRenderFunction}set customRenderFunction(e){this._objectRenderer.customRenderFunction=e}get postProcesses(){return this._postProcesses}get _prePassEnabled(){return!!this._prePassRenderTarget&&this._prePassRenderTarget.enabled}set onAfterUnbind(e){this._onAfterUnbindObserver&&this.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=this.onAfterUnbindObservable.add(e)}get onBeforeRenderObservable(){return this._objectRenderer.onBeforeRenderObservable}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}get onAfterRenderObservable(){return this._objectRenderer.onAfterRenderObservable}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}set onClear(e){this._onClearObserver&&this.onClearObservable.remove(this._onClearObserver),this._onClearObserver=this.onClearObservable.add(e)}get _waitingRenderList(){return this._objectRenderer._waitingRenderList}set _waitingRenderList(e){this._objectRenderer._waitingRenderList=e}get renderPassId(){return this._objectRenderer.renderPassId}get renderPassIds(){return this._objectRenderer.renderPassIds}get currentRefreshId(){return this._objectRenderer.currentRefreshId}setMaterialForRendering(e,t){this._objectRenderer.setMaterialForRendering(e,t)}get isMulti(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.isMulti)!=null?t:!1}get renderTargetOptions(){return this._renderTargetOptions}get renderTarget(){return this._renderTarget}_onRatioRescale(){this._sizeRatio&&this.resize(this._initialSizeParameter)}set boundingBoxSize(e){if(this._boundingBoxSize&&this._boundingBoxSize.equals(e))return;this._boundingBoxSize=e;let t=this.getScene();t&&t.markAllMaterialsAsDirty(1)}get boundingBoxSize(){return this._boundingBoxSize}get depthStencilTexture(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e._depthStencilTexture)!=null?t:null}constructor(e,t,i,r=!1,s=!0,a=0,o=!1,l=ge.TRILINEAR_SAMPLINGMODE,c=!0,f=!1,d=!1,h=5,u=!1,m,_,p=!1,g=!1){var R,M,y,C,L,w,G;let v,x=!0,S,E=!1;if(typeof r=="object"){let O=r;r=!!O.generateMipMaps,s=(R=O.doNotChangeAspectRatio)!=null?R:!0,a=(M=O.type)!=null?M:0,o=!!O.isCube,l=(y=O.samplingMode)!=null?y:ge.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,h=(L=O.format)!=null?L:5,u=!!O.delayAllocation,m=O.samples,_=O.creationFlags,p=!!O.noColorAttachment,g=!!O.useSRGBBuffer,v=O.colorAttachment,x=(w=O.gammaSpace)!=null?w:x,S=O.existingObjectRenderer,E=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,h),this.ignoreCameraViewport=!1,this.onBeforeBindObservable=new ie,this.onAfterUnbindObservable=new ie,this.onClearObservable=new ie,this.onResizeObservable=new ie,this._cleared=!1,this.skipInitialClear=!1,this._samples=1,this._canRescale=!0,this._renderTarget=null,this._dontDisposeObjectRenderer=!1,this.boundingBoxPosition=b.Zero(),this._disableEngineStages=!1,this._dumpToolsLoading=!1,i=this.getScene(),!i)return;let T=this.getScene().getEngine();this._gammaSpace=x,this._coordinatesMode=ge.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!S,this._processSizeParameter(t),this._objectRenderer=S!=null?S:new Ca(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:E}),this._onBeforeRenderingManagerRenderObserver=this._objectRenderer.onBeforeRenderingManagerRenderObservable.add(()=>{var N;let O=this._scene;if(!this._disableEngineStages)for(let B of O._beforeRenderTargetClearStage)B.action(this,this._currentFaceIndex,this._currentLayer);if(this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(T):this.skipInitialClear||T.clear((N=this.clearColor)!=null?N:O.clearColor,!0,!0,!0),this._doNotChangeAspectRatio||O.updateTransformMatrix(!0),!this._disableEngineStages)for(let B of O._beforeRenderTargetDrawStage)B.action(this,this._currentFaceIndex,this._currentLayer);T._debugPushGroup&&T._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,J;if(T._debugPopGroup&&T._debugPopGroup(),!this._disableEngineStages)for(let Q of this._scene._afterRenderTargetDrawStage)Q.action(this,this._currentFaceIndex,this._currentLayer);let O=(B=(N=this._texture)==null?void 0:N.generateMipMaps)!=null?B:!1;if(this._texture&&(this._texture.generateMipMaps=!1),this._postProcessManager?this._postProcessManager._finalizeFrame(!1,(V=this._renderTarget)!=null?V:void 0,this._currentFaceIndex,this._postProcesses,this.ignoreCameraViewport):this._currentUseCameraPostProcess&&this._scene.postProcessManager._finalizeFrame(!1,(J=this._renderTarget)!=null?J:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let Q of this._scene._afterRenderTargetPostProcessStage)Q.action(this,this._currentFaceIndex,this._currentLayer);this._texture&&(this._texture.generateMipMaps=O),this._doNotChangeAspectRatio||this._scene.updateTransformMatrix(!0),this._currentDumpForDebug&&(this._dumpTools?this._dumpTools.DumpFramebuffer(this.getRenderWidth(),this.getRenderHeight(),T):ee.Error("dumpTools module is still being loaded. To speed up the process import dump tools directly in your project"))}),this._onFastPathRenderObserver=this._objectRenderer.onFastPathRenderObservable.add(()=>{this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(T):this.skipInitialClear||T.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=T.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(G=this._format)!=null?G:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:_,noColorAttachment:p,useSRGBBuffer:g,colorAttachment:v,label:this.name},this.samplingMode===ge.NEAREST_SAMPLINGMODE&&(this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE),u||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=ge.INVCUBIC_MODE,this._textureMatrix=q.Identity()):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,m!==void 0&&(this.samples=m)))}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;(o=this._renderTarget)==null||o.createDepthStencilTexture(e,t,i,r,s,a)}_processSizeParameter(e){if(e.ratio){this._sizeRatio=e.ratio;let t=this._getEngine();this._size={width:this._bestReflectionRenderTargetDimension(t.getRenderWidth(),this._sizeRatio),height:this._bestReflectionRenderTargetDimension(t.getRenderHeight(),this._sizeRatio)}}else this._size=e}get samples(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.samples)!=null?t:this._samples}set samples(e){this._renderTarget&&(this._samples=this._renderTarget.setSamples(e))}addPostProcess(e){if(!this._postProcessManager){let t=this.getScene();if(!t)return;this._postProcessManager=new ic(t),this._postProcesses=new Array}this._postProcesses.push(e),this._postProcesses[0].autoClear=!1}clearPostProcesses(e=!1){if(this._postProcesses){if(e)for(let t of this._postProcesses)t.dispose();this._postProcesses=[]}}removePostProcess(e){if(!this._postProcesses)return;let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses.splice(t,1),this._postProcesses.length>0&&(this._postProcesses[0].autoClear=!1))}resetRefreshCounter(){this._objectRenderer.resetRefreshCounter()}get refreshRate(){return this._objectRenderer.refreshRate}set refreshRate(e){this._objectRenderer.refreshRate=e}_shouldRender(){return this._objectRenderer.shouldRender()}getRenderSize(){return this.getRenderWidth()}getRenderWidth(){return this._size.width?this._size.width:this._size}getRenderHeight(){return this._size.width?this._size.height:this._size}getRenderLayers(){let e=this._size.layers;if(e)return e;let t=this._size.depth;return t||0}disableRescaling(){this._canRescale=!1}get canRescale(){return this._canRescale}scale(e){let t=Math.max(1,this.getRenderSize()*e);this.resize(t)}getReflectionTextureMatrix(){return this.isCube?this._textureMatrix:super.getReflectionTextureMatrix()}resize(e){var r;let t=this.isCube;(r=this._renderTarget)==null||r.dispose(),this._renderTarget=null;let i=this.getScene();i&&(this._processSizeParameter(e),t?this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,this._renderTargetOptions.samples!==void 0&&(this.samples=this._renderTargetOptions.samples),this.onResizeObservable.hasObservers()&&this.onResizeObservable.notifyObservers(this))}render(e=!1,t=!1){this._render(e,t)}isReadyForRendering(){this._dumpToolsLoading||(this._dumpToolsLoading=!0,Promise.resolve().then(()=>(UC(),CV)).then(t=>this._dumpTools=t)),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight());let e=this._objectRenderer._checkReadiness();return this.onAfterUnbindObservable.notifyObservers(this),this._objectRenderer.finishRender(),e}_render(e=!1,t=!1){let i=this.getScene();if(!i)return;this.useCameraPostProcesses!==void 0&&(e=this.useCameraPostProcesses);let r=i.getEngine();if(r._debugPushGroup&&r._debugPushGroup(`Render to ${this.name}`),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight()),(this.is2DArray||this.is3D)&&!this.isMulti)for(let s=0;s{this.onAfterRenderObservable.notifyObservers(t)})}_prepareFrame(e,t,i,r){this._postProcessManager?this._prePassEnabled||this._postProcessManager._prepareFrame(this._texture,this._postProcesses)||this._bindFrameBuffer(t,i):(!r||!e.postProcessManager._prepareFrame(this._texture))&&this._bindFrameBuffer(t,i)}_renderToTarget(e,t,i,r=0){let s=this.getScene();if(!s)return;let a=s.getEngine();this._currentFaceIndex=e,this._currentLayer=r,this._currentUseCameraPostProcess=t,this._currentDumpForDebug=i,this._prepareFrame(s,e,r,t),this._objectRenderer.render(e+r,!0),this._unbindFrameBuffer(a,e),this._texture&&this.isCube&&e===5&&a.generateMipMapsForCubemap(this._texture,!0)}setRenderingOrder(e,t=null,i=null,r=null){this._objectRenderer.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t){this._objectRenderer.setRenderingAutoClearDepthStencil(e,t)}clone(){let e=this.getSize(),t=new n(this.name,e,this.getScene(),this._renderTargetOptions.generateMipMaps,this._doNotChangeAspectRatio,this._renderTargetOptions.type,this.isCube,this._renderTargetOptions.samplingMode,this._renderTargetOptions.generateDepthBuffer,this._renderTargetOptions.generateStencilBuffer,void 0,this._renderTargetOptions.format,void 0,this._renderTargetOptions.samples);return t.hasAlpha=this.hasAlpha,t.level=this.level,t.coordinatesMode=this.coordinatesMode,this.renderList&&(t.renderList=this.renderList.slice(0)),t}serialize(){if(!this.name)return null;let e=super.serialize();if(e.renderTargetSize=this.getRenderSize(),e.renderList=[],this.renderList)for(let t=0;t=0&&e.customRenderTargets.splice(t,1);for(let r of e.cameras)t=r.customRenderTargets.indexOf(this),t>=0&&r.customRenderTargets.splice(t,1);(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null,this._texture=null,super.dispose()}_rebuild(){this._objectRenderer._rebuild(),this._postProcessManager&&this._postProcessManager._rebuild()}freeRenderingGroups(){this._objectRenderer.freeRenderingGroups()}getViewCount(){return 1}};kr.REFRESHRATE_RENDER_ONCE=Ca.REFRESHRATE_RENDER_ONCE;kr.REFRESHRATE_RENDER_ONEVERYFRAME=Ca.REFRESHRATE_RENDER_ONEVERYFRAME;kr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ca.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;ge._CreateRenderTargetTexture=(n,e,t,i,r)=>new kr(n,e,t,i)});var Ri,rc=I(()=>{Gt();So();hi();ke();Zd();Vt();br();Yi();Vr();uo();lh();Ie.prototype.setTextureFromPostProcess=function(n,e,t){var r;let i=null;e&&(e._forcedOutputTexture?i=e._forcedOutputTexture:e._textures.data[e._currentRenderTextureInd]&&(i=e._textures.data[e._currentRenderTextureInd])),this._bindTexture(n,(r=i==null?void 0:i.texture)!=null?r:null,t)};Ie.prototype.setTextureFromPostProcessOutput=function(n,e,t){var i,r;this._bindTexture(n,(r=(i=e==null?void 0:e._outputTexture)==null?void 0:i.texture)!=null?r:null,t)};or.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};or.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Ri=class n{static get ForceGLSL(){return Yr.ForceGLSL}static set ForceGLSL(e){Yr.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){Yr.RegisterShaderCodeProcessing(e,t)}get name(){return this._effectWrapper.name}set name(e){this._effectWrapper.name=e}get alphaMode(){return this._effectWrapper.alphaMode}set alphaMode(e){this._effectWrapper.alphaMode=e}get samples(){return this._samples}set samples(e){this._samples=Math.min(e,this._engine.getCaps().maxMSAASamples),this._textures.forEach(t=>{t.setSamples(this._samples)})}get shaderLanguage(){return this._shaderLanguage}getEffectName(){return this._fragmentUrl}set onActivate(e){this._onActivateObserver&&this.onActivateObservable.remove(this._onActivateObserver),e&&(this._onActivateObserver=this.onActivateObservable.add(e))}set onSizeChanged(e){this._onSizeChangedObserver&&this.onSizeChangedObservable.remove(this._onSizeChangedObserver),this._onSizeChangedObserver=this.onSizeChangedObservable.add(e)}set onApply(e){this._onApplyObserver&&this.onApplyObservable.remove(this._onApplyObserver),this._onApplyObserver=this.onApplyObservable.add(e)}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}get inputTexture(){return this._textures.data[this._currentRenderTextureInd]}set inputTexture(e){this._forcedOutputTexture=e}restoreDefaultInputTexture(){this._forcedOutputTexture&&(this._forcedOutputTexture=null,this.markTextureDirty())}getCamera(){return this._camera}get texelSize(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.texelSize:(this._forcedOutputTexture&&this._texelSize.copyFromFloats(1/this._forcedOutputTexture.width,1/this._forcedOutputTexture.height),this._texelSize)}constructor(e,t,i,r,s,a,o=1,l,c,f=null,d=0,h="postprocess",u,m=!1,_=5,p,g){var E,T,R,M,y,C,L,w,G,O,N,B;this._parentContainer=null,this.width=-1,this.height=-1,this.nodeMaterialSource=null,this._outputTexture=null,this.autoClear=!0,this.forceAutoClearInAlphaMode=!1,this.animations=[],this.enablePixelPerfectMode=!1,this.forceFullscreenViewport=!0,this.scaleMode=1,this.alwaysForcePOT=!1,this._samples=1,this.adaptScaleToCurrentViewport=!1,this.doNotSerialize=!1,this._webGPUReady=!1,this._reusable=!1,this._renderId=0,this.externalTextureSamplerBinding=!1,this._textures=new Vi(2),this._textureCache=[],this._currentRenderTextureInd=0,this._scaleRatio=new Fe(1,1),this._texelSize=Fe.Zero(),this.onActivateObservable=new ie,this.onSizeChangedObservable=new ie,this.onApplyObservable=new ie,this.onBeforeRenderObservable=new ie,this.onAfterRenderObservable=new ie,this.onDisposeObservable=new ie;let v=1,x=null,S;if(i&&!Array.isArray(i)){let V=i;i=(E=V.uniforms)!=null?E:null,r=(T=V.samplers)!=null?T:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(y=V.samplingMode)!=null?y:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` +`):(C=V.defines)!=null?C:null,d=(L=V.textureType)!=null?L:0,h=(w=V.vertexUrl)!=null?w:"postprocess",u=V.indexParameters,m=(G=V.blockCompilation)!=null?G:!1,_=(O=V.textureFormat)!=null?O:5,p=(N=V.shaderLanguage)!=null?N:0,x=(B=V.uniformBuffers)!=null?B:null,g=V.extraInitializations,S=V.effectWrapper}else s&&(typeof s=="number"?v=s:v={width:s.width,height:s.height});if(this._useExistingThinPostProcess=!!S,this._effectWrapper=S!=null?S:new Yr({name:e,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:t,engine:l||(a==null?void 0:a.getScene().getEngine()),uniforms:i,samplers:r,uniformBuffers:x,defines:f,vertexUrl:h,indexParameters:u,blockCompilation:!0,shaderLanguage:p,extraInitializations:void 0}),this.name=e,this.onEffectCreatedObservable=this._effectWrapper.onEffectCreatedObservable,a!=null?(this._camera=a,this._scene=a.getScene(),a.attachPostProcess(this),this._engine=this._scene.getEngine(),this._scene.addPostProcess(this),this.uniqueId=this._scene.getUniqueId()):l&&(this._engine=l,this._engine.postProcesses.push(this)),this._options=v,this.renderTargetSamplingMode=o||1,this._reusable=c||!1,this._textureType=d,this._textureFormat=_,this._shaderLanguage=p||0,this._samplers=r||[],this._samplers.indexOf("textureSampler")===-1&&this._samplers.push("textureSampler"),this._fragmentUrl=t,this._vertexUrl=h,this._parameters=i||[],this._parameters.indexOf("scale")===-1&&this._parameters.push("scale"),this._uniformBuffers=x||[],this._indexParameters=u,!this._useExistingThinPostProcess){this._webGPUReady=this._shaderLanguage===1;let V=[];this._gatherImports(this._engine.isWebGPU&&!n.ForceGLSL,V),this._effectWrapper._webGPUReady=this._webGPUReady,this._effectWrapper._postConstructor(m,f,g,V)}}_gatherImports(e=!1,t){e&&this._webGPUReady?t.push(Promise.all([Promise.resolve().then(()=>(DC(),IV))])):t.push(Promise.all([Promise.resolve().then(()=>(CC(),bV))]))}getClassName(){return"PostProcess"}getEngine(){return this._engine}getEffect(){return this._effectWrapper.drawWrapper.effect}shareOutputWith(e){return this._disposeTextures(),this._shareOutputWithPostProcess=e,this}useOwnOutput(){this._textures.length==0&&(this._textures=new Vi(2)),this._shareOutputWithPostProcess=null}updateEffect(e=null,t=null,i=null,r,s,a,o,l){this._effectWrapper.updateEffect(e,t,i,r,s,a,o,l),this._postProcessDefines=Array.isArray(this._effectWrapper.options.defines)?this._effectWrapper.options.defines.join(` +`):this._effectWrapper.options.defines}isReusable(){return this._reusable}markTextureDirty(){this.width=-1}_createRenderTargetTexture(e,t,i=0){for(let s=0;s=0;t--)if(e-this._textureCache[t].lastUsedRenderId>100){let i=!1;for(let r=0;r0&&this._textures.reset(),this.width=e,this.height=t;let a=null;if(i){for(let c=0;c{g.samples!==this.samples&&this._engine.updateRenderTargetTextureSampleCount(g,this.samples)}),this._flushTextureCache(),this._renderId++}return u||(u=this._getTarget()),this.enablePixelPerfectMode?(this._scaleRatio.copyFromFloats(l/f,c/d),this._engine.bindFramebuffer(u,0,l,c,this.forceFullscreenViewport)):(this._scaleRatio.copyFromFloats(1,1),this._engine.bindFramebuffer(u,0,void 0,void 0,this.forceFullscreenViewport)),(p=(_=this._engine)._debugInsertMarker)==null||p.call(_,`post process ${this.name} input`),this.onActivateObservable.notifyObservers(r),this.autoClear&&(this.alphaMode===0||this.forceAutoClearInAlphaMode)&&this._engine.clear(this.clearColor?this.clearColor:s.clearColor,s._allowPostProcessClearColor,!0,!0),this._reusable&&(this._currentRenderTextureInd=(this._currentRenderTextureInd+1)%2),u}get isSupported(){return this._effectWrapper.drawWrapper.effect.isSupported}get aspectRatio(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.aspectRatio:this._forcedOutputTexture?this._forcedOutputTexture.width/this._forcedOutputTexture.height:this.width/this.height}isReady(){return this._effectWrapper.isReady()}apply(){if(!this._effectWrapper.isReady())return null;this._engine.enableEffect(this._effectWrapper.drawWrapper),this._engine.setState(!1),this._engine.setDepthBuffer(!1),this._engine.setDepthWrite(!1),this.alphaConstants&&this.getEngine().setAlphaConstants(this.alphaConstants.r,this.alphaConstants.g,this.alphaConstants.b,this.alphaConstants.a),this._engine.setAlphaMode(this.alphaMode);let e;return this._shareOutputWithPostProcess?e=this._shareOutputWithPostProcess.inputTexture:this._forcedOutputTexture?e=this._forcedOutputTexture:e=this.inputTexture,this.externalTextureSamplerBinding||this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler",e==null?void 0:e.texture),this._effectWrapper.drawWrapper.effect.setVector2("scale",this._scaleRatio),this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect),this._effectWrapper.bind(!0),this._effectWrapper.drawWrapper.effect}_disposeTextures(){if(this._shareOutputWithPostProcess||this._forcedOutputTexture){this._disposeTextureCache();return}this._disposeTextureCache(),this._textures.dispose()}_disposeTextureCache(){for(let e=this._textureCache.length-1;e>=0;e--)this._textureCache[e].texture.dispose();this._textureCache.length=0}setPrePassRenderer(e){return this._prePassEffectConfiguration?(this._prePassEffectConfiguration=e.addEffectConfiguration(this._prePassEffectConfiguration),this._prePassEffectConfiguration.enabled=!0,!0):!1}dispose(e){e=e||this._camera,this._useExistingThinPostProcess||this._effectWrapper.dispose(),this._disposeTextures(),this._scene&&this._scene.removePostProcess(this);let t;if(this._parentContainer&&(t=this._parentContainer.postProcesses.indexOf(this),t>-1&&this._parentContainer.postProcesses.splice(t,1),this._parentContainer=null),t=this._engine.postProcesses.indexOf(this),t!==-1&&this._engine.postProcesses.splice(t,1),this.onDisposeObservable.notifyObservers(),!!e){if(e.detachPostProcess(this),t=e._postProcesses.indexOf(this),t===0&&e._postProcesses.length>0){let i=this._camera._getFirstPostProcess();i&&i.markTextureDirty()}this.onActivateObservable.clear(),this.onAfterRenderObservable.clear(),this.onApplyObservable.clear(),this.onBeforeRenderObservable.clear(),this.onSizeChangedObservable.clear(),this.onEffectCreatedObservable.clear()}}serialize(){let e=it.Serialize(this),t=this.getCamera()||this._scene&&this._scene.activeCamera;return e.customType="BABYLON."+this.getClassName(),e.cameraId=t?t.id:null,e.reusable=this._reusable,e.textureType=this._textureType,e.fragmentUrl=this._fragmentUrl,e.parameters=this._parameters,e.samplers=this._samplers,e.uniformBuffers=this._uniformBuffers,e.options=this._options,e.defines=this._postProcessDefines,e.textureFormat=this._textureFormat,e.vertexUrl=this._vertexUrl,e.indexParameters=this._indexParameters,e}clone(){let e=this.serialize();e._engine=this._engine,e.cameraId=null;let t=n.Parse(e,this._scene,"");return t?(t.onActivateObservable=this.onActivateObservable.clone(),t.onSizeChangedObservable=this.onSizeChangedObservable.clone(),t.onApplyObservable=this.onApplyObservable.clone(),t.onBeforeRenderObservable=this.onBeforeRenderObservable.clone(),t.onAfterRenderObservable=this.onAfterRenderObservable.clone(),t._prePassEffectConfiguration=this._prePassEffectConfiguration,t):null}static Parse(e,t,i){let r=xn(e.customType);if(!r||!r._Parse)return null;let s=t?t.getCameraById(e.cameraId):null;return r._Parse(e,s,t,i)}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.fragmentUrl,e.parameters,e.samplers,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable,e.defines,e.textureType,e.vertexUrl,e.indexParameters,!1,e.textureFormat),e,i,r)}};P([F()],Ri.prototype,"uniqueId",void 0);P([F()],Ri.prototype,"name",null);P([F()],Ri.prototype,"width",void 0);P([F()],Ri.prototype,"height",void 0);P([F()],Ri.prototype,"renderTargetSamplingMode",void 0);P([Em()],Ri.prototype,"clearColor",void 0);P([F()],Ri.prototype,"autoClear",void 0);P([F()],Ri.prototype,"forceAutoClearInAlphaMode",void 0);P([F()],Ri.prototype,"alphaMode",null);P([F()],Ri.prototype,"alphaConstants",void 0);P([F()],Ri.prototype,"enablePixelPerfectMode",void 0);P([F()],Ri.prototype,"forceFullscreenViewport",void 0);P([F()],Ri.prototype,"scaleMode",void 0);P([F()],Ri.prototype,"alwaysForcePOT",void 0);P([F("samples")],Ri.prototype,"_samples",void 0);P([F()],Ri.prototype,"adaptScaleToCurrentViewport",void 0);Ft("BABYLON.PostProcess",Ri)});var DV={};Be(DV,{passPixelShaderWGSL:()=>Ele});var VC,PV,Ele,LV=I(()=>{k();VC="passPixelShader",PV=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #define CUSTOM_FRAGMENT_DEFINITIONS @fragment -fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,input.vUV);}`;A.ShadersStoreWGSL[FC]||(A.ShadersStoreWGSL[FC]=IV);mle={name:FC,shader:IV}});var DV={};Be(DV,{passCubePixelShaderWGSL:()=>ple});var BC,PV,ple,LV=I(()=>{k();BC="passCubePixelShader",PV=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_cube; +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,input.vUV);}`;A.ShadersStoreWGSL[VC]||(A.ShadersStoreWGSL[VC]=PV);Ele={name:VC,shader:PV}});var NV={};Be(NV,{passCubePixelShaderWGSL:()=>Sle});var GC,OV,Sle,wV=I(()=>{k();GC="passCubePixelShader",OV=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_cube; #define CUSTOM_FRAGMENT_DEFINITIONS @fragment fn main(input: FragmentInputs)->FragmentOutputs {var uv: vec2f=input.vUV*2.0-1.0; @@ -4187,7 +4187,7 @@ fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(u #ifdef NEGATIVEZ fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,vec3f(uv,-1.001)); #endif -}`;A.ShadersStoreWGSL[BC]||(A.ShadersStoreWGSL[BC]=PV);ple={name:BC,shader:PV}});var NV={};Be(NV,{passCubePixelShader:()=>_le});var UC,OV,_le,wV=I(()=>{k();UC="passCubePixelShader",OV=`varying vec2 vUV;uniform samplerCube textureSampler; +}`;A.ShadersStoreWGSL[GC]||(A.ShadersStoreWGSL[GC]=OV);Sle={name:GC,shader:OV}});var BV={};Be(BV,{passCubePixelShader:()=>Tle});var kC,FV,Tle,UV=I(()=>{k();kC="passCubePixelShader",FV=`varying vec2 vUV;uniform samplerCube textureSampler; #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) {vec2 uv=vUV*2.0-1.0; @@ -4209,8 +4209,8 @@ gl_FragColor=textureCube(textureSampler,vec3(uv,1.001)); #ifdef NEGATIVEZ gl_FragColor=textureCube(textureSampler,vec3(uv,-1.001)); #endif -}`;A.ShadersStore[UC]||(A.ShadersStore[UC]=OV);_le={name:UC,shader:OV}});var nc,Rg,VC=I(()=>{lh();Ni();nc=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(CV(),yV))]))):t.push(Promise.all([Promise.resolve().then(()=>(LC(),DC))])),super._gatherImports(e,t)}constructor(e,t=null,i){let r={name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,...i};r.engine||(r.engine=Oe.LastCreatedEngine),super(r)}};nc.FragmentUrl="pass";Rg=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(LV(),DV))]))):t.push(Promise.all([Promise.resolve().then(()=>(wV(),NV))])),super._gatherImports(e,t)}constructor(e,t=null,i){super({...i,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,defines:"#define POSITIVEX"}),this._face=0}get face(){return this._face}set face(e){if(!(e<0||e>5))switch(this._face=e,this._face){case 0:this.updateEffect("#define POSITIVEX");break;case 1:this.updateEffect("#define NEGATIVEX");break;case 2:this.updateEffect("#define POSITIVEY");break;case 3:this.updateEffect("#define NEGATIVEY");break;case 4:this.updateEffect("#define POSITIVEZ");break;case 5:this.updateEffect("#define NEGATIVEZ");break}}};Rg.FragmentUrl="passCube"});var ch,GC,kC=I(()=>{Gt();rc();Vr();Yi();br();VC();Vt();ch=class n extends Ri{getClassName(){return"PassPostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,nc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new nc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Ft("BABYLON.PassPostProcess",ch);GC=class n extends Ri{get face(){return this._effectWrapper.face}set face(e){this._effectWrapper.face=e}getClassName(){return"PassCubePostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,nc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Rg(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],GC.prototype,"face",null);Ie._RescalePostProcessFactory=n=>new ch("rescale",1,null,2,n,!1,0)});function BV(n,e,t,i,r,s,a,o){let l=e.getEngine();return e.isReady=!1,r=r!=null?r:e.samplingMode,i=i!=null?i:e.type,s=s!=null?s:e.format,a=a!=null?a:e.width,o=o!=null?o:e.height,i===-1&&(i=0),new Promise(c=>{let f=new Ri("postprocess",n,null,null,1,null,r,l,!1,void 0,i,void 0,null,!1,s);f.externalTextureSamplerBinding=!0;let d=l.createRenderTargetTexture({width:a,height:o},{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:r,type:i,format:s});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",e),u.setFloat2("scale",1,1)},t.postProcessManager.directRender([f],d,!0),l.restoreDefaultFramebuffer(),l._releaseTexture(e),f&&f.dispose(),d._swapAndDie(e),e.type=i,e.format=5,e.isReady=!0,c(e)})})})}function fh(n){tx||(tx=new Float32Array(1),FV=new Int32Array(tx.buffer)),tx[0]=n;let e=FV[0],t=e>>16&32768,i=e>>12&2047,r=e>>23&255;return r<103?t:r>142?(t|=31744,t|=(r==255?0:1)&&e&8388607,t):r<113?(i|=2048,t|=(i>>114-r)+(i>>113-r&1),t):(t|=r-112<<10|i>>1,t+=i&1,t)}function sc(n){let e=(n&32768)>>15,t=(n&31744)>>10,i=n&1023;return t===0?(e?-1:1)*Math.pow(2,-14)*(i/Math.pow(2,10)):t==31?i?NaN:(e?-1:1)*(1/0):(e?-1:1)*Math.pow(2,t-15)*(1+i/Math.pow(2,10))}var tx,FV,WC=I(()=>{Gr();Rf();kC();rc();Vn()});function zC(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function HC(n,e,t){for(;t.length!==e;){let i=zC(n.lines[n.index++]);t.push(...i)}}function gle(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let g=0;g0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=zC(i.lines[i.index++]);r.numberOfLights=s[0],r.lumensPerLamp=s[1],r.candelaMultiplier=s[2],r.numberOfVerticalAngles=s[3],r.numberOfHorizontalAngles=s[4],r.photometricType=s[5],r.unitsType=s[6],r.width=s[7],r.length=s[8],r.height=s[9];let a=zC(i.lines[i.index++]);r.ballastFactor=a[0],r.fileGenerationType=a[1],r.inputWatts=a[2];for(let m=0;m0)for(let m=0;m=u)&&(_%=u*2,_>u&&(_=u*2-_)),d[p+_*l]=gle(r,p,_)}return{width:c/2,height:1,data:d}}var VV=I(()=>{Vn()});var GV={};Be(GV,{_IESTextureLoader:()=>XC});var XC,kV=I(()=>{VV();XC=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".ies not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=UV(r);i(s.width,s.height,!!t.useMipMaps,!1,()=>{let a=t.getEngine();t.type=1,t.format=6,t._gammaSpace=!1,a._uploadDataToTextureDirectly(t,s.data)})}}});var WV={};Be(WV,{_DDSTextureLoader:()=>YC});var YC,HV=I(()=>{ug();KC();YC=class{constructor(){this.supportCascades=!0}loadCubeData(e,t,i,r){let s=t.getEngine(),a,o=!1,l=1e3;if(Array.isArray(e))for(let c=0;c1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),To.UploadDDSLevels(s,t,f,a,o,6,-1,c),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t):l=a.mipmapCount-1}else{let c=e;a=To.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new cl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),To.UploadDDSLevels(s,t,c,a,o,6),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t,!1):l=a.mipmapCount-1}s._setCubeMapTextureParams(t,o,l),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r({isDDS:!0,width:t.width,info:a,data:e,texture:t})}loadData(e,t,i){let r=To.GetDDSInfo(e),s=(r.isRGB||r.isLuminance||r.mipmapCount>1)&&t.generateMipMaps&&Math.max(r.width,r.height)>>r.mipmapCount-1===1;i(r.width,r.height,s,r.isFourCC,()=>{To.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function zV(){let n={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC4:4,cTFBC5:5,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFATC_RGB:11,cTFATC_RGBA_INTERPOLATED_ALPHA:12,cTFRGBA32:13,cTFRGB565:14,cTFBGR565:15,cTFRGBA4444:16,cTFFXT1_RGB:17,cTFPVRTC2_4_RGB:18,cTFPVRTC2_4_RGBA:19,cTFETC2_EAC_R11:20,cTFETC2_EAC_RG11:21},e=null;onmessage=a=>{if(a.data.action==="init"){if(a.data.url)try{importScripts(a.data.url)}catch(o){postMessage({action:"error",error:o})}e||(e=BASIS({wasmBinary:a.data.wasmBinary})),e!==null&&e.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(a.data.action==="transcode"){let o=a.data.config,l=a.data.imageData,c=new BASIS.BasisFile(l),f=i(c),d=a.data.ignoreSupportedFormats?null:t(a.data.config,f),h=!1;d===null&&(h=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let u=!0;c.startTranscoding()||(u=!1);let m=[];for(let _=0;_>2&3],d[x++]=f[v>>4&3],d[x]=f[v>>6&3]}}return d}}async function XV(n,e,t){return await new Promise((i,r)=>{let s=a=>{a.data.action==="init"?(n.removeEventListener("message",s),i(n)):a.data.action==="error"&&r(a.data.error||"error initializing worker")};n.addEventListener("message",s),n.postMessage({action:"init",url:t?_e.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var YV=I(()=>{yi()});var ac,bf,vle,jC,dh,Ele,Sle,Tle,rx,ix,nx,qC,KV=I(()=>{yi();Gr();Os();YV();(function(n){n[n.cTFETC1=0]="cTFETC1",n[n.cTFETC2=1]="cTFETC2",n[n.cTFBC1=2]="cTFBC1",n[n.cTFBC3=3]="cTFBC3",n[n.cTFBC4=4]="cTFBC4",n[n.cTFBC5=5]="cTFBC5",n[n.cTFBC7=6]="cTFBC7",n[n.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",n[n.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",n[n.cTFASTC_4x4=10]="cTFASTC_4x4",n[n.cTFATC_RGB=11]="cTFATC_RGB",n[n.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",n[n.cTFRGBA32=13]="cTFRGBA32",n[n.cTFRGB565=14]="cTFRGB565",n[n.cTFBGR565=15]="cTFBGR565",n[n.cTFRGBA4444=16]="cTFRGBA4444",n[n.cTFFXT1_RGB=17]="cTFFXT1_RGB",n[n.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",n[n.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",n[n.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",n[n.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(ac||(ac={}));bf={JSModuleURL:`${_e._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${_e._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},vle=(n,e)=>{let t;switch(n){case ac.cTFETC1:t=36196;break;case ac.cTFBC1:t=33776;break;case ac.cTFBC4:t=33779;break;case ac.cTFASTC_4x4:t=37808;break;case ac.cTFETC2:t=37496;break;case ac.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},jC=null,dh=null,Ele=0,Sle=!1,Tle=async()=>(jC||(jC=new Promise((n,e)=>{dh?n(dh):_e.LoadFileAsync(_e.GetBabylonScriptURL(bf.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${zV})()`],{type:"application/javascript"}));dh=new Worker(i),XV(dh,t,bf.JSModuleURL).then(n,e)}).catch(e)})),await jC),rx=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{Tle().then(()=>{let s=Ele++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(dh.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};dh.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),dh.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:Sle},[o.buffer])},s=>{r(s)})})},ix=(n,e)=>{var i,r;let t=(i=e._gl)==null?void 0:i.TEXTURE_2D;n.isCube&&(t=(r=e._gl)==null?void 0:r.TEXTURE_CUBE_MAP),e._bindTextureDirectly(t,n,!0)},nx=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),ix(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,ix(n,t),t._uploadDataToTextureDirectly(n,new Uint16Array(r.transcodedPixels.buffer),i,0,4,!0);else{n.width=r.width,n.height=r.height,n.generateMipMaps=e.fileInfo.images[i].levels.length>1;let s=qC.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,ix(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;oZC});var ZC,qV=I(()=>{KV();yi();ZC=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!a.etc1,s3tc:!!a.s3tc,pvrtc:!!a.pvrtc,etc2:!!a.etc2,astc:!!a.astc,bc7:!!a.bptc}};rx(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;nx(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{_e.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,s&&s(l)})}loadData(e,t,i){let r=t.getEngine().getCaps(),s={supportedCompressionFormats:{etc1:!!r.etc1,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,astc:!!r.astc,bc7:!!r.bptc}};rx(e,s).then(a=>{let o=a.fileInfo.images[0].levels[0],l=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;i(o.width,o.height,l,a.format!==-1,()=>{nx(t,a)})}).catch(a=>{_e.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),_e.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var bg,ZV=I(()=>{bg=class{constructor(){this._count=0,this._data={}}copyFrom(e){this.clear(),e.forEach((t,i)=>this.add(t,i))}get(e){let t=this._data[e];if(t!==void 0)return t}getOrAddWithFactory(e,t){let i=this.get(e);return i!==void 0||(i=t(e),i&&this.add(e,i)),i}getOrAdd(e,t){let i=this.get(e);return i!==void 0?i:(this.add(e,t),t)}contains(e){return this._data[e]!==void 0}add(e,t){return this._data[e]!==void 0?!1:(this._data[e]=t,++this._count,!0)}set(e,t){return this._data[e]===void 0?!1:(this._data[e]=t,!0)}getAndRemove(e){let t=this.get(e);return t!==void 0?(delete this._data[e],--this._count,t):null}remove(e){return this.contains(e)?(delete this._data[e],--this._count,!0):!1}clear(){this._data={},this._count=0}get count(){return this._count}forEach(e){for(let t in this._data){let i=this._data[t];e(t,i)}}first(e){for(let t in this._data){let i=this._data[t],r=e(t,i);if(r)return r}return null}}});function sx(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var QC=I(()=>{});var sn,QV=I(()=>{Gt();Vt();Ht();br();QC();sn=class n{constructor(){this._dirty=!0,this._tempColor=new lt(0,0,0,0),this._globalCurve=new lt(0,0,0,0),this._highlightsCurve=new lt(0,0,0,0),this._midtonesCurve=new lt(0,0,0,0),this._shadowsCurve=new lt(0,0,0,0),this._positiveCurve=new lt(0,0,0,0),this._negativeCurve=new lt(0,0,0,0),this._globalHue=30,this._globalDensity=0,this._globalSaturation=0,this._globalExposure=0,this._highlightsHue=30,this._highlightsDensity=0,this._highlightsSaturation=0,this._highlightsExposure=0,this._midtonesHue=30,this._midtonesDensity=0,this._midtonesSaturation=0,this._midtonesExposure=0,this._shadowsHue=30,this._shadowsDensity=0,this._shadowsSaturation=0,this._shadowsExposure=0}get globalHue(){return this._globalHue}set globalHue(e){this._globalHue=e,this._dirty=!0}get globalDensity(){return this._globalDensity}set globalDensity(e){this._globalDensity=e,this._dirty=!0}get globalSaturation(){return this._globalSaturation}set globalSaturation(e){this._globalSaturation=e,this._dirty=!0}get globalExposure(){return this._globalExposure}set globalExposure(e){this._globalExposure=e,this._dirty=!0}get highlightsHue(){return this._highlightsHue}set highlightsHue(e){this._highlightsHue=e,this._dirty=!0}get highlightsDensity(){return this._highlightsDensity}set highlightsDensity(e){this._highlightsDensity=e,this._dirty=!0}get highlightsSaturation(){return this._highlightsSaturation}set highlightsSaturation(e){this._highlightsSaturation=e,this._dirty=!0}get highlightsExposure(){return this._highlightsExposure}set highlightsExposure(e){this._highlightsExposure=e,this._dirty=!0}get midtonesHue(){return this._midtonesHue}set midtonesHue(e){this._midtonesHue=e,this._dirty=!0}get midtonesDensity(){return this._midtonesDensity}set midtonesDensity(e){this._midtonesDensity=e,this._dirty=!0}get midtonesSaturation(){return this._midtonesSaturation}set midtonesSaturation(e){this._midtonesSaturation=e,this._dirty=!0}get midtonesExposure(){return this._midtonesExposure}set midtonesExposure(e){this._midtonesExposure=e,this._dirty=!0}get shadowsHue(){return this._shadowsHue}set shadowsHue(e){this._shadowsHue=e,this._dirty=!0}get shadowsDensity(){return this._shadowsDensity}set shadowsDensity(e){this._shadowsDensity=e,this._dirty=!0}get shadowsSaturation(){return this._shadowsSaturation}set shadowsSaturation(e){this._shadowsSaturation=e,this._dirty=!0}get shadowsExposure(){return this._shadowsExposure}set shadowsExposure(e){this._shadowsExposure=e,this._dirty=!0}getClassName(){return"ColorCurves"}static Bind(e,t,i="vCameraColorCurvePositive",r="vCameraColorCurveNeutral",s="vCameraColorCurveNegative"){e._dirty&&(e._dirty=!1,e._getColorGradingDataToRef(e._globalHue,e._globalDensity,e._globalSaturation,e._globalExposure,e._globalCurve),e._getColorGradingDataToRef(e._highlightsHue,e._highlightsDensity,e._highlightsSaturation,e._highlightsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._highlightsCurve),e._getColorGradingDataToRef(e._midtonesHue,e._midtonesDensity,e._midtonesSaturation,e._midtonesExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._midtonesCurve),e._getColorGradingDataToRef(e._shadowsHue,e._shadowsDensity,e._shadowsSaturation,e._shadowsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._shadowsCurve),e._highlightsCurve.subtractToRef(e._midtonesCurve,e._positiveCurve),e._midtonesCurve.subtractToRef(e._shadowsCurve,e._negativeCurve)),t&&(t.setFloat4(i,e._positiveCurve.r,e._positiveCurve.g,e._positiveCurve.b,e._positiveCurve.a),t.setFloat4(r,e._midtonesCurve.r,e._midtonesCurve.g,e._midtonesCurve.b,e._midtonesCurve.a),t.setFloat4(s,e._negativeCurve.r,e._negativeCurve.g,e._negativeCurve.b,e._negativeCurve.a))}_getColorGradingDataToRef(e,t,i,r,s){e!=null&&(e=n._Clamp(e,0,360),t=n._Clamp(t,-100,100),i=n._Clamp(i,-100,100),r=n._Clamp(r,-100,100),t=n._ApplyColorGradingSliderNonlinear(t),t*=.5,r=n._ApplyColorGradingSliderNonlinear(r),t<0&&(t*=-1,e=(e+180)%360),n._FromHSBToRef(e,t,50+.25*r,s),s.scaleToRef(2,s),s.a=1+.01*i)}static _ApplyColorGradingSliderNonlinear(e){e/=100;let t=Math.abs(e);return t=Math.pow(t,2),e<0&&(t*=-1),t*=100,t}static _FromHSBToRef(e,t,i,r){let s=n._Clamp(e,0,360),a=n._Clamp(t/100,0,1),o=n._Clamp(i/100,0,1);if(a===0)r.r=o,r.g=o,r.b=o;else{s/=60;let l=Math.floor(s),c=s-l,f=o*(1-a),d=o*(1-a*c),h=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=h,r.b=f;break;case 1:r.r=d,r.g=o,r.b=f;break;case 2:r.r=f,r.g=o,r.b=h;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=h,r.g=f,r.b=o;break;default:r.r=o,r.g=f,r.b=d;break}}r.a=1}static _Clamp(e,t,i){return Math.min(Math.max(e,t),i)}clone(){return it.Clone(()=>new n,this)}serialize(){return it.Serialize(this)}static Parse(e){return it.Parse(()=>new n,e,null,null)}};sn.PrepareUniforms=sx;P([F()],sn.prototype,"_globalHue",void 0);P([F()],sn.prototype,"_globalDensity",void 0);P([F()],sn.prototype,"_globalSaturation",void 0);P([F()],sn.prototype,"_globalExposure",void 0);P([F()],sn.prototype,"_highlightsHue",void 0);P([F()],sn.prototype,"_highlightsDensity",void 0);P([F()],sn.prototype,"_highlightsSaturation",void 0);P([F()],sn.prototype,"_highlightsExposure",void 0);P([F()],sn.prototype,"_midtonesHue",void 0);P([F()],sn.prototype,"_midtonesDensity",void 0);P([F()],sn.prototype,"_midtonesSaturation",void 0);P([F()],sn.prototype,"_midtonesExposure",void 0);it._ColorCurvesParser=sn.Parse});function $V(n,e){e.EXPOSURE&&n.push("exposureLinear"),e.CONTRAST&&n.push("contrast"),e.COLORGRADING&&n.push("colorTransformSettings"),(e.VIGNETTE||e.DITHER)&&n.push("vInverseScreenSize"),e.VIGNETTE&&(n.push("vignetteSettings1"),n.push("vignetteSettings2")),e.COLORCURVES&&sx(n),e.DITHER&&n.push("ditherIntensity")}function JV(n,e){e.COLORGRADING&&n.push("txColorTransform")}var eG=I(()=>{QC()});var kt,Mg=I(()=>{Gt();Vt();hi();Ht();QV();uo();br();eG();Yi();kt=class n{constructor(){this.colorCurves=new sn,this._colorCurvesEnabled=!1,this._colorGradingEnabled=!1,this._colorGradingWithGreenDepth=!0,this._colorGradingBGR=!0,this._exposure=1,this._toneMappingEnabled=!1,this._toneMappingType=n.TONEMAPPING_STANDARD,this._contrast=1,this.vignetteStretch=0,this.vignetteCenterX=0,this.vignetteCenterY=0,this.vignetteWeight=1.5,this.vignetteColor=new lt(0,0,0,0),this.vignetteCameraFov=.5,this._vignetteBlendMode=n.VIGNETTEMODE_MULTIPLY,this._vignetteEnabled=!1,this._ditheringEnabled=!1,this._ditheringIntensity=1/255,this._skipFinalColorClamp=!1,this._applyByPostProcess=!1,this._isEnabled=!0,this.outputTextureWidth=0,this.outputTextureHeight=0,this.onUpdateParameters=new ie}get colorCurvesEnabled(){return this._colorCurvesEnabled}set colorCurvesEnabled(e){this._colorCurvesEnabled!==e&&(this._colorCurvesEnabled=e,this._updateParameters())}get colorGradingTexture(){return this._colorGradingTexture}set colorGradingTexture(e){this._colorGradingTexture!==e&&(this._colorGradingTexture=e,this._updateParameters())}get colorGradingEnabled(){return this._colorGradingEnabled}set colorGradingEnabled(e){this._colorGradingEnabled!==e&&(this._colorGradingEnabled=e,this._updateParameters())}get colorGradingWithGreenDepth(){return this._colorGradingWithGreenDepth}set colorGradingWithGreenDepth(e){this._colorGradingWithGreenDepth!==e&&(this._colorGradingWithGreenDepth=e,this._updateParameters())}get colorGradingBGR(){return this._colorGradingBGR}set colorGradingBGR(e){this._colorGradingBGR!==e&&(this._colorGradingBGR=e,this._updateParameters())}get exposure(){return this._exposure}set exposure(e){this._exposure!==e&&(this._exposure=e,this._updateParameters())}get toneMappingEnabled(){return this._toneMappingEnabled}set toneMappingEnabled(e){this._toneMappingEnabled!==e&&(this._toneMappingEnabled=e,this._updateParameters())}get toneMappingType(){return this._toneMappingType}set toneMappingType(e){this._toneMappingType!==e&&(this._toneMappingType=e,this._updateParameters())}get contrast(){return this._contrast}set contrast(e){this._contrast!==e&&(this._contrast=e,this._updateParameters())}get vignetteCentreY(){return this.vignetteCenterY}set vignetteCentreY(e){this.vignetteCenterY=e}get vignetteCentreX(){return this.vignetteCenterX}set vignetteCentreX(e){this.vignetteCenterX=e}get vignetteBlendMode(){return this._vignetteBlendMode}set vignetteBlendMode(e){this._vignetteBlendMode!==e&&(this._vignetteBlendMode=e,this._updateParameters())}get vignetteEnabled(){return this._vignetteEnabled}set vignetteEnabled(e){this._vignetteEnabled!==e&&(this._vignetteEnabled=e,this._updateParameters())}get ditheringEnabled(){return this._ditheringEnabled}set ditheringEnabled(e){this._ditheringEnabled!==e&&(this._ditheringEnabled=e,this._updateParameters())}get ditheringIntensity(){return this._ditheringIntensity}set ditheringIntensity(e){this._ditheringIntensity!==e&&(this._ditheringIntensity=e,this._updateParameters())}get skipFinalColorClamp(){return this._skipFinalColorClamp}set skipFinalColorClamp(e){this._skipFinalColorClamp!==e&&(this._skipFinalColorClamp=e,this._updateParameters())}get applyByPostProcess(){return this._applyByPostProcess}set applyByPostProcess(e){this._applyByPostProcess!==e&&(this._applyByPostProcess=e,this._updateParameters())}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this._updateParameters())}_updateParameters(){this.onUpdateParameters.notifyObservers(this)}getClassName(){return"ImageProcessingConfiguration"}prepareDefines(e,t=!1){if(t!==this.applyByPostProcess||!this._isEnabled){e.VIGNETTE=!1,e.TONEMAPPING=0,e.CONTRAST=!1,e.EXPOSURE=!1,e.COLORCURVES=!1,e.COLORGRADING=!1,e.COLORGRADING3D=!1,e.DITHER=!1,e.IMAGEPROCESSING=!1,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess&&this._isEnabled;return}if(e.VIGNETTE=this.vignetteEnabled,e.VIGNETTEBLENDMODEMULTIPLY=this.vignetteBlendMode===n._VIGNETTEMODE_MULTIPLY,e.VIGNETTEBLENDMODEOPAQUE=!e.VIGNETTEBLENDMODEMULTIPLY,!this._toneMappingEnabled)e.TONEMAPPING=0;else switch(this._toneMappingType){case n.TONEMAPPING_KHR_PBR_NEUTRAL:e.TONEMAPPING=3;break;case n.TONEMAPPING_ACES:e.TONEMAPPING=2;break;default:e.TONEMAPPING=1;break}e.CONTRAST=this.contrast!==1,e.EXPOSURE=this.exposure!==1,e.COLORCURVES=this.colorCurvesEnabled&&!!this.colorCurves,e.COLORGRADING=this.colorGradingEnabled&&!!this.colorGradingTexture,e.COLORGRADING?e.COLORGRADING3D=this.colorGradingTexture.is3D:e.COLORGRADING3D=!1,e.SAMPLER3DGREENDEPTH=this.colorGradingWithGreenDepth,e.SAMPLER3DBGRMAP=this.colorGradingBGR,e.DITHER=this._ditheringEnabled,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSING=e.VIGNETTE||!!e.TONEMAPPING||e.CONTRAST||e.EXPOSURE||e.COLORCURVES||e.COLORGRADING||e.DITHER}isReady(){return!this.colorGradingEnabled||!this.colorGradingTexture||this.colorGradingTexture.isReady()}bind(e,t){if(this._colorCurvesEnabled&&this.colorCurves&&sn.Bind(this.colorCurves,e),this._vignetteEnabled||this._ditheringEnabled){let i=1/(this.outputTextureWidth||e.getEngine().getRenderWidth()),r=1/(this.outputTextureHeight||e.getEngine().getRenderHeight());if(e.setFloat2("vInverseScreenSize",i,r),this._ditheringEnabled&&e.setFloat("ditherIntensity",.5*this._ditheringIntensity),this._vignetteEnabled){let s=t!=null?t:r/i,a=Math.tan(this.vignetteCameraFov*.5),o=a*s,l=Math.sqrt(o*a);o=cg(o,l,this.vignetteStretch),a=cg(a,l,this.vignetteStretch),e.setFloat4("vignetteSettings1",o,a,-o*this.vignetteCenterX,-a*this.vignetteCenterY);let c=-2*this.vignetteWeight;e.setFloat4("vignetteSettings2",this.vignetteColor.r,this.vignetteColor.g,this.vignetteColor.b,c)}}if(e.setFloat("exposureLinear",this.exposure),e.setFloat("contrast",this.contrast),this.colorGradingTexture){e.setTexture("txColorTransform",this.colorGradingTexture);let i=this.colorGradingTexture.getSize().height;e.setFloat4("colorTransformSettings",(i-1)/i,.5/i,i,this.colorGradingTexture.level)}}clone(){return it.Clone(()=>new n,this)}serialize(){return it.Serialize(this)}static Parse(e){let t=it.Parse(()=>new n,e,null,null);return e.vignetteCentreX!==void 0&&(t.vignetteCenterX=e.vignetteCentreX),e.vignetteCentreY!==void 0&&(t.vignetteCenterY=e.vignetteCentreY),t}static get VIGNETTEMODE_MULTIPLY(){return this._VIGNETTEMODE_MULTIPLY}static get VIGNETTEMODE_OPAQUE(){return this._VIGNETTEMODE_OPAQUE}};kt.TONEMAPPING_STANDARD=0;kt.TONEMAPPING_ACES=1;kt.TONEMAPPING_KHR_PBR_NEUTRAL=2;kt.PrepareUniforms=$V;kt.PrepareSamplers=JV;kt._VIGNETTEMODE_MULTIPLY=0;kt._VIGNETTEMODE_OPAQUE=1;P([ZU()],kt.prototype,"colorCurves",void 0);P([F()],kt.prototype,"_colorCurvesEnabled",void 0);P([Ut("colorGradingTexture")],kt.prototype,"_colorGradingTexture",void 0);P([F()],kt.prototype,"_colorGradingEnabled",void 0);P([F()],kt.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],kt.prototype,"_colorGradingBGR",void 0);P([F()],kt.prototype,"_exposure",void 0);P([F()],kt.prototype,"_toneMappingEnabled",void 0);P([F()],kt.prototype,"_toneMappingType",void 0);P([F()],kt.prototype,"_contrast",void 0);P([F()],kt.prototype,"vignetteStretch",void 0);P([F()],kt.prototype,"vignetteCenterX",void 0);P([F()],kt.prototype,"vignetteCenterY",void 0);P([F()],kt.prototype,"vignetteWeight",void 0);P([Em()],kt.prototype,"vignetteColor",void 0);P([F()],kt.prototype,"vignetteCameraFov",void 0);P([F()],kt.prototype,"_vignetteBlendMode",void 0);P([F()],kt.prototype,"_vignetteEnabled",void 0);P([F()],kt.prototype,"_ditheringEnabled",void 0);P([F()],kt.prototype,"_ditheringIntensity",void 0);P([F()],kt.prototype,"_skipFinalColorClamp",void 0);P([F()],kt.prototype,"_applyByPostProcess",void 0);P([F()],kt.prototype,"_isEnabled",void 0);P([F()],kt.prototype,"outputTextureWidth",void 0);P([F()],kt.prototype,"outputTextureHeight",void 0);it._ImageProcessingConfigurationParser=kt.Parse;Ft("BABYLON.ImageProcessingConfiguration",kt)});var fs,Ig=I(()=>{ke();Wi();fs=class{constructor(){this.hit=!1,this.distance=0,this.pickedPoint=null,this.pickedMesh=null,this.bu=0,this.bv=0,this.faceId=-1,this.subMeshFaceId=-1,this.subMeshId=0,this.pickedSprite=null,this.thinInstanceIndex=-1,this.ray=null,this.originMesh=null,this.aimTransform=null,this.gripTransform=null}getNormal(e=!1,t=!0){if(!this.pickedMesh||t&&!this.pickedMesh.isVerticesDataPresent(D.NormalKind))return null;let i=this.pickedMesh.getIndices();(i==null?void 0:i.length)===0&&(i=null);let r,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2];if(t){let c=this.pickedMesh.getVerticesData(D.NormalKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]);f=f.scale(this.bu),d=d.scale(this.bv),h=h.scale(1-this.bu-this.bv),r=new b(f.x+d.x+h.x,f.y+d.y+h.y,f.z+d.z+h.z)}else{let c=this.pickedMesh.getVerticesData(D.PositionKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]),u=f.subtract(d),m=h.subtract(d);r=b.Cross(u,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let h=c._thinInstanceDataStorage.matrixData,u=this.thinInstanceIndex<<4;if(h&&h.length>u){let m=$.Matrix[0];q.FromArrayToRef(h,u,m),b.TransformNormalToRef(f,m,f)}}let d=c.getWorldMatrix();c.nonUniformScaling&&($.Matrix[0].copyFrom(d),d=$.Matrix[0],d.setTranslationFromFloats(0,0,0),d.invert(),d.transposeToRef($.Matrix[1]),d=$.Matrix[1]),b.TransformNormalToRef(f,d,f)};if(e&&l(this.pickedMesh,r),this.ray){let c=$.Vector3[0].copyFrom(r);e||l(this.pickedMesh,c),b.Dot(c,this.ray.direction)>0&&r.negateInPlace()}return r.normalize(),r}getTextureCoordinates(e=D.UVKind){if(!this.pickedMesh||!this.pickedMesh.isVerticesDataPresent(e))return null;let t=this.pickedMesh.getIndices();if(!t)return null;let i=this.pickedMesh.getVerticesData(e);if(!i)return null;let r=Fe.FromArray(i,t[this.faceId*3]*2),s=Fe.FromArray(i,t[this.faceId*3+1]*2),a=Fe.FromArray(i,t[this.faceId*3+2]*2);return r=r.scale(this.bu),s=s.scale(this.bv),a=a.scale(1-this.bu-this.bv),new Fe(r.x+s.x+a.x,r.y+s.y+a.y)}}});var an,$C=I(()=>{an=class n{constructor(e,t,i,r,s,a){this.source=e,this.pointerX=t,this.pointerY=i,this.meshUnderPointer=r,this.sourceEvent=s,this.additionalData=a}static CreateNew(e,t,i){let r=e.getScene();return new n(e,r.pointerX,r.pointerY,r.meshUnderPointer||e,t,i)}static CreateNewFromSprite(e,t,i,r){return new n(e,t.pointerX,t.pointerY,t.meshUnderPointer,i,r)}static CreateNewFromScene(e,t){return new n(null,e.pointerX,e.pointerY,e.meshUnderPointer,t)}static CreateNewFromPrimitive(e,t,i,r){return new n(e,t.x,t.y,null,i,r)}}});function yg(n,e,t){let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]-=n.x,i[13]-=n.y,i[14]-=n.z,t.markAsUpdated(),t}function nG(n,e,t){return dg(e,Da),yg(n,Da,La),dg(La,t),t}function ax(n,e,t){if(!Oa.eyeAtCamera)return nG(n,e,t);let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]=0,i[13]=0,i[14]=0,t.markAsUpdated(),t}function JC(n,e,t,i){return eh(ax(n,e,i),t,i),i}function sG(n,e,t,i,r){for(let s=0;s{Zd();ke();mC();Af();Pa=new q,Da=new q,La=new q,Oa={getScene:()=>{},eyeAtCamera:!0};Cg=mr,eP=or,aG=Cg.prototype._updateMatrixForUniform,oG=or.prototype.setMatrix});var tt,cr,Rm=I(()=>{tt=class{};tt.NAME_EFFECTLAYER="EffectLayer";tt.NAME_LAYER="Layer";tt.NAME_LENSFLARESYSTEM="LensFlareSystem";tt.NAME_BOUNDINGBOXRENDERER="BoundingBoxRenderer";tt.NAME_PARTICLESYSTEM="ParticleSystem";tt.NAME_GAMEPAD="Gamepad";tt.NAME_SIMPLIFICATIONQUEUE="SimplificationQueue";tt.NAME_GEOMETRYBUFFERRENDERER="GeometryBufferRenderer";tt.NAME_PREPASSRENDERER="PrePassRenderer";tt.NAME_DEPTHRENDERER="DepthRenderer";tt.NAME_DEPTHPEELINGRENDERER="DepthPeelingRenderer";tt.NAME_POSTPROCESSRENDERPIPELINEMANAGER="PostProcessRenderPipelineManager";tt.NAME_SPRITE="Sprite";tt.NAME_SUBSURFACE="SubSurface";tt.NAME_OUTLINERENDERER="Outline";tt.NAME_PROCEDURALTEXTURE="ProceduralTexture";tt.NAME_SHADOWGENERATOR="ShadowGenerator";tt.NAME_OCTREE="Octree";tt.NAME_PHYSICSENGINE="PhysicsEngine";tt.NAME_AUDIO="Audio";tt.NAME_FLUIDRENDERER="FluidRenderer";tt.NAME_IBLCDFGENERATOR="iblCDFGenerator";tt.NAME_CLUSTEREDLIGHTING="ClusteredLighting";tt.STEP_ISREADYFORMESH_EFFECTLAYER=0;tt.STEP_ISREADYFORMESH_DEPTHRENDERER=1;tt.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER=0;tt.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER=0;tt.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER=0;tt.STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER=1;tt.STEP_BEFORECAMERADRAW_PREPASS=0;tt.STEP_BEFORECAMERADRAW_EFFECTLAYER=1;tt.STEP_BEFORECAMERADRAW_LAYER=2;tt.STEP_BEFORERENDERTARGETDRAW_PREPASS=0;tt.STEP_BEFORERENDERTARGETDRAW_LAYER=1;tt.STEP_BEFORERENDERINGMESH_PREPASS=0;tt.STEP_BEFORERENDERINGMESH_OUTLINE=1;tt.STEP_AFTERRENDERINGMESH_PREPASS=0;tt.STEP_AFTERRENDERINGMESH_OUTLINE=1;tt.STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW=0;tt.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER=1;tt.STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE=0;tt.STEP_BEFORECLEAR_PROCEDURALTEXTURE=0;tt.STEP_BEFORECLEAR_PREPASS=1;tt.STEP_BEFORERENDERTARGETCLEAR_PREPASS=0;tt.STEP_AFTERRENDERTARGETDRAW_PREPASS=0;tt.STEP_AFTERRENDERTARGETDRAW_LAYER=1;tt.STEP_AFTERCAMERADRAW_PREPASS=0;tt.STEP_AFTERCAMERADRAW_EFFECTLAYER=1;tt.STEP_AFTERCAMERADRAW_LENSFLARESYSTEM=2;tt.STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW=3;tt.STEP_AFTERCAMERADRAW_LAYER=4;tt.STEP_AFTERCAMERADRAW_FLUIDRENDERER=5;tt.STEP_AFTERCAMERAPOSTPROCESS_LAYER=0;tt.STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER=0;tt.STEP_AFTERRENDER_AUDIO=0;tt.STEP_GATHERRENDERTARGETS_DEPTHRENDERER=0;tt.STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER=1;tt.STEP_GATHERRENDERTARGETS_SHADOWGENERATOR=2;tt.STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER=3;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER=0;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER=1;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING=2;tt.STEP_POINTERMOVE_SPRITE=0;tt.STEP_POINTERDOWN_SPRITE=0;tt.STEP_POINTERUP_SPRITE=0;cr=class n extends Array{constructor(e){super(...e)}static Create(){return Object.create(n.prototype)}registerStep(e,t,i){let r=0,s;for(;r{ke();st=class{};st.POINTERDOWN=1;st.POINTERUP=2;st.POINTERMOVE=4;st.POINTERWHEEL=8;st.POINTERPICK=16;st.POINTERTAP=32;st.POINTERDOUBLETAP=64;ox=class{constructor(e,t){this.type=e,this.event=t}},lx=class extends ox{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new Fe(i,r)}},Na=class extends ox{get pickInfo(){return this._pickInfo||this._generatePickInfo(),this._pickInfo}constructor(e,t,i,r=null){super(e,t),this._pickInfo=i,this._inputManager=r}_generatePickInfo(){this._inputManager&&(this._pickInfo=this._inputManager._pickMove(this.event),this._inputManager._setRayOnPointerInfo(this._pickInfo,this.event),this._inputManager=null)}}});var oc,fG=I(()=>{oc=class n{constructor(){this.hoverCursor="",this.actions=[],this.isRecursive=!1,this.disposeWhenUnowned=!0}static get HasTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e))return!0;return!1}static get HasPickTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e)){let t=parseInt(e);if(t>=1&&t<=7)return!0}return!1}static HasSpecificTrigger(e){for(let t in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,t)&&parseInt(t)===e)return!0;return!1}};oc.Triggers={}});var xo,bm,Dg,cx=I(()=>{xo=class{};xo.KEYDOWN=1;xo.KEYUP=2;bm=class{constructor(e,t){this.type=e,this.event=t}},Dg=class extends bm{get skipOnPointerObservable(){return this.skipOnKeyboardObservable}set skipOnPointerObservable(e){this.skipOnKeyboardObservable=e}constructor(e,t){super(e,t),this.type=e,this.event=t,this.skipOnKeyboardObservable=!1}}});var Je,vt,dG,hG,uG,mG,pG,hh=I(()=>{(function(n){n[n.Generic=0]="Generic",n[n.Keyboard=1]="Keyboard",n[n.Mouse=2]="Mouse",n[n.Touch=3]="Touch",n[n.DualShock=4]="DualShock",n[n.Xbox=5]="Xbox",n[n.Switch=6]="Switch",n[n.DualSense=7]="DualSense"})(Je||(Je={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.Move=12]="Move"})(vt||(vt={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.DeltaHorizontal=10]="DeltaHorizontal",n[n.DeltaVertical=11]="DeltaVertical"})(dG||(dG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(hG||(hG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Create=8]="Create",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(uG||(uG={}));(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.LT=6]="LT",n[n.RT=7]="RT",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.LStickXAxis=17]="LStickXAxis",n[n.LStickYAxis=18]="LStickYAxis",n[n.RStickXAxis=19]="RStickXAxis",n[n.RStickYAxis=20]="RStickYAxis"})(mG||(mG={}));(function(n){n[n.B=0]="B",n[n.A=1]="A",n[n.Y=2]="Y",n[n.X=3]="X",n[n.L=4]="L",n[n.R=5]="R",n[n.ZL=6]="ZL",n[n.ZR=7]="ZR",n[n.Minus=8]="Minus",n[n.Plus=9]="Plus",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.Capture=17]="Capture",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(pG||(pG={}))});var _G,Ro,fx=I(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})(_G||(_G={}));Ro=class{};Ro.DOM_DELTA_PIXEL=0;Ro.DOM_DELTA_LINE=1;Ro.DOM_DELTA_PAGE=2});var bo,iP=I(()=>{fx();hh();bo=class{static CreateDeviceEvent(e,t,i,r,s,a,o){switch(e){case Je.Keyboard:return this._CreateKeyboardEvent(i,r,s,a);case Je.Mouse:if(i===vt.MouseWheelX||i===vt.MouseWheelY||i===vt.MouseWheelZ)return this._CreateWheelEvent(e,t,i,r,s,a);case Je.Touch:return this._CreatePointerEvent(e,t,i,r,s,a,o);default:throw`Unable to generate event for device ${Je[e]}`}}static _CreatePointerEvent(e,t,i,r,s,a,o){let l=this._CreateMouseEvent(e,t,i,r,s,a);e===Je.Mouse?(l.deviceType=Je.Mouse,l.pointerId=1,l.pointerType="mouse"):(l.deviceType=Je.Touch,l.pointerId=o!=null?o:t,l.pointerType="touch");let c=0;return c+=s.pollInput(e,t,vt.LeftClick),c+=s.pollInput(e,t,vt.RightClick)*2,c+=s.pollInput(e,t,vt.MiddleClick)*4,l.buttons=c,i===vt.Move?l.type="pointermove":i>=vt.LeftClick&&i<=vt.RightClick&&(l.type=r===1?"pointerdown":"pointerup",l.button=i-2),l}static _CreateWheelEvent(e,t,i,r,s,a){let o=this._CreateMouseEvent(e,t,i,r,s,a);switch(o.pointerId=1,o.type="wheel",o.deltaMode=Ro.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case vt.MouseWheelX:o.deltaX=r;break;case vt.MouseWheelY:o.deltaY=r;break;case vt.MouseWheelZ:o.deltaZ=r;break}return o}static _CreateMouseEvent(e,t,i,r,s,a){let o=this._CreateEvent(a),l=s.pollInput(e,t,vt.Horizontal),c=s.pollInput(e,t,vt.Vertical);return a?(o.movementX=0,o.movementY=0,o.offsetX=o.movementX-a.getBoundingClientRect().x,o.offsetY=o.movementY-a.getBoundingClientRect().y):(o.movementX=s.pollInput(e,t,10),o.movementY=s.pollInput(e,t,11),o.offsetX=0,o.offsetY=0),this._CheckNonCharacterKeys(o,s),o.clientX=l,o.clientY=c,o.x=l,o.y=c,o.deviceType=e,o.deviceSlot=t,o.inputIndex=i,o}static _CreateKeyboardEvent(e,t,i,r){let s=this._CreateEvent(r);return this._CheckNonCharacterKeys(s,i),s.deviceType=Je.Keyboard,s.deviceSlot=0,s.inputIndex=e,s.type=t===1?"keydown":"keyup",s.key=String.fromCharCode(e),s.keyCode=e,s}static _CheckNonCharacterKeys(e,t){let i=t.isDeviceAvailable(Je.Keyboard),r=i&&t.pollInput(Je.Keyboard,0,18)===1,s=i&&t.pollInput(Je.Keyboard,0,17)===1,a=i&&(t.pollInput(Je.Keyboard,0,91)===1||t.pollInput(Je.Keyboard,0,92)===1||t.pollInput(Je.Keyboard,0,93)===1),o=i&&t.pollInput(Je.Keyboard,0,16)===1;e.altKey=r,e.ctrlKey=s,e.metaKey=a,e.shiftKey=o}static _CreateEvent(e){let t={};return t.preventDefault=()=>{},t.target=e,t}}});var dx,gG=I(()=>{iP();hh();dx=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=bo.CreateDeviceEvent(r,s,a,o,this);i(r,s,l)}):this._createDummyNativeInput()}pollInput(e,t,i){return this._nativeInput.pollInput(e,t,i)}isDeviceAvailable(e){return e===Je.Mouse||e===Je.Touch}dispose(){this._nativeInput.dispose()}_createDummyNativeInput(){return{pollInput:()=>0,isDeviceAvailable:()=>!1,dispose:()=>{}}}}});var vG,EG,hx,SG=I(()=>{ba();yi();iP();hh();vG=255,EG=Object.keys(vt).length/2,hx=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=_e.IsSafari(),this._usingMacOs=Xl()&&/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform),this._keyboardDownEvent=s=>{},this._keyboardUpEvent=s=>{},this._keyboardBlurEvent=s=>{},this._pointerMoveEvent=s=>{},this._pointerDownEvent=s=>{},this._pointerUpEvent=s=>{},this._pointerCancelEvent=s=>{},this._pointerCancelTouch=s=>{},this._pointerLeaveEvent=s=>{},this._pointerWheelEvent=s=>{},this._pointerBlurEvent=s=>{},this._pointerMacOsChromeOutEvent=s=>{},this._eventsAttached=!1,this._mouseId=-1,this._isUsingFirefox=Xl()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=Xl()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=_e.GetPointerPrefix(e),this._engine=e,this._onDeviceConnected=t,this._onDeviceDisconnected=i,this._onInputChanged=r,this._mouseId=this._isUsingFirefox?0:1,this._enableEvents(),this._usingMacOs&&(this._metaKeys=[]),this._engine._onEngineViewChanged||(this._engine._onEngineViewChanged=()=>{this._enableEvents()})}pollInput(e,t,i){let r=this._inputs[e][t];if(!r)throw`Unable to find device ${Je[e]}`;e>=Je.DualShock&&e<=Je.DualSense&&this._updateDevice(e,t,i);let s=r[i];if(s===void 0)throw`Unable to find input ${i} for device ${Je[e]} in slot ${t}`;return i===vt.Move&&_e.Warn("Unable to provide information for PointerInput.Move. Try using PointerInput.Horizontal or PointerInput.Vertical for move data."),s}isDeviceAvailable(e){return this._inputs[e]!==void 0}dispose(){this._onDeviceConnected=()=>{},this._onDeviceDisconnected=()=>{},this._onInputChanged=()=>{},delete this._engine._onEngineViewChanged,this._elementToAttachTo&&this._disableEvents()}_enableEvents(){let e=this==null?void 0:this._engine.getInputElement();if(e&&(!this._eventsAttached||this._elementToAttachTo!==e)){if(this._disableEvents(),this._inputs){for(let t of this._inputs)if(t)for(let i in t){let r=+i,s=t[r];if(s)for(let a=0;a{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice(Je.Keyboard,0,vG));let t=this._inputs[Je.Keyboard][0];if(t){t[e.keyCode]=1;let i=e;i.inputIndex=e.keyCode,this._usingMacOs&&e.metaKey&&e.key!=="Meta"&&(this._metaKeys.includes(e.keyCode)||this._metaKeys.push(e.keyCode)),this._onInputChanged(Je.Keyboard,0,i)}},this._keyboardUpEvent=e=>{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice(Je.Keyboard,0,vG));let t=this._inputs[Je.Keyboard][0];if(t){t[e.keyCode]=0;let i=e;if(i.inputIndex=e.keyCode,this._usingMacOs&&e.key==="Meta"&&this._metaKeys.length>0){for(let r of this._metaKeys){let s=bo.CreateDeviceEvent(Je.Keyboard,0,r,0,this,this._elementToAttachTo);t[r]=0,this._onInputChanged(Je.Keyboard,0,s)}this._metaKeys.splice(0,this._metaKeys.length)}this._onInputChanged(Je.Keyboard,0,i)}},this._keyboardBlurEvent=()=>{if(this._keyboardActive){let e=this._inputs[Je.Keyboard][0];for(let t=0;t{let r=this._getPointerType(i),s=r===Je.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===Je.Touch&&s===-1){let o=this._activeTouchIds.indexOf(-1);if(o>=0)s=o,this._activeTouchIds[o]=i.pointerId,this._onDeviceConnected(r,s);else{_e.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]||this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=i;o.inputIndex=vt.Move,a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,r===Je.Touch&&a[vt.LeftClick]===0&&(a[vt.LeftClick]=1),i.pointerId===void 0&&(i.pointerId=this._mouseId),this._onInputChanged(r,s,o),!this._usingSafari&&i.button!==-1&&(o.inputIndex=i.button+2,a[i.button+2]=a[i.button+2]?0:1,this._onInputChanged(r,s,o))}},this._pointerDownEvent=i=>{let r=this._getPointerType(i),s=r===Je.Mouse?0:i.pointerId;if(r===Je.Touch){let o=this._activeTouchIds.indexOf(i.pointerId);if(o===-1&&(o=this._activeTouchIds.indexOf(-1)),o>=0)s=o,this._activeTouchIds[o]=i.pointerId;else{_e.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]?r===Je.Touch&&this._onDeviceConnected(r,s):this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=a[vt.Horizontal],l=a[vt.Vertical];if(r===Je.Mouse){if(i.pointerId===void 0&&(i.pointerId=this._mouseId),!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(this._mouseId)}catch(f){}}else if(i.pointerId&&!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(i.pointerId)}catch(f){}a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,a[i.button+2]=1;let c=i;c.inputIndex=i.button+2,this._onInputChanged(r,s,c),(o!==i.clientX||l!==i.clientY)&&(c.inputIndex=vt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,h,u;let r=this._getPointerType(i),s=r===Je.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===Je.Touch){if(s===-1)return;this._activeTouchIds[s]=-1}let a=(c=this._inputs[r])==null?void 0:c[s],o=i.button,l=a&&a[o+2]!==0;if(!l&&this._isUsingFirefox&&this._usingMacOs&&a&&(o=o===2?0:2,l=a[o+2]!==0),l){let m=a[vt.Horizontal],_=a[vt.Vertical];a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||_!==i.clientY)&&(p.inputIndex=vt.Move,this._onInputChanged(r,s,p)),p.inputIndex=o+2,r===Je.Mouse&&this._mouseId>=0&&((d=(f=this._elementToAttachTo).hasPointerCapture)!=null&&d.call(f,this._mouseId))?this._elementToAttachTo.releasePointerCapture(this._mouseId):i.pointerId&&((u=(h=this._elementToAttachTo).hasPointerCapture)!=null&&u.call(h,i.pointerId))&&this._elementToAttachTo.releasePointerCapture(i.pointerId),this._onInputChanged(r,s,p),r===Je.Touch&&this._onDeviceDisconnected(r,s)}},this._pointerCancelTouch=i=>{var a,o;let r=this._activeTouchIds.indexOf(i);if(r===-1)return;(o=(a=this._elementToAttachTo).hasPointerCapture)!=null&&o.call(a,i)&&this._elementToAttachTo.releasePointerCapture(i),this._inputs[Je.Touch][r][vt.LeftClick]=0;let s=bo.CreateDeviceEvent(Je.Touch,r,vt.LeftClick,0,this,this._elementToAttachTo,i);this._onInputChanged(Je.Touch,r,s),this._activeTouchIds[r]=-1,this._onDeviceDisconnected(Je.Touch,r)},this._pointerCancelEvent=i=>{var r,s;if(i.pointerType==="mouse"){let a=this._inputs[Je.Mouse][0];this._mouseId>=0&&((s=(r=this._elementToAttachTo).hasPointerCapture)!=null&&s.call(r,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let o=vt.LeftClick;o<=vt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=bo.CreateDeviceEvent(Je.Mouse,0,o,0,this,this._elementToAttachTo);this._onInputChanged(Je.Mouse,0,l)}}else this._pointerCancelTouch(i.pointerId)},this._pointerLeaveEvent=i=>{i.pointerType==="pen"&&this._pointerCancelTouch(i.pointerId)},this._wheelEventName="onwheel"in document.createElement("div")?"wheel":document.onmousewheel!==void 0?"mousewheel":"DOMMouseScroll";let e=!1,t=function(){};try{let i=Object.defineProperty({},"passive",{get:function(){e=!0}});this._elementToAttachTo.addEventListener("test",t,i),this._elementToAttachTo.removeEventListener("test",t,i)}catch(i){}this._pointerBlurEvent=()=>{var i,r,s,a,o;if(this.isDeviceAvailable(Je.Mouse)){let l=this._inputs[Je.Mouse][0];this._mouseId>=0&&((r=(i=this._elementToAttachTo).hasPointerCapture)!=null&&r.call(i,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let c=vt.LeftClick;c<=vt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=bo.CreateDeviceEvent(Je.Mouse,0,c,0,this,this._elementToAttachTo);this._onInputChanged(Je.Mouse,0,f)}}if(this.isDeviceAvailable(Je.Touch)){let l=this._inputs[Je.Touch];for(let c=0;c{let r=Je.Mouse,s=0;this._inputs[r]||(this._inputs[r]=[]),this._inputs[r][s]||(this._pointerActive=!0,this._registerDevice(r,s,EG));let a=this._inputs[r][s];if(a){a[vt.MouseWheelX]=i.deltaX||0,a[vt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[vt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[vt.MouseWheelX]!==0&&(o.inputIndex=vt.MouseWheelX,this._onInputChanged(r,s,o)),a[vt.MouseWheelY]!==0&&(o.inputIndex=vt.MouseWheelY,this._onInputChanged(r,s,o)),a[vt.MouseWheelZ]!==0&&(o.inputIndex=vt.MouseWheelZ,this._onInputChanged(r,s,o))}},this._usingMacOs&&this._isUsingChromium&&(this._pointerMacOsChromeOutEvent=i=>{i.buttons>1&&this._pointerCancelEvent(i)},this._elementToAttachTo.addEventListener("lostpointercapture",this._pointerMacOsChromeOutEvent)),this._elementToAttachTo.addEventListener(this._eventPrefix+"move",this._pointerMoveEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"down",this._pointerDownEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"up",this._pointerUpEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"cancel",this._pointerCancelEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"leave",this._pointerLeaveEvent),this._elementToAttachTo.addEventListener("blur",this._pointerBlurEvent),this._elementToAttachTo.addEventListener(this._wheelEventName,this._pointerWheelEvent,e?{passive:!1}:!1),this._pointerInputClearObserver=this._engine.onEndFrameObservable.add(()=>{if(this.isDeviceAvailable(Je.Mouse)){let i=this._inputs[Je.Mouse][0];i[vt.MouseWheelX]=0,i[vt.MouseWheelY]=0,i[vt.MouseWheelZ]=0}})}_handleGamepadActions(){this._gamepadConnectedEvent=e=>{this._addGamePad(e.gamepad)},this._gamepadDisconnectedEvent=e=>{if(this._gamepads){let t=this._getGamepadDeviceType(e.gamepad.id),i=e.gamepad.index;this._unregisterDevice(t,i),delete this._gamepads[i]}},window.addEventListener("gamepadconnected",this._gamepadConnectedEvent),window.addEventListener("gamepaddisconnected",this._gamepadDisconnectedEvent)}_updateDevice(e,t,i){let r=navigator.getGamepads()[t];if(r&&e===this._gamepads[t]){let s=this._inputs[e][t];i>=r.buttons.length?s[i]=r.axes[i-r.buttons.length].valueOf():s[i]=r.buttons[i].value}}_getGamepadDeviceType(e){return e.indexOf("054c")!==-1?e.indexOf("0ce6")!==-1?Je.DualSense:Je.DualShock:e.indexOf("Xbox One")!==-1||e.search("Xbox 360")!==-1||e.search("xinput")!==-1?Je.Xbox:e.indexOf("057e")!==-1?Je.Switch:Je.Generic}_getPointerType(e){let t=Je.Mouse;return(e.pointerType==="touch"||e.pointerType==="pen"||e.touches)&&(t=Je.Touch),t}}});var Lg,TG=I(()=>{hi();Lg=class{constructor(e,t,i=0){this.deviceType=t,this.deviceSlot=i,this.onInputChangedObservable=new ie,this._deviceInputSystem=e}getInput(e){return this._deviceInputSystem.pollInput(this.deviceType,this.deviceSlot,e)}}});var ux,AG=I(()=>{hh();gG();SG();TG();ux=class{constructor(e){this._registeredManagers=new Array,this._refCount=0,this.registerManager=a=>{for(let o=0;o{let o=this._registeredManagers.indexOf(a);o>-1&&this._registeredManagers.splice(o,1)};let t=Object.keys(Je).length/2;this._devices=new Array(t);let i=(a,o)=>{this._devices[a]||(this._devices[a]=new Array),this._devices[a][o]||(this._devices[a][o]=o);for(let l of this._registeredManagers){let c=new Lg(this._deviceInputSystem,a,o);l._addDevice(c)}},r=(a,o)=>{var l;(l=this._devices[a])!=null&&l[o]&&delete this._devices[a][o];for(let c of this._registeredManagers)c._removeDevice(a,o)},s=(a,o,l)=>{if(l)for(let c of this._registeredManagers)c._onInputChanged(a,o,l)};typeof _native!="undefined"?this._deviceInputSystem=new dx(i,r,s):this._deviceInputSystem=new hx(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var mx,xG=I(()=>{hh();hi();AG();mx=class{getDeviceSource(e,t){if(t===void 0){if(this._firstDevice[e]===void 0)return null;t=this._firstDevice[e]}return!this._devices[e]||this._devices[e][t]===void 0?null:this._devices[e][t]}getDeviceSources(e){return this._devices[e]?this._devices[e].filter(t=>!!t):[]}constructor(e){let t=Object.keys(Je).length/2;this._devices=new Array(t),this._firstDevice=new Array(t),this._engine=e,this._engine._deviceSourceManager||(this._engine._deviceSourceManager=new ux(e)),this._engine._deviceSourceManager._refCount++,this.onDeviceConnectedObservable=new ie(i=>{for(let r of this._devices)if(r)for(let s of r)s&&this.onDeviceConnectedObservable.notifyObserver(i,s)}),this.onDeviceDisconnectedObservable=new ie,this._engine._deviceSourceManager.registerManager(this),this._onDisposeObserver=e.onDisposeObservable.add(()=>{this.dispose()})}dispose(){this.onDeviceConnectedObservable.clear(),this.onDeviceDisconnectedObservable.clear(),this._engine._deviceSourceManager&&(this._engine._deviceSourceManager.unregisterManager(this),--this._engine._deviceSourceManager._refCount<1&&(this._engine._deviceSourceManager.dispose(),delete this._engine._deviceSourceManager)),this._engine.onDisposeObservable.remove(this._onDisposeObserver)}_addDevice(e){this._devices[e.deviceType]||(this._devices[e.deviceType]=[]),this._devices[e.deviceType][e.deviceSlot]||(this._devices[e.deviceType][e.deviceSlot]=e,this._updateFirstDevices(e.deviceType)),this.onDeviceConnectedObservable.notifyObservers(e)}_removeDevice(e,t){var r,s;let i=(r=this._devices[e])==null?void 0:r[t];this.onDeviceDisconnectedObservable.notifyObservers(i),(s=this._devices[e])!=null&&s[t]&&delete this._devices[e][t],this._updateFirstDevices(e)}_onInputChanged(e,t,i){var r,s;(s=(r=this._devices[e])==null?void 0:r[t])==null||s.onInputChangedObservable.notifyObservers(i)}_updateFirstDevices(e){switch(e){case Je.Keyboard:case Je.Mouse:this._firstDevice[e]=0;break;case Je.Touch:case Je.DualSense:case Je.DualShock:case Je.Xbox:case Je.Switch:case Je.Generic:{delete this._firstDevice[e];let t=this._devices[e];if(t){for(let i=0;i{uh=class{};uh._IsPickingAvailable=!1});var px,Gn,RG=I(()=>{Ao();fG();Ig();ke();$C();cx();hh();xG();Ni();rP();px=class{constructor(){this._singleClick=!1,this._doubleClick=!1,this._hasSwiped=!1,this._ignore=!1}get singleClick(){return this._singleClick}get doubleClick(){return this._doubleClick}get hasSwiped(){return this._hasSwiped}get ignore(){return this._ignore}set singleClick(e){this._singleClick=e}set doubleClick(e){this._doubleClick=e}set hasSwiped(e){this._hasSwiped=e}set ignore(e){this._ignore=e}},Gn=class n{constructor(e){this._alreadyAttached=!1,this._meshPickProceed=!1,this._currentPickResult=null,this._previousPickResult=null,this._activePointerIds=new Array,this._activePointerIdsCount=0,this._doubleClickOccured=!1,this._isSwiping=!1,this._swipeButtonPressed=-1,this._skipPointerTap=!1,this._isMultiTouchGesture=!1,this._pointerX=0,this._pointerY=0,this._startingPointerPosition=new Fe(0,0),this._previousStartingPointerPosition=new Fe(0,0),this._startingPointerTime=0,this._previousStartingPointerTime=0,this._pointerCaptures={},this._meshUnderPointerId={},this._movePointerInfo=null,this._cameraObserverCount=0,this._delayedClicks=[null,null,null,null,null],this._deviceSourceManager=null,this._scene=e||Oe.LastCreatedScene,this._scene}get meshUnderPointer(){return this._movePointerInfo&&(this._movePointerInfo._generatePickInfo(),this._movePointerInfo=null),this._pointerOverMesh}getMeshUnderPointerByPointerId(e){return this._meshUnderPointerId[e]||null}get unTranslatedPointer(){return new Fe(this._unTranslatedPointerX,this._unTranslatedPointerY)}get pointerX(){return this._pointerX}set pointerX(e){this._pointerX=e}get pointerY(){return this._pointerY}set pointerY(e){this._pointerY=e}_updatePointerPosition(e){let t=this._scene.getEngine().getInputElementClientRect();t&&(this._pointerX=e.clientX-t.left,this._pointerY=e.clientY-t.top,this._unTranslatedPointerX=this._pointerX,this._unTranslatedPointerY=this._pointerY)}_processPointerMove(e,t){let i=this._scene,r=i.getEngine(),s=r.getInputElement();s&&(s.tabIndex=r.canvasTabIndex,i.doNotHandleCursors||(s.style.cursor=i.defaultCursor)),this._setCursorAndPointerOverMesh(e,t,i);for(let l of i._pointerMoveStage){e=e||this._pickMove(t);let c=!!(e!=null&&e.pickedMesh);e=l.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,c,s)}let a=t.inputIndex>=vt.MouseWheelX&&t.inputIndex<=vt.MouseWheelZ?st.POINTERWHEEL:st.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Na(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Na(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&uh._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,q.Identity(),i.activeCamera)))}_addCameraPointerObserver(e,t){return this._cameraObserverCount++,this._scene.onPointerObservable.add(e,t)}_removeCameraPointerObserver(e){return this._cameraObserverCount--,this._scene.onPointerObservable.remove(e)}_checkForPicking(){return!!(this._scene.onPointerObservable.observers.length>this._cameraObserverCount||this._scene.onPointerPick)}_checkPrePointerObservable(e,t,i){let r=this._scene,s=new lx(i,t,this._unTranslatedPointerX,this._unTranslatedPointerY);return e&&(s.originalPickingInfo=e,s.ray=e.ray,t.pointerType==="xr-near"&&e.originMesh&&(s.nearInteractionPickingInfo=e)),r.onPrePointerObservable.notifyObservers(s,i),!!s.skipOnPointerObservable}_pickMove(e){let t=this._scene,i=t.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,t.pointerMovePredicate,t.pointerMoveFastCheck,t.cameraToUseForPointers,t.pointerMoveTrianglePredicate);return this._setCursorAndPointerOverMesh(i,e,t),i}_setCursorAndPointerOverMesh(e,t,i){let s=i.getEngine().getInputElement();if(e!=null&&e.pickedMesh){if(this.setPointerOverMesh(e.pickedMesh,t.pointerId,e,t),!i.doNotHandleCursors&&s&&this._pointerOverMesh){let a=this._pointerOverMesh._getActionManagerForTrigger();a&&a.hasPointerTriggers&&(s.style.cursor=a.hoverCursor||i.hoverCursor)}}else this.setPointerOverMesh(null,t.pointerId,e,t)}simulatePointerMove(e,t){let i=new PointerEvent("pointermove",t);i.inputIndex=vt.Move,!this._checkPrePointerObservable(e,i,st.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,st.POINTERDOWN)&&this._processPointerDown(e,i)}_processPointerDown(e,t){let i=this._scene;if(e!=null&&e.pickedMesh){this._pickedDownMesh=e.pickedMesh;let a=e.pickedMesh._getActionManagerForTrigger();if(a){if(a.hasPickTriggers)switch(a.processTrigger(5,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break}a.hasSpecificTrigger(8)&&window.setTimeout(()=>{let o=i.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,l=>l.isPickable&&l.isVisible&&l.isReady()&&l.actionManager&&l.actionManager.hasSpecificTrigger(8)&&l===this._pickedDownMesh,!1,i.cameraToUseForPointers);o!=null&&o.pickedMesh&&a&&this._activePointerIdsCount!==0&&Date.now()-this._startingPointerTime>n.LongPressDelay&&!this._isPointerSwiping()&&(this._startingPointerTime=0,a.processTrigger(8,an.CreateNew(o.pickedMesh,t)))},n.LongPressDelay)}}else for(let a of i._pointerDownStage)e=a.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,!1);let r,s=st.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Na(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Na(s,t,null,this),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(r,s)}_isPointerSwiping(){return this._isSwiping}simulatePointerUp(e,t,i){let r=new PointerEvent("pointerup",t);r.inputIndex=vt.Move;let s=new px;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,st.POINTERUP)&&this._processPointerUp(e,r,s)}_processPointerUp(e,t,i){let r=this._scene;if(e!=null&&e.pickedMesh){if(this._pickedUpMesh=e.pickedMesh,this._pickedDownMesh===this._pickedUpMesh&&(r.onPointerPick&&r.onPointerPick(t,e),i.singleClick&&!i.ignore&&r.onPointerObservable.observers.length>this._cameraObserverCount)){let a=st.POINTERPICK,o=new Na(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,an.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,an.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,an.CreateNew(e.pickedMesh,t,e))}}else if(!i.ignore)for(let s of r._pointerUpStage)e=s.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,i.doubleClick);if(this._pickedDownMesh&&this._pickedDownMesh!==this._pickedUpMesh){let s=this._pickedDownMesh._getActionManagerForTrigger(16);s&&s.processTrigger(16,an.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Na(st.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,st.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,st.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=st.POINTERTAP:i.doubleClick&&(a=st.POINTERDOUBLETAP),a){let o=new Na(a,t,e);r.onPointerObservable.hasObservers()&&r.onPointerObservable.hasSpecificMask(a)&&r.onPointerObservable.notifyObservers(o,a)}}}}isPointerCaptured(e=0){return this._pointerCaptures[e]}attachControl(e=!0,t=!0,i=!0,r=null){let s=this._scene,a=s.getEngine();r||(r=a.getInputElement()),this._alreadyAttached&&this.detachControl(),r&&(this._alreadyAttachedTo=r),this._deviceSourceManager=new mx(a),this._initActionManager=o=>{if(!this._meshPickProceed){let l=s.skipPointerUpPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerUp?null:s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerUpPredicate,s.pointerUpFastCheck,s.cameraToUseForPointers,s.pointerUpTrianglePredicate);this._currentPickResult=l,l&&(o=l.hit&&l.pickedMesh?l.pickedMesh._getActionManagerForTrigger():null),this._meshPickProceed=!0}return o},this._delayedSimpleClick=(o,l,c)=>{if((Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay&&!this._doubleClickOccured||o!==this._previousButtonPressed)&&(this._doubleClickOccured=!1,l.singleClick=!0,l.ignore=!1,this._delayedClicks[o])){let f=this._delayedClicks[o].evt,d=st.POINTERTAP,h=new Na(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(h,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var _,p;let d=new px;this._currentPickResult=null;let h=null,u=o.hasSpecificMask(st.POINTERPICK)||l.hasSpecificMask(st.POINTERPICK)||o.hasSpecificMask(st.POINTERTAP)||l.hasSpecificMask(st.POINTERTAP)||o.hasSpecificMask(st.POINTERDOUBLETAP)||l.hasSpecificMask(st.POINTERDOUBLETAP);!u&&oc&&(h=this._initActionManager(h,d),h&&(u=h.hasPickTriggers));let m=!1;if(u=u&&!this._isMultiTouchGesture,u){let g=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(st.POINTERDOUBLETAP)&&!l.hasSpecificMask(st.POINTERDOUBLETAP),v&&!oc.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(v=!h.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||g!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let S={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,g,d,f),n.DoubleClickDelay)};this._delayedClicks[g]=S}let x=o.hasSpecificMask(st.POINTERDOUBLETAP)||l.hasSpecificMask(st.POINTERDOUBLETAP);!x&&oc.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(x=h.hasSpecificTrigger(6))),x&&(g===this._previousButtonPressed&&Date.now()-this._previousStartingPointerTime{if(this._updatePointerPosition(o),!this._isSwiping&&this._swipeButtonPressed!==-1&&(this._isSwiping=Math.abs(this._startingPointerPosition.x-this._pointerX)>n.DragMovementThreshold||Math.abs(this._startingPointerPosition.y-this._pointerY)>n.DragMovementThreshold),a.isPointerLock&&a._verifyPointerLock(),this._checkPrePointerObservable(null,o,o.inputIndex>=vt.MouseWheelX&&o.inputIndex<=vt.MouseWheelZ?st.POINTERWHEEL:st.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new fs,o);return}s.pointerMovePredicate||(s.pointerMovePredicate=c=>c.isPickable&&c.isVisible&&c.isReady()&&c.isEnabled()&&(c.enablePointerMoveEvents||s.constantlyUpdateMeshUnderPointer||c._getActionManagerForTrigger()!==null)&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&c.layerMask)!==0));let l=s._registeredActions>0||s.constantlyUpdateMeshUnderPointer?this._pickMove(o):null;this._processPointerMove(l,o)},this._onPointerDown=o=>{var f;let l=this._activePointerIds.indexOf(-1);if(l===-1?this._activePointerIds.push(o.pointerId):this._activePointerIds[l]=o.pointerId,this._activePointerIdsCount++,this._pickedDownMesh=null,this._meshPickProceed=!1,n.ExclusiveDoubleClickMode){for(let d=0;dd.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),this._pickedDownMesh=null;let c;s.skipPointerDownPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerDown?c=new fs:c=s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerDownPredicate,s.pointerDownFastCheck,s.cameraToUseForPointers,s.pointerDownTrianglePredicate),this._processPointerDown(c,o)},this._onPointerUp=o=>{let l=this._activePointerIds.indexOf(o.pointerId);l!==-1&&(this._activePointerIds[l]=-1,this._activePointerIdsCount--,this._pickedUpMesh=null,this._meshPickProceed=!1,this._updatePointerPosition(o),s.preventDefaultOnPointerUp&&r&&(o.preventDefault(),r.focus()),this._initClickEvent(s.onPrePointerObservable,s.onPointerObservable,o,(c,f)=>{if(s.onPrePointerObservable.hasObservers()&&(this._skipPointerTap=!1,!c.ignore)){if(this._checkPrePointerObservable(null,o,st.POINTERUP)){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1),o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1);return}c.hasSwiped||(c.singleClick&&s.onPrePointerObservable.hasSpecificMask(st.POINTERTAP)&&this._checkPrePointerObservable(null,o,st.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(st.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,st.POINTERDOUBLETAP)&&(this._skipPointerTap=!0))}if(!this._pointerCaptures[o.pointerId]){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1);return}o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1),!(!s.cameraToUseForPointers&&!s.activeCamera)&&(s.pointerUpPredicate||(s.pointerUpPredicate=d=>d.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),!this._meshPickProceed&&(oc&&oc.HasTriggers||this._checkForPicking()||s.onPointerUp)&&this._initActionManager(null,c),f||(f=this._currentPickResult),this._processPointerUp(f,o,c),this._previousPickResult=this._currentPickResult,this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1))}))},this._onKeyDown=o=>{let l=xo.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new Dg(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new bm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,an.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=xo.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new Dg(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new bm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,an.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===Je.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===vt.LeftClick||l.inputIndex===vt.MiddleClick||l.inputIndex===vt.RightClick||l.inputIndex===vt.BrowserBack||l.inputIndex===vt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===vt.Move?this._onPointerMove(l):(l.inputIndex===vt.MouseWheelX||l.inputIndex===vt.MouseWheelY||l.inputIndex===vt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===Je.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===vt.LeftClick&&(t&&o.getInput(l.inputIndex)===1?(this._onPointerDown(l),this._activePointerIdsCount>1&&(this._isMultiTouchGesture=!0)):e&&o.getInput(l.inputIndex)===0&&(this._onPointerUp(l),this._activePointerIdsCount===0&&(this._isMultiTouchGesture=!1))),i&&l.inputIndex===vt.Move&&this._onPointerMove(l)}):o.deviceType===Je.Keyboard&&o.onInputChangedObservable.add(l=>{l.type==="keydown"?this._onKeyDown(l):l.type==="keyup"&&this._onKeyUp(l)})}),this._alreadyAttached=!0}detachControl(){this._alreadyAttached&&(this._deviceSourceManager.dispose(),this._deviceSourceManager=null,this._alreadyAttachedTo&&!this._scene.doNotHandleCursors&&(this._alreadyAttachedTo.style.cursor=this._scene.defaultCursor),this._alreadyAttached=!1,this._alreadyAttachedTo=null)}setPointerOverMesh(e,t=0,i,r){if(this._meshUnderPointerId[t]===e&&(!e||!e._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting))return;let s=this._meshUnderPointerId[t],a;s&&(a=s._getActionManagerForTrigger(10),a&&a.processTrigger(10,new an(s,this._pointerX,this._pointerY,e,r,{pointerId:t}))),e?(this._meshUnderPointerId[t]=e,this._pointerOverMesh=e,a=e._getActionManagerForTrigger(9),a&&a.processTrigger(9,new an(e,this._pointerX,this._pointerY,e,r,{pointerId:t,pickResult:i}))):(delete this._meshUnderPointerId[t],this._pointerOverMesh=null),this._scene.onMeshUnderPointerUpdatedObservable.hasObservers()&&this._scene.onMeshUnderPointerUpdatedObservable.notifyObservers({mesh:e,pointerId:t})}getPointerOverMesh(){return this.meshUnderPointer}_invalidateMesh(e){this._pointerOverMesh===e&&(this._pointerOverMesh=null),this._pickedDownMesh===e&&(this._pickedDownMesh=null),this._pickedUpMesh===e&&(this._pickedUpMesh=null);for(let t in this._meshUnderPointerId)this._meshUnderPointerId[t]===e&&delete this._meshUnderPointerId[t]}};Gn.DragMovementThreshold=10;Gn.LongPressDelay=500;Gn.DoubleClickDelay=300;Gn.ExclusiveDoubleClickMode=!1});var ul,nP=I(()=>{Yl();ul=class n{get min(){return this._min}get max(){return this._max}get average(){return this._average}get lastSecAverage(){return this._lastSecAverage}get current(){return this._current}get total(){return this._totalAccumulated}get count(){return this._totalValueCount}constructor(){this._startMonitoringTime=0,this._min=0,this._max=0,this._average=0,this._lastSecAverage=0,this._current=0,this._totalValueCount=0,this._totalAccumulated=0,this._lastSecAccumulated=0,this._lastSecTime=0,this._lastSecValueCount=0}fetchNewFrame(){this._totalValueCount++,this._current=0,this._lastSecValueCount++}addCount(e,t){n.Enabled&&(this._current+=e,t&&this._fetchResult())}beginMonitoring(){n.Enabled&&(this._startMonitoringTime=Er.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=Er.Now;this._current=t-this._startMonitoringTime,e&&this._fetchResult()}endFrame(){this._fetchResult()}_fetchResult(){this._totalAccumulated+=this._current,this._lastSecAccumulated+=this._current,this._min=Math.min(this._min,this._current),this._max=Math.max(this._max,this._current),this._average=this._totalAccumulated/this._totalValueCount;let e=Er.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};ul.Enabled=!0});var lc,_x=I(()=>{lc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};lc._UniqueIdCounter=1});var gx,bG=I(()=>{gx=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var Ale,xle,MG,ei,Bs=I(()=>{yi();Yl();hi();So();ZV();Sf();ke();Mg();Af();Ig();$C();ZA();Pg();$A();Rm();ba();Ni();un();RG();nP();Ht();BA();_x();Jl();Tg();ol();bG();Pt();Yi();sl();Ale=new Ii,xle=new Ii;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(MG||(MG={}));ei=class n{static DefaultMaterialFactory(e){throw Qe("StandardMaterial")}static CollisionCoordinatorFactory(){throw Qe("DefaultCollisionCoordinator")}get clearColor(){return this._clearColor}set clearColor(e){e!==this._clearColor&&(this._clearColor=e,this.onClearColorChangedObservable.notifyObservers(this._clearColor))}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}get performancePriority(){return this._performancePriority}set performancePriority(e){if(e!==this._performancePriority){switch(this._performancePriority=e,e){case 0:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!1,this.autoClear=!0;break;case 1:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!0,this.autoClear=!1;break;case 2:this.skipFrustumClipping=!0,this._renderingManager.maintainStateBetweenFrames=!0,this.skipPointerMovePicking=!0,this.autoClear=!1;break}this.onScenePerformancePriorityChangedObservable.notifyObservers(e)}}set forceWireframe(e){this._forceWireframe!==e&&(this._forceWireframe=e,this.markAllMaterialsAsDirty(16))}get forceWireframe(){return this._forceWireframe}set skipFrustumClipping(e){this._skipFrustumClipping!==e&&(this._skipFrustumClipping=e)}get skipFrustumClipping(){return this._skipFrustumClipping}set forcePointsCloud(e){this._forcePointsCloud!==e&&(this._forcePointsCloud=e,this.markAllMaterialsAsDirty(16))}get forcePointsCloud(){return this._forcePointsCloud}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture!==e&&(this._environmentTexture=e,this.onEnvironmentTextureChangedObservable.notifyObservers(e),this.markAllMaterialsAsDirty(1))}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}get animationPropertiesOverride(){return this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set beforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),e&&(this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e))}set afterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),e&&(this._onAfterRenderObserver=this.onAfterRenderObservable.add(e))}set beforeCameraRender(e){this._onBeforeCameraRenderObserver&&this.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver),this._onBeforeCameraRenderObserver=this.onBeforeCameraRenderObservable.add(e)}set afterCameraRender(e){this._onAfterCameraRenderObserver&&this.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver),this._onAfterCameraRenderObserver=this.onAfterCameraRenderObservable.add(e)}get pointerDownPredicate(){return this._pointerPickingConfiguration.pointerDownPredicate}set pointerDownPredicate(e){this._pointerPickingConfiguration.pointerDownPredicate=e}get pointerUpPredicate(){return this._pointerPickingConfiguration.pointerUpPredicate}set pointerUpPredicate(e){this._pointerPickingConfiguration.pointerUpPredicate=e}get pointerMovePredicate(){return this._pointerPickingConfiguration.pointerMovePredicate}set pointerMovePredicate(e){this._pointerPickingConfiguration.pointerMovePredicate=e}get pointerDownFastCheck(){return this._pointerPickingConfiguration.pointerDownFastCheck}set pointerDownFastCheck(e){this._pointerPickingConfiguration.pointerDownFastCheck=e}get pointerUpFastCheck(){return this._pointerPickingConfiguration.pointerUpFastCheck}set pointerUpFastCheck(e){this._pointerPickingConfiguration.pointerUpFastCheck=e}get pointerMoveFastCheck(){return this._pointerPickingConfiguration.pointerMoveFastCheck}set pointerMoveFastCheck(e){this._pointerPickingConfiguration.pointerMoveFastCheck=e}get skipPointerMovePicking(){return this._pointerPickingConfiguration.skipPointerMovePicking}set skipPointerMovePicking(e){this._pointerPickingConfiguration.skipPointerMovePicking=e}get skipPointerDownPicking(){return this._pointerPickingConfiguration.skipPointerDownPicking}set skipPointerDownPicking(e){this._pointerPickingConfiguration.skipPointerDownPicking=e}get skipPointerUpPicking(){return this._pointerPickingConfiguration.skipPointerUpPicking}set skipPointerUpPicking(e){this._pointerPickingConfiguration.skipPointerUpPicking=e}get unTranslatedPointer(){return this._inputManager.unTranslatedPointer}static get DragMovementThreshold(){return Gn.DragMovementThreshold}static set DragMovementThreshold(e){Gn.DragMovementThreshold=e}static get LongPressDelay(){return Gn.LongPressDelay}static set LongPressDelay(e){Gn.LongPressDelay=e}static get DoubleClickDelay(){return Gn.DoubleClickDelay}static set DoubleClickDelay(e){Gn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return Gn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){Gn.ExclusiveDoubleClickMode=e}get _eyePosition(){var e,t,i;return(i=(t=this._forcedViewPosition)!=null?t:(e=this.activeCamera)==null?void 0:e.globalPosition)!=null?i:b.ZeroReadOnly}bindEyePosition(e,t="vEyePosition",i=!1){let r=this._eyePosition,s=this.useRightHandedSystem===(this._mirroredCameraPosition!=null),a=this.floatingOriginOffset,o=Ale.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,xle);return e&&(i?e.setFloat3(t,l.x,l.y,l.z):e.setVector4(t,l)),o}finalizeSceneUbo(){let e=this.getSceneUniformBuffer(),t=this.bindEyePosition(null),i=this.floatingOriginOffset;return e.updateFloat4("vEyePosition",t.x-i.x,t.y-i.y,t.z-i.z,t.w),e.update(),e}set useRightHandedSystem(e){this._useRightHandedSystem!==e&&(this._useRightHandedSystem=e,this.markAllMaterialsAsDirty(16))}get useRightHandedSystem(){return this._useRightHandedSystem}setStepId(e){this._currentStepId=e}getStepId(){return this._currentStepId}getInternalStep(){return this._currentInternalStep}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAllMaterialsAsDirty(16))}get fogEnabled(){return this._fogEnabled}set fogMode(e){this._fogMode!==e&&(this._fogMode=e,this.markAllMaterialsAsDirty(16))}get fogMode(){return this._fogMode}get prePass(){return!!this.prePassRenderer&&this.prePassRenderer.defaultRT.enabled}set shadowsEnabled(e){this._shadowsEnabled!==e&&(this._shadowsEnabled=e,this.markAllMaterialsAsDirty(2))}get shadowsEnabled(){return this._shadowsEnabled}set lightsEnabled(e){this._lightsEnabled!==e&&(this._lightsEnabled=e,this.markAllMaterialsAsDirty(2))}get lightsEnabled(){return this._lightsEnabled}get activeCameras(){return this._activeCameras}set activeCameras(e){this._unObserveActiveCameras&&(this._unObserveActiveCameras(),this._unObserveActiveCameras=null),e&&(this._unObserveActiveCameras=wA(e,()=>{this.onActiveCamerasChanged.notifyObservers(this)})),this._activeCameras=e}get activeCamera(){return this._activeCamera}set activeCamera(e){e!==this._activeCamera&&(this._activeCamera=e,this.onActiveCameraChanged.notifyObservers(this))}get _hasDefaultMaterial(){return n.DefaultMaterialFactory!==n._OriginalDefaultMaterialFactory}get defaultMaterial(){return this._defaultMaterial||(this._defaultMaterial=n.DefaultMaterialFactory(this)),this._defaultMaterial}set defaultMaterial(e){this._defaultMaterial=e}set texturesEnabled(e){this._texturesEnabled!==e&&(this._texturesEnabled=e,this.markAllMaterialsAsDirty(1))}get texturesEnabled(){return this._texturesEnabled}get frameGraph(){return this._frameGraph}set frameGraph(e){if(this._frameGraph){this._frameGraph=e,e||(this.customRenderFunction=this._currentCustomRenderFunction);return}this._frameGraph=e,e&&(this._currentCustomRenderFunction=this.customRenderFunction,this.customRenderFunction=this._renderWithFrameGraph,this.activeCamera=null)}set skeletonsEnabled(e){this._skeletonsEnabled!==e&&(this._skeletonsEnabled=e,this.markAllMaterialsAsDirty(8))}get skeletonsEnabled(){return this._skeletonsEnabled}get collisionCoordinator(){return this._collisionCoordinator||(this._collisionCoordinator=n.CollisionCoordinatorFactory(),this._collisionCoordinator.init(this)),this._collisionCoordinator}get renderingManager(){return this._renderingManager}get frustumPlanes(){return this._frustumPlanes}_registerTransientComponents(){if(this._transientComponents.length>0){for(let e of this._transientComponents)e.register();this._transientComponents.length=0}}_addComponent(e){this._components.push(e),this._transientComponents.push(e);let t=e;t.addFromContainer&&t.serialize&&this._serializableComponents.push(t)}_getComponent(e){for(let t of this._components)if(t.name===e)return t;return null}get uniqueId(){return this._uniqueId}constructor(e,t){this._inputManager=new Gn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new lt(.2,.2,.3,1),this.onClearColorChangedObservable=new ie,this.ambientColor=new pe(0,0,0),this.environmentIntensity=1,this.iblIntensity=1,this._performancePriority=0,this.onScenePerformancePriorityChangedObservable=new ie,this._forceWireframe=!1,this._skipFrustumClipping=!1,this._forcePointsCloud=!1,this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.objectRenderers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.effectLayers=[],this.sounds=null,this.layers=[],this.lensFlareSystems=[],this.proceduralTextures=[],this.animationsEnabled=!0,this._animationPropertiesOverride=null,this.useConstantAnimationDeltaTime=!1,this.constantlyUpdateMeshUnderPointer=!1,this.hoverCursor="pointer",this.defaultCursor="",this.doNotHandleCursors=!1,this.preventDefaultOnPointerDown=!0,this.preventDefaultOnPointerUp=!0,this.metadata=null,this.reservedDataStore=null,this.disableOfflineSupportExceptionRules=[],this.onDisposeObservable=new ie,this._onDisposeObserver=null,this.onBeforeRenderObservable=new ie,this._onBeforeRenderObserver=null,this.onAfterRenderObservable=new ie,this.onAfterRenderCameraObservable=new ie,this._onAfterRenderObserver=null,this.onBeforeAnimationsObservable=new ie,this.onAfterAnimationsObservable=new ie,this.onBeforeDrawPhaseObservable=new ie,this.onAfterDrawPhaseObservable=new ie,this.onReadyObservable=new ie,this.onBeforeCameraRenderObservable=new ie,this._onBeforeCameraRenderObserver=null,this.onAfterCameraRenderObservable=new ie,this._onAfterCameraRenderObserver=null,this.onBeforeActiveMeshesEvaluationObservable=new ie,this.onAfterActiveMeshesEvaluationObservable=new ie,this.onBeforeParticlesRenderingObservable=new ie,this.onAfterParticlesRenderingObservable=new ie,this.onDataLoadedObservable=new ie,this.onNewCameraAddedObservable=new ie,this.onCameraRemovedObservable=new ie,this.onNewLightAddedObservable=new ie,this.onLightRemovedObservable=new ie,this.onNewGeometryAddedObservable=new ie,this.onGeometryRemovedObservable=new ie,this.onNewTransformNodeAddedObservable=new ie,this.onTransformNodeRemovedObservable=new ie,this.onNewMeshAddedObservable=new ie,this.onMeshRemovedObservable=new ie,this.onNewSkeletonAddedObservable=new ie,this.onSkeletonRemovedObservable=new ie,this.onNewParticleSystemAddedObservable=new ie,this.onParticleSystemRemovedObservable=new ie,this.onNewAnimationGroupAddedObservable=new ie,this.onAnimationGroupRemovedObservable=new ie,this.onNewMaterialAddedObservable=new ie,this.onNewMultiMaterialAddedObservable=new ie,this.onMaterialRemovedObservable=new ie,this.onMultiMaterialRemovedObservable=new ie,this.onNewTextureAddedObservable=new ie,this.onTextureRemovedObservable=new ie,this.onNewFrameGraphAddedObservable=new ie,this.onFrameGraphRemovedObservable=new ie,this.onNewObjectRendererAddedObservable=new ie,this.onObjectRendererRemovedObservable=new ie,this.onNewPostProcessAddedObservable=new ie,this.onPostProcessRemovedObservable=new ie,this.onNewEffectLayerAddedObservable=new ie,this.onEffectLayerRemovedObservable=new ie,this.onBeforeRenderTargetsRenderObservable=new ie,this.onAfterRenderTargetsRenderObservable=new ie,this.onBeforeStepObservable=new ie,this.onAfterStepObservable=new ie,this.onActiveCameraChanged=new ie,this.onActiveCamerasChanged=new ie,this.onBeforeRenderingGroupObservable=new ie,this.onAfterRenderingGroupObservable=new ie,this.onMeshImportedObservable=new ie,this.onAnimationFileImportedObservable=new ie,this.onEnvironmentTextureChangedObservable=new ie,this.onMeshUnderPointerUpdatedObservable=new ie,this._registeredForLateAnimationBindings=new Eo(256),this._pointerPickingConfiguration=new gx,this.onPrePointerObservable=new ie,this.onPointerObservable=new ie,this.onPreKeyboardObservable=new ie,this.onKeyboardObservable=new ie,this._useRightHandedSystem=!1,this._timeAccumulator=0,this._currentStepId=0,this._currentInternalStep=0,this._fogEnabled=!0,this._fogMode=n.FOGMODE_NONE,this.fogColor=new pe(.2,.2,.3),this.fogDensity=.1,this.fogStart=0,this.fogEnd=1e3,this.needsPreviousWorldMatrices=!1,this._shadowsEnabled=!0,this._lightsEnabled=!0,this._unObserveActiveCameras=null,this._texturesEnabled=!0,this._frameGraph=null,this.frameGraphs=[],this.physicsEnabled=!0,this.particlesEnabled=!0,this.spritesEnabled=!0,this._skeletonsEnabled=!0,this.lensFlaresEnabled=!0,this.collisionsEnabled=!0,this.gravity=new b(0,-9.807,0),this.postProcessesEnabled=!0,this.renderTargetsEnabled=!0,this.dumpNextRenderTargets=!1,this.customRenderTargets=[],this.importedMeshesFiles=[],this.probesEnabled=!0,this._meshesForIntersections=new Eo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new ul,this._activeIndices=new ul,this._activeParticles=new ul,this._activeBones=new ul,this._animationTime=0,this.animationTimeScale=1,this._renderId=0,this._frameId=0,this._executeWhenReadyTimeoutId=null,this._intermediateRendering=!1,this._defaultFrameBufferCleared=!1,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1,this._toBeDisposed=new Array(256),this._activeRequests=new Array,this._pendingData=[],this._isDisposed=!1,this._isReadyChecks=[],this.dispatchAllSubMeshesOfActiveMeshes=!1,this._activeMeshes=new Vi(256),this._processedMaterials=new Vi(256),this._renderTargets=new Eo(256),this._materialsRenderTargets=new Eo(256),this._activeParticleSystems=new Vi(256),this._activeSkeletons=new Eo(32),this._softwareSkinnedMeshes=new Eo(32),this._activeAnimatables=new Array,this._transformMatrix=q.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=cr.Create(),this._beforeClearStage=cr.Create(),this._beforeRenderTargetClearStage=cr.Create(),this._gatherRenderTargetsStage=cr.Create(),this._gatherActiveCameraRenderTargetsStage=cr.Create(),this._isReadyForMeshStage=cr.Create(),this._beforeEvaluateActiveMeshStage=cr.Create(),this._evaluateSubMeshStage=cr.Create(),this._preActiveMeshStage=cr.Create(),this._cameraDrawRenderTargetStage=cr.Create(),this._beforeCameraDrawStage=cr.Create(),this._beforeRenderTargetDrawStage=cr.Create(),this._beforeRenderingGroupDrawStage=cr.Create(),this._beforeRenderingMeshStage=cr.Create(),this._afterRenderingMeshStage=cr.Create(),this._afterRenderingGroupDrawStage=cr.Create(),this._afterCameraDrawStage=cr.Create(),this._afterCameraPostProcessStage=cr.Create(),this._afterRenderTargetDrawStage=cr.Create(),this._afterRenderTargetPostProcessStage=cr.Create(),this._afterRenderStage=cr.Create(),this._pointerMoveStage=cr.Create(),this._pointerDownStage=cr.Create(),this._pointerUpStage=cr.Create(),this._geometriesByUniqueId=null,this._uniqueId=0,this._defaultMeshCandidates={data:[],length:0},this._defaultSubMeshCandidates={data:[],length:0},this.onReadyTimeoutObservable=new ie,this.onReadyTimeoutDuration=120*1e3,this._timeoutChecksStartTime=0,this._floatingOriginScene=void 0,this._preventFreeActiveMeshesAndRenderingGroups=!1,this._activeMeshesFrozen=!1,this._activeMeshesFrozenButKeepClipping=!1,this._skipEvaluateActiveMeshesCompletely=!1,this._freezeActiveMeshesCancel=null,this._useCurrentFrameBuffer=!1,this._allowPostProcessClearColor=!0,this.getDeterministicFrameTime=()=>this._engine.getTimeStep(),this._getFloatingOriginScene=()=>this._floatingOriginScene,this._registeredActions=0,this._blockMaterialDirtyMechanism=!1,this._perfCollector=null,this.activeCameras=[],this._uniqueId=this.getUniqueId();let i={useGeometryUniqueIdsMap:!0,useMaterialMeshMap:!0,useClonedMeshMap:!0,virtual:!1,defaultCameraLayerMask:268435455,defaultRenderableLayerMask:268435455,...t};this.defaultCameraLayerMask=i.defaultCameraLayerMask,this.defaultRenderableLayerMask=i.defaultRenderableLayerMask,e=this._engine=e||Oe.LastCreatedEngine,i.virtual?e._virtualScenes.push(this):(Oe._LastCreatedScene=this,e.scenes.push(this)),(e.getCreationOptions().useLargeWorldRendering||t!=null&&t.useFloatingOrigin)&&(cG(),this._floatingOriginScene=this,Oa.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new ya(this),ic&&(this.postProcessManager=new ic(this)),ur()&&this.attachControl(),this._createUbo(),kt&&(this._imageProcessingConfiguration=new kt),this.setDefaultCandidateProviders(),i.useGeometryUniqueIdsMap&&(this._geometriesByUniqueId={}),this.useMaterialMeshMap=i.useMaterialMeshMap,this.useClonedMeshMap=i.useClonedMeshMap,(!t||!t.virtual)&&e.onNewSceneAddedObservable.notifyObservers(this)}getClassName(){return"Scene"}_getDefaultMeshCandidates(){return this._defaultMeshCandidates.data=this.meshes,this._defaultMeshCandidates.length=this.meshes.length,this._defaultMeshCandidates}_getDefaultSubMeshCandidates(e){return this._defaultSubMeshCandidates.data=e.subMeshes,this._defaultSubMeshCandidates.length=e.subMeshes.length,this._defaultSubMeshCandidates}setDefaultCandidateProviders(){this.getActiveMeshCandidates=()=>this._getDefaultMeshCandidates(),this.getActiveSubMeshCandidates=e=>this._getDefaultSubMeshCandidates(e),this.getIntersectingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e),this.getCollidingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e)}get meshUnderPointer(){return this._inputManager.meshUnderPointer}get pointerX(){return this._inputManager.pointerX}set pointerX(e){this._inputManager.pointerX=e}get pointerY(){return this._inputManager.pointerY}set pointerY(e){this._inputManager.pointerY=e}getCachedMaterial(){return this._cachedMaterial}getCachedEffect(){return this._cachedEffect}getCachedVisibility(){return this._cachedVisibility}isCachedMaterialInvalid(e,t,i=1){return this._cachedEffect!==t||this._cachedMaterial!==e||this._cachedVisibility!==i}getEngine(){return this._engine}getTotalVertices(){return this._totalVertices.current}get totalVerticesPerfCounter(){return this._totalVertices}getActiveIndices(){return this._activeIndices.current}get totalActiveIndicesPerfCounter(){return this._activeIndices}getActiveParticles(){return this._activeParticles.current}get activeParticlesPerfCounter(){return this._activeParticles}getActiveBones(){return this._activeBones.current}get activeBonesPerfCounter(){return this._activeBones}getActiveMeshes(){return this._activeMeshes}getAnimationRatio(){return this._animationRatio!==void 0?this._animationRatio:1}getRenderId(){return this._renderId}getFrameId(){return this._frameId}incrementRenderId(){this._renderId++}_createUbo(){this.setSceneUniformBuffer(this.createSceneUniformBuffer())}simulatePointerMove(e,t){return this._inputManager.simulatePointerMove(e,t),this}simulatePointerDown(e,t){return this._inputManager.simulatePointerDown(e,t),this}simulatePointerUp(e,t,i){return this._inputManager.simulatePointerUp(e,t,i),this}isPointerCaptured(e=0){return this._inputManager.isPointerCaptured(e)}attachControl(e=!0,t=!0,i=!0){this._inputManager.attachControl(e,t,i)}detachControl(){this._inputManager.detachControl()}isReady(e=!0){var a,o,l;if(this._isDisposed)return!1;let t,i=this.getEngine(),r=i.currentRenderPassId;i.currentRenderPassId=(o=(a=this.activeCamera)==null?void 0:a.renderPassId)!=null?o:r;let s=!0;for(this._pendingData.length>0&&(s=!1),(l=this.prePassRenderer)==null||l.update(),this.useOrderIndependentTransparency&&this.depthPeelingRenderer&&s&&(s=this.depthPeelingRenderer.isReady()),e&&(this._processedMaterials.reset(),this._materialsRenderTargets.reset()),t=0;t0;for(let h of this._isReadyForMeshStage)h.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let h of c.subMeshes){let u=h.getMaterial();u&&u.hasRenderTargetTextures&&u.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(u)===-1&&(this._processedMaterials.push(u),this._materialsRenderTargets.concatWithNoDuplicate(u.getRenderTargetTextures()))}else d.hasRenderTargetTextures&&d.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(d)===-1&&(this._processedMaterials.push(d),this._materialsRenderTargets.concatWithNoDuplicate(d.getRenderTargetTextures()))}if(e){for(t=0;t0)for(let c of this.activeCameras)c.isReady(!0)||(s=!1);else this.activeCamera&&(this.activeCamera.isReady(!0)||(s=!1));for(let c of this.particleSystems)c.isReady()||(s=!1);if(this.proceduralTexturesEnabled)for(let c of this.proceduralTextures)c.isReady()||(s=!1);if(this.layers)for(let c of this.layers)c.isReady()||(s=!1);if(this.effectLayers)for(let c of this.effectLayers)c.isLayerReady()||(s=!1);for(let c of this._isReadyChecks)c.isReady()||(s=!1);return i.areAllEffectsReady()||(s=!1),i.currentRenderPassId=r,s}resetCachedMaterial(){this._cachedMaterial=null,this._cachedEffect=null,this._cachedVisibility=null}registerBeforeRender(e){this.onBeforeRenderObservable.add(e)}unregisterBeforeRender(e){this.onBeforeRenderObservable.removeCallback(e)}registerAfterRender(e){this.onAfterRenderObservable.add(e)}unregisterAfterRender(e){this.onAfterRenderObservable.removeCallback(e)}_executeOnceBeforeRender(e){let t=()=>{e(),setTimeout(()=>{this.unregisterBeforeRender(t)})};this.registerBeforeRender(t)}executeOnceBeforeRender(e,t){t!==void 0?setTimeout(()=>{this._executeOnceBeforeRender(e)},t):this._executeOnceBeforeRender(e)}addPendingData(e){this._pendingData.push(e)}removePendingData(e){let t=this.isLoading,i=this._pendingData.indexOf(e);i!==-1&&this._pendingData.splice(i,1),t&&!this.isLoading&&this.onDataLoadedObservable.notifyObservers(this)}getWaitingItemsCount(){return this._pendingData.length}get isLoading(){return this._pendingData.length>0}addIsReadyCheck(e){this._isReadyChecks.indexOf(e)===-1&&this._isReadyChecks.push(e)}removeIsReadyCheck(e){let t=this._isReadyChecks.indexOf(e);t!==-1&&this._isReadyChecks.splice(t,1)}executeWhenReady(e,t=!1){this.onReadyObservable.addOnce(e),this._executeWhenReadyTimeoutId===null&&this._checkIsReady(t)}async whenReadyAsync(e=!1){return await new Promise(t=>{this.executeWhenReady(()=>{t()},e)})}_clearReadynessChecksData(){this._timeoutChecksStartTime=0,this.onReadyTimeoutObservable.clear(),this.onReadyObservable.clear(),this._executeWhenReadyTimeoutId=null}_checkIsReady(e=!1){if(this._registerTransientComponents(),this._timeoutChecksStartTime===0)this._timeoutChecksStartTime=Er.Now;else if(this.onReadyTimeoutDuration>0&&Er.Now-this._timeoutChecksStartTime>this.onReadyTimeoutDuration){this.onReadyTimeoutObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this.isReady(e)){this.onReadyObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this._isDisposed){this._clearReadynessChecksData();return}this._executeWhenReadyTimeoutId=setTimeout(()=>{this.incrementRenderId(),this._checkIsReady(e)},100)}get animatables(){return this._activeAnimatables}resetLastAnimationTimeFrame(){this._animationTimeLast=Er.Now}getViewMatrix(){return this._viewMatrix}getProjectionMatrix(){return this._projectionMatrix}getInverseProjectionMatrix(){return this._inverseProjectionMatrix}getTransformMatrix(){return this._transformMatrix}setTransformMatrix(e,t,i,r){this._multiviewSceneUboIsActive=!!(i&&r&&this._multiviewSceneUbo),!(this._viewUpdateFlag===e.updateFlag&&this._projectionUpdateFlag===t.updateFlag)&&(this._viewUpdateFlag=e.updateFlag,this._projectionUpdateFlag=t.updateFlag,this._viewMatrix=e,this._projectionMatrix=t,this._inverseProjectionMatrix||(this._inverseProjectionMatrix=new q),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?pf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=pf.GetPlanes(this._transformMatrix),this._multiviewSceneUboIsActive&&this._multiviewSceneUbo.useUbo?this._updateMultiviewUbo(i,r):this._sceneUbo.useUbo&&(this._sceneUbo.updateMatrix("viewProjection",this._transformMatrix),this._sceneUbo.updateMatrix("view",this._viewMatrix),this._sceneUbo.updateMatrix("projection",this._projectionMatrix),this._sceneUbo.updateMatrix("inverseProjection",this._inverseProjectionMatrix)))}getSceneUniformBuffer(){return this._multiviewSceneUboIsActive&&this._multiviewSceneUbo?this._multiviewSceneUbo:this._sceneUbo}createSceneUniformBuffer(e,t){let i=typeof t=="boolean"?t:t==null?void 0:t.trackUBOsInFrame,r=new mr(this._engine,void 0,!1,e!=null?e:"scene",void 0,i);return r.addUniform("viewProjection",16),r.addUniform("view",16),r.addUniform("projection",16),r.addUniform("vEyePosition",4),r.addUniform("inverseProjection",16),r}setSceneUniformBuffer(e){this._sceneUbo=e,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1}get floatingOriginMode(){return this._floatingOriginScene!==void 0}get floatingOriginOffset(){return this.floatingOriginMode?this._eyePosition:b.ZeroReadOnly}getUniqueId(){return lc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),_e.SetImmediate(()=>{this.onNewMeshAddedObservable.notifyObservers(e)}),t)){let i=e.getChildMeshes();for(let r of i)this.addMesh(r)}}removeMesh(e,t=!1){let i=this.meshes.indexOf(e);if(i!==-1&&(this.meshes.splice(i,1),e.parent||e._removeFromSceneRootNodes()),this._inputManager._invalidateMesh(e),this.onMeshRemovedObservable.notifyObservers(e),t){let r=e.getChildMeshes();for(let s of r)this.removeMesh(s)}return i}addTransformNode(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneTransformNodesArray!==-1||(e._indexInSceneTransformNodesArray=this.transformNodes.length,this.transformNodes.push(e),e.parent||e._addToSceneRootNodes(),this.onNewTransformNodeAddedObservable.notifyObservers(e))}removeTransformNode(e){let t=e._indexInSceneTransformNodesArray;if(t!==-1){if(t!==this.transformNodes.length-1){let i=this.transformNodes[this.transformNodes.length-1];this.transformNodes[t]=i,i._indexInSceneTransformNodesArray=t}e._indexInSceneTransformNodesArray=-1,this.transformNodes.pop(),e.parent||e._removeFromSceneRootNodes()}return this.onTransformNodeRemovedObservable.notifyObservers(e),t}removeSkeleton(e){let t=this.skeletons.indexOf(e);return t!==-1&&(this.skeletons.splice(t,1),this.onSkeletonRemovedObservable.notifyObservers(e),this._executeActiveContainerCleanup(this._activeSkeletons)),t}removeMorphTargetManager(e){let t=this.morphTargetManagers.indexOf(e);return t!==-1&&this.morphTargetManagers.splice(t,1),t}removeLight(e){let t=this.lights.indexOf(e);if(t!==-1){for(let i of this.meshes)i._removeLightSource(e,!1);this.lights.splice(t,1),this.sortLightsByPriority(),e.parent||e._removeFromSceneRootNodes(),this.onLightRemovedObservable.notifyObservers(e)}return t}removeCamera(e){let t=this.cameras.indexOf(e);if(t!==-1&&(this.cameras.splice(t,1),e.parent||e._removeFromSceneRootNodes()),this.activeCameras){let i=this.activeCameras.indexOf(e);i!==-1&&this.activeCameras.splice(i,1)}return this.activeCamera===e&&(this.cameras.length>0?this.activeCamera=this.cameras[0]:this.activeCamera=null),this.onCameraRemovedObservable.notifyObservers(e),t}removeParticleSystem(e){let t=this.particleSystems.indexOf(e);return t!==-1&&(this.particleSystems.splice(t,1),this._executeActiveContainerCleanup(this._activeParticleSystems)),this.onParticleSystemRemovedObservable.notifyObservers(e),t}removeAnimation(e){let t=this.animations.indexOf(e);return t!==-1&&this.animations.splice(t,1),t}stopAnimation(e,t,i){}removeAnimationGroup(e){let t=this.animationGroups.indexOf(e);return t!==-1&&this.animationGroups.splice(t,1),this.onAnimationGroupRemovedObservable.notifyObservers(e),t}removeMultiMaterial(e){let t=this.multiMaterials.indexOf(e);return t!==-1&&this.multiMaterials.splice(t,1),this.onMultiMaterialRemovedObservable.notifyObservers(e),t}removeMaterial(e){let t=e._indexInSceneMaterialArray;if(t!==-1&&t{this.onNewLightAddedObservable.notifyObservers(e)})}}sortLightsByPriority(){this.requireLightSorting&&this.lights.sort(Xt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),_e.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),_e.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),_e.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),_e.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),_e.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),_e.SetImmediate(()=>{this.onNewMaterialAddedObservable.notifyObservers(e)}))}addMorphTargetManager(e){this._blockEntityCollection||this.morphTargetManagers.push(e)}addGeometry(e){this._blockEntityCollection||(this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=this.geometries.length),this.geometries.push(e))}addActionManager(e){this.actionManagers.push(e)}addTexture(e){this._blockEntityCollection||(this.textures.push(e),this.onNewTextureAddedObservable.notifyObservers(e))}addFrameGraph(e){this.frameGraphs.push(e),_e.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),_e.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),_e.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),_e.SetImmediate(()=>{this.onNewEffectLayerAddedObservable.notifyObservers(e)}))}switchActiveCamera(e,t=!0){this._engine.getInputElement()&&(this.activeCamera&&this.activeCamera.detachControl(),this.activeCamera=e,t&&e.attachControl())}setActiveCameraById(e){let t=this.getCameraById(e);return t?(this.activeCamera=t,t):null}setActiveCameraByName(e){let t=this.getCameraByName(e);return t?(this.activeCamera=t,t):null}getAnimationGroupByName(e){for(let t=0;ti.uniqueId===e)}getMaterialById(e,t=!1){return this._getMaterial(t,i=>i.id===e)}getMaterialByName(e,t=!1){return this._getMaterial(t,i=>i.name===e)}getLastMaterialById(e,t=!1){for(let i=this.materials.length-1;i>=0;i--)if(this.materials[i].id===e)return this.materials[i];if(t){for(let i=this.multiMaterials.length-1;i>=0;i--)if(this.multiMaterials[i].id===e)return this.multiMaterials[i]}return null}getTextureByUniqueId(e){for(let t=0;t{this.onNewGeometryAddedObservable.notifyObservers(e)}),!0)}removeGeometry(e){let t;if(this._geometriesByUniqueId){if(t=this._geometriesByUniqueId[e.uniqueId],t===void 0)return!1}else if(t=this.geometries.indexOf(e),t<0)return!1;if(t!==this.geometries.length-1){let i=this.geometries[this.geometries.length-1];i&&(this.geometries[t]=i,this._geometriesByUniqueId&&(this._geometriesByUniqueId[i.uniqueId]=t))}return this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=void 0),this.geometries.pop(),this.onGeometryRemovedObservable.notifyObservers(e),!0}getGeometries(){return this.geometries}getMeshById(e){for(let t=0;t=0;t--)if(this.meshes[t].id===e)return this.meshes[t];return null}getLastTransformNodeById(e){for(let t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];return null}getLastEntryById(e){let t;for(t=this.meshes.length-1;t>=0;t--)if(this.meshes[t].id===e)return this.meshes[t];for(t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];for(t=this.cameras.length-1;t>=0;t--)if(this.cameras[t].id===e)return this.cameras[t];for(t=this.lights.length-1;t>=0;t--)if(this.lights[t].id===e)return this.lights[t];for(t=this.skeletons.length-1;t>=0;t--){let i=this.skeletons[t];for(let r=i.bones.length-1;r>=0;r--)if(i.bones[r].id===e)return i.bones[r]}return null}getNodeById(e){let t=this.getMeshById(e);if(t)return t;let i=this.getTransformNodeById(e);if(i)return i;let r=this.getLightById(e);if(r)return r;let s=this.getCameraById(e);if(s)return s;let a=this.getBoneById(e);return a||null}getNodeByName(e){let t=this.getMeshByName(e);if(t)return t;let i=this.getTransformNodeByName(e);if(i)return i;let r=this.getLightByName(e);if(r)return r;let s=this.getCameraByName(e);if(s)return s;let a=this.getBoneByName(e);return a||null}getMeshByName(e){for(let t=0;t=0;t--)if(this.skeletons[t].id===e)return this.skeletons[t];return null}getSkeletonByUniqueId(e){for(let t=0;t{let o=!0,l=!0;for(let c of a)o&&(o=c.objectRenderer._isFrozen),l&&(l=c.objectRenderer._freezeActiveMeshesCancel!==null);if(o)return!0;if(!l)throw new Error("Freezing active meshes was cancelled");return!1},()=>{this._freezeActiveMeshesCancel=null,this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,t==null||t()},(o,l)=>{if(this._freezeActiveMeshesCancel=null,this.unfreezeActiveMeshes(),l){let c="Scene: Timeout while waiting for meshes to be frozen.";i?i(c):(ee.Error(c),o&&ee.Error(o))}else{let c="Scene: An unexpected error occurred while trying to freeze active meshes.";i?i(c):(ee.Error(c),o&&(ee.Error(o),o.stack&&ee.Error(o.stack)))}}),this}return this.executeWhenReady(()=>{if(!this.activeCamera){i&&i("No active camera found");return}if(this._frustumPlanes||this.updateTransformMatrix(),this._evaluateActiveMeshes(),this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,r)for(let a=0;ae.dispose())}_evaluateActiveMeshes(){var i;if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1){this._activeMeshes.length>0&&((i=this.activeCamera)==null||i._activeMeshes.reset(),this._activeMeshes.reset(),this._renderingManager.reset(),this._processedMaterials.reset(),this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset());return}if(this._activeMeshesFrozen&&this._activeMeshes.length){if(!this._skipEvaluateActiveMeshesCompletely){let r=this._activeMeshes.length;for(let s=0;s0&&(s.layerMask&this.activeCamera.layerMask)!==0&&(this._skipFrustumClipping||s.alwaysSelectAsActiveMesh||s.isInFrustum(this._frustumPlanes)))){this._activeMeshes.push(s),this.activeCamera._activeMeshes.push(s),o!==s&&o._activate(this._renderId,!1);for(let l of this._preActiveMeshStage)l.action(s);s._activate(this._renderId,!1)&&(s.isAnInstance?s._internalAbstractMeshDataInfo._actAsRegularMesh&&(o=s):o._internalAbstractMeshDataInfo._onlyForInstances=!1,o._internalAbstractMeshDataInfo._isActive=!0,this._activeMesh(s,o)),s._postActivate()}}if(this.onAfterActiveMeshesEvaluationObservable.notifyObservers(this),this.particlesEnabled){this.onBeforeParticlesRenderingObservable.notifyObservers(this);for(let r=0;r0){let r=this.getActiveSubMeshCandidates(t),s=r.length;i=i||s===1;for(let a=0;a0&&this._renderTargets.concatWithNoDuplicate(e.customRenderTargets),t&&t.customRenderTargets&&t.customRenderTargets.length>0&&this._renderTargets.concatWithNoDuplicate(t.customRenderTargets),this.environmentTexture&&this.environmentTexture.isRenderTarget&&this._renderTargets.pushNoDuplicate(this.environmentTexture);for(let h of this._gatherActiveCameraRenderTargetsStage)h.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let h;if(this._renderTargets.length>0){_e.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let u=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?u.renderList.data.slice():[],h.length=u.renderList.length),_.render(p,this.dumpNextRenderTargets),s=!0}}u&&h&&(u.renderList.data=h,u.renderList.length=h.length),_e.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let u=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);u&&!h&&(h=u.renderList.length>0?u.renderList.data.slice():[],h.length=u.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;u&&h&&(u.renderList.data=h,u.renderList.length=h.length)}this._intermediateRendering=!1}s&&!this.prePass&&(this._bindFrameBuffer(this._activeCamera,!1),this.updateTransformMatrix()),this.onAfterRenderTargetsRenderObservable.notifyObservers(this),this.postProcessManager&&!e._multiviewTexture&&!this.prePass&&this.postProcessManager._prepareFrame();for(let h of this._beforeCameraDrawStage)h.action(this.activeCamera);this.onBeforeDrawPhaseObservable.notifyObservers(this);let a=r.snapshotRendering&&r.snapshotRenderingMode===1;a&&this.finalizeSceneUbo(),this._renderingManager.render(null,null,!0,!a),this.onAfterDrawPhaseObservable.notifyObservers(this);for(let h of this._afterCameraDrawStage)h.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let h=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,h)}for(let h of this._afterCameraPostProcessStage)h.action(this.activeCamera);this._renderTargets.reset(),this.onAfterCameraRenderObservable.notifyObservers(this.activeCamera)}_processSubCameras(e,t=!0){if(e.cameraRigMode===0||e._renderingMultiview){e._renderingMultiview&&!this._multiviewSceneUbo&&this._createMultiviewUbo(),this._renderForCamera(e,void 0,t),this.onAfterRenderCameraObservable.notifyObservers(e);return}if(e._useMultiviewToSingleView)this._renderMultiviewToSingleView(e);else{this.onBeforeCameraRenderObservable.notifyObservers(e);for(let i=0;i-1&&(r.trigger===13&&r._executeCurrent(an.CreateNew(t,void 0,a)),(!t.actionManager.hasSpecificTrigger(13,c=>{let f=c.mesh?c.mesh:c;return a===f})||r.trigger===13)&&t._intersectionsInProgress.splice(l,1))}}}}_advancePhysicsEngineStep(e){}_animate(e){}animate(){if(this._engine.isDeterministicLockStep()){let e=Math.max(n.MinDeltaTime,Math.min(this._engine.getDeltaTime(),n.MaxDeltaTime))+this._timeAccumulator,t=this._engine.getTimeStep(),i=1e3/t/1e3,r=0,s=this._engine.getLockstepMaxSteps(),a=Math.floor(e/t);for(a=Math.min(a,s);e>0&&r0);for(let l=0;l0),this._renderId++}this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let l of this._beforeClearStage)l.action();if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1)this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset();else{let l=this.getActiveMeshCandidates(),c=l.length;if(this._activeMeshesFrozen){if(!this._skipEvaluateActiveMeshesCompletely)for(let f=0;f0)for(let a=0;a0);for(let o=0;o0),this._renderId++}this._engine.currentRenderPassId=(s=a==null?void 0:a.renderPassId)!=null?s:0,this.activeCamera=a,this._activeCamera&&this._activeCamera.cameraRigMode!==22&&!this.prePass&&this._bindFrameBuffer(this._activeCamera,!1),this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let o of this._beforeClearStage)o.action();this._clearFrameBuffer(this.activeCamera);for(let o of this._gatherRenderTargetsStage)o.action(this._renderTargets);if(this.activeCameras&&this.activeCameras.length>0)for(let o=0;o0);else{if(!this.activeCamera)throw new Error("No camera defined");this._processSubCameras(this.activeCamera,!!this.activeCamera.outputRenderTarget)}}this._checkIntersections();for(let a of this._afterRenderStage)a.action();if(this.afterRender&&this.afterRender(),this.onAfterRenderObservable.notifyObservers(this),this._toBeDisposed.length){for(let a=0;as.dispose(!0)),this._disposeList(this.transformNodes,s=>s.dispose(!0));let i=this.cameras;this._disposeList(i),this._disposeList(this.particleSystems),this._disposeList(this.postProcesses),this._disposeList(this.textures),this._disposeList(this.morphTargetManagers),this._disposeList(this.frameGraphs),this._sceneUbo.dispose(),this._multiviewSceneUbo&&this._multiviewSceneUbo.dispose(),this.postProcessManager.dispose(),this._disposeList(this._components);let r=this._engine.scenes.indexOf(this);if(r>-1&&this._engine.scenes.splice(r,1),this._floatingOriginScene=void 0,this._engine.scenes.length===0&&lG(),Oe._LastCreatedScene===this){Oe._LastCreatedScene=null;let s=Oe.Instances.length-1;for(;s>=0;){let a=Oe.Instances[s];if(a.scenes.length>0){Oe._LastCreatedScene=a.scenes[this._engine.scenes.length-1];break}s--}}r=this._engine._virtualScenes.indexOf(this),r>-1&&this._engine._virtualScenes.splice(r,1),this._engine.wipeCaches(!0),this.onDisposeObservable.clear(),this.onBeforeRenderObservable.clear(),this.onAfterRenderObservable.clear(),this.onBeforeRenderTargetsRenderObservable.clear(),this.onAfterRenderTargetsRenderObservable.clear(),this.onAfterStepObservable.clear(),this.onBeforeStepObservable.clear(),this.onBeforeActiveMeshesEvaluationObservable.clear(),this.onAfterActiveMeshesEvaluationObservable.clear(),this.onBeforeParticlesRenderingObservable.clear(),this.onAfterParticlesRenderingObservable.clear(),this.onBeforeDrawPhaseObservable.clear(),this.onAfterDrawPhaseObservable.clear(),this.onBeforeAnimationsObservable.clear(),this.onAfterAnimationsObservable.clear(),this.onDataLoadedObservable.clear(),this.onBeforeRenderingGroupObservable.clear(),this.onAfterRenderingGroupObservable.clear(),this.onMeshImportedObservable.clear(),this.onBeforeCameraRenderObservable.clear(),this.onAfterCameraRenderObservable.clear(),this.onAfterRenderCameraObservable.clear(),this.onReadyObservable.clear(),this.onNewCameraAddedObservable.clear(),this.onCameraRemovedObservable.clear(),this.onNewLightAddedObservable.clear(),this.onLightRemovedObservable.clear(),this.onNewGeometryAddedObservable.clear(),this.onGeometryRemovedObservable.clear(),this.onNewTransformNodeAddedObservable.clear(),this.onTransformNodeRemovedObservable.clear(),this.onNewMeshAddedObservable.clear(),this.onMeshRemovedObservable.clear(),this.onNewSkeletonAddedObservable.clear(),this.onSkeletonRemovedObservable.clear(),this.onNewMaterialAddedObservable.clear(),this.onNewMultiMaterialAddedObservable.clear(),this.onMaterialRemovedObservable.clear(),this.onMultiMaterialRemovedObservable.clear(),this.onNewTextureAddedObservable.clear(),this.onTextureRemovedObservable.clear(),this.onNewFrameGraphAddedObservable.clear(),this.onFrameGraphRemovedObservable.clear(),this.onNewObjectRendererAddedObservable.clear(),this.onObjectRendererRemovedObservable.clear(),this.onPrePointerObservable.clear(),this.onPointerObservable.clear(),this.onPreKeyboardObservable.clear(),this.onKeyboardObservable.clear(),this.onActiveCameraChanged.clear(),this.onScenePerformancePriorityChangedObservable.clear(),this.onClearColorChangedObservable.clear(),this.onEnvironmentTextureChangedObservable.clear(),this.onMeshUnderPointerUpdatedObservable.clear(),this._isDisposed=!0}_disposeList(e,t){let i=e.slice(0);t=t!=null?t:(r=>r.dispose());for(let r of i)t(r);e.length=0}get isDisposed(){return this._isDisposed}clearCachedVertexData(){for(let e=0;e!0);let r=this.meshes.filter(e);for(let s of r){if(s.computeWorldMatrix(!0),!s.subMeshes||s.subMeshes.length===0||s.infiniteDistance)continue;let a=s.getBoundingInfo(),o=a.boundingBox.minimumWorld,l=a.boundingBox.maximumWorld;b.CheckExtends(o,t,i),b.CheckExtends(l,t,i)}return t.x===Number.MAX_VALUE?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}createPickingRay(e,t,i,r,s=!1){throw Qe("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw Qe("Ray")}createPickingRayInCameraSpace(e,t,i){throw Qe("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw Qe("Ray")}pick(e,t,i,r,s,a){let o=Qe("Ray",!0);return o&&ee.Warn(o),new fs}pickWithBoundingInfo(e,t,i,r,s){let a=Qe("Ray",!0);return a&&ee.Warn(a),new fs}pickWithRay(e,t,i,r){throw Qe("Ray")}multiPick(e,t,i,r,s){throw Qe("Ray")}multiPickWithRay(e,t,i){throw Qe("Ray")}setPointerOverMesh(e,t,i){this._inputManager.setPointerOverMesh(e,t,i)}getPointerOverMesh(){return this._inputManager.getPointerOverMesh()}_rebuildGeometries(){for(let e of this.geometries)e._rebuild();for(let e of this.meshes)e._rebuild();this.postProcessManager&&this.postProcessManager._rebuild();for(let e of this._components)e.rebuild();for(let e of this.particleSystems)e.rebuild();if(this.spriteManagers)for(let e of this.spriteManagers)e.rebuild()}_rebuildTextures(){for(let e of this.textures)e._rebuild(!0);this.markAllMaterialsAsDirty(1)}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];$t&&$t.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}setRenderingOrder(e,t=null,i=null,r=null){this._renderingManager.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t,i=!0,r=!0){this._renderingManager.setRenderingAutoClearDepthStencil(e,t,i,r)}getAutoClearDepthStencilSetup(e){return this._renderingManager.getAutoClearDepthStencilSetup(e)}_forceBlockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism=e}get blockMaterialDirtyMechanism(){return this._blockMaterialDirtyMechanism}set blockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism!==e&&(this._blockMaterialDirtyMechanism=e,e||this.markAllMaterialsAsDirty(127))}markAllMaterialsAsDirty(e,t){if(!this._blockMaterialDirtyMechanism)for(let i of this.materials)t&&!t(i)||i.markAsDirty(e)}_loadFile(e,t,i,r,s,a,o){let l=dl(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _loadFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._loadFile(e,l=>{a(l)},t,i,r,(l,c)=>{o(c)},s)})}_requestFile(e,t,i,r,s,a,o){let l=KA(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _requestFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._requestFile(e,l=>{a(l)},t,i,r,l=>{o(l)},s)})}_readFile(e,t,i,r,s){let a=ah(e,t,i,r,s);return this._activeRequests.push(a),a.onCompleteObservable.add(o=>{this._activeRequests.splice(this._activeRequests.indexOf(o),1)}),a}async _readFileAsync(e,t,i){return await new Promise((r,s)=>{this._readFile(e,a=>{r(a)},t,i,a=>{s(a)})})}getPerfCollector(){throw Qe("performanceViewerSceneExtension")}setActiveCameraByID(e){return this.setActiveCameraById(e)}getMaterialByID(e){return this.getMaterialById(e)}getLastMaterialByID(e){return this.getLastMaterialById(e)}getTextureByUniqueID(e){return this.getTextureByUniqueId(e)}getCameraByID(e){return this.getCameraById(e)}getCameraByUniqueID(e){return this.getCameraByUniqueId(e)}getBoneByID(e){return this.getBoneById(e)}getLightByID(e){return this.getLightById(e)}getLightByUniqueID(e){return this.getLightByUniqueId(e)}getParticleSystemByID(e){return this.getParticleSystemById(e)}getGeometryByID(e){return this.getGeometryById(e)}getMeshByID(e){return this.getMeshById(e)}getMeshByUniqueID(e){return this.getMeshByUniqueId(e)}getLastMeshByID(e){return this.getLastMeshById(e)}getMeshesByID(e){return this.getMeshesById(e)}getTransformNodeByID(e){return this.getTransformNodeById(e)}getTransformNodeByUniqueID(e){return this.getTransformNodeByUniqueId(e)}getTransformNodesByID(e){return this.getTransformNodesById(e)}getNodeByID(e){return this.getNodeById(e)}getLastEntryByID(e){return this.getLastEntryById(e)}getLastSkeletonByID(e){return this.getLastSkeletonById(e)}};ei.FOGMODE_NONE=0;ei.FOGMODE_EXP=1;ei.FOGMODE_EXP2=2;ei.FOGMODE_LINEAR=3;ei.MinDeltaTime=1;ei.MaxDeltaTime=1e3;ei._OriginalDefaultMaterialFactory=ei.DefaultMaterialFactory;Ft("BABYLON.Scene",ei)});var IG,Rle,wa=I(()=>{k();IG="helperFunctions",Rle=`const PI: f32=3.141592653589793;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08; +}`;A.ShadersStore[kC]||(A.ShadersStore[kC]=FV);Tle={name:kC,shader:FV}});var nc,Rg,WC=I(()=>{lh();Ni();nc=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(LV(),DV))]))):t.push(Promise.all([Promise.resolve().then(()=>(wC(),NC))])),super._gatherImports(e,t)}constructor(e,t=null,i){let r={name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,...i};r.engine||(r.engine=Oe.LastCreatedEngine),super(r)}};nc.FragmentUrl="pass";Rg=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(wV(),NV))]))):t.push(Promise.all([Promise.resolve().then(()=>(UV(),BV))])),super._gatherImports(e,t)}constructor(e,t=null,i){super({...i,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,defines:"#define POSITIVEX"}),this._face=0}get face(){return this._face}set face(e){if(!(e<0||e>5))switch(this._face=e,this._face){case 0:this.updateEffect("#define POSITIVEX");break;case 1:this.updateEffect("#define NEGATIVEX");break;case 2:this.updateEffect("#define POSITIVEY");break;case 3:this.updateEffect("#define NEGATIVEY");break;case 4:this.updateEffect("#define POSITIVEZ");break;case 5:this.updateEffect("#define NEGATIVEZ");break}}};Rg.FragmentUrl="passCube"});var ch,HC,zC=I(()=>{Gt();rc();Vr();Yi();br();WC();Vt();ch=class n extends Ri{getClassName(){return"PassPostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,nc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new nc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Ft("BABYLON.PassPostProcess",ch);HC=class n extends Ri{get face(){return this._effectWrapper.face}set face(e){this._effectWrapper.face=e}getClassName(){return"PassCubePostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,nc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Rg(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],HC.prototype,"face",null);Ie._RescalePostProcessFactory=n=>new ch("rescale",1,null,2,n,!1,0)});function GV(n,e,t,i,r,s,a,o){let l=e.getEngine();return e.isReady=!1,r=r!=null?r:e.samplingMode,i=i!=null?i:e.type,s=s!=null?s:e.format,a=a!=null?a:e.width,o=o!=null?o:e.height,i===-1&&(i=0),new Promise(c=>{let f=new Ri("postprocess",n,null,null,1,null,r,l,!1,void 0,i,void 0,null,!1,s);f.externalTextureSamplerBinding=!0;let d=l.createRenderTargetTexture({width:a,height:o},{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:r,type:i,format:s});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",e),u.setFloat2("scale",1,1)},t.postProcessManager.directRender([f],d,!0),l.restoreDefaultFramebuffer(),l._releaseTexture(e),f&&f.dispose(),d._swapAndDie(e),e.type=i,e.format=5,e.isReady=!0,c(e)})})})}function fh(n){rx||(rx=new Float32Array(1),VV=new Int32Array(rx.buffer)),rx[0]=n;let e=VV[0],t=e>>16&32768,i=e>>12&2047,r=e>>23&255;return r<103?t:r>142?(t|=31744,t|=(r==255?0:1)&&e&8388607,t):r<113?(i|=2048,t|=(i>>114-r)+(i>>113-r&1),t):(t|=r-112<<10|i>>1,t+=i&1,t)}function sc(n){let e=(n&32768)>>15,t=(n&31744)>>10,i=n&1023;return t===0?(e?-1:1)*Math.pow(2,-14)*(i/Math.pow(2,10)):t==31?i?NaN:(e?-1:1)*(1/0):(e?-1:1)*Math.pow(2,t-15)*(1+i/Math.pow(2,10))}var rx,VV,XC=I(()=>{Gr();Rf();zC();rc();Vn()});function KC(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function YC(n,e,t){for(;t.length!==e;){let i=KC(n.lines[n.index++]);t.push(...i)}}function Ale(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let g=0;g0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=KC(i.lines[i.index++]);r.numberOfLights=s[0],r.lumensPerLamp=s[1],r.candelaMultiplier=s[2],r.numberOfVerticalAngles=s[3],r.numberOfHorizontalAngles=s[4],r.photometricType=s[5],r.unitsType=s[6],r.width=s[7],r.length=s[8],r.height=s[9];let a=KC(i.lines[i.index++]);r.ballastFactor=a[0],r.fileGenerationType=a[1],r.inputWatts=a[2];for(let m=0;m0)for(let m=0;m=u)&&(_%=u*2,_>u&&(_=u*2-_)),d[p+_*l]=Ale(r,p,_)}return{width:c/2,height:1,data:d}}var WV=I(()=>{Vn()});var HV={};Be(HV,{_IESTextureLoader:()=>jC});var jC,zV=I(()=>{WV();jC=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".ies not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=kV(r);i(s.width,s.height,!!t.useMipMaps,!1,()=>{let a=t.getEngine();t.type=1,t.format=6,t._gammaSpace=!1,a._uploadDataToTextureDirectly(t,s.data)})}}});var XV={};Be(XV,{_DDSTextureLoader:()=>qC});var qC,YV=I(()=>{ug();ZC();qC=class{constructor(){this.supportCascades=!0}loadCubeData(e,t,i,r){let s=t.getEngine(),a,o=!1,l=1e3;if(Array.isArray(e))for(let c=0;c1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),To.UploadDDSLevels(s,t,f,a,o,6,-1,c),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t):l=a.mipmapCount-1}else{let c=e;a=To.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new cl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),To.UploadDDSLevels(s,t,c,a,o,6),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t,!1):l=a.mipmapCount-1}s._setCubeMapTextureParams(t,o,l),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r({isDDS:!0,width:t.width,info:a,data:e,texture:t})}loadData(e,t,i){let r=To.GetDDSInfo(e),s=(r.isRGB||r.isLuminance||r.mipmapCount>1)&&t.generateMipMaps&&Math.max(r.width,r.height)>>r.mipmapCount-1===1;i(r.width,r.height,s,r.isFourCC,()=>{To.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function KV(){let n={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC4:4,cTFBC5:5,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFATC_RGB:11,cTFATC_RGBA_INTERPOLATED_ALPHA:12,cTFRGBA32:13,cTFRGB565:14,cTFBGR565:15,cTFRGBA4444:16,cTFFXT1_RGB:17,cTFPVRTC2_4_RGB:18,cTFPVRTC2_4_RGBA:19,cTFETC2_EAC_R11:20,cTFETC2_EAC_RG11:21},e=null;onmessage=a=>{if(a.data.action==="init"){if(a.data.url)try{importScripts(a.data.url)}catch(o){postMessage({action:"error",error:o})}e||(e=BASIS({wasmBinary:a.data.wasmBinary})),e!==null&&e.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(a.data.action==="transcode"){let o=a.data.config,l=a.data.imageData,c=new BASIS.BasisFile(l),f=i(c),d=a.data.ignoreSupportedFormats?null:t(a.data.config,f),h=!1;d===null&&(h=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let u=!0;c.startTranscoding()||(u=!1);let m=[];for(let _=0;_>2&3],d[x++]=f[v>>4&3],d[x]=f[v>>6&3]}}return d}}async function jV(n,e,t){return await new Promise((i,r)=>{let s=a=>{a.data.action==="init"?(n.removeEventListener("message",s),i(n)):a.data.action==="error"&&r(a.data.error||"error initializing worker")};n.addEventListener("message",s),n.postMessage({action:"init",url:t?_e.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var qV=I(()=>{yi()});var ac,bf,xle,QC,dh,Rle,ble,Mle,sx,nx,ax,$C,ZV=I(()=>{yi();Gr();Os();qV();(function(n){n[n.cTFETC1=0]="cTFETC1",n[n.cTFETC2=1]="cTFETC2",n[n.cTFBC1=2]="cTFBC1",n[n.cTFBC3=3]="cTFBC3",n[n.cTFBC4=4]="cTFBC4",n[n.cTFBC5=5]="cTFBC5",n[n.cTFBC7=6]="cTFBC7",n[n.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",n[n.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",n[n.cTFASTC_4x4=10]="cTFASTC_4x4",n[n.cTFATC_RGB=11]="cTFATC_RGB",n[n.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",n[n.cTFRGBA32=13]="cTFRGBA32",n[n.cTFRGB565=14]="cTFRGB565",n[n.cTFBGR565=15]="cTFBGR565",n[n.cTFRGBA4444=16]="cTFRGBA4444",n[n.cTFFXT1_RGB=17]="cTFFXT1_RGB",n[n.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",n[n.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",n[n.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",n[n.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(ac||(ac={}));bf={JSModuleURL:`${_e._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${_e._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},xle=(n,e)=>{let t;switch(n){case ac.cTFETC1:t=36196;break;case ac.cTFBC1:t=33776;break;case ac.cTFBC4:t=33779;break;case ac.cTFASTC_4x4:t=37808;break;case ac.cTFETC2:t=37496;break;case ac.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},QC=null,dh=null,Rle=0,ble=!1,Mle=async()=>(QC||(QC=new Promise((n,e)=>{dh?n(dh):_e.LoadFileAsync(_e.GetBabylonScriptURL(bf.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${KV})()`],{type:"application/javascript"}));dh=new Worker(i),jV(dh,t,bf.JSModuleURL).then(n,e)}).catch(e)})),await QC),sx=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{Mle().then(()=>{let s=Rle++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(dh.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};dh.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),dh.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:ble},[o.buffer])},s=>{r(s)})})},nx=(n,e)=>{var i,r;let t=(i=e._gl)==null?void 0:i.TEXTURE_2D;n.isCube&&(t=(r=e._gl)==null?void 0:r.TEXTURE_CUBE_MAP),e._bindTextureDirectly(t,n,!0)},ax=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),nx(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,nx(n,t),t._uploadDataToTextureDirectly(n,new Uint16Array(r.transcodedPixels.buffer),i,0,4,!0);else{n.width=r.width,n.height=r.height,n.generateMipMaps=e.fileInfo.images[i].levels.length>1;let s=$C.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,nx(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;oJC});var JC,$V=I(()=>{ZV();yi();JC=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!a.etc1,s3tc:!!a.s3tc,pvrtc:!!a.pvrtc,etc2:!!a.etc2,astc:!!a.astc,bc7:!!a.bptc}};sx(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;ax(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{_e.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,s&&s(l)})}loadData(e,t,i){let r=t.getEngine().getCaps(),s={supportedCompressionFormats:{etc1:!!r.etc1,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,astc:!!r.astc,bc7:!!r.bptc}};sx(e,s).then(a=>{let o=a.fileInfo.images[0].levels[0],l=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;i(o.width,o.height,l,a.format!==-1,()=>{ax(t,a)})}).catch(a=>{_e.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),_e.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var bg,JV=I(()=>{bg=class{constructor(){this._count=0,this._data={}}copyFrom(e){this.clear(),e.forEach((t,i)=>this.add(t,i))}get(e){let t=this._data[e];if(t!==void 0)return t}getOrAddWithFactory(e,t){let i=this.get(e);return i!==void 0||(i=t(e),i&&this.add(e,i)),i}getOrAdd(e,t){let i=this.get(e);return i!==void 0?i:(this.add(e,t),t)}contains(e){return this._data[e]!==void 0}add(e,t){return this._data[e]!==void 0?!1:(this._data[e]=t,++this._count,!0)}set(e,t){return this._data[e]===void 0?!1:(this._data[e]=t,!0)}getAndRemove(e){let t=this.get(e);return t!==void 0?(delete this._data[e],--this._count,t):null}remove(e){return this.contains(e)?(delete this._data[e],--this._count,!0):!1}clear(){this._data={},this._count=0}get count(){return this._count}forEach(e){for(let t in this._data){let i=this._data[t];e(t,i)}}first(e){for(let t in this._data){let i=this._data[t],r=e(t,i);if(r)return r}return null}}});function ox(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var eP=I(()=>{});var sn,eG=I(()=>{Gt();Vt();Ht();br();eP();sn=class n{constructor(){this._dirty=!0,this._tempColor=new lt(0,0,0,0),this._globalCurve=new lt(0,0,0,0),this._highlightsCurve=new lt(0,0,0,0),this._midtonesCurve=new lt(0,0,0,0),this._shadowsCurve=new lt(0,0,0,0),this._positiveCurve=new lt(0,0,0,0),this._negativeCurve=new lt(0,0,0,0),this._globalHue=30,this._globalDensity=0,this._globalSaturation=0,this._globalExposure=0,this._highlightsHue=30,this._highlightsDensity=0,this._highlightsSaturation=0,this._highlightsExposure=0,this._midtonesHue=30,this._midtonesDensity=0,this._midtonesSaturation=0,this._midtonesExposure=0,this._shadowsHue=30,this._shadowsDensity=0,this._shadowsSaturation=0,this._shadowsExposure=0}get globalHue(){return this._globalHue}set globalHue(e){this._globalHue=e,this._dirty=!0}get globalDensity(){return this._globalDensity}set globalDensity(e){this._globalDensity=e,this._dirty=!0}get globalSaturation(){return this._globalSaturation}set globalSaturation(e){this._globalSaturation=e,this._dirty=!0}get globalExposure(){return this._globalExposure}set globalExposure(e){this._globalExposure=e,this._dirty=!0}get highlightsHue(){return this._highlightsHue}set highlightsHue(e){this._highlightsHue=e,this._dirty=!0}get highlightsDensity(){return this._highlightsDensity}set highlightsDensity(e){this._highlightsDensity=e,this._dirty=!0}get highlightsSaturation(){return this._highlightsSaturation}set highlightsSaturation(e){this._highlightsSaturation=e,this._dirty=!0}get highlightsExposure(){return this._highlightsExposure}set highlightsExposure(e){this._highlightsExposure=e,this._dirty=!0}get midtonesHue(){return this._midtonesHue}set midtonesHue(e){this._midtonesHue=e,this._dirty=!0}get midtonesDensity(){return this._midtonesDensity}set midtonesDensity(e){this._midtonesDensity=e,this._dirty=!0}get midtonesSaturation(){return this._midtonesSaturation}set midtonesSaturation(e){this._midtonesSaturation=e,this._dirty=!0}get midtonesExposure(){return this._midtonesExposure}set midtonesExposure(e){this._midtonesExposure=e,this._dirty=!0}get shadowsHue(){return this._shadowsHue}set shadowsHue(e){this._shadowsHue=e,this._dirty=!0}get shadowsDensity(){return this._shadowsDensity}set shadowsDensity(e){this._shadowsDensity=e,this._dirty=!0}get shadowsSaturation(){return this._shadowsSaturation}set shadowsSaturation(e){this._shadowsSaturation=e,this._dirty=!0}get shadowsExposure(){return this._shadowsExposure}set shadowsExposure(e){this._shadowsExposure=e,this._dirty=!0}getClassName(){return"ColorCurves"}static Bind(e,t,i="vCameraColorCurvePositive",r="vCameraColorCurveNeutral",s="vCameraColorCurveNegative"){e._dirty&&(e._dirty=!1,e._getColorGradingDataToRef(e._globalHue,e._globalDensity,e._globalSaturation,e._globalExposure,e._globalCurve),e._getColorGradingDataToRef(e._highlightsHue,e._highlightsDensity,e._highlightsSaturation,e._highlightsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._highlightsCurve),e._getColorGradingDataToRef(e._midtonesHue,e._midtonesDensity,e._midtonesSaturation,e._midtonesExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._midtonesCurve),e._getColorGradingDataToRef(e._shadowsHue,e._shadowsDensity,e._shadowsSaturation,e._shadowsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._shadowsCurve),e._highlightsCurve.subtractToRef(e._midtonesCurve,e._positiveCurve),e._midtonesCurve.subtractToRef(e._shadowsCurve,e._negativeCurve)),t&&(t.setFloat4(i,e._positiveCurve.r,e._positiveCurve.g,e._positiveCurve.b,e._positiveCurve.a),t.setFloat4(r,e._midtonesCurve.r,e._midtonesCurve.g,e._midtonesCurve.b,e._midtonesCurve.a),t.setFloat4(s,e._negativeCurve.r,e._negativeCurve.g,e._negativeCurve.b,e._negativeCurve.a))}_getColorGradingDataToRef(e,t,i,r,s){e!=null&&(e=n._Clamp(e,0,360),t=n._Clamp(t,-100,100),i=n._Clamp(i,-100,100),r=n._Clamp(r,-100,100),t=n._ApplyColorGradingSliderNonlinear(t),t*=.5,r=n._ApplyColorGradingSliderNonlinear(r),t<0&&(t*=-1,e=(e+180)%360),n._FromHSBToRef(e,t,50+.25*r,s),s.scaleToRef(2,s),s.a=1+.01*i)}static _ApplyColorGradingSliderNonlinear(e){e/=100;let t=Math.abs(e);return t=Math.pow(t,2),e<0&&(t*=-1),t*=100,t}static _FromHSBToRef(e,t,i,r){let s=n._Clamp(e,0,360),a=n._Clamp(t/100,0,1),o=n._Clamp(i/100,0,1);if(a===0)r.r=o,r.g=o,r.b=o;else{s/=60;let l=Math.floor(s),c=s-l,f=o*(1-a),d=o*(1-a*c),h=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=h,r.b=f;break;case 1:r.r=d,r.g=o,r.b=f;break;case 2:r.r=f,r.g=o,r.b=h;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=h,r.g=f,r.b=o;break;default:r.r=o,r.g=f,r.b=d;break}}r.a=1}static _Clamp(e,t,i){return Math.min(Math.max(e,t),i)}clone(){return it.Clone(()=>new n,this)}serialize(){return it.Serialize(this)}static Parse(e){return it.Parse(()=>new n,e,null,null)}};sn.PrepareUniforms=ox;P([F()],sn.prototype,"_globalHue",void 0);P([F()],sn.prototype,"_globalDensity",void 0);P([F()],sn.prototype,"_globalSaturation",void 0);P([F()],sn.prototype,"_globalExposure",void 0);P([F()],sn.prototype,"_highlightsHue",void 0);P([F()],sn.prototype,"_highlightsDensity",void 0);P([F()],sn.prototype,"_highlightsSaturation",void 0);P([F()],sn.prototype,"_highlightsExposure",void 0);P([F()],sn.prototype,"_midtonesHue",void 0);P([F()],sn.prototype,"_midtonesDensity",void 0);P([F()],sn.prototype,"_midtonesSaturation",void 0);P([F()],sn.prototype,"_midtonesExposure",void 0);it._ColorCurvesParser=sn.Parse});function tG(n,e){e.EXPOSURE&&n.push("exposureLinear"),e.CONTRAST&&n.push("contrast"),e.COLORGRADING&&n.push("colorTransformSettings"),(e.VIGNETTE||e.DITHER)&&n.push("vInverseScreenSize"),e.VIGNETTE&&(n.push("vignetteSettings1"),n.push("vignetteSettings2")),e.COLORCURVES&&ox(n),e.DITHER&&n.push("ditherIntensity")}function iG(n,e){e.COLORGRADING&&n.push("txColorTransform")}var rG=I(()=>{eP()});var kt,Mg=I(()=>{Gt();Vt();hi();Ht();eG();uo();br();rG();Yi();kt=class n{constructor(){this.colorCurves=new sn,this._colorCurvesEnabled=!1,this._colorGradingEnabled=!1,this._colorGradingWithGreenDepth=!0,this._colorGradingBGR=!0,this._exposure=1,this._toneMappingEnabled=!1,this._toneMappingType=n.TONEMAPPING_STANDARD,this._contrast=1,this.vignetteStretch=0,this.vignetteCenterX=0,this.vignetteCenterY=0,this.vignetteWeight=1.5,this.vignetteColor=new lt(0,0,0,0),this.vignetteCameraFov=.5,this._vignetteBlendMode=n.VIGNETTEMODE_MULTIPLY,this._vignetteEnabled=!1,this._ditheringEnabled=!1,this._ditheringIntensity=1/255,this._skipFinalColorClamp=!1,this._applyByPostProcess=!1,this._isEnabled=!0,this.outputTextureWidth=0,this.outputTextureHeight=0,this.onUpdateParameters=new ie}get colorCurvesEnabled(){return this._colorCurvesEnabled}set colorCurvesEnabled(e){this._colorCurvesEnabled!==e&&(this._colorCurvesEnabled=e,this._updateParameters())}get colorGradingTexture(){return this._colorGradingTexture}set colorGradingTexture(e){this._colorGradingTexture!==e&&(this._colorGradingTexture=e,this._updateParameters())}get colorGradingEnabled(){return this._colorGradingEnabled}set colorGradingEnabled(e){this._colorGradingEnabled!==e&&(this._colorGradingEnabled=e,this._updateParameters())}get colorGradingWithGreenDepth(){return this._colorGradingWithGreenDepth}set colorGradingWithGreenDepth(e){this._colorGradingWithGreenDepth!==e&&(this._colorGradingWithGreenDepth=e,this._updateParameters())}get colorGradingBGR(){return this._colorGradingBGR}set colorGradingBGR(e){this._colorGradingBGR!==e&&(this._colorGradingBGR=e,this._updateParameters())}get exposure(){return this._exposure}set exposure(e){this._exposure!==e&&(this._exposure=e,this._updateParameters())}get toneMappingEnabled(){return this._toneMappingEnabled}set toneMappingEnabled(e){this._toneMappingEnabled!==e&&(this._toneMappingEnabled=e,this._updateParameters())}get toneMappingType(){return this._toneMappingType}set toneMappingType(e){this._toneMappingType!==e&&(this._toneMappingType=e,this._updateParameters())}get contrast(){return this._contrast}set contrast(e){this._contrast!==e&&(this._contrast=e,this._updateParameters())}get vignetteCentreY(){return this.vignetteCenterY}set vignetteCentreY(e){this.vignetteCenterY=e}get vignetteCentreX(){return this.vignetteCenterX}set vignetteCentreX(e){this.vignetteCenterX=e}get vignetteBlendMode(){return this._vignetteBlendMode}set vignetteBlendMode(e){this._vignetteBlendMode!==e&&(this._vignetteBlendMode=e,this._updateParameters())}get vignetteEnabled(){return this._vignetteEnabled}set vignetteEnabled(e){this._vignetteEnabled!==e&&(this._vignetteEnabled=e,this._updateParameters())}get ditheringEnabled(){return this._ditheringEnabled}set ditheringEnabled(e){this._ditheringEnabled!==e&&(this._ditheringEnabled=e,this._updateParameters())}get ditheringIntensity(){return this._ditheringIntensity}set ditheringIntensity(e){this._ditheringIntensity!==e&&(this._ditheringIntensity=e,this._updateParameters())}get skipFinalColorClamp(){return this._skipFinalColorClamp}set skipFinalColorClamp(e){this._skipFinalColorClamp!==e&&(this._skipFinalColorClamp=e,this._updateParameters())}get applyByPostProcess(){return this._applyByPostProcess}set applyByPostProcess(e){this._applyByPostProcess!==e&&(this._applyByPostProcess=e,this._updateParameters())}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this._updateParameters())}_updateParameters(){this.onUpdateParameters.notifyObservers(this)}getClassName(){return"ImageProcessingConfiguration"}prepareDefines(e,t=!1){if(t!==this.applyByPostProcess||!this._isEnabled){e.VIGNETTE=!1,e.TONEMAPPING=0,e.CONTRAST=!1,e.EXPOSURE=!1,e.COLORCURVES=!1,e.COLORGRADING=!1,e.COLORGRADING3D=!1,e.DITHER=!1,e.IMAGEPROCESSING=!1,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess&&this._isEnabled;return}if(e.VIGNETTE=this.vignetteEnabled,e.VIGNETTEBLENDMODEMULTIPLY=this.vignetteBlendMode===n._VIGNETTEMODE_MULTIPLY,e.VIGNETTEBLENDMODEOPAQUE=!e.VIGNETTEBLENDMODEMULTIPLY,!this._toneMappingEnabled)e.TONEMAPPING=0;else switch(this._toneMappingType){case n.TONEMAPPING_KHR_PBR_NEUTRAL:e.TONEMAPPING=3;break;case n.TONEMAPPING_ACES:e.TONEMAPPING=2;break;default:e.TONEMAPPING=1;break}e.CONTRAST=this.contrast!==1,e.EXPOSURE=this.exposure!==1,e.COLORCURVES=this.colorCurvesEnabled&&!!this.colorCurves,e.COLORGRADING=this.colorGradingEnabled&&!!this.colorGradingTexture,e.COLORGRADING?e.COLORGRADING3D=this.colorGradingTexture.is3D:e.COLORGRADING3D=!1,e.SAMPLER3DGREENDEPTH=this.colorGradingWithGreenDepth,e.SAMPLER3DBGRMAP=this.colorGradingBGR,e.DITHER=this._ditheringEnabled,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSING=e.VIGNETTE||!!e.TONEMAPPING||e.CONTRAST||e.EXPOSURE||e.COLORCURVES||e.COLORGRADING||e.DITHER}isReady(){return!this.colorGradingEnabled||!this.colorGradingTexture||this.colorGradingTexture.isReady()}bind(e,t){if(this._colorCurvesEnabled&&this.colorCurves&&sn.Bind(this.colorCurves,e),this._vignetteEnabled||this._ditheringEnabled){let i=1/(this.outputTextureWidth||e.getEngine().getRenderWidth()),r=1/(this.outputTextureHeight||e.getEngine().getRenderHeight());if(e.setFloat2("vInverseScreenSize",i,r),this._ditheringEnabled&&e.setFloat("ditherIntensity",.5*this._ditheringIntensity),this._vignetteEnabled){let s=t!=null?t:r/i,a=Math.tan(this.vignetteCameraFov*.5),o=a*s,l=Math.sqrt(o*a);o=cg(o,l,this.vignetteStretch),a=cg(a,l,this.vignetteStretch),e.setFloat4("vignetteSettings1",o,a,-o*this.vignetteCenterX,-a*this.vignetteCenterY);let c=-2*this.vignetteWeight;e.setFloat4("vignetteSettings2",this.vignetteColor.r,this.vignetteColor.g,this.vignetteColor.b,c)}}if(e.setFloat("exposureLinear",this.exposure),e.setFloat("contrast",this.contrast),this.colorGradingTexture){e.setTexture("txColorTransform",this.colorGradingTexture);let i=this.colorGradingTexture.getSize().height;e.setFloat4("colorTransformSettings",(i-1)/i,.5/i,i,this.colorGradingTexture.level)}}clone(){return it.Clone(()=>new n,this)}serialize(){return it.Serialize(this)}static Parse(e){let t=it.Parse(()=>new n,e,null,null);return e.vignetteCentreX!==void 0&&(t.vignetteCenterX=e.vignetteCentreX),e.vignetteCentreY!==void 0&&(t.vignetteCenterY=e.vignetteCentreY),t}static get VIGNETTEMODE_MULTIPLY(){return this._VIGNETTEMODE_MULTIPLY}static get VIGNETTEMODE_OPAQUE(){return this._VIGNETTEMODE_OPAQUE}};kt.TONEMAPPING_STANDARD=0;kt.TONEMAPPING_ACES=1;kt.TONEMAPPING_KHR_PBR_NEUTRAL=2;kt.PrepareUniforms=tG;kt.PrepareSamplers=iG;kt._VIGNETTEMODE_MULTIPLY=0;kt._VIGNETTEMODE_OPAQUE=1;P([JU()],kt.prototype,"colorCurves",void 0);P([F()],kt.prototype,"_colorCurvesEnabled",void 0);P([Ut("colorGradingTexture")],kt.prototype,"_colorGradingTexture",void 0);P([F()],kt.prototype,"_colorGradingEnabled",void 0);P([F()],kt.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],kt.prototype,"_colorGradingBGR",void 0);P([F()],kt.prototype,"_exposure",void 0);P([F()],kt.prototype,"_toneMappingEnabled",void 0);P([F()],kt.prototype,"_toneMappingType",void 0);P([F()],kt.prototype,"_contrast",void 0);P([F()],kt.prototype,"vignetteStretch",void 0);P([F()],kt.prototype,"vignetteCenterX",void 0);P([F()],kt.prototype,"vignetteCenterY",void 0);P([F()],kt.prototype,"vignetteWeight",void 0);P([Em()],kt.prototype,"vignetteColor",void 0);P([F()],kt.prototype,"vignetteCameraFov",void 0);P([F()],kt.prototype,"_vignetteBlendMode",void 0);P([F()],kt.prototype,"_vignetteEnabled",void 0);P([F()],kt.prototype,"_ditheringEnabled",void 0);P([F()],kt.prototype,"_ditheringIntensity",void 0);P([F()],kt.prototype,"_skipFinalColorClamp",void 0);P([F()],kt.prototype,"_applyByPostProcess",void 0);P([F()],kt.prototype,"_isEnabled",void 0);P([F()],kt.prototype,"outputTextureWidth",void 0);P([F()],kt.prototype,"outputTextureHeight",void 0);it._ImageProcessingConfigurationParser=kt.Parse;Ft("BABYLON.ImageProcessingConfiguration",kt)});var fs,Ig=I(()=>{ke();Wi();fs=class{constructor(){this.hit=!1,this.distance=0,this.pickedPoint=null,this.pickedMesh=null,this.bu=0,this.bv=0,this.faceId=-1,this.subMeshFaceId=-1,this.subMeshId=0,this.pickedSprite=null,this.thinInstanceIndex=-1,this.ray=null,this.originMesh=null,this.aimTransform=null,this.gripTransform=null}getNormal(e=!1,t=!0){if(!this.pickedMesh||t&&!this.pickedMesh.isVerticesDataPresent(D.NormalKind))return null;let i=this.pickedMesh.getIndices();(i==null?void 0:i.length)===0&&(i=null);let r,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2];if(t){let c=this.pickedMesh.getVerticesData(D.NormalKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]);f=f.scale(this.bu),d=d.scale(this.bv),h=h.scale(1-this.bu-this.bv),r=new b(f.x+d.x+h.x,f.y+d.y+h.y,f.z+d.z+h.z)}else{let c=this.pickedMesh.getVerticesData(D.PositionKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]),u=f.subtract(d),m=h.subtract(d);r=b.Cross(u,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let h=c._thinInstanceDataStorage.matrixData,u=this.thinInstanceIndex<<4;if(h&&h.length>u){let m=$.Matrix[0];q.FromArrayToRef(h,u,m),b.TransformNormalToRef(f,m,f)}}let d=c.getWorldMatrix();c.nonUniformScaling&&($.Matrix[0].copyFrom(d),d=$.Matrix[0],d.setTranslationFromFloats(0,0,0),d.invert(),d.transposeToRef($.Matrix[1]),d=$.Matrix[1]),b.TransformNormalToRef(f,d,f)};if(e&&l(this.pickedMesh,r),this.ray){let c=$.Vector3[0].copyFrom(r);e||l(this.pickedMesh,c),b.Dot(c,this.ray.direction)>0&&r.negateInPlace()}return r.normalize(),r}getTextureCoordinates(e=D.UVKind){if(!this.pickedMesh||!this.pickedMesh.isVerticesDataPresent(e))return null;let t=this.pickedMesh.getIndices();if(!t)return null;let i=this.pickedMesh.getVerticesData(e);if(!i)return null;let r=Fe.FromArray(i,t[this.faceId*3]*2),s=Fe.FromArray(i,t[this.faceId*3+1]*2),a=Fe.FromArray(i,t[this.faceId*3+2]*2);return r=r.scale(this.bu),s=s.scale(this.bv),a=a.scale(1-this.bu-this.bv),new Fe(r.x+s.x+a.x,r.y+s.y+a.y)}}});var an,tP=I(()=>{an=class n{constructor(e,t,i,r,s,a){this.source=e,this.pointerX=t,this.pointerY=i,this.meshUnderPointer=r,this.sourceEvent=s,this.additionalData=a}static CreateNew(e,t,i){let r=e.getScene();return new n(e,r.pointerX,r.pointerY,r.meshUnderPointer||e,t,i)}static CreateNewFromSprite(e,t,i,r){return new n(e,t.pointerX,t.pointerY,t.meshUnderPointer,i,r)}static CreateNewFromScene(e,t){return new n(null,e.pointerX,e.pointerY,e.meshUnderPointer,t)}static CreateNewFromPrimitive(e,t,i,r){return new n(e,t.x,t.y,null,i,r)}}});function yg(n,e,t){let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]-=n.x,i[13]-=n.y,i[14]-=n.z,t.markAsUpdated(),t}function oG(n,e,t){return dg(e,Da),yg(n,Da,La),dg(La,t),t}function lx(n,e,t){if(!Oa.eyeAtCamera)return oG(n,e,t);let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]=0,i[13]=0,i[14]=0,t.markAsUpdated(),t}function iP(n,e,t,i){return eh(lx(n,e,i),t,i),i}function lG(n,e,t,i,r){for(let s=0;s{Zd();ke();gC();Af();Pa=new q,Da=new q,La=new q,Oa={getScene:()=>{},eyeAtCamera:!0};Cg=mr,rP=or,cG=Cg.prototype._updateMatrixForUniform,fG=or.prototype.setMatrix});var tt,cr,Rm=I(()=>{tt=class{};tt.NAME_EFFECTLAYER="EffectLayer";tt.NAME_LAYER="Layer";tt.NAME_LENSFLARESYSTEM="LensFlareSystem";tt.NAME_BOUNDINGBOXRENDERER="BoundingBoxRenderer";tt.NAME_PARTICLESYSTEM="ParticleSystem";tt.NAME_GAMEPAD="Gamepad";tt.NAME_SIMPLIFICATIONQUEUE="SimplificationQueue";tt.NAME_GEOMETRYBUFFERRENDERER="GeometryBufferRenderer";tt.NAME_PREPASSRENDERER="PrePassRenderer";tt.NAME_DEPTHRENDERER="DepthRenderer";tt.NAME_DEPTHPEELINGRENDERER="DepthPeelingRenderer";tt.NAME_POSTPROCESSRENDERPIPELINEMANAGER="PostProcessRenderPipelineManager";tt.NAME_SPRITE="Sprite";tt.NAME_SUBSURFACE="SubSurface";tt.NAME_OUTLINERENDERER="Outline";tt.NAME_PROCEDURALTEXTURE="ProceduralTexture";tt.NAME_SHADOWGENERATOR="ShadowGenerator";tt.NAME_OCTREE="Octree";tt.NAME_PHYSICSENGINE="PhysicsEngine";tt.NAME_AUDIO="Audio";tt.NAME_FLUIDRENDERER="FluidRenderer";tt.NAME_IBLCDFGENERATOR="iblCDFGenerator";tt.NAME_CLUSTEREDLIGHTING="ClusteredLighting";tt.STEP_ISREADYFORMESH_EFFECTLAYER=0;tt.STEP_ISREADYFORMESH_DEPTHRENDERER=1;tt.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER=0;tt.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER=0;tt.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER=0;tt.STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER=1;tt.STEP_BEFORECAMERADRAW_PREPASS=0;tt.STEP_BEFORECAMERADRAW_EFFECTLAYER=1;tt.STEP_BEFORECAMERADRAW_LAYER=2;tt.STEP_BEFORERENDERTARGETDRAW_PREPASS=0;tt.STEP_BEFORERENDERTARGETDRAW_LAYER=1;tt.STEP_BEFORERENDERINGMESH_PREPASS=0;tt.STEP_BEFORERENDERINGMESH_OUTLINE=1;tt.STEP_AFTERRENDERINGMESH_PREPASS=0;tt.STEP_AFTERRENDERINGMESH_OUTLINE=1;tt.STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW=0;tt.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER=1;tt.STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE=0;tt.STEP_BEFORECLEAR_PROCEDURALTEXTURE=0;tt.STEP_BEFORECLEAR_PREPASS=1;tt.STEP_BEFORERENDERTARGETCLEAR_PREPASS=0;tt.STEP_AFTERRENDERTARGETDRAW_PREPASS=0;tt.STEP_AFTERRENDERTARGETDRAW_LAYER=1;tt.STEP_AFTERCAMERADRAW_PREPASS=0;tt.STEP_AFTERCAMERADRAW_EFFECTLAYER=1;tt.STEP_AFTERCAMERADRAW_LENSFLARESYSTEM=2;tt.STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW=3;tt.STEP_AFTERCAMERADRAW_LAYER=4;tt.STEP_AFTERCAMERADRAW_FLUIDRENDERER=5;tt.STEP_AFTERCAMERAPOSTPROCESS_LAYER=0;tt.STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER=0;tt.STEP_AFTERRENDER_AUDIO=0;tt.STEP_GATHERRENDERTARGETS_DEPTHRENDERER=0;tt.STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER=1;tt.STEP_GATHERRENDERTARGETS_SHADOWGENERATOR=2;tt.STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER=3;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER=0;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER=1;tt.STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING=2;tt.STEP_POINTERMOVE_SPRITE=0;tt.STEP_POINTERDOWN_SPRITE=0;tt.STEP_POINTERUP_SPRITE=0;cr=class n extends Array{constructor(e){super(...e)}static Create(){return Object.create(n.prototype)}registerStep(e,t,i){let r=0,s;for(;r{ke();st=class{};st.POINTERDOWN=1;st.POINTERUP=2;st.POINTERMOVE=4;st.POINTERWHEEL=8;st.POINTERPICK=16;st.POINTERTAP=32;st.POINTERDOUBLETAP=64;cx=class{constructor(e,t){this.type=e,this.event=t}},fx=class extends cx{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new Fe(i,r)}},Na=class extends cx{get pickInfo(){return this._pickInfo||this._generatePickInfo(),this._pickInfo}constructor(e,t,i,r=null){super(e,t),this._pickInfo=i,this._inputManager=r}_generatePickInfo(){this._inputManager&&(this._pickInfo=this._inputManager._pickMove(this.event),this._inputManager._setRayOnPointerInfo(this._pickInfo,this.event),this._inputManager=null)}}});var oc,uG=I(()=>{oc=class n{constructor(){this.hoverCursor="",this.actions=[],this.isRecursive=!1,this.disposeWhenUnowned=!0}static get HasTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e))return!0;return!1}static get HasPickTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e)){let t=parseInt(e);if(t>=1&&t<=7)return!0}return!1}static HasSpecificTrigger(e){for(let t in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,t)&&parseInt(t)===e)return!0;return!1}};oc.Triggers={}});var xo,bm,Dg,dx=I(()=>{xo=class{};xo.KEYDOWN=1;xo.KEYUP=2;bm=class{constructor(e,t){this.type=e,this.event=t}},Dg=class extends bm{get skipOnPointerObservable(){return this.skipOnKeyboardObservable}set skipOnPointerObservable(e){this.skipOnKeyboardObservable=e}constructor(e,t){super(e,t),this.type=e,this.event=t,this.skipOnKeyboardObservable=!1}}});var Je,vt,mG,pG,_G,gG,vG,hh=I(()=>{(function(n){n[n.Generic=0]="Generic",n[n.Keyboard=1]="Keyboard",n[n.Mouse=2]="Mouse",n[n.Touch=3]="Touch",n[n.DualShock=4]="DualShock",n[n.Xbox=5]="Xbox",n[n.Switch=6]="Switch",n[n.DualSense=7]="DualSense"})(Je||(Je={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.Move=12]="Move"})(vt||(vt={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.DeltaHorizontal=10]="DeltaHorizontal",n[n.DeltaVertical=11]="DeltaVertical"})(mG||(mG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(pG||(pG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Create=8]="Create",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(_G||(_G={}));(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.LT=6]="LT",n[n.RT=7]="RT",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.LStickXAxis=17]="LStickXAxis",n[n.LStickYAxis=18]="LStickYAxis",n[n.RStickXAxis=19]="RStickXAxis",n[n.RStickYAxis=20]="RStickYAxis"})(gG||(gG={}));(function(n){n[n.B=0]="B",n[n.A=1]="A",n[n.Y=2]="Y",n[n.X=3]="X",n[n.L=4]="L",n[n.R=5]="R",n[n.ZL=6]="ZL",n[n.ZR=7]="ZR",n[n.Minus=8]="Minus",n[n.Plus=9]="Plus",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.Capture=17]="Capture",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(vG||(vG={}))});var EG,Ro,hx=I(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})(EG||(EG={}));Ro=class{};Ro.DOM_DELTA_PIXEL=0;Ro.DOM_DELTA_LINE=1;Ro.DOM_DELTA_PAGE=2});var bo,sP=I(()=>{hx();hh();bo=class{static CreateDeviceEvent(e,t,i,r,s,a,o){switch(e){case Je.Keyboard:return this._CreateKeyboardEvent(i,r,s,a);case Je.Mouse:if(i===vt.MouseWheelX||i===vt.MouseWheelY||i===vt.MouseWheelZ)return this._CreateWheelEvent(e,t,i,r,s,a);case Je.Touch:return this._CreatePointerEvent(e,t,i,r,s,a,o);default:throw`Unable to generate event for device ${Je[e]}`}}static _CreatePointerEvent(e,t,i,r,s,a,o){let l=this._CreateMouseEvent(e,t,i,r,s,a);e===Je.Mouse?(l.deviceType=Je.Mouse,l.pointerId=1,l.pointerType="mouse"):(l.deviceType=Je.Touch,l.pointerId=o!=null?o:t,l.pointerType="touch");let c=0;return c+=s.pollInput(e,t,vt.LeftClick),c+=s.pollInput(e,t,vt.RightClick)*2,c+=s.pollInput(e,t,vt.MiddleClick)*4,l.buttons=c,i===vt.Move?l.type="pointermove":i>=vt.LeftClick&&i<=vt.RightClick&&(l.type=r===1?"pointerdown":"pointerup",l.button=i-2),l}static _CreateWheelEvent(e,t,i,r,s,a){let o=this._CreateMouseEvent(e,t,i,r,s,a);switch(o.pointerId=1,o.type="wheel",o.deltaMode=Ro.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case vt.MouseWheelX:o.deltaX=r;break;case vt.MouseWheelY:o.deltaY=r;break;case vt.MouseWheelZ:o.deltaZ=r;break}return o}static _CreateMouseEvent(e,t,i,r,s,a){let o=this._CreateEvent(a),l=s.pollInput(e,t,vt.Horizontal),c=s.pollInput(e,t,vt.Vertical);return a?(o.movementX=0,o.movementY=0,o.offsetX=o.movementX-a.getBoundingClientRect().x,o.offsetY=o.movementY-a.getBoundingClientRect().y):(o.movementX=s.pollInput(e,t,10),o.movementY=s.pollInput(e,t,11),o.offsetX=0,o.offsetY=0),this._CheckNonCharacterKeys(o,s),o.clientX=l,o.clientY=c,o.x=l,o.y=c,o.deviceType=e,o.deviceSlot=t,o.inputIndex=i,o}static _CreateKeyboardEvent(e,t,i,r){let s=this._CreateEvent(r);return this._CheckNonCharacterKeys(s,i),s.deviceType=Je.Keyboard,s.deviceSlot=0,s.inputIndex=e,s.type=t===1?"keydown":"keyup",s.key=String.fromCharCode(e),s.keyCode=e,s}static _CheckNonCharacterKeys(e,t){let i=t.isDeviceAvailable(Je.Keyboard),r=i&&t.pollInput(Je.Keyboard,0,18)===1,s=i&&t.pollInput(Je.Keyboard,0,17)===1,a=i&&(t.pollInput(Je.Keyboard,0,91)===1||t.pollInput(Je.Keyboard,0,92)===1||t.pollInput(Je.Keyboard,0,93)===1),o=i&&t.pollInput(Je.Keyboard,0,16)===1;e.altKey=r,e.ctrlKey=s,e.metaKey=a,e.shiftKey=o}static _CreateEvent(e){let t={};return t.preventDefault=()=>{},t.target=e,t}}});var ux,SG=I(()=>{sP();hh();ux=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=bo.CreateDeviceEvent(r,s,a,o,this);i(r,s,l)}):this._createDummyNativeInput()}pollInput(e,t,i){return this._nativeInput.pollInput(e,t,i)}isDeviceAvailable(e){return e===Je.Mouse||e===Je.Touch}dispose(){this._nativeInput.dispose()}_createDummyNativeInput(){return{pollInput:()=>0,isDeviceAvailable:()=>!1,dispose:()=>{}}}}});var TG,AG,mx,xG=I(()=>{ba();yi();sP();hh();TG=255,AG=Object.keys(vt).length/2,mx=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=_e.IsSafari(),this._usingMacOs=Xl()&&/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform),this._keyboardDownEvent=s=>{},this._keyboardUpEvent=s=>{},this._keyboardBlurEvent=s=>{},this._pointerMoveEvent=s=>{},this._pointerDownEvent=s=>{},this._pointerUpEvent=s=>{},this._pointerCancelEvent=s=>{},this._pointerCancelTouch=s=>{},this._pointerLeaveEvent=s=>{},this._pointerWheelEvent=s=>{},this._pointerBlurEvent=s=>{},this._pointerMacOsChromeOutEvent=s=>{},this._eventsAttached=!1,this._mouseId=-1,this._isUsingFirefox=Xl()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=Xl()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=_e.GetPointerPrefix(e),this._engine=e,this._onDeviceConnected=t,this._onDeviceDisconnected=i,this._onInputChanged=r,this._mouseId=this._isUsingFirefox?0:1,this._enableEvents(),this._usingMacOs&&(this._metaKeys=[]),this._engine._onEngineViewChanged||(this._engine._onEngineViewChanged=()=>{this._enableEvents()})}pollInput(e,t,i){let r=this._inputs[e][t];if(!r)throw`Unable to find device ${Je[e]}`;e>=Je.DualShock&&e<=Je.DualSense&&this._updateDevice(e,t,i);let s=r[i];if(s===void 0)throw`Unable to find input ${i} for device ${Je[e]} in slot ${t}`;return i===vt.Move&&_e.Warn("Unable to provide information for PointerInput.Move. Try using PointerInput.Horizontal or PointerInput.Vertical for move data."),s}isDeviceAvailable(e){return this._inputs[e]!==void 0}dispose(){this._onDeviceConnected=()=>{},this._onDeviceDisconnected=()=>{},this._onInputChanged=()=>{},delete this._engine._onEngineViewChanged,this._elementToAttachTo&&this._disableEvents()}_enableEvents(){let e=this==null?void 0:this._engine.getInputElement();if(e&&(!this._eventsAttached||this._elementToAttachTo!==e)){if(this._disableEvents(),this._inputs){for(let t of this._inputs)if(t)for(let i in t){let r=+i,s=t[r];if(s)for(let a=0;a{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice(Je.Keyboard,0,TG));let t=this._inputs[Je.Keyboard][0];if(t){t[e.keyCode]=1;let i=e;i.inputIndex=e.keyCode,this._usingMacOs&&e.metaKey&&e.key!=="Meta"&&(this._metaKeys.includes(e.keyCode)||this._metaKeys.push(e.keyCode)),this._onInputChanged(Je.Keyboard,0,i)}},this._keyboardUpEvent=e=>{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice(Je.Keyboard,0,TG));let t=this._inputs[Je.Keyboard][0];if(t){t[e.keyCode]=0;let i=e;if(i.inputIndex=e.keyCode,this._usingMacOs&&e.key==="Meta"&&this._metaKeys.length>0){for(let r of this._metaKeys){let s=bo.CreateDeviceEvent(Je.Keyboard,0,r,0,this,this._elementToAttachTo);t[r]=0,this._onInputChanged(Je.Keyboard,0,s)}this._metaKeys.splice(0,this._metaKeys.length)}this._onInputChanged(Je.Keyboard,0,i)}},this._keyboardBlurEvent=()=>{if(this._keyboardActive){let e=this._inputs[Je.Keyboard][0];for(let t=0;t{let r=this._getPointerType(i),s=r===Je.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===Je.Touch&&s===-1){let o=this._activeTouchIds.indexOf(-1);if(o>=0)s=o,this._activeTouchIds[o]=i.pointerId,this._onDeviceConnected(r,s);else{_e.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]||this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=i;o.inputIndex=vt.Move,a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,r===Je.Touch&&a[vt.LeftClick]===0&&(a[vt.LeftClick]=1),i.pointerId===void 0&&(i.pointerId=this._mouseId),this._onInputChanged(r,s,o),!this._usingSafari&&i.button!==-1&&(o.inputIndex=i.button+2,a[i.button+2]=a[i.button+2]?0:1,this._onInputChanged(r,s,o))}},this._pointerDownEvent=i=>{let r=this._getPointerType(i),s=r===Je.Mouse?0:i.pointerId;if(r===Je.Touch){let o=this._activeTouchIds.indexOf(i.pointerId);if(o===-1&&(o=this._activeTouchIds.indexOf(-1)),o>=0)s=o,this._activeTouchIds[o]=i.pointerId;else{_e.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]?r===Je.Touch&&this._onDeviceConnected(r,s):this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=a[vt.Horizontal],l=a[vt.Vertical];if(r===Je.Mouse){if(i.pointerId===void 0&&(i.pointerId=this._mouseId),!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(this._mouseId)}catch(f){}}else if(i.pointerId&&!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(i.pointerId)}catch(f){}a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,a[i.button+2]=1;let c=i;c.inputIndex=i.button+2,this._onInputChanged(r,s,c),(o!==i.clientX||l!==i.clientY)&&(c.inputIndex=vt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,h,u;let r=this._getPointerType(i),s=r===Je.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===Je.Touch){if(s===-1)return;this._activeTouchIds[s]=-1}let a=(c=this._inputs[r])==null?void 0:c[s],o=i.button,l=a&&a[o+2]!==0;if(!l&&this._isUsingFirefox&&this._usingMacOs&&a&&(o=o===2?0:2,l=a[o+2]!==0),l){let m=a[vt.Horizontal],_=a[vt.Vertical];a[vt.Horizontal]=i.clientX,a[vt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||_!==i.clientY)&&(p.inputIndex=vt.Move,this._onInputChanged(r,s,p)),p.inputIndex=o+2,r===Je.Mouse&&this._mouseId>=0&&((d=(f=this._elementToAttachTo).hasPointerCapture)!=null&&d.call(f,this._mouseId))?this._elementToAttachTo.releasePointerCapture(this._mouseId):i.pointerId&&((u=(h=this._elementToAttachTo).hasPointerCapture)!=null&&u.call(h,i.pointerId))&&this._elementToAttachTo.releasePointerCapture(i.pointerId),this._onInputChanged(r,s,p),r===Je.Touch&&this._onDeviceDisconnected(r,s)}},this._pointerCancelTouch=i=>{var a,o;let r=this._activeTouchIds.indexOf(i);if(r===-1)return;(o=(a=this._elementToAttachTo).hasPointerCapture)!=null&&o.call(a,i)&&this._elementToAttachTo.releasePointerCapture(i),this._inputs[Je.Touch][r][vt.LeftClick]=0;let s=bo.CreateDeviceEvent(Je.Touch,r,vt.LeftClick,0,this,this._elementToAttachTo,i);this._onInputChanged(Je.Touch,r,s),this._activeTouchIds[r]=-1,this._onDeviceDisconnected(Je.Touch,r)},this._pointerCancelEvent=i=>{var r,s;if(i.pointerType==="mouse"){let a=this._inputs[Je.Mouse][0];this._mouseId>=0&&((s=(r=this._elementToAttachTo).hasPointerCapture)!=null&&s.call(r,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let o=vt.LeftClick;o<=vt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=bo.CreateDeviceEvent(Je.Mouse,0,o,0,this,this._elementToAttachTo);this._onInputChanged(Je.Mouse,0,l)}}else this._pointerCancelTouch(i.pointerId)},this._pointerLeaveEvent=i=>{i.pointerType==="pen"&&this._pointerCancelTouch(i.pointerId)},this._wheelEventName="onwheel"in document.createElement("div")?"wheel":document.onmousewheel!==void 0?"mousewheel":"DOMMouseScroll";let e=!1,t=function(){};try{let i=Object.defineProperty({},"passive",{get:function(){e=!0}});this._elementToAttachTo.addEventListener("test",t,i),this._elementToAttachTo.removeEventListener("test",t,i)}catch(i){}this._pointerBlurEvent=()=>{var i,r,s,a,o;if(this.isDeviceAvailable(Je.Mouse)){let l=this._inputs[Je.Mouse][0];this._mouseId>=0&&((r=(i=this._elementToAttachTo).hasPointerCapture)!=null&&r.call(i,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let c=vt.LeftClick;c<=vt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=bo.CreateDeviceEvent(Je.Mouse,0,c,0,this,this._elementToAttachTo);this._onInputChanged(Je.Mouse,0,f)}}if(this.isDeviceAvailable(Je.Touch)){let l=this._inputs[Je.Touch];for(let c=0;c{let r=Je.Mouse,s=0;this._inputs[r]||(this._inputs[r]=[]),this._inputs[r][s]||(this._pointerActive=!0,this._registerDevice(r,s,AG));let a=this._inputs[r][s];if(a){a[vt.MouseWheelX]=i.deltaX||0,a[vt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[vt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[vt.MouseWheelX]!==0&&(o.inputIndex=vt.MouseWheelX,this._onInputChanged(r,s,o)),a[vt.MouseWheelY]!==0&&(o.inputIndex=vt.MouseWheelY,this._onInputChanged(r,s,o)),a[vt.MouseWheelZ]!==0&&(o.inputIndex=vt.MouseWheelZ,this._onInputChanged(r,s,o))}},this._usingMacOs&&this._isUsingChromium&&(this._pointerMacOsChromeOutEvent=i=>{i.buttons>1&&this._pointerCancelEvent(i)},this._elementToAttachTo.addEventListener("lostpointercapture",this._pointerMacOsChromeOutEvent)),this._elementToAttachTo.addEventListener(this._eventPrefix+"move",this._pointerMoveEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"down",this._pointerDownEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"up",this._pointerUpEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"cancel",this._pointerCancelEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"leave",this._pointerLeaveEvent),this._elementToAttachTo.addEventListener("blur",this._pointerBlurEvent),this._elementToAttachTo.addEventListener(this._wheelEventName,this._pointerWheelEvent,e?{passive:!1}:!1),this._pointerInputClearObserver=this._engine.onEndFrameObservable.add(()=>{if(this.isDeviceAvailable(Je.Mouse)){let i=this._inputs[Je.Mouse][0];i[vt.MouseWheelX]=0,i[vt.MouseWheelY]=0,i[vt.MouseWheelZ]=0}})}_handleGamepadActions(){this._gamepadConnectedEvent=e=>{this._addGamePad(e.gamepad)},this._gamepadDisconnectedEvent=e=>{if(this._gamepads){let t=this._getGamepadDeviceType(e.gamepad.id),i=e.gamepad.index;this._unregisterDevice(t,i),delete this._gamepads[i]}},window.addEventListener("gamepadconnected",this._gamepadConnectedEvent),window.addEventListener("gamepaddisconnected",this._gamepadDisconnectedEvent)}_updateDevice(e,t,i){let r=navigator.getGamepads()[t];if(r&&e===this._gamepads[t]){let s=this._inputs[e][t];i>=r.buttons.length?s[i]=r.axes[i-r.buttons.length].valueOf():s[i]=r.buttons[i].value}}_getGamepadDeviceType(e){return e.indexOf("054c")!==-1?e.indexOf("0ce6")!==-1?Je.DualSense:Je.DualShock:e.indexOf("Xbox One")!==-1||e.search("Xbox 360")!==-1||e.search("xinput")!==-1?Je.Xbox:e.indexOf("057e")!==-1?Je.Switch:Je.Generic}_getPointerType(e){let t=Je.Mouse;return(e.pointerType==="touch"||e.pointerType==="pen"||e.touches)&&(t=Je.Touch),t}}});var Lg,RG=I(()=>{hi();Lg=class{constructor(e,t,i=0){this.deviceType=t,this.deviceSlot=i,this.onInputChangedObservable=new ie,this._deviceInputSystem=e}getInput(e){return this._deviceInputSystem.pollInput(this.deviceType,this.deviceSlot,e)}}});var px,bG=I(()=>{hh();SG();xG();RG();px=class{constructor(e){this._registeredManagers=new Array,this._refCount=0,this.registerManager=a=>{for(let o=0;o{let o=this._registeredManagers.indexOf(a);o>-1&&this._registeredManagers.splice(o,1)};let t=Object.keys(Je).length/2;this._devices=new Array(t);let i=(a,o)=>{this._devices[a]||(this._devices[a]=new Array),this._devices[a][o]||(this._devices[a][o]=o);for(let l of this._registeredManagers){let c=new Lg(this._deviceInputSystem,a,o);l._addDevice(c)}},r=(a,o)=>{var l;(l=this._devices[a])!=null&&l[o]&&delete this._devices[a][o];for(let c of this._registeredManagers)c._removeDevice(a,o)},s=(a,o,l)=>{if(l)for(let c of this._registeredManagers)c._onInputChanged(a,o,l)};typeof _native!="undefined"?this._deviceInputSystem=new ux(i,r,s):this._deviceInputSystem=new mx(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var _x,MG=I(()=>{hh();hi();bG();_x=class{getDeviceSource(e,t){if(t===void 0){if(this._firstDevice[e]===void 0)return null;t=this._firstDevice[e]}return!this._devices[e]||this._devices[e][t]===void 0?null:this._devices[e][t]}getDeviceSources(e){return this._devices[e]?this._devices[e].filter(t=>!!t):[]}constructor(e){let t=Object.keys(Je).length/2;this._devices=new Array(t),this._firstDevice=new Array(t),this._engine=e,this._engine._deviceSourceManager||(this._engine._deviceSourceManager=new px(e)),this._engine._deviceSourceManager._refCount++,this.onDeviceConnectedObservable=new ie(i=>{for(let r of this._devices)if(r)for(let s of r)s&&this.onDeviceConnectedObservable.notifyObserver(i,s)}),this.onDeviceDisconnectedObservable=new ie,this._engine._deviceSourceManager.registerManager(this),this._onDisposeObserver=e.onDisposeObservable.add(()=>{this.dispose()})}dispose(){this.onDeviceConnectedObservable.clear(),this.onDeviceDisconnectedObservable.clear(),this._engine._deviceSourceManager&&(this._engine._deviceSourceManager.unregisterManager(this),--this._engine._deviceSourceManager._refCount<1&&(this._engine._deviceSourceManager.dispose(),delete this._engine._deviceSourceManager)),this._engine.onDisposeObservable.remove(this._onDisposeObserver)}_addDevice(e){this._devices[e.deviceType]||(this._devices[e.deviceType]=[]),this._devices[e.deviceType][e.deviceSlot]||(this._devices[e.deviceType][e.deviceSlot]=e,this._updateFirstDevices(e.deviceType)),this.onDeviceConnectedObservable.notifyObservers(e)}_removeDevice(e,t){var r,s;let i=(r=this._devices[e])==null?void 0:r[t];this.onDeviceDisconnectedObservable.notifyObservers(i),(s=this._devices[e])!=null&&s[t]&&delete this._devices[e][t],this._updateFirstDevices(e)}_onInputChanged(e,t,i){var r,s;(s=(r=this._devices[e])==null?void 0:r[t])==null||s.onInputChangedObservable.notifyObservers(i)}_updateFirstDevices(e){switch(e){case Je.Keyboard:case Je.Mouse:this._firstDevice[e]=0;break;case Je.Touch:case Je.DualSense:case Je.DualShock:case Je.Xbox:case Je.Switch:case Je.Generic:{delete this._firstDevice[e];let t=this._devices[e];if(t){for(let i=0;i{uh=class{};uh._IsPickingAvailable=!1});var gx,Gn,IG=I(()=>{Ao();uG();Ig();ke();tP();dx();hh();MG();Ni();aP();gx=class{constructor(){this._singleClick=!1,this._doubleClick=!1,this._hasSwiped=!1,this._ignore=!1}get singleClick(){return this._singleClick}get doubleClick(){return this._doubleClick}get hasSwiped(){return this._hasSwiped}get ignore(){return this._ignore}set singleClick(e){this._singleClick=e}set doubleClick(e){this._doubleClick=e}set hasSwiped(e){this._hasSwiped=e}set ignore(e){this._ignore=e}},Gn=class n{constructor(e){this._alreadyAttached=!1,this._meshPickProceed=!1,this._currentPickResult=null,this._previousPickResult=null,this._activePointerIds=new Array,this._activePointerIdsCount=0,this._doubleClickOccured=!1,this._isSwiping=!1,this._swipeButtonPressed=-1,this._skipPointerTap=!1,this._isMultiTouchGesture=!1,this._pointerX=0,this._pointerY=0,this._startingPointerPosition=new Fe(0,0),this._previousStartingPointerPosition=new Fe(0,0),this._startingPointerTime=0,this._previousStartingPointerTime=0,this._pointerCaptures={},this._meshUnderPointerId={},this._movePointerInfo=null,this._cameraObserverCount=0,this._delayedClicks=[null,null,null,null,null],this._deviceSourceManager=null,this._scene=e||Oe.LastCreatedScene,this._scene}get meshUnderPointer(){return this._movePointerInfo&&(this._movePointerInfo._generatePickInfo(),this._movePointerInfo=null),this._pointerOverMesh}getMeshUnderPointerByPointerId(e){return this._meshUnderPointerId[e]||null}get unTranslatedPointer(){return new Fe(this._unTranslatedPointerX,this._unTranslatedPointerY)}get pointerX(){return this._pointerX}set pointerX(e){this._pointerX=e}get pointerY(){return this._pointerY}set pointerY(e){this._pointerY=e}_updatePointerPosition(e){let t=this._scene.getEngine().getInputElementClientRect();t&&(this._pointerX=e.clientX-t.left,this._pointerY=e.clientY-t.top,this._unTranslatedPointerX=this._pointerX,this._unTranslatedPointerY=this._pointerY)}_processPointerMove(e,t){let i=this._scene,r=i.getEngine(),s=r.getInputElement();s&&(s.tabIndex=r.canvasTabIndex,i.doNotHandleCursors||(s.style.cursor=i.defaultCursor)),this._setCursorAndPointerOverMesh(e,t,i);for(let l of i._pointerMoveStage){e=e||this._pickMove(t);let c=!!(e!=null&&e.pickedMesh);e=l.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,c,s)}let a=t.inputIndex>=vt.MouseWheelX&&t.inputIndex<=vt.MouseWheelZ?st.POINTERWHEEL:st.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Na(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Na(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&uh._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,q.Identity(),i.activeCamera)))}_addCameraPointerObserver(e,t){return this._cameraObserverCount++,this._scene.onPointerObservable.add(e,t)}_removeCameraPointerObserver(e){return this._cameraObserverCount--,this._scene.onPointerObservable.remove(e)}_checkForPicking(){return!!(this._scene.onPointerObservable.observers.length>this._cameraObserverCount||this._scene.onPointerPick)}_checkPrePointerObservable(e,t,i){let r=this._scene,s=new fx(i,t,this._unTranslatedPointerX,this._unTranslatedPointerY);return e&&(s.originalPickingInfo=e,s.ray=e.ray,t.pointerType==="xr-near"&&e.originMesh&&(s.nearInteractionPickingInfo=e)),r.onPrePointerObservable.notifyObservers(s,i),!!s.skipOnPointerObservable}_pickMove(e){let t=this._scene,i=t.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,t.pointerMovePredicate,t.pointerMoveFastCheck,t.cameraToUseForPointers,t.pointerMoveTrianglePredicate);return this._setCursorAndPointerOverMesh(i,e,t),i}_setCursorAndPointerOverMesh(e,t,i){let s=i.getEngine().getInputElement();if(e!=null&&e.pickedMesh){if(this.setPointerOverMesh(e.pickedMesh,t.pointerId,e,t),!i.doNotHandleCursors&&s&&this._pointerOverMesh){let a=this._pointerOverMesh._getActionManagerForTrigger();a&&a.hasPointerTriggers&&(s.style.cursor=a.hoverCursor||i.hoverCursor)}}else this.setPointerOverMesh(null,t.pointerId,e,t)}simulatePointerMove(e,t){let i=new PointerEvent("pointermove",t);i.inputIndex=vt.Move,!this._checkPrePointerObservable(e,i,st.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,st.POINTERDOWN)&&this._processPointerDown(e,i)}_processPointerDown(e,t){let i=this._scene;if(e!=null&&e.pickedMesh){this._pickedDownMesh=e.pickedMesh;let a=e.pickedMesh._getActionManagerForTrigger();if(a){if(a.hasPickTriggers)switch(a.processTrigger(5,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new an(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break}a.hasSpecificTrigger(8)&&window.setTimeout(()=>{let o=i.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,l=>l.isPickable&&l.isVisible&&l.isReady()&&l.actionManager&&l.actionManager.hasSpecificTrigger(8)&&l===this._pickedDownMesh,!1,i.cameraToUseForPointers);o!=null&&o.pickedMesh&&a&&this._activePointerIdsCount!==0&&Date.now()-this._startingPointerTime>n.LongPressDelay&&!this._isPointerSwiping()&&(this._startingPointerTime=0,a.processTrigger(8,an.CreateNew(o.pickedMesh,t)))},n.LongPressDelay)}}else for(let a of i._pointerDownStage)e=a.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,!1);let r,s=st.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Na(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Na(s,t,null,this),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(r,s)}_isPointerSwiping(){return this._isSwiping}simulatePointerUp(e,t,i){let r=new PointerEvent("pointerup",t);r.inputIndex=vt.Move;let s=new gx;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,st.POINTERUP)&&this._processPointerUp(e,r,s)}_processPointerUp(e,t,i){let r=this._scene;if(e!=null&&e.pickedMesh){if(this._pickedUpMesh=e.pickedMesh,this._pickedDownMesh===this._pickedUpMesh&&(r.onPointerPick&&r.onPointerPick(t,e),i.singleClick&&!i.ignore&&r.onPointerObservable.observers.length>this._cameraObserverCount)){let a=st.POINTERPICK,o=new Na(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,an.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,an.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,an.CreateNew(e.pickedMesh,t,e))}}else if(!i.ignore)for(let s of r._pointerUpStage)e=s.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,i.doubleClick);if(this._pickedDownMesh&&this._pickedDownMesh!==this._pickedUpMesh){let s=this._pickedDownMesh._getActionManagerForTrigger(16);s&&s.processTrigger(16,an.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Na(st.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,st.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,st.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=st.POINTERTAP:i.doubleClick&&(a=st.POINTERDOUBLETAP),a){let o=new Na(a,t,e);r.onPointerObservable.hasObservers()&&r.onPointerObservable.hasSpecificMask(a)&&r.onPointerObservable.notifyObservers(o,a)}}}}isPointerCaptured(e=0){return this._pointerCaptures[e]}attachControl(e=!0,t=!0,i=!0,r=null){let s=this._scene,a=s.getEngine();r||(r=a.getInputElement()),this._alreadyAttached&&this.detachControl(),r&&(this._alreadyAttachedTo=r),this._deviceSourceManager=new _x(a),this._initActionManager=o=>{if(!this._meshPickProceed){let l=s.skipPointerUpPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerUp?null:s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerUpPredicate,s.pointerUpFastCheck,s.cameraToUseForPointers,s.pointerUpTrianglePredicate);this._currentPickResult=l,l&&(o=l.hit&&l.pickedMesh?l.pickedMesh._getActionManagerForTrigger():null),this._meshPickProceed=!0}return o},this._delayedSimpleClick=(o,l,c)=>{if((Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay&&!this._doubleClickOccured||o!==this._previousButtonPressed)&&(this._doubleClickOccured=!1,l.singleClick=!0,l.ignore=!1,this._delayedClicks[o])){let f=this._delayedClicks[o].evt,d=st.POINTERTAP,h=new Na(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(h,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var _,p;let d=new gx;this._currentPickResult=null;let h=null,u=o.hasSpecificMask(st.POINTERPICK)||l.hasSpecificMask(st.POINTERPICK)||o.hasSpecificMask(st.POINTERTAP)||l.hasSpecificMask(st.POINTERTAP)||o.hasSpecificMask(st.POINTERDOUBLETAP)||l.hasSpecificMask(st.POINTERDOUBLETAP);!u&&oc&&(h=this._initActionManager(h,d),h&&(u=h.hasPickTriggers));let m=!1;if(u=u&&!this._isMultiTouchGesture,u){let g=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(st.POINTERDOUBLETAP)&&!l.hasSpecificMask(st.POINTERDOUBLETAP),v&&!oc.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(v=!h.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||g!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let S={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,g,d,f),n.DoubleClickDelay)};this._delayedClicks[g]=S}let x=o.hasSpecificMask(st.POINTERDOUBLETAP)||l.hasSpecificMask(st.POINTERDOUBLETAP);!x&&oc.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(x=h.hasSpecificTrigger(6))),x&&(g===this._previousButtonPressed&&Date.now()-this._previousStartingPointerTime{if(this._updatePointerPosition(o),!this._isSwiping&&this._swipeButtonPressed!==-1&&(this._isSwiping=Math.abs(this._startingPointerPosition.x-this._pointerX)>n.DragMovementThreshold||Math.abs(this._startingPointerPosition.y-this._pointerY)>n.DragMovementThreshold),a.isPointerLock&&a._verifyPointerLock(),this._checkPrePointerObservable(null,o,o.inputIndex>=vt.MouseWheelX&&o.inputIndex<=vt.MouseWheelZ?st.POINTERWHEEL:st.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new fs,o);return}s.pointerMovePredicate||(s.pointerMovePredicate=c=>c.isPickable&&c.isVisible&&c.isReady()&&c.isEnabled()&&(c.enablePointerMoveEvents||s.constantlyUpdateMeshUnderPointer||c._getActionManagerForTrigger()!==null)&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&c.layerMask)!==0));let l=s._registeredActions>0||s.constantlyUpdateMeshUnderPointer?this._pickMove(o):null;this._processPointerMove(l,o)},this._onPointerDown=o=>{var f;let l=this._activePointerIds.indexOf(-1);if(l===-1?this._activePointerIds.push(o.pointerId):this._activePointerIds[l]=o.pointerId,this._activePointerIdsCount++,this._pickedDownMesh=null,this._meshPickProceed=!1,n.ExclusiveDoubleClickMode){for(let d=0;dd.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),this._pickedDownMesh=null;let c;s.skipPointerDownPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerDown?c=new fs:c=s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerDownPredicate,s.pointerDownFastCheck,s.cameraToUseForPointers,s.pointerDownTrianglePredicate),this._processPointerDown(c,o)},this._onPointerUp=o=>{let l=this._activePointerIds.indexOf(o.pointerId);l!==-1&&(this._activePointerIds[l]=-1,this._activePointerIdsCount--,this._pickedUpMesh=null,this._meshPickProceed=!1,this._updatePointerPosition(o),s.preventDefaultOnPointerUp&&r&&(o.preventDefault(),r.focus()),this._initClickEvent(s.onPrePointerObservable,s.onPointerObservable,o,(c,f)=>{if(s.onPrePointerObservable.hasObservers()&&(this._skipPointerTap=!1,!c.ignore)){if(this._checkPrePointerObservable(null,o,st.POINTERUP)){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1),o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1);return}c.hasSwiped||(c.singleClick&&s.onPrePointerObservable.hasSpecificMask(st.POINTERTAP)&&this._checkPrePointerObservable(null,o,st.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(st.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,st.POINTERDOUBLETAP)&&(this._skipPointerTap=!0))}if(!this._pointerCaptures[o.pointerId]){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1);return}o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1),!(!s.cameraToUseForPointers&&!s.activeCamera)&&(s.pointerUpPredicate||(s.pointerUpPredicate=d=>d.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),!this._meshPickProceed&&(oc&&oc.HasTriggers||this._checkForPicking()||s.onPointerUp)&&this._initActionManager(null,c),f||(f=this._currentPickResult),this._processPointerUp(f,o,c),this._previousPickResult=this._currentPickResult,this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1))}))},this._onKeyDown=o=>{let l=xo.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new Dg(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new bm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,an.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=xo.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new Dg(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new bm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,an.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===Je.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===vt.LeftClick||l.inputIndex===vt.MiddleClick||l.inputIndex===vt.RightClick||l.inputIndex===vt.BrowserBack||l.inputIndex===vt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===vt.Move?this._onPointerMove(l):(l.inputIndex===vt.MouseWheelX||l.inputIndex===vt.MouseWheelY||l.inputIndex===vt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===Je.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===vt.LeftClick&&(t&&o.getInput(l.inputIndex)===1?(this._onPointerDown(l),this._activePointerIdsCount>1&&(this._isMultiTouchGesture=!0)):e&&o.getInput(l.inputIndex)===0&&(this._onPointerUp(l),this._activePointerIdsCount===0&&(this._isMultiTouchGesture=!1))),i&&l.inputIndex===vt.Move&&this._onPointerMove(l)}):o.deviceType===Je.Keyboard&&o.onInputChangedObservable.add(l=>{l.type==="keydown"?this._onKeyDown(l):l.type==="keyup"&&this._onKeyUp(l)})}),this._alreadyAttached=!0}detachControl(){this._alreadyAttached&&(this._deviceSourceManager.dispose(),this._deviceSourceManager=null,this._alreadyAttachedTo&&!this._scene.doNotHandleCursors&&(this._alreadyAttachedTo.style.cursor=this._scene.defaultCursor),this._alreadyAttached=!1,this._alreadyAttachedTo=null)}setPointerOverMesh(e,t=0,i,r){if(this._meshUnderPointerId[t]===e&&(!e||!e._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting))return;let s=this._meshUnderPointerId[t],a;s&&(a=s._getActionManagerForTrigger(10),a&&a.processTrigger(10,new an(s,this._pointerX,this._pointerY,e,r,{pointerId:t}))),e?(this._meshUnderPointerId[t]=e,this._pointerOverMesh=e,a=e._getActionManagerForTrigger(9),a&&a.processTrigger(9,new an(e,this._pointerX,this._pointerY,e,r,{pointerId:t,pickResult:i}))):(delete this._meshUnderPointerId[t],this._pointerOverMesh=null),this._scene.onMeshUnderPointerUpdatedObservable.hasObservers()&&this._scene.onMeshUnderPointerUpdatedObservable.notifyObservers({mesh:e,pointerId:t})}getPointerOverMesh(){return this.meshUnderPointer}_invalidateMesh(e){this._pointerOverMesh===e&&(this._pointerOverMesh=null),this._pickedDownMesh===e&&(this._pickedDownMesh=null),this._pickedUpMesh===e&&(this._pickedUpMesh=null);for(let t in this._meshUnderPointerId)this._meshUnderPointerId[t]===e&&delete this._meshUnderPointerId[t]}};Gn.DragMovementThreshold=10;Gn.LongPressDelay=500;Gn.DoubleClickDelay=300;Gn.ExclusiveDoubleClickMode=!1});var ul,oP=I(()=>{Yl();ul=class n{get min(){return this._min}get max(){return this._max}get average(){return this._average}get lastSecAverage(){return this._lastSecAverage}get current(){return this._current}get total(){return this._totalAccumulated}get count(){return this._totalValueCount}constructor(){this._startMonitoringTime=0,this._min=0,this._max=0,this._average=0,this._lastSecAverage=0,this._current=0,this._totalValueCount=0,this._totalAccumulated=0,this._lastSecAccumulated=0,this._lastSecTime=0,this._lastSecValueCount=0}fetchNewFrame(){this._totalValueCount++,this._current=0,this._lastSecValueCount++}addCount(e,t){n.Enabled&&(this._current+=e,t&&this._fetchResult())}beginMonitoring(){n.Enabled&&(this._startMonitoringTime=Er.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=Er.Now;this._current=t-this._startMonitoringTime,e&&this._fetchResult()}endFrame(){this._fetchResult()}_fetchResult(){this._totalAccumulated+=this._current,this._lastSecAccumulated+=this._current,this._min=Math.min(this._min,this._current),this._max=Math.max(this._max,this._current),this._average=this._totalAccumulated/this._totalValueCount;let e=Er.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};ul.Enabled=!0});var lc,vx=I(()=>{lc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};lc._UniqueIdCounter=1});var Ex,yG=I(()=>{Ex=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var Ile,yle,CG,ei,Bs=I(()=>{yi();Yl();hi();So();JV();Sf();ke();Mg();Af();Ig();tP();$A();Pg();ex();Rm();ba();Ni();un();IG();oP();Ht();VA();vx();Jl();Tg();ol();yG();Pt();Yi();sl();Ile=new Ii,yle=new Ii;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(CG||(CG={}));ei=class n{static DefaultMaterialFactory(e){throw Qe("StandardMaterial")}static CollisionCoordinatorFactory(){throw Qe("DefaultCollisionCoordinator")}get clearColor(){return this._clearColor}set clearColor(e){e!==this._clearColor&&(this._clearColor=e,this.onClearColorChangedObservable.notifyObservers(this._clearColor))}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}get performancePriority(){return this._performancePriority}set performancePriority(e){if(e!==this._performancePriority){switch(this._performancePriority=e,e){case 0:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!1,this.autoClear=!0;break;case 1:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!0,this.autoClear=!1;break;case 2:this.skipFrustumClipping=!0,this._renderingManager.maintainStateBetweenFrames=!0,this.skipPointerMovePicking=!0,this.autoClear=!1;break}this.onScenePerformancePriorityChangedObservable.notifyObservers(e)}}set forceWireframe(e){this._forceWireframe!==e&&(this._forceWireframe=e,this.markAllMaterialsAsDirty(16))}get forceWireframe(){return this._forceWireframe}set skipFrustumClipping(e){this._skipFrustumClipping!==e&&(this._skipFrustumClipping=e)}get skipFrustumClipping(){return this._skipFrustumClipping}set forcePointsCloud(e){this._forcePointsCloud!==e&&(this._forcePointsCloud=e,this.markAllMaterialsAsDirty(16))}get forcePointsCloud(){return this._forcePointsCloud}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture!==e&&(this._environmentTexture=e,this.onEnvironmentTextureChangedObservable.notifyObservers(e),this.markAllMaterialsAsDirty(1))}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}get animationPropertiesOverride(){return this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set beforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),e&&(this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e))}set afterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),e&&(this._onAfterRenderObserver=this.onAfterRenderObservable.add(e))}set beforeCameraRender(e){this._onBeforeCameraRenderObserver&&this.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver),this._onBeforeCameraRenderObserver=this.onBeforeCameraRenderObservable.add(e)}set afterCameraRender(e){this._onAfterCameraRenderObserver&&this.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver),this._onAfterCameraRenderObserver=this.onAfterCameraRenderObservable.add(e)}get pointerDownPredicate(){return this._pointerPickingConfiguration.pointerDownPredicate}set pointerDownPredicate(e){this._pointerPickingConfiguration.pointerDownPredicate=e}get pointerUpPredicate(){return this._pointerPickingConfiguration.pointerUpPredicate}set pointerUpPredicate(e){this._pointerPickingConfiguration.pointerUpPredicate=e}get pointerMovePredicate(){return this._pointerPickingConfiguration.pointerMovePredicate}set pointerMovePredicate(e){this._pointerPickingConfiguration.pointerMovePredicate=e}get pointerDownFastCheck(){return this._pointerPickingConfiguration.pointerDownFastCheck}set pointerDownFastCheck(e){this._pointerPickingConfiguration.pointerDownFastCheck=e}get pointerUpFastCheck(){return this._pointerPickingConfiguration.pointerUpFastCheck}set pointerUpFastCheck(e){this._pointerPickingConfiguration.pointerUpFastCheck=e}get pointerMoveFastCheck(){return this._pointerPickingConfiguration.pointerMoveFastCheck}set pointerMoveFastCheck(e){this._pointerPickingConfiguration.pointerMoveFastCheck=e}get skipPointerMovePicking(){return this._pointerPickingConfiguration.skipPointerMovePicking}set skipPointerMovePicking(e){this._pointerPickingConfiguration.skipPointerMovePicking=e}get skipPointerDownPicking(){return this._pointerPickingConfiguration.skipPointerDownPicking}set skipPointerDownPicking(e){this._pointerPickingConfiguration.skipPointerDownPicking=e}get skipPointerUpPicking(){return this._pointerPickingConfiguration.skipPointerUpPicking}set skipPointerUpPicking(e){this._pointerPickingConfiguration.skipPointerUpPicking=e}get unTranslatedPointer(){return this._inputManager.unTranslatedPointer}static get DragMovementThreshold(){return Gn.DragMovementThreshold}static set DragMovementThreshold(e){Gn.DragMovementThreshold=e}static get LongPressDelay(){return Gn.LongPressDelay}static set LongPressDelay(e){Gn.LongPressDelay=e}static get DoubleClickDelay(){return Gn.DoubleClickDelay}static set DoubleClickDelay(e){Gn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return Gn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){Gn.ExclusiveDoubleClickMode=e}get _eyePosition(){var e,t,i;return(i=(t=this._forcedViewPosition)!=null?t:(e=this.activeCamera)==null?void 0:e.globalPosition)!=null?i:b.ZeroReadOnly}bindEyePosition(e,t="vEyePosition",i=!1){let r=this._eyePosition,s=this.useRightHandedSystem===(this._mirroredCameraPosition!=null),a=this.floatingOriginOffset,o=Ile.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,yle);return e&&(i?e.setFloat3(t,l.x,l.y,l.z):e.setVector4(t,l)),o}finalizeSceneUbo(){let e=this.getSceneUniformBuffer(),t=this.bindEyePosition(null),i=this.floatingOriginOffset;return e.updateFloat4("vEyePosition",t.x-i.x,t.y-i.y,t.z-i.z,t.w),e.update(),e}set useRightHandedSystem(e){this._useRightHandedSystem!==e&&(this._useRightHandedSystem=e,this.markAllMaterialsAsDirty(16))}get useRightHandedSystem(){return this._useRightHandedSystem}setStepId(e){this._currentStepId=e}getStepId(){return this._currentStepId}getInternalStep(){return this._currentInternalStep}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAllMaterialsAsDirty(16))}get fogEnabled(){return this._fogEnabled}set fogMode(e){this._fogMode!==e&&(this._fogMode=e,this.markAllMaterialsAsDirty(16))}get fogMode(){return this._fogMode}get prePass(){return!!this.prePassRenderer&&this.prePassRenderer.defaultRT.enabled}set shadowsEnabled(e){this._shadowsEnabled!==e&&(this._shadowsEnabled=e,this.markAllMaterialsAsDirty(2))}get shadowsEnabled(){return this._shadowsEnabled}set lightsEnabled(e){this._lightsEnabled!==e&&(this._lightsEnabled=e,this.markAllMaterialsAsDirty(2))}get lightsEnabled(){return this._lightsEnabled}get activeCameras(){return this._activeCameras}set activeCameras(e){this._unObserveActiveCameras&&(this._unObserveActiveCameras(),this._unObserveActiveCameras=null),e&&(this._unObserveActiveCameras=BA(e,()=>{this.onActiveCamerasChanged.notifyObservers(this)})),this._activeCameras=e}get activeCamera(){return this._activeCamera}set activeCamera(e){e!==this._activeCamera&&(this._activeCamera=e,this.onActiveCameraChanged.notifyObservers(this))}get _hasDefaultMaterial(){return n.DefaultMaterialFactory!==n._OriginalDefaultMaterialFactory}get defaultMaterial(){return this._defaultMaterial||(this._defaultMaterial=n.DefaultMaterialFactory(this)),this._defaultMaterial}set defaultMaterial(e){this._defaultMaterial=e}set texturesEnabled(e){this._texturesEnabled!==e&&(this._texturesEnabled=e,this.markAllMaterialsAsDirty(1))}get texturesEnabled(){return this._texturesEnabled}get frameGraph(){return this._frameGraph}set frameGraph(e){if(this._frameGraph){this._frameGraph=e,e||(this.customRenderFunction=this._currentCustomRenderFunction);return}this._frameGraph=e,e&&(this._currentCustomRenderFunction=this.customRenderFunction,this.customRenderFunction=this._renderWithFrameGraph,this.activeCamera=null)}set skeletonsEnabled(e){this._skeletonsEnabled!==e&&(this._skeletonsEnabled=e,this.markAllMaterialsAsDirty(8))}get skeletonsEnabled(){return this._skeletonsEnabled}get collisionCoordinator(){return this._collisionCoordinator||(this._collisionCoordinator=n.CollisionCoordinatorFactory(),this._collisionCoordinator.init(this)),this._collisionCoordinator}get renderingManager(){return this._renderingManager}get frustumPlanes(){return this._frustumPlanes}_registerTransientComponents(){if(this._transientComponents.length>0){for(let e of this._transientComponents)e.register();this._transientComponents.length=0}}_addComponent(e){this._components.push(e),this._transientComponents.push(e);let t=e;t.addFromContainer&&t.serialize&&this._serializableComponents.push(t)}_getComponent(e){for(let t of this._components)if(t.name===e)return t;return null}get uniqueId(){return this._uniqueId}constructor(e,t){this._inputManager=new Gn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new lt(.2,.2,.3,1),this.onClearColorChangedObservable=new ie,this.ambientColor=new pe(0,0,0),this.environmentIntensity=1,this.iblIntensity=1,this._performancePriority=0,this.onScenePerformancePriorityChangedObservable=new ie,this._forceWireframe=!1,this._skipFrustumClipping=!1,this._forcePointsCloud=!1,this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.objectRenderers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.effectLayers=[],this.sounds=null,this.layers=[],this.lensFlareSystems=[],this.proceduralTextures=[],this.animationsEnabled=!0,this._animationPropertiesOverride=null,this.useConstantAnimationDeltaTime=!1,this.constantlyUpdateMeshUnderPointer=!1,this.hoverCursor="pointer",this.defaultCursor="",this.doNotHandleCursors=!1,this.preventDefaultOnPointerDown=!0,this.preventDefaultOnPointerUp=!0,this.metadata=null,this.reservedDataStore=null,this.disableOfflineSupportExceptionRules=[],this.onDisposeObservable=new ie,this._onDisposeObserver=null,this.onBeforeRenderObservable=new ie,this._onBeforeRenderObserver=null,this.onAfterRenderObservable=new ie,this.onAfterRenderCameraObservable=new ie,this._onAfterRenderObserver=null,this.onBeforeAnimationsObservable=new ie,this.onAfterAnimationsObservable=new ie,this.onBeforeDrawPhaseObservable=new ie,this.onAfterDrawPhaseObservable=new ie,this.onReadyObservable=new ie,this.onBeforeCameraRenderObservable=new ie,this._onBeforeCameraRenderObserver=null,this.onAfterCameraRenderObservable=new ie,this._onAfterCameraRenderObserver=null,this.onBeforeActiveMeshesEvaluationObservable=new ie,this.onAfterActiveMeshesEvaluationObservable=new ie,this.onBeforeParticlesRenderingObservable=new ie,this.onAfterParticlesRenderingObservable=new ie,this.onDataLoadedObservable=new ie,this.onNewCameraAddedObservable=new ie,this.onCameraRemovedObservable=new ie,this.onNewLightAddedObservable=new ie,this.onLightRemovedObservable=new ie,this.onNewGeometryAddedObservable=new ie,this.onGeometryRemovedObservable=new ie,this.onNewTransformNodeAddedObservable=new ie,this.onTransformNodeRemovedObservable=new ie,this.onNewMeshAddedObservable=new ie,this.onMeshRemovedObservable=new ie,this.onNewSkeletonAddedObservable=new ie,this.onSkeletonRemovedObservable=new ie,this.onNewParticleSystemAddedObservable=new ie,this.onParticleSystemRemovedObservable=new ie,this.onNewAnimationGroupAddedObservable=new ie,this.onAnimationGroupRemovedObservable=new ie,this.onNewMaterialAddedObservable=new ie,this.onNewMultiMaterialAddedObservable=new ie,this.onMaterialRemovedObservable=new ie,this.onMultiMaterialRemovedObservable=new ie,this.onNewTextureAddedObservable=new ie,this.onTextureRemovedObservable=new ie,this.onNewFrameGraphAddedObservable=new ie,this.onFrameGraphRemovedObservable=new ie,this.onNewObjectRendererAddedObservable=new ie,this.onObjectRendererRemovedObservable=new ie,this.onNewPostProcessAddedObservable=new ie,this.onPostProcessRemovedObservable=new ie,this.onNewEffectLayerAddedObservable=new ie,this.onEffectLayerRemovedObservable=new ie,this.onBeforeRenderTargetsRenderObservable=new ie,this.onAfterRenderTargetsRenderObservable=new ie,this.onBeforeStepObservable=new ie,this.onAfterStepObservable=new ie,this.onActiveCameraChanged=new ie,this.onActiveCamerasChanged=new ie,this.onBeforeRenderingGroupObservable=new ie,this.onAfterRenderingGroupObservable=new ie,this.onMeshImportedObservable=new ie,this.onAnimationFileImportedObservable=new ie,this.onEnvironmentTextureChangedObservable=new ie,this.onMeshUnderPointerUpdatedObservable=new ie,this._registeredForLateAnimationBindings=new Eo(256),this._pointerPickingConfiguration=new Ex,this.onPrePointerObservable=new ie,this.onPointerObservable=new ie,this.onPreKeyboardObservable=new ie,this.onKeyboardObservable=new ie,this._useRightHandedSystem=!1,this._timeAccumulator=0,this._currentStepId=0,this._currentInternalStep=0,this._fogEnabled=!0,this._fogMode=n.FOGMODE_NONE,this.fogColor=new pe(.2,.2,.3),this.fogDensity=.1,this.fogStart=0,this.fogEnd=1e3,this.needsPreviousWorldMatrices=!1,this._shadowsEnabled=!0,this._lightsEnabled=!0,this._unObserveActiveCameras=null,this._texturesEnabled=!0,this._frameGraph=null,this.frameGraphs=[],this.physicsEnabled=!0,this.particlesEnabled=!0,this.spritesEnabled=!0,this._skeletonsEnabled=!0,this.lensFlaresEnabled=!0,this.collisionsEnabled=!0,this.gravity=new b(0,-9.807,0),this.postProcessesEnabled=!0,this.renderTargetsEnabled=!0,this.dumpNextRenderTargets=!1,this.customRenderTargets=[],this.importedMeshesFiles=[],this.probesEnabled=!0,this._meshesForIntersections=new Eo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new ul,this._activeIndices=new ul,this._activeParticles=new ul,this._activeBones=new ul,this._animationTime=0,this.animationTimeScale=1,this._renderId=0,this._frameId=0,this._executeWhenReadyTimeoutId=null,this._intermediateRendering=!1,this._defaultFrameBufferCleared=!1,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1,this._toBeDisposed=new Array(256),this._activeRequests=new Array,this._pendingData=[],this._isDisposed=!1,this._isReadyChecks=[],this.dispatchAllSubMeshesOfActiveMeshes=!1,this._activeMeshes=new Vi(256),this._processedMaterials=new Vi(256),this._renderTargets=new Eo(256),this._materialsRenderTargets=new Eo(256),this._activeParticleSystems=new Vi(256),this._activeSkeletons=new Eo(32),this._softwareSkinnedMeshes=new Eo(32),this._activeAnimatables=new Array,this._transformMatrix=q.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=cr.Create(),this._beforeClearStage=cr.Create(),this._beforeRenderTargetClearStage=cr.Create(),this._gatherRenderTargetsStage=cr.Create(),this._gatherActiveCameraRenderTargetsStage=cr.Create(),this._isReadyForMeshStage=cr.Create(),this._beforeEvaluateActiveMeshStage=cr.Create(),this._evaluateSubMeshStage=cr.Create(),this._preActiveMeshStage=cr.Create(),this._cameraDrawRenderTargetStage=cr.Create(),this._beforeCameraDrawStage=cr.Create(),this._beforeRenderTargetDrawStage=cr.Create(),this._beforeRenderingGroupDrawStage=cr.Create(),this._beforeRenderingMeshStage=cr.Create(),this._afterRenderingMeshStage=cr.Create(),this._afterRenderingGroupDrawStage=cr.Create(),this._afterCameraDrawStage=cr.Create(),this._afterCameraPostProcessStage=cr.Create(),this._afterRenderTargetDrawStage=cr.Create(),this._afterRenderTargetPostProcessStage=cr.Create(),this._afterRenderStage=cr.Create(),this._pointerMoveStage=cr.Create(),this._pointerDownStage=cr.Create(),this._pointerUpStage=cr.Create(),this._geometriesByUniqueId=null,this._uniqueId=0,this._defaultMeshCandidates={data:[],length:0},this._defaultSubMeshCandidates={data:[],length:0},this.onReadyTimeoutObservable=new ie,this.onReadyTimeoutDuration=120*1e3,this._timeoutChecksStartTime=0,this._floatingOriginScene=void 0,this._preventFreeActiveMeshesAndRenderingGroups=!1,this._activeMeshesFrozen=!1,this._activeMeshesFrozenButKeepClipping=!1,this._skipEvaluateActiveMeshesCompletely=!1,this._freezeActiveMeshesCancel=null,this._useCurrentFrameBuffer=!1,this._allowPostProcessClearColor=!0,this.getDeterministicFrameTime=()=>this._engine.getTimeStep(),this._getFloatingOriginScene=()=>this._floatingOriginScene,this._registeredActions=0,this._blockMaterialDirtyMechanism=!1,this._perfCollector=null,this.activeCameras=[],this._uniqueId=this.getUniqueId();let i={useGeometryUniqueIdsMap:!0,useMaterialMeshMap:!0,useClonedMeshMap:!0,virtual:!1,defaultCameraLayerMask:268435455,defaultRenderableLayerMask:268435455,...t};this.defaultCameraLayerMask=i.defaultCameraLayerMask,this.defaultRenderableLayerMask=i.defaultRenderableLayerMask,e=this._engine=e||Oe.LastCreatedEngine,i.virtual?e._virtualScenes.push(this):(Oe._LastCreatedScene=this,e.scenes.push(this)),(e.getCreationOptions().useLargeWorldRendering||t!=null&&t.useFloatingOrigin)&&(hG(),this._floatingOriginScene=this,Oa.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new ya(this),ic&&(this.postProcessManager=new ic(this)),ur()&&this.attachControl(),this._createUbo(),kt&&(this._imageProcessingConfiguration=new kt),this.setDefaultCandidateProviders(),i.useGeometryUniqueIdsMap&&(this._geometriesByUniqueId={}),this.useMaterialMeshMap=i.useMaterialMeshMap,this.useClonedMeshMap=i.useClonedMeshMap,(!t||!t.virtual)&&e.onNewSceneAddedObservable.notifyObservers(this)}getClassName(){return"Scene"}_getDefaultMeshCandidates(){return this._defaultMeshCandidates.data=this.meshes,this._defaultMeshCandidates.length=this.meshes.length,this._defaultMeshCandidates}_getDefaultSubMeshCandidates(e){return this._defaultSubMeshCandidates.data=e.subMeshes,this._defaultSubMeshCandidates.length=e.subMeshes.length,this._defaultSubMeshCandidates}setDefaultCandidateProviders(){this.getActiveMeshCandidates=()=>this._getDefaultMeshCandidates(),this.getActiveSubMeshCandidates=e=>this._getDefaultSubMeshCandidates(e),this.getIntersectingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e),this.getCollidingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e)}get meshUnderPointer(){return this._inputManager.meshUnderPointer}get pointerX(){return this._inputManager.pointerX}set pointerX(e){this._inputManager.pointerX=e}get pointerY(){return this._inputManager.pointerY}set pointerY(e){this._inputManager.pointerY=e}getCachedMaterial(){return this._cachedMaterial}getCachedEffect(){return this._cachedEffect}getCachedVisibility(){return this._cachedVisibility}isCachedMaterialInvalid(e,t,i=1){return this._cachedEffect!==t||this._cachedMaterial!==e||this._cachedVisibility!==i}getEngine(){return this._engine}getTotalVertices(){return this._totalVertices.current}get totalVerticesPerfCounter(){return this._totalVertices}getActiveIndices(){return this._activeIndices.current}get totalActiveIndicesPerfCounter(){return this._activeIndices}getActiveParticles(){return this._activeParticles.current}get activeParticlesPerfCounter(){return this._activeParticles}getActiveBones(){return this._activeBones.current}get activeBonesPerfCounter(){return this._activeBones}getActiveMeshes(){return this._activeMeshes}getAnimationRatio(){return this._animationRatio!==void 0?this._animationRatio:1}getRenderId(){return this._renderId}getFrameId(){return this._frameId}incrementRenderId(){this._renderId++}_createUbo(){this.setSceneUniformBuffer(this.createSceneUniformBuffer())}simulatePointerMove(e,t){return this._inputManager.simulatePointerMove(e,t),this}simulatePointerDown(e,t){return this._inputManager.simulatePointerDown(e,t),this}simulatePointerUp(e,t,i){return this._inputManager.simulatePointerUp(e,t,i),this}isPointerCaptured(e=0){return this._inputManager.isPointerCaptured(e)}attachControl(e=!0,t=!0,i=!0){this._inputManager.attachControl(e,t,i)}detachControl(){this._inputManager.detachControl()}isReady(e=!0){var a,o,l;if(this._isDisposed)return!1;let t,i=this.getEngine(),r=i.currentRenderPassId;i.currentRenderPassId=(o=(a=this.activeCamera)==null?void 0:a.renderPassId)!=null?o:r;let s=!0;for(this._pendingData.length>0&&(s=!1),(l=this.prePassRenderer)==null||l.update(),this.useOrderIndependentTransparency&&this.depthPeelingRenderer&&s&&(s=this.depthPeelingRenderer.isReady()),e&&(this._processedMaterials.reset(),this._materialsRenderTargets.reset()),t=0;t0;for(let h of this._isReadyForMeshStage)h.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let h of c.subMeshes){let u=h.getMaterial();u&&u.hasRenderTargetTextures&&u.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(u)===-1&&(this._processedMaterials.push(u),this._materialsRenderTargets.concatWithNoDuplicate(u.getRenderTargetTextures()))}else d.hasRenderTargetTextures&&d.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(d)===-1&&(this._processedMaterials.push(d),this._materialsRenderTargets.concatWithNoDuplicate(d.getRenderTargetTextures()))}if(e){for(t=0;t0)for(let c of this.activeCameras)c.isReady(!0)||(s=!1);else this.activeCamera&&(this.activeCamera.isReady(!0)||(s=!1));for(let c of this.particleSystems)c.isReady()||(s=!1);if(this.proceduralTexturesEnabled)for(let c of this.proceduralTextures)c.isReady()||(s=!1);if(this.layers)for(let c of this.layers)c.isReady()||(s=!1);if(this.effectLayers)for(let c of this.effectLayers)c.isLayerReady()||(s=!1);for(let c of this._isReadyChecks)c.isReady()||(s=!1);return i.areAllEffectsReady()||(s=!1),i.currentRenderPassId=r,s}resetCachedMaterial(){this._cachedMaterial=null,this._cachedEffect=null,this._cachedVisibility=null}registerBeforeRender(e){this.onBeforeRenderObservable.add(e)}unregisterBeforeRender(e){this.onBeforeRenderObservable.removeCallback(e)}registerAfterRender(e){this.onAfterRenderObservable.add(e)}unregisterAfterRender(e){this.onAfterRenderObservable.removeCallback(e)}_executeOnceBeforeRender(e){let t=()=>{e(),setTimeout(()=>{this.unregisterBeforeRender(t)})};this.registerBeforeRender(t)}executeOnceBeforeRender(e,t){t!==void 0?setTimeout(()=>{this._executeOnceBeforeRender(e)},t):this._executeOnceBeforeRender(e)}addPendingData(e){this._pendingData.push(e)}removePendingData(e){let t=this.isLoading,i=this._pendingData.indexOf(e);i!==-1&&this._pendingData.splice(i,1),t&&!this.isLoading&&this.onDataLoadedObservable.notifyObservers(this)}getWaitingItemsCount(){return this._pendingData.length}get isLoading(){return this._pendingData.length>0}addIsReadyCheck(e){this._isReadyChecks.indexOf(e)===-1&&this._isReadyChecks.push(e)}removeIsReadyCheck(e){let t=this._isReadyChecks.indexOf(e);t!==-1&&this._isReadyChecks.splice(t,1)}executeWhenReady(e,t=!1){this.onReadyObservable.addOnce(e),this._executeWhenReadyTimeoutId===null&&this._checkIsReady(t)}async whenReadyAsync(e=!1){return await new Promise(t=>{this.executeWhenReady(()=>{t()},e)})}_clearReadynessChecksData(){this._timeoutChecksStartTime=0,this.onReadyTimeoutObservable.clear(),this.onReadyObservable.clear(),this._executeWhenReadyTimeoutId=null}_checkIsReady(e=!1){if(this._registerTransientComponents(),this._timeoutChecksStartTime===0)this._timeoutChecksStartTime=Er.Now;else if(this.onReadyTimeoutDuration>0&&Er.Now-this._timeoutChecksStartTime>this.onReadyTimeoutDuration){this.onReadyTimeoutObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this.isReady(e)){this.onReadyObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this._isDisposed){this._clearReadynessChecksData();return}this._executeWhenReadyTimeoutId=setTimeout(()=>{this.incrementRenderId(),this._checkIsReady(e)},100)}get animatables(){return this._activeAnimatables}resetLastAnimationTimeFrame(){this._animationTimeLast=Er.Now}getViewMatrix(){return this._viewMatrix}getProjectionMatrix(){return this._projectionMatrix}getInverseProjectionMatrix(){return this._inverseProjectionMatrix}getTransformMatrix(){return this._transformMatrix}setTransformMatrix(e,t,i,r){this._multiviewSceneUboIsActive=!!(i&&r&&this._multiviewSceneUbo),!(this._viewUpdateFlag===e.updateFlag&&this._projectionUpdateFlag===t.updateFlag)&&(this._viewUpdateFlag=e.updateFlag,this._projectionUpdateFlag=t.updateFlag,this._viewMatrix=e,this._projectionMatrix=t,this._inverseProjectionMatrix||(this._inverseProjectionMatrix=new q),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?pf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=pf.GetPlanes(this._transformMatrix),this._multiviewSceneUboIsActive&&this._multiviewSceneUbo.useUbo?this._updateMultiviewUbo(i,r):this._sceneUbo.useUbo&&(this._sceneUbo.updateMatrix("viewProjection",this._transformMatrix),this._sceneUbo.updateMatrix("view",this._viewMatrix),this._sceneUbo.updateMatrix("projection",this._projectionMatrix),this._sceneUbo.updateMatrix("inverseProjection",this._inverseProjectionMatrix)))}getSceneUniformBuffer(){return this._multiviewSceneUboIsActive&&this._multiviewSceneUbo?this._multiviewSceneUbo:this._sceneUbo}createSceneUniformBuffer(e,t){let i=typeof t=="boolean"?t:t==null?void 0:t.trackUBOsInFrame,r=new mr(this._engine,void 0,!1,e!=null?e:"scene",void 0,i);return r.addUniform("viewProjection",16),r.addUniform("view",16),r.addUniform("projection",16),r.addUniform("vEyePosition",4),r.addUniform("inverseProjection",16),r}setSceneUniformBuffer(e){this._sceneUbo=e,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1}get floatingOriginMode(){return this._floatingOriginScene!==void 0}get floatingOriginOffset(){return this.floatingOriginMode?this._eyePosition:b.ZeroReadOnly}getUniqueId(){return lc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),_e.SetImmediate(()=>{this.onNewMeshAddedObservable.notifyObservers(e)}),t)){let i=e.getChildMeshes();for(let r of i)this.addMesh(r)}}removeMesh(e,t=!1){let i=this.meshes.indexOf(e);if(i!==-1&&(this.meshes.splice(i,1),e.parent||e._removeFromSceneRootNodes()),this._inputManager._invalidateMesh(e),this.onMeshRemovedObservable.notifyObservers(e),t){let r=e.getChildMeshes();for(let s of r)this.removeMesh(s)}return i}addTransformNode(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneTransformNodesArray!==-1||(e._indexInSceneTransformNodesArray=this.transformNodes.length,this.transformNodes.push(e),e.parent||e._addToSceneRootNodes(),this.onNewTransformNodeAddedObservable.notifyObservers(e))}removeTransformNode(e){let t=e._indexInSceneTransformNodesArray;if(t!==-1){if(t!==this.transformNodes.length-1){let i=this.transformNodes[this.transformNodes.length-1];this.transformNodes[t]=i,i._indexInSceneTransformNodesArray=t}e._indexInSceneTransformNodesArray=-1,this.transformNodes.pop(),e.parent||e._removeFromSceneRootNodes()}return this.onTransformNodeRemovedObservable.notifyObservers(e),t}removeSkeleton(e){let t=this.skeletons.indexOf(e);return t!==-1&&(this.skeletons.splice(t,1),this.onSkeletonRemovedObservable.notifyObservers(e),this._executeActiveContainerCleanup(this._activeSkeletons)),t}removeMorphTargetManager(e){let t=this.morphTargetManagers.indexOf(e);return t!==-1&&this.morphTargetManagers.splice(t,1),t}removeLight(e){let t=this.lights.indexOf(e);if(t!==-1){for(let i of this.meshes)i._removeLightSource(e,!1);this.lights.splice(t,1),this.sortLightsByPriority(),e.parent||e._removeFromSceneRootNodes(),this.onLightRemovedObservable.notifyObservers(e)}return t}removeCamera(e){let t=this.cameras.indexOf(e);if(t!==-1&&(this.cameras.splice(t,1),e.parent||e._removeFromSceneRootNodes()),this.activeCameras){let i=this.activeCameras.indexOf(e);i!==-1&&this.activeCameras.splice(i,1)}return this.activeCamera===e&&(this.cameras.length>0?this.activeCamera=this.cameras[0]:this.activeCamera=null),this.onCameraRemovedObservable.notifyObservers(e),t}removeParticleSystem(e){let t=this.particleSystems.indexOf(e);return t!==-1&&(this.particleSystems.splice(t,1),this._executeActiveContainerCleanup(this._activeParticleSystems)),this.onParticleSystemRemovedObservable.notifyObservers(e),t}removeAnimation(e){let t=this.animations.indexOf(e);return t!==-1&&this.animations.splice(t,1),t}stopAnimation(e,t,i){}removeAnimationGroup(e){let t=this.animationGroups.indexOf(e);return t!==-1&&this.animationGroups.splice(t,1),this.onAnimationGroupRemovedObservable.notifyObservers(e),t}removeMultiMaterial(e){let t=this.multiMaterials.indexOf(e);return t!==-1&&this.multiMaterials.splice(t,1),this.onMultiMaterialRemovedObservable.notifyObservers(e),t}removeMaterial(e){let t=e._indexInSceneMaterialArray;if(t!==-1&&t{this.onNewLightAddedObservable.notifyObservers(e)})}}sortLightsByPriority(){this.requireLightSorting&&this.lights.sort(Xt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),_e.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),_e.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),_e.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),_e.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),_e.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),_e.SetImmediate(()=>{this.onNewMaterialAddedObservable.notifyObservers(e)}))}addMorphTargetManager(e){this._blockEntityCollection||this.morphTargetManagers.push(e)}addGeometry(e){this._blockEntityCollection||(this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=this.geometries.length),this.geometries.push(e))}addActionManager(e){this.actionManagers.push(e)}addTexture(e){this._blockEntityCollection||(this.textures.push(e),this.onNewTextureAddedObservable.notifyObservers(e))}addFrameGraph(e){this.frameGraphs.push(e),_e.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),_e.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),_e.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),_e.SetImmediate(()=>{this.onNewEffectLayerAddedObservable.notifyObservers(e)}))}switchActiveCamera(e,t=!0){this._engine.getInputElement()&&(this.activeCamera&&this.activeCamera.detachControl(),this.activeCamera=e,t&&e.attachControl())}setActiveCameraById(e){let t=this.getCameraById(e);return t?(this.activeCamera=t,t):null}setActiveCameraByName(e){let t=this.getCameraByName(e);return t?(this.activeCamera=t,t):null}getAnimationGroupByName(e){for(let t=0;ti.uniqueId===e)}getMaterialById(e,t=!1){return this._getMaterial(t,i=>i.id===e)}getMaterialByName(e,t=!1){return this._getMaterial(t,i=>i.name===e)}getLastMaterialById(e,t=!1){for(let i=this.materials.length-1;i>=0;i--)if(this.materials[i].id===e)return this.materials[i];if(t){for(let i=this.multiMaterials.length-1;i>=0;i--)if(this.multiMaterials[i].id===e)return this.multiMaterials[i]}return null}getTextureByUniqueId(e){for(let t=0;t{this.onNewGeometryAddedObservable.notifyObservers(e)}),!0)}removeGeometry(e){let t;if(this._geometriesByUniqueId){if(t=this._geometriesByUniqueId[e.uniqueId],t===void 0)return!1}else if(t=this.geometries.indexOf(e),t<0)return!1;if(t!==this.geometries.length-1){let i=this.geometries[this.geometries.length-1];i&&(this.geometries[t]=i,this._geometriesByUniqueId&&(this._geometriesByUniqueId[i.uniqueId]=t))}return this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=void 0),this.geometries.pop(),this.onGeometryRemovedObservable.notifyObservers(e),!0}getGeometries(){return this.geometries}getMeshById(e){for(let t=0;t=0;t--)if(this.meshes[t].id===e)return this.meshes[t];return null}getLastTransformNodeById(e){for(let t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];return null}getLastEntryById(e){let t;for(t=this.meshes.length-1;t>=0;t--)if(this.meshes[t].id===e)return this.meshes[t];for(t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];for(t=this.cameras.length-1;t>=0;t--)if(this.cameras[t].id===e)return this.cameras[t];for(t=this.lights.length-1;t>=0;t--)if(this.lights[t].id===e)return this.lights[t];for(t=this.skeletons.length-1;t>=0;t--){let i=this.skeletons[t];for(let r=i.bones.length-1;r>=0;r--)if(i.bones[r].id===e)return i.bones[r]}return null}getNodeById(e){let t=this.getMeshById(e);if(t)return t;let i=this.getTransformNodeById(e);if(i)return i;let r=this.getLightById(e);if(r)return r;let s=this.getCameraById(e);if(s)return s;let a=this.getBoneById(e);return a||null}getNodeByName(e){let t=this.getMeshByName(e);if(t)return t;let i=this.getTransformNodeByName(e);if(i)return i;let r=this.getLightByName(e);if(r)return r;let s=this.getCameraByName(e);if(s)return s;let a=this.getBoneByName(e);return a||null}getMeshByName(e){for(let t=0;t=0;t--)if(this.skeletons[t].id===e)return this.skeletons[t];return null}getSkeletonByUniqueId(e){for(let t=0;t{let o=!0,l=!0;for(let c of a)o&&(o=c.objectRenderer._isFrozen),l&&(l=c.objectRenderer._freezeActiveMeshesCancel!==null);if(o)return!0;if(!l)throw new Error("Freezing active meshes was cancelled");return!1},()=>{this._freezeActiveMeshesCancel=null,this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,t==null||t()},(o,l)=>{if(this._freezeActiveMeshesCancel=null,this.unfreezeActiveMeshes(),l){let c="Scene: Timeout while waiting for meshes to be frozen.";i?i(c):(ee.Error(c),o&&ee.Error(o))}else{let c="Scene: An unexpected error occurred while trying to freeze active meshes.";i?i(c):(ee.Error(c),o&&(ee.Error(o),o.stack&&ee.Error(o.stack)))}}),this}return this.executeWhenReady(()=>{if(!this.activeCamera){i&&i("No active camera found");return}if(this._frustumPlanes||this.updateTransformMatrix(),this._evaluateActiveMeshes(),this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,r)for(let a=0;ae.dispose())}_evaluateActiveMeshes(){var i;if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1){this._activeMeshes.length>0&&((i=this.activeCamera)==null||i._activeMeshes.reset(),this._activeMeshes.reset(),this._renderingManager.reset(),this._processedMaterials.reset(),this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset());return}if(this._activeMeshesFrozen&&this._activeMeshes.length){if(!this._skipEvaluateActiveMeshesCompletely){let r=this._activeMeshes.length;for(let s=0;s0&&(s.layerMask&this.activeCamera.layerMask)!==0&&(this._skipFrustumClipping||s.alwaysSelectAsActiveMesh||s.isInFrustum(this._frustumPlanes)))){this._activeMeshes.push(s),this.activeCamera._activeMeshes.push(s),o!==s&&o._activate(this._renderId,!1);for(let l of this._preActiveMeshStage)l.action(s);s._activate(this._renderId,!1)&&(s.isAnInstance?s._internalAbstractMeshDataInfo._actAsRegularMesh&&(o=s):o._internalAbstractMeshDataInfo._onlyForInstances=!1,o._internalAbstractMeshDataInfo._isActive=!0,this._activeMesh(s,o)),s._postActivate()}}if(this.onAfterActiveMeshesEvaluationObservable.notifyObservers(this),this.particlesEnabled){this.onBeforeParticlesRenderingObservable.notifyObservers(this);for(let r=0;r0){let r=this.getActiveSubMeshCandidates(t),s=r.length;i=i||s===1;for(let a=0;a0&&this._renderTargets.concatWithNoDuplicate(e.customRenderTargets),t&&t.customRenderTargets&&t.customRenderTargets.length>0&&this._renderTargets.concatWithNoDuplicate(t.customRenderTargets),this.environmentTexture&&this.environmentTexture.isRenderTarget&&this._renderTargets.pushNoDuplicate(this.environmentTexture);for(let h of this._gatherActiveCameraRenderTargetsStage)h.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let h;if(this._renderTargets.length>0){_e.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let u=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?u.renderList.data.slice():[],h.length=u.renderList.length),_.render(p,this.dumpNextRenderTargets),s=!0}}u&&h&&(u.renderList.data=h,u.renderList.length=h.length),_e.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let u=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);u&&!h&&(h=u.renderList.length>0?u.renderList.data.slice():[],h.length=u.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;u&&h&&(u.renderList.data=h,u.renderList.length=h.length)}this._intermediateRendering=!1}s&&!this.prePass&&(this._bindFrameBuffer(this._activeCamera,!1),this.updateTransformMatrix()),this.onAfterRenderTargetsRenderObservable.notifyObservers(this),this.postProcessManager&&!e._multiviewTexture&&!this.prePass&&this.postProcessManager._prepareFrame();for(let h of this._beforeCameraDrawStage)h.action(this.activeCamera);this.onBeforeDrawPhaseObservable.notifyObservers(this);let a=r.snapshotRendering&&r.snapshotRenderingMode===1;a&&this.finalizeSceneUbo(),this._renderingManager.render(null,null,!0,!a),this.onAfterDrawPhaseObservable.notifyObservers(this);for(let h of this._afterCameraDrawStage)h.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let h=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,h)}for(let h of this._afterCameraPostProcessStage)h.action(this.activeCamera);this._renderTargets.reset(),this.onAfterCameraRenderObservable.notifyObservers(this.activeCamera)}_processSubCameras(e,t=!0){if(e.cameraRigMode===0||e._renderingMultiview){e._renderingMultiview&&!this._multiviewSceneUbo&&this._createMultiviewUbo(),this._renderForCamera(e,void 0,t),this.onAfterRenderCameraObservable.notifyObservers(e);return}if(e._useMultiviewToSingleView)this._renderMultiviewToSingleView(e);else{this.onBeforeCameraRenderObservable.notifyObservers(e);for(let i=0;i-1&&(r.trigger===13&&r._executeCurrent(an.CreateNew(t,void 0,a)),(!t.actionManager.hasSpecificTrigger(13,c=>{let f=c.mesh?c.mesh:c;return a===f})||r.trigger===13)&&t._intersectionsInProgress.splice(l,1))}}}}_advancePhysicsEngineStep(e){}_animate(e){}animate(){if(this._engine.isDeterministicLockStep()){let e=Math.max(n.MinDeltaTime,Math.min(this._engine.getDeltaTime(),n.MaxDeltaTime))+this._timeAccumulator,t=this._engine.getTimeStep(),i=1e3/t/1e3,r=0,s=this._engine.getLockstepMaxSteps(),a=Math.floor(e/t);for(a=Math.min(a,s);e>0&&r0);for(let l=0;l0),this._renderId++}this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let l of this._beforeClearStage)l.action();if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1)this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset();else{let l=this.getActiveMeshCandidates(),c=l.length;if(this._activeMeshesFrozen){if(!this._skipEvaluateActiveMeshesCompletely)for(let f=0;f0)for(let a=0;a0);for(let o=0;o0),this._renderId++}this._engine.currentRenderPassId=(s=a==null?void 0:a.renderPassId)!=null?s:0,this.activeCamera=a,this._activeCamera&&this._activeCamera.cameraRigMode!==22&&!this.prePass&&this._bindFrameBuffer(this._activeCamera,!1),this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let o of this._beforeClearStage)o.action();this._clearFrameBuffer(this.activeCamera);for(let o of this._gatherRenderTargetsStage)o.action(this._renderTargets);if(this.activeCameras&&this.activeCameras.length>0)for(let o=0;o0);else{if(!this.activeCamera)throw new Error("No camera defined");this._processSubCameras(this.activeCamera,!!this.activeCamera.outputRenderTarget)}}this._checkIntersections();for(let a of this._afterRenderStage)a.action();if(this.afterRender&&this.afterRender(),this.onAfterRenderObservable.notifyObservers(this),this._toBeDisposed.length){for(let a=0;as.dispose(!0)),this._disposeList(this.transformNodes,s=>s.dispose(!0));let i=this.cameras;this._disposeList(i),this._disposeList(this.particleSystems),this._disposeList(this.postProcesses),this._disposeList(this.textures),this._disposeList(this.morphTargetManagers),this._disposeList(this.frameGraphs),this._sceneUbo.dispose(),this._multiviewSceneUbo&&this._multiviewSceneUbo.dispose(),this.postProcessManager.dispose(),this._disposeList(this._components);let r=this._engine.scenes.indexOf(this);if(r>-1&&this._engine.scenes.splice(r,1),this._floatingOriginScene=void 0,this._engine.scenes.length===0&&dG(),Oe._LastCreatedScene===this){Oe._LastCreatedScene=null;let s=Oe.Instances.length-1;for(;s>=0;){let a=Oe.Instances[s];if(a.scenes.length>0){Oe._LastCreatedScene=a.scenes[this._engine.scenes.length-1];break}s--}}r=this._engine._virtualScenes.indexOf(this),r>-1&&this._engine._virtualScenes.splice(r,1),this._engine.wipeCaches(!0),this.onDisposeObservable.clear(),this.onBeforeRenderObservable.clear(),this.onAfterRenderObservable.clear(),this.onBeforeRenderTargetsRenderObservable.clear(),this.onAfterRenderTargetsRenderObservable.clear(),this.onAfterStepObservable.clear(),this.onBeforeStepObservable.clear(),this.onBeforeActiveMeshesEvaluationObservable.clear(),this.onAfterActiveMeshesEvaluationObservable.clear(),this.onBeforeParticlesRenderingObservable.clear(),this.onAfterParticlesRenderingObservable.clear(),this.onBeforeDrawPhaseObservable.clear(),this.onAfterDrawPhaseObservable.clear(),this.onBeforeAnimationsObservable.clear(),this.onAfterAnimationsObservable.clear(),this.onDataLoadedObservable.clear(),this.onBeforeRenderingGroupObservable.clear(),this.onAfterRenderingGroupObservable.clear(),this.onMeshImportedObservable.clear(),this.onBeforeCameraRenderObservable.clear(),this.onAfterCameraRenderObservable.clear(),this.onAfterRenderCameraObservable.clear(),this.onReadyObservable.clear(),this.onNewCameraAddedObservable.clear(),this.onCameraRemovedObservable.clear(),this.onNewLightAddedObservable.clear(),this.onLightRemovedObservable.clear(),this.onNewGeometryAddedObservable.clear(),this.onGeometryRemovedObservable.clear(),this.onNewTransformNodeAddedObservable.clear(),this.onTransformNodeRemovedObservable.clear(),this.onNewMeshAddedObservable.clear(),this.onMeshRemovedObservable.clear(),this.onNewSkeletonAddedObservable.clear(),this.onSkeletonRemovedObservable.clear(),this.onNewMaterialAddedObservable.clear(),this.onNewMultiMaterialAddedObservable.clear(),this.onMaterialRemovedObservable.clear(),this.onMultiMaterialRemovedObservable.clear(),this.onNewTextureAddedObservable.clear(),this.onTextureRemovedObservable.clear(),this.onNewFrameGraphAddedObservable.clear(),this.onFrameGraphRemovedObservable.clear(),this.onNewObjectRendererAddedObservable.clear(),this.onObjectRendererRemovedObservable.clear(),this.onPrePointerObservable.clear(),this.onPointerObservable.clear(),this.onPreKeyboardObservable.clear(),this.onKeyboardObservable.clear(),this.onActiveCameraChanged.clear(),this.onScenePerformancePriorityChangedObservable.clear(),this.onClearColorChangedObservable.clear(),this.onEnvironmentTextureChangedObservable.clear(),this.onMeshUnderPointerUpdatedObservable.clear(),this._isDisposed=!0}_disposeList(e,t){let i=e.slice(0);t=t!=null?t:(r=>r.dispose());for(let r of i)t(r);e.length=0}get isDisposed(){return this._isDisposed}clearCachedVertexData(){for(let e=0;e!0);let r=this.meshes.filter(e);for(let s of r){if(s.computeWorldMatrix(!0),!s.subMeshes||s.subMeshes.length===0||s.infiniteDistance)continue;let a=s.getBoundingInfo(),o=a.boundingBox.minimumWorld,l=a.boundingBox.maximumWorld;b.CheckExtends(o,t,i),b.CheckExtends(l,t,i)}return t.x===Number.MAX_VALUE?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}createPickingRay(e,t,i,r,s=!1){throw Qe("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw Qe("Ray")}createPickingRayInCameraSpace(e,t,i){throw Qe("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw Qe("Ray")}pick(e,t,i,r,s,a){let o=Qe("Ray",!0);return o&&ee.Warn(o),new fs}pickWithBoundingInfo(e,t,i,r,s){let a=Qe("Ray",!0);return a&&ee.Warn(a),new fs}pickWithRay(e,t,i,r){throw Qe("Ray")}multiPick(e,t,i,r,s){throw Qe("Ray")}multiPickWithRay(e,t,i){throw Qe("Ray")}setPointerOverMesh(e,t,i){this._inputManager.setPointerOverMesh(e,t,i)}getPointerOverMesh(){return this._inputManager.getPointerOverMesh()}_rebuildGeometries(){for(let e of this.geometries)e._rebuild();for(let e of this.meshes)e._rebuild();this.postProcessManager&&this.postProcessManager._rebuild();for(let e of this._components)e.rebuild();for(let e of this.particleSystems)e.rebuild();if(this.spriteManagers)for(let e of this.spriteManagers)e.rebuild()}_rebuildTextures(){for(let e of this.textures)e._rebuild(!0);this.markAllMaterialsAsDirty(1)}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];$t&&$t.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}setRenderingOrder(e,t=null,i=null,r=null){this._renderingManager.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t,i=!0,r=!0){this._renderingManager.setRenderingAutoClearDepthStencil(e,t,i,r)}getAutoClearDepthStencilSetup(e){return this._renderingManager.getAutoClearDepthStencilSetup(e)}_forceBlockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism=e}get blockMaterialDirtyMechanism(){return this._blockMaterialDirtyMechanism}set blockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism!==e&&(this._blockMaterialDirtyMechanism=e,e||this.markAllMaterialsAsDirty(127))}markAllMaterialsAsDirty(e,t){if(!this._blockMaterialDirtyMechanism)for(let i of this.materials)t&&!t(i)||i.markAsDirty(e)}_loadFile(e,t,i,r,s,a,o){let l=dl(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _loadFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._loadFile(e,l=>{a(l)},t,i,r,(l,c)=>{o(c)},s)})}_requestFile(e,t,i,r,s,a,o){let l=qA(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _requestFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._requestFile(e,l=>{a(l)},t,i,r,l=>{o(l)},s)})}_readFile(e,t,i,r,s){let a=ah(e,t,i,r,s);return this._activeRequests.push(a),a.onCompleteObservable.add(o=>{this._activeRequests.splice(this._activeRequests.indexOf(o),1)}),a}async _readFileAsync(e,t,i){return await new Promise((r,s)=>{this._readFile(e,a=>{r(a)},t,i,a=>{s(a)})})}getPerfCollector(){throw Qe("performanceViewerSceneExtension")}setActiveCameraByID(e){return this.setActiveCameraById(e)}getMaterialByID(e){return this.getMaterialById(e)}getLastMaterialByID(e){return this.getLastMaterialById(e)}getTextureByUniqueID(e){return this.getTextureByUniqueId(e)}getCameraByID(e){return this.getCameraById(e)}getCameraByUniqueID(e){return this.getCameraByUniqueId(e)}getBoneByID(e){return this.getBoneById(e)}getLightByID(e){return this.getLightById(e)}getLightByUniqueID(e){return this.getLightByUniqueId(e)}getParticleSystemByID(e){return this.getParticleSystemById(e)}getGeometryByID(e){return this.getGeometryById(e)}getMeshByID(e){return this.getMeshById(e)}getMeshByUniqueID(e){return this.getMeshByUniqueId(e)}getLastMeshByID(e){return this.getLastMeshById(e)}getMeshesByID(e){return this.getMeshesById(e)}getTransformNodeByID(e){return this.getTransformNodeById(e)}getTransformNodeByUniqueID(e){return this.getTransformNodeByUniqueId(e)}getTransformNodesByID(e){return this.getTransformNodesById(e)}getNodeByID(e){return this.getNodeById(e)}getLastEntryByID(e){return this.getLastEntryById(e)}getLastSkeletonByID(e){return this.getLastSkeletonById(e)}};ei.FOGMODE_NONE=0;ei.FOGMODE_EXP=1;ei.FOGMODE_EXP2=2;ei.FOGMODE_LINEAR=3;ei.MinDeltaTime=1;ei.MaxDeltaTime=1e3;ei._OriginalDefaultMaterialFactory=ei.DefaultMaterialFactory;Ft("BABYLON.Scene",ei)});var PG,Cle,wa=I(()=>{k();PG="helperFunctions",Cle=`const PI: f32=3.141592653589793;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08; const LinearEncodePowerApprox: f32=2.2;const GammaEncodePowerApprox: f32=1.0/LinearEncodePowerApprox;const LuminanceEncodeApprox: vec3f=vec3f(0.2126,0.7152,0.0722);const Epsilon:f32=0.0000001;fn square(x: f32)->f32 {return x*x;} fn saturate(x: f32)->f32 {return clamp(x,0.0,1.0);} fn saturateVec3(x: vec3f)->vec3f {return clamp(x,vec3f(),vec3f(1.0));} @@ -4296,11 +4296,11 @@ fn max3(v: vec3f)->f32 {return max(v.x,max(v.y,v.z));} fn uint2float(i: u32)->f32 {return bitcast(0x3F800000u | (i>>9u))-1.0;} fn plasticSequence(rstate: u32)->vec2f {return vec2f(uint2float(rstate*3242174889u), uint2float(rstate*2447445414u));} -`;A.IncludesShadersStoreWGSL[IG]||(A.IncludesShadersStoreWGSL[IG]=Rle)});var aP={};Be(aP,{rgbdDecodePixelShaderWGSL:()=>ble});var sP,yG,ble,oP=I(()=>{k();wa();sP="rgbdDecodePixelShader",yG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +`;A.IncludesShadersStoreWGSL[PG]||(A.IncludesShadersStoreWGSL[PG]=Cle)});var cP={};Be(cP,{rgbdDecodePixelShaderWGSL:()=>Ple});var lP,DG,Ple,fP=I(()=>{k();wa();lP="rgbdDecodePixelShader",DG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #include #define CUSTOM_FRAGMENT_DEFINITIONS @fragment -fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=vec4f(fromRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV)),1.0);}`;A.ShadersStoreWGSL[sP]||(A.ShadersStoreWGSL[sP]=yG);ble={name:sP,shader:yG}});var CG,Mle,Fa=I(()=>{k();CG="helperFunctions",Mle=`const float PI=3.141592653589793;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08; +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=vec4f(fromRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV)),1.0);}`;A.ShadersStoreWGSL[lP]||(A.ShadersStoreWGSL[lP]=DG);Ple={name:lP,shader:DG}});var LG,Dle,Fa=I(()=>{k();LG="helperFunctions",Dle=`const float PI=3.141592653589793;const float TWO_PI=6.283185307179586;const float HALF_PI=1.5707963267948966;const float RECIPROCAL_PI=0.3183098861837907;const float RECIPROCAL_PI2=0.15915494309189535;const float RECIPROCAL_PI4=0.07957747154594767;const float HALF_MIN=5.96046448e-08; const float LinearEncodePowerApprox=2.2;const float GammaEncodePowerApprox=1.0/LinearEncodePowerApprox;const vec3 LuminanceEncodeApprox=vec3(0.2126,0.7152,0.0722);const float Epsilon=0.0000001; #define saturate(x) clamp(x,0.0,1.0) #define absEps(x) abs(x)+Epsilon @@ -4418,28 +4418,28 @@ float uint2float(uint i) {return uintBitsToFloat(0x3F800000u | (i>>9u))-1.0;} vec2 plasticSequence(const uint rstate) {return vec2(uint2float(rstate*3242174889u), uint2float(rstate*2447445414u));} #endif -`;A.IncludesShadersStore[CG]||(A.IncludesShadersStore[CG]=Mle)});var cP={};Be(cP,{rgbdDecodePixelShader:()=>Ile});var lP,PG,Ile,fP=I(()=>{k();Fa();lP="rgbdDecodePixelShader",PG=`varying vec2 vUV;uniform sampler2D textureSampler; +`;A.IncludesShadersStore[LG]||(A.IncludesShadersStore[LG]=Dle)});var hP={};Be(hP,{rgbdDecodePixelShader:()=>Lle});var dP,OG,Lle,uP=I(()=>{k();Fa();dP="rgbdDecodePixelShader",OG=`varying vec2 vUV;uniform sampler2D textureSampler; #include #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=vec4(fromRGBD(texture2D(textureSampler,vUV)),1.0);}`;A.ShadersStore[lP]||(A.ShadersStore[lP]=PG);Ile={name:lP,shader:PG}});var LG={};Be(LG,{rgbdEncodePixelShader:()=>yle});var dP,DG,yle,OG=I(()=>{k();Fa();dP="rgbdEncodePixelShader",DG=`varying vec2 vUV;uniform sampler2D textureSampler; +{gl_FragColor=vec4(fromRGBD(texture2D(textureSampler,vUV)),1.0);}`;A.ShadersStore[dP]||(A.ShadersStore[dP]=OG);Lle={name:dP,shader:OG}});var wG={};Be(wG,{rgbdEncodePixelShader:()=>Ole});var mP,NG,Ole,FG=I(()=>{k();Fa();mP="rgbdEncodePixelShader",NG=`varying vec2 vUV;uniform sampler2D textureSampler; #include #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=toRGBD(texture2D(textureSampler,vUV).rgb);}`;A.ShadersStore[dP]||(A.ShadersStore[dP]=DG);yle={name:dP,shader:DG}});var wG={};Be(wG,{rgbdEncodePixelShaderWGSL:()=>Cle});var hP,NG,Cle,FG=I(()=>{k();wa();hP="rgbdEncodePixelShader",NG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +{gl_FragColor=toRGBD(texture2D(textureSampler,vUV).rgb);}`;A.ShadersStore[mP]||(A.ShadersStore[mP]=NG);Ole={name:mP,shader:NG}});var UG={};Be(UG,{rgbdEncodePixelShaderWGSL:()=>Nle});var pP,BG,Nle,VG=I(()=>{k();wa();pP="rgbdEncodePixelShader",BG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #include #define CUSTOM_FRAGMENT_DEFINITIONS @fragment -fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=toRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb);}`;A.ShadersStoreWGSL[hP]||(A.ShadersStoreWGSL[hP]=NG);Cle={name:hP,shader:NG}});var Mm,uP=I(()=>{rc();WC();Mm=class{static ExpandRGBDTexture(e){let t=e._texture;if(!t||!e.isRGBD)return;let i=t.getEngine(),r=i.getCaps(),s=t.isReady,a=!1;r.textureHalfFloatRender&&r.textureHalfFloatLinearFiltering?(a=!0,t.type=2):r.textureFloatRender&&r.textureFloatLinearFiltering&&(a=!0,t.type=1),a&&(t.isReady=!1,t._isRGBD=!1,t.invertY=!1);let o=async()=>{let l=i.isWebGPU,c=l?1:0;t.isReady=!1,l?await Promise.resolve().then(()=>(oP(),aP)):await Promise.resolve().then(()=>(fP(),cP));let f=new Ri("rgbdDecode","rgbdDecode",null,null,1,null,3,i,!1,void 0,t.type,void 0,null,!1,void 0,c);f.externalTextureSamplerBinding=!0;let d=i.createRenderTargetTexture(t.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:t.samplingMode,type:t.type,format:5});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",t),u.setFloat2("scale",1,1)},e.getScene().postProcessManager.directRender([f],d,!0),i.restoreDefaultFramebuffer(),i._releaseTexture(t),f&&f.dispose(),d._swapAndDie(t),t.isReady=!0})})};a&&(s?o():e.onLoadObservable.addOnce(o))}static async EncodeTextureToRGBD(e,t,i=0){return t.getEngine().isWebGPU?await Promise.resolve().then(()=>(FG(),wG)):await Promise.resolve().then(()=>(OG(),LG)),await BV("rgbdEncode",e,t,i,1,5)}}});var mP=I(()=>{TC();vg();pi.prototype._sphericalPolynomialTargetSize=0;pi.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(pi.prototype,"sphericalPolynomial",{get:function(){if(this._texture){if(this._texture._sphericalPolynomial||this._texture._sphericalPolynomialComputed)return this._texture._sphericalPolynomial;if(this._texture.isReady)return this._texture._sphericalPolynomialPromise||(this._texture._sphericalPolynomialPromise=ec.ConvertCubeMapTextureToSphericalPolynomial(this),this._texture._sphericalPolynomialPromise===null?this._texture._sphericalPolynomialComputed=!0:this._texture._sphericalPolynomialPromise.then(n=>{this._texture._sphericalPolynomial=n,this._texture._sphericalPolynomialComputed=!0})),null}return null},set:function(n){this._texture&&(this._texture._sphericalPolynomial=n)},enumerable:!0,configurable:!0})});function GG(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;aBG)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${BG}".`);return n.version===2||(n={...n,version:2,imageType:vx}),n}function Ple(n,e){e=Og(e);let t=e.specular,i=Math.log2(e.width);if(i=Math.round(i)+1,t.mipmaps.length!==6*i)throw new Error(`Unsupported specular mipmaps number "${t.mipmaps.length}"`);let r=new Array(i);for(let s=0;s{if(t){let u=e.createTexture(null,!0,!0,null,1,null,m=>{h(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=_=>{_._bindTexture("textureSampler",u),_.setFloat2("scale",1,e._features.needsInvertingBitmap&&n instanceof ImageBitmap?-1:1)},e.scenes.length&&(e.scenes[0].postProcessManager.directRender([i],c,!0,s,a),e.restoreDefaultFramebuffer(),u.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let u=l[a];u&&e._uploadImageToTexture(u._texture,n,s,0)}d()}})}async function Lle(n,e,t=vx){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await WG(n,e,!0,t),n.isReady=!0}async function Ole(n,e,t,i=vx,r=null){let s=n.getEngine(),a=new Oi(s,5),o=new pi(s,a);n._irradianceTexture=o,o._dominantDirection=r,a.isCube=!0,a.format=5,a.type=0,a.generateMipMaps=!0,a._cachedAnisotropicFilteringLevel=null,a.generateMipMaps=!0,a.width=t,a.height=t,s.updateTextureSamplingMode(3,a),await WG(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function WG(n,e,t,i=vx){if(!_e.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=kU(n.width)+1,s=n.getEngine(),a=!1,o=!1,l=null,c=null,f=null,d=s.getCaps();d.textureLOD?s._features.supportRenderAndCopyToLodForFloatTextures?d.textureHalfFloatRender&&d.textureHalfFloatLinearFiltering?(a=!0,n.type=2):d.textureFloatRender&&d.textureFloatLinearFiltering&&(a=!0,n.type=1):a=!1:(a=!1,o=t);let h=0;if(a)s.isWebGPU?(h=1,await Promise.resolve().then(()=>(oP(),aP))):await Promise.resolve().then(()=>(fP(),cP)),l=new Ri("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,h),n._isRGBD=!1,n.invertY=!1,c=s.createRenderTargetCubeTexture(n.width,{generateDepthBuffer:!1,generateMipMaps:!0,generateStencilBuffer:!1,samplingMode:3,type:n.type,format:5});else if(n._isRGBD=!0,n.invertY=!0,o){f={};let _=n._lodGenerationScale,p=n._lodGenerationOffset;for(let g=0;g<3;g++){let x=1-g/2,S=p,E=(r-1)*_+p,T=S+(E-S)*x,R=Math.round(Math.min(Math.max(T,0),E)),M=new Oi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let y=new pi(null);switch(y._isCube=!0,y._texture=M,f[R]=y,g){case 0:n._lodTextureLow=y;break;case 1:n._lodTextureMid=y;break;case 2:n._lodTextureHigh=y;break}}}let u=[];for(let m=0;mawait VG(E,s,a,l,x,_,m,o,f,c,n));else{let E=new Image;E.src=x,S=new Promise((T,R)=>{E.onload=()=>{VG(E,s,a,l,x,_,m,o,f,c,n).then(()=>T()).catch(M=>{R(M)})},E.onerror=M=>{R(M)}})}u.push(S)}if(await Promise.all(u),e.length{yi();ke();Vn();ug();Os();vg();Bs();rc();Pt();uP();wC();mP();Tm();vx="image/png",BG=2,UG=[134,22,135,150,246,214,150,54]});var XG={};Be(XG,{_ENVTextureLoader:()=>pP});var pP,YG=I(()=>{zG();pP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=GG(e);if(a){t.width=a.width,t.height=a.width;try{HG(t,a),kG(t,e,a).then(()=>{t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()},o=>{s==null||s("Can not upload environment levels",o)})}catch(o){s==null||s("Can not upload environment file",o)}}else s&&s("Can not parse the environment file",null)}loadData(){throw".env not supported in 2d."}}});var cc,KG=I(()=>{ke();cc=class{static ConvertPanoramaToCubemap(e,t,i,r,s=!1,a=!0){if(!e)throw"ConvertPanoramaToCubemap: input cannot be null";let o;if(e.length!=t*i*3){if(e.length!=t*i*4)throw"ConvertPanoramaToCubemap: input size is wrong";o=4}else o=3;let l=this.CreateCubemapTexture(r,this.FACE_FRONT,e,t,i,s,a,o),c=this.CreateCubemapTexture(r,this.FACE_BACK,e,t,i,s,a,o),f=this.CreateCubemapTexture(r,this.FACE_LEFT,e,t,i,s,a,o),d=this.CreateCubemapTexture(r,this.FACE_RIGHT,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),u=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:h,down:u,size:r,type:1,format:4,gammaSpace:!1}}static CreateCubemapTexture(e,t,i,r,s,a,o,l){let c=new ArrayBuffer(e*e*4*3),f=new Float32Array(c),d=a?Math.max(1,Math.round(r/4/e)):1,h=1/d,u=h*h,m=t[1].subtract(t[0]).scale(h/e),_=t[3].subtract(t[2]).scale(h/e),p=1/e,g=0;for(let v=0;vMath.PI;)o-=2*Math.PI;let c=o/Math.PI,f=l/Math.PI;c=c*.5+.5;let d=Math.round(c*i);d<0?d=0:d>=i&&(d=i-1);let h=Math.round(f*r);h<0?h=0:h>=r&&(h=r-1);let u=a?r-h-1:h,m=t[u*i*s+d*s+0],_=t[u*i*s+d*s+1],p=t[u*i*s+d*s+2];return{r:m,g:_,b:p}}};cc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];cc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];cc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];cc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];cc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];cc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Nle(n,e){return e>1023?n*Math.pow(2,1023)*Math.pow(2,e-1023):e<-1074?n*Math.pow(2,-1074)*Math.pow(2,e+1074):n*Math.pow(2,e)}function jG(n,e,t,i,r,s){r>0?(r=Nle(1,r-136),n[s+0]=e*r,n[s+1]=t*r,n[s+2]=i*r):(n[s+0]=0,n[s+1]=0,n[s+2]=0)}function _P(n,e){let t="",i;for(let r=e;r32767)throw"HDR Bad header format, unsupported size";return r+=e.length+1,{height:l,width:o,dataPosition:r}}function ZG(n,e){return wle(n,e)}function wle(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,h,u=new ArrayBuffer(i*4),m=new Uint8Array(u),_=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(_);for(;t>0;){if(r=n[c++],s=n[c++],a=n[c++],o=n[c++],r!=2||s!=2||a&128||e.width<8||e.width>32767)return Fle(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,h=0;h<4;h++)for(d=(h+1)*i;f128){if(l=r-128,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (run)";for(;l-- >0;)m[f++]=s}else{if(l=r,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (non-run)";if(m[f++]=s,--l>0)for(let g=0;g0;){for(l=0;l{KG()});var $G={};Be($G,{_HDRTextureLoader:()=>gP});var gP,JG=I(()=>{QG();gP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".hdr not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=qG(r),a=ZG(r,s),o=s.width*s.height,l=new Float32Array(o*4);for(let c=0;c{let c=t.getEngine();t.type=1,t.format=5,t._gammaSpace=!1,c._uploadDataToTextureDirectly(t,l)})}}});var Mo,ek=I(()=>{Pt();Mo=class n{constructor(e,t){if(this.data=e,this.isInvalid=!1,!n.IsValid(e)){this.isInvalid=!0,ee.Error("texture missing KTX identifier");return}let i=Uint32Array.BYTES_PER_ELEMENT,r=new DataView(this.data.buffer,this.data.byteOffset+12,13*i),a=r.getUint32(0,!0)===67305985;if(this.glType=r.getUint32(1*i,a),this.glTypeSize=r.getUint32(2*i,a),this.glFormat=r.getUint32(3*i,a),this.glInternalFormat=r.getUint32(4*i,a),this.glBaseInternalFormat=r.getUint32(5*i,a),this.pixelWidth=r.getUint32(6*i,a),this.pixelHeight=r.getUint32(7*i,a),this.pixelDepth=r.getUint32(8*i,a),this.numberOfArrayElements=r.getUint32(9*i,a),this.numberOfFaces=r.getUint32(10*i,a),this.numberOfMipmapLevels=r.getUint32(11*i,a),this.bytesOfKeyValueData=r.getUint32(12*i,a),this.glType!==0){ee.Error("only compressed formats currently supported"),this.isInvalid=!0;return}else this.numberOfMipmapLevels=Math.max(1,this.numberOfMipmapLevels);if(this.pixelHeight===0||this.pixelDepth!==0){ee.Error("only 2D textures currently supported"),this.isInvalid=!0;return}if(this.numberOfArrayElements!==0){ee.Error("texture arrays not currently supported"),this.isInvalid=!0;return}if(this.numberOfFaces!==t){ee.Error("number of faces expected"+t+", but found "+this.numberOfFaces),this.isInvalid=!0;return}this.loadType=n.COMPRESSED_2D}uploadLevels(e,t){switch(this.loadType){case n.COMPRESSED_2D:this._upload2DCompressedLevels(e,t);break;case n.TEX_2D:case n.COMPRESSED_3D:case n.TEX_3D:}}_upload2DCompressedLevels(e,t){let i=n.HEADER_LEN+this.bytesOfKeyValueData,r=this.pixelWidth,s=this.pixelHeight,a=t?this.numberOfMipmapLevels:1;for(let o=0;o=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===49&&t[6]===49&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Mo.HEADER_LEN=64;Mo.COMPRESSED_2D=0;Mo.COMPRESSED_3D=1;Mo.TEX_2D=2;Mo.TEX_3D=3});var vP,Ng,tk=I(()=>{vP=class{constructor(e){this._pendingActions=new Array,this._workerInfos=e.map(t=>({workerPromise:Promise.resolve(t),idle:!0}))}dispose(){for(let e of this._workerInfos)e.workerPromise.then(t=>{t.terminate()});this._workerInfos.length=0,this._pendingActions.length=0}push(e){this._executeOnIdleWorker(e)||this._pendingActions.push(e)}_executeOnIdleWorker(e){for(let t of this._workerInfos)if(t.idle)return this._execute(t,e),!0;return!1}_execute(e,t){e.idle=!1,e.workerPromise.then(i=>{t(i,()=>{let r=this._pendingActions.shift();r?this._execute(e,r):e.idle=!0})})}},Ng=class n extends vP{constructor(e,t,i=n.DefaultOptions){super([]),this._maxWorkers=e,this._createWorkerAsync=t,this._options=i}push(e){if(!this._executeOnIdleWorker(e))if(this._workerInfos.length{t(i,()=>{r(),e.idle&&(e.timeoutId=setTimeout(()=>{e.workerPromise.then(a=>{a.terminate()});let s=this._workerInfos.indexOf(e);s!==-1&&this._workerInfos.splice(s,1)},this._options.idleTimeElapsedBeforeRelease))})})}};Ng.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var ik,Im,rk,nk=I(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(ik||(ik={}));(function(n){n[n.ASTC_4X4_RGBA=0]="ASTC_4X4_RGBA",n[n.ASTC_4x4_RGBA=0]="ASTC_4x4_RGBA",n[n.BC7_RGBA=1]="BC7_RGBA",n[n.BC3_RGBA=2]="BC3_RGBA",n[n.BC1_RGB=3]="BC1_RGB",n[n.PVRTC1_4_RGBA=4]="PVRTC1_4_RGBA",n[n.PVRTC1_4_RGB=5]="PVRTC1_4_RGB",n[n.ETC2_RGBA=6]="ETC2_RGBA",n[n.ETC1_RGB=7]="ETC1_RGB",n[n.RGBA32=8]="RGBA32",n[n.R8=9]="R8",n[n.RG8=10]="RG8"})(Im||(Im={}));(function(n){n[n.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",n[n.COMPRESSED_RGBA_ASTC_4X4_KHR=37808]="COMPRESSED_RGBA_ASTC_4X4_KHR",n[n.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",n[n.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",n[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",n[n.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",n[n.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",n[n.RGBA8Format=32856]="RGBA8Format",n[n.R8Format=33321]="R8Format",n[n.RG8Format=33323]="RG8Format"})(rk||(rk={}))});function wg(n,e){let t=(e==null?void 0:e.jsDecoderModule)||KTX2DECODER;n&&(n.wasmBaseUrl&&(t.Transcoder.WasmBaseUrl=n.wasmBaseUrl),n.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmModuleURL=n.wasmUASTCToASTC),n.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmModuleURL=n.wasmUASTCToBC7),n.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmModuleURL=n.wasmUASTCToRGBA_UNORM),n.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmModuleURL=n.wasmUASTCToRGBA_SRGB),n.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmModuleURL=n.wasmUASTCToR8_UNORM),n.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmModuleURL=n.wasmUASTCToRG8_UNORM),n.jsMSCTranscoder&&(t.MSCTranscoder.JSModuleURL=n.jsMSCTranscoder),n.wasmMSCTranscoder&&(t.MSCTranscoder.WasmModuleURL=n.wasmMSCTranscoder),n.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmModuleURL=n.wasmZSTDDecoder)),e&&(e.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmBinary=e.wasmUASTCToASTC),e.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmBinary=e.wasmUASTCToBC7),e.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmBinary=e.wasmUASTCToRGBA_UNORM),e.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmBinary=e.wasmUASTCToRGBA_SRGB),e.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmBinary=e.wasmUASTCToR8_UNORM),e.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmBinary=e.wasmUASTCToRG8_UNORM),e.jsMSCTranscoder&&(t.MSCTranscoder.JSModule=e.jsMSCTranscoder),e.wasmMSCTranscoder&&(t.MSCTranscoder.WasmBinary=e.wasmMSCTranscoder),e.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmBinary=e.wasmZSTDDecoder))}function sk(n){typeof n=="undefined"&&typeof KTX2DECODER!="undefined"&&(n=KTX2DECODER);let e;onmessage=t=>{if(t.data)switch(t.data.action){case"init":{let i=t.data.urls;i&&(i.jsDecoderModule&&typeof n=="undefined"&&(importScripts(i.jsDecoderModule),n=KTX2DECODER),wg(i)),t.data.wasmBinaries&&wg(void 0,{...t.data.wasmBinaries,jsDecoderModule:n}),e=new n.KTX2Decoder,postMessage({action:"init"});break}case"setDefaultDecoderOptions":{n.KTX2Decoder.DefaultDecoderOptions=t.data.options;break}case"decode":e.decode(t.data.data,t.data.caps,t.data.options).then(i=>{let r=[];for(let s=0;s{postMessage({action:"decoded",success:!1,msg:i})});break}}}async function ak(n,e,t){return await new Promise((i,r)=>{let s=o=>{n.removeEventListener("error",s),n.removeEventListener("message",a),r(o)},a=o=>{o.data.action==="init"&&(n.removeEventListener("error",s),n.removeEventListener("message",a),i(n))};n.addEventListener("error",s),n.addEventListener("message",a),n.postMessage({action:"init",urls:t,wasmBinaries:e})})}var ok=I(()=>{});var EP,fc,lk=I(()=>{tk();yi();nk();ok();EP=class{constructor(){this._isDirty=!0,this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=!0,this._ktx2DecoderOptions={}}get isDirty(){return this._isDirty}get useRGBAIfASTCBC7NotAvailableWhenUASTC(){return this._useRGBAIfASTCBC7NotAvailableWhenUASTC}set useRGBAIfASTCBC7NotAvailableWhenUASTC(e){this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==e&&(this._useRGBAIfASTCBC7NotAvailableWhenUASTC=e,this._isDirty=!0)}get useRGBAIfOnlyBC1BC3AvailableWhenUASTC(){return this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC}set useRGBAIfOnlyBC1BC3AvailableWhenUASTC(e){this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC!==e&&(this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=e,this._isDirty=!0)}get forceRGBA(){return this._forceRGBA}set forceRGBA(e){this._forceRGBA!==e&&(this._forceRGBA=e,this._isDirty=!0)}get forceR8(){return this._forceR8}set forceR8(e){this._forceR8!==e&&(this._forceR8=e,this._isDirty=!0)}get forceRG8(){return this._forceRG8}set forceRG8(e){this._forceRG8!==e&&(this._forceRG8=e,this._isDirty=!0)}get bypassTranscoders(){return this._bypassTranscoders}set bypassTranscoders(e){this._bypassTranscoders!==e&&(this._bypassTranscoders=e,this._isDirty=!0)}_getKTX2DecoderOptions(){if(!this._isDirty)return this._ktx2DecoderOptions;this._isDirty=!1;let e={};return this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==void 0&&(e.useRGBAIfASTCBC7NotAvailableWhenUASTC=this._useRGBAIfASTCBC7NotAvailableWhenUASTC),this._forceRGBA!==void 0&&(e.forceRGBA=this._forceRGBA),this._forceR8!==void 0&&(e.forceR8=this._forceR8),this._forceRG8!==void 0&&(e.forceRG8=this._forceRG8),this._bypassTranscoders!==void 0&&(e.bypassTranscoders=this._bypassTranscoders),this.useRGBAIfOnlyBC1BC3AvailableWhenUASTC&&(e.transcodeFormatDecisionTree={UASTC:{transcodeFormat:[Im.BC1_RGB,Im.BC3_RGBA],yes:{transcodeFormat:Im.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},fc=class n{static GetDefaultNumWorkers(){return typeof navigator!="object"||!navigator.hardwareConcurrency?1:Math.min(Math.floor(navigator.hardwareConcurrency*.5),4)}static _Initialize(e){if(n._WorkerPoolPromise||n._DecoderModulePromise)return;let t={wasmBaseUrl:_e.ScriptBaseUrl,jsDecoderModule:_e.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:_e.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:_e.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:_e.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${wg}(${sk})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new Ng(e,async()=>await ak(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=_e.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,wg(t,n._KTX2DecoderModule),new n._KTX2DecoderModule.KTX2Decoder)):(n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,n._DecoderModulePromise=Promise.resolve(new n._KTX2DecoderModule.KTX2Decoder))}constructor(e,t=n.DefaultNumWorkers){var r,s;this._engine=e;let i=typeof t=="object"&&t.workerPool||n.WorkerPool;if(i)n._WorkerPoolPromise=Promise.resolve(i);else{typeof t=="object"?n._KTX2DecoderModule=(r=t==null?void 0:t.binariesAndModulesContainer)==null?void 0:r.jsDecoderModule:typeof KTX2DECODER!="undefined"&&(n._KTX2DecoderModule=KTX2DECODER);let a=typeof t=="number"?t:(s=t.numWorkers)!=null?s:n.DefaultNumWorkers;n._Initialize(a)}}async _uploadAsync(e,t,i){let r=this._engine.getCaps(),s={astc:!!r.astc,bptc:!!r.bptc,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,etc1:!!r.etc1};if(n._WorkerPoolPromise){let a=await n._WorkerPoolPromise;return await new Promise((o,l)=>{a.push((c,f)=>{let d=m=>{c.removeEventListener("error",d),c.removeEventListener("message",h),l(m),f()},h=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",h),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(_){l({message:_})}f()}};c.addEventListener("error",d),c.addEventListener("message",h),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let u=new Uint8Array(e.byteLength);u.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:u,caps:s,options:i},[u.buffer])})})}else if(n._DecoderModulePromise){let a=await n._DecoderModulePromise;return n.DefaultDecoderOptions.isDirty&&(n._KTX2DecoderModule.KTX2Decoder.DefaultDecoderOptions=n.DefaultDecoderOptions._getKTX2DecoderOptions()),await new Promise((o,l)=>{a.decode(e,r).then(c=>{this._createTexture(c,t),o()}).catch(c=>{l({message:c})})})}throw new Error("KTX2 decoder module is not available")}_createTexture(e,t,i){this._engine._bindTextureDirectly(3553,t),i&&(i.transcodedFormat=e.transcodedFormat,i.isInGammaSpace=e.isInGammaSpace,i.hasAlpha=e.hasAlpha,i.transcoderName=e.transcoderName);let s=!0;switch(e.transcodedFormat){case 32856:t.type=0,t.format=5;break;case 33321:t.type=0,t.format=6;break;case 33323:t.type=0,t.format=7;break;default:t.format=e.transcodedFormat,s=!1;break}if(t._gammaSpace=e.isInGammaSpace,t.generateMipMaps=e.mipmaps.length>1,t.width=e.mipmaps[0].width,t.height=e.mipmaps[0].height,e.errors)throw new Error("KTX2 container - could not transcode the data. "+e.errors);for(let a=0;a=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===50&&t[6]===48&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};fc.URLConfig={jsDecoderModule:"https://cdn.babylonjs.com/babylon.ktx2Decoder.js",wasmUASTCToASTC:null,wasmUASTCToBC7:null,wasmUASTCToRGBA_UNORM:null,wasmUASTCToRGBA_SRGB:null,wasmUASTCToR8_UNORM:null,wasmUASTCToRG8_UNORM:null,jsMSCTranscoder:null,wasmMSCTranscoder:null,wasmZSTDDecoder:null};fc.DefaultNumWorkers=fc.GetDefaultNumWorkers();fc.DefaultDecoderOptions=new EP});var TP={};Be(TP,{_KTXTextureLoader:()=>SP});function Ble(n){switch(n){case 35916:return 33776;case 35918:return 33778;case 35919:return 33779;case 37493:return 37492;case 37497:return 37496;case 37495:return 37494;case 37840:return 37808;case 37841:return 37809;case 37842:return 37810;case 37843:return 37811;case 37844:return 37812;case 37845:return 37813;case 37846:return 37814;case 37847:return 37815;case 37848:return 37816;case 37849:return 37817;case 37850:return 37818;case 37851:return 37819;case 37852:return 37820;case 37853:return 37821;case 36493:return 36492}return null}var SP,AP=I(()=>{ek();lk();Pt();SP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r){if(Array.isArray(e))return;t._invertVScale=!t.invertY;let s=t.getEngine(),a=new Mo(e,6),o=a.numberOfMipmapLevels>1&&t.generateMipMaps;s._unpackFlipY(!0),a.uploadLevels(t,t.generateMipMaps),t.width=a.pixelWidth,t.height=a.pixelHeight,s._setCubeMapTextureParams(t,o,a.numberOfMipmapLevels-1),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}loadData(e,t,i,r){if(Mo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Mo(e,1),a=Ble(s.glInternalFormat);a?(t.format=a,t._useSRGBBuffer=t.getEngine()._getUseSRGBBuffer(!0,t.generateMipMaps),t._gammaSpace=!0):t.format=s.glInternalFormat,i(s.pixelWidth,s.pixelHeight,t.generateMipMaps,!0,()=>{s.uploadLevels(t,t.generateMipMaps)},s.isInvalid)}else fc.IsValid(e)?new fc(t.getEngine())._uploadAsync(e,t,r).then(()=>{i(t.width,t.height,t.generateMipMaps,!0,()=>{},!1)},a=>{ee.Warn(`Failed to load KTX2 texture data: ${a.message}`),i(0,0,!1,!1,()=>{},!0)}):(ee.Error("texture missing KTX identifier"),i(0,0,!1,!1,()=>{},!0))}}});function Ex(n){let e=0;return{id_length:n[e++],colormap_type:n[e++],image_type:n[e++],colormap_index:n[e++]|n[e++]<<8,colormap_length:n[e++]|n[e++]<<8,colormap_size:n[e++],origin:[n[e++]|n[e++]<<8,n[e++]|n[e++]<<8],width:n[e++]|n[e++]<<8,height:n[e++]|n[e++]<<8,pixel_size:n[e++],flags:n[e]}}function xP(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=Ex(e);if(i.id_length+t>e.length){ee.Error("Unable to load TGA file - Not enough data");return}t+=i.id_length;let r=!1,s=!1,a=!1;switch(i.image_type){case kle:r=!0;case Ule:s=!0;break;case Wle:r=!0;case Vle:break;case Hle:r=!0;case Gle:a=!0;break}let o,l=i.pixel_size>>3,c=i.width*i.height*l,f;if(s&&(f=e.subarray(t,t+=i.colormap_length*(i.colormap_size>>3))),r){o=new Uint8Array(c);let S,E,T,R=0,M=new Uint8Array(l);for(;t>Xle){default:case jle:d=0,u=1,p=i.width,h=0,m=1,_=i.height;break;case Yle:d=0,u=1,p=i.width,h=i.height-1,m=-1,_=-1;break;case qle:d=i.width-1,u=-1,p=-1,h=0,m=1,_=i.height;break;case Kle:d=i.width-1,u=-1,p=-1,h=i.height-1,m=-1,_=-1;break}let g="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=ice[g](i,f,o,h,m,_,d,u,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function Zle(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,h=n.height,u,m=0,_,p,g=new Uint8Array(d*h*4);for(p=i;p!==s;p+=r)for(_=a;_!==l;_+=o,m++)u=c[m],g[(_+d*p)*4+3]=255,g[(_+d*p)*4+2]=f[u*3+0],g[(_+d*p)*4+1]=f[u*3+1],g[(_+d*p)*4+0]=f[u*3+2];return g}function Qle(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u+=2){h=c[u+0]+(c[u+1]<<8);let g=((h&31744)>>10)*255/31|0,v=((h&992)>>5)*255/31|0,x=(h&31)*255/31|0;p[(m+f*_)*4+0]=g,p[(m+f*_)*4+1]=v,p[(m+f*_)*4+2]=x,p[(m+f*_)*4+3]=h&32768?0:255}return p}function $le(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=3)_[(u+f*m)*4+3]=255,_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2];return _}function Jle(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=4)_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2],_[(u+f*m)*4+3]=c[h+3];return _}function ece(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u++)h=c[u],p[(m+f*_)*4+0]=h,p[(m+f*_)*4+1]=h,p[(m+f*_)*4+2]=h,p[(m+f*_)*4+3]=255;return p}function tce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=2)_[(u+f*m)*4+0]=c[h+0],_[(u+f*m)*4+1]=c[h+0],_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+3]=c[h+1];return _}var Ule,Vle,Gle,kle,Wle,Hle,zle,Xle,Yle,Kle,jle,qle,ice,ck=I(()=>{Pt();Ule=1,Vle=2,Gle=3,kle=9,Wle=10,Hle=11,zle=48,Xle=4,Yle=0,Kle=1,jle=2,qle=3;ice={GetTGAHeader:Ex,UploadContent:xP,_getImageData8bits:Zle,_getImageData16bits:Qle,_getImageData24bits:$le,_getImageData32bits:Jle,_getImageDataGrey8bits:ece,_getImageDataGrey16bits:tce}});var fk={};Be(fk,{_TGATextureLoader:()=>RP});var RP,dk=I(()=>{ck();RP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".env not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Ex(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{xP(t,r)})}}});var Fg=I(()=>{});function nce(){let n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){let c=l-127;c<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,r[l]=-c-1,r[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,r[l]=13,r[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,f=0;for(;(c&8388608)===0;)c<<=1,f-=8388608;c&=-8388609,f+=947912704,s[l]=c|f}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}function Ax(n,e){let t=new Uint8Array(n),i=0;for(;t[e.value+i]!=0;)i+=1;let r=new TextDecoder().decode(t.slice(e.value,e.value+i));return e.value=e.value+i+1,r}function Io(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function oa(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function Bg(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function ym(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function MP(n,e){let t=n[e.value];return e.value+=1,t}function mk(n,e){let t;return"getBigInt64"in DataView.prototype?t=Number(n.getBigInt64(e.value,!0)):t=n.getUint32(e.value+4,!0)+Number(n.getUint32(e.value,!0)<<32),e.value+=8,t}function bn(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function pk(n,e){return sce(ym(n,e))}function sce(n){let e=(n&31744)>>10,t=n&1023;return(n>>15?-1:1)*(e?e===31?t?NaN:1/0:Math.pow(2,e-15)*(1+t/1024):6103515625e-14*(t/1024))}function ace(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=wt(n,-65504,65504),Sx.floatView[0]=n;let e=Sx.uint32View[0],t=e>>23&511;return Sx.baseTable[t]+((e&8388607)>>Sx.shiftTable[t])}function _k(n,e){return ace(bn(n,e))}function oce(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n).slice(e.value,e.value+t));return e.value=e.value+t,i}function lce(n,e){let t=Io(n,e),i=oa(n,e);return[t,i]}function cce(n,e){let t=oa(n,e),i=oa(n,e);return[t,i]}function fce(n,e){let t=bn(n,e),i=bn(n,e);return[t,i]}function dce(n,e){let t=bn(n,e),i=bn(n,e),r=bn(n,e);return[t,i,r]}function hce(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var ml,bP,Sx,Ug=I(()=>{Vn();Fg();(function(n){n[n.NO_COMPRESSION=0]="NO_COMPRESSION",n[n.RLE_COMPRESSION=1]="RLE_COMPRESSION",n[n.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",n[n.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",n[n.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",n[n.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"})(ml||(ml={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(bP||(bP={}));Sx=nce()});function CP(n,e){if(n.getUint32(0,!0)!=gce)throw new Error("Incorrect OpenEXR format");let t=n.getUint8(4),i=n.getUint8(5),r={singleTile:!!(i&2),longName:!!(i&4),deepFormat:!!(i&8),multiPart:!!(i&16)};e.value=8;let s={},a=!0;for(;a;){let o=Ax(n.buffer,e);if(!o)a=!1;else{let l=Ax(n.buffer,e),c=oa(n,e),f=gk(n,e,l,c);f===void 0?ee.Warn(`Unknown header attribute type ${l}'.`):s[o]=f}}if((i&-5)!=0)throw new Error("Unsupported file format");return{version:t,spec:r,...s}}var gce,vk=I(()=>{Pt();Ug();gce=20000630});function Mk(n,e){let t=0;for(let r=0;r<65536;++r)(r==0||n[r>>3]&1<<(r&7))&&(e[t++]=r);let i=t-1;for(;t<65536;)e[t++]=0;return i}function Tce(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function Ak(n,e,t,i,r){for(;t>t&(1<>i;if(c=new Uint8Array([c])[0],o.value+c>l)return null;let f=a[o.value-1];for(;c-- >0;)a[o.value++]=f}else if(o.value0;--t){let i=e+Vg[t]>>1;Vg[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|Vg[i]++<<6)}}function xce(n,e,t,i,r,s){let a=e,o=0,l=0;for(;i<=r;i++){if(a.value-e.value>t)return;let c=Ak(6,o,l,n,a),f=c.l;if(o=c.c,l=c.lc,s[i]=f,f==63){if(a.value-e.value>t)throw new Error("Error in HufUnpackEncTable");c=Ak(8,o,l,n,a);let d=c.l+6;if(o=c.c,l=c.lc,i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}else if(f>=59){let d=f-59+2;if(i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}}Ace(s)}function Ik(n){return n&63}function yk(n){return n>>6}function Rce(n,e,t,i){for(;e<=t;e++){let r=yk(n[e]),s=Ik(n[e]);if(r>>s)throw new Error("Invalid table entry");if(s>14){let a=i[r>>s-14];if(a.len)throw new Error("Invalid table entry");if(a.lit++,a.p){let o=a.p;a.p=new Array(a.lit);for(let l=0;l0;o--){let l=i[(r<<14-s)+a];if(l.len||l.p)throw new Error("Invalid table entry");l.len=s,l.lit=e,a++}}}return!0}function bce(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,h=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let _=c>>f-14&16383,p=e[_];if(p.len){f-=p.len;let g=PP(p.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else{if(!p.p)throw new Error("hufDecode issues");let g;for(g=0;g=v&&yk(n[p.p[g]])==(c>>f-v&(1<>=u,f-=u;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let _=PP(m.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else throw new Error("HufDecode issues")}return!0}function Ck(n,e,t,i,r,s){let a={value:0},o=t.value,l=oa(e,t),c=oa(e,t);t.value+=4;let f=oa(e,t);if(t.value+=4,l<0||l>=65537||c<0||c>=65537)throw new Error("Wrong HUF_ENCSIZE");let d=new Array(65537),h=new Array(16384);Tce(h);let u=i-(t.value-o);if(xce(n,t,u,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Rce(d,l,c,h),bce(d,h,n,t,f,c,s,r,a)}function LP(n){return n&65535}function xk(n){let e=LP(n);return e>32767?e-65536:e}function Cm(n,e){let t=xk(n),r=xk(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function Pm(n,e){let t=LP(n),i=LP(e),r=t-(i>>1)&Tk;return{a:i+r-Sce&Tk,b:r}}function Pk(n,e,t,i,r,s,a){let o=a<16384,l=t>r?r:t,c=1,f,d;for(;c<=l;)c<<=1;for(c>>=1,f=c,c>>=1;c>=1;){d=0;let h=d+s*(r-f),u=s*c,m=s*f,_=i*c,p=i*f,g,v,x,S;for(;d<=h;d+=m){let E=d,T=d+i*(t-f);for(;E<=T;E+=p){let R=E+_,M=E+u,y=M+_;if(o){let C=Cm(n[E+e],n[M+e]);g=C.a,x=C.b,C=Cm(n[R+e],n[y+e]),v=C.a,S=C.b,C=Cm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Cm(x,S),n[M+e]=C.a,n[y+e]=C.b}else{let C=Pm(n[E+e],n[M+e]);g=C.a,x=C.b,C=Pm(n[R+e],n[y+e]),v=C.a,S=C.b,C=Pm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Pm(x,S),n[M+e]=C.a,n[y+e]=C.b}}if(t&c){let R=E+u,M;o?M=Cm(n[E+e],n[R+e]):M=Pm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}if(r&c){let E=d,T=d+i*(t-f);for(;E<=T;E+=p){let R=E+_,M;o?M=Cm(n[E+e],n[R+e]):M=Pm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}f=c,c>>=1}return d}function Dk(n,e,t){for(let i=0;i{Ug();Fg();bk=16,Sce=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function OP(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function Fk(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(Ok(e)),i=new Uint8Array(t.length);return IP(t),yP(t,i),new DataView(i.buffer)}function NP(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return IP(t),yP(t,i),new DataView(i.buffer)}function Bk(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=n.lines*n.channels*n.width,r=n.type==1?new Uint16Array(i):new Uint32Array(i),s=0,a=0,o=new Array(4);for(let l=0;l=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(o<=l)for(let m=0;m{Lk();Nk();Ug();Fg()});var Ba,pl,wP=I(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(Ba||(Ba={}));pl=class{};pl.DefaultOutputType=Ba.HalfFloat;pl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function FP(n,e,t,i){let r={size:0,viewer:e,array:new Uint8Array(e.buffer),offset:t,width:n.dataWindow.xMax-n.dataWindow.xMin+1,height:n.dataWindow.yMax-n.dataWindow.yMin+1,channels:n.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(n.compression){case ml.NO_COMPRESSION:r.lines=1,r.uncompress=OP;break;case ml.RLE_COMPRESSION:r.lines=1,r.uncompress=Fk;break;case ml.ZIPS_COMPRESSION:r.lines=1,r.uncompress=NP,await _e.LoadScriptAsync(pl.FFLATEUrl);break;case ml.ZIP_COMPRESSION:r.lines=16,r.uncompress=NP,await _e.LoadScriptAsync(pl.FFLATEUrl);break;case ml.PIZ_COMPRESSION:r.lines=32,r.uncompress=Uk;break;case ml.PXR24_COMPRESSION:r.lines=16,r.uncompress=Bk,await _e.LoadScriptAsync(pl.FFLATEUrl);break;default:throw new Error(ml[n.compression]+" is unsupported")}r.scanlineBlockSize=r.lines;let s={};for(let c of n.channels)switch(c.name){case"R":case"G":case"B":case"A":s[c.name]=!0,r.type=c.pixelType;break;case"Y":s[c.name]=!0,r.type=c.pixelType;break;default:break}let a=!1;if(s.R&&s.G&&s.B&&s.A)r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G&&s.B)a=!0,r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G)r.outputChannels=2,r.decodeChannels={R:0,G:1};else if(s.R)r.outputChannels=1,r.decodeChannels={R:0};else if(s.Y)r.outputChannels=1,r.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(r.type===1)switch(i){case Ba.Float:r.getter=pk,r.inputSize=2;break;case Ba.HalfFloat:r.getter=ym,r.inputSize=2;break}else if(r.type===2)switch(i){case Ba.Float:r.getter=bn,r.inputSize=4;break;case Ba.HalfFloat:r.getter=_k,r.inputSize=4}else throw new Error("Unsupported pixelType "+r.type+" for "+n.compression);r.blockCount=r.height/r.scanlineBlockSize;for(let c=0;cc:r.scanOrder=c=>r.height-1-c,r.outputChannels==4?(r.format=5,r.linearSpace=!0):(r.format=6,r.linearSpace=!1),r}function BP(n,e,t,i){let r={value:0};for(let s=0;sn.height?n.height-a:n.scanlineBlockSize;let l=n.size=n.height)continue;let h=c*n.bytesPerLine,u=(n.height-1-d)*n.outLineWidth;for(let m=0;m{Ug();Vk();Fg();yi();wP()});var kk={};Be(kk,{ReadExrDataAsync:()=>Mce,_ExrTextureLoader:()=>UP});async function Mce(n){let e=new DataView(n),t={value:0},i=CP(e,t);try{let r=await FP(i,e,t,Ba.Float);return BP(r,i,e,t),r.byteArray?{width:i.dataWindow.xMax-i.dataWindow.xMin+1,height:i.dataWindow.yMax-i.dataWindow.yMin+1,data:new Float32Array(r.byteArray)}:(ee.Error("Failed to decode EXR data: No byte array available."),{width:0,height:0,data:null})}catch(r){ee.Error("Failed to load EXR data: ",r)}return{width:0,height:0,data:null}}var UP,Wk=I(()=>{vk();Gk();wP();Pt();UP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){throw".exr not supported in Cube."}loadData(e,t,i){let r=new DataView(e.buffer),s={value:0},a=CP(r,s);FP(a,r,s,pl.DefaultOutputType).then(o=>{BP(o,a,r,s);let l=a.dataWindow.xMax-a.dataWindow.xMin+1,c=a.dataWindow.yMax-a.dataWindow.yMin+1;i(l,c,t.generateMipMaps,!1,()=>{let f=t.getEngine();t.format=a.format,t.type=o.textureType,t.invertY=!1,t._gammaSpace=!a.linearSpace,o.byteArray&&f._uploadDataToTextureDirectly(t,o.byteArray,0,0,void 0,!0)})}).catch(o=>{ee.Error("Failed to load EXR texture: ",o)})}}});function dc(n,e){Ice(n)&&ee.Warn(`Extension with the name '${n}' already exists`),Rx.set(n,e)}function Ice(n){return Rx.delete(n)}function bx(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),Rx.has(n)||(n.endsWith(".ies")&&dc(".ies",async()=>await Promise.resolve().then(()=>(kV(),GV)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&dc(".dds",async()=>await Promise.resolve().then(()=>(HV(),WV)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&dc(".basis",async()=>await Promise.resolve().then(()=>(qV(),jV)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&dc(".env",async()=>await Promise.resolve().then(()=>(YG(),XG)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&dc(".hdr",async()=>await Promise.resolve().then(()=>(JG(),$G)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(dc(".ktx",async()=>await Promise.resolve().then(()=>(AP(),TP)).then(i=>new i._KTXTextureLoader)),dc(".ktx2",async()=>await Promise.resolve().then(()=>(AP(),TP)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&dc(".tga",async()=>await Promise.resolve().then(()=>(dk(),fk)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&dc(".exr",async()=>await Promise.resolve().then(()=>(Wk(),kk)).then(i=>new i._ExrTextureLoader)));let t=Rx.get(n);return t?Promise.resolve(t(e)):null}var Rx,VP=I(()=>{Pt();Rx=new Map});function Hk(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var zk=I(()=>{});var Xk=I(()=>{Os();Pt();Jl();mg();Vr();VP();zk();Ie.prototype._partialLoadFile=function(n,e,t,i,r=null){let s=o=>{t[e]=o,t._internalCount++,t._internalCount===6&&i(t)},a=(o,l)=>{r&&o&&r(o.status+" "+o.statusText,l)};this._loadFile(n,s,void 0,void 0,!0,a)};Ie.prototype._cascadeLoadFiles=function(n,e,t,i=null){let r=[];r._internalCount=0;for(let s=0;s<6;s++)this._partialLoadFile(t[s],s,r,e,i)};Ie.prototype._cascadeLoadImgs=function(n,e,t,i,r=null,s){let a=[];a._internalCount=0;for(let o=0;o<6;o++)this._partialLoadImg(i[o],o,a,n,e,t,r,s)};Ie.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=_f();xm(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,h)=>{i&&i.removePendingData(l),a&&a(d,h)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Ie.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h=null,u=null,m=!1,_=null){let p=d||new Oi(this,7);p.isCube=!0,p.url=n,p.generateMipMaps=!i,p._lodGenerationScale=c,p._lodGenerationOffset=f,p._useSRGBBuffer=!!m&&this._caps.supportSRGBBuffers&&(this.version>1||this.isWebGPU||!!i),p!==d&&(p.label=n.substring(0,60)),this._doNotHandleContextLost||(p._extension=o,p._files=t,p._buffer=_);let g=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:Hk(n),x=bx(v),S=(T,R)=>{p.dispose(),s?s(T,R):T&&ee.Warn(T)},E=(T,R)=>{n===g?T&&S(T.status+" "+T.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${g}`),this.createCubeTextureBase(g,e,t,!!i,r,S,a,o,l,c,f,p,h,u,m,_))};if(x)x.then(T=>{let R=M=>{h&&h(p,M),T.loadCubeData(M,p,l,r,(y,C)=>{S(y,C)})};_?R(_):t&&t.length===6?T.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(y=>new Uint8Array(y))),t,S):S("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,E)});else{if(!t||t.length===0)throw new Error("Cannot load cubemap because files were not defined, or the correct loader was not found.");this._cascadeLoadImgs(e,p,(T,R)=>{u&&u(T,R)},t,S)}return this._internalTexturesCache.push(p),p}});var lW={};Be(lW,{DDSTools:()=>To});function Mx(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function Cce(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var yce,Yk,Kk,jk,qk,Zk,Qk,$k,Jk,GP,eW,tW,iW,rW,Pce,kP,Dce,Lce,nW,sW,WP,aW,HP,oW,Oce,Nce,wce,Fce,Bce,Uce,Vce,To,KC=I(()=>{Vn();Pt();TC();WC();Xk();yce=542327876,Yk=131072,Kk=512,jk=4,qk=64,Zk=131072;Qk=Mx("DXT1"),$k=Mx("DXT3"),Jk=Mx("DXT5"),GP=Mx("DX10"),eW=113,tW=116,iW=2,rW=10,Pce=88,kP=31,Dce=0,Lce=1,nW=2,sW=3,WP=4,aW=7,HP=20,oW=21,Oce=22,Nce=23,wce=24,Fce=25,Bce=26,Uce=28,Vce=32,To=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,kP),i=new Int32Array(e.buffer,e.byteOffset,kP+4),r=1;t[nW]&Yk&&(r=Math.max(1,t[aW]));let s=t[oW],a=s===GP?i[Vce]:0,o=0;switch(s){case eW:o=2;break;case tW:o=1;break;case GP:if(a===rW){o=2;break}if(a===iW){o=1;break}}return{width:t[WP],height:t[sW],mipmapCount:r,isFourCC:(t[HP]&jk)===jk,isRGB:(t[HP]&qk)===qk,isLuminance:(t[HP]&Zk)===Zk,isCube:(t[Uce]&Kk)===Kk,isCompressed:s===Qk||s===$k||s===Jk,dxgiFormat:a,textureType:o}}static _GetHalfFloatAsFloatRGBAArrayBuffer(e,t,i,r,s,a){let o=new Float32Array(r),l=new Uint16Array(s,i),c=0;for(let f=0;f>8)}static _GetRGBArrayBuffer(e,t,i,r,s,a,o,l){let c=new Uint8Array(r),f=new Uint8Array(s,i),d=0;for(let h=0;h0?r.sphericalPolynomial=ec.ConvertCubeMapToSphericalPolynomial({size:h[WP],right:f[0],left:f[1],up:f[2],down:f[3],front:f[4],back:f[5],format:5,type:1,gammaSpace:!1}):r.sphericalPolynomial=void 0}};To.StoreLODInAlphaChannel=!1});var cW=I(()=>{os();Os();Pt();ug();vg();bt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var g;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(g=d._sphericalPolynomial)!=null?g:new cl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let h=3,u=this._gl,m=f.width;if(!m)return;let{DDSTools:_}=await Promise.resolve().then(()=>(KC(),lW)),p=[];for(let v=0;v{os();PA();bt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new al(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.STATIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.STATIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new al(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.DYNAMIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.DYNAMIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.updateUniformBuffer=function(n,e,t,i){this.bindUniformBuffer(n),t===void 0&&(t=0),i===void 0?e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,e):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,new Float32Array(e)):e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,e.subarray(t,t+i)):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,new Float32Array(e).subarray(t,t+i)),this.bindUniformBuffer(null)};bt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};bt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};bt.prototype.bindUniformBlock=function(n,e,t){let i=n.program,r=this._gl.getUniformBlockIndex(i,e);r!==4294967295&&this._gl.uniformBlockBinding(i,r,t)}});var dW=I(()=>{ba();Vr();Ie.prototype.displayLoadingUI=function(){if(!ur())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Ie.prototype.hideLoadingUI=function(){if(!ur())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Ie.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Ie.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Ie.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Ie.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var hW=I(()=>{Vr();Ie.prototype.getInputElement=function(){return this._renderingCanvas};Ie.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Ie.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Ie.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Ie.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Ie.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var zP=I(()=>{Vr();Ie.prototype.setAlphaEquation=function(n,e=0){if(this._alphaEquation[e]!==n){switch(n){case 0:this._alphaState.setAlphaEquationParameters(32774,32774,e);break;case 1:this._alphaState.setAlphaEquationParameters(32778,32778,e);break;case 2:this._alphaState.setAlphaEquationParameters(32779,32779,e);break;case 3:this._alphaState.setAlphaEquationParameters(32776,32776,e);break;case 4:this._alphaState.setAlphaEquationParameters(32775,32775,e);break;case 5:this._alphaState.setAlphaEquationParameters(32775,32774,e);break}this._alphaEquation[e]=n}}});var uW=I(()=>{Vr();zP();Ie.prototype.getInputElement=function(){return this._renderingCanvas};Ie.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Ie.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Ie.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Ie.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Ie.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Ie.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Ie.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Ie.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Ie.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Ie.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Ie.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var mW=I(()=>{Vr();zP();Ie.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Ie.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Ie.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Ie.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Ie.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Ie.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Ie.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Ie.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Ie.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Ie.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Ie.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Ie.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Ie.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Ie.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Ie.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Ie.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Ie.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Ie.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Ie.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Ie.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Ie.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Ie.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Ie.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Ie.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Ie.prototype.cacheStencilState=function(){this._cachedStencilBuffer=this.getStencilBuffer(),this._cachedStencilFunction=this.getStencilFunction(),this._cachedStencilMask=this.getStencilMask(),this._cachedStencilOperationPass=this.getStencilOperationPass(),this._cachedStencilOperationFail=this.getStencilOperationFail(),this._cachedStencilOperationDepthFail=this.getStencilOperationDepthFail(),this._cachedStencilReference=this.getStencilFunctionReference()};Ie.prototype.restoreStencilState=function(){this.setStencilFunction(this._cachedStencilFunction),this.setStencilMask(this._cachedStencilMask),this.setStencilBuffer(this._cachedStencilBuffer),this.setStencilOperationPass(this._cachedStencilOperationPass),this.setStencilOperationFail(this._cachedStencilOperationFail),this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail),this.setStencilFunctionReference(this._cachedStencilReference)}});var pW=I(()=>{Vr();Ie.prototype.getRenderPassNames=function(){return this._renderPassNames};Ie.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Ie.prototype.createRenderPassId=function(n){let e=++Ie._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Ie.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{Vr();Ie.prototype._loadFileAsync=async function(n,e,t){return await new Promise((i,r)=>{this._loadFile(n,s=>{i(s)},void 0,e,t,(s,a)=>{r(a)})})}});var gW=I(()=>{VP();Vr();Ie.GetCompatibleTextureLoader=bx});function Gce(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function vW(n,e,t){n._onCanvasFocus=()=>{n.onCanvasFocusObservable.notifyObservers(n)},n._onCanvasBlur=()=>{n.onCanvasBlurObservable.notifyObservers(n)},n._onCanvasContextMenu=r=>{n.disableContextMenu&&r.preventDefault()},e.addEventListener("focus",n._onCanvasFocus),e.addEventListener("blur",n._onCanvasBlur),e.addEventListener("contextmenu",n._onCanvasContextMenu),n._onBlur=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.disable(),n._windowIsBackground=!0},n._onFocus=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.enable(),n._windowIsBackground=!1},n._onCanvasPointerOut=r=>{document.elementFromPoint(r.clientX,r.clientY)!==e&&n.onCanvasPointerOutObservable.notifyObservers(r)};let i=n.getHostWindow();i&&typeof i.addEventListener=="function"&&(i.addEventListener("blur",n._onBlur),i.addEventListener("focus",n._onFocus)),e.addEventListener("pointerout",n._onCanvasPointerOut),t.doNotHandleTouchAction||Gce(e),!Ie.audioEngine&&t.audioEngine&&Ie.AudioEngineFactory&&(Ie.audioEngine=Ie.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),uf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&XP(e)},document.addEventListener("fullscreenchange",n._onFullscreenChange,!1),document.addEventListener("webkitfullscreenchange",n._onFullscreenChange,!1),n._onPointerLockChange=()=>{n.isPointerLock=document.pointerLockElement===e},document.addEventListener("pointerlockchange",n._onPointerLockChange,!1),document.addEventListener("webkitpointerlockchange",n._onPointerLockChange,!1)),n.enableOfflineSupport=Ie.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function EW(n,e){Oe.Instances.length===1&&Ie.audioEngine&&(Ie.audioEngine.dispose(),Ie.audioEngine=null);let t=n.getHostWindow();t&&typeof t.removeEventListener=="function"&&(t.removeEventListener("blur",n._onBlur),t.removeEventListener("focus",n._onFocus)),e&&(e.removeEventListener("focus",n._onCanvasFocus),e.removeEventListener("blur",n._onCanvasBlur),e.removeEventListener("pointerout",n._onCanvasPointerOut),e.removeEventListener("contextmenu",n._onCanvasContextMenu)),uf()&&(document.removeEventListener("fullscreenchange",n._onFullscreenChange),document.removeEventListener("mozfullscreenchange",n._onFullscreenChange),document.removeEventListener("webkitfullscreenchange",n._onFullscreenChange),document.removeEventListener("msfullscreenchange",n._onFullscreenChange),document.removeEventListener("pointerlockchange",n._onPointerLockChange),document.removeEventListener("mspointerlockchange",n._onPointerLockChange),document.removeEventListener("mozpointerlockchange",n._onPointerLockChange),document.removeEventListener("webkitpointerlockchange",n._onPointerLockChange))}function SW(n){let e=document.createElement("span");e.textContent="Hg",e.style.font=n;let t=document.createElement("div");t.style.display="inline-block",t.style.width="1px",t.style.height="0px",t.style.verticalAlign="bottom";let i=document.createElement("div");i.style.whiteSpace="nowrap",i.appendChild(e),i.appendChild(t),document.body.appendChild(i);let r,s;try{s=t.getBoundingClientRect().top-e.getBoundingClientRect().top,t.style.verticalAlign="baseline",r=t.getBoundingClientRect().top-e.getBoundingClientRect().top}finally{document.body.removeChild(i)}return{ascent:r,height:s,descent:s-r}}async function TW(n,e,t){return await new Promise((i,r)=>{let s=new Image;s.onload=()=>{s.decode().then(()=>{n.createImageBitmap(s,t).then(a=>{i(a)})})},s.onerror=()=>{r(`Error loading image ${s.src}`)},s.src=e})}function AW(n,e,t,i){let s=n.createCanvas(t,i).getContext("2d");if(!s)throw new Error("Unable to get 2d context for resizeImageBitmap");return s.drawImage(e,0,0),s.getImageData(0,0,t,i).data}function xW(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function RW(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function XP(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function bW(){document.exitPointerLock&&document.exitPointerLock()}var MW=I(()=>{ba();Vr();Ni()});var Ve,YP=I(()=>{Os();Ni();os();xU();PA();Pt();oC();RU();yU();CU();PU();DU();NU();wU();FU();cW();fW();dW();hW();uW();mW();pW();dC();_W();gW();Vr();MW();nP();sl();Ve=class n extends bt{static get NpmPackage(){return Ie.NpmPackage}static get Version(){return Ie.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Ie.DefaultLoadingScreenFactory(e)}get _supportsHardwareTextureRescaling(){return!!n._RescalePostProcessFactory}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}constructor(e,t,i,r=!1){super(e,t,i,r),this.customAnimationFrameRequester=null,this._performanceMonitor=new LA,this._drawCalls=new ul,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),vW(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return AW(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await TW(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&xW(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&RW()}setDitheringState(e){e?this._gl.enable(this._gl.DITHER):this._gl.disable(this._gl.DITHER)}setRasterizerState(e){e?this._gl.disable(this._gl.RASTERIZER_DISCARD):this._gl.enable(this._gl.RASTERIZER_DISCARD)}setDirectViewport(e,t,i,r){let s=this._cachedViewport;return this._cachedViewport=null,this._viewport(e,t,i,r),s}scissorClear(e,t,i,r,s){this.enableScissor(e,t,i,r),this.clear(s,!0,!0,!0),this.disableScissor()}enableScissor(e,t,i,r){let s=this._gl;s.enable(s.SCISSOR_TEST),s.scissor(e,t,i,r)}disableScissor(){let e=this._gl;e.disable(e.SCISSOR_TEST)}getVertexShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[0]):null}getFragmentShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[1]):null}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e,this._framebufferDimensionsObject&&this.onResizeObservable.notifyObservers(this)}_rebuildBuffers(){for(let e of this.scenes)e.resetCachedMaterial(),e._rebuildGeometries();for(let e of this._virtualScenes)e.resetCachedMaterial(),e._rebuildGeometries();super._rebuildBuffers()}getFontOffset(e){return SW(e)}_cancelFrame(){if(this.customAnimationFrameRequester){if(this._frameHandler!==0){this._frameHandler=0;let{cancelAnimationFrame:e}=this.customAnimationFrameRequester;e&&e(this.customAnimationFrameRequester.requestID)}}else super._cancelFrame()}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this.customAnimationFrameRequester?(this.customAnimationFrameRequester.requestID=this._queueNewFrame(this.customAnimationFrameRequester.renderFunction||this._boundRenderFunction,this.customAnimationFrameRequester),this._frameHandler=this.customAnimationFrameRequester.requestID):this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}enterPointerlock(){this._renderingCanvas&&XP(this._renderingCanvas)}exitPointerlock(){bW()}beginFrame(){this._measureFps(),super.beginFrame()}_deletePipelineContext(e){let t=e;t&&t.program&&t.transformFeedback&&(this.deleteTransformFeedback(t.transformFeedback),t.transformFeedback=null),super._deletePipelineContext(e)}createShaderProgram(e,t,i,r,s,a=null){s=s||this._gl,this.onBeforeShaderCompilationObservable.notifyObservers(this);let o=super.createShaderProgram(e,t,i,r,s,a);return this.onAfterShaderCompilationObservable.notifyObservers(this),o}_createShaderProgram(e,t,i,r,s=null){let a=r.createProgram();if(e.program=a,!a)throw new Error("Unable to create program");if(r.attachShader(a,t),r.attachShader(a,i),this.webGLVersion>1&&s){let o=this.createTransformFeedback();this.bindTransformFeedback(o),this.setTranformFeedbackVaryings(a,s),e.transformFeedback=o}return r.linkProgram(a),this.webGLVersion>1&&s&&this.bindTransformFeedback(null),e.context=r,e.vertexShader=t,e.fragmentShader=i,e.isParallelCompiled||this._finalizePipelineContext(e),a}_releaseTexture(e){super._releaseTexture(e)}_releaseRenderTargetWrapper(e){super._releaseRenderTargetWrapper(e);for(let t of this.scenes){for(let i of t.postProcesses)i._outputTexture===e&&(i._outputTexture=null);for(let i of t.cameras)for(let r of i._postProcesses)r&&r._outputTexture===e&&(r._outputTexture=null)}}_rescaleTexture(e,t,i,r,s){this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE);let a=this.createRenderTargetTexture({width:t.width,height:t.height},{generateMipMaps:!1,type:0,samplingMode:2,generateDepthBuffer:!1,generateStencilBuffer:!1});if(!this._rescalePostProcess&&n._RescalePostProcessFactory&&(this._rescalePostProcess=n._RescalePostProcessFactory(this)),this._rescalePostProcess){this._rescalePostProcess.externalTextureSamplerBinding=!0;let o=()=>{this._rescalePostProcess.onApply=function(f){f._bindTexture("textureSampler",e)};let c=i;c||(c=this.scenes[this.scenes.length-1]),c.postProcessManager.directRender([this._rescalePostProcess],a,!0),this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),this._gl.copyTexImage2D(this._gl.TEXTURE_2D,0,r,0,0,t.width,t.height,0),this.unBindFramebuffer(a),a.dispose(),s&&s()},l=this._rescalePostProcess.getEffect();l?l.executeWhenCompiled(o):this._rescalePostProcess.onEffectCreatedObservable.addOnce(c=>{c.executeWhenCompiled(o)})}}wrapWebGLTexture(e,t=!1,i=3,r=0,s=0){let a=new sm(e,this._gl),o=new Oi(this,0,!0);return o._hardwareTexture=a,o.baseWidth=r,o.baseHeight=s,o.width=r,o.height=s,o.isReady=!0,o.useMipMaps=t,this.updateTextureSamplingMode(i,o),o}_uploadImageToTexture(e,t,i=0,r=0){let s=this._gl,a=this._getWebGLTextureType(e.type),o=this._getInternalFormat(e.format),l=this._getRGBABufferInternalSizedFormat(e.type,o),c=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(c,e,!0),this._unpackFlipY(e.invertY);let f=s.TEXTURE_2D;e.isCube&&(f=s.TEXTURE_CUBE_MAP_POSITIVE_X+i),s.texImage2D(f,r,l,o,a,t),this._bindTextureDirectly(c,null,!0)}updateTextureComparisonFunction(e,t){if(this.webGLVersion===1){ee.Error("WebGL 1 does not support texture comparison.");return}let i=this._gl;e.isCube?(this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,e,!0),t===0?(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)):(this._bindTextureDirectly(this._gl.TEXTURE_2D,e,!0),t===0?(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_2D,null)),e._comparisonFunction=t}createInstancesBuffer(e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create instance buffer");let i=new al(t);return i.capacity=e,this.bindArrayBuffer(i),this._gl.bufferData(this._gl.ARRAY_BUFFER,e,this._gl.DYNAMIC_DRAW),i.references=1,i}deleteInstancesBuffer(e){this._gl.deleteBuffer(e)}async _clientWaitAsync(e,t=0,i=10){let r=this._gl;return await new Promise((s,a)=>{nl(()=>{let o=r.clientWaitSync(e,t,0);if(o==r.WAIT_FAILED)throw new Error("clientWaitSync failed");return o!=r.TIMEOUT_EXPIRED},s,a,i)})}_readPixelsAsync(e,t,i,r,s,a,o){if(this._webGLVersion<2)throw new Error("_readPixelsAsync only work on WebGL2+");let l=this._gl,c=l.createBuffer();l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.bufferData(l.PIXEL_PACK_BUFFER,o.byteLength,l.STREAM_READ),l.readPixels(e,t,i,r,s,a,0),l.bindBuffer(l.PIXEL_PACK_BUFFER,null);let f=l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE,0);return f?(l.flush(),this._clientWaitAsync(f,0,10).then(()=>(l.deleteSync(f),l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,o),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),l.deleteBuffer(c),o))):null}dispose(){this.hideLoadingUI(),this._rescalePostProcess&&this._rescalePostProcess.dispose(),EW(this,this._renderingCanvas),super.dispose()}};Ve.ALPHA_DISABLE=0;Ve.ALPHA_ADD=1;Ve.ALPHA_COMBINE=2;Ve.ALPHA_SUBTRACT=3;Ve.ALPHA_MULTIPLY=4;Ve.ALPHA_MAXIMIZED=5;Ve.ALPHA_ONEONE=6;Ve.ALPHA_PREMULTIPLIED=7;Ve.ALPHA_PREMULTIPLIED_PORTERDUFF=8;Ve.ALPHA_INTERPOLATE=9;Ve.ALPHA_SCREENMODE=10;Ve.DELAYLOADSTATE_NONE=0;Ve.DELAYLOADSTATE_LOADED=1;Ve.DELAYLOADSTATE_LOADING=2;Ve.DELAYLOADSTATE_NOTLOADED=4;Ve.NEVER=512;Ve.ALWAYS=519;Ve.LESS=513;Ve.EQUAL=514;Ve.LEQUAL=515;Ve.GREATER=516;Ve.GEQUAL=518;Ve.NOTEQUAL=517;Ve.KEEP=7680;Ve.REPLACE=7681;Ve.INCR=7682;Ve.DECR=7683;Ve.INVERT=5386;Ve.INCR_WRAP=34055;Ve.DECR_WRAP=34056;Ve.TEXTURE_CLAMP_ADDRESSMODE=0;Ve.TEXTURE_WRAP_ADDRESSMODE=1;Ve.TEXTURE_MIRROR_ADDRESSMODE=2;Ve.TEXTUREFORMAT_ALPHA=0;Ve.TEXTUREFORMAT_LUMINANCE=1;Ve.TEXTUREFORMAT_LUMINANCE_ALPHA=2;Ve.TEXTUREFORMAT_RGB=4;Ve.TEXTUREFORMAT_RGBA=5;Ve.TEXTUREFORMAT_RED=6;Ve.TEXTUREFORMAT_R=6;Ve.TEXTUREFORMAT_R16_UNORM=33322;Ve.TEXTUREFORMAT_RG16_UNORM=33324;Ve.TEXTUREFORMAT_RGB16_UNORM=32852;Ve.TEXTUREFORMAT_RGBA16_UNORM=32859;Ve.TEXTUREFORMAT_R16_SNORM=36760;Ve.TEXTUREFORMAT_RG16_SNORM=36761;Ve.TEXTUREFORMAT_RGB16_SNORM=36762;Ve.TEXTUREFORMAT_RGBA16_SNORM=36763;Ve.TEXTUREFORMAT_RG=7;Ve.TEXTUREFORMAT_RED_INTEGER=8;Ve.TEXTUREFORMAT_R_INTEGER=8;Ve.TEXTUREFORMAT_RG_INTEGER=9;Ve.TEXTUREFORMAT_RGB_INTEGER=10;Ve.TEXTUREFORMAT_RGBA_INTEGER=11;Ve.TEXTURETYPE_UNSIGNED_BYTE=0;Ve.TEXTURETYPE_UNSIGNED_INT=0;Ve.TEXTURETYPE_FLOAT=1;Ve.TEXTURETYPE_HALF_FLOAT=2;Ve.TEXTURETYPE_BYTE=3;Ve.TEXTURETYPE_SHORT=4;Ve.TEXTURETYPE_UNSIGNED_SHORT=5;Ve.TEXTURETYPE_INT=6;Ve.TEXTURETYPE_UNSIGNED_INTEGER=7;Ve.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;Ve.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;Ve.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;Ve.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;Ve.TEXTURETYPE_UNSIGNED_INT_24_8=12;Ve.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;Ve.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;Ve.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;Ve.TEXTURE_NEAREST_SAMPLINGMODE=1;Ve.TEXTURE_BILINEAR_SAMPLINGMODE=2;Ve.TEXTURE_TRILINEAR_SAMPLINGMODE=3;Ve.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;Ve.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;Ve.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;Ve.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;Ve.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;Ve.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;Ve.TEXTURE_NEAREST_LINEAR=7;Ve.TEXTURE_NEAREST_NEAREST=1;Ve.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;Ve.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;Ve.TEXTURE_LINEAR_LINEAR=2;Ve.TEXTURE_LINEAR_NEAREST=12;Ve.TEXTURE_EXPLICIT_MODE=0;Ve.TEXTURE_SPHERICAL_MODE=1;Ve.TEXTURE_PLANAR_MODE=2;Ve.TEXTURE_CUBIC_MODE=3;Ve.TEXTURE_PROJECTION_MODE=4;Ve.TEXTURE_SKYBOX_MODE=5;Ve.TEXTURE_INVCUBIC_MODE=6;Ve.TEXTURE_EQUIRECTANGULAR_MODE=7;Ve.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;Ve.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;Ve.SCALEMODE_FLOOR=1;Ve.SCALEMODE_NEAREST=2;Ve.SCALEMODE_CEILING=3});var KP,_i,la=I(()=>{Gt();ke();Vt();hi();Ni();un();br();KP=class{constructor(){this._doNotSerialize=!1,this._isDisposed=!1,this._sceneRootNodesIndex=-1,this._isEnabled=!0,this._isParentEnabled=!0,this._isReady=!0,this._onEnabledStateChangedObservable=new ie,this._onClonedObservable=new ie,this._inheritVisibility=!1,this._isVisible=!0}},_i=class n{static AddNodeConstructor(e,t){this._NodeConstructors[e]=t}static Construct(e,t,i,r){let s=this._NodeConstructors[e];return s?s(t,i,r):null}set accessibilityTag(e){this._accessibilityTag=e,this.onAccessibilityTagChangedObservable.notifyObservers(e)}get accessibilityTag(){return this._accessibilityTag}get doNotSerialize(){return this._nodeDataStorage._doNotSerialize?!0:this._parentNode?this._parentNode.doNotSerialize:!1}set doNotSerialize(e){this._nodeDataStorage._doNotSerialize=e}isDisposed(){return this._nodeDataStorage._isDisposed}set parent(e){if(this._parentNode===e)return;let t=this._parentNode;if(this._parentNode&&this._parentNode._children!==void 0&&this._parentNode._children!==null){let i=this._parentNode._children.indexOf(this);i!==-1&&this._parentNode._children.splice(i,1),!e&&!this._nodeDataStorage._isDisposed&&this._addToSceneRootNodes()}this._parentNode=e,this._isDirty=!0,this._parentNode&&((this._parentNode._children===void 0||this._parentNode._children===null)&&(this._parentNode._children=new Array),this._parentNode._children.push(this),t||this._removeFromSceneRootNodes()),this._syncParentEnabledState()}get parent(){return this._parentNode}get inheritVisibility(){return this._nodeDataStorage._inheritVisibility}set inheritVisibility(e){this._nodeDataStorage._inheritVisibility=e}get isVisible(){return this.inheritVisibility&&this._parentNode&&!this._parentNode.isVisible?!1:this._nodeDataStorage._isVisible}set isVisible(e){this._nodeDataStorage._isVisible=e}_serializeAsParent(e){e.parentId=this.uniqueId}_addToSceneRootNodes(){this._nodeDataStorage._sceneRootNodesIndex===-1&&(this._nodeDataStorage._sceneRootNodesIndex=this._scene.rootNodes.length,this._scene.rootNodes.push(this))}_removeFromSceneRootNodes(){if(this._nodeDataStorage._sceneRootNodesIndex!==-1){let e=this._scene.rootNodes,t=e.length-1;e[this._nodeDataStorage._sceneRootNodesIndex]=e[t],e[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex=this._nodeDataStorage._sceneRootNodesIndex,this._scene.rootNodes.pop(),this._nodeDataStorage._sceneRootNodesIndex=-1}}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}getClassName(){return"Node"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onEnabledStateChangedObservable(){return this._nodeDataStorage._onEnabledStateChangedObservable}get onClonedObservable(){return this._nodeDataStorage._onClonedObservable}constructor(e,t=null,i=!0){this._isDirty=!1,this._nodeDataStorage=new KP,this.state="",this.metadata=null,this.reservedDataStore=null,this._accessibilityTag=null,this.onAccessibilityTagChangedObservable=new ie,this._parentContainer=null,this.animations=[],this._ranges={},this.onReady=null,this._currentRenderId=-1,this._parentUpdateId=-1,this._childUpdateId=-1,this._waitingParentId=null,this._waitingParentInstanceIndex=null,this._waitingParsedUniqueId=null,this._cache={},this._parentNode=null,this._children=null,this._worldMatrix=q.Identity(),this._worldMatrixDeterminant=0,this._worldMatrixDeterminantIsDirty=!0,this._animationPropertiesOverride=null,this._isNode=!0,this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._behaviors=new Array,this.name=e,this.id=e,this._scene=t||Oe.LastCreatedScene,this.uniqueId=this._scene.getUniqueId(),this._initCache(),i&&this._addToSceneRootNodes()}getScene(){return this._scene}getEngine(){return this._scene.getEngine()}addBehavior(e,t=!1){return this._behaviors.indexOf(e)!==-1?this:(e.init(),this._scene.isLoading&&!t?this._scene.onDataLoadedObservable.addOnce(()=>{this._behaviors.includes(e)&&e.attach(this)}):e.attach(this),this._behaviors.push(e),this)}removeBehavior(e){let t=this._behaviors.indexOf(e);return t===-1?this:(this._behaviors[t].detach(),this._behaviors.splice(t,1),this)}get behaviors(){return this._behaviors}getBehaviorByName(e){for(let t of this._behaviors)if(t.name===e)return t;return null}getWorldMatrix(){return this._currentRenderId!==this._scene.getRenderId()&&this.computeWorldMatrix(),this._worldMatrix}_getWorldMatrixDeterminant(){return this._worldMatrixDeterminantIsDirty&&(this._worldMatrixDeterminantIsDirty=!1,this._worldMatrixDeterminant=this._worldMatrix.determinant()),this._worldMatrixDeterminant}get worldMatrixFromCache(){return this._worldMatrix}_initCache(){this._cache={}}updateCache(e){!e&&this.isSynchronized()||this._updateCache()}_getActionManagerForTrigger(e,t=!0){return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_updateCache(e){}_isSynchronized(){return!0}_markSyncedWithParent(){this._parentNode&&(this._parentUpdateId=this._parentNode._childUpdateId)}isSynchronizedWithParent(){return this._parentNode?this._parentNode._isDirty||this._parentUpdateId!==this._parentNode._childUpdateId?!1:this._parentNode.isSynchronized():!0}isSynchronized(){return this._parentNode&&!this.isSynchronizedWithParent()?!1:this._isSynchronized()}isReady(e=!1){return this._nodeDataStorage._isReady}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,this._isDirty=!0,this}isEnabled(e=!0){return e===!1?this._nodeDataStorage._isEnabled:this._nodeDataStorage._isEnabled?this._nodeDataStorage._isParentEnabled:!1}_syncParentEnabledState(){if(this._nodeDataStorage._isParentEnabled=this._parentNode?this._parentNode.isEnabled():!0,this._children)for(let e of this._children)e._syncParentEnabledState()}setEnabled(e){this._nodeDataStorage._isEnabled!==e&&(this._nodeDataStorage._isEnabled=e,this._syncParentEnabledState(),this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(e))}isDescendantOf(e){return this.parent?this.parent===e?!0:this.parent.isDescendantOf(e):!1}_getDescendants(e,t=!1,i){if(this._children)for(let r=0;r(!t||t(r))&&r.cullingStrategy!==void 0),i}getChildren(e,t=!0){return this.getDescendants(t,e)}_setReady(e){if(e!==this._nodeDataStorage._isReady){if(!e){this._nodeDataStorage._isReady=!1;return}this.onReady&&this.onReady(this),this._nodeDataStorage._isReady=!0}}getAnimationByName(e){for(let t=0;tnew n(e,this.getScene()),this);if(t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;a{throw Qe("AnimationRange")};_i._NodeConstructors={};P([F()],_i.prototype,"name",void 0);P([F()],_i.prototype,"id",void 0);P([F()],_i.prototype,"uniqueId",void 0);P([F()],_i.prototype,"state",void 0);P([F()],_i.prototype,"metadata",void 0)});function jP(n,e,t){try{let i=n.next();i.done?e(i):i.value?i.value.then(()=>{i.value=void 0,e(i)},t):e(i)}catch(i){t(i)}}function IW(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{jP(t,i,r)},0)):jP(t,i,r)}}function yW(n,e,t,i,r){let s=()=>{let a,o=l=>{l.done?t(l.value):a===void 0?a=!0:s()};do a=void 0,!r||!r.aborted?e(n,o,i):i(new Error("Aborted")),a===void 0&&(a=!1);while(a)};s()}function kg(n,e){let t;return yW(n,jP,i=>t=i,i=>{throw i},e),t}async function CW(n,e,t){return await new Promise((i,r)=>{yW(n,e,i,r,t)})}function PW(n,e){return(...t)=>kg(n(...t),e)}var qP=I(()=>{});var mt,_l=I(()=>{Gt();Vt();So();yi();hi();ke();la();Pt();Yi();un();_m();BA();br();mt=class n extends _i{get position(){return this._position}set position(e){this._position=e}set upVector(e){this._upVector=e}get upVector(){return this._upVector}get screenArea(){var i,r,s,a;let e,t;if(this.mode===n.PERSPECTIVE_CAMERA)this.fovMode===n.FOVMODE_VERTICAL_FIXED?(t=this.minZ*2*Math.tan(this.fov/2),e=this.getEngine().getAspectRatio(this)*t):(e=this.minZ*2*Math.tan(this.fov/2),t=e/this.getEngine().getAspectRatio(this));else{let o=this.getEngine().getRenderWidth()/2,l=this.getEngine().getRenderHeight()/2;e=((i=this.orthoRight)!=null?i:o)-((r=this.orthoLeft)!=null?r:-o),t=((s=this.orthoTop)!=null?s:l)-((a=this.orthoBottom)!=null?a:-l)}return e*t}set orthoLeft(e){this._orthoLeft=e;for(let t of this._rigCameras)t.orthoLeft=e}get orthoLeft(){return this._orthoLeft}set orthoRight(e){this._orthoRight=e;for(let t of this._rigCameras)t.orthoRight=e}get orthoRight(){return this._orthoRight}set orthoBottom(e){this._orthoBottom=e;for(let t of this._rigCameras)t.orthoBottom=e}get orthoBottom(){return this._orthoBottom}set orthoTop(e){this._orthoTop=e;for(let t of this._rigCameras)t.orthoTop=e}get orthoTop(){return this._orthoTop}setFocalLength(e,t=36){this.fov=2*Math.atan(t/(2*e))}set mode(e){this._mode=e;for(let t of this._rigCameras)t.mode=e}get mode(){return this._mode}get hasMoved(){return this._hasMoved}constructor(e,t,i,r=!0){super(e,i,!1),this._position=b.Zero(),this._upVector=b.Up(),this.oblique=null,this._orthoLeft=null,this._orthoRight=null,this._orthoBottom=null,this._orthoTop=null,this.fov=.8,this.projectionPlaneTilt=0,this.minZ=1,this.maxZ=1e4,this.inertia=.9,this._mode=n.PERSPECTIVE_CAMERA,this.isIntermediate=!1,this.viewport=new go(0,0,1,1),this.layerMask=268435455,this.fovMode=n.FOVMODE_VERTICAL_FIXED,this.cameraRigMode=n.RIG_MODE_NONE,this.ignoreCameraMaxZ=!1,this.customRenderTargets=[],this.outputRenderTarget=null,this.onViewMatrixChangedObservable=new ie,this.onProjectionMatrixChangedObservable=new ie,this.onAfterCheckInputsObservable=new ie,this.onRestoreStateObservable=new ie,this.isRigCamera=!1,this._hasMoved=!1,this._rigCameras=new Array,this._skipRendering=!1,this._projectionMatrix=new q,this._postProcesses=new Array,this._activeMeshes=new Vi(256),this._globalPosition=b.Zero(),this._computedViewMatrix=q.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=q.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=Xe.Identity(),this._isCamera=!0,this._isLeftCamera=!1,this._isRightCamera=!1,this.layerMask=this.getScene().defaultCameraLayerMask,this.getScene().addCamera(this),r&&!this.getScene().activeCamera&&(this.getScene().activeCamera=this),this.position=t,this.renderPassId=this.getScene().getEngine().createRenderPassId(`Camera ${e}`)}storeState(){return this._stateStored=!0,this._storedFov=this.fov,this}hasStateStored(){return!!this._stateStored}_restoreStateValues(){return this._stateStored?(this.fov=this._storedFov,!0):!1}restoreState(){return this._restoreStateValues()?(this.onRestoreStateObservable.notifyObservers(this),!0):!1}getClassName(){return"Camera"}toString(e){let t="Name: "+this.name;if(t+=", type: "+this.getClassName(),this.animations)for(let i=0;i-1?(ee.Error("You're trying to reuse a post process not defined as reusable."),0):(t==null||t<0?this._postProcesses.push(e):this._postProcesses[t]===null?this._postProcesses[t]=e:this._postProcesses.splice(t,0,e),this._cascadePostProcessesToRigCams(),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._postProcesses.indexOf(e))}detachPostProcess(e){let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses[t]=null),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._cascadePostProcessesToRigCams()}getWorldMatrix(){return this._isSynchronizedViewMatrix()?this._worldMatrix:(this.getViewMatrix(),this._worldMatrix)}_getViewMatrix(){return q.Identity()}getViewMatrix(e){return!e&&this._isSynchronizedViewMatrix()?this._computedViewMatrix:(this._hasMoved=!0,this.updateCache(),this._computedViewMatrix=this._getViewMatrix(),this._currentRenderId=this.getScene().getRenderId(),this._childUpdateId++,this._refreshFrustumPlanes=!0,this._cameraRigParams&&this._cameraRigParams.vrPreViewMatrix&&this._computedViewMatrix.multiplyToRef(this._cameraRigParams.vrPreViewMatrix,this._computedViewMatrix),this.parent&&this.parent.onViewMatrixChangedObservable&&this.parent.onViewMatrixChangedObservable.notifyObservers(this.parent),this.onViewMatrixChangedObservable.notifyObservers(this),this._computedViewMatrix.invertToRef(this._worldMatrix),this._worldMatrix.getTranslationToRef(this._globalPosition),this._computedViewMatrix)}freezeProjectionMatrix(e){this._doNotComputeProjectionMatrix=!0,e!==void 0&&(this._projectionMatrix=e)}unfreezeProjectionMatrix(){this._doNotComputeProjectionMatrix=!1}getProjectionMatrix(e){var a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E,T,R,M;if(this._doNotComputeProjectionMatrix||!e&&this._isSynchronizedProjectionMatrix())return this._projectionMatrix;let t=this.ignoreCameraMaxZ?0:this.maxZ;this._cache.mode=this.mode,this._cache.minZ=this.minZ,this._cache.maxZ=t,this._refreshFrustumPlanes=!0;let i=this.getEngine(),r=this.getScene(),s=i.useReverseDepthBuffer;if(this.mode===n.PERSPECTIVE_CAMERA){this._cache.fov=this.fov,this._cache.fovMode=this.fovMode,this._cache.aspectRatio=i.getAspectRatio(this),this._cache.projectionPlaneTilt=this.projectionPlaneTilt,this.minZ<=0&&(this.minZ=.1);let y;r.useRightHandedSystem?y=q.PerspectiveFovRHToRef:y=q.PerspectiveFovLHToRef,y(this.fov,i.getAspectRatio(this),s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,this.fovMode===n.FOVMODE_VERTICAL_FIXED,i.isNDCHalfZRange,this.projectionPlaneTilt,s)}else{let y=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?q.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-y,(o=this.orthoRight)!=null?o:y,(l=this.orthoBottom)!=null?l:-C,(c=this.orthoTop)!=null?c:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):q.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-y,(d=this.orthoRight)!=null?d:y,(h=this.orthoBottom)!=null?h:-C,(u=this.orthoTop)!=null?u:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?q.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-y,(_=this.orthoRight)!=null?_:y,(p=this.orthoBottom)!=null?p:-C,(g=this.orthoTop)!=null?g:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):q.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-y,(x=this.orthoRight)!=null?x:y,(S=this.orthoBottom)!=null?S:-C,(E=this.orthoTop)!=null?E:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange),this._cache.orthoLeft=this.orthoLeft,this._cache.orthoRight=this.orthoRight,this._cache.orthoBottom=this.orthoBottom,this._cache.orthoTop=this.orthoTop,this._cache.obliqueAngle=(T=this.oblique)==null?void 0:T.angle,this._cache.obliqueLength=(R=this.oblique)==null?void 0:R.length,this._cache.obliqueOffset=(M=this.oblique)==null?void 0:M.offset,this._cache.renderWidth=i.getRenderWidth(),this._cache.renderHeight=i.getRenderHeight()}return this.onProjectionMatrixChangedObservable.notifyObservers(this),this._projectionMatrix}getTransformationMatrix(){return this._computedViewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._transformMatrix}_computeObliqueDistance(e){let t=this,i=this;return(t.radius||(i.target?b.Distance(this.position,i.target):this.position.length()))+e}_updateFrustumPlanes(){this._refreshFrustumPlanes&&(this.getTransformationMatrix(),this._frustumPlanes?pf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=pf.GetPlanes(this._transformMatrix),this._refreshFrustumPlanes=!1)}isInFrustum(e,t=!1){if(this._updateFrustumPlanes(),t&&this.rigCameras.length>0){let i=!1;for(let r of this.rigCameras)r._updateFrustumPlanes(),i=i||e.isInFrustum(r._frustumPlanes);return i}else return e.isInFrustum(this._frustumPlanes)}isCompletelyInFrustum(e){return this._updateFrustumPlanes(),e.isCompletelyInFrustum(this._frustumPlanes)}getForwardRay(e=100,t,i){throw Qe("Ray")}getForwardRayToRef(e,t=100,i,r){throw Qe("Ray")}dispose(e,t=!1){for(this.onViewMatrixChangedObservable.clear(),this.onProjectionMatrixChangedObservable.clear(),this.onAfterCheckInputsObservable.clear(),this.onRestoreStateObservable.clear(),this.inputs&&this.inputs.clear(),this.getScene().stopAnimation(this),this.getScene().removeCamera(this);this._rigCameras.length>0;){let r=this._rigCameras.pop();r&&r.dispose()}if(this._parentContainer){let r=this._parentContainer.cameras.indexOf(this);r>-1&&this._parentContainer.cameras.splice(r,1),this._parentContainer=null}if(this._rigPostProcess)this._rigPostProcess.dispose(this),this._rigPostProcess=null,this._postProcesses.length=0;else if(this.cameraRigMode!==n.RIG_MODE_NONE)this._rigPostProcess=null,this._postProcesses.length=0;else{let r=this._postProcesses.length;for(;--r>=0;){let s=this._postProcesses[r];s&&s.dispose(this)}}let i=this.customRenderTargets.length;for(;--i>=0;)this.customRenderTargets[i].dispose();this.customRenderTargets.length=0,this._activeMeshes.dispose(),this.getScene().getEngine().releaseRenderPassId(this.renderPassId),super.dispose(e,t)}get isLeftCamera(){return this._isLeftCamera}get isRightCamera(){return this._isRightCamera}get leftCamera(){return this._rigCameras.length<1?null:this._rigCameras[0]}get rightCamera(){return this._rigCameras.length<2?null:this._rigCameras[1]}getLeftTarget(){return this._rigCameras.length<1?null:this._rigCameras[0].getTarget()}getRightTarget(){return this._rigCameras.length<2?null:this._rigCameras[1].getTarget()}setCameraRigMode(e,t){if(this.cameraRigMode!==e){for(;this._rigCameras.length>0;){let i=this._rigCameras.pop();i&&i.dispose()}if(this.cameraRigMode=e,this._cameraRigParams={},this._cameraRigParams.interaxialDistance=t.interaxialDistance||.0637,this._cameraRigParams.stereoHalfAngle=_e.ToRadians(this._cameraRigParams.interaxialDistance/.0637),this.cameraRigMode!==n.RIG_MODE_NONE){let i=this.createRigCamera(this.name+"_L",0);i&&(i._isLeftCamera=!0);let r=this.createRigCamera(this.name+"_R",1);r&&(r._isRightCamera=!0),i&&r&&(this._rigCameras.push(i),this._rigCameras.push(r))}this._setRigMode(t),this._cascadePostProcessesToRigCams(),this.update()}}_setRigMode(e){}_getVRProjectionMatrix(){return q.PerspectiveFovLHToRef(this._cameraRigParams.vrMetrics.aspectRatioFov,this._cameraRigParams.vrMetrics.aspectRatio,this.minZ,this.ignoreCameraMaxZ?0:this.maxZ,this._cameraRigParams.vrWorkMatrix,!0,this.getEngine().isNDCHalfZRange),this._cameraRigParams.vrWorkMatrix.multiplyToRef(this._cameraRigParams.vrHMatrix,this._projectionMatrix),this._projectionMatrix}setCameraRigParameter(e,t){this._cameraRigParams||(this._cameraRigParams={}),this._cameraRigParams[e]=t,e==="interaxialDistance"&&(this._cameraRigParams.stereoHalfAngle=_e.ToRadians(t/.0637))}createRigCamera(e,t){return null}_updateRigCameras(){for(let e=0;en._CreateDefaultParsedCamera(t,i))}computeWorldMatrix(){return this.getWorldMatrix()}static Parse(e,t){let i=e.type,r=n.GetConstructorFromName(i,e.name,t,e.interaxial_distance,e.isStereoscopicSideBySide),s=it.Parse(r,e,t);if(e.parentId!==void 0&&(s._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(s._waitingParentInstanceIndex=e.parentInstanceIndex),s.inputs&&(s.inputs.parse(e),s._setupInputs()),e.upVector&&(s.upVector=b.FromArray(e.upVector)),s.setPosition&&(s.position.copyFromFloats(0,0,0),s.setPosition(b.FromArray(e.position))),e.target&&s.setTarget&&s.setTarget(b.FromArray(e.target)),e.cameraRigMode){let a=e.interaxial_distance?{interaxialDistance:e.interaxial_distance}:{};s.setCameraRigMode(e.cameraRigMode,a)}if(e.animations){for(let a=0;a{throw Qe("UniversalCamera")};mt.PERSPECTIVE_CAMERA=0;mt.ORTHOGRAPHIC_CAMERA=1;mt.FOVMODE_VERTICAL_FIXED=0;mt.FOVMODE_HORIZONTAL_FIXED=1;mt.RIG_MODE_NONE=0;mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;mt.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;mt.RIG_MODE_STEREOSCOPIC_INTERLACED=14;mt.RIG_MODE_VR=20;mt.RIG_MODE_CUSTOM=22;mt.ForceAttachControlToAlwaysPreventDefault=!1;P([Xr("position")],mt.prototype,"_position",void 0);P([Xr("upVector")],mt.prototype,"_upVector",void 0);P([F()],mt.prototype,"orthoLeft",null);P([F()],mt.prototype,"orthoRight",null);P([F()],mt.prototype,"orthoBottom",null);P([F()],mt.prototype,"orthoTop",null);P([F()],mt.prototype,"fov",void 0);P([F()],mt.prototype,"projectionPlaneTilt",void 0);P([F()],mt.prototype,"minZ",void 0);P([F()],mt.prototype,"maxZ",void 0);P([F()],mt.prototype,"inertia",void 0);P([F()],mt.prototype,"mode",null);P([F()],mt.prototype,"layerMask",void 0);P([F()],mt.prototype,"fovMode",void 0);P([F()],mt.prototype,"cameraRigMode",void 0);P([F()],mt.prototype,"interaxialDistance",void 0);P([F()],mt.prototype,"isStereoscopicSideBySide",void 0);P([F()],mt.prototype,"ignoreCameraMaxZ",void 0)});var ph,ZP=I(()=>{ph=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var If,QP=I(()=>{ol();ke();Un();If=class n{constructor(e,t,i){this.vectors=mn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=mn(3,b.Zero),this.vectorsWorld=mn(8,b.Zero),this.minimumWorld=b.Zero(),this.maximumWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this._drawWrapperFront=null,this._drawWrapperBack=null,this.reConstruct(e,t,i)}reConstruct(e,t,i){let r=e.x,s=e.y,a=e.z,o=t.x,l=t.y,c=t.z,f=this.vectors;this.minimum.copyFromFloats(r,s,a),this.maximum.copyFromFloats(o,l,c),f[0].copyFromFloats(r,s,a),f[1].copyFromFloats(o,l,c),f[2].copyFromFloats(o,s,a),f[3].copyFromFloats(r,l,a),f[4].copyFromFloats(r,s,c),f[5].copyFromFloats(o,l,a),f[6].copyFromFloats(r,l,c),f[7].copyFromFloats(o,s,c),t.addToRef(e,this.center).scaleInPlace(.5),t.subtractToRef(e,this.extendSize).scaleInPlace(.5),this._worldMatrix=i||q.IdentityReadOnly,this._update(this._worldMatrix)}scale(e){let t=n._TmpVector3,i=this.maximum.subtractToRef(this.minimum,t[0]),r=i.length();i.normalizeFromLength(r);let s=r*e,a=i.scaleInPlace(s*.5),o=this.center.subtractToRef(a,t[1]),l=this.center.addToRef(a,t[2]);return this.reConstruct(o,l,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){let t=this.minimumWorld,i=this.maximumWorld,r=this.directions,s=this.vectorsWorld,a=this.vectors;if(e.isIdentity()){t.copyFrom(this.minimum),i.copyFrom(this.maximum);for(let o=0;o<8;++o)s[o].copyFrom(a[o]);this.extendSizeWorld.copyFrom(this.extendSize),this.centerWorld.copyFrom(this.center)}else{t.setAll(Number.MAX_VALUE),i.setAll(-Number.MAX_VALUE);for(let o=0;o<8;++o){let l=s[o];b.TransformCoordinatesToRef(a[o],e,l),t.minimizeInPlace(l),i.maximizeInPlace(l)}i.subtractToRef(t,this.extendSizeWorld).scaleInPlace(.5),i.addToRef(t,this.centerWorld).scaleInPlace(.5)}b.FromArrayToRef(e.m,0,r[0]),b.FromArrayToRef(e.m,4,r[1]),b.FromArrayToRef(e.m,8,r[2]),this._worldMatrix=e}isInFrustum(e){return n.IsInFrustum(this.vectorsWorld,e)}isCompletelyInFrustum(e){return n.IsCompletelyInFrustum(this.vectorsWorld,e)}intersectsPoint(e){let t=this.minimumWorld,i=this.maximumWorld,r=t.x,s=t.y,a=t.z,o=i.x,l=i.y,c=i.z,f=e.x,d=e.y,h=e.z,u=-Nt;return!(o-ff-r||l-dd-s||c-hh-a)}intersectsSphere(e){return n.IntersectsSphere(this.minimumWorld,this.maximumWorld,e.centerWorld,e.radiusWorld)}intersectsMinMax(e,t){let i=this.minimumWorld,r=this.maximumWorld,s=i.x,a=i.y,o=i.z,l=r.x,c=r.y,f=r.z,d=e.x,h=e.y,u=e.z,m=t.x,_=t.y,p=t.z;return!(lm||c_||fp)}dispose(){var e,t;(e=this._drawWrapperFront)==null||e.dispose(),(t=this._drawWrapperBack)==null||t.dispose()}static Intersects(e,t){return e.intersectsMinMax(t.minimumWorld,t.maximumWorld)}static IntersectsSphere(e,t,i,r){let s=n._TmpVector3[0];return b.ClampToRef(i,e,t,s),b.DistanceSquared(i,s)<=r*r}static IsCompletelyInFrustum(e,t){for(let i=0;i<6;++i){let r=t[i];for(let s=0;s<8;++s)if(r.dotCoordinate(e[s])<0)return!1}return!0}static IsInFrustum(e,t){for(let i=0;i<6;++i){let r=!0,s=t[i];for(let a=0;a<8;++a)if(s.dotCoordinate(e[a])>=0){r=!1;break}if(r)return!1}return!0}};If._TmpVector3=mn(3,b.Zero)});var Dm,DW=I(()=>{ol();ke();Dm=class n{constructor(e,t,i){this.center=b.Zero(),this.centerWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this.reConstruct(e,t,i)}reConstruct(e,t,i){this.minimum.copyFrom(e),this.maximum.copyFrom(t);let r=b.Distance(e,t);t.addToRef(e,this.center).scaleInPlace(.5),this.radius=r*.5,this._update(i||q.IdentityReadOnly)}scale(e){let t=this.radius*e,i=n._TmpVector3,r=i[0].setAll(t),s=this.center.subtractToRef(r,i[1]),a=this.center.addToRef(r,i[2]);return this.reConstruct(s,a,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){if(e.isIdentity())this.centerWorld.copyFrom(this.center),this.radiusWorld=this.radius;else{b.TransformCoordinatesToRef(this.center,e,this.centerWorld);let t=n._TmpVector3[0];b.TransformNormalFromFloatsToRef(1,1,1,e,t),this.radiusWorld=Math.max(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z))*this.radius}}isInFrustum(e){let t=this.centerWorld,i=this.radiusWorld;for(let r=0;r<6;r++)if(e[r].dotCoordinate(t)<=-i)return!1;return!0}isCenterInFrustum(e){let t=this.centerWorld;for(let i=0;i<6;i++)if(e[i].dotCoordinate(t)<0)return!1;return!0}intersectsPoint(e){let t=b.DistanceSquared(this.centerWorld,e);return!(this.radiusWorld*this.radiusWorld{ol();ke();QP();DW();$P={min:0,max:0},JP={min:0,max:0},LW=(n,e,t)=>{let i=b.Dot(e.centerWorld,n),r=Math.abs(b.Dot(e.directions[0],n))*e.extendSize.x,s=Math.abs(b.Dot(e.directions[1],n))*e.extendSize.y,a=Math.abs(b.Dot(e.directions[2],n))*e.extendSize.z,o=r+s+a;t.min=i-o,t.max=i+o},ds=(n,e,t)=>(LW(n,e,$P),LW(n,t,JP),!($P.min>JP.max||JP.min>$P.max)),pn=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new If(e,t,i),this.boundingSphere=new Dm(e,t,i)}reConstruct(e,t,i){this.boundingBox.reConstruct(e,t,i),this.boundingSphere.reConstruct(e,t,i)}get minimum(){return this.boundingBox.minimum}get maximum(){return this.boundingBox.maximum}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e}update(e){this._isLocked||(this.boundingBox._update(e),this.boundingSphere._update(e))}centerOn(e,t){let i=n._TmpVector3[0].copyFrom(e).subtractInPlace(t),r=n._TmpVector3[1].copyFrom(e).addInPlace(t);return this.boundingBox.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this.boundingSphere.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this}encapsulate(e){let t=b.Minimize(this.minimum,e),i=b.Maximize(this.maximum,e);return this.reConstruct(t,i,this.boundingBox.getWorldMatrix()),this}encapsulateBoundingInfo(e){let t=$.Matrix[0];this.boundingBox.getWorldMatrix().invertToRef(t);let i=$.Vector3[0];return b.TransformCoordinatesToRef(e.boundingBox.minimumWorld,t,i),this.encapsulate(i),b.TransformCoordinatesToRef(e.boundingBox.maximumWorld,t,i),this.encapsulate(i),this}scale(e){return this.boundingBox.scale(e),this.boundingSphere.scale(e),this}isInFrustum(e,t=0){return(t===2||t===3)&&this.boundingSphere.isCenterInFrustum(e)?!0:this.boundingSphere.isInFrustum(e)?t===1||t===3?!0:this.boundingBox.isInFrustum(e):!1}get diagonalLength(){let e=this.boundingBox;return e.maximumWorld.subtractToRef(e.minimumWorld,n._TmpVector3[0]).length()}isCompletelyInFrustum(e){return this.boundingBox.isCompletelyInFrustum(e)}_checkCollision(e){return e._canDoCollision(this.boundingSphere.centerWorld,this.boundingSphere.radiusWorld,this.boundingBox.minimumWorld,this.boundingBox.maximumWorld)}intersectsPoint(e){return!(!this.boundingSphere.centerWorld||!this.boundingSphere.intersectsPoint(e)||!this.boundingBox.intersectsPoint(e))}intersects(e,t){if(!Dm.Intersects(this.boundingSphere,e.boundingSphere)||!If.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!ds(i.directions[0],i,r)||!ds(i.directions[1],i,r)||!ds(i.directions[2],i,r)||!ds(r.directions[0],i,r)||!ds(r.directions[1],i,r)||!ds(r.directions[2],i,r)||!ds(b.Cross(i.directions[0],r.directions[0]),i,r)||!ds(b.Cross(i.directions[0],r.directions[1]),i,r)||!ds(b.Cross(i.directions[0],r.directions[2]),i,r)||!ds(b.Cross(i.directions[1],r.directions[0]),i,r)||!ds(b.Cross(i.directions[1],r.directions[1]),i,r)||!ds(b.Cross(i.directions[1],r.directions[2]),i,r)||!ds(b.Cross(i.directions[2],r.directions[0]),i,r)||!ds(b.Cross(i.directions[2],r.directions[1]),i,r)||!ds(b.Cross(i.directions[2],r.directions[2]),i,r))}};pn._TmpVector3=mn(2,b.Zero)});function OW(n,e,t,i,r=null){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return Om.extractMinAndMaxIndexed(n,e,t,i,s,a),r&&(s.x-=s.x*r.x+r.y,s.y-=s.y*r.x+r.y,s.z-=s.z*r.x+r.y,a.x+=a.x*r.x+r.y,a.y+=a.y*r.x+r.y,a.z+=a.z*r.x+r.y),{minimum:s,maximum:a}}function Ix(n,e,t,i=null,r){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return r||(r=3),Om.extractMinAndMax(n,e,t,r,s,a),i&&(s.x-=s.x*i.x+i.y,s.y-=s.y*i.x+i.y,s.z-=s.z*i.x+i.y,a.x+=a.x*i.x+i.y,a.y+=a.y*i.x+i.y,a.z+=a.z*i.x+i.y),{minimum:s,maximum:a}}var Om,yx=I(()=>{Gt();ke();Vt();Om=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],Om,"extractMinAndMaxIndexed",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],Om,"extractMinAndMax",null)});var Us,Wg=I(()=>{Wi();ZP();Lm();yx();oh();Us=class n{get materialDefines(){var t;let e=this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.defines:(t=this._getDrawWrapper())==null?void 0:t.defines;return typeof e=="string"?null:e}set materialDefines(e){var i;let t=(i=this._mainDrawWrapperOverride)!=null?i:this._getDrawWrapper(void 0,!0);t.defines=e}_getDrawWrapper(e,t=!1){e=e!=null?e:this._engine.currentRenderPassId;let i=this._drawWrappers[e];return!i&&t&&(this._drawWrappers[e]=i=new cs(this._mesh.getScene().getEngine())),i}_removeDrawWrapper(e,t=!0,i=!1){var r;t&&((r=this._drawWrappers[e])==null||r.dispose(i)),this._drawWrappers[e]=void 0}get effect(){var e,t;return this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.effect:(t=(e=this._getDrawWrapper())==null?void 0:e.effect)!=null?t:null}get _drawWrapper(){var e;return(e=this._mainDrawWrapperOverride)!=null?e:this._getDrawWrapper(void 0,!0)}get _drawWrapperOverride(){return this._mainDrawWrapperOverride}_setMainDrawWrapperOverride(e){this._mainDrawWrapperOverride=e}setEffect(e,t=null,i,r=!0){let s=this._drawWrapper;s.setEffect(e,t,r),i!==void 0&&(s.materialContext=i),e||(s.defines=null,s.materialContext=void 0)}resetDrawCache(e,t=!1){if(this._drawWrappers)if(e!==void 0){this._removeDrawWrapper(e,!0,t);return}else for(let i of this._drawWrappers)i==null||i.dispose(t);this._drawWrappers=[]}static AddToMesh(e,t,i,r,s,a,o,l=!0){return new n(e,t,i,r,s,a,o,l)}constructor(e,t,i,r,s,a,o,l=!0,c=!0){this.materialIndex=e,this.verticesStart=t,this.verticesCount=i,this.indexStart=r,this.indexCount=s,this._mainDrawWrapperOverride=null,this._linesIndexCount=0,this._linesIndexBuffer=null,this._lastColliderWorldVertices=null,this._lastColliderTransformMatrix=null,this._wasDispatched=!1,this._renderId=0,this._alphaIndex=0,this._distanceToCamera=0,this._currentMaterial=null,this._mesh=a,this._renderingMesh=o||a,c&&a.subMeshes.push(this),this._engine=this._mesh.getScene().getEngine(),this.resetDrawCache(),this._trianglePlanes=[],this._id=a.subMeshes.length-1,l&&(this.refreshBoundingInfo(),a.computeWorldMatrix(!0))}get IsGlobal(){return this.verticesStart===0&&this.verticesCount===this._mesh.getTotalVertices()&&this.indexStart===0&&this.indexCount===this._mesh.getTotalIndices()}getBoundingInfo(){return this.IsGlobal||this._mesh.hasThinInstances?this._mesh.getBoundingInfo():this._boundingInfo}setBoundingInfo(e){return this._boundingInfo=e,this}getMesh(){return this._mesh}getRenderingMesh(){return this._renderingMesh}getReplacementMesh(){return this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null}getEffectiveMesh(){let e=this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null;return e||this._renderingMesh}getMaterial(e=!0){var i;let t=(i=this._renderingMesh.getMaterialForRenderPass(this._engine.currentRenderPassId))!=null?i:this._renderingMesh.material;if(t){if(this._isMultiMaterial(t)){let r=t.getSubMaterial(this.materialIndex);return this._currentMaterial!==r&&(this._currentMaterial=r,this.resetDrawCache()),r}}else return e&&this._mesh.getScene()._hasDefaultMaterial?this._mesh.getScene().defaultMaterial:null;return t}_isMultiMaterial(e){return e.getSubMaterial!==void 0}refreshBoundingInfo(e=null){if(this._lastColliderWorldVertices=null,this.IsGlobal||!this._renderingMesh||!this._renderingMesh.geometry)return this;if(e||(e=this._renderingMesh.getVerticesData(D.PositionKind)),!e)return this._boundingInfo=this._mesh.getBoundingInfo(),this;let t=this._renderingMesh.getIndices(),i;if(this.indexStart===0&&this.indexCount===t.length){let r=this._renderingMesh.getBoundingInfo();i={minimum:r.minimum.clone(),maximum:r.maximum.clone()}}else i=OW(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new pn(i.minimum,i.maximum),this}_checkCollision(e){return this.getBoundingInfo()._checkCollision(e)}updateBoundingInfo(e){let t=this.getBoundingInfo();return t||(this.refreshBoundingInfo(),t=this.getBoundingInfo()),t&&t.update(e),this}isInFrustum(e){let t=this.getBoundingInfo();return t?t.isInFrustum(e,this._mesh.cullingStrategy):!1}isCompletelyInFrustum(e){let t=this.getBoundingInfo();return t?t.isCompletelyInFrustum(e):!1}render(e){return this._renderingMesh.render(this,e,this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:void 0),this}_getLinesIndexBuffer(e,t){if(!this._linesIndexBuffer){let i=Math.floor(this.indexCount/3)*6,s=this.verticesStart+this.verticesCount>65535?new Uint32Array(i):new Uint16Array(i),a=0;if(e.length===0)for(let o=this.indexStart;ol&&(l=h)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var Hg,ye,pr=I(()=>{Gt();ke();Wi();un();Ht();Pt();Vt();qP();pg();Wg();Hg=class{},ye=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=PW(this._applyToCoroutine.bind(this)),this.uniqueId=n._UniqueIdGenerator,n._UniqueIdGenerator++}set(e,t){switch(e.length||ee.Warn(`Setting vertex data kind '${t}' with an empty array`),t){case D.PositionKind:this.positions=e;break;case D.NormalKind:this.normals=e;break;case D.TangentKind:this.tangents=e;break;case D.UVKind:this.uvs=e;break;case D.UV2Kind:this.uvs2=e;break;case D.UV3Kind:this.uvs3=e;break;case D.UV4Kind:this.uvs4=e;break;case D.UV5Kind:this.uvs5=e;break;case D.UV6Kind:this.uvs6=e;break;case D.ColorKind:this.colors=e;break;case D.MatricesIndicesKind:this.matricesIndices=e;break;case D.MatricesWeightsKind:this.matricesWeights=e;break;case D.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case D.MatricesWeightsExtraKind:this.matricesWeightsExtra=e;break}}applyToMesh(e,t){return this._applyTo(e,t,!1),this}applyToGeometry(e,t){return this._applyTo(e,t,!1),this}updateMesh(e){return this._update(e),this}updateGeometry(e){return this._update(e),this}*_applyToCoroutine(e,t=!1,i){if(this.positions&&(e.setVerticesData(D.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(D.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(D.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(D.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(D.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(D.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(D.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(D.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(D.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(D.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(D.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(D.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(D.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(D.MatricesWeightsExtraKind,this.matricesWeightsExtra,t),i&&(yield)),this.indices?(e.setIndices(this.indices,null,t),i&&(yield)):e.setIndices([],null),e.subMeshes&&this.materialInfos&&this.materialInfos.length>1){let r=e;r.subMeshes=[];for(let s of this.materialInfos)new Us(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(D.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(D.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(D.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(D.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(D.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(D.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(D.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(D.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(D.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(D.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(D.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(D.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(D.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(D.MatricesWeightsExtraKind,this.matricesWeightsExtra,t,i),this.indices&&e.setIndices(this.indices,null),this}static _TransformVector3Coordinates(e,t,i=0,r=e.length){let s=$.Vector3[0],a=$.Vector3[1];for(let o=i;o({vertexData:o})):[{vertexData:e}];return kg(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var u,m,_,p;this._validate();let l=t.map(g=>g.vertexData),c=this;if(o)for(let g of l)g&&(g._validate(),!this.normals&&g.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&g.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&g.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&g.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&g.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&g.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&g.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&g.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&g.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&g.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&g.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&g.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&g.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let g of l)if(g){if(o)this.normals&&!g.normals&&(g.normals=new Float32Array(g.positions.length)),this.tangents&&!g.tangents&&(g.tangents=new Float32Array(g.positions.length/3*4)),this.uvs&&!g.uvs&&(g.uvs=new Float32Array(g.positions.length/3*2)),this.uvs2&&!g.uvs2&&(g.uvs2=new Float32Array(g.positions.length/3*2)),this.uvs3&&!g.uvs3&&(g.uvs3=new Float32Array(g.positions.length/3*2)),this.uvs4&&!g.uvs4&&(g.uvs4=new Float32Array(g.positions.length/3*2)),this.uvs5&&!g.uvs5&&(g.uvs5=new Float32Array(g.positions.length/3*2)),this.uvs6&&!g.uvs6&&(g.uvs6=new Float32Array(g.positions.length/3*2)),this.colors&&!g.colors&&(g.colors=new Float32Array(g.positions.length/3*4),g.colors.fill(1)),this.matricesIndices&&!g.matricesIndices&&(g.matricesIndices=new Float32Array(g.positions.length/3*4)),this.matricesWeights&&!g.matricesWeights&&(g.matricesWeights=new Float32Array(g.positions.length/3*4)),this.matricesIndicesExtra&&!g.matricesIndicesExtra&&(g.matricesIndicesExtra=new Float32Array(g.positions.length/3*4)),this.matricesWeightsExtra&&!g.matricesWeightsExtra&&(g.matricesWeightsExtra=new Float32Array(g.positions.length/3*4));else if(g._validate(),!this.normals!=!g.normals||!this.tangents!=!g.tangents||!this.uvs!=!g.uvs||!this.uvs2!=!g.uvs2||!this.uvs3!=!g.uvs3||!this.uvs4!=!g.uvs4||!this.uvs5!=!g.uvs5||!this.uvs6!=!g.uvs6||!this.colors!=!g.colors||!this.matricesIndices!=!g.matricesIndices||!this.matricesWeights!=!g.matricesWeights||!this.matricesIndicesExtra!=!g.matricesIndicesExtra||!this.matricesWeightsExtra!=!g.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let g,v=0,x=0,S=[],E=null,T=[];for(let M of this.splitBasedOnMaterialID())T.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let y of M.vertexData.splitBasedOnMaterialID())T.push({vertexData:y,transform:M.transform});T.sort((M,y)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,L=y.vertexData.materialInfos?y.vertexData.materialInfos[0].materialIndex:0;return C>L?1:C===L?0:-1});for(let M of T){let y=M.vertexData;if(y.materialInfos?g=y.materialInfos[0].materialIndex:g=0,E&&E.materialIndex===g)E.indexCount+=y.indices.length,E.verticesCount+=y.positions.length/3;else{let C=new Hg;C.materialIndex=g,C.indexStart=v,C.indexCount=y.indices.length,C.verticesStart=x,C.verticesCount=y.positions.length/3,S.push(C),E=C}v+=y.indices.length,x+=y.positions.length/3}let R=T.splice(0,1)[0];c=R.vertexData,e=R.transform,l=T.map(M=>M.vertexData),t=T,this.materialInfos=S}let f=l.reduce((g,v)=>{var x,S;return g+((S=(x=v.indices)==null?void 0:x.length)!=null?S:0)},(m=(u=c.indices)==null?void 0:u.length)!=null?m:0),h=s||l.some(g=>g.indices===c.indices)?(_=c.indices)==null?void 0:_.slice():c.indices;if(f>0){let g=(p=h==null?void 0:h.length)!=null?p:0;if(h||(h=new Array(f)),h.length!==f){if(Array.isArray(h))h.length=f;else{let x=i||h instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);x.set(h),h=x}e&&e.determinant()<0&&n._FlipFaces(h,0,g)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:x,transform:S}of t)if(x.indices){for(let E=0;E[g.vertexData.positions,g.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(D.NormalKind,c.normals,e,t.map(g=>[g.vertexData.normals,g.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(D.TangentKind,c.tangents,e,t.map(g=>[g.vertexData.tangents,g.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(D.UVKind,c.uvs,e,t.map(g=>[g.vertexData.uvs,g.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(D.UV2Kind,c.uvs2,e,t.map(g=>[g.vertexData.uvs2,g.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(D.UV3Kind,c.uvs3,e,t.map(g=>[g.vertexData.uvs3,g.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(D.UV4Kind,c.uvs4,e,t.map(g=>[g.vertexData.uvs4,g.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(D.UV5Kind,c.uvs5,e,t.map(g=>[g.vertexData.uvs5,g.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(D.UV6Kind,c.uvs6,e,t.map(g=>[g.vertexData.uvs6,g.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(D.ColorKind,c.colors,e,t.map(g=>[g.vertexData.colors,g.transform])),(c.hasVertexAlpha!==void 0||t.some(g=>g.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(g=>g.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(D.MatricesIndicesKind,c.matricesIndices,e,t.map(g=>[g.vertexData.matricesIndices,g.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(D.MatricesWeightsKind,c.matricesWeights,e,t.map(g=>[g.vertexData.matricesWeights,g.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(D.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(g=>[g.vertexData.matricesIndicesExtra,g.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(D.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(g=>[g.vertexData.matricesWeightsExtra,g.transform]))),this}static _MergeElement(e,t,i,r){let s=r.filter(l=>l[0]!==null&&l[0]!==void 0);if(!t&&s.length==0)return t;if(!t)return this._MergeElement(e,s[0][0],s[0][1],s.slice(1));let a=s.reduce((l,c)=>l+c[0].length,t.length),o=e===D.PositionKind?n._TransformVector3Coordinates:e===D.NormalKind?n._TransformVector3Normals:e===D.TangentKind?n._TransformVector4Normals:()=>{};if(t instanceof Float32Array){let l=new Float32Array(a);l.set(t),i&&o(l,i,0,t.length);let c=t.length;for(let[f,d]of s)l.set(f,c),d&&o(l,d,c,f.length),c+=f.length;return l}else{let l=new Array(a);for(let f=0;f{let a=D.DeduceStride(r);if(s.length%a!==0)throw new Error("The "+r+"s array count must be a multiple of "+a);return s.length/a},t=e(D.PositionKind,this.positions),i=(r,s)=>{let a=e(r,s);if(a!==t)throw new Error("The "+r+"s element count ("+a+") does not match the positions count ("+t+")")};this.normals&&i(D.NormalKind,this.normals),this.tangents&&i(D.TangentKind,this.tangents),this.uvs&&i(D.UVKind,this.uvs),this.uvs2&&i(D.UV2Kind,this.uvs2),this.uvs3&&i(D.UV3Kind,this.uvs3),this.uvs4&&i(D.UV4Kind,this.uvs4),this.uvs5&&i(D.UV5Kind,this.uvs5),this.uvs6&&i(D.UV6Kind,this.uvs6),this.colors&&i(D.ColorKind,this.colors),this.matricesIndices&&i(D.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(D.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(D.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(D.MatricesWeightsExtraKind,this.matricesWeightsExtra)}clone(){let e=this.serialize();return n.Parse(e)}serialize(){let e={};if(this.positions&&(e.positions=Array.from(this.positions)),this.normals&&(e.normals=Array.from(this.normals)),this.tangents&&(e.tangents=Array.from(this.tangents)),this.uvs&&(e.uvs=Array.from(this.uvs)),this.uvs2&&(e.uvs2=Array.from(this.uvs2)),this.uvs3&&(e.uvs3=Array.from(this.uvs3)),this.uvs4&&(e.uvs4=Array.from(this.uvs4)),this.uvs5&&(e.uvs5=Array.from(this.uvs5)),this.uvs6&&(e.uvs6=Array.from(this.uvs6)),this.colors&&(e.colors=Array.from(this.colors),e.hasVertexAlpha=this.hasVertexAlpha),this.matricesIndices&&(e.matricesIndices=Array.from(this.matricesIndices),e.matricesIndicesExpanded=!0),this.matricesWeights&&(e.matricesWeights=Array.from(this.matricesWeights)),this.matricesIndicesExtra&&(e.matricesIndicesExtra=Array.from(this.matricesIndicesExtra),e.matricesIndicesExtraExpanded=!0),this.matricesWeightsExtra&&(e.matricesWeightsExtra=Array.from(this.matricesWeightsExtra)),e.indices=this.indices?Array.from(this.indices):[],this.materialInfos){e.materialInfos=[];for(let t of this.materialInfos){let i={indexStart:t.indexStart,indexCount:t.indexCount,materialIndex:t.materialIndex,verticesStart:t.verticesStart,verticesCount:t.verticesCount};e.materialInfos.push(i)}}return e}static ExtractFromMesh(e,t,i){return n._ExtractFrom(e,t,i)}static ExtractFromGeometry(e,t,i){return n._ExtractFrom(e,t,i)}static _ExtractFrom(e,t,i){let r=new n;if(e.isVerticesDataPresent(D.PositionKind)&&(r.positions=e.getVerticesData(D.PositionKind,t,i)),e.isVerticesDataPresent(D.NormalKind)&&(r.normals=e.getVerticesData(D.NormalKind,t,i)),e.isVerticesDataPresent(D.TangentKind)&&(r.tangents=e.getVerticesData(D.TangentKind,t,i)),e.isVerticesDataPresent(D.UVKind)&&(r.uvs=e.getVerticesData(D.UVKind,t,i)),e.isVerticesDataPresent(D.UV2Kind)&&(r.uvs2=e.getVerticesData(D.UV2Kind,t,i)),e.isVerticesDataPresent(D.UV3Kind)&&(r.uvs3=e.getVerticesData(D.UV3Kind,t,i)),e.isVerticesDataPresent(D.UV4Kind)&&(r.uvs4=e.getVerticesData(D.UV4Kind,t,i)),e.isVerticesDataPresent(D.UV5Kind)&&(r.uvs5=e.getVerticesData(D.UV5Kind,t,i)),e.isVerticesDataPresent(D.UV6Kind)&&(r.uvs6=e.getVerticesData(D.UV6Kind,t,i)),e.isVerticesDataPresent(D.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(D.ColorKind),o=s.getVerticesData(D.ColorKind,t,i);if(a.getSize()===3){let l=new Float32Array(o.length*4/3);for(let c=0,f=0;c!Array.isArray(n[0]))],ye,"_TransformVector3Coordinates",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_TransformVector3Normals",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_TransformVector4Normals",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_FlipFaces",null)});var Kr,Cx=I(()=>{Kr=class n{static get ForceFullSceneLoadingForIncremental(){return n._ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){n._ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return n._ShowLoadingScreen}static set ShowLoadingScreen(e){n._ShowLoadingScreen=e}static get loggingLevel(){return n._LoggingLevel}static set loggingLevel(e){n._LoggingLevel=e}static get CleanBoneMatrixWeights(){return n._CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){n._CleanBoneMatrixWeights=e}};Kr._ForceFullSceneLoadingForIncremental=!1;Kr._ShowLoadingScreen=!0;Kr._CleanBoneMatrixWeights=!1;Kr._LoggingLevel=0});var _n,Px=I(()=>{ke();Ht();pr();Wi();Wg();Cx();Lm();yi();Sf();yx();Ni();nn();Tm();_n=class n{get boundingBias(){return this._boundingBias}set boundingBias(e){this._boundingBias?this._boundingBias.copyFrom(e):this._boundingBias=e.clone(),this._updateBoundingInfo(!0,null)}static CreateGeometryForMesh(e){let t=new n(n.RandomId(),e.getScene());return t.applyToMesh(e),t}get meshes(){return this._meshes}constructor(e,t,i,r=!1,s=null,a=null){this.delayLoadState=0,this._totalVertices=0,this._isDisposed=!1,this._extend={minimum:new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),maximum:new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)},this._indexBufferIsUpdatable=!1,this._positionsCache=[],this._parentContainer=null,this.useBoundingInfoFromGeometry=!1,this._scene=t||Oe.LastCreatedScene,this._scene&&(this.id=e,this.uniqueId=this._scene.getUniqueId(),this._engine=this._scene.getEngine(),this._meshes=[],this._vertexBuffers={},this._indices=[],this._updatable=r,a!==null&&(this._totalVertices=a),i?this.setAllVerticesData(i,r):a===null&&(this._totalVertices=0),this._engine.getCaps().vertexArrayObject&&(this._vertexArrayObjects={}),s&&(this.applyToMesh(s),s.computeWorldMatrix(!0)))}get extend(){return this._extend}getScene(){return this._scene}getEngine(){return this._engine}isReady(){return this.delayLoadState===1||this.delayLoadState===0}get doNotSerialize(){for(let e=0;e{t._rebuild()})}setAllVerticesData(e,t){e.applyToGeometry(this,t),this._notifyUpdate()}setVerticesData(e,t,i=!1,r){i&&Array.isArray(t)&&(t=new Float32Array(t));let s=new D(this._engine,t,e,{updatable:i,postponeInternalCreation:this._meshes.length===0,stride:r,label:"Geometry_"+this.id+"_"+e});this.setVerticesBuffer(s)}removeVerticesData(e){this._vertexBuffers[e]&&(this._vertexBuffers[e].dispose(),delete this._vertexBuffers[e]),this._vertexArrayObjects&&this._disposeVertexArrayObjects()}setVerticesBuffer(e,t=null,i=!0){let r=e.getKind();this._vertexBuffers[r]&&i&&this._vertexBuffers[r].dispose(),e._buffer&&e._ownsBuffer&&e._buffer._increaseReferences(),this._vertexBuffers[r]=e;let s=this._meshes,a=s.length;if(r===D.PositionKind){this._totalVertices=t!=null?t:e._maxVerticesCount,this._updateExtend(this.useBoundingInfoFromGeometry&&this._boundingInfo?null:e.getFloatData(this._totalVertices)),this._resetPointsArrayCache();let o=this._extend&&this._extend.minimum||new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),l=this._extend&&this._extend.maximum||new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE);for(let c=0;c65535:e.is32Bits=r;for(let s of this._meshes)s._createGlobalSubMesh(!0),s.synchronizeInstances();this._notifyUpdate()}setIndices(e,t=null,i=!1,r=!1){this._indexBuffer&&this._engine._releaseBuffer(this._indexBuffer),this._indices=e,this._indexBufferIsUpdatable=i,this._meshes.length!==0&&this._indices&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,i,"Geometry_"+this.id+"_IndexBuffer")),t!=null&&(this._totalVertices=t);for(let s of this._meshes)s._createGlobalSubMesh(!r),s.synchronizeInstances();this._notifyUpdate()}getTotalIndices(){return this.isReady()?this._totalIndices!==void 0?this._totalIndices:this._indices.length:0}getIndices(e,t){if(!this.isReady())return null;let i=this._indices;return!t&&(!e||this._meshes.length===1)?i:i.slice()}getIndexBuffer(){return this.isReady()?this._indexBuffer:null}_releaseVertexArrayObject(e=null){!e||!this._vertexArrayObjects||this._vertexArrayObjects[e.key]&&(this._engine.releaseVertexArrayObject(this._vertexArrayObjects[e.key]),delete this._vertexArrayObjects[e.key])}releaseForMesh(e,t){let i=this._meshes,r=i.indexOf(e);r!==-1&&(i.splice(r,1),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject(),e._geometry=null,i.length===0&&t&&this.dispose())}applyToMesh(e){if(e._geometry===this)return;let t=e._geometry;t&&t.releaseForMesh(e),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject();let i=this._meshes;e._geometry=this,e._internalAbstractMeshDataInfo._positions=null,this._scene.pushGeometry(this),i.push(e),this.isReady()?this._applyToMesh(e):this._boundingInfo&&e.setBoundingInfo(this._boundingInfo)}_updateExtend(e=null){if(this.useBoundingInfoFromGeometry&&this._boundingInfo)this._extend={minimum:this._boundingInfo.minimum.clone(),maximum:this._boundingInfo.maximum.clone()};else{if(!e&&(e=this.getVerticesData(D.PositionKind),!e))return;this._extend=Ix(e,0,this._totalVertices,this.boundingBias,3)}}_applyToMesh(e){for(let t in this._vertexBuffers){let i=this._vertexBuffers[t];i._buffer.getBuffer()||i.create(),t===D.PositionKind&&(this._extend||this._updateExtend(),e.buildBoundingInfo(this._extend.minimum,this._extend.maximum),e._createGlobalSubMesh(e.isUnIndexed),e._updateBoundingInfo())}!this._indexBuffer&&this._indices&&this._indices.length>0&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,this._updatable,"Geometry_"+this.id+"_IndexBuffer")),e._syncGeometryWithMorphTargetManager(),e.synchronizeInstances()}_notifyUpdate(e){this.onGeometryUpdated&&this.onGeometryUpdated(this,e),this._vertexArrayObjects&&this._disposeVertexArrayObjects();for(let t of this._meshes)t._markSubMeshesAsAttributesDirty()}load(e,t){if(this.delayLoadState!==2){if(this.isReady()){t&&t();return}this.delayLoadState=2,this._queueLoad(e,t)}}_queueLoad(e,t){this.delayLoadingFile&&(e.addPendingData(this),e._loadFile(this.delayLoadingFile,i=>{if(!this._delayLoadingFunction)return;this._delayLoadingFunction(JSON.parse(i),this),this.delayLoadState=1,this._delayInfo=[],e.removePendingData(this);let r=this._meshes,s=r.length;for(let a=0;a0){for(let r=0;r0){for(let r=0;r0){for(let r=0;r-1&&this._parentContainer.geometries.splice(r,1),this._parentContainer=null}this._isDisposed=!0}copy(e){let t=new n(e,this._scene),i=this.getIndices(void 0,!0);i&&t.setIndices(i);let r=!1,s;for(s in this._vertexBuffers){let a=this.getVertexBuffer(s),o=a.getData();if(!o)continue;let l=a.isUpdatable(),c=a.getSize(),{type:f,byteOffset:d,byteStride:h,normalized:u}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let g;o instanceof Array?g=o.length*4:g=o.byteLength,m=g/h}let _=nV(o,c,f,d,h,m,!0),p=new D(this._engine,_,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:u,takeBufferOwnership:!0,instanced:a.getIsInstanced()});t.setVerticesBuffer(p,m)}t._updatable=r,t.delayLoadState=this.delayLoadState,t.delayLoadingFile=this.delayLoadingFile,t._delayLoadingFunction=this._delayLoadingFunction;for(s in this._delayInfo)t._delayInfo=t._delayInfo||[],t._delayInfo.push(s);return t._boundingInfo=new pn(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,$t&&$t.HasTags(this)&&(e.tags=$t.GetTags(this)),e}_toNumberArray(e){return Array.isArray(e)?e:Array.prototype.slice.call(e)}clearCachedData(){this._totalIndices=this._indices.length,this._indices=[],this._resetPointsArrayCache();for(let e in this._vertexBuffers)Object.prototype.hasOwnProperty.call(this._vertexBuffers,e)&&(this._vertexBuffers[e]._buffer._data=null)}serializeVerticeData(){let e=this.serialize();return this.isVerticesDataPresent(D.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(D.PositionKind)),this.isVertexBufferUpdatable(D.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(D.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(D.NormalKind)),this.isVertexBufferUpdatable(D.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(D.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(D.TangentKind)),this.isVertexBufferUpdatable(D.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(D.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(D.UVKind)),this.isVertexBufferUpdatable(D.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(D.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(D.UV2Kind)),this.isVertexBufferUpdatable(D.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(D.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(D.UV3Kind)),this.isVertexBufferUpdatable(D.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(D.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(D.UV4Kind)),this.isVertexBufferUpdatable(D.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(D.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(D.UV5Kind)),this.isVertexBufferUpdatable(D.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(D.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(D.UV6Kind)),this.isVertexBufferUpdatable(D.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(D.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(D.ColorKind)),this.isVertexBufferUpdatable(D.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(D.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(D.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(D.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(D.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(D.MatricesWeightsKind)),this.isVertexBufferUpdatable(D.MatricesWeightsKind)&&(e.matricesWeightsUpdatable=!0)),e.indices=this._toNumberArray(this.getIndices()),e}static ExtractFromMesh(e,t){let i=e._geometry;return i?i.copy(t):null}static RandomId(){return _e.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(D.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(D.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(D.TangentKind,o,!1)}if(a.uvsAttrDesc&&a.uvsAttrDesc.count>0){let o=new Float32Array(e,a.uvsAttrDesc.offset,a.uvsAttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs2AttrDesc.offset,a.uvs2AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs3AttrDesc.offset,a.uvs3AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs4AttrDesc.offset,a.uvs4AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs5AttrDesc.offset,a.uvs5AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs6AttrDesc.offset,a.uvs6AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.colorsAttrDesc.offset,a.colorsAttrDesc.count);t.setVerticesData(D.ColorKind,o,!1,a.colorsAttrDesc.stride)}if(a.matricesIndicesAttrDesc&&a.matricesIndicesAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesAttrDesc.offset,a.matricesIndicesAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(D.MatricesIndicesKind,l,!1)}if(a.matricesIndicesExtraAttrDesc&&a.matricesIndicesExtraAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesExtraAttrDesc.offset,a.matricesIndicesExtraAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(D.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(D.MatricesWeightsKind,o,!1)}if(a.indicesAttrDesc&&a.indicesAttrDesc.count>0){let o=new Int32Array(e,a.indicesAttrDesc.offset,a.indicesAttrDesc.count);t.setIndices(o,null)}if(a.subMeshesAttrDesc&&a.subMeshesAttrDesc.count>0){let o=new Int32Array(e,a.subMeshesAttrDesc.offset,a.subMeshesAttrDesc.count*5);t.subMeshes=[];for(let l=0;l>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(D.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(D.MatricesIndicesKind,e.matricesIndices,e.matricesIndices._updatable||e.matricesIndicesUpdatable);if(e.matricesIndicesExtra)if(e.matricesIndicesExtraExpanded||e.matricesIndicesExtra._isExpanded)delete e.matricesIndices._isExpanded,delete e.matricesIndicesExtraExpanded,t.setVerticesData(D.MatricesIndicesExtraKind,e.matricesIndicesExtra,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable);else{let a=[];for(let o=0;o>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(D.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(D.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(D.MatricesWeightsExtraKind,e.matricesWeightsExtra,e.matricesWeights._updatable),t.setIndices(e.indices,null)}if(e.subMeshes){t.subMeshes=[];for(let a=0;a-1){let d=t.getScene().getLastSkeletonById(e.skeletonId);if(!d)return;r=d.bones.length}else return;let s=t.getVerticesData(D.MatricesIndicesKind),a=t.getVerticesData(D.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(u=c-1),h>.001){let m=1/h;for(let _=0;_<4;_++)o[d+_]*=m;if(l)for(let _=0;_<4;_++)l[d+_]*=m}else u>=4?(l[d+u-4]=1-h,a[d+u-4]=r):(o[d+u]=1-h,s[d+u]=r)}t.setVerticesData(D.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(D.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,$t&&$t.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new pn(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(D.UVKind),e.hasUVs2&&r._delayInfo.push(D.UV2Kind),e.hasUVs3&&r._delayInfo.push(D.UV3Kind),e.hasUVs4&&r._delayInfo.push(D.UV4Kind),e.hasUVs5&&r._delayInfo.push(D.UV5Kind),e.hasUVs6&&r._delayInfo.push(D.UV6Kind),e.hasColors&&r._delayInfo.push(D.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(D.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(D.MatricesWeightsKind),r._delayLoadingFunction=ye.ImportVertexData):ye.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var Yt,yf=I(()=>{Gt();Vt();br();hi();ke();la();Yi();Yt=class n extends _i{get billboardMode(){return this._billboardMode}set billboardMode(e){this._billboardMode!==e&&(this._billboardMode=e,this._cache.useBillboardPosition=(this._billboardMode&n.BILLBOARDMODE_USE_POSITION)!==0)}get infiniteDistance(){return this._infiniteDistance}set infiniteDistance(e){this._infiniteDistance!==e&&(this._infiniteDistance=e)}constructor(e,t=null,i=!0){super(e,t,!1),this._forward=new b(0,0,1),this._up=new b(0,1,0),this._right=new b(1,0,0),this._position=b.Zero(),this._rotation=b.Zero(),this._rotationQuaternion=null,this._scaling=b.One(),this._transformToBoneReferal=null,this._isAbsoluteSynced=!1,this._billboardMode=n.BILLBOARDMODE_NONE,this.scalingDeterminant=1,this._infiniteDistance=!1,this.ignoreNonUniformScaling=!1,this.reIntegrateRotationIntoRotationQuaternion=!1,this._poseMatrix=null,this._localMatrix=q.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=Xe.Identity(),this._pivotMatrix=q.Identity(),this._postMultiplyPivotMatrix=!1,this._isWorldMatrixFrozen=!1,this._indexInSceneTransformNodesArray=-1,this.onAfterWorldMatrixUpdateObservable=new ie,this._nonUniformScaling=!1,i&&this.getScene().addTransformNode(this)}getClassName(){return"TransformNode"}get position(){return this._position}set position(e){this._position=e,this._markAsDirtyInternal()}isUsingPivotMatrix(){return this._usePivotMatrix}isUsingPostMultiplyPivotMatrix(){return this._postMultiplyPivotMatrix}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._rotationQuaternion=null,this._markAsDirtyInternal()}get scaling(){return this._scaling}set scaling(e){this._scaling=e,this._markAsDirtyInternal()}get rotationQuaternion(){return this._rotationQuaternion}set rotationQuaternion(e){this._rotationQuaternion=e,e&&this._rotation.setAll(0),this._markAsDirtyInternal()}_markAsDirtyInternal(){this._isDirty||(this._isDirty=!0,this.customMarkAsDirty&&this.customMarkAsDirty())}get forward(){return b.TransformNormalFromFloatsToRef(0,0,this.getScene().useRightHandedSystem?-1:1,this.getWorldMatrix(),this._forward),this._forward.normalize()}get up(){return b.TransformNormalFromFloatsToRef(0,1,0,this.getWorldMatrix(),this._up),this._up.normalize()}get right(){return b.TransformNormalFromFloatsToRef(this.getScene().useRightHandedSystem?-1:1,0,0,this.getWorldMatrix(),this._right),this._right.normalize()}updatePoseMatrix(e){return this._poseMatrix?(this._poseMatrix.copyFrom(e),this):(this._poseMatrix=e.clone(),this)}getPoseMatrix(){return this._poseMatrix||(this._poseMatrix=q.Identity()),this._poseMatrix}_isSynchronized(){let e=this._cache;return!(this._billboardMode!==e.billboardMode||this._billboardMode!==n.BILLBOARDMODE_NONE||e.pivotMatrixUpdated||this._infiniteDistance||this._position._isDirty||this._scaling._isDirty||this._rotationQuaternion&&this._rotationQuaternion._isDirty||this._rotation._isDirty)}_initCache(){super._initCache();let e=this._cache;e.localMatrixUpdated=!1,e.billboardMode=-1,e.infiniteDistance=!1,e.useBillboardPosition=!1}get absolutePosition(){return this.getAbsolutePosition()}get absoluteScaling(){return this._syncAbsoluteScalingAndRotation(),this._absoluteScaling}get absoluteRotationQuaternion(){return this._syncAbsoluteScalingAndRotation(),this._absoluteRotationQuaternion}setPreTransformMatrix(e){return this.setPivotMatrix(e,!1)}setPivotMatrix(e,t=!0){return this._pivotMatrix.copyFrom(e),this._usePivotMatrix=!this._pivotMatrix.isIdentity(),this._cache.pivotMatrixUpdated=!0,this._postMultiplyPivotMatrix=t,this._postMultiplyPivotMatrix&&(this._pivotMatrixInverse?this._pivotMatrix.invertToRef(this._pivotMatrixInverse):this._pivotMatrixInverse=q.Invert(this._pivotMatrix)),this}getPivotMatrix(){return this._pivotMatrix}instantiateHierarchy(e=null,t,i){let r=this.clone("Clone of "+(this.name||this.id),e||this.parent,!0);r&&i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.instantiateHierarchy(r,t,i);return r}freezeWorldMatrix(e=null,t=!1){return e?t?(this._rotation.setAll(0),this._rotationQuaternion=this._rotationQuaternion||Xe.Identity(),e.decompose(this._scaling,this._rotationQuaternion,this._position),this.computeWorldMatrix(!0)):(this._worldMatrix=e,this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._afterComputeWorldMatrix()):(this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0)),this._isDirty=!1,this._isWorldMatrixFrozen=!0,this}unfreezeWorldMatrix(){return this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0),this}get isWorldMatrixFrozen(){return this._isWorldMatrixFrozen}getAbsolutePosition(){return this.computeWorldMatrix(),this._absolutePosition}setAbsolutePosition(e){if(!e)return this;let t,i,r;if(e.x===void 0){if(arguments.length<3)return this;t=arguments[0],i=arguments[1],r=arguments[2]}else t=e.x,i=e.y,r=e.z;if(this.parent){let s=$.Matrix[0];this.parent.getWorldMatrix().invertToRef(s),b.TransformCoordinatesFromFloatsToRef(t,i,r,s,this.position)}else this.position.x=t,this.position.y=i,this.position.z=r;return this._absolutePosition.copyFrom(e),this}setPositionWithLocalVector(e){return this.computeWorldMatrix(),this.position=b.TransformNormal(e,this._localMatrix),this}getPositionExpressedInLocalSpace(){this.computeWorldMatrix();let e=$.Matrix[0];return this._localMatrix.invertToRef(e),b.TransformNormal(this.position,e)}locallyTranslate(e){return this.computeWorldMatrix(!0),this.position=b.TransformCoordinates(e,this._localMatrix),this}lookAt(e,t=0,i=0,r=0,s=0){let a=n._LookAtVectorCache,o=s===0?this.position:this.getAbsolutePosition();if(e.subtractToRef(o,a),this.setDirection(a,t,i,r),s===1&&this.parent)if(this.rotationQuaternion){let l=$.Matrix[0];this.rotationQuaternion.toRotationMatrix(l);let c=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(c),c.invert(),l.multiplyToRef(c,l),this.rotationQuaternion.fromRotationMatrix(l)}else{let l=$.Quaternion[0];Xe.FromEulerVectorToRef(this.rotation,l);let c=$.Matrix[0];l.toRotationMatrix(c);let f=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(f),f.invert(),c.multiplyToRef(f,c),l.fromRotationMatrix(c),l.toEulerAnglesToRef(this.rotation)}return this}getDirection(e){let t=b.Zero();return this.getDirectionToRef(e,t),t}getDirectionToRef(e,t){return b.TransformNormalToRef(e,this.getWorldMatrix(),t),this}setDirection(e,t=0,i=0,r=0){let s=-Math.atan2(e.z,e.x)+Math.PI/2,a=Math.sqrt(e.x*e.x+e.z*e.z),o=-Math.atan2(e.y,a);return this.rotationQuaternion?Xe.RotationYawPitchRollToRef(s+t,o+i,r,this.rotationQuaternion):(this.rotation.x=o+i,this.rotation.y=s+t,this.rotation.z=r),this}setPivotPoint(e,t=0){this.getScene().getRenderId()==0&&this.computeWorldMatrix(!0);let i=this.getWorldMatrix();if(t==1){let r=$.Matrix[0];i.invertToRef(r),e=b.TransformCoordinates(e,r)}return this.setPivotMatrix(q.Translation(-e.x,-e.y,-e.z),!0)}getPivotPoint(){let e=b.Zero();return this.getPivotPointToRef(e),e}getPivotPointToRef(e){return e.x=-this._pivotMatrix.m[12],e.y=-this._pivotMatrix.m[13],e.z=-this._pivotMatrix.m[14],this}getAbsolutePivotPoint(){let e=b.Zero();return this.getAbsolutePivotPointToRef(e),e}getAbsolutePivotPointToRef(e){return this.getPivotPointToRef(e),b.TransformCoordinatesToRef(e,this.getWorldMatrix(),e),this}markAsDirty(e){if(this._isDirty)return this;if(this._children)for(let t of this._children)t.markAsDirty(e);return super.markAsDirty(e)}setParent(e,t=!1,i=!1){if(!e&&!this.parent)return this;let r=$.Quaternion[0],s=$.Vector3[0],a=$.Vector3[1],o=$.Matrix[1];q.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,Xe.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),q.ComposeToRef(this.scaling,c,this.position,l),this.parent&&l.multiplyToRef(this.parent.computeWorldMatrix(!0),l),e&&(e.computeWorldMatrix(!0).invertToRef(o),l.multiplyToRef(o,l)),l.decompose(a,r,s,t?this:void 0),this.rotationQuaternion?this.rotationQuaternion.copyFrom(r):r.toEulerAnglesToRef(this.rotation),this.scaling.copyFrom(a),this.position.copyFrom(s),this.parent=e,i&&this.setPivotMatrix(q.Identity()),this}addChild(e,t=!1){return e.setParent(this,t),this}removeChild(e,t=!1){return e.parent!==this?this:(e.setParent(null,t),this)}get nonUniformScaling(){return this._nonUniformScaling}_updateNonUniformScalingState(e){return this._nonUniformScaling===e?!1:(this._nonUniformScaling=e,!0)}attachToBone(e,t){return this._currentParentWhenAttachingToBone=this.parent,this._transformToBoneReferal=t,this.parent=e,e.getSkeleton().prepare(!0),e.getFinalMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this}detachFromBone(e=!1){return this.parent?(this.parent.getWorldMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this._transformToBoneReferal=null,e?this.parent=this._currentParentWhenAttachingToBone:this.parent=null,this):(e&&(this.parent=this._currentParentWhenAttachingToBone),this)}rotate(e,t,i){e.normalize(),this.rotationQuaternion||(this.rotationQuaternion=this.rotation.toQuaternion(),this.rotation.setAll(0));let r;if(!i||i===0)r=Xe.RotationAxisToRef(e,t,n._RotationAxisCache),this.rotationQuaternion.multiplyToRef(r,this.rotationQuaternion);else{if(this.parent){let s=this.parent.getWorldMatrix(),a=$.Matrix[0];s.invertToRef(a),e=b.TransformNormal(e,a),s.determinant()<0&&(t*=-1)}r=Xe.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=Xe.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z),this.rotation.setAll(0));let r=$.Vector3[0],s=$.Vector3[1],a=$.Vector3[2],o=$.Quaternion[0],l=$.Matrix[0],c=$.Matrix[1],f=$.Matrix[2],d=$.Matrix[3];return e.subtractToRef(this.position,r),q.TranslationToRef(r.x,r.y,r.z,l),q.TranslationToRef(-r.x,-r.y,-r.z,c),q.RotationAxisToRef(t,i,f),c.multiplyToRef(f,d),d.multiplyToRef(l,d),d.decompose(s,o,a),this.position.addInPlace(a),o.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion),this}translate(e,t,i){let r=e.scale(t);if(!i||i===0){let s=this.getPositionExpressedInLocalSpace().add(r);this.setPositionWithLocalVector(s)}else this.setAbsolutePosition(this.getAbsolutePosition().add(r));return this}addRotation(e,t,i){let r;this.rotationQuaternion?r=this.rotationQuaternion:(r=$.Quaternion[1],Xe.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return Xe.RotationYawPitchRollToRef(t,e,i,s),r.multiplyInPlace(s),this.rotationQuaternion||r.toEulerAnglesToRef(this.rotation),this}_getEffectiveParent(){return this.parent}isWorldMatrixCameraDependent(){return this._infiniteDistance&&!this.parent||this._billboardMode!==n.BILLBOARDMODE_NONE}computeWorldMatrix(e=!1,t=null){if(this._isWorldMatrixFrozen&&!this._isDirty)return this._worldMatrix;let i=this.getScene().getRenderId();if(!this._isDirty&&!e&&(this._currentRenderId===i||this.isSynchronized()))return this._currentRenderId=i,this._worldMatrix;t=t||this.getScene().activeCamera,this._updateCache();let r=this._cache;r.pivotMatrixUpdated=!1,r.billboardMode=this.billboardMode,r.infiniteDistance=this.infiniteDistance,r.parent=this._parentNode,this._currentRenderId=i,this._childUpdateId+=1,this._isDirty=!1,this._position._isDirty=!1,this._rotation._isDirty=!1,this._scaling._isDirty=!1;let s=this._getEffectiveParent(),a=n._TmpScaling,o=this._position;if(this._infiniteDistance&&!this.parent&&t){let f=t.getWorldMatrix().m;o=n._TmpTranslation,o.copyFromFloats(this._position.x+f[12],this._position.y+f[13],this._position.z+f[14])}a.copyFromFloats(this._scaling.x*this.scalingDeterminant,this._scaling.y*this.scalingDeterminant,this._scaling.z*this.scalingDeterminant);let l;if(this._rotationQuaternion?(this._rotationQuaternion._isDirty=!1,l=this._rotationQuaternion,this.reIntegrateRotationIntoRotationQuaternion&&this.rotation.lengthSquared()&&(this._rotationQuaternion.multiplyInPlace(Xe.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,Xe.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];q.ScalingToRef(a.x,a.y,a.z,c);let f=$.Matrix[0];l.toRotationMatrix(f),this._pivotMatrix.multiplyToRef(c,$.Matrix[4]),$.Matrix[4].multiplyToRef(f,this._localMatrix),this._postMultiplyPivotMatrix&&this._localMatrix.multiplyToRef(this._pivotMatrixInverse,this._localMatrix),this._localMatrix.addTranslationFromFloats(o.x,o.y,o.z)}else q.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let h=this.parent;h.getSkeleton().prepare(),h.getFinalMatrix().multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),$.Matrix[7])}else $.Matrix[7].copyFrom(s.getWorldMatrix());let c=$.Vector3[5],f=$.Vector3[6],d=$.Quaternion[0];$.Matrix[7].decompose(f,d,c),q.ScalingToRef(f.x,f.y,f.z,$.Matrix[7]),$.Matrix[7].setTranslation(c),n.BillboardUseParentOrientation&&(this._position.applyRotationQuaternionToRef(d,c),this._localMatrix.setTranslation(c)),this._localMatrix.multiplyToRef($.Matrix[7],this._worldMatrix)}else if(this._transformToBoneReferal){let c=this.parent;c.getSkeleton().prepare(),this._localMatrix.multiplyToRef(c.getFinalMatrix(),$.Matrix[6]),$.Matrix[6].multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),this._worldMatrix)}else this._localMatrix.multiplyToRef(s.getWorldMatrix(),this._worldMatrix);this._markSyncedWithParent()}else this._worldMatrix.copyFrom(this._localMatrix);if(t&&this.billboardMode)if(r.useBillboardPosition){let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c);let f=t.globalPosition;this._worldMatrix.invertToRef($.Matrix[1]);let d=$.Vector3[1];b.TransformCoordinatesToRef(f,$.Matrix[1],d),d.normalize();let h=-Math.atan2(d.z,d.x)+Math.PI/2,u=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,u);if(Xe.RotationYawPitchRollToRef(h,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let _=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(_),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(_.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(_.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(_.z=0),q.RotationYawPitchRollToRef(_.y,_.x,_.z,$.Matrix[0])}else q.FromQuaternionToRef($.Quaternion[0],$.Matrix[0]);this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}else{let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c),$.Matrix[1].copyFrom(t.getViewMatrix());let f=this.getScene().useRightHandedSystem;if(f&&$.Matrix[1].multiplyToRef(n._TmpRHRestore,$.Matrix[1]),$.Matrix[1].setTranslationFromFloats(0,0,0),$.Matrix[1].invertToRef($.Matrix[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){$.Matrix[0].decompose(void 0,$.Quaternion[0],void 0);let d=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(d),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(d.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(d.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(d.z=0),f&&(d.y+=Math.PI),q.RotationYawPitchRollToRef(d.y,d.x,d.z,$.Matrix[0])}this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}return this.ignoreNonUniformScaling?this._updateNonUniformScalingState(!1):this._scaling.isNonUniformWithinEpsilon(1e-6)?this._updateNonUniformScalingState(!0):s&&s._nonUniformScaling?this._updateNonUniformScalingState(s._nonUniformScaling):this._updateNonUniformScalingState(!1),this._afterComputeWorldMatrix(),this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._isAbsoluteSynced=!1,this.onAfterWorldMatrixUpdateObservable.notifyObservers(this),this._poseMatrix||(this._poseMatrix=q.Invert(this._worldMatrix)),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix}resetLocalMatrix(e=!0){if(this.computeWorldMatrix(),e){let t=this.getChildren();for(let i=0;inew n(e,this.getScene()),this);if(r.name=e,r.id=e,t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;anew n(e.name,t),e,t,i);if(e.localMatrix?r.setPreTransformMatrix(q.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(q.FromArray(e.pivotMatrix)),r.setEnabled(e.isEnabled),r._waitingParsedUniqueId=e.uniqueId,e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.freezeWorldMatrix&&(r._waitingFreezeWorldMatrix=e.freezeWorldMatrix),e.animations){for(let s=0;s(!t||t(r))&&r instanceof n),i}dispose(e,t=!1){if(this.getScene().stopAnimation(this),this.getScene().removeTransformNode(this),this._parentContainer){let i=this._parentContainer.transformNodes.indexOf(this);i>-1&&this._parentContainer.transformNodes.splice(i,1),this._parentContainer=null}if(this.onAfterWorldMatrixUpdateObservable.clear(),e){let i=this.getChildTransformNodes(!0);for(let r of i)r.parent=null,r.computeWorldMatrix(!0)}super.dispose(e,t)}normalizeToUnitCube(e=!0,t=!1,i){let r=null,s=null;t&&(this.rotationQuaternion?(s=this.rotationQuaternion.clone(),this.rotationQuaternion.copyFromFloats(0,0,0,1)):this.rotation&&(r=this.rotation.clone(),this.rotation.copyFromFloats(0,0,0)));let a=this.getHierarchyBoundingVectors(e,i),o=a.max.subtract(a.min),l=Math.max(o.x,o.y,o.z);if(l===0)return this;let c=1/l;return this.scaling.scaleInPlace(c),t&&(this.rotationQuaternion&&s?this.rotationQuaternion.copyFrom(s):this.rotation&&r&&this.rotation.copyFrom(r)),this}_syncAbsoluteScalingAndRotation(){this._isAbsoluteSynced||(this._worldMatrix.decompose(this._absoluteScaling,this._absoluteRotationQuaternion),this._isAbsoluteSynced=!0)}};Yt.BILLBOARDMODE_NONE=0;Yt.BILLBOARDMODE_X=1;Yt.BILLBOARDMODE_Y=2;Yt.BILLBOARDMODE_Z=4;Yt.BILLBOARDMODE_ALL=7;Yt.BILLBOARDMODE_USE_POSITION=128;Yt.BillboardUseParentOrientation=!1;Yt._TmpRotation=Xe.Zero();Yt._TmpScaling=b.Zero();Yt._TmpTranslation=b.Zero();Yt._TmpRHRestore=q.Scaling(1,1,-1);Yt._LookAtVectorCache=new b(0,0,0);Yt._RotationAxisCache=new Xe;P([Xr("position")],Yt.prototype,"_position",void 0);P([Xr("rotation")],Yt.prototype,"_rotation",void 0);P([$U("rotationQuaternion")],Yt.prototype,"_rotationQuaternion",void 0);P([Xr("scaling")],Yt.prototype,"_scaling",void 0);P([F("billboardMode")],Yt.prototype,"_billboardMode",void 0);P([F()],Yt.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],Yt.prototype,"_infiniteDistance",void 0);P([F()],Yt.prototype,"ignoreNonUniformScaling",void 0);P([F()],Yt.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var Dx,NW=I(()=>{ke();Dx=class{constructor(){this._checkCollisions=!1,this._collisionMask=-1,this._collisionGroup=-1,this._surroundingMeshes=null,this._collider=null,this._oldPositionForCollisions=new b(0,0,0),this._diffPositionForCollisions=new b(0,0,0),this._collisionResponse=!0}}});function wW(n){return Math.floor(n/8)}function FW(n){return 1<{Lx=class{constructor(e){this.size=e,this._byteArray=new Uint8Array(Math.ceil(this.size/8))}get(e){if(e>=this.size)throw new RangeError("Bit index out of range");let t=wW(e),i=FW(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=wW(e),r=FW(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var UW={};Be(UW,{OptimizeIndices:()=>kce});function kce(n){let e=[],t=n.length/3;for(let l=0;l{let c=[l];for(;c.length>0;){let f=c.pop();if(!r.get(f)){r.set(f,!0),s.push(e[f]);for(let d of e[f]){let h=i.get(d);if(!h)return;for(let u of h)r.get(u)||c.push(u)}}}};for(let l=0;l{BW()});function Wce(n,e,t){let i;switch(e){case D.PositionKind:i=r=>r.getPositions();break;case D.NormalKind:i=r=>r.getNormals();break;case D.TangentKind:i=r=>r.getTangents();break;case D.UVKind:i=r=>r.getUVs();break;case D.UV2Kind:i=r=>r.getUV2s();break;case D.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(q.FromFloat32ArrayToRefScaled(t,Math.floor(i[h+u]*16),m,c),l.addToSelf(c));if(s&&a)for(u=0;u<4;u++)m=a[h+u],m>0&&(q.FromFloat32ArrayToRefScaled(t,Math.floor(s[h+u]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var eD,tD,Ar,Nm=I(()=>{Gt();hi();ke();Wi();pr();yf();Ig();Lm();Af();NW();un();yx();Ht();Un();lm();Yi();Vt();Vr();eD=class{constructor(){this.facetNb=0,this.partitioningSubdivisions=10,this.partitioningBBoxRatio=1.01,this.facetDataEnabled=!1,this.facetParameters={},this.bbSize=b.Zero(),this.subDiv={max:1,X:1,Y:1,Z:1},this.facetDepthSort=!1,this.facetDepthSortEnabled=!1}},tD=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new eD,this._visibility=1,this._skeleton=null,this._layerMask=268435455,this._computeBonesUsingShaders=!0,this._isActive=!1,this._onlyForInstances=!1,this._isActiveIntermediate=!1,this._onlyForInstancesIntermediate=!1,this._actAsRegularMesh=!1,this._currentLOD=new Map,this._collisionRetryCount=3,this._morphTargetManager=null,this._renderingGroupId=0,this._bakedVertexAnimationManager=null,this._material=null,this._positions=null,this._pointerOverDisableMeshTesting=!1,this._meshCollisionData=new Dx,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},Ar=class n extends Yt{static get BILLBOARDMODE_NONE(){return Yt.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return Yt.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return Yt.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return Yt.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return Yt.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return Yt.BILLBOARDMODE_USE_POSITION}get facetNb(){return this._internalAbstractMeshDataInfo._facetData.facetNb}get partitioningSubdivisions(){return this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions}set partitioningSubdivisions(e){this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions=e}get partitioningBBoxRatio(){return this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio}set partitioningBBoxRatio(e){this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio=e}get mustDepthSortFacets(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSort}set mustDepthSortFacets(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSort=e}get facetDepthSortFrom(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom}set facetDepthSortFrom(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom=e}get collisionRetryCount(){return this._internalAbstractMeshDataInfo._collisionRetryCount}set collisionRetryCount(e){this._internalAbstractMeshDataInfo._collisionRetryCount=e}get isFacetDataEnabled(){return this._internalAbstractMeshDataInfo._facetData.facetDataEnabled}get morphTargetManager(){return this._internalAbstractMeshDataInfo._morphTargetManager}set morphTargetManager(e){this._internalAbstractMeshDataInfo._morphTargetManager!==e&&(this._internalAbstractMeshDataInfo._morphTargetManager=e,this._syncGeometryWithMorphTargetManager())}get bakedVertexAnimationManager(){return this._internalAbstractMeshDataInfo._bakedVertexAnimationManager}set bakedVertexAnimationManager(e){this._internalAbstractMeshDataInfo._bakedVertexAnimationManager!==e&&(this._internalAbstractMeshDataInfo._bakedVertexAnimationManager=e,this._markSubMeshesAsAttributesDirty())}_syncGeometryWithMorphTargetManager(){}_updateNonUniformScalingState(e){return super._updateNonUniformScalingState(e)?(this._markSubMeshesAsMiscDirty(),!0):!1}get rawBoundingInfo(){return this._internalAbstractMeshDataInfo._rawBoundingInfo}set rawBoundingInfo(e){this._internalAbstractMeshDataInfo._rawBoundingInfo=e}set onCollide(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver&&this.onCollideObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver=this.onCollideObservable.add(e)}set onCollisionPositionChange(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver&&this.onCollisionPositionChangeObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver=this.onCollisionPositionChangeObservable.add(e)}get visibility(){return this._internalAbstractMeshDataInfo._visibility}set visibility(e){if(this._internalAbstractMeshDataInfo._visibility===e)return;let t=this._internalAbstractMeshDataInfo._visibility;this._internalAbstractMeshDataInfo._visibility=e,(t===1&&e!==1||t!==1&&e===1)&&this._markSubMeshesAsDirty(i=>{i.markAsMiscDirty(),i.markAsPrePassDirty()})}get pointerOverDisableMeshTesting(){return this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting}set pointerOverDisableMeshTesting(e){this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting=e}get renderingGroupId(){return this._internalAbstractMeshDataInfo._renderingGroupId}set renderingGroupId(e){this._internalAbstractMeshDataInfo._renderingGroupId=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){this._setMaterial(e)}_setMaterial(e){this._internalAbstractMeshDataInfo._material!==e&&(this._internalAbstractMeshDataInfo._material&&this._internalAbstractMeshDataInfo._material.meshMap&&(this._internalAbstractMeshDataInfo._material.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._material=e,e&&e.meshMap&&(e.meshMap[this.uniqueId]=this),this.onMaterialChangedObservable.hasObservers()&&this.onMaterialChangedObservable.notifyObservers(this),this.subMeshes&&(this.resetDrawCache(void 0,e==null),this._unBindEffect()))}getMaterialForRenderPass(e){var t;return(t=this._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:t[e]}setMaterialForRenderPass(e,t){var r;this.resetDrawCache(e),this._internalAbstractMeshDataInfo._materialForRenderPass||(this._internalAbstractMeshDataInfo._materialForRenderPass=[]);let i=this._internalAbstractMeshDataInfo._materialForRenderPass[e];(r=i==null?void 0:i.meshMap)!=null&&r[this.uniqueId]&&(i.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._materialForRenderPass[e]=t,t&&t.meshMap&&(t.meshMap[this.uniqueId]=this)}get receiveShadows(){return this._internalAbstractMeshDataInfo._receiveShadows}set receiveShadows(e){this._internalAbstractMeshDataInfo._receiveShadows!==e&&(this._internalAbstractMeshDataInfo._receiveShadows=e,this._markSubMeshesAsLightDirty())}get hasVertexAlpha(){return this._internalAbstractMeshDataInfo._hasVertexAlpha}set hasVertexAlpha(e){this._internalAbstractMeshDataInfo._hasVertexAlpha!==e&&(this._internalAbstractMeshDataInfo._hasVertexAlpha=e,this._markSubMeshesAsAttributesDirty(),this._markSubMeshesAsMiscDirty())}get useVertexColors(){return this._internalAbstractMeshDataInfo._useVertexColors}set useVertexColors(e){this._internalAbstractMeshDataInfo._useVertexColors!==e&&(this._internalAbstractMeshDataInfo._useVertexColors=e,this._markSubMeshesAsAttributesDirty())}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get numBoneInfluencers(){return this._internalAbstractMeshDataInfo._numBoneInfluencers}set numBoneInfluencers(e){this._internalAbstractMeshDataInfo._numBoneInfluencers!==e&&(this._internalAbstractMeshDataInfo._numBoneInfluencers=e,this._markSubMeshesAsAttributesDirty())}get applyFog(){return this._internalAbstractMeshDataInfo._applyFog}set applyFog(e){this._internalAbstractMeshDataInfo._applyFog!==e&&(this._internalAbstractMeshDataInfo._applyFog=e,this._markSubMeshesAsMiscDirty())}get enableDistantPicking(){return this._internalAbstractMeshDataInfo._enableDistantPicking}set enableDistantPicking(e){this._internalAbstractMeshDataInfo._enableDistantPicking=e}get layerMask(){return this._internalAbstractMeshDataInfo._layerMask}set layerMask(e){e!==this._internalAbstractMeshDataInfo._layerMask&&(this._internalAbstractMeshDataInfo._layerMask=e,this._resyncLightSources())}get collisionMask(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask}set collisionMask(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask=isNaN(e)?-1:e}get collisionResponse(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse}set collisionResponse(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse=e}get collisionGroup(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup}set collisionGroup(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup=isNaN(e)?-1:e}get surroundingMeshes(){return this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes}set surroundingMeshes(e){this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes=e}get lightSources(){return this._lightSources}set skeleton(e){let t=this._internalAbstractMeshDataInfo._skeleton;t&&t.needInitialSkinMatrix&&t._unregisterMeshWithPoseMatrix(this),e&&e.needInitialSkinMatrix&&e._registerMeshWithPoseMatrix(this),this._internalAbstractMeshDataInfo._skeleton=e,this._internalAbstractMeshDataInfo._skeleton||(this._bonesTransformMatrices=null),this._markSubMeshesAsAttributesDirty()}get skeleton(){return this._internalAbstractMeshDataInfo._skeleton}constructor(e,t=null){switch(super(e,t,!1),this._internalAbstractMeshDataInfo=new tD,this._waitingMaterialId=null,this._waitingMorphTargetManagerId=null,this._waitingSkeletonId=null,this._waitingSkeletonUniqueId=null,this.cullingStrategy=n.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY,this.onCollideObservable=new ie,this.onCollisionPositionChangeObservable=new ie,this.onMaterialChangedObservable=new ie,this.definedFacingForward=!0,this._occlusionQuery=null,this._renderingGroup=null,this.alphaIndex=Number.MAX_VALUE,this.isPickable=n.DefaultIsPickable,this.isNearPickable=!1,this.isNearGrabbable=!1,this.showSubMeshesBoundingBox=!1,this.isBlocker=!1,this.enablePointerMoveEvents=!1,this.outlineColor=pe.Red(),this.outlineWidth=.02,this.overlayColor=pe.Red(),this.overlayAlpha=.5,this.useOctreeForRenderingSelection=!0,this.useOctreeForPicking=!0,this.useOctreeForCollisions=!0,this.alwaysSelectAsActiveMesh=!1,this.doNotSyncBoundingInfo=!1,this.actionManager=null,this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.edgesWidth=1,this.edgesColor=new lt(1,0,0,1),this._edgesRenderer=null,this._masterMesh=null,this._boundingInfo=null,this._boundingInfoIsDirty=!0,this._renderId=0,this._intersectionsInProgress=new Array,this._unIndexed=!1,this._lightSources=new Array,this._waitingData={lods:null,actions:null,freezeWorldMatrix:null},this._bonesTransformMatrices=null,this._transformMatrixTexture=null,this.onRebuildObservable=new ie,this._onCollisionPositionChange=(i,r,s=null)=>{r.subtractToRef(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions.length()>Ie.CollisionsEpsilon&&this.position.addInPlace(this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),s&&this.onCollideObservable.notifyObservers(s),this.onCollisionPositionChangeObservable.notifyObservers(this.position)},t=this.getScene(),this.layerMask=t.defaultRenderableLayerMask,t.addMesh(this),this._resyncLightSources(),this._uniformBuffer=new mr(this.getScene().getEngine(),void 0,void 0,e,!this.getScene().getEngine().isWebGPU),this._buildUniformLayout(),t.performancePriority){case 2:this.doNotSyncBoundingInfo=!0;case 1:this.alwaysSelectAsActiveMesh=!0,this.isPickable=!1;break}}_buildUniformLayout(){this._uniformBuffer.addUniform("world",16),this._uniformBuffer.addUniform("visibility",1),this._uniformBuffer.create()}transferToEffect(e){let t=this._uniformBuffer;t.updateMatrix("world",e),t.updateFloat("visibility",this._internalAbstractMeshDataInfo._visibility),t.update()}getMeshUniformBuffer(){return this._uniformBuffer}getClassName(){return"AbstractMesh"}toString(e){let t="Name: "+this.name+", isInstance: "+(this.getClassName()==="InstancedMesh"?"YES":"NO");t+=", # of submeshes: "+(this.subMeshes?this.subMeshes.length:0);let i=this._internalAbstractMeshDataInfo._skeleton;return i&&(t+=", skeleton: "+i.name),e&&(t+=", billboard mode: "+["NONE","X","Y",null,"Z",null,null,"ALL"][this.billboardMode],t+=", freeze wrld mat: "+(this._isWorldMatrixFrozen||this._waitingData.freezeWorldMatrix?"YES":"NO")),t}_getEffectiveParent(){return this._masterMesh&&this.billboardMode!==Yt.BILLBOARDMODE_NONE?this._masterMesh:super._getEffectiveParent()}_getActionManagerForTrigger(e,t=!0){if(this.actionManager&&(t||this.actionManager.isRecursive))if(e){if(this.actionManager.hasSpecificTrigger(e))return this.actionManager}else return this.actionManager;return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_releaseRenderPassId(e){}_rebuild(e=!1){if(this.onRebuildObservable.notifyObservers(this),this._occlusionQuery!==null&&(this._occlusionQuery=null),!!this.subMeshes){for(let t of this.subMeshes)t._rebuild();this.resetDrawCache()}}_resyncLightSources(){this._lightSources.length=0;for(let e of this.getScene().lights)e.isEnabled()&&e.canAffectMesh(this)&&this._lightSources.push(e);this._markSubMeshesAsLightDirty()}_resyncLightSource(e){let t=e.isEnabled()&&e.canAffectMesh(this),i=this._lightSources.indexOf(e),r=!1;if(i===-1){if(!t)return;this._lightSources.push(e)}else{if(t)return;r=!0,this._lightSources.splice(i,1)}this._markSubMeshesAsLightDirty(r)}_unBindEffect(){for(let e of this.subMeshes)e.setEffect(null)}_removeLightSource(e,t){let i=this._lightSources.indexOf(e);i!==-1&&(this._lightSources.splice(i,1),this._markSubMeshesAsLightDirty(t))}_markSubMeshesAsDirty(e){if(this.subMeshes)for(let t of this.subMeshes)for(let i=0;it.markAsLightDirty(e))}_markSubMeshesAsAttributesDirty(){this._markSubMeshesAsDirty(e=>e.markAsAttributesDirty())}_markSubMeshesAsMiscDirty(){this._markSubMeshesAsDirty(e=>e.markAsMiscDirty())}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,super.markAsDirty(e),this._isDirty=!0,this}resetDrawCache(e,t=!1){if(this.subMeshes)for(let i of this.subMeshes)i.resetDrawCache(e,t)}get isBlocked(){return!1}getLOD(e){return this}getTotalVertices(){return 0}getTotalIndices(){return 0}getIndices(){return null}getVerticesData(e){return null}setVerticesData(e,t,i,r){return this}updateVerticesData(e,t,i,r){return this}setIndices(e,t){return this}isVerticesDataPresent(e){return!1}getBoundingInfo(){return this._masterMesh?this._masterMesh.getBoundingInfo():(this._boundingInfoIsDirty&&(this._boundingInfoIsDirty=!1,this._updateBoundingInfo()),this._boundingInfo)}getRawBoundingInfo(){var e;return(e=this.rawBoundingInfo)!=null?e:this.getBoundingInfo()}setBoundingInfo(e){return this._boundingInfo=e,this}get hasBoundingInfo(){return this._boundingInfo!==null}buildBoundingInfo(e,t,i){return this._boundingInfo=new pn(e,t,i),this._boundingInfo}normalizeToUnitCube(e=!0,t=!1,i){return super.normalizeToUnitCube(e,t,i)}get useBones(){return this.skeleton&&this.getScene().skeletonsEnabled&&this.isVerticesDataPresent(D.MatricesIndicesKind)&&this.isVerticesDataPresent(D.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===Yt.BILLBOARDMODE_NONE?this._masterMesh.getWorldMatrix():super.getWorldMatrix()}_getWorldMatrixDeterminant(){return this._masterMesh?this._masterMesh._getWorldMatrixDeterminant():super._getWorldMatrixDeterminant()}get isAnInstance(){return!1}get hasInstances(){return!1}get hasThinInstances(){return!1}movePOV(e,t,i){return this.position.addInPlace(this.calcMovePOV(e,t,i)),this}calcMovePOV(e,t,i){let r=new q;(this.rotationQuaternion?this.rotationQuaternion:Xe.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z)).toRotationMatrix(r);let a=b.Zero(),o=this.definedFacingForward?-1:1;return b.TransformCoordinatesFromFloatsToRef(e*o,t,i*o,r,a),a}rotatePOV(e,t,i){return this.rotation.addInPlace(this.calcRotatePOV(e,t,i)),this}calcRotatePOV(e,t,i){let r=this.definedFacingForward?1:-1;return new b(e*r,t,i*r)}_refreshBoundingInfo(e,t){if(e){let i=Ix(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new pn(i.minimum,i.maximum)}if(this.subMeshes)for(let i=0;i{if(r){let o=r._vertexData||(r._vertexData={});return o[a]||this.copyVerticesData(a,o),o[a]}return this.getVerticesData(a)};if(t||(t=s(i)),!t)return null;if(r?(r._outputData?r._outputData.set(t):r._outputData=new Float32Array(t),t=r._outputData):(e.applyMorph&&this.morphTargetManager||e.applySkeleton&&this.skeleton)&&(t=t.slice()),e.applyMorph&&this.morphTargetManager&&Wce(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(D.MatricesIndicesKind),o=s(D.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(D.MatricesIndicesExtraKind):null,f=l?s(D.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===D.PositionKind){let a=this._internalAbstractMeshDataInfo._positions||[],o=a.length;if(a.length=t.length/3,o1||!r.IsGlobal)&&r.updateBoundingInfo(e)}return this}_afterComputeWorldMatrix(){this.doNotSyncBoundingInfo||(this._boundingInfoIsDirty=!0)}isInFrustum(e){return this.getBoundingInfo().isInFrustum(e,this.cullingStrategy)}isCompletelyInFrustum(e){return this.getBoundingInfo().isCompletelyInFrustum(e)}intersectsMesh(e,t=!1,i){let r=this.getBoundingInfo(),s=e.getBoundingInfo();if(r.intersects(s,t))return!0;if(i){for(let a of this.getChildMeshes())if(a.intersectsMesh(e,t,!0))return!0}return!1}intersectsPoint(e){return this.getBoundingInfo().intersectsPoint(e)}get checkCollisions(){return this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions}set checkCollisions(e){this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions=e}get collider(){return this._internalAbstractMeshDataInfo._meshCollisionData._collider}moveWithCollisions(e,t=!0){this.getAbsolutePosition().addToRef(this.ellipsoidOffset,this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions);let r=this.getScene().collisionCoordinator;return this._internalAbstractMeshDataInfo._meshCollisionData._collider||(this._internalAbstractMeshDataInfo._meshCollisionData._collider=r.createCollider()),this._internalAbstractMeshDataInfo._meshCollisionData._collider._radius=this.ellipsoid,r.getNewPosition(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,e,this._internalAbstractMeshDataInfo._meshCollisionData._collider,this.collisionRetryCount,this,this._onCollisionPositionChange,this.uniqueId,t),this}_collideForSubMesh(e,t,i){var r;if(this._generatePointsArray(),!this._positions)return this;if(!e._lastColliderWorldVertices||!e._lastColliderTransformMatrix.equals(t)){e._lastColliderTransformMatrix=t.clone(),e._lastColliderWorldVertices=[],e._trianglePlanes=[];let s=e.verticesStart,a=e.verticesStart+e.verticesCount;for(let o=s;o1&&!a._checkCollision(e)||this._collideForSubMesh(a,t,e)}return this}_shouldConvertRHS(){return!1}_checkCollision(e){if(!this.getBoundingInfo()._checkCollision(e))return this;let t=$.Matrix[0],i=$.Matrix[1];return q.ScalingToRef(1/e._radius.x,1/e._radius.y,1/e._radius.z,t),this.worldMatrixFromCache.multiplyToRef(t,i),this._processCollisionsForSubMeshes(e,i),this}_generatePointsArray(){return!1}intersects(e,t,i,r=!1,s,a=!1){let o=new fs,l=this.getClassName(),c=l==="InstancedLinesMesh"||l==="LinesMesh"||l==="GreasedLineMesh"?this.intersectionThreshold:0,f=this.getBoundingInfo();if(!this.subMeshes||!a&&(!e.intersectsSphere(f.boundingSphere,c)||!e.intersectsBox(f.boundingBox,c)))return o;if(r)return o.hit=!a,o.pickedMesh=a?null:this,o.distance=a?0:b.Distance(e.origin,f.boundingSphere.center),o.subMeshId=0,o;if(!this._generatePointsArray())return o;let d=null,h=this._scene.getIntersectingSubMeshCandidates(this,e),u=h.length,m=!1;for(let _=0;_1&&!a&&!p.canIntersects(e))continue;let g=p.intersects(e,this._positions,this.getIndices(),t,i);if(g&&(t||!d||g.distanceo!==this&&o.actionManager===this.actionManager)&&this.actionManager.dispose(),this.actionManager=null),this._internalAbstractMeshDataInfo._skeleton=null,this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null),i=0;i-1&&this._parentContainer.meshes.splice(o,1),this._parentContainer=null}if(t&&this.material&&(this.material.getClassName()==="MultiMaterial"?this.material.dispose(!1,!0,!0):this.material.dispose(!1,!0)),!e)for(i=0;i65535){l=!0;break}l?e.depthSortedIndices=new Uint32Array(i):e.depthSortedIndices=new Uint16Array(i)}if(e.facetDepthSortFunction=function(l,c){return c.sqDistance-l.sqDistance},!e.facetDepthSortFrom){let l=this.getScene().activeCamera;e.facetDepthSortFrom=l?l.position:b.Zero()}e.depthSortedFacets=[];for(let l=0;lNt?s.maximum.x-s.minimum.x:Nt,e.bbSize.y=s.maximum.y-s.minimum.y>Nt?s.maximum.y-s.minimum.y:Nt,e.bbSize.z=s.maximum.z-s.minimum.z>Nt?s.maximum.z-s.minimum.z:Nt;let a=e.bbSize.x>e.bbSize.y?e.bbSize.x:e.bbSize.y;if(a=a>e.bbSize.z?a:e.bbSize.z,e.subDiv.max=e.partitioningSubdivisions,e.subDiv.X=Math.floor(e.subDiv.max*e.bbSize.x/a),e.subDiv.Y=Math.floor(e.subDiv.max*e.bbSize.y/a),e.subDiv.Z=Math.floor(e.subDiv.max*e.bbSize.z/a),e.subDiv.X=e.subDiv.X<1?1:e.subDiv.X,e.subDiv.Y=e.subDiv.Y<1?1:e.subDiv.Y,e.subDiv.Z=e.subDiv.Z<1?1:e.subDiv.Z,e.facetParameters.facetNormals=this.getFacetLocalNormals(),e.facetParameters.facetPositions=this.getFacetLocalPositions(),e.facetParameters.facetPartitioning=this.getFacetLocalPartitioning(),e.facetParameters.bInfo=s,e.facetParameters.bbSize=e.bbSize,e.facetParameters.subDiv=e.subDiv,e.facetParameters.ratio=this.partitioningBBoxRatio,e.facetParameters.depthSort=e.facetDepthSort,e.facetDepthSort&&e.facetDepthSortEnabled&&(this.computeWorldMatrix(!0),this._worldMatrix.invertToRef(e.invertedMatrix),b.TransformCoordinatesToRef(e.facetDepthSortFrom,e.invertedMatrix,e.facetDepthSortOrigin),e.facetParameters.distanceTo=e.facetDepthSortOrigin),e.facetParameters.depthSortedFacets=e.depthSortedFacets,r&&ye.ComputeNormals(t,i,r,e.facetParameters),e.facetDepthSort&&e.facetDepthSortEnabled){e.depthSortedFacets.sort(e.facetDepthSortFunction);let l=e.depthSortedIndices.length/3|0;for(let c=0;cs.subDiv.max||o<0||o>s.subDiv.max||l<0||l>s.subDiv.max?null:s.facetPartitioning[a+s.subDiv.max*o+s.subDiv.max*s.subDiv.max*l]}getClosestFacetAtCoordinates(e,t,i,r,s=!1,a=!0){let o=this.getWorldMatrix(),l=$.Matrix[5];o.invertToRef(l);let c=$.Vector3[8];b.TransformCoordinatesFromFloatsToRef(e,t,i,l,c);let f=this.getClosestFacetAtLocalCoordinates(c.x,c.y,c.z,r,s,a);return r&&b.TransformCoordinatesFromFloatsToRef(r.x,r.y,r.z,o,r),f}getClosestFacetAtLocalCoordinates(e,t,i,r,s=!1,a=!0){let o=null,l,c,f,d,h,u,m,_,p=this.getFacetLocalPositions(),g=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let x=Number.MAX_VALUE,S,E,T,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=T.x*R.x+T.y*R.y+T.z*R.z,h=-(T.x*e+T.y*t+T.z*i-d)/(T.x*T.x+T.y*T.y+T.z*T.z),u=e+T.x*h,m=t+T.y*h,_=i+T.z*h,l=u-e,c=m-t,f=_-i,S=l*l+c*c+f*f,S(VW(),UW));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Ns.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?Xe.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw Qe("EdgesRenderer")}enableEdgesRendering(e,t,i){throw Qe("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};Ar.OCCLUSION_TYPE_NONE=0;Ar.OCCLUSION_TYPE_OPTIMISTIC=1;Ar.OCCLUSION_TYPE_STRICT=2;Ar.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;Ar.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;Ar.CULLINGSTRATEGY_STANDARD=0;Ar.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;Ar.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;Ar.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;Ar.DefaultIsPickable=!0;P([ws.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],Ar,"_ApplySkeleton",null);Ft("BABYLON.AbstractMesh",Ar)});var kn,GW=I(()=>{Gt();br();Vt();kn=class{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=519,this.opStencilFail=7680,this.opDepthFail=7680,this.opStencilDepthPass=7681,this.backFunc=519,this.backOpStencilFail=7680,this.backOpDepthFail=7680,this.backOpStencilDepthPass=7681}get func(){return this._func}set func(e){this._func=e}get backFunc(){return this._backFunc}set backFunc(e){this._backFunc=e}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef=e}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask=e}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail=e}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail=e}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass=e}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail=e}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail=e}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass=e}get mask(){return this._mask}set mask(e){this._mask=e}get enabled(){return this._enabled}set enabled(e){this._enabled=e}getClassName(){return"MaterialStencilState"}copyTo(e){it.Clone(()=>e,this)}serialize(){return it.Serialize(this)}parse(e,t,i){it.Parse(()=>this,e,t,i)}};P([F()],kn.prototype,"func",null);P([F()],kn.prototype,"backFunc",null);P([F()],kn.prototype,"funcRef",null);P([F()],kn.prototype,"funcMask",null);P([F()],kn.prototype,"opStencilFail",null);P([F()],kn.prototype,"opDepthFail",null);P([F()],kn.prototype,"opStencilDepthPass",null);P([F()],kn.prototype,"backOpStencilFail",null);P([F()],kn.prototype,"backOpDepthFail",null);P([F()],kn.prototype,"backOpStencilDepthPass",null);P([F()],kn.prototype,"mask",null);P([F()],kn.prototype,"enabled",null)});function Wn(n){n.indexOf("vClipPlane")===-1&&n.push("vClipPlane"),n.indexOf("vClipPlane2")===-1&&n.push("vClipPlane2"),n.indexOf("vClipPlane3")===-1&&n.push("vClipPlane3"),n.indexOf("vClipPlane4")===-1&&n.push("vClipPlane4"),n.indexOf("vClipPlane5")===-1&&n.push("vClipPlane5"),n.indexOf("vClipPlane6")===-1&&n.push("vClipPlane6")}function gl(n,e,t){var c,f,d,h,u,m;let i=!!((c=n.clipPlane)!=null?c:e.clipPlane),r=!!((f=n.clipPlane2)!=null?f:e.clipPlane2),s=!!((d=n.clipPlane3)!=null?d:e.clipPlane3),a=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),o=!!((u=n.clipPlane5)!=null?u:e.clipPlane5),l=!!((m=n.clipPlane6)!=null?m:e.clipPlane6);i&&t.push("#define CLIPPLANE"),r&&t.push("#define CLIPPLANE2"),s&&t.push("#define CLIPPLANE3"),a&&t.push("#define CLIPPLANE4"),o&&t.push("#define CLIPPLANE5"),l&&t.push("#define CLIPPLANE6")}function kW(n,e,t){var f,d,h,u,m,_;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((h=n.clipPlane3)!=null?h:e.clipPlane3),o=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((_=n.clipPlane6)!=null?_:e.clipPlane6);return t.CLIPPLANE!==r&&(t.CLIPPLANE=r,i=!0),t.CLIPPLANE2!==s&&(t.CLIPPLANE2=s,i=!0),t.CLIPPLANE3!==a&&(t.CLIPPLANE3=a,i=!0),t.CLIPPLANE4!==o&&(t.CLIPPLANE4=o,i=!0),t.CLIPPLANE5!==l&&(t.CLIPPLANE5=l,i=!0),t.CLIPPLANE6!==c&&(t.CLIPPLANE6=c,i=!0),i}function Hn(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;wm(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,wm(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,wm(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,wm(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,wm(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,wm(n,"vClipPlane6",i)}function wm(n,e,t){var i;if(t){let r=((i=Oa.getScene())==null?void 0:i.floatingOriginOffset)||b.ZeroReadOnly;n.setFloat4(e,t.normal.x,t.normal.y,t.normal.z,t.d+b.Dot(t.normal,r))}}var vl=I(()=>{Pg();ke()});var ce,Ua=I(()=>{Vr();ce=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Ie.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}};ce._DiffuseTextureEnabled=!0;ce._BaseWeightTextureEnabled=!0;ce._BaseDiffuseRoughnessTextureEnabled=!0;ce._DetailTextureEnabled=!0;ce._DecalMapEnabled=!0;ce._AmbientTextureEnabled=!0;ce._OpacityTextureEnabled=!0;ce._ReflectionTextureEnabled=!0;ce._EmissiveTextureEnabled=!0;ce._SpecularTextureEnabled=!0;ce._BumpTextureEnabled=!0;ce._LightmapTextureEnabled=!0;ce._RefractionTextureEnabled=!0;ce._ColorGradingTextureEnabled=!0;ce._FresnelEnabled=!0;ce._ClearCoatTextureEnabled=!0;ce._ClearCoatBumpTextureEnabled=!0;ce._ClearCoatTintTextureEnabled=!0;ce._SheenTextureEnabled=!0;ce._AnisotropicTextureEnabled=!0;ce._ThicknessTextureEnabled=!0;ce._RefractionIntensityTextureEnabled=!0;ce._TranslucencyIntensityTextureEnabled=!0;ce._TranslucencyColorTextureEnabled=!0;ce._IridescenceTextureEnabled=!0});function Cf(n,e,t){if(!n||n.LOGARITHMICDEPTH||n.indexOf&&n.indexOf("LOGARITHMICDEPTH")>=0){let i=t.activeCamera;i.mode===1&&ee.Error("Logarithmic depth is not compatible with orthographic cameras!",20),e.setFloat("logarithmicDepthConstant",2/(Math.log(i.maxZ+1)/Math.LN2))}}var WW=I(()=>{Pt()});function Pf(n,e,t,i=!1){t&&n.fogEnabled&&(!e||e.applyFog)&&n.fogMode!==0&&(t.setFloat4("vFogInfos",n.fogMode,n.fogStart,n.fogEnd,n.fogDensity),i?(n.fogColor.toLinearSpaceToRef(HW,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",HW)):t.setColor3("vFogColor",n.fogColor))}function El(n,e,t,i,r,s,a,o,l,c){let f=n.numMaxInfluencers||n.numInfluencers;return f<=0?0:(e.push("#define MORPHTARGETS"),n.hasPositions&&e.push("#define MORPHTARGETTEXTURE_HASPOSITIONS"),n.hasNormals&&e.push("#define MORPHTARGETTEXTURE_HASNORMALS"),n.hasTangents&&e.push("#define MORPHTARGETTEXTURE_HASTANGENTS"),n.hasUVs&&e.push("#define MORPHTARGETTEXTURE_HASUVS"),n.hasUV2s&&e.push("#define MORPHTARGETTEXTURE_HASUV2S"),n.hasColors&&e.push("#define MORPHTARGETTEXTURE_HASCOLORS"),n.supportsPositions&&r&&e.push("#define MORPHTARGETS_POSITION"),n.supportsNormals&&s&&e.push("#define MORPHTARGETS_NORMAL"),n.supportsTangents&&a&&e.push("#define MORPHTARGETS_TANGENT"),n.supportsUVs&&o&&e.push("#define MORPHTARGETS_UV"),n.supportsUV2s&&l&&e.push("#define MORPHTARGETS_UV2"),n.supportsColors&&c&&e.push("#define MORPHTARGETS_COLOR"),e.push("#define NUM_MORPH_INFLUENCERS "+f),n.isUsingTextureForTargets&&e.push("#define MORPHTARGETS_TEXTURE"),_h.NUM_MORPH_INFLUENCERS=f,_h.NORMAL=s,_h.TANGENT=a,_h.UV=o,_h.UV2=l,_h.COLOR=c,gh(t,i,_h,r),f)}function gh(n,e,t,i=!0){let r=t.NUM_MORPH_INFLUENCERS;if(r>0&&Oe.LastCreatedEngine){let s=Oe.LastCreatedEngine.getCaps().maxVertexAttribs,a=e.morphTargetManager;if(a!=null&&a.isUsingTextureForTargets)return;let o=a&&a.supportsPositions&&i,l=a&&a.supportsNormals&&t.NORMAL,c=a&&a.supportsTangents&&t.TANGENT,f=a&&a.supportsUVs&&t.UV1,d=a&&a.supportsUV2s&&t.UV2,h=a&&a.supportsColors&&t.VERTEXCOLOR;for(let u=0;us&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function yo(n,e=!1){n.push("world0"),n.push("world1"),n.push("world2"),n.push("world3"),e&&(n.push("previousWorld0"),n.push("previousWorld1"),n.push("previousWorld2"),n.push("previousWorld3"))}function zn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function Df(n,e){e.bindToEffect(n,"Scene")}function Fm(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&ce.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let h=r;t.updateVector3("vReflectionPosition",h.boundingBoxPosition),t.updateVector3("vReflectionSize",h.boundingBoxSize)}if(s){let h=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",h,Math.log2(h))}if(c&&!e.USEIRRADIANCEMAP){let h=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&h)if(e.SPHERICAL_HARMONICS){let u=h.preScaledHarmonics;t.updateVector3("vSphericalL00",u.l00),t.updateVector3("vSphericalL1_1",u.l1_1),t.updateVector3("vSphericalL10",u.l10),t.updateVector3("vSphericalL11",u.l11),t.updateVector3("vSphericalL2_2",u.l2_2),t.updateVector3("vSphericalL2_1",u.l2_1),t.updateVector3("vSphericalL20",u.l20),t.updateVector3("vSphericalL21",u.l21),t.updateVector3("vSphericalL22",u.l22)}else t.updateFloat3("vSphericalX",h.x.x,h.x.y,h.x.z),t.updateFloat3("vSphericalY",h.y.x,h.y.y,h.y.z),t.updateFloat3("vSphericalZ",h.z.x,h.z.y,h.z.z),t.updateFloat3("vSphericalXX_ZZ",h.xx.x-h.zz.x,h.xx.y-h.zz.y,h.xx.z-h.zz.z),t.updateFloat3("vSphericalYY_ZZ",h.yy.x-h.zz.x,h.yy.y-h.zz.y,h.yy.z-h.zz.z),t.updateFloat3("vSphericalZZ",h.zz.x,h.zz.y,h.zz.z),t.updateFloat3("vSphericalXY",h.xy.x,h.xy.y,h.xy.z),t.updateFloat3("vSphericalYZ",h.yz.x,h.yz.y,h.yz.z),t.updateFloat3("vSphericalZX",h.zx.x,h.zx.y,h.zx.z)}else l&&e.USEIRRADIANCEMAP&&e.USE_IRRADIANCE_DOMINANT_DIRECTION&&r.irradianceTexture&&t.updateVector3("vReflectionDominantDirection",r.irradianceTexture._dominantDirection);a&&t.updateFloat3("vReflectionMicrosurfaceInfos",r.getSize().width,r.lodGenerationScale,r.lodGenerationOffset)}f&&t.updateColor3("vReflectionColor",i)}function Ox(n,e,t,i=null,r=!1){if(i&&ce.ReflectionTextureEnabled){e.LODBASEDMICROSFURACE?t.setTexture("reflectionSampler",i):(t.setTexture("reflectionSampler",i._lodTextureMid||i),t.setTexture("reflectionSamplerLow",i._lodTextureLow||i),t.setTexture("reflectionSamplerHigh",i._lodTextureHigh||i)),e.USEIRRADIANCEMAP&&t.setTexture("irradianceSampler",i.irradianceTexture);let s=n.iblCdfGenerator;r&&s&&t.setTexture("icdfSampler",s.getIcdfTexture())}}function ri(n,e,t){e._needUVs=!0,e[t]=!0,n.optimizeUVAllocation&&n.getTextureMatrix().isIdentityAs3x2()?(e[t+"DIRECTUV"]=n.coordinatesIndex+1,e["MAINUV"+(n.coordinatesIndex+1)]=!0):e[t+"DIRECTUV"]=0}function ni(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function Bm(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function zce(n,e){return e.set(n),e}function Vs(n,e,t){if(!(!e||!n)&&(n.computeBonesUsingShaders&&e._bonesComputationForcedToCPU&&(n.computeBonesUsingShaders=!1),n.useBones&&n.computeBonesUsingShaders&&n.skeleton)){let i=n.skeleton;if(i.isUsingTextureForMatrices&&e.getUniformIndex("boneTextureInfo")>-1){let r=i.getTransformMatrixTexture(n);e.setTexture("boneSampler",r),e.setFloat2("boneTextureInfo",i._textureWidth,i._textureHeight)}else{let r=i.getTransformMatrices(n);r&&(e.setMatrices("mBones",r),t&&n.getScene().prePassRenderer&&n.getScene().prePassRenderer.getIndex(2)&&(t.previousBones[n.uniqueId]||(t.previousBones[n.uniqueId]=r.slice()),e.setMatrices("mPreviousBones",t.previousBones[n.uniqueId]),zce(r,t.previousBones[n.uniqueId])))}}}function Xce(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function Um(n,e,t,i,r=4){let s=Math.min(e.lightSources.length,r);for(let a=0;a0&&(i.addCPUSkinningFallback(0,e),n.push("matricesIndices"),n.push("matricesWeights"),t.NUM_BONE_INFLUENCERS>4&&(n.push("matricesIndicesExtra"),n.push("matricesWeightsExtra")))}function Gm(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&yo(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function km(n,e,t=4,i=0){let r=0;for(let s=0;s0&&(r=i+s,e.addFallback(r,"LIGHT"+s)),n.SHADOWS||(n["SHADOW"+s]&&e.addFallback(i,"SHADOW"+s),n["SHADOWPCF"+s]&&e.addFallback(i,"SHADOWPCF"+s),n["SHADOWPCSS"+s]&&e.addFallback(i,"SHADOWPCSS"+s),n["SHADOWPOISSON"+s]&&e.addFallback(i,"SHADOWPOISSON"+s),n["SHADOWESM"+s]&&e.addFallback(i,"SHADOWESM"+s),n["SHADOWCLOSEESM"+s]&&e.addFallback(i,"SHADOWCLOSEESM"+s));return r}function Yce(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function Wm(n,e,t,i,r,s,a,o=!1,l=!1,c,f){var d;if(a._areMiscDirty){a.LOGARITHMICDEPTH=t,a.POINTSIZE=i,a.FOG=r&&Yce(n,e),a.NONUNIFORMSCALING=n.nonUniformScaling,a.ALPHATEST=s,a.DECAL_AFTER_DETAIL=o,a.USE_VERTEX_PULLING=l,a.RIGHT_HANDED=e.useRightHandedSystem;let h=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),u=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!h&&!u,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=h&&!u?h.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function Hm(n,e,t,i=!1){if(!n.lightsEnabled||i)return!0;let r=e.lightSources,s=Math.min(r.length,t);for(let a=0;a0?(t.NUM_SAMPLES=""+r,a._features.needTypeSuffixInShaderConstants&&(t.NUM_SAMPLES=t.NUM_SAMPLES+"u"),t.REALTIME_FILTERING=!0,n.iblCdfGenerator&&(t.IBL_CDF_FILTERING=!0)):t.REALTIME_FILTERING=!1,t.INVERTCUBICMAP=e.coordinatesMode===ge.INVCUBIC_MODE,t.REFLECTIONMAP_3D=e.isCube,t.REFLECTIONMAP_OPPOSITEZ=t.REFLECTIONMAP_3D&&n.useRightHandedSystem?!e.invertZ:e.invertZ,t.REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,e.coordinatesMode){case ge.EXPLICIT_MODE:t.REFLECTIONMAP_EXPLICIT=!0;break;case ge.PLANAR_MODE:t.REFLECTIONMAP_PLANAR=!0;break;case ge.PROJECTION_MODE:t.REFLECTIONMAP_PROJECTION=!0;break;case ge.SKYBOX_MODE:t.REFLECTIONMAP_SKYBOX=!0;break;case ge.SPHERICAL_MODE:t.REFLECTIONMAP_SPHERICAL=!0;break;case ge.EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR=!0;break;case ge.FIXED_EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!0;break;case ge.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!0;break;case ge.CUBIC_MODE:case ge.INVCUBIC_MODE:default:t.REFLECTIONMAP_CUBIC=!0,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!!e.boundingBoxSize;break}e.coordinatesMode!==ge.SKYBOX_MODE&&(e.irradianceTexture?(t.USEIRRADIANCEMAP=!0,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USESPHERICALINVERTEX=!1,e.irradianceTexture._dominantDirection?t.USE_IRRADIANCE_DOMINANT_DIRECTION=!0:t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1):e.isCube&&(t.USESPHERICALFROMREFLECTIONMAP=!0,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=s))}else t.REFLECTION=!1,t.REFLECTIONMAP_3D=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_CUBIC=!1,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,t.INVERTCUBICMAP=!1,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=!1,t.REFLECTIONMAP_OPPOSITEZ=!1,t.LODINREFLECTIONALPHA=!1,t.GAMMAREFLECTION=!1,t.RGBDREFLECTION=!1,t.LINEARSPECULARREFLECTION=!1;return!0}function Kce(n,e,t,i,r,s,a){var o;switch(a.needNormals=!0,r["LIGHT"+i]===void 0&&(a.needRebuild=!0),r["LIGHT"+i]=!0,r["SPOTLIGHT"+i]=!1,r["HEMILIGHT"+i]=!1,r["POINTLIGHT"+i]=!1,r["DIRLIGHT"+i]=!1,r["AREALIGHT"+i]=!1,r["CLUSTLIGHT"+i]=!1,t.prepareLightSpecificDefines(r,i),r["LIGHT_FALLOFF_PHYSICAL"+i]=!1,r["LIGHT_FALLOFF_GLTF"+i]=!1,r["LIGHT_FALLOFF_STANDARD"+i]=!1,t.falloffType){case Xt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case Xt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case Xt.FALLOFF_STANDARD:r["LIGHT_FALLOFF_STANDARD"+i]=!0;break}if(s&&!t.specular.equalsFloats(0,0,0)&&(a.specularEnabled=!0),r["SHADOW"+i]=!1,r["SHADOWCSM"+i]=!1,r["SHADOWCSMDEBUG"+i]=!1,r["SHADOWCSMNUM_CASCADES"+i]=!1,r["SHADOWCSMUSESHADOWMAXZ"+i]=!1,r["SHADOWCSMNOBLEND"+i]=!1,r["SHADOWCSM_RIGHTHANDED"+i]=!1,r["SHADOWPCF"+i]=!1,r["SHADOWPCSS"+i]=!1,r["SHADOWPOISSON"+i]=!1,r["SHADOWESM"+i]=!1,r["SHADOWCLOSEESM"+i]=!1,r["SHADOWCUBE"+i]=!1,r["SHADOWLOWQUALITY"+i]=!1,r["SHADOWMEDIUMQUALITY"+i]=!1,e&&e.receiveShadows&&n.shadowsEnabled&&t.shadowEnabled){let l=(o=t.getShadowGenerator(n.activeCamera))!=null?o:t.getShadowGenerator();if(l){let c=l.getShadowMap();c&&c.renderList&&c.renderList.length>0&&(a.shadowEnabled=!0,l.prepareDefines(r,i))}}t.lightmapMode!=Xt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==Xt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function Xm(n,e,t,i,r,s=null,a=!1){let o=Qce(n,i);s!==!1&&(o=kW(t,n,i)),i.DEPTHPREPASS!==!e.getColorWrite()&&(i.DEPTHPREPASS=!i.DEPTHPREPASS,o=!0),i.INSTANCES!==r&&(i.INSTANCES=r,o=!0),i.THIN_INSTANCES!==a&&(i.THIN_INSTANCES=a,o=!0),o&&i.markAsUnprocessed()}function jce(n,e){if(n.useBones&&n.computeBonesUsingShaders&&n.skeleton){e.NUM_BONE_INFLUENCERS=n.numBoneInfluencers;let t=e.BONETEXTURE!==void 0;if(n.skeleton.isUsingTextureForMatrices&&t)e.BONETEXTURE=!0;else{e.BonesPerMesh=n.skeleton.bones.length+1,e.BONETEXTURE=t?!1:void 0;let i=n.getScene().prePassRenderer;if(i&&i.enabled){let r=i.excludedSkinnedMesh.indexOf(n)===-1;e.BONES_VELOCITY_ENABLED=r}}}else e.NUM_BONE_INFLUENCERS=0,e.BonesPerMesh=0,e.BONETEXTURE!==void 0&&(e.BONETEXTURE=!1)}function qce(n,e){let t=n.morphTargetManager;t?(e.MORPHTARGETS_UV=t.supportsUVs&&e.UV1,e.MORPHTARGETS_UV2=t.supportsUV2s&&e.UV2,e.MORPHTARGETS_TANGENT=t.supportsTangents&&e.TANGENT,e.MORPHTARGETS_NORMAL=t.supportsNormals&&e.NORMAL,e.MORPHTARGETS_POSITION=t.supportsPositions,e.MORPHTARGETS_COLOR=t.supportsColors,e.MORPHTARGETTEXTURE_HASUVS=t.hasUVs,e.MORPHTARGETTEXTURE_HASUV2S=t.hasUV2s,e.MORPHTARGETTEXTURE_HASTANGENTS=t.hasTangents,e.MORPHTARGETTEXTURE_HASNORMALS=t.hasNormals,e.MORPHTARGETTEXTURE_HASPOSITIONS=t.hasPositions,e.MORPHTARGETTEXTURE_HASCOLORS=t.hasColors,e.NUM_MORPH_INFLUENCERS=t.numMaxInfluencers||t.numInfluencers,e.MORPHTARGETS=e.NUM_MORPH_INFLUENCERS>0,e.MORPHTARGETS_TEXTURE=t.isUsingTextureForTargets):(e.MORPHTARGETS_UV=!1,e.MORPHTARGETS_UV2=!1,e.MORPHTARGETS_TANGENT=!1,e.MORPHTARGETS_NORMAL=!1,e.MORPHTARGETS_POSITION=!1,e.MORPHTARGETS_COLOR=!1,e.MORPHTARGETTEXTURE_HASUVS=!1,e.MORPHTARGETTEXTURE_HASUV2S=!1,e.MORPHTARGETTEXTURE_HASTANGENTS=!1,e.MORPHTARGETTEXTURE_HASNORMALS=!1,e.MORPHTARGETTEXTURE_HASPOSITIONS=!1,e.MORPHTARGETTEXTURE_HAS_COLORS=!1,e.MORPHTARGETS=!1,e.NUM_MORPH_INFLUENCERS=0)}function Zce(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function Ym(n,e,t,i,r=!1,s=!0,a=!0){if(!e._areAttributesDirty&&e._needNormals===e._normals&&e._needUVs===e._uvs)return!1;e._normals=e._needNormals,e._uvs=e._needUVs,e.NORMAL=e._needNormals&&n.isVerticesDataPresent("normal"),e._needNormals&&n.isVerticesDataPresent("tangent")&&(e.TANGENT=!0);for(let o=1;o<=6;++o)e["UV"+o]=e._needUVs?n.isVerticesDataPresent(`uv${o===1?"":o}`):!1;if(t){let o=n.useVertexColors&&n.isVerticesDataPresent("color");e.VERTEXCOLOR=o,e.VERTEXALPHA=n.hasVertexAlpha&&o&&s}return n.isVerticesDataPresent("instanceColor")&&(n.hasInstances||n.hasThinInstances)&&(e.INSTANCESCOLOR=!0),i&&jce(n,e),r&&qce(n,e),a&&Zce(n,e),!0}function Km(n,e){if(n.activeCamera){let t=e.MULTIVIEW;e.MULTIVIEW=n.activeCamera.outputRenderTarget!==null&&n.activeCamera.outputRenderTarget.getViewCount()>1,e.MULTIVIEW!=t&&e.markAsUnprocessed()}}function jm(n,e,t){let i=e.ORDER_INDEPENDENT_TRANSPARENCY,r=e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS;e.ORDER_INDEPENDENT_TRANSPARENCY=n.useOrderIndependentTransparency&&t,e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!n.getEngine().getCaps().textureFloatLinearFiltering,(i!==e.ORDER_INDEPENDENT_TRANSPARENCY||r!==e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS)&&e.markAsUnprocessed()}function qm(n,e,t){let i=e.PREPASS;if(!e._arePrePassDirty)return;let r=[{type:1,define:"PREPASS_POSITION",index:"PREPASS_POSITION_INDEX"},{type:9,define:"PREPASS_LOCAL_POSITION",index:"PREPASS_LOCAL_POSITION_INDEX"},{type:2,define:"PREPASS_VELOCITY",index:"PREPASS_VELOCITY_INDEX"},{type:11,define:"PREPASS_VELOCITY_LINEAR",index:"PREPASS_VELOCITY_LINEAR_INDEX"},{type:3,define:"PREPASS_REFLECTIVITY",index:"PREPASS_REFLECTIVITY_INDEX"},{type:0,define:"PREPASS_IRRADIANCE_LEGACY",index:"PREPASS_IRRADIANCE_LEGACY_INDEX"},{type:7,define:"PREPASS_ALBEDO_SQRT",index:"PREPASS_ALBEDO_SQRT_INDEX"},{type:5,define:"PREPASS_DEPTH",index:"PREPASS_DEPTH_INDEX"},{type:10,define:"PREPASS_SCREENSPACE_DEPTH",index:"PREPASS_SCREENSPACE_DEPTH_INDEX"},{type:6,define:"PREPASS_NORMAL",index:"PREPASS_NORMAL_INDEX"},{type:8,define:"PREPASS_WORLD_NORMAL",index:"PREPASS_WORLD_NORMAL_INDEX"},{type:14,define:"PREPASS_IRRADIANCE",index:"PREPASS_IRRADIANCE_INDEX"}];if(n.prePassRenderer&&n.prePassRenderer.enabled&&t){e.PREPASS=!0,e.SCENE_MRT_COUNT=n.prePassRenderer.mrtCount,e.PREPASS_NORMAL_WORLDSPACE=n.prePassRenderer.generateNormalsInWorldSpace,e.PREPASS_COLOR=!0,e.PREPASS_COLOR_INDEX=0;for(let s=0;s{Pt();Ni();Tg();vl();Ua();Gr();WW();HW={r:0,g:0,b:0},_h={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Se,Yn=I(()=>{Gt();Vt();yi();hi();Ni();Wg();Af();Pt();um();oh();GW();Xn();br();nC();Se=class n{get useVertexPulling(){return this._useVertexPulling}set useVertexPulling(e){this._useVertexPulling!==e&&(this._useVertexPulling=e,this.markAsDirty(n.MiscDirtyFlag))}get _supportGlowLayer(){return!1}set _glowModeEnabled(e){}get shaderLanguage(){return this._shaderLanguage}get canRenderToMRT(){return!1}set alpha(e){if(this._alpha===e)return;let t=this._alpha;this._alpha=e,(t===1||e===1)&&this.markAsDirty(n.MiscDirtyFlag+n.PrePassDirtyFlag)}get alpha(){return this._alpha}set backFaceCulling(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,this.markAsDirty(n.TextureDirtyFlag))}get backFaceCulling(){return this._backFaceCulling}set cullBackFaces(e){this._cullBackFaces!==e&&(this._cullBackFaces=e,this.markAsDirty(n.TextureDirtyFlag))}get cullBackFaces(){return this._cullBackFaces}get blockDirtyMechanism(){return this._blockDirtyMechanism}set blockDirtyMechanism(e){this._blockDirtyMechanism!==e&&(this._blockDirtyMechanism=e,e||this.markDirty())}atomicMaterialsUpdate(e){this.blockDirtyMechanism=!0;try{e(this)}finally{this.blockDirtyMechanism=!1}}get hasRenderTargetTextures(){return this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._eventInfo.hasRenderTargetTextures}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new ie),this._onBindObservable}set onBind(e){this._onBindObserver&&this.onBindObservable.remove(this._onBindObserver),this._onBindObserver=this.onBindObservable.add(e)}get onUnBindObservable(){return this._onUnBindObservable||(this._onUnBindObservable=new ie),this._onUnBindObservable}get onEffectCreatedObservable(){return this._onEffectCreatedObservable||(this._onEffectCreatedObservable=new ie),this._onEffectCreatedObservable}set alphaMode(e){this._alphaMode[0]!==e&&(this._alphaMode[0]=e,this.markAsDirty(n.TextureDirtyFlag))}get alphaMode(){return this._alphaMode[0]}get alphaModes(){return this._alphaMode}setAlphaMode(e,t=0){this._alphaMode[t]!==e&&(this._alphaMode[t]=e,this.markAsDirty(n.TextureDirtyFlag))}set needDepthPrePass(e){this._needDepthPrePass!==e&&(this._needDepthPrePass=e,this._needDepthPrePass&&(this.checkReadyOnEveryCall=!0))}get needDepthPrePass(){return this._needDepthPrePass}get isPrePassCapable(){return!1}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAsDirty(n.MiscDirtyFlag))}get fogEnabled(){return this._fogEnabled}get wireframe(){switch(this._fillMode){case n.WireFrameFillMode:case n.LineListDrawMode:case n.LineLoopDrawMode:case n.LineStripDrawMode:return!0}return this._scene.forceWireframe}set wireframe(e){this.fillMode=e?n.WireFrameFillMode:n.TriangleFillMode}get pointsCloud(){switch(this._fillMode){case n.PointFillMode:case n.PointListDrawMode:return!0}return this._scene.forcePointsCloud}set pointsCloud(e){this.fillMode=e?n.PointFillMode:n.TriangleFillMode}get fillMode(){return this._fillMode}set fillMode(e){this._fillMode!==e&&(this._fillMode=e,this.markAsDirty(n.MiscDirtyFlag))}get useLogarithmicDepth(){return this._useLogarithmicDepth}set useLogarithmicDepth(e){let t=this.getScene().getEngine().getCaps().fragmentDepthSupported;e&&!t&&ee.Warn("Logarithmic depth has been requested for a material on a device that doesn't support it."),this._useLogarithmicDepth=e&&t,this._markAllSubMeshesAsMiscDirty()}get isVertexOutputInvariant(){return this._isVertexOutputInvariant}set isVertexOutputInvariant(e){this._isVertexOutputInvariant!==e&&(this._isVertexOutputInvariant=e,this._markAllSubMeshesAsMiscDirty())}_getDrawWrapper(){return this._drawWrapper}_setDrawWrapper(e){this._drawWrapper=e}constructor(e,t,i,r=!1){this.shadowDepthWrapper=null,this.allowShaderHotSwapping=!0,this._shaderLanguage=0,this._forceGLSL=!1,this._useVertexPulling=!1,this.metadata=null,this.reservedDataStore=null,this.checkReadyOnEveryCall=!1,this.checkReadyOnlyOnce=!1,this.state="",this._alpha=1,this._backFaceCulling=!0,this._cullBackFaces=!0,this._blockDirtyMechanism=!1,this.sideOrientation=null,this.onCompiled=null,this.onError=null,this.getRenderTargetTextures=null,this.doNotSerialize=!1,this._storeEffectOnSubMeshes=!1,this.animations=null,this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._onUnBindObservable=null,this._onBindObserver=null,this._alphaMode=[2],this._needDepthPrePass=!1,this.disableDepthWrite=!1,this.disableColorWrite=!1,this.forceDepthWrite=!1,this.depthFunction=0,this.separateCullingPass=!1,this._fogEnabled=!0,this.pointSize=1,this.zOffset=0,this.zOffsetUnits=0,this.stencil=new kn,this._isVertexOutputInvariant=n.ForceVertexOutputInvariant,this._useUBO=!1,this._fillMode=n.TriangleFillMode,this._cachedDepthWriteState=!1,this._cachedColorWriteState=!1,this._cachedDepthFunctionState=0,this._indexInSceneMaterialArray=-1,this.meshMap=null,this._parentContainer=null,this._uniformBufferLayoutBuilt=!1,this._eventInfo={},this._callbackPluginEventGeneric=()=>{},this._callbackPluginEventIsReadyForSubMesh=()=>{},this._callbackPluginEventPrepareDefines=()=>{},this._callbackPluginEventPrepareDefinesBeforeAttributes=()=>{},this._callbackPluginEventHardBindForSubMesh=()=>{},this._callbackPluginEventBindForSubMesh=()=>{},this._callbackPluginEventHasRenderTargetTextures=()=>{},this._callbackPluginEventFillRenderTargetTextures=()=>{},this._transparencyMode=null,this.name=e;let s=t||Oe.LastCreatedScene;s&&(this._scene=s,this._dirtyCallbacks={},this._forceGLSL=r,this._dirtyCallbacks[1]=this._markAllSubMeshesAsTexturesDirty.bind(this),this._dirtyCallbacks[2]=this._markAllSubMeshesAsLightsDirty.bind(this),this._dirtyCallbacks[4]=this._markAllSubMeshesAsFresnelDirty.bind(this),this._dirtyCallbacks[8]=this._markAllSubMeshesAsAttributesDirty.bind(this),this._dirtyCallbacks[16]=this._markAllSubMeshesAsMiscDirty.bind(this),this._dirtyCallbacks[32]=this._markAllSubMeshesAsPrePassDirty.bind(this),this._dirtyCallbacks[127]=this._markAllSubMeshesAsAllDirty.bind(this),this.id=e||_e.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new cs(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new mr(this._scene.getEngine(),void 0,void 0,e),this._useUBO=this.getScene().getEngine().supportsUniformBuffers,this._createUniformBuffer(),i||this._scene.addMaterial(this),this._scene.useMaterialMeshMap&&(this.meshMap={}),n.OnEventObservable.notifyObservers(this,1))}_createUniformBuffer(){var t;let e=this.getScene().getEngine();(t=this._uniformBuffer)==null||t.dispose(),e.isWebGPU&&!this._forceGLSL?(this._uniformBuffer=new mr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new mr(this._scene.getEngine(),void 0,void 0,this.name),this._uniformBufferLayoutBuilt=!1}toString(e){return"Name: "+this.name}getClassName(){return"Material"}get _isMaterial(){return!0}get isFrozen(){return this.checkReadyOnlyOnce}freeze(){this.markDirty(),this.checkReadyOnlyOnce=!0}unfreeze(){this.markDirty(),this.checkReadyOnlyOnce=!1}isReady(e,t){return!0}isReadyForSubMesh(e,t,i){let r=t.materialDefines;return r?(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=r,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),this._eventInfo.isReadyForSubMesh):!1}getEffect(){return this._drawWrapper.effect}getScene(){return this._scene}_getEffectiveOrientation(e){return this.sideOrientation!==null?this.sideOrientation:e.sideOrientation}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}get _hasTransparencyMode(){return this._transparencyMode!=null}get _transparencyModeIsBlend(){return this._transparencyMode===n.MATERIAL_ALPHABLEND||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _transparencyModeIsTest(){return this._transparencyMode===n.MATERIAL_ALPHATEST||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _disableAlphaBlending(){return this._transparencyMode===n.MATERIAL_OPAQUE||this._transparencyMode===n.MATERIAL_ALPHATEST}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1}needAlphaBlendingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsBlend:e.visibility<1?!0:this._disableAlphaBlending?!1:e.hasVertexAlpha||this.needAlphaBlending()}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:!1}needAlphaTestingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsTest:!this.needAlphaBlendingForMesh(e)&&this.needAlphaTesting()}getAlphaTestTexture(){return null}markDirty(e=!1){let t=this.getScene().meshes;for(let i of t)if(i.subMeshes){for(let r of i.subMeshes)if(r.getMaterial()===this)for(let s of r._drawWrappers)s&&this._materialContext===s.materialContext&&(s._wasPreviouslyReady=!1,s._wasPreviouslyUsingInstances=null,s._forceRebindOnNextCall=e)}e&&this.markAsDirty(n.AllDirtyFlag)}_preBind(e,t=null){let i=this._scene.getEngine(),s=(t==null?this.sideOrientation:t)===n.ClockWiseSideOrientation,a=e||this._getDrawWrapper();return IA(a)&&a.materialContext&&(a.materialContext.useVertexPulling=this.useVertexPulling),i.enableEffect(a),i.setState(this.backFaceCulling,this.zOffset,!1,s,this._scene._mirroredCameraPosition?!this.cullBackFaces:this.cullBackFaces,this.stencil,this.zOffsetUnits),s}bind(e,t){}buildUniformLayout(){let e=this._uniformBuffer;this._eventInfo.ubo=e,this._callbackPluginEventGeneric(8,this._eventInfo),e.create(),this._uniformBufferLayoutBuilt=!0}bindForSubMesh(e,t,i){let r=i._drawWrapper;this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),r._forceRebindOnNextCall=!1}bindOnlyWorldMatrix(e){}bindView(e){this._useUBO?this._needToBindSceneUbo=!0:e.setMatrix("view",this.getScene().getViewMatrix())}bindViewProjection(e){this._useUBO?this._needToBindSceneUbo=!0:(e.setMatrix("viewProjection",this.getScene().getTransformMatrix()),e.setMatrix("projection",this.getScene().getProjectionMatrix()),e.setMatrix("inverseProjection",this.getScene().getInverseProjectionMatrix()))}bindEyePosition(e,t){this._useUBO?this._needToBindSceneUbo=!0:this._scene.bindEyePosition(e,t)}_afterBind(e,t=null,i){if(this._scene._cachedMaterial=this,this._needToBindSceneUbo&&t&&(this._needToBindSceneUbo=!1,Df(t,this.getScene().getSceneUniformBuffer()),this._scene.finalizeSceneUbo()),e?this._scene._cachedVisibility=e.visibility:this._scene._cachedVisibility=1,this._onBindObservable&&e&&this._onBindObservable.notifyObservers(e),this.disableDepthWrite){let r=this._scene.getEngine();this._cachedDepthWriteState=r.getDepthWrite(),r.setDepthWrite(!1)}if(this.disableColorWrite){let r=this._scene.getEngine();this._cachedColorWriteState=r.getColorWrite(),r.setColorWrite(!1)}if(this.depthFunction!==0){let r=this._scene.getEngine();this._cachedDepthFunctionState=r.getDepthFunction()||0,r.setDepthFunction(this.depthFunction)}}unbind(){this._scene.getSceneUniformBuffer().unbindEffect(),this._onUnBindObservable&&this._onUnBindObservable.notifyObservers(this),this.depthFunction!==0&&this._scene.getEngine().setDepthFunction(this._cachedDepthFunctionState),this.disableDepthWrite&&this._scene.getEngine().setDepthWrite(this._cachedDepthWriteState),this.disableColorWrite&&this._scene.getEngine().setColorWrite(this._cachedColorWriteState)}getAnimatables(){return this._eventInfo.animatables=[],this._callbackPluginEventGeneric(256,this._eventInfo),this._eventInfo.animatables}getActiveTextures(){return this._eventInfo.activeTextures=[],this._callbackPluginEventGeneric(512,this._eventInfo),this._eventInfo.activeTextures}hasTexture(e){return this._eventInfo.hasTexture=!1,this._eventInfo.texture=e,this._callbackPluginEventGeneric(1024,this._eventInfo),this._eventInfo.hasTexture}clone(e){return null}_clonePlugins(e,t){let i={};if(this._serializePlugins(i),n._ParsePlugins(i,e,this._scene,t),this.pluginManager)for(let r of this.pluginManager._plugins){let s=e.pluginManager.getPlugin(r.name);s&&r.copyTo(s)}}getBindedMeshes(){if(this.meshMap){let e=[];for(let t in this.meshMap){let i=this.meshMap[t];i&&e.push(i)}return e}else return this._scene.meshes.filter(t=>t.material===this)}forceCompilation(e,t,i,r){let s={clipPlane:!1,useInstances:!1,...i},a=this.getScene(),o=this.allowShaderHotSwapping;this.allowShaderHotSwapping=!1;let l=()=>{if(!this._scene||!this._scene.getEngine())return;let c=a.clipPlane;if(s.clipPlane&&(a.clipPlane=new _o(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let h=new Us(0,0,0,0,0,e,void 0,!1,!1);h.materialDefines&&(h.materialDefines._renderId=-1),this.isReadyForSubMesh(e,h,s.useInstances)||(h.effect&&h.effect.getCompilationError()&&h.effect.allFallbacksProcessed()?d=h.effect.getCompilationError():(f=!1,setTimeout(l,16)))}f&&(this.allowShaderHotSwapping=o,d&&r&&r(d),t&&t(this))}else this.isReady()?(this.allowShaderHotSwapping=o,t&&t(this)):setTimeout(l,16);s.clipPlane&&(a.clipPlane=c)};l()}async forceCompilationAsync(e,t){return await new Promise((i,r)=>{this.forceCompilation(e,()=>{i()},t,s=>{r(s)})})}markAsDirty(e){this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism||(n._DirtyCallbackArray.length=0,e&n.ImageProcessingDirtyFlag&&n._DirtyCallbackArray.push(n._ImageProcessingDirtyCallBack),e&n.TextureDirtyFlag&&n._DirtyCallbackArray.push(n._TextureDirtyCallBack),e&n.LightDirtyFlag&&n._DirtyCallbackArray.push(n._LightsDirtyCallBack),e&n.FresnelDirtyFlag&&n._DirtyCallbackArray.push(n._FresnelDirtyCallBack),e&n.AttributesDirtyFlag&&n._DirtyCallbackArray.push(n._AttributeDirtyCallBack),e&n.MiscDirtyFlag&&n._DirtyCallbackArray.push(n._MiscDirtyCallBack),e&n.PrePassDirtyFlag&&n._DirtyCallbackArray.push(n._PrePassDirtyCallBack),n._DirtyCallbackArray.length&&this._markAllSubMeshesAsDirty(n._RunDirtyCallBacks),this.getScene().resetCachedMaterial())}resetDrawCache(){let e=this.getScene().meshes;for(let t of e)if(t.subMeshes)for(let i of t.subMeshes)i.getMaterial()===this&&i.resetDrawCache()}_markAllSubMeshesAsDirty(e){let t=this.getScene();if(t.blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let i=t.meshes;for(let r of i)if(r.subMeshes){for(let s of r.subMeshes)if((s.getMaterial()||(t._hasDefaultMaterial?t.defaultMaterial:null))===this)for(let o of s._drawWrappers)!o||!o.defines||!o.defines.markAllAsDirty||this._materialContext===o.materialContext&&e(o.defines)}}_markScenePrePassDirty(){if(this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let e=this.getScene().enablePrePassRenderer();e&&e.markAsDirty()}_markAllSubMeshesAsAllDirty(){this._markAllSubMeshesAsDirty(n._AllDirtyCallBack)}_markAllSubMeshesAsImageProcessingDirty(){this._markAllSubMeshesAsDirty(n._ImageProcessingDirtyCallBack)}_markAllSubMeshesAsTexturesDirty(){this._markAllSubMeshesAsDirty(n._TextureDirtyCallBack)}_markAllSubMeshesAsFresnelDirty(){this._markAllSubMeshesAsDirty(n._FresnelDirtyCallBack)}_markAllSubMeshesAsFresnelAndMiscDirty(){this._markAllSubMeshesAsDirty(n._FresnelAndMiscDirtyCallBack)}_markAllSubMeshesAsLightsDirty(){this._markAllSubMeshesAsDirty(n._LightsDirtyCallBack)}_markAllSubMeshesAsAttributesDirty(){this._markAllSubMeshesAsDirty(n._AttributeDirtyCallBack)}_markAllSubMeshesAsMiscDirty(){this._markAllSubMeshesAsDirty(n._MiscDirtyCallBack)}_markAllSubMeshesAsPrePassDirty(){this._markAllSubMeshesAsDirty(n._PrePassDirtyCallBack)}_markAllSubMeshesAsTexturesAndMiscDirty(){this._markAllSubMeshesAsDirty(n._TextureAndMiscDirtyCallBack)}_checkScenePerformancePriority(){if(this._scene.performancePriority!==0){this.checkReadyOnlyOnce=!0;let e=this._scene.onScenePerformancePriorityChangedObservable.addOnce(()=>{this.checkReadyOnlyOnce=!1});this.onDisposeObservable.add(()=>{this._scene.onScenePerformancePriorityChangedObservable.remove(e)})}}setPrePassRenderer(e){return!1}dispose(e,t,i){let r=this.getScene();if(r.stopAnimation(this),r.freeProcessedMaterials(),r.removeMaterial(this),this._eventInfo.forceDisposeTextures=t,this._callbackPluginEventGeneric(2,this._eventInfo),this._parentContainer){let s=this._parentContainer.materials.indexOf(this);s>-1&&this._parentContainer.materials.splice(s,1),this._parentContainer=null}if(i!==!0)if(this.meshMap)for(let s in this.meshMap){let a=this.meshMap[s];this._disposeMeshResources(a)}else{let s=r.meshes;for(let a of s)this._disposeMeshResources(a)}this._uniformBuffer.dispose(),this._drawWrapper.effect&&(this._storeEffectOnSubMeshes||this._drawWrapper.effect.dispose(),this._drawWrapper.effect=null),this.metadata=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this._onBindObservable&&this._onBindObservable.clear(),this._onUnBindObservable&&this._onUnBindObservable.clear(),this._onEffectCreatedObservable&&this._onEffectCreatedObservable.clear(),this._eventInfo&&(this._eventInfo={})}_disposeMeshResources(e){var r;if(!e)return;let t=e.geometry,i=e._internalAbstractMeshDataInfo._materialForRenderPass;if(this._storeEffectOnSubMeshes){if(e.subMeshes&&i)for(let s of e.subMeshes){let a=s._drawWrappers;for(let o=0;on.markAllAsDirty();Se._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Se._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Se._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Se._MiscDirtyCallBack=n=>n.markAsMiscDirty();Se._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Se._LightsDirtyCallBack=n=>n.markAsLightDirty();Se._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Se._FresnelAndMiscDirtyCallBack=n=>{Se._FresnelDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._TextureAndMiscDirtyCallBack=n=>{Se._TextureDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._DirtyCallbackArray=[];Se._RunDirtyCallBacks=n=>{for(let e of Se._DirtyCallbackArray)e(n)};P([F()],Se.prototype,"id",void 0);P([F()],Se.prototype,"uniqueId",void 0);P([F()],Se.prototype,"name",void 0);P([F()],Se.prototype,"metadata",void 0);P([F()],Se.prototype,"checkReadyOnEveryCall",void 0);P([F()],Se.prototype,"checkReadyOnlyOnce",void 0);P([F()],Se.prototype,"state",void 0);P([F("alpha")],Se.prototype,"_alpha",void 0);P([F("backFaceCulling")],Se.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Se.prototype,"_cullBackFaces",void 0);P([F()],Se.prototype,"sideOrientation",void 0);P([F()],Se.prototype,"_alphaMode",void 0);P([F()],Se.prototype,"_needDepthPrePass",void 0);P([F()],Se.prototype,"disableDepthWrite",void 0);P([F()],Se.prototype,"disableColorWrite",void 0);P([F()],Se.prototype,"forceDepthWrite",void 0);P([F()],Se.prototype,"depthFunction",void 0);P([F()],Se.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Se.prototype,"_fogEnabled",void 0);P([F()],Se.prototype,"pointSize",void 0);P([F()],Se.prototype,"zOffset",void 0);P([F()],Se.prototype,"zOffsetUnits",void 0);P([F()],Se.prototype,"pointsCloud",null);P([F()],Se.prototype,"fillMode",null);P([F()],Se.prototype,"useLogarithmicDepth",null);P([F()],Se.prototype,"_isVertexOutputInvariant",void 0);P([F()],Se.prototype,"transparencyMode",null)});var $m,zW=I(()=>{Yn();Sf();Yi();$m=class n extends Se{get subMaterials(){return this._subMaterials}set subMaterials(e){this._subMaterials=e,this._hookArray(e)}getChildren(){return this.subMaterials}constructor(e,t){super(e,t,!0),this._waitingSubMaterialsUniqueIds=[],this.getScene().addMultiMaterial(this),this.subMaterials=[],this._storeEffectOnSubMeshes=!0}_hookArray(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._markAllSubMeshesAsTexturesDirty(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._markAllSubMeshesAsTexturesDirty(),a}}getSubMaterial(e){return e<0||e>=this.subMaterials.length?this.getScene().defaultMaterial:this.subMaterials[e]}getActiveTextures(){return super.getActiveTextures().concat(...this.subMaterials.map(e=>e?e.getActiveTextures():[]))}hasTexture(e){var t;if(super.hasTexture(e))return!0;for(let i=0;i=0&&r.multiMaterials.splice(s,1),super.dispose(e,t)}static ParseMultiMaterial(e,t){let i=new n(e.name,t);if(i.id=e.id,i._loadedUniqueId=e.uniqueId,$t&&$t.AddTagsTo(i,e.tags),e.materialsUniqueIds)i._waitingSubMaterialsUniqueIds=e.materialsUniqueIds;else for(let r of e.materials)i.subMaterials.push(t.getLastMaterialById(r));return i}};Ft("BABYLON.MultiMaterial",$m)});var Nx,XW=I(()=>{Nx=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var Jm,wx,iD,Fx,rD,nD,Sl,Z,Ci=I(()=>{hi();yi();Eg();Sf();qP();_l();ke();Ht();la();Wi();pr();Px();Nm();Wg();Yn();zW();Cx();br();Pt();Yi();un();Rm();XW();Jm=class{},wx=class{constructor(){this.batchCache=new Fx(this),this.batchCacheReplacementModeInFrozenMode=new Fx(this),this.instancesBufferSize=512*4}},iD=class{constructor(){this.renderPasses={}}},Fx=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},rD=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},nD=class{constructor(){this._areNormalsFrozen=!1,this._source=null,this.meshMap=null,this._preActivateId=-1,this._LODLevels=new Array,this._useLODScreenCoverage=!1,this._effectiveMaterial=null,this._forcedInstanceCount=0,this._overrideRenderingFillMode=null}},Sl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},Z=class n extends Ar{static _GetDefaultSideOrientation(e){return e||n.FRONTSIDE}get useLODScreenCoverage(){return this._internalMeshDataInfo._useLODScreenCoverage}set useLODScreenCoverage(e){this._internalMeshDataInfo._useLODScreenCoverage=e,this._sortLODLevels()}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(e&&this._internalMeshDataInfo._sourcePositions&&(this.setVerticesData(D.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(D.NormalKind,this._internalMeshDataInfo._sourceNormals,!0),this._internalMeshDataInfo._sourcePositions=null,this._internalMeshDataInfo._sourceNormals=null),this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get onBeforeRenderObservable(){return this._internalMeshDataInfo._onBeforeRenderObservable||(this._internalMeshDataInfo._onBeforeRenderObservable=new ie),this._internalMeshDataInfo._onBeforeRenderObservable}get onBeforeBindObservable(){return this._internalMeshDataInfo._onBeforeBindObservable||(this._internalMeshDataInfo._onBeforeBindObservable=new ie),this._internalMeshDataInfo._onBeforeBindObservable}get onAfterRenderObservable(){return this._internalMeshDataInfo._onAfterRenderObservable||(this._internalMeshDataInfo._onAfterRenderObservable=new ie),this._internalMeshDataInfo._onAfterRenderObservable}get onBetweenPassObservable(){return this._internalMeshDataInfo._onBetweenPassObservable||(this._internalMeshDataInfo._onBetweenPassObservable=new ie),this._internalMeshDataInfo._onBetweenPassObservable}get onBeforeDrawObservable(){return this._internalMeshDataInfo._onBeforeDrawObservable||(this._internalMeshDataInfo._onBeforeDrawObservable=new ie),this._internalMeshDataInfo._onBeforeDrawObservable}set onBeforeDraw(e){this._onBeforeDrawObserver&&this.onBeforeDrawObservable.remove(this._onBeforeDrawObserver),this._onBeforeDrawObserver=this.onBeforeDrawObservable.add(e)}get hasInstances(){return this.instances.length>0}get hasThinInstances(){return(this.forcedInstanceCount||this._thinInstanceDataStorage.instancesCount||0)>0}get forcedInstanceCount(){return this._internalMeshDataInfo._forcedInstanceCount}set forcedInstanceCount(e){this._internalMeshDataInfo._forcedInstanceCount=e}get sideOrientation(){return this._internalMeshDataInfo._sideOrientation}set sideOrientation(e){this._internalMeshDataInfo._sideOrientation=e,this._internalAbstractMeshDataInfo._sideOrientationHint=this._scene.useRightHandedSystem&&e===1||!this._scene.useRightHandedSystem&&e===0}get _effectiveSideOrientation(){return this._internalMeshDataInfo._effectiveSideOrientation}get overrideMaterialSideOrientation(){return this.sideOrientation}set overrideMaterialSideOrientation(e){this.sideOrientation=e,this.material&&(this.material.sideOrientation=null)}get overrideRenderingFillMode(){return this._internalMeshDataInfo._overrideRenderingFillMode}set overrideRenderingFillMode(e){this._internalMeshDataInfo._overrideRenderingFillMode=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){e&&(this.material&&this.material.sideOrientation===null||this._internalAbstractMeshDataInfo._sideOrientationHint)&&(e.sideOrientation=null),this._setMaterial(e)}get source(){return this._internalMeshDataInfo._source}get cloneMeshMap(){return this._internalMeshDataInfo.meshMap}get isUnIndexed(){return this._unIndexed}set isUnIndexed(e){this._unIndexed!==e&&(this._unIndexed=e,this._markSubMeshesAsAttributesDirty())}get worldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesData:void 0}get previousWorldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesPreviousData:void 0}get manualUpdateOfWorldMatrixInstancedBuffer(){return this._instanceDataStorage.manualUpdate}set manualUpdateOfWorldMatrixInstancedBuffer(e){this._instanceDataStorage.manualUpdate=e}get manualUpdateOfPreviousWorldMatrixInstancedBuffer(){return this._instanceDataStorage.previousManualUpdate}set manualUpdateOfPreviousWorldMatrixInstancedBuffer(e){this._instanceDataStorage.previousManualUpdate=e}get forceWorldMatrixInstancedBufferUpdate(){return this._instanceDataStorage.forceMatrixUpdates}set forceWorldMatrixInstancedBufferUpdate(e){this._instanceDataStorage.forceMatrixUpdates=e}_copySource(e,t,i=!0,r=!1){var a,o;let s=this.getScene();if(e._geometry&&e._geometry.applyToMesh(this),hl.DeepCopy(e,this,["name","material","skeleton","instances","parent","uniqueId","source","metadata","morphTargetManager","hasInstances","worldMatrixInstancedBuffer","previousWorldMatrixInstancedBuffer","hasLODLevels","geometry","isBlocked","areNormalsFrozen","facetNb","isFacetDataEnabled","lightSources","useBones","isAnInstance","collider","edgesRenderer","forward","up","right","absolutePosition","absoluteScaling","absoluteRotationQuaternion","isWorldMatrixFrozen","nonUniformScaling","behaviors","worldMatrixFromCache","hasThinInstances","cloneMeshMap","hasBoundingInfo","physicsBody","physicsImpostor"],["_poseMatrix"]),this._internalMeshDataInfo._source=e,s.useClonedMeshMap&&(e._internalMeshDataInfo.meshMap||(e._internalMeshDataInfo.meshMap={}),e._internalMeshDataInfo.meshMap[this.uniqueId]=this),this._originalBuilderSideOrientation=e._originalBuilderSideOrientation,this._creationDataStorage=e._creationDataStorage,e._ranges){let l=e._ranges;for(let c in l)Object.prototype.hasOwnProperty.call(l,c)&&l[c]&&this.createAnimationRange(c,l[c].from,l[c].to)}if(e.metadata&&e.metadata.clone?this.metadata=e.metadata.clone():this.metadata=e.metadata,this._internalMetadata=e._internalMetadata,$t&&$t.HasTags(e)&&$t.AddTagsTo(this,$t.GetTags(e,!0)),this.setEnabled(e.isEnabled(!1)),this.parent=e.parent,this.setPivotMatrix(e.getPivotMatrix(),this._postMultiplyPivotMatrix),this.id=this.name+"."+e.id,this.material=e.material,!t){let l=e.getDescendants(!0);for(let c=0;c{m&&p&&(this._uniformBuffer?this.transferToEffect(_):p.bindOnlyWorldMatrix(_))};let o,l=!1;if(i&&i._addToSceneRootNodes===void 0){let m=i;o=(c=m.parent)!=null?c:null,r=(f=m.source)!=null?f:null,s=(d=m.doNotCloneChildren)!=null?d:!1,a=(h=m.clonePhysicsImpostor)!=null?h:!0,l=(u=m.cloneThinInstances)!=null?u:!1}else o=i;r&&this._copySource(r,s,a,l),o!==null&&(this.parent=o),this._instanceDataStorage.hardwareInstancedRendering=this.getEngine().getCaps().instancedArrays,this._internalMeshDataInfo._onMeshReadyObserverAdded=m=>{m.unregisterOnNextCall=!0,this.isReady(!0)?this.onMeshReadyObservable.notifyObservers(this):this._internalMeshDataInfo._checkReadinessObserver||(this._internalMeshDataInfo._checkReadinessObserver=this._scene.onBeforeRenderObservable.add(()=>{this.isReady(!0)&&(this._scene.onBeforeRenderObservable.remove(this._internalMeshDataInfo._checkReadinessObserver),this._internalMeshDataInfo._checkReadinessObserver=null,this.onMeshReadyObservable.notifyObservers(this))}))},this.onMeshReadyObservable=new ie(this._internalMeshDataInfo._onMeshReadyObserverAdded),r&&r.onClonedObservable.notifyObservers(this)}instantiateHierarchy(e=null,t,i){let r=this.getTotalVertices()===0||t&&t.doNotInstantiate&&(t.doNotInstantiate===!0||t.doNotInstantiate(this))?this.clone("Clone of "+(this.name||this.id),e||this.parent,!0):this.createInstance("instance of "+(this.name||this.id));r.parent=e||this.parent,r.position=this.position.clone(),r.scaling=this.scaling.clone(),this.rotationQuaternion?r.rotationQuaternion=this.rotationQuaternion.clone():r.rotation=this.rotation.clone(),i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.getClassName()==="InstancedMesh"&&r.getClassName()==="Mesh"&&s.sourceMesh===this?s.instantiateHierarchy(r,{doNotInstantiate:t&&t.doNotInstantiate||!1,newSourcedMesh:r},i):s.instantiateHierarchy(r,t,i);return r}getClassName(){return"Mesh"}get _isMesh(){return!0}toString(e){let t=super.toString(e);if(t+=", n vertices: "+this.getTotalVertices(),t+=", parent: "+(this._waitingParentId?this._waitingParentId:this.parent?this.parent.name:"NONE"),this.animations)for(let i=0;i0}getLODLevels(){return this._internalMeshDataInfo._LODLevels}_sortLODLevels(){let e=this._internalMeshDataInfo._useLODScreenCoverage?-1:1;this._internalMeshDataInfo._LODLevels.sort((t,i)=>t.distanceOrScreenCoveragei.distanceOrScreenCoverage?-e:0)}addLODLevel(e,t){if(t&&t._masterMesh)return ee.Warn("You cannot use a mesh as LOD level twice"),this;let i=new Nx(e,t);return this._internalMeshDataInfo._LODLevels.push(i),t&&(t._masterMesh=this),this._sortLODLevels(),this}getLODLevelAtDistance(e){let t=this._internalMeshDataInfo;for(let i=0;io*a)return this.onLODLevelSelection&&this.onLODLevelSelection(a,this,this),this;for(let l=0;l0||this.hasThinInstances);this.computeWorldMatrix();let a=this.material||r.defaultMaterial;if(a){if(a._storeEffectOnSubMeshes)for(let _ of this.subMeshes){let p=_.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,_,s))return!1}else if(!p.isReady(this,s))return!1}}else if(!a.isReady(this,s))return!1}let o=i.currentRenderPassId;for(let _ of this.lightSources){let p=_.getShadowGenerators();if(!p)continue;let g=p.values();for(let v=g.next();v.done!==!0;v=g.next()){let x=v.value;if(x&&(!((l=x.getShadowMap())!=null&&l.renderList)||(c=x.getShadowMap())!=null&&c.renderList&&((d=(f=x.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let E=(h=x.getShadowMap().renderPassIds)!=null?h:[i.currentRenderPassId];for(let T=0;T0){let i=this.getIndices();if(!i)return null;let r=i.length,s=!1;if(e)s=!0;else for(let a of this.subMeshes){if(a.indexStart+a.indexCount>r){s=!0;break}if(a.verticesStart+a.verticesCount>t){s=!0;break}}if(!s)return this.subMeshes[0]}return this.releaseSubMeshes(),new Us(0,0,t,0,this.getTotalIndices()||(this.isUnIndexed?t:0),this)}subdivide(e){if(e<1)return;let t=this.getTotalIndices(),i=t/e|0,r=0;for(;i%3!==0;)i++;this.releaseSubMeshes();for(let s=0;s=t);s++)Us.CreateFromIndices(0,r,r+i>=t?t-r:i,this,void 0,!1),r+=i;this.refreshBoundingInfo(),this.synchronizeInstances()}setVerticesData(e,t,i=!1,r){if(this._geometry)this._geometry.setVerticesData(e,t,i,r);else{let s=new ye;s.set(t,e);let a=this.getScene();new _n(_n.RandomId(),a,s,i,this)}return this}removeVerticesData(e){this._geometry&&this._geometry.removeVerticesData(e)}markVerticesDataAsUpdatable(e,t=!0){let i=this.getVertexBuffer(e);!i||i.isUpdatable()===t||this.setVerticesData(e,this.getVerticesData(e),t)}setVerticesBuffer(e,t=!0,i=null){return this._geometry||(this._geometry=_n.CreateGeometryForMesh(this)),this._geometry.setVerticesBuffer(e,i,t),this}updateVerticesData(e,t,i,r){return this._geometry?(r?(this.makeGeometryUnique(),this.updateVerticesData(e,t,i,!1)):this._geometry.updateVerticesData(e,t,i),this):this}updateMeshPositions(e,t=!0){let i=this.getVerticesData(D.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(D.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(D.NormalKind);if(!s)return this;ye.ComputeNormals(i,r,s),this.updateVerticesData(D.NormalKind,s,!1,!1)}return this}makeGeometryUnique(){if(!this._geometry)return this;if(this._geometry.meshes.length===1)return this;let e=this._geometry,t=this._geometry.copy(_n.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new _n(_n.RandomId(),this.getScene(),void 0,void 0,this)),s.setIndexBuffer(e,t,i,r)}setIndices(e,t=null,i=!1,r=!1){if(this._geometry)this._geometry.setIndices(e,t,i,r);else{let s=new ye;s.indices=e;let a=this.getScene();new _n(_n.RandomId(),a,s,i,this,t)}return this}updateIndices(e,t,i=!1){return this._geometry?(this._geometry.updateIndices(e,t,i),this):this}toLeftHanded(){return this._geometry?(this._geometry.toLeftHanded(),this):this}_bind(e,t,i,r=!0){if(!this._geometry)return this;let s=this.getScene().getEngine(),a;if(this._unIndexed)this._getRenderingFillMode(i)===Se.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Se.PointFillMode:a=null;break;case Se.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Se.TriangleFillMode:a=this._geometry.getIndexBuffer();break}return this._bindDirect(t,a,r)}_bindDirect(e,t,i=!0){if(!this._geometry)return this;if(this.morphTargetManager&&this.morphTargetManager.isUsingTextureForTargets&&this.morphTargetManager._bind(e),!i||!this._userInstancedBuffersStorage||this.hasThinInstances)this._geometry._bind(e,t);else{if(!this._instanceDataStorage.useMonoDataStorageRenderPass&&this._userInstancedBuffersStorage.renderPasses&&this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId]){let r=this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];for(let s in r)this._userInstancedBuffersStorage.vertexBuffers[s]=r[s]}this._geometry._bind(e,t,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;this._internalMeshDataInfo._onBeforeDrawObservable&&this._internalMeshDataInfo._onBeforeDrawObservable.notifyObservers(this);let s=this.getScene().getEngine(),a=s._currentMaterialContext,o=a&&a.useVertexPulling;return this._unIndexed&&t!==Se.WireFrameFillMode||t==Se.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Se.WireFrameFillMode?s.drawElementsType(t,0,e._linesIndexCount,this.forcedInstanceCount||i):o?s.drawArraysType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i):s.drawElementsType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i),this}registerBeforeRender(e){return this.onBeforeRenderObservable.add(e),this}unregisterBeforeRender(e){return this.onBeforeRenderObservable.removeCallback(e),this}registerAfterRender(e){return this.onAfterRenderObservable.add(e),this}unregisterAfterRender(e){return this.onAfterRenderObservable.removeCallback(e),this}_getInstancesRenderList(e,t=!1){let i=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._getInstanceDataStorage();if(this._instanceDataStorage.isFrozen){if(t)return i.batchCacheReplacementModeInFrozenMode.hardwareInstancedRendering[e]=!1,i.batchCacheReplacementModeInFrozenMode.renderSelf[e]=!0,i.batchCacheReplacementModeInFrozenMode;if(i.previousBatch)return i.previousBatch}let r=this.getScene(),s=r._isInIntermediateRendering(),a=s?this._internalAbstractMeshDataInfo._onlyForInstancesIntermediate:this._internalAbstractMeshDataInfo._onlyForInstances,o=i.batchCache;if(o.mustReturn=!1,o.renderSelf[e]=t||!a&&this.isEnabled()&&this.isVisible,o.visibleInstances[e]=null,i.visibleInstances&&!t){let l=i.visibleInstances,c=r.getRenderId(),f=s?l.intermediateDefaultRenderId:l.defaultRenderId;o.visibleInstances[e]=l[c],!o.visibleInstances[e]&&f&&(o.visibleInstances[e]=l[f])}return o.hardwareInstancedRendering[e]=!t&&this._instanceDataStorage.hardwareInstancedRendering&&o.visibleInstances[e]!==null&&o.visibleInstances[e]!==void 0,i.previousBatch=o,o}_updateInstancedBuffers(e,t,i,r,s,a){var v;let o=t.visibleInstances[e._id],l=o?o.length:0,c=t.parent,f=this._instanceDataStorage,d=c.instancesBuffer,h=c.instancesPreviousBuffer,u=0,m=0,_=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,g=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||g)){let x=this.getWorldMatrix();if(_){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u),f.masterMeshPreviousWorldMatrix.copyFrom(x)):(f.masterMeshPreviousWorldMatrix=x.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u))),x.copyToArray(c.instancesData,u);let S=x.asArray();c.instancesData[u+12]=S[12]-p.x,c.instancesData[u+13]=S[13]-p.y,c.instancesData[u+14]=S[14]-p.z,u+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let S=this._scene.activeCamera.globalPosition;for(let E=0;EE._distanceToCamera>T._distanceToCamera?-1:E._distanceToCamera1&&r.activeCamera===r.activeCameras[0]||a<=1,l=this._occlusionDataStorage&&this._occlusionDataStorage.occlusionForRenderPassId!==-1&&this._occlusionDataStorage.occlusionForRenderPassId!==s.currentRenderPassId;if(o&&this._checkOcclusionQuery(l)&&!this._occlusionDataStorage.forceRenderingWhenOccluded)return this;let c=this._getInstancesRenderList(e._id,!!i);if(c.mustReturn)return this;if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let f=0,d=null;this.ignoreCameraMaxZ&&r.activeCamera&&!r._isInIntermediateRendering()&&(f=r.activeCamera.maxZ,d=r.activeCamera,r.activeCamera.maxZ=0,r.updateTransformMatrix(!0)),this._internalMeshDataInfo._onBeforeRenderObservable&&this._internalMeshDataInfo._onBeforeRenderObservable.notifyObservers(this);let h=e.getRenderingMesh(),u=c.hardwareInstancedRendering[e._id]||h.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,_=e.getMaterial();if(!_)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==_){if(_._storeEffectOnSubMeshes){if(!_.isReadyForSubMesh(this,e,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!_.isReady(this,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=_}else if(_._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!_._storeEffectOnSubMeshes&&!_._getDrawWrapper()._wasPreviouslyReady)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(t){let w=this._internalMeshDataInfo._effectiveMaterial;if(w.alphaModes.length===1)s.setAlphaMode(w.alphaMode);else for(let G=0;Gg&&r++,E!==0&&x++,v+=E,g=E}if(c[x]++,x>a&&(a=x),v===0)s++;else{let S=1/v,E=0;for(let T=0;Tf&&o++}}let d=this.skeleton.bones.length,h=this.getVerticesData(D.MatricesIndicesKind),u=this.getVerticesData(D.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let _="Number of Weights = "+i/4+` +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=toRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb);}`;A.ShadersStoreWGSL[pP]||(A.ShadersStoreWGSL[pP]=BG);Nle={name:pP,shader:BG}});var Mm,_P=I(()=>{rc();XC();Mm=class{static ExpandRGBDTexture(e){let t=e._texture;if(!t||!e.isRGBD)return;let i=t.getEngine(),r=i.getCaps(),s=t.isReady,a=!1;r.textureHalfFloatRender&&r.textureHalfFloatLinearFiltering?(a=!0,t.type=2):r.textureFloatRender&&r.textureFloatLinearFiltering&&(a=!0,t.type=1),a&&(t.isReady=!1,t._isRGBD=!1,t.invertY=!1);let o=async()=>{let l=i.isWebGPU,c=l?1:0;t.isReady=!1,l?await Promise.resolve().then(()=>(fP(),cP)):await Promise.resolve().then(()=>(uP(),hP));let f=new Ri("rgbdDecode","rgbdDecode",null,null,1,null,3,i,!1,void 0,t.type,void 0,null,!1,void 0,c);f.externalTextureSamplerBinding=!0;let d=i.createRenderTargetTexture(t.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:t.samplingMode,type:t.type,format:5});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",t),u.setFloat2("scale",1,1)},e.getScene().postProcessManager.directRender([f],d,!0),i.restoreDefaultFramebuffer(),i._releaseTexture(t),f&&f.dispose(),d._swapAndDie(t),t.isReady=!0})})};a&&(s?o():e.onLoadObservable.addOnce(o))}static async EncodeTextureToRGBD(e,t,i=0){return t.getEngine().isWebGPU?await Promise.resolve().then(()=>(VG(),UG)):await Promise.resolve().then(()=>(FG(),wG)),await GV("rgbdEncode",e,t,i,1,5)}}});var gP=I(()=>{RC();vg();pi.prototype._sphericalPolynomialTargetSize=0;pi.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(pi.prototype,"sphericalPolynomial",{get:function(){if(this._texture){if(this._texture._sphericalPolynomial||this._texture._sphericalPolynomialComputed)return this._texture._sphericalPolynomial;if(this._texture.isReady)return this._texture._sphericalPolynomialPromise||(this._texture._sphericalPolynomialPromise=ec.ConvertCubeMapTextureToSphericalPolynomial(this),this._texture._sphericalPolynomialPromise===null?this._texture._sphericalPolynomialComputed=!0:this._texture._sphericalPolynomialPromise.then(n=>{this._texture._sphericalPolynomial=n,this._texture._sphericalPolynomialComputed=!0})),null}return null},set:function(n){this._texture&&(this._texture._sphericalPolynomial=n)},enumerable:!0,configurable:!0})});function HG(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;aGG)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${GG}".`);return n.version===2||(n={...n,version:2,imageType:Sx}),n}function wle(n,e){e=Og(e);let t=e.specular,i=Math.log2(e.width);if(i=Math.round(i)+1,t.mipmaps.length!==6*i)throw new Error(`Unsupported specular mipmaps number "${t.mipmaps.length}"`);let r=new Array(i);for(let s=0;s{if(t){let u=e.createTexture(null,!0,!0,null,1,null,m=>{h(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=_=>{_._bindTexture("textureSampler",u),_.setFloat2("scale",1,e._features.needsInvertingBitmap&&n instanceof ImageBitmap?-1:1)},e.scenes.length&&(e.scenes[0].postProcessManager.directRender([i],c,!0,s,a),e.restoreDefaultFramebuffer(),u.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let u=l[a];u&&e._uploadImageToTexture(u._texture,n,s,0)}d()}})}async function Ble(n,e,t=Sx){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await XG(n,e,!0,t),n.isReady=!0}async function Ule(n,e,t,i=Sx,r=null){let s=n.getEngine(),a=new Oi(s,5),o=new pi(s,a);n._irradianceTexture=o,o._dominantDirection=r,a.isCube=!0,a.format=5,a.type=0,a.generateMipMaps=!0,a._cachedAnisotropicFilteringLevel=null,a.generateMipMaps=!0,a.width=t,a.height=t,s.updateTextureSamplingMode(3,a),await XG(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function XG(n,e,t,i=Sx){if(!_e.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=zU(n.width)+1,s=n.getEngine(),a=!1,o=!1,l=null,c=null,f=null,d=s.getCaps();d.textureLOD?s._features.supportRenderAndCopyToLodForFloatTextures?d.textureHalfFloatRender&&d.textureHalfFloatLinearFiltering?(a=!0,n.type=2):d.textureFloatRender&&d.textureFloatLinearFiltering&&(a=!0,n.type=1):a=!1:(a=!1,o=t);let h=0;if(a)s.isWebGPU?(h=1,await Promise.resolve().then(()=>(fP(),cP))):await Promise.resolve().then(()=>(uP(),hP)),l=new Ri("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,h),n._isRGBD=!1,n.invertY=!1,c=s.createRenderTargetCubeTexture(n.width,{generateDepthBuffer:!1,generateMipMaps:!0,generateStencilBuffer:!1,samplingMode:3,type:n.type,format:5});else if(n._isRGBD=!0,n.invertY=!0,o){f={};let _=n._lodGenerationScale,p=n._lodGenerationOffset;for(let g=0;g<3;g++){let x=1-g/2,S=p,E=(r-1)*_+p,T=S+(E-S)*x,R=Math.round(Math.min(Math.max(T,0),E)),M=new Oi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let y=new pi(null);switch(y._isCube=!0,y._texture=M,f[R]=y,g){case 0:n._lodTextureLow=y;break;case 1:n._lodTextureMid=y;break;case 2:n._lodTextureHigh=y;break}}}let u=[];for(let m=0;mawait WG(E,s,a,l,x,_,m,o,f,c,n));else{let E=new Image;E.src=x,S=new Promise((T,R)=>{E.onload=()=>{WG(E,s,a,l,x,_,m,o,f,c,n).then(()=>T()).catch(M=>{R(M)})},E.onerror=M=>{R(M)}})}u.push(S)}if(await Promise.all(u),e.length{yi();ke();Vn();ug();Os();vg();Bs();rc();Pt();_P();UC();gP();Tm();Sx="image/png",GG=2,kG=[134,22,135,150,246,214,150,54]});var jG={};Be(jG,{_ENVTextureLoader:()=>vP});var vP,qG=I(()=>{KG();vP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=HG(e);if(a){t.width=a.width,t.height=a.width;try{YG(t,a),zG(t,e,a).then(()=>{t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()},o=>{s==null||s("Can not upload environment levels",o)})}catch(o){s==null||s("Can not upload environment file",o)}}else s&&s("Can not parse the environment file",null)}loadData(){throw".env not supported in 2d."}}});var cc,ZG=I(()=>{ke();cc=class{static ConvertPanoramaToCubemap(e,t,i,r,s=!1,a=!0){if(!e)throw"ConvertPanoramaToCubemap: input cannot be null";let o;if(e.length!=t*i*3){if(e.length!=t*i*4)throw"ConvertPanoramaToCubemap: input size is wrong";o=4}else o=3;let l=this.CreateCubemapTexture(r,this.FACE_FRONT,e,t,i,s,a,o),c=this.CreateCubemapTexture(r,this.FACE_BACK,e,t,i,s,a,o),f=this.CreateCubemapTexture(r,this.FACE_LEFT,e,t,i,s,a,o),d=this.CreateCubemapTexture(r,this.FACE_RIGHT,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),u=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:h,down:u,size:r,type:1,format:4,gammaSpace:!1}}static CreateCubemapTexture(e,t,i,r,s,a,o,l){let c=new ArrayBuffer(e*e*4*3),f=new Float32Array(c),d=a?Math.max(1,Math.round(r/4/e)):1,h=1/d,u=h*h,m=t[1].subtract(t[0]).scale(h/e),_=t[3].subtract(t[2]).scale(h/e),p=1/e,g=0;for(let v=0;vMath.PI;)o-=2*Math.PI;let c=o/Math.PI,f=l/Math.PI;c=c*.5+.5;let d=Math.round(c*i);d<0?d=0:d>=i&&(d=i-1);let h=Math.round(f*r);h<0?h=0:h>=r&&(h=r-1);let u=a?r-h-1:h,m=t[u*i*s+d*s+0],_=t[u*i*s+d*s+1],p=t[u*i*s+d*s+2];return{r:m,g:_,b:p}}};cc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];cc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];cc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];cc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];cc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];cc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Vle(n,e){return e>1023?n*Math.pow(2,1023)*Math.pow(2,e-1023):e<-1074?n*Math.pow(2,-1074)*Math.pow(2,e+1074):n*Math.pow(2,e)}function QG(n,e,t,i,r,s){r>0?(r=Vle(1,r-136),n[s+0]=e*r,n[s+1]=t*r,n[s+2]=i*r):(n[s+0]=0,n[s+1]=0,n[s+2]=0)}function EP(n,e){let t="",i;for(let r=e;r32767)throw"HDR Bad header format, unsupported size";return r+=e.length+1,{height:l,width:o,dataPosition:r}}function JG(n,e){return Gle(n,e)}function Gle(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,h,u=new ArrayBuffer(i*4),m=new Uint8Array(u),_=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(_);for(;t>0;){if(r=n[c++],s=n[c++],a=n[c++],o=n[c++],r!=2||s!=2||a&128||e.width<8||e.width>32767)return kle(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,h=0;h<4;h++)for(d=(h+1)*i;f128){if(l=r-128,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (run)";for(;l-- >0;)m[f++]=s}else{if(l=r,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (non-run)";if(m[f++]=s,--l>0)for(let g=0;g0;){for(l=0;l{ZG()});var tk={};Be(tk,{_HDRTextureLoader:()=>SP});var SP,ik=I(()=>{ek();SP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".hdr not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=$G(r),a=JG(r,s),o=s.width*s.height,l=new Float32Array(o*4);for(let c=0;c{let c=t.getEngine();t.type=1,t.format=5,t._gammaSpace=!1,c._uploadDataToTextureDirectly(t,l)})}}});var Mo,rk=I(()=>{Pt();Mo=class n{constructor(e,t){if(this.data=e,this.isInvalid=!1,!n.IsValid(e)){this.isInvalid=!0,ee.Error("texture missing KTX identifier");return}let i=Uint32Array.BYTES_PER_ELEMENT,r=new DataView(this.data.buffer,this.data.byteOffset+12,13*i),a=r.getUint32(0,!0)===67305985;if(this.glType=r.getUint32(1*i,a),this.glTypeSize=r.getUint32(2*i,a),this.glFormat=r.getUint32(3*i,a),this.glInternalFormat=r.getUint32(4*i,a),this.glBaseInternalFormat=r.getUint32(5*i,a),this.pixelWidth=r.getUint32(6*i,a),this.pixelHeight=r.getUint32(7*i,a),this.pixelDepth=r.getUint32(8*i,a),this.numberOfArrayElements=r.getUint32(9*i,a),this.numberOfFaces=r.getUint32(10*i,a),this.numberOfMipmapLevels=r.getUint32(11*i,a),this.bytesOfKeyValueData=r.getUint32(12*i,a),this.glType!==0){ee.Error("only compressed formats currently supported"),this.isInvalid=!0;return}else this.numberOfMipmapLevels=Math.max(1,this.numberOfMipmapLevels);if(this.pixelHeight===0||this.pixelDepth!==0){ee.Error("only 2D textures currently supported"),this.isInvalid=!0;return}if(this.numberOfArrayElements!==0){ee.Error("texture arrays not currently supported"),this.isInvalid=!0;return}if(this.numberOfFaces!==t){ee.Error("number of faces expected"+t+", but found "+this.numberOfFaces),this.isInvalid=!0;return}this.loadType=n.COMPRESSED_2D}uploadLevels(e,t){switch(this.loadType){case n.COMPRESSED_2D:this._upload2DCompressedLevels(e,t);break;case n.TEX_2D:case n.COMPRESSED_3D:case n.TEX_3D:}}_upload2DCompressedLevels(e,t){let i=n.HEADER_LEN+this.bytesOfKeyValueData,r=this.pixelWidth,s=this.pixelHeight,a=t?this.numberOfMipmapLevels:1;for(let o=0;o=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===49&&t[6]===49&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Mo.HEADER_LEN=64;Mo.COMPRESSED_2D=0;Mo.COMPRESSED_3D=1;Mo.TEX_2D=2;Mo.TEX_3D=3});var TP,Ng,nk=I(()=>{TP=class{constructor(e){this._pendingActions=new Array,this._workerInfos=e.map(t=>({workerPromise:Promise.resolve(t),idle:!0}))}dispose(){for(let e of this._workerInfos)e.workerPromise.then(t=>{t.terminate()});this._workerInfos.length=0,this._pendingActions.length=0}push(e){this._executeOnIdleWorker(e)||this._pendingActions.push(e)}_executeOnIdleWorker(e){for(let t of this._workerInfos)if(t.idle)return this._execute(t,e),!0;return!1}_execute(e,t){e.idle=!1,e.workerPromise.then(i=>{t(i,()=>{let r=this._pendingActions.shift();r?this._execute(e,r):e.idle=!0})})}},Ng=class n extends TP{constructor(e,t,i=n.DefaultOptions){super([]),this._maxWorkers=e,this._createWorkerAsync=t,this._options=i}push(e){if(!this._executeOnIdleWorker(e))if(this._workerInfos.length{t(i,()=>{r(),e.idle&&(e.timeoutId=setTimeout(()=>{e.workerPromise.then(a=>{a.terminate()});let s=this._workerInfos.indexOf(e);s!==-1&&this._workerInfos.splice(s,1)},this._options.idleTimeElapsedBeforeRelease))})})}};Ng.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var sk,Im,ak,ok=I(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(sk||(sk={}));(function(n){n[n.ASTC_4X4_RGBA=0]="ASTC_4X4_RGBA",n[n.ASTC_4x4_RGBA=0]="ASTC_4x4_RGBA",n[n.BC7_RGBA=1]="BC7_RGBA",n[n.BC3_RGBA=2]="BC3_RGBA",n[n.BC1_RGB=3]="BC1_RGB",n[n.PVRTC1_4_RGBA=4]="PVRTC1_4_RGBA",n[n.PVRTC1_4_RGB=5]="PVRTC1_4_RGB",n[n.ETC2_RGBA=6]="ETC2_RGBA",n[n.ETC1_RGB=7]="ETC1_RGB",n[n.RGBA32=8]="RGBA32",n[n.R8=9]="R8",n[n.RG8=10]="RG8"})(Im||(Im={}));(function(n){n[n.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",n[n.COMPRESSED_RGBA_ASTC_4X4_KHR=37808]="COMPRESSED_RGBA_ASTC_4X4_KHR",n[n.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",n[n.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",n[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",n[n.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",n[n.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",n[n.RGBA8Format=32856]="RGBA8Format",n[n.R8Format=33321]="R8Format",n[n.RG8Format=33323]="RG8Format"})(ak||(ak={}))});function wg(n,e){let t=(e==null?void 0:e.jsDecoderModule)||KTX2DECODER;n&&(n.wasmBaseUrl&&(t.Transcoder.WasmBaseUrl=n.wasmBaseUrl),n.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmModuleURL=n.wasmUASTCToASTC),n.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmModuleURL=n.wasmUASTCToBC7),n.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmModuleURL=n.wasmUASTCToRGBA_UNORM),n.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmModuleURL=n.wasmUASTCToRGBA_SRGB),n.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmModuleURL=n.wasmUASTCToR8_UNORM),n.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmModuleURL=n.wasmUASTCToRG8_UNORM),n.jsMSCTranscoder&&(t.MSCTranscoder.JSModuleURL=n.jsMSCTranscoder),n.wasmMSCTranscoder&&(t.MSCTranscoder.WasmModuleURL=n.wasmMSCTranscoder),n.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmModuleURL=n.wasmZSTDDecoder)),e&&(e.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmBinary=e.wasmUASTCToASTC),e.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmBinary=e.wasmUASTCToBC7),e.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmBinary=e.wasmUASTCToRGBA_UNORM),e.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmBinary=e.wasmUASTCToRGBA_SRGB),e.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmBinary=e.wasmUASTCToR8_UNORM),e.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmBinary=e.wasmUASTCToRG8_UNORM),e.jsMSCTranscoder&&(t.MSCTranscoder.JSModule=e.jsMSCTranscoder),e.wasmMSCTranscoder&&(t.MSCTranscoder.WasmBinary=e.wasmMSCTranscoder),e.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmBinary=e.wasmZSTDDecoder))}function lk(n){typeof n=="undefined"&&typeof KTX2DECODER!="undefined"&&(n=KTX2DECODER);let e;onmessage=t=>{if(t.data)switch(t.data.action){case"init":{let i=t.data.urls;i&&(i.jsDecoderModule&&typeof n=="undefined"&&(importScripts(i.jsDecoderModule),n=KTX2DECODER),wg(i)),t.data.wasmBinaries&&wg(void 0,{...t.data.wasmBinaries,jsDecoderModule:n}),e=new n.KTX2Decoder,postMessage({action:"init"});break}case"setDefaultDecoderOptions":{n.KTX2Decoder.DefaultDecoderOptions=t.data.options;break}case"decode":e.decode(t.data.data,t.data.caps,t.data.options).then(i=>{let r=[];for(let s=0;s{postMessage({action:"decoded",success:!1,msg:i})});break}}}async function ck(n,e,t){return await new Promise((i,r)=>{let s=o=>{n.removeEventListener("error",s),n.removeEventListener("message",a),r(o)},a=o=>{o.data.action==="init"&&(n.removeEventListener("error",s),n.removeEventListener("message",a),i(n))};n.addEventListener("error",s),n.addEventListener("message",a),n.postMessage({action:"init",urls:t,wasmBinaries:e})})}var fk=I(()=>{});var AP,fc,dk=I(()=>{nk();yi();ok();fk();AP=class{constructor(){this._isDirty=!0,this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=!0,this._ktx2DecoderOptions={}}get isDirty(){return this._isDirty}get useRGBAIfASTCBC7NotAvailableWhenUASTC(){return this._useRGBAIfASTCBC7NotAvailableWhenUASTC}set useRGBAIfASTCBC7NotAvailableWhenUASTC(e){this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==e&&(this._useRGBAIfASTCBC7NotAvailableWhenUASTC=e,this._isDirty=!0)}get useRGBAIfOnlyBC1BC3AvailableWhenUASTC(){return this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC}set useRGBAIfOnlyBC1BC3AvailableWhenUASTC(e){this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC!==e&&(this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=e,this._isDirty=!0)}get forceRGBA(){return this._forceRGBA}set forceRGBA(e){this._forceRGBA!==e&&(this._forceRGBA=e,this._isDirty=!0)}get forceR8(){return this._forceR8}set forceR8(e){this._forceR8!==e&&(this._forceR8=e,this._isDirty=!0)}get forceRG8(){return this._forceRG8}set forceRG8(e){this._forceRG8!==e&&(this._forceRG8=e,this._isDirty=!0)}get bypassTranscoders(){return this._bypassTranscoders}set bypassTranscoders(e){this._bypassTranscoders!==e&&(this._bypassTranscoders=e,this._isDirty=!0)}_getKTX2DecoderOptions(){if(!this._isDirty)return this._ktx2DecoderOptions;this._isDirty=!1;let e={};return this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==void 0&&(e.useRGBAIfASTCBC7NotAvailableWhenUASTC=this._useRGBAIfASTCBC7NotAvailableWhenUASTC),this._forceRGBA!==void 0&&(e.forceRGBA=this._forceRGBA),this._forceR8!==void 0&&(e.forceR8=this._forceR8),this._forceRG8!==void 0&&(e.forceRG8=this._forceRG8),this._bypassTranscoders!==void 0&&(e.bypassTranscoders=this._bypassTranscoders),this.useRGBAIfOnlyBC1BC3AvailableWhenUASTC&&(e.transcodeFormatDecisionTree={UASTC:{transcodeFormat:[Im.BC1_RGB,Im.BC3_RGBA],yes:{transcodeFormat:Im.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},fc=class n{static GetDefaultNumWorkers(){return typeof navigator!="object"||!navigator.hardwareConcurrency?1:Math.min(Math.floor(navigator.hardwareConcurrency*.5),4)}static _Initialize(e){if(n._WorkerPoolPromise||n._DecoderModulePromise)return;let t={wasmBaseUrl:_e.ScriptBaseUrl,jsDecoderModule:_e.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:_e.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:_e.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:_e.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:_e.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${wg}(${lk})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new Ng(e,async()=>await ck(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=_e.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,wg(t,n._KTX2DecoderModule),new n._KTX2DecoderModule.KTX2Decoder)):(n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,n._DecoderModulePromise=Promise.resolve(new n._KTX2DecoderModule.KTX2Decoder))}constructor(e,t=n.DefaultNumWorkers){var r,s;this._engine=e;let i=typeof t=="object"&&t.workerPool||n.WorkerPool;if(i)n._WorkerPoolPromise=Promise.resolve(i);else{typeof t=="object"?n._KTX2DecoderModule=(r=t==null?void 0:t.binariesAndModulesContainer)==null?void 0:r.jsDecoderModule:typeof KTX2DECODER!="undefined"&&(n._KTX2DecoderModule=KTX2DECODER);let a=typeof t=="number"?t:(s=t.numWorkers)!=null?s:n.DefaultNumWorkers;n._Initialize(a)}}async _uploadAsync(e,t,i){let r=this._engine.getCaps(),s={astc:!!r.astc,bptc:!!r.bptc,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,etc1:!!r.etc1};if(n._WorkerPoolPromise){let a=await n._WorkerPoolPromise;return await new Promise((o,l)=>{a.push((c,f)=>{let d=m=>{c.removeEventListener("error",d),c.removeEventListener("message",h),l(m),f()},h=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",h),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(_){l({message:_})}f()}};c.addEventListener("error",d),c.addEventListener("message",h),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let u=new Uint8Array(e.byteLength);u.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:u,caps:s,options:i},[u.buffer])})})}else if(n._DecoderModulePromise){let a=await n._DecoderModulePromise;return n.DefaultDecoderOptions.isDirty&&(n._KTX2DecoderModule.KTX2Decoder.DefaultDecoderOptions=n.DefaultDecoderOptions._getKTX2DecoderOptions()),await new Promise((o,l)=>{a.decode(e,r).then(c=>{this._createTexture(c,t),o()}).catch(c=>{l({message:c})})})}throw new Error("KTX2 decoder module is not available")}_createTexture(e,t,i){this._engine._bindTextureDirectly(3553,t),i&&(i.transcodedFormat=e.transcodedFormat,i.isInGammaSpace=e.isInGammaSpace,i.hasAlpha=e.hasAlpha,i.transcoderName=e.transcoderName);let s=!0;switch(e.transcodedFormat){case 32856:t.type=0,t.format=5;break;case 33321:t.type=0,t.format=6;break;case 33323:t.type=0,t.format=7;break;default:t.format=e.transcodedFormat,s=!1;break}if(t._gammaSpace=e.isInGammaSpace,t.generateMipMaps=e.mipmaps.length>1,t.width=e.mipmaps[0].width,t.height=e.mipmaps[0].height,e.errors)throw new Error("KTX2 container - could not transcode the data. "+e.errors);for(let a=0;a=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===50&&t[6]===48&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};fc.URLConfig={jsDecoderModule:"https://cdn.babylonjs.com/babylon.ktx2Decoder.js",wasmUASTCToASTC:null,wasmUASTCToBC7:null,wasmUASTCToRGBA_UNORM:null,wasmUASTCToRGBA_SRGB:null,wasmUASTCToR8_UNORM:null,wasmUASTCToRG8_UNORM:null,jsMSCTranscoder:null,wasmMSCTranscoder:null,wasmZSTDDecoder:null};fc.DefaultNumWorkers=fc.GetDefaultNumWorkers();fc.DefaultDecoderOptions=new AP});var RP={};Be(RP,{_KTXTextureLoader:()=>xP});function Wle(n){switch(n){case 35916:return 33776;case 35918:return 33778;case 35919:return 33779;case 37493:return 37492;case 37497:return 37496;case 37495:return 37494;case 37840:return 37808;case 37841:return 37809;case 37842:return 37810;case 37843:return 37811;case 37844:return 37812;case 37845:return 37813;case 37846:return 37814;case 37847:return 37815;case 37848:return 37816;case 37849:return 37817;case 37850:return 37818;case 37851:return 37819;case 37852:return 37820;case 37853:return 37821;case 36493:return 36492}return null}var xP,bP=I(()=>{rk();dk();Pt();xP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r){if(Array.isArray(e))return;t._invertVScale=!t.invertY;let s=t.getEngine(),a=new Mo(e,6),o=a.numberOfMipmapLevels>1&&t.generateMipMaps;s._unpackFlipY(!0),a.uploadLevels(t,t.generateMipMaps),t.width=a.pixelWidth,t.height=a.pixelHeight,s._setCubeMapTextureParams(t,o,a.numberOfMipmapLevels-1),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}loadData(e,t,i,r){if(Mo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Mo(e,1),a=Wle(s.glInternalFormat);a?(t.format=a,t._useSRGBBuffer=t.getEngine()._getUseSRGBBuffer(!0,t.generateMipMaps),t._gammaSpace=!0):t.format=s.glInternalFormat,i(s.pixelWidth,s.pixelHeight,t.generateMipMaps,!0,()=>{s.uploadLevels(t,t.generateMipMaps)},s.isInvalid)}else fc.IsValid(e)?new fc(t.getEngine())._uploadAsync(e,t,r).then(()=>{i(t.width,t.height,t.generateMipMaps,!0,()=>{},!1)},a=>{ee.Warn(`Failed to load KTX2 texture data: ${a.message}`),i(0,0,!1,!1,()=>{},!0)}):(ee.Error("texture missing KTX identifier"),i(0,0,!1,!1,()=>{},!0))}}});function Tx(n){let e=0;return{id_length:n[e++],colormap_type:n[e++],image_type:n[e++],colormap_index:n[e++]|n[e++]<<8,colormap_length:n[e++]|n[e++]<<8,colormap_size:n[e++],origin:[n[e++]|n[e++]<<8,n[e++]|n[e++]<<8],width:n[e++]|n[e++]<<8,height:n[e++]|n[e++]<<8,pixel_size:n[e++],flags:n[e]}}function MP(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=Tx(e);if(i.id_length+t>e.length){ee.Error("Unable to load TGA file - Not enough data");return}t+=i.id_length;let r=!1,s=!1,a=!1;switch(i.image_type){case Yle:r=!0;case Hle:s=!0;break;case Kle:r=!0;case zle:break;case jle:r=!0;case Xle:a=!0;break}let o,l=i.pixel_size>>3,c=i.width*i.height*l,f;if(s&&(f=e.subarray(t,t+=i.colormap_length*(i.colormap_size>>3))),r){o=new Uint8Array(c);let S,E,T,R=0,M=new Uint8Array(l);for(;t>Zle){default:case Jle:d=0,u=1,p=i.width,h=0,m=1,_=i.height;break;case Qle:d=0,u=1,p=i.width,h=i.height-1,m=-1,_=-1;break;case ece:d=i.width-1,u=-1,p=-1,h=0,m=1,_=i.height;break;case $le:d=i.width-1,u=-1,p=-1,h=i.height-1,m=-1,_=-1;break}let g="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=oce[g](i,f,o,h,m,_,d,u,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function tce(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,h=n.height,u,m=0,_,p,g=new Uint8Array(d*h*4);for(p=i;p!==s;p+=r)for(_=a;_!==l;_+=o,m++)u=c[m],g[(_+d*p)*4+3]=255,g[(_+d*p)*4+2]=f[u*3+0],g[(_+d*p)*4+1]=f[u*3+1],g[(_+d*p)*4+0]=f[u*3+2];return g}function ice(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u+=2){h=c[u+0]+(c[u+1]<<8);let g=((h&31744)>>10)*255/31|0,v=((h&992)>>5)*255/31|0,x=(h&31)*255/31|0;p[(m+f*_)*4+0]=g,p[(m+f*_)*4+1]=v,p[(m+f*_)*4+2]=x,p[(m+f*_)*4+3]=h&32768?0:255}return p}function rce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=3)_[(u+f*m)*4+3]=255,_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2];return _}function nce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=4)_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2],_[(u+f*m)*4+3]=c[h+3];return _}function sce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u++)h=c[u],p[(m+f*_)*4+0]=h,p[(m+f*_)*4+1]=h,p[(m+f*_)*4+2]=h,p[(m+f*_)*4+3]=255;return p}function ace(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=2)_[(u+f*m)*4+0]=c[h+0],_[(u+f*m)*4+1]=c[h+0],_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+3]=c[h+1];return _}var Hle,zle,Xle,Yle,Kle,jle,qle,Zle,Qle,$le,Jle,ece,oce,hk=I(()=>{Pt();Hle=1,zle=2,Xle=3,Yle=9,Kle=10,jle=11,qle=48,Zle=4,Qle=0,$le=1,Jle=2,ece=3;oce={GetTGAHeader:Tx,UploadContent:MP,_getImageData8bits:tce,_getImageData16bits:ice,_getImageData24bits:rce,_getImageData32bits:nce,_getImageDataGrey8bits:sce,_getImageDataGrey16bits:ace}});var uk={};Be(uk,{_TGATextureLoader:()=>IP});var IP,mk=I(()=>{hk();IP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".env not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Tx(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{MP(t,r)})}}});var Fg=I(()=>{});function cce(){let n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){let c=l-127;c<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,r[l]=-c-1,r[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,r[l]=13,r[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,f=0;for(;(c&8388608)===0;)c<<=1,f-=8388608;c&=-8388609,f+=947912704,s[l]=c|f}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}function Rx(n,e){let t=new Uint8Array(n),i=0;for(;t[e.value+i]!=0;)i+=1;let r=new TextDecoder().decode(t.slice(e.value,e.value+i));return e.value=e.value+i+1,r}function Io(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function oa(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function Bg(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function ym(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function CP(n,e){let t=n[e.value];return e.value+=1,t}function gk(n,e){let t;return"getBigInt64"in DataView.prototype?t=Number(n.getBigInt64(e.value,!0)):t=n.getUint32(e.value+4,!0)+Number(n.getUint32(e.value,!0)<<32),e.value+=8,t}function bn(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function vk(n,e){return fce(ym(n,e))}function fce(n){let e=(n&31744)>>10,t=n&1023;return(n>>15?-1:1)*(e?e===31?t?NaN:1/0:Math.pow(2,e-15)*(1+t/1024):6103515625e-14*(t/1024))}function dce(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=wt(n,-65504,65504),Ax.floatView[0]=n;let e=Ax.uint32View[0],t=e>>23&511;return Ax.baseTable[t]+((e&8388607)>>Ax.shiftTable[t])}function Ek(n,e){return dce(bn(n,e))}function hce(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n).slice(e.value,e.value+t));return e.value=e.value+t,i}function uce(n,e){let t=Io(n,e),i=oa(n,e);return[t,i]}function mce(n,e){let t=oa(n,e),i=oa(n,e);return[t,i]}function pce(n,e){let t=bn(n,e),i=bn(n,e);return[t,i]}function _ce(n,e){let t=bn(n,e),i=bn(n,e),r=bn(n,e);return[t,i,r]}function gce(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var ml,yP,Ax,Ug=I(()=>{Vn();Fg();(function(n){n[n.NO_COMPRESSION=0]="NO_COMPRESSION",n[n.RLE_COMPRESSION=1]="RLE_COMPRESSION",n[n.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",n[n.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",n[n.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",n[n.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"})(ml||(ml={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(yP||(yP={}));Ax=cce()});function LP(n,e){if(n.getUint32(0,!0)!=Ace)throw new Error("Incorrect OpenEXR format");let t=n.getUint8(4),i=n.getUint8(5),r={singleTile:!!(i&2),longName:!!(i&4),deepFormat:!!(i&8),multiPart:!!(i&16)};e.value=8;let s={},a=!0;for(;a;){let o=Rx(n.buffer,e);if(!o)a=!1;else{let l=Rx(n.buffer,e),c=oa(n,e),f=Sk(n,e,l,c);f===void 0?ee.Warn(`Unknown header attribute type ${l}'.`):s[o]=f}}if((i&-5)!=0)throw new Error("Unsupported file format");return{version:t,spec:r,...s}}var Ace,Tk=I(()=>{Pt();Ug();Ace=20000630});function Ck(n,e){let t=0;for(let r=0;r<65536;++r)(r==0||n[r>>3]&1<<(r&7))&&(e[t++]=r);let i=t-1;for(;t<65536;)e[t++]=0;return i}function Mce(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function bk(n,e,t,i,r){for(;t>t&(1<>i;if(c=new Uint8Array([c])[0],o.value+c>l)return null;let f=a[o.value-1];for(;c-- >0;)a[o.value++]=f}else if(o.value0;--t){let i=e+Vg[t]>>1;Vg[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|Vg[i]++<<6)}}function yce(n,e,t,i,r,s){let a=e,o=0,l=0;for(;i<=r;i++){if(a.value-e.value>t)return;let c=bk(6,o,l,n,a),f=c.l;if(o=c.c,l=c.lc,s[i]=f,f==63){if(a.value-e.value>t)throw new Error("Error in HufUnpackEncTable");c=bk(8,o,l,n,a);let d=c.l+6;if(o=c.c,l=c.lc,i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}else if(f>=59){let d=f-59+2;if(i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}}Ice(s)}function Pk(n){return n&63}function Dk(n){return n>>6}function Cce(n,e,t,i){for(;e<=t;e++){let r=Dk(n[e]),s=Pk(n[e]);if(r>>s)throw new Error("Invalid table entry");if(s>14){let a=i[r>>s-14];if(a.len)throw new Error("Invalid table entry");if(a.lit++,a.p){let o=a.p;a.p=new Array(a.lit);for(let l=0;l0;o--){let l=i[(r<<14-s)+a];if(l.len||l.p)throw new Error("Invalid table entry");l.len=s,l.lit=e,a++}}}return!0}function Pce(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,h=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let _=c>>f-14&16383,p=e[_];if(p.len){f-=p.len;let g=OP(p.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else{if(!p.p)throw new Error("hufDecode issues");let g;for(g=0;g=v&&Dk(n[p.p[g]])==(c>>f-v&(1<>=u,f-=u;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let _=OP(m.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else throw new Error("HufDecode issues")}return!0}function Lk(n,e,t,i,r,s){let a={value:0},o=t.value,l=oa(e,t),c=oa(e,t);t.value+=4;let f=oa(e,t);if(t.value+=4,l<0||l>=65537||c<0||c>=65537)throw new Error("Wrong HUF_ENCSIZE");let d=new Array(65537),h=new Array(16384);Mce(h);let u=i-(t.value-o);if(yce(n,t,u,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Cce(d,l,c,h),Pce(d,h,n,t,f,c,s,r,a)}function wP(n){return n&65535}function Mk(n){let e=wP(n);return e>32767?e-65536:e}function Cm(n,e){let t=Mk(n),r=Mk(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function Pm(n,e){let t=wP(n),i=wP(e),r=t-(i>>1)&Rk;return{a:i+r-bce&Rk,b:r}}function Ok(n,e,t,i,r,s,a){let o=a<16384,l=t>r?r:t,c=1,f,d;for(;c<=l;)c<<=1;for(c>>=1,f=c,c>>=1;c>=1;){d=0;let h=d+s*(r-f),u=s*c,m=s*f,_=i*c,p=i*f,g,v,x,S;for(;d<=h;d+=m){let E=d,T=d+i*(t-f);for(;E<=T;E+=p){let R=E+_,M=E+u,y=M+_;if(o){let C=Cm(n[E+e],n[M+e]);g=C.a,x=C.b,C=Cm(n[R+e],n[y+e]),v=C.a,S=C.b,C=Cm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Cm(x,S),n[M+e]=C.a,n[y+e]=C.b}else{let C=Pm(n[E+e],n[M+e]);g=C.a,x=C.b,C=Pm(n[R+e],n[y+e]),v=C.a,S=C.b,C=Pm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Pm(x,S),n[M+e]=C.a,n[y+e]=C.b}}if(t&c){let R=E+u,M;o?M=Cm(n[E+e],n[R+e]):M=Pm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}if(r&c){let E=d,T=d+i*(t-f);for(;E<=T;E+=p){let R=E+_,M;o?M=Cm(n[E+e],n[R+e]):M=Pm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}f=c,c>>=1}return d}function Nk(n,e,t){for(let i=0;i{Ug();Fg();yk=16,bce=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function FP(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function Vk(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(Fk(e)),i=new Uint8Array(t.length);return PP(t),DP(t,i),new DataView(i.buffer)}function BP(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return PP(t),DP(t,i),new DataView(i.buffer)}function Gk(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=n.lines*n.channels*n.width,r=n.type==1?new Uint16Array(i):new Uint32Array(i),s=0,a=0,o=new Array(4);for(let l=0;l=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(o<=l)for(let m=0;m{wk();Bk();Ug();Fg()});var Ba,pl,UP=I(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(Ba||(Ba={}));pl=class{};pl.DefaultOutputType=Ba.HalfFloat;pl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function VP(n,e,t,i){let r={size:0,viewer:e,array:new Uint8Array(e.buffer),offset:t,width:n.dataWindow.xMax-n.dataWindow.xMin+1,height:n.dataWindow.yMax-n.dataWindow.yMin+1,channels:n.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(n.compression){case ml.NO_COMPRESSION:r.lines=1,r.uncompress=FP;break;case ml.RLE_COMPRESSION:r.lines=1,r.uncompress=Vk;break;case ml.ZIPS_COMPRESSION:r.lines=1,r.uncompress=BP,await _e.LoadScriptAsync(pl.FFLATEUrl);break;case ml.ZIP_COMPRESSION:r.lines=16,r.uncompress=BP,await _e.LoadScriptAsync(pl.FFLATEUrl);break;case ml.PIZ_COMPRESSION:r.lines=32,r.uncompress=kk;break;case ml.PXR24_COMPRESSION:r.lines=16,r.uncompress=Gk,await _e.LoadScriptAsync(pl.FFLATEUrl);break;default:throw new Error(ml[n.compression]+" is unsupported")}r.scanlineBlockSize=r.lines;let s={};for(let c of n.channels)switch(c.name){case"R":case"G":case"B":case"A":s[c.name]=!0,r.type=c.pixelType;break;case"Y":s[c.name]=!0,r.type=c.pixelType;break;default:break}let a=!1;if(s.R&&s.G&&s.B&&s.A)r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G&&s.B)a=!0,r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G)r.outputChannels=2,r.decodeChannels={R:0,G:1};else if(s.R)r.outputChannels=1,r.decodeChannels={R:0};else if(s.Y)r.outputChannels=1,r.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(r.type===1)switch(i){case Ba.Float:r.getter=vk,r.inputSize=2;break;case Ba.HalfFloat:r.getter=ym,r.inputSize=2;break}else if(r.type===2)switch(i){case Ba.Float:r.getter=bn,r.inputSize=4;break;case Ba.HalfFloat:r.getter=Ek,r.inputSize=4}else throw new Error("Unsupported pixelType "+r.type+" for "+n.compression);r.blockCount=r.height/r.scanlineBlockSize;for(let c=0;cc:r.scanOrder=c=>r.height-1-c,r.outputChannels==4?(r.format=5,r.linearSpace=!0):(r.format=6,r.linearSpace=!1),r}function GP(n,e,t,i){let r={value:0};for(let s=0;sn.height?n.height-a:n.scanlineBlockSize;let l=n.size=n.height)continue;let h=c*n.bytesPerLine,u=(n.height-1-d)*n.outLineWidth;for(let m=0;m{Ug();Wk();Fg();yi();UP()});var zk={};Be(zk,{ReadExrDataAsync:()=>Dce,_ExrTextureLoader:()=>kP});async function Dce(n){let e=new DataView(n),t={value:0},i=LP(e,t);try{let r=await VP(i,e,t,Ba.Float);return GP(r,i,e,t),r.byteArray?{width:i.dataWindow.xMax-i.dataWindow.xMin+1,height:i.dataWindow.yMax-i.dataWindow.yMin+1,data:new Float32Array(r.byteArray)}:(ee.Error("Failed to decode EXR data: No byte array available."),{width:0,height:0,data:null})}catch(r){ee.Error("Failed to load EXR data: ",r)}return{width:0,height:0,data:null}}var kP,Xk=I(()=>{Tk();Hk();UP();Pt();kP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){throw".exr not supported in Cube."}loadData(e,t,i){let r=new DataView(e.buffer),s={value:0},a=LP(r,s);VP(a,r,s,pl.DefaultOutputType).then(o=>{GP(o,a,r,s);let l=a.dataWindow.xMax-a.dataWindow.xMin+1,c=a.dataWindow.yMax-a.dataWindow.yMin+1;i(l,c,t.generateMipMaps,!1,()=>{let f=t.getEngine();t.format=a.format,t.type=o.textureType,t.invertY=!1,t._gammaSpace=!a.linearSpace,o.byteArray&&f._uploadDataToTextureDirectly(t,o.byteArray,0,0,void 0,!0)})}).catch(o=>{ee.Error("Failed to load EXR texture: ",o)})}}});function dc(n,e){Lce(n)&&ee.Warn(`Extension with the name '${n}' already exists`),Mx.set(n,e)}function Lce(n){return Mx.delete(n)}function Ix(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),Mx.has(n)||(n.endsWith(".ies")&&dc(".ies",async()=>await Promise.resolve().then(()=>(zV(),HV)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&dc(".dds",async()=>await Promise.resolve().then(()=>(YV(),XV)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&dc(".basis",async()=>await Promise.resolve().then(()=>($V(),QV)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&dc(".env",async()=>await Promise.resolve().then(()=>(qG(),jG)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&dc(".hdr",async()=>await Promise.resolve().then(()=>(ik(),tk)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(dc(".ktx",async()=>await Promise.resolve().then(()=>(bP(),RP)).then(i=>new i._KTXTextureLoader)),dc(".ktx2",async()=>await Promise.resolve().then(()=>(bP(),RP)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&dc(".tga",async()=>await Promise.resolve().then(()=>(mk(),uk)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&dc(".exr",async()=>await Promise.resolve().then(()=>(Xk(),zk)).then(i=>new i._ExrTextureLoader)));let t=Mx.get(n);return t?Promise.resolve(t(e)):null}var Mx,WP=I(()=>{Pt();Mx=new Map});function Yk(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var Kk=I(()=>{});var jk=I(()=>{Os();Pt();Jl();mg();Vr();WP();Kk();Ie.prototype._partialLoadFile=function(n,e,t,i,r=null){let s=o=>{t[e]=o,t._internalCount++,t._internalCount===6&&i(t)},a=(o,l)=>{r&&o&&r(o.status+" "+o.statusText,l)};this._loadFile(n,s,void 0,void 0,!0,a)};Ie.prototype._cascadeLoadFiles=function(n,e,t,i=null){let r=[];r._internalCount=0;for(let s=0;s<6;s++)this._partialLoadFile(t[s],s,r,e,i)};Ie.prototype._cascadeLoadImgs=function(n,e,t,i,r=null,s){let a=[];a._internalCount=0;for(let o=0;o<6;o++)this._partialLoadImg(i[o],o,a,n,e,t,r,s)};Ie.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=_f();xm(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,h)=>{i&&i.removePendingData(l),a&&a(d,h)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Ie.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h=null,u=null,m=!1,_=null){let p=d||new Oi(this,7);p.isCube=!0,p.url=n,p.generateMipMaps=!i,p._lodGenerationScale=c,p._lodGenerationOffset=f,p._useSRGBBuffer=!!m&&this._caps.supportSRGBBuffers&&(this.version>1||this.isWebGPU||!!i),p!==d&&(p.label=n.substring(0,60)),this._doNotHandleContextLost||(p._extension=o,p._files=t,p._buffer=_);let g=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:Yk(n),x=Ix(v),S=(T,R)=>{p.dispose(),s?s(T,R):T&&ee.Warn(T)},E=(T,R)=>{n===g?T&&S(T.status+" "+T.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${g}`),this.createCubeTextureBase(g,e,t,!!i,r,S,a,o,l,c,f,p,h,u,m,_))};if(x)x.then(T=>{let R=M=>{h&&h(p,M),T.loadCubeData(M,p,l,r,(y,C)=>{S(y,C)})};_?R(_):t&&t.length===6?T.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(y=>new Uint8Array(y))),t,S):S("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,E)});else{if(!t||t.length===0)throw new Error("Cannot load cubemap because files were not defined, or the correct loader was not found.");this._cascadeLoadImgs(e,p,(T,R)=>{u&&u(T,R)},t,S)}return this._internalTexturesCache.push(p),p}});var dW={};Be(dW,{DDSTools:()=>To});function yx(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function Nce(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var Oce,qk,Zk,Qk,$k,Jk,eW,tW,iW,HP,rW,nW,sW,aW,wce,zP,Fce,Bce,oW,lW,XP,cW,YP,fW,Uce,Vce,Gce,kce,Wce,Hce,zce,To,ZC=I(()=>{Vn();Pt();RC();XC();jk();Oce=542327876,qk=131072,Zk=512,Qk=4,$k=64,Jk=131072;eW=yx("DXT1"),tW=yx("DXT3"),iW=yx("DXT5"),HP=yx("DX10"),rW=113,nW=116,sW=2,aW=10,wce=88,zP=31,Fce=0,Bce=1,oW=2,lW=3,XP=4,cW=7,YP=20,fW=21,Uce=22,Vce=23,Gce=24,kce=25,Wce=26,Hce=28,zce=32,To=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,zP),i=new Int32Array(e.buffer,e.byteOffset,zP+4),r=1;t[oW]&qk&&(r=Math.max(1,t[cW]));let s=t[fW],a=s===HP?i[zce]:0,o=0;switch(s){case rW:o=2;break;case nW:o=1;break;case HP:if(a===aW){o=2;break}if(a===sW){o=1;break}}return{width:t[XP],height:t[lW],mipmapCount:r,isFourCC:(t[YP]&Qk)===Qk,isRGB:(t[YP]&$k)===$k,isLuminance:(t[YP]&Jk)===Jk,isCube:(t[Hce]&Zk)===Zk,isCompressed:s===eW||s===tW||s===iW,dxgiFormat:a,textureType:o}}static _GetHalfFloatAsFloatRGBAArrayBuffer(e,t,i,r,s,a){let o=new Float32Array(r),l=new Uint16Array(s,i),c=0;for(let f=0;f>8)}static _GetRGBArrayBuffer(e,t,i,r,s,a,o,l){let c=new Uint8Array(r),f=new Uint8Array(s,i),d=0;for(let h=0;h0?r.sphericalPolynomial=ec.ConvertCubeMapToSphericalPolynomial({size:h[XP],right:f[0],left:f[1],up:f[2],down:f[3],front:f[4],back:f[5],format:5,type:1,gammaSpace:!1}):r.sphericalPolynomial=void 0}};To.StoreLODInAlphaChannel=!1});var hW=I(()=>{os();Os();Pt();ug();vg();bt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var g;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(g=d._sphericalPolynomial)!=null?g:new cl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let h=3,u=this._gl,m=f.width;if(!m)return;let{DDSTools:_}=await Promise.resolve().then(()=>(ZC(),dW)),p=[];for(let v=0;v{os();LA();bt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new al(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.STATIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.STATIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new al(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.DYNAMIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.DYNAMIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.updateUniformBuffer=function(n,e,t,i){this.bindUniformBuffer(n),t===void 0&&(t=0),i===void 0?e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,e):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,new Float32Array(e)):e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,e.subarray(t,t+i)):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,new Float32Array(e).subarray(t,t+i)),this.bindUniformBuffer(null)};bt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};bt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};bt.prototype.bindUniformBlock=function(n,e,t){let i=n.program,r=this._gl.getUniformBlockIndex(i,e);r!==4294967295&&this._gl.uniformBlockBinding(i,r,t)}});var mW=I(()=>{ba();Vr();Ie.prototype.displayLoadingUI=function(){if(!ur())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Ie.prototype.hideLoadingUI=function(){if(!ur())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Ie.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Ie.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Ie.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Ie.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var pW=I(()=>{Vr();Ie.prototype.getInputElement=function(){return this._renderingCanvas};Ie.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Ie.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Ie.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Ie.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Ie.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var KP=I(()=>{Vr();Ie.prototype.setAlphaEquation=function(n,e=0){if(this._alphaEquation[e]!==n){switch(n){case 0:this._alphaState.setAlphaEquationParameters(32774,32774,e);break;case 1:this._alphaState.setAlphaEquationParameters(32778,32778,e);break;case 2:this._alphaState.setAlphaEquationParameters(32779,32779,e);break;case 3:this._alphaState.setAlphaEquationParameters(32776,32776,e);break;case 4:this._alphaState.setAlphaEquationParameters(32775,32775,e);break;case 5:this._alphaState.setAlphaEquationParameters(32775,32774,e);break}this._alphaEquation[e]=n}}});var _W=I(()=>{Vr();KP();Ie.prototype.getInputElement=function(){return this._renderingCanvas};Ie.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Ie.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Ie.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Ie.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Ie.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Ie.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Ie.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Ie.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Ie.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Ie.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Ie.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var gW=I(()=>{Vr();KP();Ie.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Ie.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Ie.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Ie.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Ie.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Ie.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Ie.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Ie.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Ie.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Ie.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Ie.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Ie.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Ie.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Ie.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Ie.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Ie.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Ie.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Ie.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Ie.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Ie.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Ie.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Ie.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Ie.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Ie.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Ie.prototype.cacheStencilState=function(){this._cachedStencilBuffer=this.getStencilBuffer(),this._cachedStencilFunction=this.getStencilFunction(),this._cachedStencilMask=this.getStencilMask(),this._cachedStencilOperationPass=this.getStencilOperationPass(),this._cachedStencilOperationFail=this.getStencilOperationFail(),this._cachedStencilOperationDepthFail=this.getStencilOperationDepthFail(),this._cachedStencilReference=this.getStencilFunctionReference()};Ie.prototype.restoreStencilState=function(){this.setStencilFunction(this._cachedStencilFunction),this.setStencilMask(this._cachedStencilMask),this.setStencilBuffer(this._cachedStencilBuffer),this.setStencilOperationPass(this._cachedStencilOperationPass),this.setStencilOperationFail(this._cachedStencilOperationFail),this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail),this.setStencilFunctionReference(this._cachedStencilReference)}});var vW=I(()=>{Vr();Ie.prototype.getRenderPassNames=function(){return this._renderPassNames};Ie.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Ie.prototype.createRenderPassId=function(n){let e=++Ie._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Ie.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{Vr();Ie.prototype._loadFileAsync=async function(n,e,t){return await new Promise((i,r)=>{this._loadFile(n,s=>{i(s)},void 0,e,t,(s,a)=>{r(a)})})}});var SW=I(()=>{WP();Vr();Ie.GetCompatibleTextureLoader=Ix});function Xce(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function TW(n,e,t){n._onCanvasFocus=()=>{n.onCanvasFocusObservable.notifyObservers(n)},n._onCanvasBlur=()=>{n.onCanvasBlurObservable.notifyObservers(n)},n._onCanvasContextMenu=r=>{n.disableContextMenu&&r.preventDefault()},e.addEventListener("focus",n._onCanvasFocus),e.addEventListener("blur",n._onCanvasBlur),e.addEventListener("contextmenu",n._onCanvasContextMenu),n._onBlur=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.disable(),n._windowIsBackground=!0},n._onFocus=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.enable(),n._windowIsBackground=!1},n._onCanvasPointerOut=r=>{document.elementFromPoint(r.clientX,r.clientY)!==e&&n.onCanvasPointerOutObservable.notifyObservers(r)};let i=n.getHostWindow();i&&typeof i.addEventListener=="function"&&(i.addEventListener("blur",n._onBlur),i.addEventListener("focus",n._onFocus)),e.addEventListener("pointerout",n._onCanvasPointerOut),t.doNotHandleTouchAction||Xce(e),!Ie.audioEngine&&t.audioEngine&&Ie.AudioEngineFactory&&(Ie.audioEngine=Ie.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),uf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&jP(e)},document.addEventListener("fullscreenchange",n._onFullscreenChange,!1),document.addEventListener("webkitfullscreenchange",n._onFullscreenChange,!1),n._onPointerLockChange=()=>{n.isPointerLock=document.pointerLockElement===e},document.addEventListener("pointerlockchange",n._onPointerLockChange,!1),document.addEventListener("webkitpointerlockchange",n._onPointerLockChange,!1)),n.enableOfflineSupport=Ie.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function AW(n,e){Oe.Instances.length===1&&Ie.audioEngine&&(Ie.audioEngine.dispose(),Ie.audioEngine=null);let t=n.getHostWindow();t&&typeof t.removeEventListener=="function"&&(t.removeEventListener("blur",n._onBlur),t.removeEventListener("focus",n._onFocus)),e&&(e.removeEventListener("focus",n._onCanvasFocus),e.removeEventListener("blur",n._onCanvasBlur),e.removeEventListener("pointerout",n._onCanvasPointerOut),e.removeEventListener("contextmenu",n._onCanvasContextMenu)),uf()&&(document.removeEventListener("fullscreenchange",n._onFullscreenChange),document.removeEventListener("mozfullscreenchange",n._onFullscreenChange),document.removeEventListener("webkitfullscreenchange",n._onFullscreenChange),document.removeEventListener("msfullscreenchange",n._onFullscreenChange),document.removeEventListener("pointerlockchange",n._onPointerLockChange),document.removeEventListener("mspointerlockchange",n._onPointerLockChange),document.removeEventListener("mozpointerlockchange",n._onPointerLockChange),document.removeEventListener("webkitpointerlockchange",n._onPointerLockChange))}function xW(n){let e=document.createElement("span");e.textContent="Hg",e.style.font=n;let t=document.createElement("div");t.style.display="inline-block",t.style.width="1px",t.style.height="0px",t.style.verticalAlign="bottom";let i=document.createElement("div");i.style.whiteSpace="nowrap",i.appendChild(e),i.appendChild(t),document.body.appendChild(i);let r,s;try{s=t.getBoundingClientRect().top-e.getBoundingClientRect().top,t.style.verticalAlign="baseline",r=t.getBoundingClientRect().top-e.getBoundingClientRect().top}finally{document.body.removeChild(i)}return{ascent:r,height:s,descent:s-r}}async function RW(n,e,t){return await new Promise((i,r)=>{let s=new Image;s.onload=()=>{s.decode().then(()=>{n.createImageBitmap(s,t).then(a=>{i(a)})})},s.onerror=()=>{r(`Error loading image ${s.src}`)},s.src=e})}function bW(n,e,t,i){let s=n.createCanvas(t,i).getContext("2d");if(!s)throw new Error("Unable to get 2d context for resizeImageBitmap");return s.drawImage(e,0,0),s.getImageData(0,0,t,i).data}function MW(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function IW(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function jP(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function yW(){document.exitPointerLock&&document.exitPointerLock()}var CW=I(()=>{ba();Vr();Ni()});var Ve,qP=I(()=>{Os();Ni();os();MU();LA();Pt();fC();IU();DU();LU();OU();NU();BU();UU();VU();hW();uW();mW();pW();_W();gW();vW();mC();EW();SW();Vr();CW();oP();sl();Ve=class n extends bt{static get NpmPackage(){return Ie.NpmPackage}static get Version(){return Ie.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Ie.DefaultLoadingScreenFactory(e)}get _supportsHardwareTextureRescaling(){return!!n._RescalePostProcessFactory}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}constructor(e,t,i,r=!1){super(e,t,i,r),this.customAnimationFrameRequester=null,this._performanceMonitor=new NA,this._drawCalls=new ul,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),TW(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return bW(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await RW(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&MW(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&IW()}setDitheringState(e){e?this._gl.enable(this._gl.DITHER):this._gl.disable(this._gl.DITHER)}setRasterizerState(e){e?this._gl.disable(this._gl.RASTERIZER_DISCARD):this._gl.enable(this._gl.RASTERIZER_DISCARD)}setDirectViewport(e,t,i,r){let s=this._cachedViewport;return this._cachedViewport=null,this._viewport(e,t,i,r),s}scissorClear(e,t,i,r,s){this.enableScissor(e,t,i,r),this.clear(s,!0,!0,!0),this.disableScissor()}enableScissor(e,t,i,r){let s=this._gl;s.enable(s.SCISSOR_TEST),s.scissor(e,t,i,r)}disableScissor(){let e=this._gl;e.disable(e.SCISSOR_TEST)}getVertexShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[0]):null}getFragmentShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[1]):null}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e,this._framebufferDimensionsObject&&this.onResizeObservable.notifyObservers(this)}_rebuildBuffers(){for(let e of this.scenes)e.resetCachedMaterial(),e._rebuildGeometries();for(let e of this._virtualScenes)e.resetCachedMaterial(),e._rebuildGeometries();super._rebuildBuffers()}getFontOffset(e){return xW(e)}_cancelFrame(){if(this.customAnimationFrameRequester){if(this._frameHandler!==0){this._frameHandler=0;let{cancelAnimationFrame:e}=this.customAnimationFrameRequester;e&&e(this.customAnimationFrameRequester.requestID)}}else super._cancelFrame()}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this.customAnimationFrameRequester?(this.customAnimationFrameRequester.requestID=this._queueNewFrame(this.customAnimationFrameRequester.renderFunction||this._boundRenderFunction,this.customAnimationFrameRequester),this._frameHandler=this.customAnimationFrameRequester.requestID):this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}enterPointerlock(){this._renderingCanvas&&jP(this._renderingCanvas)}exitPointerlock(){yW()}beginFrame(){this._measureFps(),super.beginFrame()}_deletePipelineContext(e){let t=e;t&&t.program&&t.transformFeedback&&(this.deleteTransformFeedback(t.transformFeedback),t.transformFeedback=null),super._deletePipelineContext(e)}createShaderProgram(e,t,i,r,s,a=null){s=s||this._gl,this.onBeforeShaderCompilationObservable.notifyObservers(this);let o=super.createShaderProgram(e,t,i,r,s,a);return this.onAfterShaderCompilationObservable.notifyObservers(this),o}_createShaderProgram(e,t,i,r,s=null){let a=r.createProgram();if(e.program=a,!a)throw new Error("Unable to create program");if(r.attachShader(a,t),r.attachShader(a,i),this.webGLVersion>1&&s){let o=this.createTransformFeedback();this.bindTransformFeedback(o),this.setTranformFeedbackVaryings(a,s),e.transformFeedback=o}return r.linkProgram(a),this.webGLVersion>1&&s&&this.bindTransformFeedback(null),e.context=r,e.vertexShader=t,e.fragmentShader=i,e.isParallelCompiled||this._finalizePipelineContext(e),a}_releaseTexture(e){super._releaseTexture(e)}_releaseRenderTargetWrapper(e){super._releaseRenderTargetWrapper(e);for(let t of this.scenes){for(let i of t.postProcesses)i._outputTexture===e&&(i._outputTexture=null);for(let i of t.cameras)for(let r of i._postProcesses)r&&r._outputTexture===e&&(r._outputTexture=null)}}_rescaleTexture(e,t,i,r,s){this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE);let a=this.createRenderTargetTexture({width:t.width,height:t.height},{generateMipMaps:!1,type:0,samplingMode:2,generateDepthBuffer:!1,generateStencilBuffer:!1});if(!this._rescalePostProcess&&n._RescalePostProcessFactory&&(this._rescalePostProcess=n._RescalePostProcessFactory(this)),this._rescalePostProcess){this._rescalePostProcess.externalTextureSamplerBinding=!0;let o=()=>{this._rescalePostProcess.onApply=function(f){f._bindTexture("textureSampler",e)};let c=i;c||(c=this.scenes[this.scenes.length-1]),c.postProcessManager.directRender([this._rescalePostProcess],a,!0),this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),this._gl.copyTexImage2D(this._gl.TEXTURE_2D,0,r,0,0,t.width,t.height,0),this.unBindFramebuffer(a),a.dispose(),s&&s()},l=this._rescalePostProcess.getEffect();l?l.executeWhenCompiled(o):this._rescalePostProcess.onEffectCreatedObservable.addOnce(c=>{c.executeWhenCompiled(o)})}}wrapWebGLTexture(e,t=!1,i=3,r=0,s=0){let a=new sm(e,this._gl),o=new Oi(this,0,!0);return o._hardwareTexture=a,o.baseWidth=r,o.baseHeight=s,o.width=r,o.height=s,o.isReady=!0,o.useMipMaps=t,this.updateTextureSamplingMode(i,o),o}_uploadImageToTexture(e,t,i=0,r=0){let s=this._gl,a=this._getWebGLTextureType(e.type),o=this._getInternalFormat(e.format),l=this._getRGBABufferInternalSizedFormat(e.type,o),c=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(c,e,!0),this._unpackFlipY(e.invertY);let f=s.TEXTURE_2D;e.isCube&&(f=s.TEXTURE_CUBE_MAP_POSITIVE_X+i),s.texImage2D(f,r,l,o,a,t),this._bindTextureDirectly(c,null,!0)}updateTextureComparisonFunction(e,t){if(this.webGLVersion===1){ee.Error("WebGL 1 does not support texture comparison.");return}let i=this._gl;e.isCube?(this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,e,!0),t===0?(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)):(this._bindTextureDirectly(this._gl.TEXTURE_2D,e,!0),t===0?(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_2D,null)),e._comparisonFunction=t}createInstancesBuffer(e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create instance buffer");let i=new al(t);return i.capacity=e,this.bindArrayBuffer(i),this._gl.bufferData(this._gl.ARRAY_BUFFER,e,this._gl.DYNAMIC_DRAW),i.references=1,i}deleteInstancesBuffer(e){this._gl.deleteBuffer(e)}async _clientWaitAsync(e,t=0,i=10){let r=this._gl;return await new Promise((s,a)=>{nl(()=>{let o=r.clientWaitSync(e,t,0);if(o==r.WAIT_FAILED)throw new Error("clientWaitSync failed");return o!=r.TIMEOUT_EXPIRED},s,a,i)})}_readPixelsAsync(e,t,i,r,s,a,o){if(this._webGLVersion<2)throw new Error("_readPixelsAsync only work on WebGL2+");let l=this._gl,c=l.createBuffer();l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.bufferData(l.PIXEL_PACK_BUFFER,o.byteLength,l.STREAM_READ),l.readPixels(e,t,i,r,s,a,0),l.bindBuffer(l.PIXEL_PACK_BUFFER,null);let f=l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE,0);return f?(l.flush(),this._clientWaitAsync(f,0,10).then(()=>(l.deleteSync(f),l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,o),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),l.deleteBuffer(c),o))):null}dispose(){this.hideLoadingUI(),this._rescalePostProcess&&this._rescalePostProcess.dispose(),AW(this,this._renderingCanvas),super.dispose()}};Ve.ALPHA_DISABLE=0;Ve.ALPHA_ADD=1;Ve.ALPHA_COMBINE=2;Ve.ALPHA_SUBTRACT=3;Ve.ALPHA_MULTIPLY=4;Ve.ALPHA_MAXIMIZED=5;Ve.ALPHA_ONEONE=6;Ve.ALPHA_PREMULTIPLIED=7;Ve.ALPHA_PREMULTIPLIED_PORTERDUFF=8;Ve.ALPHA_INTERPOLATE=9;Ve.ALPHA_SCREENMODE=10;Ve.DELAYLOADSTATE_NONE=0;Ve.DELAYLOADSTATE_LOADED=1;Ve.DELAYLOADSTATE_LOADING=2;Ve.DELAYLOADSTATE_NOTLOADED=4;Ve.NEVER=512;Ve.ALWAYS=519;Ve.LESS=513;Ve.EQUAL=514;Ve.LEQUAL=515;Ve.GREATER=516;Ve.GEQUAL=518;Ve.NOTEQUAL=517;Ve.KEEP=7680;Ve.REPLACE=7681;Ve.INCR=7682;Ve.DECR=7683;Ve.INVERT=5386;Ve.INCR_WRAP=34055;Ve.DECR_WRAP=34056;Ve.TEXTURE_CLAMP_ADDRESSMODE=0;Ve.TEXTURE_WRAP_ADDRESSMODE=1;Ve.TEXTURE_MIRROR_ADDRESSMODE=2;Ve.TEXTUREFORMAT_ALPHA=0;Ve.TEXTUREFORMAT_LUMINANCE=1;Ve.TEXTUREFORMAT_LUMINANCE_ALPHA=2;Ve.TEXTUREFORMAT_RGB=4;Ve.TEXTUREFORMAT_RGBA=5;Ve.TEXTUREFORMAT_RED=6;Ve.TEXTUREFORMAT_R=6;Ve.TEXTUREFORMAT_R16_UNORM=33322;Ve.TEXTUREFORMAT_RG16_UNORM=33324;Ve.TEXTUREFORMAT_RGB16_UNORM=32852;Ve.TEXTUREFORMAT_RGBA16_UNORM=32859;Ve.TEXTUREFORMAT_R16_SNORM=36760;Ve.TEXTUREFORMAT_RG16_SNORM=36761;Ve.TEXTUREFORMAT_RGB16_SNORM=36762;Ve.TEXTUREFORMAT_RGBA16_SNORM=36763;Ve.TEXTUREFORMAT_RG=7;Ve.TEXTUREFORMAT_RED_INTEGER=8;Ve.TEXTUREFORMAT_R_INTEGER=8;Ve.TEXTUREFORMAT_RG_INTEGER=9;Ve.TEXTUREFORMAT_RGB_INTEGER=10;Ve.TEXTUREFORMAT_RGBA_INTEGER=11;Ve.TEXTURETYPE_UNSIGNED_BYTE=0;Ve.TEXTURETYPE_UNSIGNED_INT=0;Ve.TEXTURETYPE_FLOAT=1;Ve.TEXTURETYPE_HALF_FLOAT=2;Ve.TEXTURETYPE_BYTE=3;Ve.TEXTURETYPE_SHORT=4;Ve.TEXTURETYPE_UNSIGNED_SHORT=5;Ve.TEXTURETYPE_INT=6;Ve.TEXTURETYPE_UNSIGNED_INTEGER=7;Ve.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;Ve.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;Ve.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;Ve.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;Ve.TEXTURETYPE_UNSIGNED_INT_24_8=12;Ve.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;Ve.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;Ve.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;Ve.TEXTURE_NEAREST_SAMPLINGMODE=1;Ve.TEXTURE_BILINEAR_SAMPLINGMODE=2;Ve.TEXTURE_TRILINEAR_SAMPLINGMODE=3;Ve.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;Ve.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;Ve.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;Ve.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;Ve.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;Ve.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;Ve.TEXTURE_NEAREST_LINEAR=7;Ve.TEXTURE_NEAREST_NEAREST=1;Ve.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;Ve.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;Ve.TEXTURE_LINEAR_LINEAR=2;Ve.TEXTURE_LINEAR_NEAREST=12;Ve.TEXTURE_EXPLICIT_MODE=0;Ve.TEXTURE_SPHERICAL_MODE=1;Ve.TEXTURE_PLANAR_MODE=2;Ve.TEXTURE_CUBIC_MODE=3;Ve.TEXTURE_PROJECTION_MODE=4;Ve.TEXTURE_SKYBOX_MODE=5;Ve.TEXTURE_INVCUBIC_MODE=6;Ve.TEXTURE_EQUIRECTANGULAR_MODE=7;Ve.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;Ve.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;Ve.SCALEMODE_FLOOR=1;Ve.SCALEMODE_NEAREST=2;Ve.SCALEMODE_CEILING=3});var ZP,_i,la=I(()=>{Gt();ke();Vt();hi();Ni();un();br();ZP=class{constructor(){this._doNotSerialize=!1,this._isDisposed=!1,this._sceneRootNodesIndex=-1,this._isEnabled=!0,this._isParentEnabled=!0,this._isReady=!0,this._onEnabledStateChangedObservable=new ie,this._onClonedObservable=new ie,this._inheritVisibility=!1,this._isVisible=!0}},_i=class n{static AddNodeConstructor(e,t){this._NodeConstructors[e]=t}static Construct(e,t,i,r){let s=this._NodeConstructors[e];return s?s(t,i,r):null}set accessibilityTag(e){this._accessibilityTag=e,this.onAccessibilityTagChangedObservable.notifyObservers(e)}get accessibilityTag(){return this._accessibilityTag}get doNotSerialize(){return this._nodeDataStorage._doNotSerialize?!0:this._parentNode?this._parentNode.doNotSerialize:!1}set doNotSerialize(e){this._nodeDataStorage._doNotSerialize=e}isDisposed(){return this._nodeDataStorage._isDisposed}set parent(e){if(this._parentNode===e)return;let t=this._parentNode;if(this._parentNode&&this._parentNode._children!==void 0&&this._parentNode._children!==null){let i=this._parentNode._children.indexOf(this);i!==-1&&this._parentNode._children.splice(i,1),!e&&!this._nodeDataStorage._isDisposed&&this._addToSceneRootNodes()}this._parentNode=e,this._isDirty=!0,this._parentNode&&((this._parentNode._children===void 0||this._parentNode._children===null)&&(this._parentNode._children=new Array),this._parentNode._children.push(this),t||this._removeFromSceneRootNodes()),this._syncParentEnabledState()}get parent(){return this._parentNode}get inheritVisibility(){return this._nodeDataStorage._inheritVisibility}set inheritVisibility(e){this._nodeDataStorage._inheritVisibility=e}get isVisible(){return this.inheritVisibility&&this._parentNode&&!this._parentNode.isVisible?!1:this._nodeDataStorage._isVisible}set isVisible(e){this._nodeDataStorage._isVisible=e}_serializeAsParent(e){e.parentId=this.uniqueId}_addToSceneRootNodes(){this._nodeDataStorage._sceneRootNodesIndex===-1&&(this._nodeDataStorage._sceneRootNodesIndex=this._scene.rootNodes.length,this._scene.rootNodes.push(this))}_removeFromSceneRootNodes(){if(this._nodeDataStorage._sceneRootNodesIndex!==-1){let e=this._scene.rootNodes,t=e.length-1;e[this._nodeDataStorage._sceneRootNodesIndex]=e[t],e[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex=this._nodeDataStorage._sceneRootNodesIndex,this._scene.rootNodes.pop(),this._nodeDataStorage._sceneRootNodesIndex=-1}}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}getClassName(){return"Node"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onEnabledStateChangedObservable(){return this._nodeDataStorage._onEnabledStateChangedObservable}get onClonedObservable(){return this._nodeDataStorage._onClonedObservable}constructor(e,t=null,i=!0){this._isDirty=!1,this._nodeDataStorage=new ZP,this.state="",this.metadata=null,this.reservedDataStore=null,this._accessibilityTag=null,this.onAccessibilityTagChangedObservable=new ie,this._parentContainer=null,this.animations=[],this._ranges={},this.onReady=null,this._currentRenderId=-1,this._parentUpdateId=-1,this._childUpdateId=-1,this._waitingParentId=null,this._waitingParentInstanceIndex=null,this._waitingParsedUniqueId=null,this._cache={},this._parentNode=null,this._children=null,this._worldMatrix=q.Identity(),this._worldMatrixDeterminant=0,this._worldMatrixDeterminantIsDirty=!0,this._animationPropertiesOverride=null,this._isNode=!0,this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._behaviors=new Array,this.name=e,this.id=e,this._scene=t||Oe.LastCreatedScene,this.uniqueId=this._scene.getUniqueId(),this._initCache(),i&&this._addToSceneRootNodes()}getScene(){return this._scene}getEngine(){return this._scene.getEngine()}addBehavior(e,t=!1){return this._behaviors.indexOf(e)!==-1?this:(e.init(),this._scene.isLoading&&!t?this._scene.onDataLoadedObservable.addOnce(()=>{this._behaviors.includes(e)&&e.attach(this)}):e.attach(this),this._behaviors.push(e),this)}removeBehavior(e){let t=this._behaviors.indexOf(e);return t===-1?this:(this._behaviors[t].detach(),this._behaviors.splice(t,1),this)}get behaviors(){return this._behaviors}getBehaviorByName(e){for(let t of this._behaviors)if(t.name===e)return t;return null}getWorldMatrix(){return this._currentRenderId!==this._scene.getRenderId()&&this.computeWorldMatrix(),this._worldMatrix}_getWorldMatrixDeterminant(){return this._worldMatrixDeterminantIsDirty&&(this._worldMatrixDeterminantIsDirty=!1,this._worldMatrixDeterminant=this._worldMatrix.determinant()),this._worldMatrixDeterminant}get worldMatrixFromCache(){return this._worldMatrix}_initCache(){this._cache={}}updateCache(e){!e&&this.isSynchronized()||this._updateCache()}_getActionManagerForTrigger(e,t=!0){return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_updateCache(e){}_isSynchronized(){return!0}_markSyncedWithParent(){this._parentNode&&(this._parentUpdateId=this._parentNode._childUpdateId)}isSynchronizedWithParent(){return this._parentNode?this._parentNode._isDirty||this._parentUpdateId!==this._parentNode._childUpdateId?!1:this._parentNode.isSynchronized():!0}isSynchronized(){return this._parentNode&&!this.isSynchronizedWithParent()?!1:this._isSynchronized()}isReady(e=!1){return this._nodeDataStorage._isReady}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,this._isDirty=!0,this}isEnabled(e=!0){return e===!1?this._nodeDataStorage._isEnabled:this._nodeDataStorage._isEnabled?this._nodeDataStorage._isParentEnabled:!1}_syncParentEnabledState(){if(this._nodeDataStorage._isParentEnabled=this._parentNode?this._parentNode.isEnabled():!0,this._children)for(let e of this._children)e._syncParentEnabledState()}setEnabled(e){this._nodeDataStorage._isEnabled!==e&&(this._nodeDataStorage._isEnabled=e,this._syncParentEnabledState(),this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(e))}isDescendantOf(e){return this.parent?this.parent===e?!0:this.parent.isDescendantOf(e):!1}_getDescendants(e,t=!1,i){if(this._children)for(let r=0;r(!t||t(r))&&r.cullingStrategy!==void 0),i}getChildren(e,t=!0){return this.getDescendants(t,e)}_setReady(e){if(e!==this._nodeDataStorage._isReady){if(!e){this._nodeDataStorage._isReady=!1;return}this.onReady&&this.onReady(this),this._nodeDataStorage._isReady=!0}}getAnimationByName(e){for(let t=0;tnew n(e,this.getScene()),this);if(t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;a{throw Qe("AnimationRange")};_i._NodeConstructors={};P([F()],_i.prototype,"name",void 0);P([F()],_i.prototype,"id",void 0);P([F()],_i.prototype,"uniqueId",void 0);P([F()],_i.prototype,"state",void 0);P([F()],_i.prototype,"metadata",void 0)});function QP(n,e,t){try{let i=n.next();i.done?e(i):i.value?i.value.then(()=>{i.value=void 0,e(i)},t):e(i)}catch(i){t(i)}}function PW(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{QP(t,i,r)},0)):QP(t,i,r)}}function DW(n,e,t,i,r){let s=()=>{let a,o=l=>{l.done?t(l.value):a===void 0?a=!0:s()};do a=void 0,!r||!r.aborted?e(n,o,i):i(new Error("Aborted")),a===void 0&&(a=!1);while(a)};s()}function kg(n,e){let t;return DW(n,QP,i=>t=i,i=>{throw i},e),t}async function LW(n,e,t){return await new Promise((i,r)=>{DW(n,e,i,r,t)})}function OW(n,e){return(...t)=>kg(n(...t),e)}var $P=I(()=>{});var mt,_l=I(()=>{Gt();Vt();So();yi();hi();ke();la();Pt();Yi();un();_m();VA();br();mt=class n extends _i{get position(){return this._position}set position(e){this._position=e}set upVector(e){this._upVector=e}get upVector(){return this._upVector}get screenArea(){var i,r,s,a;let e,t;if(this.mode===n.PERSPECTIVE_CAMERA)this.fovMode===n.FOVMODE_VERTICAL_FIXED?(t=this.minZ*2*Math.tan(this.fov/2),e=this.getEngine().getAspectRatio(this)*t):(e=this.minZ*2*Math.tan(this.fov/2),t=e/this.getEngine().getAspectRatio(this));else{let o=this.getEngine().getRenderWidth()/2,l=this.getEngine().getRenderHeight()/2;e=((i=this.orthoRight)!=null?i:o)-((r=this.orthoLeft)!=null?r:-o),t=((s=this.orthoTop)!=null?s:l)-((a=this.orthoBottom)!=null?a:-l)}return e*t}set orthoLeft(e){this._orthoLeft=e;for(let t of this._rigCameras)t.orthoLeft=e}get orthoLeft(){return this._orthoLeft}set orthoRight(e){this._orthoRight=e;for(let t of this._rigCameras)t.orthoRight=e}get orthoRight(){return this._orthoRight}set orthoBottom(e){this._orthoBottom=e;for(let t of this._rigCameras)t.orthoBottom=e}get orthoBottom(){return this._orthoBottom}set orthoTop(e){this._orthoTop=e;for(let t of this._rigCameras)t.orthoTop=e}get orthoTop(){return this._orthoTop}setFocalLength(e,t=36){this.fov=2*Math.atan(t/(2*e))}set mode(e){this._mode=e;for(let t of this._rigCameras)t.mode=e}get mode(){return this._mode}get hasMoved(){return this._hasMoved}constructor(e,t,i,r=!0){super(e,i,!1),this._position=b.Zero(),this._upVector=b.Up(),this.oblique=null,this._orthoLeft=null,this._orthoRight=null,this._orthoBottom=null,this._orthoTop=null,this.fov=.8,this.projectionPlaneTilt=0,this.minZ=1,this.maxZ=1e4,this.inertia=.9,this._mode=n.PERSPECTIVE_CAMERA,this.isIntermediate=!1,this.viewport=new go(0,0,1,1),this.layerMask=268435455,this.fovMode=n.FOVMODE_VERTICAL_FIXED,this.cameraRigMode=n.RIG_MODE_NONE,this.ignoreCameraMaxZ=!1,this.customRenderTargets=[],this.outputRenderTarget=null,this.onViewMatrixChangedObservable=new ie,this.onProjectionMatrixChangedObservable=new ie,this.onAfterCheckInputsObservable=new ie,this.onRestoreStateObservable=new ie,this.isRigCamera=!1,this._hasMoved=!1,this._rigCameras=new Array,this._skipRendering=!1,this._projectionMatrix=new q,this._postProcesses=new Array,this._activeMeshes=new Vi(256),this._globalPosition=b.Zero(),this._computedViewMatrix=q.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=q.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=Xe.Identity(),this._isCamera=!0,this._isLeftCamera=!1,this._isRightCamera=!1,this.layerMask=this.getScene().defaultCameraLayerMask,this.getScene().addCamera(this),r&&!this.getScene().activeCamera&&(this.getScene().activeCamera=this),this.position=t,this.renderPassId=this.getScene().getEngine().createRenderPassId(`Camera ${e}`)}storeState(){return this._stateStored=!0,this._storedFov=this.fov,this}hasStateStored(){return!!this._stateStored}_restoreStateValues(){return this._stateStored?(this.fov=this._storedFov,!0):!1}restoreState(){return this._restoreStateValues()?(this.onRestoreStateObservable.notifyObservers(this),!0):!1}getClassName(){return"Camera"}toString(e){let t="Name: "+this.name;if(t+=", type: "+this.getClassName(),this.animations)for(let i=0;i-1?(ee.Error("You're trying to reuse a post process not defined as reusable."),0):(t==null||t<0?this._postProcesses.push(e):this._postProcesses[t]===null?this._postProcesses[t]=e:this._postProcesses.splice(t,0,e),this._cascadePostProcessesToRigCams(),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._postProcesses.indexOf(e))}detachPostProcess(e){let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses[t]=null),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._cascadePostProcessesToRigCams()}getWorldMatrix(){return this._isSynchronizedViewMatrix()?this._worldMatrix:(this.getViewMatrix(),this._worldMatrix)}_getViewMatrix(){return q.Identity()}getViewMatrix(e){return!e&&this._isSynchronizedViewMatrix()?this._computedViewMatrix:(this._hasMoved=!0,this.updateCache(),this._computedViewMatrix=this._getViewMatrix(),this._currentRenderId=this.getScene().getRenderId(),this._childUpdateId++,this._refreshFrustumPlanes=!0,this._cameraRigParams&&this._cameraRigParams.vrPreViewMatrix&&this._computedViewMatrix.multiplyToRef(this._cameraRigParams.vrPreViewMatrix,this._computedViewMatrix),this.parent&&this.parent.onViewMatrixChangedObservable&&this.parent.onViewMatrixChangedObservable.notifyObservers(this.parent),this.onViewMatrixChangedObservable.notifyObservers(this),this._computedViewMatrix.invertToRef(this._worldMatrix),this._worldMatrix.getTranslationToRef(this._globalPosition),this._computedViewMatrix)}freezeProjectionMatrix(e){this._doNotComputeProjectionMatrix=!0,e!==void 0&&(this._projectionMatrix=e)}unfreezeProjectionMatrix(){this._doNotComputeProjectionMatrix=!1}getProjectionMatrix(e){var a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E,T,R,M;if(this._doNotComputeProjectionMatrix||!e&&this._isSynchronizedProjectionMatrix())return this._projectionMatrix;let t=this.ignoreCameraMaxZ?0:this.maxZ;this._cache.mode=this.mode,this._cache.minZ=this.minZ,this._cache.maxZ=t,this._refreshFrustumPlanes=!0;let i=this.getEngine(),r=this.getScene(),s=i.useReverseDepthBuffer;if(this.mode===n.PERSPECTIVE_CAMERA){this._cache.fov=this.fov,this._cache.fovMode=this.fovMode,this._cache.aspectRatio=i.getAspectRatio(this),this._cache.projectionPlaneTilt=this.projectionPlaneTilt,this.minZ<=0&&(this.minZ=.1);let y;r.useRightHandedSystem?y=q.PerspectiveFovRHToRef:y=q.PerspectiveFovLHToRef,y(this.fov,i.getAspectRatio(this),s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,this.fovMode===n.FOVMODE_VERTICAL_FIXED,i.isNDCHalfZRange,this.projectionPlaneTilt,s)}else{let y=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?q.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-y,(o=this.orthoRight)!=null?o:y,(l=this.orthoBottom)!=null?l:-C,(c=this.orthoTop)!=null?c:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):q.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-y,(d=this.orthoRight)!=null?d:y,(h=this.orthoBottom)!=null?h:-C,(u=this.orthoTop)!=null?u:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?q.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-y,(_=this.orthoRight)!=null?_:y,(p=this.orthoBottom)!=null?p:-C,(g=this.orthoTop)!=null?g:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):q.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-y,(x=this.orthoRight)!=null?x:y,(S=this.orthoBottom)!=null?S:-C,(E=this.orthoTop)!=null?E:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange),this._cache.orthoLeft=this.orthoLeft,this._cache.orthoRight=this.orthoRight,this._cache.orthoBottom=this.orthoBottom,this._cache.orthoTop=this.orthoTop,this._cache.obliqueAngle=(T=this.oblique)==null?void 0:T.angle,this._cache.obliqueLength=(R=this.oblique)==null?void 0:R.length,this._cache.obliqueOffset=(M=this.oblique)==null?void 0:M.offset,this._cache.renderWidth=i.getRenderWidth(),this._cache.renderHeight=i.getRenderHeight()}return this.onProjectionMatrixChangedObservable.notifyObservers(this),this._projectionMatrix}getTransformationMatrix(){return this._computedViewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._transformMatrix}_computeObliqueDistance(e){let t=this,i=this;return(t.radius||(i.target?b.Distance(this.position,i.target):this.position.length()))+e}_updateFrustumPlanes(){this._refreshFrustumPlanes&&(this.getTransformationMatrix(),this._frustumPlanes?pf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=pf.GetPlanes(this._transformMatrix),this._refreshFrustumPlanes=!1)}isInFrustum(e,t=!1){if(this._updateFrustumPlanes(),t&&this.rigCameras.length>0){let i=!1;for(let r of this.rigCameras)r._updateFrustumPlanes(),i=i||e.isInFrustum(r._frustumPlanes);return i}else return e.isInFrustum(this._frustumPlanes)}isCompletelyInFrustum(e){return this._updateFrustumPlanes(),e.isCompletelyInFrustum(this._frustumPlanes)}getForwardRay(e=100,t,i){throw Qe("Ray")}getForwardRayToRef(e,t=100,i,r){throw Qe("Ray")}dispose(e,t=!1){for(this.onViewMatrixChangedObservable.clear(),this.onProjectionMatrixChangedObservable.clear(),this.onAfterCheckInputsObservable.clear(),this.onRestoreStateObservable.clear(),this.inputs&&this.inputs.clear(),this.getScene().stopAnimation(this),this.getScene().removeCamera(this);this._rigCameras.length>0;){let r=this._rigCameras.pop();r&&r.dispose()}if(this._parentContainer){let r=this._parentContainer.cameras.indexOf(this);r>-1&&this._parentContainer.cameras.splice(r,1),this._parentContainer=null}if(this._rigPostProcess)this._rigPostProcess.dispose(this),this._rigPostProcess=null,this._postProcesses.length=0;else if(this.cameraRigMode!==n.RIG_MODE_NONE)this._rigPostProcess=null,this._postProcesses.length=0;else{let r=this._postProcesses.length;for(;--r>=0;){let s=this._postProcesses[r];s&&s.dispose(this)}}let i=this.customRenderTargets.length;for(;--i>=0;)this.customRenderTargets[i].dispose();this.customRenderTargets.length=0,this._activeMeshes.dispose(),this.getScene().getEngine().releaseRenderPassId(this.renderPassId),super.dispose(e,t)}get isLeftCamera(){return this._isLeftCamera}get isRightCamera(){return this._isRightCamera}get leftCamera(){return this._rigCameras.length<1?null:this._rigCameras[0]}get rightCamera(){return this._rigCameras.length<2?null:this._rigCameras[1]}getLeftTarget(){return this._rigCameras.length<1?null:this._rigCameras[0].getTarget()}getRightTarget(){return this._rigCameras.length<2?null:this._rigCameras[1].getTarget()}setCameraRigMode(e,t){if(this.cameraRigMode!==e){for(;this._rigCameras.length>0;){let i=this._rigCameras.pop();i&&i.dispose()}if(this.cameraRigMode=e,this._cameraRigParams={},this._cameraRigParams.interaxialDistance=t.interaxialDistance||.0637,this._cameraRigParams.stereoHalfAngle=_e.ToRadians(this._cameraRigParams.interaxialDistance/.0637),this.cameraRigMode!==n.RIG_MODE_NONE){let i=this.createRigCamera(this.name+"_L",0);i&&(i._isLeftCamera=!0);let r=this.createRigCamera(this.name+"_R",1);r&&(r._isRightCamera=!0),i&&r&&(this._rigCameras.push(i),this._rigCameras.push(r))}this._setRigMode(t),this._cascadePostProcessesToRigCams(),this.update()}}_setRigMode(e){}_getVRProjectionMatrix(){return q.PerspectiveFovLHToRef(this._cameraRigParams.vrMetrics.aspectRatioFov,this._cameraRigParams.vrMetrics.aspectRatio,this.minZ,this.ignoreCameraMaxZ?0:this.maxZ,this._cameraRigParams.vrWorkMatrix,!0,this.getEngine().isNDCHalfZRange),this._cameraRigParams.vrWorkMatrix.multiplyToRef(this._cameraRigParams.vrHMatrix,this._projectionMatrix),this._projectionMatrix}setCameraRigParameter(e,t){this._cameraRigParams||(this._cameraRigParams={}),this._cameraRigParams[e]=t,e==="interaxialDistance"&&(this._cameraRigParams.stereoHalfAngle=_e.ToRadians(t/.0637))}createRigCamera(e,t){return null}_updateRigCameras(){for(let e=0;en._CreateDefaultParsedCamera(t,i))}computeWorldMatrix(){return this.getWorldMatrix()}static Parse(e,t){let i=e.type,r=n.GetConstructorFromName(i,e.name,t,e.interaxial_distance,e.isStereoscopicSideBySide),s=it.Parse(r,e,t);if(e.parentId!==void 0&&(s._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(s._waitingParentInstanceIndex=e.parentInstanceIndex),s.inputs&&(s.inputs.parse(e),s._setupInputs()),e.upVector&&(s.upVector=b.FromArray(e.upVector)),s.setPosition&&(s.position.copyFromFloats(0,0,0),s.setPosition(b.FromArray(e.position))),e.target&&s.setTarget&&s.setTarget(b.FromArray(e.target)),e.cameraRigMode){let a=e.interaxial_distance?{interaxialDistance:e.interaxial_distance}:{};s.setCameraRigMode(e.cameraRigMode,a)}if(e.animations){for(let a=0;a{throw Qe("UniversalCamera")};mt.PERSPECTIVE_CAMERA=0;mt.ORTHOGRAPHIC_CAMERA=1;mt.FOVMODE_VERTICAL_FIXED=0;mt.FOVMODE_HORIZONTAL_FIXED=1;mt.RIG_MODE_NONE=0;mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;mt.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;mt.RIG_MODE_STEREOSCOPIC_INTERLACED=14;mt.RIG_MODE_VR=20;mt.RIG_MODE_CUSTOM=22;mt.ForceAttachControlToAlwaysPreventDefault=!1;P([Xr("position")],mt.prototype,"_position",void 0);P([Xr("upVector")],mt.prototype,"_upVector",void 0);P([F()],mt.prototype,"orthoLeft",null);P([F()],mt.prototype,"orthoRight",null);P([F()],mt.prototype,"orthoBottom",null);P([F()],mt.prototype,"orthoTop",null);P([F()],mt.prototype,"fov",void 0);P([F()],mt.prototype,"projectionPlaneTilt",void 0);P([F()],mt.prototype,"minZ",void 0);P([F()],mt.prototype,"maxZ",void 0);P([F()],mt.prototype,"inertia",void 0);P([F()],mt.prototype,"mode",null);P([F()],mt.prototype,"layerMask",void 0);P([F()],mt.prototype,"fovMode",void 0);P([F()],mt.prototype,"cameraRigMode",void 0);P([F()],mt.prototype,"interaxialDistance",void 0);P([F()],mt.prototype,"isStereoscopicSideBySide",void 0);P([F()],mt.prototype,"ignoreCameraMaxZ",void 0)});var ph,JP=I(()=>{ph=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var If,eD=I(()=>{ol();ke();Un();If=class n{constructor(e,t,i){this.vectors=mn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=mn(3,b.Zero),this.vectorsWorld=mn(8,b.Zero),this.minimumWorld=b.Zero(),this.maximumWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this._drawWrapperFront=null,this._drawWrapperBack=null,this.reConstruct(e,t,i)}reConstruct(e,t,i){let r=e.x,s=e.y,a=e.z,o=t.x,l=t.y,c=t.z,f=this.vectors;this.minimum.copyFromFloats(r,s,a),this.maximum.copyFromFloats(o,l,c),f[0].copyFromFloats(r,s,a),f[1].copyFromFloats(o,l,c),f[2].copyFromFloats(o,s,a),f[3].copyFromFloats(r,l,a),f[4].copyFromFloats(r,s,c),f[5].copyFromFloats(o,l,a),f[6].copyFromFloats(r,l,c),f[7].copyFromFloats(o,s,c),t.addToRef(e,this.center).scaleInPlace(.5),t.subtractToRef(e,this.extendSize).scaleInPlace(.5),this._worldMatrix=i||q.IdentityReadOnly,this._update(this._worldMatrix)}scale(e){let t=n._TmpVector3,i=this.maximum.subtractToRef(this.minimum,t[0]),r=i.length();i.normalizeFromLength(r);let s=r*e,a=i.scaleInPlace(s*.5),o=this.center.subtractToRef(a,t[1]),l=this.center.addToRef(a,t[2]);return this.reConstruct(o,l,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){let t=this.minimumWorld,i=this.maximumWorld,r=this.directions,s=this.vectorsWorld,a=this.vectors;if(e.isIdentity()){t.copyFrom(this.minimum),i.copyFrom(this.maximum);for(let o=0;o<8;++o)s[o].copyFrom(a[o]);this.extendSizeWorld.copyFrom(this.extendSize),this.centerWorld.copyFrom(this.center)}else{t.setAll(Number.MAX_VALUE),i.setAll(-Number.MAX_VALUE);for(let o=0;o<8;++o){let l=s[o];b.TransformCoordinatesToRef(a[o],e,l),t.minimizeInPlace(l),i.maximizeInPlace(l)}i.subtractToRef(t,this.extendSizeWorld).scaleInPlace(.5),i.addToRef(t,this.centerWorld).scaleInPlace(.5)}b.FromArrayToRef(e.m,0,r[0]),b.FromArrayToRef(e.m,4,r[1]),b.FromArrayToRef(e.m,8,r[2]),this._worldMatrix=e}isInFrustum(e){return n.IsInFrustum(this.vectorsWorld,e)}isCompletelyInFrustum(e){return n.IsCompletelyInFrustum(this.vectorsWorld,e)}intersectsPoint(e){let t=this.minimumWorld,i=this.maximumWorld,r=t.x,s=t.y,a=t.z,o=i.x,l=i.y,c=i.z,f=e.x,d=e.y,h=e.z,u=-Nt;return!(o-ff-r||l-dd-s||c-hh-a)}intersectsSphere(e){return n.IntersectsSphere(this.minimumWorld,this.maximumWorld,e.centerWorld,e.radiusWorld)}intersectsMinMax(e,t){let i=this.minimumWorld,r=this.maximumWorld,s=i.x,a=i.y,o=i.z,l=r.x,c=r.y,f=r.z,d=e.x,h=e.y,u=e.z,m=t.x,_=t.y,p=t.z;return!(lm||c_||fp)}dispose(){var e,t;(e=this._drawWrapperFront)==null||e.dispose(),(t=this._drawWrapperBack)==null||t.dispose()}static Intersects(e,t){return e.intersectsMinMax(t.minimumWorld,t.maximumWorld)}static IntersectsSphere(e,t,i,r){let s=n._TmpVector3[0];return b.ClampToRef(i,e,t,s),b.DistanceSquared(i,s)<=r*r}static IsCompletelyInFrustum(e,t){for(let i=0;i<6;++i){let r=t[i];for(let s=0;s<8;++s)if(r.dotCoordinate(e[s])<0)return!1}return!0}static IsInFrustum(e,t){for(let i=0;i<6;++i){let r=!0,s=t[i];for(let a=0;a<8;++a)if(s.dotCoordinate(e[a])>=0){r=!1;break}if(r)return!1}return!0}};If._TmpVector3=mn(3,b.Zero)});var Dm,NW=I(()=>{ol();ke();Dm=class n{constructor(e,t,i){this.center=b.Zero(),this.centerWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this.reConstruct(e,t,i)}reConstruct(e,t,i){this.minimum.copyFrom(e),this.maximum.copyFrom(t);let r=b.Distance(e,t);t.addToRef(e,this.center).scaleInPlace(.5),this.radius=r*.5,this._update(i||q.IdentityReadOnly)}scale(e){let t=this.radius*e,i=n._TmpVector3,r=i[0].setAll(t),s=this.center.subtractToRef(r,i[1]),a=this.center.addToRef(r,i[2]);return this.reConstruct(s,a,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){if(e.isIdentity())this.centerWorld.copyFrom(this.center),this.radiusWorld=this.radius;else{b.TransformCoordinatesToRef(this.center,e,this.centerWorld);let t=n._TmpVector3[0];b.TransformNormalFromFloatsToRef(1,1,1,e,t),this.radiusWorld=Math.max(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z))*this.radius}}isInFrustum(e){let t=this.centerWorld,i=this.radiusWorld;for(let r=0;r<6;r++)if(e[r].dotCoordinate(t)<=-i)return!1;return!0}isCenterInFrustum(e){let t=this.centerWorld;for(let i=0;i<6;i++)if(e[i].dotCoordinate(t)<0)return!1;return!0}intersectsPoint(e){let t=b.DistanceSquared(this.centerWorld,e);return!(this.radiusWorld*this.radiusWorld{ol();ke();eD();NW();tD={min:0,max:0},iD={min:0,max:0},wW=(n,e,t)=>{let i=b.Dot(e.centerWorld,n),r=Math.abs(b.Dot(e.directions[0],n))*e.extendSize.x,s=Math.abs(b.Dot(e.directions[1],n))*e.extendSize.y,a=Math.abs(b.Dot(e.directions[2],n))*e.extendSize.z,o=r+s+a;t.min=i-o,t.max=i+o},ds=(n,e,t)=>(wW(n,e,tD),wW(n,t,iD),!(tD.min>iD.max||iD.min>tD.max)),pn=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new If(e,t,i),this.boundingSphere=new Dm(e,t,i)}reConstruct(e,t,i){this.boundingBox.reConstruct(e,t,i),this.boundingSphere.reConstruct(e,t,i)}get minimum(){return this.boundingBox.minimum}get maximum(){return this.boundingBox.maximum}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e}update(e){this._isLocked||(this.boundingBox._update(e),this.boundingSphere._update(e))}centerOn(e,t){let i=n._TmpVector3[0].copyFrom(e).subtractInPlace(t),r=n._TmpVector3[1].copyFrom(e).addInPlace(t);return this.boundingBox.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this.boundingSphere.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this}encapsulate(e){let t=b.Minimize(this.minimum,e),i=b.Maximize(this.maximum,e);return this.reConstruct(t,i,this.boundingBox.getWorldMatrix()),this}encapsulateBoundingInfo(e){let t=$.Matrix[0];this.boundingBox.getWorldMatrix().invertToRef(t);let i=$.Vector3[0];return b.TransformCoordinatesToRef(e.boundingBox.minimumWorld,t,i),this.encapsulate(i),b.TransformCoordinatesToRef(e.boundingBox.maximumWorld,t,i),this.encapsulate(i),this}scale(e){return this.boundingBox.scale(e),this.boundingSphere.scale(e),this}isInFrustum(e,t=0){return(t===2||t===3)&&this.boundingSphere.isCenterInFrustum(e)?!0:this.boundingSphere.isInFrustum(e)?t===1||t===3?!0:this.boundingBox.isInFrustum(e):!1}get diagonalLength(){let e=this.boundingBox;return e.maximumWorld.subtractToRef(e.minimumWorld,n._TmpVector3[0]).length()}isCompletelyInFrustum(e){return this.boundingBox.isCompletelyInFrustum(e)}_checkCollision(e){return e._canDoCollision(this.boundingSphere.centerWorld,this.boundingSphere.radiusWorld,this.boundingBox.minimumWorld,this.boundingBox.maximumWorld)}intersectsPoint(e){return!(!this.boundingSphere.centerWorld||!this.boundingSphere.intersectsPoint(e)||!this.boundingBox.intersectsPoint(e))}intersects(e,t){if(!Dm.Intersects(this.boundingSphere,e.boundingSphere)||!If.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!ds(i.directions[0],i,r)||!ds(i.directions[1],i,r)||!ds(i.directions[2],i,r)||!ds(r.directions[0],i,r)||!ds(r.directions[1],i,r)||!ds(r.directions[2],i,r)||!ds(b.Cross(i.directions[0],r.directions[0]),i,r)||!ds(b.Cross(i.directions[0],r.directions[1]),i,r)||!ds(b.Cross(i.directions[0],r.directions[2]),i,r)||!ds(b.Cross(i.directions[1],r.directions[0]),i,r)||!ds(b.Cross(i.directions[1],r.directions[1]),i,r)||!ds(b.Cross(i.directions[1],r.directions[2]),i,r)||!ds(b.Cross(i.directions[2],r.directions[0]),i,r)||!ds(b.Cross(i.directions[2],r.directions[1]),i,r)||!ds(b.Cross(i.directions[2],r.directions[2]),i,r))}};pn._TmpVector3=mn(2,b.Zero)});function FW(n,e,t,i,r=null){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return Om.extractMinAndMaxIndexed(n,e,t,i,s,a),r&&(s.x-=s.x*r.x+r.y,s.y-=s.y*r.x+r.y,s.z-=s.z*r.x+r.y,a.x+=a.x*r.x+r.y,a.y+=a.y*r.x+r.y,a.z+=a.z*r.x+r.y),{minimum:s,maximum:a}}function Cx(n,e,t,i=null,r){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return r||(r=3),Om.extractMinAndMax(n,e,t,r,s,a),i&&(s.x-=s.x*i.x+i.y,s.y-=s.y*i.x+i.y,s.z-=s.z*i.x+i.y,a.x+=a.x*i.x+i.y,a.y+=a.y*i.x+i.y,a.z+=a.z*i.x+i.y),{minimum:s,maximum:a}}var Om,Px=I(()=>{Gt();ke();Vt();Om=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],Om,"extractMinAndMaxIndexed",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],Om,"extractMinAndMax",null)});var Us,Wg=I(()=>{Wi();JP();Lm();Px();oh();Us=class n{get materialDefines(){var t;let e=this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.defines:(t=this._getDrawWrapper())==null?void 0:t.defines;return typeof e=="string"?null:e}set materialDefines(e){var i;let t=(i=this._mainDrawWrapperOverride)!=null?i:this._getDrawWrapper(void 0,!0);t.defines=e}_getDrawWrapper(e,t=!1){e=e!=null?e:this._engine.currentRenderPassId;let i=this._drawWrappers[e];return!i&&t&&(this._drawWrappers[e]=i=new cs(this._mesh.getScene().getEngine())),i}_removeDrawWrapper(e,t=!0,i=!1){var r;t&&((r=this._drawWrappers[e])==null||r.dispose(i)),this._drawWrappers[e]=void 0}get effect(){var e,t;return this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.effect:(t=(e=this._getDrawWrapper())==null?void 0:e.effect)!=null?t:null}get _drawWrapper(){var e;return(e=this._mainDrawWrapperOverride)!=null?e:this._getDrawWrapper(void 0,!0)}get _drawWrapperOverride(){return this._mainDrawWrapperOverride}_setMainDrawWrapperOverride(e){this._mainDrawWrapperOverride=e}setEffect(e,t=null,i,r=!0){let s=this._drawWrapper;s.setEffect(e,t,r),i!==void 0&&(s.materialContext=i),e||(s.defines=null,s.materialContext=void 0)}resetDrawCache(e,t=!1){if(this._drawWrappers)if(e!==void 0){this._removeDrawWrapper(e,!0,t);return}else for(let i of this._drawWrappers)i==null||i.dispose(t);this._drawWrappers=[]}static AddToMesh(e,t,i,r,s,a,o,l=!0){return new n(e,t,i,r,s,a,o,l)}constructor(e,t,i,r,s,a,o,l=!0,c=!0){this.materialIndex=e,this.verticesStart=t,this.verticesCount=i,this.indexStart=r,this.indexCount=s,this._mainDrawWrapperOverride=null,this._linesIndexCount=0,this._linesIndexBuffer=null,this._lastColliderWorldVertices=null,this._lastColliderTransformMatrix=null,this._wasDispatched=!1,this._renderId=0,this._alphaIndex=0,this._distanceToCamera=0,this._currentMaterial=null,this._mesh=a,this._renderingMesh=o||a,c&&a.subMeshes.push(this),this._engine=this._mesh.getScene().getEngine(),this.resetDrawCache(),this._trianglePlanes=[],this._id=a.subMeshes.length-1,l&&(this.refreshBoundingInfo(),a.computeWorldMatrix(!0))}get IsGlobal(){return this.verticesStart===0&&this.verticesCount===this._mesh.getTotalVertices()&&this.indexStart===0&&this.indexCount===this._mesh.getTotalIndices()}getBoundingInfo(){return this.IsGlobal||this._mesh.hasThinInstances?this._mesh.getBoundingInfo():this._boundingInfo}setBoundingInfo(e){return this._boundingInfo=e,this}getMesh(){return this._mesh}getRenderingMesh(){return this._renderingMesh}getReplacementMesh(){return this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null}getEffectiveMesh(){let e=this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null;return e||this._renderingMesh}getMaterial(e=!0){var i;let t=(i=this._renderingMesh.getMaterialForRenderPass(this._engine.currentRenderPassId))!=null?i:this._renderingMesh.material;if(t){if(this._isMultiMaterial(t)){let r=t.getSubMaterial(this.materialIndex);return this._currentMaterial!==r&&(this._currentMaterial=r,this.resetDrawCache()),r}}else return e&&this._mesh.getScene()._hasDefaultMaterial?this._mesh.getScene().defaultMaterial:null;return t}_isMultiMaterial(e){return e.getSubMaterial!==void 0}refreshBoundingInfo(e=null){if(this._lastColliderWorldVertices=null,this.IsGlobal||!this._renderingMesh||!this._renderingMesh.geometry)return this;if(e||(e=this._renderingMesh.getVerticesData(D.PositionKind)),!e)return this._boundingInfo=this._mesh.getBoundingInfo(),this;let t=this._renderingMesh.getIndices(),i;if(this.indexStart===0&&this.indexCount===t.length){let r=this._renderingMesh.getBoundingInfo();i={minimum:r.minimum.clone(),maximum:r.maximum.clone()}}else i=FW(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new pn(i.minimum,i.maximum),this}_checkCollision(e){return this.getBoundingInfo()._checkCollision(e)}updateBoundingInfo(e){let t=this.getBoundingInfo();return t||(this.refreshBoundingInfo(),t=this.getBoundingInfo()),t&&t.update(e),this}isInFrustum(e){let t=this.getBoundingInfo();return t?t.isInFrustum(e,this._mesh.cullingStrategy):!1}isCompletelyInFrustum(e){let t=this.getBoundingInfo();return t?t.isCompletelyInFrustum(e):!1}render(e){return this._renderingMesh.render(this,e,this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:void 0),this}_getLinesIndexBuffer(e,t){if(!this._linesIndexBuffer){let i=Math.floor(this.indexCount/3)*6,s=this.verticesStart+this.verticesCount>65535?new Uint32Array(i):new Uint16Array(i),a=0;if(e.length===0)for(let o=this.indexStart;ol&&(l=h)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var Hg,ye,pr=I(()=>{Gt();ke();Wi();un();Ht();Pt();Vt();$P();pg();Wg();Hg=class{},ye=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=OW(this._applyToCoroutine.bind(this)),this.uniqueId=n._UniqueIdGenerator,n._UniqueIdGenerator++}set(e,t){switch(e.length||ee.Warn(`Setting vertex data kind '${t}' with an empty array`),t){case D.PositionKind:this.positions=e;break;case D.NormalKind:this.normals=e;break;case D.TangentKind:this.tangents=e;break;case D.UVKind:this.uvs=e;break;case D.UV2Kind:this.uvs2=e;break;case D.UV3Kind:this.uvs3=e;break;case D.UV4Kind:this.uvs4=e;break;case D.UV5Kind:this.uvs5=e;break;case D.UV6Kind:this.uvs6=e;break;case D.ColorKind:this.colors=e;break;case D.MatricesIndicesKind:this.matricesIndices=e;break;case D.MatricesWeightsKind:this.matricesWeights=e;break;case D.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case D.MatricesWeightsExtraKind:this.matricesWeightsExtra=e;break}}applyToMesh(e,t){return this._applyTo(e,t,!1),this}applyToGeometry(e,t){return this._applyTo(e,t,!1),this}updateMesh(e){return this._update(e),this}updateGeometry(e){return this._update(e),this}*_applyToCoroutine(e,t=!1,i){if(this.positions&&(e.setVerticesData(D.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(D.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(D.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(D.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(D.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(D.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(D.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(D.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(D.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(D.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(D.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(D.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(D.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(D.MatricesWeightsExtraKind,this.matricesWeightsExtra,t),i&&(yield)),this.indices?(e.setIndices(this.indices,null,t),i&&(yield)):e.setIndices([],null),e.subMeshes&&this.materialInfos&&this.materialInfos.length>1){let r=e;r.subMeshes=[];for(let s of this.materialInfos)new Us(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(D.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(D.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(D.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(D.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(D.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(D.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(D.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(D.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(D.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(D.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(D.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(D.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(D.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(D.MatricesWeightsExtraKind,this.matricesWeightsExtra,t,i),this.indices&&e.setIndices(this.indices,null),this}static _TransformVector3Coordinates(e,t,i=0,r=e.length){let s=$.Vector3[0],a=$.Vector3[1];for(let o=i;o({vertexData:o})):[{vertexData:e}];return kg(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var u,m,_,p;this._validate();let l=t.map(g=>g.vertexData),c=this;if(o)for(let g of l)g&&(g._validate(),!this.normals&&g.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&g.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&g.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&g.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&g.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&g.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&g.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&g.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&g.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&g.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&g.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&g.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&g.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let g of l)if(g){if(o)this.normals&&!g.normals&&(g.normals=new Float32Array(g.positions.length)),this.tangents&&!g.tangents&&(g.tangents=new Float32Array(g.positions.length/3*4)),this.uvs&&!g.uvs&&(g.uvs=new Float32Array(g.positions.length/3*2)),this.uvs2&&!g.uvs2&&(g.uvs2=new Float32Array(g.positions.length/3*2)),this.uvs3&&!g.uvs3&&(g.uvs3=new Float32Array(g.positions.length/3*2)),this.uvs4&&!g.uvs4&&(g.uvs4=new Float32Array(g.positions.length/3*2)),this.uvs5&&!g.uvs5&&(g.uvs5=new Float32Array(g.positions.length/3*2)),this.uvs6&&!g.uvs6&&(g.uvs6=new Float32Array(g.positions.length/3*2)),this.colors&&!g.colors&&(g.colors=new Float32Array(g.positions.length/3*4),g.colors.fill(1)),this.matricesIndices&&!g.matricesIndices&&(g.matricesIndices=new Float32Array(g.positions.length/3*4)),this.matricesWeights&&!g.matricesWeights&&(g.matricesWeights=new Float32Array(g.positions.length/3*4)),this.matricesIndicesExtra&&!g.matricesIndicesExtra&&(g.matricesIndicesExtra=new Float32Array(g.positions.length/3*4)),this.matricesWeightsExtra&&!g.matricesWeightsExtra&&(g.matricesWeightsExtra=new Float32Array(g.positions.length/3*4));else if(g._validate(),!this.normals!=!g.normals||!this.tangents!=!g.tangents||!this.uvs!=!g.uvs||!this.uvs2!=!g.uvs2||!this.uvs3!=!g.uvs3||!this.uvs4!=!g.uvs4||!this.uvs5!=!g.uvs5||!this.uvs6!=!g.uvs6||!this.colors!=!g.colors||!this.matricesIndices!=!g.matricesIndices||!this.matricesWeights!=!g.matricesWeights||!this.matricesIndicesExtra!=!g.matricesIndicesExtra||!this.matricesWeightsExtra!=!g.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let g,v=0,x=0,S=[],E=null,T=[];for(let M of this.splitBasedOnMaterialID())T.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let y of M.vertexData.splitBasedOnMaterialID())T.push({vertexData:y,transform:M.transform});T.sort((M,y)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,L=y.vertexData.materialInfos?y.vertexData.materialInfos[0].materialIndex:0;return C>L?1:C===L?0:-1});for(let M of T){let y=M.vertexData;if(y.materialInfos?g=y.materialInfos[0].materialIndex:g=0,E&&E.materialIndex===g)E.indexCount+=y.indices.length,E.verticesCount+=y.positions.length/3;else{let C=new Hg;C.materialIndex=g,C.indexStart=v,C.indexCount=y.indices.length,C.verticesStart=x,C.verticesCount=y.positions.length/3,S.push(C),E=C}v+=y.indices.length,x+=y.positions.length/3}let R=T.splice(0,1)[0];c=R.vertexData,e=R.transform,l=T.map(M=>M.vertexData),t=T,this.materialInfos=S}let f=l.reduce((g,v)=>{var x,S;return g+((S=(x=v.indices)==null?void 0:x.length)!=null?S:0)},(m=(u=c.indices)==null?void 0:u.length)!=null?m:0),h=s||l.some(g=>g.indices===c.indices)?(_=c.indices)==null?void 0:_.slice():c.indices;if(f>0){let g=(p=h==null?void 0:h.length)!=null?p:0;if(h||(h=new Array(f)),h.length!==f){if(Array.isArray(h))h.length=f;else{let x=i||h instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);x.set(h),h=x}e&&e.determinant()<0&&n._FlipFaces(h,0,g)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:x,transform:S}of t)if(x.indices){for(let E=0;E[g.vertexData.positions,g.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(D.NormalKind,c.normals,e,t.map(g=>[g.vertexData.normals,g.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(D.TangentKind,c.tangents,e,t.map(g=>[g.vertexData.tangents,g.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(D.UVKind,c.uvs,e,t.map(g=>[g.vertexData.uvs,g.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(D.UV2Kind,c.uvs2,e,t.map(g=>[g.vertexData.uvs2,g.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(D.UV3Kind,c.uvs3,e,t.map(g=>[g.vertexData.uvs3,g.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(D.UV4Kind,c.uvs4,e,t.map(g=>[g.vertexData.uvs4,g.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(D.UV5Kind,c.uvs5,e,t.map(g=>[g.vertexData.uvs5,g.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(D.UV6Kind,c.uvs6,e,t.map(g=>[g.vertexData.uvs6,g.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(D.ColorKind,c.colors,e,t.map(g=>[g.vertexData.colors,g.transform])),(c.hasVertexAlpha!==void 0||t.some(g=>g.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(g=>g.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(D.MatricesIndicesKind,c.matricesIndices,e,t.map(g=>[g.vertexData.matricesIndices,g.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(D.MatricesWeightsKind,c.matricesWeights,e,t.map(g=>[g.vertexData.matricesWeights,g.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(D.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(g=>[g.vertexData.matricesIndicesExtra,g.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(D.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(g=>[g.vertexData.matricesWeightsExtra,g.transform]))),this}static _MergeElement(e,t,i,r){let s=r.filter(l=>l[0]!==null&&l[0]!==void 0);if(!t&&s.length==0)return t;if(!t)return this._MergeElement(e,s[0][0],s[0][1],s.slice(1));let a=s.reduce((l,c)=>l+c[0].length,t.length),o=e===D.PositionKind?n._TransformVector3Coordinates:e===D.NormalKind?n._TransformVector3Normals:e===D.TangentKind?n._TransformVector4Normals:()=>{};if(t instanceof Float32Array){let l=new Float32Array(a);l.set(t),i&&o(l,i,0,t.length);let c=t.length;for(let[f,d]of s)l.set(f,c),d&&o(l,d,c,f.length),c+=f.length;return l}else{let l=new Array(a);for(let f=0;f{let a=D.DeduceStride(r);if(s.length%a!==0)throw new Error("The "+r+"s array count must be a multiple of "+a);return s.length/a},t=e(D.PositionKind,this.positions),i=(r,s)=>{let a=e(r,s);if(a!==t)throw new Error("The "+r+"s element count ("+a+") does not match the positions count ("+t+")")};this.normals&&i(D.NormalKind,this.normals),this.tangents&&i(D.TangentKind,this.tangents),this.uvs&&i(D.UVKind,this.uvs),this.uvs2&&i(D.UV2Kind,this.uvs2),this.uvs3&&i(D.UV3Kind,this.uvs3),this.uvs4&&i(D.UV4Kind,this.uvs4),this.uvs5&&i(D.UV5Kind,this.uvs5),this.uvs6&&i(D.UV6Kind,this.uvs6),this.colors&&i(D.ColorKind,this.colors),this.matricesIndices&&i(D.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(D.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(D.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(D.MatricesWeightsExtraKind,this.matricesWeightsExtra)}clone(){let e=this.serialize();return n.Parse(e)}serialize(){let e={};if(this.positions&&(e.positions=Array.from(this.positions)),this.normals&&(e.normals=Array.from(this.normals)),this.tangents&&(e.tangents=Array.from(this.tangents)),this.uvs&&(e.uvs=Array.from(this.uvs)),this.uvs2&&(e.uvs2=Array.from(this.uvs2)),this.uvs3&&(e.uvs3=Array.from(this.uvs3)),this.uvs4&&(e.uvs4=Array.from(this.uvs4)),this.uvs5&&(e.uvs5=Array.from(this.uvs5)),this.uvs6&&(e.uvs6=Array.from(this.uvs6)),this.colors&&(e.colors=Array.from(this.colors),e.hasVertexAlpha=this.hasVertexAlpha),this.matricesIndices&&(e.matricesIndices=Array.from(this.matricesIndices),e.matricesIndicesExpanded=!0),this.matricesWeights&&(e.matricesWeights=Array.from(this.matricesWeights)),this.matricesIndicesExtra&&(e.matricesIndicesExtra=Array.from(this.matricesIndicesExtra),e.matricesIndicesExtraExpanded=!0),this.matricesWeightsExtra&&(e.matricesWeightsExtra=Array.from(this.matricesWeightsExtra)),e.indices=this.indices?Array.from(this.indices):[],this.materialInfos){e.materialInfos=[];for(let t of this.materialInfos){let i={indexStart:t.indexStart,indexCount:t.indexCount,materialIndex:t.materialIndex,verticesStart:t.verticesStart,verticesCount:t.verticesCount};e.materialInfos.push(i)}}return e}static ExtractFromMesh(e,t,i){return n._ExtractFrom(e,t,i)}static ExtractFromGeometry(e,t,i){return n._ExtractFrom(e,t,i)}static _ExtractFrom(e,t,i){let r=new n;if(e.isVerticesDataPresent(D.PositionKind)&&(r.positions=e.getVerticesData(D.PositionKind,t,i)),e.isVerticesDataPresent(D.NormalKind)&&(r.normals=e.getVerticesData(D.NormalKind,t,i)),e.isVerticesDataPresent(D.TangentKind)&&(r.tangents=e.getVerticesData(D.TangentKind,t,i)),e.isVerticesDataPresent(D.UVKind)&&(r.uvs=e.getVerticesData(D.UVKind,t,i)),e.isVerticesDataPresent(D.UV2Kind)&&(r.uvs2=e.getVerticesData(D.UV2Kind,t,i)),e.isVerticesDataPresent(D.UV3Kind)&&(r.uvs3=e.getVerticesData(D.UV3Kind,t,i)),e.isVerticesDataPresent(D.UV4Kind)&&(r.uvs4=e.getVerticesData(D.UV4Kind,t,i)),e.isVerticesDataPresent(D.UV5Kind)&&(r.uvs5=e.getVerticesData(D.UV5Kind,t,i)),e.isVerticesDataPresent(D.UV6Kind)&&(r.uvs6=e.getVerticesData(D.UV6Kind,t,i)),e.isVerticesDataPresent(D.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(D.ColorKind),o=s.getVerticesData(D.ColorKind,t,i);if(a.getSize()===3){let l=new Float32Array(o.length*4/3);for(let c=0,f=0;c!Array.isArray(n[0]))],ye,"_TransformVector3Coordinates",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_TransformVector3Normals",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_TransformVector4Normals",null);P([ws.filter((...n)=>!Array.isArray(n[0]))],ye,"_FlipFaces",null)});var Kr,Dx=I(()=>{Kr=class n{static get ForceFullSceneLoadingForIncremental(){return n._ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){n._ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return n._ShowLoadingScreen}static set ShowLoadingScreen(e){n._ShowLoadingScreen=e}static get loggingLevel(){return n._LoggingLevel}static set loggingLevel(e){n._LoggingLevel=e}static get CleanBoneMatrixWeights(){return n._CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){n._CleanBoneMatrixWeights=e}};Kr._ForceFullSceneLoadingForIncremental=!1;Kr._ShowLoadingScreen=!0;Kr._CleanBoneMatrixWeights=!1;Kr._LoggingLevel=0});var _n,Lx=I(()=>{ke();Ht();pr();Wi();Wg();Dx();Lm();yi();Sf();Px();Ni();nn();Tm();_n=class n{get boundingBias(){return this._boundingBias}set boundingBias(e){this._boundingBias?this._boundingBias.copyFrom(e):this._boundingBias=e.clone(),this._updateBoundingInfo(!0,null)}static CreateGeometryForMesh(e){let t=new n(n.RandomId(),e.getScene());return t.applyToMesh(e),t}get meshes(){return this._meshes}constructor(e,t,i,r=!1,s=null,a=null){this.delayLoadState=0,this._totalVertices=0,this._isDisposed=!1,this._extend={minimum:new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),maximum:new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)},this._indexBufferIsUpdatable=!1,this._positionsCache=[],this._parentContainer=null,this.useBoundingInfoFromGeometry=!1,this._scene=t||Oe.LastCreatedScene,this._scene&&(this.id=e,this.uniqueId=this._scene.getUniqueId(),this._engine=this._scene.getEngine(),this._meshes=[],this._vertexBuffers={},this._indices=[],this._updatable=r,a!==null&&(this._totalVertices=a),i?this.setAllVerticesData(i,r):a===null&&(this._totalVertices=0),this._engine.getCaps().vertexArrayObject&&(this._vertexArrayObjects={}),s&&(this.applyToMesh(s),s.computeWorldMatrix(!0)))}get extend(){return this._extend}getScene(){return this._scene}getEngine(){return this._engine}isReady(){return this.delayLoadState===1||this.delayLoadState===0}get doNotSerialize(){for(let e=0;e{t._rebuild()})}setAllVerticesData(e,t){e.applyToGeometry(this,t),this._notifyUpdate()}setVerticesData(e,t,i=!1,r){i&&Array.isArray(t)&&(t=new Float32Array(t));let s=new D(this._engine,t,e,{updatable:i,postponeInternalCreation:this._meshes.length===0,stride:r,label:"Geometry_"+this.id+"_"+e});this.setVerticesBuffer(s)}removeVerticesData(e){this._vertexBuffers[e]&&(this._vertexBuffers[e].dispose(),delete this._vertexBuffers[e]),this._vertexArrayObjects&&this._disposeVertexArrayObjects()}setVerticesBuffer(e,t=null,i=!0){let r=e.getKind();this._vertexBuffers[r]&&i&&this._vertexBuffers[r].dispose(),e._buffer&&e._ownsBuffer&&e._buffer._increaseReferences(),this._vertexBuffers[r]=e;let s=this._meshes,a=s.length;if(r===D.PositionKind){this._totalVertices=t!=null?t:e._maxVerticesCount,this._updateExtend(this.useBoundingInfoFromGeometry&&this._boundingInfo?null:e.getFloatData(this._totalVertices)),this._resetPointsArrayCache();let o=this._extend&&this._extend.minimum||new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),l=this._extend&&this._extend.maximum||new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE);for(let c=0;c65535:e.is32Bits=r;for(let s of this._meshes)s._createGlobalSubMesh(!0),s.synchronizeInstances();this._notifyUpdate()}setIndices(e,t=null,i=!1,r=!1){this._indexBuffer&&this._engine._releaseBuffer(this._indexBuffer),this._indices=e,this._indexBufferIsUpdatable=i,this._meshes.length!==0&&this._indices&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,i,"Geometry_"+this.id+"_IndexBuffer")),t!=null&&(this._totalVertices=t);for(let s of this._meshes)s._createGlobalSubMesh(!r),s.synchronizeInstances();this._notifyUpdate()}getTotalIndices(){return this.isReady()?this._totalIndices!==void 0?this._totalIndices:this._indices.length:0}getIndices(e,t){if(!this.isReady())return null;let i=this._indices;return!t&&(!e||this._meshes.length===1)?i:i.slice()}getIndexBuffer(){return this.isReady()?this._indexBuffer:null}_releaseVertexArrayObject(e=null){!e||!this._vertexArrayObjects||this._vertexArrayObjects[e.key]&&(this._engine.releaseVertexArrayObject(this._vertexArrayObjects[e.key]),delete this._vertexArrayObjects[e.key])}releaseForMesh(e,t){let i=this._meshes,r=i.indexOf(e);r!==-1&&(i.splice(r,1),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject(),e._geometry=null,i.length===0&&t&&this.dispose())}applyToMesh(e){if(e._geometry===this)return;let t=e._geometry;t&&t.releaseForMesh(e),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject();let i=this._meshes;e._geometry=this,e._internalAbstractMeshDataInfo._positions=null,this._scene.pushGeometry(this),i.push(e),this.isReady()?this._applyToMesh(e):this._boundingInfo&&e.setBoundingInfo(this._boundingInfo)}_updateExtend(e=null){if(this.useBoundingInfoFromGeometry&&this._boundingInfo)this._extend={minimum:this._boundingInfo.minimum.clone(),maximum:this._boundingInfo.maximum.clone()};else{if(!e&&(e=this.getVerticesData(D.PositionKind),!e))return;this._extend=Cx(e,0,this._totalVertices,this.boundingBias,3)}}_applyToMesh(e){for(let t in this._vertexBuffers){let i=this._vertexBuffers[t];i._buffer.getBuffer()||i.create(),t===D.PositionKind&&(this._extend||this._updateExtend(),e.buildBoundingInfo(this._extend.minimum,this._extend.maximum),e._createGlobalSubMesh(e.isUnIndexed),e._updateBoundingInfo())}!this._indexBuffer&&this._indices&&this._indices.length>0&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,this._updatable,"Geometry_"+this.id+"_IndexBuffer")),e._syncGeometryWithMorphTargetManager(),e.synchronizeInstances()}_notifyUpdate(e){this.onGeometryUpdated&&this.onGeometryUpdated(this,e),this._vertexArrayObjects&&this._disposeVertexArrayObjects();for(let t of this._meshes)t._markSubMeshesAsAttributesDirty()}load(e,t){if(this.delayLoadState!==2){if(this.isReady()){t&&t();return}this.delayLoadState=2,this._queueLoad(e,t)}}_queueLoad(e,t){this.delayLoadingFile&&(e.addPendingData(this),e._loadFile(this.delayLoadingFile,i=>{if(!this._delayLoadingFunction)return;this._delayLoadingFunction(JSON.parse(i),this),this.delayLoadState=1,this._delayInfo=[],e.removePendingData(this);let r=this._meshes,s=r.length;for(let a=0;a0){for(let r=0;r0){for(let r=0;r0){for(let r=0;r-1&&this._parentContainer.geometries.splice(r,1),this._parentContainer=null}this._isDisposed=!0}copy(e){let t=new n(e,this._scene),i=this.getIndices(void 0,!0);i&&t.setIndices(i);let r=!1,s;for(s in this._vertexBuffers){let a=this.getVertexBuffer(s),o=a.getData();if(!o)continue;let l=a.isUpdatable(),c=a.getSize(),{type:f,byteOffset:d,byteStride:h,normalized:u}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let g;o instanceof Array?g=o.length*4:g=o.byteLength,m=g/h}let _=oV(o,c,f,d,h,m,!0),p=new D(this._engine,_,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:u,takeBufferOwnership:!0,instanced:a.getIsInstanced()});t.setVerticesBuffer(p,m)}t._updatable=r,t.delayLoadState=this.delayLoadState,t.delayLoadingFile=this.delayLoadingFile,t._delayLoadingFunction=this._delayLoadingFunction;for(s in this._delayInfo)t._delayInfo=t._delayInfo||[],t._delayInfo.push(s);return t._boundingInfo=new pn(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,$t&&$t.HasTags(this)&&(e.tags=$t.GetTags(this)),e}_toNumberArray(e){return Array.isArray(e)?e:Array.prototype.slice.call(e)}clearCachedData(){this._totalIndices=this._indices.length,this._indices=[],this._resetPointsArrayCache();for(let e in this._vertexBuffers)Object.prototype.hasOwnProperty.call(this._vertexBuffers,e)&&(this._vertexBuffers[e]._buffer._data=null)}serializeVerticeData(){let e=this.serialize();return this.isVerticesDataPresent(D.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(D.PositionKind)),this.isVertexBufferUpdatable(D.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(D.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(D.NormalKind)),this.isVertexBufferUpdatable(D.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(D.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(D.TangentKind)),this.isVertexBufferUpdatable(D.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(D.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(D.UVKind)),this.isVertexBufferUpdatable(D.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(D.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(D.UV2Kind)),this.isVertexBufferUpdatable(D.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(D.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(D.UV3Kind)),this.isVertexBufferUpdatable(D.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(D.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(D.UV4Kind)),this.isVertexBufferUpdatable(D.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(D.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(D.UV5Kind)),this.isVertexBufferUpdatable(D.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(D.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(D.UV6Kind)),this.isVertexBufferUpdatable(D.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(D.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(D.ColorKind)),this.isVertexBufferUpdatable(D.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(D.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(D.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(D.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(D.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(D.MatricesWeightsKind)),this.isVertexBufferUpdatable(D.MatricesWeightsKind)&&(e.matricesWeightsUpdatable=!0)),e.indices=this._toNumberArray(this.getIndices()),e}static ExtractFromMesh(e,t){let i=e._geometry;return i?i.copy(t):null}static RandomId(){return _e.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(D.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(D.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(D.TangentKind,o,!1)}if(a.uvsAttrDesc&&a.uvsAttrDesc.count>0){let o=new Float32Array(e,a.uvsAttrDesc.offset,a.uvsAttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs2AttrDesc.offset,a.uvs2AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs3AttrDesc.offset,a.uvs3AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs4AttrDesc.offset,a.uvs4AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs5AttrDesc.offset,a.uvs5AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.uvs6AttrDesc.offset,a.uvs6AttrDesc.count);if(It)for(let l=1;l0){let o=new Float32Array(e,a.colorsAttrDesc.offset,a.colorsAttrDesc.count);t.setVerticesData(D.ColorKind,o,!1,a.colorsAttrDesc.stride)}if(a.matricesIndicesAttrDesc&&a.matricesIndicesAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesAttrDesc.offset,a.matricesIndicesAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(D.MatricesIndicesKind,l,!1)}if(a.matricesIndicesExtraAttrDesc&&a.matricesIndicesExtraAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesExtraAttrDesc.offset,a.matricesIndicesExtraAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(D.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(D.MatricesWeightsKind,o,!1)}if(a.indicesAttrDesc&&a.indicesAttrDesc.count>0){let o=new Int32Array(e,a.indicesAttrDesc.offset,a.indicesAttrDesc.count);t.setIndices(o,null)}if(a.subMeshesAttrDesc&&a.subMeshesAttrDesc.count>0){let o=new Int32Array(e,a.subMeshesAttrDesc.offset,a.subMeshesAttrDesc.count*5);t.subMeshes=[];for(let l=0;l>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(D.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(D.MatricesIndicesKind,e.matricesIndices,e.matricesIndices._updatable||e.matricesIndicesUpdatable);if(e.matricesIndicesExtra)if(e.matricesIndicesExtraExpanded||e.matricesIndicesExtra._isExpanded)delete e.matricesIndices._isExpanded,delete e.matricesIndicesExtraExpanded,t.setVerticesData(D.MatricesIndicesExtraKind,e.matricesIndicesExtra,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable);else{let a=[];for(let o=0;o>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(D.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(D.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(D.MatricesWeightsExtraKind,e.matricesWeightsExtra,e.matricesWeights._updatable),t.setIndices(e.indices,null)}if(e.subMeshes){t.subMeshes=[];for(let a=0;a-1){let d=t.getScene().getLastSkeletonById(e.skeletonId);if(!d)return;r=d.bones.length}else return;let s=t.getVerticesData(D.MatricesIndicesKind),a=t.getVerticesData(D.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(u=c-1),h>.001){let m=1/h;for(let _=0;_<4;_++)o[d+_]*=m;if(l)for(let _=0;_<4;_++)l[d+_]*=m}else u>=4?(l[d+u-4]=1-h,a[d+u-4]=r):(o[d+u]=1-h,s[d+u]=r)}t.setVerticesData(D.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(D.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,$t&&$t.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new pn(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(D.UVKind),e.hasUVs2&&r._delayInfo.push(D.UV2Kind),e.hasUVs3&&r._delayInfo.push(D.UV3Kind),e.hasUVs4&&r._delayInfo.push(D.UV4Kind),e.hasUVs5&&r._delayInfo.push(D.UV5Kind),e.hasUVs6&&r._delayInfo.push(D.UV6Kind),e.hasColors&&r._delayInfo.push(D.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(D.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(D.MatricesWeightsKind),r._delayLoadingFunction=ye.ImportVertexData):ye.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var Yt,yf=I(()=>{Gt();Vt();br();hi();ke();la();Yi();Yt=class n extends _i{get billboardMode(){return this._billboardMode}set billboardMode(e){this._billboardMode!==e&&(this._billboardMode=e,this._cache.useBillboardPosition=(this._billboardMode&n.BILLBOARDMODE_USE_POSITION)!==0)}get infiniteDistance(){return this._infiniteDistance}set infiniteDistance(e){this._infiniteDistance!==e&&(this._infiniteDistance=e)}constructor(e,t=null,i=!0){super(e,t,!1),this._forward=new b(0,0,1),this._up=new b(0,1,0),this._right=new b(1,0,0),this._position=b.Zero(),this._rotation=b.Zero(),this._rotationQuaternion=null,this._scaling=b.One(),this._transformToBoneReferal=null,this._isAbsoluteSynced=!1,this._billboardMode=n.BILLBOARDMODE_NONE,this.scalingDeterminant=1,this._infiniteDistance=!1,this.ignoreNonUniformScaling=!1,this.reIntegrateRotationIntoRotationQuaternion=!1,this._poseMatrix=null,this._localMatrix=q.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=Xe.Identity(),this._pivotMatrix=q.Identity(),this._postMultiplyPivotMatrix=!1,this._isWorldMatrixFrozen=!1,this._indexInSceneTransformNodesArray=-1,this.onAfterWorldMatrixUpdateObservable=new ie,this._nonUniformScaling=!1,i&&this.getScene().addTransformNode(this)}getClassName(){return"TransformNode"}get position(){return this._position}set position(e){this._position=e,this._markAsDirtyInternal()}isUsingPivotMatrix(){return this._usePivotMatrix}isUsingPostMultiplyPivotMatrix(){return this._postMultiplyPivotMatrix}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._rotationQuaternion=null,this._markAsDirtyInternal()}get scaling(){return this._scaling}set scaling(e){this._scaling=e,this._markAsDirtyInternal()}get rotationQuaternion(){return this._rotationQuaternion}set rotationQuaternion(e){this._rotationQuaternion=e,e&&this._rotation.setAll(0),this._markAsDirtyInternal()}_markAsDirtyInternal(){this._isDirty||(this._isDirty=!0,this.customMarkAsDirty&&this.customMarkAsDirty())}get forward(){return b.TransformNormalFromFloatsToRef(0,0,this.getScene().useRightHandedSystem?-1:1,this.getWorldMatrix(),this._forward),this._forward.normalize()}get up(){return b.TransformNormalFromFloatsToRef(0,1,0,this.getWorldMatrix(),this._up),this._up.normalize()}get right(){return b.TransformNormalFromFloatsToRef(this.getScene().useRightHandedSystem?-1:1,0,0,this.getWorldMatrix(),this._right),this._right.normalize()}updatePoseMatrix(e){return this._poseMatrix?(this._poseMatrix.copyFrom(e),this):(this._poseMatrix=e.clone(),this)}getPoseMatrix(){return this._poseMatrix||(this._poseMatrix=q.Identity()),this._poseMatrix}_isSynchronized(){let e=this._cache;return!(this._billboardMode!==e.billboardMode||this._billboardMode!==n.BILLBOARDMODE_NONE||e.pivotMatrixUpdated||this._infiniteDistance||this._position._isDirty||this._scaling._isDirty||this._rotationQuaternion&&this._rotationQuaternion._isDirty||this._rotation._isDirty)}_initCache(){super._initCache();let e=this._cache;e.localMatrixUpdated=!1,e.billboardMode=-1,e.infiniteDistance=!1,e.useBillboardPosition=!1}get absolutePosition(){return this.getAbsolutePosition()}get absoluteScaling(){return this._syncAbsoluteScalingAndRotation(),this._absoluteScaling}get absoluteRotationQuaternion(){return this._syncAbsoluteScalingAndRotation(),this._absoluteRotationQuaternion}setPreTransformMatrix(e){return this.setPivotMatrix(e,!1)}setPivotMatrix(e,t=!0){return this._pivotMatrix.copyFrom(e),this._usePivotMatrix=!this._pivotMatrix.isIdentity(),this._cache.pivotMatrixUpdated=!0,this._postMultiplyPivotMatrix=t,this._postMultiplyPivotMatrix&&(this._pivotMatrixInverse?this._pivotMatrix.invertToRef(this._pivotMatrixInverse):this._pivotMatrixInverse=q.Invert(this._pivotMatrix)),this}getPivotMatrix(){return this._pivotMatrix}instantiateHierarchy(e=null,t,i){let r=this.clone("Clone of "+(this.name||this.id),e||this.parent,!0);r&&i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.instantiateHierarchy(r,t,i);return r}freezeWorldMatrix(e=null,t=!1){return e?t?(this._rotation.setAll(0),this._rotationQuaternion=this._rotationQuaternion||Xe.Identity(),e.decompose(this._scaling,this._rotationQuaternion,this._position),this.computeWorldMatrix(!0)):(this._worldMatrix=e,this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._afterComputeWorldMatrix()):(this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0)),this._isDirty=!1,this._isWorldMatrixFrozen=!0,this}unfreezeWorldMatrix(){return this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0),this}get isWorldMatrixFrozen(){return this._isWorldMatrixFrozen}getAbsolutePosition(){return this.computeWorldMatrix(),this._absolutePosition}setAbsolutePosition(e){if(!e)return this;let t,i,r;if(e.x===void 0){if(arguments.length<3)return this;t=arguments[0],i=arguments[1],r=arguments[2]}else t=e.x,i=e.y,r=e.z;if(this.parent){let s=$.Matrix[0];this.parent.getWorldMatrix().invertToRef(s),b.TransformCoordinatesFromFloatsToRef(t,i,r,s,this.position)}else this.position.x=t,this.position.y=i,this.position.z=r;return this._absolutePosition.copyFrom(e),this}setPositionWithLocalVector(e){return this.computeWorldMatrix(),this.position=b.TransformNormal(e,this._localMatrix),this}getPositionExpressedInLocalSpace(){this.computeWorldMatrix();let e=$.Matrix[0];return this._localMatrix.invertToRef(e),b.TransformNormal(this.position,e)}locallyTranslate(e){return this.computeWorldMatrix(!0),this.position=b.TransformCoordinates(e,this._localMatrix),this}lookAt(e,t=0,i=0,r=0,s=0){let a=n._LookAtVectorCache,o=s===0?this.position:this.getAbsolutePosition();if(e.subtractToRef(o,a),this.setDirection(a,t,i,r),s===1&&this.parent)if(this.rotationQuaternion){let l=$.Matrix[0];this.rotationQuaternion.toRotationMatrix(l);let c=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(c),c.invert(),l.multiplyToRef(c,l),this.rotationQuaternion.fromRotationMatrix(l)}else{let l=$.Quaternion[0];Xe.FromEulerVectorToRef(this.rotation,l);let c=$.Matrix[0];l.toRotationMatrix(c);let f=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(f),f.invert(),c.multiplyToRef(f,c),l.fromRotationMatrix(c),l.toEulerAnglesToRef(this.rotation)}return this}getDirection(e){let t=b.Zero();return this.getDirectionToRef(e,t),t}getDirectionToRef(e,t){return b.TransformNormalToRef(e,this.getWorldMatrix(),t),this}setDirection(e,t=0,i=0,r=0){let s=-Math.atan2(e.z,e.x)+Math.PI/2,a=Math.sqrt(e.x*e.x+e.z*e.z),o=-Math.atan2(e.y,a);return this.rotationQuaternion?Xe.RotationYawPitchRollToRef(s+t,o+i,r,this.rotationQuaternion):(this.rotation.x=o+i,this.rotation.y=s+t,this.rotation.z=r),this}setPivotPoint(e,t=0){this.getScene().getRenderId()==0&&this.computeWorldMatrix(!0);let i=this.getWorldMatrix();if(t==1){let r=$.Matrix[0];i.invertToRef(r),e=b.TransformCoordinates(e,r)}return this.setPivotMatrix(q.Translation(-e.x,-e.y,-e.z),!0)}getPivotPoint(){let e=b.Zero();return this.getPivotPointToRef(e),e}getPivotPointToRef(e){return e.x=-this._pivotMatrix.m[12],e.y=-this._pivotMatrix.m[13],e.z=-this._pivotMatrix.m[14],this}getAbsolutePivotPoint(){let e=b.Zero();return this.getAbsolutePivotPointToRef(e),e}getAbsolutePivotPointToRef(e){return this.getPivotPointToRef(e),b.TransformCoordinatesToRef(e,this.getWorldMatrix(),e),this}markAsDirty(e){if(this._isDirty)return this;if(this._children)for(let t of this._children)t.markAsDirty(e);return super.markAsDirty(e)}setParent(e,t=!1,i=!1){if(!e&&!this.parent)return this;let r=$.Quaternion[0],s=$.Vector3[0],a=$.Vector3[1],o=$.Matrix[1];q.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,Xe.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),q.ComposeToRef(this.scaling,c,this.position,l),this.parent&&l.multiplyToRef(this.parent.computeWorldMatrix(!0),l),e&&(e.computeWorldMatrix(!0).invertToRef(o),l.multiplyToRef(o,l)),l.decompose(a,r,s,t?this:void 0),this.rotationQuaternion?this.rotationQuaternion.copyFrom(r):r.toEulerAnglesToRef(this.rotation),this.scaling.copyFrom(a),this.position.copyFrom(s),this.parent=e,i&&this.setPivotMatrix(q.Identity()),this}addChild(e,t=!1){return e.setParent(this,t),this}removeChild(e,t=!1){return e.parent!==this?this:(e.setParent(null,t),this)}get nonUniformScaling(){return this._nonUniformScaling}_updateNonUniformScalingState(e){return this._nonUniformScaling===e?!1:(this._nonUniformScaling=e,!0)}attachToBone(e,t){return this._currentParentWhenAttachingToBone=this.parent,this._transformToBoneReferal=t,this.parent=e,e.getSkeleton().prepare(!0),e.getFinalMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this}detachFromBone(e=!1){return this.parent?(this.parent.getWorldMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this._transformToBoneReferal=null,e?this.parent=this._currentParentWhenAttachingToBone:this.parent=null,this):(e&&(this.parent=this._currentParentWhenAttachingToBone),this)}rotate(e,t,i){e.normalize(),this.rotationQuaternion||(this.rotationQuaternion=this.rotation.toQuaternion(),this.rotation.setAll(0));let r;if(!i||i===0)r=Xe.RotationAxisToRef(e,t,n._RotationAxisCache),this.rotationQuaternion.multiplyToRef(r,this.rotationQuaternion);else{if(this.parent){let s=this.parent.getWorldMatrix(),a=$.Matrix[0];s.invertToRef(a),e=b.TransformNormal(e,a),s.determinant()<0&&(t*=-1)}r=Xe.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=Xe.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z),this.rotation.setAll(0));let r=$.Vector3[0],s=$.Vector3[1],a=$.Vector3[2],o=$.Quaternion[0],l=$.Matrix[0],c=$.Matrix[1],f=$.Matrix[2],d=$.Matrix[3];return e.subtractToRef(this.position,r),q.TranslationToRef(r.x,r.y,r.z,l),q.TranslationToRef(-r.x,-r.y,-r.z,c),q.RotationAxisToRef(t,i,f),c.multiplyToRef(f,d),d.multiplyToRef(l,d),d.decompose(s,o,a),this.position.addInPlace(a),o.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion),this}translate(e,t,i){let r=e.scale(t);if(!i||i===0){let s=this.getPositionExpressedInLocalSpace().add(r);this.setPositionWithLocalVector(s)}else this.setAbsolutePosition(this.getAbsolutePosition().add(r));return this}addRotation(e,t,i){let r;this.rotationQuaternion?r=this.rotationQuaternion:(r=$.Quaternion[1],Xe.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return Xe.RotationYawPitchRollToRef(t,e,i,s),r.multiplyInPlace(s),this.rotationQuaternion||r.toEulerAnglesToRef(this.rotation),this}_getEffectiveParent(){return this.parent}isWorldMatrixCameraDependent(){return this._infiniteDistance&&!this.parent||this._billboardMode!==n.BILLBOARDMODE_NONE}computeWorldMatrix(e=!1,t=null){if(this._isWorldMatrixFrozen&&!this._isDirty)return this._worldMatrix;let i=this.getScene().getRenderId();if(!this._isDirty&&!e&&(this._currentRenderId===i||this.isSynchronized()))return this._currentRenderId=i,this._worldMatrix;t=t||this.getScene().activeCamera,this._updateCache();let r=this._cache;r.pivotMatrixUpdated=!1,r.billboardMode=this.billboardMode,r.infiniteDistance=this.infiniteDistance,r.parent=this._parentNode,this._currentRenderId=i,this._childUpdateId+=1,this._isDirty=!1,this._position._isDirty=!1,this._rotation._isDirty=!1,this._scaling._isDirty=!1;let s=this._getEffectiveParent(),a=n._TmpScaling,o=this._position;if(this._infiniteDistance&&!this.parent&&t){let f=t.getWorldMatrix().m;o=n._TmpTranslation,o.copyFromFloats(this._position.x+f[12],this._position.y+f[13],this._position.z+f[14])}a.copyFromFloats(this._scaling.x*this.scalingDeterminant,this._scaling.y*this.scalingDeterminant,this._scaling.z*this.scalingDeterminant);let l;if(this._rotationQuaternion?(this._rotationQuaternion._isDirty=!1,l=this._rotationQuaternion,this.reIntegrateRotationIntoRotationQuaternion&&this.rotation.lengthSquared()&&(this._rotationQuaternion.multiplyInPlace(Xe.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,Xe.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];q.ScalingToRef(a.x,a.y,a.z,c);let f=$.Matrix[0];l.toRotationMatrix(f),this._pivotMatrix.multiplyToRef(c,$.Matrix[4]),$.Matrix[4].multiplyToRef(f,this._localMatrix),this._postMultiplyPivotMatrix&&this._localMatrix.multiplyToRef(this._pivotMatrixInverse,this._localMatrix),this._localMatrix.addTranslationFromFloats(o.x,o.y,o.z)}else q.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let h=this.parent;h.getSkeleton().prepare(),h.getFinalMatrix().multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),$.Matrix[7])}else $.Matrix[7].copyFrom(s.getWorldMatrix());let c=$.Vector3[5],f=$.Vector3[6],d=$.Quaternion[0];$.Matrix[7].decompose(f,d,c),q.ScalingToRef(f.x,f.y,f.z,$.Matrix[7]),$.Matrix[7].setTranslation(c),n.BillboardUseParentOrientation&&(this._position.applyRotationQuaternionToRef(d,c),this._localMatrix.setTranslation(c)),this._localMatrix.multiplyToRef($.Matrix[7],this._worldMatrix)}else if(this._transformToBoneReferal){let c=this.parent;c.getSkeleton().prepare(),this._localMatrix.multiplyToRef(c.getFinalMatrix(),$.Matrix[6]),$.Matrix[6].multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),this._worldMatrix)}else this._localMatrix.multiplyToRef(s.getWorldMatrix(),this._worldMatrix);this._markSyncedWithParent()}else this._worldMatrix.copyFrom(this._localMatrix);if(t&&this.billboardMode)if(r.useBillboardPosition){let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c);let f=t.globalPosition;this._worldMatrix.invertToRef($.Matrix[1]);let d=$.Vector3[1];b.TransformCoordinatesToRef(f,$.Matrix[1],d),d.normalize();let h=-Math.atan2(d.z,d.x)+Math.PI/2,u=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,u);if(Xe.RotationYawPitchRollToRef(h,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let _=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(_),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(_.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(_.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(_.z=0),q.RotationYawPitchRollToRef(_.y,_.x,_.z,$.Matrix[0])}else q.FromQuaternionToRef($.Quaternion[0],$.Matrix[0]);this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}else{let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c),$.Matrix[1].copyFrom(t.getViewMatrix());let f=this.getScene().useRightHandedSystem;if(f&&$.Matrix[1].multiplyToRef(n._TmpRHRestore,$.Matrix[1]),$.Matrix[1].setTranslationFromFloats(0,0,0),$.Matrix[1].invertToRef($.Matrix[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){$.Matrix[0].decompose(void 0,$.Quaternion[0],void 0);let d=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(d),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(d.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(d.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(d.z=0),f&&(d.y+=Math.PI),q.RotationYawPitchRollToRef(d.y,d.x,d.z,$.Matrix[0])}this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}return this.ignoreNonUniformScaling?this._updateNonUniformScalingState(!1):this._scaling.isNonUniformWithinEpsilon(1e-6)?this._updateNonUniformScalingState(!0):s&&s._nonUniformScaling?this._updateNonUniformScalingState(s._nonUniformScaling):this._updateNonUniformScalingState(!1),this._afterComputeWorldMatrix(),this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._isAbsoluteSynced=!1,this.onAfterWorldMatrixUpdateObservable.notifyObservers(this),this._poseMatrix||(this._poseMatrix=q.Invert(this._worldMatrix)),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix}resetLocalMatrix(e=!0){if(this.computeWorldMatrix(),e){let t=this.getChildren();for(let i=0;inew n(e,this.getScene()),this);if(r.name=e,r.id=e,t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;anew n(e.name,t),e,t,i);if(e.localMatrix?r.setPreTransformMatrix(q.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(q.FromArray(e.pivotMatrix)),r.setEnabled(e.isEnabled),r._waitingParsedUniqueId=e.uniqueId,e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.freezeWorldMatrix&&(r._waitingFreezeWorldMatrix=e.freezeWorldMatrix),e.animations){for(let s=0;s(!t||t(r))&&r instanceof n),i}dispose(e,t=!1){if(this.getScene().stopAnimation(this),this.getScene().removeTransformNode(this),this._parentContainer){let i=this._parentContainer.transformNodes.indexOf(this);i>-1&&this._parentContainer.transformNodes.splice(i,1),this._parentContainer=null}if(this.onAfterWorldMatrixUpdateObservable.clear(),e){let i=this.getChildTransformNodes(!0);for(let r of i)r.parent=null,r.computeWorldMatrix(!0)}super.dispose(e,t)}normalizeToUnitCube(e=!0,t=!1,i){let r=null,s=null;t&&(this.rotationQuaternion?(s=this.rotationQuaternion.clone(),this.rotationQuaternion.copyFromFloats(0,0,0,1)):this.rotation&&(r=this.rotation.clone(),this.rotation.copyFromFloats(0,0,0)));let a=this.getHierarchyBoundingVectors(e,i),o=a.max.subtract(a.min),l=Math.max(o.x,o.y,o.z);if(l===0)return this;let c=1/l;return this.scaling.scaleInPlace(c),t&&(this.rotationQuaternion&&s?this.rotationQuaternion.copyFrom(s):this.rotation&&r&&this.rotation.copyFrom(r)),this}_syncAbsoluteScalingAndRotation(){this._isAbsoluteSynced||(this._worldMatrix.decompose(this._absoluteScaling,this._absoluteRotationQuaternion),this._isAbsoluteSynced=!0)}};Yt.BILLBOARDMODE_NONE=0;Yt.BILLBOARDMODE_X=1;Yt.BILLBOARDMODE_Y=2;Yt.BILLBOARDMODE_Z=4;Yt.BILLBOARDMODE_ALL=7;Yt.BILLBOARDMODE_USE_POSITION=128;Yt.BillboardUseParentOrientation=!1;Yt._TmpRotation=Xe.Zero();Yt._TmpScaling=b.Zero();Yt._TmpTranslation=b.Zero();Yt._TmpRHRestore=q.Scaling(1,1,-1);Yt._LookAtVectorCache=new b(0,0,0);Yt._RotationAxisCache=new Xe;P([Xr("position")],Yt.prototype,"_position",void 0);P([Xr("rotation")],Yt.prototype,"_rotation",void 0);P([tV("rotationQuaternion")],Yt.prototype,"_rotationQuaternion",void 0);P([Xr("scaling")],Yt.prototype,"_scaling",void 0);P([F("billboardMode")],Yt.prototype,"_billboardMode",void 0);P([F()],Yt.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],Yt.prototype,"_infiniteDistance",void 0);P([F()],Yt.prototype,"ignoreNonUniformScaling",void 0);P([F()],Yt.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var Ox,BW=I(()=>{ke();Ox=class{constructor(){this._checkCollisions=!1,this._collisionMask=-1,this._collisionGroup=-1,this._surroundingMeshes=null,this._collider=null,this._oldPositionForCollisions=new b(0,0,0),this._diffPositionForCollisions=new b(0,0,0),this._collisionResponse=!0}}});function UW(n){return Math.floor(n/8)}function VW(n){return 1<{Nx=class{constructor(e){this.size=e,this._byteArray=new Uint8Array(Math.ceil(this.size/8))}get(e){if(e>=this.size)throw new RangeError("Bit index out of range");let t=UW(e),i=VW(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=UW(e),r=VW(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var kW={};Be(kW,{OptimizeIndices:()=>Yce});function Yce(n){let e=[],t=n.length/3;for(let l=0;l{let c=[l];for(;c.length>0;){let f=c.pop();if(!r.get(f)){r.set(f,!0),s.push(e[f]);for(let d of e[f]){let h=i.get(d);if(!h)return;for(let u of h)r.get(u)||c.push(u)}}}};for(let l=0;l{GW()});function Kce(n,e,t){let i;switch(e){case D.PositionKind:i=r=>r.getPositions();break;case D.NormalKind:i=r=>r.getNormals();break;case D.TangentKind:i=r=>r.getTangents();break;case D.UVKind:i=r=>r.getUVs();break;case D.UV2Kind:i=r=>r.getUV2s();break;case D.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(q.FromFloat32ArrayToRefScaled(t,Math.floor(i[h+u]*16),m,c),l.addToSelf(c));if(s&&a)for(u=0;u<4;u++)m=a[h+u],m>0&&(q.FromFloat32ArrayToRefScaled(t,Math.floor(s[h+u]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var rD,nD,Ar,Nm=I(()=>{Gt();hi();ke();Wi();pr();yf();Ig();Lm();Af();BW();un();Px();Ht();Un();lm();Yi();Vt();Vr();rD=class{constructor(){this.facetNb=0,this.partitioningSubdivisions=10,this.partitioningBBoxRatio=1.01,this.facetDataEnabled=!1,this.facetParameters={},this.bbSize=b.Zero(),this.subDiv={max:1,X:1,Y:1,Z:1},this.facetDepthSort=!1,this.facetDepthSortEnabled=!1}},nD=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new rD,this._visibility=1,this._skeleton=null,this._layerMask=268435455,this._computeBonesUsingShaders=!0,this._isActive=!1,this._onlyForInstances=!1,this._isActiveIntermediate=!1,this._onlyForInstancesIntermediate=!1,this._actAsRegularMesh=!1,this._currentLOD=new Map,this._collisionRetryCount=3,this._morphTargetManager=null,this._renderingGroupId=0,this._bakedVertexAnimationManager=null,this._material=null,this._positions=null,this._pointerOverDisableMeshTesting=!1,this._meshCollisionData=new Ox,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},Ar=class n extends Yt{static get BILLBOARDMODE_NONE(){return Yt.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return Yt.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return Yt.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return Yt.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return Yt.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return Yt.BILLBOARDMODE_USE_POSITION}get facetNb(){return this._internalAbstractMeshDataInfo._facetData.facetNb}get partitioningSubdivisions(){return this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions}set partitioningSubdivisions(e){this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions=e}get partitioningBBoxRatio(){return this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio}set partitioningBBoxRatio(e){this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio=e}get mustDepthSortFacets(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSort}set mustDepthSortFacets(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSort=e}get facetDepthSortFrom(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom}set facetDepthSortFrom(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom=e}get collisionRetryCount(){return this._internalAbstractMeshDataInfo._collisionRetryCount}set collisionRetryCount(e){this._internalAbstractMeshDataInfo._collisionRetryCount=e}get isFacetDataEnabled(){return this._internalAbstractMeshDataInfo._facetData.facetDataEnabled}get morphTargetManager(){return this._internalAbstractMeshDataInfo._morphTargetManager}set morphTargetManager(e){this._internalAbstractMeshDataInfo._morphTargetManager!==e&&(this._internalAbstractMeshDataInfo._morphTargetManager=e,this._syncGeometryWithMorphTargetManager())}get bakedVertexAnimationManager(){return this._internalAbstractMeshDataInfo._bakedVertexAnimationManager}set bakedVertexAnimationManager(e){this._internalAbstractMeshDataInfo._bakedVertexAnimationManager!==e&&(this._internalAbstractMeshDataInfo._bakedVertexAnimationManager=e,this._markSubMeshesAsAttributesDirty())}_syncGeometryWithMorphTargetManager(){}_updateNonUniformScalingState(e){return super._updateNonUniformScalingState(e)?(this._markSubMeshesAsMiscDirty(),!0):!1}get rawBoundingInfo(){return this._internalAbstractMeshDataInfo._rawBoundingInfo}set rawBoundingInfo(e){this._internalAbstractMeshDataInfo._rawBoundingInfo=e}set onCollide(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver&&this.onCollideObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver=this.onCollideObservable.add(e)}set onCollisionPositionChange(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver&&this.onCollisionPositionChangeObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver=this.onCollisionPositionChangeObservable.add(e)}get visibility(){return this._internalAbstractMeshDataInfo._visibility}set visibility(e){if(this._internalAbstractMeshDataInfo._visibility===e)return;let t=this._internalAbstractMeshDataInfo._visibility;this._internalAbstractMeshDataInfo._visibility=e,(t===1&&e!==1||t!==1&&e===1)&&this._markSubMeshesAsDirty(i=>{i.markAsMiscDirty(),i.markAsPrePassDirty()})}get pointerOverDisableMeshTesting(){return this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting}set pointerOverDisableMeshTesting(e){this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting=e}get renderingGroupId(){return this._internalAbstractMeshDataInfo._renderingGroupId}set renderingGroupId(e){this._internalAbstractMeshDataInfo._renderingGroupId=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){this._setMaterial(e)}_setMaterial(e){this._internalAbstractMeshDataInfo._material!==e&&(this._internalAbstractMeshDataInfo._material&&this._internalAbstractMeshDataInfo._material.meshMap&&(this._internalAbstractMeshDataInfo._material.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._material=e,e&&e.meshMap&&(e.meshMap[this.uniqueId]=this),this.onMaterialChangedObservable.hasObservers()&&this.onMaterialChangedObservable.notifyObservers(this),this.subMeshes&&(this.resetDrawCache(void 0,e==null),this._unBindEffect()))}getMaterialForRenderPass(e){var t;return(t=this._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:t[e]}setMaterialForRenderPass(e,t){var r;this.resetDrawCache(e),this._internalAbstractMeshDataInfo._materialForRenderPass||(this._internalAbstractMeshDataInfo._materialForRenderPass=[]);let i=this._internalAbstractMeshDataInfo._materialForRenderPass[e];(r=i==null?void 0:i.meshMap)!=null&&r[this.uniqueId]&&(i.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._materialForRenderPass[e]=t,t&&t.meshMap&&(t.meshMap[this.uniqueId]=this)}get receiveShadows(){return this._internalAbstractMeshDataInfo._receiveShadows}set receiveShadows(e){this._internalAbstractMeshDataInfo._receiveShadows!==e&&(this._internalAbstractMeshDataInfo._receiveShadows=e,this._markSubMeshesAsLightDirty())}get hasVertexAlpha(){return this._internalAbstractMeshDataInfo._hasVertexAlpha}set hasVertexAlpha(e){this._internalAbstractMeshDataInfo._hasVertexAlpha!==e&&(this._internalAbstractMeshDataInfo._hasVertexAlpha=e,this._markSubMeshesAsAttributesDirty(),this._markSubMeshesAsMiscDirty())}get useVertexColors(){return this._internalAbstractMeshDataInfo._useVertexColors}set useVertexColors(e){this._internalAbstractMeshDataInfo._useVertexColors!==e&&(this._internalAbstractMeshDataInfo._useVertexColors=e,this._markSubMeshesAsAttributesDirty())}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get numBoneInfluencers(){return this._internalAbstractMeshDataInfo._numBoneInfluencers}set numBoneInfluencers(e){this._internalAbstractMeshDataInfo._numBoneInfluencers!==e&&(this._internalAbstractMeshDataInfo._numBoneInfluencers=e,this._markSubMeshesAsAttributesDirty())}get applyFog(){return this._internalAbstractMeshDataInfo._applyFog}set applyFog(e){this._internalAbstractMeshDataInfo._applyFog!==e&&(this._internalAbstractMeshDataInfo._applyFog=e,this._markSubMeshesAsMiscDirty())}get enableDistantPicking(){return this._internalAbstractMeshDataInfo._enableDistantPicking}set enableDistantPicking(e){this._internalAbstractMeshDataInfo._enableDistantPicking=e}get layerMask(){return this._internalAbstractMeshDataInfo._layerMask}set layerMask(e){e!==this._internalAbstractMeshDataInfo._layerMask&&(this._internalAbstractMeshDataInfo._layerMask=e,this._resyncLightSources())}get collisionMask(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask}set collisionMask(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask=isNaN(e)?-1:e}get collisionResponse(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse}set collisionResponse(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse=e}get collisionGroup(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup}set collisionGroup(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup=isNaN(e)?-1:e}get surroundingMeshes(){return this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes}set surroundingMeshes(e){this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes=e}get lightSources(){return this._lightSources}set skeleton(e){let t=this._internalAbstractMeshDataInfo._skeleton;t&&t.needInitialSkinMatrix&&t._unregisterMeshWithPoseMatrix(this),e&&e.needInitialSkinMatrix&&e._registerMeshWithPoseMatrix(this),this._internalAbstractMeshDataInfo._skeleton=e,this._internalAbstractMeshDataInfo._skeleton||(this._bonesTransformMatrices=null),this._markSubMeshesAsAttributesDirty()}get skeleton(){return this._internalAbstractMeshDataInfo._skeleton}constructor(e,t=null){switch(super(e,t,!1),this._internalAbstractMeshDataInfo=new nD,this._waitingMaterialId=null,this._waitingMorphTargetManagerId=null,this._waitingSkeletonId=null,this._waitingSkeletonUniqueId=null,this.cullingStrategy=n.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY,this.onCollideObservable=new ie,this.onCollisionPositionChangeObservable=new ie,this.onMaterialChangedObservable=new ie,this.definedFacingForward=!0,this._occlusionQuery=null,this._renderingGroup=null,this.alphaIndex=Number.MAX_VALUE,this.isPickable=n.DefaultIsPickable,this.isNearPickable=!1,this.isNearGrabbable=!1,this.showSubMeshesBoundingBox=!1,this.isBlocker=!1,this.enablePointerMoveEvents=!1,this.outlineColor=pe.Red(),this.outlineWidth=.02,this.overlayColor=pe.Red(),this.overlayAlpha=.5,this.useOctreeForRenderingSelection=!0,this.useOctreeForPicking=!0,this.useOctreeForCollisions=!0,this.alwaysSelectAsActiveMesh=!1,this.doNotSyncBoundingInfo=!1,this.actionManager=null,this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.edgesWidth=1,this.edgesColor=new lt(1,0,0,1),this._edgesRenderer=null,this._masterMesh=null,this._boundingInfo=null,this._boundingInfoIsDirty=!0,this._renderId=0,this._intersectionsInProgress=new Array,this._unIndexed=!1,this._lightSources=new Array,this._waitingData={lods:null,actions:null,freezeWorldMatrix:null},this._bonesTransformMatrices=null,this._transformMatrixTexture=null,this.onRebuildObservable=new ie,this._onCollisionPositionChange=(i,r,s=null)=>{r.subtractToRef(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions.length()>Ie.CollisionsEpsilon&&this.position.addInPlace(this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),s&&this.onCollideObservable.notifyObservers(s),this.onCollisionPositionChangeObservable.notifyObservers(this.position)},t=this.getScene(),this.layerMask=t.defaultRenderableLayerMask,t.addMesh(this),this._resyncLightSources(),this._uniformBuffer=new mr(this.getScene().getEngine(),void 0,void 0,e,!this.getScene().getEngine().isWebGPU),this._buildUniformLayout(),t.performancePriority){case 2:this.doNotSyncBoundingInfo=!0;case 1:this.alwaysSelectAsActiveMesh=!0,this.isPickable=!1;break}}_buildUniformLayout(){this._uniformBuffer.addUniform("world",16),this._uniformBuffer.addUniform("visibility",1),this._uniformBuffer.create()}transferToEffect(e){let t=this._uniformBuffer;t.updateMatrix("world",e),t.updateFloat("visibility",this._internalAbstractMeshDataInfo._visibility),t.update()}getMeshUniformBuffer(){return this._uniformBuffer}getClassName(){return"AbstractMesh"}toString(e){let t="Name: "+this.name+", isInstance: "+(this.getClassName()==="InstancedMesh"?"YES":"NO");t+=", # of submeshes: "+(this.subMeshes?this.subMeshes.length:0);let i=this._internalAbstractMeshDataInfo._skeleton;return i&&(t+=", skeleton: "+i.name),e&&(t+=", billboard mode: "+["NONE","X","Y",null,"Z",null,null,"ALL"][this.billboardMode],t+=", freeze wrld mat: "+(this._isWorldMatrixFrozen||this._waitingData.freezeWorldMatrix?"YES":"NO")),t}_getEffectiveParent(){return this._masterMesh&&this.billboardMode!==Yt.BILLBOARDMODE_NONE?this._masterMesh:super._getEffectiveParent()}_getActionManagerForTrigger(e,t=!0){if(this.actionManager&&(t||this.actionManager.isRecursive))if(e){if(this.actionManager.hasSpecificTrigger(e))return this.actionManager}else return this.actionManager;return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_releaseRenderPassId(e){}_rebuild(e=!1){if(this.onRebuildObservable.notifyObservers(this),this._occlusionQuery!==null&&(this._occlusionQuery=null),!!this.subMeshes){for(let t of this.subMeshes)t._rebuild();this.resetDrawCache()}}_resyncLightSources(){this._lightSources.length=0;for(let e of this.getScene().lights)e.isEnabled()&&e.canAffectMesh(this)&&this._lightSources.push(e);this._markSubMeshesAsLightDirty()}_resyncLightSource(e){let t=e.isEnabled()&&e.canAffectMesh(this),i=this._lightSources.indexOf(e),r=!1;if(i===-1){if(!t)return;this._lightSources.push(e)}else{if(t)return;r=!0,this._lightSources.splice(i,1)}this._markSubMeshesAsLightDirty(r)}_unBindEffect(){for(let e of this.subMeshes)e.setEffect(null)}_removeLightSource(e,t){let i=this._lightSources.indexOf(e);i!==-1&&(this._lightSources.splice(i,1),this._markSubMeshesAsLightDirty(t))}_markSubMeshesAsDirty(e){if(this.subMeshes)for(let t of this.subMeshes)for(let i=0;it.markAsLightDirty(e))}_markSubMeshesAsAttributesDirty(){this._markSubMeshesAsDirty(e=>e.markAsAttributesDirty())}_markSubMeshesAsMiscDirty(){this._markSubMeshesAsDirty(e=>e.markAsMiscDirty())}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,super.markAsDirty(e),this._isDirty=!0,this}resetDrawCache(e,t=!1){if(this.subMeshes)for(let i of this.subMeshes)i.resetDrawCache(e,t)}get isBlocked(){return!1}getLOD(e){return this}getTotalVertices(){return 0}getTotalIndices(){return 0}getIndices(){return null}getVerticesData(e){return null}setVerticesData(e,t,i,r){return this}updateVerticesData(e,t,i,r){return this}setIndices(e,t){return this}isVerticesDataPresent(e){return!1}getBoundingInfo(){return this._masterMesh?this._masterMesh.getBoundingInfo():(this._boundingInfoIsDirty&&(this._boundingInfoIsDirty=!1,this._updateBoundingInfo()),this._boundingInfo)}getRawBoundingInfo(){var e;return(e=this.rawBoundingInfo)!=null?e:this.getBoundingInfo()}setBoundingInfo(e){return this._boundingInfo=e,this}get hasBoundingInfo(){return this._boundingInfo!==null}buildBoundingInfo(e,t,i){return this._boundingInfo=new pn(e,t,i),this._boundingInfo}normalizeToUnitCube(e=!0,t=!1,i){return super.normalizeToUnitCube(e,t,i)}get useBones(){return this.skeleton&&this.getScene().skeletonsEnabled&&this.isVerticesDataPresent(D.MatricesIndicesKind)&&this.isVerticesDataPresent(D.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===Yt.BILLBOARDMODE_NONE?this._masterMesh.getWorldMatrix():super.getWorldMatrix()}_getWorldMatrixDeterminant(){return this._masterMesh?this._masterMesh._getWorldMatrixDeterminant():super._getWorldMatrixDeterminant()}get isAnInstance(){return!1}get hasInstances(){return!1}get hasThinInstances(){return!1}movePOV(e,t,i){return this.position.addInPlace(this.calcMovePOV(e,t,i)),this}calcMovePOV(e,t,i){let r=new q;(this.rotationQuaternion?this.rotationQuaternion:Xe.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z)).toRotationMatrix(r);let a=b.Zero(),o=this.definedFacingForward?-1:1;return b.TransformCoordinatesFromFloatsToRef(e*o,t,i*o,r,a),a}rotatePOV(e,t,i){return this.rotation.addInPlace(this.calcRotatePOV(e,t,i)),this}calcRotatePOV(e,t,i){let r=this.definedFacingForward?1:-1;return new b(e*r,t,i*r)}_refreshBoundingInfo(e,t){if(e){let i=Cx(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new pn(i.minimum,i.maximum)}if(this.subMeshes)for(let i=0;i{if(r){let o=r._vertexData||(r._vertexData={});return o[a]||this.copyVerticesData(a,o),o[a]}return this.getVerticesData(a)};if(t||(t=s(i)),!t)return null;if(r?(r._outputData?r._outputData.set(t):r._outputData=new Float32Array(t),t=r._outputData):(e.applyMorph&&this.morphTargetManager||e.applySkeleton&&this.skeleton)&&(t=t.slice()),e.applyMorph&&this.morphTargetManager&&Kce(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(D.MatricesIndicesKind),o=s(D.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(D.MatricesIndicesExtraKind):null,f=l?s(D.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===D.PositionKind){let a=this._internalAbstractMeshDataInfo._positions||[],o=a.length;if(a.length=t.length/3,o1||!r.IsGlobal)&&r.updateBoundingInfo(e)}return this}_afterComputeWorldMatrix(){this.doNotSyncBoundingInfo||(this._boundingInfoIsDirty=!0)}isInFrustum(e){return this.getBoundingInfo().isInFrustum(e,this.cullingStrategy)}isCompletelyInFrustum(e){return this.getBoundingInfo().isCompletelyInFrustum(e)}intersectsMesh(e,t=!1,i){let r=this.getBoundingInfo(),s=e.getBoundingInfo();if(r.intersects(s,t))return!0;if(i){for(let a of this.getChildMeshes())if(a.intersectsMesh(e,t,!0))return!0}return!1}intersectsPoint(e){return this.getBoundingInfo().intersectsPoint(e)}get checkCollisions(){return this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions}set checkCollisions(e){this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions=e}get collider(){return this._internalAbstractMeshDataInfo._meshCollisionData._collider}moveWithCollisions(e,t=!0){this.getAbsolutePosition().addToRef(this.ellipsoidOffset,this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions);let r=this.getScene().collisionCoordinator;return this._internalAbstractMeshDataInfo._meshCollisionData._collider||(this._internalAbstractMeshDataInfo._meshCollisionData._collider=r.createCollider()),this._internalAbstractMeshDataInfo._meshCollisionData._collider._radius=this.ellipsoid,r.getNewPosition(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,e,this._internalAbstractMeshDataInfo._meshCollisionData._collider,this.collisionRetryCount,this,this._onCollisionPositionChange,this.uniqueId,t),this}_collideForSubMesh(e,t,i){var r;if(this._generatePointsArray(),!this._positions)return this;if(!e._lastColliderWorldVertices||!e._lastColliderTransformMatrix.equals(t)){e._lastColliderTransformMatrix=t.clone(),e._lastColliderWorldVertices=[],e._trianglePlanes=[];let s=e.verticesStart,a=e.verticesStart+e.verticesCount;for(let o=s;o1&&!a._checkCollision(e)||this._collideForSubMesh(a,t,e)}return this}_shouldConvertRHS(){return!1}_checkCollision(e){if(!this.getBoundingInfo()._checkCollision(e))return this;let t=$.Matrix[0],i=$.Matrix[1];return q.ScalingToRef(1/e._radius.x,1/e._radius.y,1/e._radius.z,t),this.worldMatrixFromCache.multiplyToRef(t,i),this._processCollisionsForSubMeshes(e,i),this}_generatePointsArray(){return!1}intersects(e,t,i,r=!1,s,a=!1){let o=new fs,l=this.getClassName(),c=l==="InstancedLinesMesh"||l==="LinesMesh"||l==="GreasedLineMesh"?this.intersectionThreshold:0,f=this.getBoundingInfo();if(!this.subMeshes||!a&&(!e.intersectsSphere(f.boundingSphere,c)||!e.intersectsBox(f.boundingBox,c)))return o;if(r)return o.hit=!a,o.pickedMesh=a?null:this,o.distance=a?0:b.Distance(e.origin,f.boundingSphere.center),o.subMeshId=0,o;if(!this._generatePointsArray())return o;let d=null,h=this._scene.getIntersectingSubMeshCandidates(this,e),u=h.length,m=!1;for(let _=0;_1&&!a&&!p.canIntersects(e))continue;let g=p.intersects(e,this._positions,this.getIndices(),t,i);if(g&&(t||!d||g.distanceo!==this&&o.actionManager===this.actionManager)&&this.actionManager.dispose(),this.actionManager=null),this._internalAbstractMeshDataInfo._skeleton=null,this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null),i=0;i-1&&this._parentContainer.meshes.splice(o,1),this._parentContainer=null}if(t&&this.material&&(this.material.getClassName()==="MultiMaterial"?this.material.dispose(!1,!0,!0):this.material.dispose(!1,!0)),!e)for(i=0;i65535){l=!0;break}l?e.depthSortedIndices=new Uint32Array(i):e.depthSortedIndices=new Uint16Array(i)}if(e.facetDepthSortFunction=function(l,c){return c.sqDistance-l.sqDistance},!e.facetDepthSortFrom){let l=this.getScene().activeCamera;e.facetDepthSortFrom=l?l.position:b.Zero()}e.depthSortedFacets=[];for(let l=0;lNt?s.maximum.x-s.minimum.x:Nt,e.bbSize.y=s.maximum.y-s.minimum.y>Nt?s.maximum.y-s.minimum.y:Nt,e.bbSize.z=s.maximum.z-s.minimum.z>Nt?s.maximum.z-s.minimum.z:Nt;let a=e.bbSize.x>e.bbSize.y?e.bbSize.x:e.bbSize.y;if(a=a>e.bbSize.z?a:e.bbSize.z,e.subDiv.max=e.partitioningSubdivisions,e.subDiv.X=Math.floor(e.subDiv.max*e.bbSize.x/a),e.subDiv.Y=Math.floor(e.subDiv.max*e.bbSize.y/a),e.subDiv.Z=Math.floor(e.subDiv.max*e.bbSize.z/a),e.subDiv.X=e.subDiv.X<1?1:e.subDiv.X,e.subDiv.Y=e.subDiv.Y<1?1:e.subDiv.Y,e.subDiv.Z=e.subDiv.Z<1?1:e.subDiv.Z,e.facetParameters.facetNormals=this.getFacetLocalNormals(),e.facetParameters.facetPositions=this.getFacetLocalPositions(),e.facetParameters.facetPartitioning=this.getFacetLocalPartitioning(),e.facetParameters.bInfo=s,e.facetParameters.bbSize=e.bbSize,e.facetParameters.subDiv=e.subDiv,e.facetParameters.ratio=this.partitioningBBoxRatio,e.facetParameters.depthSort=e.facetDepthSort,e.facetDepthSort&&e.facetDepthSortEnabled&&(this.computeWorldMatrix(!0),this._worldMatrix.invertToRef(e.invertedMatrix),b.TransformCoordinatesToRef(e.facetDepthSortFrom,e.invertedMatrix,e.facetDepthSortOrigin),e.facetParameters.distanceTo=e.facetDepthSortOrigin),e.facetParameters.depthSortedFacets=e.depthSortedFacets,r&&ye.ComputeNormals(t,i,r,e.facetParameters),e.facetDepthSort&&e.facetDepthSortEnabled){e.depthSortedFacets.sort(e.facetDepthSortFunction);let l=e.depthSortedIndices.length/3|0;for(let c=0;cs.subDiv.max||o<0||o>s.subDiv.max||l<0||l>s.subDiv.max?null:s.facetPartitioning[a+s.subDiv.max*o+s.subDiv.max*s.subDiv.max*l]}getClosestFacetAtCoordinates(e,t,i,r,s=!1,a=!0){let o=this.getWorldMatrix(),l=$.Matrix[5];o.invertToRef(l);let c=$.Vector3[8];b.TransformCoordinatesFromFloatsToRef(e,t,i,l,c);let f=this.getClosestFacetAtLocalCoordinates(c.x,c.y,c.z,r,s,a);return r&&b.TransformCoordinatesFromFloatsToRef(r.x,r.y,r.z,o,r),f}getClosestFacetAtLocalCoordinates(e,t,i,r,s=!1,a=!0){let o=null,l,c,f,d,h,u,m,_,p=this.getFacetLocalPositions(),g=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let x=Number.MAX_VALUE,S,E,T,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=T.x*R.x+T.y*R.y+T.z*R.z,h=-(T.x*e+T.y*t+T.z*i-d)/(T.x*T.x+T.y*T.y+T.z*T.z),u=e+T.x*h,m=t+T.y*h,_=i+T.z*h,l=u-e,c=m-t,f=_-i,S=l*l+c*c+f*f,S(WW(),kW));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Ns.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?Xe.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw Qe("EdgesRenderer")}enableEdgesRendering(e,t,i){throw Qe("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};Ar.OCCLUSION_TYPE_NONE=0;Ar.OCCLUSION_TYPE_OPTIMISTIC=1;Ar.OCCLUSION_TYPE_STRICT=2;Ar.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;Ar.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;Ar.CULLINGSTRATEGY_STANDARD=0;Ar.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;Ar.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;Ar.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;Ar.DefaultIsPickable=!0;P([ws.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],Ar,"_ApplySkeleton",null);Ft("BABYLON.AbstractMesh",Ar)});var kn,HW=I(()=>{Gt();br();Vt();kn=class{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=519,this.opStencilFail=7680,this.opDepthFail=7680,this.opStencilDepthPass=7681,this.backFunc=519,this.backOpStencilFail=7680,this.backOpDepthFail=7680,this.backOpStencilDepthPass=7681}get func(){return this._func}set func(e){this._func=e}get backFunc(){return this._backFunc}set backFunc(e){this._backFunc=e}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef=e}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask=e}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail=e}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail=e}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass=e}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail=e}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail=e}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass=e}get mask(){return this._mask}set mask(e){this._mask=e}get enabled(){return this._enabled}set enabled(e){this._enabled=e}getClassName(){return"MaterialStencilState"}copyTo(e){it.Clone(()=>e,this)}serialize(){return it.Serialize(this)}parse(e,t,i){it.Parse(()=>this,e,t,i)}};P([F()],kn.prototype,"func",null);P([F()],kn.prototype,"backFunc",null);P([F()],kn.prototype,"funcRef",null);P([F()],kn.prototype,"funcMask",null);P([F()],kn.prototype,"opStencilFail",null);P([F()],kn.prototype,"opDepthFail",null);P([F()],kn.prototype,"opStencilDepthPass",null);P([F()],kn.prototype,"backOpStencilFail",null);P([F()],kn.prototype,"backOpDepthFail",null);P([F()],kn.prototype,"backOpStencilDepthPass",null);P([F()],kn.prototype,"mask",null);P([F()],kn.prototype,"enabled",null)});function Wn(n){n.indexOf("vClipPlane")===-1&&n.push("vClipPlane"),n.indexOf("vClipPlane2")===-1&&n.push("vClipPlane2"),n.indexOf("vClipPlane3")===-1&&n.push("vClipPlane3"),n.indexOf("vClipPlane4")===-1&&n.push("vClipPlane4"),n.indexOf("vClipPlane5")===-1&&n.push("vClipPlane5"),n.indexOf("vClipPlane6")===-1&&n.push("vClipPlane6")}function gl(n,e,t){var c,f,d,h,u,m;let i=!!((c=n.clipPlane)!=null?c:e.clipPlane),r=!!((f=n.clipPlane2)!=null?f:e.clipPlane2),s=!!((d=n.clipPlane3)!=null?d:e.clipPlane3),a=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),o=!!((u=n.clipPlane5)!=null?u:e.clipPlane5),l=!!((m=n.clipPlane6)!=null?m:e.clipPlane6);i&&t.push("#define CLIPPLANE"),r&&t.push("#define CLIPPLANE2"),s&&t.push("#define CLIPPLANE3"),a&&t.push("#define CLIPPLANE4"),o&&t.push("#define CLIPPLANE5"),l&&t.push("#define CLIPPLANE6")}function zW(n,e,t){var f,d,h,u,m,_;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((h=n.clipPlane3)!=null?h:e.clipPlane3),o=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((_=n.clipPlane6)!=null?_:e.clipPlane6);return t.CLIPPLANE!==r&&(t.CLIPPLANE=r,i=!0),t.CLIPPLANE2!==s&&(t.CLIPPLANE2=s,i=!0),t.CLIPPLANE3!==a&&(t.CLIPPLANE3=a,i=!0),t.CLIPPLANE4!==o&&(t.CLIPPLANE4=o,i=!0),t.CLIPPLANE5!==l&&(t.CLIPPLANE5=l,i=!0),t.CLIPPLANE6!==c&&(t.CLIPPLANE6=c,i=!0),i}function Hn(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;wm(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,wm(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,wm(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,wm(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,wm(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,wm(n,"vClipPlane6",i)}function wm(n,e,t){var i;if(t){let r=((i=Oa.getScene())==null?void 0:i.floatingOriginOffset)||b.ZeroReadOnly;n.setFloat4(e,t.normal.x,t.normal.y,t.normal.z,t.d+b.Dot(t.normal,r))}}var vl=I(()=>{Pg();ke()});var ce,Ua=I(()=>{Vr();ce=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Ie.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Ie.MarkAllMaterialsAsDirty(1))}};ce._DiffuseTextureEnabled=!0;ce._BaseWeightTextureEnabled=!0;ce._BaseDiffuseRoughnessTextureEnabled=!0;ce._DetailTextureEnabled=!0;ce._DecalMapEnabled=!0;ce._AmbientTextureEnabled=!0;ce._OpacityTextureEnabled=!0;ce._ReflectionTextureEnabled=!0;ce._EmissiveTextureEnabled=!0;ce._SpecularTextureEnabled=!0;ce._BumpTextureEnabled=!0;ce._LightmapTextureEnabled=!0;ce._RefractionTextureEnabled=!0;ce._ColorGradingTextureEnabled=!0;ce._FresnelEnabled=!0;ce._ClearCoatTextureEnabled=!0;ce._ClearCoatBumpTextureEnabled=!0;ce._ClearCoatTintTextureEnabled=!0;ce._SheenTextureEnabled=!0;ce._AnisotropicTextureEnabled=!0;ce._ThicknessTextureEnabled=!0;ce._RefractionIntensityTextureEnabled=!0;ce._TranslucencyIntensityTextureEnabled=!0;ce._TranslucencyColorTextureEnabled=!0;ce._IridescenceTextureEnabled=!0});function Cf(n,e,t){if(!n||n.LOGARITHMICDEPTH||n.indexOf&&n.indexOf("LOGARITHMICDEPTH")>=0){let i=t.activeCamera;i.mode===1&&ee.Error("Logarithmic depth is not compatible with orthographic cameras!",20),e.setFloat("logarithmicDepthConstant",2/(Math.log(i.maxZ+1)/Math.LN2))}}var XW=I(()=>{Pt()});function Pf(n,e,t,i=!1){t&&n.fogEnabled&&(!e||e.applyFog)&&n.fogMode!==0&&(t.setFloat4("vFogInfos",n.fogMode,n.fogStart,n.fogEnd,n.fogDensity),i?(n.fogColor.toLinearSpaceToRef(YW,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",YW)):t.setColor3("vFogColor",n.fogColor))}function El(n,e,t,i,r,s,a,o,l,c){let f=n.numMaxInfluencers||n.numInfluencers;return f<=0?0:(e.push("#define MORPHTARGETS"),n.hasPositions&&e.push("#define MORPHTARGETTEXTURE_HASPOSITIONS"),n.hasNormals&&e.push("#define MORPHTARGETTEXTURE_HASNORMALS"),n.hasTangents&&e.push("#define MORPHTARGETTEXTURE_HASTANGENTS"),n.hasUVs&&e.push("#define MORPHTARGETTEXTURE_HASUVS"),n.hasUV2s&&e.push("#define MORPHTARGETTEXTURE_HASUV2S"),n.hasColors&&e.push("#define MORPHTARGETTEXTURE_HASCOLORS"),n.supportsPositions&&r&&e.push("#define MORPHTARGETS_POSITION"),n.supportsNormals&&s&&e.push("#define MORPHTARGETS_NORMAL"),n.supportsTangents&&a&&e.push("#define MORPHTARGETS_TANGENT"),n.supportsUVs&&o&&e.push("#define MORPHTARGETS_UV"),n.supportsUV2s&&l&&e.push("#define MORPHTARGETS_UV2"),n.supportsColors&&c&&e.push("#define MORPHTARGETS_COLOR"),e.push("#define NUM_MORPH_INFLUENCERS "+f),n.isUsingTextureForTargets&&e.push("#define MORPHTARGETS_TEXTURE"),_h.NUM_MORPH_INFLUENCERS=f,_h.NORMAL=s,_h.TANGENT=a,_h.UV=o,_h.UV2=l,_h.COLOR=c,gh(t,i,_h,r),f)}function gh(n,e,t,i=!0){let r=t.NUM_MORPH_INFLUENCERS;if(r>0&&Oe.LastCreatedEngine){let s=Oe.LastCreatedEngine.getCaps().maxVertexAttribs,a=e.morphTargetManager;if(a!=null&&a.isUsingTextureForTargets)return;let o=a&&a.supportsPositions&&i,l=a&&a.supportsNormals&&t.NORMAL,c=a&&a.supportsTangents&&t.TANGENT,f=a&&a.supportsUVs&&t.UV1,d=a&&a.supportsUV2s&&t.UV2,h=a&&a.supportsColors&&t.VERTEXCOLOR;for(let u=0;us&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function yo(n,e=!1){n.push("world0"),n.push("world1"),n.push("world2"),n.push("world3"),e&&(n.push("previousWorld0"),n.push("previousWorld1"),n.push("previousWorld2"),n.push("previousWorld3"))}function zn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function Df(n,e){e.bindToEffect(n,"Scene")}function Fm(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&ce.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let h=r;t.updateVector3("vReflectionPosition",h.boundingBoxPosition),t.updateVector3("vReflectionSize",h.boundingBoxSize)}if(s){let h=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",h,Math.log2(h))}if(c&&!e.USEIRRADIANCEMAP){let h=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&h)if(e.SPHERICAL_HARMONICS){let u=h.preScaledHarmonics;t.updateVector3("vSphericalL00",u.l00),t.updateVector3("vSphericalL1_1",u.l1_1),t.updateVector3("vSphericalL10",u.l10),t.updateVector3("vSphericalL11",u.l11),t.updateVector3("vSphericalL2_2",u.l2_2),t.updateVector3("vSphericalL2_1",u.l2_1),t.updateVector3("vSphericalL20",u.l20),t.updateVector3("vSphericalL21",u.l21),t.updateVector3("vSphericalL22",u.l22)}else t.updateFloat3("vSphericalX",h.x.x,h.x.y,h.x.z),t.updateFloat3("vSphericalY",h.y.x,h.y.y,h.y.z),t.updateFloat3("vSphericalZ",h.z.x,h.z.y,h.z.z),t.updateFloat3("vSphericalXX_ZZ",h.xx.x-h.zz.x,h.xx.y-h.zz.y,h.xx.z-h.zz.z),t.updateFloat3("vSphericalYY_ZZ",h.yy.x-h.zz.x,h.yy.y-h.zz.y,h.yy.z-h.zz.z),t.updateFloat3("vSphericalZZ",h.zz.x,h.zz.y,h.zz.z),t.updateFloat3("vSphericalXY",h.xy.x,h.xy.y,h.xy.z),t.updateFloat3("vSphericalYZ",h.yz.x,h.yz.y,h.yz.z),t.updateFloat3("vSphericalZX",h.zx.x,h.zx.y,h.zx.z)}else l&&e.USEIRRADIANCEMAP&&e.USE_IRRADIANCE_DOMINANT_DIRECTION&&r.irradianceTexture&&t.updateVector3("vReflectionDominantDirection",r.irradianceTexture._dominantDirection);a&&t.updateFloat3("vReflectionMicrosurfaceInfos",r.getSize().width,r.lodGenerationScale,r.lodGenerationOffset)}f&&t.updateColor3("vReflectionColor",i)}function wx(n,e,t,i=null,r=!1){if(i&&ce.ReflectionTextureEnabled){e.LODBASEDMICROSFURACE?t.setTexture("reflectionSampler",i):(t.setTexture("reflectionSampler",i._lodTextureMid||i),t.setTexture("reflectionSamplerLow",i._lodTextureLow||i),t.setTexture("reflectionSamplerHigh",i._lodTextureHigh||i)),e.USEIRRADIANCEMAP&&t.setTexture("irradianceSampler",i.irradianceTexture);let s=n.iblCdfGenerator;r&&s&&t.setTexture("icdfSampler",s.getIcdfTexture())}}function ri(n,e,t){e._needUVs=!0,e[t]=!0,n.optimizeUVAllocation&&n.getTextureMatrix().isIdentityAs3x2()?(e[t+"DIRECTUV"]=n.coordinatesIndex+1,e["MAINUV"+(n.coordinatesIndex+1)]=!0):e[t+"DIRECTUV"]=0}function ni(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function Bm(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function qce(n,e){return e.set(n),e}function Vs(n,e,t){if(!(!e||!n)&&(n.computeBonesUsingShaders&&e._bonesComputationForcedToCPU&&(n.computeBonesUsingShaders=!1),n.useBones&&n.computeBonesUsingShaders&&n.skeleton)){let i=n.skeleton;if(i.isUsingTextureForMatrices&&e.getUniformIndex("boneTextureInfo")>-1){let r=i.getTransformMatrixTexture(n);e.setTexture("boneSampler",r),e.setFloat2("boneTextureInfo",i._textureWidth,i._textureHeight)}else{let r=i.getTransformMatrices(n);r&&(e.setMatrices("mBones",r),t&&n.getScene().prePassRenderer&&n.getScene().prePassRenderer.getIndex(2)&&(t.previousBones[n.uniqueId]||(t.previousBones[n.uniqueId]=r.slice()),e.setMatrices("mPreviousBones",t.previousBones[n.uniqueId]),qce(r,t.previousBones[n.uniqueId])))}}}function Zce(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function Um(n,e,t,i,r=4){let s=Math.min(e.lightSources.length,r);for(let a=0;a0&&(i.addCPUSkinningFallback(0,e),n.push("matricesIndices"),n.push("matricesWeights"),t.NUM_BONE_INFLUENCERS>4&&(n.push("matricesIndicesExtra"),n.push("matricesWeightsExtra")))}function Gm(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&yo(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function km(n,e,t=4,i=0){let r=0;for(let s=0;s0&&(r=i+s,e.addFallback(r,"LIGHT"+s)),n.SHADOWS||(n["SHADOW"+s]&&e.addFallback(i,"SHADOW"+s),n["SHADOWPCF"+s]&&e.addFallback(i,"SHADOWPCF"+s),n["SHADOWPCSS"+s]&&e.addFallback(i,"SHADOWPCSS"+s),n["SHADOWPOISSON"+s]&&e.addFallback(i,"SHADOWPOISSON"+s),n["SHADOWESM"+s]&&e.addFallback(i,"SHADOWESM"+s),n["SHADOWCLOSEESM"+s]&&e.addFallback(i,"SHADOWCLOSEESM"+s));return r}function Qce(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function Wm(n,e,t,i,r,s,a,o=!1,l=!1,c,f){var d;if(a._areMiscDirty){a.LOGARITHMICDEPTH=t,a.POINTSIZE=i,a.FOG=r&&Qce(n,e),a.NONUNIFORMSCALING=n.nonUniformScaling,a.ALPHATEST=s,a.DECAL_AFTER_DETAIL=o,a.USE_VERTEX_PULLING=l,a.RIGHT_HANDED=e.useRightHandedSystem;let h=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),u=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!h&&!u,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=h&&!u?h.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function Hm(n,e,t,i=!1){if(!n.lightsEnabled||i)return!0;let r=e.lightSources,s=Math.min(r.length,t);for(let a=0;a0?(t.NUM_SAMPLES=""+r,a._features.needTypeSuffixInShaderConstants&&(t.NUM_SAMPLES=t.NUM_SAMPLES+"u"),t.REALTIME_FILTERING=!0,n.iblCdfGenerator&&(t.IBL_CDF_FILTERING=!0)):t.REALTIME_FILTERING=!1,t.INVERTCUBICMAP=e.coordinatesMode===ge.INVCUBIC_MODE,t.REFLECTIONMAP_3D=e.isCube,t.REFLECTIONMAP_OPPOSITEZ=t.REFLECTIONMAP_3D&&n.useRightHandedSystem?!e.invertZ:e.invertZ,t.REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,e.coordinatesMode){case ge.EXPLICIT_MODE:t.REFLECTIONMAP_EXPLICIT=!0;break;case ge.PLANAR_MODE:t.REFLECTIONMAP_PLANAR=!0;break;case ge.PROJECTION_MODE:t.REFLECTIONMAP_PROJECTION=!0;break;case ge.SKYBOX_MODE:t.REFLECTIONMAP_SKYBOX=!0;break;case ge.SPHERICAL_MODE:t.REFLECTIONMAP_SPHERICAL=!0;break;case ge.EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR=!0;break;case ge.FIXED_EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!0;break;case ge.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!0;break;case ge.CUBIC_MODE:case ge.INVCUBIC_MODE:default:t.REFLECTIONMAP_CUBIC=!0,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!!e.boundingBoxSize;break}e.coordinatesMode!==ge.SKYBOX_MODE&&(e.irradianceTexture?(t.USEIRRADIANCEMAP=!0,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USESPHERICALINVERTEX=!1,e.irradianceTexture._dominantDirection?t.USE_IRRADIANCE_DOMINANT_DIRECTION=!0:t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1):e.isCube&&(t.USESPHERICALFROMREFLECTIONMAP=!0,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=s))}else t.REFLECTION=!1,t.REFLECTIONMAP_3D=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_CUBIC=!1,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,t.INVERTCUBICMAP=!1,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=!1,t.REFLECTIONMAP_OPPOSITEZ=!1,t.LODINREFLECTIONALPHA=!1,t.GAMMAREFLECTION=!1,t.RGBDREFLECTION=!1,t.LINEARSPECULARREFLECTION=!1;return!0}function $ce(n,e,t,i,r,s,a){var o;switch(a.needNormals=!0,r["LIGHT"+i]===void 0&&(a.needRebuild=!0),r["LIGHT"+i]=!0,r["SPOTLIGHT"+i]=!1,r["HEMILIGHT"+i]=!1,r["POINTLIGHT"+i]=!1,r["DIRLIGHT"+i]=!1,r["AREALIGHT"+i]=!1,r["CLUSTLIGHT"+i]=!1,t.prepareLightSpecificDefines(r,i),r["LIGHT_FALLOFF_PHYSICAL"+i]=!1,r["LIGHT_FALLOFF_GLTF"+i]=!1,r["LIGHT_FALLOFF_STANDARD"+i]=!1,t.falloffType){case Xt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case Xt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case Xt.FALLOFF_STANDARD:r["LIGHT_FALLOFF_STANDARD"+i]=!0;break}if(s&&!t.specular.equalsFloats(0,0,0)&&(a.specularEnabled=!0),r["SHADOW"+i]=!1,r["SHADOWCSM"+i]=!1,r["SHADOWCSMDEBUG"+i]=!1,r["SHADOWCSMNUM_CASCADES"+i]=!1,r["SHADOWCSMUSESHADOWMAXZ"+i]=!1,r["SHADOWCSMNOBLEND"+i]=!1,r["SHADOWCSM_RIGHTHANDED"+i]=!1,r["SHADOWPCF"+i]=!1,r["SHADOWPCSS"+i]=!1,r["SHADOWPOISSON"+i]=!1,r["SHADOWESM"+i]=!1,r["SHADOWCLOSEESM"+i]=!1,r["SHADOWCUBE"+i]=!1,r["SHADOWLOWQUALITY"+i]=!1,r["SHADOWMEDIUMQUALITY"+i]=!1,e&&e.receiveShadows&&n.shadowsEnabled&&t.shadowEnabled){let l=(o=t.getShadowGenerator(n.activeCamera))!=null?o:t.getShadowGenerator();if(l){let c=l.getShadowMap();c&&c.renderList&&c.renderList.length>0&&(a.shadowEnabled=!0,l.prepareDefines(r,i))}}t.lightmapMode!=Xt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==Xt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function Xm(n,e,t,i,r,s=null,a=!1){let o=ife(n,i);s!==!1&&(o=zW(t,n,i)),i.DEPTHPREPASS!==!e.getColorWrite()&&(i.DEPTHPREPASS=!i.DEPTHPREPASS,o=!0),i.INSTANCES!==r&&(i.INSTANCES=r,o=!0),i.THIN_INSTANCES!==a&&(i.THIN_INSTANCES=a,o=!0),o&&i.markAsUnprocessed()}function Jce(n,e){if(n.useBones&&n.computeBonesUsingShaders&&n.skeleton){e.NUM_BONE_INFLUENCERS=n.numBoneInfluencers;let t=e.BONETEXTURE!==void 0;if(n.skeleton.isUsingTextureForMatrices&&t)e.BONETEXTURE=!0;else{e.BonesPerMesh=n.skeleton.bones.length+1,e.BONETEXTURE=t?!1:void 0;let i=n.getScene().prePassRenderer;if(i&&i.enabled){let r=i.excludedSkinnedMesh.indexOf(n)===-1;e.BONES_VELOCITY_ENABLED=r}}}else e.NUM_BONE_INFLUENCERS=0,e.BonesPerMesh=0,e.BONETEXTURE!==void 0&&(e.BONETEXTURE=!1)}function efe(n,e){let t=n.morphTargetManager;t?(e.MORPHTARGETS_UV=t.supportsUVs&&e.UV1,e.MORPHTARGETS_UV2=t.supportsUV2s&&e.UV2,e.MORPHTARGETS_TANGENT=t.supportsTangents&&e.TANGENT,e.MORPHTARGETS_NORMAL=t.supportsNormals&&e.NORMAL,e.MORPHTARGETS_POSITION=t.supportsPositions,e.MORPHTARGETS_COLOR=t.supportsColors,e.MORPHTARGETTEXTURE_HASUVS=t.hasUVs,e.MORPHTARGETTEXTURE_HASUV2S=t.hasUV2s,e.MORPHTARGETTEXTURE_HASTANGENTS=t.hasTangents,e.MORPHTARGETTEXTURE_HASNORMALS=t.hasNormals,e.MORPHTARGETTEXTURE_HASPOSITIONS=t.hasPositions,e.MORPHTARGETTEXTURE_HASCOLORS=t.hasColors,e.NUM_MORPH_INFLUENCERS=t.numMaxInfluencers||t.numInfluencers,e.MORPHTARGETS=e.NUM_MORPH_INFLUENCERS>0,e.MORPHTARGETS_TEXTURE=t.isUsingTextureForTargets):(e.MORPHTARGETS_UV=!1,e.MORPHTARGETS_UV2=!1,e.MORPHTARGETS_TANGENT=!1,e.MORPHTARGETS_NORMAL=!1,e.MORPHTARGETS_POSITION=!1,e.MORPHTARGETS_COLOR=!1,e.MORPHTARGETTEXTURE_HASUVS=!1,e.MORPHTARGETTEXTURE_HASUV2S=!1,e.MORPHTARGETTEXTURE_HASTANGENTS=!1,e.MORPHTARGETTEXTURE_HASNORMALS=!1,e.MORPHTARGETTEXTURE_HASPOSITIONS=!1,e.MORPHTARGETTEXTURE_HAS_COLORS=!1,e.MORPHTARGETS=!1,e.NUM_MORPH_INFLUENCERS=0)}function tfe(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function Ym(n,e,t,i,r=!1,s=!0,a=!0){if(!e._areAttributesDirty&&e._needNormals===e._normals&&e._needUVs===e._uvs)return!1;e._normals=e._needNormals,e._uvs=e._needUVs,e.NORMAL=e._needNormals&&n.isVerticesDataPresent("normal"),e._needNormals&&n.isVerticesDataPresent("tangent")&&(e.TANGENT=!0);for(let o=1;o<=6;++o)e["UV"+o]=e._needUVs?n.isVerticesDataPresent(`uv${o===1?"":o}`):!1;if(t){let o=n.useVertexColors&&n.isVerticesDataPresent("color");e.VERTEXCOLOR=o,e.VERTEXALPHA=n.hasVertexAlpha&&o&&s}return n.isVerticesDataPresent("instanceColor")&&(n.hasInstances||n.hasThinInstances)&&(e.INSTANCESCOLOR=!0),i&&Jce(n,e),r&&efe(n,e),a&&tfe(n,e),!0}function Km(n,e){if(n.activeCamera){let t=e.MULTIVIEW;e.MULTIVIEW=n.activeCamera.outputRenderTarget!==null&&n.activeCamera.outputRenderTarget.getViewCount()>1,e.MULTIVIEW!=t&&e.markAsUnprocessed()}}function jm(n,e,t){let i=e.ORDER_INDEPENDENT_TRANSPARENCY,r=e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS;e.ORDER_INDEPENDENT_TRANSPARENCY=n.useOrderIndependentTransparency&&t,e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!n.getEngine().getCaps().textureFloatLinearFiltering,(i!==e.ORDER_INDEPENDENT_TRANSPARENCY||r!==e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS)&&e.markAsUnprocessed()}function qm(n,e,t){let i=e.PREPASS;if(!e._arePrePassDirty)return;let r=[{type:1,define:"PREPASS_POSITION",index:"PREPASS_POSITION_INDEX"},{type:9,define:"PREPASS_LOCAL_POSITION",index:"PREPASS_LOCAL_POSITION_INDEX"},{type:2,define:"PREPASS_VELOCITY",index:"PREPASS_VELOCITY_INDEX"},{type:11,define:"PREPASS_VELOCITY_LINEAR",index:"PREPASS_VELOCITY_LINEAR_INDEX"},{type:3,define:"PREPASS_REFLECTIVITY",index:"PREPASS_REFLECTIVITY_INDEX"},{type:0,define:"PREPASS_IRRADIANCE_LEGACY",index:"PREPASS_IRRADIANCE_LEGACY_INDEX"},{type:7,define:"PREPASS_ALBEDO_SQRT",index:"PREPASS_ALBEDO_SQRT_INDEX"},{type:5,define:"PREPASS_DEPTH",index:"PREPASS_DEPTH_INDEX"},{type:10,define:"PREPASS_SCREENSPACE_DEPTH",index:"PREPASS_SCREENSPACE_DEPTH_INDEX"},{type:6,define:"PREPASS_NORMAL",index:"PREPASS_NORMAL_INDEX"},{type:8,define:"PREPASS_WORLD_NORMAL",index:"PREPASS_WORLD_NORMAL_INDEX"},{type:14,define:"PREPASS_IRRADIANCE",index:"PREPASS_IRRADIANCE_INDEX"}];if(n.prePassRenderer&&n.prePassRenderer.enabled&&t){e.PREPASS=!0,e.SCENE_MRT_COUNT=n.prePassRenderer.mrtCount,e.PREPASS_NORMAL_WORLDSPACE=n.prePassRenderer.generateNormalsInWorldSpace,e.PREPASS_COLOR=!0,e.PREPASS_COLOR_INDEX=0;for(let s=0;s{Pt();Ni();Tg();vl();Ua();Gr();XW();YW={r:0,g:0,b:0},_h={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Se,Yn=I(()=>{Gt();Vt();yi();hi();Ni();Wg();Af();Pt();um();oh();HW();Xn();br();oC();Se=class n{get useVertexPulling(){return this._useVertexPulling}set useVertexPulling(e){this._useVertexPulling!==e&&(this._useVertexPulling=e,this.markAsDirty(n.MiscDirtyFlag))}get _supportGlowLayer(){return!1}set _glowModeEnabled(e){}get shaderLanguage(){return this._shaderLanguage}get canRenderToMRT(){return!1}set alpha(e){if(this._alpha===e)return;let t=this._alpha;this._alpha=e,(t===1||e===1)&&this.markAsDirty(n.MiscDirtyFlag+n.PrePassDirtyFlag)}get alpha(){return this._alpha}set backFaceCulling(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,this.markAsDirty(n.TextureDirtyFlag))}get backFaceCulling(){return this._backFaceCulling}set cullBackFaces(e){this._cullBackFaces!==e&&(this._cullBackFaces=e,this.markAsDirty(n.TextureDirtyFlag))}get cullBackFaces(){return this._cullBackFaces}get blockDirtyMechanism(){return this._blockDirtyMechanism}set blockDirtyMechanism(e){this._blockDirtyMechanism!==e&&(this._blockDirtyMechanism=e,e||this.markDirty())}atomicMaterialsUpdate(e){this.blockDirtyMechanism=!0;try{e(this)}finally{this.blockDirtyMechanism=!1}}get hasRenderTargetTextures(){return this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._eventInfo.hasRenderTargetTextures}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new ie),this._onBindObservable}set onBind(e){this._onBindObserver&&this.onBindObservable.remove(this._onBindObserver),this._onBindObserver=this.onBindObservable.add(e)}get onUnBindObservable(){return this._onUnBindObservable||(this._onUnBindObservable=new ie),this._onUnBindObservable}get onEffectCreatedObservable(){return this._onEffectCreatedObservable||(this._onEffectCreatedObservable=new ie),this._onEffectCreatedObservable}set alphaMode(e){this._alphaMode[0]!==e&&(this._alphaMode[0]=e,this.markAsDirty(n.TextureDirtyFlag))}get alphaMode(){return this._alphaMode[0]}get alphaModes(){return this._alphaMode}setAlphaMode(e,t=0){this._alphaMode[t]!==e&&(this._alphaMode[t]=e,this.markAsDirty(n.TextureDirtyFlag))}set needDepthPrePass(e){this._needDepthPrePass!==e&&(this._needDepthPrePass=e,this._needDepthPrePass&&(this.checkReadyOnEveryCall=!0))}get needDepthPrePass(){return this._needDepthPrePass}get isPrePassCapable(){return!1}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAsDirty(n.MiscDirtyFlag))}get fogEnabled(){return this._fogEnabled}get wireframe(){switch(this._fillMode){case n.WireFrameFillMode:case n.LineListDrawMode:case n.LineLoopDrawMode:case n.LineStripDrawMode:return!0}return this._scene.forceWireframe}set wireframe(e){this.fillMode=e?n.WireFrameFillMode:n.TriangleFillMode}get pointsCloud(){switch(this._fillMode){case n.PointFillMode:case n.PointListDrawMode:return!0}return this._scene.forcePointsCloud}set pointsCloud(e){this.fillMode=e?n.PointFillMode:n.TriangleFillMode}get fillMode(){return this._fillMode}set fillMode(e){this._fillMode!==e&&(this._fillMode=e,this.markAsDirty(n.MiscDirtyFlag))}get useLogarithmicDepth(){return this._useLogarithmicDepth}set useLogarithmicDepth(e){let t=this.getScene().getEngine().getCaps().fragmentDepthSupported;e&&!t&&ee.Warn("Logarithmic depth has been requested for a material on a device that doesn't support it."),this._useLogarithmicDepth=e&&t,this._markAllSubMeshesAsMiscDirty()}get isVertexOutputInvariant(){return this._isVertexOutputInvariant}set isVertexOutputInvariant(e){this._isVertexOutputInvariant!==e&&(this._isVertexOutputInvariant=e,this._markAllSubMeshesAsMiscDirty())}_getDrawWrapper(){return this._drawWrapper}_setDrawWrapper(e){this._drawWrapper=e}constructor(e,t,i,r=!1){this.shadowDepthWrapper=null,this.allowShaderHotSwapping=!0,this._shaderLanguage=0,this._forceGLSL=!1,this._useVertexPulling=!1,this.metadata=null,this.reservedDataStore=null,this.checkReadyOnEveryCall=!1,this.checkReadyOnlyOnce=!1,this.state="",this._alpha=1,this._backFaceCulling=!0,this._cullBackFaces=!0,this._blockDirtyMechanism=!1,this.sideOrientation=null,this.onCompiled=null,this.onError=null,this.getRenderTargetTextures=null,this.doNotSerialize=!1,this._storeEffectOnSubMeshes=!1,this.animations=null,this.onDisposeObservable=new ie,this._onDisposeObserver=null,this._onUnBindObservable=null,this._onBindObserver=null,this._alphaMode=[2],this._needDepthPrePass=!1,this.disableDepthWrite=!1,this.disableColorWrite=!1,this.forceDepthWrite=!1,this.depthFunction=0,this.separateCullingPass=!1,this._fogEnabled=!0,this.pointSize=1,this.zOffset=0,this.zOffsetUnits=0,this.stencil=new kn,this._isVertexOutputInvariant=n.ForceVertexOutputInvariant,this._useUBO=!1,this._fillMode=n.TriangleFillMode,this._cachedDepthWriteState=!1,this._cachedColorWriteState=!1,this._cachedDepthFunctionState=0,this._indexInSceneMaterialArray=-1,this.meshMap=null,this._parentContainer=null,this._uniformBufferLayoutBuilt=!1,this._eventInfo={},this._callbackPluginEventGeneric=()=>{},this._callbackPluginEventIsReadyForSubMesh=()=>{},this._callbackPluginEventPrepareDefines=()=>{},this._callbackPluginEventPrepareDefinesBeforeAttributes=()=>{},this._callbackPluginEventHardBindForSubMesh=()=>{},this._callbackPluginEventBindForSubMesh=()=>{},this._callbackPluginEventHasRenderTargetTextures=()=>{},this._callbackPluginEventFillRenderTargetTextures=()=>{},this._transparencyMode=null,this.name=e;let s=t||Oe.LastCreatedScene;s&&(this._scene=s,this._dirtyCallbacks={},this._forceGLSL=r,this._dirtyCallbacks[1]=this._markAllSubMeshesAsTexturesDirty.bind(this),this._dirtyCallbacks[2]=this._markAllSubMeshesAsLightsDirty.bind(this),this._dirtyCallbacks[4]=this._markAllSubMeshesAsFresnelDirty.bind(this),this._dirtyCallbacks[8]=this._markAllSubMeshesAsAttributesDirty.bind(this),this._dirtyCallbacks[16]=this._markAllSubMeshesAsMiscDirty.bind(this),this._dirtyCallbacks[32]=this._markAllSubMeshesAsPrePassDirty.bind(this),this._dirtyCallbacks[127]=this._markAllSubMeshesAsAllDirty.bind(this),this.id=e||_e.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new cs(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new mr(this._scene.getEngine(),void 0,void 0,e),this._useUBO=this.getScene().getEngine().supportsUniformBuffers,this._createUniformBuffer(),i||this._scene.addMaterial(this),this._scene.useMaterialMeshMap&&(this.meshMap={}),n.OnEventObservable.notifyObservers(this,1))}_createUniformBuffer(){var t;let e=this.getScene().getEngine();(t=this._uniformBuffer)==null||t.dispose(),e.isWebGPU&&!this._forceGLSL?(this._uniformBuffer=new mr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new mr(this._scene.getEngine(),void 0,void 0,this.name),this._uniformBufferLayoutBuilt=!1}toString(e){return"Name: "+this.name}getClassName(){return"Material"}get _isMaterial(){return!0}get isFrozen(){return this.checkReadyOnlyOnce}freeze(){this.markDirty(),this.checkReadyOnlyOnce=!0}unfreeze(){this.markDirty(),this.checkReadyOnlyOnce=!1}isReady(e,t){return!0}isReadyForSubMesh(e,t,i){let r=t.materialDefines;return r?(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=r,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),this._eventInfo.isReadyForSubMesh):!1}getEffect(){return this._drawWrapper.effect}getScene(){return this._scene}_getEffectiveOrientation(e){return this.sideOrientation!==null?this.sideOrientation:e.sideOrientation}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}get _hasTransparencyMode(){return this._transparencyMode!=null}get _transparencyModeIsBlend(){return this._transparencyMode===n.MATERIAL_ALPHABLEND||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _transparencyModeIsTest(){return this._transparencyMode===n.MATERIAL_ALPHATEST||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _disableAlphaBlending(){return this._transparencyMode===n.MATERIAL_OPAQUE||this._transparencyMode===n.MATERIAL_ALPHATEST}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1}needAlphaBlendingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsBlend:e.visibility<1?!0:this._disableAlphaBlending?!1:e.hasVertexAlpha||this.needAlphaBlending()}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:!1}needAlphaTestingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsTest:!this.needAlphaBlendingForMesh(e)&&this.needAlphaTesting()}getAlphaTestTexture(){return null}markDirty(e=!1){let t=this.getScene().meshes;for(let i of t)if(i.subMeshes){for(let r of i.subMeshes)if(r.getMaterial()===this)for(let s of r._drawWrappers)s&&this._materialContext===s.materialContext&&(s._wasPreviouslyReady=!1,s._wasPreviouslyUsingInstances=null,s._forceRebindOnNextCall=e)}e&&this.markAsDirty(n.AllDirtyFlag)}_preBind(e,t=null){let i=this._scene.getEngine(),s=(t==null?this.sideOrientation:t)===n.ClockWiseSideOrientation,a=e||this._getDrawWrapper();return CA(a)&&a.materialContext&&(a.materialContext.useVertexPulling=this.useVertexPulling),i.enableEffect(a),i.setState(this.backFaceCulling,this.zOffset,!1,s,this._scene._mirroredCameraPosition?!this.cullBackFaces:this.cullBackFaces,this.stencil,this.zOffsetUnits),s}bind(e,t){}buildUniformLayout(){let e=this._uniformBuffer;this._eventInfo.ubo=e,this._callbackPluginEventGeneric(8,this._eventInfo),e.create(),this._uniformBufferLayoutBuilt=!0}bindForSubMesh(e,t,i){let r=i._drawWrapper;this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),r._forceRebindOnNextCall=!1}bindOnlyWorldMatrix(e){}bindView(e){this._useUBO?this._needToBindSceneUbo=!0:e.setMatrix("view",this.getScene().getViewMatrix())}bindViewProjection(e){this._useUBO?this._needToBindSceneUbo=!0:(e.setMatrix("viewProjection",this.getScene().getTransformMatrix()),e.setMatrix("projection",this.getScene().getProjectionMatrix()),e.setMatrix("inverseProjection",this.getScene().getInverseProjectionMatrix()))}bindEyePosition(e,t){this._useUBO?this._needToBindSceneUbo=!0:this._scene.bindEyePosition(e,t)}_afterBind(e,t=null,i){if(this._scene._cachedMaterial=this,this._needToBindSceneUbo&&t&&(this._needToBindSceneUbo=!1,Df(t,this.getScene().getSceneUniformBuffer()),this._scene.finalizeSceneUbo()),e?this._scene._cachedVisibility=e.visibility:this._scene._cachedVisibility=1,this._onBindObservable&&e&&this._onBindObservable.notifyObservers(e),this.disableDepthWrite){let r=this._scene.getEngine();this._cachedDepthWriteState=r.getDepthWrite(),r.setDepthWrite(!1)}if(this.disableColorWrite){let r=this._scene.getEngine();this._cachedColorWriteState=r.getColorWrite(),r.setColorWrite(!1)}if(this.depthFunction!==0){let r=this._scene.getEngine();this._cachedDepthFunctionState=r.getDepthFunction()||0,r.setDepthFunction(this.depthFunction)}}unbind(){this._scene.getSceneUniformBuffer().unbindEffect(),this._onUnBindObservable&&this._onUnBindObservable.notifyObservers(this),this.depthFunction!==0&&this._scene.getEngine().setDepthFunction(this._cachedDepthFunctionState),this.disableDepthWrite&&this._scene.getEngine().setDepthWrite(this._cachedDepthWriteState),this.disableColorWrite&&this._scene.getEngine().setColorWrite(this._cachedColorWriteState)}getAnimatables(){return this._eventInfo.animatables=[],this._callbackPluginEventGeneric(256,this._eventInfo),this._eventInfo.animatables}getActiveTextures(){return this._eventInfo.activeTextures=[],this._callbackPluginEventGeneric(512,this._eventInfo),this._eventInfo.activeTextures}hasTexture(e){return this._eventInfo.hasTexture=!1,this._eventInfo.texture=e,this._callbackPluginEventGeneric(1024,this._eventInfo),this._eventInfo.hasTexture}clone(e){return null}_clonePlugins(e,t){let i={};if(this._serializePlugins(i),n._ParsePlugins(i,e,this._scene,t),this.pluginManager)for(let r of this.pluginManager._plugins){let s=e.pluginManager.getPlugin(r.name);s&&r.copyTo(s)}}getBindedMeshes(){if(this.meshMap){let e=[];for(let t in this.meshMap){let i=this.meshMap[t];i&&e.push(i)}return e}else return this._scene.meshes.filter(t=>t.material===this)}forceCompilation(e,t,i,r){let s={clipPlane:!1,useInstances:!1,...i},a=this.getScene(),o=this.allowShaderHotSwapping;this.allowShaderHotSwapping=!1;let l=()=>{if(!this._scene||!this._scene.getEngine())return;let c=a.clipPlane;if(s.clipPlane&&(a.clipPlane=new _o(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let h=new Us(0,0,0,0,0,e,void 0,!1,!1);h.materialDefines&&(h.materialDefines._renderId=-1),this.isReadyForSubMesh(e,h,s.useInstances)||(h.effect&&h.effect.getCompilationError()&&h.effect.allFallbacksProcessed()?d=h.effect.getCompilationError():(f=!1,setTimeout(l,16)))}f&&(this.allowShaderHotSwapping=o,d&&r&&r(d),t&&t(this))}else this.isReady()?(this.allowShaderHotSwapping=o,t&&t(this)):setTimeout(l,16);s.clipPlane&&(a.clipPlane=c)};l()}async forceCompilationAsync(e,t){return await new Promise((i,r)=>{this.forceCompilation(e,()=>{i()},t,s=>{r(s)})})}markAsDirty(e){this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism||(n._DirtyCallbackArray.length=0,e&n.ImageProcessingDirtyFlag&&n._DirtyCallbackArray.push(n._ImageProcessingDirtyCallBack),e&n.TextureDirtyFlag&&n._DirtyCallbackArray.push(n._TextureDirtyCallBack),e&n.LightDirtyFlag&&n._DirtyCallbackArray.push(n._LightsDirtyCallBack),e&n.FresnelDirtyFlag&&n._DirtyCallbackArray.push(n._FresnelDirtyCallBack),e&n.AttributesDirtyFlag&&n._DirtyCallbackArray.push(n._AttributeDirtyCallBack),e&n.MiscDirtyFlag&&n._DirtyCallbackArray.push(n._MiscDirtyCallBack),e&n.PrePassDirtyFlag&&n._DirtyCallbackArray.push(n._PrePassDirtyCallBack),n._DirtyCallbackArray.length&&this._markAllSubMeshesAsDirty(n._RunDirtyCallBacks),this.getScene().resetCachedMaterial())}resetDrawCache(){let e=this.getScene().meshes;for(let t of e)if(t.subMeshes)for(let i of t.subMeshes)i.getMaterial()===this&&i.resetDrawCache()}_markAllSubMeshesAsDirty(e){let t=this.getScene();if(t.blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let i=t.meshes;for(let r of i)if(r.subMeshes){for(let s of r.subMeshes)if((s.getMaterial()||(t._hasDefaultMaterial?t.defaultMaterial:null))===this)for(let o of s._drawWrappers)!o||!o.defines||!o.defines.markAllAsDirty||this._materialContext===o.materialContext&&e(o.defines)}}_markScenePrePassDirty(){if(this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let e=this.getScene().enablePrePassRenderer();e&&e.markAsDirty()}_markAllSubMeshesAsAllDirty(){this._markAllSubMeshesAsDirty(n._AllDirtyCallBack)}_markAllSubMeshesAsImageProcessingDirty(){this._markAllSubMeshesAsDirty(n._ImageProcessingDirtyCallBack)}_markAllSubMeshesAsTexturesDirty(){this._markAllSubMeshesAsDirty(n._TextureDirtyCallBack)}_markAllSubMeshesAsFresnelDirty(){this._markAllSubMeshesAsDirty(n._FresnelDirtyCallBack)}_markAllSubMeshesAsFresnelAndMiscDirty(){this._markAllSubMeshesAsDirty(n._FresnelAndMiscDirtyCallBack)}_markAllSubMeshesAsLightsDirty(){this._markAllSubMeshesAsDirty(n._LightsDirtyCallBack)}_markAllSubMeshesAsAttributesDirty(){this._markAllSubMeshesAsDirty(n._AttributeDirtyCallBack)}_markAllSubMeshesAsMiscDirty(){this._markAllSubMeshesAsDirty(n._MiscDirtyCallBack)}_markAllSubMeshesAsPrePassDirty(){this._markAllSubMeshesAsDirty(n._PrePassDirtyCallBack)}_markAllSubMeshesAsTexturesAndMiscDirty(){this._markAllSubMeshesAsDirty(n._TextureAndMiscDirtyCallBack)}_checkScenePerformancePriority(){if(this._scene.performancePriority!==0){this.checkReadyOnlyOnce=!0;let e=this._scene.onScenePerformancePriorityChangedObservable.addOnce(()=>{this.checkReadyOnlyOnce=!1});this.onDisposeObservable.add(()=>{this._scene.onScenePerformancePriorityChangedObservable.remove(e)})}}setPrePassRenderer(e){return!1}dispose(e,t,i){let r=this.getScene();if(r.stopAnimation(this),r.freeProcessedMaterials(),r.removeMaterial(this),this._eventInfo.forceDisposeTextures=t,this._callbackPluginEventGeneric(2,this._eventInfo),this._parentContainer){let s=this._parentContainer.materials.indexOf(this);s>-1&&this._parentContainer.materials.splice(s,1),this._parentContainer=null}if(i!==!0)if(this.meshMap)for(let s in this.meshMap){let a=this.meshMap[s];this._disposeMeshResources(a)}else{let s=r.meshes;for(let a of s)this._disposeMeshResources(a)}this._uniformBuffer.dispose(),this._drawWrapper.effect&&(this._storeEffectOnSubMeshes||this._drawWrapper.effect.dispose(),this._drawWrapper.effect=null),this.metadata=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this._onBindObservable&&this._onBindObservable.clear(),this._onUnBindObservable&&this._onUnBindObservable.clear(),this._onEffectCreatedObservable&&this._onEffectCreatedObservable.clear(),this._eventInfo&&(this._eventInfo={})}_disposeMeshResources(e){var r;if(!e)return;let t=e.geometry,i=e._internalAbstractMeshDataInfo._materialForRenderPass;if(this._storeEffectOnSubMeshes){if(e.subMeshes&&i)for(let s of e.subMeshes){let a=s._drawWrappers;for(let o=0;on.markAllAsDirty();Se._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Se._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Se._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Se._MiscDirtyCallBack=n=>n.markAsMiscDirty();Se._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Se._LightsDirtyCallBack=n=>n.markAsLightDirty();Se._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Se._FresnelAndMiscDirtyCallBack=n=>{Se._FresnelDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._TextureAndMiscDirtyCallBack=n=>{Se._TextureDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._DirtyCallbackArray=[];Se._RunDirtyCallBacks=n=>{for(let e of Se._DirtyCallbackArray)e(n)};P([F()],Se.prototype,"id",void 0);P([F()],Se.prototype,"uniqueId",void 0);P([F()],Se.prototype,"name",void 0);P([F()],Se.prototype,"metadata",void 0);P([F()],Se.prototype,"checkReadyOnEveryCall",void 0);P([F()],Se.prototype,"checkReadyOnlyOnce",void 0);P([F()],Se.prototype,"state",void 0);P([F("alpha")],Se.prototype,"_alpha",void 0);P([F("backFaceCulling")],Se.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Se.prototype,"_cullBackFaces",void 0);P([F()],Se.prototype,"sideOrientation",void 0);P([F()],Se.prototype,"_alphaMode",void 0);P([F()],Se.prototype,"_needDepthPrePass",void 0);P([F()],Se.prototype,"disableDepthWrite",void 0);P([F()],Se.prototype,"disableColorWrite",void 0);P([F()],Se.prototype,"forceDepthWrite",void 0);P([F()],Se.prototype,"depthFunction",void 0);P([F()],Se.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Se.prototype,"_fogEnabled",void 0);P([F()],Se.prototype,"pointSize",void 0);P([F()],Se.prototype,"zOffset",void 0);P([F()],Se.prototype,"zOffsetUnits",void 0);P([F()],Se.prototype,"pointsCloud",null);P([F()],Se.prototype,"fillMode",null);P([F()],Se.prototype,"useLogarithmicDepth",null);P([F()],Se.prototype,"_isVertexOutputInvariant",void 0);P([F()],Se.prototype,"transparencyMode",null)});var $m,KW=I(()=>{Yn();Sf();Yi();$m=class n extends Se{get subMaterials(){return this._subMaterials}set subMaterials(e){this._subMaterials=e,this._hookArray(e)}getChildren(){return this.subMaterials}constructor(e,t){super(e,t,!0),this._waitingSubMaterialsUniqueIds=[],this.getScene().addMultiMaterial(this),this.subMaterials=[],this._storeEffectOnSubMeshes=!0}_hookArray(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._markAllSubMeshesAsTexturesDirty(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._markAllSubMeshesAsTexturesDirty(),a}}getSubMaterial(e){return e<0||e>=this.subMaterials.length?this.getScene().defaultMaterial:this.subMaterials[e]}getActiveTextures(){return super.getActiveTextures().concat(...this.subMaterials.map(e=>e?e.getActiveTextures():[]))}hasTexture(e){var t;if(super.hasTexture(e))return!0;for(let i=0;i=0&&r.multiMaterials.splice(s,1),super.dispose(e,t)}static ParseMultiMaterial(e,t){let i=new n(e.name,t);if(i.id=e.id,i._loadedUniqueId=e.uniqueId,$t&&$t.AddTagsTo(i,e.tags),e.materialsUniqueIds)i._waitingSubMaterialsUniqueIds=e.materialsUniqueIds;else for(let r of e.materials)i.subMaterials.push(t.getLastMaterialById(r));return i}};Ft("BABYLON.MultiMaterial",$m)});var Fx,jW=I(()=>{Fx=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var Jm,Bx,sD,Ux,aD,oD,Sl,Z,Ci=I(()=>{hi();yi();Eg();Sf();$P();_l();ke();Ht();la();Wi();pr();Lx();Nm();Wg();Yn();KW();Dx();br();Pt();Yi();un();Rm();jW();Jm=class{},Bx=class{constructor(){this.batchCache=new Ux(this),this.batchCacheReplacementModeInFrozenMode=new Ux(this),this.instancesBufferSize=512*4}},sD=class{constructor(){this.renderPasses={}}},Ux=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},aD=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},oD=class{constructor(){this._areNormalsFrozen=!1,this._source=null,this.meshMap=null,this._preActivateId=-1,this._LODLevels=new Array,this._useLODScreenCoverage=!1,this._effectiveMaterial=null,this._forcedInstanceCount=0,this._overrideRenderingFillMode=null}},Sl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},Z=class n extends Ar{static _GetDefaultSideOrientation(e){return e||n.FRONTSIDE}get useLODScreenCoverage(){return this._internalMeshDataInfo._useLODScreenCoverage}set useLODScreenCoverage(e){this._internalMeshDataInfo._useLODScreenCoverage=e,this._sortLODLevels()}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(e&&this._internalMeshDataInfo._sourcePositions&&(this.setVerticesData(D.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(D.NormalKind,this._internalMeshDataInfo._sourceNormals,!0),this._internalMeshDataInfo._sourcePositions=null,this._internalMeshDataInfo._sourceNormals=null),this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get onBeforeRenderObservable(){return this._internalMeshDataInfo._onBeforeRenderObservable||(this._internalMeshDataInfo._onBeforeRenderObservable=new ie),this._internalMeshDataInfo._onBeforeRenderObservable}get onBeforeBindObservable(){return this._internalMeshDataInfo._onBeforeBindObservable||(this._internalMeshDataInfo._onBeforeBindObservable=new ie),this._internalMeshDataInfo._onBeforeBindObservable}get onAfterRenderObservable(){return this._internalMeshDataInfo._onAfterRenderObservable||(this._internalMeshDataInfo._onAfterRenderObservable=new ie),this._internalMeshDataInfo._onAfterRenderObservable}get onBetweenPassObservable(){return this._internalMeshDataInfo._onBetweenPassObservable||(this._internalMeshDataInfo._onBetweenPassObservable=new ie),this._internalMeshDataInfo._onBetweenPassObservable}get onBeforeDrawObservable(){return this._internalMeshDataInfo._onBeforeDrawObservable||(this._internalMeshDataInfo._onBeforeDrawObservable=new ie),this._internalMeshDataInfo._onBeforeDrawObservable}set onBeforeDraw(e){this._onBeforeDrawObserver&&this.onBeforeDrawObservable.remove(this._onBeforeDrawObserver),this._onBeforeDrawObserver=this.onBeforeDrawObservable.add(e)}get hasInstances(){return this.instances.length>0}get hasThinInstances(){return(this.forcedInstanceCount||this._thinInstanceDataStorage.instancesCount||0)>0}get forcedInstanceCount(){return this._internalMeshDataInfo._forcedInstanceCount}set forcedInstanceCount(e){this._internalMeshDataInfo._forcedInstanceCount=e}get sideOrientation(){return this._internalMeshDataInfo._sideOrientation}set sideOrientation(e){this._internalMeshDataInfo._sideOrientation=e,this._internalAbstractMeshDataInfo._sideOrientationHint=this._scene.useRightHandedSystem&&e===1||!this._scene.useRightHandedSystem&&e===0}get _effectiveSideOrientation(){return this._internalMeshDataInfo._effectiveSideOrientation}get overrideMaterialSideOrientation(){return this.sideOrientation}set overrideMaterialSideOrientation(e){this.sideOrientation=e,this.material&&(this.material.sideOrientation=null)}get overrideRenderingFillMode(){return this._internalMeshDataInfo._overrideRenderingFillMode}set overrideRenderingFillMode(e){this._internalMeshDataInfo._overrideRenderingFillMode=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){e&&(this.material&&this.material.sideOrientation===null||this._internalAbstractMeshDataInfo._sideOrientationHint)&&(e.sideOrientation=null),this._setMaterial(e)}get source(){return this._internalMeshDataInfo._source}get cloneMeshMap(){return this._internalMeshDataInfo.meshMap}get isUnIndexed(){return this._unIndexed}set isUnIndexed(e){this._unIndexed!==e&&(this._unIndexed=e,this._markSubMeshesAsAttributesDirty())}get worldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesData:void 0}get previousWorldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesPreviousData:void 0}get manualUpdateOfWorldMatrixInstancedBuffer(){return this._instanceDataStorage.manualUpdate}set manualUpdateOfWorldMatrixInstancedBuffer(e){this._instanceDataStorage.manualUpdate=e}get manualUpdateOfPreviousWorldMatrixInstancedBuffer(){return this._instanceDataStorage.previousManualUpdate}set manualUpdateOfPreviousWorldMatrixInstancedBuffer(e){this._instanceDataStorage.previousManualUpdate=e}get forceWorldMatrixInstancedBufferUpdate(){return this._instanceDataStorage.forceMatrixUpdates}set forceWorldMatrixInstancedBufferUpdate(e){this._instanceDataStorage.forceMatrixUpdates=e}_copySource(e,t,i=!0,r=!1){var a,o;let s=this.getScene();if(e._geometry&&e._geometry.applyToMesh(this),hl.DeepCopy(e,this,["name","material","skeleton","instances","parent","uniqueId","source","metadata","morphTargetManager","hasInstances","worldMatrixInstancedBuffer","previousWorldMatrixInstancedBuffer","hasLODLevels","geometry","isBlocked","areNormalsFrozen","facetNb","isFacetDataEnabled","lightSources","useBones","isAnInstance","collider","edgesRenderer","forward","up","right","absolutePosition","absoluteScaling","absoluteRotationQuaternion","isWorldMatrixFrozen","nonUniformScaling","behaviors","worldMatrixFromCache","hasThinInstances","cloneMeshMap","hasBoundingInfo","physicsBody","physicsImpostor"],["_poseMatrix"]),this._internalMeshDataInfo._source=e,s.useClonedMeshMap&&(e._internalMeshDataInfo.meshMap||(e._internalMeshDataInfo.meshMap={}),e._internalMeshDataInfo.meshMap[this.uniqueId]=this),this._originalBuilderSideOrientation=e._originalBuilderSideOrientation,this._creationDataStorage=e._creationDataStorage,e._ranges){let l=e._ranges;for(let c in l)Object.prototype.hasOwnProperty.call(l,c)&&l[c]&&this.createAnimationRange(c,l[c].from,l[c].to)}if(e.metadata&&e.metadata.clone?this.metadata=e.metadata.clone():this.metadata=e.metadata,this._internalMetadata=e._internalMetadata,$t&&$t.HasTags(e)&&$t.AddTagsTo(this,$t.GetTags(e,!0)),this.setEnabled(e.isEnabled(!1)),this.parent=e.parent,this.setPivotMatrix(e.getPivotMatrix(),this._postMultiplyPivotMatrix),this.id=this.name+"."+e.id,this.material=e.material,!t){let l=e.getDescendants(!0);for(let c=0;c{m&&p&&(this._uniformBuffer?this.transferToEffect(_):p.bindOnlyWorldMatrix(_))};let o,l=!1;if(i&&i._addToSceneRootNodes===void 0){let m=i;o=(c=m.parent)!=null?c:null,r=(f=m.source)!=null?f:null,s=(d=m.doNotCloneChildren)!=null?d:!1,a=(h=m.clonePhysicsImpostor)!=null?h:!0,l=(u=m.cloneThinInstances)!=null?u:!1}else o=i;r&&this._copySource(r,s,a,l),o!==null&&(this.parent=o),this._instanceDataStorage.hardwareInstancedRendering=this.getEngine().getCaps().instancedArrays,this._internalMeshDataInfo._onMeshReadyObserverAdded=m=>{m.unregisterOnNextCall=!0,this.isReady(!0)?this.onMeshReadyObservable.notifyObservers(this):this._internalMeshDataInfo._checkReadinessObserver||(this._internalMeshDataInfo._checkReadinessObserver=this._scene.onBeforeRenderObservable.add(()=>{this.isReady(!0)&&(this._scene.onBeforeRenderObservable.remove(this._internalMeshDataInfo._checkReadinessObserver),this._internalMeshDataInfo._checkReadinessObserver=null,this.onMeshReadyObservable.notifyObservers(this))}))},this.onMeshReadyObservable=new ie(this._internalMeshDataInfo._onMeshReadyObserverAdded),r&&r.onClonedObservable.notifyObservers(this)}instantiateHierarchy(e=null,t,i){let r=this.getTotalVertices()===0||t&&t.doNotInstantiate&&(t.doNotInstantiate===!0||t.doNotInstantiate(this))?this.clone("Clone of "+(this.name||this.id),e||this.parent,!0):this.createInstance("instance of "+(this.name||this.id));r.parent=e||this.parent,r.position=this.position.clone(),r.scaling=this.scaling.clone(),this.rotationQuaternion?r.rotationQuaternion=this.rotationQuaternion.clone():r.rotation=this.rotation.clone(),i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.getClassName()==="InstancedMesh"&&r.getClassName()==="Mesh"&&s.sourceMesh===this?s.instantiateHierarchy(r,{doNotInstantiate:t&&t.doNotInstantiate||!1,newSourcedMesh:r},i):s.instantiateHierarchy(r,t,i);return r}getClassName(){return"Mesh"}get _isMesh(){return!0}toString(e){let t=super.toString(e);if(t+=", n vertices: "+this.getTotalVertices(),t+=", parent: "+(this._waitingParentId?this._waitingParentId:this.parent?this.parent.name:"NONE"),this.animations)for(let i=0;i0}getLODLevels(){return this._internalMeshDataInfo._LODLevels}_sortLODLevels(){let e=this._internalMeshDataInfo._useLODScreenCoverage?-1:1;this._internalMeshDataInfo._LODLevels.sort((t,i)=>t.distanceOrScreenCoveragei.distanceOrScreenCoverage?-e:0)}addLODLevel(e,t){if(t&&t._masterMesh)return ee.Warn("You cannot use a mesh as LOD level twice"),this;let i=new Fx(e,t);return this._internalMeshDataInfo._LODLevels.push(i),t&&(t._masterMesh=this),this._sortLODLevels(),this}getLODLevelAtDistance(e){let t=this._internalMeshDataInfo;for(let i=0;io*a)return this.onLODLevelSelection&&this.onLODLevelSelection(a,this,this),this;for(let l=0;l0||this.hasThinInstances);this.computeWorldMatrix();let a=this.material||r.defaultMaterial;if(a){if(a._storeEffectOnSubMeshes)for(let _ of this.subMeshes){let p=_.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,_,s))return!1}else if(!p.isReady(this,s))return!1}}else if(!a.isReady(this,s))return!1}let o=i.currentRenderPassId;for(let _ of this.lightSources){let p=_.getShadowGenerators();if(!p)continue;let g=p.values();for(let v=g.next();v.done!==!0;v=g.next()){let x=v.value;if(x&&(!((l=x.getShadowMap())!=null&&l.renderList)||(c=x.getShadowMap())!=null&&c.renderList&&((d=(f=x.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let E=(h=x.getShadowMap().renderPassIds)!=null?h:[i.currentRenderPassId];for(let T=0;T0){let i=this.getIndices();if(!i)return null;let r=i.length,s=!1;if(e)s=!0;else for(let a of this.subMeshes){if(a.indexStart+a.indexCount>r){s=!0;break}if(a.verticesStart+a.verticesCount>t){s=!0;break}}if(!s)return this.subMeshes[0]}return this.releaseSubMeshes(),new Us(0,0,t,0,this.getTotalIndices()||(this.isUnIndexed?t:0),this)}subdivide(e){if(e<1)return;let t=this.getTotalIndices(),i=t/e|0,r=0;for(;i%3!==0;)i++;this.releaseSubMeshes();for(let s=0;s=t);s++)Us.CreateFromIndices(0,r,r+i>=t?t-r:i,this,void 0,!1),r+=i;this.refreshBoundingInfo(),this.synchronizeInstances()}setVerticesData(e,t,i=!1,r){if(this._geometry)this._geometry.setVerticesData(e,t,i,r);else{let s=new ye;s.set(t,e);let a=this.getScene();new _n(_n.RandomId(),a,s,i,this)}return this}removeVerticesData(e){this._geometry&&this._geometry.removeVerticesData(e)}markVerticesDataAsUpdatable(e,t=!0){let i=this.getVertexBuffer(e);!i||i.isUpdatable()===t||this.setVerticesData(e,this.getVerticesData(e),t)}setVerticesBuffer(e,t=!0,i=null){return this._geometry||(this._geometry=_n.CreateGeometryForMesh(this)),this._geometry.setVerticesBuffer(e,i,t),this}updateVerticesData(e,t,i,r){return this._geometry?(r?(this.makeGeometryUnique(),this.updateVerticesData(e,t,i,!1)):this._geometry.updateVerticesData(e,t,i),this):this}updateMeshPositions(e,t=!0){let i=this.getVerticesData(D.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(D.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(D.NormalKind);if(!s)return this;ye.ComputeNormals(i,r,s),this.updateVerticesData(D.NormalKind,s,!1,!1)}return this}makeGeometryUnique(){if(!this._geometry)return this;if(this._geometry.meshes.length===1)return this;let e=this._geometry,t=this._geometry.copy(_n.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new _n(_n.RandomId(),this.getScene(),void 0,void 0,this)),s.setIndexBuffer(e,t,i,r)}setIndices(e,t=null,i=!1,r=!1){if(this._geometry)this._geometry.setIndices(e,t,i,r);else{let s=new ye;s.indices=e;let a=this.getScene();new _n(_n.RandomId(),a,s,i,this,t)}return this}updateIndices(e,t,i=!1){return this._geometry?(this._geometry.updateIndices(e,t,i),this):this}toLeftHanded(){return this._geometry?(this._geometry.toLeftHanded(),this):this}_bind(e,t,i,r=!0){if(!this._geometry)return this;let s=this.getScene().getEngine(),a;if(this._unIndexed)this._getRenderingFillMode(i)===Se.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Se.PointFillMode:a=null;break;case Se.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Se.TriangleFillMode:a=this._geometry.getIndexBuffer();break}return this._bindDirect(t,a,r)}_bindDirect(e,t,i=!0){if(!this._geometry)return this;if(this.morphTargetManager&&this.morphTargetManager.isUsingTextureForTargets&&this.morphTargetManager._bind(e),!i||!this._userInstancedBuffersStorage||this.hasThinInstances)this._geometry._bind(e,t);else{if(!this._instanceDataStorage.useMonoDataStorageRenderPass&&this._userInstancedBuffersStorage.renderPasses&&this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId]){let r=this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];for(let s in r)this._userInstancedBuffersStorage.vertexBuffers[s]=r[s]}this._geometry._bind(e,t,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;this._internalMeshDataInfo._onBeforeDrawObservable&&this._internalMeshDataInfo._onBeforeDrawObservable.notifyObservers(this);let s=this.getScene().getEngine(),a=s._currentMaterialContext,o=a&&a.useVertexPulling;return this._unIndexed&&t!==Se.WireFrameFillMode||t==Se.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Se.WireFrameFillMode?s.drawElementsType(t,0,e._linesIndexCount,this.forcedInstanceCount||i):o?s.drawArraysType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i):s.drawElementsType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i),this}registerBeforeRender(e){return this.onBeforeRenderObservable.add(e),this}unregisterBeforeRender(e){return this.onBeforeRenderObservable.removeCallback(e),this}registerAfterRender(e){return this.onAfterRenderObservable.add(e),this}unregisterAfterRender(e){return this.onAfterRenderObservable.removeCallback(e),this}_getInstancesRenderList(e,t=!1){let i=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._getInstanceDataStorage();if(this._instanceDataStorage.isFrozen){if(t)return i.batchCacheReplacementModeInFrozenMode.hardwareInstancedRendering[e]=!1,i.batchCacheReplacementModeInFrozenMode.renderSelf[e]=!0,i.batchCacheReplacementModeInFrozenMode;if(i.previousBatch)return i.previousBatch}let r=this.getScene(),s=r._isInIntermediateRendering(),a=s?this._internalAbstractMeshDataInfo._onlyForInstancesIntermediate:this._internalAbstractMeshDataInfo._onlyForInstances,o=i.batchCache;if(o.mustReturn=!1,o.renderSelf[e]=t||!a&&this.isEnabled()&&this.isVisible,o.visibleInstances[e]=null,i.visibleInstances&&!t){let l=i.visibleInstances,c=r.getRenderId(),f=s?l.intermediateDefaultRenderId:l.defaultRenderId;o.visibleInstances[e]=l[c],!o.visibleInstances[e]&&f&&(o.visibleInstances[e]=l[f])}return o.hardwareInstancedRendering[e]=!t&&this._instanceDataStorage.hardwareInstancedRendering&&o.visibleInstances[e]!==null&&o.visibleInstances[e]!==void 0,i.previousBatch=o,o}_updateInstancedBuffers(e,t,i,r,s,a){var v;let o=t.visibleInstances[e._id],l=o?o.length:0,c=t.parent,f=this._instanceDataStorage,d=c.instancesBuffer,h=c.instancesPreviousBuffer,u=0,m=0,_=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,g=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||g)){let x=this.getWorldMatrix();if(_){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u),f.masterMeshPreviousWorldMatrix.copyFrom(x)):(f.masterMeshPreviousWorldMatrix=x.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u))),x.copyToArray(c.instancesData,u);let S=x.asArray();c.instancesData[u+12]=S[12]-p.x,c.instancesData[u+13]=S[13]-p.y,c.instancesData[u+14]=S[14]-p.z,u+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let S=this._scene.activeCamera.globalPosition;for(let E=0;EE._distanceToCamera>T._distanceToCamera?-1:E._distanceToCamera1&&r.activeCamera===r.activeCameras[0]||a<=1,l=this._occlusionDataStorage&&this._occlusionDataStorage.occlusionForRenderPassId!==-1&&this._occlusionDataStorage.occlusionForRenderPassId!==s.currentRenderPassId;if(o&&this._checkOcclusionQuery(l)&&!this._occlusionDataStorage.forceRenderingWhenOccluded)return this;let c=this._getInstancesRenderList(e._id,!!i);if(c.mustReturn)return this;if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let f=0,d=null;this.ignoreCameraMaxZ&&r.activeCamera&&!r._isInIntermediateRendering()&&(f=r.activeCamera.maxZ,d=r.activeCamera,r.activeCamera.maxZ=0,r.updateTransformMatrix(!0)),this._internalMeshDataInfo._onBeforeRenderObservable&&this._internalMeshDataInfo._onBeforeRenderObservable.notifyObservers(this);let h=e.getRenderingMesh(),u=c.hardwareInstancedRendering[e._id]||h.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,_=e.getMaterial();if(!_)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==_){if(_._storeEffectOnSubMeshes){if(!_.isReadyForSubMesh(this,e,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!_.isReady(this,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=_}else if(_._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!_._storeEffectOnSubMeshes&&!_._getDrawWrapper()._wasPreviouslyReady)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(t){let w=this._internalMeshDataInfo._effectiveMaterial;if(w.alphaModes.length===1)s.setAlphaMode(w.alphaMode);else for(let G=0;Gg&&r++,E!==0&&x++,v+=E,g=E}if(c[x]++,x>a&&(a=x),v===0)s++;else{let S=1/v,E=0;for(let T=0;Tf&&o++}}let d=this.skeleton.bones.length,h=this.getVerticesData(D.MatricesIndicesKind),u=this.getVerticesData(D.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let _="Number of Weights = "+i/4+` Maximum influences = `+a+` Missing Weights = `+s+` Not Sorted = `+r+` Not Normalized = `+o+` WeightCounts = [`+c+`] Number of bones = `+d+` -Bad Bone Indices = `+m;return{skinned:!0,valid:s===0&&o===0&&m===0,report:_}}_checkDelayState(){let e=this.getScene();return this._geometry?this._geometry.load(e):this.delayLoadState===4&&(this.delayLoadState=2,this._queueLoad(e)),this}_queueLoad(e){e.addPendingData(this);let t=this.delayLoadingFile.indexOf(".babylonbinarymeshdata")!==-1;return _e.LoadFile(this.delayLoadingFile,i=>{i instanceof ArrayBuffer?this._delayLoadingFunction(i,this):this._delayLoadingFunction(JSON.parse(i),this);for(let r of this.instances)r.refreshBoundingInfo(),r._syncSubMeshes();this.delayLoadState=1,e.removePendingData(this)},()=>{},e.offlineProvider,t),this}isInFrustum(e){return this.delayLoadState===2||!super.isInFrustum(e)?!1:(this._checkDelayState(),!0)}setMaterialById(e){let t=this.getScene().materials,i;for(i=t.length-1;i>-1;i--)if(t[i].id===e)return this.material=t[i],this;let r=this.getScene().multiMaterials;for(i=r.length-1;i>-1;i--)if(r[i].id===e)return this.material=r[i],this;return this}getAnimatables(){let e=[];return this.material&&e.push(this.material),this.skeleton&&e.push(this.skeleton),e}bakeTransformIntoVertices(e){if(!this.isVerticesDataPresent(D.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(D.PositionKind),r=b.Zero(),s;for(s=0;s{let h=d.width,u=d.height,_=this.getEngine().createCanvas(h,u).getContext("2d");_.drawImage(d,0,0);let p=_.getImageData(0,0,h,u).data;this.applyDisplacementMapFromBuffer(p,h,u,t,i,s,a,o),r&&r(this)};return _e.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(D.PositionKind)||!this.isVerticesDataPresent(D.NormalKind)||!this.isVerticesDataPresent(D.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(D.PositionKind,!0,!0),f=this.getVerticesData(D.NormalKind),d=this.getVerticesData(D.UVKind),h=b.Zero(),u=b.Zero(),m=Fe.Zero();a=a||Fe.Zero(),o=o||new Fe(1,1);for(let _=0;_{var c;return!((c=this.getVertexBuffer(l))!=null&&c.getIsInstanced())}),i=this.getIndices(!1,!0),r={},s=(l,c)=>{let f=new Float32Array(i.length*c),d=0;for(let h=0;h{let o=r.length-1-a,l=r[o];for(let c=0;c{for(let o=0;o-1&&(r._waitingMorphTargetManagerId=e.morphTargetManagerId),e.skeletonId!==void 0&&e.skeletonId!==null&&(r.skeleton=t.getLastSkeletonById(e.skeletonId),r._waitingSkeletonId=e.skeletonId,e.numBoneInfluencers&&(r.numBoneInfluencers=e.numBoneInfluencers)),e.skeletonUniqueId!==void 0&&e.skeletonUniqueId!==null&&(r._waitingSkeletonUniqueId=e.skeletonUniqueId),e.animations){for(let a=0;a4,c=l?this.getVerticesData(D.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(D.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),h=b.Zero(),u=new q,m=new q,_=0,p;for(let g=0;g0&&(q.FromFloat32ArrayToRefScaled(d,Math.floor(a[_+p]*16),v,m),u.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[_+p],v>0&&(q.FromFloat32ArrayToRefScaled(d,Math.floor(c[_+p]*16),v,m),u.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[g],i._sourcePositions[g+1],i._sourcePositions[g+2],u,h),h.toArray(r,g),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[g],i._sourceNormals[g+1],i._sourceNormals[g+2],u,h),h.toArray(s,g)),u.reset()}return this.updateVerticesData(D.PositionKind,r),t&&this.updateVerticesData(D.NormalKind,s),this}static MinMax(e){let t=null,i=null;for(let r of e){let a=r.getBoundingInfo().boundingBox;!t||!i?(t=a.minimumWorld.clone(),i=a.maximumWorld.clone()):(t.minimizeInPlace(a.minimumWorld),i.maximizeInPlace(a.maximumWorld))}return!t||!i?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}static Center(e){let t=e instanceof Array?n.MinMax(e):e;return b.Center(t.min,t.max)}static MergeMeshes(e,t=!0,i,r,s,a){return kg(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await CW(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),IW())}static*_MergeMeshesCoroutine(e,t=!0,i,r,s,a,o){if(e=e.filter(Boolean),e.length===0)return null;let l;if(!i){let R=0;for(l=0;l=65536)return ee.Warn("Cannot merge meshes because resulting mesh will have more than 65536 vertices. Please use allow32BitsIndices = true to use 32 bits indices"),null}let c=e[0];a&&(s=!1,e.sort((R,M)=>{var y,C,L,w;return((C=(y=R.material)==null?void 0:y.uniqueId)!=null?C:-1)-((w=(L=M.material)==null?void 0:L.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,h=new Array,u=e[0].sideOrientation;for(l=0;lMath.max(y,C.start+C.count),0);if(a)if(R.material){let y=R.material;if(y instanceof $m){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:ye.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:_,transform:p}=m(e[0]);o&&(yield);let g=new Array(e.length-1);for(let R=1;R{throw Qe("GroundMesh")};Z._GoldbergMeshParser=(n,e)=>{throw Qe("GoldbergMesh")};Z._LinesMeshParser=(n,e)=>{throw Qe("LinesMesh")};Z._GreasedLineMeshParser=(n,e)=>{throw Qe("GreasedLineMesh")};Z._GreasedLineRibbonMeshParser=(n,e)=>{throw Qe("GreasedLineRibbonMesh")};Z._TrailMeshParser=(n,e)=>{throw Qe("TrailMesh")};Z._GaussianSplattingMeshParser=(n,e)=>{throw Qe("GaussianSplattingMesh")};Z._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw Qe("GaussianSplattingPartProxyMesh")};Z._GaussianSplattingCompoundMeshParser=(n,e)=>{throw Qe("GaussianSplattingCompoundMesh")};Ft("BABYLON.Mesh",Z)});var ep,sD=I(()=>{Ao();Yl();Un();ep=class{constructor(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this.targetAlpha=null,this._attachedCamera=null,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}get name(){return"AutoRotation"}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set idleRotationSpeed(e){this._idleRotationSpeed=e}get idleRotationSpeed(){return this._idleRotationSpeed}set idleRotationWaitTime(e){this._idleRotationWaitTime=e}get idleRotationWaitTime(){return this._idleRotationWaitTime}set idleRotationSpinupTime(e){this._idleRotationSpinupTime=e}get idleRotationSpinupTime(){return this._idleRotationSpinupTime}get rotationInProgress(){return Math.abs(this._cameraRotationSpeed)>0}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===st.POINTERDOWN){this._isPointerDown=!0;return}i.type===st.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=Er.Now,r=0;this._lastFrameTime!=null&&(r=i-this._lastFrameTime),this._lastFrameTime=i,this._applyUserInteraction();let s=i-this._lastInteractionTime-this._idleRotationWaitTime,a=Math.max(Math.min(s/this._idleRotationSpinupTime,1),0);this._cameraRotationSpeed=this._idleRotationSpeed*a,this._attachedCamera&&(this._attachedCamera.alpha-=this._cameraRotationSpeed*(r/1e3))})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null,this._lastFrameTime=null}resetLastInteractionTime(e){this._lastInteractionTime=e!=null?e:Er.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){rh();Co=class n{constructor(){this._easingMode=n.EASINGMODE_EASEIN}setEasingMode(e){let t=Math.min(Math.max(e,0),2);this._easingMode=t}getEasingMode(){return this._easingMode}easeInCore(e){throw new Error("You must implement this method")}ease(e){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(e);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-e)}return e>=.5?(1-this.easeInCore((1-e)*2))*.5+.5:this.easeInCore(e*2)*.5}};Co.EASINGMODE_EASEIN=0;Co.EASINGMODE_EASEOUT=1;Co.EASINGMODE_EASEINOUT=2;Bx=class extends Co{constructor(e=1){super(),this.amplitude=e}easeInCore(e){let t=Math.max(0,this.amplitude);return Math.pow(e,3)-e*t*Math.sin(3.141592653589793*e)}},Ux=class extends Co{constructor(e=2){super(),this.exponent=e}easeInCore(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)}}});var Nf,oD=I(()=>{Nf=class n{constructor(e,t,i){this.name=e,this.from=t,this.to=i}clone(){return new n(this.name,this.from,this.to)}}});var lD,cD,fD,dD,hD,uD,Po,dt,wf=I(()=>{ke();Ht();Vn();Yi();oD();la();UA();nh();br();lD=Object.freeze(new Xe(0,0,0,0)),cD=Object.freeze(b.Zero()),fD=Object.freeze(Fe.Zero()),dD=Object.freeze(ql.Zero()),hD=Object.freeze(pe.Black()),uD=Object.freeze(new lt(0,0,0,0)),Po={key:0,repeatCount:0,loopMode:2},dt=class n{static _PrepareAnimation(e,t,i,r,s,a,o,l){let c;if(!isNaN(parseFloat(s))&&isFinite(s)?c=n.ANIMATIONTYPE_FLOAT:s instanceof Xe?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof Fe?c=n.ANIMATIONTYPE_VECTOR2:s instanceof pe?c=n.ANIMATIONTYPE_COLOR3:s instanceof lt?c=n.ANIMATIONTYPE_COLOR4:s instanceof ql&&(c=n.ANIMATIONTYPE_SIZE),c==null)return null;let f=new n(e,t,i,c,o),d=[{frame:0,value:s},{frame:r,value:a}];return f.setKeys(d),l!==void 0&&f.setEasingFunction(l),f}static CreateAnimation(e,t,i,r){let s=new n(e+"Animation",e,i,t,n.ANIMATIONLOOPMODE_CONSTANT);return s.setEasingFunction(r),s}static CreateAndStartAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!h||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[h],0,s,h.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,r,s,a,o,l,c,f);return h?t.getScene().beginDirectHierarchyAnimation(t,i,[h],0,a,h.loopMode===1,1,d):null}static CreateMergeAndStartAnimation(e,t,i,r,s,a,o,l,c,f){let d=n._PrepareAnimation(e,i,r,s,a,o,l,c);return d?(t.animations.push(d),t.getScene().beginAnimation(t,0,s,d.loopMode===1,1,f)):null}static MakeAnimationAdditive(e,t,i,r=!1,s){var v,x;let a;typeof t=="object"?a=t:a={referenceFrame:t!=null?t:0,range:i,cloneOriginalAnimation:r,clonedAnimationName:s};let o=e;if(a.cloneOriginalAnimation&&(o=e.clone(),o.name=a.clonedAnimationName||o.name),!o._keys.length)return o;let l=a.referenceFrame&&a.referenceFrame>=0?a.referenceFrame:0,c=0,f=o._keys[0],d=o._keys.length-1,h=o._keys[d],u={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,_=h.frame;if(a.range){let S=o.getRange(a.range);S&&(m=S.from,_=S.to)}else m=(v=a.fromFrame)!=null?v:m,_=(x=a.toFrame)!=null?x:_;if(m!==f.frame&&(c=o.createKeyForFrame(m)),_!==h.frame&&(d=o.createKeyForFrame(_)),o._keys.length===1){let S=o._getKeyValue(o._keys[0]);u.referenceValue=S.clone?S.clone():S}else if(l<=f.frame){let S=o._getKeyValue(f.value);u.referenceValue=S.clone?S.clone():S}else if(l>=h.frame){let S=o._getKeyValue(h.value);u.referenceValue=S.clone?S.clone():S}else{Po.key=0;let S=o._interpolate(l,Po);u.referenceValue=S.clone?S.clone():S}o.dataType===n.ANIMATIONTYPE_QUATERNION?u.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(u.referenceValue.decompose(u.referenceScaling,u.referenceQuaternion,u.referencePosition),u.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,g=a.clipKeys?[]:null;for(let S=c;S<=d;S++){let E=o._keys[S];if((g||a.cloneOriginalAnimation)&&(E={frame:E.frame,value:E.value.clone?E.value.clone():E.value,inTangent:E.inTangent,outTangent:E.outTangent,interpolation:E.interpolation,lockedTangent:E.lockedTangent,easingFunction:E.easingFunction},g&&(p===Number.MAX_VALUE&&(p=E.frame),E.frame-=p,g.push(E))),!(S&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&E.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:E.value.decompose(u.keyScaling,u.keyQuaternion,u.keyPosition),u.keyPosition.subtractInPlace(u.referencePosition),u.keyScaling.divideInPlace(u.referenceScaling),u.referenceQuaternion.multiplyToRef(u.keyQuaternion,u.keyQuaternion),q.ComposeToRef(u.keyScaling,u.keyQuaternion,u.keyPosition,E.value);break;case n.ANIMATIONTYPE_QUATERNION:u.referenceValue.multiplyToRef(E.value,E.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:E.value.subtractToRef(u.referenceValue,E.value);break;case n.ANIMATIONTYPE_SIZE:E.value.width-=u.referenceValue.width,E.value.height-=u.referenceValue.height;break;default:E.value-=u.referenceValue}}return g&&o.setKeys(g,!0),o}static TransitionTo(e,t,i,r,s,a,o,l=null,c=!0,f){if(o<=0)return i[e]=t,l&&l(),null;let d=s*(o/1e3);return a.setKeys(f!=null?f:[{frame:0,value:i[e].clone?i[e].clone():i[e]},{frame:d,value:t}]),i.animations||(i.animations=[]),i.animations.push(a),r.beginAnimation(i,0,d,!1,1,l!=null?l:void 0,void 0,c)}get runtimeAnimations(){return this._runtimeAnimations}get hasRunningRuntimeAnimations(){for(let e of this._runtimeAnimations)if(!e.isStopped())return!0;return!1}constructor(e,t,i,r,s,a){this.name=e,this.targetProperty=t,this.framePerSecond=i,this.dataType=r,this.loopMode=s,this.enableBlending=a,this._easingFunction=null,this._runtimeAnimations=new Array,this._events=new Array,this.blendingSpeed=.01,this._ranges={},this._coreAnimation=null,this.targetPropertyPath=t.split("."),this.dataType=r,this.loopMode=s===void 0?n.ANIMATIONLOOPMODE_CYCLE:s,this.uniqueId=n._UniqueIdGenerator++}toString(e){let t="Name: "+this.name+", property: "+this.targetProperty;if(t+=", datatype: "+["Float","Vector3","Quaternion","Matrix","Color3","Vector2"][this.dataType],t+=", nKeys: "+(this._keys?this._keys.length:"none"),t+=", nRanges: "+(this._ranges?Object.keys(this._ranges).length:"none"),e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i||(t+=", "),i=!1,t+=r;t+="}"}return t}addEvent(e){this._events.push(e),this._events.sort((t,i)=>t.frame-i.frame)}removeEvents(e){for(let t=0;t=0;a--)this._keys[a].frame>=r&&this._keys[a].frame<=s&&this._keys.splice(a,1)}this._ranges[e]=null}}getRange(e){return this._ranges[e]}getKeys(){return this._keys}getHighestFrame(){let e=0;for(let t=0,i=this._keys.length;t0)return t.highLimitValue.clone?t.highLimitValue.clone():t.highLimitValue;let r=this._keys,s;if(this._coreAnimation)s=this._coreAnimation._key;else{let _=r.length;for(s=t.key;s>=0&&e=r[s+1].frame;)++s;if(t.key=s,s<0)return i?void 0:this._getKeyValue(r[0].value);if(s+1>_-1)return i?void 0:this._getKeyValue(r[_-1].value);this._key=s}let a=r[s],o=r[s+1];if(i&&(e===a.frame||e===o.frame))return;let l=this._getKeyValue(a.value),c=this._getKeyValue(o.value);if(a.interpolation===1)return o.frame>e?l:c;let f=a.outTangent!==void 0&&o.inTangent!==void 0,d=o.frame-a.frame,h=(e-a.frame)/d,u=a.easingFunction||this.getEasingFunction();switch(u&&(h=u.ease(h)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let _=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,h):this.floatInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+_}break}case n.ANIMATIONTYPE_QUATERNION:{let _=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.quaternionInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.addInPlace((t.offsetValue||lD).scale(t.repeatCount))}return _}case n.ANIMATIONTYPE_VECTOR3:{let _=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||cD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let _=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector2InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||fD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_SIZE:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return this.sizeInterpolateFunction(l,c,h);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,h).add((t.offsetValue||dD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let _=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||hD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let _=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color4InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||uD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_MATRIX:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return n.AllowMatricesInterpolation?this.matrixInterpolateFunction(l,c,h,t.workValue):l;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return l}break}}return 0}matrixInterpolateFunction(e,t,i,r){return n.AllowMatrixDecomposeForInterpolation?r?(q.DecomposeLerpToRef(e,t,i,r),r):q.DecomposeLerp(e,t,i):r?(q.LerpToRef(e,t,i,r),r):q.Lerp(e,t,i)}clone(e=!1){let t=new n(this.name,this.targetPropertyPath.join("."),this.framePerSecond,this.dataType,this.loopMode);if(t.enableBlending=this.enableBlending,t.blendingSpeed=this.blendingSpeed,this._keys&&t.setKeys(this._keys,!1,e),this._ranges){t._ranges={};for(let i in this._ranges){let r=this._ranges[i];r&&(t._ranges[i]=r.clone())}}return t}setKeys(e,t=!1,i=!1){if(t)this._keys=e;else if(this._keys=e.slice(0),i)for(let r=0;r=2&&(l=o.values[1]),o.values.length>=3&&(c=o.values[2]),o.values.length>=4&&(f=o.values[3]);break;case n.ANIMATIONTYPE_QUATERNION:if(s=Xe.FromArray(o.values),o.values.length>=8){let h=Xe.FromArray(o.values.slice(4,8));h.equals(Xe.Zero())||(l=h)}if(o.values.length>=12){let h=Xe.FromArray(o.values.slice(8,12));h.equals(Xe.Zero())||(c=h)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=q.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=pe.FromArray(o.values),o.values[3]&&(l=pe.FromArray(o.values[3])),o.values[4]&&(c=pe.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=lt.FromArray(o.values),o.values[4]&&(l=lt.FromArray(o.values[4])),o.values[5]&&(c=lt.FromArray(o.values[5])),o.values[6]&&(f=lt.FromArray(o.values[6]));break;case n.ANIMATIONTYPE_VECTOR3:default:s=b.FromArray(o.values),o.values[3]&&(l=b.FromArray(o.values[3])),o.values[4]&&(c=b.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break}let d={};d.frame=o.frame,d.value=s,l!=null&&(d.inTangent=l),c!=null&&(d.outTangent=c),f!=null&&(d.interpolation=f),r.push(d)}if(t.setKeys(r),e.ranges)for(a=0;a{let s=new Cr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a=JSON.parse(s.responseText);if(a.animations&&(a=a.animations),a.length){let o=[];for(let l of a)o.push(this.Parse(l));i(o)}else{let o=this.Parse(a);e&&(o.name=e),i(o)}}else r("Unable to load the animation")}),s.open("GET",t),s.send()})}static async ParseFromSnippetAsync(e){return await new Promise((t,i)=>{let r=new Cr;r.addEventListener("readystatechange",()=>{if(r.readyState==4)if(r.status==200){let s=JSON.parse(JSON.parse(r.responseText).jsonPayload);if(s.animations){let a=JSON.parse(s.animations),o=[];for(let l of a.animations){let c=this.Parse(l);c.snippetId=e,o.push(c)}t(o)}else{let a=JSON.parse(s.animation),o=this.Parse(a);o.snippetId=e,t(o)}}else i("Unable to load the snippet "+e)}),r.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),r.send()})}};dt._UniqueIdGenerator=0;dt.AllowMatricesInterpolation=!1;dt.AllowMatrixDecomposeForInterpolation=!0;dt.InheritOriginalValueFromActiveAnimations=!1;dt.SnippetUrl="https://snippet.babylonjs.com";dt.ANIMATIONTYPE_FLOAT=0;dt.ANIMATIONTYPE_VECTOR3=1;dt.ANIMATIONTYPE_QUATERNION=2;dt.ANIMATIONTYPE_MATRIX=3;dt.ANIMATIONTYPE_COLOR3=4;dt.ANIMATIONTYPE_COLOR4=7;dt.ANIMATIONTYPE_VECTOR2=5;dt.ANIMATIONTYPE_SIZE=6;dt.ANIMATIONLOOPMODE_RELATIVE=0;dt.ANIMATIONLOOPMODE_CYCLE=1;dt.ANIMATIONLOOPMODE_CONSTANT=2;dt.ANIMATIONLOOPMODE_YOYO=4;dt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;dt.CreateFromSnippetAsync=dt.ParseFromSnippetAsync;Ft("BABYLON.Animation",dt);_i._AnimationRangeFactory=(n,e,t)=>new Nf(n,e,t)});var tp,YW=I(()=>{aD();wf();tp=class n{constructor(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._attachedCamera=null,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}get name(){return"Bouncing"}get autoTransitionRange(){return this._autoTransitionRange}set autoTransitionRange(e){if(this._autoTransitionRange===e)return;this._autoTransitionRange=e;let t=this._attachedCamera;t&&(e?this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(i=>{if(i&&(i.computeWorldMatrix(!0),i.getBoundingInfo)){let r=i.getBoundingInfo().diagonalLength;this.lowerRadiusTransitionRange=r*.05,this.upperRadiusTransitionRange=r*.05}}):this._onMeshTargetChangedObserver&&t.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e,this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._attachedCamera&&(this._isRadiusAtLimit(this._attachedCamera.lowerRadiusLimit)&&this._applyBoundRadiusAnimation(this.lowerRadiusTransitionRange),this._isRadiusAtLimit(this._attachedCamera.upperRadiusLimit)&&this._applyBoundRadiusAnimation(this.upperRadiusTransitionRange))})}detach(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)}_isRadiusAtLimit(e){return this._attachedCamera?this._attachedCamera.radius===e&&!this._radiusIsAnimating:!1}_applyBoundRadiusAnimation(e){if(!this._attachedCamera)return;this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=dt.CreateAnimation("radius",dt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;let t=dt.TransitionTo("radius",this._attachedCamera.radius+e,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,()=>this._clearAnimationLocks());t&&this._animatables.push(t)}_clearAnimationLocks(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()}};tp.EasingFunction=new Bx(.3);tp.EasingMode=Co.EASINGMODE_EASEOUT});var Ff,KW=I(()=>{aD();hi();Ao();Yl();ke();wf();Ff=class n{constructor(){this.onTargetFramingAnimationEndObservable=new ie,this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._attachedCamera=null,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}get name(){return"Framing"}set mode(e){this._mode=e}get mode(){return this._mode}set radiusScale(e){this._radiusScale=e}get radiusScale(){return this._radiusScale}set positionScale(e){this._positionScale=e}get positionScale(){return this._positionScale}set defaultElevation(e){this._defaultElevation=e}get defaultElevation(){return this._defaultElevation}set elevationReturnTime(e){this._elevationReturnTime=e}get elevationReturnTime(){return this._elevationReturnTime}set elevationReturnWaitTime(e){this._elevationReturnWaitTime=e}get elevationReturnWaitTime(){return this._elevationReturnWaitTime}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set framingTime(e){this._framingTime=e}get framingTime(){return this._framingTime}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===st.POINTERDOWN){this._isPointerDown=!0;return}i.type===st.POINTERUP&&(this._isPointerDown=!1)}),this._onMeshTargetChangedObserver=e.onMeshTargetChangedObservable.add(i=>{i&&i.getBoundingInfo&&this.zoomOnMesh(i,void 0,()=>{this.onTargetFramingAnimationEndObservable.notifyObservers()})}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._applyUserInteraction(),this._maintainCameraAboveGround()})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}zoomOnMesh(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,t,i)}zoomOnMeshHierarchy(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,t,i)}zoomOnMeshesHierarchy(e,t=!1,i=null){let r=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let a=0;a{this.stopAllAnimations(),r&&r(),this._attachedCamera&&this._attachedCamera.useInputToRestoreState&&this._attachedCamera.storeState()}),f&&this._animatables.push(f),!0}_calculateLowerRadiusFromModelBoundingSphere(e,t){let i=this._attachedCamera;if(!i)return 0;let r=i._calculateLowerRadiusFromModelBoundingSphere(e,t,this._radiusScale);return i.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(r=ri.upperRadiusLimit?i.upperRadiusLimit:r),r}_maintainCameraAboveGround(){if(this._elevationReturnTime<0)return;let e=Er.Now-this._lastInteractionTime,t=Math.PI*.5-this._defaultElevation,i=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>i&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=dt.CreateAnimation("beta",dt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=dt.TransitionTo("beta",t,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,()=>{this._clearAnimationLocks(),this.stopAllAnimations()});r&&this._animatables.push(r)}}_clearAnimationLocks(){this._betaIsAnimating=!1}_applyUserInteraction(){this.isUserIsMoving&&(this._lastInteractionTime=Er.Now,this.stopAllAnimations(),this._clearAnimationLocks())}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()}get isUserIsMoving(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1}};Ff.EasingFunction=new Ux;Ff.EasingMode=Co.EASINGMODE_EASEINOUT;Ff.IgnoreBoundsSizeMode=0;Ff.FitFrustumSidesMode=1});var Vx,mD,Gs,pD=I(()=>{Gt();Vt();_l();ke();Un();lm();la();_i.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Gs(n,b.Zero(),e));Vx=q.Zero(),mD=Xe.Identity(),Gs=class n extends mt{constructor(e,t,i,r=!0){super(e,t,i,r),this.cameraDirection=new b(0,0,0),this.cameraRotation=new Fe(0,0),this.updateUpVectorFromRotation=!1,this.speed=2,this.noRotationConstraint=!1,this.invertRotation=!1,this.inverseRotationSpeed=.2,this._panningEpsilon=Nt,this._rotationEpsilon=Nt,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=q.Zero(),this._cameraTransformMatrix=q.Zero(),this._cameraRotationMatrix=q.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new Xe,this._deferredRotationUpdate=new b,this._deferredUpdated=!1,this._deferOnly=!1,this._cachedRotationZ=0,this._cachedQuaternionRotationZ=0,this._referencePoint=b.Forward(this.getScene().useRightHandedSystem),this.rotation=new b(0,this.getScene().useRightHandedSystem?Math.PI:0,0)}getFrontPosition(e){this.getWorldMatrix();let t=$.Vector3[0],i=$.Vector3[1];return i.set(0,0,this._scene.useRightHandedSystem?-1:1),this.getDirectionToRef(i,t),t.scaleInPlace(e),this.globalPosition.add(t)}_getLockedTargetPosition(){if(!this.lockedTarget)return null;if(this.lockedTarget.absolutePosition){let e=this.lockedTarget;e.computeWorldMatrix().getTranslationToRef(e.absolutePosition)}return this.lockedTarget.absolutePosition||this.lockedTarget}storeState(){return this._storedPosition=this.position.clone(),this._storedRotation=this.rotation.clone(),this.rotationQuaternion&&(this._storedRotationQuaternion=this.rotationQuaternion.clone()),super.storeState()}_restoreStateValues(){return super._restoreStateValues()?(this.position=this._storedPosition.clone(),this.rotation=this._storedRotation.clone(),this.rotationQuaternion&&this._storedRotationQuaternion&&(this.rotationQuaternion=this._storedRotationQuaternion.clone()),this.cameraDirection.copyFromFloats(0,0,0),this.cameraRotation.copyFromFloats(0,0),!0):!1}_initCache(){super._initCache(),this._cache.lockedTarget=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotation=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotationQuaternion=new Xe(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}_updateCache(e){e||super._updateCache();let t=this._getLockedTargetPosition();t?this._cache.lockedTarget?this._cache.lockedTarget.copyFrom(t):this._cache.lockedTarget=t.clone():this._cache.lockedTarget=null,this._cache.rotation.copyFrom(this.rotation),this.rotationQuaternion&&this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion)}_isSynchronizedViewMatrix(){if(!super._isSynchronizedViewMatrix())return!1;let e=this._getLockedTargetPosition();return(this._cache.lockedTarget?this._cache.lockedTarget.equals(e):!e)&&(this.rotationQuaternion?this.rotationQuaternion.equals(this._cache.rotationQuaternion):this._cache.rotation.equals(this.rotation))}_computeLocalCameraSpeed(){let e=this.getEngine();return this.speed*Math.sqrt(e.getDeltaTime()/(e.getFps()*100))}setTarget(e){this.upVector.normalize(),this._initialFocalDistance=e.subtract(this.position).length(),this.position.z===e.z&&(this.position.z+=Nt),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?q.LookAtRHToRef(this.position,e,b.UpReadOnly,Vx):q.LookAtLHToRef(this.position,e,b.UpReadOnly,Vx),Vx.invert();let t=this.rotationQuaternion||mD;Xe.FromRotationMatrixToRef(Vx,t),t.toEulerAnglesToRef(this.rotation),this.rotation.z=0}get target(){return this.getTarget()}set target(e){this.setTarget(e)}getTarget(){return this._currentTarget}_decideIfNeedsToMove(){return Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){if(this.parent){this.parent.getWorldMatrix().invertToRef($.Matrix[0]),b.TransformNormalToRef(this.cameraDirection,$.Matrix[0],$.Vector3[0]),this._deferredPositionUpdate.addInPlace($.Vector3[0]),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate);return}this._deferredPositionUpdate.addInPlace(this.cameraDirection),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate)}_checkInputs(){let e=this.invertRotation?-this.inverseRotationSpeed:1,t=this._decideIfNeedsToMove(),i=this.cameraRotation.x||this.cameraRotation.y;this._deferredUpdated=!1,this._deferredRotationUpdate.copyFrom(this.rotation),this._deferredPositionUpdate.copyFrom(this.position),this.rotationQuaternion&&this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion),t&&this._updatePosition(),i&&(this.rotationQuaternion&&this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate),this._deferredRotationUpdate.x+=this.cameraRotation.x*e,this._deferredRotationUpdate.y+=this.cameraRotation.y*e,this.noRotationConstraint||(this._deferredRotationUpdate.x>1.570796&&(this._deferredRotationUpdate.x=1.570796),this._deferredRotationUpdate.x<-1.570796&&(this._deferredRotationUpdate.x=-1.570796)),this._deferOnly?this._deferredUpdated=!0:this.rotation.copyFrom(this._deferredRotationUpdate),this.rotationQuaternion&&this._deferredRotationUpdate.lengthSquared()&&(Xe.RotationYawPitchRollToRef(this._deferredRotationUpdate.y,this._deferredRotationUpdate.x,this._deferredRotationUpdate.z,this._deferredRotationQuaternionUpdate),this._deferOnly?this._deferredUpdated=!0:this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate)));let r=this.speed*this._panningEpsilon,s=this.speed*this._rotationEpsilon;t&&(Math.abs(this.cameraDirection.x){Pt();br();_l();Kn={},ip=class{constructor(e){this.attachedToElement=!1,this.attached={},this.camera=e,this.checkInputs=()=>{}}add(e){let t=e.getSimpleName();if(this.attached[t]){ee.Warn("camera input of type "+t+" already exists on camera");return}this.attached[t]=e,e.camera=this.camera,e.checkInputs&&(this.checkInputs=this._addCheckInputs(e.checkInputs.bind(e))),this.attachedToElement&&e.attachControl(this.noPreventDefault)}remove(e){for(let t in this.attached){let i=this.attached[t];if(i===e){i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck();return}}}removeByType(e){for(let t in this.attached){let i=this.attached[t];i.getClassName()===e&&(i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck())}}_addCheckInputs(e){let t=this.checkInputs;return()=>{t(),e()}}attachInput(e){this.attachedToElement&&e.attachControl(this.noPreventDefault)}attachElement(e=!1){if(!this.attachedToElement){e=mt.ForceAttachControlToAlwaysPreventDefault?!1:e,this.attachedToElement=!0,this.noPreventDefault=e;for(let t in this.attached)this.attached[t].attachControl(e)}}detachElement(e=!1){for(let t in this.attached)this.attached[t].detachControl(),e&&(this.attached[t].camera=null);this.attachedToElement=!1}rebuildInputCheck(){this.checkInputs=()=>{};for(let e in this.attached){let t=this.attached[e];t.checkInputs&&(this.checkInputs=this._addCheckInputs(t.checkInputs.bind(t)))}}clear(){this.attachedToElement&&this.detachElement(!0),this.attached={},this.attachedToElement=!1,this.checkInputs=()=>{}}serialize(e){let t={};for(let i in this.attached){let r=this.attached[i],s=it.Serialize(r);t[r.getClassName()]=s}e.inputsmgr=t}parse(e){let t=e.inputsmgr;if(t){this.clear();for(let i in t){let r=Kn[i];if(r){let s=t[i],a=it.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=Kn[this.attached[i].getClassName()];if(r){let s=it.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var zg,jW=I(()=>{Gt();Vt();yi();Ao();zg=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement(),r=0,s=null;this._pointA=null,this._pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=o=>{var d,h;let l=o.event,c=l.pointerType==="touch";if(o.type!==st.POINTERMOVE&&this.buttons.indexOf(l.button)===-1)return;let f=l.target;if(this._altKey=l.altKey,this._ctrlKey=l.ctrlKey,this._metaKey=l.metaKey,this._shiftKey=l.shiftKey,this._buttonsPressed=l.buttons,t.isPointerLock){let u=l.movementX,m=l.movementY;this.onTouch(null,u,m),this._pointA=null,this._pointB=null}else{if(o.type!==st.POINTERDOWN&&o.type!==st.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((h=this._pointB)==null?void 0:h.pointerId)!==l.pointerId)return;if(o.type===st.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(u){}if(this._pointA===null)this._pointA={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else if(this._pointB===null)this._pointB={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else return;this._currentMousePointerIdDown===-1&&!c&&(this._currentMousePointerIdDown=l.pointerId),this.onButtonDown(l),e||(l.preventDefault(),i&&i.focus())}else if(o.type===st.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===st.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(u){}c||(this._pointB=null),t._badOS?this._pointA=this._pointB=null:this._pointB&&this._pointA&&this._pointA.pointerId==l.pointerId?(this._pointA=this._pointB,this._pointB=null):this._pointA&&this._pointB&&this._pointB.pointerId==l.pointerId?this._pointB=null:this._pointA=this._pointB=null,(r!==0||s)&&(this.onMultiTouch(this._pointA,this._pointB,r,0,s,null),r=0,s=null),this._currentMousePointerIdDown=-1,this.onButtonUp(l),e||l.preventDefault()}else if(o.type===st.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let u=l.clientX-this._pointA.x,m=l.clientY-this._pointA.y;this._pointA.x=l.clientX,this._pointA.y=l.clientY,this.onTouch(this._pointA,u,m)}else if(this._pointA&&this._pointB){let u=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;u.x=l.clientX,u.y=l.clientY;let m=this._pointA.x-this._pointB.x,_=this._pointA.y-this._pointB.y,p=m*m+_*_,g={x:(this._pointA.x+this._pointB.x)/2,y:(this._pointA.y+this._pointB.y)/2,pointerId:l.pointerId,type:o.type};this.onMultiTouch(this._pointA,this._pointB,r,p,s,g),s=g,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE|st.POINTERDOUBLETAP),this._onLostFocus=()=>{this._pointA=this._pointB=null,r=0,s=null,this.onLostFocus()},this._contextMenuBind=o=>this.onContextMenu(o),i&&i.addEventListener("contextmenu",this._contextMenuBind,!1);let a=this.camera.getScene().getEngine().getHostWindow();a&&_e.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&_e.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._contextMenuBind){let e=this.camera.getScene().getEngine().getInputElement();e&&e.removeEventListener("contextmenu",this._contextMenuBind)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._currentMousePointerIdDown=-1}getClassName(){return"BaseCameraPointersInput"}getSimpleName(){return"pointers"}onDoubleTap(e){}onTouch(e,t,i){}onMultiTouch(e,t,i,r,s,a){}onContextMenu(e){e.preventDefault()}onButtonDown(e){}onButtonUp(e){}onLostFocus(){}};P([F()],zg.prototype,"buttons",void 0)});var vh,qW=I(()=>{Gt();Vt();jW();vh=class extends zg{constructor(){super(...arguments),this.pinchZoom=!0,this.multiTouchPanning=!0,this.multiTouchPanAndZoom=!0,this._isPinching=!1,this._twoFingerActivityCount=0,this._shouldStartPinchZoom=!1}_computePinchZoom(e,t){}_computeMultiTouchPanning(e,t){}onMultiTouch(e,t,i,r,s,a){i===0&&s===null||r===0&&a===null||(this.multiTouchPanAndZoom?(this._computePinchZoom(i,r),this._computeMultiTouchPanning(s,a)):this.multiTouchPanning&&this.pinchZoom?(this._twoFingerActivityCount++,this._isPinching||this._shouldStartPinchZoom?(this._computePinchZoom(i,r),this._isPinching=!0):this._computeMultiTouchPanning(s,a)):this.multiTouchPanning?this._computeMultiTouchPanning(s,a):this.pinchZoom&&this._computePinchZoom(i,r))}onButtonUp(e){this._twoFingerActivityCount=0,this._isPinching=!1}onLostFocus(){this._twoFingerActivityCount=0,this._isPinching=!1}};P([F()],vh.prototype,"pinchZoom",void 0);P([F()],vh.prototype,"multiTouchPanning",void 0);P([F()],vh.prototype,"multiTouchPanAndZoom",void 0)});var ca,ZW=I(()=>{Gt();Vt();Tl();qW();ca=class n extends vh{constructor(){super(...arguments),this.buttons=[0,1,2],this.angularSensibilityX=1e3,this.angularSensibilityY=1e3,this.pinchPrecision=12,this.pinchDeltaPercentage=0,this.useNaturalPinchZoom=!1,this.panningSensibility=1e3,this.pinchInwards=!0,this._isPanClick=!1}getClassName(){return"ArcRotateCameraPointersInput"}_computeMultiTouchPanning(e,t){if(this.panningSensibility!==0&&e&&t){let i=t.x-e.x,r=t.y-e.y;this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility}}_computePinchZoom(e,t){let i=this.camera.radius||n.MinimumRadiusForPinch;this.useNaturalPinchZoom?this.camera.radius=i*Math.sqrt(e)/Math.sqrt(t):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(t-e)*.001*i*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(t-e)/(this.pinchPrecision*(this.pinchInwards?1:-1)*(this.angularSensibilityX+this.angularSensibilityY)/2)}onTouch(e,t,i){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-t/this.panningSensibility,this.camera.inertialPanningY+=i/this.panningSensibility):(this.camera.inertialAlphaOffset-=t/this.angularSensibilityX,this.camera.inertialBetaOffset-=i/this.angularSensibilityY)}onDoubleTap(){this.camera.useInputToRestoreState&&this.camera.restoreState()}onMultiTouch(e,t,i,r,s,a){this._shouldStartPinchZoom=this._twoFingerActivityCount<20&&Math.abs(Math.sqrt(r)-Math.sqrt(i))>this.camera.pinchToPanMaxDistance,super.onMultiTouch(e,t,i,r,s,a)}onButtonDown(e){this._isPanClick=e.button===this.camera._panningMouseButton,super.onButtonDown(e)}onButtonUp(e){super.onButtonUp(e)}onLostFocus(){this._isPanClick=!1,super.onLostFocus()}};ca.MinimumRadiusForPinch=.001;P([F()],ca.prototype,"buttons",void 0);P([F()],ca.prototype,"angularSensibilityX",void 0);P([F()],ca.prototype,"angularSensibilityY",void 0);P([F()],ca.prototype,"pinchPrecision",void 0);P([F()],ca.prototype,"pinchDeltaPercentage",void 0);P([F()],ca.prototype,"useNaturalPinchZoom",void 0);P([F()],ca.prototype,"panningSensibility",void 0);Kn.ArcRotateCameraPointersInput=ca});var ks,QW=I(()=>{Gt();Vt();Tl();cx();yi();ks=class{constructor(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===xo.KEYDOWN)this._ctrlPressed=i.ctrlKey,this._altPressed=i.altKey,(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),i.preventDefault&&(e||i.preventDefault()));else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),i.preventDefault&&(e||i.preventDefault())}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Gt();Vt();Tl();Ao();um();ke();Un();fx();Vn();yi();Jce=40,Bf=class{constructor(){this.wheelPrecision=3,this.zoomToMouseLocation=!1,this.wheelDeltaPercentage=0,this.customComputeDeltaFromMouseWheel=null,this._viewOffset=new b(0,0,0),this._globalOffset=new b(0,0,0),this._inertialPanning=b.Zero()}_computeDeltaFromMouseWheelLegacyEvent(e,t){let i,r=e*.01*this.wheelDeltaPercentage*t;return e>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==st.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Ro.DOM_DELTA_LINE?Jce:1,a=-(i.deltaY*s);if(this.customComputeDeltaFromMouseWheel)r=this.customComputeDeltaFromMouseWheel(a,this,i);else if(this.wheelDeltaPercentage){if(r=this._computeDeltaFromMouseWheelLegacyEvent(a,this.camera.radius),r>0){let o=this.camera.radius,l=this.camera.inertialRadiusOffset+r;for(let c=0;c<20&&!(o<=l||Math.abs(l*this.camera.inertia)<.001);c++)o-=l,l*=this.camera.inertia;o=wt(o,0,Number.MAX_VALUE),r=this._computeDeltaFromMouseWheelLegacyEvent(a,o)}}else r=a/(this.wheelPrecision*40);r&&(this.zoomToMouseLocation?(this._hitPlane||this._updateHitPlane(),this._zoomToMouse(r)):this.camera.inertialRadiusOffset+=r),i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,st.POINTERWHEEL),this.zoomToMouseLocation&&this._inertialPanning.setAll(0)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null)}checkInputs(){if(!this.zoomToMouseLocation)return;let e=this.camera;0+e.inertialAlphaOffset+e.inertialBetaOffset+e.inertialRadiusOffset&&(this._updateHitPlane(),e.target.addInPlace(this._inertialPanning),this._inertialPanning.scaleInPlace(e.inertia),this._zeroIfClose(this._inertialPanning))}getClassName(){return"ArcRotateCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}_updateHitPlane(){let e=this.camera,t=e.target.subtract(e.position);this._hitPlane=_o.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,q.Identity(),e,!1);(e.targetScreenOffset.x!==0||e.targetScreenOffset.y!==0)&&(this._viewOffset.set(e.targetScreenOffset.x,e.targetScreenOffset.y,0),e.getViewMatrix().invertToRef(e._cameraTransformMatrix),this._globalOffset=b.TransformNormal(this._viewOffset,e._cameraTransformMatrix),i.origin.addInPlace(this._globalOffset));let r=0;return this._hitPlane&&(r=(s=i.intersectsPlane(this._hitPlane))!=null?s:0),i.origin.addInPlace(i.direction.scaleInPlace(r))}_zoomToMouse(e){var l,c;let t=this.camera,i=1-t.inertia;if(t.lowerRadiusLimit){let f=(l=t.lowerRadiusLimit)!=null?l:0;t.radius-(t.inertialRadiusOffset+e)/if&&(e=(t.radius-f)*i-t.inertialRadiusOffset)}let s=e/i/t.radius,a=this._getPosition(),o=$.Vector3[6];a.subtractToRef(t.target,o),o.scaleInPlace(s),o.scaleInPlace(i),this._inertialPanning.addInPlace(o),t.inertialRadiusOffset+=e}_zeroIfClose(e){Math.abs(e.x){ZW();QW();$W();Tl();Gx=class extends ip{constructor(e){super(e)}addMouseWheel(){return this.add(new Bf),this}addPointers(){return this.add(new ca),this}addKeyboard(){return this.add(new ks),this}}});function efe(n){let e=Math.PI/2;return n.x===0&&n.z===0||(e=Math.acos(n.x/Math.sqrt(Math.pow(n.x,2)+Math.pow(n.z,2)))),n.z<0&&(e=2*Math.PI-e),e}function tfe(n,e){return Math.acos(n/e)}function jn(n,e){return isNaN(n)?e:n}var gi,kx=I(()=>{Gt();Vt();hi();ke();Vn();la();Ci();sD();YW();KW();_l();pD();JW();Un();yi();Yi();_i.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new gi(n,0,0,1,b.Zero(),e));gi=class n extends Gs{get target(){return this._target}set target(e){this.setTarget(e)}get targetHost(){return this._targetHost}set targetHost(e){e&&this.setTarget(e)}getTarget(){return this.target}get position(){return this._position}set position(e){this.setPosition(e)}set upVector(e){this._upToYMatrix||(this._yToUpMatrix=new q,this._upToYMatrix=new q,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){q.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),q.RotationAlignToRef(this._upVector,b.UpReadOnly,this._upToYMatrix)}get angularSensibilityX(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0}set angularSensibilityX(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityX=e)}get angularSensibilityY(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0}set angularSensibilityY(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityY=e)}get pinchPrecision(){let e=this.inputs.attached.pointers;return e?e.pinchPrecision:0}set pinchPrecision(e){let t=this.inputs.attached.pointers;t&&(t.pinchPrecision=e)}get pinchDeltaPercentage(){let e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0}set pinchDeltaPercentage(e){let t=this.inputs.attached.pointers;t&&(t.pinchDeltaPercentage=e)}get useNaturalPinchZoom(){let e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1}set useNaturalPinchZoom(e){let t=this.inputs.attached.pointers;t&&(t.useNaturalPinchZoom=e)}get panningSensibility(){let e=this.inputs.attached.pointers;return e?e.panningSensibility:0}set panningSensibility(e){let t=this.inputs.attached.pointers;t&&(t.panningSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get wheelPrecision(){let e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0}set wheelPrecision(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelPrecision=e)}get zoomToMouseLocation(){let e=this.inputs.attached.mousewheel;return e?e.zoomToMouseLocation:!1}set zoomToMouseLocation(e){let t=this.inputs.attached.mousewheel;t&&(t.zoomToMouseLocation=e)}get wheelDeltaPercentage(){let e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0}set wheelDeltaPercentage(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelDeltaPercentage=e)}get isInterpolating(){return this._isInterpolating}get bouncingBehavior(){return this._bouncingBehavior}get useBouncingBehavior(){return this._bouncingBehavior!=null}set useBouncingBehavior(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new tp,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))}get framingBehavior(){return this._framingBehavior}get useFramingBehavior(){return this._framingBehavior!=null}set useFramingBehavior(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Ff,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))}get autoRotationBehavior(){return this._autoRotationBehavior}get useAutoRotationBehavior(){return this._autoRotationBehavior!=null}set useAutoRotationBehavior(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new ep,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))}constructor(e,t,i,r,s,a,o=!0){super(e,b.Zero(),a,o),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.lowerAlphaLimit=null,this.upperAlphaLimit=null,this.lowerBetaLimit=.01,this.upperBetaLimit=Math.PI-.01,this.lowerRadiusLimit=null,this.upperRadiusLimit=null,this.lowerTargetYLimit=-1/0,this.inertialPanningX=0,this.inertialPanningY=0,this.pinchToPanMaxDistance=20,this.panningDistanceLimit=null,this.panningOriginTarget=b.Zero(),this.panningInertia=.9,this.zoomOnFactor=1,this.targetScreenOffset=Fe.Zero(),this.allowUpsideDown=!0,this.useInputToRestoreState=!0,this.restoreStateInterpolationFactor=0,this._currentInterpolationFactor=0,this._viewMatrix=new q,this.panningAxis=new b(1,1,0),this._transformedDirection=new b,this.mapPanning=!1,this._isInterpolating=!1,this.onMeshTargetChangedObservable=new ie,this.checkCollisions=!1,this.collisionRadius=new b(.5,.5,.5),this._previousPosition=b.Zero(),this._collisionVelocity=b.Zero(),this._newPosition=b.Zero(),this._computationVector=b.Zero(),this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget=new b(NaN,NaN,NaN),this._goalTargetScreenOffset=new Fe(NaN,NaN),this._onCollisionPositionChange=(l,c,f=null)=>{f?(this.setPosition(c),this.onCollide&&this.onCollide(f)):this._previousPosition.copyFrom(this._position);let d=Math.cos(this.alpha),h=Math.sin(this.alpha),u=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let _=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*u,this.radius*h*m),_.addToRef(this._computationVector,this._newPosition),this._position.copyFrom(this._newPosition);let p=this.upVector;this.allowUpsideDown&&this.beta<0&&(p=p.clone(),p=p.negate()),this._computeViewMatrix(this._position,_,p),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y),this._collisionTriggered=!1},this._target=b.Zero(),s&&this.setTarget(s),this.alpha=t,this.beta=i,this.radius=r,this.getViewMatrix(),this.inputs=new Gx(this),this.inputs.addKeyboard().addMouseWheel().addPointers()}_initCache(){super._initCache(),this._cache._target=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=Fe.Zero()}_updateCache(e){e||super._updateCache(),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)}_getTargetPosition(){if(this._targetHost&&this._targetHost.getAbsolutePosition){let t=this._targetHost.getAbsolutePosition();this._targetBoundingCenter?t.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(t)}let e=this._getLockedTargetPosition();return e||this._target}storeState(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),super.storeState()}_restoreStateValues(){return this.hasStateStored()&&this.restoreStateInterpolationFactor>Nt&&this.restoreStateInterpolationFactor<1?(this.interpolateTo(this._storedAlpha,this._storedBeta,this._storedRadius,this._storedTarget,this._storedTargetScreenOffset,this.restoreStateInterpolationFactor),!0):super._restoreStateValues()?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1}stopInterpolation(){this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget.set(NaN,NaN,NaN),this._goalTargetScreenOffset.set(NaN,NaN)}interpolateTo(e=this.alpha,t=this.beta,i=this.radius,r=this.target,s=this.targetScreenOffset,a){var o,l,c,f,d,h,u;this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,a!=null?this._currentInterpolationFactor=a:this.restoreStateInterpolationFactor!==0?this._currentInterpolationFactor=this.restoreStateInterpolationFactor:this._currentInterpolationFactor=.1,this._goalAlpha=jn(e,this._goalAlpha),this._goalBeta=jn(t,this._goalBeta),this._goalRadius=jn(i,this._goalRadius),this._goalTarget.set(jn(r.x,this._goalTarget.x),jn(r.y,this._goalTarget.y),jn(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(jn(s.x,this._goalTargetScreenOffset.x),jn(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=wt(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=wt(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=wt(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(h=this.upperRadiusLimit)!=null?h:1/0),this._goalTarget.y=wt(this._goalTarget.y,(u=this.lowerTargetYLimit)!=null?u:-1/0,1/0),this._isInterpolating=!0}_isSynchronizedViewMatrix(){return super._isSynchronizedViewMatrix()?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1}attachControl(e,t,i=!0,r=2){let s=arguments;t=_e.BackCompatCameraNoPreventDefault(s),this._useCtrlForPanning=i,this._panningMouseButton=r,typeof s[0]=="boolean"&&(s.length>1&&(this._useCtrlForPanning=s[1]),s.length>2&&(this._panningMouseButton=s[2])),this.inputs.attachElement(t),this._reset=()=>{this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0}}detachControl(){this.inputs.detachElement(),this._reset&&this._reset()}_checkInputs(){if(this._collisionTriggered)return;this.inputs.checkInputs();let e=!1;if(this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){e=!0;let t=this.invertRotation?-1:1,i=this._calculateHandednessMultiplier(),r=this.inertialAlphaOffset*i;this.beta<0&&(r*=-1),this.alpha+=r*t,this.beta+=this.inertialBetaOffset*t,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)Math.PI&&(this.beta=this.beta-2*Math.PI):this.betathis.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alphathis.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radiusthis.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0),this.target.y=Math.max(this.target.y,this.lowerTargetYLimit)}rebuildAnglesAndRadius(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);let e=this.alpha;this.alpha=efe(this._computationVector),this.beta=tfe(this._computationVector.y,this.radius);let t=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=t*2*Math.PI,this._checkLimits()}setPosition(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())}setTarget(e,t=!1,i=!1,r=!1){var s;if(r=(s=this.overrideCloneAlphaBetaRadius)!=null?s:r,e.computeWorldMatrix)t&&e.getBoundingInfo?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{let a=e,o=this._getTargetPosition();if(o&&!i&&o.equals(a))return;this._targetHost=null,this._target=a,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}r||this.rebuildAnglesAndRadius()}_getViewMatrix(){let e=Math.cos(this.alpha),t=Math.sin(this.alpha),i=Math.cos(this.beta),r=Math.sin(this.beta);r===0&&(r=1e-4),this.radius===0&&(this.radius=1e-4);let s=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*r,this.radius*i,this.radius*t*r),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._yToUpMatrix,this._computationVector),s.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){let a=this.getScene().collisionCoordinator;this._collider||(this._collider=a.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,a.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);let a=this.upVector;this.allowUpsideDown&&r<0&&(a=a.negate()),this._computeViewMatrix(this._position,s,a),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget.copyFrom(s),this._viewMatrix}zoomOn(e,t=!1){e=e||this.getScene().meshes;let i=Z.MinMax(e),r=this._calculateLowerRadiusFromModelBoundingSphere(i.min,i.max);if(r=Math.max(Math.min(r,this.upperRadiusLimit||Number.MAX_VALUE),this.lowerRadiusLimit||0),this.radius=r*this.zoomOnFactor,this.mode===mt.ORTHOGRAPHIC_CAMERA){let s=this.getScene().getEngine().getAspectRatio(this),a=r*this.zoomOnFactor/2;this.orthoLeft=-a*s,this.orthoRight=a*s,this.orthoBottom=-a,this.orthoTop=a}this.focusOn({min:i.min,max:i.max,distance:r},t)}focusOn(e,t=!1){let i,r;if(e.min===void 0){let s=e||this.getScene().meshes;i=Z.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=Z.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case mt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case mt.RIG_MODE_STEREOSCOPIC_INTERLACED:case mt.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:i=this._cameraRigParams.stereoHalfAngle*(t===0?-1:1);break}let r=new n(e,this.alpha+i,this.beta,this.radius,this._target,this.getScene());return r._cameraRigParams={},r.isRigCamera=!0,r.rigParent=this,r.upVector=this.upVector,r.mode=this.mode,r.orthoLeft=this.orthoLeft,r.orthoRight=this.orthoRight,r.orthoBottom=this.orthoBottom,r.orthoTop=this.orthoTop,r}_updateRigCameras(){let e=this._rigCameras[0],t=this._rigCameras[1];switch(e.beta=t.beta=this.beta,this.cameraRigMode){case mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case mt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case mt.RIG_MODE_STEREOSCOPIC_INTERLACED:case mt.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}super._updateRigCameras()}_calculateLowerRadiusFromModelBoundingSphere(e,t,i=1){let r=b.Distance(e,t),a=this.getScene().getEngine().getAspectRatio(this),o=Math.tan(this.fov/2),l=o*a,f=r*.5*i,d=f*Math.sqrt(1+1/(l*l)),h=f*Math.sqrt(1+1/(o*o));return Math.max(d,h)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],gi.prototype,"alpha",void 0);P([F()],gi.prototype,"beta",void 0);P([F()],gi.prototype,"radius",void 0);P([F()],gi.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Xr("target")],gi.prototype,"_target",void 0);P([WA("targetHost")],gi.prototype,"_targetHost",void 0);P([F()],gi.prototype,"inertialAlphaOffset",void 0);P([F()],gi.prototype,"inertialBetaOffset",void 0);P([F()],gi.prototype,"inertialRadiusOffset",void 0);P([F()],gi.prototype,"lowerAlphaLimit",void 0);P([F()],gi.prototype,"upperAlphaLimit",void 0);P([F()],gi.prototype,"lowerBetaLimit",void 0);P([F()],gi.prototype,"upperBetaLimit",void 0);P([F()],gi.prototype,"lowerRadiusLimit",void 0);P([F()],gi.prototype,"upperRadiusLimit",void 0);P([F()],gi.prototype,"lowerTargetYLimit",void 0);P([F()],gi.prototype,"inertialPanningX",void 0);P([F()],gi.prototype,"inertialPanningY",void 0);P([F()],gi.prototype,"pinchToPanMaxDistance",void 0);P([F()],gi.prototype,"panningDistanceLimit",void 0);P([Xr()],gi.prototype,"panningOriginTarget",void 0);P([F()],gi.prototype,"panningInertia",void 0);P([F()],gi.prototype,"zoomToMouseLocation",null);P([F()],gi.prototype,"zoomOnFactor",void 0);P([vm()],gi.prototype,"targetScreenOffset",void 0);P([F()],gi.prototype,"allowUpsideDown",void 0);P([F()],gi.prototype,"useInputToRestoreState",void 0);P([F()],gi.prototype,"restoreStateInterpolationFactor",void 0);Ft("BABYLON.ArcRotateCamera",gi)});var zt,Uf=I(()=>{Gt();Vt();ke();Ht();la();Af();Yi();Tg();br();zt=class n extends _i{get range(){return this._range}set range(e){this._range=e,this._inverseSquaredRange=1/(this.range*this.range)}get intensityMode(){return this._intensityMode}set intensityMode(e){this._intensityMode=e,this._computePhotometricScale()}get radius(){return this._radius}set radius(e){this._radius=e,this._computePhotometricScale()}get shadowEnabled(){return this._shadowEnabled}set shadowEnabled(e){this._shadowEnabled!==e&&(this._shadowEnabled=e,this._markMeshesAsLightDirty())}get includedOnlyMeshes(){return this._includedOnlyMeshes}set includedOnlyMeshes(e){this._includedOnlyMeshes=e,this._hookArrayForIncludedOnly(e)}get excludedMeshes(){return this._excludedMeshes}set excludedMeshes(e){this._excludedMeshes=e,this._hookArrayForExcluded(e)}get excludeWithLayerMask(){return this._excludeWithLayerMask}set excludeWithLayerMask(e){this._excludeWithLayerMask=e,this._resyncMeshes()}get includeOnlyWithLayerMask(){return this._includeOnlyWithLayerMask}set includeOnlyWithLayerMask(e){this._includeOnlyWithLayerMask=e,this._resyncMeshes()}get lightmapMode(){return this._lightmapMode}set lightmapMode(e){this._lightmapMode!==e&&(this._lightmapMode=e,this._markMeshesAsLightDirty())}getViewMatrix(e){return null}getProjectionMatrix(e,t){return null}constructor(e,t,i){super(e,t,!1),this.diffuse=new pe(1,1,1),this.specular=new pe(1,1,1),this.falloffType=n.FALLOFF_DEFAULT,this.intensity=1,this._range=Number.MAX_VALUE,this._inverseSquaredRange=0,this._photometricScale=1,this._intensityMode=n.INTENSITYMODE_AUTOMATIC,this._radius=1e-5,this.renderPriority=0,this._shadowEnabled=!0,this._excludeWithLayerMask=0,this._includeOnlyWithLayerMask=0,this._lightmapMode=0,this._shadowGenerators=null,this._excludedMeshesIds=new Array,this._includedOnlyMeshesIds=new Array,this._currentViewDepth=0,this._clusteredContainer=null,this._isLight=!0,i||this.getScene().addLight(this),this._uniformBuffer=new mr(this.getScene().getEngine(),void 0,void 0,e),this._buildUniformLayout(),this.includedOnlyMeshes=[],this.excludedMeshes=[],i||this._resyncMeshes()}transferTexturesToEffect(e,t){return this}_bindLight(e,t,i,r,s=!0){var l;let a=e.toString(),o=!1;if(this._uniformBuffer.bindToEffect(i,"Light"+a),this._renderId!==t.getRenderId()||this._lastUseSpecular!==r||!this._uniformBuffer.useUbo){this._renderId=t.getRenderId(),this._lastUseSpecular=r;let c=this.getScaledIntensity();this.transferToEffect(i,a),this.diffuse.scaleToRef(c,Rn.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Rn.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Rn.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Rn.Color3[1],this.radius,a)),o=!0}if(this.transferTexturesToEffect(i,a),t.shadowsEnabled&&this.shadowEnabled&&s){let c=(l=this.getShadowGenerator(t.activeCamera))!=null?l:this.getShadowGenerator();c&&(c.bindShadowLight(a,i),o=!0)}o?this._uniformBuffer.update():this._uniformBuffer.bindUniformBuffer()}getClassName(){return"Light"}toString(e){let t="Name: "+this.name;if(t+=", type: "+["Point","Directional","Spot","Hemispheric","Clustered"][this.getTypeID()],this.animations)for(let i=0;i0&&this.includedOnlyMeshes.indexOf(e)===-1||this.excludedMeshes&&this.excludedMeshes.length>0&&this.excludedMeshes.indexOf(e)!==-1||this.includeOnlyWithLayerMask!==0&&(this.includeOnlyWithLayerMask&e.layerMask)===0||this.excludeWithLayerMask!==0&&this.excludeWithLayerMask&e.layerMask):!0}dispose(e,t=!1){if(this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.dispose();this._shadowGenerators=null}if(this.getScene().stopAnimation(this),this._parentContainer){let i=this._parentContainer.lights.indexOf(this);i>-1&&this._parentContainer.lights.splice(i,1),this._parentContainer=null}for(let i of this.getScene().meshes)i._removeLightSource(this,!0);this._uniformBuffer.dispose(),this.getScene().removeLight(this),super.dispose(e,t)}getTypeID(){return 0}getScaledIntensity(){return this._photometricScale*this.intensity}clone(e,t=null){let i=n.GetConstructorFromName(this.getTypeID(),e,this.getScene());if(!i)return null;let r=it.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=it.Serialize(this);if(e.uniqueId=this.uniqueId,e.type=this.getTypeID(),this.parent&&this.parent._serializeAsParent(e),this.excludedMeshes.length>0){e.excludedMeshesIds=[];for(let t of this.excludedMeshes)e.excludedMeshesIds.push(t.id)}if(this.includedOnlyMeshes.length>0){e.includedOnlyMeshesIds=[];for(let t of this.includedOnlyMeshes)e.includedOnlyMeshesIds.push(t.id)}return it.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=_i.Construct("Light_Type_"+e,t,i);return r||null}static Parse(e,t){let i=n.GetConstructorFromName(e.type,e.name,t);if(!i)return null;let r=it.Parse(i,e,t);if(e.excludedMeshesIds&&(r._excludedMeshesIds=e.excludedMeshesIds),e.includedOnlyMeshesIds&&(r._includedOnlyMeshesIds=e.includedOnlyMeshesIds),e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.falloffType!==void 0&&(r.falloffType=e.falloffType),e.lightmapMode!==void 0&&(r.lightmapMode=e.lightmapMode),e.animations){for(let s=0;s{let s=t.apply(e,r);if(this._clusteredContainer)return s;for(let a of r)a._resyncLightSource(this);return s};let i=e.splice;if(e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);if(this._clusteredContainer)return a;for(let o of a)o._resyncLightSource(this);return a},!this._clusteredContainer)for(let r of e)r._resyncLightSource(this)}_hookArrayForIncludedOnly(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._resyncMeshes(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._resyncMeshes(),a},this._resyncMeshes()}_resyncMeshes(){if(!this._clusteredContainer)for(let e of this.getScene().meshes)e._resyncLightSource(this)}_markMeshesAsLightDirty(){for(let e of this.getScene().meshes)e.lightSources.indexOf(this)!==-1&&e._markSubMeshesAsLightDirty()}_computePhotometricScale(){this._photometricScale=this._getPhotometricScale(),this.getScene().resetCachedMaterial()}_getPhotometricScale(){let e=0,t=this.getTypeID(),i=this.intensityMode;switch(i===n.INTENSITYMODE_AUTOMATIC&&(t===n.LIGHTTYPEID_DIRECTIONALLIGHT?i=n.INTENSITYMODE_ILLUMINANCE:i=n.INTENSITYMODE_LUMINOUSINTENSITY),t){case n.LIGHTTYPEID_POINTLIGHT:case n.LIGHTTYPEID_SPOTLIGHT:switch(i){case n.INTENSITYMODE_LUMINOUSPOWER:e=1/(4*Math.PI);break;case n.INTENSITYMODE_LUMINOUSINTENSITY:e=1;break;case n.INTENSITYMODE_LUMINANCE:e=this.radius*this.radius;break}break;case n.LIGHTTYPEID_DIRECTIONALLIGHT:switch(i){case n.INTENSITYMODE_ILLUMINANCE:e=1;break;case n.INTENSITYMODE_LUMINANCE:{let r=this.radius;r=Math.max(r,.001),e=2*Math.PI*(1-Math.cos(r));break}}break;case n.LIGHTTYPEID_HEMISPHERICLIGHT:e=1;break}return e}_reorderLightsInScene(){let e=this.getScene();this._renderPriority!=0&&(e.requireLightSorting=!0),this.getScene().sortLightsByPriority()}areLightTexturesReady(){return!0}_isReady(){return!0}};zt.FALLOFF_DEFAULT=Xt.FALLOFF_DEFAULT;zt.FALLOFF_PHYSICAL=Xt.FALLOFF_PHYSICAL;zt.FALLOFF_GLTF=Xt.FALLOFF_GLTF;zt.FALLOFF_STANDARD=Xt.FALLOFF_STANDARD;zt.LIGHTMAP_DEFAULT=Xt.LIGHTMAP_DEFAULT;zt.LIGHTMAP_SPECULAR=Xt.LIGHTMAP_SPECULAR;zt.LIGHTMAP_SHADOWSONLY=Xt.LIGHTMAP_SHADOWSONLY;zt.INTENSITYMODE_AUTOMATIC=Xt.INTENSITYMODE_AUTOMATIC;zt.INTENSITYMODE_LUMINOUSPOWER=Xt.INTENSITYMODE_LUMINOUSPOWER;zt.INTENSITYMODE_LUMINOUSINTENSITY=Xt.INTENSITYMODE_LUMINOUSINTENSITY;zt.INTENSITYMODE_ILLUMINANCE=Xt.INTENSITYMODE_ILLUMINANCE;zt.INTENSITYMODE_LUMINANCE=Xt.INTENSITYMODE_LUMINANCE;zt.LIGHTTYPEID_POINTLIGHT=Xt.LIGHTTYPEID_POINTLIGHT;zt.LIGHTTYPEID_DIRECTIONALLIGHT=Xt.LIGHTTYPEID_DIRECTIONALLIGHT;zt.LIGHTTYPEID_SPOTLIGHT=Xt.LIGHTTYPEID_SPOTLIGHT;zt.LIGHTTYPEID_HEMISPHERICLIGHT=Xt.LIGHTTYPEID_HEMISPHERICLIGHT;zt.LIGHTTYPEID_RECT_AREALIGHT=Xt.LIGHTTYPEID_RECT_AREALIGHT;P([Tr()],zt.prototype,"diffuse",void 0);P([Tr()],zt.prototype,"specular",void 0);P([F()],zt.prototype,"falloffType",void 0);P([F()],zt.prototype,"intensity",void 0);P([F()],zt.prototype,"range",null);P([F()],zt.prototype,"intensityMode",null);P([F()],zt.prototype,"radius",null);P([F()],zt.prototype,"_renderPriority",void 0);P([le("_reorderLightsInScene")],zt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],zt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],zt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],zt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],zt.prototype,"_lightmapMode",void 0)});var fa,Wx=I(()=>{Gt();Vt();ke();Ht();la();Uf();Yi();_i.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new fa(n,b.Zero(),e));fa=class extends zt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new pe(0,0,0),this.direction=t||b.Up()}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightGround",3),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}getClassName(){return"HemisphericLight"}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(b.Zero())),this.direction}getShadowGenerator(){return null}transferToEffect(e,t){let i=b.Normalize(this.direction);return this._uniformBuffer.updateFloat4("vLightData",i.x,i.y,i.z,0,t),this._uniformBuffer.updateColor3("vLightGround",this.groundColor.scale(this.intensity),t),this}transferToNodeMaterialEffect(e,t){let i=b.Normalize(this.direction);return e.setFloat3(t,i.x,i.y,i.z),this}computeWorldMatrix(){return this._worldMatrix||(this._worldMatrix=q.Identity()),this._worldMatrix}getTypeID(){return zt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([Tr()],fa.prototype,"groundColor",void 0);P([Xr()],fa.prototype,"direction",void 0);Ft("BABYLON.HemisphericLight",fa)});var Va,Hx=I(()=>{Gt();Vt();ke();Uf();lm();Va=class extends zt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=q.Identity(),this._projectionMatrix=q.Identity()}_setPosition(e){this._position=e}get position(){return this._position}set position(e){this._setPosition(e)}_setDirection(e){this._direction=e}get direction(){return this._direction}set direction(e){this._setDirection(e)}get shadowMinZ(){return this._shadowMinZ}set shadowMinZ(e){this._shadowMinZ=e,this.forceProjectionMatrixCompute()}get shadowMaxZ(){return this._shadowMaxZ}set shadowMaxZ(e){this._shadowMaxZ=e,this.forceProjectionMatrixCompute()}computeTransformedInformation(){return this.parent&&this.parent.getWorldMatrix?(this.transformedPosition||(this.transformedPosition=b.Zero()),b.TransformCoordinatesToRef(this.position,this.parent.getWorldMatrix(),this.transformedPosition),this.direction&&(this.transformedDirection||(this.transformedDirection=b.Zero()),b.TransformNormalToRef(this.direction,this.parent.getWorldMatrix(),this.transformedDirection)),!0):!1}getDepthScale(){return 50}getShadowDirection(e){return this.transformedDirection?this.transformedDirection:this.direction}getAbsolutePosition(){return this.transformedPosition?this.transformedPosition:this.position}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(this.position)),this.direction}getRotation(){this.direction.normalize();let e=b.Cross(this.direction,Ns.Y),t=b.Cross(e,this.direction);return b.RotationFromAxis(e,t,this.direction)}needCube(){return!1}needProjectionMatrixCompute(){return this._needProjectionMatrixCompute}forceProjectionMatrixCompute(){this._needProjectionMatrixCompute=!0}_initCache(){super._initCache(),this._cache.position=b.Zero()}_isSynchronized(){return!!this._cache.position.equals(this.position)}computeWorldMatrix(e){return!e&&this.isSynchronized()?(this._currentRenderId=this.getScene().getRenderId(),this._worldMatrix):(this._updateCache(),this._cache.position.copyFrom(this.position),this._worldMatrix||(this._worldMatrix=q.Identity()),q.TranslationToRef(this.position.x,this.position.y,this.position.z,this._worldMatrix),this.parent&&this.parent.getWorldMatrix&&(this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(),this._worldMatrix),this._markSyncedWithParent()),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix)}getDepthMinZ(e){return this.shadowMinZ!==void 0?this.shadowMinZ:(e==null?void 0:e.minZ)||0}getDepthMaxZ(e){return this.shadowMaxZ!==void 0?this.shadowMaxZ:(e==null?void 0:e.maxZ)||1e4}setShadowProjectionMatrix(e,t,i){return this.customProjectionMatrixBuilder?this.customProjectionMatrixBuilder(t,i,e):this._setDefaultShadowProjectionMatrix(e,t,i),this}_syncParentEnabledState(){super._syncParentEnabledState(),(!this.parent||!this.parent.getWorldMatrix)&&(this.transformedPosition=null,this.transformedDirection=null)}getViewMatrix(e){let t=$.Vector3[0],i=this.position;this.computeTransformedInformation()&&(i=this.transformedPosition),b.NormalizeToRef(this.getShadowDirection(e),t),Math.abs(b.Dot(t,b.Up()))===1&&(t.z=1e-13);let r=$.Vector3[1];return i.addToRef(t,r),q.LookAtLHToRef(i,r,b.Up(),this._viewMatrix),this._viewMatrix}getProjectionMatrix(e,t){return this.setShadowProjectionMatrix(this._projectionMatrix,e!=null?e:this._viewMatrix,t!=null?t:[]),this._projectionMatrix}};P([Xr()],Va.prototype,"position",null);P([Xr()],Va.prototype,"direction",null);P([F()],Va.prototype,"shadowMinZ",null);P([F()],Va.prototype,"shadowMaxZ",null)});var Ws,eH=I(()=>{Gt();Vt();ke();la();Uf();Hx();Yi();_i.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new Ws(n,b.Zero(),e));Ws=class extends Va{get shadowFrustumSize(){return this._shadowFrustumSize}set shadowFrustumSize(e){this._shadowFrustumSize=e,this.forceProjectionMatrixCompute()}get shadowOrthoScale(){return this._shadowOrthoScale}set shadowOrthoScale(e){this._shadowOrthoScale=e,this.forceProjectionMatrixCompute()}get orthoLeft(){return this._orthoLeft}set orthoLeft(e){this._orthoLeft=e}get orthoRight(){return this._orthoRight}set orthoRight(e){this._orthoRight=e}get orthoTop(){return this._orthoTop}set orthoTop(e){this._orthoTop=e}get orthoBottom(){return this._orthoBottom}set orthoBottom(e){this._orthoBottom=e}constructor(e,t,i,r){super(e,i,r),this._shadowFrustumSize=0,this._shadowOrthoScale=.1,this.autoUpdateExtends=!0,this.autoCalcShadowZBounds=!1,this._orthoLeft=Number.MAX_VALUE,this._orthoRight=Number.MIN_VALUE,this._orthoTop=Number.MIN_VALUE,this._orthoBottom=Number.MAX_VALUE,this.position=t.scale(-1),this.direction=t}getClassName(){return"DirectionalLight"}getTypeID(){return zt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;q.OrthoLHToRef(this.shadowFrustumSize,this.shadowFrustumSize,this.shadowMinZ!==void 0?this.shadowMinZ:t?t.minZ:0,this.shadowMaxZ!==void 0?this.shadowMaxZ:t?t.maxZ:1e4,e,this.getScene().getEngine().isNDCHalfZRange)}_setDefaultAutoExtendShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(this.autoUpdateExtends||this._orthoLeft===Number.MAX_VALUE){let f=b.Zero();this._orthoLeft=Number.MAX_VALUE,this._orthoRight=-Number.MAX_VALUE,this._orthoTop=-Number.MAX_VALUE,this._orthoBottom=Number.MAX_VALUE;let d=Number.MAX_VALUE,h=-Number.MAX_VALUE;for(let u=0;uthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zh&&(h=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=h)}let s=this._orthoRight-this._orthoLeft,a=this._orthoTop-this._orthoBottom,o=this.shadowMinZ!==void 0?this.shadowMinZ:(r==null?void 0:r.minZ)||0,l=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r==null?void 0:r.maxZ)||1e4,c=this.getScene().getEngine().useReverseDepthBuffer;q.OrthoOffCenterLHToRef(this._orthoLeft-s*this.shadowOrthoScale,this._orthoRight+s*this.shadowOrthoScale,this._orthoBottom-a*this.shadowOrthoScale,this._orthoTop+a*this.shadowOrthoScale,c?l:o,c?o:l,e,this.getScene().getEngine().isNDCHalfZRange)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z,1,t),this):(this._uniformBuffer.updateFloat4("vLightData",this.direction.x,this.direction.y,this.direction.z,1,t),this)}transferToNodeMaterialEffect(e,t){return this.computeTransformedInformation()?(e.setFloat3(t,this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z),this):(e.setFloat3(t,this.direction.x,this.direction.y,this.direction.z),this)}getDepthMinZ(e){let t=this._scene.getEngine();return!t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}getDepthMaxZ(e){let t=this._scene.getEngine();return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}prepareLightSpecificDefines(e,t){e["DIRLIGHT"+t]=!0}};P([F()],Ws.prototype,"shadowFrustumSize",null);P([F()],Ws.prototype,"shadowOrthoScale",null);P([F()],Ws.prototype,"autoUpdateExtends",void 0);P([F()],Ws.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],Ws.prototype,"_orthoLeft",void 0);P([F("orthoRight")],Ws.prototype,"_orthoRight",void 0);P([F("orthoTop")],Ws.prototype,"_orthoTop",void 0);P([F("orthoBottom")],Ws.prototype,"_orthoBottom",void 0);Ft("BABYLON.DirectionalLight",Ws)});var Vf,tH=I(()=>{Gt();Vt();ke();la();Uf();Hx();Yi();_i.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new Vf(n,b.Zero(),e));Vf=class extends Va{get shadowAngle(){return this._shadowAngle}set shadowAngle(e){this._shadowAngle=e,this.forceProjectionMatrixCompute()}get direction(){return this._direction}set direction(e){let t=this.needCube();if(this._direction=e,this.needCube()!==t&&this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.recreateShadowMap()}}constructor(e,t,i,r){super(e,i,r),this._shadowAngle=Math.PI/2,this.position=t}getClassName(){return"PointLight"}getTypeID(){return zt.LIGHTTYPEID_POINTLIGHT}needCube(){return!this.direction}getShadowDirection(e){if(this.direction)return super.getShadowDirection(e);switch(e){case 0:return new b(1,0,0);case 1:return new b(-1,0,0);case 2:return new b(0,-1,0);case 3:return new b(0,1,0);case 4:return new b(0,0,1);case 5:return new b(0,0,-1)}return b.Zero()}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera,s=this.getDepthMinZ(r),a=this.getDepthMaxZ(r),o=this.getScene().getEngine().useReverseDepthBuffer;q.PerspectiveFovLHToRef(this.shadowAngle,1,o?a:s,o?s:a,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,o)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z,0,t):this._uniformBuffer.updateFloat4("vLightData",this.position.x-i.x,this.position.y-i.y,this.position.z-i.z,0,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,0,0,t),this}transferToNodeMaterialEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?e.setFloat3(t,this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z):e.setFloat3(t,this.position.x-i.x,this.position.y-i.y,this.position.z-i.z),this}prepareLightSpecificDefines(e,t){e["POINTLIGHT"+t]=!0}};P([F()],Vf.prototype,"shadowAngle",null);Ft("BABYLON.PointLight",Vf)});var Wr,_D=I(()=>{Gt();Vt();ke();la();Uf();Hx();Gr();Yi();_i.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Wr(n,b.Zero(),b.Zero(),0,0,e));Wr=class n extends Va{get iesProfileTexture(){return this._iesProfileTexture}set iesProfileTexture(e){this._iesProfileTexture!==e&&(this._iesProfileTexture=e,this._iesProfileTexture&&n._IsTexture(this._iesProfileTexture)&&this._iesProfileTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()}))}get angle(){return this._angle}set angle(e){this._angle=e,this._cosHalfAngle=Math.cos(e*.5),this._projectionTextureProjectionLightDirty=!0,this.forceProjectionMatrixCompute(),this._computeAngleValues()}get innerAngle(){return this._innerAngle}set innerAngle(e){this._innerAngle=e,this._computeAngleValues()}get shadowAngleScale(){return this._shadowAngleScale}set shadowAngleScale(e){this._shadowAngleScale=e,this.forceProjectionMatrixCompute()}get projectionTextureMatrix(){return this._projectionTextureMatrix}get projectionTextureLightNear(){return this._projectionTextureLightNear}set projectionTextureLightNear(e){this._projectionTextureLightNear=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureLightFar(){return this._projectionTextureLightFar}set projectionTextureLightFar(e){this._projectionTextureLightFar=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureUpDirection(){return this._projectionTextureUpDirection}set projectionTextureUpDirection(e){this._projectionTextureUpDirection=e,this._projectionTextureProjectionLightDirty=!0}get projectionTexture(){return this._projectionTexture}set projectionTexture(e){this._projectionTexture!==e&&(this._projectionTexture=e,this._projectionTextureDirty=!0,this._projectionTexture&&!this._projectionTexture.isReady()&&(n._IsProceduralTexture(this._projectionTexture)?this._projectionTexture.getEffect().executeWhenCompiled(()=>{this._markMeshesAsLightDirty()}):n._IsTexture(this._projectionTexture)&&this._projectionTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()})))}static _IsProceduralTexture(e){return e.onGeneratedObservable!==void 0}static _IsTexture(e){return e.onLoadObservable!==void 0}get projectionTextureProjectionLightMatrix(){return this._projectionTextureProjectionLightMatrix}set projectionTextureProjectionLightMatrix(e){this._projectionTextureProjectionLightMatrix=e,this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0}constructor(e,t,i,r,s,a,o){super(e,a,o),this._innerAngle=0,this._iesProfileTexture=null,this._projectionTextureMatrix=q.Zero(),this._projectionTextureLightNear=1e-6,this._projectionTextureLightFar=1e3,this._projectionTextureUpDirection=b.Up(),this._projectionTextureViewLightDirty=!0,this._projectionTextureProjectionLightDirty=!0,this._projectionTextureDirty=!0,this._projectionTextureViewTargetVector=b.Zero(),this._projectionTextureViewLightMatrix=q.Zero(),this._projectionTextureProjectionLightMatrix=q.Zero(),this._projectionTextureScalingMatrix=q.FromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1),this.position=t,this.direction=i,this.angle=r,this.exponent=s}getClassName(){return"SpotLight"}getTypeID(){return zt.LIGHTTYPEID_SPOTLIGHT}_setDirection(e){super._setDirection(e),this._projectionTextureViewLightDirty=!0}_setPosition(e){super._setPosition(e),this._projectionTextureViewLightDirty=!0}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(!r)return;this._shadowAngleScale=this._shadowAngleScale||1;let s=this._shadowAngleScale*this._angle,a=this.shadowMinZ!==void 0?this.shadowMinZ:r.minZ,o=this.shadowMaxZ!==void 0?this.shadowMaxZ:r.maxZ,l=this.getScene().getEngine().useReverseDepthBuffer;q.PerspectiveFovLHToRef(s,1,l?o:a,l?a:o,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,l)}_computeProjectionTextureViewLightMatrix(){this._projectionTextureViewLightDirty=!1,this._projectionTextureDirty=!0,this.getAbsolutePosition().addToRef(this.getShadowDirection(),this._projectionTextureViewTargetVector),q.LookAtLHToRef(this.getAbsolutePosition(),this._projectionTextureViewTargetVector,this._projectionTextureUpDirection,this._projectionTextureViewLightMatrix)}_computeProjectionTextureProjectionLightMatrix(){this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0;let e=this.projectionTextureLightFar,t=this.projectionTextureLightNear,i=e/(e-t),r=-i*t,s=1/Math.tan(this._angle/2);q.FromValuesToRef(s/1,0,0,0,0,s,0,0,0,0,i,1,0,0,r,0,this._projectionTextureProjectionLightMatrix)}_computeProjectionTextureMatrix(){if(this._projectionTextureDirty=!1,this._projectionTextureViewLightMatrix.multiplyToRef(this._projectionTextureProjectionLightMatrix,this._projectionTextureMatrix),this._projectionTexture instanceof ge){let e=this._projectionTexture.uScale/2,t=this._projectionTexture.vScale/2;q.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,.5,0,.5,.5,.5,1,this._projectionTextureScalingMatrix)}this._projectionTextureMatrix.multiplyToRef(this._projectionTextureScalingMatrix,this._projectionTextureMatrix)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightDirection",3),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}_computeAngleValues(){this._lightAngleScale=1/Math.max(.001,Math.cos(this._innerAngle*.5)-this._cosHalfAngle),this._lightAngleOffset=-this._cosHalfAngle*this._lightAngleScale}transferTexturesToEffect(e,t){return this.projectionTexture&&this.projectionTexture.isReady()&&(this._projectionTextureViewLightDirty&&this._computeProjectionTextureViewLightMatrix(),this._projectionTextureProjectionLightDirty&&this._computeProjectionTextureProjectionLightMatrix(),this._projectionTextureDirty&&this._computeProjectionTextureMatrix(),e.setMatrix("textureProjectionMatrix"+t,this._projectionTextureMatrix),e.setTexture("projectionLightTexture"+t,this.projectionTexture)),this._iesProfileTexture&&this._iesProfileTexture.isReady()&&e.setTexture("iesLightTexture"+t,this._iesProfileTexture),this}transferToEffect(e,t){let i,r=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-r.x,this.transformedPosition.y-r.y,this.transformedPosition.z-r.z,this.exponent,t),i=b.Normalize(this.transformedDirection)):(this._uniformBuffer.updateFloat4("vLightData",this.position.x-r.x,this.position.y-r.y,this.position.z-r.z,this.exponent,t),i=b.Normalize(this.direction)),this._uniformBuffer.updateFloat4("vLightDirection",i.x,i.y,i.z,this._cosHalfAngle,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,this._lightAngleScale,this._lightAngleOffset,t),this}transferToNodeMaterialEffect(e,t){let i;return this.computeTransformedInformation()?i=b.Normalize(this.transformedDirection):i=b.Normalize(this.direction),this.getScene().useRightHandedSystem?e.setFloat3(t,-i.x,-i.y,-i.z):e.setFloat3(t,i.x,i.y,i.z),this}dispose(){super.dispose(),this._projectionTexture&&this._projectionTexture.dispose(),this._iesProfileTexture&&(this._iesProfileTexture.dispose(),this._iesProfileTexture=null)}getDepthMinZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMinZ!==void 0?this.shadowMinZ:(r=e==null?void 0:e.minZ)!=null?r:0;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?i:this._scene.getEngine().isNDCHalfZRange?0:i}getDepthMaxZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r=e==null?void 0:e.maxZ)!=null?r:1e4;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:i}areLightTexturesReady(){return!(this._projectionTexture&&!this._projectionTexture.isReadyOrNotBlocking()||this._iesProfileTexture&&!this._iesProfileTexture.isReadyOrNotBlocking())}prepareLightSpecificDefines(e,t){e["SPOTLIGHT"+t]=!0,e["PROJECTEDLIGHTTEXTURE"+t]=!!(this.projectionTexture&&this.projectionTexture.isReady()),e["IESLIGHTTEXTURE"+t]=!!(this._iesProfileTexture&&this._iesProfileTexture.isReady())}};P([F()],Wr.prototype,"angle",null);P([F()],Wr.prototype,"innerAngle",null);P([F()],Wr.prototype,"shadowAngleScale",null);P([F()],Wr.prototype,"exponent",void 0);P([F()],Wr.prototype,"projectionTextureLightNear",null);P([F()],Wr.prototype,"projectionTextureLightFar",null);P([F()],Wr.prototype,"projectionTextureUpDirection",null);P([Ut("projectedLightTexture")],Wr.prototype,"_projectionTexture",void 0);Ft("BABYLON.SpotLight",Wr)});function iH(n){let e=n.pathArray,t=n.closeArray||!1,i=n.closePath||!1,r=n.invertUV||!1,s=Math.floor(e[0].length/2),a=n.offset||s;a=a>s?s:Math.floor(a);let o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],h=[],u=[],m=[],_=[],p=[],g=[],v,x=[],S=[],E,T,R;if(e.length<2){let Re=[],Ye=[];for(T=0;T0&&(G=L[R].subtract(L[R-1]).length(),O=G+p[E],m[E].push(O),p[E]=O),R++;i&&(R--,f.push(L[0].x,L[0].y,L[0].z),G=L[R].subtract(L[0]).length(),O=G+p[E],m[E].push(O),p[E]=O),x[E]=w+y,S[E]=M,M+=w+y}let N,B,V,J;for(T=0;T{let m=i[0].length,_=o,p=0,g=_._originalBuilderSideOrientation===Z.DOUBLESIDE?2:1;for(let v=1;v<=g;++v)for(let x=0;x{ke();Ci();Wi();pr();nn();ye.CreateRibbon=iH;Z.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Do(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function rH(n){let e=[],t=[],i=[],r=[],s=n.radius||.5,a=n.tessellation||64,o=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,l=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE;e.push(0,0,0),r.push(.5,.5);let c=Math.PI*2*o,f=o===1?c/a:c/(a-1),d=0;for(let m=0;m{Ci();pr();nn();ye.CreateDisc=rH;Z.CreateDisc=(n,e,t,i=null,r,s)=>gD(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var rp,sH=I(()=>{ke();Wi();Ci();Z._GroundMeshParser=(n,e)=>rp.Parse(n,e);rp=class n extends Z{constructor(e,t){super(e,t),this.generateOctree=!1}getClassName(){return"GroundMesh"}get subdivisions(){return Math.min(this._subdivisionsX,this._subdivisionsY)}get subdivisionsX(){return this._subdivisionsX}get subdivisionsY(){return this._subdivisionsY}optimize(e,t=32){this._subdivisionsX=e,this._subdivisionsY=e,this.subdivide(e);let i=this;i.createOrUpdateSubmeshesOctree&&i.createOrUpdateSubmeshesOctree(t)}getHeightAtCoordinates(e,t){let i=this.getWorldMatrix(),r=$.Matrix[5];i.invertToRef(r);let s=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,r,s),e=s.x,t=s.z,e=this._maxX||t<=this._minZ||t>this._maxZ)return this.position.y;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let a=this._getFacetAt(e,t),o=-(a.x*e+a.z*t+a.w)/a.y;return b.TransformCoordinatesFromFloatsToRef(0,o,0,i,s),s.y}getNormalAtCoordinates(e,t){let i=new b(0,1,0);return this.getNormalAtCoordinatesToRef(e,t,i),i}getNormalAtCoordinatesToRef(e,t,i){let r=this.getWorldMatrix(),s=$.Matrix[5];r.invertToRef(s);let a=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,s,a),e=a.x,t=a.z,ethis._maxX||tthis._maxZ)return this;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let o=this._getFacetAt(e,t);return b.TransformNormalFromFloatsToRef(o.x,o.y,o.z,r,i),this}updateCoordinateHeights(){return(!this._heightQuads||this._heightQuads.length==0)&&this._initHeightQuads(),this._computeHeightQuads(),this}_getFacetAt(e,t){let i=Math.floor((e+this._maxX)*this._subdivisionsX/this._width),r=Math.floor(-(t+this._maxZ)*this._subdivisionsY/this._height+this._subdivisionsY),s=this._heightQuads[r*this._subdivisionsX+i],a;return tn.maxHeight){c=!0;let d=n.maxHeight;n.maxHeight=n.minHeight,n.minHeight=d}for(s=0;s<=n.subdivisions;s++)for(a=0;a<=n.subdivisions;a++){let d=new b(a*n.width/n.subdivisions-n.width/2,0,(n.subdivisions-s)*n.height/n.subdivisions-n.height/2),h=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,u=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(h+u*n.bufferWidth)*4,_=n.buffer[m]/255,p=n.buffer[m+1]/255,g=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(_=1-_,p=1-p,g=1-g);let x=_*o.r+p*o.g+g*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*x:d.y=n.minHeight-Nt,n.heightBuffer&&(n.heightBuffer[s*(n.subdivisions+1)+a]=d.y),t.push(d.x,d.y,d.z),i.push(0,0,0),r.push(a/n.subdivisions,1-s/n.subdivisions)}for(s=0;s=n.minHeight,p=t[h*3+1]>=n.minHeight,g=t[u*3+1]>=n.minHeight;_&&p&&g&&(e.push(d),e.push(h),e.push(u)),t[m*3+1]>=n.minHeight&&_&&g&&(e.push(m),e.push(d),e.push(u))}ye.ComputeNormals(t,e,i);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function ED(n,e={},t){let i=new rp(n,t);return i._setReady(!1),i._subdivisionsX=e.subdivisionsX||e.subdivisions||1,i._subdivisionsY=e.subdivisionsY||e.subdivisions||1,i._width=e.width||1,i._height=e.height||1,i._maxX=i._width/2,i._maxZ=i._height/2,i._minX=-i._maxX,i._minZ=-i._maxZ,vD(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function SD(n,e,t=null){let i=new Z(n,t);return aH(e).applyToMesh(i,e.updatable),i}function TD(n,e,t={},i=null){let r=t.width||10,s=t.height||10,a=t.subdivisions||1,o=t.minHeight||0,l=t.maxHeight||1,c=t.colorFilter||new pe(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,h=t.onReady;i=i||Oe.LastCreatedScene;let u=new rp(n,i);u._subdivisionsX=a,u._subdivisionsY=a,u._width=r,u._height=s,u._maxX=u._width/2,u._maxZ=u._height/2,u._minX=-u._maxX,u._minZ=-u._maxZ,u._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let _=(p,g,v)=>{oH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:g,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(u,d),h&&h(u,m),u._setReady(!0)};if(typeof e=="string"){i.addPendingData(u);let p=v=>{let x=v.width,S=v.height;if(i.isDisposed){i.removePendingData(u);return}let E=i==null?void 0:i.getEngine().resizeImageBitmap(v,x,S);_(E,x,S),i.removePendingData(u)},g=(v,x)=>{i.removePendingData(u),t.onError&&t.onError(v,x)};_e.LoadImage(e,p,g,i.offlineProvider)}else _(e.data,e.width,e.height);return u}var AD=I(()=>{ke();Ht();Ci();pr();sH();yi();Ni();Un();nn();ye.CreateGround=vD;ye.CreateTiledGround=aH;ye.CreateGroundFromHeightMap=oH;Z.CreateGround=(n,e,t,i,r,s)=>ED(n,{width:e,height:t,subdivisions:i,updatable:s},r);Z.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>SD(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);Z.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>TD(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function zx(n){let t=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23],i=[0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0],r=[],s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.wrap||!1,c=n.topBaseAt===void 0?1:n.topBaseAt,f=n.bottomBaseAt===void 0?0:n.bottomBaseAt;c=(c+4)%4,f=(f+4)%4;let d=[2,0,3,1],h=[2,0,1,3],u=d[c],m=h[f],_=[1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1];if(l){t=[2,3,0,2,0,1,4,5,6,4,6,7,9,10,11,9,11,8,12,14,15,12,13,14],_=[-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1];let R=[[1,1,1],[-1,1,1],[-1,1,-1],[1,1,-1]],M=[[-1,-1,1],[1,-1,1],[1,-1,-1],[-1,-1,-1]],y=[17,18,19,16],C=[22,23,20,21];for(;u>0;)R.unshift(R.pop()),y.unshift(y.pop()),u--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),_=_.concat(R).concat(M),t.push(y[0],y[2],y[3],y[0],y[1],y[2]),t.push(C[0],C[2],C[3],C[0],C[1],C[2])}let p=[s/2,a/2,o/2],g=_.reduce((R,M,y)=>R.concat(M*p[y%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,x=n.faceUV||new Array(6),S=n.faceColors,E=[];for(let R=0;R<6;R++)x[R]===void 0&&(x[R]=new Ii(0,0,1,1)),S&&S[R]===void 0&&(S[R]=new lt(1,1,1,1));for(let R=0;R<6;R++)if(r.push(x[R].z,It?1-x[R].w:x[R].w),r.push(x[R].x,It?1-x[R].w:x[R].w),r.push(x[R].x,It?1-x[R].y:x[R].y),r.push(x[R].z,It?1-x[R].y:x[R].y),S)for(let M=0;M<4;M++)E.push(S[R].r,S[R].g,S[R].b,S[R].a);ye._ComputeSides(v,g,t,i,r,n.frontUVs,n.backUVs);let T=new ye;if(T.indices=t,T.positions=g,T.normals=i,T.uvs=r,S){let R=v===ye.DOUBLESIDE?E.concat(E):E;T.colors=R}return T}function xD(n,e={},t=null){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,zx(e).applyToMesh(i,e.updatable),i}var RD=I(()=>{ke();Ht();Ci();pr();nn();AD();ye.CreateBox=zx;Z.CreateBox=(n,e,t=null,i,r)=>xD(n,{size:e,sideOrientation:r,updatable:i},t)});function np(n){let e=n.pattern||Z.NO_FLIP,t=n.tileWidth||n.tileSize||1,i=n.tileHeight||n.tileSize||1,r=n.alignHorizontal||0,s=n.alignVertical||0,a=n.width||n.size||1,o=Math.floor(a/t),l=a-o*t,c=n.height||n.size||1,f=Math.floor(c/i),d=c-f*i,h=t*o/2,u=i*f/2,m=0,_=0,p=0,g=0,v=0,x=0;if(l>0||d>0){switch(p=-h,g=-u,v=h,x=u,r){case Z.CENTER:l/=2,p-=l,v+=l;break;case Z.LEFT:v+=l,m=-l/2;break;case Z.RIGHT:p-=l,m=l/2;break}switch(s){case Z.CENTER:d/=2,g-=d,x+=d;break;case Z.BOTTOM:x+=d,_=-d/2;break;case Z.TOP:g-=d,_=d/2;break}}let S=[],E=[],T=[];T[0]=[0,0,1,0,1,1,0,1],T[1]=[0,0,1,0,1,1,0,1],(e===Z.ROTATE_TILE||e===Z.ROTATE_ROW)&&(T[1]=[1,1,0,1,0,0,1,0]),(e===Z.FLIP_TILE||e===Z.FLIP_ROW)&&(T[1]=[1,0,0,0,0,1,1,1]),(e===Z.FLIP_N_ROTATE_TILE||e===Z.FLIP_N_ROTATE_ROW)&&(T[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],y=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===Z.CENTER||s===Z.TOP),N=d>0&&(s===Z.CENTER||s===Z.BOTTOM),B=l>0&&(r===Z.CENTER||r===Z.RIGHT),V=l>0&&(r===Z.CENTER||r===Z.LEFT),J,Q,te,X,Y;if(O&&B&&(S.push(p+m,g+_,0),S.push(-h+m,g+_,0),S.push(-h+m,g+d+_,0),S.push(p+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=1-l/t,te=1-d/i,X=1,Y=1,J=[Q,te,X,te,X,Y,Q,Y],e===Z.ROTATE_ROW&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),e===Z.FLIP_ROW&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),e===Z.FLIP_N_ROTATE_ROW&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(S.push(h+m,g+_,0),S.push(v+m,g+_,0),S.push(v+m,g+d+_,0),S.push(h+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=0,te=1-d/i,X=l/t,Y=1,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW||e===Z.ROTATE_TILE&&o%2===0)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW||e===Z.FLIP_TILE&&o%2===0)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW||e===Z.FLIP_N_ROTATE_TILE&&o%2===0)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(S.push(p+m,u+_,0),S.push(-h+m,u+_,0),S.push(-h+m,x+_,0),S.push(p+m,x+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=1-l/t,te=0,X=1,Y=d/i,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW&&f%2===1||e===Z.ROTATE_TILE&&f%1===0)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW&&f%2===1||e===Z.FLIP_TILE&&f%2===0)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW&&f%2===1||e===Z.FLIP_N_ROTATE_TILE&&f%2===0)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(S.push(h+m,u+_,0),S.push(v+m,u+_,0),S.push(v+m,x+_,0),S.push(h+m,x+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=0,te=0,X=l/t,Y=d/i,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW&&f%2===1||e===Z.ROTATE_TILE&&(f+o)%2===1)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW&&f%2===1||e===Z.FLIP_TILE&&(f+o)%2===1)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW&&f%2===1||e===Z.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let ve=[];Q=0,te=1-d/i,X=1,Y=1,ve[0]=[Q,te,X,te,X,Y,Q,Y],ve[1]=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_TILE||e===Z.ROTATE_ROW)&&(ve[1]=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_TILE||e===Z.FLIP_ROW)&&(ve[1]=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_TILE||e===Z.FLIP_N_ROTATE_ROW)&&(ve[1]=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]);for(let Ee=0;Ee{Ci();pr();ye.CreateTiledPlane=np});function cH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||Z.NO_FLIP,s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.tileWidth||n.tileSize||1,c=n.tileHeight||n.tileSize||1,f=n.alignHorizontal||0,d=n.alignVertical||0,h=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Ii(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new lt(1,1,1,1));let u=s/2,m=a/2,_=o/2,p=[];for(let O=0;O<2;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});for(let O=2;O<4;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});let g=d;d===Z.BOTTOM?g=Z.TOP:d===Z.TOP&&(g=Z.BOTTOM);for(let O=4;O<6;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:g,alignHorizontal:f,sideOrientation:h});let v=[],x=[],S=[],E=[],T=[],R=[],M=[],y=[],C,L=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+L)),L+=R[O].length,i){let B=i[O];for(let V=0;V{ke();Ht();Ci();pr();bD();nn();Xx=1,MD=-1;ye.CreateTiledBox=cH});function hH(n){let e=(n.segments||32)|0,t=n.diameterX||n.diameter||1,i=n.diameterY||n.diameter||1,r=n.diameterZ||n.diameter||1,s=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,a=n.slice&&n.slice<=0?1:n.slice||1,o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,h=[],u=[],m=[],_=[];for(let g=0;g<=f;g++){let v=g/f,x=v*Math.PI*a;for(let S=0;S<=d;S++){let E=S/d,T=E*Math.PI*2*s,R=q.RotationZ(-x),M=q.RotationY(T),y=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(y,M),L=C.multiply(c),w=C.divide(c).normalize();u.push(L.x,L.y,L.z),m.push(w.x,w.y,w.z),_.push(E,It?1-v:v)}if(g>0){let S=u.length/3;for(let E=S-2*(d+1);E+d+21&&(h.push(E),h.push(E+1),h.push(E+d+1)),(g{ke();Ci();pr();nn();ye.CreateSphere=hH;Z.CreateSphere=(n,e,t,i,r,s)=>ID(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function mH(n){let e=n.height||2,t=n.diameterTop===0?0:n.diameterTop||n.diameter||1,i=n.diameterBottom===0?0:n.diameterBottom||n.diameter||1;t=t||1e-5,i=i||1e-5;let r=(n.tessellation||24)|0,s=(n.subdivisions||1)|0,a=!!n.hasRings,o=!!n.enclose,l=n.cap===0?0:n.cap||Z.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,d=n.faceUV||new Array(3),h=n.faceColors,u=c!==1&&o?2:0,m=a?s:1,_=2+(1+u)*m,p;for(p=0;p<_;p++)h&&h[p]===void 0&&(h[p]=new lt(1,1,1,1));for(p=0;p<_;p++)d&&d[p]===void 0&&(d[p]=new Ii(0,0,1,1));let g=[],v=[],x=[],S=[],E=[],T=Math.PI*2*c/r,R,M,y,C=(i-t)/2/e,L=b.Zero(),w=b.Zero(),G=b.Zero(),O=b.Zero(),N=b.Zero(),B=Ns.Y,V,J,Q,te,X=1,Y=0,ve;for(V=0;V<=s;V++)for(M=V/s,y=(M*(t-i)+i)/2,te=a&&V!==0&&V!==s?2:1,Q=0;Q{let ne=me?t/2:i/2;if(ne===0)return;let fe,Pe,de,Re=me?d[_-1]:d[0],Ye=null;h&&(Ye=me?h[_-1]:h[0]);let Et=v.length/3,Ke=me?e/2:-e/2,Ze=new b(0,Ke,0);v.push(Ze.x,Ze.y,Ze.z),x.push(0,me?1:-1,0);let Jt=Re.y+(Re.w-Re.y)*.5;S.push(Re.x+(Re.z-Re.x)*.5,It?1-Jt:Jt),Ye&&E.push(Ye.r,Ye.g,Ye.b,Ye.a);let Lt=new Fe(.5,.5);for(de=0;de<=r;de++){fe=Math.PI*2*de*c/r;let xi=Math.cos(-fe),oe=Math.sin(-fe);Pe=new b(xi*ne,Ke,oe*ne);let Gi=new Fe(xi*Lt.x+.5,oe*Lt.y+.5);v.push(Pe.x,Pe.y,Pe.z),x.push(0,me?1:-1,0);let ti=Re.y+(Re.w-Re.y)*Gi.y;S.push(Re.x+(Re.z-Re.x)*Gi.x,It?1-ti:ti),Ye&&E.push(Ye.r,Ye.g,Ye.b,Ye.a)}for(de=0;de{ke();Ht();Ci();pr();Bs();lm();nn();ye.CreateCylinder=mH;Z.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ei))&&(a!==void 0&&(l=o||Z.DEFAULTSIDE,o=a),a=s,s=1),yD(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function _H(n){let e=[],t=[],i=[],r=[],s=n.diameter||1,a=n.thickness||.5,o=(n.tessellation||16)|0,l=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let h=d/o,u=d*Math.PI*2/o-Math.PI/2,m=q.Translation(s/2,0,0).multiply(q.RotationY(u));for(let _=0;_<=o;_++){let p=1-_/o,g=_*Math.PI*2/o+Math.PI,v=Math.cos(g),x=Math.sin(g),S=new b(v,x,0),E=S.scale(a/2),T=new Fe(h,p);E=b.TransformCoordinates(E,m),S=b.TransformNormal(S,m),t.push(E.x,E.y,E.z),i.push(S.x,S.y,S.z),r.push(T.x,It?1-T.y:T.y);let R=(d+1)%c,M=(_+1)%c;e.push(d*c+_),e.push(d*c+M),e.push(R*c+_),e.push(d*c+M),e.push(R*c+M),e.push(R*c+_)}}ye._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function CD(n,e={},t){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,_H(e).applyToMesh(i,e.updatable),i}var gH=I(()=>{ke();Ci();pr();nn();ye.CreateTorus=_H;Z.CreateTorus=(n,e,t,i,r,s,a)=>CD(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function vH(n){let e=[],t=[],i=[],r=[],s=n.radius||2,a=n.tube||.5,o=n.radialSegments||32,l=n.tubularSegments||32,c=n.p||2,f=n.q||3,d=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,h=p=>{let g=Math.cos(p),v=Math.sin(p),x=f/c*p,S=Math.cos(x),E=s*(2+S)*.5*g,T=s*(2+S)*v*.5,R=s*Math.sin(x)*.5;return new b(E,T,R)},u,m;for(u=0;u<=o;u++){let g=u%o/o*2*c*Math.PI,v=h(g),x=h(g+.01),S=x.subtract(v),E=x.add(v),T=b.Cross(S,E);for(E=b.Cross(T,S),T.normalize(),E.normalize(),m=0;m{ke();Ci();pr();nn();ye.CreateTorusKnot=vH;Z.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>PD(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var hc,DD=I(()=>{ke();Pt();Nm();Ci();Eg();yf();Wi();yi();Yi();Z._instancedMeshFactory=(n,e)=>{let t=new hc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};hc=class extends Ar{constructor(e,t){super(e,t.getScene()),this._indexInSourceMeshInstanceArray=-1,this._distanceToCamera=0,t.addInstance(this),this._sourceMesh=t,this._unIndexed=t._unIndexed,this.position.copyFrom(t.position),this.rotation.copyFrom(t.rotation),this.scaling.copyFrom(t.scaling),t.rotationQuaternion&&(this.rotationQuaternion=t.rotationQuaternion.clone()),this.animations=t.animations.slice();for(let i of t.getAnimationRanges())i!=null&&this.createAnimationRange(i.name,i.from,i.to);if(this.infiniteDistance=t.infiniteDistance,this.setPivotMatrix(t.getPivotMatrix()),!t.skeleton&&!t.morphTargetManager&&t.hasBoundingInfo){let i=t.getBoundingInfo();this.buildBoundingInfo(i.minimum,i.maximum)}else this.refreshBoundingInfo(!0,!0);this._syncSubMeshes()}getClassName(){return"InstancedMesh"}get lightSources(){return this._sourceMesh._lightSources}_resyncLightSources(){}_resyncLightSource(){}_removeLightSource(){}get receiveShadows(){return this._sourceMesh.receiveShadows}set receiveShadows(e){var t;((t=this._sourceMesh)==null?void 0:t.receiveShadows)!==e&&_e.Warn("Setting receiveShadows on an instanced mesh has no effect")}get material(){return this._sourceMesh.material}set material(e){var t;((t=this._sourceMesh)==null?void 0:t.material)!==e&&_e.Warn("Setting material on an instanced mesh has no effect")}get visibility(){return this._sourceMesh.visibility}set visibility(e){var t;((t=this._sourceMesh)==null?void 0:t.visibility)!==e&&_e.Warn("Setting visibility on an instanced mesh has no effect")}get skeleton(){return this._sourceMesh.skeleton}set skeleton(e){var t;((t=this._sourceMesh)==null?void 0:t.skeleton)!==e&&_e.Warn("Setting skeleton on an instanced mesh has no effect")}get renderingGroupId(){return this._sourceMesh.renderingGroupId}set renderingGroupId(e){!this._sourceMesh||e===this._sourceMesh.renderingGroupId||ee.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene")}getTotalVertices(){return this._sourceMesh?this._sourceMesh.getTotalVertices():0}getTotalIndices(){return this._sourceMesh.getTotalIndices()}get sourceMesh(){return this._sourceMesh}get geometry(){return this._sourceMesh._geometry}createInstance(e){return this._sourceMesh.createInstance(e)}isReady(e=!1){return this._sourceMesh.isReady(e,!0)}getVerticesData(e,t,i){return this._sourceMesh.getVerticesData(e,t,i)}copyVerticesData(e,t){this._sourceMesh.copyVerticesData(e,t)}getVertexBuffer(e,t){return this._sourceMesh.getVertexBuffer(e,t)}setVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.setVerticesData(e,t,i,r),this.sourceMesh}updateVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.updateVerticesData(e,t,i,r),this.sourceMesh}setIndices(e,t=null){return this.sourceMesh&&this.sourceMesh.setIndices(e,t),this.sourceMesh}isVerticesDataPresent(e){return this._sourceMesh.isVerticesDataPresent(e)}getIndices(){return this._sourceMesh.getIndices()}get _positions(){return this._sourceMesh._positions}refreshBoundingInfo(e=!1,t=!1){if(this.hasBoundingInfo&&this.getBoundingInfo().isLocked)return this;let i;typeof e=="object"?i=e:i={applySkeleton:e,applyMorph:t};let r=this._sourceMesh.geometry?this._sourceMesh.geometry.boundingBias:null;return this._refreshBoundingInfo(this._sourceMesh._getData(i,null,D.PositionKind),r),this}_preActivate(){return this._currentLOD&&this._currentLOD._preActivate(),this}_activate(e,t){if(super._activate(e,t),this._sourceMesh.subMeshes||ee.Warn("Instances should only be created for meshes with geometry."),this._currentLOD){if(this._currentLOD._getWorldMatrixDeterminant()>=0!=this._getWorldMatrixDeterminant()>=0)return this._internalAbstractMeshDataInfo._actAsRegularMesh=!0,!0;if(this._internalAbstractMeshDataInfo._actAsRegularMesh=!1,this._currentLOD._registerInstanceForRenderId(this,e),t){if(!this._currentLOD._internalAbstractMeshDataInfo._isActiveIntermediate)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstancesIntermediate=!0,!0}else if(!this._currentLOD._internalAbstractMeshDataInfo._isActive)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstances=!0,!0}return!1}_postActivate(){this._sourceMesh.edgesShareWithInstances&&this._sourceMesh._edgesRenderer&&this._sourceMesh._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup?(this._sourceMesh._renderingGroup._edgesRenderers.pushNoDuplicate(this._sourceMesh._edgesRenderer),this._sourceMesh._edgesRenderer.customInstances.push(this.getWorldMatrix())):this._edgesRenderer&&this._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup&&this._sourceMesh._renderingGroup._edgesRenderers.push(this._edgesRenderer)}getWorldMatrix(){if(this._currentLOD&&this._currentLOD!==this._sourceMesh&&this._currentLOD.billboardMode!==Yt.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new q);let e=this._currentLOD._masterMesh;return this._currentLOD._masterMesh=this,$.Vector3[7].copyFrom(this._currentLOD.position),this._currentLOD.position.set(0,0,0),this._billboardWorldMatrix.copyFrom(this._currentLOD.computeWorldMatrix(!0)),this._currentLOD.position.copyFrom($.Vector3[7]),this._currentLOD._masterMesh=e,this._billboardWorldMatrix}return super.getWorldMatrix()}get isAnInstance(){return!0}getLOD(e){if(!e)return this;let t=this.sourceMesh.getLODLevels();if(!t||t.length===0)this._currentLOD=this.sourceMesh;else{let i=this.getBoundingInfo();this._currentLOD=this.sourceMesh.getLOD(e,i.boundingSphere)}return this._currentLOD}_preActivateForIntermediateRendering(e){return this.sourceMesh._preActivateForIntermediateRendering(e)}_syncSubMeshes(){if(this.releaseSubMeshes(),this._sourceMesh.subMeshes)for(let e=0;e{qn=class{constructor(){this._defines={},this._currentRank=32,this._maxRank=-1,this._mesh=null}unBindMesh(){this._mesh=null}addFallback(e,t){this._defines[e]||(ethis._maxRank&&(this._maxRank=e),this._defines[e]=new Array),this._defines[e].push(t)}addCPUSkinningFallback(e,t){this._mesh=t,ethis._maxRank&&(this._maxRank=e)}get hasMoreFallbacks(){return this._currentRank<=this._maxRank}reduce(e,t){if(this._mesh&&this._mesh.computeBonesUsingShaders&&this._mesh.numBoneInfluencers>0){this._mesh.computeBonesUsingShaders=!1,e=e.replace("#define NUM_BONE_INFLUENCERS "+this._mesh.numBoneInfluencers,"#define NUM_BONE_INFLUENCERS 0"),t._bonesComputationForcedToCPU=!0;let i=this._mesh.getScene();for(let r=0;r0&&(s.computeBonesUsingShaders=!1);continue}if(!(!s.computeBonesUsingShaders||s.numBoneInfluencers===0)){if(s.material.getEffect()===t)s.computeBonesUsingShaders=!1;else if(s.subMeshes){for(let a of s.subMeshes)if(a.effect===t){s.computeBonesUsingShaders=!1;break}}}}}else{let i=this._defines[this._currentRank];if(i)for(let r=0;r{ke();Yn();Al=class extends Se{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new q,this._storeEffectOnSubMeshes=i}getEffect(){return this._storeEffectOnSubMeshes?this._activeEffect:super.getEffect()}isReady(e,t){return e?!this._storeEffectOnSubMeshes||!e.subMeshes||e.subMeshes.length===0?!0:this.isReadyForSubMesh(e,e.subMeshes[0],t):!1}_isReadyForSubMesh(e){let t=e.materialDefines;return!!(!this.checkReadyOnEveryCall&&e.effect&&t&&t._renderId===this.getScene().getRenderId())}bindOnlyWorldMatrix(e){this._activeEffect.setMatrix("world",e)}bindOnlyNormalMatrix(e){this._activeEffect.setMatrix("normalMatrix",e)}bind(e,t){t&&this.bindForSubMesh(e,t,t.subMeshes[0])}_afterBind(e,t=null,i){super._afterBind(e,t,i),this.getScene()._cachedEffect=t,i?i._drawWrapper._forceRebindOnNextCall=!1:this._drawWrapper._forceRebindOnNextCall=!1}_mustRebind(e,t,i,r=1){return i._drawWrapper._forceRebindOnNextCall||e.isCachedMaterialInvalid(this,t,r)}dispose(e,t,i){this._activeEffect=void 0,super.dispose(e,t,i)}}});function kf(n){let e=n.getVertexBuffers();if(!e)return null;let t=SH.get(n);if(!t)t=new Map,SH.set(n,t);else{let i=!1;for(let r in e)if(!t.has(r)){i=!0;break}if(!i)return t}for(let i in e){let r=e[i];if(r){let s=r.byteOffset,a=r.byteStride,o=r.type,l=r.normalized;t.set(i,{offset:s,stride:a,type:o,normalized:l})}}return t}function Wf(n,e){e.forEach((t,i)=>{let r=`vp_${i}_info`;n.setFloat4(r,t.offset,t.stride,t.type,t.normalized?1:0)})}var SH,Kg=I(()=>{SH=new WeakMap});var LD,Lo,OD=I(()=>{br();Bs();ke();Wi();Gr();Yi();Gf();nh();Yg();Ni();vl();Xn();Kg();LD={effect:null,subMesh:null},Lo=class n extends Al{constructor(e,t,i,r={},s=!0){super(e,t,s),this._textures={},this._internalTextures={},this._textureArrays={},this._externalTextures={},this._floats={},this._ints={},this._uints={},this._floatsArrays={},this._colors3={},this._colors3Arrays={},this._colors4={},this._colors4Arrays={},this._vectors2={},this._vectors3={},this._vectors4={},this._quaternions={},this._quaternionsArrays={},this._matrices={},this._matrixArrays={},this._matrices3x3={},this._matrices2x2={},this._vectors2Arrays={},this._vectors3Arrays={},this._vectors4Arrays={},this._uniformBuffers={},this._textureSamplers={},this._storageBuffers={},this._cachedWorldViewMatrix=new q,this._cachedWorldViewProjectionMatrix=new q,this._multiview=!1,this._vertexPullingMetadata=null,this._materialHelperNeedsPreviousMatrices=!1,this._shaderPath=i,this._options={needAlphaBlending:!1,needAlphaTesting:!1,attributes:["position","normal","uv"],uniforms:["worldViewProjection"],uniformBuffers:[],samplers:[],externalTextures:[],samplerObjects:[],storageBuffers:[],defines:[],useClipPlane:!1,...r}}get shaderPath(){return this._shaderPath}set shaderPath(e){this._shaderPath=e}get options(){return this._options}get isMultiview(){return this._multiview}getClassName(){return"ShaderMaterial"}needAlphaBlending(){return this.alpha<1||this._options.needAlphaBlending}needAlphaTesting(){return this._options.needAlphaTesting}_checkUniform(e){this._options.uniforms.indexOf(e)===-1&&this._options.uniforms.push(e)}setTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._textures[e]=t,this}setInternalTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._internalTextures[e]=t,this}removeTexture(e){delete this._textures[e]}setTextureArray(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._checkUniform(e),this._textureArrays[e]=t,this}setExternalTexture(e,t){return this._options.externalTextures.indexOf(e)===-1&&this._options.externalTextures.push(e),this._externalTextures[e]=t,this}setFloat(e,t){return this._checkUniform(e),this._floats[e]=t,this}setInt(e,t){return this._checkUniform(e),this._ints[e]=t,this}setUInt(e,t){return this._checkUniform(e),this._uints[e]=t,this}setFloats(e,t){return this._checkUniform(e),this._floatsArrays[e]=t,this}setColor3(e,t){return this._checkUniform(e),this._colors3[e]=t,this}setColor3Array(e,t){return this._checkUniform(e),this._colors3Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b),i),[]),this}setColor4(e,t){return this._checkUniform(e),this._colors4[e]=t,this}setColor4Array(e,t){return this._checkUniform(e),this._colors4Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b,r.a),i),[]),this}setVector2(e,t){return this._checkUniform(e),this._vectors2[e]=t,this}setVector3(e,t){return this._checkUniform(e),this._vectors3[e]=t,this}setVector4(e,t){return this._checkUniform(e),this._vectors4[e]=t,this}setQuaternion(e,t){return this._checkUniform(e),this._quaternions[e]=t,this}setQuaternionArray(e,t){return this._checkUniform(e),this._quaternionsArrays[e]=t.reduce((i,r)=>(r.toArray(i,i.length),i),[]),this}setMatrix(e,t){return this._checkUniform(e),this._matrices[e]=t,this}setMatrices(e,t){this._checkUniform(e);let i=new Float32Array(t.length*16);for(let r=0;rs===e||s.startsWith(i));return r>=0&&this.options.defines.splice(r,1),(typeof t!="boolean"||t)&&this.options.defines.push(i+t),this}isReadyForSubMesh(e,t,i){return this.isReady(e,i,t)}isReady(e,t,i){var T,R,M,y;let r=i&&this._storeEffectOnSubMeshes;if(this.isFrozen){let C=r?i._drawWrapper:this._drawWrapper;if(C.effect&&C._wasPreviouslyReady&&C._wasPreviouslyUsingInstances===t)return!0}let s=this.getScene(),a=s.getEngine(),o=[],l=[],c=null,f=this._shaderPath,d=this._options.uniforms,h=this._options.uniformBuffers,u=this._options.samplers;a.getCaps().multiview&&s.activeCamera&&s.activeCamera.outputRenderTarget&&s.activeCamera.outputRenderTarget.getViewCount()>1&&(this._multiview=!0,o.push("#define MULTIVIEW"),d.indexOf("viewProjection")!==-1&&d.indexOf("viewProjectionR")===-1&&d.push("viewProjectionR"));for(let C=0;C4&&(l.push(D.MatricesIndicesExtraKind),l.push(D.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new qn,c.addCPUSkinningFallback(0,e),C.isUsingTextureForMatrices?(o.push("#define BONETEXTURE"),d.indexOf("boneTextureInfo")===-1&&d.push("boneTextureInfo"),this._options.samplers.indexOf("boneSampler")===-1&&this._options.samplers.push("boneSampler")):(o.push("#define BonesPerMesh "+(C.bones.length+1)),d.indexOf("mBones")===-1&&d.push("mBones"))}else o.push("#define NUM_BONE_INFLUENCERS 0");let m=0,_=e?e.morphTargetManager:null;if(_){let C=o.indexOf("#define UV1")!==-1,L=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,G=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=El(_,o,l,e,!0,G,w,C,L,O),_.isUsingTextureForTargets&&(d.indexOf("morphTargetTextureIndices")===-1&&d.push("morphTargetTextureIndices"),this._options.samplers.indexOf("morphTargets")===-1&&this._options.samplers.push("morphTargets")),m>0&&(d=d.slice(),d.push("morphTargetInfluences"),d.push("morphTargetCount"),d.push("morphTargetTextureInfo"),d.push("morphTargetTextureIndices"))}else o.push("#define NUM_MORPH_INFLUENCERS 0");if(e){let C=e.bakedVertexAnimationManager;C&&C.isEnabled&&(o.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),d.indexOf("bakedVertexAnimationSettings")===-1&&d.push("bakedVertexAnimationSettings"),d.indexOf("bakedVertexAnimationTextureSizeInverted")===-1&&d.push("bakedVertexAnimationTextureSizeInverted"),d.indexOf("bakedVertexAnimationTime")===-1&&d.push("bakedVertexAnimationTime"),this._options.samplers.indexOf("bakedVertexAnimationTexture")===-1&&this._options.samplers.push("bakedVertexAnimationTexture"),t&&l.push("bakedVertexAnimationSettingsInstanced"))}for(let C in this._textures)if(!this._textures[C].isReady())return!1;for(let C in this._internalTextures)if(!this._internalTextures[C].isReady)return!1;e&&this.needAlphaTestingForMesh(e)&&o.push("#define ALPHATEST"),this._options.useClipPlane!==!1&&(Wn(d),gl(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ei.FOGMODE_NONE&&(o.push("#define FOG"),d.indexOf("view")===-1&&d.push("view"),d.indexOf("vFogInfos")===-1&&d.push("vFogInfos"),d.indexOf("vFogColor")===-1&&d.push("vFogColor")),this._useLogarithmicDepth&&(o.push("#define LOGARITHMICDEPTH"),d.indexOf("logarithmicDepthConstant")===-1&&d.push("logarithmicDepthConstant"));let p=i?i.getRenderingMesh():e;if(p&&this.useVertexPulling){let C=p.geometry;C&&(this._vertexPullingMetadata=kf(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,G)=>{d.push(`vp_${G}_info`)})),o.push("#define USE_VERTEX_PULLING");let L=(T=p.geometry)==null?void 0:T.getIndexBuffer();L&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),L.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),h=h.slice(),u=u.slice(),f=this.customShaderNameResolve(this.name,d,h,u,o,l));let g=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=g==null?void 0:g.effect)!=null?R:null,x=(M=g==null?void 0:g.defines)!=null?M:null,S=o.join(` -`),E=v;return x!==S&&(E=a.createEffect(f,{attributes:l,uniformsNames:d,uniformBuffersNames:h,samplers:u,defines:S,fallbacks:c,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousMorphTargets:m},shaderLanguage:this._options.shaderLanguage,extraInitializationsAsync:this._options.extraInitializationsAsync},a),r?i.setEffect(E,S,this._materialContext):g&&g.setEffect(E,S),this._onEffectCreatedObservable&&(LD.effect=E,LD.subMesh=(y=i!=null?i:e==null?void 0:e.subMeshes[0])!=null?y:null,this._onEffectCreatedObservable.notifyObservers(LD))),g._wasPreviouslyUsingInstances=!!t,E!=null&&E.isReady()?(v!==E&&s.resetCachedMaterial(),g._wasPreviouslyReady=!0,!0):!1}bindOnlyWorldMatrix(e,t){let i=t!=null?t:this.getEffect();if(!i)return;let r=this._options.uniforms;r.indexOf("world")!==-1&&i.setMatrix("world",e);let s=this.getScene();r.indexOf("worldView")!==-1&&(e.multiplyToRef(s.getViewMatrix(),this._cachedWorldViewMatrix),i.setMatrix("worldView",this._cachedWorldViewMatrix)),r.indexOf("worldViewProjection")!==-1&&(e.multiplyToRef(s.getTransformMatrix(),this._cachedWorldViewProjectionMatrix),i.setMatrix("worldViewProjection",this._cachedWorldViewProjectionMatrix)),r.indexOf("view")!==-1&&i.setMatrix("view",s.getViewMatrix())}bindForSubMesh(e,t,i){var r;this.bind(e,t,(r=i._drawWrapperOverride)==null?void 0:r.effect,i)}bind(e,t,i,r){var d;let s=r&&this._storeEffectOnSubMeshes,a=i!=null?i:s?r.effect:this.getEffect();if(!a)return;let o=this.getScene();this._activeEffect=a,this.bindOnlyWorldMatrix(e,i);let l=this._options.uniformBuffers,c=!1;if(a&&l&&l.length>0&&o.getEngine().supportsUniformBuffers)for(let h=0;hnew n(e,this.getScene(),this._shaderPath,this._options,this._storeEffectOnSubMeshes),this);t.name=e,t.id=e,typeof t._shaderPath=="object"&&(t._shaderPath={...t._shaderPath}),this._options={...this._options};let i=Object.keys(this._options);for(let r of i){let s=this._options[r];Array.isArray(s)&&(this._options[r]=s.slice(0))}this.stencil.copyTo(t.stencil);for(let r in this._textures)t.setTexture(r,this._textures[r]);for(let r in this._internalTextures)t.setInternalTexture(r,this._internalTextures[r]);for(let r in this._textureArrays)t.setTextureArray(r,this._textureArrays[r]);for(let r in this._externalTextures)t.setExternalTexture(r,this._externalTextures[r]);for(let r in this._ints)t.setInt(r,this._ints[r]);for(let r in this._uints)t.setUInt(r,this._uints[r]);for(let r in this._floats)t.setFloat(r,this._floats[r]);for(let r in this._floatsArrays)t.setFloats(r,this._floatsArrays[r]);for(let r in this._colors3)t.setColor3(r,this._colors3[r]);for(let r in this._colors3Arrays)t._colors3Arrays[r]=this._colors3Arrays[r];for(let r in this._colors4)t.setColor4(r,this._colors4[r]);for(let r in this._colors4Arrays)t._colors4Arrays[r]=this._colors4Arrays[r];for(let r in this._vectors2)t.setVector2(r,this._vectors2[r]);for(let r in this._vectors3)t.setVector3(r,this._vectors3[r]);for(let r in this._vectors4)t.setVector4(r,this._vectors4[r]);for(let r in this._quaternions)t.setQuaternion(r,this._quaternions[r]);for(let r in this._quaternionsArrays)t._quaternionsArrays[r]=this._quaternionsArrays[r];for(let r in this._matrices)t.setMatrix(r,this._matrices[r]);for(let r in this._matrixArrays)t._matrixArrays[r]=this._matrixArrays[r].slice();for(let r in this._matrices3x3)t.setMatrix3x3(r,this._matrices3x3[r]);for(let r in this._matrices2x2)t.setMatrix2x2(r,this._matrices2x2[r]);for(let r in this._vectors2Arrays)t.setArray2(r,this._vectors2Arrays[r]);for(let r in this._vectors3Arrays)t.setArray3(r,this._vectors3Arrays[r]);for(let r in this._vectors4Arrays)t.setArray4(r,this._vectors4Arrays[r]);for(let r in this._uniformBuffers)t.setUniformBuffer(r,this._uniformBuffers[r]);for(let r in this._textureSamplers)t.setTextureSampler(r,this._textureSamplers[r]);for(let r in this._storageBuffers)t.setStorageBuffer(r,this._storageBuffers[r]);return t}dispose(e,t,i){if(t){let r;for(r in this._textures)this._textures[r].dispose();for(r in this._internalTextures)this._internalTextures[r].dispose();for(r in this._textureArrays){let s=this._textureArrays[r];for(let a=0;anew n(e.name,t,e.shaderPath,e.options,e.storeEffectOnSubMeshes),e,t,i),s;e.stencil&&r.stencil.parse(e.stencil,t,i);for(s in e.textures)r.setTexture(s,ge.Parse(e.textures[s],t,i));for(s in e.textureArrays){let a=e.textureArrays[s],o=[];for(let l=0;l(c%3===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2]}));r.setColor3Array(s,a)}for(s in e.colors4){let a=e.colors4[s];r.setColor4(s,{r:a[0],g:a[1],b:a[2],a:a[3]})}for(s in e.colors4Arrays){let a=e.colors4Arrays[s].reduce((o,l,c)=>(c%4===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2],a:o[3]}));r.setColor4Array(s,a)}for(s in e.vectors2){let a=e.vectors2[s];r.setVector2(s,{x:a[0],y:a[1]})}for(s in e.vectors3){let a=e.vectors3[s];r.setVector3(s,{x:a[0],y:a[1],z:a[2]})}for(s in e.vectors4){let a=e.vectors4[s];r.setVector4(s,{x:a[0],y:a[1],z:a[2],w:a[3]})}for(s in e.quaternions)r.setQuaternion(s,Xe.FromArray(e.quaternions[s]));for(s in e.matrices)r.setMatrix(s,q.FromArray(e.matrices[s]));for(s in e.matrixArray)r._matrixArrays[s]=new Float32Array(e.matrixArray[s]);for(s in e.matrices3x3)r.setMatrix3x3(s,e.matrices3x3[s]);for(s in e.matrices2x2)r.setMatrix2x2(s,e.matrices2x2[s]);for(s in e.vectors2Arrays)r.setArray2(s,e.vectors2Arrays[s]);for(s in e.vectors3Arrays)r.setArray3(s,e.vectors3Arrays[s]);for(s in e.vectors4Arrays)r.setArray4(s,e.vectors4Arrays[s]);for(s in e.quaternionsArrays)r.setArray4(s,e.quaternionsArrays[s]);return r}static async ParseFromFileAsync(e,t,i,r=""){return await new Promise((s,a)=>{let o=new Cr;o.addEventListener("readystatechange",()=>{if(o.readyState==4)if(o.status==200){let l=JSON.parse(o.responseText),c=this.Parse(l,i||Oe.LastCreatedScene,r);e&&(c.name=e),s(c)}else a("Unable to load the ShaderMaterial")}),o.open("GET",t),o.send()})}static async ParseFromSnippetAsync(e,t,i=""){return await new Promise((r,s)=>{let a=new Cr;a.addEventListener("readystatechange",()=>{if(a.readyState==4)if(a.status==200){let o=JSON.parse(JSON.parse(a.responseText).jsonPayload),l=JSON.parse(o.shaderMaterial),c=this.Parse(l,t||Oe.LastCreatedScene,i);c.snippetId=e,r(c)}else s("Unable to load the snippet "+e)}),a.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),a.send()})}};Lo.SnippetUrl="https://snippet.babylonjs.com";Lo.CreateFromSnippetAsync=Lo.ParseFromSnippetAsync;Ft("BABYLON.ShaderMaterial",Lo)});var TH,ife,uc=I(()=>{k();TH="bonesDeclaration",ife=`#if NUM_BONE_INFLUENCERS>0 +Bad Bone Indices = `+m;return{skinned:!0,valid:s===0&&o===0&&m===0,report:_}}_checkDelayState(){let e=this.getScene();return this._geometry?this._geometry.load(e):this.delayLoadState===4&&(this.delayLoadState=2,this._queueLoad(e)),this}_queueLoad(e){e.addPendingData(this);let t=this.delayLoadingFile.indexOf(".babylonbinarymeshdata")!==-1;return _e.LoadFile(this.delayLoadingFile,i=>{i instanceof ArrayBuffer?this._delayLoadingFunction(i,this):this._delayLoadingFunction(JSON.parse(i),this);for(let r of this.instances)r.refreshBoundingInfo(),r._syncSubMeshes();this.delayLoadState=1,e.removePendingData(this)},()=>{},e.offlineProvider,t),this}isInFrustum(e){return this.delayLoadState===2||!super.isInFrustum(e)?!1:(this._checkDelayState(),!0)}setMaterialById(e){let t=this.getScene().materials,i;for(i=t.length-1;i>-1;i--)if(t[i].id===e)return this.material=t[i],this;let r=this.getScene().multiMaterials;for(i=r.length-1;i>-1;i--)if(r[i].id===e)return this.material=r[i],this;return this}getAnimatables(){let e=[];return this.material&&e.push(this.material),this.skeleton&&e.push(this.skeleton),e}bakeTransformIntoVertices(e){if(!this.isVerticesDataPresent(D.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(D.PositionKind),r=b.Zero(),s;for(s=0;s{let h=d.width,u=d.height,_=this.getEngine().createCanvas(h,u).getContext("2d");_.drawImage(d,0,0);let p=_.getImageData(0,0,h,u).data;this.applyDisplacementMapFromBuffer(p,h,u,t,i,s,a,o),r&&r(this)};return _e.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(D.PositionKind)||!this.isVerticesDataPresent(D.NormalKind)||!this.isVerticesDataPresent(D.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(D.PositionKind,!0,!0),f=this.getVerticesData(D.NormalKind),d=this.getVerticesData(D.UVKind),h=b.Zero(),u=b.Zero(),m=Fe.Zero();a=a||Fe.Zero(),o=o||new Fe(1,1);for(let _=0;_{var c;return!((c=this.getVertexBuffer(l))!=null&&c.getIsInstanced())}),i=this.getIndices(!1,!0),r={},s=(l,c)=>{let f=new Float32Array(i.length*c),d=0;for(let h=0;h{let o=r.length-1-a,l=r[o];for(let c=0;c{for(let o=0;o-1&&(r._waitingMorphTargetManagerId=e.morphTargetManagerId),e.skeletonId!==void 0&&e.skeletonId!==null&&(r.skeleton=t.getLastSkeletonById(e.skeletonId),r._waitingSkeletonId=e.skeletonId,e.numBoneInfluencers&&(r.numBoneInfluencers=e.numBoneInfluencers)),e.skeletonUniqueId!==void 0&&e.skeletonUniqueId!==null&&(r._waitingSkeletonUniqueId=e.skeletonUniqueId),e.animations){for(let a=0;a4,c=l?this.getVerticesData(D.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(D.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),h=b.Zero(),u=new q,m=new q,_=0,p;for(let g=0;g0&&(q.FromFloat32ArrayToRefScaled(d,Math.floor(a[_+p]*16),v,m),u.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[_+p],v>0&&(q.FromFloat32ArrayToRefScaled(d,Math.floor(c[_+p]*16),v,m),u.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[g],i._sourcePositions[g+1],i._sourcePositions[g+2],u,h),h.toArray(r,g),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[g],i._sourceNormals[g+1],i._sourceNormals[g+2],u,h),h.toArray(s,g)),u.reset()}return this.updateVerticesData(D.PositionKind,r),t&&this.updateVerticesData(D.NormalKind,s),this}static MinMax(e){let t=null,i=null;for(let r of e){let a=r.getBoundingInfo().boundingBox;!t||!i?(t=a.minimumWorld.clone(),i=a.maximumWorld.clone()):(t.minimizeInPlace(a.minimumWorld),i.maximizeInPlace(a.maximumWorld))}return!t||!i?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}static Center(e){let t=e instanceof Array?n.MinMax(e):e;return b.Center(t.min,t.max)}static MergeMeshes(e,t=!0,i,r,s,a){return kg(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await LW(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),PW())}static*_MergeMeshesCoroutine(e,t=!0,i,r,s,a,o){if(e=e.filter(Boolean),e.length===0)return null;let l;if(!i){let R=0;for(l=0;l=65536)return ee.Warn("Cannot merge meshes because resulting mesh will have more than 65536 vertices. Please use allow32BitsIndices = true to use 32 bits indices"),null}let c=e[0];a&&(s=!1,e.sort((R,M)=>{var y,C,L,w;return((C=(y=R.material)==null?void 0:y.uniqueId)!=null?C:-1)-((w=(L=M.material)==null?void 0:L.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,h=new Array,u=e[0].sideOrientation;for(l=0;lMath.max(y,C.start+C.count),0);if(a)if(R.material){let y=R.material;if(y instanceof $m){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:ye.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:_,transform:p}=m(e[0]);o&&(yield);let g=new Array(e.length-1);for(let R=1;R{throw Qe("GroundMesh")};Z._GoldbergMeshParser=(n,e)=>{throw Qe("GoldbergMesh")};Z._LinesMeshParser=(n,e)=>{throw Qe("LinesMesh")};Z._GreasedLineMeshParser=(n,e)=>{throw Qe("GreasedLineMesh")};Z._GreasedLineRibbonMeshParser=(n,e)=>{throw Qe("GreasedLineRibbonMesh")};Z._TrailMeshParser=(n,e)=>{throw Qe("TrailMesh")};Z._GaussianSplattingMeshParser=(n,e)=>{throw Qe("GaussianSplattingMesh")};Z._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw Qe("GaussianSplattingPartProxyMesh")};Z._GaussianSplattingCompoundMeshParser=(n,e)=>{throw Qe("GaussianSplattingCompoundMesh")};Ft("BABYLON.Mesh",Z)});var ep,lD=I(()=>{Ao();Yl();Un();ep=class{constructor(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this.targetAlpha=null,this._attachedCamera=null,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}get name(){return"AutoRotation"}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set idleRotationSpeed(e){this._idleRotationSpeed=e}get idleRotationSpeed(){return this._idleRotationSpeed}set idleRotationWaitTime(e){this._idleRotationWaitTime=e}get idleRotationWaitTime(){return this._idleRotationWaitTime}set idleRotationSpinupTime(e){this._idleRotationSpinupTime=e}get idleRotationSpinupTime(){return this._idleRotationSpinupTime}get rotationInProgress(){return Math.abs(this._cameraRotationSpeed)>0}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===st.POINTERDOWN){this._isPointerDown=!0;return}i.type===st.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=Er.Now,r=0;this._lastFrameTime!=null&&(r=i-this._lastFrameTime),this._lastFrameTime=i,this._applyUserInteraction();let s=i-this._lastInteractionTime-this._idleRotationWaitTime,a=Math.max(Math.min(s/this._idleRotationSpinupTime,1),0);this._cameraRotationSpeed=this._idleRotationSpeed*a,this._attachedCamera&&(this._attachedCamera.alpha-=this._cameraRotationSpeed*(r/1e3))})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null,this._lastFrameTime=null}resetLastInteractionTime(e){this._lastInteractionTime=e!=null?e:Er.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){rh();Co=class n{constructor(){this._easingMode=n.EASINGMODE_EASEIN}setEasingMode(e){let t=Math.min(Math.max(e,0),2);this._easingMode=t}getEasingMode(){return this._easingMode}easeInCore(e){throw new Error("You must implement this method")}ease(e){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(e);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-e)}return e>=.5?(1-this.easeInCore((1-e)*2))*.5+.5:this.easeInCore(e*2)*.5}};Co.EASINGMODE_EASEIN=0;Co.EASINGMODE_EASEOUT=1;Co.EASINGMODE_EASEINOUT=2;Vx=class extends Co{constructor(e=1){super(),this.amplitude=e}easeInCore(e){let t=Math.max(0,this.amplitude);return Math.pow(e,3)-e*t*Math.sin(3.141592653589793*e)}},Gx=class extends Co{constructor(e=2){super(),this.exponent=e}easeInCore(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)}}});var Nf,fD=I(()=>{Nf=class n{constructor(e,t,i){this.name=e,this.from=t,this.to=i}clone(){return new n(this.name,this.from,this.to)}}});var dD,hD,uD,mD,pD,_D,Po,dt,wf=I(()=>{ke();Ht();Vn();Yi();fD();la();GA();nh();br();dD=Object.freeze(new Xe(0,0,0,0)),hD=Object.freeze(b.Zero()),uD=Object.freeze(Fe.Zero()),mD=Object.freeze(ql.Zero()),pD=Object.freeze(pe.Black()),_D=Object.freeze(new lt(0,0,0,0)),Po={key:0,repeatCount:0,loopMode:2},dt=class n{static _PrepareAnimation(e,t,i,r,s,a,o,l){let c;if(!isNaN(parseFloat(s))&&isFinite(s)?c=n.ANIMATIONTYPE_FLOAT:s instanceof Xe?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof Fe?c=n.ANIMATIONTYPE_VECTOR2:s instanceof pe?c=n.ANIMATIONTYPE_COLOR3:s instanceof lt?c=n.ANIMATIONTYPE_COLOR4:s instanceof ql&&(c=n.ANIMATIONTYPE_SIZE),c==null)return null;let f=new n(e,t,i,c,o),d=[{frame:0,value:s},{frame:r,value:a}];return f.setKeys(d),l!==void 0&&f.setEasingFunction(l),f}static CreateAnimation(e,t,i,r){let s=new n(e+"Animation",e,i,t,n.ANIMATIONLOOPMODE_CONSTANT);return s.setEasingFunction(r),s}static CreateAndStartAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!h||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[h],0,s,h.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,r,s,a,o,l,c,f);return h?t.getScene().beginDirectHierarchyAnimation(t,i,[h],0,a,h.loopMode===1,1,d):null}static CreateMergeAndStartAnimation(e,t,i,r,s,a,o,l,c,f){let d=n._PrepareAnimation(e,i,r,s,a,o,l,c);return d?(t.animations.push(d),t.getScene().beginAnimation(t,0,s,d.loopMode===1,1,f)):null}static MakeAnimationAdditive(e,t,i,r=!1,s){var v,x;let a;typeof t=="object"?a=t:a={referenceFrame:t!=null?t:0,range:i,cloneOriginalAnimation:r,clonedAnimationName:s};let o=e;if(a.cloneOriginalAnimation&&(o=e.clone(),o.name=a.clonedAnimationName||o.name),!o._keys.length)return o;let l=a.referenceFrame&&a.referenceFrame>=0?a.referenceFrame:0,c=0,f=o._keys[0],d=o._keys.length-1,h=o._keys[d],u={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,_=h.frame;if(a.range){let S=o.getRange(a.range);S&&(m=S.from,_=S.to)}else m=(v=a.fromFrame)!=null?v:m,_=(x=a.toFrame)!=null?x:_;if(m!==f.frame&&(c=o.createKeyForFrame(m)),_!==h.frame&&(d=o.createKeyForFrame(_)),o._keys.length===1){let S=o._getKeyValue(o._keys[0]);u.referenceValue=S.clone?S.clone():S}else if(l<=f.frame){let S=o._getKeyValue(f.value);u.referenceValue=S.clone?S.clone():S}else if(l>=h.frame){let S=o._getKeyValue(h.value);u.referenceValue=S.clone?S.clone():S}else{Po.key=0;let S=o._interpolate(l,Po);u.referenceValue=S.clone?S.clone():S}o.dataType===n.ANIMATIONTYPE_QUATERNION?u.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(u.referenceValue.decompose(u.referenceScaling,u.referenceQuaternion,u.referencePosition),u.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,g=a.clipKeys?[]:null;for(let S=c;S<=d;S++){let E=o._keys[S];if((g||a.cloneOriginalAnimation)&&(E={frame:E.frame,value:E.value.clone?E.value.clone():E.value,inTangent:E.inTangent,outTangent:E.outTangent,interpolation:E.interpolation,lockedTangent:E.lockedTangent,easingFunction:E.easingFunction},g&&(p===Number.MAX_VALUE&&(p=E.frame),E.frame-=p,g.push(E))),!(S&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&E.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:E.value.decompose(u.keyScaling,u.keyQuaternion,u.keyPosition),u.keyPosition.subtractInPlace(u.referencePosition),u.keyScaling.divideInPlace(u.referenceScaling),u.referenceQuaternion.multiplyToRef(u.keyQuaternion,u.keyQuaternion),q.ComposeToRef(u.keyScaling,u.keyQuaternion,u.keyPosition,E.value);break;case n.ANIMATIONTYPE_QUATERNION:u.referenceValue.multiplyToRef(E.value,E.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:E.value.subtractToRef(u.referenceValue,E.value);break;case n.ANIMATIONTYPE_SIZE:E.value.width-=u.referenceValue.width,E.value.height-=u.referenceValue.height;break;default:E.value-=u.referenceValue}}return g&&o.setKeys(g,!0),o}static TransitionTo(e,t,i,r,s,a,o,l=null,c=!0,f){if(o<=0)return i[e]=t,l&&l(),null;let d=s*(o/1e3);return a.setKeys(f!=null?f:[{frame:0,value:i[e].clone?i[e].clone():i[e]},{frame:d,value:t}]),i.animations||(i.animations=[]),i.animations.push(a),r.beginAnimation(i,0,d,!1,1,l!=null?l:void 0,void 0,c)}get runtimeAnimations(){return this._runtimeAnimations}get hasRunningRuntimeAnimations(){for(let e of this._runtimeAnimations)if(!e.isStopped())return!0;return!1}constructor(e,t,i,r,s,a){this.name=e,this.targetProperty=t,this.framePerSecond=i,this.dataType=r,this.loopMode=s,this.enableBlending=a,this._easingFunction=null,this._runtimeAnimations=new Array,this._events=new Array,this.blendingSpeed=.01,this._ranges={},this._coreAnimation=null,this.targetPropertyPath=t.split("."),this.dataType=r,this.loopMode=s===void 0?n.ANIMATIONLOOPMODE_CYCLE:s,this.uniqueId=n._UniqueIdGenerator++}toString(e){let t="Name: "+this.name+", property: "+this.targetProperty;if(t+=", datatype: "+["Float","Vector3","Quaternion","Matrix","Color3","Vector2"][this.dataType],t+=", nKeys: "+(this._keys?this._keys.length:"none"),t+=", nRanges: "+(this._ranges?Object.keys(this._ranges).length:"none"),e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i||(t+=", "),i=!1,t+=r;t+="}"}return t}addEvent(e){this._events.push(e),this._events.sort((t,i)=>t.frame-i.frame)}removeEvents(e){for(let t=0;t=0;a--)this._keys[a].frame>=r&&this._keys[a].frame<=s&&this._keys.splice(a,1)}this._ranges[e]=null}}getRange(e){return this._ranges[e]}getKeys(){return this._keys}getHighestFrame(){let e=0;for(let t=0,i=this._keys.length;t0)return t.highLimitValue.clone?t.highLimitValue.clone():t.highLimitValue;let r=this._keys,s;if(this._coreAnimation)s=this._coreAnimation._key;else{let _=r.length;for(s=t.key;s>=0&&e=r[s+1].frame;)++s;if(t.key=s,s<0)return i?void 0:this._getKeyValue(r[0].value);if(s+1>_-1)return i?void 0:this._getKeyValue(r[_-1].value);this._key=s}let a=r[s],o=r[s+1];if(i&&(e===a.frame||e===o.frame))return;let l=this._getKeyValue(a.value),c=this._getKeyValue(o.value);if(a.interpolation===1)return o.frame>e?l:c;let f=a.outTangent!==void 0&&o.inTangent!==void 0,d=o.frame-a.frame,h=(e-a.frame)/d,u=a.easingFunction||this.getEasingFunction();switch(u&&(h=u.ease(h)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let _=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,h):this.floatInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+_}break}case n.ANIMATIONTYPE_QUATERNION:{let _=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.quaternionInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.addInPlace((t.offsetValue||dD).scale(t.repeatCount))}return _}case n.ANIMATIONTYPE_VECTOR3:{let _=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||hD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let _=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector2InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||uD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_SIZE:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return this.sizeInterpolateFunction(l,c,h);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,h).add((t.offsetValue||mD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let _=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||pD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let _=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color4InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||_D).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_MATRIX:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return n.AllowMatricesInterpolation?this.matrixInterpolateFunction(l,c,h,t.workValue):l;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return l}break}}return 0}matrixInterpolateFunction(e,t,i,r){return n.AllowMatrixDecomposeForInterpolation?r?(q.DecomposeLerpToRef(e,t,i,r),r):q.DecomposeLerp(e,t,i):r?(q.LerpToRef(e,t,i,r),r):q.Lerp(e,t,i)}clone(e=!1){let t=new n(this.name,this.targetPropertyPath.join("."),this.framePerSecond,this.dataType,this.loopMode);if(t.enableBlending=this.enableBlending,t.blendingSpeed=this.blendingSpeed,this._keys&&t.setKeys(this._keys,!1,e),this._ranges){t._ranges={};for(let i in this._ranges){let r=this._ranges[i];r&&(t._ranges[i]=r.clone())}}return t}setKeys(e,t=!1,i=!1){if(t)this._keys=e;else if(this._keys=e.slice(0),i)for(let r=0;r=2&&(l=o.values[1]),o.values.length>=3&&(c=o.values[2]),o.values.length>=4&&(f=o.values[3]);break;case n.ANIMATIONTYPE_QUATERNION:if(s=Xe.FromArray(o.values),o.values.length>=8){let h=Xe.FromArray(o.values.slice(4,8));h.equals(Xe.Zero())||(l=h)}if(o.values.length>=12){let h=Xe.FromArray(o.values.slice(8,12));h.equals(Xe.Zero())||(c=h)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=q.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=pe.FromArray(o.values),o.values[3]&&(l=pe.FromArray(o.values[3])),o.values[4]&&(c=pe.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=lt.FromArray(o.values),o.values[4]&&(l=lt.FromArray(o.values[4])),o.values[5]&&(c=lt.FromArray(o.values[5])),o.values[6]&&(f=lt.FromArray(o.values[6]));break;case n.ANIMATIONTYPE_VECTOR3:default:s=b.FromArray(o.values),o.values[3]&&(l=b.FromArray(o.values[3])),o.values[4]&&(c=b.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break}let d={};d.frame=o.frame,d.value=s,l!=null&&(d.inTangent=l),c!=null&&(d.outTangent=c),f!=null&&(d.interpolation=f),r.push(d)}if(t.setKeys(r),e.ranges)for(a=0;a{let s=new Cr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a=JSON.parse(s.responseText);if(a.animations&&(a=a.animations),a.length){let o=[];for(let l of a)o.push(this.Parse(l));i(o)}else{let o=this.Parse(a);e&&(o.name=e),i(o)}}else r("Unable to load the animation")}),s.open("GET",t),s.send()})}static async ParseFromSnippetAsync(e){return await new Promise((t,i)=>{let r=new Cr;r.addEventListener("readystatechange",()=>{if(r.readyState==4)if(r.status==200){let s=JSON.parse(JSON.parse(r.responseText).jsonPayload);if(s.animations){let a=JSON.parse(s.animations),o=[];for(let l of a.animations){let c=this.Parse(l);c.snippetId=e,o.push(c)}t(o)}else{let a=JSON.parse(s.animation),o=this.Parse(a);o.snippetId=e,t(o)}}else i("Unable to load the snippet "+e)}),r.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),r.send()})}};dt._UniqueIdGenerator=0;dt.AllowMatricesInterpolation=!1;dt.AllowMatrixDecomposeForInterpolation=!0;dt.InheritOriginalValueFromActiveAnimations=!1;dt.SnippetUrl="https://snippet.babylonjs.com";dt.ANIMATIONTYPE_FLOAT=0;dt.ANIMATIONTYPE_VECTOR3=1;dt.ANIMATIONTYPE_QUATERNION=2;dt.ANIMATIONTYPE_MATRIX=3;dt.ANIMATIONTYPE_COLOR3=4;dt.ANIMATIONTYPE_COLOR4=7;dt.ANIMATIONTYPE_VECTOR2=5;dt.ANIMATIONTYPE_SIZE=6;dt.ANIMATIONLOOPMODE_RELATIVE=0;dt.ANIMATIONLOOPMODE_CYCLE=1;dt.ANIMATIONLOOPMODE_CONSTANT=2;dt.ANIMATIONLOOPMODE_YOYO=4;dt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;dt.CreateFromSnippetAsync=dt.ParseFromSnippetAsync;Ft("BABYLON.Animation",dt);_i._AnimationRangeFactory=(n,e,t)=>new Nf(n,e,t)});var tp,qW=I(()=>{cD();wf();tp=class n{constructor(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._attachedCamera=null,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}get name(){return"Bouncing"}get autoTransitionRange(){return this._autoTransitionRange}set autoTransitionRange(e){if(this._autoTransitionRange===e)return;this._autoTransitionRange=e;let t=this._attachedCamera;t&&(e?this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(i=>{if(i&&(i.computeWorldMatrix(!0),i.getBoundingInfo)){let r=i.getBoundingInfo().diagonalLength;this.lowerRadiusTransitionRange=r*.05,this.upperRadiusTransitionRange=r*.05}}):this._onMeshTargetChangedObserver&&t.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e,this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._attachedCamera&&(this._isRadiusAtLimit(this._attachedCamera.lowerRadiusLimit)&&this._applyBoundRadiusAnimation(this.lowerRadiusTransitionRange),this._isRadiusAtLimit(this._attachedCamera.upperRadiusLimit)&&this._applyBoundRadiusAnimation(this.upperRadiusTransitionRange))})}detach(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)}_isRadiusAtLimit(e){return this._attachedCamera?this._attachedCamera.radius===e&&!this._radiusIsAnimating:!1}_applyBoundRadiusAnimation(e){if(!this._attachedCamera)return;this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=dt.CreateAnimation("radius",dt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;let t=dt.TransitionTo("radius",this._attachedCamera.radius+e,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,()=>this._clearAnimationLocks());t&&this._animatables.push(t)}_clearAnimationLocks(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()}};tp.EasingFunction=new Vx(.3);tp.EasingMode=Co.EASINGMODE_EASEOUT});var Ff,ZW=I(()=>{cD();hi();Ao();Yl();ke();wf();Ff=class n{constructor(){this.onTargetFramingAnimationEndObservable=new ie,this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._attachedCamera=null,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}get name(){return"Framing"}set mode(e){this._mode=e}get mode(){return this._mode}set radiusScale(e){this._radiusScale=e}get radiusScale(){return this._radiusScale}set positionScale(e){this._positionScale=e}get positionScale(){return this._positionScale}set defaultElevation(e){this._defaultElevation=e}get defaultElevation(){return this._defaultElevation}set elevationReturnTime(e){this._elevationReturnTime=e}get elevationReturnTime(){return this._elevationReturnTime}set elevationReturnWaitTime(e){this._elevationReturnWaitTime=e}get elevationReturnWaitTime(){return this._elevationReturnWaitTime}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set framingTime(e){this._framingTime=e}get framingTime(){return this._framingTime}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===st.POINTERDOWN){this._isPointerDown=!0;return}i.type===st.POINTERUP&&(this._isPointerDown=!1)}),this._onMeshTargetChangedObserver=e.onMeshTargetChangedObservable.add(i=>{i&&i.getBoundingInfo&&this.zoomOnMesh(i,void 0,()=>{this.onTargetFramingAnimationEndObservable.notifyObservers()})}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._applyUserInteraction(),this._maintainCameraAboveGround()})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}zoomOnMesh(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,t,i)}zoomOnMeshHierarchy(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,t,i)}zoomOnMeshesHierarchy(e,t=!1,i=null){let r=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let a=0;a{this.stopAllAnimations(),r&&r(),this._attachedCamera&&this._attachedCamera.useInputToRestoreState&&this._attachedCamera.storeState()}),f&&this._animatables.push(f),!0}_calculateLowerRadiusFromModelBoundingSphere(e,t){let i=this._attachedCamera;if(!i)return 0;let r=i._calculateLowerRadiusFromModelBoundingSphere(e,t,this._radiusScale);return i.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(r=ri.upperRadiusLimit?i.upperRadiusLimit:r),r}_maintainCameraAboveGround(){if(this._elevationReturnTime<0)return;let e=Er.Now-this._lastInteractionTime,t=Math.PI*.5-this._defaultElevation,i=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>i&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=dt.CreateAnimation("beta",dt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=dt.TransitionTo("beta",t,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,()=>{this._clearAnimationLocks(),this.stopAllAnimations()});r&&this._animatables.push(r)}}_clearAnimationLocks(){this._betaIsAnimating=!1}_applyUserInteraction(){this.isUserIsMoving&&(this._lastInteractionTime=Er.Now,this.stopAllAnimations(),this._clearAnimationLocks())}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()}get isUserIsMoving(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1}};Ff.EasingFunction=new Gx;Ff.EasingMode=Co.EASINGMODE_EASEINOUT;Ff.IgnoreBoundsSizeMode=0;Ff.FitFrustumSidesMode=1});var kx,gD,Gs,vD=I(()=>{Gt();Vt();_l();ke();Un();lm();la();_i.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Gs(n,b.Zero(),e));kx=q.Zero(),gD=Xe.Identity(),Gs=class n extends mt{constructor(e,t,i,r=!0){super(e,t,i,r),this.cameraDirection=new b(0,0,0),this.cameraRotation=new Fe(0,0),this.updateUpVectorFromRotation=!1,this.speed=2,this.noRotationConstraint=!1,this.invertRotation=!1,this.inverseRotationSpeed=.2,this._panningEpsilon=Nt,this._rotationEpsilon=Nt,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=q.Zero(),this._cameraTransformMatrix=q.Zero(),this._cameraRotationMatrix=q.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new Xe,this._deferredRotationUpdate=new b,this._deferredUpdated=!1,this._deferOnly=!1,this._cachedRotationZ=0,this._cachedQuaternionRotationZ=0,this._referencePoint=b.Forward(this.getScene().useRightHandedSystem),this.rotation=new b(0,this.getScene().useRightHandedSystem?Math.PI:0,0)}getFrontPosition(e){this.getWorldMatrix();let t=$.Vector3[0],i=$.Vector3[1];return i.set(0,0,this._scene.useRightHandedSystem?-1:1),this.getDirectionToRef(i,t),t.scaleInPlace(e),this.globalPosition.add(t)}_getLockedTargetPosition(){if(!this.lockedTarget)return null;if(this.lockedTarget.absolutePosition){let e=this.lockedTarget;e.computeWorldMatrix().getTranslationToRef(e.absolutePosition)}return this.lockedTarget.absolutePosition||this.lockedTarget}storeState(){return this._storedPosition=this.position.clone(),this._storedRotation=this.rotation.clone(),this.rotationQuaternion&&(this._storedRotationQuaternion=this.rotationQuaternion.clone()),super.storeState()}_restoreStateValues(){return super._restoreStateValues()?(this.position=this._storedPosition.clone(),this.rotation=this._storedRotation.clone(),this.rotationQuaternion&&this._storedRotationQuaternion&&(this.rotationQuaternion=this._storedRotationQuaternion.clone()),this.cameraDirection.copyFromFloats(0,0,0),this.cameraRotation.copyFromFloats(0,0),!0):!1}_initCache(){super._initCache(),this._cache.lockedTarget=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotation=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotationQuaternion=new Xe(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}_updateCache(e){e||super._updateCache();let t=this._getLockedTargetPosition();t?this._cache.lockedTarget?this._cache.lockedTarget.copyFrom(t):this._cache.lockedTarget=t.clone():this._cache.lockedTarget=null,this._cache.rotation.copyFrom(this.rotation),this.rotationQuaternion&&this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion)}_isSynchronizedViewMatrix(){if(!super._isSynchronizedViewMatrix())return!1;let e=this._getLockedTargetPosition();return(this._cache.lockedTarget?this._cache.lockedTarget.equals(e):!e)&&(this.rotationQuaternion?this.rotationQuaternion.equals(this._cache.rotationQuaternion):this._cache.rotation.equals(this.rotation))}_computeLocalCameraSpeed(){let e=this.getEngine();return this.speed*Math.sqrt(e.getDeltaTime()/(e.getFps()*100))}setTarget(e){this.upVector.normalize(),this._initialFocalDistance=e.subtract(this.position).length(),this.position.z===e.z&&(this.position.z+=Nt),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?q.LookAtRHToRef(this.position,e,b.UpReadOnly,kx):q.LookAtLHToRef(this.position,e,b.UpReadOnly,kx),kx.invert();let t=this.rotationQuaternion||gD;Xe.FromRotationMatrixToRef(kx,t),t.toEulerAnglesToRef(this.rotation),this.rotation.z=0}get target(){return this.getTarget()}set target(e){this.setTarget(e)}getTarget(){return this._currentTarget}_decideIfNeedsToMove(){return Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){if(this.parent){this.parent.getWorldMatrix().invertToRef($.Matrix[0]),b.TransformNormalToRef(this.cameraDirection,$.Matrix[0],$.Vector3[0]),this._deferredPositionUpdate.addInPlace($.Vector3[0]),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate);return}this._deferredPositionUpdate.addInPlace(this.cameraDirection),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate)}_checkInputs(){let e=this.invertRotation?-this.inverseRotationSpeed:1,t=this._decideIfNeedsToMove(),i=this.cameraRotation.x||this.cameraRotation.y;this._deferredUpdated=!1,this._deferredRotationUpdate.copyFrom(this.rotation),this._deferredPositionUpdate.copyFrom(this.position),this.rotationQuaternion&&this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion),t&&this._updatePosition(),i&&(this.rotationQuaternion&&this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate),this._deferredRotationUpdate.x+=this.cameraRotation.x*e,this._deferredRotationUpdate.y+=this.cameraRotation.y*e,this.noRotationConstraint||(this._deferredRotationUpdate.x>1.570796&&(this._deferredRotationUpdate.x=1.570796),this._deferredRotationUpdate.x<-1.570796&&(this._deferredRotationUpdate.x=-1.570796)),this._deferOnly?this._deferredUpdated=!0:this.rotation.copyFrom(this._deferredRotationUpdate),this.rotationQuaternion&&this._deferredRotationUpdate.lengthSquared()&&(Xe.RotationYawPitchRollToRef(this._deferredRotationUpdate.y,this._deferredRotationUpdate.x,this._deferredRotationUpdate.z,this._deferredRotationQuaternionUpdate),this._deferOnly?this._deferredUpdated=!0:this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate)));let r=this.speed*this._panningEpsilon,s=this.speed*this._rotationEpsilon;t&&(Math.abs(this.cameraDirection.x){Pt();br();_l();Kn={},ip=class{constructor(e){this.attachedToElement=!1,this.attached={},this.camera=e,this.checkInputs=()=>{}}add(e){let t=e.getSimpleName();if(this.attached[t]){ee.Warn("camera input of type "+t+" already exists on camera");return}this.attached[t]=e,e.camera=this.camera,e.checkInputs&&(this.checkInputs=this._addCheckInputs(e.checkInputs.bind(e))),this.attachedToElement&&e.attachControl(this.noPreventDefault)}remove(e){for(let t in this.attached){let i=this.attached[t];if(i===e){i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck();return}}}removeByType(e){for(let t in this.attached){let i=this.attached[t];i.getClassName()===e&&(i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck())}}_addCheckInputs(e){let t=this.checkInputs;return()=>{t(),e()}}attachInput(e){this.attachedToElement&&e.attachControl(this.noPreventDefault)}attachElement(e=!1){if(!this.attachedToElement){e=mt.ForceAttachControlToAlwaysPreventDefault?!1:e,this.attachedToElement=!0,this.noPreventDefault=e;for(let t in this.attached)this.attached[t].attachControl(e)}}detachElement(e=!1){for(let t in this.attached)this.attached[t].detachControl(),e&&(this.attached[t].camera=null);this.attachedToElement=!1}rebuildInputCheck(){this.checkInputs=()=>{};for(let e in this.attached){let t=this.attached[e];t.checkInputs&&(this.checkInputs=this._addCheckInputs(t.checkInputs.bind(t)))}}clear(){this.attachedToElement&&this.detachElement(!0),this.attached={},this.attachedToElement=!1,this.checkInputs=()=>{}}serialize(e){let t={};for(let i in this.attached){let r=this.attached[i],s=it.Serialize(r);t[r.getClassName()]=s}e.inputsmgr=t}parse(e){let t=e.inputsmgr;if(t){this.clear();for(let i in t){let r=Kn[i];if(r){let s=t[i],a=it.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=Kn[this.attached[i].getClassName()];if(r){let s=it.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var zg,QW=I(()=>{Gt();Vt();yi();Ao();zg=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement(),r=0,s=null;this._pointA=null,this._pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=o=>{var d,h;let l=o.event,c=l.pointerType==="touch";if(o.type!==st.POINTERMOVE&&this.buttons.indexOf(l.button)===-1)return;let f=l.target;if(this._altKey=l.altKey,this._ctrlKey=l.ctrlKey,this._metaKey=l.metaKey,this._shiftKey=l.shiftKey,this._buttonsPressed=l.buttons,t.isPointerLock){let u=l.movementX,m=l.movementY;this.onTouch(null,u,m),this._pointA=null,this._pointB=null}else{if(o.type!==st.POINTERDOWN&&o.type!==st.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((h=this._pointB)==null?void 0:h.pointerId)!==l.pointerId)return;if(o.type===st.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(u){}if(this._pointA===null)this._pointA={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else if(this._pointB===null)this._pointB={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else return;this._currentMousePointerIdDown===-1&&!c&&(this._currentMousePointerIdDown=l.pointerId),this.onButtonDown(l),e||(l.preventDefault(),i&&i.focus())}else if(o.type===st.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===st.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(u){}c||(this._pointB=null),t._badOS?this._pointA=this._pointB=null:this._pointB&&this._pointA&&this._pointA.pointerId==l.pointerId?(this._pointA=this._pointB,this._pointB=null):this._pointA&&this._pointB&&this._pointB.pointerId==l.pointerId?this._pointB=null:this._pointA=this._pointB=null,(r!==0||s)&&(this.onMultiTouch(this._pointA,this._pointB,r,0,s,null),r=0,s=null),this._currentMousePointerIdDown=-1,this.onButtonUp(l),e||l.preventDefault()}else if(o.type===st.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let u=l.clientX-this._pointA.x,m=l.clientY-this._pointA.y;this._pointA.x=l.clientX,this._pointA.y=l.clientY,this.onTouch(this._pointA,u,m)}else if(this._pointA&&this._pointB){let u=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;u.x=l.clientX,u.y=l.clientY;let m=this._pointA.x-this._pointB.x,_=this._pointA.y-this._pointB.y,p=m*m+_*_,g={x:(this._pointA.x+this._pointB.x)/2,y:(this._pointA.y+this._pointB.y)/2,pointerId:l.pointerId,type:o.type};this.onMultiTouch(this._pointA,this._pointB,r,p,s,g),s=g,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE|st.POINTERDOUBLETAP),this._onLostFocus=()=>{this._pointA=this._pointB=null,r=0,s=null,this.onLostFocus()},this._contextMenuBind=o=>this.onContextMenu(o),i&&i.addEventListener("contextmenu",this._contextMenuBind,!1);let a=this.camera.getScene().getEngine().getHostWindow();a&&_e.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&_e.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._contextMenuBind){let e=this.camera.getScene().getEngine().getInputElement();e&&e.removeEventListener("contextmenu",this._contextMenuBind)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._currentMousePointerIdDown=-1}getClassName(){return"BaseCameraPointersInput"}getSimpleName(){return"pointers"}onDoubleTap(e){}onTouch(e,t,i){}onMultiTouch(e,t,i,r,s,a){}onContextMenu(e){e.preventDefault()}onButtonDown(e){}onButtonUp(e){}onLostFocus(){}};P([F()],zg.prototype,"buttons",void 0)});var vh,$W=I(()=>{Gt();Vt();QW();vh=class extends zg{constructor(){super(...arguments),this.pinchZoom=!0,this.multiTouchPanning=!0,this.multiTouchPanAndZoom=!0,this._isPinching=!1,this._twoFingerActivityCount=0,this._shouldStartPinchZoom=!1}_computePinchZoom(e,t){}_computeMultiTouchPanning(e,t){}onMultiTouch(e,t,i,r,s,a){i===0&&s===null||r===0&&a===null||(this.multiTouchPanAndZoom?(this._computePinchZoom(i,r),this._computeMultiTouchPanning(s,a)):this.multiTouchPanning&&this.pinchZoom?(this._twoFingerActivityCount++,this._isPinching||this._shouldStartPinchZoom?(this._computePinchZoom(i,r),this._isPinching=!0):this._computeMultiTouchPanning(s,a)):this.multiTouchPanning?this._computeMultiTouchPanning(s,a):this.pinchZoom&&this._computePinchZoom(i,r))}onButtonUp(e){this._twoFingerActivityCount=0,this._isPinching=!1}onLostFocus(){this._twoFingerActivityCount=0,this._isPinching=!1}};P([F()],vh.prototype,"pinchZoom",void 0);P([F()],vh.prototype,"multiTouchPanning",void 0);P([F()],vh.prototype,"multiTouchPanAndZoom",void 0)});var ca,JW=I(()=>{Gt();Vt();Tl();$W();ca=class n extends vh{constructor(){super(...arguments),this.buttons=[0,1,2],this.angularSensibilityX=1e3,this.angularSensibilityY=1e3,this.pinchPrecision=12,this.pinchDeltaPercentage=0,this.useNaturalPinchZoom=!1,this.panningSensibility=1e3,this.pinchInwards=!0,this._isPanClick=!1}getClassName(){return"ArcRotateCameraPointersInput"}_computeMultiTouchPanning(e,t){if(this.panningSensibility!==0&&e&&t){let i=t.x-e.x,r=t.y-e.y;this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility}}_computePinchZoom(e,t){let i=this.camera.radius||n.MinimumRadiusForPinch;this.useNaturalPinchZoom?this.camera.radius=i*Math.sqrt(e)/Math.sqrt(t):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(t-e)*.001*i*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(t-e)/(this.pinchPrecision*(this.pinchInwards?1:-1)*(this.angularSensibilityX+this.angularSensibilityY)/2)}onTouch(e,t,i){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-t/this.panningSensibility,this.camera.inertialPanningY+=i/this.panningSensibility):(this.camera.inertialAlphaOffset-=t/this.angularSensibilityX,this.camera.inertialBetaOffset-=i/this.angularSensibilityY)}onDoubleTap(){this.camera.useInputToRestoreState&&this.camera.restoreState()}onMultiTouch(e,t,i,r,s,a){this._shouldStartPinchZoom=this._twoFingerActivityCount<20&&Math.abs(Math.sqrt(r)-Math.sqrt(i))>this.camera.pinchToPanMaxDistance,super.onMultiTouch(e,t,i,r,s,a)}onButtonDown(e){this._isPanClick=e.button===this.camera._panningMouseButton,super.onButtonDown(e)}onButtonUp(e){super.onButtonUp(e)}onLostFocus(){this._isPanClick=!1,super.onLostFocus()}};ca.MinimumRadiusForPinch=.001;P([F()],ca.prototype,"buttons",void 0);P([F()],ca.prototype,"angularSensibilityX",void 0);P([F()],ca.prototype,"angularSensibilityY",void 0);P([F()],ca.prototype,"pinchPrecision",void 0);P([F()],ca.prototype,"pinchDeltaPercentage",void 0);P([F()],ca.prototype,"useNaturalPinchZoom",void 0);P([F()],ca.prototype,"panningSensibility",void 0);Kn.ArcRotateCameraPointersInput=ca});var ks,eH=I(()=>{Gt();Vt();Tl();dx();yi();ks=class{constructor(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===xo.KEYDOWN)this._ctrlPressed=i.ctrlKey,this._altPressed=i.altKey,(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),i.preventDefault&&(e||i.preventDefault()));else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),i.preventDefault&&(e||i.preventDefault())}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Gt();Vt();Tl();Ao();um();ke();Un();hx();Vn();yi();nfe=40,Bf=class{constructor(){this.wheelPrecision=3,this.zoomToMouseLocation=!1,this.wheelDeltaPercentage=0,this.customComputeDeltaFromMouseWheel=null,this._viewOffset=new b(0,0,0),this._globalOffset=new b(0,0,0),this._inertialPanning=b.Zero()}_computeDeltaFromMouseWheelLegacyEvent(e,t){let i,r=e*.01*this.wheelDeltaPercentage*t;return e>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==st.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Ro.DOM_DELTA_LINE?nfe:1,a=-(i.deltaY*s);if(this.customComputeDeltaFromMouseWheel)r=this.customComputeDeltaFromMouseWheel(a,this,i);else if(this.wheelDeltaPercentage){if(r=this._computeDeltaFromMouseWheelLegacyEvent(a,this.camera.radius),r>0){let o=this.camera.radius,l=this.camera.inertialRadiusOffset+r;for(let c=0;c<20&&!(o<=l||Math.abs(l*this.camera.inertia)<.001);c++)o-=l,l*=this.camera.inertia;o=wt(o,0,Number.MAX_VALUE),r=this._computeDeltaFromMouseWheelLegacyEvent(a,o)}}else r=a/(this.wheelPrecision*40);r&&(this.zoomToMouseLocation?(this._hitPlane||this._updateHitPlane(),this._zoomToMouse(r)):this.camera.inertialRadiusOffset+=r),i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,st.POINTERWHEEL),this.zoomToMouseLocation&&this._inertialPanning.setAll(0)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null)}checkInputs(){if(!this.zoomToMouseLocation)return;let e=this.camera;0+e.inertialAlphaOffset+e.inertialBetaOffset+e.inertialRadiusOffset&&(this._updateHitPlane(),e.target.addInPlace(this._inertialPanning),this._inertialPanning.scaleInPlace(e.inertia),this._zeroIfClose(this._inertialPanning))}getClassName(){return"ArcRotateCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}_updateHitPlane(){let e=this.camera,t=e.target.subtract(e.position);this._hitPlane=_o.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,q.Identity(),e,!1);(e.targetScreenOffset.x!==0||e.targetScreenOffset.y!==0)&&(this._viewOffset.set(e.targetScreenOffset.x,e.targetScreenOffset.y,0),e.getViewMatrix().invertToRef(e._cameraTransformMatrix),this._globalOffset=b.TransformNormal(this._viewOffset,e._cameraTransformMatrix),i.origin.addInPlace(this._globalOffset));let r=0;return this._hitPlane&&(r=(s=i.intersectsPlane(this._hitPlane))!=null?s:0),i.origin.addInPlace(i.direction.scaleInPlace(r))}_zoomToMouse(e){var l,c;let t=this.camera,i=1-t.inertia;if(t.lowerRadiusLimit){let f=(l=t.lowerRadiusLimit)!=null?l:0;t.radius-(t.inertialRadiusOffset+e)/if&&(e=(t.radius-f)*i-t.inertialRadiusOffset)}let s=e/i/t.radius,a=this._getPosition(),o=$.Vector3[6];a.subtractToRef(t.target,o),o.scaleInPlace(s),o.scaleInPlace(i),this._inertialPanning.addInPlace(o),t.inertialRadiusOffset+=e}_zeroIfClose(e){Math.abs(e.x){JW();eH();tH();Tl();Wx=class extends ip{constructor(e){super(e)}addMouseWheel(){return this.add(new Bf),this}addPointers(){return this.add(new ca),this}addKeyboard(){return this.add(new ks),this}}});function sfe(n){let e=Math.PI/2;return n.x===0&&n.z===0||(e=Math.acos(n.x/Math.sqrt(Math.pow(n.x,2)+Math.pow(n.z,2)))),n.z<0&&(e=2*Math.PI-e),e}function afe(n,e){return Math.acos(n/e)}function jn(n,e){return isNaN(n)?e:n}var gi,Hx=I(()=>{Gt();Vt();hi();ke();Vn();la();Ci();lD();qW();ZW();_l();vD();iH();Un();yi();Yi();_i.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new gi(n,0,0,1,b.Zero(),e));gi=class n extends Gs{get target(){return this._target}set target(e){this.setTarget(e)}get targetHost(){return this._targetHost}set targetHost(e){e&&this.setTarget(e)}getTarget(){return this.target}get position(){return this._position}set position(e){this.setPosition(e)}set upVector(e){this._upToYMatrix||(this._yToUpMatrix=new q,this._upToYMatrix=new q,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){q.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),q.RotationAlignToRef(this._upVector,b.UpReadOnly,this._upToYMatrix)}get angularSensibilityX(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0}set angularSensibilityX(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityX=e)}get angularSensibilityY(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0}set angularSensibilityY(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityY=e)}get pinchPrecision(){let e=this.inputs.attached.pointers;return e?e.pinchPrecision:0}set pinchPrecision(e){let t=this.inputs.attached.pointers;t&&(t.pinchPrecision=e)}get pinchDeltaPercentage(){let e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0}set pinchDeltaPercentage(e){let t=this.inputs.attached.pointers;t&&(t.pinchDeltaPercentage=e)}get useNaturalPinchZoom(){let e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1}set useNaturalPinchZoom(e){let t=this.inputs.attached.pointers;t&&(t.useNaturalPinchZoom=e)}get panningSensibility(){let e=this.inputs.attached.pointers;return e?e.panningSensibility:0}set panningSensibility(e){let t=this.inputs.attached.pointers;t&&(t.panningSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get wheelPrecision(){let e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0}set wheelPrecision(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelPrecision=e)}get zoomToMouseLocation(){let e=this.inputs.attached.mousewheel;return e?e.zoomToMouseLocation:!1}set zoomToMouseLocation(e){let t=this.inputs.attached.mousewheel;t&&(t.zoomToMouseLocation=e)}get wheelDeltaPercentage(){let e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0}set wheelDeltaPercentage(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelDeltaPercentage=e)}get isInterpolating(){return this._isInterpolating}get bouncingBehavior(){return this._bouncingBehavior}get useBouncingBehavior(){return this._bouncingBehavior!=null}set useBouncingBehavior(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new tp,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))}get framingBehavior(){return this._framingBehavior}get useFramingBehavior(){return this._framingBehavior!=null}set useFramingBehavior(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Ff,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))}get autoRotationBehavior(){return this._autoRotationBehavior}get useAutoRotationBehavior(){return this._autoRotationBehavior!=null}set useAutoRotationBehavior(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new ep,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))}constructor(e,t,i,r,s,a,o=!0){super(e,b.Zero(),a,o),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.lowerAlphaLimit=null,this.upperAlphaLimit=null,this.lowerBetaLimit=.01,this.upperBetaLimit=Math.PI-.01,this.lowerRadiusLimit=null,this.upperRadiusLimit=null,this.lowerTargetYLimit=-1/0,this.inertialPanningX=0,this.inertialPanningY=0,this.pinchToPanMaxDistance=20,this.panningDistanceLimit=null,this.panningOriginTarget=b.Zero(),this.panningInertia=.9,this.zoomOnFactor=1,this.targetScreenOffset=Fe.Zero(),this.allowUpsideDown=!0,this.useInputToRestoreState=!0,this.restoreStateInterpolationFactor=0,this._currentInterpolationFactor=0,this._viewMatrix=new q,this.panningAxis=new b(1,1,0),this._transformedDirection=new b,this.mapPanning=!1,this._isInterpolating=!1,this.onMeshTargetChangedObservable=new ie,this.checkCollisions=!1,this.collisionRadius=new b(.5,.5,.5),this._previousPosition=b.Zero(),this._collisionVelocity=b.Zero(),this._newPosition=b.Zero(),this._computationVector=b.Zero(),this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget=new b(NaN,NaN,NaN),this._goalTargetScreenOffset=new Fe(NaN,NaN),this._onCollisionPositionChange=(l,c,f=null)=>{f?(this.setPosition(c),this.onCollide&&this.onCollide(f)):this._previousPosition.copyFrom(this._position);let d=Math.cos(this.alpha),h=Math.sin(this.alpha),u=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let _=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*u,this.radius*h*m),_.addToRef(this._computationVector,this._newPosition),this._position.copyFrom(this._newPosition);let p=this.upVector;this.allowUpsideDown&&this.beta<0&&(p=p.clone(),p=p.negate()),this._computeViewMatrix(this._position,_,p),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y),this._collisionTriggered=!1},this._target=b.Zero(),s&&this.setTarget(s),this.alpha=t,this.beta=i,this.radius=r,this.getViewMatrix(),this.inputs=new Wx(this),this.inputs.addKeyboard().addMouseWheel().addPointers()}_initCache(){super._initCache(),this._cache._target=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=Fe.Zero()}_updateCache(e){e||super._updateCache(),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)}_getTargetPosition(){if(this._targetHost&&this._targetHost.getAbsolutePosition){let t=this._targetHost.getAbsolutePosition();this._targetBoundingCenter?t.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(t)}let e=this._getLockedTargetPosition();return e||this._target}storeState(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),super.storeState()}_restoreStateValues(){return this.hasStateStored()&&this.restoreStateInterpolationFactor>Nt&&this.restoreStateInterpolationFactor<1?(this.interpolateTo(this._storedAlpha,this._storedBeta,this._storedRadius,this._storedTarget,this._storedTargetScreenOffset,this.restoreStateInterpolationFactor),!0):super._restoreStateValues()?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1}stopInterpolation(){this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget.set(NaN,NaN,NaN),this._goalTargetScreenOffset.set(NaN,NaN)}interpolateTo(e=this.alpha,t=this.beta,i=this.radius,r=this.target,s=this.targetScreenOffset,a){var o,l,c,f,d,h,u;this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,a!=null?this._currentInterpolationFactor=a:this.restoreStateInterpolationFactor!==0?this._currentInterpolationFactor=this.restoreStateInterpolationFactor:this._currentInterpolationFactor=.1,this._goalAlpha=jn(e,this._goalAlpha),this._goalBeta=jn(t,this._goalBeta),this._goalRadius=jn(i,this._goalRadius),this._goalTarget.set(jn(r.x,this._goalTarget.x),jn(r.y,this._goalTarget.y),jn(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(jn(s.x,this._goalTargetScreenOffset.x),jn(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=wt(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=wt(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=wt(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(h=this.upperRadiusLimit)!=null?h:1/0),this._goalTarget.y=wt(this._goalTarget.y,(u=this.lowerTargetYLimit)!=null?u:-1/0,1/0),this._isInterpolating=!0}_isSynchronizedViewMatrix(){return super._isSynchronizedViewMatrix()?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1}attachControl(e,t,i=!0,r=2){let s=arguments;t=_e.BackCompatCameraNoPreventDefault(s),this._useCtrlForPanning=i,this._panningMouseButton=r,typeof s[0]=="boolean"&&(s.length>1&&(this._useCtrlForPanning=s[1]),s.length>2&&(this._panningMouseButton=s[2])),this.inputs.attachElement(t),this._reset=()=>{this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0}}detachControl(){this.inputs.detachElement(),this._reset&&this._reset()}_checkInputs(){if(this._collisionTriggered)return;this.inputs.checkInputs();let e=!1;if(this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){e=!0;let t=this.invertRotation?-1:1,i=this._calculateHandednessMultiplier(),r=this.inertialAlphaOffset*i;this.beta<0&&(r*=-1),this.alpha+=r*t,this.beta+=this.inertialBetaOffset*t,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)Math.PI&&(this.beta=this.beta-2*Math.PI):this.betathis.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alphathis.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radiusthis.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0),this.target.y=Math.max(this.target.y,this.lowerTargetYLimit)}rebuildAnglesAndRadius(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);let e=this.alpha;this.alpha=sfe(this._computationVector),this.beta=afe(this._computationVector.y,this.radius);let t=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=t*2*Math.PI,this._checkLimits()}setPosition(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())}setTarget(e,t=!1,i=!1,r=!1){var s;if(r=(s=this.overrideCloneAlphaBetaRadius)!=null?s:r,e.computeWorldMatrix)t&&e.getBoundingInfo?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{let a=e,o=this._getTargetPosition();if(o&&!i&&o.equals(a))return;this._targetHost=null,this._target=a,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}r||this.rebuildAnglesAndRadius()}_getViewMatrix(){let e=Math.cos(this.alpha),t=Math.sin(this.alpha),i=Math.cos(this.beta),r=Math.sin(this.beta);r===0&&(r=1e-4),this.radius===0&&(this.radius=1e-4);let s=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*r,this.radius*i,this.radius*t*r),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._yToUpMatrix,this._computationVector),s.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){let a=this.getScene().collisionCoordinator;this._collider||(this._collider=a.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,a.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);let a=this.upVector;this.allowUpsideDown&&r<0&&(a=a.negate()),this._computeViewMatrix(this._position,s,a),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget.copyFrom(s),this._viewMatrix}zoomOn(e,t=!1){e=e||this.getScene().meshes;let i=Z.MinMax(e),r=this._calculateLowerRadiusFromModelBoundingSphere(i.min,i.max);if(r=Math.max(Math.min(r,this.upperRadiusLimit||Number.MAX_VALUE),this.lowerRadiusLimit||0),this.radius=r*this.zoomOnFactor,this.mode===mt.ORTHOGRAPHIC_CAMERA){let s=this.getScene().getEngine().getAspectRatio(this),a=r*this.zoomOnFactor/2;this.orthoLeft=-a*s,this.orthoRight=a*s,this.orthoBottom=-a,this.orthoTop=a}this.focusOn({min:i.min,max:i.max,distance:r},t)}focusOn(e,t=!1){let i,r;if(e.min===void 0){let s=e||this.getScene().meshes;i=Z.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=Z.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case mt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case mt.RIG_MODE_STEREOSCOPIC_INTERLACED:case mt.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:i=this._cameraRigParams.stereoHalfAngle*(t===0?-1:1);break}let r=new n(e,this.alpha+i,this.beta,this.radius,this._target,this.getScene());return r._cameraRigParams={},r.isRigCamera=!0,r.rigParent=this,r.upVector=this.upVector,r.mode=this.mode,r.orthoLeft=this.orthoLeft,r.orthoRight=this.orthoRight,r.orthoBottom=this.orthoBottom,r.orthoTop=this.orthoTop,r}_updateRigCameras(){let e=this._rigCameras[0],t=this._rigCameras[1];switch(e.beta=t.beta=this.beta,this.cameraRigMode){case mt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case mt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case mt.RIG_MODE_STEREOSCOPIC_INTERLACED:case mt.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case mt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}super._updateRigCameras()}_calculateLowerRadiusFromModelBoundingSphere(e,t,i=1){let r=b.Distance(e,t),a=this.getScene().getEngine().getAspectRatio(this),o=Math.tan(this.fov/2),l=o*a,f=r*.5*i,d=f*Math.sqrt(1+1/(l*l)),h=f*Math.sqrt(1+1/(o*o));return Math.max(d,h)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],gi.prototype,"alpha",void 0);P([F()],gi.prototype,"beta",void 0);P([F()],gi.prototype,"radius",void 0);P([F()],gi.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Xr("target")],gi.prototype,"_target",void 0);P([zA("targetHost")],gi.prototype,"_targetHost",void 0);P([F()],gi.prototype,"inertialAlphaOffset",void 0);P([F()],gi.prototype,"inertialBetaOffset",void 0);P([F()],gi.prototype,"inertialRadiusOffset",void 0);P([F()],gi.prototype,"lowerAlphaLimit",void 0);P([F()],gi.prototype,"upperAlphaLimit",void 0);P([F()],gi.prototype,"lowerBetaLimit",void 0);P([F()],gi.prototype,"upperBetaLimit",void 0);P([F()],gi.prototype,"lowerRadiusLimit",void 0);P([F()],gi.prototype,"upperRadiusLimit",void 0);P([F()],gi.prototype,"lowerTargetYLimit",void 0);P([F()],gi.prototype,"inertialPanningX",void 0);P([F()],gi.prototype,"inertialPanningY",void 0);P([F()],gi.prototype,"pinchToPanMaxDistance",void 0);P([F()],gi.prototype,"panningDistanceLimit",void 0);P([Xr()],gi.prototype,"panningOriginTarget",void 0);P([F()],gi.prototype,"panningInertia",void 0);P([F()],gi.prototype,"zoomToMouseLocation",null);P([F()],gi.prototype,"zoomOnFactor",void 0);P([vm()],gi.prototype,"targetScreenOffset",void 0);P([F()],gi.prototype,"allowUpsideDown",void 0);P([F()],gi.prototype,"useInputToRestoreState",void 0);P([F()],gi.prototype,"restoreStateInterpolationFactor",void 0);Ft("BABYLON.ArcRotateCamera",gi)});var zt,Uf=I(()=>{Gt();Vt();ke();Ht();la();Af();Yi();Tg();br();zt=class n extends _i{get range(){return this._range}set range(e){this._range=e,this._inverseSquaredRange=1/(this.range*this.range)}get intensityMode(){return this._intensityMode}set intensityMode(e){this._intensityMode=e,this._computePhotometricScale()}get radius(){return this._radius}set radius(e){this._radius=e,this._computePhotometricScale()}get shadowEnabled(){return this._shadowEnabled}set shadowEnabled(e){this._shadowEnabled!==e&&(this._shadowEnabled=e,this._markMeshesAsLightDirty())}get includedOnlyMeshes(){return this._includedOnlyMeshes}set includedOnlyMeshes(e){this._includedOnlyMeshes=e,this._hookArrayForIncludedOnly(e)}get excludedMeshes(){return this._excludedMeshes}set excludedMeshes(e){this._excludedMeshes=e,this._hookArrayForExcluded(e)}get excludeWithLayerMask(){return this._excludeWithLayerMask}set excludeWithLayerMask(e){this._excludeWithLayerMask=e,this._resyncMeshes()}get includeOnlyWithLayerMask(){return this._includeOnlyWithLayerMask}set includeOnlyWithLayerMask(e){this._includeOnlyWithLayerMask=e,this._resyncMeshes()}get lightmapMode(){return this._lightmapMode}set lightmapMode(e){this._lightmapMode!==e&&(this._lightmapMode=e,this._markMeshesAsLightDirty())}getViewMatrix(e){return null}getProjectionMatrix(e,t){return null}constructor(e,t,i){super(e,t,!1),this.diffuse=new pe(1,1,1),this.specular=new pe(1,1,1),this.falloffType=n.FALLOFF_DEFAULT,this.intensity=1,this._range=Number.MAX_VALUE,this._inverseSquaredRange=0,this._photometricScale=1,this._intensityMode=n.INTENSITYMODE_AUTOMATIC,this._radius=1e-5,this.renderPriority=0,this._shadowEnabled=!0,this._excludeWithLayerMask=0,this._includeOnlyWithLayerMask=0,this._lightmapMode=0,this._shadowGenerators=null,this._excludedMeshesIds=new Array,this._includedOnlyMeshesIds=new Array,this._currentViewDepth=0,this._clusteredContainer=null,this._isLight=!0,i||this.getScene().addLight(this),this._uniformBuffer=new mr(this.getScene().getEngine(),void 0,void 0,e),this._buildUniformLayout(),this.includedOnlyMeshes=[],this.excludedMeshes=[],i||this._resyncMeshes()}transferTexturesToEffect(e,t){return this}_bindLight(e,t,i,r,s=!0){var l;let a=e.toString(),o=!1;if(this._uniformBuffer.bindToEffect(i,"Light"+a),this._renderId!==t.getRenderId()||this._lastUseSpecular!==r||!this._uniformBuffer.useUbo){this._renderId=t.getRenderId(),this._lastUseSpecular=r;let c=this.getScaledIntensity();this.transferToEffect(i,a),this.diffuse.scaleToRef(c,Rn.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Rn.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Rn.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Rn.Color3[1],this.radius,a)),o=!0}if(this.transferTexturesToEffect(i,a),t.shadowsEnabled&&this.shadowEnabled&&s){let c=(l=this.getShadowGenerator(t.activeCamera))!=null?l:this.getShadowGenerator();c&&(c.bindShadowLight(a,i),o=!0)}o?this._uniformBuffer.update():this._uniformBuffer.bindUniformBuffer()}getClassName(){return"Light"}toString(e){let t="Name: "+this.name;if(t+=", type: "+["Point","Directional","Spot","Hemispheric","Clustered"][this.getTypeID()],this.animations)for(let i=0;i0&&this.includedOnlyMeshes.indexOf(e)===-1||this.excludedMeshes&&this.excludedMeshes.length>0&&this.excludedMeshes.indexOf(e)!==-1||this.includeOnlyWithLayerMask!==0&&(this.includeOnlyWithLayerMask&e.layerMask)===0||this.excludeWithLayerMask!==0&&this.excludeWithLayerMask&e.layerMask):!0}dispose(e,t=!1){if(this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.dispose();this._shadowGenerators=null}if(this.getScene().stopAnimation(this),this._parentContainer){let i=this._parentContainer.lights.indexOf(this);i>-1&&this._parentContainer.lights.splice(i,1),this._parentContainer=null}for(let i of this.getScene().meshes)i._removeLightSource(this,!0);this._uniformBuffer.dispose(),this.getScene().removeLight(this),super.dispose(e,t)}getTypeID(){return 0}getScaledIntensity(){return this._photometricScale*this.intensity}clone(e,t=null){let i=n.GetConstructorFromName(this.getTypeID(),e,this.getScene());if(!i)return null;let r=it.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=it.Serialize(this);if(e.uniqueId=this.uniqueId,e.type=this.getTypeID(),this.parent&&this.parent._serializeAsParent(e),this.excludedMeshes.length>0){e.excludedMeshesIds=[];for(let t of this.excludedMeshes)e.excludedMeshesIds.push(t.id)}if(this.includedOnlyMeshes.length>0){e.includedOnlyMeshesIds=[];for(let t of this.includedOnlyMeshes)e.includedOnlyMeshesIds.push(t.id)}return it.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=_i.Construct("Light_Type_"+e,t,i);return r||null}static Parse(e,t){let i=n.GetConstructorFromName(e.type,e.name,t);if(!i)return null;let r=it.Parse(i,e,t);if(e.excludedMeshesIds&&(r._excludedMeshesIds=e.excludedMeshesIds),e.includedOnlyMeshesIds&&(r._includedOnlyMeshesIds=e.includedOnlyMeshesIds),e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.falloffType!==void 0&&(r.falloffType=e.falloffType),e.lightmapMode!==void 0&&(r.lightmapMode=e.lightmapMode),e.animations){for(let s=0;s{let s=t.apply(e,r);if(this._clusteredContainer)return s;for(let a of r)a._resyncLightSource(this);return s};let i=e.splice;if(e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);if(this._clusteredContainer)return a;for(let o of a)o._resyncLightSource(this);return a},!this._clusteredContainer)for(let r of e)r._resyncLightSource(this)}_hookArrayForIncludedOnly(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._resyncMeshes(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._resyncMeshes(),a},this._resyncMeshes()}_resyncMeshes(){if(!this._clusteredContainer)for(let e of this.getScene().meshes)e._resyncLightSource(this)}_markMeshesAsLightDirty(){for(let e of this.getScene().meshes)e.lightSources.indexOf(this)!==-1&&e._markSubMeshesAsLightDirty()}_computePhotometricScale(){this._photometricScale=this._getPhotometricScale(),this.getScene().resetCachedMaterial()}_getPhotometricScale(){let e=0,t=this.getTypeID(),i=this.intensityMode;switch(i===n.INTENSITYMODE_AUTOMATIC&&(t===n.LIGHTTYPEID_DIRECTIONALLIGHT?i=n.INTENSITYMODE_ILLUMINANCE:i=n.INTENSITYMODE_LUMINOUSINTENSITY),t){case n.LIGHTTYPEID_POINTLIGHT:case n.LIGHTTYPEID_SPOTLIGHT:switch(i){case n.INTENSITYMODE_LUMINOUSPOWER:e=1/(4*Math.PI);break;case n.INTENSITYMODE_LUMINOUSINTENSITY:e=1;break;case n.INTENSITYMODE_LUMINANCE:e=this.radius*this.radius;break}break;case n.LIGHTTYPEID_DIRECTIONALLIGHT:switch(i){case n.INTENSITYMODE_ILLUMINANCE:e=1;break;case n.INTENSITYMODE_LUMINANCE:{let r=this.radius;r=Math.max(r,.001),e=2*Math.PI*(1-Math.cos(r));break}}break;case n.LIGHTTYPEID_HEMISPHERICLIGHT:e=1;break}return e}_reorderLightsInScene(){let e=this.getScene();this._renderPriority!=0&&(e.requireLightSorting=!0),this.getScene().sortLightsByPriority()}areLightTexturesReady(){return!0}_isReady(){return!0}};zt.FALLOFF_DEFAULT=Xt.FALLOFF_DEFAULT;zt.FALLOFF_PHYSICAL=Xt.FALLOFF_PHYSICAL;zt.FALLOFF_GLTF=Xt.FALLOFF_GLTF;zt.FALLOFF_STANDARD=Xt.FALLOFF_STANDARD;zt.LIGHTMAP_DEFAULT=Xt.LIGHTMAP_DEFAULT;zt.LIGHTMAP_SPECULAR=Xt.LIGHTMAP_SPECULAR;zt.LIGHTMAP_SHADOWSONLY=Xt.LIGHTMAP_SHADOWSONLY;zt.INTENSITYMODE_AUTOMATIC=Xt.INTENSITYMODE_AUTOMATIC;zt.INTENSITYMODE_LUMINOUSPOWER=Xt.INTENSITYMODE_LUMINOUSPOWER;zt.INTENSITYMODE_LUMINOUSINTENSITY=Xt.INTENSITYMODE_LUMINOUSINTENSITY;zt.INTENSITYMODE_ILLUMINANCE=Xt.INTENSITYMODE_ILLUMINANCE;zt.INTENSITYMODE_LUMINANCE=Xt.INTENSITYMODE_LUMINANCE;zt.LIGHTTYPEID_POINTLIGHT=Xt.LIGHTTYPEID_POINTLIGHT;zt.LIGHTTYPEID_DIRECTIONALLIGHT=Xt.LIGHTTYPEID_DIRECTIONALLIGHT;zt.LIGHTTYPEID_SPOTLIGHT=Xt.LIGHTTYPEID_SPOTLIGHT;zt.LIGHTTYPEID_HEMISPHERICLIGHT=Xt.LIGHTTYPEID_HEMISPHERICLIGHT;zt.LIGHTTYPEID_RECT_AREALIGHT=Xt.LIGHTTYPEID_RECT_AREALIGHT;P([Tr()],zt.prototype,"diffuse",void 0);P([Tr()],zt.prototype,"specular",void 0);P([F()],zt.prototype,"falloffType",void 0);P([F()],zt.prototype,"intensity",void 0);P([F()],zt.prototype,"range",null);P([F()],zt.prototype,"intensityMode",null);P([F()],zt.prototype,"radius",null);P([F()],zt.prototype,"_renderPriority",void 0);P([le("_reorderLightsInScene")],zt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],zt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],zt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],zt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],zt.prototype,"_lightmapMode",void 0)});var fa,zx=I(()=>{Gt();Vt();ke();Ht();la();Uf();Yi();_i.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new fa(n,b.Zero(),e));fa=class extends zt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new pe(0,0,0),this.direction=t||b.Up()}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightGround",3),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}getClassName(){return"HemisphericLight"}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(b.Zero())),this.direction}getShadowGenerator(){return null}transferToEffect(e,t){let i=b.Normalize(this.direction);return this._uniformBuffer.updateFloat4("vLightData",i.x,i.y,i.z,0,t),this._uniformBuffer.updateColor3("vLightGround",this.groundColor.scale(this.intensity),t),this}transferToNodeMaterialEffect(e,t){let i=b.Normalize(this.direction);return e.setFloat3(t,i.x,i.y,i.z),this}computeWorldMatrix(){return this._worldMatrix||(this._worldMatrix=q.Identity()),this._worldMatrix}getTypeID(){return zt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([Tr()],fa.prototype,"groundColor",void 0);P([Xr()],fa.prototype,"direction",void 0);Ft("BABYLON.HemisphericLight",fa)});var Va,Xx=I(()=>{Gt();Vt();ke();Uf();lm();Va=class extends zt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=q.Identity(),this._projectionMatrix=q.Identity()}_setPosition(e){this._position=e}get position(){return this._position}set position(e){this._setPosition(e)}_setDirection(e){this._direction=e}get direction(){return this._direction}set direction(e){this._setDirection(e)}get shadowMinZ(){return this._shadowMinZ}set shadowMinZ(e){this._shadowMinZ=e,this.forceProjectionMatrixCompute()}get shadowMaxZ(){return this._shadowMaxZ}set shadowMaxZ(e){this._shadowMaxZ=e,this.forceProjectionMatrixCompute()}computeTransformedInformation(){return this.parent&&this.parent.getWorldMatrix?(this.transformedPosition||(this.transformedPosition=b.Zero()),b.TransformCoordinatesToRef(this.position,this.parent.getWorldMatrix(),this.transformedPosition),this.direction&&(this.transformedDirection||(this.transformedDirection=b.Zero()),b.TransformNormalToRef(this.direction,this.parent.getWorldMatrix(),this.transformedDirection)),!0):!1}getDepthScale(){return 50}getShadowDirection(e){return this.transformedDirection?this.transformedDirection:this.direction}getAbsolutePosition(){return this.transformedPosition?this.transformedPosition:this.position}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(this.position)),this.direction}getRotation(){this.direction.normalize();let e=b.Cross(this.direction,Ns.Y),t=b.Cross(e,this.direction);return b.RotationFromAxis(e,t,this.direction)}needCube(){return!1}needProjectionMatrixCompute(){return this._needProjectionMatrixCompute}forceProjectionMatrixCompute(){this._needProjectionMatrixCompute=!0}_initCache(){super._initCache(),this._cache.position=b.Zero()}_isSynchronized(){return!!this._cache.position.equals(this.position)}computeWorldMatrix(e){return!e&&this.isSynchronized()?(this._currentRenderId=this.getScene().getRenderId(),this._worldMatrix):(this._updateCache(),this._cache.position.copyFrom(this.position),this._worldMatrix||(this._worldMatrix=q.Identity()),q.TranslationToRef(this.position.x,this.position.y,this.position.z,this._worldMatrix),this.parent&&this.parent.getWorldMatrix&&(this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(),this._worldMatrix),this._markSyncedWithParent()),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix)}getDepthMinZ(e){return this.shadowMinZ!==void 0?this.shadowMinZ:(e==null?void 0:e.minZ)||0}getDepthMaxZ(e){return this.shadowMaxZ!==void 0?this.shadowMaxZ:(e==null?void 0:e.maxZ)||1e4}setShadowProjectionMatrix(e,t,i){return this.customProjectionMatrixBuilder?this.customProjectionMatrixBuilder(t,i,e):this._setDefaultShadowProjectionMatrix(e,t,i),this}_syncParentEnabledState(){super._syncParentEnabledState(),(!this.parent||!this.parent.getWorldMatrix)&&(this.transformedPosition=null,this.transformedDirection=null)}getViewMatrix(e){let t=$.Vector3[0],i=this.position;this.computeTransformedInformation()&&(i=this.transformedPosition),b.NormalizeToRef(this.getShadowDirection(e),t),Math.abs(b.Dot(t,b.Up()))===1&&(t.z=1e-13);let r=$.Vector3[1];return i.addToRef(t,r),q.LookAtLHToRef(i,r,b.Up(),this._viewMatrix),this._viewMatrix}getProjectionMatrix(e,t){return this.setShadowProjectionMatrix(this._projectionMatrix,e!=null?e:this._viewMatrix,t!=null?t:[]),this._projectionMatrix}};P([Xr()],Va.prototype,"position",null);P([Xr()],Va.prototype,"direction",null);P([F()],Va.prototype,"shadowMinZ",null);P([F()],Va.prototype,"shadowMaxZ",null)});var Ws,rH=I(()=>{Gt();Vt();ke();la();Uf();Xx();Yi();_i.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new Ws(n,b.Zero(),e));Ws=class extends Va{get shadowFrustumSize(){return this._shadowFrustumSize}set shadowFrustumSize(e){this._shadowFrustumSize=e,this.forceProjectionMatrixCompute()}get shadowOrthoScale(){return this._shadowOrthoScale}set shadowOrthoScale(e){this._shadowOrthoScale=e,this.forceProjectionMatrixCompute()}get orthoLeft(){return this._orthoLeft}set orthoLeft(e){this._orthoLeft=e}get orthoRight(){return this._orthoRight}set orthoRight(e){this._orthoRight=e}get orthoTop(){return this._orthoTop}set orthoTop(e){this._orthoTop=e}get orthoBottom(){return this._orthoBottom}set orthoBottom(e){this._orthoBottom=e}constructor(e,t,i,r){super(e,i,r),this._shadowFrustumSize=0,this._shadowOrthoScale=.1,this.autoUpdateExtends=!0,this.autoCalcShadowZBounds=!1,this._orthoLeft=Number.MAX_VALUE,this._orthoRight=Number.MIN_VALUE,this._orthoTop=Number.MIN_VALUE,this._orthoBottom=Number.MAX_VALUE,this.position=t.scale(-1),this.direction=t}getClassName(){return"DirectionalLight"}getTypeID(){return zt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;q.OrthoLHToRef(this.shadowFrustumSize,this.shadowFrustumSize,this.shadowMinZ!==void 0?this.shadowMinZ:t?t.minZ:0,this.shadowMaxZ!==void 0?this.shadowMaxZ:t?t.maxZ:1e4,e,this.getScene().getEngine().isNDCHalfZRange)}_setDefaultAutoExtendShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(this.autoUpdateExtends||this._orthoLeft===Number.MAX_VALUE){let f=b.Zero();this._orthoLeft=Number.MAX_VALUE,this._orthoRight=-Number.MAX_VALUE,this._orthoTop=-Number.MAX_VALUE,this._orthoBottom=Number.MAX_VALUE;let d=Number.MAX_VALUE,h=-Number.MAX_VALUE;for(let u=0;uthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zh&&(h=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=h)}let s=this._orthoRight-this._orthoLeft,a=this._orthoTop-this._orthoBottom,o=this.shadowMinZ!==void 0?this.shadowMinZ:(r==null?void 0:r.minZ)||0,l=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r==null?void 0:r.maxZ)||1e4,c=this.getScene().getEngine().useReverseDepthBuffer;q.OrthoOffCenterLHToRef(this._orthoLeft-s*this.shadowOrthoScale,this._orthoRight+s*this.shadowOrthoScale,this._orthoBottom-a*this.shadowOrthoScale,this._orthoTop+a*this.shadowOrthoScale,c?l:o,c?o:l,e,this.getScene().getEngine().isNDCHalfZRange)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z,1,t),this):(this._uniformBuffer.updateFloat4("vLightData",this.direction.x,this.direction.y,this.direction.z,1,t),this)}transferToNodeMaterialEffect(e,t){return this.computeTransformedInformation()?(e.setFloat3(t,this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z),this):(e.setFloat3(t,this.direction.x,this.direction.y,this.direction.z),this)}getDepthMinZ(e){let t=this._scene.getEngine();return!t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}getDepthMaxZ(e){let t=this._scene.getEngine();return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}prepareLightSpecificDefines(e,t){e["DIRLIGHT"+t]=!0}};P([F()],Ws.prototype,"shadowFrustumSize",null);P([F()],Ws.prototype,"shadowOrthoScale",null);P([F()],Ws.prototype,"autoUpdateExtends",void 0);P([F()],Ws.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],Ws.prototype,"_orthoLeft",void 0);P([F("orthoRight")],Ws.prototype,"_orthoRight",void 0);P([F("orthoTop")],Ws.prototype,"_orthoTop",void 0);P([F("orthoBottom")],Ws.prototype,"_orthoBottom",void 0);Ft("BABYLON.DirectionalLight",Ws)});var Vf,nH=I(()=>{Gt();Vt();ke();la();Uf();Xx();Yi();_i.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new Vf(n,b.Zero(),e));Vf=class extends Va{get shadowAngle(){return this._shadowAngle}set shadowAngle(e){this._shadowAngle=e,this.forceProjectionMatrixCompute()}get direction(){return this._direction}set direction(e){let t=this.needCube();if(this._direction=e,this.needCube()!==t&&this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.recreateShadowMap()}}constructor(e,t,i,r){super(e,i,r),this._shadowAngle=Math.PI/2,this.position=t}getClassName(){return"PointLight"}getTypeID(){return zt.LIGHTTYPEID_POINTLIGHT}needCube(){return!this.direction}getShadowDirection(e){if(this.direction)return super.getShadowDirection(e);switch(e){case 0:return new b(1,0,0);case 1:return new b(-1,0,0);case 2:return new b(0,-1,0);case 3:return new b(0,1,0);case 4:return new b(0,0,1);case 5:return new b(0,0,-1)}return b.Zero()}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera,s=this.getDepthMinZ(r),a=this.getDepthMaxZ(r),o=this.getScene().getEngine().useReverseDepthBuffer;q.PerspectiveFovLHToRef(this.shadowAngle,1,o?a:s,o?s:a,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,o)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z,0,t):this._uniformBuffer.updateFloat4("vLightData",this.position.x-i.x,this.position.y-i.y,this.position.z-i.z,0,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,0,0,t),this}transferToNodeMaterialEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?e.setFloat3(t,this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z):e.setFloat3(t,this.position.x-i.x,this.position.y-i.y,this.position.z-i.z),this}prepareLightSpecificDefines(e,t){e["POINTLIGHT"+t]=!0}};P([F()],Vf.prototype,"shadowAngle",null);Ft("BABYLON.PointLight",Vf)});var Wr,ED=I(()=>{Gt();Vt();ke();la();Uf();Xx();Gr();Yi();_i.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Wr(n,b.Zero(),b.Zero(),0,0,e));Wr=class n extends Va{get iesProfileTexture(){return this._iesProfileTexture}set iesProfileTexture(e){this._iesProfileTexture!==e&&(this._iesProfileTexture=e,this._iesProfileTexture&&n._IsTexture(this._iesProfileTexture)&&this._iesProfileTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()}))}get angle(){return this._angle}set angle(e){this._angle=e,this._cosHalfAngle=Math.cos(e*.5),this._projectionTextureProjectionLightDirty=!0,this.forceProjectionMatrixCompute(),this._computeAngleValues()}get innerAngle(){return this._innerAngle}set innerAngle(e){this._innerAngle=e,this._computeAngleValues()}get shadowAngleScale(){return this._shadowAngleScale}set shadowAngleScale(e){this._shadowAngleScale=e,this.forceProjectionMatrixCompute()}get projectionTextureMatrix(){return this._projectionTextureMatrix}get projectionTextureLightNear(){return this._projectionTextureLightNear}set projectionTextureLightNear(e){this._projectionTextureLightNear=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureLightFar(){return this._projectionTextureLightFar}set projectionTextureLightFar(e){this._projectionTextureLightFar=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureUpDirection(){return this._projectionTextureUpDirection}set projectionTextureUpDirection(e){this._projectionTextureUpDirection=e,this._projectionTextureProjectionLightDirty=!0}get projectionTexture(){return this._projectionTexture}set projectionTexture(e){this._projectionTexture!==e&&(this._projectionTexture=e,this._projectionTextureDirty=!0,this._projectionTexture&&!this._projectionTexture.isReady()&&(n._IsProceduralTexture(this._projectionTexture)?this._projectionTexture.getEffect().executeWhenCompiled(()=>{this._markMeshesAsLightDirty()}):n._IsTexture(this._projectionTexture)&&this._projectionTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()})))}static _IsProceduralTexture(e){return e.onGeneratedObservable!==void 0}static _IsTexture(e){return e.onLoadObservable!==void 0}get projectionTextureProjectionLightMatrix(){return this._projectionTextureProjectionLightMatrix}set projectionTextureProjectionLightMatrix(e){this._projectionTextureProjectionLightMatrix=e,this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0}constructor(e,t,i,r,s,a,o){super(e,a,o),this._innerAngle=0,this._iesProfileTexture=null,this._projectionTextureMatrix=q.Zero(),this._projectionTextureLightNear=1e-6,this._projectionTextureLightFar=1e3,this._projectionTextureUpDirection=b.Up(),this._projectionTextureViewLightDirty=!0,this._projectionTextureProjectionLightDirty=!0,this._projectionTextureDirty=!0,this._projectionTextureViewTargetVector=b.Zero(),this._projectionTextureViewLightMatrix=q.Zero(),this._projectionTextureProjectionLightMatrix=q.Zero(),this._projectionTextureScalingMatrix=q.FromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1),this.position=t,this.direction=i,this.angle=r,this.exponent=s}getClassName(){return"SpotLight"}getTypeID(){return zt.LIGHTTYPEID_SPOTLIGHT}_setDirection(e){super._setDirection(e),this._projectionTextureViewLightDirty=!0}_setPosition(e){super._setPosition(e),this._projectionTextureViewLightDirty=!0}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(!r)return;this._shadowAngleScale=this._shadowAngleScale||1;let s=this._shadowAngleScale*this._angle,a=this.shadowMinZ!==void 0?this.shadowMinZ:r.minZ,o=this.shadowMaxZ!==void 0?this.shadowMaxZ:r.maxZ,l=this.getScene().getEngine().useReverseDepthBuffer;q.PerspectiveFovLHToRef(s,1,l?o:a,l?a:o,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,l)}_computeProjectionTextureViewLightMatrix(){this._projectionTextureViewLightDirty=!1,this._projectionTextureDirty=!0,this.getAbsolutePosition().addToRef(this.getShadowDirection(),this._projectionTextureViewTargetVector),q.LookAtLHToRef(this.getAbsolutePosition(),this._projectionTextureViewTargetVector,this._projectionTextureUpDirection,this._projectionTextureViewLightMatrix)}_computeProjectionTextureProjectionLightMatrix(){this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0;let e=this.projectionTextureLightFar,t=this.projectionTextureLightNear,i=e/(e-t),r=-i*t,s=1/Math.tan(this._angle/2);q.FromValuesToRef(s/1,0,0,0,0,s,0,0,0,0,i,1,0,0,r,0,this._projectionTextureProjectionLightMatrix)}_computeProjectionTextureMatrix(){if(this._projectionTextureDirty=!1,this._projectionTextureViewLightMatrix.multiplyToRef(this._projectionTextureProjectionLightMatrix,this._projectionTextureMatrix),this._projectionTexture instanceof ge){let e=this._projectionTexture.uScale/2,t=this._projectionTexture.vScale/2;q.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,.5,0,.5,.5,.5,1,this._projectionTextureScalingMatrix)}this._projectionTextureMatrix.multiplyToRef(this._projectionTextureScalingMatrix,this._projectionTextureMatrix)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightDirection",3),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}_computeAngleValues(){this._lightAngleScale=1/Math.max(.001,Math.cos(this._innerAngle*.5)-this._cosHalfAngle),this._lightAngleOffset=-this._cosHalfAngle*this._lightAngleScale}transferTexturesToEffect(e,t){return this.projectionTexture&&this.projectionTexture.isReady()&&(this._projectionTextureViewLightDirty&&this._computeProjectionTextureViewLightMatrix(),this._projectionTextureProjectionLightDirty&&this._computeProjectionTextureProjectionLightMatrix(),this._projectionTextureDirty&&this._computeProjectionTextureMatrix(),e.setMatrix("textureProjectionMatrix"+t,this._projectionTextureMatrix),e.setTexture("projectionLightTexture"+t,this.projectionTexture)),this._iesProfileTexture&&this._iesProfileTexture.isReady()&&e.setTexture("iesLightTexture"+t,this._iesProfileTexture),this}transferToEffect(e,t){let i,r=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-r.x,this.transformedPosition.y-r.y,this.transformedPosition.z-r.z,this.exponent,t),i=b.Normalize(this.transformedDirection)):(this._uniformBuffer.updateFloat4("vLightData",this.position.x-r.x,this.position.y-r.y,this.position.z-r.z,this.exponent,t),i=b.Normalize(this.direction)),this._uniformBuffer.updateFloat4("vLightDirection",i.x,i.y,i.z,this._cosHalfAngle,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,this._lightAngleScale,this._lightAngleOffset,t),this}transferToNodeMaterialEffect(e,t){let i;return this.computeTransformedInformation()?i=b.Normalize(this.transformedDirection):i=b.Normalize(this.direction),this.getScene().useRightHandedSystem?e.setFloat3(t,-i.x,-i.y,-i.z):e.setFloat3(t,i.x,i.y,i.z),this}dispose(){super.dispose(),this._projectionTexture&&this._projectionTexture.dispose(),this._iesProfileTexture&&(this._iesProfileTexture.dispose(),this._iesProfileTexture=null)}getDepthMinZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMinZ!==void 0?this.shadowMinZ:(r=e==null?void 0:e.minZ)!=null?r:0;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?i:this._scene.getEngine().isNDCHalfZRange?0:i}getDepthMaxZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r=e==null?void 0:e.maxZ)!=null?r:1e4;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:i}areLightTexturesReady(){return!(this._projectionTexture&&!this._projectionTexture.isReadyOrNotBlocking()||this._iesProfileTexture&&!this._iesProfileTexture.isReadyOrNotBlocking())}prepareLightSpecificDefines(e,t){e["SPOTLIGHT"+t]=!0,e["PROJECTEDLIGHTTEXTURE"+t]=!!(this.projectionTexture&&this.projectionTexture.isReady()),e["IESLIGHTTEXTURE"+t]=!!(this._iesProfileTexture&&this._iesProfileTexture.isReady())}};P([F()],Wr.prototype,"angle",null);P([F()],Wr.prototype,"innerAngle",null);P([F()],Wr.prototype,"shadowAngleScale",null);P([F()],Wr.prototype,"exponent",void 0);P([F()],Wr.prototype,"projectionTextureLightNear",null);P([F()],Wr.prototype,"projectionTextureLightFar",null);P([F()],Wr.prototype,"projectionTextureUpDirection",null);P([Ut("projectedLightTexture")],Wr.prototype,"_projectionTexture",void 0);Ft("BABYLON.SpotLight",Wr)});function sH(n){let e=n.pathArray,t=n.closeArray||!1,i=n.closePath||!1,r=n.invertUV||!1,s=Math.floor(e[0].length/2),a=n.offset||s;a=a>s?s:Math.floor(a);let o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],h=[],u=[],m=[],_=[],p=[],g=[],v,x=[],S=[],E,T,R;if(e.length<2){let Re=[],Ye=[];for(T=0;T0&&(G=L[R].subtract(L[R-1]).length(),O=G+p[E],m[E].push(O),p[E]=O),R++;i&&(R--,f.push(L[0].x,L[0].y,L[0].z),G=L[R].subtract(L[0]).length(),O=G+p[E],m[E].push(O),p[E]=O),x[E]=w+y,S[E]=M,M+=w+y}let N,B,V,J;for(T=0;T{let m=i[0].length,_=o,p=0,g=_._originalBuilderSideOrientation===Z.DOUBLESIDE?2:1;for(let v=1;v<=g;++v)for(let x=0;x{ke();Ci();Wi();pr();nn();ye.CreateRibbon=sH;Z.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Do(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function aH(n){let e=[],t=[],i=[],r=[],s=n.radius||.5,a=n.tessellation||64,o=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,l=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE;e.push(0,0,0),r.push(.5,.5);let c=Math.PI*2*o,f=o===1?c/a:c/(a-1),d=0;for(let m=0;m{Ci();pr();nn();ye.CreateDisc=aH;Z.CreateDisc=(n,e,t,i=null,r,s)=>SD(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var rp,lH=I(()=>{ke();Wi();Ci();Z._GroundMeshParser=(n,e)=>rp.Parse(n,e);rp=class n extends Z{constructor(e,t){super(e,t),this.generateOctree=!1}getClassName(){return"GroundMesh"}get subdivisions(){return Math.min(this._subdivisionsX,this._subdivisionsY)}get subdivisionsX(){return this._subdivisionsX}get subdivisionsY(){return this._subdivisionsY}optimize(e,t=32){this._subdivisionsX=e,this._subdivisionsY=e,this.subdivide(e);let i=this;i.createOrUpdateSubmeshesOctree&&i.createOrUpdateSubmeshesOctree(t)}getHeightAtCoordinates(e,t){let i=this.getWorldMatrix(),r=$.Matrix[5];i.invertToRef(r);let s=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,r,s),e=s.x,t=s.z,e=this._maxX||t<=this._minZ||t>this._maxZ)return this.position.y;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let a=this._getFacetAt(e,t),o=-(a.x*e+a.z*t+a.w)/a.y;return b.TransformCoordinatesFromFloatsToRef(0,o,0,i,s),s.y}getNormalAtCoordinates(e,t){let i=new b(0,1,0);return this.getNormalAtCoordinatesToRef(e,t,i),i}getNormalAtCoordinatesToRef(e,t,i){let r=this.getWorldMatrix(),s=$.Matrix[5];r.invertToRef(s);let a=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,s,a),e=a.x,t=a.z,ethis._maxX||tthis._maxZ)return this;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let o=this._getFacetAt(e,t);return b.TransformNormalFromFloatsToRef(o.x,o.y,o.z,r,i),this}updateCoordinateHeights(){return(!this._heightQuads||this._heightQuads.length==0)&&this._initHeightQuads(),this._computeHeightQuads(),this}_getFacetAt(e,t){let i=Math.floor((e+this._maxX)*this._subdivisionsX/this._width),r=Math.floor(-(t+this._maxZ)*this._subdivisionsY/this._height+this._subdivisionsY),s=this._heightQuads[r*this._subdivisionsX+i],a;return tn.maxHeight){c=!0;let d=n.maxHeight;n.maxHeight=n.minHeight,n.minHeight=d}for(s=0;s<=n.subdivisions;s++)for(a=0;a<=n.subdivisions;a++){let d=new b(a*n.width/n.subdivisions-n.width/2,0,(n.subdivisions-s)*n.height/n.subdivisions-n.height/2),h=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,u=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(h+u*n.bufferWidth)*4,_=n.buffer[m]/255,p=n.buffer[m+1]/255,g=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(_=1-_,p=1-p,g=1-g);let x=_*o.r+p*o.g+g*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*x:d.y=n.minHeight-Nt,n.heightBuffer&&(n.heightBuffer[s*(n.subdivisions+1)+a]=d.y),t.push(d.x,d.y,d.z),i.push(0,0,0),r.push(a/n.subdivisions,1-s/n.subdivisions)}for(s=0;s=n.minHeight,p=t[h*3+1]>=n.minHeight,g=t[u*3+1]>=n.minHeight;_&&p&&g&&(e.push(d),e.push(h),e.push(u)),t[m*3+1]>=n.minHeight&&_&&g&&(e.push(m),e.push(d),e.push(u))}ye.ComputeNormals(t,e,i);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function AD(n,e={},t){let i=new rp(n,t);return i._setReady(!1),i._subdivisionsX=e.subdivisionsX||e.subdivisions||1,i._subdivisionsY=e.subdivisionsY||e.subdivisions||1,i._width=e.width||1,i._height=e.height||1,i._maxX=i._width/2,i._maxZ=i._height/2,i._minX=-i._maxX,i._minZ=-i._maxZ,TD(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function xD(n,e,t=null){let i=new Z(n,t);return cH(e).applyToMesh(i,e.updatable),i}function RD(n,e,t={},i=null){let r=t.width||10,s=t.height||10,a=t.subdivisions||1,o=t.minHeight||0,l=t.maxHeight||1,c=t.colorFilter||new pe(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,h=t.onReady;i=i||Oe.LastCreatedScene;let u=new rp(n,i);u._subdivisionsX=a,u._subdivisionsY=a,u._width=r,u._height=s,u._maxX=u._width/2,u._maxZ=u._height/2,u._minX=-u._maxX,u._minZ=-u._maxZ,u._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let _=(p,g,v)=>{fH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:g,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(u,d),h&&h(u,m),u._setReady(!0)};if(typeof e=="string"){i.addPendingData(u);let p=v=>{let x=v.width,S=v.height;if(i.isDisposed){i.removePendingData(u);return}let E=i==null?void 0:i.getEngine().resizeImageBitmap(v,x,S);_(E,x,S),i.removePendingData(u)},g=(v,x)=>{i.removePendingData(u),t.onError&&t.onError(v,x)};_e.LoadImage(e,p,g,i.offlineProvider)}else _(e.data,e.width,e.height);return u}var bD=I(()=>{ke();Ht();Ci();pr();lH();yi();Ni();Un();nn();ye.CreateGround=TD;ye.CreateTiledGround=cH;ye.CreateGroundFromHeightMap=fH;Z.CreateGround=(n,e,t,i,r,s)=>AD(n,{width:e,height:t,subdivisions:i,updatable:s},r);Z.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>xD(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);Z.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>RD(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function Yx(n){let t=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23],i=[0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0],r=[],s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.wrap||!1,c=n.topBaseAt===void 0?1:n.topBaseAt,f=n.bottomBaseAt===void 0?0:n.bottomBaseAt;c=(c+4)%4,f=(f+4)%4;let d=[2,0,3,1],h=[2,0,1,3],u=d[c],m=h[f],_=[1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1];if(l){t=[2,3,0,2,0,1,4,5,6,4,6,7,9,10,11,9,11,8,12,14,15,12,13,14],_=[-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1];let R=[[1,1,1],[-1,1,1],[-1,1,-1],[1,1,-1]],M=[[-1,-1,1],[1,-1,1],[1,-1,-1],[-1,-1,-1]],y=[17,18,19,16],C=[22,23,20,21];for(;u>0;)R.unshift(R.pop()),y.unshift(y.pop()),u--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),_=_.concat(R).concat(M),t.push(y[0],y[2],y[3],y[0],y[1],y[2]),t.push(C[0],C[2],C[3],C[0],C[1],C[2])}let p=[s/2,a/2,o/2],g=_.reduce((R,M,y)=>R.concat(M*p[y%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,x=n.faceUV||new Array(6),S=n.faceColors,E=[];for(let R=0;R<6;R++)x[R]===void 0&&(x[R]=new Ii(0,0,1,1)),S&&S[R]===void 0&&(S[R]=new lt(1,1,1,1));for(let R=0;R<6;R++)if(r.push(x[R].z,It?1-x[R].w:x[R].w),r.push(x[R].x,It?1-x[R].w:x[R].w),r.push(x[R].x,It?1-x[R].y:x[R].y),r.push(x[R].z,It?1-x[R].y:x[R].y),S)for(let M=0;M<4;M++)E.push(S[R].r,S[R].g,S[R].b,S[R].a);ye._ComputeSides(v,g,t,i,r,n.frontUVs,n.backUVs);let T=new ye;if(T.indices=t,T.positions=g,T.normals=i,T.uvs=r,S){let R=v===ye.DOUBLESIDE?E.concat(E):E;T.colors=R}return T}function MD(n,e={},t=null){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,Yx(e).applyToMesh(i,e.updatable),i}var ID=I(()=>{ke();Ht();Ci();pr();nn();bD();ye.CreateBox=Yx;Z.CreateBox=(n,e,t=null,i,r)=>MD(n,{size:e,sideOrientation:r,updatable:i},t)});function np(n){let e=n.pattern||Z.NO_FLIP,t=n.tileWidth||n.tileSize||1,i=n.tileHeight||n.tileSize||1,r=n.alignHorizontal||0,s=n.alignVertical||0,a=n.width||n.size||1,o=Math.floor(a/t),l=a-o*t,c=n.height||n.size||1,f=Math.floor(c/i),d=c-f*i,h=t*o/2,u=i*f/2,m=0,_=0,p=0,g=0,v=0,x=0;if(l>0||d>0){switch(p=-h,g=-u,v=h,x=u,r){case Z.CENTER:l/=2,p-=l,v+=l;break;case Z.LEFT:v+=l,m=-l/2;break;case Z.RIGHT:p-=l,m=l/2;break}switch(s){case Z.CENTER:d/=2,g-=d,x+=d;break;case Z.BOTTOM:x+=d,_=-d/2;break;case Z.TOP:g-=d,_=d/2;break}}let S=[],E=[],T=[];T[0]=[0,0,1,0,1,1,0,1],T[1]=[0,0,1,0,1,1,0,1],(e===Z.ROTATE_TILE||e===Z.ROTATE_ROW)&&(T[1]=[1,1,0,1,0,0,1,0]),(e===Z.FLIP_TILE||e===Z.FLIP_ROW)&&(T[1]=[1,0,0,0,0,1,1,1]),(e===Z.FLIP_N_ROTATE_TILE||e===Z.FLIP_N_ROTATE_ROW)&&(T[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],y=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===Z.CENTER||s===Z.TOP),N=d>0&&(s===Z.CENTER||s===Z.BOTTOM),B=l>0&&(r===Z.CENTER||r===Z.RIGHT),V=l>0&&(r===Z.CENTER||r===Z.LEFT),J,Q,te,X,Y;if(O&&B&&(S.push(p+m,g+_,0),S.push(-h+m,g+_,0),S.push(-h+m,g+d+_,0),S.push(p+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=1-l/t,te=1-d/i,X=1,Y=1,J=[Q,te,X,te,X,Y,Q,Y],e===Z.ROTATE_ROW&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),e===Z.FLIP_ROW&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),e===Z.FLIP_N_ROTATE_ROW&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(S.push(h+m,g+_,0),S.push(v+m,g+_,0),S.push(v+m,g+d+_,0),S.push(h+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=0,te=1-d/i,X=l/t,Y=1,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW||e===Z.ROTATE_TILE&&o%2===0)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW||e===Z.FLIP_TILE&&o%2===0)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW||e===Z.FLIP_N_ROTATE_TILE&&o%2===0)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(S.push(p+m,u+_,0),S.push(-h+m,u+_,0),S.push(-h+m,x+_,0),S.push(p+m,x+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=1-l/t,te=0,X=1,Y=d/i,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW&&f%2===1||e===Z.ROTATE_TILE&&f%1===0)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW&&f%2===1||e===Z.FLIP_TILE&&f%2===0)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW&&f%2===1||e===Z.FLIP_N_ROTATE_TILE&&f%2===0)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(S.push(h+m,u+_,0),S.push(v+m,u+_,0),S.push(v+m,x+_,0),S.push(h+m,x+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,Q=0,te=0,X=l/t,Y=d/i,J=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_ROW&&f%2===1||e===Z.ROTATE_TILE&&(f+o)%2===1)&&(J=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_ROW&&f%2===1||e===Z.FLIP_TILE&&(f+o)%2===1)&&(J=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_ROW&&f%2===1||e===Z.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(J=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]),R=R.concat(J),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let ve=[];Q=0,te=1-d/i,X=1,Y=1,ve[0]=[Q,te,X,te,X,Y,Q,Y],ve[1]=[Q,te,X,te,X,Y,Q,Y],(e===Z.ROTATE_TILE||e===Z.ROTATE_ROW)&&(ve[1]=[1-Q,1-te,1-X,1-te,1-X,1-Y,1-Q,1-Y]),(e===Z.FLIP_TILE||e===Z.FLIP_ROW)&&(ve[1]=[1-Q,te,1-X,te,1-X,Y,1-Q,Y]),(e===Z.FLIP_N_ROTATE_TILE||e===Z.FLIP_N_ROTATE_ROW)&&(ve[1]=[Q,1-te,X,1-te,X,1-Y,Q,1-Y]);for(let Ee=0;Ee{Ci();pr();ye.CreateTiledPlane=np});function hH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||Z.NO_FLIP,s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.tileWidth||n.tileSize||1,c=n.tileHeight||n.tileSize||1,f=n.alignHorizontal||0,d=n.alignVertical||0,h=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Ii(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new lt(1,1,1,1));let u=s/2,m=a/2,_=o/2,p=[];for(let O=0;O<2;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});for(let O=2;O<4;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});let g=d;d===Z.BOTTOM?g=Z.TOP:d===Z.TOP&&(g=Z.BOTTOM);for(let O=4;O<6;O++)p[O]=np({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:g,alignHorizontal:f,sideOrientation:h});let v=[],x=[],S=[],E=[],T=[],R=[],M=[],y=[],C,L=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+L)),L+=R[O].length,i){let B=i[O];for(let V=0;V{ke();Ht();Ci();pr();yD();nn();Kx=1,CD=-1;ye.CreateTiledBox=hH});function pH(n){let e=(n.segments||32)|0,t=n.diameterX||n.diameter||1,i=n.diameterY||n.diameter||1,r=n.diameterZ||n.diameter||1,s=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,a=n.slice&&n.slice<=0?1:n.slice||1,o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,h=[],u=[],m=[],_=[];for(let g=0;g<=f;g++){let v=g/f,x=v*Math.PI*a;for(let S=0;S<=d;S++){let E=S/d,T=E*Math.PI*2*s,R=q.RotationZ(-x),M=q.RotationY(T),y=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(y,M),L=C.multiply(c),w=C.divide(c).normalize();u.push(L.x,L.y,L.z),m.push(w.x,w.y,w.z),_.push(E,It?1-v:v)}if(g>0){let S=u.length/3;for(let E=S-2*(d+1);E+d+21&&(h.push(E),h.push(E+1),h.push(E+d+1)),(g{ke();Ci();pr();nn();ye.CreateSphere=pH;Z.CreateSphere=(n,e,t,i,r,s)=>PD(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function gH(n){let e=n.height||2,t=n.diameterTop===0?0:n.diameterTop||n.diameter||1,i=n.diameterBottom===0?0:n.diameterBottom||n.diameter||1;t=t||1e-5,i=i||1e-5;let r=(n.tessellation||24)|0,s=(n.subdivisions||1)|0,a=!!n.hasRings,o=!!n.enclose,l=n.cap===0?0:n.cap||Z.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,d=n.faceUV||new Array(3),h=n.faceColors,u=c!==1&&o?2:0,m=a?s:1,_=2+(1+u)*m,p;for(p=0;p<_;p++)h&&h[p]===void 0&&(h[p]=new lt(1,1,1,1));for(p=0;p<_;p++)d&&d[p]===void 0&&(d[p]=new Ii(0,0,1,1));let g=[],v=[],x=[],S=[],E=[],T=Math.PI*2*c/r,R,M,y,C=(i-t)/2/e,L=b.Zero(),w=b.Zero(),G=b.Zero(),O=b.Zero(),N=b.Zero(),B=Ns.Y,V,J,Q,te,X=1,Y=0,ve;for(V=0;V<=s;V++)for(M=V/s,y=(M*(t-i)+i)/2,te=a&&V!==0&&V!==s?2:1,Q=0;Q{let ne=me?t/2:i/2;if(ne===0)return;let fe,Pe,de,Re=me?d[_-1]:d[0],Ye=null;h&&(Ye=me?h[_-1]:h[0]);let Et=v.length/3,Ke=me?e/2:-e/2,Ze=new b(0,Ke,0);v.push(Ze.x,Ze.y,Ze.z),x.push(0,me?1:-1,0);let Jt=Re.y+(Re.w-Re.y)*.5;S.push(Re.x+(Re.z-Re.x)*.5,It?1-Jt:Jt),Ye&&E.push(Ye.r,Ye.g,Ye.b,Ye.a);let Lt=new Fe(.5,.5);for(de=0;de<=r;de++){fe=Math.PI*2*de*c/r;let xi=Math.cos(-fe),oe=Math.sin(-fe);Pe=new b(xi*ne,Ke,oe*ne);let Gi=new Fe(xi*Lt.x+.5,oe*Lt.y+.5);v.push(Pe.x,Pe.y,Pe.z),x.push(0,me?1:-1,0);let ti=Re.y+(Re.w-Re.y)*Gi.y;S.push(Re.x+(Re.z-Re.x)*Gi.x,It?1-ti:ti),Ye&&E.push(Ye.r,Ye.g,Ye.b,Ye.a)}for(de=0;de{ke();Ht();Ci();pr();Bs();lm();nn();ye.CreateCylinder=gH;Z.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ei))&&(a!==void 0&&(l=o||Z.DEFAULTSIDE,o=a),a=s,s=1),DD(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function EH(n){let e=[],t=[],i=[],r=[],s=n.diameter||1,a=n.thickness||.5,o=(n.tessellation||16)|0,l=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let h=d/o,u=d*Math.PI*2/o-Math.PI/2,m=q.Translation(s/2,0,0).multiply(q.RotationY(u));for(let _=0;_<=o;_++){let p=1-_/o,g=_*Math.PI*2/o+Math.PI,v=Math.cos(g),x=Math.sin(g),S=new b(v,x,0),E=S.scale(a/2),T=new Fe(h,p);E=b.TransformCoordinates(E,m),S=b.TransformNormal(S,m),t.push(E.x,E.y,E.z),i.push(S.x,S.y,S.z),r.push(T.x,It?1-T.y:T.y);let R=(d+1)%c,M=(_+1)%c;e.push(d*c+_),e.push(d*c+M),e.push(R*c+_),e.push(d*c+M),e.push(R*c+M),e.push(R*c+_)}}ye._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function LD(n,e={},t){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,EH(e).applyToMesh(i,e.updatable),i}var SH=I(()=>{ke();Ci();pr();nn();ye.CreateTorus=EH;Z.CreateTorus=(n,e,t,i,r,s,a)=>LD(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function TH(n){let e=[],t=[],i=[],r=[],s=n.radius||2,a=n.tube||.5,o=n.radialSegments||32,l=n.tubularSegments||32,c=n.p||2,f=n.q||3,d=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,h=p=>{let g=Math.cos(p),v=Math.sin(p),x=f/c*p,S=Math.cos(x),E=s*(2+S)*.5*g,T=s*(2+S)*v*.5,R=s*Math.sin(x)*.5;return new b(E,T,R)},u,m;for(u=0;u<=o;u++){let g=u%o/o*2*c*Math.PI,v=h(g),x=h(g+.01),S=x.subtract(v),E=x.add(v),T=b.Cross(S,E);for(E=b.Cross(T,S),T.normalize(),E.normalize(),m=0;m{ke();Ci();pr();nn();ye.CreateTorusKnot=TH;Z.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>OD(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var hc,ND=I(()=>{ke();Pt();Nm();Ci();Eg();yf();Wi();yi();Yi();Z._instancedMeshFactory=(n,e)=>{let t=new hc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};hc=class extends Ar{constructor(e,t){super(e,t.getScene()),this._indexInSourceMeshInstanceArray=-1,this._distanceToCamera=0,t.addInstance(this),this._sourceMesh=t,this._unIndexed=t._unIndexed,this.position.copyFrom(t.position),this.rotation.copyFrom(t.rotation),this.scaling.copyFrom(t.scaling),t.rotationQuaternion&&(this.rotationQuaternion=t.rotationQuaternion.clone()),this.animations=t.animations.slice();for(let i of t.getAnimationRanges())i!=null&&this.createAnimationRange(i.name,i.from,i.to);if(this.infiniteDistance=t.infiniteDistance,this.setPivotMatrix(t.getPivotMatrix()),!t.skeleton&&!t.morphTargetManager&&t.hasBoundingInfo){let i=t.getBoundingInfo();this.buildBoundingInfo(i.minimum,i.maximum)}else this.refreshBoundingInfo(!0,!0);this._syncSubMeshes()}getClassName(){return"InstancedMesh"}get lightSources(){return this._sourceMesh._lightSources}_resyncLightSources(){}_resyncLightSource(){}_removeLightSource(){}get receiveShadows(){return this._sourceMesh.receiveShadows}set receiveShadows(e){var t;((t=this._sourceMesh)==null?void 0:t.receiveShadows)!==e&&_e.Warn("Setting receiveShadows on an instanced mesh has no effect")}get material(){return this._sourceMesh.material}set material(e){var t;((t=this._sourceMesh)==null?void 0:t.material)!==e&&_e.Warn("Setting material on an instanced mesh has no effect")}get visibility(){return this._sourceMesh.visibility}set visibility(e){var t;((t=this._sourceMesh)==null?void 0:t.visibility)!==e&&_e.Warn("Setting visibility on an instanced mesh has no effect")}get skeleton(){return this._sourceMesh.skeleton}set skeleton(e){var t;((t=this._sourceMesh)==null?void 0:t.skeleton)!==e&&_e.Warn("Setting skeleton on an instanced mesh has no effect")}get renderingGroupId(){return this._sourceMesh.renderingGroupId}set renderingGroupId(e){!this._sourceMesh||e===this._sourceMesh.renderingGroupId||ee.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene")}getTotalVertices(){return this._sourceMesh?this._sourceMesh.getTotalVertices():0}getTotalIndices(){return this._sourceMesh.getTotalIndices()}get sourceMesh(){return this._sourceMesh}get geometry(){return this._sourceMesh._geometry}createInstance(e){return this._sourceMesh.createInstance(e)}isReady(e=!1){return this._sourceMesh.isReady(e,!0)}getVerticesData(e,t,i){return this._sourceMesh.getVerticesData(e,t,i)}copyVerticesData(e,t){this._sourceMesh.copyVerticesData(e,t)}getVertexBuffer(e,t){return this._sourceMesh.getVertexBuffer(e,t)}setVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.setVerticesData(e,t,i,r),this.sourceMesh}updateVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.updateVerticesData(e,t,i,r),this.sourceMesh}setIndices(e,t=null){return this.sourceMesh&&this.sourceMesh.setIndices(e,t),this.sourceMesh}isVerticesDataPresent(e){return this._sourceMesh.isVerticesDataPresent(e)}getIndices(){return this._sourceMesh.getIndices()}get _positions(){return this._sourceMesh._positions}refreshBoundingInfo(e=!1,t=!1){if(this.hasBoundingInfo&&this.getBoundingInfo().isLocked)return this;let i;typeof e=="object"?i=e:i={applySkeleton:e,applyMorph:t};let r=this._sourceMesh.geometry?this._sourceMesh.geometry.boundingBias:null;return this._refreshBoundingInfo(this._sourceMesh._getData(i,null,D.PositionKind),r),this}_preActivate(){return this._currentLOD&&this._currentLOD._preActivate(),this}_activate(e,t){if(super._activate(e,t),this._sourceMesh.subMeshes||ee.Warn("Instances should only be created for meshes with geometry."),this._currentLOD){if(this._currentLOD._getWorldMatrixDeterminant()>=0!=this._getWorldMatrixDeterminant()>=0)return this._internalAbstractMeshDataInfo._actAsRegularMesh=!0,!0;if(this._internalAbstractMeshDataInfo._actAsRegularMesh=!1,this._currentLOD._registerInstanceForRenderId(this,e),t){if(!this._currentLOD._internalAbstractMeshDataInfo._isActiveIntermediate)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstancesIntermediate=!0,!0}else if(!this._currentLOD._internalAbstractMeshDataInfo._isActive)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstances=!0,!0}return!1}_postActivate(){this._sourceMesh.edgesShareWithInstances&&this._sourceMesh._edgesRenderer&&this._sourceMesh._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup?(this._sourceMesh._renderingGroup._edgesRenderers.pushNoDuplicate(this._sourceMesh._edgesRenderer),this._sourceMesh._edgesRenderer.customInstances.push(this.getWorldMatrix())):this._edgesRenderer&&this._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup&&this._sourceMesh._renderingGroup._edgesRenderers.push(this._edgesRenderer)}getWorldMatrix(){if(this._currentLOD&&this._currentLOD!==this._sourceMesh&&this._currentLOD.billboardMode!==Yt.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new q);let e=this._currentLOD._masterMesh;return this._currentLOD._masterMesh=this,$.Vector3[7].copyFrom(this._currentLOD.position),this._currentLOD.position.set(0,0,0),this._billboardWorldMatrix.copyFrom(this._currentLOD.computeWorldMatrix(!0)),this._currentLOD.position.copyFrom($.Vector3[7]),this._currentLOD._masterMesh=e,this._billboardWorldMatrix}return super.getWorldMatrix()}get isAnInstance(){return!0}getLOD(e){if(!e)return this;let t=this.sourceMesh.getLODLevels();if(!t||t.length===0)this._currentLOD=this.sourceMesh;else{let i=this.getBoundingInfo();this._currentLOD=this.sourceMesh.getLOD(e,i.boundingSphere)}return this._currentLOD}_preActivateForIntermediateRendering(e){return this.sourceMesh._preActivateForIntermediateRendering(e)}_syncSubMeshes(){if(this.releaseSubMeshes(),this._sourceMesh.subMeshes)for(let e=0;e{qn=class{constructor(){this._defines={},this._currentRank=32,this._maxRank=-1,this._mesh=null}unBindMesh(){this._mesh=null}addFallback(e,t){this._defines[e]||(ethis._maxRank&&(this._maxRank=e),this._defines[e]=new Array),this._defines[e].push(t)}addCPUSkinningFallback(e,t){this._mesh=t,ethis._maxRank&&(this._maxRank=e)}get hasMoreFallbacks(){return this._currentRank<=this._maxRank}reduce(e,t){if(this._mesh&&this._mesh.computeBonesUsingShaders&&this._mesh.numBoneInfluencers>0){this._mesh.computeBonesUsingShaders=!1,e=e.replace("#define NUM_BONE_INFLUENCERS "+this._mesh.numBoneInfluencers,"#define NUM_BONE_INFLUENCERS 0"),t._bonesComputationForcedToCPU=!0;let i=this._mesh.getScene();for(let r=0;r0&&(s.computeBonesUsingShaders=!1);continue}if(!(!s.computeBonesUsingShaders||s.numBoneInfluencers===0)){if(s.material.getEffect()===t)s.computeBonesUsingShaders=!1;else if(s.subMeshes){for(let a of s.subMeshes)if(a.effect===t){s.computeBonesUsingShaders=!1;break}}}}}else{let i=this._defines[this._currentRank];if(i)for(let r=0;r{ke();Yn();Al=class extends Se{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new q,this._storeEffectOnSubMeshes=i}getEffect(){return this._storeEffectOnSubMeshes?this._activeEffect:super.getEffect()}isReady(e,t){return e?!this._storeEffectOnSubMeshes||!e.subMeshes||e.subMeshes.length===0?!0:this.isReadyForSubMesh(e,e.subMeshes[0],t):!1}_isReadyForSubMesh(e){let t=e.materialDefines;return!!(!this.checkReadyOnEveryCall&&e.effect&&t&&t._renderId===this.getScene().getRenderId())}bindOnlyWorldMatrix(e){this._activeEffect.setMatrix("world",e)}bindOnlyNormalMatrix(e){this._activeEffect.setMatrix("normalMatrix",e)}bind(e,t){t&&this.bindForSubMesh(e,t,t.subMeshes[0])}_afterBind(e,t=null,i){super._afterBind(e,t,i),this.getScene()._cachedEffect=t,i?i._drawWrapper._forceRebindOnNextCall=!1:this._drawWrapper._forceRebindOnNextCall=!1}_mustRebind(e,t,i,r=1){return i._drawWrapper._forceRebindOnNextCall||e.isCachedMaterialInvalid(this,t,r)}dispose(e,t,i){this._activeEffect=void 0,super.dispose(e,t,i)}}});function kf(n){let e=n.getVertexBuffers();if(!e)return null;let t=xH.get(n);if(!t)t=new Map,xH.set(n,t);else{let i=!1;for(let r in e)if(!t.has(r)){i=!0;break}if(!i)return t}for(let i in e){let r=e[i];if(r){let s=r.byteOffset,a=r.byteStride,o=r.type,l=r.normalized;t.set(i,{offset:s,stride:a,type:o,normalized:l})}}return t}function Wf(n,e){e.forEach((t,i)=>{let r=`vp_${i}_info`;n.setFloat4(r,t.offset,t.stride,t.type,t.normalized?1:0)})}var xH,Kg=I(()=>{xH=new WeakMap});var wD,Lo,FD=I(()=>{br();Bs();ke();Wi();Gr();Yi();Gf();nh();Yg();Ni();vl();Xn();Kg();wD={effect:null,subMesh:null},Lo=class n extends Al{constructor(e,t,i,r={},s=!0){super(e,t,s),this._textures={},this._internalTextures={},this._textureArrays={},this._externalTextures={},this._floats={},this._ints={},this._uints={},this._floatsArrays={},this._colors3={},this._colors3Arrays={},this._colors4={},this._colors4Arrays={},this._vectors2={},this._vectors3={},this._vectors4={},this._quaternions={},this._quaternionsArrays={},this._matrices={},this._matrixArrays={},this._matrices3x3={},this._matrices2x2={},this._vectors2Arrays={},this._vectors3Arrays={},this._vectors4Arrays={},this._uniformBuffers={},this._textureSamplers={},this._storageBuffers={},this._cachedWorldViewMatrix=new q,this._cachedWorldViewProjectionMatrix=new q,this._multiview=!1,this._vertexPullingMetadata=null,this._materialHelperNeedsPreviousMatrices=!1,this._shaderPath=i,this._options={needAlphaBlending:!1,needAlphaTesting:!1,attributes:["position","normal","uv"],uniforms:["worldViewProjection"],uniformBuffers:[],samplers:[],externalTextures:[],samplerObjects:[],storageBuffers:[],defines:[],useClipPlane:!1,...r}}get shaderPath(){return this._shaderPath}set shaderPath(e){this._shaderPath=e}get options(){return this._options}get isMultiview(){return this._multiview}getClassName(){return"ShaderMaterial"}needAlphaBlending(){return this.alpha<1||this._options.needAlphaBlending}needAlphaTesting(){return this._options.needAlphaTesting}_checkUniform(e){this._options.uniforms.indexOf(e)===-1&&this._options.uniforms.push(e)}setTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._textures[e]=t,this}setInternalTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._internalTextures[e]=t,this}removeTexture(e){delete this._textures[e]}setTextureArray(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._checkUniform(e),this._textureArrays[e]=t,this}setExternalTexture(e,t){return this._options.externalTextures.indexOf(e)===-1&&this._options.externalTextures.push(e),this._externalTextures[e]=t,this}setFloat(e,t){return this._checkUniform(e),this._floats[e]=t,this}setInt(e,t){return this._checkUniform(e),this._ints[e]=t,this}setUInt(e,t){return this._checkUniform(e),this._uints[e]=t,this}setFloats(e,t){return this._checkUniform(e),this._floatsArrays[e]=t,this}setColor3(e,t){return this._checkUniform(e),this._colors3[e]=t,this}setColor3Array(e,t){return this._checkUniform(e),this._colors3Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b),i),[]),this}setColor4(e,t){return this._checkUniform(e),this._colors4[e]=t,this}setColor4Array(e,t){return this._checkUniform(e),this._colors4Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b,r.a),i),[]),this}setVector2(e,t){return this._checkUniform(e),this._vectors2[e]=t,this}setVector3(e,t){return this._checkUniform(e),this._vectors3[e]=t,this}setVector4(e,t){return this._checkUniform(e),this._vectors4[e]=t,this}setQuaternion(e,t){return this._checkUniform(e),this._quaternions[e]=t,this}setQuaternionArray(e,t){return this._checkUniform(e),this._quaternionsArrays[e]=t.reduce((i,r)=>(r.toArray(i,i.length),i),[]),this}setMatrix(e,t){return this._checkUniform(e),this._matrices[e]=t,this}setMatrices(e,t){this._checkUniform(e);let i=new Float32Array(t.length*16);for(let r=0;rs===e||s.startsWith(i));return r>=0&&this.options.defines.splice(r,1),(typeof t!="boolean"||t)&&this.options.defines.push(i+t),this}isReadyForSubMesh(e,t,i){return this.isReady(e,i,t)}isReady(e,t,i){var T,R,M,y;let r=i&&this._storeEffectOnSubMeshes;if(this.isFrozen){let C=r?i._drawWrapper:this._drawWrapper;if(C.effect&&C._wasPreviouslyReady&&C._wasPreviouslyUsingInstances===t)return!0}let s=this.getScene(),a=s.getEngine(),o=[],l=[],c=null,f=this._shaderPath,d=this._options.uniforms,h=this._options.uniformBuffers,u=this._options.samplers;a.getCaps().multiview&&s.activeCamera&&s.activeCamera.outputRenderTarget&&s.activeCamera.outputRenderTarget.getViewCount()>1&&(this._multiview=!0,o.push("#define MULTIVIEW"),d.indexOf("viewProjection")!==-1&&d.indexOf("viewProjectionR")===-1&&d.push("viewProjectionR"));for(let C=0;C4&&(l.push(D.MatricesIndicesExtraKind),l.push(D.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new qn,c.addCPUSkinningFallback(0,e),C.isUsingTextureForMatrices?(o.push("#define BONETEXTURE"),d.indexOf("boneTextureInfo")===-1&&d.push("boneTextureInfo"),this._options.samplers.indexOf("boneSampler")===-1&&this._options.samplers.push("boneSampler")):(o.push("#define BonesPerMesh "+(C.bones.length+1)),d.indexOf("mBones")===-1&&d.push("mBones"))}else o.push("#define NUM_BONE_INFLUENCERS 0");let m=0,_=e?e.morphTargetManager:null;if(_){let C=o.indexOf("#define UV1")!==-1,L=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,G=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=El(_,o,l,e,!0,G,w,C,L,O),_.isUsingTextureForTargets&&(d.indexOf("morphTargetTextureIndices")===-1&&d.push("morphTargetTextureIndices"),this._options.samplers.indexOf("morphTargets")===-1&&this._options.samplers.push("morphTargets")),m>0&&(d=d.slice(),d.push("morphTargetInfluences"),d.push("morphTargetCount"),d.push("morphTargetTextureInfo"),d.push("morphTargetTextureIndices"))}else o.push("#define NUM_MORPH_INFLUENCERS 0");if(e){let C=e.bakedVertexAnimationManager;C&&C.isEnabled&&(o.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),d.indexOf("bakedVertexAnimationSettings")===-1&&d.push("bakedVertexAnimationSettings"),d.indexOf("bakedVertexAnimationTextureSizeInverted")===-1&&d.push("bakedVertexAnimationTextureSizeInverted"),d.indexOf("bakedVertexAnimationTime")===-1&&d.push("bakedVertexAnimationTime"),this._options.samplers.indexOf("bakedVertexAnimationTexture")===-1&&this._options.samplers.push("bakedVertexAnimationTexture"),t&&l.push("bakedVertexAnimationSettingsInstanced"))}for(let C in this._textures)if(!this._textures[C].isReady())return!1;for(let C in this._internalTextures)if(!this._internalTextures[C].isReady)return!1;e&&this.needAlphaTestingForMesh(e)&&o.push("#define ALPHATEST"),this._options.useClipPlane!==!1&&(Wn(d),gl(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ei.FOGMODE_NONE&&(o.push("#define FOG"),d.indexOf("view")===-1&&d.push("view"),d.indexOf("vFogInfos")===-1&&d.push("vFogInfos"),d.indexOf("vFogColor")===-1&&d.push("vFogColor")),this._useLogarithmicDepth&&(o.push("#define LOGARITHMICDEPTH"),d.indexOf("logarithmicDepthConstant")===-1&&d.push("logarithmicDepthConstant"));let p=i?i.getRenderingMesh():e;if(p&&this.useVertexPulling){let C=p.geometry;C&&(this._vertexPullingMetadata=kf(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,G)=>{d.push(`vp_${G}_info`)})),o.push("#define USE_VERTEX_PULLING");let L=(T=p.geometry)==null?void 0:T.getIndexBuffer();L&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),L.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),h=h.slice(),u=u.slice(),f=this.customShaderNameResolve(this.name,d,h,u,o,l));let g=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=g==null?void 0:g.effect)!=null?R:null,x=(M=g==null?void 0:g.defines)!=null?M:null,S=o.join(` +`),E=v;return x!==S&&(E=a.createEffect(f,{attributes:l,uniformsNames:d,uniformBuffersNames:h,samplers:u,defines:S,fallbacks:c,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousMorphTargets:m},shaderLanguage:this._options.shaderLanguage,extraInitializationsAsync:this._options.extraInitializationsAsync},a),r?i.setEffect(E,S,this._materialContext):g&&g.setEffect(E,S),this._onEffectCreatedObservable&&(wD.effect=E,wD.subMesh=(y=i!=null?i:e==null?void 0:e.subMeshes[0])!=null?y:null,this._onEffectCreatedObservable.notifyObservers(wD))),g._wasPreviouslyUsingInstances=!!t,E!=null&&E.isReady()?(v!==E&&s.resetCachedMaterial(),g._wasPreviouslyReady=!0,!0):!1}bindOnlyWorldMatrix(e,t){let i=t!=null?t:this.getEffect();if(!i)return;let r=this._options.uniforms;r.indexOf("world")!==-1&&i.setMatrix("world",e);let s=this.getScene();r.indexOf("worldView")!==-1&&(e.multiplyToRef(s.getViewMatrix(),this._cachedWorldViewMatrix),i.setMatrix("worldView",this._cachedWorldViewMatrix)),r.indexOf("worldViewProjection")!==-1&&(e.multiplyToRef(s.getTransformMatrix(),this._cachedWorldViewProjectionMatrix),i.setMatrix("worldViewProjection",this._cachedWorldViewProjectionMatrix)),r.indexOf("view")!==-1&&i.setMatrix("view",s.getViewMatrix())}bindForSubMesh(e,t,i){var r;this.bind(e,t,(r=i._drawWrapperOverride)==null?void 0:r.effect,i)}bind(e,t,i,r){var d;let s=r&&this._storeEffectOnSubMeshes,a=i!=null?i:s?r.effect:this.getEffect();if(!a)return;let o=this.getScene();this._activeEffect=a,this.bindOnlyWorldMatrix(e,i);let l=this._options.uniformBuffers,c=!1;if(a&&l&&l.length>0&&o.getEngine().supportsUniformBuffers)for(let h=0;hnew n(e,this.getScene(),this._shaderPath,this._options,this._storeEffectOnSubMeshes),this);t.name=e,t.id=e,typeof t._shaderPath=="object"&&(t._shaderPath={...t._shaderPath}),this._options={...this._options};let i=Object.keys(this._options);for(let r of i){let s=this._options[r];Array.isArray(s)&&(this._options[r]=s.slice(0))}this.stencil.copyTo(t.stencil);for(let r in this._textures)t.setTexture(r,this._textures[r]);for(let r in this._internalTextures)t.setInternalTexture(r,this._internalTextures[r]);for(let r in this._textureArrays)t.setTextureArray(r,this._textureArrays[r]);for(let r in this._externalTextures)t.setExternalTexture(r,this._externalTextures[r]);for(let r in this._ints)t.setInt(r,this._ints[r]);for(let r in this._uints)t.setUInt(r,this._uints[r]);for(let r in this._floats)t.setFloat(r,this._floats[r]);for(let r in this._floatsArrays)t.setFloats(r,this._floatsArrays[r]);for(let r in this._colors3)t.setColor3(r,this._colors3[r]);for(let r in this._colors3Arrays)t._colors3Arrays[r]=this._colors3Arrays[r];for(let r in this._colors4)t.setColor4(r,this._colors4[r]);for(let r in this._colors4Arrays)t._colors4Arrays[r]=this._colors4Arrays[r];for(let r in this._vectors2)t.setVector2(r,this._vectors2[r]);for(let r in this._vectors3)t.setVector3(r,this._vectors3[r]);for(let r in this._vectors4)t.setVector4(r,this._vectors4[r]);for(let r in this._quaternions)t.setQuaternion(r,this._quaternions[r]);for(let r in this._quaternionsArrays)t._quaternionsArrays[r]=this._quaternionsArrays[r];for(let r in this._matrices)t.setMatrix(r,this._matrices[r]);for(let r in this._matrixArrays)t._matrixArrays[r]=this._matrixArrays[r].slice();for(let r in this._matrices3x3)t.setMatrix3x3(r,this._matrices3x3[r]);for(let r in this._matrices2x2)t.setMatrix2x2(r,this._matrices2x2[r]);for(let r in this._vectors2Arrays)t.setArray2(r,this._vectors2Arrays[r]);for(let r in this._vectors3Arrays)t.setArray3(r,this._vectors3Arrays[r]);for(let r in this._vectors4Arrays)t.setArray4(r,this._vectors4Arrays[r]);for(let r in this._uniformBuffers)t.setUniformBuffer(r,this._uniformBuffers[r]);for(let r in this._textureSamplers)t.setTextureSampler(r,this._textureSamplers[r]);for(let r in this._storageBuffers)t.setStorageBuffer(r,this._storageBuffers[r]);return t}dispose(e,t,i){if(t){let r;for(r in this._textures)this._textures[r].dispose();for(r in this._internalTextures)this._internalTextures[r].dispose();for(r in this._textureArrays){let s=this._textureArrays[r];for(let a=0;anew n(e.name,t,e.shaderPath,e.options,e.storeEffectOnSubMeshes),e,t,i),s;e.stencil&&r.stencil.parse(e.stencil,t,i);for(s in e.textures)r.setTexture(s,ge.Parse(e.textures[s],t,i));for(s in e.textureArrays){let a=e.textureArrays[s],o=[];for(let l=0;l(c%3===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2]}));r.setColor3Array(s,a)}for(s in e.colors4){let a=e.colors4[s];r.setColor4(s,{r:a[0],g:a[1],b:a[2],a:a[3]})}for(s in e.colors4Arrays){let a=e.colors4Arrays[s].reduce((o,l,c)=>(c%4===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2],a:o[3]}));r.setColor4Array(s,a)}for(s in e.vectors2){let a=e.vectors2[s];r.setVector2(s,{x:a[0],y:a[1]})}for(s in e.vectors3){let a=e.vectors3[s];r.setVector3(s,{x:a[0],y:a[1],z:a[2]})}for(s in e.vectors4){let a=e.vectors4[s];r.setVector4(s,{x:a[0],y:a[1],z:a[2],w:a[3]})}for(s in e.quaternions)r.setQuaternion(s,Xe.FromArray(e.quaternions[s]));for(s in e.matrices)r.setMatrix(s,q.FromArray(e.matrices[s]));for(s in e.matrixArray)r._matrixArrays[s]=new Float32Array(e.matrixArray[s]);for(s in e.matrices3x3)r.setMatrix3x3(s,e.matrices3x3[s]);for(s in e.matrices2x2)r.setMatrix2x2(s,e.matrices2x2[s]);for(s in e.vectors2Arrays)r.setArray2(s,e.vectors2Arrays[s]);for(s in e.vectors3Arrays)r.setArray3(s,e.vectors3Arrays[s]);for(s in e.vectors4Arrays)r.setArray4(s,e.vectors4Arrays[s]);for(s in e.quaternionsArrays)r.setArray4(s,e.quaternionsArrays[s]);return r}static async ParseFromFileAsync(e,t,i,r=""){return await new Promise((s,a)=>{let o=new Cr;o.addEventListener("readystatechange",()=>{if(o.readyState==4)if(o.status==200){let l=JSON.parse(o.responseText),c=this.Parse(l,i||Oe.LastCreatedScene,r);e&&(c.name=e),s(c)}else a("Unable to load the ShaderMaterial")}),o.open("GET",t),o.send()})}static async ParseFromSnippetAsync(e,t,i=""){return await new Promise((r,s)=>{let a=new Cr;a.addEventListener("readystatechange",()=>{if(a.readyState==4)if(a.status==200){let o=JSON.parse(JSON.parse(a.responseText).jsonPayload),l=JSON.parse(o.shaderMaterial),c=this.Parse(l,t||Oe.LastCreatedScene,i);c.snippetId=e,r(c)}else s("Unable to load the snippet "+e)}),a.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),a.send()})}};Lo.SnippetUrl="https://snippet.babylonjs.com";Lo.CreateFromSnippetAsync=Lo.ParseFromSnippetAsync;Ft("BABYLON.ShaderMaterial",Lo)});var RH,ofe,uc=I(()=>{k();RH="bonesDeclaration",ofe=`#if NUM_BONE_INFLUENCERS>0 #ifndef USE_VERTEX_PULLING attribute matricesIndices : vec4f;attribute matricesWeights : vec4f; #if NUM_BONE_INFLUENCERS>4 @@ -4462,7 +4462,7 @@ let textureWidth=i32(uniforms.boneTextureInfo.x);let y=offset/textureWidth;let x #endif #endif #endif -`;A.IncludesShadersStoreWGSL[TH]||(A.IncludesShadersStoreWGSL[TH]=ife)});var AH,rfe,mc=I(()=>{k();AH="bakedVertexAnimationDeclaration",rfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStoreWGSL[RH]||(A.IncludesShadersStoreWGSL[RH]=ofe)});var bH,lfe,mc=I(()=>{k();bH="bakedVertexAnimationDeclaration",lfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE uniform bakedVertexAnimationTime: f32;uniform bakedVertexAnimationSettings: vec4;var bakedVertexAnimationTexture : texture_2d; #ifdef INSTANCES attribute bakedVertexAnimationSettingsInstanced : vec4; @@ -4470,7 +4470,7 @@ attribute bakedVertexAnimationSettingsInstanced : vec4; fn readMatrixFromRawSamplerVAT(smp : texture_2d,index : f32,frame : f32)->mat4x4 {let offset=i32(index)*4;let frameUV=i32(frame);let m0=textureLoad(smp,vec2(offset+0,frameUV),0);let m1=textureLoad(smp,vec2(offset+1,frameUV),0);let m2=textureLoad(smp,vec2(offset+2,frameUV),0);let m3=textureLoad(smp,vec2(offset+3,frameUV),0);return mat4x4(m0,m1,m2,m3);} #endif -`;A.IncludesShadersStoreWGSL[AH]||(A.IncludesShadersStoreWGSL[AH]=rfe)});var xH,nfe,pc=I(()=>{k();xH="clipPlaneVertexDeclaration",nfe=`#ifdef CLIPPLANE +`;A.IncludesShadersStoreWGSL[bH]||(A.IncludesShadersStoreWGSL[bH]=lfe)});var MH,cfe,pc=I(()=>{k();MH="clipPlaneVertexDeclaration",cfe=`#ifdef CLIPPLANE uniform vClipPlane: vec4;varying fClipDistance: f32; #endif #ifdef CLIPPLANE2 @@ -4488,10 +4488,10 @@ uniform vClipPlane5: vec4;varying fClipDistance5: f32; #ifdef CLIPPLANE6 uniform vClipPlane6: vec4;varying fClipDistance6: f32; #endif -`;A.IncludesShadersStoreWGSL[xH]||(A.IncludesShadersStoreWGSL[xH]=nfe)});var RH,sfe,jg=I(()=>{k();RH="fogVertexDeclaration",sfe=`#ifdef FOG +`;A.IncludesShadersStoreWGSL[MH]||(A.IncludesShadersStoreWGSL[MH]=cfe)});var IH,ffe,jg=I(()=>{k();IH="fogVertexDeclaration",ffe=`#ifdef FOG varying vFogDistance: vec3f; #endif -`;A.IncludesShadersStoreWGSL[RH]||(A.IncludesShadersStoreWGSL[RH]=sfe)});var bH,afe,Hf=I(()=>{k();bH="instancesDeclaration",afe=`#ifdef INSTANCES +`;A.IncludesShadersStoreWGSL[IH]||(A.IncludesShadersStoreWGSL[IH]=ffe)});var yH,dfe,Hf=I(()=>{k();yH="instancesDeclaration",dfe=`#ifdef INSTANCES attribute world0 : vec4;attribute world1 : vec4;attribute world2 : vec4;attribute world3 : vec4; #ifdef INSTANCESCOLOR attribute instanceColor : vec4; @@ -4513,7 +4513,7 @@ uniform world : mat4x4; uniform previousWorld : mat4x4; #endif #endif -`;A.IncludesShadersStoreWGSL[bH]||(A.IncludesShadersStoreWGSL[bH]=afe)});var MH,ofe,_c=I(()=>{k();MH="instancesVertex",ofe=`#ifdef INSTANCES +`;A.IncludesShadersStoreWGSL[yH]||(A.IncludesShadersStoreWGSL[yH]=dfe)});var CH,hfe,_c=I(()=>{k();CH="instancesVertex",hfe=`#ifdef INSTANCES var finalWorld=mat4x4(vertexInputs.world0,vertexInputs.world1,vertexInputs.world2,vertexInputs.world3); #if defined(PREPASS_VELOCITY) || defined(VELOCITY) || defined(PREPASS_VELOCITY_LINEAR) || defined(VELOCITY_LINEAR) var finalPreviousWorld=mat4x4( @@ -4540,7 +4540,7 @@ var finalWorld=mesh.world; var finalPreviousWorld=uniforms.previousWorld; #endif #endif -`;A.IncludesShadersStoreWGSL[MH]||(A.IncludesShadersStoreWGSL[MH]=ofe)});var IH,lfe,gc=I(()=>{k();IH="bonesVertex",lfe=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStoreWGSL[CH]||(A.IncludesShadersStoreWGSL[CH]=hfe)});var PH,ufe,gc=I(()=>{k();PH="bonesVertex",ufe=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE #if NUM_BONE_INFLUENCERS>0 var influence : mat4x4; #ifdef BONETEXTURE @@ -4593,7 +4593,7 @@ influence=influence+uniforms.mBones[i32(vertexInputs.matricesIndicesExtra[3])]*v finalWorld=finalWorld*influence; #endif #endif -`;A.IncludesShadersStoreWGSL[IH]||(A.IncludesShadersStoreWGSL[IH]=lfe)});var yH,cfe,vc=I(()=>{k();yH="bakedVertexAnimation",cfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStoreWGSL[PH]||(A.IncludesShadersStoreWGSL[PH]=ufe)});var DH,mfe,vc=I(()=>{k();DH="bakedVertexAnimation",mfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE { #ifdef INSTANCES let VATStartFrame: f32=vertexInputs.bakedVertexAnimationSettingsInstanced.x;let VATEndFrame: f32=vertexInputs.bakedVertexAnimationSettingsInstanced.y;let VATOffsetFrame: f32=vertexInputs.bakedVertexAnimationSettingsInstanced.z;let VATSpeed: f32=vertexInputs.bakedVertexAnimationSettingsInstanced.w; @@ -4624,7 +4624,7 @@ VATInfluence=VATInfluence+readMatrixFromRawSamplerVAT(bakedVertexAnimationTextur #endif finalWorld=finalWorld*VATInfluence;} #endif -`;A.IncludesShadersStoreWGSL[yH]||(A.IncludesShadersStoreWGSL[yH]=cfe)});var CH,ffe,Ec=I(()=>{k();CH="clipPlaneVertex",ffe=`#ifdef CLIPPLANE +`;A.IncludesShadersStoreWGSL[DH]||(A.IncludesShadersStoreWGSL[DH]=mfe)});var LH,pfe,Ec=I(()=>{k();LH="clipPlaneVertex",pfe=`#ifdef CLIPPLANE vertexOutputs.fClipDistance=dot(worldPos,uniforms.vClipPlane); #endif #ifdef CLIPPLANE2 @@ -4642,14 +4642,14 @@ vertexOutputs.fClipDistance5=dot(worldPos,uniforms.vClipPlane5); #ifdef CLIPPLANE6 vertexOutputs.fClipDistance6=dot(worldPos,uniforms.vClipPlane6); #endif -`;A.IncludesShadersStoreWGSL[CH]||(A.IncludesShadersStoreWGSL[CH]=ffe)});var PH,dfe,qg=I(()=>{k();PH="fogVertex",dfe=`#ifdef FOG +`;A.IncludesShadersStoreWGSL[LH]||(A.IncludesShadersStoreWGSL[LH]=pfe)});var OH,_fe,qg=I(()=>{k();OH="fogVertex",_fe=`#ifdef FOG #ifdef SCENE_UBO vertexOutputs.vFogDistance=(scene.view*worldPos).xyz; #else vertexOutputs.vFogDistance=(uniforms.view*worldPos).xyz; #endif #endif -`;A.IncludesShadersStoreWGSL[PH]||(A.IncludesShadersStoreWGSL[PH]=dfe)});var DH,hfe,Zg=I(()=>{k();DH="vertexColorMixing",hfe=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;A.IncludesShadersStoreWGSL[OH]||(A.IncludesShadersStoreWGSL[OH]=_fe)});var NH,gfe,Zg=I(()=>{k();NH="vertexColorMixing",gfe=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) vertexOutputs.vColor=vec4f(1.0); #ifdef VERTEXCOLOR #ifdef VERTEXALPHA @@ -4662,7 +4662,7 @@ vertexOutputs.vColor=vec4f(vertexOutputs.vColor.rgb*colorUpdated.rgb,vertexOutpu vertexOutputs.vColor*=vertexInputs.instanceColor; #endif #endif -`;A.IncludesShadersStoreWGSL[DH]||(A.IncludesShadersStoreWGSL[DH]=hfe)});var OH={};Be(OH,{colorVertexShaderWGSL:()=>ufe});var ND,LH,ufe,NH=I(()=>{k();uc();mc();pc();jg();Hf();_c();gc();vc();Ec();qg();Zg();ND="colorVertexShader",LH=`attribute position: vec3f; +`;A.IncludesShadersStoreWGSL[NH]||(A.IncludesShadersStoreWGSL[NH]=gfe)});var FH={};Be(FH,{colorVertexShaderWGSL:()=>vfe});var BD,wH,vfe,BH=I(()=>{k();uc();mc();pc();jg();Hf();_c();gc();vc();Ec();qg();Zg();BD="colorVertexShader",wH=`attribute position: vec3f; #ifdef VERTEXCOLOR attribute color: vec4f; #endif @@ -4693,7 +4693,7 @@ var worldPos: vec4f=finalWorld* vec4f(vertexInputs.position,1.0);vertexOutputs.p #include #include #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStoreWGSL[ND]||(A.ShadersStoreWGSL[ND]=LH);ufe={name:ND,shader:LH}});var wH,mfe,Sc=I(()=>{k();wH="clipPlaneFragmentDeclaration",mfe=`#ifdef CLIPPLANE +}`;A.ShadersStoreWGSL[BD]||(A.ShadersStoreWGSL[BD]=wH);vfe={name:BD,shader:wH}});var UH,Efe,Sc=I(()=>{k();UH="clipPlaneFragmentDeclaration",Efe=`#ifdef CLIPPLANE varying fClipDistance: f32; #endif #ifdef CLIPPLANE2 @@ -4711,7 +4711,7 @@ varying fClipDistance5: f32; #ifdef CLIPPLANE6 varying fClipDistance6: f32; #endif -`;A.IncludesShadersStoreWGSL[wH]||(A.IncludesShadersStoreWGSL[wH]=mfe)});var FH,pfe,Qg=I(()=>{k();FH="fogFragmentDeclaration",pfe=`#ifdef FOG +`;A.IncludesShadersStoreWGSL[UH]||(A.IncludesShadersStoreWGSL[UH]=Efe)});var VH,Sfe,Qg=I(()=>{k();VH="fogFragmentDeclaration",Sfe=`#ifdef FOG #define FOGMODE_NONE 0. #define FOGMODE_EXP 1. #define FOGMODE_EXP2 2. @@ -4725,7 +4725,7 @@ else if (FOGMODE_EXP2==uniforms.vFogInfos.x) {fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);} return clamp(fogCoeff,0.0,1.0);} #endif -`;A.IncludesShadersStoreWGSL[FH]||(A.IncludesShadersStoreWGSL[FH]=pfe)});var BH,_fe,Tc=I(()=>{k();BH="clipPlaneFragment",_fe=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) +`;A.IncludesShadersStoreWGSL[VH]||(A.IncludesShadersStoreWGSL[VH]=Sfe)});var GH,Tfe,Tc=I(()=>{k();GH="clipPlaneFragment",Tfe=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) if (false) {} #endif #ifdef CLIPPLANE @@ -4752,14 +4752,14 @@ else if (fragmentInputs.fClipDistance5>0.0) else if (fragmentInputs.fClipDistance6>0.0) {discard;} #endif -`;A.IncludesShadersStoreWGSL[BH]||(A.IncludesShadersStoreWGSL[BH]=_fe)});var UH,gfe,$g=I(()=>{k();UH="fogFragment",gfe=`#ifdef FOG +`;A.IncludesShadersStoreWGSL[GH]||(A.IncludesShadersStoreWGSL[GH]=Tfe)});var kH,Afe,$g=I(()=>{k();kH="fogFragment",Afe=`#ifdef FOG var fog: f32=CalcFogFactor(); #ifdef PBR fog=toLinearSpace(fog); #endif color= vec4f(mix(uniforms.vFogColor,color.rgb,fog),color.a); #endif -`;A.IncludesShadersStoreWGSL[UH]||(A.IncludesShadersStoreWGSL[UH]=gfe)});var GH={};Be(GH,{colorPixelShaderWGSL:()=>vfe});var wD,VH,vfe,kH=I(()=>{k();Sc();Qg();Tc();$g();wD="colorPixelShader",VH=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;A.IncludesShadersStoreWGSL[kH]||(A.IncludesShadersStoreWGSL[kH]=Afe)});var HH={};Be(HH,{colorPixelShaderWGSL:()=>xfe});var UD,WH,xfe,zH=I(()=>{k();Sc();Qg();Tc();$g();UD="colorPixelShader",WH=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) #define VERTEXCOLOR varying vColor: vec4f; #else @@ -4779,7 +4779,7 @@ fragmentOutputs.color=uniforms.color; #endif #include(color,fragmentOutputs.color) #define CUSTOM_FRAGMENT_MAIN_END -}`;A.ShadersStoreWGSL[wD]||(A.ShadersStoreWGSL[wD]=VH);vfe={name:wD,shader:VH}});var WH,Efe,Ac=I(()=>{k();WH="bonesDeclaration",Efe=`#if NUM_BONE_INFLUENCERS>0 +}`;A.ShadersStoreWGSL[UD]||(A.ShadersStoreWGSL[UD]=WH);xfe={name:UD,shader:WH}});var XH,Rfe,Ac=I(()=>{k();XH="bonesDeclaration",Rfe=`#if NUM_BONE_INFLUENCERS>0 attribute vec4 matricesIndices;attribute vec4 matricesWeights; #if NUM_BONE_INFLUENCERS>4 attribute vec4 matricesIndicesExtra;attribute vec4 matricesWeightsExtra; @@ -4808,7 +4808,7 @@ return mat4(m0,m1,m2,m3); #endif #endif #endif -`;A.IncludesShadersStore[WH]||(A.IncludesShadersStore[WH]=Efe)});var HH,Sfe,xc=I(()=>{k();HH="bakedVertexAnimationDeclaration",Sfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStore[XH]||(A.IncludesShadersStore[XH]=Rfe)});var YH,bfe,xc=I(()=>{k();YH="bakedVertexAnimationDeclaration",bfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE uniform float bakedVertexAnimationTime; #if !defined(WEBGL2) && !defined(WEBGPU) uniform vec2 bakedVertexAnimationTextureSizeInverted; @@ -4827,7 +4827,7 @@ float offset=index*4.0;float frameUV=(frame+0.5)*bakedVertexAnimationTextureSize #endif } #endif -`;A.IncludesShadersStore[HH]||(A.IncludesShadersStore[HH]=Sfe)});var zH,Tfe,Rc=I(()=>{k();zH="clipPlaneVertexDeclaration",Tfe=`#ifdef CLIPPLANE +`;A.IncludesShadersStore[YH]||(A.IncludesShadersStore[YH]=bfe)});var KH,Mfe,Rc=I(()=>{k();KH="clipPlaneVertexDeclaration",Mfe=`#ifdef CLIPPLANE uniform vec4 vClipPlane;varying float fClipDistance; #endif #ifdef CLIPPLANE2 @@ -4845,10 +4845,10 @@ uniform vec4 vClipPlane5;varying float fClipDistance5; #ifdef CLIPPLANE6 uniform vec4 vClipPlane6;varying float fClipDistance6; #endif -`;A.IncludesShadersStore[zH]||(A.IncludesShadersStore[zH]=Tfe)});var XH,Afe,Jg=I(()=>{k();XH="fogVertexDeclaration",Afe=`#ifdef FOG +`;A.IncludesShadersStore[KH]||(A.IncludesShadersStore[KH]=Mfe)});var jH,Ife,Jg=I(()=>{k();jH="fogVertexDeclaration",Ife=`#ifdef FOG varying vec3 vFogDistance; #endif -`;A.IncludesShadersStore[XH]||(A.IncludesShadersStore[XH]=Afe)});var YH,xfe,zf=I(()=>{k();YH="instancesDeclaration",xfe=`#ifdef INSTANCES +`;A.IncludesShadersStore[jH]||(A.IncludesShadersStore[jH]=Ife)});var qH,yfe,zf=I(()=>{k();qH="instancesDeclaration",yfe=`#ifdef INSTANCES attribute vec4 world0;attribute vec4 world1;attribute vec4 world2;attribute vec4 world3; #ifdef INSTANCESCOLOR attribute vec4 instanceColor; @@ -4870,7 +4870,7 @@ uniform mat4 world; uniform mat4 previousWorld; #endif #endif -`;A.IncludesShadersStore[YH]||(A.IncludesShadersStore[YH]=xfe)});var KH,Rfe,bc=I(()=>{k();KH="instancesVertex",Rfe=`#ifdef INSTANCES +`;A.IncludesShadersStore[qH]||(A.IncludesShadersStore[qH]=yfe)});var ZH,Cfe,bc=I(()=>{k();ZH="instancesVertex",Cfe=`#ifdef INSTANCES mat4 finalWorld=mat4(world0,world1,world2,world3); #if defined(PREPASS_VELOCITY) || defined(VELOCITY) || defined(PREPASS_VELOCITY_LINEAR) || defined(VELOCITY_LINEAR) mat4 finalPreviousWorld=mat4(previousWorld0,previousWorld1, @@ -4888,7 +4888,7 @@ mat4 finalWorld=world; mat4 finalPreviousWorld=previousWorld; #endif #endif -`;A.IncludesShadersStore[KH]||(A.IncludesShadersStore[KH]=Rfe)});var jH,bfe,Mc=I(()=>{k();jH="bonesVertex",bfe=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStore[ZH]||(A.IncludesShadersStore[ZH]=Cfe)});var QH,Pfe,Mc=I(()=>{k();QH="bonesVertex",Pfe=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE #if NUM_BONE_INFLUENCERS>0 mat4 influence; #ifdef BONETEXTURE @@ -4941,7 +4941,7 @@ influence+=mBones[int(matricesIndicesExtra[3])]*matricesWeightsExtra[3]; finalWorld=finalWorld*influence; #endif #endif -`;A.IncludesShadersStore[jH]||(A.IncludesShadersStore[jH]=bfe)});var qH,Mfe,Ic=I(()=>{k();qH="bakedVertexAnimation",Mfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;A.IncludesShadersStore[QH]||(A.IncludesShadersStore[QH]=Pfe)});var $H,Dfe,Ic=I(()=>{k();$H="bakedVertexAnimation",Dfe=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE { #ifdef INSTANCES #define BVASNAME bakedVertexAnimationSettingsInstanced @@ -4972,7 +4972,7 @@ VATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIn #endif finalWorld=finalWorld*VATInfluence;} #endif -`;A.IncludesShadersStore[qH]||(A.IncludesShadersStore[qH]=Mfe)});var ZH,Ife,yc=I(()=>{k();ZH="clipPlaneVertex",Ife=`#ifdef CLIPPLANE +`;A.IncludesShadersStore[$H]||(A.IncludesShadersStore[$H]=Dfe)});var JH,Lfe,yc=I(()=>{k();JH="clipPlaneVertex",Lfe=`#ifdef CLIPPLANE fClipDistance=dot(worldPos,vClipPlane); #endif #ifdef CLIPPLANE2 @@ -4990,10 +4990,10 @@ fClipDistance5=dot(worldPos,vClipPlane5); #ifdef CLIPPLANE6 fClipDistance6=dot(worldPos,vClipPlane6); #endif -`;A.IncludesShadersStore[ZH]||(A.IncludesShadersStore[ZH]=Ife)});var QH,yfe,ev=I(()=>{k();QH="fogVertex",yfe=`#ifdef FOG +`;A.IncludesShadersStore[JH]||(A.IncludesShadersStore[JH]=Lfe)});var ez,Ofe,ev=I(()=>{k();ez="fogVertex",Ofe=`#ifdef FOG vFogDistance=(view*worldPos).xyz; #endif -`;A.IncludesShadersStore[QH]||(A.IncludesShadersStore[QH]=yfe)});var $H,Cfe,tv=I(()=>{k();$H="vertexColorMixing",Cfe=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;A.IncludesShadersStore[ez]||(A.IncludesShadersStore[ez]=Ofe)});var tz,Nfe,tv=I(()=>{k();tz="vertexColorMixing",Nfe=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) vColor=vec4(1.0); #ifdef VERTEXCOLOR #ifdef VERTEXALPHA @@ -5006,7 +5006,7 @@ vColor.rgb*=colorUpdated.rgb; vColor*=instanceColor; #endif #endif -`;A.IncludesShadersStore[$H]||(A.IncludesShadersStore[$H]=Cfe)});var ez={};Be(ez,{colorVertexShader:()=>Pfe});var FD,JH,Pfe,tz=I(()=>{k();Ac();xc();Rc();Jg();zf();bc();Mc();Ic();yc();ev();tv();FD="colorVertexShader",JH=`attribute vec3 position; +`;A.IncludesShadersStore[tz]||(A.IncludesShadersStore[tz]=Nfe)});var rz={};Be(rz,{colorVertexShader:()=>wfe});var VD,iz,wfe,nz=I(()=>{k();Ac();xc();Rc();Jg();zf();bc();Mc();Ic();yc();ev();tv();VD="colorVertexShader",iz=`attribute vec3 position; #ifdef VERTEXCOLOR attribute vec4 color; #endif @@ -5044,7 +5044,7 @@ gl_Position=viewProjection*worldPos; #include #include #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStore[FD]||(A.ShadersStore[FD]=JH);Pfe={name:FD,shader:JH}});var iz,Dfe,Cc=I(()=>{k();iz="clipPlaneFragmentDeclaration",Dfe=`#ifdef CLIPPLANE +}`;A.ShadersStore[VD]||(A.ShadersStore[VD]=iz);wfe={name:VD,shader:iz}});var sz,Ffe,Cc=I(()=>{k();sz="clipPlaneFragmentDeclaration",Ffe=`#ifdef CLIPPLANE varying float fClipDistance; #endif #ifdef CLIPPLANE2 @@ -5062,7 +5062,7 @@ varying float fClipDistance5; #ifdef CLIPPLANE6 varying float fClipDistance6; #endif -`;A.IncludesShadersStore[iz]||(A.IncludesShadersStore[iz]=Dfe)});var rz,Lfe,iv=I(()=>{k();rz="fogFragmentDeclaration",Lfe=`#ifdef FOG +`;A.IncludesShadersStore[sz]||(A.IncludesShadersStore[sz]=Ffe)});var az,Bfe,iv=I(()=>{k();az="fogFragmentDeclaration",Bfe=`#ifdef FOG #define FOGMODE_NONE 0. #define FOGMODE_EXP 1. #define FOGMODE_EXP2 2. @@ -5077,7 +5077,7 @@ else if (FOGMODE_EXP2==vFogInfos.x) {fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);} return clamp(fogCoeff,0.0,1.0);} #endif -`;A.IncludesShadersStore[rz]||(A.IncludesShadersStore[rz]=Lfe)});var nz,Ofe,Pc=I(()=>{k();nz="clipPlaneFragment",Ofe=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) +`;A.IncludesShadersStore[az]||(A.IncludesShadersStore[az]=Bfe)});var oz,Ufe,Pc=I(()=>{k();oz="clipPlaneFragment",Ufe=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) if (false) {} #endif #ifdef CLIPPLANE @@ -5104,14 +5104,14 @@ else if (fClipDistance5>0.0) else if (fClipDistance6>0.0) {discard;} #endif -`;A.IncludesShadersStore[nz]||(A.IncludesShadersStore[nz]=Ofe)});var sz,Nfe,rv=I(()=>{k();sz="fogFragment",Nfe=`#ifdef FOG +`;A.IncludesShadersStore[oz]||(A.IncludesShadersStore[oz]=Ufe)});var lz,Vfe,rv=I(()=>{k();lz="fogFragment",Vfe=`#ifdef FOG float fog=CalcFogFactor(); #ifdef PBR fog=toLinearSpace(fog); #endif color.rgb=mix(vFogColor,color.rgb,fog); #endif -`;A.IncludesShadersStore[sz]||(A.IncludesShadersStore[sz]=Nfe)});var oz={};Be(oz,{colorPixelShader:()=>wfe});var BD,az,wfe,lz=I(()=>{k();Cc();iv();Pc();rv();BD="colorPixelShader",az=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;A.IncludesShadersStore[lz]||(A.IncludesShadersStore[lz]=Vfe)});var fz={};Be(fz,{colorPixelShader:()=>Gfe});var GD,cz,Gfe,dz=I(()=>{k();Cc();iv();Pc();rv();GD="colorPixelShader",cz=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) #define VERTEXCOLOR varying vec4 vColor; #else @@ -5130,18 +5130,18 @@ gl_FragColor=color; #endif #include(color,gl_FragColor) #define CUSTOM_FRAGMENT_MAIN_END -}`;A.ShadersStore[BD]||(A.ShadersStore[BD]=az);wfe={name:BD,shader:az}});var Eh,UD,cz=I(()=>{Ht();Wi();Ci();DD();Yn();OD();Z._LinesMeshParser=(n,e)=>Eh.Parse(n,e);Eh=class n extends Z{_isShaderMaterial(e){return e?e.getClassName()==="ShaderMaterial":!1}constructor(e,t=null,i=null,r=null,s,a,o,l){super(e,t,i,r,s),this.useVertexColor=a,this.useVertexAlpha=o,this.color=new pe(1,1,1),this.alpha=1,this._shaderLanguage=0,this._ownsMaterial=!1,r&&(this.color=r.color.clone(),this.alpha=r.alpha,this.useVertexColor=r.useVertexColor,this.useVertexAlpha=r.useVertexAlpha),this.intersectionThreshold=.1;let c=[],f={attributes:[D.PositionKind],uniforms:["world","viewProjection"],needAlphaBlending:!0,defines:c,useClipPlane:null,shaderLanguage:0};if(this.useVertexAlpha?f.defines.push("#define VERTEXALPHA"):f.needAlphaBlending=!1,this.useVertexColor?(f.defines.push("#define VERTEXCOLOR"),f.attributes.push(D.ColorKind)):(f.uniforms.push("color"),this._color4=new lt),l)this.material=l;else{this.getScene().getEngine().isWebGPU&&!n.ForceGLSL&&(this._shaderLanguage=1),f.shaderLanguage=this._shaderLanguage,f.extraInitializationsAsync=async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(NH(),OH)),Promise.resolve().then(()=>(kH(),GH))]):await Promise.all([Promise.resolve().then(()=>(tz(),ez)),Promise.resolve().then(()=>(lz(),oz))])};let h=new Lo("colorShader",this.getScene(),"color",f,!1);h.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(h)}}getClassName(){return"LinesMesh"}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){let t=this.material;if(t===e)return;let i=t&&this._ownsMaterial;this._ownsMaterial=!1,this._setInternalMaterial(e),i&&(t==null||t.dispose())}_setInternalMaterial(e){this._setMaterial(e),this.material&&(this.material.fillMode=Se.LineListDrawMode,this.material.disableLighting=!0)}get checkCollisions(){return!1}set checkCollisions(e){}_bind(e,t){if(!this._geometry)return this;let i=this.isUnIndexed?null:this._geometry.getIndexBuffer();if(!this._userInstancedBuffersStorage||this.hasThinInstances?this._geometry._bind(t,i):this._geometry._bind(t,i,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects),!this.useVertexColor&&this._isShaderMaterial(this.material)){let{r,g:s,b:a}=this.color;this._color4.set(r,s,a,this.alpha),this.material.setColor4("color",this._color4)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let r=this.getScene().getEngine();return this._unIndexed?r.drawArraysType(Se.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Se.LineListDrawMode,e.indexStart,e.indexCount,i),this}dispose(e,t=!1,i){var r,s;i||(this._ownsMaterial?(r=this.material)==null||r.dispose(!1,!1,!0):t&&((s=this.material)==null||s.dispose(!1,!1,!0))),super.dispose(e)}clone(e,t=null,i){if(t&&t._addToSceneRootNodes===void 0){let r=t;return r.source=this,new n(e,this.getScene(),r.parent,r.source,r.doNotCloneChildren)}return new n(e,this.getScene(),t,this,i)}createInstance(e){let t=new UD(e,this);if(this.instancedBuffers){t.instancedBuffers={};for(let i in this.instancedBuffers)t.instancedBuffers[i]=this.instancedBuffers[i]}return t}serialize(e){super.serialize(e),e.color=this.color.asArray(),e.alpha=this.alpha}static Parse(e,t){let i=new n(e.name,t);return i.color=pe.FromArray(e.color),i.alpha=e.alpha,i}};Eh.ForceGLSL=!1;UD=class extends hc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function fz(n){let e=[],t=[],i=n.lines,r=n.colors,s=[],a=0;for(let l=0;l0&&(e.push(a-1),e.push(a)),a++}}let o=new ye;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function dz(n){let e=n.dashSize||3,t=n.gapSize||1,i=n.dashNb||200,r=n.points,s=[],a=[],o=b.Zero(),l=0,c,f,d=0,h;for(h=0;h{let d=b.Zero(),h=f.length/6,u=0,m,_,p=0,g,v;for(g=0;g{ke();Ci();pr();cz();Wi();Pt();ye.CreateLineSystem=fz;ye.CreateDashedLines=dz;Z.CreateLines=(n,e,t=null,i=!1,r=null)=>GD(n,{points:e,updatable:i,instance:r},t);Z.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>kD(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var WD,nv,Yx,uz=I(()=>{Pt();ke();Wi();Ci();pr();rh();Un();Ni();WD=class extends Fe{constructor(e,t){super(e.x,e.y),this.index=t}},nv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new WD(i,this.elements.length);t.push(r),this.elements.push(r)}return t}computeBounds(){let e=new Fe(this.elements[0].x,this.elements[0].y),t=new Fe(this.elements[0].x,this.elements[0].y);for(let i of this.elements)i.xt.x&&(t.x=i.x),i.yt.y&&(t.y=i.y);return{min:e,max:t,width:t.x-e.x,height:t.y-e.y}}},Yx=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new nv,this._outlinepoints=new nv,this._holes=new Array,this._epoints=new Array,this._eholes=new Array,this.bjsEarcut=r,this._name=e,this._scene=i||Oe.LastCreatedScene;let s;t instanceof pm?s=t.getPoints():s=t,this._addToepoint(s),this._points.add(s),this._outlinepoints.add(s),typeof this.bjsEarcut=="undefined"&&ee.Warn("Earcut was not found, the polygon will not be built.")}addHole(e){this._points.add(e);let t=new nv;return t.add(e),this._holes.push(t),this._eholes.push(this._epoints.length/2),this._addToepoint(e),this}build(e=!1,t=0,i=2){let r=new Z(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(D.PositionKind,s.positions,e),r.setVerticesData(D.NormalKind,s.normals,e),r.setVerticesData(D.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new ye,r=[],s=[],a=[],o=this._points.computeBounds();for(let f of this._points.elements)r.push(0,1,0),s.push(f.x,0,f.y),a.push((f.x-o.min.x)/o.width,(f.y-o.min.y)/o.height);let l=[],c=this.bjsEarcut(this._epoints,this._eholes,2);for(let f=0;f0){let f=s.length/3;for(let h of this._points.elements)r.push(0,-1,0),s.push(h.x,-e,h.y),a.push(1-(h.x-o.min.x)/o.width,1-(h.y-o.min.y)/o.height);let d=l.length;for(let h=0;hc?Rc?M{ke();Ht();Ci();pr();uz();Wi();Ni();nn();ye.CreatePolygon=mz;Z.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>Kx(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);Z.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>sv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function zD(n,e,t=null){let i=e.path,r=e.shape,s=e.scale||1,a=e.rotation||0,o=e.cap===0?0:e.cap||Z.NO_CAP,l=e.updatable,c=Z._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,h=e.closeShape||!1,u=e.closePath||!1,m=e.capFunction||null;return pz(n,r,i,s,a,null,null,u,h,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function XD(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(x,S)=>{var T,R;let E=(R=(T=e.scaleFunction)==null?void 0:T.call(e,x,S))!=null?R:1;return s.copyFromFloats(E,E,E)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||Z.NO_CAP,d=e.updatable,h=e.firstNormal||null,u=e.adjustFrame||!1,m=Z._GetDefaultSideOrientation(e.sideOrientation),_=e.instance,p=e.invertUV||!1,g=e.capFunction||null;return pz(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,_||null,p,e.frontUVs||null,e.backUVs||null,h,u,g||null)}function pz(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S){let E=(L,w,G,O,N,B,V,J,Q,te,X)=>{let Y=G.getTangents(),ve=G.getNormals(),Ee=G.getBinormals(),Ue=G.getDistances();if(X){for(let Ke=0;Ke0){let Ze=Y[Ke-1];b.Dot(Ze,Y[Ke])<0&&Y[Ke].scaleInPlace(-1),Ze=ve[Ke-1],b.Dot(Ze,ve[Ke])<0&&ve[Ke].scaleInPlace(-1),Ze=Ee[Ke-1],b.Dot(Ze,Ee[Ke])<0&&Ee[Ke].scaleInPlace(-1)}}let ae=0,me=()=>N!==null?N:b.OneReadOnly,fe=te&&J?J:()=>B!==null?B:0,Pe=te&&V?V:me,de=Q===Z.NO_CAP||Q===Z.CAP_END?0:2,Re=$.Matrix[0];for(let Ke=0;Ke{let Ze=Array(),Jt=b.Zero(),Lt;for(Lt=0;Lt3?0:c,R=E(e,t,M,y,T,r,s,a,c,f,x);let C=Do(n,{pathArray:R,closeArray:o,closePath:l,updatable:h,sideOrientation:u,invertUV:_,frontUVs:p||void 0,backUVs:g||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var _z=I(()=>{ke();Ci();Xg();rh();Z.ExtrudeShape=(n,e,t,i,r,s,a=null,o,l,c)=>{let f={shape:e,path:t,scale:i,rotation:r,cap:s===0?0:s||Z.NO_CAP,sideOrientation:l,instance:c,updatable:o};return zD(n,f,a)};Z.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let h={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||Z.NO_CAP,sideOrientation:f,instance:d,updatable:c};return XD(n,h,l)}});function YD(n,e,t=null){let i=e.arc?e.arc<=0||e.arc>1?1:e.arc:1,r=e.closed===void 0?!0:e.closed,s=e.shape,a=e.radius||1,o=e.tessellation||64,l=e.clip||0,c=e.updatable,f=Z._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||Z.NO_CAP,h=Math.PI*2,u=[],m=e.invertUV||!1,_,p,g=h/o*i,v,x;for(_=0;_<=o-l;_++){for(x=[],(d==Z.CAP_START||d==Z.CAP_ALL)&&(x.push(new b(0,s[0].y,0)),x.push(new b(Math.cos(_*g)*s[0].x*a,s[0].y,Math.sin(_*g)*s[0].x*a))),p=0;p{ke();Ci();Xg();Z.CreateLathe=(n,e,t,i,r,s,a)=>YD(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function vz(n){let e=[],t=[],i=[],r=[],s=n.width!==void 0?n.width:n.size!==void 0?n.size:1,a=n.height!==void 0?n.height:n.size!==void 0?n.size:1,o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=s/2,c=a/2;t.push(-l,-c,0),i.push(0,0,-1),r.push(0,It?1:0),t.push(l,-c,0),i.push(0,0,-1),r.push(1,It?1:0),t.push(l,c,0),i.push(0,0,-1),r.push(1,It?0:1),t.push(-l,c,0),i.push(0,0,-1),r.push(0,It?0:1),e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),ye._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function KD(n,e={},t=null){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,vz(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var Ez=I(()=>{Ci();pr();nn();ye.CreatePlane=vz;Z.CreatePlane=(n,e,t,i,r)=>KD(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function jD(n,e,t=null){let i=e.path,r=e.instance,s=1;e.radius!==void 0?s=e.radius:r&&(s=r._creationDataStorage.radius);let a=e.tessellation||64,o=e.radiusFunction||null,l=e.cap||Z.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=Z._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let h=(g,v,x,S,E,T,R,M)=>{let y=v.getTangents(),C=v.getNormals(),L=v.getDistances(),G=Math.PI*2/E*M,N=T||(()=>S),B,V,J,Q,te=$.Matrix[0],X=R===Z.NO_CAP||R===Z.CAP_END?0:2;for(let ve=0;ve{let Ue=Array();for(let ae=0;ae3?0:l,m=h(i,u,_,s,a,o,l,e.arc);let p=Do(n,{pathArray:m,closePath:!0,closeArray:!1,updatable:f,sideOrientation:d,invertUV:c,frontUVs:e.frontUVs,backUVs:e.backUVs},t);return p._creationDataStorage.pathArray=m,p._creationDataStorage.path3D=u,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var Sz=I(()=>{ke();Ci();Xg();rh();Z.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>jD(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function Tz(n){let e=[];e[0]={vertex:[[0,0,1.732051],[1.632993,0,-.5773503],[-.8164966,1.414214,-.5773503],[-.8164966,-1.414214,-.5773503]],face:[[0,1,2],[0,2,3],[0,3,1],[1,3,2]]},e[1]={vertex:[[0,0,1.414214],[1.414214,0,0],[0,1.414214,0],[-1.414214,0,0],[0,-1.414214,0],[0,0,-1.414214]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,1],[1,4,5],[1,5,2],[2,5,3],[3,5,4]]},e[2]={vertex:[[0,0,1.070466],[.7136442,0,.7978784],[-.3568221,.618034,.7978784],[-.3568221,-.618034,.7978784],[.7978784,.618034,.3568221],[.7978784,-.618034,.3568221],[-.9341724,.381966,.3568221],[.1362939,1,.3568221],[.1362939,-1,.3568221],[-.9341724,-.381966,.3568221],[.9341724,.381966,-.3568221],[.9341724,-.381966,-.3568221],[-.7978784,.618034,-.3568221],[-.1362939,1,-.3568221],[-.1362939,-1,-.3568221],[-.7978784,-.618034,-.3568221],[.3568221,.618034,-.7978784],[.3568221,-.618034,-.7978784],[-.7136442,0,-.7978784],[0,0,-1.070466]],face:[[0,1,4,7,2],[0,2,6,9,3],[0,3,8,5,1],[1,5,11,10,4],[2,7,13,12,6],[3,9,15,14,8],[4,10,16,13,7],[5,8,14,17,11],[6,12,18,15,9],[10,11,17,19,16],[12,13,16,19,18],[14,15,18,19,17]]},e[3]={vertex:[[0,0,1.175571],[1.051462,0,.5257311],[.3249197,1,.5257311],[-.8506508,.618034,.5257311],[-.8506508,-.618034,.5257311],[.3249197,-1,.5257311],[.8506508,.618034,-.5257311],[.8506508,-.618034,-.5257311],[-.3249197,1,-.5257311],[-1.051462,0,-.5257311],[-.3249197,-1,-.5257311],[0,0,-1.175571]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,5],[0,5,1],[1,5,7],[1,7,6],[1,6,2],[2,6,8],[2,8,3],[3,8,9],[3,9,4],[4,9,10],[4,10,5],[5,10,7],[6,7,11],[6,11,8],[7,10,11],[8,11,9],[9,11,10]]},e[4]={vertex:[[0,0,1.070722],[.7148135,0,.7971752],[-.104682,.7071068,.7971752],[-.6841528,.2071068,.7971752],[-.104682,-.7071068,.7971752],[.6101315,.7071068,.5236279],[1.04156,.2071068,.1367736],[.6101315,-.7071068,.5236279],[-.3574067,1,.1367736],[-.7888348,-.5,.5236279],[-.9368776,.5,.1367736],[-.3574067,-1,.1367736],[.3574067,1,-.1367736],[.9368776,-.5,-.1367736],[.7888348,.5,-.5236279],[.3574067,-1,-.1367736],[-.6101315,.7071068,-.5236279],[-1.04156,-.2071068,-.1367736],[-.6101315,-.7071068,-.5236279],[.104682,.7071068,-.7971752],[.6841528,-.2071068,-.7971752],[.104682,-.7071068,-.7971752],[-.7148135,0,-.7971752],[0,0,-1.070722]],face:[[0,2,3],[1,6,5],[4,9,11],[7,15,13],[8,16,10],[12,14,19],[17,22,18],[20,21,23],[0,1,5,2],[0,3,9,4],[0,4,7,1],[1,7,13,6],[2,5,12,8],[2,8,10,3],[3,10,17,9],[4,11,15,7],[5,6,14,12],[6,13,20,14],[8,12,19,16],[9,17,18,11],[10,16,22,17],[11,18,21,15],[13,15,21,20],[14,20,23,19],[16,19,23,22],[18,22,23,21]]},e[5]={vertex:[[0,0,1.322876],[1.309307,0,.1889822],[-.9819805,.8660254,.1889822],[.1636634,-1.299038,.1889822],[.3273268,.8660254,-.9449112],[-.8183171,-.4330127,-.9449112]],face:[[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]]},e[6]={vertex:[[0,0,1.159953],[1.013464,0,.5642542],[-.3501431,.9510565,.5642542],[-.7715208,-.6571639,.5642542],[.6633206,.9510565,-.03144481],[.8682979,-.6571639,-.3996071],[-1.121664,.2938926,-.03144481],[-.2348831,-1.063314,-.3996071],[.5181548,.2938926,-.9953061],[-.5850262,-.112257,-.9953061]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,9,7],[5,7,9,8],[0,3,7,5,1],[2,4,8,9,6]]},e[7]={vertex:[[0,0,1.118034],[.8944272,0,.6708204],[-.2236068,.8660254,.6708204],[-.7826238,-.4330127,.6708204],[.6708204,.8660254,.2236068],[1.006231,-.4330127,-.2236068],[-1.006231,.4330127,.2236068],[-.6708204,-.8660254,-.2236068],[.7826238,.4330127,-.6708204],[.2236068,-.8660254,-.6708204],[-.8944272,0,-.6708204],[0,0,-1.118034]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,10,7],[5,9,11,8],[7,10,11,9],[0,3,7,9,5,1],[2,4,8,11,10,6]]},e[8]={vertex:[[-.729665,.670121,.319155],[-.655235,-.29213,-.754096],[-.093922,-.607123,.537818],[.702196,.595691,.485187],[.776626,-.36656,-.588064]],face:[[1,4,2],[0,1,2],[3,0,2],[4,3,2],[4,1,0,3]]},e[9]={vertex:[[-.868849,-.100041,.61257],[-.329458,.976099,.28078],[-.26629,-.013796,-.477654],[-.13392,-1.034115,.229829],[.738834,.707117,-.307018],[.859683,-.535264,-.338508]],face:[[3,0,2],[5,3,2],[4,5,2],[1,4,2],[0,1,2],[0,3,5,4,1]]},e[10]={vertex:[[-.610389,.243975,.531213],[-.187812,-.48795,-.664016],[-.187812,.9759,-.664016],[.187812,-.9759,.664016],[.798201,.243975,.132803]],face:[[1,3,0],[3,4,0],[3,1,4],[0,2,1],[0,4,2],[2,4,1]]},e[11]={vertex:[[-1.028778,.392027,-.048786],[-.640503,-.646161,.621837],[-.125162,-.395663,-.540059],[.004683,.888447,-.651988],[.125161,.395663,.540059],[.632925,-.791376,.433102],[1.031672,.157063,-.354165]],face:[[3,2,0],[2,1,0],[2,5,1],[0,4,3],[0,1,4],[4,1,5],[2,3,6],[3,4,6],[5,2,6],[4,5,6]]},e[12]={vertex:[[-.669867,.334933,-.529576],[-.669867,.334933,.529577],[-.4043,1.212901,0],[-.334933,-.669867,-.529576],[-.334933,-.669867,.529577],[.334933,.669867,-.529576],[.334933,.669867,.529577],[.4043,-1.212901,0],[.669867,-.334933,-.529576],[.669867,-.334933,.529577]],face:[[8,9,7],[6,5,2],[3,8,7],[5,0,2],[4,3,7],[0,1,2],[9,4,7],[1,6,2],[9,8,5,6],[8,3,0,5],[3,4,1,0],[4,9,6,1]]},e[13]={vertex:[[-.931836,.219976,-.264632],[-.636706,.318353,.692816],[-.613483,-.735083,-.264632],[-.326545,.979634,0],[-.318353,-.636706,.692816],[-.159176,.477529,-.856368],[.159176,-.477529,-.856368],[.318353,.636706,.692816],[.326545,-.979634,0],[.613482,.735082,-.264632],[.636706,-.318353,.692816],[.931835,-.219977,-.264632]],face:[[11,10,8],[7,9,3],[6,11,8],[9,5,3],[2,6,8],[5,0,3],[4,2,8],[0,1,3],[10,4,8],[1,7,3],[10,11,9,7],[11,6,5,9],[6,2,0,5],[2,4,1,0],[4,10,7,1]]},e[14]={vertex:[[-.93465,.300459,-.271185],[-.838689,-.260219,-.516017],[-.711319,.717591,.128359],[-.710334,-.156922,.080946],[-.599799,.556003,-.725148],[-.503838,-.004675,-.969981],[-.487004,.26021,.48049],[-.460089,-.750282,-.512622],[-.376468,.973135,-.325605],[-.331735,-.646985,.084342],[-.254001,.831847,.530001],[-.125239,-.494738,-.966586],[.029622,.027949,.730817],[.056536,-.982543,-.262295],[.08085,1.087391,.076037],[.125583,-.532729,.485984],[.262625,.599586,.780328],[.391387,-.726999,-.716259],[.513854,-.868287,.139347],[.597475,.85513,.326364],[.641224,.109523,.783723],[.737185,-.451155,.538891],[.848705,-.612742,-.314616],[.976075,.365067,.32976],[1.072036,-.19561,.084927]],face:[[15,18,21],[12,20,16],[6,10,2],[3,0,1],[9,7,13],[2,8,4,0],[0,4,5,1],[1,5,11,7],[7,11,17,13],[13,17,22,18],[18,22,24,21],[21,24,23,20],[20,23,19,16],[16,19,14,10],[10,14,8,2],[15,9,13,18],[12,15,21,20],[6,12,16,10],[3,6,2,0],[9,3,1,7],[9,15,12,6,3],[22,17,11,5,4,8,14,19,23,24]]};let t=n.type&&(n.type<0||n.type>=e.length)?0:n.type||0,i=n.size,r=n.sizeX||i||1,s=n.sizeY||i||1,a=n.sizeZ||i||1,o=n.custom||e[t],l=o.face.length,c=n.faceUV||new Array(l),f=n.faceColors,d=n.flat===void 0?!0:n.flat,h=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,u=[],m=[],_=[],p=[],g=[],v=0,x=0,S=[],E,T,R,M,y,C,L,w;if(d)for(T=0;T{ke();Ht();Ci();pr();nn();ye.CreatePolyhedron=Tz;Z.CreatePolyhedron=(n,e,t)=>av(n,e,t)});function Az(n){let e=n.sideOrientation||ye.DEFAULTSIDE,t=n.radius||1,i=n.flat===void 0?!0:n.flat,r=(n.subdivisions||4)|0,s=n.radiusX||t,a=n.radiusY||t,o=n.radiusZ||t,l=(1+Math.sqrt(5))/2,c=[-1,l,-0,1,l,0,-1,-l,0,1,-l,0,0,-1,-l,0,1,-l,0,-1,l,0,1,l,l,0,1,l,0,-1,-l,0,1,-l,0,-1],f=[0,11,5,0,5,1,0,1,7,0,7,10,12,22,23,1,5,20,5,11,4,23,22,13,22,18,6,7,1,8,14,21,4,14,4,2,16,13,6,15,6,19,3,8,9,4,21,5,13,17,23,6,13,22,19,6,18,9,8,1],d=[0,1,2,3,4,5,6,7,8,9,10,11,0,2,3,3,3,4,7,8,9,9,10,11],h=[5,1,3,1,6,4,0,0,5,3,4,2,2,2,4,0,2,0,1,1,6,0,6,2,0,4,3,3,4,4,3,1,4,2,4,4,0,2,1,1,2,2,3,3,1,3,2,4],u=138/1024,m=239/1024,_=60/1024,p=26/1024,g=-40/1024,v=20/1024,x=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],S=[],E=[],T=[],R=[],M=0,y=new Array(3),C=new Array(3),L;for(L=0;L<3;L++)y[L]=b.Zero(),C[L]=Fe.Zero();for(let G=0;G<20;G++){for(L=0;L<3;L++){let N=f[3*G+L];y[L].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),y[L].normalize(),C[L].copyFromFloats(h[2*N]*u+_+x[G]*g,h[2*N+1]*m+p+x[G]*v)}let O=(N,B,V,J)=>{let Q=b.Lerp(y[0],y[2],B/r),te=b.Lerp(y[1],y[2],B/r),X=r===B?y[2]:b.Lerp(Q,te,N/(r-B));X.normalize();let Y;if(i){let ae=b.Lerp(y[0],y[2],J/r),me=b.Lerp(y[1],y[2],J/r);Y=b.Lerp(ae,me,V/(r-J))}else Y=new b(X.x,X.y,X.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let ve=Fe.Lerp(C[0],C[2],B/r),Ee=Fe.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:Fe.Lerp(ve,Ee,N/(r-B));E.push(X.x*s,X.y*a,X.z*o),T.push(Y.x,Y.y,Y.z),R.push(Ue.x,It?1-Ue.y:Ue.y),S.push(M),M++};for(let N=0;N{ke();Ci();pr();nn();ye.CreateIcoSphere=Az;Z.CreateIcoSphere=(n,e,t)=>ZD(n,e,t)});function QD(n,e,t){var V,J,Q,te,X;let i=!!e.skeleton,r=!!((V=e.morphTargetManager)!=null&&V.numTargets),s=t.localMode||i,a=e.getIndices(),o=i||r?e.getPositionData(!0,!0):e.getVerticesData(D.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(D.NormalKind),c=s?i?e.getVerticesData(D.PositionKind):o:null,f=s?i?e.getVerticesData(D.NormalKind):l:null,d=e.getVerticesData(D.UVKind),h=i?e.getVerticesData(D.MatricesIndicesKind):null,u=i?e.getVerticesData(D.MatricesWeightsKind):null,m=i?e.getVerticesData(D.MatricesIndicesExtraKind):null,_=i?e.getVerticesData(D.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),g=t.normal||b.Up(),v=t.size||b.One(),x=t.angle||0;if(!g){let Y=new b(0,0,1),ve=e.getScene().activeCamera,Ee=b.TransformCoordinates(Y,ve.getWorldMatrix());g=ve.globalPosition.subtract(Ee)}let S=-Math.atan2(g.z,g.x)-Math.PI/2,E=Math.sqrt(g.x*g.x+g.z*g.z),T=Math.atan2(g.y,E),R=new ye;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=_?[]:null;let M=0,y=(Y,ve)=>{let Ee=new jx;if(!a||!o||!l)return Ee;let Ue=a[Y];if(Ee.vertexIdx=Ue*3,Ee.vertexIdxForBones=Ue*4,Ee.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(Ee.position,ve,Ee.position),Ee.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(Ee.normal,ve,Ee.normal),t.captureUVS&&d){let ae=d[Ue*2+1];Ee.uv=new Fe(d[Ue*2],It?1-ae:ae)}return Ee},C=[0,0,0,0],L=(Y,ve)=>{if(Y.length===0)return Y;let Ee=.5*Math.abs(b.Dot(v,ve)),Ue=(ne,fe,Pe,de)=>{for(let Re=0;Re{var Le,Ge,et,rt,Ce,Me,ct,Tt,nt,$e,Wt,qt,re,K,De,xe;let Pe=b.GetClipFactor(ne.position,fe.position,ve,Ee),de=C,Re=C;if(h&&u){let je=ne.matrixIndicesOverride?0:ne.vertexIdxForBones,qe=(Le=ne.matrixIndicesOverride)!=null?Le:h,we=(Ge=ne.matrixWeightsOverride)!=null?Ge:u,At=fe.matrixIndicesOverride?0:fe.vertexIdxForBones,Zt=(et=fe.matrixIndicesOverride)!=null?et:h,rr=(rt=fe.matrixWeightsOverride)!=null?rt:u;de=[0,0,0,0],Re=[0,0,0,0];let vi=0;for(let $i=0;$i<4;++$i)if(we[je+$i]>0){let za=Ue(Zt,qe[je+$i],At,4);de[vi]=qe[je+$i],Re[vi]=mo(we[je+$i],za>=0?rr[za]:0,Pe),vi++}for(let $i=0;$i<4&&vi<4;++$i){let za=Zt[At+$i];Ue(qe,za,je,4)===-1&&(de[vi]=za,Re[vi]=mo(0,rr[At+$i],Pe),vi++)}let yn=Re[0]+Re[1]+Re[2]+Re[3];Re[0]/=yn,Re[1]/=yn,Re[2]/=yn,Re[3]/=yn}let Ye=ne.localPositionOverride?ne.localPositionOverride[0]:(Ce=c==null?void 0:c[ne.vertexIdx])!=null?Ce:0,Et=ne.localPositionOverride?ne.localPositionOverride[1]:(Me=c==null?void 0:c[ne.vertexIdx+1])!=null?Me:0,Ke=ne.localPositionOverride?ne.localPositionOverride[2]:(ct=c==null?void 0:c[ne.vertexIdx+2])!=null?ct:0,Ze=fe.localPositionOverride?fe.localPositionOverride[0]:(Tt=c==null?void 0:c[fe.vertexIdx])!=null?Tt:0,Jt=fe.localPositionOverride?fe.localPositionOverride[1]:(nt=c==null?void 0:c[fe.vertexIdx+1])!=null?nt:0,Lt=fe.localPositionOverride?fe.localPositionOverride[2]:($e=c==null?void 0:c[fe.vertexIdx+2])!=null?$e:0,xi=ne.localNormalOverride?ne.localNormalOverride[0]:(Wt=f==null?void 0:f[ne.vertexIdx])!=null?Wt:0,oe=ne.localNormalOverride?ne.localNormalOverride[1]:(qt=f==null?void 0:f[ne.vertexIdx+1])!=null?qt:0,Gi=ne.localNormalOverride?ne.localNormalOverride[2]:(re=f==null?void 0:f[ne.vertexIdx+2])!=null?re:0,ti=fe.localNormalOverride?fe.localNormalOverride[0]:(K=f==null?void 0:f[fe.vertexIdx])!=null?K:0,Fi=fe.localNormalOverride?fe.localNormalOverride[1]:(De=f==null?void 0:f[fe.vertexIdx+1])!=null?De:0,ot=fe.localNormalOverride?fe.localNormalOverride[2]:(xe=f==null?void 0:f[fe.vertexIdx+2])!=null?xe:0,Di=xi+(ti-xi)*Pe,z=oe+(Fi-oe)*Pe,U=Gi+(ot-Gi)*Pe,ue=Math.sqrt(Di*Di+z*z+U*U);return new jx(b.Lerp(ne.position,fe.position,Pe),b.Lerp(ne.normal,fe.normal,Pe).normalize(),Fe.Lerp(ne.uv,fe.uv,Pe),-1,-1,c?[Ye+(Ze-Ye)*Pe,Et+(Jt-Et)*Pe,Ke+(Lt-Ke)*Pe]:null,f?[Di/ue,z/ue,U/ue]:null,de,Re)},me=null;Y.length>3&&(me=[]);for(let ne=0;ne0,Jt=Et>0,Lt=Ke>0;switch((Ze?1:0)+(Jt?1:0)+(Lt?1:0)){case 0:Y.length>3?(me.push(Y[ne]),me.push(Y[ne+1]),me.push(Y[ne+2])):me=Y;break;case 1:if(me=me!=null?me:new Array,Ze&&(fe=Y[ne+1],Pe=Y[ne+2],de=ae(Y[ne],fe),Re=ae(Y[ne],Pe)),Jt){fe=Y[ne],Pe=Y[ne+2],de=ae(Y[ne+1],fe),Re=ae(Y[ne+1],Pe),me.push(de),me.push(Pe.clone()),me.push(fe.clone()),me.push(Pe.clone()),me.push(de.clone()),me.push(Re);break}Lt&&(fe=Y[ne],Pe=Y[ne+1],de=ae(Y[ne+2],fe),Re=ae(Y[ne+2],Pe)),fe&&Pe&&de&&Re&&(me.push(fe.clone()),me.push(Pe.clone()),me.push(de),me.push(Re),me.push(de.clone()),me.push(Pe.clone()));break;case 2:me=me!=null?me:new Array,Ze||(fe=Y[ne].clone(),Pe=ae(fe,Y[ne+1]),de=ae(fe,Y[ne+2]),me.push(fe),me.push(Pe),me.push(de)),Jt||(fe=Y[ne+1].clone(),Pe=ae(fe,Y[ne+2]),de=ae(fe,Y[ne]),me.push(fe),me.push(Pe),me.push(de)),Lt||(fe=Y[ne+2].clone(),Pe=ae(fe,Y[ne]),de=ae(fe,Y[ne+1]),me.push(fe),me.push(Pe),me.push(de));break;case 3:break}}return me},w=e instanceof Z?e:null,G=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(q.IdentityReadOnly);for(let Y=0;Y{ke();Vn();Ci();Wi();pr();nn();Ffe=new b(1,0,0),Bfe=new b(-1,0,0),Ufe=new b(0,1,0),Vfe=new b(0,-1,0),Gfe=new b(0,0,1),kfe=new b(0,0,-1),jx=class n{constructor(e=b.Zero(),t=b.Up(),i=Fe.Zero(),r=0,s=0,a=null,o=null,l=null,c=null){this.position=e,this.normal=t,this.uv=i,this.vertexIdx=r,this.vertexIdxForBones=s,this.localPositionOverride=a,this.localNormalOverride=o,this.matrixIndicesOverride=l,this.matrixWeightsOverride=c}clone(){var e,t,i,r;return new n(this.position.clone(),this.normal.clone(),this.uv.clone(),this.vertexIdx,this.vertexIdxForBones,(e=this.localPositionOverride)==null?void 0:e.slice(),(t=this.localNormalOverride)==null?void 0:t.slice(),(i=this.matrixIndicesOverride)==null?void 0:i.slice(),(r=this.matrixWeightsOverride)==null?void 0:r.slice())}};Z.CreateDecal=(n,e,t,i,r,s)=>QD(n,e,{position:t,normal:i,size:r,angle:s})});function bz(n={subdivisions:2,tessellation:16,height:1,radius:.25,capSubdivisions:6}){let e=Math.max(n.subdivisions?n.subdivisions:2,1)|0,t=Math.max(n.tessellation?n.tessellation:16,3)|0,i=Math.max(n.height?n.height:1,0),r=Math.max(n.radius?n.radius:.25,0),s=Math.max(n.capSubdivisions?n.capSubdivisions:6,1)|0,a=t,o=e,l=Math.max(n.radiusTop?n.radiusTop:r,0),c=Math.max(n.radiusBottom?n.radiusBottom:r,0),f=i-(l+c),d=0,h=2*Math.PI,u=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),_=Math.acos((c-l)/i),p=[],g=[],v=[],x=[],S=0,E=[],T=f*.5,R=Math.PI*.5,M,y,C=b.Zero(),L=b.Zero(),w=Math.cos(_),G=Math.sin(_),O=new Fe(l*G,T+l*w).subtract(new Fe(c*G,-T+c*w)).length(),N=l*_+O+c*(R-_),B=0;for(y=0;y<=u;y++){let te=[],X=R-_*(y/u);B+=l*_/u;let Y=Math.cos(X),ve=Math.sin(X),Ee=Y*l;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*h+d,me=Math.sin(ae),ne=Math.cos(ae);L.x=Ee*me,L.y=T+ve*l,L.z=Ee*ne,g.push(L.x,L.y,L.z),C.set(Y*me,ve,Y*ne),v.push(C.x,C.y,C.z),x.push(Ue,It?B/N:1-B/N),te.push(S),S++}E.push(te)}let V=i-l-c+w*l-w*c,J=G*(c-l)/V;for(y=1;y<=o;y++){let te=[];B+=O/o;let X=G*(y*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,ve=Y*h+d,Ee=Math.sin(ve),Ue=Math.cos(ve);L.x=X*Ee,L.y=T+w*l-y*V/o,L.z=X*Ue,g.push(L.x,L.y,L.z),C.set(Ee,J,Ue).normalize(),v.push(C.x,C.y,C.z),x.push(Y,It?B/N:1-B/N),te.push(S),S++}E.push(te)}for(y=1;y<=m;y++){let te=[],X=R-_-(Math.PI-_)*(y/m);B+=c*_/m;let Y=Math.cos(X),ve=Math.sin(X),Ee=Y*c;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*h+d,me=Math.sin(ae),ne=Math.cos(ae);L.x=Ee*me,L.y=-T+ve*c,L.z=Ee*ne,g.push(L.x,L.y,L.z),C.set(Y*me,ve,Y*ne),v.push(C.x,C.y,C.z),x.push(Ue,It?B/N:1-B/N),te.push(S),S++}E.push(te)}for(M=0;M{pr();ke();Ci();nn();Z.CreateCapsule=(n,e,t)=>$D(n,e,t);ye.CreateCapsule=bz});var Qi,Iz=I(()=>{Pt();ke();Qi=class n{constructor(e=0,t=0){this.x=e,this.y=t,e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("x is not an integer, floor(x) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("y is not an integer, floor(y) used"))}clone(){return new n(this.x,this.y)}rotate60About(e){let t=this.x;return this.x=e.x+e.y-this.y,this.y=t+this.y-e.x,this}rotateNeg60About(e){let t=this.x;return this.x=t+this.y-e.y,this.y=e.x+e.y-t,this}rotate120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m not an integer only floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n not an integer only floor(n) used"));let i=this.x;return this.x=e-i-this.y,this.y=t+i,this}rotateNeg120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m is not an integer, floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n is not an integer, floor(n) used"));let i=this.x;return this.x=this.y-t,this.y=e+t-i-this.y,this}toCartesianOrigin(e,t){let i=b.Zero();return i.x=e.x+2*this.x*t+this.y*t,i.y=e.y+Math.sqrt(3)*this.y*t,i}static Zero(){return new n(0,0)}}});var sp,ov,ap,JD=I(()=>{ke();Vn();Un();Iz();sp=class{constructor(){this.cartesian=[],this.vertices=[],this.max=[],this.min=[],this.closestTo=[],this.innerFacets=[],this.isoVecsABOB=[],this.isoVecsOBOA=[],this.isoVecsBAOA=[],this.vertexTypes=[],this.IDATA=new ov("icosahedron","Regular",[[0,Sr,-1],[-Sr,1,0],[-1,0,-Sr],[1,0,-Sr],[Sr,1,0],[0,Sr,1],[-1,0,Sr],[-Sr,-1,0],[0,-Sr,-1],[Sr,-1,0],[1,0,Sr],[0,-Sr,1]],[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[7,6,1],[8,7,2],[9,8,3],[10,9,4],[6,10,5],[2,7,1],[3,8,2],[4,9,3],[5,10,4],[1,6,5],[11,6,7],[11,7,8],[11,8,9],[11,9,10],[11,10,6]])}setIndices(){let e=12,t={},i=this.m,r=this.n,s=i;r!==0&&(s=FA(i,r));let a=i/s,o=r/s,l,c,f,d,h,u=Qi.Zero(),m=new Qi(i,r),_=new Qi(-r,i+r),p=Qi.Zero(),g=Qi.Zero(),v=Qi.Zero(),x=[],S,E,T,R,M=[],y=this.vertByDist,C=(L,w,G,O)=>{S=L+"|"+G,E=w+"|"+O,S in t||E in t?S in t&&!(E in t)?t[E]=t[S]:E in t&&!(S in t)&&(t[S]=t[E]):(t[S]=e,t[E]=e,e++),y[G][0]>2?M[t[S]]=[-y[G][0],y[G][1],t[S]]:M[t[S]]=[x[y[G][0]],y[G][1],t[S]]};this.IDATA.edgematch=[[1,"B"],[2,"B"],[3,"B"],[4,"B"],[0,"B"],[10,"O",14,"A"],[11,"O",10,"A"],[12,"O",11,"A"],[13,"O",12,"A"],[14,"O",13,"A"],[0,"O"],[1,"O"],[2,"O"],[3,"O"],[4,"O"],[19,"B",5,"A"],[15,"B",6,"A"],[16,"B",7,"A"],[17,"B",8,"A"],[18,"B",9,"A"]];for(let L=0;L<20;L++){if(x=this.IDATA.face[L],f=x[2],d=x[1],h=x[0],T=u.x+"|"+u.y,S=L+"|"+T,S in t||(t[S]=f,M[f]=[x[y[T][0]],y[T][1]]),T=m.x+"|"+m.y,S=L+"|"+T,S in t||(t[S]=d,M[d]=[x[y[T][0]],y[T][1]]),T=_.x+"|"+_.y,S=L+"|"+T,S in t||(t[S]=h,M[h]=[x[y[T][0]],y[T][1]]),l=this.IDATA.edgematch[L][0],c=this.IDATA.edgematch[L][1],c==="B")for(let w=1;w2?M[t[S]]=[-y[T][0],y[T][1],t[S]]:M[t[S]]=[x[y[T][0]],y[T][1],t[S]])}this.closestTo=M,this.vecToidx=t}calcCoeffs(){let e=this.m,t=this.n,i=Math.sqrt(3)/3,r=e*e+t*t+e*t;this.coau=(e+t)/r,this.cobu=-t/r,this.coav=-i*(e-t)/r,this.cobv=i*(2*e+t)/r}createInnerFacets(){let e=this.m,t=this.n;for(let i=0;i0&&r0){let E=FA(e,t),T=e/E,R=t/E;for(let y=1;yE.x-T.x),i.sort((E,T)=>E.y-T.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let E=0;E{let R=E.clone();return T==="A"&&R.rotateNeg120(e,t),T==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},u=[],m=[],_=[],p=[],g={},v=[],x=-1,S=-1;for(let E=0;EE[2]-T[2]),v.sort((E,T)=>E[3]-T[3]),v.sort((E,T)=>E[1]-T[1]),v.sort((E,T)=>E[0]-T[0]);for(let E=0;Et.vecToidx[e+r]))}mapABOBtoDATA(e,t){let i=t.IDATA.edgematch[e][0];for(let r=0;r-1?i[a][1]>0&&t[i[a][0]].push([a,i[a][1]]):t[12].push([a,i[a][0]]);let r=[];for(let a=0;a<12;a++)r[a]=a;let s=12;for(let a=0;a<12;a++){t[a].sort((o,l)=>o[1]-l[1]);for(let o=0;oa[3]-o[3]);for(let a=0;a0;)s=t[l],this.face[s].indexOf(o)>-1?(a=(this.face[s].indexOf(o)+1)%3,o=this.face[s][a],i.push(o),r.push(s),t.splice(l,1),l=0):l++;return this.adjacentFaces.push(i),r}toGoldbergPolyhedronData(){let e=new ov("GeoDual","Goldberg",[],[]);e.name="GD dual";let t=this.vertex.length,i=new Array(t);for(let c=0;ci){let c=r;r=i,i=c,ee.Warn("n > m therefore m and n swapped")}let s=new sp;s.build(i,r);let o={custom:ap.BuildGeodesicData(s),size:e.size,sizeX:e.sizeX,sizeY:e.sizeY,sizeZ:e.sizeZ,faceUV:e.faceUV,faceColors:e.faceColors,flat:e.flat,updatable:e.updatable,sideOrientation:e.sideOrientation,frontUVs:e.frontUVs,backUVs:e.backUVs};return av(n,o,t)}var Cz=I(()=>{qD();Pt();JD()});var lv,Pz=I(()=>{ke();Wi();Ci();Ht();Pt();Z._GoldbergMeshParser=(n,e)=>lv.Parse(n,e);lv=class n extends Z{constructor(){super(...arguments),this.goldbergData={faceColors:[],faceCenters:[],faceZaxis:[],faceXaxis:[],faceYaxis:[],nbSharedFaces:0,nbUnsharedFaces:0,nbFaces:0,nbFacesAtPole:0,adjacentFaces:[]}}relatedGoldbergFace(e,t){return t===void 0?(e>this.goldbergData.nbUnsharedFaces-1&&(ee.Warn("Maximum number of unshared faces used"),e=this.goldbergData.nbUnsharedFaces-1),this.goldbergData.nbUnsharedFaces+e):(e>11&&(ee.Warn("Last pole used"),e=11),t>this.goldbergData.nbFacesAtPole-1&&(ee.Warn("Maximum number of faces at a pole used"),t=this.goldbergData.nbFacesAtPole-1),12+e*this.goldbergData.nbFacesAtPole+t)}_changeGoldbergFaceColors(e){for(let i=0;i1&&(d=1),c.push(d,h);for(let u=0;u<6;u++)d=a.x+o*Math.cos(l+u*Math.PI/3),h=a.y+o*Math.sin(l+u*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,h);for(let u=r;ult.FromArray(s)),i.faceCenters=i.faceCenters.map(s=>b.FromArray(s)),i.faceZaxis=i.faceZaxis.map(s=>b.FromArray(s)),i.faceXaxis=i.faceXaxis.map(s=>b.FromArray(s)),i.faceYaxis=i.faceYaxis.map(s=>b.FromArray(s));let r=new n(e.name,t);return r.goldbergData=i,r}}});function Wfe(n,e){let t=n.size,i=n.sizeX||t||1,r=n.sizeY||t||1,s=n.sizeZ||t||1,a=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,h=-1/0,u=1/0,m=-1/0;for(let g=0;go){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new sp;c.build(o,l);let f=ap.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),h=new lv(n,t);e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),h._originalBuilderSideOrientation=e.sideOrientation,Wfe(e,d).applyToMesh(h,e.updatable),h.goldbergData.nbSharedFaces=f.sharedNodes,h.goldbergData.nbUnsharedFaces=f.poleNodes,h.goldbergData.adjacentFaces=f.adjacentFaces,h.goldbergData.nbFaces=h.goldbergData.nbSharedFaces+h.goldbergData.nbUnsharedFaces,h.goldbergData.nbFacesAtPole=(h.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{ke();Ht();Ci();pr();Pt();JD();Pz();nn()});function Hfe(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new eL(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{rh();ke();Ci();yf();HD();eL=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new pm(e,t),this._tempPaths.push(this._currentPath)}lineTo(e,t){this._currentPath.addLineTo(e,t)}quadraticCurveTo(e,t,i,r){this._currentPath.addQuadraticCurveTo(e,t,i,r,this._resolution)}bezierCurveTo(e,t,i,r,s,a){this._currentPath.addBezierCurveTo(e,t,i,r,s,a,this._resolution)}extractHoles(){for(let e of this._tempPaths)e.area()>0?this._holes.push(e):this._paths.push(e);if(!this._paths.length&&this._holes.length){let e=this._holes;this._holes=this._paths,this._paths=e}this._tempPaths.length=0}get paths(){return this._paths}get holes(){return this._holes}}});var hs,tL=I(()=>{Xg();nH();RD();dH();uH();pH();gH();EH();hz();HD();_z();gz();Ez();bD();AD();Sz();qD();xz();Rz();Mz();Cz();Lz();Nz();hs={CreateBox:xD,CreateTiledBox:fH,CreateSphere:ID,CreateDisc:gD,CreateIcoSphere:ZD,CreateRibbon:Do,CreateCylinder:yD,CreateTorus:CD,CreateTorusKnot:PD,CreateLineSystem:VD,CreateLines:GD,CreateDashedLines:kD,ExtrudeShape:zD,ExtrudeShapeCustom:XD,CreateLathe:YD,CreateTiledPlane:lH,CreatePlane:KD,CreateGround:ED,CreateTiledGround:SD,CreateGroundFromHeightMap:TD,CreatePolygon:Kx,ExtrudePolygon:sv,CreateTube:jD,CreatePolyhedron:av,CreateGeodesic:yz,CreateGoldberg:Dz,CreateDecal:QD,CreateCapsule:$D,CreateText:Oz}});var Hs,qx=I(()=>{Hs=class{constructor(){this.previousWorldMatrices={},this.previousBones={}}static AddUniforms(e){e.push("previousWorld","previousViewProjection","mPreviousBones")}static AddSamplers(e){}bindForSubMesh(e,t,i,r,s){if(t.prePassRenderer&&t.prePassRenderer.enabled&&t.prePassRenderer.currentRTisSceneRT&&(t.prePassRenderer.getIndex(2)!==-1||t.prePassRenderer.getIndex(11)!==-1)){this.previousWorldMatrices[i.uniqueId]||(this.previousWorldMatrices[i.uniqueId]=r.clone()),this.previousViewProjection||(this.previousViewProjection=t.getTransformMatrix().clone(),this.currentViewProjection=t.getTransformMatrix().clone());let a=t.getEngine();this.currentViewProjection.updateFlag!==t.getTransformMatrix().updateFlag?(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection),this.currentViewProjection.copyFrom(t.getTransformMatrix())):this._lastUpdateFrameId!==a.frameId&&(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection)),e.setMatrix("previousWorld",this.previousWorldMatrices[i.uniqueId]),e.setMatrix("previousViewProjection",this.previousViewProjection),this.previousWorldMatrices[i.uniqueId]=r.clone()}}}});var Mr,Ga=I(()=>{Mr=class{constructor(e){if(this.VERTEXOUTPUT_INVARIANT=!1,this._keys=[],this._isDirty=!0,this._areLightsDirty=!0,this._areLightsDisposed=!1,this._areAttributesDirty=!0,this._areTexturesDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._normals=!1,this._uvs=!1,this._needNormals=!1,this._needUVs=!1,this._externalProperties=e,e)for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&this._setDefaultValue(t)}get isDirty(){return this._isDirty}markAsProcessed(){this._isDirty=!1,this._areAttributesDirty=!1,this._areTexturesDirty=!1,this._areFresnelDirty=!1,this._areLightsDirty=!1,this._areLightsDisposed=!1,this._areMiscDirty=!1,this._arePrePassDirty=!1,this._areImageProcessingDirty=!1}markAsUnprocessed(){this._isDirty=!0}markAllAsDirty(){this._areTexturesDirty=!0,this._areAttributesDirty=!0,this._areLightsDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._isDirty=!0}markAsImageProcessingDirty(){this._areImageProcessingDirty=!0,this._isDirty=!0}markAsLightDirty(e=!1){this._areLightsDirty=!0,this._areLightsDisposed=this._areLightsDisposed||e,this._isDirty=!0}markAsAttributesDirty(){this._areAttributesDirty=!0,this._isDirty=!0}markAsTexturesDirty(){this._areTexturesDirty=!0,this._isDirty=!0}markAsFresnelDirty(){this._areFresnelDirty=!0,this._isDirty=!0}markAsMiscDirty(){this._areMiscDirty=!0,this._isDirty=!0}markAsPrePassDirty(){this._arePrePassDirty=!0,this._isDirty=!0}rebuild(){this._keys.length=0;for(let e of Object.keys(this))e[0]!=="_"&&this._keys.push(e);if(this._externalProperties)for(let e in this._externalProperties)this._keys.indexOf(e)===-1&&this._keys.push(e)}isEqual(e){if(this._keys.length!==e._keys.length)return!1;for(let t=0;t{Ht();Wi();Ci();ND();Yn();FD();Z._LinesMeshParser=(n,e)=>Eh.Parse(n,e);Eh=class n extends Z{_isShaderMaterial(e){return e?e.getClassName()==="ShaderMaterial":!1}constructor(e,t=null,i=null,r=null,s,a,o,l){super(e,t,i,r,s),this.useVertexColor=a,this.useVertexAlpha=o,this.color=new pe(1,1,1),this.alpha=1,this._shaderLanguage=0,this._ownsMaterial=!1,r&&(this.color=r.color.clone(),this.alpha=r.alpha,this.useVertexColor=r.useVertexColor,this.useVertexAlpha=r.useVertexAlpha),this.intersectionThreshold=.1;let c=[],f={attributes:[D.PositionKind],uniforms:["world","viewProjection"],needAlphaBlending:!0,defines:c,useClipPlane:null,shaderLanguage:0};if(this.useVertexAlpha?f.defines.push("#define VERTEXALPHA"):f.needAlphaBlending=!1,this.useVertexColor?(f.defines.push("#define VERTEXCOLOR"),f.attributes.push(D.ColorKind)):(f.uniforms.push("color"),this._color4=new lt),l)this.material=l;else{this.getScene().getEngine().isWebGPU&&!n.ForceGLSL&&(this._shaderLanguage=1),f.shaderLanguage=this._shaderLanguage,f.extraInitializationsAsync=async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(BH(),FH)),Promise.resolve().then(()=>(zH(),HH))]):await Promise.all([Promise.resolve().then(()=>(nz(),rz)),Promise.resolve().then(()=>(dz(),fz))])};let h=new Lo("colorShader",this.getScene(),"color",f,!1);h.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(h)}}getClassName(){return"LinesMesh"}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){let t=this.material;if(t===e)return;let i=t&&this._ownsMaterial;this._ownsMaterial=!1,this._setInternalMaterial(e),i&&(t==null||t.dispose())}_setInternalMaterial(e){this._setMaterial(e),this.material&&(this.material.fillMode=Se.LineListDrawMode,this.material.disableLighting=!0)}get checkCollisions(){return!1}set checkCollisions(e){}_bind(e,t){if(!this._geometry)return this;let i=this.isUnIndexed?null:this._geometry.getIndexBuffer();if(!this._userInstancedBuffersStorage||this.hasThinInstances?this._geometry._bind(t,i):this._geometry._bind(t,i,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects),!this.useVertexColor&&this._isShaderMaterial(this.material)){let{r,g:s,b:a}=this.color;this._color4.set(r,s,a,this.alpha),this.material.setColor4("color",this._color4)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let r=this.getScene().getEngine();return this._unIndexed?r.drawArraysType(Se.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Se.LineListDrawMode,e.indexStart,e.indexCount,i),this}dispose(e,t=!1,i){var r,s;i||(this._ownsMaterial?(r=this.material)==null||r.dispose(!1,!1,!0):t&&((s=this.material)==null||s.dispose(!1,!1,!0))),super.dispose(e)}clone(e,t=null,i){if(t&&t._addToSceneRootNodes===void 0){let r=t;return r.source=this,new n(e,this.getScene(),r.parent,r.source,r.doNotCloneChildren)}return new n(e,this.getScene(),t,this,i)}createInstance(e){let t=new kD(e,this);if(this.instancedBuffers){t.instancedBuffers={};for(let i in this.instancedBuffers)t.instancedBuffers[i]=this.instancedBuffers[i]}return t}serialize(e){super.serialize(e),e.color=this.color.asArray(),e.alpha=this.alpha}static Parse(e,t){let i=new n(e.name,t);return i.color=pe.FromArray(e.color),i.alpha=e.alpha,i}};Eh.ForceGLSL=!1;kD=class extends hc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function uz(n){let e=[],t=[],i=n.lines,r=n.colors,s=[],a=0;for(let l=0;l0&&(e.push(a-1),e.push(a)),a++}}let o=new ye;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function mz(n){let e=n.dashSize||3,t=n.gapSize||1,i=n.dashNb||200,r=n.points,s=[],a=[],o=b.Zero(),l=0,c,f,d=0,h;for(h=0;h{let d=b.Zero(),h=f.length/6,u=0,m,_,p=0,g,v;for(g=0;g{ke();Ci();pr();hz();Wi();Pt();ye.CreateLineSystem=uz;ye.CreateDashedLines=mz;Z.CreateLines=(n,e,t=null,i=!1,r=null)=>HD(n,{points:e,updatable:i,instance:r},t);Z.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>zD(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var XD,nv,jx,_z=I(()=>{Pt();ke();Wi();Ci();pr();rh();Un();Ni();XD=class extends Fe{constructor(e,t){super(e.x,e.y),this.index=t}},nv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new XD(i,this.elements.length);t.push(r),this.elements.push(r)}return t}computeBounds(){let e=new Fe(this.elements[0].x,this.elements[0].y),t=new Fe(this.elements[0].x,this.elements[0].y);for(let i of this.elements)i.xt.x&&(t.x=i.x),i.yt.y&&(t.y=i.y);return{min:e,max:t,width:t.x-e.x,height:t.y-e.y}}},jx=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new nv,this._outlinepoints=new nv,this._holes=new Array,this._epoints=new Array,this._eholes=new Array,this.bjsEarcut=r,this._name=e,this._scene=i||Oe.LastCreatedScene;let s;t instanceof pm?s=t.getPoints():s=t,this._addToepoint(s),this._points.add(s),this._outlinepoints.add(s),typeof this.bjsEarcut=="undefined"&&ee.Warn("Earcut was not found, the polygon will not be built.")}addHole(e){this._points.add(e);let t=new nv;return t.add(e),this._holes.push(t),this._eholes.push(this._epoints.length/2),this._addToepoint(e),this}build(e=!1,t=0,i=2){let r=new Z(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(D.PositionKind,s.positions,e),r.setVerticesData(D.NormalKind,s.normals,e),r.setVerticesData(D.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new ye,r=[],s=[],a=[],o=this._points.computeBounds();for(let f of this._points.elements)r.push(0,1,0),s.push(f.x,0,f.y),a.push((f.x-o.min.x)/o.width,(f.y-o.min.y)/o.height);let l=[],c=this.bjsEarcut(this._epoints,this._eholes,2);for(let f=0;f0){let f=s.length/3;for(let h of this._points.elements)r.push(0,-1,0),s.push(h.x,-e,h.y),a.push(1-(h.x-o.min.x)/o.width,1-(h.y-o.min.y)/o.height);let d=l.length;for(let h=0;hc?Rc?M{ke();Ht();Ci();pr();_z();Wi();Ni();nn();ye.CreatePolygon=gz;Z.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>qx(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);Z.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>sv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function KD(n,e,t=null){let i=e.path,r=e.shape,s=e.scale||1,a=e.rotation||0,o=e.cap===0?0:e.cap||Z.NO_CAP,l=e.updatable,c=Z._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,h=e.closeShape||!1,u=e.closePath||!1,m=e.capFunction||null;return vz(n,r,i,s,a,null,null,u,h,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function jD(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(x,S)=>{var T,R;let E=(R=(T=e.scaleFunction)==null?void 0:T.call(e,x,S))!=null?R:1;return s.copyFromFloats(E,E,E)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||Z.NO_CAP,d=e.updatable,h=e.firstNormal||null,u=e.adjustFrame||!1,m=Z._GetDefaultSideOrientation(e.sideOrientation),_=e.instance,p=e.invertUV||!1,g=e.capFunction||null;return vz(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,_||null,p,e.frontUVs||null,e.backUVs||null,h,u,g||null)}function vz(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S){let E=(L,w,G,O,N,B,V,J,Q,te,X)=>{let Y=G.getTangents(),ve=G.getNormals(),Ee=G.getBinormals(),Ue=G.getDistances();if(X){for(let Ke=0;Ke0){let Ze=Y[Ke-1];b.Dot(Ze,Y[Ke])<0&&Y[Ke].scaleInPlace(-1),Ze=ve[Ke-1],b.Dot(Ze,ve[Ke])<0&&ve[Ke].scaleInPlace(-1),Ze=Ee[Ke-1],b.Dot(Ze,Ee[Ke])<0&&Ee[Ke].scaleInPlace(-1)}}let ae=0,me=()=>N!==null?N:b.OneReadOnly,fe=te&&J?J:()=>B!==null?B:0,Pe=te&&V?V:me,de=Q===Z.NO_CAP||Q===Z.CAP_END?0:2,Re=$.Matrix[0];for(let Ke=0;Ke{let Ze=Array(),Jt=b.Zero(),Lt;for(Lt=0;Lt3?0:c,R=E(e,t,M,y,T,r,s,a,c,f,x);let C=Do(n,{pathArray:R,closeArray:o,closePath:l,updatable:h,sideOrientation:u,invertUV:_,frontUVs:p||void 0,backUVs:g||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var Ez=I(()=>{ke();Ci();Xg();rh();Z.ExtrudeShape=(n,e,t,i,r,s,a=null,o,l,c)=>{let f={shape:e,path:t,scale:i,rotation:r,cap:s===0?0:s||Z.NO_CAP,sideOrientation:l,instance:c,updatable:o};return KD(n,f,a)};Z.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let h={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||Z.NO_CAP,sideOrientation:f,instance:d,updatable:c};return jD(n,h,l)}});function qD(n,e,t=null){let i=e.arc?e.arc<=0||e.arc>1?1:e.arc:1,r=e.closed===void 0?!0:e.closed,s=e.shape,a=e.radius||1,o=e.tessellation||64,l=e.clip||0,c=e.updatable,f=Z._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||Z.NO_CAP,h=Math.PI*2,u=[],m=e.invertUV||!1,_,p,g=h/o*i,v,x;for(_=0;_<=o-l;_++){for(x=[],(d==Z.CAP_START||d==Z.CAP_ALL)&&(x.push(new b(0,s[0].y,0)),x.push(new b(Math.cos(_*g)*s[0].x*a,s[0].y,Math.sin(_*g)*s[0].x*a))),p=0;p{ke();Ci();Xg();Z.CreateLathe=(n,e,t,i,r,s,a)=>qD(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function Tz(n){let e=[],t=[],i=[],r=[],s=n.width!==void 0?n.width:n.size!==void 0?n.size:1,a=n.height!==void 0?n.height:n.size!==void 0?n.size:1,o=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,l=s/2,c=a/2;t.push(-l,-c,0),i.push(0,0,-1),r.push(0,It?1:0),t.push(l,-c,0),i.push(0,0,-1),r.push(1,It?1:0),t.push(l,c,0),i.push(0,0,-1),r.push(1,It?0:1),t.push(-l,c,0),i.push(0,0,-1),r.push(0,It?0:1),e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),ye._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new ye;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function ZD(n,e={},t=null){let i=new Z(n,t);return e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,Tz(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var Az=I(()=>{Ci();pr();nn();ye.CreatePlane=Tz;Z.CreatePlane=(n,e,t,i,r)=>ZD(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function QD(n,e,t=null){let i=e.path,r=e.instance,s=1;e.radius!==void 0?s=e.radius:r&&(s=r._creationDataStorage.radius);let a=e.tessellation||64,o=e.radiusFunction||null,l=e.cap||Z.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=Z._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let h=(g,v,x,S,E,T,R,M)=>{let y=v.getTangents(),C=v.getNormals(),L=v.getDistances(),G=Math.PI*2/E*M,N=T||(()=>S),B,V,J,Q,te=$.Matrix[0],X=R===Z.NO_CAP||R===Z.CAP_END?0:2;for(let ve=0;ve{let Ue=Array();for(let ae=0;ae3?0:l,m=h(i,u,_,s,a,o,l,e.arc);let p=Do(n,{pathArray:m,closePath:!0,closeArray:!1,updatable:f,sideOrientation:d,invertUV:c,frontUVs:e.frontUVs,backUVs:e.backUVs},t);return p._creationDataStorage.pathArray=m,p._creationDataStorage.path3D=u,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var xz=I(()=>{ke();Ci();Xg();rh();Z.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>QD(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function Rz(n){let e=[];e[0]={vertex:[[0,0,1.732051],[1.632993,0,-.5773503],[-.8164966,1.414214,-.5773503],[-.8164966,-1.414214,-.5773503]],face:[[0,1,2],[0,2,3],[0,3,1],[1,3,2]]},e[1]={vertex:[[0,0,1.414214],[1.414214,0,0],[0,1.414214,0],[-1.414214,0,0],[0,-1.414214,0],[0,0,-1.414214]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,1],[1,4,5],[1,5,2],[2,5,3],[3,5,4]]},e[2]={vertex:[[0,0,1.070466],[.7136442,0,.7978784],[-.3568221,.618034,.7978784],[-.3568221,-.618034,.7978784],[.7978784,.618034,.3568221],[.7978784,-.618034,.3568221],[-.9341724,.381966,.3568221],[.1362939,1,.3568221],[.1362939,-1,.3568221],[-.9341724,-.381966,.3568221],[.9341724,.381966,-.3568221],[.9341724,-.381966,-.3568221],[-.7978784,.618034,-.3568221],[-.1362939,1,-.3568221],[-.1362939,-1,-.3568221],[-.7978784,-.618034,-.3568221],[.3568221,.618034,-.7978784],[.3568221,-.618034,-.7978784],[-.7136442,0,-.7978784],[0,0,-1.070466]],face:[[0,1,4,7,2],[0,2,6,9,3],[0,3,8,5,1],[1,5,11,10,4],[2,7,13,12,6],[3,9,15,14,8],[4,10,16,13,7],[5,8,14,17,11],[6,12,18,15,9],[10,11,17,19,16],[12,13,16,19,18],[14,15,18,19,17]]},e[3]={vertex:[[0,0,1.175571],[1.051462,0,.5257311],[.3249197,1,.5257311],[-.8506508,.618034,.5257311],[-.8506508,-.618034,.5257311],[.3249197,-1,.5257311],[.8506508,.618034,-.5257311],[.8506508,-.618034,-.5257311],[-.3249197,1,-.5257311],[-1.051462,0,-.5257311],[-.3249197,-1,-.5257311],[0,0,-1.175571]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,5],[0,5,1],[1,5,7],[1,7,6],[1,6,2],[2,6,8],[2,8,3],[3,8,9],[3,9,4],[4,9,10],[4,10,5],[5,10,7],[6,7,11],[6,11,8],[7,10,11],[8,11,9],[9,11,10]]},e[4]={vertex:[[0,0,1.070722],[.7148135,0,.7971752],[-.104682,.7071068,.7971752],[-.6841528,.2071068,.7971752],[-.104682,-.7071068,.7971752],[.6101315,.7071068,.5236279],[1.04156,.2071068,.1367736],[.6101315,-.7071068,.5236279],[-.3574067,1,.1367736],[-.7888348,-.5,.5236279],[-.9368776,.5,.1367736],[-.3574067,-1,.1367736],[.3574067,1,-.1367736],[.9368776,-.5,-.1367736],[.7888348,.5,-.5236279],[.3574067,-1,-.1367736],[-.6101315,.7071068,-.5236279],[-1.04156,-.2071068,-.1367736],[-.6101315,-.7071068,-.5236279],[.104682,.7071068,-.7971752],[.6841528,-.2071068,-.7971752],[.104682,-.7071068,-.7971752],[-.7148135,0,-.7971752],[0,0,-1.070722]],face:[[0,2,3],[1,6,5],[4,9,11],[7,15,13],[8,16,10],[12,14,19],[17,22,18],[20,21,23],[0,1,5,2],[0,3,9,4],[0,4,7,1],[1,7,13,6],[2,5,12,8],[2,8,10,3],[3,10,17,9],[4,11,15,7],[5,6,14,12],[6,13,20,14],[8,12,19,16],[9,17,18,11],[10,16,22,17],[11,18,21,15],[13,15,21,20],[14,20,23,19],[16,19,23,22],[18,22,23,21]]},e[5]={vertex:[[0,0,1.322876],[1.309307,0,.1889822],[-.9819805,.8660254,.1889822],[.1636634,-1.299038,.1889822],[.3273268,.8660254,-.9449112],[-.8183171,-.4330127,-.9449112]],face:[[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]]},e[6]={vertex:[[0,0,1.159953],[1.013464,0,.5642542],[-.3501431,.9510565,.5642542],[-.7715208,-.6571639,.5642542],[.6633206,.9510565,-.03144481],[.8682979,-.6571639,-.3996071],[-1.121664,.2938926,-.03144481],[-.2348831,-1.063314,-.3996071],[.5181548,.2938926,-.9953061],[-.5850262,-.112257,-.9953061]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,9,7],[5,7,9,8],[0,3,7,5,1],[2,4,8,9,6]]},e[7]={vertex:[[0,0,1.118034],[.8944272,0,.6708204],[-.2236068,.8660254,.6708204],[-.7826238,-.4330127,.6708204],[.6708204,.8660254,.2236068],[1.006231,-.4330127,-.2236068],[-1.006231,.4330127,.2236068],[-.6708204,-.8660254,-.2236068],[.7826238,.4330127,-.6708204],[.2236068,-.8660254,-.6708204],[-.8944272,0,-.6708204],[0,0,-1.118034]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,10,7],[5,9,11,8],[7,10,11,9],[0,3,7,9,5,1],[2,4,8,11,10,6]]},e[8]={vertex:[[-.729665,.670121,.319155],[-.655235,-.29213,-.754096],[-.093922,-.607123,.537818],[.702196,.595691,.485187],[.776626,-.36656,-.588064]],face:[[1,4,2],[0,1,2],[3,0,2],[4,3,2],[4,1,0,3]]},e[9]={vertex:[[-.868849,-.100041,.61257],[-.329458,.976099,.28078],[-.26629,-.013796,-.477654],[-.13392,-1.034115,.229829],[.738834,.707117,-.307018],[.859683,-.535264,-.338508]],face:[[3,0,2],[5,3,2],[4,5,2],[1,4,2],[0,1,2],[0,3,5,4,1]]},e[10]={vertex:[[-.610389,.243975,.531213],[-.187812,-.48795,-.664016],[-.187812,.9759,-.664016],[.187812,-.9759,.664016],[.798201,.243975,.132803]],face:[[1,3,0],[3,4,0],[3,1,4],[0,2,1],[0,4,2],[2,4,1]]},e[11]={vertex:[[-1.028778,.392027,-.048786],[-.640503,-.646161,.621837],[-.125162,-.395663,-.540059],[.004683,.888447,-.651988],[.125161,.395663,.540059],[.632925,-.791376,.433102],[1.031672,.157063,-.354165]],face:[[3,2,0],[2,1,0],[2,5,1],[0,4,3],[0,1,4],[4,1,5],[2,3,6],[3,4,6],[5,2,6],[4,5,6]]},e[12]={vertex:[[-.669867,.334933,-.529576],[-.669867,.334933,.529577],[-.4043,1.212901,0],[-.334933,-.669867,-.529576],[-.334933,-.669867,.529577],[.334933,.669867,-.529576],[.334933,.669867,.529577],[.4043,-1.212901,0],[.669867,-.334933,-.529576],[.669867,-.334933,.529577]],face:[[8,9,7],[6,5,2],[3,8,7],[5,0,2],[4,3,7],[0,1,2],[9,4,7],[1,6,2],[9,8,5,6],[8,3,0,5],[3,4,1,0],[4,9,6,1]]},e[13]={vertex:[[-.931836,.219976,-.264632],[-.636706,.318353,.692816],[-.613483,-.735083,-.264632],[-.326545,.979634,0],[-.318353,-.636706,.692816],[-.159176,.477529,-.856368],[.159176,-.477529,-.856368],[.318353,.636706,.692816],[.326545,-.979634,0],[.613482,.735082,-.264632],[.636706,-.318353,.692816],[.931835,-.219977,-.264632]],face:[[11,10,8],[7,9,3],[6,11,8],[9,5,3],[2,6,8],[5,0,3],[4,2,8],[0,1,3],[10,4,8],[1,7,3],[10,11,9,7],[11,6,5,9],[6,2,0,5],[2,4,1,0],[4,10,7,1]]},e[14]={vertex:[[-.93465,.300459,-.271185],[-.838689,-.260219,-.516017],[-.711319,.717591,.128359],[-.710334,-.156922,.080946],[-.599799,.556003,-.725148],[-.503838,-.004675,-.969981],[-.487004,.26021,.48049],[-.460089,-.750282,-.512622],[-.376468,.973135,-.325605],[-.331735,-.646985,.084342],[-.254001,.831847,.530001],[-.125239,-.494738,-.966586],[.029622,.027949,.730817],[.056536,-.982543,-.262295],[.08085,1.087391,.076037],[.125583,-.532729,.485984],[.262625,.599586,.780328],[.391387,-.726999,-.716259],[.513854,-.868287,.139347],[.597475,.85513,.326364],[.641224,.109523,.783723],[.737185,-.451155,.538891],[.848705,-.612742,-.314616],[.976075,.365067,.32976],[1.072036,-.19561,.084927]],face:[[15,18,21],[12,20,16],[6,10,2],[3,0,1],[9,7,13],[2,8,4,0],[0,4,5,1],[1,5,11,7],[7,11,17,13],[13,17,22,18],[18,22,24,21],[21,24,23,20],[20,23,19,16],[16,19,14,10],[10,14,8,2],[15,9,13,18],[12,15,21,20],[6,12,16,10],[3,6,2,0],[9,3,1,7],[9,15,12,6,3],[22,17,11,5,4,8,14,19,23,24]]};let t=n.type&&(n.type<0||n.type>=e.length)?0:n.type||0,i=n.size,r=n.sizeX||i||1,s=n.sizeY||i||1,a=n.sizeZ||i||1,o=n.custom||e[t],l=o.face.length,c=n.faceUV||new Array(l),f=n.faceColors,d=n.flat===void 0?!0:n.flat,h=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,u=[],m=[],_=[],p=[],g=[],v=0,x=0,S=[],E,T,R,M,y,C,L,w;if(d)for(T=0;T{ke();Ht();Ci();pr();nn();ye.CreatePolyhedron=Rz;Z.CreatePolyhedron=(n,e,t)=>av(n,e,t)});function bz(n){let e=n.sideOrientation||ye.DEFAULTSIDE,t=n.radius||1,i=n.flat===void 0?!0:n.flat,r=(n.subdivisions||4)|0,s=n.radiusX||t,a=n.radiusY||t,o=n.radiusZ||t,l=(1+Math.sqrt(5))/2,c=[-1,l,-0,1,l,0,-1,-l,0,1,-l,0,0,-1,-l,0,1,-l,0,-1,l,0,1,l,l,0,1,l,0,-1,-l,0,1,-l,0,-1],f=[0,11,5,0,5,1,0,1,7,0,7,10,12,22,23,1,5,20,5,11,4,23,22,13,22,18,6,7,1,8,14,21,4,14,4,2,16,13,6,15,6,19,3,8,9,4,21,5,13,17,23,6,13,22,19,6,18,9,8,1],d=[0,1,2,3,4,5,6,7,8,9,10,11,0,2,3,3,3,4,7,8,9,9,10,11],h=[5,1,3,1,6,4,0,0,5,3,4,2,2,2,4,0,2,0,1,1,6,0,6,2,0,4,3,3,4,4,3,1,4,2,4,4,0,2,1,1,2,2,3,3,1,3,2,4],u=138/1024,m=239/1024,_=60/1024,p=26/1024,g=-40/1024,v=20/1024,x=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],S=[],E=[],T=[],R=[],M=0,y=new Array(3),C=new Array(3),L;for(L=0;L<3;L++)y[L]=b.Zero(),C[L]=Fe.Zero();for(let G=0;G<20;G++){for(L=0;L<3;L++){let N=f[3*G+L];y[L].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),y[L].normalize(),C[L].copyFromFloats(h[2*N]*u+_+x[G]*g,h[2*N+1]*m+p+x[G]*v)}let O=(N,B,V,J)=>{let Q=b.Lerp(y[0],y[2],B/r),te=b.Lerp(y[1],y[2],B/r),X=r===B?y[2]:b.Lerp(Q,te,N/(r-B));X.normalize();let Y;if(i){let ae=b.Lerp(y[0],y[2],J/r),me=b.Lerp(y[1],y[2],J/r);Y=b.Lerp(ae,me,V/(r-J))}else Y=new b(X.x,X.y,X.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let ve=Fe.Lerp(C[0],C[2],B/r),Ee=Fe.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:Fe.Lerp(ve,Ee,N/(r-B));E.push(X.x*s,X.y*a,X.z*o),T.push(Y.x,Y.y,Y.z),R.push(Ue.x,It?1-Ue.y:Ue.y),S.push(M),M++};for(let N=0;N{ke();Ci();pr();nn();ye.CreateIcoSphere=bz;Z.CreateIcoSphere=(n,e,t)=>JD(n,e,t)});function eL(n,e,t){var V,J,Q,te,X;let i=!!e.skeleton,r=!!((V=e.morphTargetManager)!=null&&V.numTargets),s=t.localMode||i,a=e.getIndices(),o=i||r?e.getPositionData(!0,!0):e.getVerticesData(D.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(D.NormalKind),c=s?i?e.getVerticesData(D.PositionKind):o:null,f=s?i?e.getVerticesData(D.NormalKind):l:null,d=e.getVerticesData(D.UVKind),h=i?e.getVerticesData(D.MatricesIndicesKind):null,u=i?e.getVerticesData(D.MatricesWeightsKind):null,m=i?e.getVerticesData(D.MatricesIndicesExtraKind):null,_=i?e.getVerticesData(D.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),g=t.normal||b.Up(),v=t.size||b.One(),x=t.angle||0;if(!g){let Y=new b(0,0,1),ve=e.getScene().activeCamera,Ee=b.TransformCoordinates(Y,ve.getWorldMatrix());g=ve.globalPosition.subtract(Ee)}let S=-Math.atan2(g.z,g.x)-Math.PI/2,E=Math.sqrt(g.x*g.x+g.z*g.z),T=Math.atan2(g.y,E),R=new ye;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=_?[]:null;let M=0,y=(Y,ve)=>{let Ee=new Zx;if(!a||!o||!l)return Ee;let Ue=a[Y];if(Ee.vertexIdx=Ue*3,Ee.vertexIdxForBones=Ue*4,Ee.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(Ee.position,ve,Ee.position),Ee.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(Ee.normal,ve,Ee.normal),t.captureUVS&&d){let ae=d[Ue*2+1];Ee.uv=new Fe(d[Ue*2],It?1-ae:ae)}return Ee},C=[0,0,0,0],L=(Y,ve)=>{if(Y.length===0)return Y;let Ee=.5*Math.abs(b.Dot(v,ve)),Ue=(ne,fe,Pe,de)=>{for(let Re=0;Re{var Le,Ge,et,rt,Ce,Me,ct,Tt,nt,$e,Wt,qt,re,K,De,xe;let Pe=b.GetClipFactor(ne.position,fe.position,ve,Ee),de=C,Re=C;if(h&&u){let je=ne.matrixIndicesOverride?0:ne.vertexIdxForBones,qe=(Le=ne.matrixIndicesOverride)!=null?Le:h,we=(Ge=ne.matrixWeightsOverride)!=null?Ge:u,At=fe.matrixIndicesOverride?0:fe.vertexIdxForBones,Zt=(et=fe.matrixIndicesOverride)!=null?et:h,nr=(rt=fe.matrixWeightsOverride)!=null?rt:u;de=[0,0,0,0],Re=[0,0,0,0];let vi=0;for(let Ji=0;Ji<4;++Ji)if(we[je+Ji]>0){let za=Ue(Zt,qe[je+Ji],At,4);de[vi]=qe[je+Ji],Re[vi]=mo(we[je+Ji],za>=0?nr[za]:0,Pe),vi++}for(let Ji=0;Ji<4&&vi<4;++Ji){let za=Zt[At+Ji];Ue(qe,za,je,4)===-1&&(de[vi]=za,Re[vi]=mo(0,nr[At+Ji],Pe),vi++)}let yn=Re[0]+Re[1]+Re[2]+Re[3];Re[0]/=yn,Re[1]/=yn,Re[2]/=yn,Re[3]/=yn}let Ye=ne.localPositionOverride?ne.localPositionOverride[0]:(Ce=c==null?void 0:c[ne.vertexIdx])!=null?Ce:0,Et=ne.localPositionOverride?ne.localPositionOverride[1]:(Me=c==null?void 0:c[ne.vertexIdx+1])!=null?Me:0,Ke=ne.localPositionOverride?ne.localPositionOverride[2]:(ct=c==null?void 0:c[ne.vertexIdx+2])!=null?ct:0,Ze=fe.localPositionOverride?fe.localPositionOverride[0]:(Tt=c==null?void 0:c[fe.vertexIdx])!=null?Tt:0,Jt=fe.localPositionOverride?fe.localPositionOverride[1]:(nt=c==null?void 0:c[fe.vertexIdx+1])!=null?nt:0,Lt=fe.localPositionOverride?fe.localPositionOverride[2]:($e=c==null?void 0:c[fe.vertexIdx+2])!=null?$e:0,xi=ne.localNormalOverride?ne.localNormalOverride[0]:(Wt=f==null?void 0:f[ne.vertexIdx])!=null?Wt:0,oe=ne.localNormalOverride?ne.localNormalOverride[1]:(qt=f==null?void 0:f[ne.vertexIdx+1])!=null?qt:0,Gi=ne.localNormalOverride?ne.localNormalOverride[2]:(re=f==null?void 0:f[ne.vertexIdx+2])!=null?re:0,ti=fe.localNormalOverride?fe.localNormalOverride[0]:(K=f==null?void 0:f[fe.vertexIdx])!=null?K:0,Fi=fe.localNormalOverride?fe.localNormalOverride[1]:(De=f==null?void 0:f[fe.vertexIdx+1])!=null?De:0,ot=fe.localNormalOverride?fe.localNormalOverride[2]:(xe=f==null?void 0:f[fe.vertexIdx+2])!=null?xe:0,Di=xi+(ti-xi)*Pe,z=oe+(Fi-oe)*Pe,U=Gi+(ot-Gi)*Pe,ue=Math.sqrt(Di*Di+z*z+U*U);return new Zx(b.Lerp(ne.position,fe.position,Pe),b.Lerp(ne.normal,fe.normal,Pe).normalize(),Fe.Lerp(ne.uv,fe.uv,Pe),-1,-1,c?[Ye+(Ze-Ye)*Pe,Et+(Jt-Et)*Pe,Ke+(Lt-Ke)*Pe]:null,f?[Di/ue,z/ue,U/ue]:null,de,Re)},me=null;Y.length>3&&(me=[]);for(let ne=0;ne0,Jt=Et>0,Lt=Ke>0;switch((Ze?1:0)+(Jt?1:0)+(Lt?1:0)){case 0:Y.length>3?(me.push(Y[ne]),me.push(Y[ne+1]),me.push(Y[ne+2])):me=Y;break;case 1:if(me=me!=null?me:new Array,Ze&&(fe=Y[ne+1],Pe=Y[ne+2],de=ae(Y[ne],fe),Re=ae(Y[ne],Pe)),Jt){fe=Y[ne],Pe=Y[ne+2],de=ae(Y[ne+1],fe),Re=ae(Y[ne+1],Pe),me.push(de),me.push(Pe.clone()),me.push(fe.clone()),me.push(Pe.clone()),me.push(de.clone()),me.push(Re);break}Lt&&(fe=Y[ne],Pe=Y[ne+1],de=ae(Y[ne+2],fe),Re=ae(Y[ne+2],Pe)),fe&&Pe&&de&&Re&&(me.push(fe.clone()),me.push(Pe.clone()),me.push(de),me.push(Re),me.push(de.clone()),me.push(Pe.clone()));break;case 2:me=me!=null?me:new Array,Ze||(fe=Y[ne].clone(),Pe=ae(fe,Y[ne+1]),de=ae(fe,Y[ne+2]),me.push(fe),me.push(Pe),me.push(de)),Jt||(fe=Y[ne+1].clone(),Pe=ae(fe,Y[ne+2]),de=ae(fe,Y[ne]),me.push(fe),me.push(Pe),me.push(de)),Lt||(fe=Y[ne+2].clone(),Pe=ae(fe,Y[ne]),de=ae(fe,Y[ne+1]),me.push(fe),me.push(Pe),me.push(de));break;case 3:break}}return me},w=e instanceof Z?e:null,G=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(q.IdentityReadOnly);for(let Y=0;Y{ke();Vn();Ci();Wi();pr();nn();kfe=new b(1,0,0),Wfe=new b(-1,0,0),Hfe=new b(0,1,0),zfe=new b(0,-1,0),Xfe=new b(0,0,1),Yfe=new b(0,0,-1),Zx=class n{constructor(e=b.Zero(),t=b.Up(),i=Fe.Zero(),r=0,s=0,a=null,o=null,l=null,c=null){this.position=e,this.normal=t,this.uv=i,this.vertexIdx=r,this.vertexIdxForBones=s,this.localPositionOverride=a,this.localNormalOverride=o,this.matrixIndicesOverride=l,this.matrixWeightsOverride=c}clone(){var e,t,i,r;return new n(this.position.clone(),this.normal.clone(),this.uv.clone(),this.vertexIdx,this.vertexIdxForBones,(e=this.localPositionOverride)==null?void 0:e.slice(),(t=this.localNormalOverride)==null?void 0:t.slice(),(i=this.matrixIndicesOverride)==null?void 0:i.slice(),(r=this.matrixWeightsOverride)==null?void 0:r.slice())}};Z.CreateDecal=(n,e,t,i,r,s)=>eL(n,e,{position:t,normal:i,size:r,angle:s})});function yz(n={subdivisions:2,tessellation:16,height:1,radius:.25,capSubdivisions:6}){let e=Math.max(n.subdivisions?n.subdivisions:2,1)|0,t=Math.max(n.tessellation?n.tessellation:16,3)|0,i=Math.max(n.height?n.height:1,0),r=Math.max(n.radius?n.radius:.25,0),s=Math.max(n.capSubdivisions?n.capSubdivisions:6,1)|0,a=t,o=e,l=Math.max(n.radiusTop?n.radiusTop:r,0),c=Math.max(n.radiusBottom?n.radiusBottom:r,0),f=i-(l+c),d=0,h=2*Math.PI,u=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),_=Math.acos((c-l)/i),p=[],g=[],v=[],x=[],S=0,E=[],T=f*.5,R=Math.PI*.5,M,y,C=b.Zero(),L=b.Zero(),w=Math.cos(_),G=Math.sin(_),O=new Fe(l*G,T+l*w).subtract(new Fe(c*G,-T+c*w)).length(),N=l*_+O+c*(R-_),B=0;for(y=0;y<=u;y++){let te=[],X=R-_*(y/u);B+=l*_/u;let Y=Math.cos(X),ve=Math.sin(X),Ee=Y*l;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*h+d,me=Math.sin(ae),ne=Math.cos(ae);L.x=Ee*me,L.y=T+ve*l,L.z=Ee*ne,g.push(L.x,L.y,L.z),C.set(Y*me,ve,Y*ne),v.push(C.x,C.y,C.z),x.push(Ue,It?B/N:1-B/N),te.push(S),S++}E.push(te)}let V=i-l-c+w*l-w*c,J=G*(c-l)/V;for(y=1;y<=o;y++){let te=[];B+=O/o;let X=G*(y*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,ve=Y*h+d,Ee=Math.sin(ve),Ue=Math.cos(ve);L.x=X*Ee,L.y=T+w*l-y*V/o,L.z=X*Ue,g.push(L.x,L.y,L.z),C.set(Ee,J,Ue).normalize(),v.push(C.x,C.y,C.z),x.push(Y,It?B/N:1-B/N),te.push(S),S++}E.push(te)}for(y=1;y<=m;y++){let te=[],X=R-_-(Math.PI-_)*(y/m);B+=c*_/m;let Y=Math.cos(X),ve=Math.sin(X),Ee=Y*c;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*h+d,me=Math.sin(ae),ne=Math.cos(ae);L.x=Ee*me,L.y=-T+ve*c,L.z=Ee*ne,g.push(L.x,L.y,L.z),C.set(Y*me,ve,Y*ne),v.push(C.x,C.y,C.z),x.push(Ue,It?B/N:1-B/N),te.push(S),S++}E.push(te)}for(M=0;M{pr();ke();Ci();nn();Z.CreateCapsule=(n,e,t)=>tL(n,e,t);ye.CreateCapsule=yz});var $i,Pz=I(()=>{Pt();ke();$i=class n{constructor(e=0,t=0){this.x=e,this.y=t,e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("x is not an integer, floor(x) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("y is not an integer, floor(y) used"))}clone(){return new n(this.x,this.y)}rotate60About(e){let t=this.x;return this.x=e.x+e.y-this.y,this.y=t+this.y-e.x,this}rotateNeg60About(e){let t=this.x;return this.x=t+this.y-e.y,this.y=e.x+e.y-t,this}rotate120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m not an integer only floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n not an integer only floor(n) used"));let i=this.x;return this.x=e-i-this.y,this.y=t+i,this}rotateNeg120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m is not an integer, floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n is not an integer, floor(n) used"));let i=this.x;return this.x=this.y-t,this.y=e+t-i-this.y,this}toCartesianOrigin(e,t){let i=b.Zero();return i.x=e.x+2*this.x*t+this.y*t,i.y=e.y+Math.sqrt(3)*this.y*t,i}static Zero(){return new n(0,0)}}});var sp,ov,ap,iL=I(()=>{ke();Vn();Un();Pz();sp=class{constructor(){this.cartesian=[],this.vertices=[],this.max=[],this.min=[],this.closestTo=[],this.innerFacets=[],this.isoVecsABOB=[],this.isoVecsOBOA=[],this.isoVecsBAOA=[],this.vertexTypes=[],this.IDATA=new ov("icosahedron","Regular",[[0,Sr,-1],[-Sr,1,0],[-1,0,-Sr],[1,0,-Sr],[Sr,1,0],[0,Sr,1],[-1,0,Sr],[-Sr,-1,0],[0,-Sr,-1],[Sr,-1,0],[1,0,Sr],[0,-Sr,1]],[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[7,6,1],[8,7,2],[9,8,3],[10,9,4],[6,10,5],[2,7,1],[3,8,2],[4,9,3],[5,10,4],[1,6,5],[11,6,7],[11,7,8],[11,8,9],[11,9,10],[11,10,6]])}setIndices(){let e=12,t={},i=this.m,r=this.n,s=i;r!==0&&(s=UA(i,r));let a=i/s,o=r/s,l,c,f,d,h,u=$i.Zero(),m=new $i(i,r),_=new $i(-r,i+r),p=$i.Zero(),g=$i.Zero(),v=$i.Zero(),x=[],S,E,T,R,M=[],y=this.vertByDist,C=(L,w,G,O)=>{S=L+"|"+G,E=w+"|"+O,S in t||E in t?S in t&&!(E in t)?t[E]=t[S]:E in t&&!(S in t)&&(t[S]=t[E]):(t[S]=e,t[E]=e,e++),y[G][0]>2?M[t[S]]=[-y[G][0],y[G][1],t[S]]:M[t[S]]=[x[y[G][0]],y[G][1],t[S]]};this.IDATA.edgematch=[[1,"B"],[2,"B"],[3,"B"],[4,"B"],[0,"B"],[10,"O",14,"A"],[11,"O",10,"A"],[12,"O",11,"A"],[13,"O",12,"A"],[14,"O",13,"A"],[0,"O"],[1,"O"],[2,"O"],[3,"O"],[4,"O"],[19,"B",5,"A"],[15,"B",6,"A"],[16,"B",7,"A"],[17,"B",8,"A"],[18,"B",9,"A"]];for(let L=0;L<20;L++){if(x=this.IDATA.face[L],f=x[2],d=x[1],h=x[0],T=u.x+"|"+u.y,S=L+"|"+T,S in t||(t[S]=f,M[f]=[x[y[T][0]],y[T][1]]),T=m.x+"|"+m.y,S=L+"|"+T,S in t||(t[S]=d,M[d]=[x[y[T][0]],y[T][1]]),T=_.x+"|"+_.y,S=L+"|"+T,S in t||(t[S]=h,M[h]=[x[y[T][0]],y[T][1]]),l=this.IDATA.edgematch[L][0],c=this.IDATA.edgematch[L][1],c==="B")for(let w=1;w2?M[t[S]]=[-y[T][0],y[T][1],t[S]]:M[t[S]]=[x[y[T][0]],y[T][1],t[S]])}this.closestTo=M,this.vecToidx=t}calcCoeffs(){let e=this.m,t=this.n,i=Math.sqrt(3)/3,r=e*e+t*t+e*t;this.coau=(e+t)/r,this.cobu=-t/r,this.coav=-i*(e-t)/r,this.cobv=i*(2*e+t)/r}createInnerFacets(){let e=this.m,t=this.n;for(let i=0;i0&&r0){let E=UA(e,t),T=e/E,R=t/E;for(let y=1;yE.x-T.x),i.sort((E,T)=>E.y-T.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let E=0;E{let R=E.clone();return T==="A"&&R.rotateNeg120(e,t),T==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},u=[],m=[],_=[],p=[],g={},v=[],x=-1,S=-1;for(let E=0;EE[2]-T[2]),v.sort((E,T)=>E[3]-T[3]),v.sort((E,T)=>E[1]-T[1]),v.sort((E,T)=>E[0]-T[0]);for(let E=0;Et.vecToidx[e+r]))}mapABOBtoDATA(e,t){let i=t.IDATA.edgematch[e][0];for(let r=0;r-1?i[a][1]>0&&t[i[a][0]].push([a,i[a][1]]):t[12].push([a,i[a][0]]);let r=[];for(let a=0;a<12;a++)r[a]=a;let s=12;for(let a=0;a<12;a++){t[a].sort((o,l)=>o[1]-l[1]);for(let o=0;oa[3]-o[3]);for(let a=0;a0;)s=t[l],this.face[s].indexOf(o)>-1?(a=(this.face[s].indexOf(o)+1)%3,o=this.face[s][a],i.push(o),r.push(s),t.splice(l,1),l=0):l++;return this.adjacentFaces.push(i),r}toGoldbergPolyhedronData(){let e=new ov("GeoDual","Goldberg",[],[]);e.name="GD dual";let t=this.vertex.length,i=new Array(t);for(let c=0;ci){let c=r;r=i,i=c,ee.Warn("n > m therefore m and n swapped")}let s=new sp;s.build(i,r);let o={custom:ap.BuildGeodesicData(s),size:e.size,sizeX:e.sizeX,sizeY:e.sizeY,sizeZ:e.sizeZ,faceUV:e.faceUV,faceColors:e.faceColors,flat:e.flat,updatable:e.updatable,sideOrientation:e.sideOrientation,frontUVs:e.frontUVs,backUVs:e.backUVs};return av(n,o,t)}var Lz=I(()=>{$D();Pt();iL()});var lv,Oz=I(()=>{ke();Wi();Ci();Ht();Pt();Z._GoldbergMeshParser=(n,e)=>lv.Parse(n,e);lv=class n extends Z{constructor(){super(...arguments),this.goldbergData={faceColors:[],faceCenters:[],faceZaxis:[],faceXaxis:[],faceYaxis:[],nbSharedFaces:0,nbUnsharedFaces:0,nbFaces:0,nbFacesAtPole:0,adjacentFaces:[]}}relatedGoldbergFace(e,t){return t===void 0?(e>this.goldbergData.nbUnsharedFaces-1&&(ee.Warn("Maximum number of unshared faces used"),e=this.goldbergData.nbUnsharedFaces-1),this.goldbergData.nbUnsharedFaces+e):(e>11&&(ee.Warn("Last pole used"),e=11),t>this.goldbergData.nbFacesAtPole-1&&(ee.Warn("Maximum number of faces at a pole used"),t=this.goldbergData.nbFacesAtPole-1),12+e*this.goldbergData.nbFacesAtPole+t)}_changeGoldbergFaceColors(e){for(let i=0;i1&&(d=1),c.push(d,h);for(let u=0;u<6;u++)d=a.x+o*Math.cos(l+u*Math.PI/3),h=a.y+o*Math.sin(l+u*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,h);for(let u=r;ult.FromArray(s)),i.faceCenters=i.faceCenters.map(s=>b.FromArray(s)),i.faceZaxis=i.faceZaxis.map(s=>b.FromArray(s)),i.faceXaxis=i.faceXaxis.map(s=>b.FromArray(s)),i.faceYaxis=i.faceYaxis.map(s=>b.FromArray(s));let r=new n(e.name,t);return r.goldbergData=i,r}}});function Kfe(n,e){let t=n.size,i=n.sizeX||t||1,r=n.sizeY||t||1,s=n.sizeZ||t||1,a=n.sideOrientation===0?0:n.sideOrientation||ye.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,h=-1/0,u=1/0,m=-1/0;for(let g=0;go){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new sp;c.build(o,l);let f=ap.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),h=new lv(n,t);e.sideOrientation=Z._GetDefaultSideOrientation(e.sideOrientation),h._originalBuilderSideOrientation=e.sideOrientation,Kfe(e,d).applyToMesh(h,e.updatable),h.goldbergData.nbSharedFaces=f.sharedNodes,h.goldbergData.nbUnsharedFaces=f.poleNodes,h.goldbergData.adjacentFaces=f.adjacentFaces,h.goldbergData.nbFaces=h.goldbergData.nbSharedFaces+h.goldbergData.nbUnsharedFaces,h.goldbergData.nbFacesAtPole=(h.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{ke();Ht();Ci();pr();Pt();iL();Oz();nn()});function jfe(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new rL(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{rh();ke();Ci();yf();YD();rL=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new pm(e,t),this._tempPaths.push(this._currentPath)}lineTo(e,t){this._currentPath.addLineTo(e,t)}quadraticCurveTo(e,t,i,r){this._currentPath.addQuadraticCurveTo(e,t,i,r,this._resolution)}bezierCurveTo(e,t,i,r,s,a){this._currentPath.addBezierCurveTo(e,t,i,r,s,a,this._resolution)}extractHoles(){for(let e of this._tempPaths)e.area()>0?this._holes.push(e):this._paths.push(e);if(!this._paths.length&&this._holes.length){let e=this._holes;this._holes=this._paths,this._paths=e}this._tempPaths.length=0}get paths(){return this._paths}get holes(){return this._holes}}});var hs,nL=I(()=>{Xg();oH();ID();mH();_H();vH();SH();AH();pz();YD();Ez();Sz();Az();yD();bD();xz();$D();Mz();Iz();Cz();Lz();wz();Bz();hs={CreateBox:MD,CreateTiledBox:uH,CreateSphere:PD,CreateDisc:SD,CreateIcoSphere:JD,CreateRibbon:Do,CreateCylinder:DD,CreateTorus:LD,CreateTorusKnot:OD,CreateLineSystem:WD,CreateLines:HD,CreateDashedLines:zD,ExtrudeShape:KD,ExtrudeShapeCustom:jD,CreateLathe:qD,CreateTiledPlane:dH,CreatePlane:ZD,CreateGround:AD,CreateTiledGround:xD,CreateGroundFromHeightMap:RD,CreatePolygon:qx,ExtrudePolygon:sv,CreateTube:QD,CreatePolyhedron:av,CreateGeodesic:Dz,CreateGoldberg:Nz,CreateDecal:eL,CreateCapsule:tL,CreateText:Fz}});var Hs,Qx=I(()=>{Hs=class{constructor(){this.previousWorldMatrices={},this.previousBones={}}static AddUniforms(e){e.push("previousWorld","previousViewProjection","mPreviousBones")}static AddSamplers(e){}bindForSubMesh(e,t,i,r,s){if(t.prePassRenderer&&t.prePassRenderer.enabled&&t.prePassRenderer.currentRTisSceneRT&&(t.prePassRenderer.getIndex(2)!==-1||t.prePassRenderer.getIndex(11)!==-1)){this.previousWorldMatrices[i.uniqueId]||(this.previousWorldMatrices[i.uniqueId]=r.clone()),this.previousViewProjection||(this.previousViewProjection=t.getTransformMatrix().clone(),this.currentViewProjection=t.getTransformMatrix().clone());let a=t.getEngine();this.currentViewProjection.updateFlag!==t.getTransformMatrix().updateFlag?(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection),this.currentViewProjection.copyFrom(t.getTransformMatrix())):this._lastUpdateFrameId!==a.frameId&&(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection)),e.setMatrix("previousWorld",this.previousWorldMatrices[i.uniqueId]),e.setMatrix("previousViewProjection",this.previousViewProjection),this.previousWorldMatrices[i.uniqueId]=r.clone()}}}});var Mr,Ga=I(()=>{Mr=class{constructor(e){if(this.VERTEXOUTPUT_INVARIANT=!1,this._keys=[],this._isDirty=!0,this._areLightsDirty=!0,this._areLightsDisposed=!1,this._areAttributesDirty=!0,this._areTexturesDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._normals=!1,this._uvs=!1,this._needNormals=!1,this._needUVs=!1,this._externalProperties=e,e)for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&this._setDefaultValue(t)}get isDirty(){return this._isDirty}markAsProcessed(){this._isDirty=!1,this._areAttributesDirty=!1,this._areTexturesDirty=!1,this._areFresnelDirty=!1,this._areLightsDirty=!1,this._areLightsDisposed=!1,this._areMiscDirty=!1,this._arePrePassDirty=!1,this._areImageProcessingDirty=!1}markAsUnprocessed(){this._isDirty=!0}markAllAsDirty(){this._areTexturesDirty=!0,this._areAttributesDirty=!0,this._areLightsDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._isDirty=!0}markAsImageProcessingDirty(){this._areImageProcessingDirty=!0,this._isDirty=!0}markAsLightDirty(e=!1){this._areLightsDirty=!0,this._areLightsDisposed=this._areLightsDisposed||e,this._isDirty=!0}markAsAttributesDirty(){this._areAttributesDirty=!0,this._isDirty=!0}markAsTexturesDirty(){this._areTexturesDirty=!0,this._isDirty=!0}markAsFresnelDirty(){this._areFresnelDirty=!0,this._isDirty=!0}markAsMiscDirty(){this._areMiscDirty=!0,this._isDirty=!0}markAsPrePassDirty(){this._arePrePassDirty=!0,this._isDirty=!0}rebuild(){this._keys.length=0;for(let e of Object.keys(this))e[0]!=="_"&&this._keys.push(e);if(this._externalProperties)for(let e in this._externalProperties)this._keys.indexOf(e)===-1&&this._keys.push(e)}isEqual(e){if(this._keys.length!==e._keys.length)return!1;for(let t=0;t{Ga()});function jfe(){Yfe.length=0,Kfe=!1,Se.OnEventObservable.remove(wz),wz=null}var Xfe,lp,Yfe,Kfe,wz,Fz=I(()=>{Yn();Ni();AA();k();Xfe=new RegExp("^([gimus]+)!"),lp=class n{constructor(e){this._plugins=[],this._activePlugins=[],this._activePluginsForExtraEvents=[],this._material=e,this._scene=e.getScene(),this._engine=this._scene.getEngine()}_addPlugin(e){for(let r=0;rthis._handlePluginEvent(r,s),this._plugins.push(e),this._plugins.sort((r,s)=>r.priority-s.priority),this._codeInjectionPoints={};let i={};i[n._MaterialPluginClassToMainDefine[t]]={type:"boolean",default:!0};for(let r of this._plugins)r.collectDefines(i),this._collectPointNames("vertex",r.getCustomCode("vertex",this._material.shaderLanguage)),this._collectPointNames("fragment",r.getCustomCode("fragment",this._material.shaderLanguage));return this._defineNamesFromPlugins=i,!0}_activatePlugin(e){this._activePlugins.indexOf(e)===-1&&(this._activePlugins.push(e),this._activePlugins.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventIsReadyForSubMesh=this._handlePluginEventIsReadyForSubMesh.bind(this),this._material._callbackPluginEventPrepareDefinesBeforeAttributes=this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this),this._material._callbackPluginEventPrepareDefines=this._handlePluginEventPrepareDefines.bind(this),this._material._callbackPluginEventBindForSubMesh=this._handlePluginEventBindForSubMesh.bind(this),e.registerForExtraEvents&&(this._activePluginsForExtraEvents.push(e),this._activePluginsForExtraEvents.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventHasRenderTargetTextures=this._handlePluginEventHasRenderTargetTextures.bind(this),this._material._callbackPluginEventFillRenderTargetTextures=this._handlePluginEventFillRenderTargetTextures.bind(this),this._material._callbackPluginEventHardBindForSubMesh=this._handlePluginEventHardBindForSubMesh.bind(this)))}getPlugin(e){for(let t=0;t0&&r.uniforms.push(...this._uniformList),this._samplerList.length>0&&r.samplers.push(...this._samplerList),this._uboList.length>0&&r.uniformBuffersNames.push(...this._uboList),r.customCode=this._injectCustomCode(r,r.customCode);break}case 8:{let r=t;this._uboDeclaration="",this._vertexDeclaration="",this._fragmentDeclaration="",this._uniformList=[],this._samplerList=[],this._uboList=[];let s=this._material.shaderLanguage===1;for(let a of this._plugins){let o=a.getUniforms(this._material.shaderLanguage);if(o){if(o.ubo)for(let l of o.ubo){if(l.size&&l.type){let c=(i=l.arraySize)!=null?i:0;if(r.ubo.addUniform(l.name,l.size,c),s){let f;switch(l.type){case"mat4":f="mat4x4f";break;case"float":f="f32";break;default:f=`${l.type}f`;break}c>0?this._uboDeclaration+=`uniform ${l.name}: array<${f}, ${c}>; +`);break}}return e}}});function op(n){return class extends n{constructor(){super(...arguments),this.IMAGEPROCESSING=!1,this.VIGNETTE=!1,this.VIGNETTEBLENDMODEMULTIPLY=!1,this.VIGNETTEBLENDMODEOPAQUE=!1,this.TONEMAPPING=0,this.CONTRAST=!1,this.COLORCURVES=!1,this.COLORGRADING=!1,this.COLORGRADING3D=!1,this.SAMPLER3DGREENDEPTH=!1,this.SAMPLER3DBGRMAP=!1,this.DITHER=!1,this.IMAGEPROCESSINGPOSTPROCESS=!1,this.SKIPFINALCOLORCLAMP=!1,this.EXPOSURE=!1}}}var $x=I(()=>{Ga()});function Jfe(){Qfe.length=0,$fe=!1,Se.OnEventObservable.remove(Uz),Uz=null}var Zfe,lp,Qfe,$fe,Uz,Vz=I(()=>{Yn();Ni();RA();k();Zfe=new RegExp("^([gimus]+)!"),lp=class n{constructor(e){this._plugins=[],this._activePlugins=[],this._activePluginsForExtraEvents=[],this._material=e,this._scene=e.getScene(),this._engine=this._scene.getEngine()}_addPlugin(e){for(let r=0;rthis._handlePluginEvent(r,s),this._plugins.push(e),this._plugins.sort((r,s)=>r.priority-s.priority),this._codeInjectionPoints={};let i={};i[n._MaterialPluginClassToMainDefine[t]]={type:"boolean",default:!0};for(let r of this._plugins)r.collectDefines(i),this._collectPointNames("vertex",r.getCustomCode("vertex",this._material.shaderLanguage)),this._collectPointNames("fragment",r.getCustomCode("fragment",this._material.shaderLanguage));return this._defineNamesFromPlugins=i,!0}_activatePlugin(e){this._activePlugins.indexOf(e)===-1&&(this._activePlugins.push(e),this._activePlugins.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventIsReadyForSubMesh=this._handlePluginEventIsReadyForSubMesh.bind(this),this._material._callbackPluginEventPrepareDefinesBeforeAttributes=this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this),this._material._callbackPluginEventPrepareDefines=this._handlePluginEventPrepareDefines.bind(this),this._material._callbackPluginEventBindForSubMesh=this._handlePluginEventBindForSubMesh.bind(this),e.registerForExtraEvents&&(this._activePluginsForExtraEvents.push(e),this._activePluginsForExtraEvents.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventHasRenderTargetTextures=this._handlePluginEventHasRenderTargetTextures.bind(this),this._material._callbackPluginEventFillRenderTargetTextures=this._handlePluginEventFillRenderTargetTextures.bind(this),this._material._callbackPluginEventHardBindForSubMesh=this._handlePluginEventHardBindForSubMesh.bind(this)))}getPlugin(e){for(let t=0;t0&&r.uniforms.push(...this._uniformList),this._samplerList.length>0&&r.samplers.push(...this._samplerList),this._uboList.length>0&&r.uniformBuffersNames.push(...this._uboList),r.customCode=this._injectCustomCode(r,r.customCode);break}case 8:{let r=t;this._uboDeclaration="",this._vertexDeclaration="",this._fragmentDeclaration="",this._uniformList=[],this._samplerList=[],this._uboList=[];let s=this._material.shaderLanguage===1;for(let a of this._plugins){let o=a.getUniforms(this._material.shaderLanguage);if(o){if(o.ubo)for(let l of o.ubo){if(l.size&&l.type){let c=(i=l.arraySize)!=null?i:0;if(r.ubo.addUniform(l.name,l.size,c),s){let f;switch(l.type){case"mat4":f="mat4x4f";break;case"float":f="f32";break;default:f=`${l.type}f`;break}c>0?this._uboDeclaration+=`uniform ${l.name}: array<${f}, ${c}>; `:this._uboDeclaration+=`uniform ${l.name}: ${f}; `}else this._uboDeclaration+=`${l.type} ${l.name}${c>0?`[${c}]`:""}; `}this._uniformList.push(l.name)}o.vertex&&(this._vertexDeclaration+=o.vertex+` `),o.fragment&&(this._fragmentDeclaration+=o.fragment+` `),o.externalUniforms&&this._uniformList.push(...o.externalUniforms)}a.getSamplers(this._samplerList),a.getUniformBuffersNames(this._uboList)}break}}}_collectPointNames(e,t){if(t)for(let i in t)this._codeInjectionPoints[e]||(this._codeInjectionPoints[e]={}),this._codeInjectionPoints[e][i]=!0}_injectCustomCode(e,t){return(i,r)=>{var o,l;t&&(r=t(i,r)),this._uboDeclaration&&(r=r.replace("#define ADDITIONAL_UBO_DECLARATION",this._uboDeclaration)),this._vertexDeclaration&&(r=r.replace("#define ADDITIONAL_VERTEX_DECLARATION",this._vertexDeclaration)),this._fragmentDeclaration&&(r=r.replace("#define ADDITIONAL_FRAGMENT_DECLARATION",this._fragmentDeclaration));let s=(o=this._codeInjectionPoints)==null?void 0:o[i];if(!s)return r;let a=null;for(let c in s){let f="";for(let d of this._activePlugins){let h=this._material.shaderLanguage,u=(l=d.getCustomCode(i,h))==null?void 0:l[c];u&&(d.resolveIncludes&&(a===null&&(a={defines:[],indexParameters:e.indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:void 0,supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:A.GetShadersRepository(h),includesShadersStore:A.GetIncludesShadersStore(h),version:void 0,platformName:this._engine.shaderPlatformName,processingContext:void 0,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,processCodeAfterIncludes:void 0}),a.isFragment=i==="fragment",lg(u,a,m=>u=m)),f+=u+` -`)}if(f.length>0)if(c.charAt(0)==="!"){c=c.substring(1);let d="g";if(c.charAt(0)==="!")d="",c=c.substring(1);else{let _=Xfe.exec(c);_&&_.length>=2&&(d=_[1],c=c.substring(d.length+1))}d.indexOf("g")<0&&(d+="g");let h=r,u=new RegExp(c,d),m=u.exec(h);for(;m!==null;){let _=f;for(let p=0;p0)if(c.charAt(0)==="!"){c=c.substring(1);let d="g";if(c.charAt(0)==="!")d="",c=c.substring(1);else{let _=Zfe.exec(c);_&&_.length>=2&&(d=_[1],c=c.substring(d.length+1))}d.indexOf("g")<0&&(d+="g");let h=r,u=new RegExp(c,d),m=u.exec(h);for(;m!==null;){let _=f;for(let p=0;p{jfe()});Yfe=[],Kfe=!1,wz=null});var Hr,Xf=I(()=>{Gt();Vt();Fz();br();Yi();Hr=class{isCompatible(e){return e===0}_enable(e){e&&this._pluginManager._activatePlugin(this)}constructor(e,t,i,r,s=!0,a=!1,o=!1){this.priority=500,this.resolveIncludes=!1,this.registerForExtraEvents=!1,this.doNotSerialize=!1,this._material=e,this.name=t,this.priority=i,this.resolveIncludes=o,e.pluginManager||(e.pluginManager=new lp(e),e.onDisposeObservable.add(()=>{e.pluginManager=void 0})),this._pluginDefineNames=r,this._pluginManager=e.pluginManager,s&&this._pluginManager._addPlugin(this),a&&this._enable(!0),this.markAllDefinesAsDirty=e._dirtyCallbacks[127]}getClassName(){return"MaterialPluginBase"}isReadyForSubMesh(e,t,i,r){return!0}hardBindForSubMesh(e,t,i,r){}bindForSubMesh(e,t,i,r){}dispose(e){}getCustomCode(e,t=0){return null}collectDefines(e){if(this._pluginDefineNames)for(let t of Object.keys(this._pluginDefineNames)){if(t[0]==="_")continue;let i=typeof this._pluginDefineNames[t];e[t]={type:i==="number"?"number":i==="string"?"string":i==="boolean"?"boolean":"object",default:this._pluginDefineNames[t]}}}prepareDefinesBeforeAttributes(e,t,i){}prepareDefines(e,t,i){}hasTexture(e){return!1}hasRenderTargetTextures(){return!1}fillRenderTargetTextures(e){}getActiveTextures(e){}getAnimatables(e){}addFallbacks(e,t,i){return i}getSamplers(e){}getAttributes(e,t,i){}getUniformBuffersNames(e){}getUniforms(e=0){return{}}copyTo(e){it.Clone(()=>e,this)}serialize(){return it.Serialize(this)}parse(e,t,i){it.Parse(()=>this,e,t,i)}};P([F()],Hr.prototype,"name",void 0);P([F()],Hr.prototype,"priority",void 0);P([F()],Hr.prototype,"resolveIncludes",void 0);P([F()],Hr.prototype,"registerForExtraEvents",void 0);Ft("BABYLON.MaterialPluginBase",Hr)});var iL,ka,rL=I(()=>{Gt();Yn();Vt();Ua();Ga();Xf();Xn();iL=class extends Mr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},ka=class extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new iL,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Se.MATERIAL_NORMALBLENDMETHOD_WHITEOUT,this._isEnabled=!1,this.isEnabled=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&!this._texture.isReady()):!0}prepareDefines(e,t){if(this._isEnabled){e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod;let i=t.getEngine();e._areTexturesDirty&&(i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&this._isEnabled?(ri(this._texture,e,"DETAIL"),e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod):e.DETAIL=!1)}else e.DETAIL=!1}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&this._texture&&ce.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),ni(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&ce.DetailTextureEnabled&&e.setTexture("detailSampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){var t;e&&((t=this._texture)==null||t.dispose())}getClassName(){return"DetailMapConfiguration"}getSamplers(e){e.push("detailSampler")}getUniforms(){return{ubo:[{name:"vDetailInfos",size:4,type:"vec4"},{name:"detailMatrix",size:16,type:"mat4"}]}}};P([Ut("detailTexture"),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"texture",void 0);P([F()],ka.prototype,"diffuseBlendLevel",void 0);P([F()],ka.prototype,"roughnessBlendLevel",void 0);P([F()],ka.prototype,"bumpLevel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"normalBlendMethod",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"isEnabled",void 0)});var Bz,Zn,Qx=I(()=>{ke();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(Bz||(Bz={}));Zn=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:q.Zero(),currentViewProjection:q.Zero(),previousBones:{},lastUpdateFrameId:-1,excludedSkinnedMesh:[],reverseCulling:!1},n._Configurations[e]}static DeleteConfiguration(e){delete n._Configurations[e]}static GetConfiguration(e){return n._Configurations[e]}static AddUniformsAndSamplers(e,t){e.push("previousWorld","previousViewProjection","mPreviousBones")}static MarkAsDirty(e,t){for(let i of t)if(i.subMeshes)for(let r of i.subMeshes)r._removeDrawWrapper(e)}static PrepareDefines(e,t,i){if(!i._arePrePassDirty)return;let r=n._Configurations[e];if(!r)return;i.PREPASS=!0;let s=0;for(let a=0;a{});function fp(n){return class extends n{constructor(){super(...arguments),this.PREPASS=!1,this.PREPASS_COLOR=!1,this.PREPASS_COLOR_INDEX=-1,this.PREPASS_IRRADIANCE_LEGACY=!1,this.PREPASS_IRRADIANCE_LEGACY_INDEX=-1,this.PREPASS_IRRADIANCE=!1,this.PREPASS_IRRADIANCE_INDEX=-1,this.PREPASS_ALBEDO=!1,this.PREPASS_ALBEDO_INDEX=-1,this.PREPASS_ALBEDO_SQRT=!1,this.PREPASS_ALBEDO_SQRT_INDEX=-1,this.PREPASS_DEPTH=!1,this.PREPASS_DEPTH_INDEX=-1,this.PREPASS_SCREENSPACE_DEPTH=!1,this.PREPASS_SCREENSPACE_DEPTH_INDEX=-1,this.PREPASS_NORMALIZED_VIEW_DEPTH=!1,this.PREPASS_NORMALIZED_VIEW_DEPTH_INDEX=-1,this.PREPASS_NORMAL=!1,this.PREPASS_NORMAL_INDEX=-1,this.PREPASS_NORMAL_WORLDSPACE=!1,this.PREPASS_WORLD_NORMAL=!1,this.PREPASS_WORLD_NORMAL_INDEX=-1,this.PREPASS_POSITION=!1,this.PREPASS_POSITION_INDEX=-1,this.PREPASS_LOCAL_POSITION=!1,this.PREPASS_LOCAL_POSITION_INDEX=-1,this.PREPASS_VELOCITY=!1,this.PREPASS_VELOCITY_INDEX=-1,this.PREPASS_VELOCITY_LINEAR=!1,this.PREPASS_VELOCITY_LINEAR_INDEX=-1,this.PREPASS_REFLECTIVITY=!1,this.PREPASS_REFLECTIVITY_INDEX=-1,this.SCENE_MRT_COUNT=0}}}var Jx=I(()=>{});function dp(n){return class extends n{constructor(...e){super(...e),QU()(this,"_imageProcessingConfiguration")}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}set imageProcessingConfiguration(e){this._attachImageProcessingConfiguration(e),this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()}_attachImageProcessingConfiguration(e){e!==this._imageProcessingConfiguration&&(this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),!e&&this.getScene?this._imageProcessingConfiguration=this.getScene().imageProcessingConfiguration:e&&(this._imageProcessingConfiguration=e),this._imageProcessingConfiguration&&(this._imageProcessingObserver=this._imageProcessingConfiguration.onUpdateParameters.add(()=>{this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()})))}get cameraColorCurvesEnabled(){return this.imageProcessingConfiguration.colorCurvesEnabled}set cameraColorCurvesEnabled(e){this.imageProcessingConfiguration.colorCurvesEnabled=e}get cameraColorGradingEnabled(){return this.imageProcessingConfiguration.colorGradingEnabled}set cameraColorGradingEnabled(e){this.imageProcessingConfiguration.colorGradingEnabled=e}get cameraToneMappingEnabled(){return this._imageProcessingConfiguration.toneMappingEnabled}set cameraToneMappingEnabled(e){this._imageProcessingConfiguration.toneMappingEnabled=e}get cameraExposure(){return this._imageProcessingConfiguration.exposure}set cameraExposure(e){this._imageProcessingConfiguration.exposure=e}get cameraContrast(){return this._imageProcessingConfiguration.contrast}set cameraContrast(e){this._imageProcessingConfiguration.contrast=e}get cameraColorGradingTexture(){return this._imageProcessingConfiguration.colorGradingTexture}set cameraColorGradingTexture(e){this._imageProcessingConfiguration.colorGradingTexture=e}get cameraColorCurves(){return this._imageProcessingConfiguration.colorCurves}set cameraColorCurves(e){this._imageProcessingConfiguration.colorCurves=e}}}var eR=I(()=>{Vt()});var Uz,qfe,Sh=I(()=>{k();Uz="sceneUboDeclaration",qfe=`struct Scene {viewProjection : mat4x4, +`+d)}}return r}}};lp._MaterialPluginClassToMainDefine={};lp._MaterialPluginCounter=0;Oe.OnEnginesDisposedObservable.add(()=>{Jfe()});Qfe=[],$fe=!1,Uz=null});var Hr,Xf=I(()=>{Gt();Vt();Vz();br();Yi();Hr=class{isCompatible(e){return e===0}_enable(e){e&&this._pluginManager._activatePlugin(this)}constructor(e,t,i,r,s=!0,a=!1,o=!1){this.priority=500,this.resolveIncludes=!1,this.registerForExtraEvents=!1,this.doNotSerialize=!1,this._material=e,this.name=t,this.priority=i,this.resolveIncludes=o,e.pluginManager||(e.pluginManager=new lp(e),e.onDisposeObservable.add(()=>{e.pluginManager=void 0})),this._pluginDefineNames=r,this._pluginManager=e.pluginManager,s&&this._pluginManager._addPlugin(this),a&&this._enable(!0),this.markAllDefinesAsDirty=e._dirtyCallbacks[127]}getClassName(){return"MaterialPluginBase"}isReadyForSubMesh(e,t,i,r){return!0}hardBindForSubMesh(e,t,i,r){}bindForSubMesh(e,t,i,r){}dispose(e){}getCustomCode(e,t=0){return null}collectDefines(e){if(this._pluginDefineNames)for(let t of Object.keys(this._pluginDefineNames)){if(t[0]==="_")continue;let i=typeof this._pluginDefineNames[t];e[t]={type:i==="number"?"number":i==="string"?"string":i==="boolean"?"boolean":"object",default:this._pluginDefineNames[t]}}}prepareDefinesBeforeAttributes(e,t,i){}prepareDefines(e,t,i){}hasTexture(e){return!1}hasRenderTargetTextures(){return!1}fillRenderTargetTextures(e){}getActiveTextures(e){}getAnimatables(e){}addFallbacks(e,t,i){return i}getSamplers(e){}getAttributes(e,t,i){}getUniformBuffersNames(e){}getUniforms(e=0){return{}}copyTo(e){it.Clone(()=>e,this)}serialize(){return it.Serialize(this)}parse(e,t,i){it.Parse(()=>this,e,t,i)}};P([F()],Hr.prototype,"name",void 0);P([F()],Hr.prototype,"priority",void 0);P([F()],Hr.prototype,"resolveIncludes",void 0);P([F()],Hr.prototype,"registerForExtraEvents",void 0);Ft("BABYLON.MaterialPluginBase",Hr)});var sL,ka,aL=I(()=>{Gt();Yn();Vt();Ua();Ga();Xf();Xn();sL=class extends Mr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},ka=class extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new sL,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Se.MATERIAL_NORMALBLENDMETHOD_WHITEOUT,this._isEnabled=!1,this.isEnabled=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&!this._texture.isReady()):!0}prepareDefines(e,t){if(this._isEnabled){e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod;let i=t.getEngine();e._areTexturesDirty&&(i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&this._isEnabled?(ri(this._texture,e,"DETAIL"),e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod):e.DETAIL=!1)}else e.DETAIL=!1}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&this._texture&&ce.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),ni(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&ce.DetailTextureEnabled&&e.setTexture("detailSampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){var t;e&&((t=this._texture)==null||t.dispose())}getClassName(){return"DetailMapConfiguration"}getSamplers(e){e.push("detailSampler")}getUniforms(){return{ubo:[{name:"vDetailInfos",size:4,type:"vec4"},{name:"detailMatrix",size:16,type:"mat4"}]}}};P([Ut("detailTexture"),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"texture",void 0);P([F()],ka.prototype,"diffuseBlendLevel",void 0);P([F()],ka.prototype,"roughnessBlendLevel",void 0);P([F()],ka.prototype,"bumpLevel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"normalBlendMethod",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ka.prototype,"isEnabled",void 0)});var Gz,Zn,Jx=I(()=>{ke();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(Gz||(Gz={}));Zn=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:q.Zero(),currentViewProjection:q.Zero(),previousBones:{},lastUpdateFrameId:-1,excludedSkinnedMesh:[],reverseCulling:!1},n._Configurations[e]}static DeleteConfiguration(e){delete n._Configurations[e]}static GetConfiguration(e){return n._Configurations[e]}static AddUniformsAndSamplers(e,t){e.push("previousWorld","previousViewProjection","mPreviousBones")}static MarkAsDirty(e,t){for(let i of t)if(i.subMeshes)for(let r of i.subMeshes)r._removeDrawWrapper(e)}static PrepareDefines(e,t,i){if(!i._arePrePassDirty)return;let r=n._Configurations[e];if(!r)return;i.PREPASS=!0;let s=0;for(let a=0;a{});function fp(n){return class extends n{constructor(){super(...arguments),this.PREPASS=!1,this.PREPASS_COLOR=!1,this.PREPASS_COLOR_INDEX=-1,this.PREPASS_IRRADIANCE_LEGACY=!1,this.PREPASS_IRRADIANCE_LEGACY_INDEX=-1,this.PREPASS_IRRADIANCE=!1,this.PREPASS_IRRADIANCE_INDEX=-1,this.PREPASS_ALBEDO=!1,this.PREPASS_ALBEDO_INDEX=-1,this.PREPASS_ALBEDO_SQRT=!1,this.PREPASS_ALBEDO_SQRT_INDEX=-1,this.PREPASS_DEPTH=!1,this.PREPASS_DEPTH_INDEX=-1,this.PREPASS_SCREENSPACE_DEPTH=!1,this.PREPASS_SCREENSPACE_DEPTH_INDEX=-1,this.PREPASS_NORMALIZED_VIEW_DEPTH=!1,this.PREPASS_NORMALIZED_VIEW_DEPTH_INDEX=-1,this.PREPASS_NORMAL=!1,this.PREPASS_NORMAL_INDEX=-1,this.PREPASS_NORMAL_WORLDSPACE=!1,this.PREPASS_WORLD_NORMAL=!1,this.PREPASS_WORLD_NORMAL_INDEX=-1,this.PREPASS_POSITION=!1,this.PREPASS_POSITION_INDEX=-1,this.PREPASS_LOCAL_POSITION=!1,this.PREPASS_LOCAL_POSITION_INDEX=-1,this.PREPASS_VELOCITY=!1,this.PREPASS_VELOCITY_INDEX=-1,this.PREPASS_VELOCITY_LINEAR=!1,this.PREPASS_VELOCITY_LINEAR_INDEX=-1,this.PREPASS_REFLECTIVITY=!1,this.PREPASS_REFLECTIVITY_INDEX=-1,this.SCENE_MRT_COUNT=0}}}var tR=I(()=>{});function dp(n){return class extends n{constructor(...e){super(...e),eV()(this,"_imageProcessingConfiguration")}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}set imageProcessingConfiguration(e){this._attachImageProcessingConfiguration(e),this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()}_attachImageProcessingConfiguration(e){e!==this._imageProcessingConfiguration&&(this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),!e&&this.getScene?this._imageProcessingConfiguration=this.getScene().imageProcessingConfiguration:e&&(this._imageProcessingConfiguration=e),this._imageProcessingConfiguration&&(this._imageProcessingObserver=this._imageProcessingConfiguration.onUpdateParameters.add(()=>{this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()})))}get cameraColorCurvesEnabled(){return this.imageProcessingConfiguration.colorCurvesEnabled}set cameraColorCurvesEnabled(e){this.imageProcessingConfiguration.colorCurvesEnabled=e}get cameraColorGradingEnabled(){return this.imageProcessingConfiguration.colorGradingEnabled}set cameraColorGradingEnabled(e){this.imageProcessingConfiguration.colorGradingEnabled=e}get cameraToneMappingEnabled(){return this._imageProcessingConfiguration.toneMappingEnabled}set cameraToneMappingEnabled(e){this._imageProcessingConfiguration.toneMappingEnabled=e}get cameraExposure(){return this._imageProcessingConfiguration.exposure}set cameraExposure(e){this._imageProcessingConfiguration.exposure=e}get cameraContrast(){return this._imageProcessingConfiguration.contrast}set cameraContrast(e){this._imageProcessingConfiguration.contrast=e}get cameraColorGradingTexture(){return this._imageProcessingConfiguration.colorGradingTexture}set cameraColorGradingTexture(e){this._imageProcessingConfiguration.colorGradingTexture=e}get cameraColorCurves(){return this._imageProcessingConfiguration.colorCurves}set cameraColorCurves(e){this._imageProcessingConfiguration.colorCurves=e}}}var iR=I(()=>{Vt()});var kz,ede,Sh=I(()=>{k();kz="sceneUboDeclaration",ede=`struct Scene {viewProjection : mat4x4, #ifdef MULTIVIEW viewProjectionR : mat4x4, #endif @@ -5151,17 +5151,17 @@ vEyePosition : vec4, inverseProjection : mat4x4,}; #define SCENE_UBO var scene : Scene; -`;A.IncludesShadersStoreWGSL[Uz]||(A.IncludesShadersStoreWGSL[Uz]=qfe)});var Vz,Zfe,cv=I(()=>{k();Vz="meshUboDeclaration",Zfe=`struct Mesh {world : mat4x4, +`;A.IncludesShadersStoreWGSL[kz]||(A.IncludesShadersStoreWGSL[kz]=ede)});var Wz,tde,cv=I(()=>{k();Wz="meshUboDeclaration",tde=`struct Mesh {world : mat4x4, visibility : f32,};var mesh : Mesh; #define WORLD_UBO -`;A.IncludesShadersStoreWGSL[Vz]||(A.IncludesShadersStoreWGSL[Vz]=Zfe)});var Gz,Qfe,nL=I(()=>{k();Sh();cv();Gz="defaultUboDeclaration",Qfe=`uniform diffuseLeftColor: vec4f;uniform diffuseRightColor: vec4f;uniform opacityParts: vec4f;uniform reflectionLeftColor: vec4f;uniform reflectionRightColor: vec4f;uniform refractionLeftColor: vec4f;uniform refractionRightColor: vec4f;uniform emissiveLeftColor: vec4f;uniform emissiveRightColor: vec4f;uniform vDiffuseInfos: vec2f;uniform vAmbientInfos: vec2f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vSpecularInfos: vec2f;uniform vBumpInfos: vec3f;uniform diffuseMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform specularMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform pointSize: f32;uniform alphaCutOff: f32;uniform refractionMatrix: mat4x4f;uniform vRefractionInfos: vec4f;uniform vRefractionPosition: vec3f;uniform vRefractionSize: vec3f;uniform vSpecularColor: vec4f;uniform vEmissiveColor: vec3f;uniform vDiffuseColor: vec4f;uniform vAmbientColor: vec3f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f; +`;A.IncludesShadersStoreWGSL[Wz]||(A.IncludesShadersStoreWGSL[Wz]=tde)});var Hz,ide,oL=I(()=>{k();Sh();cv();Hz="defaultUboDeclaration",ide=`uniform diffuseLeftColor: vec4f;uniform diffuseRightColor: vec4f;uniform opacityParts: vec4f;uniform reflectionLeftColor: vec4f;uniform reflectionRightColor: vec4f;uniform refractionLeftColor: vec4f;uniform refractionRightColor: vec4f;uniform emissiveLeftColor: vec4f;uniform emissiveRightColor: vec4f;uniform vDiffuseInfos: vec2f;uniform vAmbientInfos: vec2f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vSpecularInfos: vec2f;uniform vBumpInfos: vec3f;uniform diffuseMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform specularMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform pointSize: f32;uniform alphaCutOff: f32;uniform refractionMatrix: mat4x4f;uniform vRefractionInfos: vec4f;uniform vRefractionPosition: vec3f;uniform vRefractionSize: vec3f;uniform vSpecularColor: vec4f;uniform vEmissiveColor: vec3f;uniform vDiffuseColor: vec4f;uniform vAmbientColor: vec3f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f; #define ADDITIONAL_UBO_DECLARATION #include #include -`;A.IncludesShadersStoreWGSL[Gz]||(A.IncludesShadersStoreWGSL[Gz]=Qfe)});var kz,$fe,tR=I(()=>{k();kz="uvAttributeDeclaration",$fe=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) +`;A.IncludesShadersStoreWGSL[Hz]||(A.IncludesShadersStoreWGSL[Hz]=ide)});var zz,rde,rR=I(()=>{k();zz="uvAttributeDeclaration",rde=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) attribute uv{X}: vec2f; #endif -`;A.IncludesShadersStoreWGSL[kz]||(A.IncludesShadersStoreWGSL[kz]=$fe)});var Wz,Jfe,iR=I(()=>{k();Wz="prePassVertexDeclaration",Jfe=`#ifdef PREPASS +`;A.IncludesShadersStoreWGSL[zz]||(A.IncludesShadersStoreWGSL[zz]=rde)});var Xz,nde,nR=I(()=>{k();Xz="prePassVertexDeclaration",nde=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vPosition : vec3f; #endif @@ -5175,18 +5175,18 @@ varying vNormViewDepth: f32; uniform previousViewProjection: mat4x4f;varying vCurrentPosition: vec4f;varying vPreviousPosition: vec4f; #endif #endif -`;A.IncludesShadersStoreWGSL[Wz]||(A.IncludesShadersStoreWGSL[Wz]=Jfe)});var Hz,ede,hp=I(()=>{k();Hz="mainUVVaryingDeclaration",ede=`#ifdef MAINUV{X} +`;A.IncludesShadersStoreWGSL[Xz]||(A.IncludesShadersStoreWGSL[Xz]=nde)});var Yz,sde,hp=I(()=>{k();Yz="mainUVVaryingDeclaration",sde=`#ifdef MAINUV{X} varying vMainUV{X}: vec2f; #endif -`;A.IncludesShadersStoreWGSL[Hz]||(A.IncludesShadersStoreWGSL[Hz]=ede)});var zz,tde,rR=I(()=>{k();zz="samplerVertexDeclaration",tde=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;A.IncludesShadersStoreWGSL[Yz]||(A.IncludesShadersStoreWGSL[Yz]=sde)});var Kz,ade,sR=I(()=>{k();Kz="samplerVertexDeclaration",ade=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying v_VARYINGNAME_UV: vec2f; #endif -`;A.IncludesShadersStoreWGSL[zz]||(A.IncludesShadersStoreWGSL[zz]=tde)});var Xz,ide,sL=I(()=>{k();Xz="bumpVertexDeclaration",ide=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;A.IncludesShadersStoreWGSL[Kz]||(A.IncludesShadersStoreWGSL[Kz]=ade)});var jz,ode,lL=I(()=>{k();jz="bumpVertexDeclaration",ode=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; #endif #endif -`;A.IncludesShadersStoreWGSL[Xz]||(A.IncludesShadersStoreWGSL[Xz]=ide)});var Yz,rde,Kz=I(()=>{k();Yz="lightVxFragmentDeclaration",rde=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[jz]||(A.IncludesShadersStoreWGSL[jz]=ode)});var qz,lde,Zz=I(()=>{k();qz="lightVxFragmentDeclaration",lde=`#ifdef LIGHT{X} uniform vLightData{X}: vec4f;uniform vLightDiffuse{X}: vec4f; #ifdef SPECULARTERM uniform vLightSpecular{X}: vec4f; @@ -5213,7 +5213,7 @@ uniform vLightGround{X}: vec3f; uniform vLightWidth{X}: vec4f;uniform vLightHeight{X}: vec4f; #endif #endif -`;A.IncludesShadersStoreWGSL[Yz]||(A.IncludesShadersStoreWGSL[Yz]=rde)});var jz,nde,nR=I(()=>{k();jz="lightVxUboDeclaration",nde=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[qz]||(A.IncludesShadersStoreWGSL[qz]=lde)});var Qz,cde,aR=I(()=>{k();Qz="lightVxUboDeclaration",cde=`#ifdef LIGHT{X} struct Light{X} {vLightData: vec4f, vLightDiffuse: vec4f, @@ -5244,7 +5244,7 @@ varying vPositionFromLight{X}: vec4f;varying vDepthMetric{X}: f32;uniform lightM #endif #endif #endif -`;A.IncludesShadersStoreWGSL[jz]||(A.IncludesShadersStoreWGSL[jz]=nde)});var qz,sde,Yf=I(()=>{k();qz="morphTargetsVertexGlobalDeclaration",sde=`#ifdef MORPHTARGETS +`;A.IncludesShadersStoreWGSL[Qz]||(A.IncludesShadersStoreWGSL[Qz]=cde)});var $z,fde,Yf=I(()=>{k();$z="morphTargetsVertexGlobalDeclaration",fde=`#ifdef MORPHTARGETS uniform morphTargetInfluences : array; #ifdef MORPHTARGETS_TEXTURE uniform morphTargetTextureIndices : array;uniform morphTargetTextureInfo : vec3;var morphTargets : texture_2d_array;fn readVector3FromRawSampler(targetIndex : i32,vertexIndex : f32)->vec3 @@ -5256,7 +5256,7 @@ let textureWidth: i32=i32(uniforms.morphTargetTextureInfo.y); let y: i32=i32(vertexIndex)/textureWidth;let x: i32=i32(vertexIndex) % textureWidth;return textureLoad(morphTargets,vec2i(x,y),i32(uniforms.morphTargetTextureIndices[targetIndex]),0);} #endif #endif -`;A.IncludesShadersStoreWGSL[qz]||(A.IncludesShadersStoreWGSL[qz]=sde)});var Zz,ade,Kf=I(()=>{k();Zz="morphTargetsVertexDeclaration",ade=`#ifdef MORPHTARGETS +`;A.IncludesShadersStoreWGSL[$z]||(A.IncludesShadersStoreWGSL[$z]=fde)});var Jz,dde,Kf=I(()=>{k();Jz="morphTargetsVertexDeclaration",dde=`#ifdef MORPHTARGETS #ifndef MORPHTARGETS_TEXTURE #ifdef MORPHTARGETS_POSITION attribute position{X} : vec3; @@ -5280,10 +5280,10 @@ attribute color{X} : vec4; uniform morphTargetCount: f32; #endif #endif -`;A.IncludesShadersStoreWGSL[Zz]||(A.IncludesShadersStoreWGSL[Zz]=ade)});var Qz,ode,Th=I(()=>{k();Qz="logDepthDeclaration",ode=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStoreWGSL[Jz]||(A.IncludesShadersStoreWGSL[Jz]=dde)});var e4,hde,Th=I(()=>{k();e4="logDepthDeclaration",hde=`#ifdef LOGARITHMICDEPTH uniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32; #endif -`;A.IncludesShadersStoreWGSL[Qz]||(A.IncludesShadersStoreWGSL[Qz]=ode)});var $z,lde,sR=I(()=>{k();$z="vertexPullingDeclaration",lde=`#ifdef USE_VERTEX_PULLING +`;A.IncludesShadersStoreWGSL[e4]||(A.IncludesShadersStoreWGSL[e4]=hde)});var t4,ude,oR=I(()=>{k();t4="vertexPullingDeclaration",ude=`#ifdef USE_VERTEX_PULLING #ifdef VERTEX_PULLING_USE_INDEX_BUFFER var indices : array; #endif @@ -5461,7 +5461,7 @@ vp_readMatrixWeightExtraValue(offset+cs*3u,dataType,normalized) #endif #endif #endif -`;A.IncludesShadersStoreWGSL[$z]||(A.IncludesShadersStoreWGSL[$z]=lde)});var Jz,cde,aR=I(()=>{k();Jz="vertexPullingVertex",cde=`#ifdef USE_VERTEX_PULLING +`;A.IncludesShadersStoreWGSL[t4]||(A.IncludesShadersStoreWGSL[t4]=ude)});var i4,mde,lR=I(()=>{k();i4="vertexPullingVertex",mde=`#ifdef USE_VERTEX_PULLING let vpVertexIndex: u32=vp_readVertexIndex(vertexInputs.vertexIndex);positionUpdated=vp_readPosition(uniforms.vp_position_info,vpVertexIndex); #ifdef NORMAL normalUpdated=vp_readNormal(uniforms.vp_normal_info,vpVertexIndex); @@ -5515,12 +5515,12 @@ var vp_matricesIndicesExtra: vec4f=vp_readBoneIndicesExtra(uniforms.vp_matricesI #endif #endif #endif -`;A.IncludesShadersStoreWGSL[Jz]||(A.IncludesShadersStoreWGSL[Jz]=cde)});var e4,fde,jf=I(()=>{k();e4="morphTargetsVertexGlobal",fde=`#ifdef MORPHTARGETS +`;A.IncludesShadersStoreWGSL[i4]||(A.IncludesShadersStoreWGSL[i4]=mde)});var r4,pde,jf=I(()=>{k();r4="morphTargetsVertexGlobal",pde=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE var vertexID : f32; #endif #endif -`;A.IncludesShadersStoreWGSL[e4]||(A.IncludesShadersStoreWGSL[e4]=fde)});var t4,dde,qf=I(()=>{k();t4="morphTargetsVertex",dde=`#ifdef MORPHTARGETS +`;A.IncludesShadersStoreWGSL[r4]||(A.IncludesShadersStoreWGSL[r4]=pde)});var n4,_de,qf=I(()=>{k();n4="morphTargetsVertex",_de=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE #if {X}==0 for (var i=0; i=uniforms.morphTargetCount) {break;} @@ -5630,7 +5630,7 @@ colorUpdated=colorUpdated+(vertexInputs.color{X}-vertexInputs.color)*uniforms.mo #endif #endif #endif -`;A.IncludesShadersStoreWGSL[t4]||(A.IncludesShadersStoreWGSL[t4]=dde)});var i4,hde,oR=I(()=>{k();i4="prePassVertex",hde=`#ifdef PREPASS_DEPTH +`;A.IncludesShadersStoreWGSL[n4]||(A.IncludesShadersStoreWGSL[n4]=_de)});var s4,gde,cR=I(()=>{k();s4="prePassVertex",gde=`#ifdef PREPASS_DEPTH vertexOutputs.vViewPos=(scene.view*worldPos).rgb; #endif #ifdef PREPASS_NORMALIZED_VIEW_DEPTH @@ -5669,7 +5669,7 @@ vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWor vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWorld* vec4f(positionUpdated,1.0); #endif #endif -`;A.IncludesShadersStoreWGSL[i4]||(A.IncludesShadersStoreWGSL[i4]=hde)});var r4,ude,lR=I(()=>{k();r4="uvVariableDeclaration",ude=`#ifdef MAINUV{X} +`;A.IncludesShadersStoreWGSL[s4]||(A.IncludesShadersStoreWGSL[s4]=gde)});var a4,vde,fR=I(()=>{k();a4="uvVariableDeclaration",vde=`#ifdef MAINUV{X} #if !defined(UV{X}) var uv{X}: vec2f=vec2f(0.,0.); #elif defined(USE_VERTEX_PULLING) @@ -5679,7 +5679,7 @@ var uv{X}: vec2f=vertexInputs.uv{X}; #endif vertexOutputs.vMainUV{X}=uv{X}; #endif -`;A.IncludesShadersStoreWGSL[r4]||(A.IncludesShadersStoreWGSL[r4]=ude)});var n4,mde,cR=I(()=>{k();n4="samplerVertexImplementation",mde=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;A.IncludesShadersStoreWGSL[a4]||(A.IncludesShadersStoreWGSL[a4]=vde)});var o4,Ede,dR=I(()=>{k();o4="samplerVertexImplementation",Ede=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 if (uniforms.v_INFONAME_==0.) {vertexOutputs.v_VARYINGNAME_UV= (uniforms._MATRIXNAME_Matrix* vec4f(uvUpdated,1.0,0.0)).xy;} #ifdef UV2 @@ -5703,12 +5703,12 @@ else if (uniforms.v_INFONAME_==5.) {vertexOutputs.v_VARYINGNAME_UV= (uniforms._MATRIXNAME_Matrix* vec4f(vertexInputs.uv6,1.0,0.0)).xy;} #endif #endif -`;A.IncludesShadersStoreWGSL[n4]||(A.IncludesShadersStoreWGSL[n4]=mde)});var s4,pde,fR=I(()=>{k();s4="bumpVertex",pde=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;A.IncludesShadersStoreWGSL[o4]||(A.IncludesShadersStoreWGSL[o4]=Ede)});var l4,Sde,hR=I(()=>{k();l4="bumpVertex",Sde=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2]; #endif #endif -`;A.IncludesShadersStoreWGSL[s4]||(A.IncludesShadersStoreWGSL[s4]=pde)});var a4,_de,dR=I(()=>{k();a4="shadowsVertex",_de=`#ifdef SHADOWS +`;A.IncludesShadersStoreWGSL[l4]||(A.IncludesShadersStoreWGSL[l4]=Sde)});var c4,Tde,uR=I(()=>{k();c4="shadowsVertex",Tde=`#ifdef SHADOWS #if defined(SHADOWCSM{X}) #ifdef SCENE_UBO vertexOutputs.vPositionFromCamera{X}=scene.view*worldPos; @@ -5756,10 +5756,10 @@ vertexOutputs.vDepthMetric{X}=(vertexOutputs.vPositionFromLight{X}.z+light{X}.de #endif #endif #endif -`;A.IncludesShadersStoreWGSL[a4]||(A.IncludesShadersStoreWGSL[a4]=_de)});var o4,gde,hR=I(()=>{k();o4="logDepthVertex",gde=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStoreWGSL[c4]||(A.IncludesShadersStoreWGSL[c4]=Tde)});var f4,Ade,mR=I(()=>{k();f4="logDepthVertex",Ade=`#ifdef LOGARITHMICDEPTH vertexOutputs.vFragmentDepth=1.0+vertexOutputs.position.w;vertexOutputs.position.z=log2(max(0.000001,vertexOutputs.vFragmentDepth))*uniforms.logarithmicDepthConstant; #endif -`;A.IncludesShadersStoreWGSL[o4]||(A.IncludesShadersStoreWGSL[o4]=gde)});var c4={};Be(c4,{defaultVertexShaderWGSL:()=>vde});var aL,l4,vde,f4=I(()=>{k();nL();tR();wa();uc();mc();Hf();iR();hp();rR();sL();pc();jg();Kz();nR();Yf();Kf();Th();sR();aR();jf();qf();_c();gc();vc();oR();lR();cR();fR();Ec();qg();dR();Zg();hR();aL="defaultVertexShader",l4=`#include +`;A.IncludesShadersStoreWGSL[f4]||(A.IncludesShadersStoreWGSL[f4]=Ade)});var h4={};Be(h4,{defaultVertexShaderWGSL:()=>xde});var cL,d4,xde,u4=I(()=>{k();oL();rR();wa();uc();mc();Hf();nR();hp();sR();lL();pc();jg();Zz();aR();Yf();Kf();Th();oR();lR();jf();qf();_c();gc();vc();cR();fR();dR();hR();Ec();qg();uR();Zg();mR();cL="defaultVertexShader",d4=`#include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING attribute position: vec3f; @@ -5940,7 +5940,7 @@ vertexOutputs.vMainUV2=uv2Updated; #include #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStoreWGSL[aL]||(A.ShadersStoreWGSL[aL]=l4);vde={name:aL,shader:l4}});var d4,Ede,uR=I(()=>{k();d4="prePassDeclaration",Ede=`#ifdef PREPASS +`;A.ShadersStoreWGSL[cL]||(A.ShadersStoreWGSL[cL]=d4);xde={name:cL,shader:d4}});var m4,Rde,pR=I(()=>{k();m4="prePassDeclaration",Rde=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vPosition : vec3f; #endif @@ -5954,11 +5954,11 @@ varying vNormViewDepth: f32; varying vCurrentPosition: vec4f;varying vPreviousPosition: vec4f; #endif #endif -`;A.IncludesShadersStoreWGSL[d4]||(A.IncludesShadersStoreWGSL[d4]=Ede)});var h4,Sde,mR=I(()=>{k();h4="oitDeclaration",Sde=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;A.IncludesShadersStoreWGSL[m4]||(A.IncludesShadersStoreWGSL[m4]=Rde)});var p4,bde,_R=I(()=>{k();p4="oitDeclaration",bde=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY #define MAX_DEPTH 99999.0 var oitDepthSamplerSampler: sampler;var oitDepthSampler: texture_2d;var oitFrontColorSamplerSampler: sampler;var oitFrontColorSampler: texture_2d; #endif -`;A.IncludesShadersStoreWGSL[h4]||(A.IncludesShadersStoreWGSL[h4]=Sde)});var u4,Tde,pR=I(()=>{k();u4="lightUboDeclaration",Tde=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[p4]||(A.IncludesShadersStoreWGSL[p4]=bde)});var _4,Mde,gR=I(()=>{k();_4="lightUboDeclaration",Mde=`#ifdef LIGHT{X} struct Light{X} {vLightData: vec4f, vLightDiffuse: vec4f, @@ -6035,7 +6035,7 @@ uniform lightMatrix{X}: mat4x4f; #endif #endif #endif -`;A.IncludesShadersStoreWGSL[u4]||(A.IncludesShadersStoreWGSL[u4]=Tde)});var m4,Ade,oL=I(()=>{k();m4="ltcHelperFunctions",Ade=`fn LTCUv(N: vec3f,V: vec3f,roughness: f32)->vec2f {var LUTSIZE: f32=64.0;var LUTSCALE: f32=( LUTSIZE-1.0 )/LUTSIZE;var LUTBIAS:f32=0.5/LUTSIZE;var dotNV:f32=saturate( dot( N,V ) );var uv:vec2f=vec2f( roughness,sqrt( 1.0-dotNV ) );uv=uv*LUTSCALE+LUTBIAS;return uv;} +`;A.IncludesShadersStoreWGSL[_4]||(A.IncludesShadersStoreWGSL[_4]=Mde)});var g4,Ide,fL=I(()=>{k();g4="ltcHelperFunctions",Ide=`fn LTCUv(N: vec3f,V: vec3f,roughness: f32)->vec2f {var LUTSIZE: f32=64.0;var LUTSCALE: f32=( LUTSIZE-1.0 )/LUTSIZE;var LUTBIAS:f32=0.5/LUTSIZE;var dotNV:f32=saturate( dot( N,V ) );var uv:vec2f=vec2f( roughness,sqrt( 1.0-dotNV ) );uv=uv*LUTSCALE+LUTBIAS;return uv;} fn LTCClippedSphereFormFactor( f:vec3f )->f32 {var l: f32=length( f );return max( ( l*l+f.z )/( l+1.0 ),0.0 );} fn LTCEdgeVectorFormFactor( v1:vec3f,v2:vec3f )->vec3f {var x:f32=dot( v1,v2 );var y:f32=abs( x );var a:f32=0.8543985+( 0.4965155+0.0145206*y )*y;var b:f32=3.4175940+( 4.1616724+y )*y;var v:f32=a/b;var thetaSintheta:f32=0.0;if( x>0.0 ) {thetaSintheta=v;} @@ -6079,7 +6079,7 @@ vec3f(1,0,0), vec3f(0,1,0), vec3f(0,0,1) );result.Diffuse=LTCEvaluateWithEmission(normal,viewDir,position,mInvEmpty,rectCoords0,rectCoords1,rectCoords2,rectCoords3,emissionTexture,emissionTextureSampler);return result;} -`;A.IncludesShadersStoreWGSL[m4]||(A.IncludesShadersStoreWGSL[m4]=Ade)});var p4,xde,lL=I(()=>{k();p4="clusteredLightingFunctions",xde=`struct ClusteredLight {vLightData: vec4f, +`;A.IncludesShadersStoreWGSL[g4]||(A.IncludesShadersStoreWGSL[g4]=Ide)});var v4,yde,dL=I(()=>{k();v4="clusteredLightingFunctions",yde=`struct ClusteredLight {vLightData: vec4f, vLightDiffuse: vec4f, vLightSpecular: vec4f, vLightDirection: vec4f, @@ -6092,7 +6092,7 @@ textureLoad(lightDataTexture,vec2u(3,index),0), textureLoad(lightDataTexture,vec2u(4,index),0) );} fn getClusteredSliceIndex(sliceData: vec2f,viewDepth: f32)->i32 {return i32(log(viewDepth)*sliceData.x+sliceData.y);} -`;A.IncludesShadersStoreWGSL[p4]||(A.IncludesShadersStoreWGSL[p4]=xde)});var _4,Rde,g4=I(()=>{k();oL();lL();_4="lightsFragmentFunctions",Rde=`struct lightingInfo +`;A.IncludesShadersStoreWGSL[v4]||(A.IncludesShadersStoreWGSL[v4]=yde)});var E4,Cde,S4=I(()=>{k();fL();dL();E4="lightsFragmentFunctions",Cde=`struct lightingInfo {diffuse: vec3f, #ifdef SPECULARTERM specular: vec3f, @@ -6189,7 +6189,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;A.IncludesShadersStoreWGSL[_4]||(A.IncludesShadersStoreWGSL[_4]=Rde)});var v4,bde,_R=I(()=>{k();v4="shadowsFragmentFunctions",bde=`#ifdef SHADOWS +`;A.IncludesShadersStoreWGSL[E4]||(A.IncludesShadersStoreWGSL[E4]=Cde)});var T4,Pde,vR=I(()=>{k();T4="shadowsFragmentFunctions",Pde=`#ifdef SHADOWS #ifndef SHADOWFLOAT fn unpack(color: vec4f)->f32 {const bit_shift: vec4f= vec4f(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);} @@ -6481,7 +6481,7 @@ fn computeShadowWithCSMPCSS32(layer: i32,vPositionFromLight: vec4f,depthMetric: fn computeShadowWithCSMPCSS64(layer: i32,vPositionFromLight: vec4f,depthMetric: f32,depthTexture: texture_2d_array,depthSampler: sampler,shadowTexture: texture_depth_2d_array,shadowSampler: sampler_comparison,shadowMapSizeInverse: f32,lightSizeUV: f32,darkness: f32,frustumEdgeFalloff: f32,lightSizeUVCorrection: vec2f,depthCorrection: f32,penumbraDarkness: f32)->f32 {return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthTexture,depthSampler,shadowTexture,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64,lightSizeUVCorrection,depthCorrection,penumbraDarkness);} #endif -`;A.IncludesShadersStoreWGSL[v4]||(A.IncludesShadersStoreWGSL[v4]=bde)});var E4,Mde,Ah=I(()=>{k();E4="samplerFragmentDeclaration",Mde=`#ifdef _DEFINENAME_ +`;A.IncludesShadersStoreWGSL[T4]||(A.IncludesShadersStoreWGSL[T4]=Pde)});var A4,Dde,Ah=I(()=>{k();A4="samplerFragmentDeclaration",Dde=`#ifdef _DEFINENAME_ #if _DEFINENAME_DIRECTUV==1 #define v_VARYINGNAME_UV vMainUV1 #elif _DEFINENAME_DIRECTUV==2 @@ -6499,11 +6499,11 @@ varying v_VARYINGNAME_UV: vec2f; #endif var _SAMPLERNAME_SamplerSampler: sampler;var _SAMPLERNAME_Sampler: texture_2d; #endif -`;A.IncludesShadersStoreWGSL[E4]||(A.IncludesShadersStoreWGSL[E4]=Mde)});var S4,Ide,T4=I(()=>{k();S4="fresnelFunction",Ide=`#ifdef FRESNEL +`;A.IncludesShadersStoreWGSL[A4]||(A.IncludesShadersStoreWGSL[A4]=Dde)});var x4,Lde,R4=I(()=>{k();x4="fresnelFunction",Lde=`#ifdef FRESNEL fn computeFresnelTerm(viewDirection: vec3f,worldNormal: vec3f,bias: f32,power: f32)->f32 {let fresnelTerm: f32=pow(bias+abs(dot(viewDirection,worldNormal)),power);return clamp(fresnelTerm,0.,1.);} #endif -`;A.IncludesShadersStoreWGSL[S4]||(A.IncludesShadersStoreWGSL[S4]=Ide)});var A4,yde,fv=I(()=>{k();A4="reflectionFunction",yde=`fn computeFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f +`;A.IncludesShadersStoreWGSL[x4]||(A.IncludesShadersStoreWGSL[x4]=Lde)});var b4,Ode,fv=I(()=>{k();b4="reflectionFunction",Ode=`fn computeFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f {var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(s,t,0); } fn computeMirroredFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f {var lon: f32=atan2(direction.z,direction.x);var lat: f32=acos(direction.y);var sphereCoords: vec2f= vec2f(lon,lat)*RECIPROCAL_PI2*2.0;var s: f32=sphereCoords.x*0.5+0.5;var t: f32=sphereCoords.y;return vec3f(1.0-s,t,0); } @@ -6567,7 +6567,7 @@ return vec3f(0,0,0); #endif } #endif -`;A.IncludesShadersStoreWGSL[A4]||(A.IncludesShadersStoreWGSL[A4]=yde)});var x4,Cde,gR=I(()=>{k();x4="imageProcessingDeclaration",Cde=`#ifdef EXPOSURE +`;A.IncludesShadersStoreWGSL[b4]||(A.IncludesShadersStoreWGSL[b4]=Ode)});var M4,Nde,ER=I(()=>{k();M4="imageProcessingDeclaration",Nde=`#ifdef EXPOSURE uniform exposureLinear: f32; #endif #ifdef CONTRAST @@ -6593,7 +6593,7 @@ uniform colorTransformSettings: vec4f; #ifdef DITHER uniform ditherIntensity: f32; #endif -`;A.IncludesShadersStoreWGSL[x4]||(A.IncludesShadersStoreWGSL[x4]=Cde)});var R4,Pde,vR=I(()=>{k();R4="imageProcessingFunctions",Pde=`#if TONEMAPPING==3 +`;A.IncludesShadersStoreWGSL[M4]||(A.IncludesShadersStoreWGSL[M4]=Nde)});var I4,wde,SR=I(()=>{k();I4="imageProcessingFunctions",wde=`#if TONEMAPPING==3 const PBRNeutralStartCompression: f32=0.8-0.04;const PBRNeutralDesaturation: f32=0.15;fn PBRNeutralToneMapping( color: vec3f )->vec3f {var x: f32=min(color.r,min(color.g,color.b));var offset: f32=select(0.04,x-6.25*x*x,x<0.08);var result=color;result-=offset;var peak: f32=max(result.r,max(result.g,result.b));if (peak{k();b4="bumpFragmentMainFunctions",Dde=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return vec4f(rgb,result.a);}`;A.IncludesShadersStoreWGSL[I4]||(A.IncludesShadersStoreWGSL[I4]=wde)});var y4,Fde,TR=I(()=>{k();y4="bumpFragmentMainFunctions",Fde=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; #endif @@ -6695,7 +6695,7 @@ fn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f fn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f {var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);} #endif -`;A.IncludesShadersStoreWGSL[b4]||(A.IncludesShadersStoreWGSL[b4]=Dde)});var M4,Lde,SR=I(()=>{k();Ah();M4="bumpFragmentFunctions",Lde=`#if defined(BUMP) +`;A.IncludesShadersStoreWGSL[y4]||(A.IncludesShadersStoreWGSL[y4]=Fde)});var C4,Bde,AR=I(()=>{k();Ah();C4="bumpFragmentFunctions",Bde=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -6725,7 +6725,7 @@ return -texCoordOffset; #endif } #endif -`;A.IncludesShadersStoreWGSL[M4]||(A.IncludesShadersStoreWGSL[M4]=Lde)});var I4,Ode,TR=I(()=>{k();I4="bumpFragment",Ode=`var uvOffset: vec2f= vec2f(0.0,0.0); +`;A.IncludesShadersStoreWGSL[C4]||(A.IncludesShadersStoreWGSL[C4]=Bde)});var P4,Ude,xR=I(()=>{k();P4="bumpFragment",Ude=`var uvOffset: vec2f= vec2f(0.0,0.0); #if defined(BUMP) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE var normalScale: f32=1.0; @@ -6777,7 +6777,7 @@ normalW=perturbNormalBase(TBN,blendedNormal,uniforms.vBumpInfos.y); #elif defined(DETAIL) detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);normalW=perturbNormalBase(TBN,detailNormal,uniforms.vDetailInfos.z); #endif -`;A.IncludesShadersStoreWGSL[I4]||(A.IncludesShadersStoreWGSL[I4]=Ode)});var y4,Nde,cL=I(()=>{k();y4="decalFragment",Nde=`#ifdef DECAL +`;A.IncludesShadersStoreWGSL[P4]||(A.IncludesShadersStoreWGSL[P4]=Ude)});var D4,Vde,hL=I(()=>{k();D4="decalFragment",Vde=`#ifdef DECAL var decalTempColor=decalColor.rgb;var decalTempAlpha=decalColor.a; #ifdef GAMMADECAL decalTempColor=toLinearSpaceVec3(decalColor.rgb); @@ -6787,13 +6787,13 @@ decalTempAlpha=decalColor.a*decalColor.a; #endif surfaceAlbedo=mix(surfaceAlbedo.rgb,decalTempColor,decalTempAlpha); #endif -`;A.IncludesShadersStoreWGSL[y4]||(A.IncludesShadersStoreWGSL[y4]=Nde)});var C4,wde,AR=I(()=>{k();C4="depthPrePass",wde=`#ifdef DEPTHPREPASS +`;A.IncludesShadersStoreWGSL[D4]||(A.IncludesShadersStoreWGSL[D4]=Vde)});var L4,Gde,RR=I(()=>{k();L4="depthPrePass",Gde=`#ifdef DEPTHPREPASS #if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY) fragmentOutputs.color= vec4f(0.,0.,0.,1.0); #endif return fragmentOutputs; #endif -`;A.IncludesShadersStoreWGSL[C4]||(A.IncludesShadersStoreWGSL[C4]=wde)});var P4,Fde,fL=I(()=>{k();P4="lightFragment",Fde=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[L4]||(A.IncludesShadersStoreWGSL[L4]=Gde)});var O4,kde,uL=I(()=>{k();O4="lightFragment",kde=`#ifdef LIGHT{X} #if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X}) #else var diffuse{X}: vec4f=light{X}.vLightDiffuse; @@ -7180,10 +7180,10 @@ sheenBase+=info.sheen.rgb*shadow; #endif #endif #endif -`;A.IncludesShadersStoreWGSL[P4]||(A.IncludesShadersStoreWGSL[P4]=Fde)});var D4,Bde,xR=I(()=>{k();D4="logDepthFragment",Bde=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStoreWGSL[O4]||(A.IncludesShadersStoreWGSL[O4]=kde)});var N4,Wde,bR=I(()=>{k();N4="logDepthFragment",Wde=`#ifdef LOGARITHMICDEPTH fragmentOutputs.fragDepth=log2(fragmentInputs.vFragmentDepth)*uniforms.logarithmicDepthConstant*0.5; #endif -`;A.IncludesShadersStoreWGSL[D4]||(A.IncludesShadersStoreWGSL[D4]=Bde)});var L4,Ude,RR=I(()=>{k();L4="oitFragment",Ude=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;A.IncludesShadersStoreWGSL[N4]||(A.IncludesShadersStoreWGSL[N4]=Wde)});var w4,Hde,MR=I(()=>{k();w4="oitFragment",Hde=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY var fragDepth: f32=fragmentInputs.position.z; #ifdef ORDER_INDEPENDENT_TRANSPARENCY_16BITS var halfFloat: u32=pack2x16float( vec2f(fragDepth));var full: vec2f=unpack2x16float(halfFloat);fragDepth=full.x; @@ -7208,7 +7208,7 @@ if (fragDepth>nearestDepth && fragDepthVde});var dL,O4,Vde,w4=I(()=>{k();nL();uR();mR();hp();wa();pR();g4();_R();Ah();T4();fv();gR();vR();ER();SR();Sc();Th();Qg();Tc();TR();cL();AR();fL();xR();$g();RR();dL="defaultPixelShader",O4=`#include +`;A.IncludesShadersStoreWGSL[w4]||(A.IncludesShadersStoreWGSL[w4]=Hde)});var B4={};Be(B4,{defaultPixelShaderWGSL:()=>zde});var mL,F4,zde,U4=I(()=>{k();oL();pR();_R();hp();wa();gR();S4();vR();Ah();R4();fv();ER();SR();TR();AR();Sc();Th();Qg();Tc();xR();hL();RR();uL();bR();$g();MR();mL="defaultPixelShader",F4=`#include #include[SCENE_MRT_COUNT] #include #define CUSTOM_FRAGMENT_BEGIN @@ -7574,10 +7574,10 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #endif #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStoreWGSL[dL]||(A.ShadersStoreWGSL[dL]=O4);Vde={name:dL,shader:O4}});var F4,Gde,bR=I(()=>{k();F4="decalVertexDeclaration",Gde=`#ifdef DECAL +`;A.ShadersStoreWGSL[mL]||(A.ShadersStoreWGSL[mL]=F4);zde={name:mL,shader:F4}});var V4,Xde,IR=I(()=>{k();V4="decalVertexDeclaration",Xde=`#ifdef DECAL uniform vec4 vDecalInfos;uniform mat4 decalMatrix; #endif -`;A.IncludesShadersStore[F4]||(A.IncludesShadersStore[F4]=Gde)});var B4,kde,U4=I(()=>{k();bR();B4="defaultVertexDeclaration",kde=`uniform mat4 viewProjection; +`;A.IncludesShadersStore[V4]||(A.IncludesShadersStore[V4]=Xde)});var G4,Yde,k4=I(()=>{k();IR();G4="defaultVertexDeclaration",Yde=`uniform mat4 viewProjection; #ifdef MULTIVIEW mat4 viewProjectionR; #endif @@ -7615,28 +7615,28 @@ uniform vec4 vDetailInfos;uniform mat4 detailMatrix; uniform vec4 cameraInfo; #include #define ADDITIONAL_VERTEX_DECLARATION -`;A.IncludesShadersStore[B4]||(A.IncludesShadersStore[B4]=kde)});var V4,Wde,xh=I(()=>{k();V4="sceneUboDeclaration",Wde=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection; +`;A.IncludesShadersStore[G4]||(A.IncludesShadersStore[G4]=Yde)});var W4,Kde,xh=I(()=>{k();W4="sceneUboDeclaration",Kde=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection; #ifdef MULTIVIEW mat4 viewProjectionR; #endif mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;}; -`;A.IncludesShadersStore[V4]||(A.IncludesShadersStore[V4]=Wde)});var G4,Hde,dv=I(()=>{k();G4="meshUboDeclaration",Hde=`#ifdef WEBGL2 +`;A.IncludesShadersStore[W4]||(A.IncludesShadersStore[W4]=Kde)});var H4,jde,dv=I(()=>{k();H4="meshUboDeclaration",jde=`#ifdef WEBGL2 uniform mat4 world;uniform float visibility; #else layout(std140,column_major) uniform;uniform Mesh {mat4 world;float visibility;}; #endif #define WORLD_UBO -`;A.IncludesShadersStore[G4]||(A.IncludesShadersStore[G4]=Hde)});var k4,zde,hL=I(()=>{k();xh();dv();k4="defaultUboDeclaration",zde=`layout(std140,column_major) uniform;uniform Material +`;A.IncludesShadersStore[H4]||(A.IncludesShadersStore[H4]=jde)});var z4,qde,pL=I(()=>{k();xh();dv();z4="defaultUboDeclaration",qde=`layout(std140,column_major) uniform;uniform Material {vec4 diffuseLeftColor;vec4 diffuseRightColor;vec4 opacityParts;vec4 reflectionLeftColor;vec4 reflectionRightColor;vec4 refractionLeftColor;vec4 refractionRightColor;vec4 emissiveLeftColor;vec4 emissiveRightColor;vec2 vDiffuseInfos;vec2 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec2 vSpecularInfos;vec3 vBumpInfos;mat4 diffuseMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 specularMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;float pointSize;float alphaCutOff;mat4 refractionMatrix;vec4 vRefractionInfos;vec3 vRefractionPosition;vec3 vRefractionSize;vec4 vSpecularColor;vec3 vEmissiveColor;vec4 vDiffuseColor;vec3 vAmbientColor;vec4 cameraInfo;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionPosition;vec3 vReflectionSize; #define ADDITIONAL_UBO_DECLARATION }; #include #include -`;A.IncludesShadersStore[k4]||(A.IncludesShadersStore[k4]=zde)});var W4,Xde,MR=I(()=>{k();W4="uvAttributeDeclaration",Xde=`#ifdef UV{X} +`;A.IncludesShadersStore[z4]||(A.IncludesShadersStore[z4]=qde)});var X4,Zde,yR=I(()=>{k();X4="uvAttributeDeclaration",Zde=`#ifdef UV{X} attribute vec2 uv{X}; #endif -`;A.IncludesShadersStore[W4]||(A.IncludesShadersStore[W4]=Xde)});var H4,Yde,IR=I(()=>{k();H4="prePassVertexDeclaration",Yde=`#ifdef PREPASS +`;A.IncludesShadersStore[X4]||(A.IncludesShadersStore[X4]=Zde)});var Y4,Qde,CR=I(()=>{k();Y4="prePassVertexDeclaration",Qde=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vec3 vPosition; #endif @@ -7650,18 +7650,18 @@ varying float vNormViewDepth; uniform mat4 previousViewProjection;varying vec4 vCurrentPosition;varying vec4 vPreviousPosition; #endif #endif -`;A.IncludesShadersStore[H4]||(A.IncludesShadersStore[H4]=Yde)});var z4,Kde,up=I(()=>{k();z4="mainUVVaryingDeclaration",Kde=`#ifdef MAINUV{X} +`;A.IncludesShadersStore[Y4]||(A.IncludesShadersStore[Y4]=Qde)});var K4,$de,up=I(()=>{k();K4="mainUVVaryingDeclaration",$de=`#ifdef MAINUV{X} varying vec2 vMainUV{X}; #endif -`;A.IncludesShadersStore[z4]||(A.IncludesShadersStore[z4]=Kde)});var X4,jde,yR=I(()=>{k();X4="samplerVertexDeclaration",jde=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;A.IncludesShadersStore[K4]||(A.IncludesShadersStore[K4]=$de)});var j4,Jde,PR=I(()=>{k();j4="samplerVertexDeclaration",Jde=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying vec2 v_VARYINGNAME_UV; #endif -`;A.IncludesShadersStore[X4]||(A.IncludesShadersStore[X4]=jde)});var Y4,qde,uL=I(()=>{k();Y4="bumpVertexDeclaration",qde=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;A.IncludesShadersStore[j4]||(A.IncludesShadersStore[j4]=Jde)});var q4,ehe,_L=I(()=>{k();q4="bumpVertexDeclaration",ehe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif #endif -`;A.IncludesShadersStore[Y4]||(A.IncludesShadersStore[Y4]=qde)});var K4,Zde,CR=I(()=>{k();K4="lightVxFragmentDeclaration",Zde=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[q4]||(A.IncludesShadersStore[q4]=ehe)});var Z4,the,DR=I(()=>{k();Z4="lightVxFragmentDeclaration",the=`#ifdef LIGHT{X} uniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X}; #ifdef SPECULARTERM uniform vec4 vLightSpecular{X}; @@ -7688,7 +7688,7 @@ uniform vec3 vLightGround{X}; uniform vec4 vLightWidth{X};uniform vec4 vLightHeight{X}; #endif #endif -`;A.IncludesShadersStore[K4]||(A.IncludesShadersStore[K4]=Zde)});var j4,Qde,PR=I(()=>{k();j4="lightVxUboDeclaration",Qde=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[Z4]||(A.IncludesShadersStore[Z4]=the)});var Q4,ihe,LR=I(()=>{k();Q4="lightVxUboDeclaration",ihe=`#ifdef LIGHT{X} uniform Light{X} {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular; #ifdef SPOTLIGHT{X} @@ -7713,7 +7713,7 @@ varying vec4 vPositionFromLight{X};varying float vDepthMetric{X};uniform mat4 li #endif #endif #endif -`;A.IncludesShadersStore[j4]||(A.IncludesShadersStore[j4]=Qde)});var q4,$de,Zf=I(()=>{k();q4="morphTargetsVertexGlobalDeclaration",$de=`#ifdef MORPHTARGETS +`;A.IncludesShadersStore[Q4]||(A.IncludesShadersStore[Q4]=ihe)});var $4,rhe,Zf=I(()=>{k();$4="morphTargetsVertexGlobalDeclaration",rhe=`#ifdef MORPHTARGETS uniform float morphTargetInfluences[NUM_MORPH_INFLUENCERS]; #ifdef MORPHTARGETS_TEXTURE uniform float morphTargetTextureIndices[NUM_MORPH_INFLUENCERS];uniform vec3 morphTargetTextureInfo;uniform highp sampler2DArray morphTargets;vec3 readVector3FromRawSampler(int targetIndex,float vertexIndex) @@ -7734,7 +7734,7 @@ float y=floor(vertexIndex/morphTargetTextureInfo.y);float x=vertexIndex-y*morphT } #endif #endif -`;A.IncludesShadersStore[q4]||(A.IncludesShadersStore[q4]=$de)});var Z4,Jde,Qf=I(()=>{k();Z4="morphTargetsVertexDeclaration",Jde=`#ifdef MORPHTARGETS +`;A.IncludesShadersStore[$4]||(A.IncludesShadersStore[$4]=rhe)});var J4,nhe,Qf=I(()=>{k();J4="morphTargetsVertexDeclaration",nhe=`#ifdef MORPHTARGETS #ifndef MORPHTARGETS_TEXTURE #ifdef MORPHTARGETS_POSITION attribute vec3 position{X}; @@ -7758,15 +7758,15 @@ attribute vec4 color{X}; uniform float morphTargetCount; #endif #endif -`;A.IncludesShadersStore[Z4]||(A.IncludesShadersStore[Z4]=Jde)});var Q4,ehe,Rh=I(()=>{k();Q4="logDepthDeclaration",ehe=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStore[J4]||(A.IncludesShadersStore[J4]=nhe)});var eX,she,Rh=I(()=>{k();eX="logDepthDeclaration",she=`#ifdef LOGARITHMICDEPTH uniform float logarithmicDepthConstant;varying float vFragmentDepth; #endif -`;A.IncludesShadersStore[Q4]||(A.IncludesShadersStore[Q4]=ehe)});var $4,the,$f=I(()=>{k();$4="morphTargetsVertexGlobal",the=`#ifdef MORPHTARGETS +`;A.IncludesShadersStore[eX]||(A.IncludesShadersStore[eX]=she)});var tX,ahe,$f=I(()=>{k();tX="morphTargetsVertexGlobal",ahe=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE float vertexID; #endif #endif -`;A.IncludesShadersStore[$4]||(A.IncludesShadersStore[$4]=the)});var J4,ihe,Jf=I(()=>{k();J4="morphTargetsVertex",ihe=`#ifdef MORPHTARGETS +`;A.IncludesShadersStore[tX]||(A.IncludesShadersStore[tX]=ahe)});var iX,ohe,Jf=I(()=>{k();iX="morphTargetsVertex",ohe=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE #if {X}==0 for (int i=0; i=morphTargetCount) break;vertexID=float(gl_VertexID)*morphTargetTextureInfo.x; @@ -7826,7 +7826,7 @@ colorUpdated+=(color{X}-color)*morphTargetInfluences[{X}]; #endif #endif #endif -`;A.IncludesShadersStore[J4]||(A.IncludesShadersStore[J4]=ihe)});var eX,rhe,DR=I(()=>{k();eX="prePassVertex",rhe=`#ifdef PREPASS_DEPTH +`;A.IncludesShadersStore[iX]||(A.IncludesShadersStore[iX]=ohe)});var rX,lhe,OR=I(()=>{k();rX="prePassVertex",lhe=`#ifdef PREPASS_DEPTH vViewPos=(view*worldPos).rgb; #endif #ifdef PREPASS_NORMALIZED_VIEW_DEPTH @@ -7865,13 +7865,13 @@ vPreviousPosition=previousViewProjection*finalPreviousWorld*previousInfluence*ve vPreviousPosition=previousViewProjection*finalPreviousWorld*vec4(positionUpdated,1.0); #endif #endif -`;A.IncludesShadersStore[eX]||(A.IncludesShadersStore[eX]=rhe)});var tX,nhe,LR=I(()=>{k();tX="uvVariableDeclaration",nhe=`#if !defined(UV{X}) && defined(MAINUV{X}) +`;A.IncludesShadersStore[rX]||(A.IncludesShadersStore[rX]=lhe)});var nX,che,NR=I(()=>{k();nX="uvVariableDeclaration",che=`#if !defined(UV{X}) && defined(MAINUV{X}) vec2 uv{X}=vec2(0.,0.); #endif #ifdef MAINUV{X} vMainUV{X}=uv{X}; #endif -`;A.IncludesShadersStore[tX]||(A.IncludesShadersStore[tX]=nhe)});var iX,she,OR=I(()=>{k();iX="samplerVertexImplementation",she=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;A.IncludesShadersStore[nX]||(A.IncludesShadersStore[nX]=che)});var sX,fhe,wR=I(()=>{k();sX="samplerVertexImplementation",fhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 if (v_INFONAME_==0.) {v_VARYINGNAME_UV=vec2(_MATRIXNAME_Matrix*vec4(uvUpdated,1.0,0.0));} #ifdef UV2 @@ -7895,12 +7895,12 @@ else if (v_INFONAME_==5.) {v_VARYINGNAME_UV=vec2(_MATRIXNAME_Matrix*vec4(uv6,1.0,0.0));} #endif #endif -`;A.IncludesShadersStore[iX]||(A.IncludesShadersStore[iX]=she)});var rX,ahe,NR=I(()=>{k();rX="bumpVertex",ahe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;A.IncludesShadersStore[sX]||(A.IncludesShadersStore[sX]=fhe)});var aX,dhe,FR=I(()=>{k();aX="bumpVertex",dhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) vec3 tbnNormal=normalize(normalUpdated);vec3 tbnTangent=normalize(tangentUpdated.xyz);vec3 tbnBitangent=cross(tbnNormal,tbnTangent)*tangentUpdated.w;vTBN=mat3(finalWorld)*mat3(tbnTangent,tbnBitangent,tbnNormal); #endif #endif -`;A.IncludesShadersStore[rX]||(A.IncludesShadersStore[rX]=ahe)});var nX,ohe,wR=I(()=>{k();nX="shadowsVertex",ohe=`#ifdef SHADOWS +`;A.IncludesShadersStore[aX]||(A.IncludesShadersStore[aX]=dhe)});var oX,hhe,BR=I(()=>{k();oX="shadowsVertex",hhe=`#ifdef SHADOWS #if defined(SHADOWCSM{X}) vPositionFromCamera{X}=view*worldPos;for (int i=0; i{k();sX="pointCloudVertex",lhe=`#if defined(POINTSIZE) && !defined(WEBGPU) +`;A.IncludesShadersStore[oX]||(A.IncludesShadersStore[oX]=hhe)});var lX,uhe,gL=I(()=>{k();lX="pointCloudVertex",uhe=`#if defined(POINTSIZE) && !defined(WEBGPU) gl_PointSize=pointSize; #endif -`;A.IncludesShadersStore[sX]||(A.IncludesShadersStore[sX]=lhe)});var aX,che,FR=I(()=>{k();aX="logDepthVertex",che=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStore[lX]||(A.IncludesShadersStore[lX]=uhe)});var cX,mhe,UR=I(()=>{k();cX="logDepthVertex",mhe=`#ifdef LOGARITHMICDEPTH vFragmentDepth=1.0+gl_Position.w;gl_Position.z=log2(max(0.000001,vFragmentDepth))*logarithmicDepthConstant; #endif -`;A.IncludesShadersStore[aX]||(A.IncludesShadersStore[aX]=che)});var lX={};Be(lX,{defaultVertexShader:()=>fhe});var pL,oX,fhe,cX=I(()=>{k();U4();hL();MR();Fa();Ac();xc();zf();IR();up();yR();uL();Rc();Jg();CR();PR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();DR();LR();OR();NR();yc();ev();wR();tv();mL();FR();pL="defaultVertexShader",oX=`#define CUSTOM_VERTEX_EXTENSION +`;A.IncludesShadersStore[cX]||(A.IncludesShadersStore[cX]=mhe)});var dX={};Be(dX,{defaultVertexShader:()=>phe});var vL,fX,phe,hX=I(()=>{k();k4();pL();yR();Fa();Ac();xc();zf();CR();up();PR();_L();Rc();Jg();DR();LR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();OR();NR();wR();FR();yc();ev();BR();tv();gL();UR();vL="defaultVertexShader",fX=`#define CUSTOM_VERTEX_EXTENSION #include<__decl__defaultVertex> #define CUSTOM_VERTEX_BEGIN attribute vec3 position; @@ -8078,10 +8078,10 @@ vMainUV2=uv2Updated; #include #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStore[pL]||(A.ShadersStore[pL]=oX);fhe={name:pL,shader:oX}});var fX,dhe,BR=I(()=>{k();fX="decalFragmentDeclaration",dhe=`#ifdef DECAL +`;A.ShadersStore[vL]||(A.ShadersStore[vL]=fX);phe={name:vL,shader:fX}});var uX,_he,VR=I(()=>{k();uX="decalFragmentDeclaration",_he=`#ifdef DECAL uniform vec4 vDecalInfos; #endif -`;A.IncludesShadersStore[fX]||(A.IncludesShadersStore[fX]=dhe)});var dX,hhe,hX=I(()=>{k();BR();dX="defaultFragmentDeclaration",hhe=`uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;uniform vec4 vSpecularColor;uniform vec3 vEmissiveColor;uniform vec3 vAmbientColor;uniform float visibility; +`;A.IncludesShadersStore[uX]||(A.IncludesShadersStore[uX]=_he)});var mX,ghe,pX=I(()=>{k();VR();mX="defaultFragmentDeclaration",ghe=`uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;uniform vec4 vSpecularColor;uniform vec3 vEmissiveColor;uniform vec3 vAmbientColor;uniform float visibility; #ifdef DIFFUSE uniform vec2 vDiffuseInfos; #endif @@ -8149,7 +8149,7 @@ uniform vec4 vDetailInfos; #endif #include #define ADDITIONAL_FRAGMENT_DECLARATION -`;A.IncludesShadersStore[dX]||(A.IncludesShadersStore[dX]=hhe)});var uX,uhe,UR=I(()=>{k();uX="prePassDeclaration",uhe=`#ifdef PREPASS +`;A.IncludesShadersStore[mX]||(A.IncludesShadersStore[mX]=ghe)});var _X,vhe,GR=I(()=>{k();_X="prePassDeclaration",vhe=`#ifdef PREPASS #extension GL_EXT_draw_buffers : require layout(location=0) out highp vec4 glFragData[{X}];highp vec4 gl_FragColor; #ifdef PREPASS_LOCAL_POSITION @@ -8165,14 +8165,14 @@ varying highp float vNormViewDepth; varying highp vec4 vCurrentPosition;varying highp vec4 vPreviousPosition; #endif #endif -`;A.IncludesShadersStore[uX]||(A.IncludesShadersStore[uX]=uhe)});var mX,mhe,VR=I(()=>{k();mX="oitDeclaration",mhe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;A.IncludesShadersStore[_X]||(A.IncludesShadersStore[_X]=vhe)});var gX,Ehe,kR=I(()=>{k();gX="oitDeclaration",Ehe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY #extension GL_EXT_draw_buffers : require layout(location=0) out vec2 depth; layout(location=1) out vec4 frontColor;layout(location=2) out vec4 backColor; #define MAX_DEPTH 99999.0 highp vec4 gl_FragColor;uniform sampler2D oitDepthSampler;uniform sampler2D oitFrontColorSampler; #endif -`;A.IncludesShadersStore[mX]||(A.IncludesShadersStore[mX]=mhe)});var pX,phe,GR=I(()=>{k();pX="lightFragmentDeclaration",phe=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[gX]||(A.IncludesShadersStore[gX]=Ehe)});var vX,She,WR=I(()=>{k();vX="lightFragmentDeclaration",She=`#ifdef LIGHT{X} uniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X}; #ifdef SPECULARTERM uniform vec4 vLightSpecular{X}; @@ -8246,7 +8246,7 @@ uniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture uniform vec2 vSliceData{X};uniform vec2 vSliceRanges{X}[CLUSTLIGHT_SLICES];uniform sampler2D lightDataTexture{X};uniform highp sampler2D tileMaskTexture{X}; #endif #endif -`;A.IncludesShadersStore[pX]||(A.IncludesShadersStore[pX]=phe)});var _X,_he,kR=I(()=>{k();_X="lightUboDeclaration",_he=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[vX]||(A.IncludesShadersStore[vX]=She)});var EX,The,HR=I(()=>{k();EX="lightUboDeclaration",The=`#ifdef LIGHT{X} uniform Light{X} {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular; #ifdef SPOTLIGHT{X} @@ -8318,7 +8318,7 @@ uniform mat4 lightMatrix{X}; #endif #endif #endif -`;A.IncludesShadersStore[_X]||(A.IncludesShadersStore[_X]=_he)});var gX,ghe,_L=I(()=>{k();gX="ltcHelperFunctions",ghe=`vec2 LTCUv( const in vec3 N,const in vec3 V,const in float roughness ) {const float LUTSIZE=64.0;const float LUTSCALE=( LUTSIZE-1.0 )/LUTSIZE;const float LUTBIAS=0.5/LUTSIZE;float dotNV=saturate( dot( N,V ) );vec2 uv=vec2( roughness,sqrt( 1.0-dotNV ) );uv=uv*LUTSCALE+LUTBIAS;return uv;} +`;A.IncludesShadersStore[EX]||(A.IncludesShadersStore[EX]=The)});var SX,Ahe,EL=I(()=>{k();SX="ltcHelperFunctions",Ahe=`vec2 LTCUv( const in vec3 N,const in vec3 V,const in float roughness ) {const float LUTSIZE=64.0;const float LUTSCALE=( LUTSIZE-1.0 )/LUTSIZE;const float LUTBIAS=0.5/LUTSIZE;float dotNV=saturate( dot( N,V ) );vec2 uv=vec2( roughness,sqrt( 1.0-dotNV ) );uv=uv*LUTSCALE+LUTBIAS;return uv;} float LTCClippedSphereFormFactor( const in vec3 f ) {float l=length( f );return max( ( l*l+f.z )/( l+1.0 ),0.0 );} vec3 LTCEdgeVectorFormFactor( const in vec3 v1,const in vec3 v2 ) {float x=dot( v1,v2 );float y=abs( x );float a=0.8543985+( 0.4965155+0.0145206*y )*y;float b=3.4175940+( 4.1616724+y )*y;float v=a/b;float thetaSintheta=0.0;if( x>0.0 ) {thetaSintheta=v;} @@ -8356,7 +8356,7 @@ vec3( 0,1, 0 ), vec3( t1.z,0,t1.w ) );result.Specular=LTCEvaluateWithEmission( normal,viewDir,position,mInv,rectCoords,texFilteredMap );result.Fresnel=t2; #endif -result.Diffuse=LTCEvaluateWithEmission( normal,viewDir,position,mat3( 1.0 ),rectCoords,texFilteredMap );return result;}`;A.IncludesShadersStore[gX]||(A.IncludesShadersStore[gX]=ghe)});var vX,vhe,gL=I(()=>{k();vX="clusteredLightingFunctions",vhe=`struct ClusteredLight {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;vec4 vLightDirection;vec4 vLightFalloff;}; +result.Diffuse=LTCEvaluateWithEmission( normal,viewDir,position,mat3( 1.0 ),rectCoords,texFilteredMap );return result;}`;A.IncludesShadersStore[SX]||(A.IncludesShadersStore[SX]=Ahe)});var TX,xhe,SL=I(()=>{k();TX="clusteredLightingFunctions",xhe=`struct ClusteredLight {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;vec4 vLightDirection;vec4 vLightFalloff;}; #define inline ClusteredLight getClusteredLight(sampler2D lightDataTexture,int index) {return ClusteredLight( texelFetch(lightDataTexture,ivec2(0,index),0), @@ -8366,7 +8366,7 @@ texelFetch(lightDataTexture,ivec2(3,index),0), texelFetch(lightDataTexture,ivec2(4,index),0) );} int getClusteredSliceIndex(vec2 sliceData,float viewDepth) {return int(log(viewDepth)*sliceData.x+sliceData.y);} -`;A.IncludesShadersStore[vX]||(A.IncludesShadersStore[vX]=vhe)});var EX,Ehe,SX=I(()=>{k();_L();gL();EX="lightsFragmentFunctions",Ehe=`struct lightingInfo +`;A.IncludesShadersStore[TX]||(A.IncludesShadersStore[TX]=xhe)});var AX,Rhe,xX=I(()=>{k();EL();SL();AX="lightsFragmentFunctions",Rhe=`struct lightingInfo {vec3 diffuse; #ifdef SPECULARTERM vec3 specular; @@ -8470,7 +8470,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;A.IncludesShadersStore[EX]||(A.IncludesShadersStore[EX]=Ehe)});var TX,She,WR=I(()=>{k();TX="shadowsFragmentFunctions",She=`#ifdef SHADOWS +`;A.IncludesShadersStore[AX]||(A.IncludesShadersStore[AX]=Rhe)});var RX,bhe,zR=I(()=>{k();RX="shadowsFragmentFunctions",bhe=`#ifdef SHADOWS #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) #define TEXTUREFUNC(s,c,l) texture2DLodEXT(s,c,l) #else @@ -8813,7 +8813,7 @@ float computeShadowWithCSMPCSS64(float layer,vec4 vPositionFromLight,float depth {return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64,lightSizeUVCorrection,depthCorrection,penumbraDarkness);} #endif #endif -`;A.IncludesShadersStore[TX]||(A.IncludesShadersStore[TX]=She)});var AX,The,bh=I(()=>{k();AX="samplerFragmentDeclaration",The=`#ifdef _DEFINENAME_ +`;A.IncludesShadersStore[RX]||(A.IncludesShadersStore[RX]=bhe)});var bX,Mhe,bh=I(()=>{k();bX="samplerFragmentDeclaration",Mhe=`#ifdef _DEFINENAME_ #if _DEFINENAME_DIRECTUV==1 #define v_VARYINGNAME_UV vMainUV1 #elif _DEFINENAME_DIRECTUV==2 @@ -8831,11 +8831,11 @@ varying vec2 v_VARYINGNAME_UV; #endif uniform sampler2D _SAMPLERNAME_Sampler; #endif -`;A.IncludesShadersStore[AX]||(A.IncludesShadersStore[AX]=The)});var xX,Ahe,RX=I(()=>{k();xX="fresnelFunction",Ahe=`#ifdef FRESNEL +`;A.IncludesShadersStore[bX]||(A.IncludesShadersStore[bX]=Mhe)});var MX,Ihe,IX=I(()=>{k();MX="fresnelFunction",Ihe=`#ifdef FRESNEL float computeFresnelTerm(vec3 viewDirection,vec3 worldNormal,float bias,float power) {float fresnelTerm=pow(bias+abs(dot(viewDirection,worldNormal)),power);return clamp(fresnelTerm,0.,1.);} #endif -`;A.IncludesShadersStore[xX]||(A.IncludesShadersStore[xX]=Ahe)});var bX,xhe,hv=I(()=>{k();bX="reflectionFunction",xhe=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) +`;A.IncludesShadersStore[MX]||(A.IncludesShadersStore[MX]=Ihe)});var yX,yhe,hv=I(()=>{k();yX="reflectionFunction",yhe=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); } vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); } @@ -8897,7 +8897,7 @@ return vec3(0,0,0); #endif } #endif -`;A.IncludesShadersStore[bX]||(A.IncludesShadersStore[bX]=xhe)});var MX,Rhe,HR=I(()=>{k();MX="imageProcessingDeclaration",Rhe=`#ifdef EXPOSURE +`;A.IncludesShadersStore[yX]||(A.IncludesShadersStore[yX]=yhe)});var CX,Che,XR=I(()=>{k();CX="imageProcessingDeclaration",Che=`#ifdef EXPOSURE uniform float exposureLinear; #endif #ifdef CONTRAST @@ -8923,7 +8923,7 @@ uniform vec4 colorTransformSettings; #ifdef DITHER uniform float ditherIntensity; #endif -`;A.IncludesShadersStore[MX]||(A.IncludesShadersStore[MX]=Rhe)});var IX,bhe,zR=I(()=>{k();IX="imageProcessingFunctions",bhe=`#if defined(COLORGRADING) && !defined(COLORGRADING3D) +`;A.IncludesShadersStore[CX]||(A.IncludesShadersStore[CX]=Che)});var PX,Phe,YR=I(()=>{k();PX="imageProcessingFunctions",Phe=`#if defined(COLORGRADING) && !defined(COLORGRADING3D) /** * Polyfill for SAMPLE_TEXTURE_3D,which is unsupported in WebGL. * sampler3dSetting.x=textureOffset (0.5/textureSize). @@ -9011,7 +9011,7 @@ float luma=getLuminance(result.rgb);vec2 curveMix=clamp(vec2(luma*3.0-1.5,luma*- float rand=getRand(gl_FragCoord.xy*vInverseScreenSize);float dither=mix(-ditherIntensity,ditherIntensity,rand);result.rgb=saturate(result.rgb+vec3(dither)); #endif #define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATEND -return result;}`;A.IncludesShadersStore[IX]||(A.IncludesShadersStore[IX]=bhe)});var yX,Mhe,XR=I(()=>{k();yX="bumpFragmentMainFunctions",Mhe=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return result;}`;A.IncludesShadersStore[PX]||(A.IncludesShadersStore[PX]=Phe)});var DX,Dhe,KR=I(()=>{k();DX="bumpFragmentMainFunctions",Dhe=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif @@ -9072,7 +9072,7 @@ vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale) mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams) {vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);} #endif -`;A.IncludesShadersStore[yX]||(A.IncludesShadersStore[yX]=Mhe)});var CX,Ihe,YR=I(()=>{k();bh();CX="bumpFragmentFunctions",Ihe=`#if defined(BUMP) +`;A.IncludesShadersStore[DX]||(A.IncludesShadersStore[DX]=Dhe)});var LX,Lhe,jR=I(()=>{k();bh();LX="bumpFragmentFunctions",Lhe=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -9102,7 +9102,7 @@ return -texCoordOffset; #endif } #endif -`;A.IncludesShadersStore[CX]||(A.IncludesShadersStore[CX]=Ihe)});var PX,yhe,KR=I(()=>{k();PX="bumpFragment",yhe=`vec2 uvOffset=vec2(0.0,0.0); +`;A.IncludesShadersStore[LX]||(A.IncludesShadersStore[LX]=Lhe)});var OX,Ohe,qR=I(()=>{k();OX="bumpFragment",Ohe=`vec2 uvOffset=vec2(0.0,0.0); #if defined(BUMP) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE float normalScale=1.0; @@ -9154,7 +9154,7 @@ normalW=perturbNormalBase(TBN,blendedNormal,vBumpInfos.y); #elif defined(DETAIL) detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z); #endif -`;A.IncludesShadersStore[PX]||(A.IncludesShadersStore[PX]=yhe)});var DX,Che,vL=I(()=>{k();DX="decalFragment",Che=`#ifdef DECAL +`;A.IncludesShadersStore[OX]||(A.IncludesShadersStore[OX]=Ohe)});var NX,Nhe,TL=I(()=>{k();NX="decalFragment",Nhe=`#ifdef DECAL #ifdef GAMMADECAL decalColor.rgb=toLinearSpace(decalColor.rgb); #endif @@ -9163,10 +9163,10 @@ decalColor.a*=decalColor.a; #endif surfaceAlbedo.rgb=mix(surfaceAlbedo.rgb,decalColor.rgb,decalColor.a); #endif -`;A.IncludesShadersStore[DX]||(A.IncludesShadersStore[DX]=Che)});var LX,Phe,jR=I(()=>{k();LX="depthPrePass",Phe=`#ifdef DEPTHPREPASS +`;A.IncludesShadersStore[NX]||(A.IncludesShadersStore[NX]=Nhe)});var wX,whe,ZR=I(()=>{k();wX="depthPrePass",whe=`#ifdef DEPTHPREPASS gl_FragColor=vec4(0.,0.,0.,1.0);return; #endif -`;A.IncludesShadersStore[LX]||(A.IncludesShadersStore[LX]=Phe)});var OX,Dhe,EL=I(()=>{k();OX="lightFragment",Dhe=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[wX]||(A.IncludesShadersStore[wX]=whe)});var FX,Fhe,AL=I(()=>{k();FX="lightFragment",Fhe=`#ifdef LIGHT{X} #if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X}) #else vec4 diffuse{X}=light{X}.vLightDiffuse; @@ -9544,10 +9544,10 @@ sheenBase+=info.sheen.rgb*shadow; #endif #endif #endif -`;A.IncludesShadersStore[OX]||(A.IncludesShadersStore[OX]=Dhe)});var NX,Lhe,qR=I(()=>{k();NX="logDepthFragment",Lhe=`#ifdef LOGARITHMICDEPTH +`;A.IncludesShadersStore[FX]||(A.IncludesShadersStore[FX]=Fhe)});var BX,Bhe,QR=I(()=>{k();BX="logDepthFragment",Bhe=`#ifdef LOGARITHMICDEPTH gl_FragDepthEXT=log2(vFragmentDepth)*logarithmicDepthConstant*0.5; #endif -`;A.IncludesShadersStore[NX]||(A.IncludesShadersStore[NX]=Lhe)});var wX,Ohe,ZR=I(()=>{k();wX="oitFragment",Ohe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;A.IncludesShadersStore[BX]||(A.IncludesShadersStore[BX]=Bhe)});var UX,Uhe,$R=I(()=>{k();UX="oitFragment",Uhe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY float fragDepth=gl_FragCoord.z; #ifdef ORDER_INDEPENDENT_TRANSPARENCY_16BITS uint halfFloat=packHalf2x16(vec2(fragDepth));vec2 full=unpackHalf2x16(halfFloat);fragDepth=full.x; @@ -9572,7 +9572,7 @@ if (fragDepth>nearestDepth && fragDepthNhe});var SL,FX,Nhe,UX=I(()=>{k();hX();hL();UR();VR();up();Fa();GR();kR();SX();WR();bh();RX();hv();HR();zR();XR();YR();Cc();Rh();iv();Pc();KR();vL();jR();EL();qR();rv();ZR();SL="defaultPixelShader",FX=`#define CUSTOM_FRAGMENT_EXTENSION +`;A.IncludesShadersStore[UX]||(A.IncludesShadersStore[UX]=Uhe)});var GX={};Be(GX,{defaultPixelShader:()=>Vhe});var xL,VX,Vhe,kX=I(()=>{k();pX();pL();GR();kR();up();Fa();WR();HR();xX();zR();bh();IX();hv();XR();YR();KR();jR();Cc();Rh();iv();Pc();qR();TL();ZR();AL();QR();rv();$R();xL="defaultPixelShader",VX=`#define CUSTOM_FRAGMENT_EXTENSION #include<__decl__defaultFragment> #if defined(BUMP) || !defined(NORMAL) #extension GL_OES_standard_derivatives : enable @@ -9921,10 +9921,10 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=color.rgb*color.a*alphaMultiplier; #endif #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStore[SL]||(A.ShadersStore[SL]=FX);Nhe={name:SL,shader:FX}});var TL,AL,xL,RL,We,Dc=I(()=>{Gt();Vt();So();Bs();Ht();Wi();qx();Zx();Mg();Yn();Ga();Yg();Yi();Ua();Gf();rL();vl();Kg();Xn();br();Qx();$x();Jx();eR();TL={effect:null,subMesh:null},AL=class extends fp(cp(Mr)){},xL=class extends op(AL){constructor(e){super(e),this.DIFFUSE=!1,this.DIFFUSEDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.OPACITY=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.REFLECTION=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.SPECULAR=!1,this.SPECULARDIRECTUV=0,this.BUMP=!1,this.BUMPDIRECTUV=0,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.SPECULAROVERALPHA=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHAFROMDIFFUSE=!1,this.POINTSIZE=!1,this.FOG=!1,this.SPECULARTERM=!1,this.DIFFUSEFRESNEL=!1,this.OPACITYFRESNEL=!1,this.REFLECTIONFRESNEL=!1,this.REFRACTIONFRESNEL=!1,this.EMISSIVEFRESNEL=!1,this.FRESNEL=!1,this.NORMAL=!1,this.TANGENT=!1,this.VERTEXCOLOR=!1,this.VERTEXALPHA=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.GLOSSINESS=!1,this.ROUGHNESS=!1,this.EMISSIVEASILLUMINATION=!1,this.LINKEMISSIVEWITHDIFFUSE=!1,this.REFLECTIONFRESNELFROMSPECULAR=!1,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.USELIGHTMAPASSHADOWMAP=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.INVERTCUBICMAP=!1,this.LOGARITHMICDEPTH=!1,this.REFRACTION=!1,this.REFRACTIONMAP_3D=!1,this.REFLECTIONOVERALPHA=!1,this.TWOSIDEDLIGHTING=!1,this.SHADOWFLOAT=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.NONUNIFORMSCALING=!1,this.PREMULTIPLYALPHA=!1,this.ALPHATEST_AFTERALLALPHACOMPUTATIONS=!1,this.ALPHABLEND=!0,this.RGBDLIGHTMAP=!1,this.RGBDREFLECTION=!1,this.RGBDREFRACTION=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.IS_REFLECTION_LINEAR=!1,this.IS_REFRACTION_LINEAR=!1,this.DECAL_AFTER_DETAIL=!1,this.rebuild()}},RL=class extends dp(Al){},We=class n extends RL{get isPrePassCapable(){return!this.disableDepthWrite}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._diffuseTexture=null,this._ambientTexture=null,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._specularTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._refractionTexture=null,this.ambientColor=new pe(0,0,0),this.diffuseColor=new pe(1,1,1),this.specularColor=new pe(1,1,1),this.emissiveColor=new pe(0,0,0),this.specularPower=64,this._useAlphaFromDiffuseTexture=!1,this._useEmissiveAsIllumination=!1,this._linkEmissiveWithDiffuse=!1,this._useSpecularOverAlpha=!1,this._useReflectionOverAlpha=!1,this._disableLighting=!1,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this._roughness=0,this.indexOfRefraction=.98,this.invertRefractionY=!0,this.alphaCutOff=.4,this._useLightmapAsShadowmap=!1,this._useReflectionFresnelFromSpecular=!1,this._useGlossinessFromSpecularMapAlpha=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._applyDecalMapAfterDetailMap=!1,this._shadersLoaded=!1,this._vertexPullingMetadata=null,this._renderTargets=new Vi(16),this._globalAmbientColor=new pe(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new ka(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new Hs,this.getRenderTargetTextures=()=>(this._renderTargets.reset(),n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&this._renderTargets.push(this._refractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets)}get hasRenderTargetTextures(){return n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget||n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}getClassName(){return"StandardMaterial"}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromDiffuseTexture()||this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===Se.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Se.MATERIAL_OPAQUE}_hasAlphaChannel(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._diffuseTexture}isReadyForSubMesh(e,t,i=!1){this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new xL(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=zm(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!Hm(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;Km(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(s,a,this.canRenderToMRT&&!l),jm(s,a,l),Zn.PrepareDefines(o.currentRenderPassId,e,a),a._areTexturesDirty){this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a._needUVs=!1;for(let f=1;f<=6;++f)a["MAINUV"+f]=!1;if(s.texturesEnabled){if(a.DIFFUSEDIRECTUV=0,a.BUMPDIRECTUV=0,a.AMBIENTDIRECTUV=0,a.OPACITYDIRECTUV=0,a.EMISSIVEDIRECTUV=0,a.SPECULARDIRECTUV=0,a.LIGHTMAPDIRECTUV=0,this._diffuseTexture&&n.DiffuseTextureEnabled)if(this._diffuseTexture.isReadyOrNotBlocking())ri(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())ri(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())ri(this._opacityTexture,a,"OPACITY"),a.OPACITYRGB=this._opacityTexture.getAlphaFromRGB;else return!1;else a.OPACITY=!1;if(this._reflectionTexture&&n.ReflectionTextureEnabled?(a.ROUGHNESS=this._roughness>0,a.REFLECTIONOVERALPHA=this._useReflectionOverAlpha):(a.ROUGHNESS=!1,a.REFLECTIONOVERALPHA=!1),!Lf(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())ri(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())ri(this._lightmapTexture,a,"LIGHTMAP"),a.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,a.RGBDLIGHTMAP=this._lightmapTexture.isRGBD;else return!1;else a.LIGHTMAP=!1;if(this._specularTexture&&n.SpecularTextureEnabled)if(this._specularTexture.isReadyOrNotBlocking())ri(this._specularTexture,a,"SPECULAR"),a.GLOSSINESS=this._useGlossinessFromSpecularMapAlpha;else return!1;else a.SPECULAR=!1;if(s.getEngine().getCaps().standardDerivatives&&this._bumpTexture&&n.BumpTextureEnabled){if(this._bumpTexture.isReady())ri(this._bumpTexture,a,"BUMP"),a.PARALLAX=this._useParallax,a.PARALLAX_RHS=s.useRightHandedSystem,a.PARALLAXOCCLUSION=this._useParallaxOcclusion;else return!1;a.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap}else a.BUMP=!1,a.PARALLAX=!1,a.PARALLAX_RHS=!1,a.PARALLAXOCCLUSION=!1;if(this._refractionTexture&&n.RefractionTextureEnabled)if(this._refractionTexture.isReadyOrNotBlocking())a._needUVs=!0,a.REFRACTION=!0,a.REFRACTIONMAP_3D=this._refractionTexture.isCube,a.RGBDREFRACTION=this._refractionTexture.isRGBD,a.USE_LOCAL_REFRACTIONMAP_CUBIC=!!this._refractionTexture.boundingBoxSize;else return!1;else a.REFRACTION=!1;a.TWOSIDEDLIGHTING=!this._backFaceCulling&&this._twoSidedLighting}else a.DIFFUSE=!1,a.AMBIENT=!1,a.OPACITY=!1,a.REFLECTION=!1,a.EMISSIVE=!1,a.LIGHTMAP=!1,a.BUMP=!1,a.REFRACTION=!1;a.ALPHAFROMDIFFUSE=this._shouldUseAlphaFromDiffuseTexture(),a.EMISSIVEASILLUMINATION=this._useEmissiveAsIllumination,a.LINKEMISSIVEWITHDIFFUSE=this._linkEmissiveWithDiffuse,a.SPECULAROVERALPHA=this._useSpecularOverAlpha,a.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,a.ALPHATEST_AFTERALLALPHACOMPUTATIONS=this.transparencyMode!==null,a.ALPHABLEND=this.transparencyMode===null||this.needAlphaBlendingForMesh(e)}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=a,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh)return!1;if(a._areImageProcessingDirty&&this._imageProcessingConfiguration){if(!this._imageProcessingConfiguration.isReady())return!1;this._imageProcessingConfiguration.prepareDefines(a),a.IS_REFLECTION_LINEAR=this.reflectionTexture!=null&&!this.reflectionTexture.gammaSpace,a.IS_REFRACTION_LINEAR=this.refractionTexture!=null&&!this.refractionTexture.gammaSpace}if(a._areFresnelDirty&&(n.FresnelEnabled?(this._diffuseFresnelParameters||this._opacityFresnelParameters||this._emissiveFresnelParameters||this._refractionFresnelParameters||this._reflectionFresnelParameters)&&(a.DIFFUSEFRESNEL=this._diffuseFresnelParameters&&this._diffuseFresnelParameters.isEnabled,a.OPACITYFRESNEL=this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled,a.REFLECTIONFRESNEL=this._reflectionFresnelParameters&&this._reflectionFresnelParameters.isEnabled,a.REFLECTIONFRESNELFROMSPECULAR=this._useReflectionFresnelFromSpecular,a.REFRACTIONFRESNEL=this._refractionFresnelParameters&&this._refractionFresnelParameters.isEnabled,a.EMISSIVEFRESNEL=this._emissiveFresnelParameters&&this._emissiveFresnelParameters.isEnabled,a._needNormals=!0,a.FRESNEL=!0):a.FRESNEL=!1),a.AREALIGHTUSED||a.CLUSTLIGHT_BATCH){for(let f=0;f{m.push(`vp_${y}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,a,h,v));let x=a.toString(),S=t.effect,E=s.getEngine().createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:a.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(f4(),c4)),Promise.resolve().then(()=>(w4(),N4))]):await Promise.all([Promise.resolve().then(()=>(cX(),lX)),Promise.resolve().then(()=>(UX(),BX))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,E)if(this._onEffectCreatedObservable&&(TL.effect=E,TL.subMesh=t,this._onEffectCreatedObservable.notifyObservers(TL)),this.allowShaderHotSwapping&&S&&!E.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(E,a,this._materialContext)}return!t.effect||!t.effect.isReady()?!1:(a._renderId=s.getRenderId(),r._wasPreviouslyReady=!c,r._wasPreviouslyUsingInstances=i,this._checkScenePerformancePriority(),!0)}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("diffuseLeftColor",4),e.addUniform("diffuseRightColor",4),e.addUniform("opacityParts",4),e.addUniform("reflectionLeftColor",4),e.addUniform("reflectionRightColor",4),e.addUniform("refractionLeftColor",4),e.addUniform("refractionRightColor",4),e.addUniform("emissiveLeftColor",4),e.addUniform("emissiveRightColor",4),e.addUniform("vDiffuseInfos",2),e.addUniform("vAmbientInfos",2),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vSpecularInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("diffuseMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("specularMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("pointSize",1),e.addUniform("alphaCutOff",1),e.addUniform("refractionMatrix",16),e.addUniform("vRefractionInfos",4),e.addUniform("vRefractionPosition",3),e.addUniform("vRefractionSize",3),e.addUniform("vSpecularColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vDiffuseColor",4),e.addUniform("vAmbientColor",3),e.addUniform("cameraInfo",4),Qm(e,!1,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var f;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e),this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(r.getEngine().currentRenderPassId,this._activeEffect,t,e,this);let o=r.activeCamera;o?this._uniformBuffer.updateFloat4("cameraInfo",o.minZ,o.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let l=this._mustRebind(r,a,i,t.visibility);Vs(t,a),this._vertexPullingMetadata&&Wf(a,this._vertexPullingMetadata);let c=this._uniformBuffer;if(l){if(this.bindViewProjection(a),!c.useUbo||!this.isFrozen||!c.isSync||i._drawWrapper._forceRebindOnNextCall){if(n.FresnelEnabled&&s.FRESNEL){if(this.diffuseFresnelParameters&&this.diffuseFresnelParameters.isEnabled&&(c.updateColor4("diffuseLeftColor",this.diffuseFresnelParameters.leftColor,this.diffuseFresnelParameters.power),c.updateColor4("diffuseRightColor",this.diffuseFresnelParameters.rightColor,this.diffuseFresnelParameters.bias)),this.opacityFresnelParameters&&this.opacityFresnelParameters.isEnabled){let d=Rn.Color3[0];d.set(this.opacityFresnelParameters.leftColor.toLuminance(),this.opacityFresnelParameters.rightColor.toLuminance(),this.opacityFresnelParameters.bias),c.updateColor4("opacityParts",d,this.opacityFresnelParameters.power)}this.reflectionFresnelParameters&&this.reflectionFresnelParameters.isEnabled&&(c.updateColor4("reflectionLeftColor",this.reflectionFresnelParameters.leftColor,this.reflectionFresnelParameters.power),c.updateColor4("reflectionRightColor",this.reflectionFresnelParameters.rightColor,this.reflectionFresnelParameters.bias)),this.refractionFresnelParameters&&this.refractionFresnelParameters.isEnabled&&(c.updateColor4("refractionLeftColor",this.refractionFresnelParameters.leftColor,this.refractionFresnelParameters.power),c.updateColor4("refractionRightColor",this.refractionFresnelParameters.rightColor,this.refractionFresnelParameters.bias)),this.emissiveFresnelParameters&&this.emissiveFresnelParameters.isEnabled&&(c.updateColor4("emissiveLeftColor",this.emissiveFresnelParameters.leftColor,this.emissiveFresnelParameters.power),c.updateColor4("emissiveRightColor",this.emissiveFresnelParameters.rightColor,this.emissiveFresnelParameters.bias))}if(r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&(c.updateFloat2("vDiffuseInfos",this._diffuseTexture.coordinatesIndex,this._diffuseTexture.level),ni(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),ni(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ni(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),Fm(r,s,c,pe.White(),this._reflectionTexture,!1,!1,!0,!1,!1,!1,this.roughness),(!this._reflectionTexture||!n.ReflectionTextureEnabled)&&c.updateFloat2("vReflectionInfos",0,this.roughness),this._emissiveTexture&&n.EmissiveTextureEnabled&&(c.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ni(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ni(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),ni(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),ni(this._bumpTexture,c,"bump"),r._mirroredCameraPosition?c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),this._refractionTexture&&n.RefractionTextureEnabled)){let d=1;if(this._refractionTexture.isCube||(c.updateMatrix("refractionMatrix",this._refractionTexture.getReflectionTextureMatrix()),this._refractionTexture.depth&&(d=this._refractionTexture.depth)),c.updateFloat4("vRefractionInfos",this._refractionTexture.level,this.indexOfRefraction,d,this.invertRefractionY?-1:1),this._refractionTexture.boundingBoxSize){let h=this._refractionTexture;c.updateVector3("vRefractionPosition",h.boundingBoxPosition),c.updateVector3("vRefractionSize",h.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:pe.BlackReadOnly),c.updateColor4("vDiffuseColor",this.diffuseColor,this.alpha),r.ambientColor.multiplyToRef(this.ambientColor,this._globalAmbientColor),c.updateColor3("vAmbientColor",this._globalAmbientColor)}r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&a.setTexture("diffuseSampler",this._diffuseTexture),this._ambientTexture&&n.AmbientTextureEnabled&&a.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&n.OpacityTextureEnabled&&a.setTexture("opacitySampler",this._opacityTexture),this._reflectionTexture&&n.ReflectionTextureEnabled&&(this._reflectionTexture.isCube?a.setTexture("reflectionCubeSampler",this._reflectionTexture):a.setTexture("reflection2DSampler",this._reflectionTexture)),this._emissiveTexture&&n.EmissiveTextureEnabled&&a.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&n.LightmapTextureEnabled&&a.setTexture("lightmapSampler",this._lightmapTexture),this._specularTexture&&n.SpecularTextureEnabled&&a.setTexture("specularSampler",this._specularTexture),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&a.setTexture("bumpSampler",this._bumpTexture),this._refractionTexture&&n.RefractionTextureEnabled&&(this._refractionTexture.isCube?a.setTexture("refractionCubeSampler",this._refractionTexture):a.setTexture("refraction2DSampler",this._refractionTexture))),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ei.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),Pf(r,t,a),s.NUM_MORPH_INFLUENCERS&&zn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Cf(s,a,r),this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.applyByPostProcess&&this._imageProcessingConfiguration.bind(this._activeEffect)),this._afterBind(t,this._activeEffect,i),c.update()}getAnimatables(){let e=super.getAnimatables();return this._diffuseTexture&&this._diffuseTexture.animations&&this._diffuseTexture.animations.length>0&&e.push(this._diffuseTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._specularTexture&&this._specularTexture.animations&&this._specularTexture.animations.length>0&&e.push(this._specularTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),e}getActiveTextures(){let e=super.getActiveTextures();return this._diffuseTexture&&e.push(this._diffuseTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._specularTexture&&e.push(this._specularTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),this._refractionTexture&&e.push(this._refractionTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._diffuseTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._specularTexture===e||this._bumpTexture===e||this._lightmapTexture===e||this._refractionTexture===e)}dispose(e,t){var i,r,s,a,o,l,c,f,d;t&&((i=this._diffuseTexture)==null||i.dispose(),(r=this._ambientTexture)==null||r.dispose(),(s=this._opacityTexture)==null||s.dispose(),(a=this._reflectionTexture)==null||a.dispose(),(o=this._emissiveTexture)==null||o.dispose(),(l=this._specularTexture)==null||l.dispose(),(c=this._bumpTexture)==null||c.dispose(),(f=this._lightmapTexture)==null||f.dispose(),(d=this._refractionTexture)==null||d.dispose()),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.name=e,r.id=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return ce.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){ce.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return ce.DetailTextureEnabled}static set DetailTextureEnabled(e){ce.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return ce.AmbientTextureEnabled}static set AmbientTextureEnabled(e){ce.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return ce.OpacityTextureEnabled}static set OpacityTextureEnabled(e){ce.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return ce.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){ce.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return ce.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){ce.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return ce.SpecularTextureEnabled}static set SpecularTextureEnabled(e){ce.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return ce.BumpTextureEnabled}static set BumpTextureEnabled(e){ce.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return ce.LightmapTextureEnabled}static set LightmapTextureEnabled(e){ce.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return ce.RefractionTextureEnabled}static set RefractionTextureEnabled(e){ce.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return ce.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){ce.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return ce.FresnelEnabled}static set FresnelEnabled(e){ce.FresnelEnabled=e}};We.ForceGLSL=!1;P([Ut("diffuseTexture")],We.prototype,"_diffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"diffuseTexture",void 0);P([Ut("ambientTexture")],We.prototype,"_ambientTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"ambientTexture",void 0);P([Ut("opacityTexture")],We.prototype,"_opacityTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"opacityTexture",void 0);P([Ut("reflectionTexture")],We.prototype,"_reflectionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"reflectionTexture",void 0);P([Ut("emissiveTexture")],We.prototype,"_emissiveTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"emissiveTexture",void 0);P([Ut("specularTexture")],We.prototype,"_specularTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"specularTexture",void 0);P([Ut("bumpTexture")],We.prototype,"_bumpTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"bumpTexture",void 0);P([Ut("lightmapTexture")],We.prototype,"_lightmapTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"lightmapTexture",void 0);P([Ut("refractionTexture")],We.prototype,"_refractionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"refractionTexture",void 0);P([Tr("ambient")],We.prototype,"ambientColor",void 0);P([Tr("diffuse")],We.prototype,"diffuseColor",void 0);P([Tr("specular")],We.prototype,"specularColor",void 0);P([Tr("emissive")],We.prototype,"emissiveColor",void 0);P([F()],We.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],We.prototype,"_useAlphaFromDiffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],We.prototype,"_useEmissiveAsIllumination",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],We.prototype,"_linkEmissiveWithDiffuse",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],We.prototype,"_useSpecularOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],We.prototype,"_useReflectionOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],We.prototype,"_disableLighting",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],We.prototype,"_useObjectSpaceNormalMap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],We.prototype,"_useParallax",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],We.prototype,"_useParallaxOcclusion",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallaxOcclusion",void 0);P([F()],We.prototype,"parallaxScaleBias",void 0);P([F("roughness")],We.prototype,"_roughness",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"roughness",void 0);P([F()],We.prototype,"indexOfRefraction",void 0);P([F()],We.prototype,"invertRefractionY",void 0);P([F()],We.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],We.prototype,"_useLightmapAsShadowmap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useLightmapAsShadowmap",void 0);P([gm("diffuseFresnelParameters")],We.prototype,"_diffuseFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"diffuseFresnelParameters",void 0);P([gm("opacityFresnelParameters")],We.prototype,"_opacityFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelAndMiscDirty")],We.prototype,"opacityFresnelParameters",void 0);P([gm("reflectionFresnelParameters")],We.prototype,"_reflectionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"reflectionFresnelParameters",void 0);P([gm("refractionFresnelParameters")],We.prototype,"_refractionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"refractionFresnelParameters",void 0);P([gm("emissiveFresnelParameters")],We.prototype,"_emissiveFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],We.prototype,"_useReflectionFresnelFromSpecular",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],We.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],We.prototype,"_maxSimultaneousLights",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],We.prototype,"_invertNormalMapX",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],We.prototype,"_invertNormalMapY",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],We.prototype,"_twoSidedLighting",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],We.prototype,"_applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],We.prototype,"applyDecalMapAfterDetailMap",void 0);Ft("BABYLON.StandardMaterial",We);ei.DefaultMaterialFactory=n=>new We("default material",n)});var VX=I(()=>{uo();os();Os();bt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Oi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?An(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?An(e,this._caps.maxTextureSize):e),r.width=n,r.height=e,r.isReady=!1,r.generateMipMaps=t,r.samplingMode=i,this.updateTextureSamplingMode(i,r),this._internalTexturesCache.push(r),r};bt.prototype.updateDynamicTexture=function(n,e,t,i=!1,r,s=!1,a=!1){if(!n)return;let o=this._gl,l=o.TEXTURE_2D,c=this._bindTextureDirectly(l,n,!0,s);this._unpackFlipY(t===void 0?n.invertY:t),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);let f=this._getWebGLTextureType(n.type),d=this._getInternalFormat(r||n.format),h=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,h,d,f,e),n.generateMipMaps&&o.generateMipmap(l),c||this._bindTextureDirectly(l,null),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),r&&(n.format=r),n._dynamicTextureSource=e,n._premulAlpha=i,n.invertY=t||!1,n.isReady=!0}});var QR,GX=I(()=>{Pt();Gr();VX();QR=class n extends ge{constructor(e,t,i,r=!1,s=3,a=5,o){let l=!i||i._isScene,c=l?i:i==null?void 0:i.scene,f=l?!r:i;super(null,c,f,o,s,void 0,void 0,void 0,void 0,a),this.name=e,this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._generateMipMaps=r;let d=this._getEngine();if(!d)return;if(t.getContext)this._canvas=t,this._ownCanvas=!1,this._texture=d.createDynamicTexture(this._canvas.width,this._canvas.height,r,s);else{this._canvas=d.createCanvas(1,1),this._ownCanvas=!0;let u=t;u.width||u.width===0?this._texture=d.createDynamicTexture(u.width,u.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let h=this.getSize();this._canvas.width!==h.width&&(this._canvas.width=h.width),this._canvas.height!==h.height&&(this._canvas.height=h.height),this._context=this._canvas.getContext("2d")}getClassName(){return"DynamicTexture"}get canRescale(){return!0}_recreate(e){this._canvas.width=e.width,this._canvas.height=e.height,this.releaseInternalTexture(),this._texture=this._getEngine().createDynamicTexture(e.width,e.height,this._generateMipMaps,this.samplingMode)}scale(e){let t=this.getSize();t.width*=e,t.height*=e,this._recreate(t)}scaleTo(e,t){let i=this.getSize();i.width=e,i.height=t,this._recreate(i)}getContext(){return this._context}clear(e){let t=this.getSize();e&&(this._context.fillStyle=e),this._context.clearRect(0,0,t.width,t.height)}update(e,t=!1,i=!1){this._texture&&this._getEngine().updateDynamicTexture(this._texture,this._canvas,e===void 0?!0:e,t,this._format||void 0,void 0,i)}drawText(e,t,i,r,s,a,o,l=!0){let c=this.getSize();if(a&&(this._context.fillStyle=a,this._context.fillRect(0,0,c.width,c.height)),this._context.font=r,t==null){let f=this._context.measureText(e);t=(c.width-f.width)/2}if(i==null){let f=parseInt(r.replace(/\D/g,""));i=c.height/2+f/3.65}this._context.fillStyle=s||"",this._context.fillText(e,t,i),l&&this.update(o)}dispose(){var e,t;super.dispose(),this._ownCanvas&&((t=(e=this._canvas)==null?void 0:e.remove)==null||t.call(e)),this._canvas=null,this._context=null}clone(){let e=this.getScene();if(!e)return this;let t=this.getSize(),i=new n(this.name,t,e,this._generateMipMaps);return i.hasAlpha=this.hasAlpha,i.level=this.level,i.wrapU=this.wrapU,i.wrapV=this.wrapV,i}serialize(){let e=this.getScene();e&&!e.isReady()&&ee.Warn("The scene must be ready before serializing the dynamic texture");let t=super.serialize();return n._IsCanvasElement(this._canvas)&&(t.base64String=this._canvas.toDataURL()),t.invertY=this._invertY,t.samplingMode=this.samplingMode,t}static _IsCanvasElement(e){return e.toDataURL!==void 0}_rebuild(){this.update()}}});function JR(n,e,t,i,r,s=!1){let a=jr.Zero();return uv(n,e,t,i,a,r,s),a}function uv(n,e,t,i,r,s,a=!1,o=!1){let l=n.getEngine();if(!s&&!(s=n.activeCamera)&&!(s=n.cameraToUseForPointers))return n;let c=s.viewport,f=l.getRenderHeight(),{x:d,y:h,width:u,height:m}=c.toGlobal(l.getRenderWidth(),f),_=1/l.getHardwareScalingLevel();return e=e*_-d,t=t*_-(f-h-m),r.update(e,t,u,m,i||q.IdentityReadOnly,a?q.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function HX(n,e,t,i){let r=jr.Zero();return bL(n,e,t,r,i),r}function bL(n,e,t,i,r){if(!fs)return n;let s=n.getEngine();if(!r&&!(r=n.activeCamera)&&!(r=n.cameraToUseForPointers))throw new Error("Active camera not set");let a=r.viewport,o=s.getRenderHeight(),{x:l,y:c,width:f,height:d}=a.toGlobal(s.getRenderWidth(),o),h=q.Identity(),u=1/s.getHardwareScalingLevel();return e=e*u-l,t=t*u-(o-c-d),i.update(e,t,f,d,h,h,r.getProjectionMatrix()),n}function $R(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return ML(n,t,i,l,r,s,a,o)}function ML(n,e,t,i,r,s,a,o){let l=e.intersects(i,r,a,s,t,o);return!l||!l.hit||!r&&n!=null&&l.distance>=n.distance?null:l}function whe(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function zX(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?whe(e,n):0}}function XX(n,e,t,i,r){let s=n(t,e.enableDistantPicking);return!s.intersectsSphere(i.boundingSphere,r)||!s.intersectsBox(i.boundingBox,r)?null:s}function IL(n,e,t,i,r,s){let a=null,o=!!(n.activeCameras&&n.activeCameras.length>1&&n.cameraToUseForPointers!==n.activeCamera),l=n.cameraToUseForPointers||n.activeCamera,c=WX.internalPickerForMesh||$R,f=c===$R;for(let d=0;d>4);for(let T=0;T1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=WX.internalPickerForMesh||$R,l=o===$R;for(let c=0;c>4);for(let S=0;S(n._tempPickingRay||(n._tempPickingRay=jr.Zero()),uv(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=JR(n,e,t,q.Identity(),s||null)),a}function jX(n,e,t,i,r,s,a,o=!1){let l=IL(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=jr.Zero()),uv(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=JR(n,e,t,q.Identity(),s||null)),l}function qX(n,e,t,i,r){let s=IL(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=q.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=jr.Zero()),jr.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function ZX(n,e,t,i,r,s){return YX(n,a=>JR(n,e,t,a,r||null),i,s)}function QX(n,e,t,i){return YX(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=q.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=jr.Zero()),jr.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function kX(n,e,t=100,i,r){i||(i=n.getWorldMatrix()),e.length=t,r?e.origin.copyFrom(r):e.origin.copyFrom(n.position);let s=$.Vector3[2];s.set(0,0,n._scene.useRightHandedSystem?-1:1);let a=$.Vector3[3];return b.TransformNormalToRef(s,i,a),b.NormalizeToRef(a,e.direction),e}function $X(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return kX(this,new jr(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return kX(this,t,i,r,s)}),n&&(uh._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return JR(this,t,i,r,s,a)})}var WX,jr,yL=I(()=>{Un();ke();ol();ZP();Ig();Ni();rP();WX={internalPickerForMesh:void 0},jr=class n{constructor(e,t,i=Number.MAX_VALUE,r=Nt){this.origin=e,this.direction=t,this.length=i,this.epsilon=r}clone(){return new n(this.origin.clone(),this.direction.clone(),this.length)}intersectsBoxMinMax(e,t,i=0){let r=n._TmpVector3[0].copyFromFloats(e.x-i,e.y-i,e.z-i),s=n._TmpVector3[1].copyFromFloats(t.x+i,t.y+i,t.z+i),a=0,o=Number.MAX_VALUE,l,c,f,d;if(Math.abs(this.direction.x)<1e-7){if(this.origin.xs.x)return!1}else if(l=1/this.direction.x,c=(r.x-this.origin.x)*l,f=(s.x-this.origin.x)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.ys.y)return!1}else if(l=1/this.direction.y,c=(r.y-this.origin.y)*l,f=(s.y-this.origin.y)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.zs.z)return!1}else if(l=1/this.direction.z,c=(r.z-this.origin.z)*l,f=(s.z-this.origin.z)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;return!0}intersectsBox(e,t=0){return this.intersectsBoxMinMax(e.minimum,e.maximum,t)}intersectsSphere(e,t=0){let i=e.center.x-this.origin.x,r=e.center.y-this.origin.y,s=e.center.z-this.origin.z,a=i*i+r*r+s*s,o=e.radius+t,l=o*o;if(a<=l)return!0;let c=i*this.direction.x+r*this.direction.y+s*this.direction.z;return c<0?!1:a-c*c<=l}intersectsTriangle(e,t,i){let r=n._TmpVector3[0],s=n._TmpVector3[1],a=n._TmpVector3[2],o=n._TmpVector3[3],l=n._TmpVector3[4];t.subtractToRef(e,r),i.subtractToRef(e,s),b.CrossToRef(this.direction,s,a);let c=b.Dot(r,a);if(c===0)return null;let f=1/c;this.origin.subtractToRef(e,o);let d=b.Dot(o,a)*f;if(d<-this.epsilon||d>1+this.epsilon)return null;b.CrossToRef(o,r,l);let h=b.Dot(this.direction,l)*f;if(h<-this.epsilon||d+h>1+this.epsilon)return null;let u=b.Dot(s,l)*f;return u>this.length||u<0?null:new ph(1-d-h,d,u)}intersectsPlane(e){let t,i=b.Dot(e.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;{let r=b.Dot(e.normal,this.origin);return t=(-e.d-r)/i,t<0?t<-999999997475243e-21?null:0:t}}intersectsAxis(e,t=0){switch(e){case"y":{let i=(this.origin.y-t)/this.direction.y;return i>0?null:new b(this.origin.x+this.direction.x*-i,t,this.origin.z+this.direction.z*-i)}case"x":{let i=(this.origin.x-t)/this.direction.x;return i>0?null:new b(t,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i)}case"z":{let i=(this.origin.z-t)/this.direction.z;return i>0?null:new b(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,t)}default:return null}}intersectsMesh(e,t,i,r=!1,s,a=!1){let o=$.Matrix[0];return e.getWorldMatrix().invertToRef(o),this._tmpRay?n.TransformToRef(this,o,this._tmpRay):this._tmpRay=n.Transform(this,o),e.intersects(this._tmpRay,t,i,r,s,a)}intersectsMeshes(e,t,i){i?i.length=0:i=[];for(let r=0;rt.distance?1:0}intersectionSegment(e,t,i){let r=this.origin,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2],l=$.Vector3[3];t.subtractToRef(e,s),this.direction.scaleToRef(n._Rayl,o),r.addToRef(o,a),e.subtractToRef(r,l);let c=b.Dot(s,s),f=b.Dot(s,o),d=b.Dot(o,o),h=b.Dot(s,l),u=b.Dot(o,l),m=c*d-f*f,_,p=m,g,v=m;mp&&(_=p,g=u+f,v=d)),g<0?(g=0,-h<0?_=0:-h>c?_=p:(_=-h,p=c)):g>v&&(g=v,-h+f<0?_=0:-h+f>c?_=p:(_=-h+f,p=c));let x=Math.abs(_)0&&S<=this.length&&R.lengthSquared(){Bs();_l();yL();yL();$X(ei,mt);ei.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return uv(this,n,e,t,i,r,s,a)};ei.prototype.createPickingRayInCameraSpace=function(n,e,t){return HX(this,n,e,t)};ei.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return bL(this,n,e,t,i)};ei.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return KX(this,n,e,t,i,r)};ei.prototype.pick=function(n,e,t,i,r,s,a=!1){return jX(this,n,e,t,i,r,s,a)};ei.prototype.pickWithRay=function(n,e,t,i){return qX(this,n,e,t,i)};ei.prototype.multiPick=function(n,e,t,i,r){return ZX(this,n,e,t,i,r)};ei.prototype.multiPickWithRay=function(n,e,t){return QX(this,n,e,t)}});var JX,Fhe,PL=I(()=>{k();JX="kernelBlurVaryingDeclaration",Fhe="varying sampleCoord{X}: vec2f;";A.IncludesShadersStoreWGSL[JX]||(A.IncludesShadersStoreWGSL[JX]=Fhe)});var e5,Bhe,eb=I(()=>{k();e5="packingFunctions",Bhe=`fn pack(depth: f32)->vec4f +`;A.ShadersStore[xL]||(A.ShadersStore[xL]=VX);Vhe={name:xL,shader:VX}});var RL,bL,ML,IL,We,Dc=I(()=>{Gt();Vt();So();Bs();Ht();Wi();Qx();$x();Mg();Yn();Ga();Yg();Yi();Ua();Gf();aL();vl();Kg();Xn();br();Jx();eR();tR();iR();RL={effect:null,subMesh:null},bL=class extends fp(cp(Mr)){},ML=class extends op(bL){constructor(e){super(e),this.DIFFUSE=!1,this.DIFFUSEDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.OPACITY=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.REFLECTION=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.SPECULAR=!1,this.SPECULARDIRECTUV=0,this.BUMP=!1,this.BUMPDIRECTUV=0,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.SPECULAROVERALPHA=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHAFROMDIFFUSE=!1,this.POINTSIZE=!1,this.FOG=!1,this.SPECULARTERM=!1,this.DIFFUSEFRESNEL=!1,this.OPACITYFRESNEL=!1,this.REFLECTIONFRESNEL=!1,this.REFRACTIONFRESNEL=!1,this.EMISSIVEFRESNEL=!1,this.FRESNEL=!1,this.NORMAL=!1,this.TANGENT=!1,this.VERTEXCOLOR=!1,this.VERTEXALPHA=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.GLOSSINESS=!1,this.ROUGHNESS=!1,this.EMISSIVEASILLUMINATION=!1,this.LINKEMISSIVEWITHDIFFUSE=!1,this.REFLECTIONFRESNELFROMSPECULAR=!1,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.USELIGHTMAPASSHADOWMAP=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.INVERTCUBICMAP=!1,this.LOGARITHMICDEPTH=!1,this.REFRACTION=!1,this.REFRACTIONMAP_3D=!1,this.REFLECTIONOVERALPHA=!1,this.TWOSIDEDLIGHTING=!1,this.SHADOWFLOAT=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.NONUNIFORMSCALING=!1,this.PREMULTIPLYALPHA=!1,this.ALPHATEST_AFTERALLALPHACOMPUTATIONS=!1,this.ALPHABLEND=!0,this.RGBDLIGHTMAP=!1,this.RGBDREFLECTION=!1,this.RGBDREFRACTION=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.IS_REFLECTION_LINEAR=!1,this.IS_REFRACTION_LINEAR=!1,this.DECAL_AFTER_DETAIL=!1,this.rebuild()}},IL=class extends dp(Al){},We=class n extends IL{get isPrePassCapable(){return!this.disableDepthWrite}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._diffuseTexture=null,this._ambientTexture=null,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._specularTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._refractionTexture=null,this.ambientColor=new pe(0,0,0),this.diffuseColor=new pe(1,1,1),this.specularColor=new pe(1,1,1),this.emissiveColor=new pe(0,0,0),this.specularPower=64,this._useAlphaFromDiffuseTexture=!1,this._useEmissiveAsIllumination=!1,this._linkEmissiveWithDiffuse=!1,this._useSpecularOverAlpha=!1,this._useReflectionOverAlpha=!1,this._disableLighting=!1,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this._roughness=0,this.indexOfRefraction=.98,this.invertRefractionY=!0,this.alphaCutOff=.4,this._useLightmapAsShadowmap=!1,this._useReflectionFresnelFromSpecular=!1,this._useGlossinessFromSpecularMapAlpha=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._applyDecalMapAfterDetailMap=!1,this._shadersLoaded=!1,this._vertexPullingMetadata=null,this._renderTargets=new Vi(16),this._globalAmbientColor=new pe(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new ka(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new Hs,this.getRenderTargetTextures=()=>(this._renderTargets.reset(),n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&this._renderTargets.push(this._refractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets)}get hasRenderTargetTextures(){return n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget||n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}getClassName(){return"StandardMaterial"}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromDiffuseTexture()||this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===Se.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Se.MATERIAL_OPAQUE}_hasAlphaChannel(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._diffuseTexture}isReadyForSubMesh(e,t,i=!1){this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new ML(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=zm(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!Hm(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;Km(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(s,a,this.canRenderToMRT&&!l),jm(s,a,l),Zn.PrepareDefines(o.currentRenderPassId,e,a),a._areTexturesDirty){this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a._needUVs=!1;for(let f=1;f<=6;++f)a["MAINUV"+f]=!1;if(s.texturesEnabled){if(a.DIFFUSEDIRECTUV=0,a.BUMPDIRECTUV=0,a.AMBIENTDIRECTUV=0,a.OPACITYDIRECTUV=0,a.EMISSIVEDIRECTUV=0,a.SPECULARDIRECTUV=0,a.LIGHTMAPDIRECTUV=0,this._diffuseTexture&&n.DiffuseTextureEnabled)if(this._diffuseTexture.isReadyOrNotBlocking())ri(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())ri(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())ri(this._opacityTexture,a,"OPACITY"),a.OPACITYRGB=this._opacityTexture.getAlphaFromRGB;else return!1;else a.OPACITY=!1;if(this._reflectionTexture&&n.ReflectionTextureEnabled?(a.ROUGHNESS=this._roughness>0,a.REFLECTIONOVERALPHA=this._useReflectionOverAlpha):(a.ROUGHNESS=!1,a.REFLECTIONOVERALPHA=!1),!Lf(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())ri(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())ri(this._lightmapTexture,a,"LIGHTMAP"),a.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,a.RGBDLIGHTMAP=this._lightmapTexture.isRGBD;else return!1;else a.LIGHTMAP=!1;if(this._specularTexture&&n.SpecularTextureEnabled)if(this._specularTexture.isReadyOrNotBlocking())ri(this._specularTexture,a,"SPECULAR"),a.GLOSSINESS=this._useGlossinessFromSpecularMapAlpha;else return!1;else a.SPECULAR=!1;if(s.getEngine().getCaps().standardDerivatives&&this._bumpTexture&&n.BumpTextureEnabled){if(this._bumpTexture.isReady())ri(this._bumpTexture,a,"BUMP"),a.PARALLAX=this._useParallax,a.PARALLAX_RHS=s.useRightHandedSystem,a.PARALLAXOCCLUSION=this._useParallaxOcclusion;else return!1;a.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap}else a.BUMP=!1,a.PARALLAX=!1,a.PARALLAX_RHS=!1,a.PARALLAXOCCLUSION=!1;if(this._refractionTexture&&n.RefractionTextureEnabled)if(this._refractionTexture.isReadyOrNotBlocking())a._needUVs=!0,a.REFRACTION=!0,a.REFRACTIONMAP_3D=this._refractionTexture.isCube,a.RGBDREFRACTION=this._refractionTexture.isRGBD,a.USE_LOCAL_REFRACTIONMAP_CUBIC=!!this._refractionTexture.boundingBoxSize;else return!1;else a.REFRACTION=!1;a.TWOSIDEDLIGHTING=!this._backFaceCulling&&this._twoSidedLighting}else a.DIFFUSE=!1,a.AMBIENT=!1,a.OPACITY=!1,a.REFLECTION=!1,a.EMISSIVE=!1,a.LIGHTMAP=!1,a.BUMP=!1,a.REFRACTION=!1;a.ALPHAFROMDIFFUSE=this._shouldUseAlphaFromDiffuseTexture(),a.EMISSIVEASILLUMINATION=this._useEmissiveAsIllumination,a.LINKEMISSIVEWITHDIFFUSE=this._linkEmissiveWithDiffuse,a.SPECULAROVERALPHA=this._useSpecularOverAlpha,a.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,a.ALPHATEST_AFTERALLALPHACOMPUTATIONS=this.transparencyMode!==null,a.ALPHABLEND=this.transparencyMode===null||this.needAlphaBlendingForMesh(e)}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=a,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh)return!1;if(a._areImageProcessingDirty&&this._imageProcessingConfiguration){if(!this._imageProcessingConfiguration.isReady())return!1;this._imageProcessingConfiguration.prepareDefines(a),a.IS_REFLECTION_LINEAR=this.reflectionTexture!=null&&!this.reflectionTexture.gammaSpace,a.IS_REFRACTION_LINEAR=this.refractionTexture!=null&&!this.refractionTexture.gammaSpace}if(a._areFresnelDirty&&(n.FresnelEnabled?(this._diffuseFresnelParameters||this._opacityFresnelParameters||this._emissiveFresnelParameters||this._refractionFresnelParameters||this._reflectionFresnelParameters)&&(a.DIFFUSEFRESNEL=this._diffuseFresnelParameters&&this._diffuseFresnelParameters.isEnabled,a.OPACITYFRESNEL=this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled,a.REFLECTIONFRESNEL=this._reflectionFresnelParameters&&this._reflectionFresnelParameters.isEnabled,a.REFLECTIONFRESNELFROMSPECULAR=this._useReflectionFresnelFromSpecular,a.REFRACTIONFRESNEL=this._refractionFresnelParameters&&this._refractionFresnelParameters.isEnabled,a.EMISSIVEFRESNEL=this._emissiveFresnelParameters&&this._emissiveFresnelParameters.isEnabled,a._needNormals=!0,a.FRESNEL=!0):a.FRESNEL=!1),a.AREALIGHTUSED||a.CLUSTLIGHT_BATCH){for(let f=0;f{m.push(`vp_${y}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,a,h,v));let x=a.toString(),S=t.effect,E=s.getEngine().createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:a.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(u4(),h4)),Promise.resolve().then(()=>(U4(),B4))]):await Promise.all([Promise.resolve().then(()=>(hX(),dX)),Promise.resolve().then(()=>(kX(),GX))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,E)if(this._onEffectCreatedObservable&&(RL.effect=E,RL.subMesh=t,this._onEffectCreatedObservable.notifyObservers(RL)),this.allowShaderHotSwapping&&S&&!E.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(E,a,this._materialContext)}return!t.effect||!t.effect.isReady()?!1:(a._renderId=s.getRenderId(),r._wasPreviouslyReady=!c,r._wasPreviouslyUsingInstances=i,this._checkScenePerformancePriority(),!0)}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("diffuseLeftColor",4),e.addUniform("diffuseRightColor",4),e.addUniform("opacityParts",4),e.addUniform("reflectionLeftColor",4),e.addUniform("reflectionRightColor",4),e.addUniform("refractionLeftColor",4),e.addUniform("refractionRightColor",4),e.addUniform("emissiveLeftColor",4),e.addUniform("emissiveRightColor",4),e.addUniform("vDiffuseInfos",2),e.addUniform("vAmbientInfos",2),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vSpecularInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("diffuseMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("specularMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("pointSize",1),e.addUniform("alphaCutOff",1),e.addUniform("refractionMatrix",16),e.addUniform("vRefractionInfos",4),e.addUniform("vRefractionPosition",3),e.addUniform("vRefractionSize",3),e.addUniform("vSpecularColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vDiffuseColor",4),e.addUniform("vAmbientColor",3),e.addUniform("cameraInfo",4),Qm(e,!1,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var f;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e),this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(r.getEngine().currentRenderPassId,this._activeEffect,t,e,this);let o=r.activeCamera;o?this._uniformBuffer.updateFloat4("cameraInfo",o.minZ,o.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let l=this._mustRebind(r,a,i,t.visibility);Vs(t,a),this._vertexPullingMetadata&&Wf(a,this._vertexPullingMetadata);let c=this._uniformBuffer;if(l){if(this.bindViewProjection(a),!c.useUbo||!this.isFrozen||!c.isSync||i._drawWrapper._forceRebindOnNextCall){if(n.FresnelEnabled&&s.FRESNEL){if(this.diffuseFresnelParameters&&this.diffuseFresnelParameters.isEnabled&&(c.updateColor4("diffuseLeftColor",this.diffuseFresnelParameters.leftColor,this.diffuseFresnelParameters.power),c.updateColor4("diffuseRightColor",this.diffuseFresnelParameters.rightColor,this.diffuseFresnelParameters.bias)),this.opacityFresnelParameters&&this.opacityFresnelParameters.isEnabled){let d=Rn.Color3[0];d.set(this.opacityFresnelParameters.leftColor.toLuminance(),this.opacityFresnelParameters.rightColor.toLuminance(),this.opacityFresnelParameters.bias),c.updateColor4("opacityParts",d,this.opacityFresnelParameters.power)}this.reflectionFresnelParameters&&this.reflectionFresnelParameters.isEnabled&&(c.updateColor4("reflectionLeftColor",this.reflectionFresnelParameters.leftColor,this.reflectionFresnelParameters.power),c.updateColor4("reflectionRightColor",this.reflectionFresnelParameters.rightColor,this.reflectionFresnelParameters.bias)),this.refractionFresnelParameters&&this.refractionFresnelParameters.isEnabled&&(c.updateColor4("refractionLeftColor",this.refractionFresnelParameters.leftColor,this.refractionFresnelParameters.power),c.updateColor4("refractionRightColor",this.refractionFresnelParameters.rightColor,this.refractionFresnelParameters.bias)),this.emissiveFresnelParameters&&this.emissiveFresnelParameters.isEnabled&&(c.updateColor4("emissiveLeftColor",this.emissiveFresnelParameters.leftColor,this.emissiveFresnelParameters.power),c.updateColor4("emissiveRightColor",this.emissiveFresnelParameters.rightColor,this.emissiveFresnelParameters.bias))}if(r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&(c.updateFloat2("vDiffuseInfos",this._diffuseTexture.coordinatesIndex,this._diffuseTexture.level),ni(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),ni(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ni(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),Fm(r,s,c,pe.White(),this._reflectionTexture,!1,!1,!0,!1,!1,!1,this.roughness),(!this._reflectionTexture||!n.ReflectionTextureEnabled)&&c.updateFloat2("vReflectionInfos",0,this.roughness),this._emissiveTexture&&n.EmissiveTextureEnabled&&(c.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ni(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ni(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),ni(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),ni(this._bumpTexture,c,"bump"),r._mirroredCameraPosition?c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),this._refractionTexture&&n.RefractionTextureEnabled)){let d=1;if(this._refractionTexture.isCube||(c.updateMatrix("refractionMatrix",this._refractionTexture.getReflectionTextureMatrix()),this._refractionTexture.depth&&(d=this._refractionTexture.depth)),c.updateFloat4("vRefractionInfos",this._refractionTexture.level,this.indexOfRefraction,d,this.invertRefractionY?-1:1),this._refractionTexture.boundingBoxSize){let h=this._refractionTexture;c.updateVector3("vRefractionPosition",h.boundingBoxPosition),c.updateVector3("vRefractionSize",h.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:pe.BlackReadOnly),c.updateColor4("vDiffuseColor",this.diffuseColor,this.alpha),r.ambientColor.multiplyToRef(this.ambientColor,this._globalAmbientColor),c.updateColor3("vAmbientColor",this._globalAmbientColor)}r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&a.setTexture("diffuseSampler",this._diffuseTexture),this._ambientTexture&&n.AmbientTextureEnabled&&a.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&n.OpacityTextureEnabled&&a.setTexture("opacitySampler",this._opacityTexture),this._reflectionTexture&&n.ReflectionTextureEnabled&&(this._reflectionTexture.isCube?a.setTexture("reflectionCubeSampler",this._reflectionTexture):a.setTexture("reflection2DSampler",this._reflectionTexture)),this._emissiveTexture&&n.EmissiveTextureEnabled&&a.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&n.LightmapTextureEnabled&&a.setTexture("lightmapSampler",this._lightmapTexture),this._specularTexture&&n.SpecularTextureEnabled&&a.setTexture("specularSampler",this._specularTexture),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&a.setTexture("bumpSampler",this._bumpTexture),this._refractionTexture&&n.RefractionTextureEnabled&&(this._refractionTexture.isCube?a.setTexture("refractionCubeSampler",this._refractionTexture):a.setTexture("refraction2DSampler",this._refractionTexture))),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ei.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),Pf(r,t,a),s.NUM_MORPH_INFLUENCERS&&zn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Cf(s,a,r),this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.applyByPostProcess&&this._imageProcessingConfiguration.bind(this._activeEffect)),this._afterBind(t,this._activeEffect,i),c.update()}getAnimatables(){let e=super.getAnimatables();return this._diffuseTexture&&this._diffuseTexture.animations&&this._diffuseTexture.animations.length>0&&e.push(this._diffuseTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._specularTexture&&this._specularTexture.animations&&this._specularTexture.animations.length>0&&e.push(this._specularTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),e}getActiveTextures(){let e=super.getActiveTextures();return this._diffuseTexture&&e.push(this._diffuseTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._specularTexture&&e.push(this._specularTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),this._refractionTexture&&e.push(this._refractionTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._diffuseTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._specularTexture===e||this._bumpTexture===e||this._lightmapTexture===e||this._refractionTexture===e)}dispose(e,t){var i,r,s,a,o,l,c,f,d;t&&((i=this._diffuseTexture)==null||i.dispose(),(r=this._ambientTexture)==null||r.dispose(),(s=this._opacityTexture)==null||s.dispose(),(a=this._reflectionTexture)==null||a.dispose(),(o=this._emissiveTexture)==null||o.dispose(),(l=this._specularTexture)==null||l.dispose(),(c=this._bumpTexture)==null||c.dispose(),(f=this._lightmapTexture)==null||f.dispose(),(d=this._refractionTexture)==null||d.dispose()),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.name=e,r.id=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return ce.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){ce.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return ce.DetailTextureEnabled}static set DetailTextureEnabled(e){ce.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return ce.AmbientTextureEnabled}static set AmbientTextureEnabled(e){ce.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return ce.OpacityTextureEnabled}static set OpacityTextureEnabled(e){ce.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return ce.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){ce.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return ce.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){ce.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return ce.SpecularTextureEnabled}static set SpecularTextureEnabled(e){ce.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return ce.BumpTextureEnabled}static set BumpTextureEnabled(e){ce.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return ce.LightmapTextureEnabled}static set LightmapTextureEnabled(e){ce.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return ce.RefractionTextureEnabled}static set RefractionTextureEnabled(e){ce.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return ce.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){ce.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return ce.FresnelEnabled}static set FresnelEnabled(e){ce.FresnelEnabled=e}};We.ForceGLSL=!1;P([Ut("diffuseTexture")],We.prototype,"_diffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"diffuseTexture",void 0);P([Ut("ambientTexture")],We.prototype,"_ambientTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"ambientTexture",void 0);P([Ut("opacityTexture")],We.prototype,"_opacityTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"opacityTexture",void 0);P([Ut("reflectionTexture")],We.prototype,"_reflectionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"reflectionTexture",void 0);P([Ut("emissiveTexture")],We.prototype,"_emissiveTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"emissiveTexture",void 0);P([Ut("specularTexture")],We.prototype,"_specularTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"specularTexture",void 0);P([Ut("bumpTexture")],We.prototype,"_bumpTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"bumpTexture",void 0);P([Ut("lightmapTexture")],We.prototype,"_lightmapTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"lightmapTexture",void 0);P([Ut("refractionTexture")],We.prototype,"_refractionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"refractionTexture",void 0);P([Tr("ambient")],We.prototype,"ambientColor",void 0);P([Tr("diffuse")],We.prototype,"diffuseColor",void 0);P([Tr("specular")],We.prototype,"specularColor",void 0);P([Tr("emissive")],We.prototype,"emissiveColor",void 0);P([F()],We.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],We.prototype,"_useAlphaFromDiffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],We.prototype,"_useEmissiveAsIllumination",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],We.prototype,"_linkEmissiveWithDiffuse",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],We.prototype,"_useSpecularOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],We.prototype,"_useReflectionOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],We.prototype,"_disableLighting",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],We.prototype,"_useObjectSpaceNormalMap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],We.prototype,"_useParallax",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],We.prototype,"_useParallaxOcclusion",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallaxOcclusion",void 0);P([F()],We.prototype,"parallaxScaleBias",void 0);P([F("roughness")],We.prototype,"_roughness",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"roughness",void 0);P([F()],We.prototype,"indexOfRefraction",void 0);P([F()],We.prototype,"invertRefractionY",void 0);P([F()],We.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],We.prototype,"_useLightmapAsShadowmap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useLightmapAsShadowmap",void 0);P([gm("diffuseFresnelParameters")],We.prototype,"_diffuseFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"diffuseFresnelParameters",void 0);P([gm("opacityFresnelParameters")],We.prototype,"_opacityFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelAndMiscDirty")],We.prototype,"opacityFresnelParameters",void 0);P([gm("reflectionFresnelParameters")],We.prototype,"_reflectionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"reflectionFresnelParameters",void 0);P([gm("refractionFresnelParameters")],We.prototype,"_refractionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"refractionFresnelParameters",void 0);P([gm("emissiveFresnelParameters")],We.prototype,"_emissiveFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],We.prototype,"_useReflectionFresnelFromSpecular",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],We.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],We.prototype,"_maxSimultaneousLights",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],We.prototype,"_invertNormalMapX",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],We.prototype,"_invertNormalMapY",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],We.prototype,"_twoSidedLighting",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],We.prototype,"_applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],We.prototype,"applyDecalMapAfterDetailMap",void 0);Ft("BABYLON.StandardMaterial",We);ei.DefaultMaterialFactory=n=>new We("default material",n)});var WX=I(()=>{uo();os();Os();bt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Oi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?An(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?An(e,this._caps.maxTextureSize):e),r.width=n,r.height=e,r.isReady=!1,r.generateMipMaps=t,r.samplingMode=i,this.updateTextureSamplingMode(i,r),this._internalTexturesCache.push(r),r};bt.prototype.updateDynamicTexture=function(n,e,t,i=!1,r,s=!1,a=!1){if(!n)return;let o=this._gl,l=o.TEXTURE_2D,c=this._bindTextureDirectly(l,n,!0,s);this._unpackFlipY(t===void 0?n.invertY:t),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);let f=this._getWebGLTextureType(n.type),d=this._getInternalFormat(r||n.format),h=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,h,d,f,e),n.generateMipMaps&&o.generateMipmap(l),c||this._bindTextureDirectly(l,null),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),r&&(n.format=r),n._dynamicTextureSource=e,n._premulAlpha=i,n.invertY=t||!1,n.isReady=!0}});var JR,HX=I(()=>{Pt();Gr();WX();JR=class n extends ge{constructor(e,t,i,r=!1,s=3,a=5,o){let l=!i||i._isScene,c=l?i:i==null?void 0:i.scene,f=l?!r:i;super(null,c,f,o,s,void 0,void 0,void 0,void 0,a),this.name=e,this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._generateMipMaps=r;let d=this._getEngine();if(!d)return;if(t.getContext)this._canvas=t,this._ownCanvas=!1,this._texture=d.createDynamicTexture(this._canvas.width,this._canvas.height,r,s);else{this._canvas=d.createCanvas(1,1),this._ownCanvas=!0;let u=t;u.width||u.width===0?this._texture=d.createDynamicTexture(u.width,u.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let h=this.getSize();this._canvas.width!==h.width&&(this._canvas.width=h.width),this._canvas.height!==h.height&&(this._canvas.height=h.height),this._context=this._canvas.getContext("2d")}getClassName(){return"DynamicTexture"}get canRescale(){return!0}_recreate(e){this._canvas.width=e.width,this._canvas.height=e.height,this.releaseInternalTexture(),this._texture=this._getEngine().createDynamicTexture(e.width,e.height,this._generateMipMaps,this.samplingMode)}scale(e){let t=this.getSize();t.width*=e,t.height*=e,this._recreate(t)}scaleTo(e,t){let i=this.getSize();i.width=e,i.height=t,this._recreate(i)}getContext(){return this._context}clear(e){let t=this.getSize();e&&(this._context.fillStyle=e),this._context.clearRect(0,0,t.width,t.height)}update(e,t=!1,i=!1){this._texture&&this._getEngine().updateDynamicTexture(this._texture,this._canvas,e===void 0?!0:e,t,this._format||void 0,void 0,i)}drawText(e,t,i,r,s,a,o,l=!0){let c=this.getSize();if(a&&(this._context.fillStyle=a,this._context.fillRect(0,0,c.width,c.height)),this._context.font=r,t==null){let f=this._context.measureText(e);t=(c.width-f.width)/2}if(i==null){let f=parseInt(r.replace(/\D/g,""));i=c.height/2+f/3.65}this._context.fillStyle=s||"",this._context.fillText(e,t,i),l&&this.update(o)}dispose(){var e,t;super.dispose(),this._ownCanvas&&((t=(e=this._canvas)==null?void 0:e.remove)==null||t.call(e)),this._canvas=null,this._context=null}clone(){let e=this.getScene();if(!e)return this;let t=this.getSize(),i=new n(this.name,t,e,this._generateMipMaps);return i.hasAlpha=this.hasAlpha,i.level=this.level,i.wrapU=this.wrapU,i.wrapV=this.wrapV,i}serialize(){let e=this.getScene();e&&!e.isReady()&&ee.Warn("The scene must be ready before serializing the dynamic texture");let t=super.serialize();return n._IsCanvasElement(this._canvas)&&(t.base64String=this._canvas.toDataURL()),t.invertY=this._invertY,t.samplingMode=this.samplingMode,t}static _IsCanvasElement(e){return e.toDataURL!==void 0}_rebuild(){this.update()}}});function tb(n,e,t,i,r,s=!1){let a=jr.Zero();return uv(n,e,t,i,a,r,s),a}function uv(n,e,t,i,r,s,a=!1,o=!1){let l=n.getEngine();if(!s&&!(s=n.activeCamera)&&!(s=n.cameraToUseForPointers))return n;let c=s.viewport,f=l.getRenderHeight(),{x:d,y:h,width:u,height:m}=c.toGlobal(l.getRenderWidth(),f),_=1/l.getHardwareScalingLevel();return e=e*_-d,t=t*_-(f-h-m),r.update(e,t,u,m,i||q.IdentityReadOnly,a?q.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function YX(n,e,t,i){let r=jr.Zero();return yL(n,e,t,r,i),r}function yL(n,e,t,i,r){if(!fs)return n;let s=n.getEngine();if(!r&&!(r=n.activeCamera)&&!(r=n.cameraToUseForPointers))throw new Error("Active camera not set");let a=r.viewport,o=s.getRenderHeight(),{x:l,y:c,width:f,height:d}=a.toGlobal(s.getRenderWidth(),o),h=q.Identity(),u=1/s.getHardwareScalingLevel();return e=e*u-l,t=t*u-(o-c-d),i.update(e,t,f,d,h,h,r.getProjectionMatrix()),n}function eb(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return CL(n,t,i,l,r,s,a,o)}function CL(n,e,t,i,r,s,a,o){let l=e.intersects(i,r,a,s,t,o);return!l||!l.hit||!r&&n!=null&&l.distance>=n.distance?null:l}function Ghe(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function KX(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?Ghe(e,n):0}}function jX(n,e,t,i,r){let s=n(t,e.enableDistantPicking);return!s.intersectsSphere(i.boundingSphere,r)||!s.intersectsBox(i.boundingBox,r)?null:s}function PL(n,e,t,i,r,s){let a=null,o=!!(n.activeCameras&&n.activeCameras.length>1&&n.cameraToUseForPointers!==n.activeCamera),l=n.cameraToUseForPointers||n.activeCamera,c=XX.internalPickerForMesh||eb,f=c===eb;for(let d=0;d>4);for(let T=0;T1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=XX.internalPickerForMesh||eb,l=o===eb;for(let c=0;c>4);for(let S=0;S(n._tempPickingRay||(n._tempPickingRay=jr.Zero()),uv(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=tb(n,e,t,q.Identity(),s||null)),a}function QX(n,e,t,i,r,s,a,o=!1){let l=PL(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=jr.Zero()),uv(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=tb(n,e,t,q.Identity(),s||null)),l}function $X(n,e,t,i,r){let s=PL(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=q.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=jr.Zero()),jr.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function JX(n,e,t,i,r,s){return qX(n,a=>tb(n,e,t,a,r||null),i,s)}function e5(n,e,t,i){return qX(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=q.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=jr.Zero()),jr.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function zX(n,e,t=100,i,r){i||(i=n.getWorldMatrix()),e.length=t,r?e.origin.copyFrom(r):e.origin.copyFrom(n.position);let s=$.Vector3[2];s.set(0,0,n._scene.useRightHandedSystem?-1:1);let a=$.Vector3[3];return b.TransformNormalToRef(s,i,a),b.NormalizeToRef(a,e.direction),e}function t5(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return zX(this,new jr(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return zX(this,t,i,r,s)}),n&&(uh._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return tb(this,t,i,r,s,a)})}var XX,jr,DL=I(()=>{Un();ke();ol();JP();Ig();Ni();aP();XX={internalPickerForMesh:void 0},jr=class n{constructor(e,t,i=Number.MAX_VALUE,r=Nt){this.origin=e,this.direction=t,this.length=i,this.epsilon=r}clone(){return new n(this.origin.clone(),this.direction.clone(),this.length)}intersectsBoxMinMax(e,t,i=0){let r=n._TmpVector3[0].copyFromFloats(e.x-i,e.y-i,e.z-i),s=n._TmpVector3[1].copyFromFloats(t.x+i,t.y+i,t.z+i),a=0,o=Number.MAX_VALUE,l,c,f,d;if(Math.abs(this.direction.x)<1e-7){if(this.origin.xs.x)return!1}else if(l=1/this.direction.x,c=(r.x-this.origin.x)*l,f=(s.x-this.origin.x)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.ys.y)return!1}else if(l=1/this.direction.y,c=(r.y-this.origin.y)*l,f=(s.y-this.origin.y)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.zs.z)return!1}else if(l=1/this.direction.z,c=(r.z-this.origin.z)*l,f=(s.z-this.origin.z)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;return!0}intersectsBox(e,t=0){return this.intersectsBoxMinMax(e.minimum,e.maximum,t)}intersectsSphere(e,t=0){let i=e.center.x-this.origin.x,r=e.center.y-this.origin.y,s=e.center.z-this.origin.z,a=i*i+r*r+s*s,o=e.radius+t,l=o*o;if(a<=l)return!0;let c=i*this.direction.x+r*this.direction.y+s*this.direction.z;return c<0?!1:a-c*c<=l}intersectsTriangle(e,t,i){let r=n._TmpVector3[0],s=n._TmpVector3[1],a=n._TmpVector3[2],o=n._TmpVector3[3],l=n._TmpVector3[4];t.subtractToRef(e,r),i.subtractToRef(e,s),b.CrossToRef(this.direction,s,a);let c=b.Dot(r,a);if(c===0)return null;let f=1/c;this.origin.subtractToRef(e,o);let d=b.Dot(o,a)*f;if(d<-this.epsilon||d>1+this.epsilon)return null;b.CrossToRef(o,r,l);let h=b.Dot(this.direction,l)*f;if(h<-this.epsilon||d+h>1+this.epsilon)return null;let u=b.Dot(s,l)*f;return u>this.length||u<0?null:new ph(1-d-h,d,u)}intersectsPlane(e){let t,i=b.Dot(e.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;{let r=b.Dot(e.normal,this.origin);return t=(-e.d-r)/i,t<0?t<-999999997475243e-21?null:0:t}}intersectsAxis(e,t=0){switch(e){case"y":{let i=(this.origin.y-t)/this.direction.y;return i>0?null:new b(this.origin.x+this.direction.x*-i,t,this.origin.z+this.direction.z*-i)}case"x":{let i=(this.origin.x-t)/this.direction.x;return i>0?null:new b(t,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i)}case"z":{let i=(this.origin.z-t)/this.direction.z;return i>0?null:new b(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,t)}default:return null}}intersectsMesh(e,t,i,r=!1,s,a=!1){let o=$.Matrix[0];return e.getWorldMatrix().invertToRef(o),this._tmpRay?n.TransformToRef(this,o,this._tmpRay):this._tmpRay=n.Transform(this,o),e.intersects(this._tmpRay,t,i,r,s,a)}intersectsMeshes(e,t,i){i?i.length=0:i=[];for(let r=0;rt.distance?1:0}intersectionSegment(e,t,i){let r=this.origin,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2],l=$.Vector3[3];t.subtractToRef(e,s),this.direction.scaleToRef(n._Rayl,o),r.addToRef(o,a),e.subtractToRef(r,l);let c=b.Dot(s,s),f=b.Dot(s,o),d=b.Dot(o,o),h=b.Dot(s,l),u=b.Dot(o,l),m=c*d-f*f,_,p=m,g,v=m;mp&&(_=p,g=u+f,v=d)),g<0?(g=0,-h<0?_=0:-h>c?_=p:(_=-h,p=c)):g>v&&(g=v,-h+f<0?_=0:-h+f>c?_=p:(_=-h+f,p=c));let x=Math.abs(_)0&&S<=this.length&&R.lengthSquared(){Bs();_l();DL();DL();t5(ei,mt);ei.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return uv(this,n,e,t,i,r,s,a)};ei.prototype.createPickingRayInCameraSpace=function(n,e,t){return YX(this,n,e,t)};ei.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return yL(this,n,e,t,i)};ei.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return ZX(this,n,e,t,i,r)};ei.prototype.pick=function(n,e,t,i,r,s,a=!1){return QX(this,n,e,t,i,r,s,a)};ei.prototype.pickWithRay=function(n,e,t,i){return $X(this,n,e,t,i)};ei.prototype.multiPick=function(n,e,t,i,r){return JX(this,n,e,t,i,r)};ei.prototype.multiPickWithRay=function(n,e,t){return e5(this,n,e,t)}});var i5,khe,OL=I(()=>{k();i5="kernelBlurVaryingDeclaration",khe="varying sampleCoord{X}: vec2f;";A.IncludesShadersStoreWGSL[i5]||(A.IncludesShadersStoreWGSL[i5]=khe)});var r5,Whe,ib=I(()=>{k();r5="packingFunctions",Whe=`fn pack(depth: f32)->vec4f {const bit_shift: vec4f= vec4f(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const bit_mask: vec4f= vec4f(0.0,1.0/255.0,1.0/255.0,1.0/255.0);var res: vec4f=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;} fn unpack(color: vec4f)->f32 -{const bit_shift: vec4f= vec4f(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;A.IncludesShadersStoreWGSL[e5]||(A.IncludesShadersStoreWGSL[e5]=Bhe)});var t5,Uhe,i5=I(()=>{k();t5="kernelBlurFragment",Uhe=`#ifdef DOF +{const bit_shift: vec4f= vec4f(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;A.IncludesShadersStoreWGSL[r5]||(A.IncludesShadersStoreWGSL[r5]=Whe)});var n5,Hhe,s5=I(()=>{k();n5="kernelBlurFragment",Hhe=`#ifdef DOF factor=sampleCoC(fragmentInputs.sampleCoord{X}); computedWeight=KERNEL_WEIGHT{X}*factor;sumOfWeights+=computedWeight; #else @@ -9935,7 +9935,7 @@ blend+=unpack(textureSample(textureSampler,textureSamplerSampler,fragmentInputs. #else blend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCoord{X})*computedWeight; #endif -`;A.IncludesShadersStoreWGSL[t5]||(A.IncludesShadersStoreWGSL[t5]=Uhe)});var r5,Vhe,n5=I(()=>{k();r5="kernelBlurFragment2",Vhe=`#ifdef DOF +`;A.IncludesShadersStoreWGSL[n5]||(A.IncludesShadersStoreWGSL[n5]=Hhe)});var a5,zhe,o5=I(()=>{k();a5="kernelBlurFragment2",zhe=`#ifdef DOF factor=sampleCoC(fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X});computedWeight=KERNEL_DEP_WEIGHT{X}*factor;sumOfWeights+=computedWeight; #else computedWeight=KERNEL_DEP_WEIGHT{X}; @@ -9945,7 +9945,7 @@ blend+=unpack(textureSample(textureSampler,textureSamplerSampler,fragmentInputs. #else blend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X})*computedWeight; #endif -`;A.IncludesShadersStoreWGSL[r5]||(A.IncludesShadersStoreWGSL[r5]=Vhe)});var a5={};Be(a5,{kernelBlurPixelShaderWGSL:()=>Ghe});var DL,s5,Ghe,o5=I(()=>{k();PL();eb();i5();n5();DL="kernelBlurPixelShader",s5=`var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform delta: vec2f;varying sampleCenter: vec2f; +`;A.IncludesShadersStoreWGSL[a5]||(A.IncludesShadersStoreWGSL[a5]=zhe)});var c5={};Be(c5,{kernelBlurPixelShaderWGSL:()=>Xhe});var NL,l5,Xhe,f5=I(()=>{k();OL();ib();s5();o5();NL="kernelBlurPixelShader",l5=`var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform delta: vec2f;varying sampleCenter: vec2f; #ifdef DOF var circleOfConfusionSamplerSampler: sampler;var circleOfConfusionSampler: texture_2d;fn sampleCoC(offset: vec2f)->f32 {var coc: f32=textureSample(circleOfConfusionSampler,circleOfConfusionSamplerSampler,offset).r;return coc; } #endif @@ -9980,7 +9980,7 @@ fragmentOutputs.color=blend; #ifdef DOF fragmentOutputs.color/=sumOfWeights; #endif -}`;A.ShadersStoreWGSL[DL]||(A.ShadersStoreWGSL[DL]=s5);Ghe={name:DL,shader:s5}});var l5,khe,c5=I(()=>{k();l5="kernelBlurVertex",khe="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";A.IncludesShadersStoreWGSL[l5]||(A.IncludesShadersStoreWGSL[l5]=khe)});var d5={};Be(d5,{kernelBlurVertexShaderWGSL:()=>Whe});var LL,f5,Whe,h5=I(()=>{k();PL();c5();LL="kernelBlurVertexShader",f5=`attribute position: vec2f;uniform delta: vec2f;varying sampleCenter: vec2f; +}`;A.ShadersStoreWGSL[NL]||(A.ShadersStoreWGSL[NL]=l5);Xhe={name:NL,shader:l5}});var d5,Yhe,h5=I(()=>{k();d5="kernelBlurVertex",Yhe="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";A.IncludesShadersStoreWGSL[d5]||(A.IncludesShadersStoreWGSL[d5]=Yhe)});var m5={};Be(m5,{kernelBlurVertexShaderWGSL:()=>Khe});var wL,u5,Khe,p5=I(()=>{k();OL();h5();wL="kernelBlurVertexShader",u5=`attribute position: vec2f;uniform delta: vec2f;varying sampleCenter: vec2f; #include[0..varyingCount] #define CUSTOM_VERTEX_DEFINITIONS @vertex @@ -9990,10 +9990,10 @@ vertexOutputs.sampleCenter=(vertexInputs.position*madd+madd); #include[0..varyingCount] vertexOutputs.position= vec4f(vertexInputs.position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStoreWGSL[LL]||(A.ShadersStoreWGSL[LL]=f5);Whe={name:LL,shader:f5}});var u5,Hhe,OL=I(()=>{k();u5="kernelBlurVaryingDeclaration",Hhe="varying vec2 sampleCoord{X};";A.IncludesShadersStore[u5]||(A.IncludesShadersStore[u5]=Hhe)});var m5,zhe,tb=I(()=>{k();m5="packingFunctions",zhe=`vec4 pack(float depth) +}`;A.ShadersStoreWGSL[wL]||(A.ShadersStoreWGSL[wL]=u5);Khe={name:wL,shader:u5}});var _5,jhe,FL=I(()=>{k();_5="kernelBlurVaryingDeclaration",jhe="varying vec2 sampleCoord{X};";A.IncludesShadersStore[_5]||(A.IncludesShadersStore[_5]=jhe)});var g5,qhe,rb=I(()=>{k();g5="packingFunctions",qhe=`vec4 pack(float depth) {const vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const vec4 bit_mask=vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;} float unpack(vec4 color) -{const vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;A.IncludesShadersStore[m5]||(A.IncludesShadersStore[m5]=zhe)});var p5,Xhe,_5=I(()=>{k();p5="kernelBlurFragment",Xhe=`#ifdef DOF +{const vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;A.IncludesShadersStore[g5]||(A.IncludesShadersStore[g5]=qhe)});var v5,Zhe,E5=I(()=>{k();v5="kernelBlurFragment",Zhe=`#ifdef DOF factor=sampleCoC(sampleCoord{X}); computedWeight=KERNEL_WEIGHT{X}*factor;sumOfWeights+=computedWeight; #else @@ -10004,7 +10004,7 @@ blend+=unpack(texture2D(textureSampler,sampleCoord{X}))*computedWeight; #else blend+=texture2D(textureSampler,sampleCoord{X})*computedWeight; #endif -`;A.IncludesShadersStore[p5]||(A.IncludesShadersStore[p5]=Xhe)});var g5,Yhe,v5=I(()=>{k();g5="kernelBlurFragment2",Yhe=`#ifdef DOF +`;A.IncludesShadersStore[v5]||(A.IncludesShadersStore[v5]=Zhe)});var S5,Qhe,T5=I(()=>{k();S5="kernelBlurFragment2",Qhe=`#ifdef DOF factor=sampleCoC(sampleCenter+delta*KERNEL_DEP_OFFSET{X});computedWeight=KERNEL_DEP_WEIGHT{X}*factor;sumOfWeights+=computedWeight; #else computedWeight=KERNEL_DEP_WEIGHT{X}; @@ -10014,7 +10014,7 @@ blend+=unpack(texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})) #else blend+=texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})*computedWeight; #endif -`;A.IncludesShadersStore[g5]||(A.IncludesShadersStore[g5]=Yhe)});var S5={};Be(S5,{kernelBlurPixelShader:()=>Khe});var NL,E5,Khe,T5=I(()=>{k();OL();tb();_5();v5();NL="kernelBlurPixelShader",E5=`uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter; +`;A.IncludesShadersStore[S5]||(A.IncludesShadersStore[S5]=Qhe)});var x5={};Be(x5,{kernelBlurPixelShader:()=>$he});var BL,A5,$he,R5=I(()=>{k();FL();rb();E5();T5();BL="kernelBlurPixelShader",A5=`uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter; #ifdef DOF uniform sampler2D circleOfConfusionSampler;float sampleCoC(in vec2 offset) {float coc=texture2D(circleOfConfusionSampler,offset).r;return coc; } #endif @@ -10049,7 +10049,7 @@ gl_FragColor=blend; #ifdef DOF gl_FragColor/=sumOfWeights; #endif -}`;A.ShadersStore[NL]||(A.ShadersStore[NL]=E5);Khe={name:NL,shader:E5}});var A5,jhe,x5=I(()=>{k();A5="kernelBlurVertex",jhe="sampleCoord{X}=sampleCenter+delta*KERNEL_OFFSET{X};";A.IncludesShadersStore[A5]||(A.IncludesShadersStore[A5]=jhe)});var b5={};Be(b5,{kernelBlurVertexShader:()=>qhe});var wL,R5,qhe,M5=I(()=>{k();OL();x5();wL="kernelBlurVertexShader",R5=`attribute vec2 position;uniform vec2 delta;varying vec2 sampleCenter; +}`;A.ShadersStore[BL]||(A.ShadersStore[BL]=A5);$he={name:BL,shader:A5}});var b5,Jhe,M5=I(()=>{k();b5="kernelBlurVertex",Jhe="sampleCoord{X}=sampleCenter+delta*KERNEL_OFFSET{X};";A.IncludesShadersStore[b5]||(A.IncludesShadersStore[b5]=Jhe)});var y5={};Be(y5,{kernelBlurVertexShader:()=>eue});var UL,I5,eue,C5=I(()=>{k();FL();M5();UL="kernelBlurVertexShader",I5=`attribute vec2 position;uniform vec2 delta;varying vec2 sampleCenter; #include[0..varyingCount] const vec2 madd=vec2(0.5,0.5); #define CUSTOM_VERTEX_DEFINITIONS @@ -10059,13 +10059,13 @@ sampleCenter=(position*madd+madd); #include[0..varyingCount] gl_Position=vec4(position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStore[wL]||(A.ShadersStore[wL]=R5);qhe={name:wL,shader:R5}});var us,FL=I(()=>{lh();Ni();us=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(o5(),a5)),Promise.resolve().then(()=>(h5(),d5))]))):t.push(Promise.all([Promise.resolve().then(()=>(T5(),S5)),Promise.resolve().then(()=>(M5(),b5))]))}constructor(e,t=null,i,r,s){let a=!!(s!=null&&s.blockCompilation);super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,samplers:n.Samplers,vertexUrl:n.VertexUrl,blockCompilation:!0}),this._packedFloat=!1,this._staticDefines="",this.textureWidth=0,this.textureHeight=0,this._staticDefines=s?Array.isArray(s.defines)?s.defines.join(` +}`;A.ShadersStore[UL]||(A.ShadersStore[UL]=I5);eue={name:UL,shader:I5}});var us,VL=I(()=>{lh();Ni();us=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(f5(),c5)),Promise.resolve().then(()=>(p5(),m5))]))):t.push(Promise.all([Promise.resolve().then(()=>(R5(),x5)),Promise.resolve().then(()=>(C5(),y5))]))}constructor(e,t=null,i,r,s){let a=!!(s!=null&&s.blockCompilation);super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,samplers:n.Samplers,vertexUrl:n.VertexUrl,blockCompilation:!0}),this._packedFloat=!1,this._staticDefines="",this.textureWidth=0,this.textureHeight=0,this._staticDefines=s?Array.isArray(s.defines)?s.defines.join(` `):s.defines||"":"",this.options.blockCompilation=a,i!==void 0&&(this.direction=i),r!==void 0&&(this.kernel=r)}set kernel(e){this._idealKernel!==e&&(e=Math.max(e,1),this._idealKernel=e,this._kernel=this._nearestBestKernel(e),this.options.blockCompilation||this._updateParameters())}get kernel(){return this._idealKernel}set packedFloat(e){this._packedFloat!==e&&(this._packedFloat=e,this.options.blockCompilation||this._updateParameters())}get packedFloat(){return this._packedFloat}bind(e=!1){super.bind(e),this._drawWrapper.effect.setFloat2("delta",1/this.textureWidth*this.direction.x,1/this.textureHeight*this.direction.y)}_updateParameters(e,t){let i=this._kernel,r=(i-1)/2,s=[],a=[],o=0;for(let p=0;p0)return Math.max(i,3);return Math.max(t,3)}_gaussianWeight(e){let t=.3333333333333333,i=Math.sqrt(2*Math.PI)*t,r=-(e*e/(2*t*t));return 1/i*Math.exp(r)}_glslFloat(e,t=8){return e.toFixed(t).replace(/0+$/,"")}};us.VertexUrl="kernelBlur";us.FragmentUrl="kernelBlur";us.Uniforms=["delta","direction"];us.Samplers=["circleOfConfusionSampler"]});var Wa,BL=I(()=>{Gt();rc();Gr();Yi();Vt();br();FL();Wa=class n extends Ri{get direction(){return this._effectWrapper.direction}set direction(e){this._effectWrapper.direction=e}set kernel(e){this._effectWrapper.kernel=e}get kernel(){return this._effectWrapper.kernel}set packedFloat(e){this._effectWrapper.packedFloat=e}get packedFloat(){return this._effectWrapper.packedFloat}getClassName(){return"BlurPostProcess"}constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l,c=0,f="",d=!1,h=5){let u=typeof r=="number"?d:!!r.blockCompilation,m={uniforms:us.Uniforms,samplers:us.Samplers,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,textureType:c,vertexUrl:us.VertexUrl,indexParameters:{varyingCount:0,depCount:0},textureFormat:h,defines:f,...r,blockCompilation:!0};super(e,us.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new us(e,o,void 0,void 0,m):void 0,...m}),this._effectWrapper.options.blockCompilation=u,this.direction=t,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this._outputTexture?this._outputTexture.width:this.width,this._effectWrapper.textureHeight=this._outputTexture?this._outputTexture.height:this.height}),this.kernel=i}updateEffect(e=null,t=null,i=null,r,s,a){this._effectWrapper._updateParameters(s,a)}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.direction,e.kernel,e.options,t,e.renderTargetSamplingMode,i.getEngine(),e.reusable,e.textureType,void 0,!1),e,i,r)}};P([vm()],Wa.prototype,"direction",null);P([F()],Wa.prototype,"kernel",null);P([F()],Wa.prototype,"packedFloat",null);Ft("BABYLON.BlurPostProcess",Wa)});var I5,Zhe,y5=I(()=>{k();I5="bayerDitherFunctions",Zhe=`fn bayerDither2(_P: vec2f)->f32 {return ((2.0*_P.y+_P.x+1.0)%(4.0));} +`,_++;this.packedFloat&&(m+="#define PACKEDFLOAT 1"),this.options.blockCompilation=!1,this.updateEffect(m,null,null,{varyingCount:u,depCount:_},e,t)}_nearestBestKernel(e){let t=Math.round(e);for(let i of[t,t-1,t+1,t-2,t+2])if(i%2!==0&&Math.floor(i/2)%2===0&&i>0)return Math.max(i,3);return Math.max(t,3)}_gaussianWeight(e){let t=.3333333333333333,i=Math.sqrt(2*Math.PI)*t,r=-(e*e/(2*t*t));return 1/i*Math.exp(r)}_glslFloat(e,t=8){return e.toFixed(t).replace(/0+$/,"")}};us.VertexUrl="kernelBlur";us.FragmentUrl="kernelBlur";us.Uniforms=["delta","direction"];us.Samplers=["circleOfConfusionSampler"]});var Wa,GL=I(()=>{Gt();rc();Gr();Yi();Vt();br();VL();Wa=class n extends Ri{get direction(){return this._effectWrapper.direction}set direction(e){this._effectWrapper.direction=e}set kernel(e){this._effectWrapper.kernel=e}get kernel(){return this._effectWrapper.kernel}set packedFloat(e){this._effectWrapper.packedFloat=e}get packedFloat(){return this._effectWrapper.packedFloat}getClassName(){return"BlurPostProcess"}constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l,c=0,f="",d=!1,h=5){let u=typeof r=="number"?d:!!r.blockCompilation,m={uniforms:us.Uniforms,samplers:us.Samplers,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,textureType:c,vertexUrl:us.VertexUrl,indexParameters:{varyingCount:0,depCount:0},textureFormat:h,defines:f,...r,blockCompilation:!0};super(e,us.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new us(e,o,void 0,void 0,m):void 0,...m}),this._effectWrapper.options.blockCompilation=u,this.direction=t,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this._outputTexture?this._outputTexture.width:this.width,this._effectWrapper.textureHeight=this._outputTexture?this._outputTexture.height:this.height}),this.kernel=i}updateEffect(e=null,t=null,i=null,r,s,a){this._effectWrapper._updateParameters(s,a)}static _Parse(e,t,i,r){return it.Parse(()=>new n(e.name,e.direction,e.kernel,e.options,t,e.renderTargetSamplingMode,i.getEngine(),e.reusable,e.textureType,void 0,!1),e,i,r)}};P([vm()],Wa.prototype,"direction",null);P([F()],Wa.prototype,"kernel",null);P([F()],Wa.prototype,"packedFloat",null);Ft("BABYLON.BlurPostProcess",Wa)});var P5,tue,D5=I(()=>{k();P5="bayerDitherFunctions",tue=`fn bayerDither2(_P: vec2f)->f32 {return ((2.0*_P.y+_P.x+1.0)%(4.0));} fn bayerDither4(_P: vec2f)->f32 {var P1: vec2f=((_P)%(2.0)); var P2: vec2f=floor(0.5*((_P)%(4.0))); return 4.0*bayerDither2(P1)+bayerDither2(P2);} @@ -10073,7 +10073,7 @@ fn bayerDither8(_P: vec2f)->f32 {var P1: vec2f=((_P)%(2.0)); var P2: vec2f=floor(0.5 *((_P)%(4.0))); var P4: vec2f=floor(0.25*((_P)%(8.0))); return 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);} -`;A.IncludesShadersStoreWGSL[I5]||(A.IncludesShadersStoreWGSL[I5]=Zhe)});var C5,Qhe,P5=I(()=>{k();eb();y5();C5="shadowMapFragmentExtraDeclaration",Qhe=`#if SM_FLOAT==0 +`;A.IncludesShadersStoreWGSL[P5]||(A.IncludesShadersStoreWGSL[P5]=tue)});var L5,iue,O5=I(()=>{k();ib();D5();L5="shadowMapFragmentExtraDeclaration",iue=`#if SM_FLOAT==0 #include #endif #if SM_SOFTTRANSPARENTSHADOW==1 @@ -10088,7 +10088,7 @@ uniform biasAndScaleSM: vec3f;uniform depthValuesSM: vec2f; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 varying zSM: f32; #endif -`;A.IncludesShadersStoreWGSL[C5]||(A.IncludesShadersStoreWGSL[C5]=Qhe)});var D5,$he,L5=I(()=>{k();D5="shadowMapFragment",$he=`var depthSM: f32=fragmentInputs.vDepthMetricSM; +`;A.IncludesShadersStoreWGSL[L5]||(A.IncludesShadersStoreWGSL[L5]=iue)});var N5,rue,w5=I(()=>{k();N5="shadowMapFragment",rue=`var depthSM: f32=fragmentInputs.vDepthMetricSM; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 #if SM_USEDISTANCE==1 depthSM=(length(fragmentInputs.vPositionWSM-uniforms.lightDataSM)+uniforms.depthValuesSM.x)/uniforms.depthValuesSM.y+uniforms.biasAndScaleSM.x; @@ -10116,7 +10116,7 @@ fragmentOutputs.color= vec4f(depthSM,1.0,1.0,1.0); #else fragmentOutputs.color=pack(depthSM); #endif -`;A.IncludesShadersStoreWGSL[D5]||(A.IncludesShadersStoreWGSL[D5]=$he)});var N5={};Be(N5,{shadowMapPixelShaderWGSL:()=>Jhe});var UL,O5,Jhe,w5=I(()=>{k();P5();Sc();Tc();L5();UL="shadowMapPixelShader",O5=`#include +`;A.IncludesShadersStoreWGSL[N5]||(A.IncludesShadersStoreWGSL[N5]=rue)});var B5={};Be(B5,{shadowMapPixelShaderWGSL:()=>nue});var kL,F5,nue,U5=I(()=>{k();O5();Sc();Tc();w5();kL="shadowMapPixelShader",F5=`#include #ifdef ALPHATEXTURE varying vUV: vec2f;var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d; #endif @@ -10142,7 +10142,7 @@ if ((bayerDither8(floor(((fragmentInputs.position.xy)%(8.0)))))/64.0>=uniforms.s #endif #endif #include -}`;A.ShadersStoreWGSL[UL]||(A.ShadersStoreWGSL[UL]=O5);Jhe={name:UL,shader:O5}});var F5,eue,B5=I(()=>{k();F5="shadowMapVertexExtraDeclaration",eue=`#if SM_NORMALBIAS==1 +}`;A.ShadersStoreWGSL[kL]||(A.ShadersStoreWGSL[kL]=F5);nue={name:kL,shader:F5}});var V5,sue,G5=I(()=>{k();V5="shadowMapVertexExtraDeclaration",sue=`#if SM_NORMALBIAS==1 uniform lightDataSM: vec3f; #endif uniform biasAndScaleSM: vec3f;uniform depthValuesSM: vec2f;varying vDepthMetricSM: f32; @@ -10152,7 +10152,7 @@ varying vPositionWSM: vec3f; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 varying zSM: f32; #endif -`;A.IncludesShadersStoreWGSL[F5]||(A.IncludesShadersStoreWGSL[F5]=eue)});var U5,tue,V5=I(()=>{k();U5="shadowMapVertexNormalBias",tue=`#if SM_NORMALBIAS==1 +`;A.IncludesShadersStoreWGSL[V5]||(A.IncludesShadersStoreWGSL[V5]=sue)});var k5,aue,W5=I(()=>{k();k5="shadowMapVertexNormalBias",aue=`#if SM_NORMALBIAS==1 #if SM_DIRECTIONINLIGHTDATA==1 var worldLightDirSM: vec3f=normalize(-uniforms.lightDataSM.xyz); #else @@ -10160,7 +10160,7 @@ var directionToLightSM: vec3f=uniforms.lightDataSM.xyz-worldPos.xyz;var worldLig #endif var ndlSM: f32=dot(vNormalW,worldLightDirSM);var sinNLSM: f32=sqrt(1.0-ndlSM*ndlSM);var normalBiasSM: f32=uniforms.biasAndScaleSM.y*sinNLSM;worldPos=vec4f(worldPos.xyz-vNormalW*normalBiasSM,worldPos.w); #endif -`;A.IncludesShadersStoreWGSL[U5]||(A.IncludesShadersStoreWGSL[U5]=tue)});var G5,iue,k5=I(()=>{k();G5="shadowMapVertexMetric",iue=`#if SM_USEDISTANCE==1 +`;A.IncludesShadersStoreWGSL[k5]||(A.IncludesShadersStoreWGSL[k5]=aue)});var H5,oue,z5=I(()=>{k();H5="shadowMapVertexMetric",oue=`#if SM_USEDISTANCE==1 vertexOutputs.vPositionWSM=worldPos.xyz; #endif #if SM_DEPTHTEXTURE==1 @@ -10184,7 +10184,7 @@ vertexOutputs.vDepthMetricSM=(-vertexOutputs.position.z+uniforms.depthValuesSM.x vertexOutputs.vDepthMetricSM=(vertexOutputs.position.z+uniforms.depthValuesSM.x)/uniforms.depthValuesSM.y+uniforms.biasAndScaleSM.x; #endif #endif -`;A.IncludesShadersStoreWGSL[G5]||(A.IncludesShadersStoreWGSL[G5]=iue)});var H5={};Be(H5,{shadowMapVertexShaderWGSL:()=>rue});var VL,W5,rue,z5=I(()=>{k();uc();mc();Yf();Kf();wa();Sh();cv();B5();pc();jf();qf();_c();gc();vc();V5();k5();Ec();VL="shadowMapVertexShader",W5=`attribute position: vec3f; +`;A.IncludesShadersStoreWGSL[H5]||(A.IncludesShadersStoreWGSL[H5]=oue)});var Y5={};Be(Y5,{shadowMapVertexShaderWGSL:()=>lue});var WL,X5,lue,K5=I(()=>{k();uc();mc();Yf();Kf();wa();Sh();cv();G5();pc();jf();qf();_c();gc();vc();W5();z5();Ec();WL="shadowMapVertexShader",X5=`attribute position: vec3f; #ifdef NORMAL attribute normal: vec3f; #endif @@ -10250,14 +10250,14 @@ vertexOutputs.vUV= (uniforms.diffuseMatrix* vec4f(uv2Updated,1.0,0.0)).xy; #endif #endif #include -}`;A.ShadersStoreWGSL[VL]||(A.ShadersStoreWGSL[VL]=W5);rue={name:VL,shader:W5}});var Y5={};Be(Y5,{depthBoxBlurPixelShaderWGSL:()=>nue});var GL,X5,nue,K5=I(()=>{k();GL="depthBoxBlurPixelShader",X5=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f; +}`;A.ShadersStoreWGSL[WL]||(A.ShadersStoreWGSL[WL]=X5);lue={name:WL,shader:X5}});var q5={};Be(q5,{depthBoxBlurPixelShaderWGSL:()=>cue});var HL,j5,cue,Z5=I(()=>{k();HL="depthBoxBlurPixelShader",j5=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f; #define CUSTOM_FRAGMENT_DEFINITIONS @fragment fn main(input: FragmentInputs)->FragmentOutputs {var colorDepth: vec4f=vec4f(0.0);for (var x: i32=-OFFSET; x<=OFFSET; x++) {for (var y: i32=-OFFSET; y<=OFFSET; y++) {colorDepth+=textureSample(textureSampler,textureSamplerSampler,input.vUV+ vec2f(f32(x),f32(y))/uniforms.screenSize);}} -fragmentOutputs.color=(colorDepth/ f32((OFFSET*2+1)*(OFFSET*2+1)));}`;A.ShadersStoreWGSL[GL]||(A.ShadersStoreWGSL[GL]=X5);nue={name:GL,shader:X5}});var q5={};Be(q5,{shadowMapFragmentSoftTransparentShadowWGSL:()=>sue});var kL,j5,sue,Z5=I(()=>{k();kL="shadowMapFragmentSoftTransparentShadow",j5=`#if SM_SOFTTRANSPARENTSHADOW==1 +fragmentOutputs.color=(colorDepth/ f32((OFFSET*2+1)*(OFFSET*2+1)));}`;A.ShadersStoreWGSL[HL]||(A.ShadersStoreWGSL[HL]=j5);cue={name:HL,shader:j5}});var $5={};Be($5,{shadowMapFragmentSoftTransparentShadowWGSL:()=>fue});var zL,Q5,fue,J5=I(()=>{k();zL="shadowMapFragmentSoftTransparentShadow",Q5=`#if SM_SOFTTRANSPARENTSHADOW==1 if ((bayerDither8(floor(((fragmentInputs.position.xy)%(8.0)))))/64.0>=uniforms.softTransparentShadowSM.x*alpha) {discard;} #endif -`;A.IncludesShadersStoreWGSL[kL]||(A.IncludesShadersStoreWGSL[kL]=j5);sue={name:kL,shader:j5}});var Q5,aue,$5=I(()=>{k();Q5="bayerDitherFunctions",aue=`float bayerDither2(vec2 _P) {return mod(2.0*_P.y+_P.x+1.0,4.0);} +`;A.IncludesShadersStoreWGSL[zL]||(A.IncludesShadersStoreWGSL[zL]=Q5);fue={name:zL,shader:Q5}});var eY,due,tY=I(()=>{k();eY="bayerDitherFunctions",due=`float bayerDither2(vec2 _P) {return mod(2.0*_P.y+_P.x+1.0,4.0);} float bayerDither4(vec2 _P) {vec2 P1=mod(_P,2.0); vec2 P2=floor(0.5*mod(_P,4.0)); return 4.0*bayerDither2(P1)+bayerDither2(P2);} @@ -10265,7 +10265,7 @@ float bayerDither8(vec2 _P) {vec2 P1=mod(_P,2.0); vec2 P2=floor(0.5 *mod(_P,4.0)); vec2 P4=floor(0.25*mod(_P,8.0)); return 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);} -`;A.IncludesShadersStore[Q5]||(A.IncludesShadersStore[Q5]=aue)});var J5,oue,eY=I(()=>{k();tb();$5();J5="shadowMapFragmentExtraDeclaration",oue=`#if SM_FLOAT==0 +`;A.IncludesShadersStore[eY]||(A.IncludesShadersStore[eY]=due)});var iY,hue,rY=I(()=>{k();rb();tY();iY="shadowMapFragmentExtraDeclaration",hue=`#if SM_FLOAT==0 #include #endif #if SM_SOFTTRANSPARENTSHADOW==1 @@ -10280,7 +10280,7 @@ uniform vec3 biasAndScaleSM;uniform vec2 depthValuesSM; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 varying float zSM; #endif -`;A.IncludesShadersStore[J5]||(A.IncludesShadersStore[J5]=oue)});var tY,lue,iY=I(()=>{k();tY="shadowMapFragment",lue=`float depthSM=vDepthMetricSM; +`;A.IncludesShadersStore[iY]||(A.IncludesShadersStore[iY]=hue)});var nY,uue,sY=I(()=>{k();nY="shadowMapFragment",uue=`float depthSM=vDepthMetricSM; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 #if SM_USEDISTANCE==1 depthSM=(length(vPositionWSM-lightDataSM)+depthValuesSM.x)/depthValuesSM.y+biasAndScaleSM.x; @@ -10308,7 +10308,7 @@ gl_FragColor=vec4(depthSM,1.0,1.0,1.0); #else gl_FragColor=pack(depthSM); #endif -return;`;A.IncludesShadersStore[tY]||(A.IncludesShadersStore[tY]=lue)});var nY={};Be(nY,{shadowMapPixelShader:()=>cue});var WL,rY,cue,sY=I(()=>{k();eY();Cc();Pc();iY();WL="shadowMapPixelShader",rY=`#include +return;`;A.IncludesShadersStore[nY]||(A.IncludesShadersStore[nY]=uue)});var oY={};Be(oY,{shadowMapPixelShader:()=>mue});var XL,aY,mue,lY=I(()=>{k();rY();Cc();Pc();sY();XL="shadowMapPixelShader",aY=`#include #ifdef ALPHATEXTURE varying vec2 vUV;uniform sampler2D diffuseSampler; #endif @@ -10335,18 +10335,18 @@ if ((bayerDither8(floor(mod(gl_FragCoord.xy,8.0))))/64.0>=softTransparentShadowS #endif #endif #include -}`;A.ShadersStore[WL]||(A.ShadersStore[WL]=rY);cue={name:WL,shader:rY}});var aY,fue,HL=I(()=>{k();aY="sceneVertexDeclaration",fue=`uniform mat4 viewProjection; +}`;A.ShadersStore[XL]||(A.ShadersStore[XL]=aY);mue={name:XL,shader:aY}});var cY,pue,YL=I(()=>{k();cY="sceneVertexDeclaration",pue=`uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition; -`;A.IncludesShadersStore[aY]||(A.IncludesShadersStore[aY]=fue)});var oY,due,lY=I(()=>{k();oY="meshVertexDeclaration",due=`uniform mat4 world;uniform float visibility; -`;A.IncludesShadersStore[oY]||(A.IncludesShadersStore[oY]=due)});var cY,hue,fY=I(()=>{k();HL();lY();cY="shadowMapVertexDeclaration",hue=`#include +`;A.IncludesShadersStore[cY]||(A.IncludesShadersStore[cY]=pue)});var fY,_ue,dY=I(()=>{k();fY="meshVertexDeclaration",_ue=`uniform mat4 world;uniform float visibility; +`;A.IncludesShadersStore[fY]||(A.IncludesShadersStore[fY]=_ue)});var hY,gue,uY=I(()=>{k();YL();dY();hY="shadowMapVertexDeclaration",gue=`#include #include -`;A.IncludesShadersStore[cY]||(A.IncludesShadersStore[cY]=hue)});var dY,uue,hY=I(()=>{k();xh();dv();dY="shadowMapUboDeclaration",uue=`layout(std140,column_major) uniform; +`;A.IncludesShadersStore[hY]||(A.IncludesShadersStore[hY]=gue)});var mY,vue,pY=I(()=>{k();xh();dv();mY="shadowMapUboDeclaration",vue=`layout(std140,column_major) uniform; #include #include -`;A.IncludesShadersStore[dY]||(A.IncludesShadersStore[dY]=uue)});var uY,mue,mY=I(()=>{k();uY="shadowMapVertexExtraDeclaration",mue=`#if SM_NORMALBIAS==1 +`;A.IncludesShadersStore[mY]||(A.IncludesShadersStore[mY]=vue)});var _Y,Eue,gY=I(()=>{k();_Y="shadowMapVertexExtraDeclaration",Eue=`#if SM_NORMALBIAS==1 uniform vec3 lightDataSM; #endif uniform vec3 biasAndScaleSM;uniform vec2 depthValuesSM;varying float vDepthMetricSM; @@ -10356,7 +10356,7 @@ varying vec3 vPositionWSM; #if defined(SM_DEPTHCLAMP) && SM_DEPTHCLAMP==1 varying float zSM; #endif -`;A.IncludesShadersStore[uY]||(A.IncludesShadersStore[uY]=mue)});var pY,pue,_Y=I(()=>{k();pY="shadowMapVertexNormalBias",pue=`#if SM_NORMALBIAS==1 +`;A.IncludesShadersStore[_Y]||(A.IncludesShadersStore[_Y]=Eue)});var vY,Sue,EY=I(()=>{k();vY="shadowMapVertexNormalBias",Sue=`#if SM_NORMALBIAS==1 #if SM_DIRECTIONINLIGHTDATA==1 vec3 worldLightDirSM=normalize(-lightDataSM.xyz); #else @@ -10364,7 +10364,7 @@ vec3 directionToLightSM=lightDataSM.xyz-worldPos.xyz;vec3 worldLightDirSM=normal #endif float ndlSM=dot(vNormalW,worldLightDirSM);float sinNLSM=sqrt(1.0-ndlSM*ndlSM);float normalBiasSM=biasAndScaleSM.y*sinNLSM;worldPos.xyz-=vNormalW*normalBiasSM; #endif -`;A.IncludesShadersStore[pY]||(A.IncludesShadersStore[pY]=pue)});var gY,_ue,vY=I(()=>{k();gY="shadowMapVertexMetric",_ue=`#if SM_USEDISTANCE==1 +`;A.IncludesShadersStore[vY]||(A.IncludesShadersStore[vY]=Sue)});var SY,Tue,TY=I(()=>{k();SY="shadowMapVertexMetric",Tue=`#if SM_USEDISTANCE==1 vPositionWSM=worldPos.xyz; #endif #if SM_DEPTHTEXTURE==1 @@ -10388,7 +10388,7 @@ vDepthMetricSM=(-gl_Position.z+depthValuesSM.x)/depthValuesSM.y+biasAndScaleSM.x vDepthMetricSM=(gl_Position.z+depthValuesSM.x)/depthValuesSM.y+biasAndScaleSM.x; #endif #endif -`;A.IncludesShadersStore[gY]||(A.IncludesShadersStore[gY]=_ue)});var SY={};Be(SY,{shadowMapVertexShader:()=>gue});var zL,EY,gue,TY=I(()=>{k();Ac();xc();Zf();Qf();Fa();fY();hY();mY();Rc();$f();Jf();bc();Mc();Ic();_Y();vY();yc();zL="shadowMapVertexShader",EY=`attribute vec3 position; +`;A.IncludesShadersStore[SY]||(A.IncludesShadersStore[SY]=Tue)});var xY={};Be(xY,{shadowMapVertexShader:()=>Aue});var KL,AY,Aue,RY=I(()=>{k();Ac();xc();Zf();Qf();Fa();uY();pY();gY();Rc();$f();Jf();bc();Mc();Ic();EY();TY();yc();KL="shadowMapVertexShader",AY=`attribute vec3 position; #ifdef NORMAL attribute vec3 normal; #endif @@ -10453,16 +10453,16 @@ vUV=vec2(diffuseMatrix*vec4(uv2Updated,1.0,0.0)); #endif #endif #include -}`;A.ShadersStore[zL]||(A.ShadersStore[zL]=EY);gue={name:zL,shader:EY}});var xY={};Be(xY,{depthBoxBlurPixelShader:()=>vue});var XL,AY,vue,RY=I(()=>{k();XL="depthBoxBlurPixelShader",AY=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize; +}`;A.ShadersStore[KL]||(A.ShadersStore[KL]=AY);Aue={name:KL,shader:AY}});var MY={};Be(MY,{depthBoxBlurPixelShader:()=>xue});var jL,bY,xue,IY=I(()=>{k();jL="depthBoxBlurPixelShader",bY=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize; #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) {vec4 colorDepth=vec4(0.0);for (int x=-OFFSET; x<=OFFSET; x++) for (int y=-OFFSET; y<=OFFSET; y++) -colorDepth+=texture2D(textureSampler,vUV+vec2(x,y)/screenSize);gl_FragColor=(colorDepth/float((OFFSET*2+1)*(OFFSET*2+1)));}`;A.ShadersStore[XL]||(A.ShadersStore[XL]=AY);vue={name:XL,shader:AY}});var MY={};Be(MY,{shadowMapFragmentSoftTransparentShadow:()=>Eue});var YL,bY,Eue,IY=I(()=>{k();YL="shadowMapFragmentSoftTransparentShadow",bY=`#if SM_SOFTTRANSPARENTSHADOW==1 +colorDepth+=texture2D(textureSampler,vUV+vec2(x,y)/screenSize);gl_FragColor=(colorDepth/float((OFFSET*2+1)*(OFFSET*2+1)));}`;A.ShadersStore[jL]||(A.ShadersStore[jL]=bY);xue={name:jL,shader:bY}});var CY={};Be(CY,{shadowMapFragmentSoftTransparentShadow:()=>Rue});var qL,yY,Rue,PY=I(()=>{k();qL="shadowMapFragmentSoftTransparentShadow",yY=`#if SM_SOFTTRANSPARENTSHADOW==1 if ((bayerDither8(floor(mod(gl_FragCoord.xy,8.0))))/64.0>=softTransparentShadowSM.x*alpha) discard; #endif -`;A.IncludesShadersStore[YL]||(A.IncludesShadersStore[YL]=bY);Eue={name:YL,shader:bY}});var Pi,ib=I(()=>{ke();Ht();Wi();Uf();Gr();Rf();rc();BL();hi();un();Gf();$A();oh();vl();Xn();Pg();Pi=class n{get bias(){return this._bias}set bias(e){this._bias=e}get normalBias(){return this._normalBias}set normalBias(e){this._normalBias=e}get blurBoxOffset(){return this._blurBoxOffset}set blurBoxOffset(e){this._blurBoxOffset!==e&&(this._blurBoxOffset=e,this._disposeBlurPostProcesses())}get blurScale(){return this._blurScale}set blurScale(e){this._blurScale!==e&&(this._blurScale=e,this._disposeBlurPostProcesses())}get blurKernel(){return this._blurKernel}set blurKernel(e){this._blurKernel!==e&&(this._blurKernel=e,this._disposeBlurPostProcesses())}get useKernelBlur(){return this._useKernelBlur}set useKernelBlur(e){this._useKernelBlur!==e&&(this._useKernelBlur=e,this._disposeBlurPostProcesses())}get depthScale(){return this._depthScale!==void 0?this._depthScale:this._light.getDepthScale()}set depthScale(e){this._depthScale=e}_validateFilter(e){return e}get filter(){return this._filter}set filter(e){if(e=this._validateFilter(e),this._light.needCube()){if(e===n.FILTER_BLUREXPONENTIALSHADOWMAP){this.useExponentialShadowMap=!0;return}else if(e===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP){this.useCloseExponentialShadowMap=!0;return}else if(e===n.FILTER_PCF||e===n.FILTER_PCSS){this.usePoissonSampling=!0;return}}if((e===n.FILTER_PCF||e===n.FILTER_PCSS)&&!this._scene.getEngine()._features.supportShadowSamplers){this.usePoissonSampling=!0;return}this._filter!==e&&(this._filter=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get usePoissonSampling(){return this.filter===n.FILTER_POISSONSAMPLING}set usePoissonSampling(e){let t=this._validateFilter(n.FILTER_POISSONSAMPLING);!e&&this.filter!==n.FILTER_POISSONSAMPLING||(this.filter=e?t:n.FILTER_NONE)}get useExponentialShadowMap(){return this.filter===n.FILTER_EXPONENTIALSHADOWMAP}set useExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_EXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_EXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurExponentialShadowMap(){return this.filter===n.FILTER_BLUREXPONENTIALSHADOWMAP}set useBlurExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLUREXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLUREXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useCloseExponentialShadowMap(){return this.filter===n.FILTER_CLOSEEXPONENTIALSHADOWMAP}set useCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_CLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_CLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurCloseExponentialShadowMap(){return this.filter===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP}set useBlurCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get usePercentageCloserFiltering(){return this.filter===n.FILTER_PCF}set usePercentageCloserFiltering(e){let t=this._validateFilter(n.FILTER_PCF);!e&&this.filter!==n.FILTER_PCF||(this.filter=e?t:n.FILTER_NONE)}get filteringQuality(){return this._filteringQuality}set filteringQuality(e){this._filteringQuality!==e&&(this._filteringQuality=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get useContactHardeningShadow(){return this.filter===n.FILTER_PCSS}set useContactHardeningShadow(e){let t=this._validateFilter(n.FILTER_PCSS);!e&&this.filter!==n.FILTER_PCSS||(this.filter=e?t:n.FILTER_NONE)}get contactHardeningLightSizeUVRatio(){return this._contactHardeningLightSizeUVRatio}set contactHardeningLightSizeUVRatio(e){this._contactHardeningLightSizeUVRatio=e}get darkness(){return this._darkness}set darkness(e){this.setDarkness(e)}getDarkness(){return this._darkness}setDarkness(e){return e>=1?this._darkness=1:e<=0?this._darkness=0:this._darkness=e,this}get transparencyShadow(){return this._transparencyShadow}set transparencyShadow(e){this.setTransparencyShadow(e)}setTransparencyShadow(e){return this._transparencyShadow=e,this}getShadowMap(){return this._shadowMap}getShadowMapForRendering(){return this._shadowMap2?this._shadowMap2:this._shadowMap}getClassName(){return n.CLASSNAME}addShadowCaster(e,t=!0){if(!this._shadowMap)return this;if(this._shadowMap.renderList||(this._shadowMap.renderList=[]),this._shadowMap.renderList.indexOf(e)===-1&&this._shadowMap.renderList.push(e),t)for(let i of e.getChildMeshes())this._shadowMap.renderList.indexOf(i)===-1&&this._shadowMap.renderList.push(i);return this}removeShadowCaster(e,t=!0){if(!this._shadowMap||!this._shadowMap.renderList)return this;let i=this._shadowMap.renderList.indexOf(e);if(i!==-1&&this._shadowMap.renderList.splice(i,1),t)for(let r of e.getChildren())this.removeShadowCaster(r);return this}getLight(){return this._light}get shaderLanguage(){return this._shaderLanguage}_getCamera(){var e;return(e=this._camera)!=null?e:this._scene.activeCamera}get mapSize(){return this._mapSize}set mapSize(e){this._mapSize=e,this._light._markMeshesAsLightDirty(),this.recreateShadowMap()}get light(){return this._light}set light(e){this._light!==e&&(this.dispose(!1),this._light=e,this._createInstance())}get useFloat32TextureType(){return this._usefullFloatFirst}set useFloat32TextureType(e){this._usefullFloatFirst!==e&&(this.dispose(!1),this._usefullFloatFirst=e,this._createInstance())}get camera(){return this._camera}set camera(e){this._camera!==e&&(this.dispose(!1),this._camera=e,this._createInstance())}get useRedTextureFormat(){return this._useRedTextureType}set useRedTextureFormat(e){this._useRedTextureType!==e&&(this.dispose(!1),this._useRedTextureType=e,this._createInstance())}constructor(e,t,i,r,s,a=!1){this.onBeforeShadowMapRenderObservable=new ie,this.onAfterShadowMapRenderObservable=new ie,this.onBeforeShadowMapRenderMeshObservable=new ie,this.onAfterShadowMapRenderMeshObservable=new ie,this.doNotSerialize=!1,this._bias=5e-5,this._normalBias=0,this._blurBoxOffset=1,this._blurScale=2,this._blurKernel=1,this._useKernelBlur=!1,this._filter=n.FILTER_NONE,this._filteringQuality=n.QUALITY_HIGH,this._contactHardeningLightSizeUVRatio=.1,this._darkness=0,this._transparencyShadow=!1,this.enableSoftTransparentShadow=!1,this.useOpacityTextureForTransparentShadow=!1,this.frustumEdgeFalloff=0,this._shaderLanguage=0,this.forceBackFacesOnly=!1,this._lightDirection=b.Zero(),this._viewMatrix=q.Zero(),this._projectionMatrix=q.Zero(),this._transformMatrix=q.Zero(),this._cachedPosition=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cachedDirection=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._currentFaceIndex=0,this._currentFaceIndexCache=0,this._defaultTextureMatrix=q.Identity(),this._shadersLoaded=!1,this._mapSize=e,this._light=t,this._usefullFloatFirst=!!i,this._scene=t.getScene(),this._camera=r!=null?r:null,this._useRedTextureType=!!s,this._forceGLSL=a,this._createInstance()}_createInstance(){this._initShaderSourceAsync(this._forceGLSL);let e=this._light._shadowGenerators;e||(e=this._light._shadowGenerators=new Map),e.set(this._camera,this),this.id=this._light.id,this._useUBO=this._scene.getEngine().supportsUniformBuffers,this._useUBO&&(this._sceneUBOs=[this._scene.createSceneUniformBuffer(`Scene for Shadow Generator (light "${this._light.name}")`,{forceMono:!0})]),n._SceneComponentInitialization(this._scene);let t=this._scene.getEngine().getCaps();this._usefullFloatFirst?t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:this._textureType=0:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:this._textureType=0,this._initializeGenerator(),this._applyFilterValues()}_initializeGenerator(){this._light._markMeshesAsLightDirty(),this._initializeShadowMap()}_createTargetRenderTexture(){var t;let e=this._scene.getEngine();(t=this._shadowMap)==null||t.dispose(),e._features.supportDepthStencilTexture?(this._shadowMap=new kr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube(),void 0,!1,!1,void 0,this._useRedTextureType?6:5),this._shadowMap.createDepthStencilTexture(e.useReverseDepthBuffer?516:513,!0,void 0,void 0,void 0,`DepthStencilForShadowGenerator-${this._light.name}`)):this._shadowMap=new kr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube()),this._shadowMap.noPrePassRenderer=!0}_initializeShadowMap(){if(this._createTargetRenderTexture(),this._shadowMap===null)return;this._shadowMap.wrapU=ge.CLAMP_ADDRESSMODE,this._shadowMap.wrapV=ge.CLAMP_ADDRESSMODE,this._shadowMap.anisotropicFilteringLevel=1,this._shadowMap.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE),this._shadowMap.renderParticles=!1,this._shadowMap.ignoreCameraViewport=!0,this._storedUniqueId&&(this._shadowMap.uniqueId=this._storedUniqueId),this._shadowMap.customRenderFunction=(r,s,a,o)=>this._renderForShadowMap(r,s,a,o),this._shadowMap.customIsReadyFunction=(r,s,a)=>{if(!a||!r.subMeshes)return!0;let o=!0;for(let l of r.subMeshes){let c=l.getRenderingMesh(),d=this._scene.getEngine(),h=l.getMaterial();if(!h||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let u=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(u.mustReturn)continue;let m=d.getCaps().instancedArrays&&(u.visibleInstances[l._id]!==null&&u.visibleInstances[l._id]!==void 0||c.hasThinInstances),_=h.needAlphaBlendingForMesh(c);o=this.isReady(l,m,_)&&o}return o};let e=this._scene.getEngine();this._shadowMap.onBeforeBindObservable.add(()=>{var r;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((r=e._debugPushGroup)==null||r.call(e,`Shadow map generation for pass id ${e.currentRenderPassId}`))}),this._shadowMap.onBeforeRenderObservable.add(r=>{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[0]),this._currentFaceIndex=r,this._filter===n.FILTER_PCF&&e.setColorWrite(!1),this.getTransformMatrix(),Oa.eyeAtCamera=!1,this._scene.setTransformMatrix(this._viewMatrix,this._projectionMatrix),this._sceneUBOs&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onAfterUnbindObservable.add(()=>{var s,a;if(this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._currentSceneUBO),Oa.eyeAtCamera=!0,this._scene.updateTransformMatrix(),this._filter===n.FILTER_PCF&&e.setColorWrite(!0),!this.useBlurExponentialShadowMap&&!this.useBlurCloseExponentialShadowMap){(s=e._debugPopGroup)==null||s.call(e);return}let r=this.getShadowMapForRendering();r&&(this._scene.postProcessManager.directRender(this._blurPostProcesses,r.renderTarget,!0),e.unBindFramebuffer(r.renderTarget,!0)),e._enableGPUDebugMarkers&&((a=e._debugPopGroup)==null||a.call(e))});let t=new lt(0,0,0,0),i=new lt(1,1,1,1);this._shadowMap.onClearObservable.add(r=>{this._filter===n.FILTER_PCF?r.clear(i,!1,!0,!1):this.useExponentialShadowMap||this.useBlurExponentialShadowMap?r.clear(t,!0,!0,!1):r.clear(i,!0,!0,!1)}),this._shadowMap.onResizeObservable.add(r=>{this._storedUniqueId=this._shadowMap.uniqueId,this._mapSize=r.getRenderSize(),this._light._markMeshesAsLightDirty(),this.recreateShadowMap()});for(let r=ya.MIN_RENDERINGGROUPS;r(w5(),N5)),Promise.resolve().then(()=>(z5(),H5)),Promise.resolve().then(()=>(K5(),Y5)),Promise.resolve().then(()=>(Z5(),q5))])):await Promise.all([Promise.resolve().then(()=>(sY(),nY)),Promise.resolve().then(()=>(TY(),SY)),Promise.resolve().then(()=>(RY(),xY)),Promise.resolve().then(()=>(IY(),MY))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new kr(this._light.name+"_shadowMap2",t,this._scene,!1,!0,this._textureType,void 0,void 0,!1),this._shadowMap2.wrapU=ge.CLAMP_ADDRESSMODE,this._shadowMap2.wrapV=ge.CLAMP_ADDRESSMODE,this._shadowMap2.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE)),this.useKernelBlur?(this._kernelBlurXPostprocess=new Wa(this._light.name+"KernelBlurX",new Fe(1,0),this.blurKernel,1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.width=t,this._kernelBlurXPostprocess.height=t,this._kernelBlurXPostprocess.externalTextureSamplerBinding=!0,this._kernelBlurXPostprocess.onApplyObservable.add(i=>{i.setTexture("textureSampler",this._shadowMap)}),this._kernelBlurYPostprocess=new Wa(this._light.name+"KernelBlurY",new Fe(0,1),this.blurKernel,1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.autoClear=!1,this._kernelBlurYPostprocess.autoClear=!1,this._textureType===0&&(this._kernelBlurXPostprocess.packedFloat=!0,this._kernelBlurYPostprocess.packedFloat=!0),this._blurPostProcesses=[this._kernelBlurXPostprocess,this._kernelBlurYPostprocess]):(this._boxBlurPostprocess=new Ri(this._light.name+"DepthBoxBlur","depthBoxBlur",["screenSize","boxOffset"],[],1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,"#define OFFSET "+this._blurBoxOffset,this._textureType,void 0,void 0,void 0,void 0,this._shaderLanguage),this._boxBlurPostprocess.externalTextureSamplerBinding=!0,this._boxBlurPostprocess.onApplyObservable.add(i=>{i.setFloat2("screenSize",t,t),i.setTexture("textureSampler",this._shadowMap)}),this._boxBlurPostprocess.autoClear=!1,this._blurPostProcesses=[this._boxBlurPostprocess])}_renderForShadowMap(e,t,i,r){let s;if(r.length)for(s=0;s{r!==i&&!E?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(T)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(E?T:S))}),this.forceBackFacesOnly&&a.setState(!0,0,!1,!1,o.cullBackFaces),this.onAfterShadowMapRenderObservable.notifyObservers(v),this.onAfterShadowMapRenderMeshObservable.notifyObservers(i)}else this._shadowMap&&this._shadowMap.resetRefreshCounter()}_applyFilterValues(){this._shadowMap&&(this.filter===n.FILTER_NONE||this.filter===n.FILTER_PCSS?this._shadowMap.updateSamplingMode(ge.NEAREST_SAMPLINGMODE):this._shadowMap.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE))}forceCompilation(e,t){let i={useInstances:!1,...t},r=this.getShadowMap();if(!r){e&&e(this);return}let s=r.renderList;if(!s){e&&e(this);return}let a=[];for(let c of s)a.push(...c.subMeshes);if(a.length===0){e&&e(this);return}let o=0,l=()=>{var c,f;if(!(!this._scene||!this._scene.getEngine())){for(;this.isReady(a[o],i.useInstances,(f=(c=a[o].getMaterial())==null?void 0:c.needAlphaBlendingForMesh(a[o].getMesh()))!=null?f:!1);)if(o++,o>=a.length){e&&e(this);return}setTimeout(l,16)}};l()}async forceCompilationAsync(e){return await new Promise(t=>{this.forceCompilation(()=>{t()},e)})}_isReadyCustomDefines(e,t,i){}_prepareShadowDefines(e,t,i,r){i.push("#define SM_LIGHTTYPE_"+this._light.getClassName().toUpperCase()),i.push("#define SM_FLOAT "+(this._textureType!==0?"1":"0")),i.push("#define SM_ESM "+(this.useExponentialShadowMap||this.useBlurExponentialShadowMap?"1":"0")),i.push("#define SM_DEPTHTEXTURE "+(this.usePercentageCloserFiltering||this.useContactHardeningShadow?"1":"0"));let s=e.getMesh();return i.push("#define SM_NORMALBIAS "+(this.normalBias&&s.isVerticesDataPresent(D.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===zt.LIGHTTYPEID_DIRECTIONALLIGHT?"1":"0")),i.push("#define SM_USEDISTANCE "+(this._light.needCube()?"1":"0")),i.push("#define SM_SOFTTRANSPARENTSHADOW "+(this.enableSoftTransparentShadow&&r?"1":"0")),this._isReadyCustomDefines(i,e,t),i}isReady(e,t,i){var o;if(!this._shadersLoaded)return!1;let r=e.getMaterial(),s=r==null?void 0:r.shadowDepthWrapper;if(this._opacityTexture=null,!r)return!1;let a=[];if(this._prepareShadowDefines(e,t,a,i),s){if(!s.isReadyForSubMesh(e,a,this,t,this._scene.getEngine().currentRenderPassId))return!1}else{let l=e._getDrawWrapper(void 0,!0),c=l.effect,f=l.defines,d=[D.PositionKind],h=e.getMesh(),u=!1,m=!1,_=!1,p=!1;this.normalBias&&h.isVerticesDataPresent(D.NormalKind)&&(d.push(D.NormalKind),a.push("#define NORMAL"),u=!0,h.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let g=r.needAlphaTestingForMesh(h);if((g||r.needAlphaBlendingForMesh(h))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let T=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),g&&a.push(`#define ALPHATESTVALUE ${T}${T%1===0?".":""}`),h.isVerticesDataPresent(D.UVKind)&&(d.push(D.UVKind),a.push("#define UV1"),m=!0),h.isVerticesDataPresent(D.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(D.UV2Kind),a.push("#define UV2"),_=!0)}let v=new qn;if(h.useBones&&h.computeBonesUsingShaders&&h.skeleton){d.push(D.MatricesIndicesKind),d.push(D.MatricesWeightsKind),h.numBoneInfluencers>4&&(d.push(D.MatricesIndicesExtraKind),d.push(D.MatricesWeightsExtraKind));let T=h.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+h.numBoneInfluencers),h.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,h),T.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(T.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let x=h.morphTargetManager?El(h.morphTargetManager,a,d,h,!0,u,!1,m,_,p):0;if(gl(r,this._scene,a),t&&(a.push("#define INSTANCES"),yo(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let T of this.customShaderOptions.defines)a.indexOf(T)===-1&&a.push(T);let S=h.bakedVertexAnimationManager;S&&S.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let E=a.join(` -`);if(f!==E){f=E;let T="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],y=["Scene","Mesh"];if(Wn(R),this.customShaderOptions){if(T=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let L of this.customShaderOptions.attributes)d.indexOf(L)===-1&&d.push(L);if(this.customShaderOptions.uniforms)for(let L of this.customShaderOptions.uniforms)R.indexOf(L)===-1&&R.push(L);if(this.customShaderOptions.samplers)for(let L of this.customShaderOptions.samplers)M.indexOf(L)===-1&&M.push(L)}let C=this._scene.getEngine();c=C.createEffect(T,{attributes:d,uniformsNames:R,uniformBuffersNames:y,samplers:M,defines:E,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:x},shaderLanguage:this._shaderLanguage},C),l.setEffect(c,f)}if(!c.isReady())return!1}return(this.useBlurExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(!this._blurPostProcesses||!this._blurPostProcesses.length)&&this._initializeBlurRTTAndPostProcesses(),!(this._kernelBlurXPostprocess&&!this._kernelBlurXPostprocess.isReady()||this._kernelBlurYPostprocess&&!this._kernelBlurYPostprocess.isReady()||this._boxBlurPostprocess&&!this._boxBlurPostprocess.isReady())}prepareDefines(e,t){let i=this._scene,r=this._light;!i.shadowsEnabled||!r.shadowEnabled||(e["SHADOW"+t]=!0,this.useContactHardeningShadow?(e["SHADOWPCSS"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePercentageCloserFiltering?(e["SHADOWPCF"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePoissonSampling?e["SHADOWPOISSON"+t]=!0:this.useExponentialShadowMap||this.useBlurExponentialShadowMap?e["SHADOWESM"+t]=!0:(this.useCloseExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(e["SHADOWCLOSEESM"+t]=!0),r.needCube()&&(e["SHADOWCUBE"+t]=!0))}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera(),a=this.getShadowMap();if(!a)return;if(!i.needCube()){let l=r.floatingOriginOffset,c=this.getTransformMatrix(),f=r.floatingOriginMode?tP(l,this._viewMatrix,this._projectionMatrix,$.Matrix[0]):c;t.setMatrix("lightMatrix"+e,f)}let o=this.getShadowMapForRendering();this._filter===n.FILTER_PCF?(t.setDepthStencilTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),a.getSize().width,1/a.getSize().width,this.frustumEdgeFalloff,e)):this._filter===n.FILTER_PCSS?(t.setDepthStencilTexture("shadowTexture"+e,o),t.setTexture("depthTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),1/a.getSize().width,this._contactHardeningLightSizeUVRatio*a.getSize().width,this.frustumEdgeFalloff,e)):(t.setTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),this.blurScale/a.getSize().width,this.depthScale,this.frustumEdgeFalloff,e)),i._uniformBuffer.updateFloat2("depthValues",this.getLight().getDepthMinZ(s),this.getLight().getDepthMinZ(s)+this.getLight().getDepthMaxZ(s),e)}get viewMatrix(){return this._viewMatrix}get projectionMatrix(){return this._projectionMatrix}getTransformMatrix(){let e=this._scene;if(this._currentRenderId===e.getRenderId()&&this._currentFaceIndexCache===this._currentFaceIndex)return this._transformMatrix;this._currentRenderId=e.getRenderId(),this._currentFaceIndexCache=this._currentFaceIndex;let t=this._light.position;if(this._light.computeTransformedInformation()&&(t=this._light.transformedPosition),b.NormalizeToRef(this._light.getShadowDirection(this._currentFaceIndex),this._lightDirection),Math.abs(b.Dot(this._lightDirection,b.Up()))===1&&(this._lightDirection.z=1e-13),this._light.needProjectionMatrixCompute()||!this._cachedPosition||!this._cachedDirection||!t.equals(this._cachedPosition)||!this._lightDirection.equals(this._cachedDirection)){this._cachedPosition.copyFrom(t),this._cachedDirection.copyFrom(this._lightDirection),q.LookAtLHToRef(t,t.add(this._lightDirection),b.Up(),this._viewMatrix);let i=this.getShadowMap();if(i){let r=i.renderList;r&&this._light.setShadowProjectionMatrix(this._projectionMatrix,this._viewMatrix,r)}this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix)}return this._transformMatrix}recreateShadowMap(){let e=this._shadowMap;if(!e)return;let t=e.renderList;if(this._disposeRTTandPostProcesses(),this._initializeGenerator(),this.filter=this._filter,this._applyFilterValues(),t){this._shadowMap.renderList||(this._shadowMap.renderList=[]);for(let i of t)this._shadowMap.renderList.push(i)}else this._shadowMap.renderList=null}_disposeBlurPostProcesses(){this._shadowMap2&&(this._shadowMap2.dispose(),this._shadowMap2=null),this._boxBlurPostprocess&&(this._boxBlurPostprocess.dispose(),this._boxBlurPostprocess=null),this._kernelBlurXPostprocess&&(this._kernelBlurXPostprocess.dispose(),this._kernelBlurXPostprocess=null),this._kernelBlurYPostprocess&&(this._kernelBlurYPostprocess.dispose(),this._kernelBlurYPostprocess=null),this._blurPostProcesses=[]}_disposeRTTandPostProcesses(){this._shadowMap&&(this._shadowMap.dispose(),this._shadowMap=null),this._disposeBlurPostProcesses()}_disposeSceneUBOs(){if(this._sceneUBOs){for(let e of this._sceneUBOs)e.dispose();this._sceneUBOs=[]}}dispose(e=!0){if(this._disposeRTTandPostProcesses(),this._disposeSceneUBOs(),this._light){if(this._light._shadowGenerators){let t=this._light._shadowGenerators.entries();for(let i=t.next();i.done!==!0;i=t.next()){let[r,s]=i.value;s===this&&this._light._shadowGenerators.delete(r)}this._light._shadowGenerators.size===0&&(this._light._shadowGenerators=null)}this._light._markMeshesAsLightDirty()}e&&(this.onBeforeShadowMapRenderMeshObservable.clear(),this.onBeforeShadowMapRenderObservable.clear(),this.onAfterShadowMapRenderMeshObservable.clear(),this.onAfterShadowMapRenderObservable.clear())}serialize(){var i;let e={},t=this.getShadowMap();if(!t)return e;if(e.className=this.getClassName(),e.lightId=this._light.id,e.cameraId=(i=this._camera)==null?void 0:i.id,e.id=this.id,e.mapSize=t.getRenderSize(),e.forceBackFacesOnly=this.forceBackFacesOnly,e.darkness=this.getDarkness(),e.transparencyShadow=this._transparencyShadow,e.frustumEdgeFalloff=this.frustumEdgeFalloff,e.bias=this.bias,e.normalBias=this.normalBias,e.usePercentageCloserFiltering=this.usePercentageCloserFiltering,e.useContactHardeningShadow=this.useContactHardeningShadow,e.contactHardeningLightSizeUVRatio=this.contactHardeningLightSizeUVRatio,e.filteringQuality=this.filteringQuality,e.useExponentialShadowMap=this.useExponentialShadowMap,e.useBlurExponentialShadowMap=this.useBlurExponentialShadowMap,e.useCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.useBlurCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.usePoissonSampling=this.usePoissonSampling,e.depthScale=this.depthScale,e.blurBoxOffset=this.blurBoxOffset,e.blurKernel=this.blurKernel,e.blurScale=this.blurScale,e.useKernelBlur=this.useKernelBlur,e.renderList=[],t.renderList)for(let r=0;r{throw Qe("ShadowGeneratorSceneComponent")}});var CY={};Be(CY,{depthPixelShader:()=>Sue});var KL,yY,Sue,jL=I(()=>{k();Cc();tb();Pc();KL="depthPixelShader",yY=`#ifdef ALPHATEST +`;A.IncludesShadersStore[qL]||(A.IncludesShadersStore[qL]=yY);Rue={name:qL,shader:yY}});var Pi,nb=I(()=>{ke();Ht();Wi();Uf();Gr();Rf();rc();GL();hi();un();Gf();ex();oh();vl();Xn();Pg();Pi=class n{get bias(){return this._bias}set bias(e){this._bias=e}get normalBias(){return this._normalBias}set normalBias(e){this._normalBias=e}get blurBoxOffset(){return this._blurBoxOffset}set blurBoxOffset(e){this._blurBoxOffset!==e&&(this._blurBoxOffset=e,this._disposeBlurPostProcesses())}get blurScale(){return this._blurScale}set blurScale(e){this._blurScale!==e&&(this._blurScale=e,this._disposeBlurPostProcesses())}get blurKernel(){return this._blurKernel}set blurKernel(e){this._blurKernel!==e&&(this._blurKernel=e,this._disposeBlurPostProcesses())}get useKernelBlur(){return this._useKernelBlur}set useKernelBlur(e){this._useKernelBlur!==e&&(this._useKernelBlur=e,this._disposeBlurPostProcesses())}get depthScale(){return this._depthScale!==void 0?this._depthScale:this._light.getDepthScale()}set depthScale(e){this._depthScale=e}_validateFilter(e){return e}get filter(){return this._filter}set filter(e){if(e=this._validateFilter(e),this._light.needCube()){if(e===n.FILTER_BLUREXPONENTIALSHADOWMAP){this.useExponentialShadowMap=!0;return}else if(e===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP){this.useCloseExponentialShadowMap=!0;return}else if(e===n.FILTER_PCF||e===n.FILTER_PCSS){this.usePoissonSampling=!0;return}}if((e===n.FILTER_PCF||e===n.FILTER_PCSS)&&!this._scene.getEngine()._features.supportShadowSamplers){this.usePoissonSampling=!0;return}this._filter!==e&&(this._filter=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get usePoissonSampling(){return this.filter===n.FILTER_POISSONSAMPLING}set usePoissonSampling(e){let t=this._validateFilter(n.FILTER_POISSONSAMPLING);!e&&this.filter!==n.FILTER_POISSONSAMPLING||(this.filter=e?t:n.FILTER_NONE)}get useExponentialShadowMap(){return this.filter===n.FILTER_EXPONENTIALSHADOWMAP}set useExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_EXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_EXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurExponentialShadowMap(){return this.filter===n.FILTER_BLUREXPONENTIALSHADOWMAP}set useBlurExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLUREXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLUREXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useCloseExponentialShadowMap(){return this.filter===n.FILTER_CLOSEEXPONENTIALSHADOWMAP}set useCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_CLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_CLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurCloseExponentialShadowMap(){return this.filter===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP}set useBlurCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get usePercentageCloserFiltering(){return this.filter===n.FILTER_PCF}set usePercentageCloserFiltering(e){let t=this._validateFilter(n.FILTER_PCF);!e&&this.filter!==n.FILTER_PCF||(this.filter=e?t:n.FILTER_NONE)}get filteringQuality(){return this._filteringQuality}set filteringQuality(e){this._filteringQuality!==e&&(this._filteringQuality=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get useContactHardeningShadow(){return this.filter===n.FILTER_PCSS}set useContactHardeningShadow(e){let t=this._validateFilter(n.FILTER_PCSS);!e&&this.filter!==n.FILTER_PCSS||(this.filter=e?t:n.FILTER_NONE)}get contactHardeningLightSizeUVRatio(){return this._contactHardeningLightSizeUVRatio}set contactHardeningLightSizeUVRatio(e){this._contactHardeningLightSizeUVRatio=e}get darkness(){return this._darkness}set darkness(e){this.setDarkness(e)}getDarkness(){return this._darkness}setDarkness(e){return e>=1?this._darkness=1:e<=0?this._darkness=0:this._darkness=e,this}get transparencyShadow(){return this._transparencyShadow}set transparencyShadow(e){this.setTransparencyShadow(e)}setTransparencyShadow(e){return this._transparencyShadow=e,this}getShadowMap(){return this._shadowMap}getShadowMapForRendering(){return this._shadowMap2?this._shadowMap2:this._shadowMap}getClassName(){return n.CLASSNAME}addShadowCaster(e,t=!0){if(!this._shadowMap)return this;if(this._shadowMap.renderList||(this._shadowMap.renderList=[]),this._shadowMap.renderList.indexOf(e)===-1&&this._shadowMap.renderList.push(e),t)for(let i of e.getChildMeshes())this._shadowMap.renderList.indexOf(i)===-1&&this._shadowMap.renderList.push(i);return this}removeShadowCaster(e,t=!0){if(!this._shadowMap||!this._shadowMap.renderList)return this;let i=this._shadowMap.renderList.indexOf(e);if(i!==-1&&this._shadowMap.renderList.splice(i,1),t)for(let r of e.getChildren())this.removeShadowCaster(r);return this}getLight(){return this._light}get shaderLanguage(){return this._shaderLanguage}_getCamera(){var e;return(e=this._camera)!=null?e:this._scene.activeCamera}get mapSize(){return this._mapSize}set mapSize(e){this._mapSize=e,this._light._markMeshesAsLightDirty(),this.recreateShadowMap()}get light(){return this._light}set light(e){this._light!==e&&(this.dispose(!1),this._light=e,this._createInstance())}get useFloat32TextureType(){return this._usefullFloatFirst}set useFloat32TextureType(e){this._usefullFloatFirst!==e&&(this.dispose(!1),this._usefullFloatFirst=e,this._createInstance())}get camera(){return this._camera}set camera(e){this._camera!==e&&(this.dispose(!1),this._camera=e,this._createInstance())}get useRedTextureFormat(){return this._useRedTextureType}set useRedTextureFormat(e){this._useRedTextureType!==e&&(this.dispose(!1),this._useRedTextureType=e,this._createInstance())}constructor(e,t,i,r,s,a=!1){this.onBeforeShadowMapRenderObservable=new ie,this.onAfterShadowMapRenderObservable=new ie,this.onBeforeShadowMapRenderMeshObservable=new ie,this.onAfterShadowMapRenderMeshObservable=new ie,this.doNotSerialize=!1,this._bias=5e-5,this._normalBias=0,this._blurBoxOffset=1,this._blurScale=2,this._blurKernel=1,this._useKernelBlur=!1,this._filter=n.FILTER_NONE,this._filteringQuality=n.QUALITY_HIGH,this._contactHardeningLightSizeUVRatio=.1,this._darkness=0,this._transparencyShadow=!1,this.enableSoftTransparentShadow=!1,this.useOpacityTextureForTransparentShadow=!1,this.frustumEdgeFalloff=0,this._shaderLanguage=0,this.forceBackFacesOnly=!1,this._lightDirection=b.Zero(),this._viewMatrix=q.Zero(),this._projectionMatrix=q.Zero(),this._transformMatrix=q.Zero(),this._cachedPosition=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cachedDirection=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._currentFaceIndex=0,this._currentFaceIndexCache=0,this._defaultTextureMatrix=q.Identity(),this._shadersLoaded=!1,this._mapSize=e,this._light=t,this._usefullFloatFirst=!!i,this._scene=t.getScene(),this._camera=r!=null?r:null,this._useRedTextureType=!!s,this._forceGLSL=a,this._createInstance()}_createInstance(){this._initShaderSourceAsync(this._forceGLSL);let e=this._light._shadowGenerators;e||(e=this._light._shadowGenerators=new Map),e.set(this._camera,this),this.id=this._light.id,this._useUBO=this._scene.getEngine().supportsUniformBuffers,this._useUBO&&(this._sceneUBOs=[this._scene.createSceneUniformBuffer(`Scene for Shadow Generator (light "${this._light.name}")`,{forceMono:!0})]),n._SceneComponentInitialization(this._scene);let t=this._scene.getEngine().getCaps();this._usefullFloatFirst?t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:this._textureType=0:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:this._textureType=0,this._initializeGenerator(),this._applyFilterValues()}_initializeGenerator(){this._light._markMeshesAsLightDirty(),this._initializeShadowMap()}_createTargetRenderTexture(){var t;let e=this._scene.getEngine();(t=this._shadowMap)==null||t.dispose(),e._features.supportDepthStencilTexture?(this._shadowMap=new kr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube(),void 0,!1,!1,void 0,this._useRedTextureType?6:5),this._shadowMap.createDepthStencilTexture(e.useReverseDepthBuffer?516:513,!0,void 0,void 0,void 0,`DepthStencilForShadowGenerator-${this._light.name}`)):this._shadowMap=new kr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube()),this._shadowMap.noPrePassRenderer=!0}_initializeShadowMap(){if(this._createTargetRenderTexture(),this._shadowMap===null)return;this._shadowMap.wrapU=ge.CLAMP_ADDRESSMODE,this._shadowMap.wrapV=ge.CLAMP_ADDRESSMODE,this._shadowMap.anisotropicFilteringLevel=1,this._shadowMap.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE),this._shadowMap.renderParticles=!1,this._shadowMap.ignoreCameraViewport=!0,this._storedUniqueId&&(this._shadowMap.uniqueId=this._storedUniqueId),this._shadowMap.customRenderFunction=(r,s,a,o)=>this._renderForShadowMap(r,s,a,o),this._shadowMap.customIsReadyFunction=(r,s,a)=>{if(!a||!r.subMeshes)return!0;let o=!0;for(let l of r.subMeshes){let c=l.getRenderingMesh(),d=this._scene.getEngine(),h=l.getMaterial();if(!h||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let u=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(u.mustReturn)continue;let m=d.getCaps().instancedArrays&&(u.visibleInstances[l._id]!==null&&u.visibleInstances[l._id]!==void 0||c.hasThinInstances),_=h.needAlphaBlendingForMesh(c);o=this.isReady(l,m,_)&&o}return o};let e=this._scene.getEngine();this._shadowMap.onBeforeBindObservable.add(()=>{var r;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((r=e._debugPushGroup)==null||r.call(e,`Shadow map generation for pass id ${e.currentRenderPassId}`))}),this._shadowMap.onBeforeRenderObservable.add(r=>{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[0]),this._currentFaceIndex=r,this._filter===n.FILTER_PCF&&e.setColorWrite(!1),this.getTransformMatrix(),Oa.eyeAtCamera=!1,this._scene.setTransformMatrix(this._viewMatrix,this._projectionMatrix),this._sceneUBOs&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onAfterUnbindObservable.add(()=>{var s,a;if(this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._currentSceneUBO),Oa.eyeAtCamera=!0,this._scene.updateTransformMatrix(),this._filter===n.FILTER_PCF&&e.setColorWrite(!0),!this.useBlurExponentialShadowMap&&!this.useBlurCloseExponentialShadowMap){(s=e._debugPopGroup)==null||s.call(e);return}let r=this.getShadowMapForRendering();r&&(this._scene.postProcessManager.directRender(this._blurPostProcesses,r.renderTarget,!0),e.unBindFramebuffer(r.renderTarget,!0)),e._enableGPUDebugMarkers&&((a=e._debugPopGroup)==null||a.call(e))});let t=new lt(0,0,0,0),i=new lt(1,1,1,1);this._shadowMap.onClearObservable.add(r=>{this._filter===n.FILTER_PCF?r.clear(i,!1,!0,!1):this.useExponentialShadowMap||this.useBlurExponentialShadowMap?r.clear(t,!0,!0,!1):r.clear(i,!0,!0,!1)}),this._shadowMap.onResizeObservable.add(r=>{this._storedUniqueId=this._shadowMap.uniqueId,this._mapSize=r.getRenderSize(),this._light._markMeshesAsLightDirty(),this.recreateShadowMap()});for(let r=ya.MIN_RENDERINGGROUPS;r(U5(),B5)),Promise.resolve().then(()=>(K5(),Y5)),Promise.resolve().then(()=>(Z5(),q5)),Promise.resolve().then(()=>(J5(),$5))])):await Promise.all([Promise.resolve().then(()=>(lY(),oY)),Promise.resolve().then(()=>(RY(),xY)),Promise.resolve().then(()=>(IY(),MY)),Promise.resolve().then(()=>(PY(),CY))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new kr(this._light.name+"_shadowMap2",t,this._scene,!1,!0,this._textureType,void 0,void 0,!1),this._shadowMap2.wrapU=ge.CLAMP_ADDRESSMODE,this._shadowMap2.wrapV=ge.CLAMP_ADDRESSMODE,this._shadowMap2.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE)),this.useKernelBlur?(this._kernelBlurXPostprocess=new Wa(this._light.name+"KernelBlurX",new Fe(1,0),this.blurKernel,1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.width=t,this._kernelBlurXPostprocess.height=t,this._kernelBlurXPostprocess.externalTextureSamplerBinding=!0,this._kernelBlurXPostprocess.onApplyObservable.add(i=>{i.setTexture("textureSampler",this._shadowMap)}),this._kernelBlurYPostprocess=new Wa(this._light.name+"KernelBlurY",new Fe(0,1),this.blurKernel,1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.autoClear=!1,this._kernelBlurYPostprocess.autoClear=!1,this._textureType===0&&(this._kernelBlurXPostprocess.packedFloat=!0,this._kernelBlurYPostprocess.packedFloat=!0),this._blurPostProcesses=[this._kernelBlurXPostprocess,this._kernelBlurYPostprocess]):(this._boxBlurPostprocess=new Ri(this._light.name+"DepthBoxBlur","depthBoxBlur",["screenSize","boxOffset"],[],1,null,ge.BILINEAR_SAMPLINGMODE,e,!1,"#define OFFSET "+this._blurBoxOffset,this._textureType,void 0,void 0,void 0,void 0,this._shaderLanguage),this._boxBlurPostprocess.externalTextureSamplerBinding=!0,this._boxBlurPostprocess.onApplyObservable.add(i=>{i.setFloat2("screenSize",t,t),i.setTexture("textureSampler",this._shadowMap)}),this._boxBlurPostprocess.autoClear=!1,this._blurPostProcesses=[this._boxBlurPostprocess])}_renderForShadowMap(e,t,i,r){let s;if(r.length)for(s=0;s{r!==i&&!E?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(T)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(E?T:S))}),this.forceBackFacesOnly&&a.setState(!0,0,!1,!1,o.cullBackFaces),this.onAfterShadowMapRenderObservable.notifyObservers(v),this.onAfterShadowMapRenderMeshObservable.notifyObservers(i)}else this._shadowMap&&this._shadowMap.resetRefreshCounter()}_applyFilterValues(){this._shadowMap&&(this.filter===n.FILTER_NONE||this.filter===n.FILTER_PCSS?this._shadowMap.updateSamplingMode(ge.NEAREST_SAMPLINGMODE):this._shadowMap.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE))}forceCompilation(e,t){let i={useInstances:!1,...t},r=this.getShadowMap();if(!r){e&&e(this);return}let s=r.renderList;if(!s){e&&e(this);return}let a=[];for(let c of s)a.push(...c.subMeshes);if(a.length===0){e&&e(this);return}let o=0,l=()=>{var c,f;if(!(!this._scene||!this._scene.getEngine())){for(;this.isReady(a[o],i.useInstances,(f=(c=a[o].getMaterial())==null?void 0:c.needAlphaBlendingForMesh(a[o].getMesh()))!=null?f:!1);)if(o++,o>=a.length){e&&e(this);return}setTimeout(l,16)}};l()}async forceCompilationAsync(e){return await new Promise(t=>{this.forceCompilation(()=>{t()},e)})}_isReadyCustomDefines(e,t,i){}_prepareShadowDefines(e,t,i,r){i.push("#define SM_LIGHTTYPE_"+this._light.getClassName().toUpperCase()),i.push("#define SM_FLOAT "+(this._textureType!==0?"1":"0")),i.push("#define SM_ESM "+(this.useExponentialShadowMap||this.useBlurExponentialShadowMap?"1":"0")),i.push("#define SM_DEPTHTEXTURE "+(this.usePercentageCloserFiltering||this.useContactHardeningShadow?"1":"0"));let s=e.getMesh();return i.push("#define SM_NORMALBIAS "+(this.normalBias&&s.isVerticesDataPresent(D.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===zt.LIGHTTYPEID_DIRECTIONALLIGHT?"1":"0")),i.push("#define SM_USEDISTANCE "+(this._light.needCube()?"1":"0")),i.push("#define SM_SOFTTRANSPARENTSHADOW "+(this.enableSoftTransparentShadow&&r?"1":"0")),this._isReadyCustomDefines(i,e,t),i}isReady(e,t,i){var o;if(!this._shadersLoaded)return!1;let r=e.getMaterial(),s=r==null?void 0:r.shadowDepthWrapper;if(this._opacityTexture=null,!r)return!1;let a=[];if(this._prepareShadowDefines(e,t,a,i),s){if(!s.isReadyForSubMesh(e,a,this,t,this._scene.getEngine().currentRenderPassId))return!1}else{let l=e._getDrawWrapper(void 0,!0),c=l.effect,f=l.defines,d=[D.PositionKind],h=e.getMesh(),u=!1,m=!1,_=!1,p=!1;this.normalBias&&h.isVerticesDataPresent(D.NormalKind)&&(d.push(D.NormalKind),a.push("#define NORMAL"),u=!0,h.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let g=r.needAlphaTestingForMesh(h);if((g||r.needAlphaBlendingForMesh(h))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let T=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),g&&a.push(`#define ALPHATESTVALUE ${T}${T%1===0?".":""}`),h.isVerticesDataPresent(D.UVKind)&&(d.push(D.UVKind),a.push("#define UV1"),m=!0),h.isVerticesDataPresent(D.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(D.UV2Kind),a.push("#define UV2"),_=!0)}let v=new qn;if(h.useBones&&h.computeBonesUsingShaders&&h.skeleton){d.push(D.MatricesIndicesKind),d.push(D.MatricesWeightsKind),h.numBoneInfluencers>4&&(d.push(D.MatricesIndicesExtraKind),d.push(D.MatricesWeightsExtraKind));let T=h.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+h.numBoneInfluencers),h.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,h),T.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(T.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let x=h.morphTargetManager?El(h.morphTargetManager,a,d,h,!0,u,!1,m,_,p):0;if(gl(r,this._scene,a),t&&(a.push("#define INSTANCES"),yo(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let T of this.customShaderOptions.defines)a.indexOf(T)===-1&&a.push(T);let S=h.bakedVertexAnimationManager;S&&S.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let E=a.join(` +`);if(f!==E){f=E;let T="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],y=["Scene","Mesh"];if(Wn(R),this.customShaderOptions){if(T=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let L of this.customShaderOptions.attributes)d.indexOf(L)===-1&&d.push(L);if(this.customShaderOptions.uniforms)for(let L of this.customShaderOptions.uniforms)R.indexOf(L)===-1&&R.push(L);if(this.customShaderOptions.samplers)for(let L of this.customShaderOptions.samplers)M.indexOf(L)===-1&&M.push(L)}let C=this._scene.getEngine();c=C.createEffect(T,{attributes:d,uniformsNames:R,uniformBuffersNames:y,samplers:M,defines:E,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:x},shaderLanguage:this._shaderLanguage},C),l.setEffect(c,f)}if(!c.isReady())return!1}return(this.useBlurExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(!this._blurPostProcesses||!this._blurPostProcesses.length)&&this._initializeBlurRTTAndPostProcesses(),!(this._kernelBlurXPostprocess&&!this._kernelBlurXPostprocess.isReady()||this._kernelBlurYPostprocess&&!this._kernelBlurYPostprocess.isReady()||this._boxBlurPostprocess&&!this._boxBlurPostprocess.isReady())}prepareDefines(e,t){let i=this._scene,r=this._light;!i.shadowsEnabled||!r.shadowEnabled||(e["SHADOW"+t]=!0,this.useContactHardeningShadow?(e["SHADOWPCSS"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePercentageCloserFiltering?(e["SHADOWPCF"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePoissonSampling?e["SHADOWPOISSON"+t]=!0:this.useExponentialShadowMap||this.useBlurExponentialShadowMap?e["SHADOWESM"+t]=!0:(this.useCloseExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(e["SHADOWCLOSEESM"+t]=!0),r.needCube()&&(e["SHADOWCUBE"+t]=!0))}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera(),a=this.getShadowMap();if(!a)return;if(!i.needCube()){let l=r.floatingOriginOffset,c=this.getTransformMatrix(),f=r.floatingOriginMode?nP(l,this._viewMatrix,this._projectionMatrix,$.Matrix[0]):c;t.setMatrix("lightMatrix"+e,f)}let o=this.getShadowMapForRendering();this._filter===n.FILTER_PCF?(t.setDepthStencilTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),a.getSize().width,1/a.getSize().width,this.frustumEdgeFalloff,e)):this._filter===n.FILTER_PCSS?(t.setDepthStencilTexture("shadowTexture"+e,o),t.setTexture("depthTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),1/a.getSize().width,this._contactHardeningLightSizeUVRatio*a.getSize().width,this.frustumEdgeFalloff,e)):(t.setTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),this.blurScale/a.getSize().width,this.depthScale,this.frustumEdgeFalloff,e)),i._uniformBuffer.updateFloat2("depthValues",this.getLight().getDepthMinZ(s),this.getLight().getDepthMinZ(s)+this.getLight().getDepthMaxZ(s),e)}get viewMatrix(){return this._viewMatrix}get projectionMatrix(){return this._projectionMatrix}getTransformMatrix(){let e=this._scene;if(this._currentRenderId===e.getRenderId()&&this._currentFaceIndexCache===this._currentFaceIndex)return this._transformMatrix;this._currentRenderId=e.getRenderId(),this._currentFaceIndexCache=this._currentFaceIndex;let t=this._light.position;if(this._light.computeTransformedInformation()&&(t=this._light.transformedPosition),b.NormalizeToRef(this._light.getShadowDirection(this._currentFaceIndex),this._lightDirection),Math.abs(b.Dot(this._lightDirection,b.Up()))===1&&(this._lightDirection.z=1e-13),this._light.needProjectionMatrixCompute()||!this._cachedPosition||!this._cachedDirection||!t.equals(this._cachedPosition)||!this._lightDirection.equals(this._cachedDirection)){this._cachedPosition.copyFrom(t),this._cachedDirection.copyFrom(this._lightDirection),q.LookAtLHToRef(t,t.add(this._lightDirection),b.Up(),this._viewMatrix);let i=this.getShadowMap();if(i){let r=i.renderList;r&&this._light.setShadowProjectionMatrix(this._projectionMatrix,this._viewMatrix,r)}this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix)}return this._transformMatrix}recreateShadowMap(){let e=this._shadowMap;if(!e)return;let t=e.renderList;if(this._disposeRTTandPostProcesses(),this._initializeGenerator(),this.filter=this._filter,this._applyFilterValues(),t){this._shadowMap.renderList||(this._shadowMap.renderList=[]);for(let i of t)this._shadowMap.renderList.push(i)}else this._shadowMap.renderList=null}_disposeBlurPostProcesses(){this._shadowMap2&&(this._shadowMap2.dispose(),this._shadowMap2=null),this._boxBlurPostprocess&&(this._boxBlurPostprocess.dispose(),this._boxBlurPostprocess=null),this._kernelBlurXPostprocess&&(this._kernelBlurXPostprocess.dispose(),this._kernelBlurXPostprocess=null),this._kernelBlurYPostprocess&&(this._kernelBlurYPostprocess.dispose(),this._kernelBlurYPostprocess=null),this._blurPostProcesses=[]}_disposeRTTandPostProcesses(){this._shadowMap&&(this._shadowMap.dispose(),this._shadowMap=null),this._disposeBlurPostProcesses()}_disposeSceneUBOs(){if(this._sceneUBOs){for(let e of this._sceneUBOs)e.dispose();this._sceneUBOs=[]}}dispose(e=!0){if(this._disposeRTTandPostProcesses(),this._disposeSceneUBOs(),this._light){if(this._light._shadowGenerators){let t=this._light._shadowGenerators.entries();for(let i=t.next();i.done!==!0;i=t.next()){let[r,s]=i.value;s===this&&this._light._shadowGenerators.delete(r)}this._light._shadowGenerators.size===0&&(this._light._shadowGenerators=null)}this._light._markMeshesAsLightDirty()}e&&(this.onBeforeShadowMapRenderMeshObservable.clear(),this.onBeforeShadowMapRenderObservable.clear(),this.onAfterShadowMapRenderMeshObservable.clear(),this.onAfterShadowMapRenderObservable.clear())}serialize(){var i;let e={},t=this.getShadowMap();if(!t)return e;if(e.className=this.getClassName(),e.lightId=this._light.id,e.cameraId=(i=this._camera)==null?void 0:i.id,e.id=this.id,e.mapSize=t.getRenderSize(),e.forceBackFacesOnly=this.forceBackFacesOnly,e.darkness=this.getDarkness(),e.transparencyShadow=this._transparencyShadow,e.frustumEdgeFalloff=this.frustumEdgeFalloff,e.bias=this.bias,e.normalBias=this.normalBias,e.usePercentageCloserFiltering=this.usePercentageCloserFiltering,e.useContactHardeningShadow=this.useContactHardeningShadow,e.contactHardeningLightSizeUVRatio=this.contactHardeningLightSizeUVRatio,e.filteringQuality=this.filteringQuality,e.useExponentialShadowMap=this.useExponentialShadowMap,e.useBlurExponentialShadowMap=this.useBlurExponentialShadowMap,e.useCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.useBlurCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.usePoissonSampling=this.usePoissonSampling,e.depthScale=this.depthScale,e.blurBoxOffset=this.blurBoxOffset,e.blurKernel=this.blurKernel,e.blurScale=this.blurScale,e.useKernelBlur=this.useKernelBlur,e.renderList=[],t.renderList)for(let r=0;r{throw Qe("ShadowGeneratorSceneComponent")}});var LY={};Be(LY,{depthPixelShader:()=>bue});var ZL,DY,bue,QL=I(()=>{k();Cc();rb();Pc();ZL="depthPixelShader",DY=`#ifdef ALPHATEST varying vec2 vUV;uniform sampler2D diffuseSampler; #endif #include @@ -10502,10 +10502,10 @@ gl_FragColor=vec4(vDepthMetric,0.0,0.0,1.0); #endif #endif #endif -}`;A.ShadersStore[KL]||(A.ShadersStore[KL]=yY);Sue={name:KL,shader:yY}});var PY,Tue,DY=I(()=>{k();PY="pointCloudVertexDeclaration",Tue=`#ifdef POINTSIZE +}`;A.ShadersStore[ZL]||(A.ShadersStore[ZL]=DY);bue={name:ZL,shader:DY}});var OY,Mue,NY=I(()=>{k();OY="pointCloudVertexDeclaration",Mue=`#ifdef POINTSIZE uniform float pointSize; #endif -`;A.IncludesShadersStore[PY]||(A.IncludesShadersStore[PY]=Tue)});var OY={};Be(OY,{depthVertexShader:()=>Aue});var qL,LY,Aue,ZL=I(()=>{k();Ac();xc();Zf();Qf();Rc();zf();DY();$f();Jf();bc();Mc();Ic();yc();mL();qL="depthVertexShader",LY=`attribute vec3 position; +`;A.IncludesShadersStore[OY]||(A.IncludesShadersStore[OY]=Mue)});var FY={};Be(FY,{depthVertexShader:()=>Iue});var $L,wY,Iue,JL=I(()=>{k();Ac();xc();Zf();Qf();Rc();zf();NY();$f();Jf();bc();Mc();Ic();yc();gL();$L="depthVertexShader",wY=`attribute vec3 position; #include #include #include @@ -10563,7 +10563,7 @@ vUV=vec2(diffuseMatrix*vec4(uv2Updated,1.0,0.0)); #endif #include } -`;A.ShadersStore[qL]||(A.ShadersStore[qL]=LY);Aue={name:qL,shader:LY}});var wY={};Be(wY,{depthVertexShaderWGSL:()=>xue});var QL,NY,xue,FY=I(()=>{k();uc();mc();Yf();Kf();pc();Hf();jf();qf();_c();gc();vc();Ec();QL="depthVertexShader",NY=`attribute position: vec3f; +`;A.ShadersStore[$L]||(A.ShadersStore[$L]=wY);Iue={name:$L,shader:wY}});var UY={};Be(UY,{depthVertexShaderWGSL:()=>yue});var eO,BY,yue,VY=I(()=>{k();uc();mc();Yf();Kf();pc();Hf();jf();qf();_c();gc();vc();Ec();eO="depthVertexShader",BY=`attribute position: vec3f; #include #include #include @@ -10619,7 +10619,7 @@ vertexOutputs.vUV= (uniforms.diffuseMatrix* vec4f(uv2Updated,1.0,0.0)).xy; #endif #endif } -`;A.ShadersStoreWGSL[QL]||(A.ShadersStoreWGSL[QL]=NY);xue={name:QL,shader:NY}});var UY={};Be(UY,{depthPixelShaderWGSL:()=>Rue});var $L,BY,Rue,VY=I(()=>{k();Sc();eb();Tc();$L="depthPixelShader",BY=`#ifdef ALPHATEST +`;A.ShadersStoreWGSL[eO]||(A.ShadersStoreWGSL[eO]=BY);yue={name:eO,shader:BY}});var kY={};Be(kY,{depthPixelShaderWGSL:()=>Cue});var tO,GY,Cue,WY=I(()=>{k();Sc();ib();Tc();tO="depthPixelShader",GY=`#ifdef ALPHATEST varying vUV: vec2f;var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d; #endif #include @@ -10658,8 +10658,8 @@ fragmentOutputs.color= vec4f(input.vDepthMetric,0.0,0.0,1.0); #endif #endif #endif -}`;A.ShadersStoreWGSL[$L]||(A.ShadersStoreWGSL[$L]=BY);Rue={name:$L,shader:BY}});var mp,GY=I(()=>{Ht();Wi();Gr();Rf();_l();jL();ZL();un();vl();Xn();Gf();mp=class n{get shaderLanguage(){return this._shaderLanguage}get alphaBlendedDepth(){return this._alphaBlendedDepth}set alphaBlendedDepth(e){this._alphaBlendedDepth!==e&&(this._alphaBlendedDepth=e,this._alphaBlendedDepthMaterialCache.clear())}setMaterialForRendering(e,t){this._depthMap.setMaterialForRendering(e,t)}_ensureGaussianSplattingDepthMaterial(e,t){var s;let i=(s=e._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:s[t],r=this._alphaBlendedDepthMaterialCache.get(e.uniqueId);if(i===void 0||r!==this.alphaBlendedDepth){let a=e.material;if(!a)return null;let o=e.isCompound;i=a.makeDepthRenderingMaterial(this._scene,this._shaderLanguage,this.alphaBlendedDepth,o),this.setMaterialForRendering(e,i),this._alphaBlendedDepthMaterialCache.set(e.uniqueId,this.alphaBlendedDepth)}return i}constructor(e,t=1,i=null,r=!1,s=ge.TRILINEAR_SAMPLINGMODE,a=!1,o,l){this._shaderLanguage=0,this.enabled=!0,this.forceDepthWriteTransparentMeshes=!1,this._alphaBlendedDepth=!1,this._alphaBlendedDepthMaterialCache=new Map,this.useOnlyInActiveCamera=!1,this.reverseCulling=!1,this._shadersLoaded=!1,this._scene=e,this._storeNonLinearDepth=r,this._storeCameraSpaceZ=a,this.isPacked=t===0,this.isPacked?this.clearColor=new lt(1,1,1,1):this.clearColor=new lt(a?0:1,0,0,1),this._initShaderSourceAsync(),n._SceneComponentInitialization(this._scene);let c=e.getEngine();this._camera=i,s!==ge.NEAREST_SAMPLINGMODE&&(t===1&&!c._caps.textureFloatLinearFiltering&&(s=ge.NEAREST_SAMPLINGMODE),t===2&&!c._caps.textureHalfFloatLinearFiltering&&(s=ge.NEAREST_SAMPLINGMODE));let f=this.isPacked||!c._features.supportExtendedTextureFormats?5:6;this._depthMap=l!=null?l:new kr(o!=null?o:"DepthRenderer",{width:c.getRenderWidth(),height:c.getRenderHeight()},this._scene,!1,!0,t,!1,s,void 0,void 0,void 0,f),this._depthMap.wrapU=ge.CLAMP_ADDRESSMODE,this._depthMap.wrapV=ge.CLAMP_ADDRESSMODE,this._depthMap.refreshRate=1,this._depthMap.renderParticles=!1,this._depthMap.renderList=null,this._depthMap.noPrePassRenderer=!0,this._depthMap.activeCamera=this._camera,this._depthMap.ignoreCameraViewport=!0,this._depthMap.useCameraPostProcesses=!1,this._depthMap.onClearObservable.add(h=>{h.clear(this.clearColor,!0,!0,!0)}),this._depthMap.customIsReadyFunction=(h,u,m)=>{if((m||u===0)&&h.subMeshes)for(let _=0;_{var M;let u=h.getRenderingMesh(),m=h.getEffectiveMesh(),_=this._scene,p=_.getEngine(),g=h.getMaterial();if(m._internalAbstractMeshDataInfo._isActiveIntermediate=!1,!g||m.infiniteDistance||g.disableDepthWrite||h.verticesCount===0||h._renderId===_.getRenderId())return;let v=m._getWorldMatrixDeterminant()<0,x=g._getEffectiveOrientation(u);v&&(x=x===0?1:0);let S=x===0;p.setState(g.backFaceCulling,0,!1,S,this.reverseCulling?!g.cullBackFaces:g.cullBackFaces);let E=u._getInstancesRenderList(h._id,!!h.getReplacementMesh());if(E.mustReturn)return;let T=p.getCaps().instancedArrays&&(E.visibleInstances[h._id]!==null&&E.visibleInstances[h._id]!==void 0||u.hasThinInstances),R=this._camera||_.activeCamera;if(this.isReady(h,T)&&R){if(h._renderId=_.getRenderId(),m.getClassName()==="GaussianSplattingMesh"){let B=this._ensureGaussianSplattingDepthMaterial(m,p.currentRenderPassId);if(B&&!B.isReadyForSubMesh(m,h,T))return;this.alphaBlendedDepth&&g.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),m.render(h,!1);return}let C=(M=m._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:M[p.currentRenderPassId],L=h._getDrawWrapper();!L&&C&&(L=C._getDrawWrapper());let w=R.mode===mt.ORTHOGRAPHIC_CAMERA;if(!L)return;let G=L.effect;p.enableEffect(L),T||u._bind(h,G,g.fillMode),C?C.bindForSubMesh(m.getWorldMatrix(),m,h):(G.setMatrix("viewProjection",_.getTransformMatrix()),G.setMatrix("world",m.getWorldMatrix()),this._storeCameraSpaceZ&&G.setMatrix("view",_.getViewMatrix()));let O,N;if(w?(O=!p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:1,N=p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:1):(O=p.useReverseDepthBuffer&&p.isNDCHalfZRange?R.minZ:p.isNDCHalfZRange?0:R.minZ,N=p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:R.maxZ),G.setFloat2("depthValues",O,O+N),!C){if(g.needAlphaTestingForMesh(m)){let V=g.getAlphaTestTexture();V&&(G.setTexture("diffuseSampler",V),G.setMatrix("diffuseMatrix",V.getTextureMatrix()))}Vs(u,G),Hn(G,g,_),zn(u,G),u.morphTargetManager&&u.morphTargetManager.isUsingTextureForTargets&&u.morphTargetManager._bind(G);let B=h.getMesh().bakedVertexAnimationManager;B&&B.isEnabled&&B.bind(G,T),g.pointsCloud&&G.setFloat("pointSize",g.pointSize)}this.alphaBlendedDepth&&g.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),u._processRendering(m,h,G,g.fillMode,E,T,(B,V)=>G.setMatrix("world",V))}};this._depthMap.customRenderFunction=(h,u,m,_)=>{let p=this._scene.getEngine(),g=p.getAlphaMode(),v;if(_.length)for(v=0;v<_.length;v++)d(_.data[v]);for(v=0;v(FY(),wY)),Promise.resolve().then(()=>(VY(),UY))])):await Promise.all([Promise.resolve().then(()=>(ZL(),OY)),Promise.resolve().then(()=>(jL(),CY))]),this._shadersLoaded=!0}isReady(e,t){var R,M;if(!this._shadersLoaded)return!1;let i=this._scene.getEngine(),r=e.getMesh(),s=r.getScene(),a=this._depthMap.renderPassId,o=(M=(R=r._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:R[a])!=null?M:null;if(r.getClassName()==="GaussianSplattingMesh"&&(o=this._ensureGaussianSplattingDepthMaterial(r,a)),o)return o.isReadyForSubMesh(r,e,t);let l=e.getMaterial();if(!l||l.disableDepthWrite)return!1;let c=[],f=[D.PositionKind],d=!1,h=!1,u=!1;l.needAlphaTestingForMesh(r)&&l.getAlphaTestTexture()&&(c.push("#define ALPHATEST"),r.isVerticesDataPresent(D.UVKind)&&(f.push(D.UVKind),c.push("#define UV1"),d=!0),r.isVerticesDataPresent(D.UV2Kind)&&(f.push(D.UV2Kind),c.push("#define UV2"),h=!0));let m=new qn;if(r.useBones&&r.computeBonesUsingShaders&&r.skeleton){f.push(D.MatricesIndicesKind),f.push(D.MatricesWeightsKind),r.numBoneInfluencers>4&&(f.push(D.MatricesIndicesExtraKind),f.push(D.MatricesWeightsExtraKind)),c.push("#define NUM_BONE_INFLUENCERS "+r.numBoneInfluencers),r.numBoneInfluencers>0&&m.addCPUSkinningFallback(0,r);let y=r.skeleton;y.isUsingTextureForMatrices?c.push("#define BONETEXTURE"):c.push("#define BonesPerMesh "+(y.bones.length+1))}else c.push("#define NUM_BONE_INFLUENCERS 0");let _=r.morphTargetManager?El(r.morphTargetManager,c,f,r,!0,!1,!1,d,h,u):0;l.pointsCloud&&c.push("#define POINTSIZE"),t&&(c.push("#define INSTANCES"),yo(f),e.getRenderingMesh().hasThinInstances&&c.push("#define THIN_INSTANCES"));let p=r.bakedVertexAnimationManager;p&&p.isEnabled&&(c.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&f.push("bakedVertexAnimationSettingsInstanced")),this._storeNonLinearDepth&&c.push("#define NONLINEARDEPTH"),this._storeCameraSpaceZ&&c.push("#define STORE_CAMERASPACE_Z"),this.isPacked&&c.push("#define PACKED"),gl(l,s,c);let g=i.currentRenderPassId,x=this._depthMap.renderPassIds.includes(g)?g:this._depthMap.renderPassId,S=e._getDrawWrapper(x,!0),E=S.defines,T=c.join(` -`);if(E!==T){let y=["world","mBones","boneTextureInfo","pointSize","viewProjection","view","diffuseMatrix","depthValues","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],C=["diffuseSampler","morphTargets","boneSampler","bakedVertexAnimationTexture"];Wn(y),S.setEffect(i.createEffect("depth",{attributes:f,uniformsNames:y,uniformBuffersNames:[],samplers:C,defines:T,fallbacks:m,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:_},shaderLanguage:this._shaderLanguage},i),T)}return S.effect.isReady()}getDepthMap(){return this._depthMap}dispose(){let e=[];for(let t in this._scene._depthRenderer)this._scene._depthRenderer[t]===this&&e.push(t);if(e.length>0){this._depthMap.dispose();for(let t of e)delete this._scene._depthRenderer[t]}}};mp.ForceGLSL=!1;mp._SceneComponentInitialization=n=>{throw Qe("DepthRendererSceneComponent")}});var WY={};Be(WY,{minmaxReduxPixelShaderWGSL:()=>bue});var JL,kY,bue,eO=I(()=>{k();JL="minmaxReduxPixelShader",kY=`varying vUV: vec2f;var textureSampler: texture_2d; +}`;A.ShadersStoreWGSL[tO]||(A.ShadersStoreWGSL[tO]=GY);Cue={name:tO,shader:GY}});var mp,HY=I(()=>{Ht();Wi();Gr();Rf();_l();QL();JL();un();vl();Xn();Gf();mp=class n{get shaderLanguage(){return this._shaderLanguage}get alphaBlendedDepth(){return this._alphaBlendedDepth}set alphaBlendedDepth(e){this._alphaBlendedDepth!==e&&(this._alphaBlendedDepth=e,this._alphaBlendedDepthMaterialCache.clear())}setMaterialForRendering(e,t){this._depthMap.setMaterialForRendering(e,t)}_ensureGaussianSplattingDepthMaterial(e,t){var s;let i=(s=e._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:s[t],r=this._alphaBlendedDepthMaterialCache.get(e.uniqueId);if(i===void 0||r!==this.alphaBlendedDepth){let a=e.material;if(!a)return null;let o=e.isCompound;i=a.makeDepthRenderingMaterial(this._scene,this._shaderLanguage,this.alphaBlendedDepth,o),this.setMaterialForRendering(e,i),this._alphaBlendedDepthMaterialCache.set(e.uniqueId,this.alphaBlendedDepth)}return i}constructor(e,t=1,i=null,r=!1,s=ge.TRILINEAR_SAMPLINGMODE,a=!1,o,l){this._shaderLanguage=0,this.enabled=!0,this.forceDepthWriteTransparentMeshes=!1,this._alphaBlendedDepth=!1,this._alphaBlendedDepthMaterialCache=new Map,this.useOnlyInActiveCamera=!1,this.reverseCulling=!1,this._shadersLoaded=!1,this._scene=e,this._storeNonLinearDepth=r,this._storeCameraSpaceZ=a,this.isPacked=t===0,this.isPacked?this.clearColor=new lt(1,1,1,1):this.clearColor=new lt(a?0:1,0,0,1),this._initShaderSourceAsync(),n._SceneComponentInitialization(this._scene);let c=e.getEngine();this._camera=i,s!==ge.NEAREST_SAMPLINGMODE&&(t===1&&!c._caps.textureFloatLinearFiltering&&(s=ge.NEAREST_SAMPLINGMODE),t===2&&!c._caps.textureHalfFloatLinearFiltering&&(s=ge.NEAREST_SAMPLINGMODE));let f=this.isPacked||!c._features.supportExtendedTextureFormats?5:6;this._depthMap=l!=null?l:new kr(o!=null?o:"DepthRenderer",{width:c.getRenderWidth(),height:c.getRenderHeight()},this._scene,!1,!0,t,!1,s,void 0,void 0,void 0,f),this._depthMap.wrapU=ge.CLAMP_ADDRESSMODE,this._depthMap.wrapV=ge.CLAMP_ADDRESSMODE,this._depthMap.refreshRate=1,this._depthMap.renderParticles=!1,this._depthMap.renderList=null,this._depthMap.noPrePassRenderer=!0,this._depthMap.activeCamera=this._camera,this._depthMap.ignoreCameraViewport=!0,this._depthMap.useCameraPostProcesses=!1,this._depthMap.onClearObservable.add(h=>{h.clear(this.clearColor,!0,!0,!0)}),this._depthMap.customIsReadyFunction=(h,u,m)=>{if((m||u===0)&&h.subMeshes)for(let _=0;_{var M;let u=h.getRenderingMesh(),m=h.getEffectiveMesh(),_=this._scene,p=_.getEngine(),g=h.getMaterial();if(m._internalAbstractMeshDataInfo._isActiveIntermediate=!1,!g||m.infiniteDistance||g.disableDepthWrite||h.verticesCount===0||h._renderId===_.getRenderId())return;let v=m._getWorldMatrixDeterminant()<0,x=g._getEffectiveOrientation(u);v&&(x=x===0?1:0);let S=x===0;p.setState(g.backFaceCulling,0,!1,S,this.reverseCulling?!g.cullBackFaces:g.cullBackFaces);let E=u._getInstancesRenderList(h._id,!!h.getReplacementMesh());if(E.mustReturn)return;let T=p.getCaps().instancedArrays&&(E.visibleInstances[h._id]!==null&&E.visibleInstances[h._id]!==void 0||u.hasThinInstances),R=this._camera||_.activeCamera;if(this.isReady(h,T)&&R){if(h._renderId=_.getRenderId(),m.getClassName()==="GaussianSplattingMesh"){let B=this._ensureGaussianSplattingDepthMaterial(m,p.currentRenderPassId);if(B&&!B.isReadyForSubMesh(m,h,T))return;this.alphaBlendedDepth&&g.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),m.render(h,!1);return}let C=(M=m._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:M[p.currentRenderPassId],L=h._getDrawWrapper();!L&&C&&(L=C._getDrawWrapper());let w=R.mode===mt.ORTHOGRAPHIC_CAMERA;if(!L)return;let G=L.effect;p.enableEffect(L),T||u._bind(h,G,g.fillMode),C?C.bindForSubMesh(m.getWorldMatrix(),m,h):(G.setMatrix("viewProjection",_.getTransformMatrix()),G.setMatrix("world",m.getWorldMatrix()),this._storeCameraSpaceZ&&G.setMatrix("view",_.getViewMatrix()));let O,N;if(w?(O=!p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:1,N=p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:1):(O=p.useReverseDepthBuffer&&p.isNDCHalfZRange?R.minZ:p.isNDCHalfZRange?0:R.minZ,N=p.useReverseDepthBuffer&&p.isNDCHalfZRange?0:R.maxZ),G.setFloat2("depthValues",O,O+N),!C){if(g.needAlphaTestingForMesh(m)){let V=g.getAlphaTestTexture();V&&(G.setTexture("diffuseSampler",V),G.setMatrix("diffuseMatrix",V.getTextureMatrix()))}Vs(u,G),Hn(G,g,_),zn(u,G),u.morphTargetManager&&u.morphTargetManager.isUsingTextureForTargets&&u.morphTargetManager._bind(G);let B=h.getMesh().bakedVertexAnimationManager;B&&B.isEnabled&&B.bind(G,T),g.pointsCloud&&G.setFloat("pointSize",g.pointSize)}this.alphaBlendedDepth&&g.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),u._processRendering(m,h,G,g.fillMode,E,T,(B,V)=>G.setMatrix("world",V))}};this._depthMap.customRenderFunction=(h,u,m,_)=>{let p=this._scene.getEngine(),g=p.getAlphaMode(),v;if(_.length)for(v=0;v<_.length;v++)d(_.data[v]);for(v=0;v(VY(),UY)),Promise.resolve().then(()=>(WY(),kY))])):await Promise.all([Promise.resolve().then(()=>(JL(),FY)),Promise.resolve().then(()=>(QL(),LY))]),this._shadersLoaded=!0}isReady(e,t){var R,M;if(!this._shadersLoaded)return!1;let i=this._scene.getEngine(),r=e.getMesh(),s=r.getScene(),a=this._depthMap.renderPassId,o=(M=(R=r._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:R[a])!=null?M:null;if(r.getClassName()==="GaussianSplattingMesh"&&(o=this._ensureGaussianSplattingDepthMaterial(r,a)),o)return o.isReadyForSubMesh(r,e,t);let l=e.getMaterial();if(!l||l.disableDepthWrite)return!1;let c=[],f=[D.PositionKind],d=!1,h=!1,u=!1;l.needAlphaTestingForMesh(r)&&l.getAlphaTestTexture()&&(c.push("#define ALPHATEST"),r.isVerticesDataPresent(D.UVKind)&&(f.push(D.UVKind),c.push("#define UV1"),d=!0),r.isVerticesDataPresent(D.UV2Kind)&&(f.push(D.UV2Kind),c.push("#define UV2"),h=!0));let m=new qn;if(r.useBones&&r.computeBonesUsingShaders&&r.skeleton){f.push(D.MatricesIndicesKind),f.push(D.MatricesWeightsKind),r.numBoneInfluencers>4&&(f.push(D.MatricesIndicesExtraKind),f.push(D.MatricesWeightsExtraKind)),c.push("#define NUM_BONE_INFLUENCERS "+r.numBoneInfluencers),r.numBoneInfluencers>0&&m.addCPUSkinningFallback(0,r);let y=r.skeleton;y.isUsingTextureForMatrices?c.push("#define BONETEXTURE"):c.push("#define BonesPerMesh "+(y.bones.length+1))}else c.push("#define NUM_BONE_INFLUENCERS 0");let _=r.morphTargetManager?El(r.morphTargetManager,c,f,r,!0,!1,!1,d,h,u):0;l.pointsCloud&&c.push("#define POINTSIZE"),t&&(c.push("#define INSTANCES"),yo(f),e.getRenderingMesh().hasThinInstances&&c.push("#define THIN_INSTANCES"));let p=r.bakedVertexAnimationManager;p&&p.isEnabled&&(c.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&f.push("bakedVertexAnimationSettingsInstanced")),this._storeNonLinearDepth&&c.push("#define NONLINEARDEPTH"),this._storeCameraSpaceZ&&c.push("#define STORE_CAMERASPACE_Z"),this.isPacked&&c.push("#define PACKED"),gl(l,s,c);let g=i.currentRenderPassId,x=this._depthMap.renderPassIds.includes(g)?g:this._depthMap.renderPassId,S=e._getDrawWrapper(x,!0),E=S.defines,T=c.join(` +`);if(E!==T){let y=["world","mBones","boneTextureInfo","pointSize","viewProjection","view","diffuseMatrix","depthValues","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],C=["diffuseSampler","morphTargets","boneSampler","bakedVertexAnimationTexture"];Wn(y),S.setEffect(i.createEffect("depth",{attributes:f,uniformsNames:y,uniformBuffersNames:[],samplers:C,defines:T,fallbacks:m,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:_},shaderLanguage:this._shaderLanguage},i),T)}return S.effect.isReady()}getDepthMap(){return this._depthMap}dispose(){let e=[];for(let t in this._scene._depthRenderer)this._scene._depthRenderer[t]===this&&e.push(t);if(e.length>0){this._depthMap.dispose();for(let t of e)delete this._scene._depthRenderer[t]}}};mp.ForceGLSL=!1;mp._SceneComponentInitialization=n=>{throw Qe("DepthRendererSceneComponent")}});var XY={};Be(XY,{minmaxReduxPixelShaderWGSL:()=>Pue});var iO,zY,Pue,rO=I(()=>{k();iO="minmaxReduxPixelShader",zY=`varying vUV: vec2f;var textureSampler: texture_2d; #if defined(INITIAL) uniform texSize: vec2f;@fragment fn main(input: FragmentInputs)->FragmentOutputs {let coord=vec2i(fragmentInputs.vUV*(uniforms.texSize-1.0));let f1=textureLoad(textureSampler,coord,0).r;let f2=textureLoad(textureSampler,coord+vec2i(1,0),0).r;let f3=textureLoad(textureSampler,coord+vec2i(1,1),0).r;let f4=textureLoad(textureSampler,coord+vec2i(0,1),0).r; @@ -10688,7 +10688,7 @@ fn main(input: FragmentInputs)->FragmentOutputs {let coord=vec2i(fragmentInputs. fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=vec4f(0.);if (true) { discard;}} #endif -`;A.ShadersStoreWGSL[JL]||(A.ShadersStoreWGSL[JL]=kY);bue={name:JL,shader:kY}});var zY={};Be(zY,{minmaxReduxPixelShader:()=>Mue});var tO,HY,Mue,iO=I(()=>{k();tO="minmaxReduxPixelShader",HY=`varying vec2 vUV;uniform sampler2D textureSampler; +`;A.ShadersStoreWGSL[iO]||(A.ShadersStoreWGSL[iO]=zY);Pue={name:iO,shader:zY}});var KY={};Be(KY,{minmaxReduxPixelShader:()=>Due});var nO,YY,Due,sO=I(()=>{k();nO="minmaxReduxPixelShader",YY=`varying vec2 vUV;uniform sampler2D textureSampler; #if defined(INITIAL) uniform vec2 texSize;void main(void) {ivec2 coord=ivec2(vUV*(texSize-1.0));float f1=texelFetch(textureSampler,coord,0).r;float f2=texelFetch(textureSampler,coord+ivec2(1,0),0).r;float f3=texelFetch(textureSampler,coord+ivec2(1,1),0).r;float f4=texelFetch(textureSampler,coord+ivec2(0,1),0).r; @@ -10717,12 +10717,12 @@ void main(void) {glFragColor=vec4(0.);if (true) { discard;}} #endif -`;A.ShadersStore[tO]||(A.ShadersStore[tO]=HY);Mue={name:tO,shader:HY}});var XY,ed,Iue,yue,Oo,rb,YY=I(()=>{hi();lh();Ni();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(XY||(XY={}));ed=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(eO(),WY)))):t.push(Promise.resolve().then(()=>(iO(),zY)))}constructor(e,t=null,i="",r){super({...r,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,defines:i}),this.textureWidth=0,this.textureHeight=0}bind(e=!1){super.bind(e);let t=this.drawWrapper.effect;this.textureWidth===1||this.textureHeight===1?t.setInt2("texSize",this.textureWidth,this.textureHeight):t.setFloat2("texSize",this.textureWidth,this.textureHeight)}};ed.FragmentUrl="minmaxRedux";ed.Uniforms=["texSize"];Iue=new Float32Array(4),yue=new Uint8Array(4),Oo={min:0,max:0},rb=class{get depthRedux(){return this._depthRedux}set depthRedux(e){this._depthRedux!==e&&(this._depthRedux=e,this._recreatePostProcesses())}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}constructor(e,t=!0){this.onAfterReductionPerformed=new ie,this._textureWidth=0,this._textureHeight=0,this._scene=e,this._depthRedux=t,this.reductionSteps=[]}setTextureDimensions(e,t,i=0){return e===this._textureWidth&&t===this._textureHeight&&i===this._depthTextureType?!1:(this._textureWidth=e,this._textureHeight=t,this._depthTextureType=i,this._recreatePostProcesses(),!0)}readMinMax(e){let t=e.type===1||e.type===2,i=t?Iue:yue;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Oo.min=i[0],Oo.max=i[1],t||(Oo.min=Oo.min/255,Oo.max=Oo.max/255),Oo.min>=Oo.max&&(Oo.min=0,Oo.max=1),this.onAfterReductionPerformed.notifyObservers(Oo)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._textureWidth=0,this._textureHeight=0);for(let t=0;t{hi();lh();Ni();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(jY||(jY={}));ed=class n extends Yr{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(rO(),XY)))):t.push(Promise.resolve().then(()=>(sO(),KY)))}constructor(e,t=null,i="",r){super({...r,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,defines:i}),this.textureWidth=0,this.textureHeight=0}bind(e=!1){super.bind(e);let t=this.drawWrapper.effect;this.textureWidth===1||this.textureHeight===1?t.setInt2("texSize",this.textureWidth,this.textureHeight):t.setFloat2("texSize",this.textureWidth,this.textureHeight)}};ed.FragmentUrl="minmaxRedux";ed.Uniforms=["texSize"];Lue=new Float32Array(4),Oue=new Uint8Array(4),Oo={min:0,max:0},sb=class{get depthRedux(){return this._depthRedux}set depthRedux(e){this._depthRedux!==e&&(this._depthRedux=e,this._recreatePostProcesses())}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}constructor(e,t=!0){this.onAfterReductionPerformed=new ie,this._textureWidth=0,this._textureHeight=0,this._scene=e,this._depthRedux=t,this.reductionSteps=[]}setTextureDimensions(e,t,i=0){return e===this._textureWidth&&t===this._textureHeight&&i===this._depthTextureType?!1:(this._textureWidth=e,this._textureHeight=t,this._depthTextureType=i,this._recreatePostProcesses(),!0)}readMinMax(e){let t=e.type===1||e.type===2,i=t?Lue:Oue;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Oo.min=i[0],Oo.max=i[1],t||(Oo.min=Oo.min/255,Oo.max=Oo.max/255),Oo.min>=Oo.max&&(Oo.min=0,Oo.max=1),this.onAfterReductionPerformed.notifyObservers(Oo)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._textureWidth=0,this._textureHeight=0);for(let t=0;t1||i>1;){t=Math.max(Math.round(t/2),1),i=Math.max(Math.round(i/2),1);let a=new ed("Reduction phase "+s,e.getEngine(),"#define "+(t==1&&i==1?"LAST":t==1||i==1?"ONEBEFORELAST":"MAIN"));a.textureWidth=t,a.textureHeight=i,this.reductionSteps.push(a),s++}}}});var nb,KY=I(()=>{rc();ZA();YY();iO();eO();nb=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new ic(e.getScene()),this._thinMinMaxReducer=new rb(e.getScene()),this._reductionSteps=[],this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{this._postProcessManager._rebuild()})}get sourceTexture(){return this._sourceTexture}setSourceTexture(e,t,i=2,r=!0){if(e!==this._sourceTexture&&(this._thinMinMaxReducer.depthRedux=t,this.deactivate(),this._sourceTexture=e,this._forceFullscreenViewport=r,this._thinMinMaxReducer.setTextureDimensions(e.getRenderWidth(),e.getRenderHeight()))){this._disposePostProcesses();let s=this._thinMinMaxReducer.reductionSteps;for(let a=0;a{c.setTexture("textureSampler",this._sourceTexture)})),a===s.length-1&&this._reductionSteps[a-1].onAfterRenderObservable.add(()=>{this._thinMinMaxReducer.readMinMax(l.inputTexture.texture)})}}}get refreshRate(){return this._sourceTexture?this._sourceTexture.refreshRate:-1}set refreshRate(e){this._sourceTexture&&(this._sourceTexture.refreshRate=e)}get activated(){return this._activated}activate(){this._onAfterUnbindObserver||!this._sourceTexture||(this._onAfterUnbindObserver=this._sourceTexture.onAfterUnbindObservable.add(()=>{var t,i;let e=this._camera.getScene().getEngine();(t=e._debugPushGroup)==null||t.call(e,"min max reduction"),this._reductionSteps[0].activate(this._camera),this._postProcessManager.directRender(this._reductionSteps,this._reductionSteps[0].inputTexture,this._forceFullscreenViewport,0,0,!0,this._reductionSteps.length-1),e.unBindFramebuffer(this._reductionSteps[this._reductionSteps.length-1].inputTexture,!1),(i=e._debugPopGroup)==null||i.call(e)}),this._activated=!0)}deactivate(){!this._onAfterUnbindObserver||!this._sourceTexture||(this._sourceTexture.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=null,this._activated=!1)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._camera.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=void 0,this._disposePostProcesses(),this._postProcessManager.dispose(),this._postProcessManager=void 0,this._thinMinMaxReducer.dispose(),this._thinMinMaxReducer=void 0,this._sourceTexture=null)}_disposePostProcesses(){for(let e=0;e{GY();KY();sb=class extends nb{get depthRenderer(){return this._depthRenderer}constructor(e){super(e)}setDepthRenderer(e=null,t=2,i=!0){let r=this._camera.getScene();this._depthRenderer&&(delete r._depthRenderer[this._depthRendererId],this._depthRenderer.dispose(),this._depthRenderer=null),e===null&&(r._depthRenderer||(r._depthRenderer={}),this._depthRendererId="minmax_"+this._camera.uniqueId,e=this._depthRenderer=new mp(r,t,this._camera,!1,1,!1,`DepthRenderer ${this._depthRendererId}`),e.enabled=!1,r._depthRenderer[this._depthRendererId]=e),super.setSourceTexture(e.getDepthMap(),!0,t,i)}setSourceTexture(e,t,i=2,r=!0){super.setSourceTexture(e,t,i,r)}activate(){this._depthRenderer&&(this._depthRenderer.enabled=!0),super.activate()}deactivate(){super.deactivate(),this._depthRenderer&&(this._depthRenderer.enabled=!1)}dispose(e=!0){super.dispose(e),this._depthRenderer&&e&&(this._depthRenderer.dispose(),this._depthRenderer=null)}}});var qY,Cue,Ir,pp,ab,No,ZY=I(()=>{ke();Rf();un();ib();Lm();jY();Pt();Ni();Pg();qY=b.Up(),Cue=b.Zero(),Ir=new b,pp=new b,ab=new q,No=class n extends Pi{_validateFilter(e){return e===Pi.FILTER_NONE||e===Pi.FILTER_PCF||e===Pi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Pi.FILTER_NONE)}get numCascades(){return this._numCascades}set numCascades(e){e=Math.min(Math.max(e,n.MIN_CASCADES_COUNT),n.MAX_CASCADES_COUNT),e!==this._numCascades&&(this._numCascades=e,this.recreateShadowMap(),this._recreateSceneUBOs())}get freezeShadowCastersBoundingInfo(){return this._freezeShadowCastersBoundingInfo}set freezeShadowCastersBoundingInfo(e){this._freezeShadowCastersBoundingInfoObservable&&e&&(this._scene.onBeforeRenderObservable.remove(this._freezeShadowCastersBoundingInfoObservable),this._freezeShadowCastersBoundingInfoObservable=null),!this._freezeShadowCastersBoundingInfoObservable&&!e&&(this._freezeShadowCastersBoundingInfoObservable=this._scene.onBeforeRenderObservable.add(()=>this._computeShadowCastersBoundingInfo())),this._freezeShadowCastersBoundingInfo=e,e&&this._computeShadowCastersBoundingInfo()}_computeShadowCastersBoundingInfo(){if(this._scbiMin.copyFromFloats(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._scbiMax.copyFromFloats(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),this._shadowMap&&this._shadowMap.renderList){let e=this._shadowMap.renderList;for(let t=0;tt&&(e=0,t=1),e<0&&(e=0),t>1&&(t=1),this._minDistance=e,this._maxDistance=t,this._breaksAreDirty=!0)}get minDistance(){return this._minDistance}get maxDistance(){return this._maxDistance}getClassName(){return n.CLASSNAME}getCascadeMinExtents(e){return e>=0&&e=0&&et.maxZ&&t.maxZ!==0||(this._shadowMaxZ=e,this._light._markMeshesAsLightDirty(),this._breaksAreDirty=!0)}get debug(){return this._debug}set debug(e){this._debug=e,this._light._markMeshesAsLightDirty()}get depthClamp(){return this._depthClamp}set depthClamp(e){this._depthClamp=e}get cascadeBlendPercentage(){return this._cascadeBlendPercentage}set cascadeBlendPercentage(e){this._cascadeBlendPercentage=e,this._light._markMeshesAsLightDirty()}get lambda(){return this._lambda}set lambda(e){let t=Math.min(Math.max(e,0),1);this._lambda!=t&&(this._lambda=t,this._breaksAreDirty=!0)}getCascadeViewMatrix(e){return e>=0&&e=0&&e=0&&e{let r=i.min,s=i.max;r>=s&&(r=0,s=1),(r!=this._minDistance||s!=this._maxDistance)&&this.setMinMaxDistance(r,s)}),this._depthReducer.setDepthRenderer(this._depthRenderer)),this._depthReducer.activate()}}get autoCalcDepthBoundsRefreshRate(){var e,t,i;return(i=(t=(e=this._depthReducer)==null?void 0:e.depthRenderer)==null?void 0:t.getDepthMap().refreshRate)!=null?i:-1}set autoCalcDepthBoundsRefreshRate(e){var t;(t=this._depthReducer)!=null&&t.depthRenderer&&(this._depthReducer.depthRenderer.getDepthMap().refreshRate=e)}splitFrustum(){this._breaksAreDirty=!0}_splitFrustum(){let e=this._getCamera();if(!e)return;let t=e.minZ,i=e.maxZ||this._shadowMaxZ,r=i-t,s=this._minDistance,a=this._shadowMaxZ=t?Math.min((this._shadowMaxZ-t)/(i-t),this._maxDistance):this._maxDistance,o=t+s*r,l=t+a*r,c=l-o,f=l/o;for(let d=0;da||(!this._depthClamp||this.filter===Pi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Pi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),q.OrthoOffCenterLHToRef(this._cascadeMinExtents[r].x,this._cascadeMaxExtents[r].x,this._cascadeMinExtents[r].y,this._cascadeMaxExtents[r].y,i?a:s,i?s:a,this._projectionMatrices[r],e.getEngine().isNDCHalfZRange),this._cascadeMinExtents[r].z=s,this._cascadeMaxExtents[r].z=a,this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),b.TransformCoordinatesToRef(Cue,this._transformMatrices[r],Ir),Ir.scaleInPlace(this._mapSize/2),pp.copyFromFloats(Math.round(Ir.x),Math.round(Ir.y),Math.round(Ir.z)),pp.subtractInPlace(Ir).scaleInPlace(2/this._mapSize),q.TranslationToRef(pp.x,pp.y,0,ab),this._projectionMatrices[r].multiplyToRef(ab,this._projectionMatrices[r]),this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),this._transformMatrices[r].copyToArray(this._transformMatricesAsArray,r*16)}}_computeFrustumInWorldSpace(e){let t=this._getCamera();if(!t)return;let i=this._cascades[e].prevBreakDistance,r=this._cascades[e].breakDistance,s=this._scene.getEngine().isNDCHalfZRange;t.getViewMatrix();let a=t.maxZ===0,o=t.maxZ;a&&(t.maxZ=this._shadowMaxZ,t.getProjectionMatrix(!0));let l=q.Invert(t.getTransformationMatrix());a&&(t.maxZ=o,t.getProjectionMatrix(!0));let c=this._scene.getEngine().useReverseDepthBuffer?4:0;for(let f=0;f{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[t]),this._currentLayer=t,this._filter===Pi.FILTER_PCF&&e.setColorWrite(!1),Oa.eyeAtCamera=!1,this._scene.setTransformMatrix(this.getCascadeViewMatrix(t),this.getCascadeProjectionMatrix(t)),this._useUBO&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onBeforeBindObservable.add(()=>{var t;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((t=e._debugPushGroup)==null||t.call(e,`Cascaded shadow map generation for pass id ${e.currentRenderPassId}`)),this._breaksAreDirty&&this._splitFrustum(),this._computeMatrices()}),this._splitFrustum()}_bindCustomEffectForRenderSubMeshForShadowMap(e,t){t.setMatrix("viewProjection",this.getCascadeTransformMatrix(this._currentLayer))}_isReadyCustomDefines(e){e.push("#define SM_DEPTHCLAMP "+(this._depthClamp&&this._filter!==Pi.FILTER_PCSS?"1":"0"))}prepareDefines(e,t){super.prepareDefines(e,t);let i=this._scene,r=this._light;if(!i.shadowsEnabled||!r.shadowEnabled)return;e["SHADOWCSM"+t]=!0,e["SHADOWCSMDEBUG"+t]=this.debug,e["SHADOWCSMNUM_CASCADES"+t]=this.numCascades,e["SHADOWCSM_RIGHTHANDED"+t]=i.useRightHandedSystem;let s=this._getCamera();s&&this._shadowMaxZ<=(s.maxZ||this._shadowMaxZ)&&(e["SHADOWCSMUSESHADOWMAXZ"+t]=!0),this.cascadeBlendPercentage===0&&(e["SHADOWCSMNOBLEND"+t]=!0)}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera();if(!s)return;let a=this.getShadowMap();if(!a)return;let o=a.getSize().width,l=this._transformMatricesAsArray,c=r.floatingOriginMode?sG(this._scene.floatingOriginOffset,this._viewMatrices,this._projectionMatrices,this._numCascades,this._tempTransformMatricesAsArray):l;if(t.setMatrices("lightMatrix"+e,c),t.setArray("viewFrustumZ"+e,this._viewSpaceFrustumsZ),t.setFloat("cascadeBlendFactor"+e,this.cascadeBlendPercentage===0?1e4:1/this.cascadeBlendPercentage),t.setArray("frustumLengths"+e,this._frustumLengths),this._filter===Pi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Pi.FILTER_PCSS){for(let f=0;fnew n(r,s,void 0,a));return e.numCascades!==void 0&&(i.numCascades=e.numCascades),e.debug!==void 0&&(i.debug=e.debug),e.stabilizeCascades!==void 0&&(i.stabilizeCascades=e.stabilizeCascades),e.lambda!==void 0&&(i.lambda=e.lambda),e.cascadeBlendPercentage!==void 0&&(i.cascadeBlendPercentage=e.cascadeBlendPercentage),e.depthClamp!==void 0&&(i.depthClamp=e.depthClamp),e.autoCalcDepthBounds!==void 0&&(i.autoCalcDepthBounds=e.autoCalcDepthBounds),e.shadowMaxZ!==void 0&&(i.shadowMaxZ=e.shadowMaxZ),e.penumbraDarkness!==void 0&&(i.penumbraDarkness=e.penumbraDarkness),e.freezeShadowCastersBoundingInfo!==void 0&&(i.freezeShadowCastersBoundingInfo=e.freezeShadowCastersBoundingInfo),e.minDistance!==void 0&&e.maxDistance!==void 0&&i.setMinMaxDistance(e.minDistance,e.maxDistance),i}};No._FrustumCornersNdcSpace=[new b(-1,1,-1),new b(1,1,-1),new b(1,-1,-1),new b(-1,-1,-1),new b(-1,1,1),new b(1,1,1),new b(1,-1,1),new b(-1,-1,1)];No.CLASSNAME="CascadedShadowGenerator";No.DEFAULT_CASCADES_COUNT=4;No.MIN_CASCADES_COUNT=2;No.MAX_CASCADES_COUNT=4;No._SceneComponentInitialization=n=>{throw Qe("ShadowGeneratorSceneComponent")}});function ob(n,e){Pue[n]=e}var Pue,rO=I(()=>{Pue={}});var nO,QY=I(()=>{ib();ZY();Rm();rO();ob(tt.NAME_SHADOWGENERATOR,(n,e)=>{if(n.shadowGenerators!==void 0&&n.shadowGenerators!==null)for(let t=0,i=n.shadowGenerators.length;t{let e=n._getComponent(tt.NAME_SHADOWGENERATOR);e||(e=new nO(n),n._addComponent(e))}});async function $Y(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new Cr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a={};if(e.responseHeaders)for(let o of e.responseHeaders)a[o]=s.getResponseHeader(o)||"";i({response:s.response,headerValues:a})}else r(`Unable to fetch data from ${n}. Error code: ${s.status}`)}),s.open(t,n),s.send()})}var JY=I(()=>{nh()});function Due(n){return!!n.createPlugin}function Lue(n){return!!n.name}function lb(){return xl[".babylon"]}function Oue(n){for(let e in xl){let t=xl[e];if(t.mimeType===n)return t}}function aO(n,e){let t=xl[n];return t||(ee.Warn("Unable to find a plugin to load "+n+" files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/features/featuresDeepDive/importers/loadingFileTypes"),e?lb():void 0)}function Nue(n){return!!xl[n]}function wue(n){for(let e in xl){let t=xl[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return xl[e]}return lb()}function Fue(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function Bue(n){return n.substring(0,5)==="data:"?n.substring(5):null}function oO(n,e,t){let r="Unable to load from "+(n.rawData?"binary data":n.url);return e?r+=`: ${e}`:t&&(r+=`: ${t}`),r}async function lO(n,e,t,i,r,s,a,o,l){var u;let c=Bue(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?Fue(n.url):"",d=a?aO(a,!0):c?wue(n.url):aO(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await $Y(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),_=m.headerValues?m.headerValues["Content-Type"]:"";_&&(d=Oue(_))}d||(d=lb())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((u=l==null?void 0:l[d.plugin.name])==null?void 0:u.enabled)===!1)throw new Error(`The '${d.plugin.name}' plugin is disabled via the loader options passed to the loading operation.`);if(n.rawData&&!d.isBinary)throw"Loading from ArrayBufferView can not be used with plugins that don't support binary loading.";return(m=>{if(Due(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(g=>{r("Error instantiating plugin.",g)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var T;if(!m)throw`The loader plugin corresponding to the '${a}' file type has not been found. If using es6, please import the plugin you wish to use before.`;if(t8.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!vf(n.url))){if(m.directLoad){let R=m.directLoad(e,c);R instanceof Promise?R.then(M=>{t(m,M)}).catch(M=>{r("Error in directLoad of _loadData: "+M,M)}):t(m,R)}else t(m,c);return}let _=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},g=null,v=!1;(T=m.onDisposeObservable)==null||T.add(()=>{v=!0,g&&(g.abort(),g=null),s()});let x=()=>{if(v)return;let R=(M,y)=>{r(M==null?void 0:M.statusText,y)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";g=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,_,R,o):e._loadFile(n.file||n.url,p,i,!0,_,R)},S=e.getEngine(),E=S.enableOfflineSupport;if(E){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}E=!R}E&&Ie.OfflineProviderFactory?e.offlineProvider=Ie.OfflineProviderFactory(n.url,x,S.disableManifestCheck):x()})}function cO(n,e){let t,i,r=null,s=null;if(!e)t=n,i=_e.GetFilename(n),n=_e.GetFolderPath(n);else if(Lue(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=_f(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return _e.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=_e.GetFilename(e),n=_e.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function td(n){if(typeof n.extensions=="string"){let e=n.extensions;xl[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)xl[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function mv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await r8(i,r,n,e,s,a,o,l)}async function i8(n,e,t="",i=Oe.LastCreatedScene,r=null,s=null,a=null,o=null,l="",c={}){if(!i)return ee.Error("No scene available to import mesh to"),null;let f=cO(e,t);if(!f)return null;let d={};i.addPendingData(d);let h=()=>{i.removePendingData(d)},u=(p,g)=>{let v=oO(f,p,g);a?a(i,v,new Fs(v,Ia.SceneLoaderError,g)):ee.Error(v),h()},m=s?p=>{try{s(p)}catch(g){u("Error in onProgress callback: "+g,g)}}:void 0,_=(p,g,v,x,S,E,T,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,g,v,x,S,E,T,R)}catch(M){u("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await lO(f,i,(p,g,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let x=p,S=[],E=[],T=[];if(!x.importMesh(n,i,g,f.rootUrl,S,E,T,u))return;i.loadingPluginName=p.name,_(S,E,T,[],[],[],[],[])}else p.importMeshAsync(n,i,g,f.rootUrl,m,f.name).then(S=>{i.loadingPluginName=p.name,_(S.meshes,S.particleSystems,S.skeletons,S.animationGroups,S.transformNodes,S.geometries,S.lights,S.spriteManagers)}).catch(S=>{u(S.message,S)})},m,u,h,o,l,c)}async function r8(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{i8(n,e,t,i,(f,d,h,u,m,_,p,g)=>{l({meshes:f,particleSystems:d,skeletons:h,animationGroups:u,transformNodes:m,geometries:_,lights:p,spriteManagers:g})},r,(f,d,h)=>{c(h||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function n8(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){_e.Error("No engine available");return}await fO(n,e,new ei(t),i,r,s,a,o,l)}async function Uue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{n8(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function fO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to append to"),null;let c=cO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};Kr.ShowLoadingScreen&&!sO&&(sO=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),sO=!1}));let h=(_,p)=>{let g=oO(c,_,p);s?s(t,g,new Fs(g,Ia.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(_){h("Error in onSuccess callback",_)}t.removePendingData(f)};return await lO(c,t,(_,p)=>{if(_.load){if(!_.load(t,p,c.rootUrl,h))return;t.loadingPluginName=_.name,m()}else _.loadAsync(t,p,c.rootUrl,u,c.name).then(()=>{t.loadingPluginName=_.name,m()}).catch(v=>{h(v.message,v)})},u,h,d,a,o,l)}async function Vue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{fO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function dO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to load asset container to"),null;let c=cO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},h=(_,p)=>{let g=oO(c,_,p);s?s(t,g,new Fs(g,Ia.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=_=>{if(i)try{i(_)}catch(p){h("Error in onSuccess callback",p)}t.removePendingData(f)};return await lO(c,t,(_,p)=>{if(_.loadAssetContainer){let v=_.loadAssetContainer(t,p,c.rootUrl,h);if(!v)return;v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}else _.loadAssetContainerAsync?_.loadAssetContainerAsync(t,p,c.rootUrl,u,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}).catch(v=>{h(v.message,v)}):h("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},u,h,d,a,o,l)}async function Gue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{dO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function s8(n,e="",t=Oe.LastCreatedScene,i=!0,r=0,s=null,a=null,o=null,l=null,c=null,f="",d={}){if(!t){ee.Error("No scene available to load animations to");return}if(i){for(let p of t.animatables)p.reset();t.stopAllAnimations();let m=t.animationGroups.slice();for(let p of m)p.dispose();let _=t.getNodes();for(let p of _)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let _ of m)_.dispose();break;case 1:for(let _ of t.animationGroups)_.stop();break;case 2:for(let _ of t.animationGroups)_.reset(),_.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let h=t.animatables.length;await dO(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(h),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function kue(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{s8(n,e,t,i,r,s,h=>{f(h)},a,(h,u,m)=>{d(m||new Error(u))},o,l,c).catch(d)}catch(h){d(h)}})}var e8,t8,xl,sO,Mh,_p=I(()=>{yi();hi();Bs();Ni();Pt();Cx();Jl();pg();mg();Vr();JY();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(e8||(e8={}));t8=new ie,xl={},sO=!1;Mh=class{static get ForceFullSceneLoadingForIncremental(){return Kr.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){Kr.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return Kr.ShowLoadingScreen}static set ShowLoadingScreen(e){Kr.ShowLoadingScreen=e}static get loggingLevel(){return Kr.loggingLevel}static set loggingLevel(e){Kr.loggingLevel=e}static get CleanBoneMatrixWeights(){return Kr.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){Kr.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return lb()}static GetPluginForExtension(e){var t;return(t=aO(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Nue(e)}static RegisterPlugin(e){td(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){i8(e,t,i,r,s,a,o,l,c,f).catch(d=>o==null?void 0:o(Oe.LastCreatedScene,d==null?void 0:d.message,d))}static async ImportMeshAsync(e,t,i,r,s,a,o){return await r8(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){n8(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAsync(e,t,i,r,s,a){return await Uue(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){fO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async AppendAsync(e,t,i,r,s,a){return await Vue(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){dO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAssetContainerAsync(e,t,i,r,s,a){return await Gue(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){s8(e,t,i,r,s,a,o,l,c,f,d).catch(h=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,h==null?void 0:h.message,h))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await kue(e,t,i,r,s,a,l,f,d)}};Mh.NO_LOGGING=0;Mh.MINIMAL_LOGGING=1;Mh.SUMMARY_LOGGING=2;Mh.DETAILED_LOGGING=3;Mh.OnPluginActivatedObservable=t8});var cb,hO,uO,Rl,pv=I(()=>{Ci();yf();Nm();Pt();Ni();DD();Uf();_l();yi();Sf();cb=class{constructor(){this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.sounds=null,this.effectLayers=[],this.layers=[],this.reflectionProbes=[],this.spriteManagers=[]}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture=e}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}},hO=class extends cb{},uO=class{constructor(){this.rootNodes=[],this.skeletons=[],this.animationGroups=[]}dispose(){let e=this.rootNodes;for(let r of e)r.dispose();e.length=0;let t=this.skeletons;for(let r of t)r.dispose();t.length=0;let i=this.animationGroups;for(let r of i)r.dispose();i.length=0}},Rl=class extends cb{constructor(e){super(),this._wasAddedToScene=!1,e=e||Oe.LastCreatedScene,e&&(this.scene=e,this.proceduralTextures=[],e.onDisposeObservable.add(()=>{this._wasAddedToScene||this.dispose()}),this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{for(let t of this.geometries)t._rebuild();for(let t of this.meshes)t._rebuild();for(let t of this.particleSystems)t.rebuild();for(let t of this.textures)t._rebuild();for(let t of this.spriteManagers)t.rebuild()}))}_topologicalSort(e){let t=new Map;for(let o of e)t.set(o.uniqueId,o);let i={dependsOn:new Map,dependedBy:new Map};for(let o of e){let l=o.uniqueId;i.dependsOn.set(l,new Set),i.dependedBy.set(l,new Set)}for(let o of e){let l=o.uniqueId,c=i.dependsOn.get(l);if(o instanceof hc){let d=o.sourceMesh;t.has(d.uniqueId)&&(c.add(d.uniqueId),i.dependedBy.get(d.uniqueId).add(l))}let f=i.dependedBy.get(l);for(let d of o.getDescendants()){let h=d.uniqueId;t.has(h)&&(f.add(h),i.dependsOn.get(h).add(l))}}let r=[],s=[];for(let o of e){let l=o.uniqueId;i.dependsOn.get(l).size===0&&(s.push(o),t.delete(l))}let a=s;for(;a.length>0;){let o=a.shift();r.push(o);let l=i.dependedBy.get(o.uniqueId);for(let c of Array.from(l.values())){let f=i.dependsOn.get(c);f.delete(o.uniqueId),f.size===0&&t.get(c)&&(a.push(t.get(c)),t.delete(c))}}return t.size>0&&(ee.Error("SceneSerializer._topologicalSort: There were unvisited nodes:"),t.forEach(o=>{ee.Error(o.name)})),r}_addNodeAndDescendantsToList(e,t,i,r){if(!(!i||r&&!r(i)||t.has(i.uniqueId))){e.push(i),t.add(i.uniqueId);for(let s of i.getDescendants(!0))this._addNodeAndDescendantsToList(e,t,s,r)}}_isNodeInContainer(e){return e instanceof Ar&&this.meshes.indexOf(e)!==-1||e instanceof Yt&&this.transformNodes.indexOf(e)!==-1||e instanceof zt&&this.lights.indexOf(e)!==-1||e instanceof mt&&this.cameras.indexOf(e)!==-1}_isValidHierarchy(){for(let e of this.meshes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.transformNodes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.lights)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.cameras)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;return!0}instantiateModelsToScene(e,t=!1,i){this._isValidHierarchy()||_e.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new uO,o=[],l=[],c={doNotInstantiate:!0,...i},f=(_,p)=>{if(r[_.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(_.name)),p instanceof Z){let g=p;if(g.morphTargetManager){let v=_.morphTargetManager;g.morphTargetManager=v.clone();for(let x=0;x{if(f(_,p),_.parent){let g=r[_.parent.uniqueId],v=s[g];v?p.parent=v:p.parent=_.parent}if(p.position&&_.position&&p.position.copyFrom(_.position),p.rotationQuaternion&&_.rotationQuaternion&&p.rotationQuaternion.copyFrom(_.rotationQuaternion),p.rotation&&_.rotation&&p.rotation.copyFrom(_.rotation),p.scaling&&_.scaling&&p.scaling.copyFrom(_.scaling),p.material){let g=p;if(g.material)if(t){let v=_.material;if(l.indexOf(v)===-1){let x=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=x.uniqueId,s[x.uniqueId]=x,v.getClassName()==="MultiMaterial"){let S=v;for(let E of S.subMaterials)E&&(x=E.clone(e?e(E.name):"Clone of "+E.name),l.push(E),r[E.uniqueId]=x.uniqueId,s[x.uniqueId]=x);S.subMaterials=S.subMaterials.map(E=>E&&s[r[E.uniqueId]])}}g.getClassName()!=="InstancedMesh"&&(g.material=s[r[v.uniqueId]])}else g.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(g.material)===-1&&this.scene.addMultiMaterial(g.material):this.scene.materials.indexOf(g.material)===-1&&this.scene.addMaterial(g.material)}p.parent===null&&a.rootNodes.push(p)};for(let _ of u)if(_.getClassName()==="InstancedMesh"){let p=_,g=p.sourceMesh,v=r[g.uniqueId],S=(typeof v=="number"?s[v]:g).createInstance(p.name);m(p,S)}else{let p=!0;_.getClassName()==="TransformNode"||_.getClassName()==="Node"||_.skeleton||!_.getTotalVertices||_.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(_):p=!c.doNotInstantiate);let g=p?_.createInstance(`instance of ${_.name}`):_.clone(`Clone of ${_.name}`,null,!0);if(!g)throw new Error(`Could not clone or instantiate node on Asset Container ${_.name}`);m(_,g)}for(let _ of this.skeletons){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name);for(let g of this.meshes)if(g.skeleton===_&&!g.isAnInstance){let v=s[r[g.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let x of p.bones)x._linkedTransformNode&&(x._linkedTransformNode=s[r[x._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let _ of this.animationGroups){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name,g=>s[r[g.uniqueId]]||g);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||_e.Warn("SceneSerializer.addAllToScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!0,this.addToScene(null),this.environmentTexture&&(this.scene.environmentTexture=this.environmentTexture);for(let e of this.scene._serializableComponents)e.addFromContainer(this);this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null}}addToScene(e=null){let t=[];for(let i of this.cameras)e&&!e(i)||(this.scene.addCamera(i),t.push(i));for(let i of this.lights)e&&!e(i)||(this.scene.addLight(i),t.push(i));for(let i of this.meshes)e&&!e(i)||(this.scene.addMesh(i),t.push(i));for(let i of this.skeletons)e&&!e(i)||this.scene.addSkeleton(i);for(let i of this.animations)e&&!e(i)||this.scene.addAnimation(i);for(let i of this.animationGroups)e&&!e(i)||this.scene.addAnimationGroup(i);for(let i of this.multiMaterials)e&&!e(i)||this.scene.addMultiMaterial(i);for(let i of this.materials)e&&!e(i)||this.scene.addMaterial(i);for(let i of this.morphTargetManagers)e&&!e(i)||this.scene.addMorphTargetManager(i);for(let i of this.geometries)e&&!e(i)||this.scene.addGeometry(i);for(let i of this.transformNodes)e&&!e(i)||(this.scene.addTransformNode(i),t.push(i));for(let i of this.actionManagers)e&&!e(i)||this.scene.addActionManager(i);for(let i of this.textures)e&&!e(i)||this.scene.addTexture(i);for(let i of this.reflectionProbes)e&&!e(i)||this.scene.addReflectionProbe(i);for(let i of this.spriteManagers)e&&!e(i)||(this.scene.spriteManagers||(this.scene.spriteManagers=[]),this.scene.spriteManagers.push(i));if(t.length){let i=new Set(this.scene.meshes);for(let r of this.scene.lights)i.add(r);for(let r of this.scene.cameras)i.add(r);for(let r of this.scene.transformNodes)i.add(r);for(let r of this.skeletons)for(let s of r.bones)i.add(s);for(let r of t)r.parent&&!i.has(r.parent)&&(r.setParent?r.setParent(null):r.parent=null)}}removeAllFromScene(){this._isValidHierarchy()||_e.Warn("SceneSerializer.removeAllFromScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!1,this.removeFromScene(null),this.environmentTexture===this.scene.environmentTexture&&(this.scene.environmentTexture=null);for(let e of this.scene._serializableComponents)e.removeFromContainer(this)}removeFromScene(e=null){for(let t of this.cameras)e&&!e(t)||this.scene.removeCamera(t);for(let t of this.lights)e&&!e(t)||this.scene.removeLight(t);for(let t of this.meshes)e&&!e(t)||this.scene.removeMesh(t,!0);for(let t of this.skeletons)e&&!e(t)||this.scene.removeSkeleton(t);for(let t of this.animations)e&&!e(t)||this.scene.removeAnimation(t);for(let t of this.animationGroups)e&&!e(t)||this.scene.removeAnimationGroup(t);for(let t of this.multiMaterials)e&&!e(t)||this.scene.removeMultiMaterial(t);for(let t of this.materials)e&&!e(t)||this.scene.removeMaterial(t);for(let t of this.morphTargetManagers)e&&!e(t)||this.scene.removeMorphTargetManager(t);for(let t of this.geometries)e&&!e(t)||this.scene.removeGeometry(t);for(let t of this.transformNodes)e&&!e(t)||this.scene.removeTransformNode(t);for(let t of this.actionManagers)e&&!e(t)||this.scene.removeActionManager(t);for(let t of this.textures)e&&!e(t)||this.scene.removeTexture(t);for(let t of this.reflectionProbes)e&&!e(t)||this.scene.removeReflectionProbe(t);for(let t of this.spriteManagers)if(!(e&&!e(t))&&this.scene.spriteManagers){let i=this.scene.spriteManagers.indexOf(t);i!==-1&&this.scene.spriteManagers.splice(i,1)}}dispose(){let e=this.cameras.slice(0);for(let _ of e)_.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let _ of t)_.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let _ of i)_.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let _ of r)_.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let _ of s)_.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let _ of a)_.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let _ of o)_.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let _ of l)_.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let _ of c)_.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let _ of f)_.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let _ of d)_.dispose();this.textures.length=0;let h=this.reflectionProbes.slice(0);for(let _ of h)_.dispose();this.reflectionProbes.length=0;let u=this.morphTargetManagers.slice(0);for(let _ of u)_.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let _ of m)_.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let _ of this.scene._serializableComponents)_.removeFromContainer(this,!0);this._onContextRestoredObserver&&(this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}_moveAssets(e,t,i){if(!(!e||!t))for(let r of e){let s=!0;if(i){for(let a of i)if(r===a){s=!1;break}}s&&(t.push(r),r._parentContainer=this)}}moveAllFromScene(e){this._wasAddedToScene=!1,e===void 0&&(e=new hO);for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=this[t]||(t==="_environmentTexture"?null:[]),this._moveAssets(this.scene[t],this[t],e[t]));this.environmentTexture=this.scene.environmentTexture,this.removeAllFromScene()}createRootMesh(){let e=new Z("assetContainerRootMesh",this.scene);for(let t of this.meshes)t.parent||e.addChild(t);return this.meshes.unshift(e),e}mergeAnimationsTo(e=Oe.LastCreatedScene,t,i=null){if(!e)return ee.Error("No scene available to merge animations to"),[];let r=i||(l=>{let c,f=l.animations.length?l.animations[0].targetProperty:"",d=l.name.split(".").join("").split("_primitive")[0];switch(f){case"position":case"rotationQuaternion":c=e.getTransformNodeByName(l.name)||e.getTransformNodeByName(d);break;case"influence":c=e.getMorphTargetByName(l.name)||e.getMorphTargetByName(d);break;default:c=e.getNodeByName(l.name)||e.getNodeByName(d)}return c}),s=this.getNodes();for(let l of s){let c=r(l);if(c!==null){for(let f of l.animations){let d=c.animations.filter(h=>h.targetProperty===f.targetProperty);for(let h of d){let u=c.animations.indexOf(h,0);u>-1&&c.animations.splice(u,1)}}c.animations=c.animations.concat(l.animations)}}let a=[],o=this.animationGroups.slice();for(let l of o){a.push(l.clone(l.name,r));for(let c of l.animatables)c.stop()}for(let l of t){let c=r(l.target);c&&(e.beginAnimation(c,l.fromFrame,l.toFrame,l.loopAnimation,l.speedRatio,l.onAnimationEnd?l.onAnimationEnd:void 0,void 0,!0,void 0,l.onAnimationLoop?l.onAnimationLoop:void 0),e.stopAnimation(l.target))}return a}populateRootNodes(){this.rootNodes.length=0;for(let e of this.meshes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.transformNodes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.lights)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.cameras)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e)}addAllAssetsToContainer(e){if(!e)return;let t=[],i=new Set;for(t.push(e);t.length>0;){let r=t.pop();if(r instanceof Z?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof hc?this.meshes.push(r):r instanceof Yt?this.transformNodes.push(r):r instanceof zt?this.lights.push(r):r instanceof mt&&this.cameras.push(r),r instanceof Ar){if(r.material&&this.materials.indexOf(r.material)===-1){this.materials.push(r.material);for(let s of r.material.getActiveTextures())this.textures.indexOf(s)===-1&&this.textures.push(s)}r.skeleton&&this.skeletons.indexOf(r.skeleton)===-1&&this.skeletons.push(r.skeleton),r.morphTargetManager&&this.morphTargetManagers.indexOf(r.morphTargetManager)===-1&&this.morphTargetManagers.push(r.morphTargetManager)}for(let s of r.getChildren())i.has(s)||t.push(s);i.add(r)}this.populateRootNodes()}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];$t&&$t.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialsByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}}});var Ih,a8=I(()=>{_g();Ih=class{constructor(e){this.byteOffset=0,this.buffer=e}async loadAsync(e){let t=await this.buffer.readAsync(this.byteOffset,e);this._dataView=new DataView(t.buffer,t.byteOffset,t.byteLength),this._dataByteOffset=0}readUint32(){let e=this._dataView.getUint32(this._dataByteOffset,!0);return this._dataByteOffset+=4,this.byteOffset+=4,e}readUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._dataByteOffset,e);return this._dataByteOffset+=e,this.byteOffset+=e,t}readString(e){return iV(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function mO(n,e,t,i){let r={externalResourceFunction:i};return t&&(r.uri=e==="file:"?t:e+t),ArrayBuffer.isView(n)?GLTFValidator.validateBytes(n,r):GLTFValidator.validateString(n,r)}function Wue(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{mO(t.data,t.rootUrl,t.fileName,i=>new Promise((r,s)=>{let a=n.length;n.push({resolve:r,reject:s}),postMessage({id:"getExternalResource",index:a,uri:i})})).then(i=>{postMessage({id:"validate.resolve",value:i})},i=>{postMessage({id:"validate.reject",reason:i})});break}case"getExternalResource.resolve":{n[t.index].resolve(t.value);break}case"getExternalResource.reject":{n[t.index].reject(t.reason);break}}}}var gp,o8=I(()=>{yi();gp=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${mO}(${Wue})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=h=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(h)},d=h=>{let u=h.data;switch(u.id){case"getExternalResource":{r(u.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:u.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:u.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=u.value,s(u.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(u.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:_e.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let h=e.slice();c.postMessage({id:"validate",data:h,rootUrl:t,fileName:i},[h.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=_e.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>mO(e,t,i,r)))}};gp.Configuration={url:`${_e._DefaultCdnUrl}/gltf_validator.js`};gp._LastResults=null});var Lc,_v,l8=I(()=>{Lc="Z2xURg",_v={name:"gltf",extensions:{".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},canDirectLoad(n){return n.indexOf("asset")!==-1&&n.indexOf("version")!==-1||n.startsWith("data:base64,"+Lc)||n.startsWith("data:;base64,"+Lc)||n.startsWith("data:application/octet-stream;base64,"+Lc)||n.startsWith("data:model/gltf-binary;base64,"+Lc)}}});function c8(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function Hue(n,e,t){try{if(e<0||e>=n.byteLength)throw new RangeError("Offset is out of range.");if(e+t>n.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(n.buffer,n.byteOffset+e,t))}catch(i){return Promise.reject(i)}}var vp,yh,ms,fb,zue,pO,id,_O=I(()=>{hi();yi();_p();pv();Pt();a8();o8();l8();Jl();pg();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(vp||(vp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(yh||(yh={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(ms||(ms={}));fb=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=yh.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=vp.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}},zue=new fb,pO=class extends fb{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E,T,R,M,y,C,L;e&&(this.alwaysComputeBoundingBox=(t=e.alwaysComputeBoundingBox)!=null?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=(i=e.alwaysComputeSkeletonRootNode)!=null?i:this.alwaysComputeSkeletonRootNode,this.animationStartMode=(r=e.animationStartMode)!=null?r:this.animationStartMode,this.capturePerformanceCounters=(s=e.capturePerformanceCounters)!=null?s:this.capturePerformanceCounters,this.compileMaterials=(a=e.compileMaterials)!=null?a:this.compileMaterials,this.compileShadowGenerators=(o=e.compileShadowGenerators)!=null?o:this.compileShadowGenerators,this.coordinateSystemMode=(l=e.coordinateSystemMode)!=null?l:this.coordinateSystemMode,this.createInstances=(c=e.createInstances)!=null?c:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=(f=e.extensionOptions)!=null?f:this.extensionOptions,this.loadAllMaterials=(d=e.loadAllMaterials)!=null?d:this.loadAllMaterials,this.loadMorphTargets=(h=e.loadMorphTargets)!=null?h:this.loadMorphTargets,this.loadNodeAnimations=(u=e.loadNodeAnimations)!=null?u:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(_=e.loadSkins)!=null?_:this.loadSkins,this.loggingEnabled=(p=e.loggingEnabled)!=null?p:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=(g=e.preprocessUrlAsync)!=null?g:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(x=e.targetFps)!=null?x:this.targetFps,this.transparencyAsCoverage=(S=e.transparencyAsCoverage)!=null?S:this.transparencyAsCoverage,this.useClipPlane=(E=e.useClipPlane)!=null?E:this.useClipPlane,this.useGltfTextureNames=(T=e.useGltfTextureNames)!=null?T:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(y=e.useSRGBBuffers)!=null?y:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(L=e.dontUseTransmissionHelper)!=null?L:this.dontUseTransmissionHelper)}},id=class n extends pO{constructor(e){super(),this.onParsedObservable=new ie,this.onMeshLoadedObservable=new ie,this.onSkinLoadedObservable=new ie,this.onTextureLoadedObservable=new ie,this.onMaterialLoadedObservable=new ie,this.onCameraLoadedObservable=new ie,this.onCompleteObservable=new ie,this.onErrorObservable=new ie,this.onDisposeObservable=new ie,this.onExtensionLoadedObservable=new ie,this.onValidatedObservable=new ie,this._loader=null,this._state=null,this._requests=new Array,this.name=_v.name,this.extensions=_v.extensions,this.onLoaderStateChangedObservable=new ie,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign({...zue},e))}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(let e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=e=>Promise.resolve(e),this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,t,i,r,s,a,o,l){if(ArrayBuffer.isView(t))return this._loadBinary(e,t,i,r,o,l),null;this._progressCallback=s;let c=t.name||_e.GetFilename(t);if(a){if(this.useRangeRequests){this.validate&&ee.Warn("glTF validation is not supported when range requests are enabled");let f={abort:()=>{},onCompleteObservable:new ie},d={readAsync:(h,u)=>new Promise((m,_)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{_(p)},p=>{p.setRequestHeader("Range",`bytes=${h}-${h+u-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new Ih(d)).then(h=>{f.onCompleteObservable.notifyObservers(f),r(h)},o?h=>o(void 0,h):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new Ih({readAsync:(d,h)=>c8(f,d,h),byteLength:f.byteLength})).then(d=>{r(d)},o?d=>o(void 0,d):void 0)},!0,o)}else return this._loadFile(e,t,f=>{try{this._validate(e,f,i,c),r({json:this._parseJson(f)})}catch(d){o&&o()}},!1,o)}_loadBinary(e,t,i,r,s,a){this._validate(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i,a),this._unpackBinaryAsync(new Ih({readAsync:(o,l)=>Hue(t,o,l),byteLength:t.byteLength})).then(o=>{r(o)},s?o=>s(void 0,o):void 0)}importMeshAsync(e,t,i,r,s,a){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(i),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(i),this._loader.importMeshAsync(e,t,null,i,r,s,a)))}loadAsync(e,t,i,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,i,r,s)))}loadAssetContainerAsync(e,t,i,r,s){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t);let a=new Rl(e),o=[];this.onMaterialLoadedObservable.add(d=>{o.push(d)});let l=[];this.onTextureLoadedObservable.add(d=>{l.push(d)});let c=[];this.onCameraLoadedObservable.add(d=>{c.push(d)});let f=[];return this.onMeshLoadedObservable.add(d=>{d.morphTargetManager&&f.push(d.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,t,i,r,s).then(d=>(Array.prototype.push.apply(a.geometries,d.geometries),Array.prototype.push.apply(a.meshes,d.meshes),Array.prototype.push.apply(a.particleSystems,d.particleSystems),Array.prototype.push.apply(a.skeletons,d.skeletons),Array.prototype.push.apply(a.animationGroups,d.animationGroups),Array.prototype.push.apply(a.materials,o),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,d.lights),Array.prototype.push.apply(a.transformNodes,d.transformNodes),Array.prototype.push.apply(a.cameras,c),Array.prototype.push.apply(a.morphTargetManagers,f),a))})}canDirectLoad(e){return _v.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+Lc)||t.startsWith(";base64,"+Lc)||t.startsWith("application/octet-stream;base64,"+Lc)||t.startsWith("model/gltf-binary;base64,"+Lc)){let i=Ef(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new Ih({readAsync:(r,s)=>c8(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[_v.name])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(i=>{t(i)})})}_setState(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(ms[this._state]))}_loadFile(e,t,i,r,s,a){let o=e._loadFile(t,i,l=>{this._onProgress(l,o)},!0,r,s,a);return o.onCompleteObservable.add(()=>{o._lengthComputable=!0,o._total=o._loaded}),this._requests.push(o),o}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let i=!0,r=0,s=0;for(let a of this._requests){if(a._lengthComputable===void 0||a._loaded===void 0||a._total===void 0)return;i=i&&a._lengthComputable,r+=a._loaded,s+=a._total}this._progressCallback({lengthComputable:i,loaded:r,total:i?s:0})}_validate(e,t,i="",r=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),gp.ValidateAsync(t,i,r,s=>this.preprocessUrlAsync(i+s).then(a=>e._loadFileAsync(a,void 0,!0,!0).then(o=>new Uint8Array(o,0,o.byteLength)))).then(s=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(s),this.onValidatedObservable.clear()},s=>{this._endPerformanceCounter("Validate JSON"),_e.Warn(`Failed to validate: ${s.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){let t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);let i=n._parseVersion(t.version);if(!i)throw new Error("Invalid version: "+t.version);if(t.minVersion!==void 0){let a=n._parseVersion(t.minVersion);if(!a)throw new Error("Invalid minimum version: "+t.minVersion);if(n._compareVersion(a,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}let s={1:n._CreateGLTF1Loader,2:n._CreateGLTF2Loader}[i.major];if(!s)throw new Error("Unsupported version: "+t.version);return s(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);let t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{let t={Magic:1179937895},i=e.readUint32();if(i!==t.Magic)throw new Fs("Unexpected magic: "+i,Ia.GLTFLoaderUnexpectedMagicError);let r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);let s=e.readUint32();!this.useRangeRequests&&s!==e.buffer.byteLength&&ee.Warn(`Length in header does not match actual data length: ${s} != ${e.buffer.byteLength}`);let a;switch(r){case 1:{a=this._unpackBinaryV1Async(e,s);break}case 2:{a=this._unpackBinaryV2Async(e,s);break}default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),a})}_unpackBinaryV1Async(e,t){let i={JSON:0},r=e.readUint32(),s=e.readUint32();if(s!==i.JSON)throw new Error(`Unexpected content format: ${s}`);let a=t-e.byteOffset,o={json:this._parseJson(e.readString(r)),bin:null};if(a!==0){let l=e.byteOffset;o.bin={readAsync:(c,f)=>e.buffer.readAsync(l+c,f),byteLength:a}}return Promise.resolve(o)}_unpackBinaryV2Async(e,t){let i={JSON:1313821514,BIN:5130562},r=e.readUint32();if(e.readUint32()!==i.JSON)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{let a={json:this._parseJson(e.readString(r)),bin:null},o=()=>{let l=e.readUint32();switch(e.readUint32()){case i.JSON:throw new Error("Unexpected JSON chunk");case i.BIN:{let f=e.byteOffset;a.bin={readAsync:(d,h)=>e.buffer.readAsync(f+d,h),byteLength:l},e.skipBytes(l);break}default:{e.skipBytes(l);break}}return e.byteOffset!==t?e.loadAsync(8).then(o):Promise.resolve(a)};return o()})}static _parseVersion(e){if(e==="1.0"||e==="1.0.1")return{major:1,minor:0};let t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.majort.minor?1:e.minor{db=class{get resolve(){return this._resolve}get reject(){return this._reject}constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}}});var Qn,d8=I(()=>{Gt();Vt();Tl();cx();ke();yi();Qn=class{constructor(){this.keysUp=[38],this.keysUpward=[33],this.keysDown=[40],this.keysDownward=[34],this.keysLeft=[37],this.keysRight=[39],this.rotationSpeed=.5,this.keysRotateLeft=[],this.keysRotateRight=[],this.keysRotateUp=[],this.keysRotateDown=[],this._keys=new Array}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===xo.KEYDOWN)(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),e||i.preventDefault());else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),e||i.preventDefault()}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Gt();hi();Vt();Tl();Ao();yi();Ch=class{constructor(e=!0){this.touchEnabled=e,this.buttons=[0,1,2],this.angularSensibility=2e3,this._previousPosition=null,this.onPointerMovedObservable=new ie,this._allowCameraRotation=!0,this._currentActiveButton=-1,this._activePointerId=-1}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement();this._pointerInput||(this._pointerInput=r=>{let s=r.event,a=s.pointerType==="touch";if(!this.touchEnabled&&a||r.type!==st.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===st.POINTERDOWN){if(a&&this._activePointerId!==-1||!a&&this._currentActiveButton!==-1)return;this._activePointerId=s.pointerId;try{o==null||o.setPointerCapture(s.pointerId)}catch(l){}this._currentActiveButton===-1&&(this._currentActiveButton=s.button),this._previousPosition={x:s.clientX,y:s.clientY},e||(s.preventDefault(),i&&i.focus()),t.isPointerLock&&this._onMouseMove&&this._onMouseMove(r.event)}else if(r.type===st.POINTERUP){if(a&&this._activePointerId!==s.pointerId||!a&&this._currentActiveButton!==s.button)return;try{o==null||o.releasePointerCapture(s.pointerId)}catch(l){}this._currentActiveButton=-1,this._previousPosition=null,e||s.preventDefault(),this._activePointerId=-1}else if(r.type===st.POINTERMOVE&&(this._activePointerId===s.pointerId||!a)){if(t.isPointerLock&&this._onMouseMove)this._onMouseMove(r.event);else if(this._previousPosition){let l=this.camera._calculateHandednessMultiplier(),c=(s.clientX-this._previousPosition.x)*l,f=(s.clientY-this._previousPosition.y)*l;this._allowCameraRotation&&(this.camera.cameraRotation.y+=c/this.angularSensibility,this.camera.cameraRotation.x+=f/this.angularSensibility),this.onPointerMovedObservable.notifyObservers({offsetX:c,offsetY:f}),this._previousPosition={x:s.clientX,y:s.clientY},e||s.preventDefault()}}}),this._onMouseMove=r=>{if(!t.isPointerLock)return;let s=this.camera._calculateHandednessMultiplier();this.camera.cameraRotation.y+=r.movementX*s/this.angularSensibility,this.camera.cameraRotation.x+=r.movementY*s/this.angularSensibility,this._previousPosition=null,e||r.preventDefault()},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE),i&&(this._contextMenuBind=r=>this.onContextMenu(r),i.addEventListener("contextmenu",this._contextMenuBind,!1))}onContextMenu(e){e.preventDefault()}detachControl(){if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._contextMenuBind){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("contextmenu",this._contextMenuBind)}this.onPointerMovedObservable&&this.onPointerMovedObservable.clear(),this._observer=null,this._onMouseMove=null,this._previousPosition=null}this._activePointerId=-1,this._currentActiveButton=-1}getClassName(){return"FreeCameraMouseInput"}getSimpleName(){return"mouse"}};P([F()],Ch.prototype,"buttons",void 0);P([F()],Ch.prototype,"angularSensibility",void 0);Kn.FreeCameraMouseInput=Ch});var Ph,u8=I(()=>{Gt();Vt();hi();Ao();fx();yi();Ph=class{constructor(){this.wheelPrecisionX=3,this.wheelPrecisionY=3,this.wheelPrecisionZ=3,this.onChangedObservable=new ie,this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0,this._ffMultiplier=12,this._normalize=120}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==st.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Ro.DOM_DELTA_LINE?this._ffMultiplier:1;this._wheelDeltaX+=this.wheelPrecisionX*r*i.deltaX/this._normalize,this._wheelDeltaY-=this.wheelPrecisionY*r*i.deltaY/this._normalize,this._wheelDeltaZ+=this.wheelPrecisionZ*r*i.deltaZ/this._normalize,i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,st.POINTERWHEEL)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null),this.onChangedObservable&&this.onChangedObservable.clear()}checkInputs(){this.onChangedObservable.notifyObservers({wheelDeltaX:this._wheelDeltaX,wheelDeltaY:this._wheelDeltaY,wheelDeltaZ:this._wheelDeltaZ}),this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0}getClassName(){return"BaseCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}};P([F()],Ph.prototype,"wheelPrecisionX",void 0);P([F()],Ph.prototype,"wheelPrecisionY",void 0);P([F()],Ph.prototype,"wheelPrecisionZ",void 0)});var wi,zs,m8=I(()=>{Gt();Vt();Tl();u8();ke();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(wi||(wi={}));zs=class extends Ph{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=wi.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=wi.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==wi.MoveRelative||(this._wheelXAction=wi.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==wi.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==wi.MoveRelative||(this._wheelYAction=wi.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==wi.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==wi.MoveRelative||(this._wheelZAction=wi.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==wi.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==wi.RotateRelative||(this._wheelXAction=wi.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==wi.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==wi.RotateRelative||(this._wheelYAction=wi.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==wi.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==wi.RotateRelative||(this._wheelZAction=wi.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==wi.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==wi.MoveScene||(this._wheelXAction=wi.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==wi.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==wi.MoveScene||(this._wheelYAction=wi.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==wi.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==wi.MoveScene||(this._wheelZAction=wi.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==wi.MoveScene?null:this._wheelZActionCoordinate}checkInputs(){if(this._wheelDeltaX===0&&this._wheelDeltaY===0&&this._wheelDeltaZ==0)return;this._moveRelative.setAll(0),this._rotateRelative.setAll(0),this._moveScene.setAll(0),this._updateCamera(),this.camera.getScene().useRightHandedSystem&&(this._moveRelative.z*=-1);let e=q.Zero();this.camera.getViewMatrix().invertToRef(e);let t=b.Zero();b.TransformNormalToRef(this._moveRelative,e,t),this.camera.cameraRotation.x+=this._rotateRelative.x/200,this.camera.cameraRotation.y+=this._rotateRelative.y/200,this.camera.cameraDirection.addInPlace(t),this.camera.cameraDirection.addInPlace(this._moveScene),super.checkInputs()}_updateCamera(){this._updateCameraProperty(this._wheelDeltaX,this._wheelXAction,this._wheelXActionCoordinate),this._updateCameraProperty(this._wheelDeltaY,this._wheelYAction,this._wheelYActionCoordinate),this._updateCameraProperty(this._wheelDeltaZ,this._wheelZAction,this._wheelZActionCoordinate)}_updateCameraProperty(e,t,i){if(e===0||t===null||i===null)return;let r=null;switch(t){case wi.MoveRelative:r=this._moveRelative;break;case wi.RotateRelative:r=this._rotateRelative;break;case wi.MoveScene:r=this._moveScene;break}switch(i){case 0:r.set(e,0,0);break;case 1:r.set(0,e,0);break;case 2:r.set(0,0,e);break}}};P([F()],zs.prototype,"wheelXMoveRelative",null);P([F()],zs.prototype,"wheelYMoveRelative",null);P([F()],zs.prototype,"wheelZMoveRelative",null);P([F()],zs.prototype,"wheelXRotateRelative",null);P([F()],zs.prototype,"wheelYRotateRelative",null);P([F()],zs.prototype,"wheelZRotateRelative",null);P([F()],zs.prototype,"wheelXMoveScene",null);P([F()],zs.prototype,"wheelYMoveScene",null);P([F()],zs.prototype,"wheelZMoveScene",null);Kn.FreeCameraMouseWheelInput=zs});var Dh,p8=I(()=>{Gt();Vt();Tl();Ao();ke();yi();Dh=class{constructor(e=!1){this.allowMouse=e,this.touchAngularSensibility=2e5,this.touchMoveSensibility=250,this.singleFingerRotate=!1,this._offsetX=null,this._offsetY=null,this._pointerPressed=new Array,this._isSafari=_e.IsSafari()}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=null;if(this._pointerInput===void 0&&(this._onLostFocus=()=>{this._offsetX=null,this._offsetY=null},this._pointerInput=i=>{let r=i.event,s=r.pointerType==="mouse"||this._isSafari&&typeof r.pointerType=="undefined";if(!(!this.allowMouse&&s)){if(i.type===st.POINTERDOWN){if(e||r.preventDefault(),this._pointerPressed.push(r.pointerId),this._pointerPressed.length!==1)return;t={x:r.clientX,y:r.clientY}}else if(i.type===st.POINTERUP){e||r.preventDefault();let a=this._pointerPressed.indexOf(r.pointerId);if(a===-1||(this._pointerPressed.splice(a,1),a!=0))return;t=null,this._offsetX=null,this._offsetY=null}else if(i.type===st.POINTERMOVE){if(e||r.preventDefault(),!t||this._pointerPressed.indexOf(r.pointerId)!=0)return;this._offsetX=r.clientX-t.x,this._offsetY=-(r.clientY-t.y)}}}),this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE),this._onLostFocus){let r=this.camera.getEngine().getInputElement();r&&r.addEventListener("blur",this._onLostFocus)}}detachControl(){if(this._pointerInput){if(this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null),this._onLostFocus){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("blur",this._onLostFocus),this._onLostFocus=null}this._pointerPressed.length=0,this._offsetX=null,this._offsetY=null}}checkInputs(){if(this._offsetX===null||this._offsetY===null||this._offsetX===0&&this._offsetY===0)return;let e=this.camera,t=e._calculateHandednessMultiplier();if(e.cameraRotation.y=this._offsetX*t/this.touchAngularSensibility,this.singleFingerRotate&&this._pointerPressed.length===1||!this.singleFingerRotate&&this._pointerPressed.length>1)e.cameraRotation.x=-(this._offsetY*t)/this.touchAngularSensibility;else{let r=e._computeLocalCameraSpeed(),s=$.Vector3[0];s.copyFromFloats(0,0,this.touchMoveSensibility!==0?r*this._offsetY/this.touchMoveSensibility:0),q.RotationYawPitchRollToRef(e.rotation.y,e.rotation.x,0,e._cameraRotationMatrix),b.TransformCoordinatesToRef(s,e._cameraRotationMatrix,s),e.cameraDirection.addInPlace(s)}}getClassName(){return"FreeCameraTouchInput"}getSimpleName(){return"touch"}};P([F()],Dh.prototype,"touchAngularSensibility",void 0);P([F()],Dh.prototype,"touchMoveSensibility",void 0);Kn.FreeCameraTouchInput=Dh});var hb,_8=I(()=>{Tl();d8();h8();m8();p8();hb=class extends ip{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new Qn),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new Ch(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new zs,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new Dh),this}clear(){super.clear(),this._mouseInput=null}}});var Oc,g8=I(()=>{Gt();Vt();ke();pD();_8();yi();Yi();Vr();Oc=class extends Gs{get angularSensibility(){let e=this.inputs.attached.mouse;return e?e.angularSensibility:0}set angularSensibility(e){let t=this.inputs.attached.mouse;t&&(t.angularSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysUpward(){let e=this.inputs.attached.keyboard;return e?e.keysUpward:[]}set keysUpward(e){let t=this.inputs.attached.keyboard;t&&(t.keysUpward=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysDownward(){let e=this.inputs.attached.keyboard;return e?e.keysDownward:[]}set keysDownward(e){let t=this.inputs.attached.keyboard;t&&(t.keysDownward=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get keysRotateLeft(){let e=this.inputs.attached.keyboard;return e?e.keysRotateLeft:[]}set keysRotateLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateLeft=e)}get keysRotateRight(){let e=this.inputs.attached.keyboard;return e?e.keysRotateRight:[]}set keysRotateRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateRight=e)}get keysRotateUp(){let e=this.inputs.attached.keyboard;return e?e.keysRotateUp:[]}set keysRotateUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateUp=e)}get keysRotateDown(){let e=this.inputs.attached.keyboard;return e?e.keysRotateDown:[]}set keysRotateDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateDown=e)}constructor(e,t,i,r=!0){super(e,t,i,r),this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.checkCollisions=!1,this.applyGravity=!1,this._needMoveForGravity=!1,this._oldPosition=b.Zero(),this._diffPosition=b.Zero(),this._newPosition=b.Zero(),this._collisionMask=-1,this._onCollisionPositionChange=(s,a,o=null)=>{this._newPosition.copyFrom(a),this._newPosition.subtractToRef(this._oldPosition,this._diffPosition),this._diffPosition.length()>Ie.CollisionsEpsilon&&(this.position.addToRef(this._diffPosition,this._deferredPositionUpdate),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate),this.onCollide&&o&&this.onCollide(o))},this.inputs=new hb(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=_e.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(t)}detachControl(){this.inputs.detachElement(),this.cameraDirection=new b(0,0,0),this.cameraRotation=new Fe(0,0)}get collisionMask(){return this._collisionMask}set collisionMask(e){this._collisionMask=isNaN(e)?-1:e}_collideWithWorld(e){let t;this.parent?t=b.TransformCoordinates(this.position,this.parent.getWorldMatrix()):t=this.position,t.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);let i=this.getScene().collisionCoordinator;this._collider||(this._collider=i.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;let r=e;this.applyGravity&&(r=e.add(this.getScene().gravity)),i.getNewPosition(this._oldPosition,r,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}_checkInputs(){this._localDirection||(this._localDirection=b.Zero(),this._transformedDirection=b.Zero()),this.inputs.checkInputs(),super._checkInputs()}set needMoveForGravity(e){this._needMoveForGravity=e}get needMoveForGravity(){return this._needMoveForGravity}_decideIfNeedsToMove(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):super._updatePosition()}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"FreeCamera"}};P([Xr()],Oc.prototype,"ellipsoid",void 0);P([Xr()],Oc.prototype,"ellipsoidOffset",void 0);P([F()],Oc.prototype,"checkCollisions",void 0);P([F()],Oc.prototype,"applyGravity",void 0);Ft("BABYLON.FreeCamera",Oc)});var Ha,ub=I(()=>{ke();ol();la();Ha=class n extends _i{get _matrix(){return this._compose(),this._localMatrix}set _matrix(e){e.updateFlag===this._localMatrix.updateFlag&&!this._needToCompose||(this._needToCompose=!1,this._localMatrix.copyFrom(e),this._markAsDirtyAndDecompose())}constructor(e,t,i=null,r=null,s=null,a=null,o=null){var l;super(e,t.getScene(),!1),this.name=e,this.children=[],this.animations=[],this._index=null,this._scalingDeterminant=1,this._needToDecompose=!0,this._needToCompose=!1,this._linkedTransformNode=null,this._waitingTransformNodeId=null,this._waitingTransformNodeUniqueId=null,this._skeleton=t,this._localMatrix=(l=r==null?void 0:r.clone())!=null?l:q.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new q,this._absoluteBindMatrix=new q,this._absoluteInverseBindMatrix=new q,this._finalMatrix=new q,t.bones.push(this),this.setParent(i,!1),this._updateAbsoluteBindMatrices()}getClassName(){return"Bone"}getSkeleton(){return this._skeleton}get parent(){return this._parentNode}getParent(){return this.parent}getChildren(){return this.children}getIndex(){return this._index===null?this.getSkeleton().bones.indexOf(this):this._index}set parent(e){this.setParent(e)}setParent(e,t=!0){if(this.parent!==e){if(this.parent){let i=this.parent.children.indexOf(this);i!==-1&&this.parent.children.splice(i,1)}this._parentNode=e,this.parent&&this.parent.children.push(this),t&&this._updateAbsoluteBindMatrices(),this.markAsDirty()}}getLocalMatrix(){return this._compose(),this._localMatrix}getBindMatrix(){return this._bindMatrix}getBaseMatrix(){return this.getBindMatrix()}getRestMatrix(){return this._restMatrix}getRestPose(){return this.getRestMatrix()}setRestMatrix(e){this._restMatrix.copyFrom(e)}setRestPose(e){this.setRestMatrix(e)}getBindPose(){return this.getBindMatrix()}setBindMatrix(e){this.updateMatrix(e)}setBindPose(e){this.setBindMatrix(e)}getFinalMatrix(){return this._finalMatrix}getWorldMatrix(){return this.getFinalMatrix()}returnToRest(){var e;if(this._linkedTransformNode){let t=$.Vector3[0],i=$.Quaternion[0],r=$.Vector3[1];this.getRestMatrix().decompose(t,i,r),this._linkedTransformNode.position.copyFrom(r),this._linkedTransformNode.rotationQuaternion=(e=this._linkedTransformNode.rotationQuaternion)!=null?e:Xe.Identity(),this._linkedTransformNode.rotationQuaternion.copyFrom(i),this._linkedTransformNode.scaling.copyFrom(t)}else this._matrix=this._restMatrix}getAbsoluteInverseBindMatrix(){return this._absoluteInverseBindMatrix}getInvertedAbsoluteTransform(){return this.getAbsoluteInverseBindMatrix()}getAbsoluteMatrix(){return this._skeleton.computeAbsoluteMatrices(),this._absoluteMatrix}getAbsoluteTransform(){return this.getAbsoluteMatrix()}linkTransformNode(e){this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode--,this._linkedTransformNode=e,this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode++}getTransformNode(){return this._linkedTransformNode}get position(){return this._decompose(),this._localPosition}set position(e){this._decompose(),this._localPosition.copyFrom(e),this._markAsDirtyAndCompose()}get rotation(){return this.getRotation()}set rotation(e){this.setRotation(e)}get rotationQuaternion(){return this._decompose(),this._localRotation}set rotationQuaternion(e){this.setRotationQuaternion(e)}get scaling(){return this.getScale()}set scaling(e){this.setScale(e)}get animationPropertiesOverride(){return this._skeleton.animationPropertiesOverride}_decompose(){this._needToDecompose&&(this._needToDecompose=!1,this._localScaling||(this._localScaling=b.Zero(),this._localRotation=Xe.Zero(),this._localPosition=b.Zero()),this._localMatrix.decompose(this._localScaling,this._localRotation,this._localPosition))}_compose(){if(this._needToCompose){if(!this._localScaling){this._needToCompose=!1;return}this._needToCompose=!1,q.ComposeToRef(this._localScaling,this._localRotation,this._localPosition,this._localMatrix)}}updateMatrix(e,t=!0,i=!0){this._bindMatrix.copyFrom(e),t&&this._updateAbsoluteBindMatrices(),i?this._matrix=e:this.markAsDirty()}_updateAbsoluteBindMatrices(e,t=!0){if(e||(e=this._bindMatrix),this.parent?e.multiplyToRef(this.parent._absoluteBindMatrix,this._absoluteBindMatrix):this._absoluteBindMatrix.copyFrom(e),this._absoluteBindMatrix.invertToRef(this._absoluteInverseBindMatrix),t)for(let i=0;i{Gr();gv=class n extends ge{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,h,u){super(null,s,!a,o,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,f),this.format=r,this._engine&&(!this._engine._caps.textureFloatLinearFiltering&&c===1&&(l=1),!this._engine._caps.textureHalfFloatLinearFiltering&&c===2&&(l=1),this._texture=this._engine.createRawTexture(e,t,i,r,a,o,l,null,c,f!=null?f:0,d!=null?d:!1,u),this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._waitingForData=!!h&&!e)}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._getEngine().updateRawTexture(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,this._texture._useSRGBBuffer,t),this._waitingForData=!1}clone(){if(!this._texture)return super.clone();let e=new n(null,this.getSize().width,this.getSize().height,this.format,this.getScene(),this._texture.generateMipMaps,this._invertY,this.samplingMode,this._texture.type,this._texture._creationFlags,this._useSRGBBuffer);return e._texture=this._texture,this._texture.incrementReferences(),e}isReady(){return super.isReady()&&!this._waitingForData}static CreateLuminanceTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,1,r,s,a,o)}static CreateLuminanceAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,2,r,s,a,o)}static CreateAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,0,r,s,a,o)}static CreateRGBTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1){return new n(e,t,i,4,r,s,a,o,l,c,f)}static CreateRGBATexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1,d=!1){return new n(e,t,i,5,r,s,a,o,l,c,f,d)}static CreateRGBAStorageTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=!1){return new n(e,t,i,5,r,s,a,o,l,1,c)}static CreateRTexture(e,t,i,r,s=!0,a=!1,o=ge.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l)}static CreateRStorageTexture(e,t,i,r,s=!0,a=!1,o=ge.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l,1)}}});var mb,E8=I(()=>{ub();hi();ke();v8();wf();oD();Ni();Pt();Eg();mb=class n{get useTextureToStoreBoneMatrices(){return this._useTextureToStoreBoneMatrices}set useTextureToStoreBoneMatrices(e){this._useTextureToStoreBoneMatrices=e,this._markAsDirty()}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}get isUsingTextureForMatrices(){return this.useTextureToStoreBoneMatrices&&this._canUseTextureForBones}get uniqueId(){return this._uniqueId}constructor(e,t,i){this.name=e,this.id=t,this.bones=[],this.needInitialSkinMatrix=!1,this._isDirty=!0,this._meshesWithPoseMatrix=new Array,this._identity=q.Identity(),this._currentRenderId=-1,this._textureWidth=0,this._textureHeight=1,this._ranges={},this._absoluteTransformIsDirty=!0,this._canUseTextureForBones=!1,this._uniqueId=0,this._numBonesWithLinkedTransformNode=0,this._hasWaitingData=null,this._parentContainer=null,this.doNotSerialize=!1,this._useTextureToStoreBoneMatrices=!0,this._animationPropertiesOverride=null,this.onBeforeComputeObservable=new ie,this.metadata=null,this.bones=[],this._scene=i||Oe.LastCreatedScene,this._uniqueId=this._scene.getUniqueId(),this._scene.addSkeleton(this),this._isDirty=!0;let r=this._scene.getEngine().getCaps();this._canUseTextureForBones=r.textureFloat&&r.maxVertexTextureImageUnits>0}getClassName(){return"Skeleton"}getChildren(){return this.bones.filter(e=>!e.getParent())}getTransformMatrices(e){if(this.needInitialSkinMatrix){if(!e)throw new Error("getTransformMatrices: When using the needInitialSkinMatrix flag, a mesh must be provided");return e._bonesTransformMatrices||this.prepare(!0),e._bonesTransformMatrices}return(!this._transformMatrices||this._isDirty)&&this.prepare(!this._transformMatrices),this._transformMatrices}getTransformMatrixTexture(e){return this.needInitialSkinMatrix&&e._transformMatrixTexture?e._transformMatrixTexture:this._transformMatrixTexture}getScene(){return this._scene}toString(e){let t=`Name: ${this.name}, nBones: ${this.bones.length}`;if(t+=`, nAnimationRanges: ${this._ranges?Object.keys(this._ranges).length:"none"}`,e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i&&(t+=", ",i=!1),t+=r;t+="}"}return t}getBoneIndexByName(e){for(let t=0,i=this.bones.length;t-1&&this._meshesWithPoseMatrix.splice(t,1)}_computeTransformMatrices(e,t){this.onBeforeComputeObservable.notifyObservers(this);for(let i=0;i0){for(let r of this.bones)if(r._linkedTransformNode){let s=r._linkedTransformNode;r.position=s.position,s.rotationQuaternion?r.rotationQuaternion=s.rotationQuaternion:r.rotation=s.rotation,r.scaling=s.scaling}}let t=null;if(this.needInitialSkinMatrix)for(let r of this._meshesWithPoseMatrix){let s=r.getPoseMatrix(),a=this._isDirty;if(t===null&&(t=this._computeTextureSize()),(!r._bonesTransformMatrices||r._bonesTransformMatrices.length!==t)&&(r._bonesTransformMatrices=new Float32Array(t),a=!0),!!a){if(this._synchronizedWithMesh!==r){this._synchronizedWithMesh=r;for(let o of this.bones)o.getParent()||(o.getBindMatrix().multiplyToRef(s,$.Matrix[1]),o._updateAbsoluteBindMatrices($.Matrix[1]));if(this.isUsingTextureForMatrices){let o=(i=r._transformMatrixTexture)==null?void 0:i.getSize(),l=o?o.width*o.height*4:0;(!r._transformMatrixTexture||l!==t)&&(r._transformMatrixTexture&&r._transformMatrixTexture.dispose(),r._transformMatrixTexture=gv.CreateRGBATexture(r._bonesTransformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))}}this._computeTransformMatrices(r._bonesTransformMatrices,s),this.isUsingTextureForMatrices&&r._transformMatrixTexture&&r._transformMatrixTexture.update(r._bonesTransformMatrices)}}else{if(!this._isDirty)return;t===null&&(t=this._computeTextureSize()),(!this._transformMatrices||this._transformMatrices.length!==t)&&(this._transformMatrices=new Float32Array(t),this.isUsingTextureForMatrices&&(this._transformMatrixTexture&&this._transformMatrixTexture.dispose(),this._transformMatrixTexture=gv.CreateRGBATexture(this._transformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))),this._computeTransformMatrices(this._transformMatrices,null),this.isUsingTextureForMatrices&&this._transformMatrixTexture&&this._transformMatrixTexture.update(this._transformMatrices)}this._isDirty=!1}getAnimatables(){if(!this._animatables||this._animatables.length!==this.bones.length){this._animatables=[];for(let e=0;e-1&&this._parentContainer.skeletons.splice(e,1),this._parentContainer=null}this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null)}serialize(){var t,i;let e={};e.name=this.name,e.id=this.id,e.uniqueId=this.uniqueId,this.dimensionsAtRest&&(e.dimensionsAtRest=this.dimensionsAtRest.asArray()),e.bones=[],e.needInitialSkinMatrix=this.needInitialSkinMatrix,this.metadata&&(e.metadata=this.metadata);for(let r=0;r0&&(o.animation=s.animations[0].serialize()),e.ranges=[];for(let l in this._ranges){let c=this._ranges[l];if(!c)continue;let f={};f.name=l,f.from=c.from,f.to=c.to,e.ranges.push(f)}}return e}static Parse(e,t){let i=new n(e.name,e.id,t);e.dimensionsAtRest&&(i.dimensionsAtRest=b.FromArray(e.dimensionsAtRest)),i.needInitialSkinMatrix=e.needInitialSkinMatrix,e.metadata&&(i.metadata=e.metadata);let r;for(r=0;r-1&&(o=i.bones[s.parentBoneIndex]);let l=s.rest?q.FromArray(s.rest):null,c=new Ha(s.name,i,o,q.FromArray(s.matrix),l,null,a);s.id!==void 0&&s.id!==null&&(c.id=s.id),s.length&&(c.length=s.length),s.metadata&&(c.metadata=s.metadata),s.animation&&c.animations.push(dt.Parse(s.animation)),s.linkedTransformNodeId!==void 0&&s.linkedTransformNodeId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeId=s.linkedTransformNodeId),s.linkedTransformNodeUniqueId!==void 0&&s.linkedTransformNodeUniqueId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeUniqueId=s.linkedTransformNodeUniqueId)}if(e.ranges)for(r=0;r0&&(e=this._meshesWithPoseMatrix[0].getPoseMatrix()),e}sortBones(){let e=[],t=new Array(this.bones.length);for(let i=0;i{Gt();hi();Ni();Wi();Vt();br();Yi();rd=class n{get influence(){return this._influence}set influence(e){if(this._influence===e)return;let t=this._influence;this._influence=e,this.onInfluenceChanged.hasObservers()&&this.onInfluenceChanged.notifyObservers(t===0||e===0)}get animationPropertiesOverride(){return!this._animationPropertiesOverride&&this._scene?this._scene.animationPropertiesOverride:this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}constructor(e,t=0,i=null,r=null){this.name=e,this.animations=[],this._positions=null,this._normals=null,this._tangents=null,this._uvs=null,this._uv2s=null,this._colors=null,this._uniqueId=0,this.onInfluenceChanged=new ie,this._onDataLayoutChanged=new ie,this.morphTargetManager=null,this._animationPropertiesOverride=null,this.id=e,this.morphTargetManager=r,this._scene=i||Oe.LastCreatedScene,this.influence=t,this._scene&&(this._uniqueId=this._scene.getUniqueId())}get uniqueId(){return this._uniqueId}get hasPositions(){return!!this._positions}get hasNormals(){return!!this._normals}get hasTangents(){return!!this._tangents}get hasUVs(){return!!this._uvs}get hasUV2s(){return!!this._uv2s}get hasColors(){return!!this._colors}get vertexCount(){return this._positions?this._positions.length/3:this._normals?this._normals.length/3:this._tangents?this._tangents.length/3:this._uvs?this._uvs.length/2:this._uv2s?this._uv2s.length/2:this._colors?this._colors.length/4:0}setPositions(e){let t=this.hasPositions;this._positions=e,t!==this.hasPositions&&this._onDataLayoutChanged.notifyObservers(void 0)}getPositions(){return this._positions}setNormals(e){let t=this.hasNormals;this._normals=e,t!==this.hasNormals&&this._onDataLayoutChanged.notifyObservers(void 0)}getNormals(){return this._normals}setTangents(e){let t=this.hasTangents;this._tangents=e,t!==this.hasTangents&&this._onDataLayoutChanged.notifyObservers(void 0)}getTangents(){return this._tangents}setUVs(e){let t=this.hasUVs;this._uvs=e,t!==this.hasUVs&&this._onDataLayoutChanged.notifyObservers(void 0)}getUVs(){return this._uvs}setUV2s(e){let t=this.hasUV2s;this._uv2s=e,t!==this.hasUV2s&&this._onDataLayoutChanged.notifyObservers(void 0)}getUV2s(){return this._uv2s}setColors(e){let t=this.hasColors;this._colors=e,t!==this.hasColors&&this._onDataLayoutChanged.notifyObservers(void 0)}getColors(){return this._colors}clone(){let e=it.Clone(()=>new n(this.name,this.influence,this._scene,this.morphTargetManager),this);return e._positions=this._positions,e._normals=this._normals,e._tangents=this._tangents,e._uvs=this._uvs,e._uv2s=this._uv2s,e._colors=this._colors,e}serialize(){let e={};return e.name=this.name,e.influence=this.influence,this.id!=null&&(e.id=this.id),e.uniqueId=this.uniqueId,e.positions=Array.prototype.slice.call(this.getPositions()),this.hasNormals&&(e.normals=Array.prototype.slice.call(this.getNormals())),this.hasTangents&&(e.tangents=Array.prototype.slice.call(this.getTangents())),this.hasUVs&&(e.uvs=Array.prototype.slice.call(this.getUVs())),this.hasUV2s&&(e.uv2s=Array.prototype.slice.call(this.getUV2s())),this.hasColors&&(e.colors=Array.prototype.slice.call(this.getColors())),it.AppendSerializedAnimations(this,e),e}getClassName(){return"MorphTarget"}static Parse(e,t,i=null){let r=new n(e.name,e.influence,t,i);if(r.setPositions(e.positions),e.id!=null&&(r.id=e.id),e.normals&&r.setNormals(e.normals),e.tangents&&r.setTangents(e.tangents),e.uvs&&r.setUVs(e.uvs),e.uv2s&&r.setUV2s(e.uv2s),e.colors&&r.setColors(e.colors),e.animations){for(let s=0;s{Gr();pb=class n extends ge{get depth(){return this._depth}constructor(e,t,i,r,s,a,o=!0,l=!1,c=ge.TRILINEAR_SAMPLINGMODE,f=0,d,h){super(null,a,!o,l),this.format=s,this._texture=a.getEngine().createRawTexture2DArray(e,t,i,r,s,o,l,c,null,f,d!=null?d:0,h),this._depth=r,this.is2DArray=!0}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._texture&&this._getEngine().updateRawTexture2DArray(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,t)}static CreateRGBATexture(e,t,i,r,s,a=!0,o=!1,l=3,c=0){return new n(e,t,i,r,5,s,a,o,l,c)}}});var Lh,T8=I(()=>{So();Pt();Ni();gO();S8();Lh=class n{set areUpdatesFrozen(e){e?this._blockCounter++:(this._blockCounter--,this._blockCounter<=0&&(this._blockCounter=0,this._syncActiveTargets(this._forceUpdateWhenUnfrozen),this._forceUpdateWhenUnfrozen=!1))}get areUpdatesFrozen(){return this._blockCounter>0}constructor(e=null,t){if(this.meshName=t,this._targets=new Array,this._targetInfluenceChangedObservers=new Array,this._targetDataLayoutChangedObservers=new Array,this._activeTargets=new Vi(16),this._supportsPositions=!1,this._supportsNormals=!1,this._supportsTangents=!1,this._supportsUVs=!1,this._supportsUV2s=!1,this._supportsColors=!1,this._vertexCount=0,this._uniqueId=0,this._tempInfluences=new Array,this._canUseTextureForTargets=!1,this._blockCounter=0,this._mustSynchronize=!0,this._forceUpdateWhenUnfrozen=!1,this._textureVertexStride=0,this._textureWidth=0,this._textureHeight=1,this._parentContainer=null,this.optimizeInfluencers=!0,this.enablePositionMorphing=!0,this.enableNormalMorphing=!0,this.enableTangentMorphing=!0,this.enableUVMorphing=!0,this.enableUV2Morphing=!0,this.enableColorMorphing=!0,this._numMaxInfluencers=0,this._useTextureToStoreTargets=!0,this.metadata=null,this._influencesAreDirty=!1,this._needUpdateInfluences=!1,e||(e=Oe.LastCreatedScene),this._scene=e,this._scene){this._scene.addMorphTargetManager(this),this._uniqueId=this._scene.getUniqueId();let i=this._scene.getEngine().getCaps();this._canUseTextureForTargets=i.canUseGLVertexID&&i.textureFloat&&i.maxVertexTextureImageUnits>0&&i.texture2DArrayMaxLayerCount>1}}get numMaxInfluencers(){return n.ConstantTargetCountForTextureMode>0&&this.isUsingTextureForTargets?n.ConstantTargetCountForTextureMode:this._numMaxInfluencers}set numMaxInfluencers(e){this._numMaxInfluencers!==e&&(this._numMaxInfluencers=e,this._mustSynchronize=!0,this._syncActiveTargets())}get uniqueId(){return this._uniqueId}get vertexCount(){return this._vertexCount}get supportsPositions(){return this._supportsPositions&&this.enablePositionMorphing}get supportsNormals(){return this._supportsNormals&&this.enableNormalMorphing}get supportsTangents(){return this._supportsTangents&&this.enableTangentMorphing}get supportsUVs(){return this._supportsUVs&&this.enableUVMorphing}get supportsUV2s(){return this._supportsUV2s&&this.enableUV2Morphing}get supportsColors(){return this._supportsColors&&this.enableColorMorphing}get hasPositions(){return this._supportsPositions}get hasNormals(){return this._supportsNormals}get hasTangents(){return this._supportsTangents}get hasUVs(){return this._supportsUVs}get hasUV2s(){return this._supportsUV2s}get hasColors(){return this._supportsColors}get numTargets(){return this._targets.length}get numInfluencers(){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.length}get influences(){return this._influencesAreDirty&&this._syncActiveTargets(),this._influences}get useTextureToStoreTargets(){return this._useTextureToStoreTargets}set useTextureToStoreTargets(e){this._useTextureToStoreTargets!==e&&(this._useTextureToStoreTargets=e,this._mustSynchronize=!0,this._syncActiveTargets())}get isUsingTextureForTargets(){var e;return n.EnableTextureStorage&&this.useTextureToStoreTargets&&this._canUseTextureForTargets&&!((e=this._scene)!=null&&e.getEngine().getCaps().disableMorphTargetTexture)}getActiveTarget(e){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.data[e]}getTarget(e){return this._targets[e]}getTargetByName(e){for(let t of this._targets)if(t.name===e)return t;return null}addTarget(e){this._targets.push(e),this._targetInfluenceChangedObservers.push(e.onInfluenceChanged.add(t=>{this.areUpdatesFrozen&&t&&(this._forceUpdateWhenUnfrozen=!0),this._influencesAreDirty=!0,this._needUpdateInfluences=this._needUpdateInfluences||t})),this._targetDataLayoutChangedObservers.push(e._onDataLayoutChanged.add(()=>{this._mustSynchronize=!0,this._syncActiveTargets()})),this._mustSynchronize=!0,this._syncActiveTargets()}removeTarget(e){let t=this._targets.indexOf(e);t>=0&&(this._targets.splice(t,1),e.onInfluenceChanged.remove(this._targetInfluenceChangedObservers.splice(t,1)[0]),e._onDataLayoutChanged.remove(this._targetDataLayoutChangedObservers.splice(t,1)[0]),this._mustSynchronize=!0,this._syncActiveTargets()),this._scene&&this._scene.stopAnimation(e)}_bind(e){this._influencesAreDirty&&this._syncActiveTargets(),e.setFloat3("morphTargetTextureInfo",this._textureVertexStride,this._textureWidth,this._textureHeight),e.setFloatArray("morphTargetTextureIndices",this._morphTargetTextureIndices),e.setTexture("morphTargets",this._targetStoreTexture),e.setFloat("morphTargetCount",this.numInfluencers)}clone(){let e=new n(this._scene);e.areUpdatesFrozen=!0;for(let t of this._targets)e.addTarget(t.clone());return e.areUpdatesFrozen=!1,e.enablePositionMorphing=this.enablePositionMorphing,e.enableNormalMorphing=this.enableNormalMorphing,e.enableTangentMorphing=this.enableTangentMorphing,e.enableUVMorphing=this.enableUVMorphing,e.enableUV2Morphing=this.enableUV2Morphing,e.enableColorMorphing=this.enableColorMorphing,e.metadata=this.metadata,e}serialize(){let e={};e.id=this.uniqueId,e.meshName=this.meshName,e.targets=[];for(let t of this._targets)e.targets.push(t.serialize());return this.metadata&&(e.metadata=this.metadata),e}_syncActiveTargets(e=!1){if(this.areUpdatesFrozen)return;e=e||this._needUpdateInfluences,this._needUpdateInfluences=!1,this._influencesAreDirty=!1;let t=!!this._targetStoreTexture,i=this.isUsingTextureForTargets;(this._mustSynchronize||t!==i)&&(this._mustSynchronize=!1,this.synchronize());let r=0;this._activeTargets.reset(),(!this._morphTargetTextureIndices||this._morphTargetTextureIndices.length!==this._targets.length)&&(this._morphTargetTextureIndices=new Float32Array(this._targets.length));let s=-1;for(let a of this._targets)if(s++,!(a.influence===0&&this.optimizeInfluencers)){if(this._activeTargets.length>=n.MaxActiveMorphTargetsInVertexAttributeMode&&!this.isUsingTextureForTargets)break;this._activeTargets.push(a),this._morphTargetTextureIndices[r]=s,this._tempInfluences[r++]=a.influence}this._morphTargetTextureIndices.length!==r&&(this._morphTargetTextureIndices=this._morphTargetTextureIndices.slice(0,r)),(!this._influences||this._influences.length!==r)&&(this._influences=new Float32Array(r));for(let a=0;ae.getCaps().texture2DArrayMaxLayerCount&&(this.useTextureToStoreTargets=!1);for(let i of this._targets){this._supportsPositions=this._supportsPositions&&i.hasPositions,this._supportsNormals=this._supportsNormals&&i.hasNormals,this._supportsTangents=this._supportsTangents&&i.hasTangents,this._supportsUVs=this._supportsUVs&&i.hasUVs,this._supportsUV2s=this._supportsUV2s&&i.hasUV2s,this._supportsColors=this._supportsColors&&i.hasColors;let r=i.vertexCount;if(this._vertexCount===0)this._vertexCount=r;else if(this._vertexCount!==r){ee.Error(`Incompatible target. Targets must all have the same vertices count. Current vertex count: ${this._vertexCount}, vertex count for target "${i.name}": ${r}`);return}}if(this.isUsingTextureForTargets){this._textureVertexStride=0,this._supportsPositions&&this._textureVertexStride++,this._supportsNormals&&this._textureVertexStride++,this._supportsTangents&&this._textureVertexStride++,this._supportsUVs&&this._textureVertexStride++,this._supportsUV2s&&this._textureVertexStride++,this._supportsColors&&this._textureVertexStride++,this._textureWidth=this._vertexCount*this._textureVertexStride||1,this._textureHeight=1;let i=e.getCaps().maxTextureSize;this._textureWidth>i&&(this._textureHeight=Math.ceil(this._textureWidth/i),this._textureWidth=i);let r=this._targets.length,s=new Float32Array(r*this._textureWidth*this._textureHeight*4),a;for(let o=0;o-1&&this._parentContainer.morphTargetManagers.splice(e,1),this._parentContainer=null}for(let e of this._targets)this._scene.stopAnimation(e)}}static Parse(e,t){let i=new n(t);for(let r of e.targets)i.addTarget(rd.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};Lh.EnableTextureStorage=!0;Lh.MaxActiveMorphTargetsInVertexAttributeMode=8;Lh.ConstantTargetCountForTextureMode=0});function _b(n,e,t){vv(n)&&ee.Warn(`Extension with the name '${n}' already exists`),vO.set(n,{isGLTFExtension:e,factory:t})}function vv(n){return vO.delete(n)}var vO,A8,EO=I(()=>{Pt();vO=new Map,A8=vO});var W,SO=I(()=>{W=class{};W.AUTOSAMPLERSUFFIX="Sampler";W.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";W.ALPHA_DISABLE=0;W.ALPHA_ADD=1;W.ALPHA_COMBINE=2;W.ALPHA_SUBTRACT=3;W.ALPHA_MULTIPLY=4;W.ALPHA_MAXIMIZED=5;W.ALPHA_ONEONE=6;W.ALPHA_PREMULTIPLIED=7;W.ALPHA_PREMULTIPLIED_PORTERDUFF=8;W.ALPHA_INTERPOLATE=9;W.ALPHA_SCREENMODE=10;W.ALPHA_ONEONE_ONEONE=11;W.ALPHA_ALPHATOCOLOR=12;W.ALPHA_REVERSEONEMINUS=13;W.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;W.ALPHA_ONEONE_ONEZERO=15;W.ALPHA_EXCLUSION=16;W.ALPHA_LAYER_ACCUMULATE=17;W.ALPHA_MIN=18;W.ALPHA_MAX=19;W.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;W.ALPHA_EQUATION_ADD=0;W.ALPHA_EQUATION_SUBSTRACT=1;W.ALPHA_EQUATION_REVERSE_SUBTRACT=2;W.ALPHA_EQUATION_MAX=3;W.ALPHA_EQUATION_MIN=4;W.ALPHA_EQUATION_DARKEN=5;W.DELAYLOADSTATE_NONE=0;W.DELAYLOADSTATE_LOADED=1;W.DELAYLOADSTATE_LOADING=2;W.DELAYLOADSTATE_NOTLOADED=4;W.NEVER=512;W.ALWAYS=519;W.LESS=513;W.EQUAL=514;W.LEQUAL=515;W.GREATER=516;W.GEQUAL=518;W.NOTEQUAL=517;W.KEEP=7680;W.ZERO=0;W.REPLACE=7681;W.INCR=7682;W.DECR=7683;W.INVERT=5386;W.INCR_WRAP=34055;W.DECR_WRAP=34056;W.TEXTURE_CLAMP_ADDRESSMODE=0;W.TEXTURE_WRAP_ADDRESSMODE=1;W.TEXTURE_MIRROR_ADDRESSMODE=2;W.TEXTURE_CREATIONFLAG_STORAGE=1;W.TEXTUREFORMAT_ALPHA=0;W.TEXTUREFORMAT_LUMINANCE=1;W.TEXTUREFORMAT_LUMINANCE_ALPHA=2;W.TEXTUREFORMAT_RGB=4;W.TEXTUREFORMAT_RGBA=5;W.TEXTUREFORMAT_RED=6;W.TEXTUREFORMAT_R=6;W.TEXTUREFORMAT_R16_UNORM=33322;W.TEXTUREFORMAT_RG16_UNORM=33324;W.TEXTUREFORMAT_RGB16_UNORM=32852;W.TEXTUREFORMAT_RGBA16_UNORM=32859;W.TEXTUREFORMAT_R16_SNORM=36760;W.TEXTUREFORMAT_RG16_SNORM=36761;W.TEXTUREFORMAT_RGB16_SNORM=36762;W.TEXTUREFORMAT_RGBA16_SNORM=36763;W.TEXTUREFORMAT_RG=7;W.TEXTUREFORMAT_RED_INTEGER=8;W.TEXTUREFORMAT_R_INTEGER=8;W.TEXTUREFORMAT_RG_INTEGER=9;W.TEXTUREFORMAT_RGB_INTEGER=10;W.TEXTUREFORMAT_RGBA_INTEGER=11;W.TEXTUREFORMAT_BGRA=12;W.TEXTUREFORMAT_DEPTH24_STENCIL8=13;W.TEXTUREFORMAT_DEPTH32_FLOAT=14;W.TEXTUREFORMAT_DEPTH16=15;W.TEXTUREFORMAT_DEPTH24=16;W.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;W.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;W.TEXTUREFORMAT_STENCIL8=19;W.TEXTUREFORMAT_UNDEFINED=4294967295;W.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;W.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;W.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;W.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;W.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;W.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;W.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;W.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;W.TEXTURETYPE_UNSIGNED_BYTE=0;W.TEXTURETYPE_UNSIGNED_INT=0;W.TEXTURETYPE_FLOAT=1;W.TEXTURETYPE_HALF_FLOAT=2;W.TEXTURETYPE_BYTE=3;W.TEXTURETYPE_SHORT=4;W.TEXTURETYPE_UNSIGNED_SHORT=5;W.TEXTURETYPE_INT=6;W.TEXTURETYPE_UNSIGNED_INTEGER=7;W.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;W.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;W.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;W.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;W.TEXTURETYPE_UNSIGNED_INT_24_8=12;W.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;W.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;W.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;W.TEXTURETYPE_UNDEFINED=16;W.TEXTURE_2D=3553;W.TEXTURE_2D_ARRAY=35866;W.TEXTURE_CUBE_MAP=34067;W.TEXTURE_CUBE_MAP_ARRAY=3735928559;W.TEXTURE_3D=32879;W.TEXTURE_NEAREST_SAMPLINGMODE=1;W.TEXTURE_NEAREST_NEAREST=1;W.TEXTURE_BILINEAR_SAMPLINGMODE=2;W.TEXTURE_LINEAR_LINEAR=2;W.TEXTURE_TRILINEAR_SAMPLINGMODE=3;W.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;W.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;W.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;W.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;W.TEXTURE_NEAREST_LINEAR=7;W.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;W.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;W.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;W.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;W.TEXTURE_LINEAR_NEAREST=12;W.TEXTURE_EXPLICIT_MODE=0;W.TEXTURE_SPHERICAL_MODE=1;W.TEXTURE_PLANAR_MODE=2;W.TEXTURE_CUBIC_MODE=3;W.TEXTURE_PROJECTION_MODE=4;W.TEXTURE_SKYBOX_MODE=5;W.TEXTURE_INVCUBIC_MODE=6;W.TEXTURE_EQUIRECTANGULAR_MODE=7;W.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;W.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;W.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;W.TEXTURE_FILTERING_QUALITY_HIGH=64;W.TEXTURE_FILTERING_QUALITY_MEDIUM=16;W.TEXTURE_FILTERING_QUALITY_LOW=8;W.SCALEMODE_FLOOR=1;W.SCALEMODE_NEAREST=2;W.SCALEMODE_CEILING=3;W.MATERIAL_TextureDirtyFlag=1;W.MATERIAL_LightDirtyFlag=2;W.MATERIAL_FresnelDirtyFlag=4;W.MATERIAL_AttributesDirtyFlag=8;W.MATERIAL_MiscDirtyFlag=16;W.MATERIAL_PrePassDirtyFlag=32;W.MATERIAL_ImageProcessingDirtyFlag=64;W.MATERIAL_AllDirtyFlag=127;W.MATERIAL_TriangleFillMode=0;W.MATERIAL_WireFrameFillMode=1;W.MATERIAL_PointFillMode=2;W.MATERIAL_PointListDrawMode=3;W.MATERIAL_LineListDrawMode=4;W.MATERIAL_LineLoopDrawMode=5;W.MATERIAL_LineStripDrawMode=6;W.MATERIAL_TriangleStripDrawMode=7;W.MATERIAL_TriangleFanDrawMode=8;W.MATERIAL_ClockWiseSideOrientation=0;W.MATERIAL_CounterClockWiseSideOrientation=1;W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;W.MATERIAL_DIFFUSE_MODEL_BURLEY=1;W.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;W.MATERIAL_DIFFUSE_MODEL_LEGACY=3;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;W.ACTION_NothingTrigger=0;W.ACTION_OnPickTrigger=1;W.ACTION_OnLeftPickTrigger=2;W.ACTION_OnRightPickTrigger=3;W.ACTION_OnCenterPickTrigger=4;W.ACTION_OnPickDownTrigger=5;W.ACTION_OnDoublePickTrigger=6;W.ACTION_OnPickUpTrigger=7;W.ACTION_OnPickOutTrigger=16;W.ACTION_OnLongPressTrigger=8;W.ACTION_OnPointerOverTrigger=9;W.ACTION_OnPointerOutTrigger=10;W.ACTION_OnEveryFrameTrigger=11;W.ACTION_OnIntersectionEnterTrigger=12;W.ACTION_OnIntersectionExitTrigger=13;W.ACTION_OnKeyDownTrigger=14;W.ACTION_OnKeyUpTrigger=15;W.PARTICLES_BILLBOARDMODE_Y=2;W.PARTICLES_BILLBOARDMODE_ALL=7;W.PARTICLES_BILLBOARDMODE_STRETCHED=8;W.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;W.MESHES_CULLINGSTRATEGY_STANDARD=0;W.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;W.SCENELOADER_NO_LOGGING=0;W.SCENELOADER_MINIMAL_LOGGING=1;W.SCENELOADER_SUMMARY_LOGGING=2;W.SCENELOADER_DETAILED_LOGGING=3;W.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;W.PREPASS_POSITION_TEXTURE_TYPE=1;W.PREPASS_VELOCITY_TEXTURE_TYPE=2;W.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;W.PREPASS_COLOR_TEXTURE_TYPE=4;W.PREPASS_DEPTH_TEXTURE_TYPE=5;W.PREPASS_NORMAL_TEXTURE_TYPE=6;W.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;W.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;W.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;W.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;W.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;W.PREPASS_ALBEDO_TEXTURE_TYPE=12;W.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;W.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;W.BUFFER_CREATIONFLAG_READ=1;W.BUFFER_CREATIONFLAG_WRITE=2;W.BUFFER_CREATIONFLAG_READWRITE=3;W.BUFFER_CREATIONFLAG_UNIFORM=4;W.BUFFER_CREATIONFLAG_VERTEX=8;W.BUFFER_CREATIONFLAG_INDEX=16;W.BUFFER_CREATIONFLAG_STORAGE=32;W.BUFFER_CREATIONFLAG_INDIRECT=64;W.RENDERPASS_MAIN=0;W.INPUT_ALT_KEY=18;W.INPUT_CTRL_KEY=17;W.INPUT_META_KEY1=91;W.INPUT_META_KEY2=92;W.INPUT_META_KEY3=93;W.INPUT_SHIFT_KEY=16;W.SNAPSHOTRENDERING_STANDARD=0;W.SNAPSHOTRENDERING_FAST=1;W.PERSPECTIVE_CAMERA=0;W.ORTHOGRAPHIC_CAMERA=1;W.FOVMODE_VERTICAL_FIXED=0;W.FOVMODE_HORIZONTAL_FIXED=1;W.RIG_MODE_NONE=0;W.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;W.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;W.RIG_MODE_STEREOSCOPIC_INTERLACED=14;W.RIG_MODE_VR=20;W.RIG_MODE_CUSTOM=22;W.MAX_SUPPORTED_UV_SETS=6;W.GL_ALPHA_EQUATION_ADD=32774;W.GL_ALPHA_EQUATION_MIN=32775;W.GL_ALPHA_EQUATION_MAX=32776;W.GL_ALPHA_EQUATION_SUBTRACT=32778;W.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;W.GL_ALPHA_FUNCTION_SRC=768;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;W.GL_ALPHA_FUNCTION_SRC_ALPHA=770;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;W.GL_ALPHA_FUNCTION_DST_ALPHA=772;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;W.GL_ALPHA_FUNCTION_DST_COLOR=774;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;W.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;W.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;W.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;W.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;W.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;W.SnippetUrl="https://snippet.babylonjs.com";W.FOGMODE_NONE=0;W.FOGMODE_EXP=1;W.FOGMODE_EXP2=2;W.FOGMODE_LINEAR=3;W.BYTE=5120;W.UNSIGNED_BYTE=5121;W.SHORT=5122;W.UNSIGNED_SHORT=5123;W.INT=5124;W.UNSIGNED_INT=5125;W.FLOAT=5126;W.PositionKind="position";W.NormalKind="normal";W.TangentKind="tangent";W.UVKind="uv";W.UV2Kind="uv2";W.UV3Kind="uv3";W.UV4Kind="uv4";W.UV5Kind="uv5";W.UV6Kind="uv6";W.ColorKind="color";W.ColorInstanceKind="instanceColor";W.MatricesIndicesKind="matricesIndices";W.MatricesWeightsKind="matricesWeights";W.MatricesIndicesExtraKind="matricesIndicesExtra";W.MatricesWeightsExtraKind="matricesWeightsExtra";W.ANIMATIONTYPE_FLOAT=0;W.ANIMATIONTYPE_VECTOR3=1;W.ANIMATIONTYPE_QUATERNION=2;W.ANIMATIONTYPE_MATRIX=3;W.ANIMATIONTYPE_COLOR3=4;W.ANIMATIONTYPE_COLOR4=7;W.ANIMATIONTYPE_VECTOR2=5;W.ANIMATIONTYPE_SIZE=6;W.ShadowMinZ=0;W.ShadowMaxZ=1e4;W.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;W.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var HJe,x8=I(()=>{HJe=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function nd(n,e,t,i){let r=at(n,e);return i?r[t][i]:r[t]}function at(n,e,t){var i,r,s;return(s=(r=n._data)==null?void 0:r[(i=t==null?void 0:t.fillMode)!=null?i:W.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function on(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=nd(t,r,n,e);return new Fe(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:at,set:(t,i,r,s)=>{let a=nd(i,s,n,e);a.uOffset=t.x,a.vOffset=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uOffset`,()=>`${n}${e?"."+e:""}.vOffset`]},rotation:{type:"number",get:(t,i,r)=>{var s;return(s=nd(t,r,n,e))==null?void 0:s.wAng},getTarget:at,set:(t,i,r,s)=>nd(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=nd(t,r,n,e);return new Fe(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:at,set:(t,i,r,s)=>{let a=nd(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function Ev(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=R8;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function Sv(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=R8;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var Xue,Yue,Kue,jue,que,Zue,R8,TO=I(()=>{ke();SO();Ht();_D();x8();Xue={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTransformNode),getPropertyName:[()=>"length"]},__array__:{__target__:!0,translation:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.position},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.position.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.rotationQuaternion},set:(n,e)=>{var t,i;return(i=(t=e._babylonTransformNode)==null?void 0:t.rotationQuaternion)==null?void 0:i.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.scaling},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.scaling.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{length:{type:"number",get:n=>n._numMorphTargets,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},__array__:{__target__:!0,type:"number",get:(n,e)=>{var t,i;return e!==void 0?(i=(t=n._primitiveBabylonMeshes)==null?void 0:t[0].morphTargetManager)==null?void 0:i.getTarget(e).influence:void 0},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},type:"number[]",get:(n,e)=>[0],getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:n=>{var e,t,i;return q.Compose((e=n._babylonTransformNode)==null?void 0:e.scaling,(t=n._babylonTransformNode)==null?void 0:t.rotationQuaternion,(i=n._babylonTransformNode)==null?void 0:i.position)},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:n=>{var r,s,a,o,l,c,f;let e=q.Identity(),t=n.parent;for(;t&&t.parent;)t=t.parent;let i=((r=n._babylonTransformNode)==null?void 0:r.position._isDirty)||((a=(s=n._babylonTransformNode)==null?void 0:s.rotationQuaternion)==null?void 0:a._isDirty)||((o=n._babylonTransformNode)==null?void 0:o.scaling._isDirty);if(t){let d=(l=t._babylonTransformNode)==null?void 0:l.computeWorldMatrix(!0).invert();d&&((f=(c=n._babylonTransformNode)==null?void 0:c.computeWorldMatrix(i))==null||f.multiplyToRef(d,e))}else n._babylonTransformNode&&e.copyFrom(n._babylonTransformNode.computeWorldMatrix(i));return e},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Wr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Wr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Wr,!0)[0];t&&(t.intensity=n)}}},color:{type:"Color3",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Wr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Wr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Wr,!0)[0];t&&(t.diffuse=n)}}}},KHR_node_visibility:{visible:{type:"boolean",get:n=>n._primitiveBabylonMeshes?n._primitiveBabylonMeshes[0].isVisible:!1,getTarget:()=>{},set:(n,e)=>{e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.forEach(t=>t.isVisible=n)}}}}}},Yue={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},Kue={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>{var t;return(t=e.primitives[0]._instanceData)==null?void 0:t.babylonSourceMesh}),getPropertyName:[()=>"length"]},__array__:{}},jue={__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new Fe((t=(e=n._babylonCamera)==null?void 0:e.orthoLeft)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoRight)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoLeft=n.x,e._babylonCamera.orthoRight=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new Fe((t=(e=n._babylonCamera)==null?void 0:e.orthoBottom)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoTop)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoBottom=n.x,e._babylonCamera.orthoTop=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.getEngine().getAspectRatio(n._babylonCamera)},getTarget:n=>n,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.fov},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.fov=n)},getTarget:n=>n,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}}}},que={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).emissiveColor,set:(n,e,t,i)=>at(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:on("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=nd(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=nd(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:on("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>at(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:on("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=at(n,e,t);return lt.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=at(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:on("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>at(n,e,t).metallic,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).roughness,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:on("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>at(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{at(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>at(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{at(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:on("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>at(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{at(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{at(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:on("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=at(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:at,set:(n,e,t,i)=>at(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:on("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:on("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.dispersion,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>at(n,e,t).emissiveIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>at(n,e,t).indexOfRefraction,getTarget:at,set:(n,e,t,i)=>at(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.intensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.indexOfRefraction,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:on("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.maximumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.minimumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:on("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).sheen.color,getTarget:at,set:(n,e,t,i)=>at(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:on("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).sheen.intensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:on("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>at(n,e,t).metallicF0Factor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).metallicReflectanceColor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:on("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:on("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.refractionIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:on("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.translucencyIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:on("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).subSurface.translucencyColor,getTarget:at,set:(n,e,t,i)=>{var r;return n&&((r=at(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:on("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>at(n,e,t).subSurface.tintColor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.tintColorAtDistance,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.maximumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:on("subSurface","thicknessTexture")}}}}}},Zue={KHR_lights_punctual:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},range:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.range},set:(n,e)=>e._babylonLight?e._babylonLight.range=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"range"]},spot:{innerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.innerAngle},set:(n,e)=>e._babylonLight?e._babylonLight.innerAngle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"innerConeAngle"]},outerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.angle},set:(n,e)=>e._babylonLight?e._babylonLight.angle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},size:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.height},set:(n,e)=>e._babylonLight?e._babylonLight.height=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"size"]},rect:{aspect:{type:"number",get:n=>{var e,t;return((e=n._babylonLight)==null?void 0:e.width)/((t=n._babylonLight)==null?void 0:t.height)},set:(n,e)=>e._babylonLight?e._babylonLight.width=n*e._babylonLight.height:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]}}},EXT_lights_image_based:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTexture),getPropertyName:[n=>"length"]},__array__:{__target__:!0,intensity:{type:"number",get:n=>{var e;return(e=n._babylonTexture)==null?void 0:e.level},set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.level=n)},getTarget:n=>n._babylonTexture},rotation:{type:"Quaternion",get:n=>{var e;return n._babylonTexture&&Xe.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=Xe.Inverse(n)),q.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};R8={cameras:jue,nodes:Xue,materials:que,extensions:Zue,animations:Yue,meshes:Kue}});function AO(...n){let e=t=>!!t&&typeof t=="object";return n.reduce((t,i)=>{let r=Object.keys(i);for(let s of r){let a=t[s],o=i[s];Array.isArray(a)&&Array.isArray(o)?t[s]=a.concat(...o):e(a)&&e(o)?t[s]=AO(a,o):t[s]=o}return t},{})}var b8=I(()=>{});var Tv,M8=I(()=>{Tv=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var gb,I8=I(()=>{ke();wf();gb=class{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,r){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=r,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===dt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=q.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){let a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(let o of this._target)this._preparePath(o,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];let s=t.getEvents();if(s&&s.length>0)for(let a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){let i=this._animation.targetPropertyPath;if(i.length>1){let r=e;for(let s=0;s-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;ii[i.length-1].frame&&(e=i[i.length-1].frame);let r=this._events;if(r.length)for(let a=0;athis._maxFrame)&&(t=this._minFrame),(ithis._maxFrame)&&(i=this._maxFrame),h=i-t;let m,_=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,g=!1,v=r&&this._animationState.loopMode===dt.ANIMATIONLOOPMODE_YOYO;if(v){let x=(_-t)/h,S=Math.sin(x*Math.PI);_=Math.abs(S)*h+t;let T=S>=0?1:-1;this._yoyoDirection!==T&&(g=!0),this._yoyoDirection=T}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=_,!r&&i>=t&&(_>=h&&s>0||_<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(_<=h&&s<0||_>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==dt.ANIMATIONLOOPMODE_CYCLE){let x=i.toString()+t.toString();if(!this._offsetsCache[x]){this._animationState.repeatCount=0,this._animationState.loopMode=dt.ANIMATIONLOOPMODE_CYCLE;let S=o._interpolate(t,this._animationState),E=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case dt.ANIMATIONTYPE_FLOAT:this._offsetsCache[x]=E-S;break;case dt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_SIZE:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_COLOR3:this._offsetsCache[x]=E.subtract(S);break;default:break}this._highLimitsCache[x]=E}p=this._highLimitsCache[x],m=this._offsetsCache[x]}if(m===void 0)switch(o.dataType){case dt.ANIMATIONTYPE_FLOAT:m=0;break;case dt.ANIMATIONTYPE_QUATERNION:m=lD;break;case dt.ANIMATIONTYPE_VECTOR3:m=cD;break;case dt.ANIMATIONTYPE_VECTOR2:m=fD;break;case dt.ANIMATIONTYPE_SIZE:m=dD;break;case dt.ANIMATIONTYPE_COLOR3:m=hD;break;case dt.ANIMATIONTYPE_COLOR4:m=uD;break}if(this._host&&this._host.syncRoot){let x=this._host.syncRoot,S=(x.masterFrame-x.fromFrame)/(x.toFrame-x.fromFrame);f=t+h*S}else _>0&&t>i||_<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=h===0?0:_/h>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let u=o._interpolate(f,this._animationState);if(this.setValue(u,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||h<0&&f<=d[m].frame&&d[m].frame<=t){let _=d[m];_.isDone||(_.onlyOnce&&(d.splice(m,1),m--),_.isDone=!0,_.action(f))}}return c||(this._stopped=!0),c}}});function Que(n){if(n.totalWeight===0&&n.totalAdditiveWeight===0)return n.originalValue;let e=1,t=$.Vector3[0],i=$.Vector3[1],r=$.Quaternion[0],s=0,a=n.animations[0],o=n.originalValue,l,c=!1;if(n.totalWeight<1)l=1-n.totalWeight,o.decompose(i,r,t);else{if(s=1,e=n.totalWeight,l=a.weight/e,l==1)if(n.totalAdditiveWeight)c=!0;else return a.currentValue;a.currentValue.decompose(i,r,t)}if(!c){i.scaleInPlace(l),t.scaleInPlace(l),r.scaleInPlace(l);for(let d=s;d0?l:-l,r),u.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(Xe.SlerpToRef(i,t.currentValue,Math.min(1,n.totalWeight),r),n.totalAdditiveWeight===0)return r}else if(n.animations.length>1){let s=1,a,o;if(n.totalWeight<1){let c=1-n.totalWeight;a=[],o=[],a.push(i),o.push(c)}else{if(n.animations.length===2&&(Xe.SlerpToRef(n.animations[0].currentValue,n.animations[1].currentValue,n.animations[1].weight/n.totalWeight,e),n.totalAdditiveWeight===0))return e;a=[],o=[],s=n.totalWeight}for(let c=0;c=l&&v.frame<=c&&(s?(S=v.value.clone(),m?(x=S.getTranslation(),S.setTranslation(x.scaleInPlace(_))):p&&a?(x=S.getTranslation(),S.setTranslation(x.multiplyInPlace(a))):S=v.value):S=v.value,g.push({frame:v.frame+r,value:S}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=Er.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;let r=this._activeAnimatables;if(r.length===0)return;this._animationTime+=this.deltaTime;let s=this._animationTime;for(let a=0;at.playOrder-i.playOrder)},n.prototype.beginWeightedAnimation=function(t,i,r,s=1,a,o=1,l,c,f,d,h=!1){let u=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,h);return u.weight=s,u},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,h=!1){if(a<0){let m=i;i=r,r=m,a=-a}i>r&&(a=-a),c&&this.stopAnimation(t,void 0,f),l||(l=new Av(this,t,i,r,s,a,o,void 0,d,h));let u=f?f(t):!0;if(t.animations&&u&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let _=0;_s&&(o=-o),new Av(this,t,r,s,a,o,l,i,c,f)},n.prototype.beginDirectHierarchyAnimation=function(t,i,r,s,a,o,l,c,f,d=!1){let h=t.getDescendants(i),u=[];u.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of h)u.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return u},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{hi();I8();wf();Yl();ke();Av=class n{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){let t=this._runtimeAnimations;for(let i=0;i-1){let a=this._runtimeAnimations;for(let o=a.length-1;o>=0;o--){let l=a[o];e&&l.animation.name!=e||t&&!t(l.target)||(l.dispose(),a.splice(o,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),r||this._raiseOnAnimationEnd())}}else{let s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);let a=this._runtimeAnimations;for(let o=0;o{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!n.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1,i=this._runtimeAnimations,r;for(r=0;r{ub();xO();Bs();xO();y8(ei,Ha)});var P8={};Be(P8,{AnimationGroup:()=>RO,TargetedAnimation:()=>vb});var vb,RO,D8=I(()=>{wf();hi();Ni();Sf();C8();_x();vb=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=lc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},RO=class n{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t0)){for(let t=0;ta&&(a=l.to);let o=new n(e[0].name+"_merged",e[0]._scene,r);for(let l of e){i&&l.normalize(s,a);for(let c of l.targetedAnimations)o.addTargetedAnimation(c.animation,c.target);t&&l.dispose()}return o}getScene(){return this._scene}constructor(e,t=null,i=-1,r=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new ie,this.onAnimationLoopObservable=new ie,this.onAnimationGroupLoopObservable=new ie,this.onAnimationGroupEndObservable=new ie,this.onAnimationGroupPauseObservable=new ie,this.onAnimationGroupPlayObservable=new ie,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||Oe.LastCreatedScene,this._weight=i,this._playOrder=r,this.uniqueId=this._scene.getUniqueId(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){let i=new vb(this);i.animation=e,i.target=t;let r=e.getKeys();return this._from>r[0].frame&&(this._from=r[0].frame),this._to-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;ie){let l={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,l)}if(o.frame{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,r,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a{this.onAnimationEndObservable.notifyObservers(o),this._checkAnimationGroupEnded(l)},this._processLoop(l,o,a),this._animatables.push(l)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){let i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,r=!1){let s=new n(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(let a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(r):a.animation,t?t(a.target):a.target);return s}serialize(){let e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t_[0].frame&&(c=_[0].frame),f<_[_.length-1].frame&&(f=_[_.length-1].frame)}o._from=c,o._to=f}return o}static ClipKeys(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipKeysInPlace(a,t,i,s)}static ClipKeysInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!1)}static ClipFrames(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipFramesInPlace(a,t,i,s)}static ClipFramesInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!0)}static ClipInPlace(e,t,i,r,s=!1){let a=Number.MAX_VALUE,o=-Number.MAX_VALUE,l=e.targetedAnimations;for(let c=0;c=t&&_<=i||s&&p.frame>=t&&p.frame<=i){let g={frame:p.frame,value:p.value.clone?p.value.clone():p.value,inTangent:p.inTangent,outTangent:p.outTangent,interpolation:p.interpolation,lockedTangent:p.lockedTangent};m===Number.MAX_VALUE&&(m=g.frame),g.frame-=m,u.push(g)}}if(u.length===0){l.splice(c,1),c--;continue}a>u[0].frame&&(a=u[0].frame),oxv,TransformNodeAnimationPropertyInfo:()=>Ep,WeightAnimationPropertyInfo:()=>Eb,getQuaternion:()=>L8,getVector3:()=>bO,getWeights:()=>O8});function bO(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function L8(n,e,t,i){return Xe.FromArray(e,t).scaleInPlace(i)}function O8(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{wf();ke();TO();xv=class{constructor(e,t,i,r){this.type=e,this.name=t,this.getValue=i,this.getStride=r}_buildAnimation(e,t,i){let r=new dt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},Ep=class extends xv{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},Eb=class extends xv{buildAnimations(e,t,i,r){let s=[];if(e._numMorphTargets)for(let a=0;a({frame:l.frame,inTangent:l.inTangent?l.inTangent[a]:void 0,value:l.value[a],outTangent:l.outTangent?l.outTangent[a]:void 0,interpolation:l.interpolation})),!0),e._primitiveBabylonMeshes){for(let l of e._primitiveBabylonMeshes)if(l.morphTargetManager){let c=l.morphTargetManager.getTarget(a),f=o.clone();c.animations.push(f),s.push({babylonAnimatable:c,babylonAnimation:f})}}}return s}};Sv("/nodes/{}/translation",[new Ep(dt.ANIMATIONTYPE_VECTOR3,"position",bO,()=>3)]);Sv("/nodes/{}/rotation",[new Ep(dt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",L8,()=>4)]);Sv("/nodes/{}/scale",[new Ep(dt.ANIMATIONTYPE_VECTOR3,"scaling",bO,()=>3)]);Sv("/nodes/{}/weights",[new Eb(dt.ANIMATIONTYPE_FLOAT,"influence",O8,n=>n._numMorphTargets)])});var eme,tme,ime,rme,MO,Sb,IO,F8,Tb=I(()=>{Gr();uP();eme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR42u29yY5tWXIlZnbuiSaTbZFUkZRKrCKhElASQA0EoQABgn6hJvoXzfUP+gP9hWb6Bg00IgRoQJaKqUxmZmTEe8/v0uB2u7Fm2T7HIyIrnz88uPvt3f2a2WrMbOvf/u3PvvzP/sUf/N6//i8vf/lv/3v5H//d//Sb//Uq/5u8yf8hV/m/5Cp/L1f5hVzlG7nKJ7mKyJuIXN/hPwqXI/g++zq6rPI5u8z+WqfLre+zy7PrVv9L8brsMiGvk8XLmM/sdfHXal4e3ad6GXPdyu2ij8u/+uv/5cuf/OSLfdtEfvUr+dnf/d0X//t3H/7bf/hP//N/928h/0Yg/4VA/kogfyGQP5Wr/IFAvhbIlwK5CGQTPP+9z5uPeePJSW+yo2+s/GtN30Rnv1E+f5zxof9R/lSXv/nr//mrr3+i+5dfyX7ZZQP07Tffys//8R/l/9TtX7790T/7r/8G8pdy+/8XAvnnAvkzgfwzgfyxQP5AIL8vkJ8K5KsmMVzu1U7p5PA5AXxOAJ8TwPf7sX/51ZeXfcemqnp9w/W77/S7X/6T/vzf/7383RWCX3/z05/9i3/13/0PX//eX/2FyP8tIv+PiPy9iPy/IvIzEfm5iPxCRH4lIt/c/393//9BRD6KyKf7f488fP74/PH544dJAF9cLl98IZfLBZtuqterXr/7Dt9982v95S9+Lv+gF/3i7Spv/8lf/vnf/vGf/dF/JfKnIvLnIvLvReQ/NEngn0TklyLy6/v/34jIt00iGJOBlxAsdvv54/PH5493SQCXy9t2ueh2ueimKorrFbjq9eNH+fDtb+TXv/ol/vHyhX4Fxfbx7euPf/Lnf/PfiPyeiPyhiPxxkwB+fk8AvxzQgJcIrGTwFsiAEXH4/PH54/PHUgLY7whgu2C7bLqpQgHB2xvePn6SDx8+6G9+84384vKF/IPu8iVU9Y/+7C/+jWxffiHytYj8VER+X0T+oEEBvxqQwCMJeIngo5EI3goIwVMIPn98/vj8ESaAbbtu2ybbvl8u2ybbdtluSECA65u8ffqIDx8+6G++/VZ/efkV/sO261dQXP7wT/7kX8vl8qXIFyLylbySwe/dE0CLAr65B/9vGn0gQwRMMqgmhM/J4fPH548eAezbZd/lsm3YtssNAYiqiogAAkCvb5/k46cP8u2HD/rrb7+R/2/b9Wu9yJe//8d/9Ney6S5yEZFdRL68/38khG/uKOCnAwoYkcCoEXwkEgGDDq7CeQfyOTl8/vhd1QCum26ybZtu2yabbrKpQvXue1yvuF6v+vbpTT5+/CDffviAX1++1V9sO77WXb/66R/+4V/dgkbllQi+aBLBV/dE8LWRALwkYCWCNyMZXElkwLTMeMkga/P4/PH547ccAVwuctkvdxSw6bbdtYDbTfSZBN7e8PHTR/3u4wf55vKd/nL7DX6mu3791U9//5+/gkNFZGuSgZUQvnKowKgLWLTAQgRtEniTuEfwaELw0MJvf3LQzynud+53uG+X6y3gN9kul+2y6XVT1U27JCDAFVc8ksAn/e7jR/nN5YP+avtWfq6Xy9f7Vz/9w1dgRYngiyYhfNkkgzYBWHTg44AEMmqQUYQKOmDaiCIa8TmsfmzB+DnZDQjgcpGLbti2y3bZHjRAdRMVvb/dcYU8kcDbPQlsH/CrbddfbF98+RPZfvLFnAQeieCRDC5DMvju/vmD4JkEvjRQgKULeGggowdHkAHTYxihg89vu88I5UeGAPSOAFTlrgPopiqbKPSmCKreUoAAkCcSePukHz590m8vH+WbD9/JP335k6/+tA86KxFchv8jMvhiogE4JQm8XhfKqOAqx5qRPyeGzx8/cgSwbXcUoLJtim27C4Oi93+4v6VxQwKAvl2v+Hj9pB8+fZJvt4/yzfbF9lPdv/wJnsE2BogmyeCRED40tGFvksIXiSbgiYSRRpDNDZ6BDI6ghM+J4fPHeyKAO+zX7cb9t4tedMMNAQju5V+f1uAtBSiu1zsduMrHy5t8ePsk3376KN98sX/xE5FPAnm7/782o0DiUINXMkCXCB7/P94/e87AWUmARQWVvgMuKej9t1RLBp+Tw+ePgwngsutFFdu26WXbbl+rSvdfbnqAiuA23QcBgCugV1zl7e1NPm5v+LC96XfbJ/1W9y++fgXjA3bDYXV+MuhRwSPwL3JLMFYC+HS/LU8HYrGwIhwyNOF12SvgM4SgztdifP85MXz+KGsA2C6X7aJ6bXSAOwrY5OYIqGy3d5uq4P5GhABXuV6veLvRAf10fZMPb2/y3b7vX7+g+9v98/WOBq7GG7RNAlYy+Dgkhhb+Xxp0sE8IAC4SGAP/TbgVJK/PoJPBnAiwPKxsXfbbnRg+i3s/JAK4Q/4b9NfLtomBAqCickMBjy7BuywAUVyv8na94tMjCVzf9KNcLl/0SeA6oAEYb1i9g+FtSALb/bKL8/+t+wxXFMyswqiHoK4ToIgKqslgpg1qUC0QoYbvJZg/B/q5v4szHmPX7YEAsD0CX25OwEUVm9xag1+agKg+nxQArnKjAtDr9U0+Xd/k4/UqH7bL5YsewrcBBiMJZPRAp6TwQgWfjM9vgRbgUYGL8AvLWH2gqhesCokeUmCSwPsnhs8fP2YNYMO2XeSmAWxy2VQaXeDmDIhApf33rD4PTUCuV+DtCn27XuXT5ir8VmCJ2G5BpBM8/r/dEcJb8/0lEQMtJHA5TAlqNuLRhJChhEpSqFabH3di+G1AGj+W1/dyAR4IYJNNnuLf6+tWC9CHHiAtFhAIFLjK2/Uqn65X+SS67aK+3QeTDoy/IG2ogQ7fb/dAtz5vBgrYGqrwNtCHsVfgIvwK07OTQBURVNCBFpKCOjqCHn5L/67TgTN+fpySAC56nwSUi256kXsSuFGAVyLoUIDo8/Pz7fdoErr/v17lk162HbgHvFpIYDfoAJJfW4sGPjkU4VNAF8ZEcLmLhdc7kljdY1y1Dq9yLiI4IiRqcLujb138KIPn80ejATwRwIbtBvn1cqv+2J78/5EI5N4cJA8qIPcmwRsKAHDF9WYP6mV7VmrgLuTpxYTcMEW0LAmoQxFsuvAI8tv/a/C5fV2ZMMiKg++FCM7RDPRu8ebWY7VG6VJi+Bzk35MI2LsAckMAgwvQ0gC5DQjd3ABg2HQLAPpEAlZ1Bu7VV7MGHDFRAbo3VKsTbAY9sPWC/uvx86gBbDK3D1eEQS8pbAeSgSwmhepnJb6uBv/o/PzHLzxWA/X7TH77De5j6AGQi6o0CUGfCOD2X7cXAlCFQABtEsGLDtxuOyQB2UTQBKZe5GUPXgkUYCUAbZJRhBDeuq8xBf+bgwbehDm+BFQi2IJksOocvA8ysIMfxluVcRsY/eB3JzH8GFDAXQO48X/dcIf9jyDHptIigDsFkEe066tBSETQUYF7ElDdYEBytN4+rk9UcBPfrKaZqFHWcw3i4J8/X4ev2//bSXqAhwTay6OEIPLD2Ipt8OtAGzxkwLw9WVFRjTc/qC6H3+YK/b1oAA0KuOizHfieCLaHHiAb5NYTIC9EMEbZrVEQt1xwhVy1UfBh8PUOquMizwaap3tQXfY5B//tea/NZdfhsvbz+PURQTDSGWB87VX/7WSd4KxjUqrIgE0IUkoKGnhIvwvawpGf6eECXJ7tv4qbA7DJgwpsKthEmmYgfaAAffYF3HLxo0vwNjJ0SwRWMG4db4eh1gPNm18vQ+us/0eGmxDemu/fnM/X4evq/8342ksGHgLY5LyT/zg0wM8lcMjgGFXwqIOVFJBQw99eCvF9oZL9Mfl3QwAvIXDsBRC9R+fz8x0FPBLB0xJEpwUobrfAkARgIAF41h3wQgP6QAmX5E/7eI43IxGwwf/moIkRyWRJQIPgt9CA9b39nzt4bYUWjAlCjWDPgv8IEjgLJfzuaAsrv9VdVG4OwOXW/fdoA35qAdL0BDwvf6AAUVHd8LIEu94A3K+Q+2YxaB84MOH62P//qoo38fCRDERE2zf0JfmDa+MieElAjcDPKz+mRKCOtdgGtXaBjgNJ4H2owSpNeAW/rRH4CaHSpMwnBYYycjgSJwfie9CR6mPu20Uv8kABF206AvXlBMiIBPSlB9wjBW1fwEuSb94296VCqgMaGCt/G1BbExi3IG+r3a3J6P48Gv/J0YmEYoiGY7V/SxwFCwGoE/xa0AJ0CEiV9QPCJb1OJ5F1VTjEY2/MO9AEJvj1BJTQpqLfTlGwjABuzT962e4IoKnyrdh3+/6mzDVJ4PHOxj0JqGKoy20+wBMN6D1gLWi9NQHfVP5MEEPzjGYy8BMAOnTAJgEr8HUIejRo5xrA5xkR5AngmiSHs+zDDAmMgWzTg55GSJEmHE8IvWPAoYTfhWak/Wn/bQ0CGLSAjv83SUEfKp5q24LXuQICpzrjrgWoza8xVE00CQCORdhMJuTUT/rjuls0gO4Iby8BIEgK6gS7BsGuTtDrScH/fR68biUHNVGBnxjeNyHEvQe/ve3LZQqgG3rof6cEclsNflG9J4KtaQ8WHcVBHS1BtHE4QP9OBMS98mpbKTeDW7dJwRsnHpMBTFJpV4I+b0kY/NqInVFSyBLANbnMSgBM8F+Fqfxq/h657/Up+GaBnwV9hRqc9bZ/vA6vu+T9E8KPJWns94UfTeCj2QXwCHS9dNL8Xf3Ho/rfewSeFODGDV69AU0y6NFAE1DP3qK++rdB7/1HRxf86gT376zOr99T/h/ioBiXWQkgQgVeIrCC/WomhDmQK+hASI2ARQZKooHMLdCJwGEBBXC3+uERwg+VOHZ9ioAt9H80AI06wGgJ3nQA3BoCut6AhxYwgcPOFnxuFnrphk+NIKIGrWPQtgz3b0i7Y6D5rs1GKqTop0nQX52vmQC4BkjA+r4a7Kx9WLENGeegkhSETBCrNXIMdi/444Rw1n6E96ry7OPuj8UfLxtQ78NA2iSBbg7gIiIbdDLsb5agPhLC3RkYKv8NDbS2YGsatNRAG2oQwf9ZIOydgy1MAzBkAw8UwEEIDzSAqdPQ6za0PkeJAMH3Z0wXniUSZoHvBXU2mcjQgv56TedIKglCpIoQfgwCIjOytd8WgN0bfxoR8Fn9Gx0Aj5Zgq0lIZbsH/ibSJoFnS+C98g9ooHEELI3gliy25yONIiE6pb0NfBlyNEYyENoodkKwgl6I6s8kARgJ4ZoEfuYWHLEJa0LhSBXm7kImGeSfVdoJ1DO2G7WXsehAptupSOoyrCSF904k+6vt98X/ZcM98Hsd4JYIXhQAIg3/f9AAUYhsLQKAtkHVBnzjCKhOoYl2ym+iBtvzDzQ2DLXJ4PUmbJHAVnBQX4jkxfvHhNDqAdHXGQJgv0aSDGItgOseHIU+K9hXnIJzkoGlEKzNHagTdJ6VWEUH4iCKH4fd2AwDPaYBm4Wgng4gQ9V/CoGiuNmD04AQtNGMGzSAAQ2I2pzfogY9LRh7BrbOh4+D30sAencljFu2CUFrwY8UAWRfWwGvVOVfbx2uIILM0pwDv082dUTw8hYs8L+uIWiHGpWgClnAa1lMPJogovvvbePPs/q3Xr++kgCsfgB5oQF9WYKPJqEn6G+OE3i5AqouF59FQOmahQC8rlPLj38kg1c2f30vw+XaoIX24/pMGIgSBoZqoH3wo0sIIGlA9PWcCPrAtpPB8eBf6x1o6cHra+2+tpIFP4PgBfxZtZUJfo4qxELT948D9ucK8Mt9+ccjIQw6QJcEbrD/1g340ATuDgDkFfx6twSf1f9xvuBECYxq/7ythQQGm+5JDx6Brw4CkMGT3wgscCUoQ4sU2t6DR2ciBjTgtcpenQoZVX9NuL4Owc+dVaDursYVkVALX+shjSBKBuvCYDUZjE5BdNkxdHAUBexyHwB6NP7Iyw7sxUDViwge1t+mz8B/LAvVx/c3PeBBCToB8IUGOgqA3iV4yUg6UAOxaUFHDx6CYS8SorMOue0CCJGAf5YfRhoAI+A1CvwxqNkAY5yAIx2EQmkFfeWOXi+nEdSQQA0ZHMEItiagJArQxDXIrj8nCfQi4HZPAttrIahso9oPQ/2/JwV5JQU8zw+7I4D7/sBn4EO6rjw0FR+i3Z9fHtahzsFvJgM0X+tmVH5vaYiNDGAigewAz+gyNLThnjCURQFR1b9d3lZvnVqmj9mEPDKIUIC4KCCjBXywS4N+otp/Hk3QVthOkwEKlV9PQwXjT7s/zwF4Qf9toAAzFdjuaEB6S7D1//U5FIQu2MevO0rQQH8ZmoXE6B/IkgE60XCjVoq8gt2iCG0S8L5GdxkM1cGsfsCMArSCAnrr7dzAZxCEEpepvB8tqHJ/q+bmJGGts/AcAXFOMMeTwC7Pw0B6CtCtA2vWgonqBQJFSwH0JQK29OB2kvgj2HHXAoyeAIsCQO0kMNECAhFMqCBf8mElAkyBbX1tJQP2RJ/ha0gpAfS9l+/5n00CkrQpq0MZbOdAuxmMvHswog62jZj7BnYQe19b14kxNq2D/ehX/p68HEcF+x3yP7z/V/A/q/5DA3i5A/dzA5pdgbKp3v3/wQF4Bb70WkCTHGRAA6+KL0bFl6FJaFw0ImZwm6igSwbbwPn9RMBWf3sN2JgA/BVh/Rg0kQBgePf6HglAHLFQwqQQOwDjbdVxNZjR4iM6Qa3WxwvNxh0JFb3g/WzFQQS8b/ttKcDWoABtUMAd8j9hf0MB2uDXhzX4CHj03L9DBU3Qjz0C0l4mLSLQPicOOwZoVCB6P6dA7nDbGkVuxcNr8PU2JQO4wX5trEqmccZaHU4q8oCDFOpzAnOwqyMIMktNNNAHouDGxO37DgArQZzlmp/14W1QlqHTMaIIx7SCx0+5yza7AKJ3IXBrNAHVDcMZAU/BT/vgv/ULPOA+XiLggAREDF2g0ci6xNDRglegd7P7TWWH5oJfayliEg7bScQRBVgI4Ookg/F6rvpLWP29swREqA3CaG8/FpKqS8DTAV4TiBqIqtxfzaQRLys5I0XEFIFrPbZRQb+16Fgi2LvJv8EFUPW1gGfQv1T/F/d/HBnccP7rAwnIIyHI4ArgWeGbU4eHy6Tx/EeTZIb5bo/BsMBjmjBE08f/RB0PHYBd9eVRAGY7cHRwiBf8WeCPHY1bgBTa9xKTELzEkQX9CPtl0gJiqsAmCT7I8xbjivh3JGFI+D2nBcSJQJ8agDX+O9iBL7UfG4bzAkcaICrbtYHz1ycSmGmAjJfL3CMgT3tQpmrfB7gxSzC1DnvdhQMieG47u75+kTouKNkM8c/+vq/Q7ZYjO/hhVvRq8F/9gGfhP8aqE9EIdR6LTwJ1h0BItyDqB8iFwuNqASscRnYioxOg9ApvnYA35f8e9Ohbfe8J4rknoFkO0lmA2gmAG0YK0DkB4ieEjiLoMD8wBzom27ANZkzIoU8EMHk/uo1mzeVoEoRWKn8L/62EYAX/lsB7D/LXg74uAMr9oGivJ0CNJCGD6i9DhZdQF+gtOp4S+NODRzsDVbhdgv4BqTMNyIL9SCKwL9/FGPp5oQKxIf8A/UX6r231H7YIqLML0Ae2GtrADOvRQH5b/MPE9dt9BGLNG8jVTAQvIaK5TtvvvWQgDvyXIClUA78S9Nfg7VtIBlO7cbsEYkQDMot+ygQ7QwmOawTHnAM2XUSnJvPIYRYMmYPS+sv3J+cfP3d04JYIXsF/EwMbBKB9Q9AY+BiSwFj9mzrSXmcJhFPVHySTbgHJCPvRQ/z7G/SVUETsg0ZF+i3CRoCjhf7y1A9mOiDD7TwdwEoEXjLwAv+avLE2B7Jnb+OqDpBoAchoQJskxKnss0vu7Q2YhcDv4ySeLOg9GsCKiUIihP7yfW7zbTsBh0TQfN0iAWn9f72Z56/Ax9P7j5OAH/Qvv3/QxKfk0DgDuP+R3USg3bzBC7bO/QT9Eeh9QvDPG7glBQzJwK740lAFFgFk8P88CqDGAa223YckWYhr+c0BPdwetl2ocnsfzePAWcVnnAIp6gDVhDLyfV4nqFEDPxHsbWD3k4BDkN+pARqKMLYBPzYEvxp9xmCHQQdgWH/9EtH2TIFpu3AH/cdGydv1j0TQbRrq+D/mLcX3ZACZ15bF378CG0My6Kq/zoGOQwhASDFwFbxyNGBuSxbCEhQ/uEPe/6gAERWQObCVVfjPpQX+rexxYhYFxIkgpgX7Y/vPs+Pvxf9vwt8kAs7i32t3QCP+3SPaTwIytQXP38u0PESm+YER+o9B3vr8mETAUfDrEkPI80ck0FZ0dXh9U+HRbhey0cAc2H7A4y4egoD6y8JfkBiigLdFP8v2W00E8deT2IeAKujZ/QAVKpAtKI20gLWksHedfgPcb+0+NEHefd9vB9rayi8h7J91gBbaw20MsnWAF5xHkyDUCOoXp+yrOwwxcKj0aL6fFppaaKDv6OpHR5sgx5BAlK/+fYhuP1D196o8e7lFBaKqv5YIMnFQpd0FGVR35RJCnCDaABaXBtgbiSwtICMtalKC+1JQ6bx/PLcDPQL91QFodQNKpwOgF/9eqcBxBBqRcKAAVk+ArQOMx1RYGgB6naDhlK+uQQwJYx4meQbxtNnYQwMjt/d4f3M9ZE4UOld1LAh99fbfzOxiEkKFCkTJIUIMUeVnJ/9sDt8/e1NEJOi9oVHDGYhgnSLss9DX2IAqw1zALUncKcDr0FB5NP+0cBQNrEezDiyiADPkt9qGpwoPdL0AGPx/NOKeyf3b9WJNdfcFv6bKd2cLMJVfJ6Y3B6wB9WFUfWWEwKMfGiQL+3bz9XGQz2EHKhF41GCtZyDi/gUCsNhYoAr3UNJ58YidHKqnMb/6AB5J4N73/4L+t7mAkeeP3P+1LNSB/l0SkMEd8DcEuUlguEw6t2AU/PCE/q++Akw6QFf1u6SBrj1ZnnhG50AfkoGIdf7gJv1KcSfgzWWkQ9U33Z3tHXYASKJ9e/YhU90rvD+q9Ej69/wxYJVs506Eg/r3DkMDzEdDBRGgcZay49XihLA30P+l8N+hf1f57/0AoxbQbwYaan/rBMirE9Dk+sBzTkC8JNDEUlv5McB8PP19Y01Gayep+hC/2zvQ/2HGLAurowsNGlA1cnqGGzeH5weiYLZm7h3QQC4O2tXdhvMMk1ZS5ebpgI8eMrPvPGkwaxayk8Yc6PMOBPEdC1XZ+2UfbfOPtxLMQQAG9BcZFoF0gp/RKjxe7+oAw9T7ZPWhgedodgz0gf5KBtrtIZhQAZpAV1Bi36w6t98qVfH7hqGI318lLCjLCUFlxRHwqYEH9a2qb4XjWvDT7kBwfbZA5P0+PNuRuW1yf4yNQH3zzwv6b70QOJ0G9OT/dhoYRUGT15uQH/71MjQLtQlxfDuiCXrtM+SkA+icQdH6sU/xz7Ze7FlubV4TpoTQ2osdpaEjtqADmEU7OkBEFoLeC3IWFFeswJXKXzkboNL+wzcFHU8hTGKIboO7CLi1/P+5F+gydQhuvRbwEgxvtACmANikhLTbj0gCYk8KdlYgmj+4Ymaod7TwahwadICuX0Cm2fE5iNHPK0x/CDV66Kyg1MnqjNFBnhBoLQCgUULfaVe5nq/6EQWY67bXCszUb+7232fVPz51iGB12owK9peyP1T4raMFF/OEYJP792mgXYfZ04GHMAhBkCSmSj+dKqRPgVFGHbpLEGMiGFeQWfSgrY52VxaeDUPSNJI0P7NoisG729HHl78z6hxfs9rV3m4JjgM/lsui2qmThjCfDFSb+I9vwUqG5wwL55U7C+6ot8B+7N2o6r3q37T9trfpjgmTvv7PSQATLLeRAOZhIJHBQfDQQJPBdUwEbVW3+L08EcEE/9G4ANrCeWcnPKRHDupbNynMx5AA9IRYLmrc/YLSiD5EaEBS/s/TgnU9ILcH19n+CpHwegLejx7Mn/d25fdN+e9U/1vgb7bqf08MOtf8EXxaoh+GY8L6gDfhvs4i6HQ7seYI2sv1GchdMsBIG3xlvxcCRzdgCPTn+6q/TW00VE8Q9FaFv+R2VlOM1vm/hhjhDCdgNflVKME5B47I9xT8z0YgPAJ8myb/LqHy36j/Mwqw9AALxuO1JVjiuQAYLcFzIhiEPe05fk8tRjGw7yWQbsfuLAT2VqOId1osnr0F49VM8INACPHDoBz4B5mqqSnUgyh3ArjXxfQH5BbgUS8gP7aU+w0zHD9GGD0CGHf+P1p/DeivlhU4BbxR9a2kYFR58YaDZCUR2P0DMmgED2eg77puegy6PgDphEB0CwlG/i9d+/Hs34pBEQrBn0W51mqGnJAk3ACCHeiqkQ1XFQA5AlKH7Lk8yJKWY3/nym14h2C3JvxeMwD9ZVMz0BPMi1n1RbKl1cYhIVblF3G0ATsRiCMUvoK9//OgcwYMoe+ZKOLlC6/Xk50br9NFz9fanqA8UIYSpCwlBO4kHc4WLLBfBHVaKwKgLQjmP4Un61Vq+3s7Bsyi0WztmLjJwJwFeE0I2vD/1Q6MVwefxfUf32skCPbCnxQqf+QMPEUDHZ7vGeyj020JgkPXXwsldA7SYR1RE3h94NvNtugswcgxXEkIcBPCGZ1rmrgDC0A4K88nm2fn/eTnpQtWyZfybRoK8Dro4zYDIMGsf7saTBzvX0SMbkAD6o9CYbsfMK38cJKD9l2FJt9/VGs0h5Gib33pxMKWNsigFUh3G2un+/N1WUglI/EEx8fq27vUNnwsiOoKecL7kQS8VnWAGCFUgn6dBtQhv40CmIYggwK0uwDHRGAuBXVdfwzHUjZzATLMAoyJ4FmBhzaWBlrHld9CCWpPHRqofBqMReMGTJ78q9rDes1Tv7/0m0v0AFHXNR6P6g30SHivin7V1BOhh3iWPwvps/yE836L2XiwnUT8x2iHgfqhnwn667QHEE8oLQjEvtEW7GYBZDrDVkwNIO4G5GiBDf9fGoFM6n+vbEtzXwP6u9AduaWnGYSLAlVdl/AU+ikrSeEIKgwdaZ4AACAASURBVKj4/wtgHcHtdO2nWKcBkPfxcvnNQvsj2Me9f02r76T8q0IBn9OLKfz1HX8yVXQYGoAB/2UeBQ5/5kCL6+H/OGGoRnLSwdd3oH8r7KkGTbgIxEwVWvnF8KOpHnyzfF9Jod5Px+IF1h8owyitDw/XEgRb5bPqbt1uvn7qBIQ16vtS/u+DP3cR7CH0WWJgd5mTJKYgNzoGjQrfvu99NDBC+bnyW1x/qhTatv2OaMKgJWPvv5kwnMgxHYGFRtJW8VMl3uP+MgoqSZyWFKr7+KIDw1d6+IiOgZI4+d5iYL3imzbgyO+tph9t2oSBxOM3ugHtPoFZ1LM0hF4kXNEBssvVgPdjdXZWK7uKvyS3q1Xb1WQwtVDqSUggq+Vw3t56JA2cz7PXOwGNW1ecwxPhfe3QEUsDsFaAz8jg0nf+iZMAHNg/XSazDuC18Iq1HBRrOsAQ8NLB+16g614jmuSgs3bROxE55D+WDDQNA4ivdMJ9M1b309UqknaDU8ObV9/PwmMPATvTMAxpABLBzugUtV9bLdhNDQA+7B9tQJ06/7QNDHGSwtgZOCIA47InIoDdROQGtt0U1HI3GaoUnCnC/rzBMQJteN17+VaAzYNA7e+PFqHQUyXPUYB7iQYa5ZFjq1Zqpx8Uqu/XT7+6BWC1Xaj0GlBIwMoHu7UzcI/6/Acb8KIq+hzmGWmAYnADrIpvKP7TZeLaf0LAeQkGgebbq9FToI44p654F47tekKkI0L5PQNZPsDwPBpy/ni+wKMN76Vav4+2cFZFf8+JwAraMt0DFB7beA/u4Zz/a+RXx0M/ct4/jwaNAS8G17eSwmta0Fhx0VRxJkHMivso+onMXr+YwdWKbgioy1jp4x4AzIKg5lEA7wvHEYCRmdx11TAuT6lDLVl4KvXkAET9P4RT8H2u+lg9EPQIpw+/NpJ7RwE8HaDv/Mu4f3OdNkq/EfAiEiOANjEALvcWL9gfFV4NZbgbQc6qPky4Pm35QZxtH1f4j+P/jXuaYPcWwIEH/fmEPBoAO4m4LGxV3txOQqDU+dXgey+UwSzuqP++uImO/u/6ogCb7wTc1n61sL+vZi87rxnrNas+giTg6QLzaUCjIp6JfhwtGI7AjBBB9JjDY4ePYVR6ZPgN4owVv6Q2N5hhVHwNeYrM+w6dN6K1sMHZm/Ce7bHe3dzKr1xw1w4JrSQMZtgnoQHlr18fzunAszD4qurNUg/TDqzx/lfCaO6t4tACMUQ6P6htWjDPC1hCoZ8kpODzJ70MUR9AODcgwyqyPhmE+wfHYB/hvSqt6qeXUShhXH+d9SR8DzrDaZZdpSp/HxqLMQuATgDU/qDPRgOIeT8cvz/h/XC6BtE7ACLOWPE0KIS4UUjmZaJ2grBphiWgT41BUVWZfP3AnEIT6OrfoF122l2rMycBoU5i/OXoUZ4/aglsXwLzHNU++FVF3qikOj5HXm2PBitT1WuvJRAB+6O//W0/PY8vQH5IrAsMs/WuVmAdHBrQgrbOxJShXwRSsu08h8JMBpo0+aDTALwV4tbswgzHrftG/dJKIAQb5h9KCssWIMeto+GYqG12/HWGjx8kzqNJaa0noMWOr2KwW01AMwJoNvhMQda2/RKQP/3ecABM3g9uD6BY68Ntz9+nDOMb5iV+hIE+dP/Zs/wwJhJ9mgBnohBuStABUXjugF3hkXF9ZZJAjefKdHZCc389LoStKvIl7QIEb1d9RyciQgFDI9Cjyccc/23Aam7/PZJBhgDgin5CtQvbCzX8ip9YgIFtOAt+w0owp/hOiCWgEGbVHuYjRigPGR/YOnEoqPDoV5z5YqB3mRq2ox5ICmSSgAP1Ne+XV2NE+/vuFbCTRADxtS70VRBCjgBk2OyDUQiUgfl77b7DwaHm2rAZ7osRSOOUoHgKfNBSLI767+oDYrfwZvqChSpGfj3pFwZFsCJg2jeIQQBUiyI4WgD68ww4qO8khuWkkIuDrxWv2nv+UTBpJYiPd0KemTA8qqFiuUF1jWS3BoG6pADJq751JqBI0wvAVPyMQvjcX1zbELltKK+zBiXRFiRxG+b7q3M9xuLdzR8g0gCGNzSM5gNYfqGO9CBT8OHct6oB3KsSDBisUnwsFuISQaRHxDSv0vptt2oeLHMERfRn/FG/Cx01EpgIQG8LP+/i37PKw53xn6sYCM4/JwSRrCnIeB1ZkLsawDhaPKv/njU3wnZ/dBdGE8+YTHSG8+ofGgIjsC19YnwdM/KAnTSsqj6ig7uGgIPw3nYFzhhIIvriAxFP9CQd4HSlnzgxONIdrE7A8ZDPx9fjib8ifgegNIliRgdx95+E1T7+3nQVNNhEzDgGA3T2rEDLduwtPpuuouPcs8swwXFjdTaMKt+jA5gUAQPcf95KJQxYU0cYxEDvsBSmYuukp7AwnqniC9Afa5z8vboI68ImT0t26CvwBzSggkj447r9IojvCn7U92J/Hw0QSdwZKNNjxPCfSxRqnATkdwpOwh88oc4J8KTSm/wdbZjrc+4iFP8YO0/5JJDCfaijK5xVXevqfg6zGRrQf83chvX4aRfAE//6vv5+6490U4ADdO7QgM/5bcHP/n4OtCQhBEFeDWSvos8DPq8/IwzLzjpa8/U6MMSkBklDm8e0mn3QIY7XG1Om8wzN48y7HwhOK3P0/ZwUQHHv4psbdoVeb9VlAjChBCdtDDpOKTh9ZfcagOYq31RFjN4/gwBYzp8lAwYNwBELhZoxECeZxMlAzWGdCRV0fQWGHo8+8Kx+AAxnCIzowAxy9KvNepWfsfp4RR9kUrD88CPVTuXRybhqqTHcnxEGndsgub1Gdug8yz9fHt3Hpl57x/mfCOC29FOSQ7/noAZR5W3Ob24UMpuPYAYiQrQgk1gnFoUIKr4vKFpV15pHUJO3Y5rfH3UFHU4bGkU+NKJ9f2hJyOMxDBDpjAgwiYqvk5TqNl9EH2Arb6fA3yaA4cBtPWewhkEcIQJBlGzYp6zRmr1v+e3Fv27xpzvyI44NGDkCIi7CGNV9Dw0M8NtHC2vUwHINumCGNG8erxOwtQINsW88Tlwdoc+F85nI559ngEDpt2F/Uu3hiXYrkN/pBFS26hYDAkFgErMK67y9mGBA3L5ore5izf8b3n805MOq/t7XU4WHv1DUF/5gugCSOAIW/59uMwl6CHWAib8bvfxWl9/rBGEMTTwDfG+ezEYG4yk6FvRPuPwE+wvc39IRjENWM+/cm5b0W4Pf4WuKUnw/vD6eDbB1ETs5vl77Dhnm/51g6wPWwQAqxnivgQaeS3gy/u/1H4hpTPrIgHAN0mSgXUX13YP5PMIuQAfBr/f70cdeE+QoCX3i8nFMLcAjInBoAIYqt1LhC1WdtvmSab28AYffaeivCB+ohdYQgfUa/WS4ToMsNLHLc9nnvPZLwn1/EefPVf+U/xvnCVSEQEkEQEnEQJO7S7RvYDxNeNYKrG7DKMhtsQ8cMmhgPKKKj+F7CiHYFR5KIIPxOmg5IVAtu3ACQSPh7CzUQOgAej5CWEkIe3vgxz0ROGO//qYfz/dnLT+ZxDr4QW0eNCJBorCFOVC312Ec2TiY5Bk0cAaQmiA1VH1MOwDHQ0kHdEDDf+2UTWhS4Z8diQMicLx8MLBfverLcP/jQzF0P8EJj5+NGK9RCz755S6F/f1+X/gxeP+Wsedv+vF8/54aSPJYFjIQd624MDz/UDLQnr8HU3ztKHRf8Qeno1vyAQJBaLcMtTV3cvgP56COCqd/QP9xLgBkH4BxO13n4hNUDtACC6G1S3zqooZ6Ba4lp/zcAFb7iERKQwQcF39IFJjdXECGADw0IE4gg674pYAnk4HoHPx54tD5daO5vxrugSkMjgiiqc7TVKAT6AT8R4ckbHEQCYR/IZBxJgA+XZjsR7vaoRpIxWqeqfXuGC2CxwudicwePEB1kNkaZCuwyF0DuKv/4sz9mzP/Qxdg3BDkBTMC8Q+loD6UGBzx0Kz6eAX/KArOQTlPHFoI4vVtf4rNuLrca9edRn4xBP7k8w+9AgZCgBfEUZWfEs8iFNZ3UO7TqmkjCO/rWdgco/yIqHcQWaC2EGTzgz5y/iXQAvyx3riyxxV/JeBriaGB9OrTA5g9/eokM+37GszqfA/UZk9iW5UnCtBqBl3XoNN6Ag/+zy6A5evPAp+TIFDn15gQw9rjrOzFX0s2JBVAxa/nP1a6AsNWYGjPNGPLTQgBsNUFvOA3Ht9o/rGDN0tWOCcxJGp+f7++kkP7PxcGv1+GjkaLt/fawpwwerQxBJNW4b+PJsYEgiAYYdEAGIlDNaAbRkIgK3ut0jKByp+8yz23X6GttmBmjwDvChgiYLP5V/zhH6/110sGcKo5CkggCngxnIPoPja0j2B+1BRkiYJiviaLJqghDI63G2nAgAxMCuDdnoD0wIQm+urMB3VuAwbBrFGgGgnhAFqg9+ujKsLxB3qGCQNEEtPinIQlAj4WgIw7/iXc9V/x/yUWFs2KH504bAh4aYWf4TrTLGTy9YbftyLeVOWNfYNyt/ji29mQnqMAltU3ioTtbX343yv/1u0YPUBz6zB702tQucnX0gWaFh6DgPdmhXaapGotw0SFz1qDiTMdd8h45HfcqCPRUhA3+NmKz1l9teCPaMd4urGaewRitNBDdahR5c3AfQmDCFT9vmtQEwqAYXX4XI2n23Z9B/Yb1FL+LWox6wHGbZSo6FR1LzyG+3hriSZvWT6jfXhl2cmQZJDrAbuYAqAHo1GA/EOgD8eGcU7A8eDvH4fQBuAhBL/Zp/vamPTrRENDGLTV/7E1WEPLDlP/PwzU4YhusIMUgfIPAr6Dhv5R4y2r8ldFwiFoYHnmr8TAHbhRQSZOctH598ZYhqt6wP7q/ouqe77RJxvzFYaji/z4vna4v5cUMDXqDAJ5ytktqtBDckyjvJg04hl16LB0xFfyMfD77PZjErGQRRjYIfSvoAXntks0ok8MsUC4KARWnYPlJBeIgLeFrUgDOHYCag0/XNAbWgRwQuLAsaQwIhC1g7+jCNKuT38JfnYSyTi+QQEwwHeT4/dWHYxJPxfOj5oAnRQqgU3YgGZSOaDyK3n/qkDYBKptzR3oD6B4fyRKjp2AzSl80YR/3P+/1vBjX18Jbu+YsrMRgbqPP8zrDLTAaupphfeZtyPs9BPztpLSBZjowF3woYRwBwOWaqbev15b7X4RWsiqYiY6ZkFEIoUwUA2OrkeEQE8HYNyD/rl3m88jCGgO/nPW3xy8x4Q/HBcM1dYg5q8N+B/SBSYhtD0EY1PRGLDoKIBHF3yLz4H/gSYQJRETgqeB2d4vC8L2NVnQn4PoVJJAcP0inahAfdXVI8CFszjRagCTtRdV7Sr895NBpRKXIT64RMFw/iw5eChhEvmmyUIH+k+Qu3cLzOAN6ILlFvgWnx3YWFDz0f38ze9GlfP6UQ3ojEY0gtqRIEbA5/WgQFhsEuIeL75uTzvqHktAWfj/OD6sQXssROcGiRgFn0QVkld7OznMDT7CJKzhMIqxW9B+LCOQdH4uyxIcE49VTSeLj0wKjzcp2oDXQA8YoDEGBLMW0BJw+eAxXejPV/IXd59/tp5rVyYXDw5BlRetSpQAcvgfOwVM8ObzBq/AQ2wX4lwkQV3vNhYFfn2LFgaoDU1ogqsfqGkJYmrj9Tr22KQwBLzbLuzDeA9yzyJjVRfwegWq0H+FThDPA6ZhZwX2M2Kh4waovCzAWJTzD/qY00c+6PM8coz08VNqglzx54LfHuTJK7z2rwX35ABLg1DzsZ7Qv7l/f2yXDlbf4C/irg0MJ0aCuD0wP74MrxfdFlX7tq+vtRdCpvt599EG9Yz3V+P+Oj/n4zLruZHcJ7oMt/MNp9eD6HEeFb6/TMfbWo85Pb79HJo8t3371/PuIAZqMvjPC34nVV6ZB4hEuA7AzA5cfU0y2n6ux89D/35/n2/vWY5Bf0qwf3tPLISO1Tap9qzFB6eap/beqI94NCCbGwgqOItY3CGl446CaQ8i2Q9g0AvmgJOnBoAA0gu17tsKtKS7D4udgCYERy2QIceCX/P7mBW+g/7D9S6Mn50CS0eAoQPDcBjopIA5+EcxEjLweRjXq0UbLIjcBxsGx2IZvlf0ATjz/6qypAmY7bhrk4ahsIis6ccXKHdueAfUgk+RWPCLh42c6zEeKyJpRTdRAOqBbl/Wq/uT+q+Fx3FoTIuCzc6+hN8j4veGjuAnhSE5gKnco3A3XwYlq2sq+lmP4yEOpqEoG0M+mGDYuYT0pKCFHgLHKt3T7T9p8GcWH+n1UwGa8X6kQt2x4CeqPexegT6o/Z4Cr313PHdgrsS2ZReLfpKIf+IMFnmVmwxQ9AhithYT73+p2s+JIVfrjwiHnpAZrSsr9CMstQXP1+1+510N/q8E/YoekMN9OMFvi5LvkRDsy9rgFCOoPdpgaQIWBZjf5KCSQszZJ1ivTvLokpen6tsJAVND0NFqb6GUGg2Im4Dyx9Pn7/0dm4pADAslJzTv+dKNrAPQ0wyySm7bj1RQgbAXsRa4R+mBJzpaQmHLmy0BLoL+Nh2ZRca8uUc6P37k97n451fvTieAE8BdZ2ItqFEK6oOJIYPsiU4woo140Oh+H/UC++gatHYcOFT+2y3AYvD1rM/fpxdUcsAi70c0OxAEP45X/hymE9XeoC0zfYhbcqfbhs09HpwnKMDR6g0mmYyKth/UcLl9ITGQ8N1S6s+gA1HvQCc2pluPvN2Br8SyZyfyxPP/VhCi1L1HWX2CQCuAE8TIq/sBYdANZmTIwqq0sb0HIzhhugBeUpBZLFyA8y+EErsBUYDZHYN9QAAooQwOws+uQlhdESSSqk5Qsh8LSYI6LDS1AbmOvLlRBqQIeITvM36+TP63VfE5hFClCTr9zEyVFwS3STQBy66DMHB+PJWIrfgGnYBx2dTboPa2X49GaBVlePA7CFx4iaGi4ns0aLVjMGvtPTDtmO4XEE8E5Kb/8qYai+NHl60LgAICcUCoJPVeiYG6Pxw/X9VFNVbFn9FNPzXoIRDTyzcpREYB5Fm1EQQn3KRi9wKApR8Tz48SwxnV3qM0q7ZhpdKvr0zfY+gO4oQf+EGPFYW/Xf5hwWsUgxiBbShGoGIx+D2eH1h2EeR3UQMH4zMaUKr4033nzkSkfQADelFbLOQCalxdxvN8mInhPas9bxtGJw29Fx3Y8429MAS0fL33Oeo7qFZeiToCC3B/VSNYuU0fgDnkhxGgMFdxiYEY7MYel+OHPH30IMeVFK1C79l+QdXVpFqHlMAXEf3EYDyfkkGdNvJ8f3RAXU0jpgM7jMNA5yCrtfzOicKG/M9bgEkEjqqPPDEcDfqVwGZv6zcO9avDfOhf4OmLFd9OLBHHdxp51HvOBlnAoQksYjASA1xnIhPsapTCPjbsGB2YevpPpgM73EYeSYIftgPgte6CWesVBB9QEgfnWYMgoeC8ql69bWoRIqYHvSIv/u26bj/jdqZ9KSGk74JRo6QS9PuTiSHm6Z62kLUGH0UO4rwWrhtRETkR4iKRdI8giJ2D2nUCMjsA0TXiVDb98NAf/rCMlajA9wesWHZrAe1dlwRyVI2jx4KkyUHSx7YDe6YD4tOC6XW01puEdAJwaEJzf1uATHi6ZlSCpBQscsh6C1xRcWEG4bCFeKcAVhVlDu54JQIkTT21hptIT/Afk0kMcS9BKfjBJozcDXCrtgbWXxbMAw3INQIxtQJPAGwXmYaBbYh4SCsuKwLOAQ5awKskCMmRg8P3xwlBfbosQaDqyZqBkyQe1CLQACoTgN4qbyHsPwkTiF2pYaj6MAXBmUosQHnUEYCsBL3MW39SNKMJ5PfoBsT33DVJCEbFnBCMOkHfvj6Xq8uw+dgRIhGgAiUqf5QgKDFyhe8nnYrlqn9sG1GoAfirubygX4H+8IM1CmQrMFAJ5ExzKIp54nPoVU2Auh6eBShDlTV4u5c4HE/fVvjFrsII0Ik6QX+Iq68jB19ziLoKC27FYe0gC+j1RSS+BgB7AvAM3m8HLdy5fV60C8RMVuhD1ieQB32MCCq0QPJuvuw5IHF/geMKwOPdpmsxBwVEfGEOgeincJqNmuSFIPhPq/xM81CWIIi+gCFBqDX3QPYd2OcCRo6GZBoA3AM+00aesAOQ7/2Pe/vBCXoguD4OBD1WfPwClzcui12AuH+gC0gEwW72KfjBCQRBr05D0IQc7N8PzOCMehPWK384MPVDJQim7yDdoiRTItzzFV/ZOX9sYFetP0fsQzb6O7wOoFjxk89YoQXv+BmSN+yYHYO+BsDRAXHhuJXsEFbdIEGZQWUkNVNzGA9NZUVBIQL7jASR0AclE4Pb7JN3BO72mG92+o8UG3nybj+mASh0FsLKn9GPxDrEcS2Au35BzHO1BksriIJdpqWjKR1wlpR4fN977rZqI+XbYjYDgVDpcYQalOYKMiuQbB3G6Pu/HlMbi9a0EMkksXtjvvXTfgMKAEZRN/i/O7yD8Da2S2Bdh3ICWfp8yuMkYl5a4df4vVWt4UF0yyqEnaT6swYyWB8/j111Y1ERS9oB0SLMtBGDEBD1PEHwtdjUEAHnqmoHU4wCDAoAS+lHwtu9eQLUAgmxVvAuMB9cELMV3m8EUtcBYYI9nkNIEEJYrQeUHfnzzRyC39j8CgSkir/E0P2odnAmAqDnDIhqrtV9BDNS2POjv/0pwKr6z1h/PMz3uf9ykFYq9TtoAXSwpz0HljdvBCVAPY6t7osv6gFhMpkX13rcfXQMIpuTsfTibkfOPRAC2meLRipI4mDPwMD5x+v3+Ey+qEfACwoUEkKQSMZxYJDz9R68PyP43yvo2aYf881rNQbZgRU/jp80QnW/hdXqJxMvCFxXQSNHpE8QiF4XI+wFfQcw7VL2Md7RRajsKgh2D+6SLAKPF356+/7yXYBTUgFy/38StUjFHweD+iiHh8/LV/i/TSvGk4L5x7F6AsIKbgb4C0YjgdGRIToGUx7cgS3JKP8pRcgak95BJGQbjaJdBYQ1qHYnYHL8F45QgHx2gLMQ2cDxBD/4SeR0LSDi5XzPQNjM4ySE/HGG6g+ugltLNSARn281BPtNO72eJLjdX4ITSEgpQvJYFEUg24f1qAYQNQdxx6Q/RcB85j9f+03zf2QV33IDPHegNgPABTfqFR8cZK9TA7/ll0EQbUUHW8Gr1d+MSadia+LRHwhunv87yWoJ3h/pRDwJAbDNQQFd2P2mH4kP/wDT/ZeN3CK3+ZjvgVpw4r20AMafb58j4N1UMknuj6iCx883PU9g2VHVH5JX2eEcPghSgRBCKPzK0Q3fknwPN0Hk0CyC0zBkz//7duEetgFjVtypASDI4CsknYJgYDhqsBxxy29+eyxrAZX75EEf8f+CkOcijMDDHx4ASYGGu8WHgPwpHJc0qOG8FgFTuVk0cRZVePFwHEIUEu8xSHoL5qWg4I7/HgOKXe2dcnu2SSdCGIDTA+AcxY1zYL6Q6AAFu+/1GvjKPSe"+"EoJV3NiM4Dz9C6oWkEav+NWjPWXNOIkKgNTi2I8LeBgaZHJxqrC4oNXoB9pzzMws/OW3ghSyQJgjbygOVEDhoj4nHLld8HPD6UUMFVLIgKrTL7cFoBRLQgEdXIseZ2/HhFPKbk4d5tYWwwR0nIFQSD2P5gQhs6meVfB+Bkyz2fOIvX/zxqsSODuAGIOLtPNnmIPCrv6Kqvgz3q4tCwNl9lWYfnsdHj2HTgQw5IBHwULmfSu1jEV3gDFSxTBmqSEVqiYK2IkWcRiAkwV/cyW9YhqHXDw9dkNQAcO6HFNJT7oChfrPUYc3KY17zAd+evAwF2w5SCKLV4EuCEKsKfjBVWHu9Q9Arh4CoBqEMWYBsNX7YgKP/69uC3M7/mOOz232QT+ox4iCyJGEFP4oBHd+GVvXBwX35nqp7qeIbV6L6tdZub3ueJ+gBIKgC6S5gOQFxDoGr+Bv2nzqbknd7ph/EmXzO0o+kZdc/wqvQkAOUffVMzKtYgx5Vob1/+HAfCdzHSiXHenX35/2JTr3KZ9Ruj2lYiMhLIFoNyMq9hFroeYMTE0bSLbhb4l3YlFPa6hMd2jk8dmrDgdQCnC4/+ANFlYTB6ATlx2GDGXP1rvL+SnWHw+cJes5/rRWt4H2pw9GklD4uSMpwasIQiaYR92gIyFX5S8dtRZt/nCAH48VXW3hRE/HKOsGquj8EM85Q9cfeAV4XwNGAlmIFIwPYrfLKuxV476RRetzcdeAsRSZhiHizCKEIOHn3EMOWy5X4uIJnXX6sFiBFLaBm/THOQAkVJK9j6TKwiSDTBWpwHkSPQJX7U959uAkoaTUuug6oQCBz1Zlxm0OJSIoIw04M+7zCGuYiznCfHww9AN6Ir+HXA7lfn2oBSJ2FOOh8SzINfmcAyITq8JX/sOMPx6A9LeYtVfwgCBZhdu25OB9/XmWWNPUEPD5dUuJ68wd1AqD2+w1PI9KxE9BW5t3z/igdYGWiL7L+wPv9jgVY8f0ZcbCKCuLAHN+c5wa69Zpr0J9t2KnpAGzyiAIPiFalJ8/xXrrA6Y+/8NoDnWCPNwFJzf5DpVkHte8hx76P+HU1+HEytEeSEIzAsu5r6wPJGu6oLz8VrKofXLce+ywIHhNa/Dmw8LrptWXZ4NKZm4pr/QQ7Qk8ehMrPtAF7PQCD309QgRgRZMKgAbFREAfBBXNalbHA9cEHMo4IgIUuPjjBWEUFEQpYTkhVO43eRiynJw9Jjj8TOUIlJExK+0wA4gWgQvcFBHAc7P4/u78/Ff4CC5ATB3P3oUwFClYgcALcxzp/B9Ez4DUV8RjBbsCBrMH4dLNwIDaCGhA6o3pXksdBvYBsktrXDgNJKAFy1Z+ZGIy5NXgXoBT8a3ZgVSPIUAMV6DjLxhsV8wX4n4ibbONObHNyCr8Z4FinNFjg8ziiF5zSV8A99u7Zdf5OisvVaAAAG3VJREFU/kIPAJLWX3hUIFD6o7MD4WkHIMXBk4IftSrPNBJVk0OoC7ice8HGS8XBKDoz/YFBLaQi392lGpCMJfhD9xVkx5Xbj73P9V4m1j0v73x9FjDDPlYvATkgFAVWcdNvJBamliOjAwRV0EpeRymAe717kMYRyy/j5FwFBX0fP7Dyx8gq8wn2ZXi8GfGYR+lFcGJSxa3Y84WgzBHetlU4cvKY44Ps4iP9fsgsPGEhQTAcHqwwGCj61SoPexKwasXFqtxq8qhD9SixoBBYcJEDNzmIoi3J7QkoJActVHocTVpPBCDhElAvMDK1PT/Sq3DwB/ygmyB9GNhYDH4so4Foy48kkPtZfZEv1PQTxYpyX0EI3Bu+/5krcN8fgwVdwWu2JNVNWAk+PcOOPMNdGFyAZ5Aj6gicgzNfwuHZg0HrLxBWfjSRl88fVCo/apX/IBrIvf65ZxtEoK9Bec4KZIPLe76osQns46NwW0pUPCPAyMc4A/KXOwZzFLGbAqD5xhhbgBcWfoJBAlarcCSQgdQJ+Movnih4gjZQTw51rz588y/ZgxVUEAQ8soCfX8OR26JwujCLGFAMsOjnwGrlPuQw9D/PPv8BYVR7pG/eeFtQpsLzR2KFI8SwKj9KlX++HeLOPuSBKrKeHBi7L4b+Kx184+ptAp4Trcscv69oARVYzWgaK01H1X0K3zNSmARKtxXYHvwJuT+8gLGGWgpHcWOmBeljFB2Ckg6wiAYOqfxEK3GMCAj6kIiTWdCBCXhkjUKMgJcLk271N9uLSbtvvK0S69OXAvoA5z94VsFubbmZvx4QAnXgBnJxENyQjy38wef81uPhxMpPJIQzr5ckuUTKe0wZyN57iFTWga8GvCwlh5UqvYgmaNV9XSxEVWs40kkosFwA70RgNOu8mLZfR6wDiwRa35y7j08NksqPQhcfkRBK/J8R75Iz+9C8gJpqzwiIeZII3QnYOkJWbVEI5jNuA+o2BwK82ifwnpSgHwaC+GNAdmW2VXfC+vPu6wR6lBj84C9WfvivZyUhZMJlJhjSukDlFJ3g4AvGJfC1iEpQJ/CaEd7G9wds7p71+odruKrHip/C7RdsxeVjzIxhoNkFGOW/+sk/YVAGtltfzZAIfzix8gcHhZCXpcGN2u69qWqD9OlRFAy7x2fQBhHUiETB+DocqvArYt98f+AEAXApsEmEcNLC0t2uPHCqPQIXwHYDfI4/9+8LMpchqr5HK39MJSrBXwnutNqjovjHFdq+fcHLp7YLR4mGgduW5hFpAXUoL4cTTuW5HJSkB5PC0S7A+8c+837DyoM1J9iv/po/o3BunlDqPjOSO/YbLFd+FGy9sxKFeT8b+nLNPrkAyD53FtT27yUS32yqUaEGTMBiASGcZ0FmK8nWxbvjC1q6WQC4VdWdAcBY8eFoAzIrC0b7Wt8wlPcIdE1FhUWeKU1Igv8Q/0dl4k/NnYSxdlDon8diUDeuQB4c8XVzcahRgyyZmNC+LAgeCfSVALde8/t1DCYawNoePGT83wlOpFUdOZKwxn89OsMEf0X8CxJCBN/dwKbFwkSMgx0ACJJDJD4iC1JEYh6XcEqVHpx4+J4I4UiAl26r5x64sttvSlAn3LBuQCz6edU8C+J5epBrC4YP52EFDgHrCw1B0eU9bOaTgh3wmYvQV3Oqqcf53XnVNXUBELX1xtSgFrirlII5d3HFulxBCNEfZx0h7K2f34XwdHpuYQcguN189Ow/nPXclaUcqMH5leCXjKOjbv3F0a7i2ZaRHmBe5zwnhA9S736ZC8AH8LHkg/T5znYgmES1dtuzGo92qwHIquiWX+4KgVLd8utv9Ml1BQNhEJW/FOgweiTguCUoQHkEwYhjfQIgm8eAzPKzHqAG5xGiiPyxeGRRaYetUpDVpHVC1T9bHGyaknb/TQTnuG7rDYwYCUT7/cMjtILzA+Go/FPw581F/mWeTkDuBsBCAK8ki+A29nMzPn4Rzjv6QV7xWW4fzQFUxb9jQQ1qc28kMi4mDl1NBr4usIsz5ltZqNm7AeJXfuTHd7nioLEyPBISU+8/tP1AC4Il/n+YGmjg2NiBRdl6yCw//zG5ph7bqaBuz8B4VMU/TqSsNPbwCeZA1cdxyG9SgKzRZPL+GXFOiH1/SFZ9wX8M3zUgvH8a4rMBjZj/h1W9MrwTiN6MlsCKiI4gycBzgV/xUaQGjGDHwHiYi0VIzeEAasCpNuL76AC7BIEl7i4AIxnAfoMxk35eJbZ68wWEUChs8IPz/EEE9BkUoNA4RCWSLJkY1h0Y/dG9bVCtUVPe7QRhtStXG4nOECDfUxc4Uw/Ik8JkA9o9+a83IrfHH11EdFUWc4phNgVFWkPsIHBnCvCCYBSgqEN9qtoXuwHhByYoJJA7BxIkkRwpDGgAHo+vQ3ZGOwCFJCJKUAx4MBpFZWvReeLgtBBkDDQu2OJxXa7SE/P4ZiUPHABjY1DsFIhPAaygWewiXK72hHjow/k8gCL6gKES8qcDZ7A+EhYlWCPGCX1wXIwzkQEKt8cP6iqkC0FEhFj/ZYtvXCtwuBLcDT5wXN+9H6ZEIkTwV/x/s78fXFX3siWHEKrC3tw7EFZ31Ll7ttknQyEMGgAqCaVe1bGk8r8nFWCQQR0h7CY0dsU/mIeIuA1AGCo02Q0YVXxub36sG1Qgfo0CBBUXxap+ECFEycQVyViBEBFPt14TK9rZHB9EwMG7DPXOv0OVHkdtx7OSCXfb3av4CFZGTwQBwT7/hKPHE4PzpJ4L4+FM9r1n8B+B+9R9I4Fu9brYUZgCunZWNxdQgIs8mASBQ4F8hJpEiaf4GPihk8FdAxin/kybjZjTj+mAQy6ihZ9whDvHAWB6BKrBXQr+5SBfqPaINwiz12UIwoTmbPACZY/fshBBBKNlW8ZCHwH/cVKSOZMm4Mxk4OwE9JeB+EFkn1IzcPQoiSB4vGgNeJSoik1A7m0TCmE/HrggB+/1M12C1Z18ACGoIeH1pH2IhAqFWgBq+kDFEWAvA3X8tpW0cnSD5WAOriOHhnYraF1eLTkS8P/QsHUBdtMPnOrMaANJE9AZiaKWII5Ue/8PTHn/UcCSTgIF2xN4zdmAQYIAKeBFl6FiO0aKfq5jcImHfPwTxcEdRmD3LcFoAva1Hdjm9UgGggI9YOoPkOBYLsT8HlG3nucMDGkOOJ8CkNOELdSO7D5qqAeJYBb2GpABgRi2gxLITgrOQ9C937HgB+0i7MeRx3gfPWCXLtgbLJAu/gCFBPzRX8eADJqCvA3FViC/BlOQC4LZyrBq8BdQAOUKoKjqR7v7EFfVFMojPgEoSlJesNIePyLHwW9NRgq7E6HvUN8A0yj0wyWDHRZ3J2A1jHdMyu3hCGwSDwdRir7h9VP7AKLgPoMCgKziOFLtrUm8aIFHlgxYfz8WBYUU55iAXauo+evJaIK/NTgRJM9sUcZRzcCnMdNKMJc7usnAyrpxHYkTRHK+n1HxS01LheAHqRWwKIDqLvQC0+PupHZgBawfVGsiniTVHwZHRqbUI/D4Cd+ftgyLAR1ehkIiqaKFw7MJEwUIuK5zsu4svoFYCFKgBJZACBuppOId2RDkPZas8H9kULcA9a0KTCQDGtpnzT+RMJiOGseHl4BQ1C29AWUXIIf/OIwwqoNEK3SCuA7FRiBrE9B4/PcrGJ1OQNj83F4Xbol/TgVHfMiIZLAdcaVkgh8sLrd+liNQH/FqsNTfj15m1J0X+ffZuq/gTY7QnvIfJz6UzBJLs83ItQpt3RfZz5iuGfNPajpngUm0R8DoA5jDlzsOTAwZjzsC3Jjxg7H914PjlcskGdghgx9HG4OOQH34uwQyzz61/0qiYNQjXxECuWYbGM/DrjtPH/Mw/K+gBLLSA+cEfPr4MroArzcDuybbr8Zc72i2UnzeHnTgzD4Ug78SzIvCoARVOQxaFFR3TzWnkkHUVFShEuqKxZnKz4p4YYcf8ZhYhuu8wFgSHcuuwCJagI4bgchJQK/qe9c/RT6nGcg6KGREJpb+MI0EY/b0jcsni3AJBeCQNsBOFVYoApcM2Aom4VFgIRdHpeIG8D3YaxBD+qCiQ+rBOSVnci8hzkAG1t/pgHA4uwDzmu8xFKkkkIqCfkIRs204r/hiDgutoAAcowBMZ9+KS0CcXVBOHCvJw2jMQSJyeoeExF2DuTuRcuWAo9sefyUQ6/oBaIjPtiRH1KvQKvygAHb171d+vc4GRMDPoxN/kL5pwlVh1mBQ1quQJAJ5j0TgOAis+h8d3mnC8xTKE34+8sDNjyVXE6nFMN+H39TQDmocHScENvN74LoGScGU4f7g6IG3n3C3qnG6JBS+Z5tHOOzRYQx+u7MZmAl0OSsRLAS/VIKfRAWU92+12aaVPksGDBWQuCMvgNy2M2Mt8EwqbjosZAec5xLEAmXmcFTHiOWARWglpNpjdEtBQRxJJU5VL5/7F1X86XntXgUK4q+KggsUoIIK8oA+kgy4+zLaACqQGTVOX6MBWdehL6BxHn+tlyBMDGAqufd7WOX5WTJwKYDfXJJP2GXDPk7Tj5Ed7BOG7DMFaBRAJgI/+H2Ngeb2SKb0zkoGlQBHkefDr7xMA5HZeJPtKIzyApI9gmnPgf1c3mulfhe0gFekDCdNFnrOwi4Gs6eTACNjB+Uegcgojog4V25P8bctRYY6RL8AJklE9ACFAGZdBEahd4d4CmghFhbzcwaXYH5qTlS6DY+KfNH5Avzjo2JJ0poDkSCMxLn73H/eB+ifvgvyIFCWAji7BWC8hd0qj0FziMdrS70BlVbgamIgcmotGZDNPwm0L9l5iHv7WRoAFx57ScFS2r2iwot8oKu8l+TOCOg2mZ2nFdjTgOFQENzKkJ8OjEnsE8f6AzyXwT6MNF3RDRnuj0Lwo6wTlBMDIyqaz6G+RiLJMg/KUrQV/rh9uH0tWduwoxmky0kSMQ+rnXxZsGadgnxfgk1pCnsIsGYltvfdzTOBIclIsN8MLAGcz5gBwj94AE8DuC9Molip/JGwB57nRyJiyD3pyk6q5ij+3TzRLohcqyqCEQBTepF15+WVmW8SEr5jMUUkx3oMIsrH3ndwAQganKzyMpOJNxMQooGBYwcByw7axIhgPRGEr6GSGJhkAELoQ1YRg+dPeD5IIRDIqq5PA2Jh0Rq0YcS8XBi0ghGRFpCtWTdum5+yLOsQf2EuYY8AfnbQZDgCjHxBSKwTGpt8QCIDVH3/4H5OwEvldhliINwAFLsEyyIfGKV+vm3eEehVqKTdNxtDiPoLHCRiuwTJxCECxMDqDjTvZ63KaPKvRgV2i/F3ohm88V8LN8hgJcXD5pVGIPPNn9EBqSQC0I4AMxBUcQNCkarkFgSn/oCs9GCVep4eUG5BRAOcQOCWlGSc3If0IFqRfURQGRrKewPKEJ9sLnIowKCcw+f48N6UHjqYtgInaCCkBbPSj8VEkCr2g8U43wY1xX/BNkwreQrzg+oaJghOCGTU8RBxuIp6VFOGoEXgEsBLIgV6gBgxoLSI5CgiYNT+GBHsU01GthrceiMUtv9KgAYktgVNeGrBbtiOQVi9x8WjiAW7UNUnm4Vet7WtsFgDCDYEwQ/EVL1PnQf/xCDLTowTh4c4HPRDoQaiwhKIAae4B7xgCBydI/CDPOrevK0FR4p6w3VfoXgQiB3T1N8Y1PCD0X19JqcHGfzB5WkQE4p/kdeXBcEVUXEIFqSij82lMyrWq/7c+LFHA7z5/dwOHHg8s/Y8C2CmhbmALtare+4UWLfb25BmXABKABTniC8gRAP2yvDAiUAsElnrxFzITQa/sAFecAOY7zPV/8jMQHSbWAiUPGkQNABhw85xrSCv+mMSzFR8+7mjw01A8f4F8S/td4jnDHYxpT8/OEyV3gz2+GTfdAeAszswfJNGlQhEIjB0Bls0BKn4Iw7WKu9f1gmSagmvqleEwJwnZwjO7npz1HdCJ1hS/mlBcRXyF3i/M7NxqJFoeH27z7nnJaBmpUZKHsTbGUc1ALEoIGsGYl9ixS50gjAT/VhB8IzvGTrBVfWEz1MzAkRFTtecW731VdjNQPukVdhdn0Y8d/a7WYH6i/TBPBzUFwAlHwtGHOQISrgb1AMUgDETTA3+THAdeRJhg59V/Ektofa9I8wxVICkC7QQSAd2O3cftzPzdMK6aA4iZI4ILfYRbb9RgqICt2AxVnYZ4kkBvHOBxT/zN9ybHx/f5Ql2fkGCX6ANm6F8WCfqAS+Eq5AGcHJd2IFHagTMHAAj+mWBnDXuc81CjhsAi5dL2K8QCYI1aJ/PJtSSxEFXASv7C2I3ZB9/a0j/7nDn/j1pHsz9Jr8fNpxPBUAUUYD4wz5GBlmyAiORjtAIGDFwzSUwqiNZ1d1tPiB7/Q9VeI9KeJU16/knkEeQJEALjY4rkp74fCZiMDSA/PgvT/aT2gYgp5E/P29AKBQAo6TRth5T4VesQFb0i4K7RA2MZpgyFXCEQHCOixuYMPgy2L7+45ezSSKt2oUkURlpXkEMOLSiXPuDQZjk63N5bmzOSxQdLHX7AhwUEA0BAeQPJIQzkAuFlOK/GtyLdiGDKEBdllQ7YouxV2Xdwza9So4Kp5Z0yAgUhTlJgFzSFrznIHYIwKcCu2/L3LsCg6UI1b1/CA+ApIV5/32HqOIjdQusE4azip5Wc1b0q/QGIAlaWEJbXP3r/L+AEipw/+BtkQVY9fIM2i/ZhgVEgJO6DZ1ksVtlYdoQAPhVO0oKmYBmnAYco4DRCRB3TwCziptaE0auER9/VzRqKNOEYINOQg2m1l9GpGNQAhh1v6UmxNQh2M4+LmlUzll0OTjYQOaGlZAEMCrdhmBphaMBwBADrSQQc3//He8KgFETT7p6BHnjj2X9EXsDjrgBS6ihoAmcSQVYmE4JgYWFpp1waAQRoqDzxDhU+HxSnZHz/9JEY6Y5MJA+cwoWrt99+U3Mc/9g/NQTFaigAEtwB1yBzwzucZSX7RZEILhR1d5GDCsBLVUdIQvsldZfEJt5i/MHx2hGJZFkVVyK242iFeh58oBUFqIQbkfp2DV2X0CkAYgv1sU+P+I/HmBu8nErugdRnUWhfp+A/ddlbEH3uQlBsNobUEMHasK1HOYn8BEEvCUaiuigXRIKj+sGOPA4KAWz9/s7WxcgB4+a6/fI2osEwv4yOENAiPf+wQhbc/5f0gGisWuQaRFmGoIqguARWsBQgTTocDLMT5OJUQnhqdCEig+/EShKSEgTVV0MBMnz04BcshPnLk/+OaV0/dwKzB4QUt1NB6uTDfGOP+cNm9mEsBAFiM7AQh9AKVEU75vy68jeOxrUC4mDEuYO0oLqoSdHaEF2eXYYSm0V+oEOwpLmYFOF3Z4CmAeBTIGueiIw2xoKPzDBJVBXQ5g5O8/twwA+QguIjJt3+g0NQEcDfUXgO5gsqlTBLkQLdl86K3CWneitQ8sg/5oWAUJP2C3V3RoEyji5n4b9lB4t9pz2CA+cAFn1Z9I/uzYsU/ELtEBOCHYQQqGcFejV+yeuRJX31zsKV5IGjway9z6PLDxKwNEPsBuOEiqw57jGgOtZ1Y++T50AuMFl7hPIbhskiOwsATtRoc7rS7dXrpcgrMCGJca6ELJo+Y0be0BW5ZKGcFz4y8W9BduwcDnK9iO5fagsKpp9ANnvDPxeP8THNyIVFo1AMas8Qk5v2Ytm0LCCYAXqn+wQsPTBh/5Bcnne14Os3uCQt28vsK1WUESJFviBgAW//3u9PLxusXchcCR2WsNzv/ImvgZzzkUByDUAIrjTvmSHAowpJBQE4SUlxMxnARlQbIqkArVAJ6pBBvELCCKlkyCDAP45BYfEPfcUpfMch3Vn4bheYK4E66BxAxHSVd5INgEPgU/NBCDfNQ8Ho1CoINAPQAW/QT8OCIZlNFCB84XhoDChFByHGjx35v9BLgyhmojqHYb5QYXnuAecvua0hZe6BV9f7v4ibvgvamrmAc1TmaEir0LQ9h97eYAYVoM/nWA60i8Q3Ifezha9BqaaL3zvqd6IAuwwLSCCuCLuJWch4h30giPtyiAphKEBcCu9BV5wwzkMxID8rhMwdwMhcSFgrBT3RUTQboAUg3+p+Qe1IGarOioVnazmefV3lHpwA0AcLWCahUiXwePHWJsP+GH1gnp/we5KfOhJAbsj0H/BIEb04TbrTPsAyb2LLu93KwfCvn5PLAwrOXAa72eEQRo1CNdw5IprsAZ3hApy9zlcITG2vpCihsRSYxNS+J4vdBZ6B52eqRcQ/QXmSjAWSfa/5GA5qEg4iJFtm624AqXLrSA2gx8p1Mdqcghv41S0lSp/xAYs9gakQc4Ie2RTUYwYgt748mV+FU1Xgp14eW3XYZ6cdqGTNHwHICTwEeTPl0jEZwIgP9gDEaogeg5IHWCF+1eoAhvEKPB/EAeTRsM/pSAP5wjWEUMM1/NJRhwJbpJSgK7S7zF3EOsI5jBQBK9DV80Z8Y0COzvmWzJXgDl40KEC6cqvqgi4OB5cpgLFYK/1CvDiItXqC6/S87wfAUfPtxqfGNzlYaOjlf1IsHPPvffHgDAoEeEST4ZLZUd/RSo91/BjXY5ggWgQ4In3fyj4mUqPrInHOCLKO3wUwRsfyXpt1nEIRLrqcWeTuk7bigsbid1zD4iDRQtnIdQsyIXnFCn1I9D7ADgxEhOvR5AJosoUbu1FkJyYCi9OhQERoIx+4AX/YqUXQhtYEwKN4Cy1HntLMmtaAQpqfrT/UCoLSxeswjA5UWPPi0mjajUWxMTdVusNvt/ChMdmILK5IRMFu90BMEzFYHdg2GAgeYVHMMJIBTA7EFTx/5fpgTFXz9w/en0ZjD8kCDoKPNGwlB01BmoWQbh+AxR689mBponGJOr9OwmMu3dtJ/ylW1Tik4ElUPmR9RqII+pVhD9ychABMQ51gOIZg+/G+5mGIzLB1JJC5WhzYjhJ7IWmLDpA8jzsAafUPkB2WnFBF4iSxkq1ty7f25rv/+EQLOxs2oUdTSA9HIR9swdBlCcFe9owPC3XWDDC0ISVzsEVbSCF/sWdA5Fu4HJqankp2SeQCYYrImNalfmhpVxYrGkUS4LeSUjg8dD7+D7w/ybIfy7vlB9/HJ978zr7/45Qgajzj+4EjIK/ULHPRAOlKr/aG0AFcqCyu0GcW45Igh6JMJmhA49/U+cEssHNJhtXDC1MOya3j/sAiAGcrEtqtgjBD6wEzSDc7D8o6C8rIqAZyPk+NQoNLAZ1hR64Yl1FBY648smUYKnSg1Xwk/0DyRyArByMUobyByhCcPnOaPyoegREFS4jNfYAw+IHCjdC1J2WDZBke/OyN85J24WiXwDYPoJyYuCD238ulvuzwt6KgHf0shWKsqCFFGjB/w8HU8eeTED9wAAAAABJRU5ErkJggg==",tme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAF9UlEQVR4nGWVy64eVxGF16X27u7/HMcyuZGYAINwmTBigngBXoc34El4B0ZMGDJjFCExQUIKiRKZYBITHdvn/L1rF4P+c+yEUqmH9WmtrrWLkdB4C1/91h/9yn947D8+8CfdlBeGGAMtqwNd6K7VWAJrw9qwLtw2nDaernh6wKuHPD3S1Vs6vaPT97W9r/Wx1seKUWj7Uzz6vX79T//wF/Gbx/7rw/jsFB/39nlrX7q99LKrp5bJZXAtrqW1uJIncbNOXafBU+o0tZW28got0AJ3KACsE4OfYvmzfvDMb/+4//Td9snD9rfr9vHWnyz9361/1fpNLLde0mt5pTZ7a9pCm32SrqQTfZI3aqNXHAwvcAB4BPwnk/oMEcqX8eaz1t9cHjxs7133f5z6p2v/Ylme9eWmLbexjlhnrPBirz3WxWv30rw0L/Yi96PpDrcDcPMEfq+qvQCfsFF1blcv2js3vb2xLNd9O/XT1p8u/Vlfnvd+25bResXC6BFLj2WJpUdv7uEe0exGByPoOAC//BH+cgNqUjfkU4mOEetde+O2vf+y8br71Nva+9q/XpYXvZ97z9ardUXrra3RerQWrUU4myLk4AzYiADwJ+NRQ41i7MSNEBIcM5YR1+f21rnlXcPWtbVYW1/a7dL21mZvbK211lv01lpEtIi0MxTmFGzMAABAN6gF1CTPxI1gkXa5Z5xGPNrbfo6xB/bQubW9nXvkHtXDPfqIJd2bI+1mpZjmNK17QFuxDzhBJued8Fy0KLvcp7fpNzJuM3JE7daIWGKMqAylW0bLiHQ0e1ppTXEK8Qrwkzv8fUIua6oG553wQpRIme7lbfpBxm3GnoEMZ+wZlYGMlu6pNh1pT3nqALCEugCeAB2ohKqYk9hZd4JFS5ThDm/lB9N305nGtKfnNKZiqk23qZhySZOcYhHFewXfI54UMCBDOYlU3TMkSaYWaCtdwXu5yprOKUxrqk9FyUWXNKXiBfCNgucGboGAUBwUJzFYO3G+MCwFtdAn6K6UZZSyXCXBAUVdGCoS5IVxAcQNujAHKCiLLHJqDtWZh1GHV0Et8EYNqOABTUhglKJoyKBBgSwCBC6Ajz7Azz+GiJbwhFTkZCXnEM6EJcuHDmmlztCkBE2IkMGAAhQoSCBBvgYA0G6xN4DgLE5IU5iqZA1hJ8zDqCY2qktJHfEnZSpIk6bE++kEXwHUEBMCmBBBFzE5UzNZuyBRshlSSF0aEg6MaDHIgyFCPAqvA/YdIjTgQ3WBLNZkpWoQPnRIUljdGiIkHd9jumgeO0ESEI97cNTPJj6Z4ISOZh1JUSVLwiAs7pRp02aTypRUhwIzjvhfPCKF1wH/BTqwA5pQlnYyipgs6dDBQVncZatZaZUlsUxZYVq0jyfm8kNeBzz/Gu0ETrjABAURAoTJOVVJpDAoM3ZOc5olfmMK42CYMrRTAr6tIK6QiSA84VtIIEosslSTNYUkUxyS5aEDQ6tMmQ7YDMOmjziYx8E56oPEl8DdDgM2/BLeIJVw9CRSTClZg97ZrDl0BF6m49V0GTIZQL4CvNuxFj47w4ASmqUkAalYU+DBoIbK8hAG506aZTLonWFG0IMa1AAHXlegW9wFGuAJG97hhFkqiuCxUZyqSSWR5GCZHKxB7nSwDcZADHiACQ4eJ/Oot9+BvsaLQD2Hby9RUEEs1cUlcdKpmWKSQ2VyqAY56J0RiEEPOqHxXYv2W4yJuANWxBkBOKEGFcwyjlhMYdLJSjLJpA8FAxqMwXZRQA0wgdQ94Hcf4nqDFnQhBDcY5YJUIqSSpnxpRqone6ol+2Af7Il2MJJxnN/8lgIA8yWQUKItaBMRsGEdDIrQoYNTnGSyBqdZQSY16IEYaANOOKn/A+htXH+OdgLOiB1BBOEGCz5ejmO6JpGEeexVJTmohJNORqIlnVDyO4CvvsT2AGm0BVEHo0IMHeEooeQipzDFY5eSNcigLgwoGYlIKHF/ky9Z+xD/WrCfoQUuRCGAKBhlwIBRQvmSuykkMYHkqx7EAPK+/wdqEbWmfB0bfwAAAABJRU5ErkJggg==",ime="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABGSklEQVR42u3cx4tb6brvcf0DmmpUoxrUoAY1KCgwFAZjME1jjGmMTWNs2tjY2MY2DjjinHPOOeec3dXOOeecU2VlaSksSc/9aq1X0pJKqmD3Dn3upvnCSe197v38nlfS2fscW1x+kbCMloAsFY/skEY5KbVySb7JXfkoT+WtvJGX8ol/67s8lDr+o065KW65Jl7+q/zyF3/nWTpJx+gQ/7H94pPd/Oe38yduEZds4E9dK/Wykj95GX/OYvkq8/kz58h7mcmfP41/hMnyTCbIIxkn9/nv5raMlOsyTK7IELkgg6RKBshp6ScnpI8ckd5yQHrJHvmd/3578I/QjX+E32SNdOEfobMskV9lAf+vmiOdZIZ0lKnSQSZKe/7kSv7kdjKchkoFf2q59Ke+UsafWCY9pZQ/rZQ/rUS6Umcp5k8q5k8p5k8p4k8p4k8o4u928Hc7+Dsd/F1mpWLn7zArVhWpHOlsRvYC/Yf++t8A/j8fQCxrADvTA/j6vwH8/zGAaOzX/w3g/+cBaJEuEkqMMQbg/t8A2jiA8n/+AHzB7qLFx8K2zBhAA5Q16QE8+98A/q8PwOXvLYHYePEllsO666cGcPR/A/jnDaDRN0C80Ynija8QV2K3GsBlywDe5h3AVYAvAv0X4IUH4P7fAP7bB9DgGyau0BRx6yvFGd8j9YlTUp24LF+g/gDKGwbwAqwnwD1o5QD2/VcPYMT/BmD9q94/Thq0GeKMrpbG2B6pi5+S78kBJAoNoDFrAFU/PICP/+UD6PL/xwDqAlOlNjBH6sMQ6XulJnZavsWvyGcG8D7BABJvsgZwxxiAK2sAZ9ID8P/gAF78QwbQ/v/eAGqDc6Tav1BqtA1SE90v1fpp+Rq7Ip/id+UdA3jNAJ4nPsnjRGYAN0C9whe8C+kB+BmAP2sAu/jPNx1AjRrAlzwDeNqKARz/3wD+7r+qtSXy1QdLcJN8Dx+Qb9Ez8kW/Ih9id+Vt/Jm8sgzgfqL5ARwxBuBjAN70ADbznSE5gDWMJzWARekBvGsygLFy738D+Hf+9T20Sj77VsuXwFb5oh2SL5Gz8lG/Ku8ZwJvYM3kZfyPP4h/lUeIbA6iV24lGuZ5IDcALjQ8aP4+zOYCD/Pt70wNwqQE0WAbwLWcAr/MM4FbOAP78Bw+g6L97AN/CG+Sjb6N89O+Qj9oR+Rg+J++jV+Wtfk9eMYAXsTfyhAE8jH+TuwzgVqLBGMDlhFvOJ7zyZyI5AB8D8EHjyxrAtjYN4EnWAEYYA7j8XzCAXwoMoOJvHsB/aARfwtvkvS/ZHnkfOCbvtCp5G74mb6L35KX+TJ4xgMexj/IgOYB4rdyMN8i1hFMuGQPwyDlGcJoRHE+YAzgA/l7jn1VwqwE0WgZQLUuNAXxmAB+MAcyQVxClBvCQAdxtxQD25x1A1x8ewB9tGEAljO3+7wzgU2SPvPPvlje+A/LGf0LeBP+S16Fr8jJyT55Hn8kT/Y080j/K/dhXuROvYQD1cjWeHIBL/lIDOEXH6TAdoD0JcwBbGcAmBrCeL4Br+AWQO4DZ/MQ0B/C8mQGczxnA4YIDaM0LUNmqAfz2LxmA/b9xAB8iB+VN4IC88h2Rl/5T8jJwXl5o1+V56L48jTyTx9HX8kD/IHf1r3IrViPXY/VyJd4oF+IuqYq75SzYJ0E/ZgzAI/tpD6/DDgaylZdiE9efHMBqYwDfGcBXBvBJ5uUMYJIxgAeWAVyzDODcv2gAA35oAEV5BpAZwT9sAO+iR+VV4Ii88B2X576z8tx/QZ4Fb8gT7b48Dj+Vh5HXcj/6Qe7oX+SmXi3XYnVyOdbAAJwMwCVnGMHJuEeOAn/IGICbAbiMAWzhC+NGvjOs49fD6kSNrFADWGgM4L0awEs1gMeWAdxUA7jUxgGs+Le8AP+nBvAmelJeBE/IM99peeqrkif+S/I4cFMeMYAHoadyP/xK7kTey63oF7muf5creq1c4hU4H2uUczGXnGYEJxjBETpE+4DfbQzAqQZQzwBqZVWiWlbwS2JJ4ossTHxUA3ijBvDMGMB4YwB3ZFTeAZz6FwzA+gL0+jcN4L/sl8BL/Yw8004Df04e+87LI98Veei/JQ+CD+Se9lTuhF7JrfB7uRH5JNei3+SyXiMX9Hqp0hvkbMwppxjBcTrCEA7SXtrF67Ad/C1c/wauf60awHJjAJ8ZwAeZm3gnsxJvZHrihUxNpAZwvxUDOKQGsJsBbP+bB/A7df/JAfzD/mcBz3WuXvtTHvmr5IHvotz3XZN7DOBu4IHcCT6VW9oruRF6J9fCn+RK5KtcjFbL+Wid/MkITuuNcpIRHKPDjGA/8HtoJ98RtvFrYTNfGDeAv5bnf2XiOwP4KosTn2SBMYC3DOCVMYApiacyKfFIxifuy5hEcgA3YLrKAC7KYPlLBjKA/nKSARzLM4DNagCr/4UD6PRvGsB/YARPda5eOy8PAhfknu+y3PVdlzu+O3LL/0BuBp7Kde2lXNPeyZXQR7kU/irnI9+lKlojZxnBKV6B44zgCB3iI2E/7aEd4G8Ff1O8Tjbw03FNvFpW8jNyGc//Yp7/BYn3lgE8ZwBPZKIxgHsM4LaMSlyXEYkrMjTBABJVDOCsMYC+lgH0VAPo/hMDqGhxAJ1bOYCyf+4AHuuX+Ky/yMVfAv6q3PLdlJsM4Ib/oVxnANeCL+WK9lYuaR/kQuiLVIW/yblItZyO1spJRnCMl+AwQzhAe2kXXxB38B1hC18WN4K/HvzV8e8M4KssjX+WRfGPMp/nfw7P/8zES5mWHsADGZe4ywBuGQMYbgzggjmAxBnpn2AAiaPSJ5EcwD4GsAuubWoA6/83gB/964F+Re6Grsjt4FW56b8uN3y35LrvrlzzPZQr/qdyOfBSLgbfyHntvVRpn+Rc6KucCX+Xk5EaOR6plSOM4FC0XvYzhD20U6+TbeBvidXKBn42rot9l1Vc/4r4FwbwiQF8kHnxtzI7/lpmxl8wgGcyOfE4awAjE9cYwGXLAE4zgBMM4AgDOCi9E3ulZ4IBJBhAYpN0S6QGsByyxX/bAEqyBtDxJwbwX/xL4J5+TW6Hr8nN4HW57r8B/G254rsnl32P5BIDuOB/IecDb6Qq+F7OaR/ljPZFToW+yXFGcJQRHGYEB3gN9tJufiHsoK18UdzET8YN4K+JfZOVsa+yPPZJlsQ+yML4OwbwhgG8khnx5zI1/lQmxx/JhPh9BnBHRiduqgFcYgDnGcCfWQP4Iz2AndkDSKySLgkGkGAAifnyS2K2GsCUv2UAxQUH8A//HwbdiV2Xm2HwtRtyNXAL/DtyyXdfLjCA876n8hcDqAq8lnOBd3Im+EFO8QqcYATHGMFhRnAwXC37GcIe2sl3g+18SdwC/kZ+Mq7Xv8lq/SsD+CzLYh9lcey9LIi9lbmx1zIr/lKmx58xgCcyKf6QAdyTsfHbMjp+Q0bGrxoDGMIABiXOqQEcVwM4wAD2qAFsVQNYl38ACQaQYAAJBpBgAIm2DKDrDwzg7/gp+G8ewc3YTbkevilXtZs897flov8u+PfBfyRVDOCc74Wc9b+S04G3cpJX4ETwoxzTPssR7ascYgT7+U6whyHs4svhDtoa/S6b+Lm4Afi1+hdZpX+WFfpHWap/kEWxdzI/9kbmxF7JzNgLmR57KlPijxnAAxkfv8sAbjEAvgDGr8iw+EUZEv9LBsX5CZjgJ6AxgMMMgF8AxgB2SA9jABuNAXRt7QASDCDBABIMIMEAEgwgwQAShQbQ+n9VUNP/WcA/4HvA9RhXH7nFl7xbciFwR84zgCrfA/mTAZzzPZEzvudy2v9STvrfyHFegaO8AkcYwSFGsJ+XYC/fCXbTDoawLfJNtvBTcSOtj36RNdFPshL85eAv0d/JQv2tzNNfyWzwZ8aeybTYE5kceyQTY/dlfOyOjInflFHxawzgMgO4wACqGMBZGRDnJ2D8mPSNH8oZwBY1gLUMYCUDWMYAFlkGML1tA0gwgAQDSDCARKEBFP7nA/6RA7jCAC5FbssFDfwg+P57wD8A/pGcZgAnGcAJ30s57n8tR/1v5XDgvRxiBPsZwV4+DvYwhJ38OthOW8JfZBNtiHyWtZFPsir6UVZEP8jS6DtZBP4C/bXM1V/KLP25zNCfylT9MQN4IBNid2Vc7LaMid2QUTGe/xif/3E+/+N/MoDTagD8AkgOIM4A4rulZ5wBxJMD2JBnAPPyDGAs+KPyDKBf4QEkGECCASQYQIIBJP5d/7OAf+MILvH/8Rcid+Sv0B35kwGcC9zn4h/IKQZwkgEc9z2TY3wMHPG9kkO8AgcZwX5GsJcR7GEEO/liuJ0hbAl9ks20IfxR1tHqyAdZGXkvyyPvZEn0rSyMvpZ50ZcyR+f69WcyHfwp+kOZpN+XCfodGcsQR/N9ZGTsCgO4KENjf8ngGJ//DKB//DgD4BdAnC+A8X0MgF8A8e3mAOIb5Lf4GukaTw5gqWUAsywDmNDGAXQrPIAEA0gwgAQDSDCABANIMIBEqZE9UaIqVhVZcqSzJf5LBnCep7cqeoefd3flrHaPz/r7PPcPuPpH4D+RowzgMK/AIV6BA3wX2M8I9vJ9YDcfBzv5TrCdIWzVPshm2hj6IOtpTei9rAy/kxW0NPJWFkVeywLw50ZfyOzoM5kRfSLT9EcyWX8gE/W7Ml6/LWP1GzKaXyQjYjz/sQsMoIoBnJWBsZPSP8bnf+wwA+ALYHwvA+ALYHwbA9icPYA4A4gvlF/jc+WXeGoAk/+GAfzSigGUtXEAagS5/bsHUMUAzkXv8tv+Lt/w78lJBnCcARxlAEd8j4F/KgcZwH5egX2MYA8j2M0IdjCC7bQ1+E4200btnayntbQq9FZW0rLwG1kSfiULIy9lXuSFzIk8k1ngT48+lqnRBzI5es+4/nH6TRmjX5dR+hUZoV+SYfp5GRLj+Y/x/BsD4PM/xvMf2y+9Y3z+x3YwgK0MgF8AcX4CxlczgBUMYEn2AOLTpGOcAcStAxje4gBK/5MDSGfL9K/86xwDOM0ATjGAEwzgePC+HAk8kMP+R+A/lgO8Avt5BfYygj2MYBcj2MEItvOdYEvgjWymjcE3sp7Wam9kNa2k5aFXsoQWhV/K/PBzmRt+JrMjT2RG5LFMizyUKdH7Mol/3PHRWzI2al7/SP2yDNe5fr1KhujnZJDOAHSe/9gRywB2mwOI8fzH+AIY4ydgfBUDWK4GsEANYGb2AOIMIM4A4gwgzgDihb4E9rAMoMvfMIDiHxxAzghy+7v+Os0ATgJxnAEcYwBHGMAhBnDQ/xD4R1z9Y+CfyG5GsJMR7GAE22gLvww2M4SNgVeyntYGX8lqWqm9kuXaS1lKi7UXsiD0XOaFnsmc8BOZGX4s08MPZWrkvkyO3JWJfPkcF+X6o9dkVJTrj15kAOcZwJ8yWD8jA/WT5gB0nn/9gPyh8/zHdjGA7WoAfAGMrZXfYiula4wBxBYbA/glPqd1A4gzgDgDiDOAOAOIM4A4A4gzgDgDiDOAeGoAnZoZQL7vAcXNvgI/PYC21NxfJ+N35Difw0cZwJHQPb7h35cDDGA/HwN7eQX2MIBdDGAHbWcEW2kLQ9jECDb4X8h6Wht4IatpZfCFLKelwefgP5eF2jOZrz2VOaHHMiv0SGaEHsi08H2Zwj/WJPAnRG7KuMh1GRO5ygAuMYALMizK9UfN6x+on5D++lHpqx9iAFy/vkd66Tulp87nf2yzGsAaYwBdYvwCiPEFMMZPwNgc6RSbwQCmMoBJDGA8AxhjGcCQtg0gzgDiDCDOAOK5A/iZL4L/xhEU6hgDOMIADnORB/kiuF+7L/sYwR5GsJtXYCevwA5GsI22MILNfCfYxAg20Hpa638uq2ll4LksDzyTpbQ4+EwWBp+A/0Tmao9ltvZIZoI/PQQ+/xiTwuCHwQ9fl7Hgj45clpGRCzI8wvVHuf7oGRkU5fqjxxkAz79+kOvfxwB2MwCef53Pf32TdNfXSzedz39jAEvVAPgFEJttDKBjjAHEGECMAcSSAxj59wwgzgDiDCBeYfZPHsARBnCIL2IHGcB+cPbyMbCHAeziy+AOXoHtvgdc/SPwH4H/WDbSBoawjtbQKlrpfyLLaWngiSymhYHHMj/4WOYGH4H/QGYyqun8uVO1uzI5dFsmhm7K+BD44WsyOnxFRoUvygjwh0W4/shZGRzh+qMnGMBR6Rfl+qP7jee/t87zr/P861sYAJ//Op//Op//Ol8AdT7/db4A6skB8AUwxi+AGD8BYxNpnDmA2EhpFxtGDCDGAGL9pTzGAGIMINaaAXTMGUBqBAwgXqZiAPF/0AAOxW/LAQawL3JH9jCA3SDtDN7jW/592ea/L1sZwRZGsMn3EPhHXP0jWUtrGMIqWknLaan/sSzmI2MhzQ88lLm8ILMZ0kyaEbwr07Q7MkW7JZO0mzJBuy7jQtdkTAj80CUZGT4vw8NVMjR8jgGclkERrj/C9Ue4/uhBcwBRnv/oDukZ3coAeP51nn+dz3+dz3+dz3+dz3+dL4A6XwB1BqAzAJ0B6AxAZwD6aKnUrQMY2HQAMQYQYwCx/AMoNgaQ7xXIMwCjYktFmbIG4PjPDmA/A9jH7/A9DGBX+I7sAGo7I9gWuMu3/Ht80bvP1d8H/z5X/wD8B7KaVjKIFbSMlvLvL6aFjGU+zeXvmc3fO4s/Y0bwjkwL3pYpwQz+eO2qjNWuyOgkfuiCjAhVybAQ+OEzMjh8UgaGjzOAI9Ivckj6RsCPcP2RXQyA649y/dGN0j3K8x9drQawjAEsYgDzGQBfAHW+AOp8AdT5AqjzBTA9gBHSTmcA+mCp0AeC38wAYgwgxgBi/BSMtXUApc0PIO5IZzOym/0nRrAnfkv26LdkV/S27OCzeXvojmxlBFuA2wTgBv9dvujdBf8eV3+fq78vK733ZQUt499eQotoIc3nv2Yu/7WzaZb/jswI3JZpgVsyJXBTJgevy8TgNRkfTOJfljHaRRmlga/9JcNDf8rQ0BkZEjolg0I8/eGj0j98WPqFuf7wPgawhwFw/ZFt8ntkMwPYwADWMgCe/yjPf5TP/yjPf5TnPzqb+AKo8/mvT1IDGEujmg5AZwA6A9AZgJ4aQPecAfxqDiDGAGIMIMYAYgwg1poBlLRtAAWzFe5nB7ArflN2MoAd/B7fFr4lW/iM3qzd5rf9HdkQuAP+Hb7o3eHq73L1Zsu9d2UpLaFF/PsLaL7vjsyl2b7b4N+SGTTNfxP8GzI5AH4giX9FxgUvyZhgEv+8jNSqZLj2pwzTzsoQ7bQMDnH9oWMyIMT1h7j+8H4GAH6Y6w9vZwBbGABf/iJcf4Rv/xGuP8LzH+H5j/L8R3n+ozz/0enEAKIMIDo+ZwBDCw9AZwA6A9AZgN6KAcQYQIwBxMpVDCBWavT3DqCFEfzMQHYwgO36TdnK7/EtDGBT6JZs4LN6A0/2Oq53DVe8yn8b+Ns8+be5+js8+Xdksfe2LKQFNM93C/xb4N+Smb6bMoOm+a/LFJrsvyYT/VdkQuCyjAuAH7ggo4PgB6tkRPCcgT80ia+dlEEaT792RPqD3y8Efmiv/BHazQC4/jCf/WGuP8z1h9dJtzDPf2QFA1jKAHj+Izz/EZ7/yExjAB2jU2iiOYAoXwCjDCA63DIAfgHo/ahP4QHoDEBnADoD0Ns4gFiJqlhVZCl3AI5/3QBaalv8hmzRb8jm6A3ZyO/yDXxDX89n9VpaHbwpq3i+V3LNy2kZwEtoMS303pT5NI/m0GzvDfCvy3Sa5rsmU2iy74qJ778k4/wXZWwSPwB+APzAORkePCNDg6dlSNDEH5jE18DXDkhfbZ/00bj+0E7pFeL6Q1x/aKP0CK1nAFx/mOsPc/3hJbRQOofnMQCe/wjPf4TP/wif/5EJDIDP/yif/9GR5gCifAGM8gsgah1A79YNQGcAOgPQGYDOAHQGoLd2AHlGoLIZ2bP7dw1gS/y6bNKvy4YoRa7LOn6br9FuyGpaGbwhK3jCl/tv8C3/BvA3ePJv8OTfAP+6zKU5NItmeq/JdJrmuwr+FfAvy0TfJZnguwj+BRnrPy+j/VUyyv+niR8AP3BKhgROyOAg+MEjMiB4iAFk8P/QdklvbYf00rh+jevXuP4Q1x/i+kMMIMSXvxDPf5jnP8zzH55FPP9hnv/IJHMAEZ7/CAOIjGAAw7IHEGUAUQYQZQDRnj8+AL1cxQD0UiO7/pMDyJvN7O8cwMb4NdmgX5P10WuyNnJN1vDbfBW/0VfybX0FX9yW8fm9hBbznC/kqhfQPJpLswGf5b0qM7xXwL8iU2mK95JMoonAj/ddkHG+8zLW95eM9iXxz8kI/1kZ7j8tw/wnTfzAMRkUAD8AfvCg9Avul75B8IMZ/J4a169x/RrXr62RbtpK+U1bzgC4/hDXH+L6Qzz/YZ7/8DTi+Q/z/Id5/iNjaJQxgHYRBhBhABF+Akb6Nx1AlAFEGUCUAUQZQJQBRFszgArLAMoyAzAqtlRklncAjtYPoFA/MoAN8auyLnZV1uhXZXXkqqwMX5UVoauynJ9qS/nGvoQWBa7yE+8qP/Gugn9F5tBsmgn4DO9lmQb4VJrivQj+BZlI473nZZz3L/CrwP9TRvnA952R4T6F7z8ug/3g+4/IwCR+4ID0C4Af2CN9ArsYAPjBbdIzCH4Q/CDXr/HNX1sFPp/9Gp/9Gtevcf2hucTzH+L5D3H9ockMgOsP8/yH+fwP8/yHef7DfP5HBmcGEOlLfP5HGECEAUR6GAMoif6WPYAoA4gygCgDiLZ1ACVNB2DkSGfT/6YBtKXUANbGr8ia2BVZpV+RlZErsiJ8RZaFrshSfqcvpkV8c18QuAL+ZX7iXQb/ksyimTQd9GmgTwV8Mk0CfQKN91aBXyVjvH/KaO85GeU9A/5p8E/KMN8JGeoD33fUxPcfkgF+8P3g+8H3gx/YIb0D26RXYIv0DGyS3wMbGMBa6R5cLd2CyetfxgC4fo3r17h+jevXZhLPf4jrD/H8h8YTz39otGUAQ4jnP8zzH2YAYQYQTg6gV2YAEQYQYQARBhApMIAoA4gygCgDiFaYNRlAaQsDyDMC3d60f+UIkq2OX5KVMdIvyfLoJVkaviRLQpdkkXZJFtJ8frbN49v7XJrNF7lZPO0zeNqn0zTQpwA+mSZy7RNAHw/6ONDH0GjgR3lPywjvKRnuBd97HPxj4B+RQb7DMtAHvu+A9Pftk74+he8H3w++H3y/wg+sk+4B8APgB3n6g1x/kG/+wQUMgOvXuH6N69f48qdx/RrPv8bzr/H8h3j+Q3z+h3j+Qzz/IQYQSg6A5z/M858cQJgBhHn+wwwg3M0ygM5SHGEAEQYQYQARBhApMIAoA4iWqcCP/k0DaJItu58dwMr4RVkRuyjL9IuyNHpRFkcuyqLQRVmgXZD5NDd4Qebw7X02zeSL3Ayaxuf6VD7Xp4A+CfSJNAH48aCP9Z4F/wz4p2Uk8COAH+49YeJ7j8pgL/jeQzLQe1AGePcb+P3A7+sD3we+D3wf+D7w/eD7wfevMfEDK2ipdA0sli4B8INcf5DrD3L9Qa5f4/o1rl/j+dd4/rXRxPVrXL/G86/x/Id4/kNcf4gBhBhAiOc/xC8A6wDCDCDchRhAOM8AIgwgwgAiDCDSzACiJapiS3/zAFpboQEsj1+QZbELskS/IIujF2Rh5IIsCJ+XeaHzMlc7L7P5zT6LZgb+kun+v/h9XwV+Fd/y/5RJNBH0JPw44MeCPoZGeU7JSM9JGeE5IcM9x2WY55gM8RwB/7DCP2Die/dKPy/43l3Sx7tD/vBuk97eLQxgEwPYIL/71ksP3xoGsEq6+cH38/T7efoDPP2B+TRHfg3wzT/A9QenEtcf5PqDPP9Bnn+N69e4fo3r14aYA9AYgMYANJ7/0B9qADz/IQYQ4gtgiAGEcgYQZgBhBhBmAOE8AzBiAJEyVakaQYEBpHOks/07RpCvpfHzsjh2Xhbp52VB9LzMj/wl88J/yZzQXzJbq5KZNCNYJdP57T6Vn3BT+CY/mS90k2iC7yz4Z8A/beCP5tpHAT8S+BHADwd+GPBDPIdlsOeQDPIclIGe/TLAs0/6e/ZIP89u6evZKX08Fnwv+F7wvQrfB76P6/cpfP8iAt/P0++fbeD/EuCbf4DrD0wirj/I9Qd5/oMMIMgAguYAKjSef43nX+tnDkBjABrPv8YAtB6WAfD8hxhAiAGEGEAoZwBhBhBmAGEGEC4wALJHSlTFZs0NIJ29af/KASyOV8nCWJUs0KtkXrRK5kaqZE64SmaF/gT/T5mhnZNpwXMyld/uUwJnZZL/DD/xzoB/mp95SfhTXP1J8E+Afxz84+Cb8EMN/EPgHwT/gMLfq/B3gb8D/O3yh2er9PaA7wHfo/C94HvB9ybxl9MS6eoD38fT75tn4P/q5+n38/T7uX4/1+/n+gPjCPwA+AGe/wDPf5DnP8j1B7n+INcfTA6A51/rrQbwuzkAjQFoXL/GALScAYQ6SVGIAYQYQChnAEYMIFymKjAAoyJLjjwjsLciW3Y/M4CF8T9lfuxPmaefkznRczI7ck5mhc/JjNA5ma6dlWk0JXhGJgdOyySayG/48f5T/L4/yU+8k+CfAP84X/aOAX+Uqz+i8A8p/AMyyL1fBrr3yQD3Hunv3i393Dulrxt8N/hu8N0WfM866eEB32Pid/OC7+Vz3wu+18Tv7OPp9/H0+7h+H9fvM/E7+nn6/Tz9fj77/Ul8rj/A9Qd4/gNcf2CAGgDXH2QAQQYQtA6A67cOQGMAGvga15/GVwMIMYAQAwhVmOUOgOzhElWxWZMBqBGobEb27FozgNZUaADz4udkbuyszNHPyqzoWZkZOSMzwmdkeui0TNVOyxSaHDwlEwOnZELgJPgnZZz/BPjHZYzPhB/Jl7sRfLkbzlM/DHQT/4AMBn4Q8AOBN/F3gb9D4W8Dfwv4m6WXe6P0dIPvBt9t4nf3gO8B3wO+hy99ngUMAHwv+F7wveB7k/g8/T6efh9Pv4/r93H9fq7fD76f6/dz/X6uPzDQGEB5gOsPMIDAH2oAPP9BBhDk+oMMIJgaQBL/18wANAagga+1V+UMIMQAQmWqUqMmAzAqyslhlh5AnhHkzWYW/cnmxk/L7NhpmaWflpnR0zI9clqmhU/J1NAp8E/KJJoYPCkTgidkfOA4+MD7j8lofseP4ufcSOBH8OVuOOjDeOqHAj+Ep34w8IPcexX+bvB3Sj8X+K7t0se1Vf5wge/aJL1cG8BfD/5aA7+HG3w3+G7w3SZ+V89CBsDnvofPfQ9Pv4en38vT7+Xp93L9Xp5+L9fv4/p9XL+P6/cNJ67fz/X7uX4/A/Bz/f4kPtcfAD/A9QcYQKCHZQDgB7n+IAMIMoBgMwPQGIBWoWIAWs4AQiWqYksFBkC2dPbsmhtAS7U0gNnxUzIzdkpm6KdkevSkTIuclCnhkzI5dEIm0UTtuIwPAh88JmMDx8A/KqP9R0x8fseP4Fv9MK8F3pMfvh/wfV3bwN8C/mbwN5r4LvBd4LtW00rp7loB/jLw+cx3g+8G3w2+ey4pfM90At8DvoenP4nvHUtcv5fr944w8X1cv4/r94Hv4/n39zMH4Of6/QzA35N+NwcQYAABrj/AAAI5AwgygCADCDKAYAq/wACMSo3sWolZ1giKcnKks4UKDCBvNrPITzYzflJmxIDXT8jU6AmZEjkuk8PHZSJNCB2T8doxGacdlbHBIzImALz/sIz0Aw/+cN9B8A/w+34/+PvA38uXvT3g7wZ/F/g71NVvM67exN9kwV8H/ppsfBf4riW0SLq6ePZdFnw3+G7w3eC7JzMAnn4PT7+Hp98DvmcUA+D6vVy/F3wv1+8dpAbA9fsYgK8PMQBfL2MApckB+MH3c/1+BuBXAwgwgAADCDCAAAMIWAYQrFQxgGCFWXMDMCpWFWWXOwAje/7yDaClWhrA9PhxmRY7LlN14PVjMil6TCZGjsqE8FEZHzoiYzXgtcMyOnhIRgUOgX9QRvgPgL9fhtFQ7z4Zwu/5wcAP4mfdQOAHAG/ibwN/a/rq/wC+N/C9uPqeXL2Jv0rhL8+DP4/Ad4Hvmkngu5L4Uwh89wQC383T7+Hp94Dv4fo9XL8HfA/X7wXfy/V7wfdy/d4kfm9zAD7wfVy/jwH4UgMA3w++H3w/+H4T3xhAgAEEGEAA/EA7I3MA5aoyVamRPZhvALkjcKSzpbMXHkE6W3bhH2xq/JhMiR0F/6hM0o/IxOgRGR85IuPCh2Vs6BD4h2Q0jQoelJGBA+Dvl+H+JP4+GerbA/4eGezdDf4ufubtUPjbwd8K/hbwN6ur36Dw10lPJ/hOrt650qi7M4m/FPjFOfhzmuK7wHeB7wLfNd7A7+AG3831u8F3D6OhBn47D9fvAd/D9XuS+H3MAXjB9/L8exmAt4eBX+oD38f1+xiAjwH4LAPwg+/voMoZQIABBMpVZWbWAaQrttSKARSquRE0V6EBTIkfkUkx4MGfoB+W8dFDMi5ySMaGwQ8dBP+AjNT2y4gg8IF9Msy/V4b6gQd/sA94r4I38LeDv5Vv+lsU/qb01fd2rpdewPd0rgF/lcJfAf4y6eYE3wm+c6F0dYLvBN8JvhN8Zwb/l1x8F/gunn4X+C7wXcNNfDfX7wbfzfW7+zOAfuYAPOB7uH4PA/AofC/X7+X6vQzAywC8DMCrBuBjAD4G4GMAPvB97c0B+BmAH3wjBuAvN0sNIFBqZA+UWMoZQDpHOluwFQPIyta0UBubFD8kE2OHwD8k42ls9KCMiRyQ0eH9Miq038TX9snw4F4ZFthj4vt3g79TBvl2yEBvEh94zzYD3sTfDP5G8JNXn4RfR2vAXw3+SoW/XOHz5DsXKfz5FvxZJr4TfCf4TvCd4Dsn5sEfaeK7ePpd4Lu4flcSf4AxgHI3+G6u380A3En8nuYAPAzAwwA84HvA9yh8L/he8L2dVJYB+CpV4PsqzFID8JepwDcqMUsNIF2RJUfTERjZm9aaAbQm6wAmxA/K+NhBGacfkLH6fhkT3S+jI+CH98nI0F7w98hwGhbcLUMDu8DfKYP9OxT+dhng3QY+8NSX3/R9+U3fB3gTf526+tW0SuGbV9+dq+/WyNU3gt+4QLo2gt84l8BvBL9xBmXjd0riO8F3gu8E3wm+cyQDMPErXUMVPtfvAt/F9bu4fhf4riR+b3MAbvDd4LvBd3P9bssAPAzAwwA8DMCj8I0YgJcBeCtVDMCrBuArV5WpwPdZBmBUbKnILDUAS7Z0drNgc9my+5ExjI/vl3Gx/Sa+vk9GR/fKqAjwYeBDwGvAa8AHd8qQwA4T379dBvq2gb9F+nuT+En4TdLHvUHhrwd/bfrqewL/u+XquzcuUfgLFf48hT87G78R/EbwG8FvBL9xPPGlr3EMAxht4jt5+p3gO8F3gu9M4g+04PdVAwDfBb6L63cxABcDcCUHAL4bfDf47s5GxW4G4FYD8IDv6aBiAB7wPe0yAzAqV5Wp1AB8Jari7FIDMHJkZUuVGkCz2ZqOoLnyDWBcfJ+Mie2V0Trw+h4ZGd0jIyK7ZXh4twwL7QIfeA34IPAB4P1bZYB/iwzwJfE3Sz/vJunr2Wjg/+FeD/468NfwZS9z9b9z9T0M+KUKf5HCn6/w5yj8mQp/msKfrPAnZOM3gt8IfiP4jeA3JvGHGPjtnOA7uX4n+E7wneA7uX5nHnwX1+9iAC4G4GIALvBdCt/dScUA3OC726vMATiMwPeUq8pUpeYAjEpUxZl8RTk5skoPwG8vnHUALdXSKMbE98jo2B4TX98tI6K7ZHhkpwwL75ChoR3gb5fB2jYZFNwqAwNbDPz+/s3S37cJ/I3gc/Ue4N3rjKvvDXwvftr1VPC/c/U9LFffTV29ic/VN4DfMEs6N4DfMJ3AbwC/AfwG8BvAbwC/gWe/AfwGK/5wE78R/EauvxH8RvAbuf5G8BtT+L3NATgZgJMBOMF38s3facW3DMDFAFzguzoaFbkYgEvhG4HvrlCVqywDILtRicoyAG9RTg6z1ADS2ZuWdxC2pgXa0Oj4bhkV2wX+Lhmh75Th0R0yLAJ+eLsMCW0Df6sM0rbIwCD4AeD9wPuA922Qvt714K+TPzzAu9cY8L34Td/Tlbn6Hs7k1S82rr6b5eq7NiTxZyv8GRb8KQp/Yn78BvAbwG8Av2Eogd8AfgP4DeA3JPG5fmMAfxD4jeA3gt8IfiPX32gOoCQ5ACcDcILvBN8JvvMXMzWANL5RpYoBuCpU5WbJARiVGtndJZmSA0hXlJMjMwKypbNn8jWXLZO/DaUGMDK+U0bEdshwHXgaGgU+Anx4qwwObTHxtc0yILhJ+gc2Sj//BgO/j2+d9PGuBX8N+Fy9e6XC5+pdyw34HnzD7+40r76b5eq7GlefxJ9pwZ+ajV8Pfj349eDXg18Pfj349SMYQC7+oAx+A/gN4Ddw/Q3gN4DfAH6DBb+R628EvxH8RvAbOxsVN6YGAL6zo1GRkwE426vAd7bLPwBXmarUyO6yDMBdbKkou+QALNnS2c28LWXLHkFL5Q5hRBz82Hbwt8lQGhIFPgJ8GPjQZvA3yQBto/QPbpB+AfD9wPuA966h1dLbs8rAT8L3BP531zKFvxj8RQp/PvjzFL559Sa+efW/1oNfD349T359Cn+cBX9UBr8e/Hrw68GvB7+ez/168OvBrwe/Hvx68Ot5+uutAwDfiAE0cP0NDKCBATQwgAaF3/iLigE0gt/YQQV+Y6UZA3AYge8sV5VlDcCeGkC6YktFZukROLKypbNnRtBcyQG0pkKDGB7fJsNiW8HfIkNocBT8CPBh4EPAaxtM/OB66RtYK338wPtWg78KfK6eerqXg78MfOBdSwz47vyu7+Y0r/63JDxf9LpannwDvz6Jn4SfbMEf3zJ+Hfh14Ncl8Qem8Sss+OVJ/Hrw68Gv5/rrwa8Hv57rrwe/Hvx6E98YQAMDaAC/AfyGjkZFDeA3tDczBtDOyNFYoSo3Sw7AqNTIblSSKd8A0jmysqVKDqCljBHYWq65YQyLb5GhsST+ZhlMg6KbZGBkowwIAx8CXlsP/joTPwC8H3jfSuntTeKvMPB/dy8Ffwn4XL0rib8AfPPqM/iz0k++iT/Vgm9evYFfB34d+HWjCfw68OvAr+Pbfl0Ofh34deDXgV8Hfh34deDXgV8Hfh34deDXgV8Hfp0VXw2gHvx68Ot/UTGAevDrO5gZA6hUtTNyNFSo1AAay1SlRnajkkzOYktFORUYgMvefOkh2JqvpXEMjW+WIbFN4G+SQfpGGRjdIAMi4IeBDwGvrZW+wTXgrwIfeOrlWyG9vFy9Z5nCXww+8K6FGXznXPCB5+ediW/Cd1ZP/q/qyU/j14034DvWjcnBH94Uvxb8WvBrwa8Fvxb8WvBrwa8FvzaDX2bFp5I6BlAHfh34dVx/HfhG4NeBX9fRqKguOYD2qkoV+PUVqnJzAA1llkqN7A0lmRqLcyrKLjkAS7Z09kzNjsFWOHcrGhLfKINjG8HfIANpQHS99I+sk35h4EPAa6ulTxD8QBIfeN9yWiY9vcB7uHp3Eh94F/Cu+eDPU/jANwLPb/sMvgn/q3ryDfy6JP64PPhcfS34teDXgl8Lfm0r8WvBrwW/FnwjBlDLAGrBrwW/FvzazkbFteDXgl/bySyFbwR+XaWqnZGjzjIAozJVqZHdqMTMGEFxTkXZNTrS2bKyZ3I2l83M9YMNjm+QQbEk/noZoK+T/tG14K8BH3htFa2UP4LgB8D3A+9bCv4S8IH3LGIAKfx5BLxzDqXwZ4BvXn02/kQyrz4bf5R0qOXqa5viV6bwa/jCVwN+Dfg14NeAXwN+TW8Cv6aniqe/Bvwa8GvArwG/BvyaLioGUAN+zS9mxgA6GhXVgl/bXlWpAr9WDcCoXFWmKjWyG5WYGUMotlTUtAZHOltW9kyNzWUzc7ay3AEMiq+XgbF14K+V/voa6RdZLX3DwIeAT+JrK6R3kKsPgO8H37dYfvcC71kI/gLw51vwgXfOAn9mDr4J/6u6+mz8McTV1xbArwG/Bvyaga3A79UCftcc/NQAOqnAr+mgAr+mUtXOyFFboSpXlVkqNbIblWRGUFdsqahp9Y50tqzsmRqay2bW2MpyBzEwvlYGxNaAv1r6RVdJ38hK6RMGPrQC/OXSW1smvYLAB5YwAPB94HsXMID50t1twndzcfUuhe8EvnE6mVffFN+E76SuvmNtHvyaYWn4yppB2fjV4Ff3JfCrwa/ubVRWDX41+NU8/dXgV4NfDX71b0Yl1eBXg1/d2ai4Gvxq8Ks7qbj+auCN2qsqzZL4RhWqclWZqtTIblRilhxBbXFORU2rc6SzZWXPVN9ctkwNrcw6iAHx1dI/tkr66SulbxT8CPDh5QxgGfhLpZcGfHAxA1gkv/u5eh9X7wXfA77bhP/NlYSfmQcf+IZJ4JtX3zy+Cd++ZmhT/Grwq1vA/w7+d/C/g/8d/O/dVOB/B/87+N87q8D//osK/O8djYq+d1BZ8KvbGTmqK1TllspUpUZ2o5LMCGqKcyrKCfjaTLas7NnVFcqWXX0rS42hfxz8GPgMoE8U/AhXHwY/lMH/PbAQfK7eB7x3HvhzTXy3wnfNAB945zTwgW/k6hX+L03wzSe/o4LvYLn6LPxq8KtN/HZW/O/gfwf/e2+jsu/N4H8D/xv437qowP8G/rdfVJ1UOfhGlSrwjSpU5aoyS6VG9u8lZtWpii0V5clhjkBlS2dvWm2hbE2ra2XJIfSLgx9bIX10rj4KfGQpA1givUJcvcbVB8EPgO8H3we+d4508wDvngX+TBPfZeJ3dqbwufoG4BsUfL159Xnxa3Lwq/Pgfwf/ewH8b+B/A/8b+N/A/9ZNVQj/1yb4xd+AN2qvqlS1M3J8q1CVWypTlRrZjUrMjCEU51SUJ4c5ApUtnT1/+YZRY8tfbSvrG18ufWLL5A8d+OgSBrBYeoUXSc8Q8NoCBjBfegSA989lAOB7wfeA755pwHd1cfVJeOcU8Ln6xjz49T+I/z0P/jfwvyXh8+HTV/C/gv+1qwr8r+B/Bd4I/K+dVB2Nir52UIH/tVLVzsjxtcJSuarMUqmR3agkM4JvxTkV5clhxhBsWdmbL2sYtsLVtKI+cfBj4OvgR8GPgB8GPwS+Bn4Q/MAcBjBbuvmA985kAFy9W+G7FL5T4Tcq/AYFX6/g+YnXUcF3sDz57S3wlQY8fc/B/wb+tzz4X8H/Cv7X7ioTvzSF/wX8L51V4H/5RQX+l45GRV86qNqrKlXtjBxfKlTllspUpUZ2oxJzAOmKcyrKyZGV7Zs1e8ulB2FrueZG8kcc+NhiBrBIekUXSs8I8OH5DGCe9NC4+iD4AfD9VnwTvosLeNdk8E34XxuT8OPz49e1Al/Bp/G/5cH/miwP/hfwv4D/JQnfEr4awGfgjdqrKlXtjByfKyyVq8oslRrZjUrMERgV51SUJ0dWtmRfU9lb3zdb68s3jj/i4MfA18GPgh8BP6zwNfCDs8AH3jeDAXD1HvDdOfhOhd+Yg1//I/hJ+Bz8r+Cn4RX+F/C/dFdZ8D8nA/9zZxX4n4H/lKyTqqNR0SfwP7VXVaraGTmMKlTlqjJLpUZ2o5KcinMqyu5zMkdWNmtf7G3IZva1jaVG0Tu+UHrFFkhPHfjoPAYwV3qEgddmE/gB8P3g+8D3gu8B353En0TAOycQ8I3jwAe+YQz4wNeb8B3rTPgOtcNaid83g/81g1+ewv9i4pel8D+D/xn8JPynZOB/6qwC36gA/sdk7VWVqnZGjo8VqnJLZZZKjexGJZaK81TUtE+OrGzp7K3rcypb0760oV5x8GPzGQD4UfAj4IcUfhD8wHQGME26+oD3TgGfq3crfJcFv7EAfp3CrzXh2xs/8fLgW66+Cf6XJHwO/meF/wn8T3nwPwJvBP7HTqqORia8Bf9DpaqdkeNDhaVyVZmlUiO7UUlOxTkV5cmR6SPoWdnbGIiffrDkWHrGwY+Br4MfBT4yiwHMlG4aVx8EPwC+H3wf+J48+E4LfoPCr28O34QviG/A5+L/bvYZ/CT8p2Q5+B+7qEz8kjS+GsCHjirgjdqrcvDfJ6tQlVsqs1RqZDcqyak4p6I8ObKypfqQzN7GbE372IZ6xufK77E50kMHPwp+GPwQ+Br4QfAD4PvB94LvmcgAgHeNJ+CdY8EHvnE0+MA3jGwVfuonXrP4Xyz4nxX+pxz8j0n4HPwPvxoVf/hFlYP/Pll7VaWldkZp/HfllsoslRrZjUpyKs6pqECOrGxZ2TO9b022lvvQTL/HwY/NZgDgR8EPgx8CXwM/OIUBTOb6uXov+B7w3QrfBb5T4Tem8EcQ8HXDaKiJX6vwa3Lx++XB750f/1MKv5vZxxz8D8ny4L/vpAL/fQ7+u2SVqnZGjncVlhT+2zJLpensRiWWivNUlCdHVrYm2Qv3Ll+2Hys1jh5x8GPg6+BHpzOAaQxgqnTVwA+C7wffB743D77Tgt+Qiw987eBm8NWXva8W/C8WfAM+B/9jBr/0Q1cFb8F/D/77X1QW/Hd87r/roLLgv03WzsjxtsJSuSXg36QqNbIbleRUnFNRgRxZ2bKy/0A2s7c/WI/4TOkemyHddPAj4IfBD4GvgR8A3w++D3wP+G6F77LgN1rw63PxB6XxK1vE75WD3yOD/9GC/yEH/31nAz4L/10nVUcV8G+TtVdl4xe9YQBvKlTllpriO16Db1Riqbhpr4oK5MjKlpW9cK8LZWu5N83UPT6DAYCvgx8BPwx+CHxtEgMA3w++F3wP8O4x4APvGsUARmbwGyz4dQq/NolvwjfF75Mf/3MO/kcL/gcL/vsuKgv+u19UCv9tR5UF/02ySlW7dAb861TlZq/Kcio1shuV5FSc3ctkRXlyZGVrkr2N2bJ79QN1j4MfA1+fygDADyv8IPgB4P3jGAD4HvDdFnwn8I3DwR9m4tfnwa9J4vc3/gkdA/975vO+IufLnoH/KQ/+Bwv++xz8d78apfHfdlJZ8N90UPAK/3WqdkaOVxWWyi0p+JfJSo3sRiU5FWf3IllRgRxZ2bKy/0C2H8s6mm5x8GPg6+BHwA+Dr02QzsHxDAB8H/heC77Lgt8IfMPQDH5dK/C/tYD/sRX473Lw31rw33RUWfBftzfRX6VqZ5SGf5ms3FKZJfBfmNmNSnIqzu55sqI8OZpky8r+A9l+vm5x8GPg65MZAPgh8DXwg+AHxjIA8L2jGYCJ38kFvtOKD3z94Ax+rcKvSeL3y4Pfuxn87k3x31vw31nw3/6q4BX+mxz81x1M+FftLfD0sp2RiW7Bf5GqzJIF/3mykpyKm/asqECOrGxNsv9Atp/vtzj4MfCjE6VLBPwQ+Br4QfD94PvA94DvVvgu8J3gN4LfkMIfZNQEv7pvC/i/N8VPX70FPw3f2YA3U/hvLPivkwH/qoOCV72sVJn4RS8YwIsKlQX/eVlOpUYG/rOSPBVn97SoQKA/yc6Wlf0Hs/18v8XB17n86AQGAH4IfA38IPh+8L3ge8B358FvAL/egl+bB//7D+C/z4P/Ngf/jQU/Cf8qmQX/ZSqF/6JdujT+82TllkB/lqo0nf2ZGsBTa4A/ya0of48dWdmaZG97j5LZfr6u8UkMAPwo+JFxDAB8DfwA+H7wveB7FL4LfCf4jUMYgMKvB77Ogl+Twu+Tg9+rbfjvCuC/seC/7qTgTfzilx0s8PSiUqXwn7dT6Kpn5ZYs+E9L09mfJCvJSYE/tlaUv0eOJtmaZM/fw+aytb0Heeoa5+nXwY+CHwE/NIYBgB8A3w++F3y3wneB7wS/EfyGHPxaC361Bf/bT+C/teC/seAb8Bb8lxb8F6kU/vN26Uz0VBb8p2VmT5KVpjPwH5fkSaE/slaUv4eOrGzJHlizt637qWx/T13iE9QAwA+DHwJfG8UAwPeNYADgu4cxgBz8BuDrga+z4NdY8L9b8L/+BP4bC/7rXxS8wn9pwX9hwX9eqVL4z9pZ4OlpudmTcoVu6XFpOvtjNYBH1izoD1MVmT3IzdEk2/3c7M13r1C27O7+YF3i4OtcfxT8MPgh8IPgB8D3ge8B3w2+C3wn+I0mfvsUfh34tRb86gx+hRX/S/Zv/Dbhv87Bf2nBf5HEVwN4bsF/VmnAmyXR6UmFQrfgP7YG/CMzu5FCf5gK7Ae5WcDv5+bI7h7gWQF5t43dSWX7e+oSB1/n+o0BgK+BHwTfD74PfI/Cd4HvBL8R/IYB6vot+DU5+N9y8D9n45dZ8d8p/LcK/00O/qs8+C8s+M8t+M8s+E+TpeAV/mNrCv5RWRrewH9YaoI/yA3w+7lZwO9Zuutoks3aHYcFs4Vu58tmdusn6xwHXwc/yvUbAwA/CL4ffC/4HhO/gwt8J/iNwBsD6M8AwK818c3rB/+7Bf+riV+ehd8tD34XKW0J/6XCf2HBf67wn7XPwD+tNOGfJFPwj1Mp+EflCl0FuNED4I0U+H1rFvR7qZLQBQI4N1uq26ksoLda2c1kth/vRk6d4+Dr4EfBD3P9xgDA9w9lAOC7W8Cv7aOu34L/LQ/+pzz47wvgv6ZXzeA/z4P/VPWkXboMfIVCt+A/VD0oM+CN7oNvZIG/V2Ji381XEjpfgN+2dAvsJllBW9ENawrv+k90TfVrfDQDAD8Kfhh8jetXA+igBtBeDaDSGAD49eDX5eBXg/89B//LT+K/VPgv8uA/U/hpeAv+Ywv+Iwv+w3ILuup+aToD/55Cv5vKAn7HmsK+rbplzZHpJth5y0Wl663omj2D15quttCvcfD1kQwA/PBwBgB+AHwf+F7w3eC7uH4n+I3gN4BfD35dH2MAFTU5+N/A/6rwP1vwP7YevyQf/nMTv/hZDv4TC/5jhf+oItNDBf+g3IKeSuHfA/5uqQWd7qSyoN9W3Spq2s1UjuxugJ3qeqpCsM10NZUF70obulwgcwDgR8APga/x9AfA9/H0exS+C3yniV+ZD7+6lxpAHvxP/wL8p+0t8JVp+KJHyVLwFRb48hz4MgPdcdcsjX8npzR4blZw1Y0iA9voeiabtWupCuGqrjRXHsRLbehiTr/ER6YH0DEEvgZ+AHwf+B4LfiP4DX0t1w9+TR78rz3Mf+Wugd89g/8h81Ov9F0L+C8U/vOOaXgD/2kO/uNKC7zCT8I/qMjA3y+3oKvuZvAdd0ot4KpbJdngN61Zwem6NQV/LVMa/WqqFoAvW7qUr2YwL7Sh86pf4uDrXH9kmGUAgxgA+J4BDAB8Zz9jAO2MAYBfB34t+DW9jAGUfwf/2++W6+9uefpbif8yH37HbPwn7S3wOfhp+AoLvMpAT2Wip7LfLrWgW/Bv5nSjOA84XUtlgb9qZruSpxaBVRctXbDWDGZz/ZWnKmMA4OvgR8APgR/k+v1cv5cBuLl+NYB2jbn4vbPxv6Wuv7vl6c/+Z/XMp/9n8Ntn8NPw9MCCnwVfboEvy4J3JOFvlWbQb1pLgdP1VLngqqsqcHOzXVZdStVaZEvnrbWAWtWK/sypkzEA8CNDGAD4QfD94HvBd4Pv4vqd4DeAXw9+XW/L9YP/PQf/cw7+hxz8t23Af9rBAq/wHxXAv1+RA2/Bv6O6bcI7blnwrfA3SnLQ6VqqXHBrgF9WXTKzWbuYqjXIlv6yVGVvPeq5FjprqVN8WHoAHYwBgO/n6feC7wbfBX4j+A1/WAYAfg346QGA/7W7un6F/zEXv0vr8J+1At+AV/j3LaXhyzPoBnyZgZ7KfrM0B52ul+RBVzUBp8uqS47sLlrAL1hrBXRVgf5M1QbYZGdyOp2nTnHwda4/An6I61cDqPRYrl8NoKI+P37m+rsZA8jCf9/F8rmf/YWvJI3fqQl+cSvwi9LwFRl4K74Bb8G/aZaGv24pC1x1pbgp+iVrJrjRhUwG+HlrhS66APS5fP0AbqpTOZ20ZA4A/Ahf/DTwg1y/D3yPun4n+I3J6we/rpcxgHJjAOB/72G5/m6W6++qBtCl6Ze+tuI/UvgPKxU83W9n4hvwFvw75TnwZVnwjhvgJ8uCT2VFV13Og35RdaEoC91+3iyN/pelghddAPus6oyl1uCebKYTOR1XdYwPSQ+gfXIAAfB94HvAd4HvBL+ht3n9xgDAr8mDb1x/U/yCn/vN4T9uI/4dVRZ8WRa843oSvjQHna6WZMNfVl0qLoBuwT9v6S8zW1VOzWGfzYN9Ok+tQc6Hm69jOXWMg69z/WHwtQF5B1BhDAD8OoWvrr/sW3fL9Vs+9z90UQNoBf7zVuLfV6XhKzLwufg3y7Lg0/i58FdKsuEvWcqHfj5VNrq9yswEV51L1VZs1UlrbUC24h7N6UiesgcAfgB8H/hu8F1cfyP4DeDX98xcfzXX/727GkDy+n+zXH8e/Dd5vvQ1we/QFP9BK/Bv061yC3xZFryBf63Ucu0p+JKca0/BFxdAp79UVY7sssBVZx0/iK06oTpubz3ykQIdtnQop45x8HXwwwMyA/BmBlCRGkDy+mvBr+lhuX7wv/xmDCD99BsDsPwrePN97reE/7AZ/DsVGfi8+GUZ/GtmTeFLsuEvpuCLm0FPZYIbncuURj+j+mHsnFoL3RxyqoOWDqg6pAfQnwGAH+jLAMB3c/1O8BvN6y+v+90cQPr6u6UHkPzf0W96/Zl/Tj/7S19T/OKW8IEvysW/pcqCL8uCd1wtbQp/qSTn2i2dL86Gr7L0Z1ETdPtZswy6pULgzWKrjqqO2NsOnQ852f4CdYgPZAADjAFUJgfg5/q94LvAd4Lf2DMzgOT1V4OfGoBx/V3VALpYrj/zr+BN47/M81v/ieVzPx/+vVbgp+HLMvAp/CbwqrzwxXmuXcGfS5VBtwNuP52LrmoNeF7snA7b2wZdCHmfpb2W9qgBtI9y/WHwNa7f3yd7AA3g1yevv4cxgLLq1PX/Zrn+LvmffuP6O2U//Xnx27eMf7vCAt8MPvCOK0n80jzwJU3RDfjiZtDpbFEWujUTPKd86C2BH1YdspaD3dJFF0LO125Vh/gAYwCVagDt/OB7wHeB7+T6G35Xz39yAMnr75YeQPL/KldmAJ0LX39z3/gftbd84au04LdrHf61six4A/9yDr4BX1IAvrh5+DNFTeFBt2eBq447mqK3CZwOqg7YC2Pnu+jmkJPtsrTTUodYcgDgh7n+YJ/sAfD8lxsDAL+2u3n9xgCS19/V+L/MVfDpV9ef/fRn8ItbgV+UDz/r6pviO5L4TeBLCsAXq8/23GtX8KeLmqCnykZXNXflrQKn/al+EDsf9I4Cbaf2sf7mAEJqAL7eDAB8F9ffCH59D3MAyeuvBv/7b5br75K+fuN/T/+d+b+2ZV5/HvxnzXzps+LfycG/mcIvz8a/WpYF77hU2hTeip8Fr2py7Sl4OlXUBN7eBF111NE69ILgqn2qtmDvbAF7u6Vtqq2qzADAD/5hDKDCbQ6gPDWA5PXXdDMHkLz+r10tA8jz9L9Ofe7n/LN7hb70tQX/Whvwz6vywhdnw5/OgT9ZlIVuP54pG52OOLLRm7vyguCqPfafu+xcaCv2ljy1j4Ef7WsZAPhurt8JfmOP7AEkr/+bwv+s8Ft7/blP/8NWPPst4St4Az8vfEkB+OIW4IvywtuboKsKoee78rzglnbb8193a7C3toC9WbXJUmYA4Ae5fusAGpLPP/i13SzPf3IAXTLX/yEH/3Whpz/P5376d34ufkUG/3oO/pV8+KUt46fhi5uHP1GUDX9M1QRddcjxc+i7VbtUhcCbe8Zbi71RtcFS+xj4Ua4/OYAAA/AmBwC+s0fOANT1pwfQ2RhA9vV3Utdv+RdzNvnWn/Ol767l6W8rPvCOC6V54EsKwNPp4mbg6XhRBv6o6ohZNrqqNeh7WkKnHal+4Lpbi51qvaXKrAGA7+X6XakBgF8Hfs1vlgF0ST//qf/TbCXvLNf/Kv/T3+LnfnP4V/9m/ILwRRn4I5aaoKvaim4Fz0JXWdHbct2twV5naa1qjU3+HwuefjlXE4+yAAAAAElFTkSuQmCC",rme=0,MO=(n,e,t,i)=>{if(!n[t]){let r=n.useDelayedTextureLoading;n.useDelayedTextureLoading=!1;let s=n._blockEntityCollection;n._blockEntityCollection=!1;let a=ge.CreateFromBase64String(e,i+rme++,n,!0,!1,ge.BILINEAR_SAMPLINGMODE);n._blockEntityCollection=s;let o=n.getEngine().getLoadedTexturesCache(),l=o.indexOf(a.getInternalTexture());l!==-1&&o.splice(l,1),a.isRGBD=!0,a.wrapU=ge.CLAMP_ADDRESSMODE,a.wrapV=ge.CLAMP_ADDRESSMODE,n[t]=a,n.useDelayedTextureLoading=r,Mm.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),Mm.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},Sb=n=>MO(n,eme,"environmentBRDFTexture","EnvironmentBRDFTexture"),IO=n=>MO(n,tme,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),F8=n=>MO(n,ime,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function B8(n){return class extends n{constructor(){super(...arguments),this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1}}}var U8=I(()=>{});var yO=I(()=>{Os();Pt();os();bt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};bt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};bt.prototype.buildTextureLayout=function(n,e=!1){let t=this._gl,i=[];if(e)i.push(t.BACK);else for(let r=0;r1&&(e.depthTextureFormat===13||e.depthTextureFormat===17||e.depthTextureFormat===16||e.depthTextureFormat===14||e.depthTextureFormat===18)&&(o=e.depthTextureFormat)),o===void 0&&(o=s?13:14);let C=this._gl,L=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let G=(X=n.width)!=null?X:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);y.label=(ve=e==null?void 0:e.label)!=null?ve:"MultiRenderTargetWrapper",y._framebuffer=w,y._generateDepthBuffer=a||r,y._generateStencilBuffer=a?V:s,y._depthStencilBuffer=this._setupFramebufferDepthAttachments(y._generateStencilBuffer,y._generateDepthBuffer,G,O,1,o),y._attachments=B;for(let ae=0;ae1||this.isWebGPU);let Et=this.webGLVersion>1,Ke=C[Et?"COLOR_ATTACHMENT"+ae:"COLOR_ATTACHMENT"+ae+"_WEBGL"];if(B.push(Ke),de===-1||M)continue;let Ze=new Oi(this,6);N[ae]=Ze,C.activeTexture(C["TEXTURE"+ae]),C.bindTexture(de,Ze._hardwareTexture.underlyingResource),C.texParameteri(de,C.TEXTURE_MAG_FILTER,Ye.mag),C.texParameteri(de,C.TEXTURE_MIN_FILTER,Ye.min),C.texParameteri(de,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(de,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Jt=this._getRGBABufferInternalSizedFormat(ne,Pe,fe),Lt=this._getInternalFormat(Pe),xi=this._getWebGLTextureType(ne);if(Et&&(de===35866||de===32879))de===35866?Ze.is2DArray=!0:Ze.is3D=!0,Ze.baseDepth=Ze.depth=Re,C.texImage3D(de,0,Jt,G,O,Re,0,Lt,xi,null);else if(de===34067){for(let oe=0;oe<6;oe++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+oe,0,Jt,G,O,0,Lt,xi,null);Ze.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Jt,G,O,0,Lt,xi,null);i&&C.generateMipmap(de),this._bindTextureDirectly(de,null),Ze.baseWidth=G,Ze.baseHeight=O,Ze.width=G,Ze.height=O,Ze.isReady=!0,Ze.samples=1,Ze.generateMipMaps=i,Ze.samplingMode=me,Ze.type=ne,Ze._useSRGBBuffer=fe,Ze.format=Pe,Ze.label=(Ue=R[ae])!=null?Ue:y.label+"-Texture"+ae,this._internalTexturesCache.push(Ze)}if(a&&this._caps.depthTextureExtension&&!M){let ae=new Oi(this,14),me=5,ne=C.DEPTH_COMPONENT16,fe=C.DEPTH_COMPONENT,Pe=C.UNSIGNED_SHORT,de=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ne=C.DEPTH_COMPONENT:o===14?(me=1,Pe=C.FLOAT,ne=C.DEPTH_COMPONENT32F):o===18?(me=0,Pe=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ne=C.DEPTH32F_STENCIL8,fe=C.DEPTH_STENCIL,de=C.DEPTH_STENCIL_ATTACHMENT):o===16?(me=0,Pe=C.UNSIGNED_INT,ne=C.DEPTH_COMPONENT24,de=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(me=12,Pe=C.UNSIGNED_INT_24_8,ne=C.DEPTH24_STENCIL8,fe=C.DEPTH_STENCIL,de=C.DEPTH_STENCIL_ATTACHMENT),this._bindTextureDirectly(C.TEXTURE_2D,ae,!0),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),C.texImage2D(C.TEXTURE_2D,0,ne,G,O,0,fe,Pe,null),C.framebufferTexture2D(C.FRAMEBUFFER,de,C.TEXTURE_2D,ae._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),y._depthStencilTexture=ae,y._depthStencilTextureWithStencil=V,ae.baseWidth=G,ae.baseHeight=O,ae.width=G,ae.height=O,ae.isReady=!0,ae.samples=1,ae.generateMipMaps=i,ae.samplingMode=1,ae.format=o,ae.type=me,ae.label=y.label+"-DepthStencil",N[l]=ae,this._internalTexturesCache.push(ae)}if(y.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(L),y.setLayerAndFaceIndices(E,S),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(y,c,t);else if(c>1){let ae=C.createFramebuffer();if(!ae)throw new Error("Unable to create multi sampled framebuffer");y._samples=c,y._MSAAFramebuffer=ae,l>0&&t&&(this._bindUnboundFramebuffer(ae),C.drawBuffers(B),this._bindUnboundFramebuffer(L))}return y};bt.prototype.updateMultipleRenderTargetTextureSampleCount=function(n,e,t=!0){if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let i=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(i.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(i.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let r=n._attachments.length;for(let a=0;a1&&typeof i.renderbufferStorageMultisample=="function"){let a=i.createFramebuffer();if(!a)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=a,this._bindUnboundFramebuffer(a);let o=[];for(let l=0;l1?"COLOR_ATTACHMENT"+l:"COLOR_ATTACHMENT"+l+"_WEBGL"],h=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!h)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(h),c.samples=e,o.push(d)}t&&i.drawBuffers(o)}else this._bindUnboundFramebuffer(n._framebuffer);let s=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,s),this._bindUnboundFramebuffer(null),n._samples=e,e};bt.prototype.generateMipMapsMultiFramebuffer=function(n){let e=n,t=this._gl;if(e.isMulti)for(let i=0;i1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"],t.readBuffer(r[a]),t.drawBuffers(r),t.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i,t.NEAREST)}for(let a=0;a1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"];t.drawBuffers(r),t.bindFramebuffer(this._gl.FRAMEBUFFER,e._MSAAFramebuffer)}});var Ab,V8=I(()=>{Gr();Rf();yO();Ab=class extends kr{get isSupported(){var e,t;return(t=(e=this._engine)==null?void 0:e.getCaps().drawBuffersExtension)!=null?t:!1}get textures(){return this._textures}get count(){return this._count}get depthTexture(){return this._textures[this._textures.length-1]}set wrapU(e){if(this._textures)for(let t=0;t0&&(this._createInternalTextures(),this._createTextures(a))}_initTypes(e,t,i,r,s,a,o,l,c,f){for(let d=0;d{this.onAfterRenderObservable.notifyObservers(t)})}dispose(e=!1){this._releaseTextures(),e?this._texture=null:this.releaseInternalTextures(),super.dispose()}releaseInternalTextures(){var t,i;let e=(t=this._renderTarget)==null?void 0:t.textures;if(e){for(let r=e.length-1;r>=0;r--)this._textures[r]._texture=null;(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null}}}});var G8,nme,k8=I(()=>{k();G8="mrtFragmentDeclaration",nme=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) +#define VIEW_DEPTH`:""));r.textureWidth=t,r.textureHeight=i,this.reductionSteps.push(r);let s=1;for(;t>1||i>1;){t=Math.max(Math.round(t/2),1),i=Math.max(Math.round(i/2),1);let a=new ed("Reduction phase "+s,e.getEngine(),"#define "+(t==1&&i==1?"LAST":t==1||i==1?"ONEBEFORELAST":"MAIN"));a.textureWidth=t,a.textureHeight=i,this.reductionSteps.push(a),s++}}}});var ab,ZY=I(()=>{rc();$A();qY();sO();rO();ab=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new ic(e.getScene()),this._thinMinMaxReducer=new sb(e.getScene()),this._reductionSteps=[],this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{this._postProcessManager._rebuild()})}get sourceTexture(){return this._sourceTexture}setSourceTexture(e,t,i=2,r=!0){if(e!==this._sourceTexture&&(this._thinMinMaxReducer.depthRedux=t,this.deactivate(),this._sourceTexture=e,this._forceFullscreenViewport=r,this._thinMinMaxReducer.setTextureDimensions(e.getRenderWidth(),e.getRenderHeight()))){this._disposePostProcesses();let s=this._thinMinMaxReducer.reductionSteps;for(let a=0;a{c.setTexture("textureSampler",this._sourceTexture)})),a===s.length-1&&this._reductionSteps[a-1].onAfterRenderObservable.add(()=>{this._thinMinMaxReducer.readMinMax(l.inputTexture.texture)})}}}get refreshRate(){return this._sourceTexture?this._sourceTexture.refreshRate:-1}set refreshRate(e){this._sourceTexture&&(this._sourceTexture.refreshRate=e)}get activated(){return this._activated}activate(){this._onAfterUnbindObserver||!this._sourceTexture||(this._onAfterUnbindObserver=this._sourceTexture.onAfterUnbindObservable.add(()=>{var t,i;let e=this._camera.getScene().getEngine();(t=e._debugPushGroup)==null||t.call(e,"min max reduction"),this._reductionSteps[0].activate(this._camera),this._postProcessManager.directRender(this._reductionSteps,this._reductionSteps[0].inputTexture,this._forceFullscreenViewport,0,0,!0,this._reductionSteps.length-1),e.unBindFramebuffer(this._reductionSteps[this._reductionSteps.length-1].inputTexture,!1),(i=e._debugPopGroup)==null||i.call(e)}),this._activated=!0)}deactivate(){!this._onAfterUnbindObserver||!this._sourceTexture||(this._sourceTexture.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=null,this._activated=!1)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._camera.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=void 0,this._disposePostProcesses(),this._postProcessManager.dispose(),this._postProcessManager=void 0,this._thinMinMaxReducer.dispose(),this._thinMinMaxReducer=void 0,this._sourceTexture=null)}_disposePostProcesses(){for(let e=0;e{HY();ZY();ob=class extends ab{get depthRenderer(){return this._depthRenderer}constructor(e){super(e)}setDepthRenderer(e=null,t=2,i=!0){let r=this._camera.getScene();this._depthRenderer&&(delete r._depthRenderer[this._depthRendererId],this._depthRenderer.dispose(),this._depthRenderer=null),e===null&&(r._depthRenderer||(r._depthRenderer={}),this._depthRendererId="minmax_"+this._camera.uniqueId,e=this._depthRenderer=new mp(r,t,this._camera,!1,1,!1,`DepthRenderer ${this._depthRendererId}`),e.enabled=!1,r._depthRenderer[this._depthRendererId]=e),super.setSourceTexture(e.getDepthMap(),!0,t,i)}setSourceTexture(e,t,i=2,r=!0){super.setSourceTexture(e,t,i,r)}activate(){this._depthRenderer&&(this._depthRenderer.enabled=!0),super.activate()}deactivate(){super.deactivate(),this._depthRenderer&&(this._depthRenderer.enabled=!1)}dispose(e=!0){super.dispose(e),this._depthRenderer&&e&&(this._depthRenderer.dispose(),this._depthRenderer=null)}}});var $Y,Nue,Ir,pp,lb,No,JY=I(()=>{ke();Rf();un();nb();Lm();QY();Pt();Ni();Pg();$Y=b.Up(),Nue=b.Zero(),Ir=new b,pp=new b,lb=new q,No=class n extends Pi{_validateFilter(e){return e===Pi.FILTER_NONE||e===Pi.FILTER_PCF||e===Pi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Pi.FILTER_NONE)}get numCascades(){return this._numCascades}set numCascades(e){e=Math.min(Math.max(e,n.MIN_CASCADES_COUNT),n.MAX_CASCADES_COUNT),e!==this._numCascades&&(this._numCascades=e,this.recreateShadowMap(),this._recreateSceneUBOs())}get freezeShadowCastersBoundingInfo(){return this._freezeShadowCastersBoundingInfo}set freezeShadowCastersBoundingInfo(e){this._freezeShadowCastersBoundingInfoObservable&&e&&(this._scene.onBeforeRenderObservable.remove(this._freezeShadowCastersBoundingInfoObservable),this._freezeShadowCastersBoundingInfoObservable=null),!this._freezeShadowCastersBoundingInfoObservable&&!e&&(this._freezeShadowCastersBoundingInfoObservable=this._scene.onBeforeRenderObservable.add(()=>this._computeShadowCastersBoundingInfo())),this._freezeShadowCastersBoundingInfo=e,e&&this._computeShadowCastersBoundingInfo()}_computeShadowCastersBoundingInfo(){if(this._scbiMin.copyFromFloats(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._scbiMax.copyFromFloats(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),this._shadowMap&&this._shadowMap.renderList){let e=this._shadowMap.renderList;for(let t=0;tt&&(e=0,t=1),e<0&&(e=0),t>1&&(t=1),this._minDistance=e,this._maxDistance=t,this._breaksAreDirty=!0)}get minDistance(){return this._minDistance}get maxDistance(){return this._maxDistance}getClassName(){return n.CLASSNAME}getCascadeMinExtents(e){return e>=0&&e=0&&et.maxZ&&t.maxZ!==0||(this._shadowMaxZ=e,this._light._markMeshesAsLightDirty(),this._breaksAreDirty=!0)}get debug(){return this._debug}set debug(e){this._debug=e,this._light._markMeshesAsLightDirty()}get depthClamp(){return this._depthClamp}set depthClamp(e){this._depthClamp=e}get cascadeBlendPercentage(){return this._cascadeBlendPercentage}set cascadeBlendPercentage(e){this._cascadeBlendPercentage=e,this._light._markMeshesAsLightDirty()}get lambda(){return this._lambda}set lambda(e){let t=Math.min(Math.max(e,0),1);this._lambda!=t&&(this._lambda=t,this._breaksAreDirty=!0)}getCascadeViewMatrix(e){return e>=0&&e=0&&e=0&&e{let r=i.min,s=i.max;r>=s&&(r=0,s=1),(r!=this._minDistance||s!=this._maxDistance)&&this.setMinMaxDistance(r,s)}),this._depthReducer.setDepthRenderer(this._depthRenderer)),this._depthReducer.activate()}}get autoCalcDepthBoundsRefreshRate(){var e,t,i;return(i=(t=(e=this._depthReducer)==null?void 0:e.depthRenderer)==null?void 0:t.getDepthMap().refreshRate)!=null?i:-1}set autoCalcDepthBoundsRefreshRate(e){var t;(t=this._depthReducer)!=null&&t.depthRenderer&&(this._depthReducer.depthRenderer.getDepthMap().refreshRate=e)}splitFrustum(){this._breaksAreDirty=!0}_splitFrustum(){let e=this._getCamera();if(!e)return;let t=e.minZ,i=e.maxZ||this._shadowMaxZ,r=i-t,s=this._minDistance,a=this._shadowMaxZ=t?Math.min((this._shadowMaxZ-t)/(i-t),this._maxDistance):this._maxDistance,o=t+s*r,l=t+a*r,c=l-o,f=l/o;for(let d=0;da||(!this._depthClamp||this.filter===Pi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Pi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),q.OrthoOffCenterLHToRef(this._cascadeMinExtents[r].x,this._cascadeMaxExtents[r].x,this._cascadeMinExtents[r].y,this._cascadeMaxExtents[r].y,i?a:s,i?s:a,this._projectionMatrices[r],e.getEngine().isNDCHalfZRange),this._cascadeMinExtents[r].z=s,this._cascadeMaxExtents[r].z=a,this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),b.TransformCoordinatesToRef(Nue,this._transformMatrices[r],Ir),Ir.scaleInPlace(this._mapSize/2),pp.copyFromFloats(Math.round(Ir.x),Math.round(Ir.y),Math.round(Ir.z)),pp.subtractInPlace(Ir).scaleInPlace(2/this._mapSize),q.TranslationToRef(pp.x,pp.y,0,lb),this._projectionMatrices[r].multiplyToRef(lb,this._projectionMatrices[r]),this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),this._transformMatrices[r].copyToArray(this._transformMatricesAsArray,r*16)}}_computeFrustumInWorldSpace(e){let t=this._getCamera();if(!t)return;let i=this._cascades[e].prevBreakDistance,r=this._cascades[e].breakDistance,s=this._scene.getEngine().isNDCHalfZRange;t.getViewMatrix();let a=t.maxZ===0,o=t.maxZ;a&&(t.maxZ=this._shadowMaxZ,t.getProjectionMatrix(!0));let l=q.Invert(t.getTransformationMatrix());a&&(t.maxZ=o,t.getProjectionMatrix(!0));let c=this._scene.getEngine().useReverseDepthBuffer?4:0;for(let f=0;f{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[t]),this._currentLayer=t,this._filter===Pi.FILTER_PCF&&e.setColorWrite(!1),Oa.eyeAtCamera=!1,this._scene.setTransformMatrix(this.getCascadeViewMatrix(t),this.getCascadeProjectionMatrix(t)),this._useUBO&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onBeforeBindObservable.add(()=>{var t;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((t=e._debugPushGroup)==null||t.call(e,`Cascaded shadow map generation for pass id ${e.currentRenderPassId}`)),this._breaksAreDirty&&this._splitFrustum(),this._computeMatrices()}),this._splitFrustum()}_bindCustomEffectForRenderSubMeshForShadowMap(e,t){t.setMatrix("viewProjection",this.getCascadeTransformMatrix(this._currentLayer))}_isReadyCustomDefines(e){e.push("#define SM_DEPTHCLAMP "+(this._depthClamp&&this._filter!==Pi.FILTER_PCSS?"1":"0"))}prepareDefines(e,t){super.prepareDefines(e,t);let i=this._scene,r=this._light;if(!i.shadowsEnabled||!r.shadowEnabled)return;e["SHADOWCSM"+t]=!0,e["SHADOWCSMDEBUG"+t]=this.debug,e["SHADOWCSMNUM_CASCADES"+t]=this.numCascades,e["SHADOWCSM_RIGHTHANDED"+t]=i.useRightHandedSystem;let s=this._getCamera();s&&this._shadowMaxZ<=(s.maxZ||this._shadowMaxZ)&&(e["SHADOWCSMUSESHADOWMAXZ"+t]=!0),this.cascadeBlendPercentage===0&&(e["SHADOWCSMNOBLEND"+t]=!0)}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera();if(!s)return;let a=this.getShadowMap();if(!a)return;let o=a.getSize().width,l=this._transformMatricesAsArray,c=r.floatingOriginMode?lG(this._scene.floatingOriginOffset,this._viewMatrices,this._projectionMatrices,this._numCascades,this._tempTransformMatricesAsArray):l;if(t.setMatrices("lightMatrix"+e,c),t.setArray("viewFrustumZ"+e,this._viewSpaceFrustumsZ),t.setFloat("cascadeBlendFactor"+e,this.cascadeBlendPercentage===0?1e4:1/this.cascadeBlendPercentage),t.setArray("frustumLengths"+e,this._frustumLengths),this._filter===Pi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Pi.FILTER_PCSS){for(let f=0;fnew n(r,s,void 0,a));return e.numCascades!==void 0&&(i.numCascades=e.numCascades),e.debug!==void 0&&(i.debug=e.debug),e.stabilizeCascades!==void 0&&(i.stabilizeCascades=e.stabilizeCascades),e.lambda!==void 0&&(i.lambda=e.lambda),e.cascadeBlendPercentage!==void 0&&(i.cascadeBlendPercentage=e.cascadeBlendPercentage),e.depthClamp!==void 0&&(i.depthClamp=e.depthClamp),e.autoCalcDepthBounds!==void 0&&(i.autoCalcDepthBounds=e.autoCalcDepthBounds),e.shadowMaxZ!==void 0&&(i.shadowMaxZ=e.shadowMaxZ),e.penumbraDarkness!==void 0&&(i.penumbraDarkness=e.penumbraDarkness),e.freezeShadowCastersBoundingInfo!==void 0&&(i.freezeShadowCastersBoundingInfo=e.freezeShadowCastersBoundingInfo),e.minDistance!==void 0&&e.maxDistance!==void 0&&i.setMinMaxDistance(e.minDistance,e.maxDistance),i}};No._FrustumCornersNdcSpace=[new b(-1,1,-1),new b(1,1,-1),new b(1,-1,-1),new b(-1,-1,-1),new b(-1,1,1),new b(1,1,1),new b(1,-1,1),new b(-1,-1,1)];No.CLASSNAME="CascadedShadowGenerator";No.DEFAULT_CASCADES_COUNT=4;No.MIN_CASCADES_COUNT=2;No.MAX_CASCADES_COUNT=4;No._SceneComponentInitialization=n=>{throw Qe("ShadowGeneratorSceneComponent")}});function cb(n,e){wue[n]=e}var wue,aO=I(()=>{wue={}});var oO,e8=I(()=>{nb();JY();Rm();aO();cb(tt.NAME_SHADOWGENERATOR,(n,e)=>{if(n.shadowGenerators!==void 0&&n.shadowGenerators!==null)for(let t=0,i=n.shadowGenerators.length;t{let e=n._getComponent(tt.NAME_SHADOWGENERATOR);e||(e=new oO(n),n._addComponent(e))}});async function t8(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new Cr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a={};if(e.responseHeaders)for(let o of e.responseHeaders)a[o]=s.getResponseHeader(o)||"";i({response:s.response,headerValues:a})}else r(`Unable to fetch data from ${n}. Error code: ${s.status}`)}),s.open(t,n),s.send()})}var i8=I(()=>{nh()});function Fue(n){return!!n.createPlugin}function Bue(n){return!!n.name}function fb(){return xl[".babylon"]}function Uue(n){for(let e in xl){let t=xl[e];if(t.mimeType===n)return t}}function cO(n,e){let t=xl[n];return t||(ee.Warn("Unable to find a plugin to load "+n+" files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/features/featuresDeepDive/importers/loadingFileTypes"),e?fb():void 0)}function Vue(n){return!!xl[n]}function Gue(n){for(let e in xl){let t=xl[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return xl[e]}return fb()}function kue(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function Wue(n){return n.substring(0,5)==="data:"?n.substring(5):null}function fO(n,e,t){let r="Unable to load from "+(n.rawData?"binary data":n.url);return e?r+=`: ${e}`:t&&(r+=`: ${t}`),r}async function dO(n,e,t,i,r,s,a,o,l){var u;let c=Wue(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?kue(n.url):"",d=a?cO(a,!0):c?Gue(n.url):cO(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await t8(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),_=m.headerValues?m.headerValues["Content-Type"]:"";_&&(d=Uue(_))}d||(d=fb())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((u=l==null?void 0:l[d.plugin.name])==null?void 0:u.enabled)===!1)throw new Error(`The '${d.plugin.name}' plugin is disabled via the loader options passed to the loading operation.`);if(n.rawData&&!d.isBinary)throw"Loading from ArrayBufferView can not be used with plugins that don't support binary loading.";return(m=>{if(Fue(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(g=>{r("Error instantiating plugin.",g)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var T;if(!m)throw`The loader plugin corresponding to the '${a}' file type has not been found. If using es6, please import the plugin you wish to use before.`;if(n8.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!vf(n.url))){if(m.directLoad){let R=m.directLoad(e,c);R instanceof Promise?R.then(M=>{t(m,M)}).catch(M=>{r("Error in directLoad of _loadData: "+M,M)}):t(m,R)}else t(m,c);return}let _=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},g=null,v=!1;(T=m.onDisposeObservable)==null||T.add(()=>{v=!0,g&&(g.abort(),g=null),s()});let x=()=>{if(v)return;let R=(M,y)=>{r(M==null?void 0:M.statusText,y)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";g=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,_,R,o):e._loadFile(n.file||n.url,p,i,!0,_,R)},S=e.getEngine(),E=S.enableOfflineSupport;if(E){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}E=!R}E&&Ie.OfflineProviderFactory?e.offlineProvider=Ie.OfflineProviderFactory(n.url,x,S.disableManifestCheck):x()})}function hO(n,e){let t,i,r=null,s=null;if(!e)t=n,i=_e.GetFilename(n),n=_e.GetFolderPath(n);else if(Bue(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=_f(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return _e.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=_e.GetFilename(e),n=_e.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function td(n){if(typeof n.extensions=="string"){let e=n.extensions;xl[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)xl[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function mv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await a8(i,r,n,e,s,a,o,l)}async function s8(n,e,t="",i=Oe.LastCreatedScene,r=null,s=null,a=null,o=null,l="",c={}){if(!i)return ee.Error("No scene available to import mesh to"),null;let f=hO(e,t);if(!f)return null;let d={};i.addPendingData(d);let h=()=>{i.removePendingData(d)},u=(p,g)=>{let v=fO(f,p,g);a?a(i,v,new Fs(v,Ia.SceneLoaderError,g)):ee.Error(v),h()},m=s?p=>{try{s(p)}catch(g){u("Error in onProgress callback: "+g,g)}}:void 0,_=(p,g,v,x,S,E,T,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,g,v,x,S,E,T,R)}catch(M){u("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await dO(f,i,(p,g,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let x=p,S=[],E=[],T=[];if(!x.importMesh(n,i,g,f.rootUrl,S,E,T,u))return;i.loadingPluginName=p.name,_(S,E,T,[],[],[],[],[])}else p.importMeshAsync(n,i,g,f.rootUrl,m,f.name).then(S=>{i.loadingPluginName=p.name,_(S.meshes,S.particleSystems,S.skeletons,S.animationGroups,S.transformNodes,S.geometries,S.lights,S.spriteManagers)}).catch(S=>{u(S.message,S)})},m,u,h,o,l,c)}async function a8(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{s8(n,e,t,i,(f,d,h,u,m,_,p,g)=>{l({meshes:f,particleSystems:d,skeletons:h,animationGroups:u,transformNodes:m,geometries:_,lights:p,spriteManagers:g})},r,(f,d,h)=>{c(h||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function o8(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){_e.Error("No engine available");return}await uO(n,e,new ei(t),i,r,s,a,o,l)}async function Hue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{o8(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function uO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to append to"),null;let c=hO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};Kr.ShowLoadingScreen&&!lO&&(lO=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),lO=!1}));let h=(_,p)=>{let g=fO(c,_,p);s?s(t,g,new Fs(g,Ia.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(_){h("Error in onSuccess callback",_)}t.removePendingData(f)};return await dO(c,t,(_,p)=>{if(_.load){if(!_.load(t,p,c.rootUrl,h))return;t.loadingPluginName=_.name,m()}else _.loadAsync(t,p,c.rootUrl,u,c.name).then(()=>{t.loadingPluginName=_.name,m()}).catch(v=>{h(v.message,v)})},u,h,d,a,o,l)}async function zue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{uO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function mO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to load asset container to"),null;let c=hO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},h=(_,p)=>{let g=fO(c,_,p);s?s(t,g,new Fs(g,Ia.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=_=>{if(i)try{i(_)}catch(p){h("Error in onSuccess callback",p)}t.removePendingData(f)};return await dO(c,t,(_,p)=>{if(_.loadAssetContainer){let v=_.loadAssetContainer(t,p,c.rootUrl,h);if(!v)return;v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}else _.loadAssetContainerAsync?_.loadAssetContainerAsync(t,p,c.rootUrl,u,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}).catch(v=>{h(v.message,v)}):h("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},u,h,d,a,o,l)}async function Xue(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{mO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function l8(n,e="",t=Oe.LastCreatedScene,i=!0,r=0,s=null,a=null,o=null,l=null,c=null,f="",d={}){if(!t){ee.Error("No scene available to load animations to");return}if(i){for(let p of t.animatables)p.reset();t.stopAllAnimations();let m=t.animationGroups.slice();for(let p of m)p.dispose();let _=t.getNodes();for(let p of _)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let _ of m)_.dispose();break;case 1:for(let _ of t.animationGroups)_.stop();break;case 2:for(let _ of t.animationGroups)_.reset(),_.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let h=t.animatables.length;await mO(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(h),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function Yue(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{l8(n,e,t,i,r,s,h=>{f(h)},a,(h,u,m)=>{d(m||new Error(u))},o,l,c).catch(d)}catch(h){d(h)}})}var r8,n8,xl,lO,Mh,_p=I(()=>{yi();hi();Bs();Ni();Pt();Dx();Jl();pg();mg();Vr();i8();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(r8||(r8={}));n8=new ie,xl={},lO=!1;Mh=class{static get ForceFullSceneLoadingForIncremental(){return Kr.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){Kr.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return Kr.ShowLoadingScreen}static set ShowLoadingScreen(e){Kr.ShowLoadingScreen=e}static get loggingLevel(){return Kr.loggingLevel}static set loggingLevel(e){Kr.loggingLevel=e}static get CleanBoneMatrixWeights(){return Kr.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){Kr.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return fb()}static GetPluginForExtension(e){var t;return(t=cO(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Vue(e)}static RegisterPlugin(e){td(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){s8(e,t,i,r,s,a,o,l,c,f).catch(d=>o==null?void 0:o(Oe.LastCreatedScene,d==null?void 0:d.message,d))}static async ImportMeshAsync(e,t,i,r,s,a,o){return await a8(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){o8(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAsync(e,t,i,r,s,a){return await Hue(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){uO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async AppendAsync(e,t,i,r,s,a){return await zue(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){mO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAssetContainerAsync(e,t,i,r,s,a){return await Xue(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){l8(e,t,i,r,s,a,o,l,c,f,d).catch(h=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,h==null?void 0:h.message,h))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await Yue(e,t,i,r,s,a,l,f,d)}};Mh.NO_LOGGING=0;Mh.MINIMAL_LOGGING=1;Mh.SUMMARY_LOGGING=2;Mh.DETAILED_LOGGING=3;Mh.OnPluginActivatedObservable=n8});var db,pO,_O,Rl,pv=I(()=>{Ci();yf();Nm();Pt();Ni();ND();Uf();_l();yi();Sf();db=class{constructor(){this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.sounds=null,this.effectLayers=[],this.layers=[],this.reflectionProbes=[],this.spriteManagers=[]}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture=e}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}},pO=class extends db{},_O=class{constructor(){this.rootNodes=[],this.skeletons=[],this.animationGroups=[]}dispose(){let e=this.rootNodes;for(let r of e)r.dispose();e.length=0;let t=this.skeletons;for(let r of t)r.dispose();t.length=0;let i=this.animationGroups;for(let r of i)r.dispose();i.length=0}},Rl=class extends db{constructor(e){super(),this._wasAddedToScene=!1,e=e||Oe.LastCreatedScene,e&&(this.scene=e,this.proceduralTextures=[],e.onDisposeObservable.add(()=>{this._wasAddedToScene||this.dispose()}),this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{for(let t of this.geometries)t._rebuild();for(let t of this.meshes)t._rebuild();for(let t of this.particleSystems)t.rebuild();for(let t of this.textures)t._rebuild();for(let t of this.spriteManagers)t.rebuild()}))}_topologicalSort(e){let t=new Map;for(let o of e)t.set(o.uniqueId,o);let i={dependsOn:new Map,dependedBy:new Map};for(let o of e){let l=o.uniqueId;i.dependsOn.set(l,new Set),i.dependedBy.set(l,new Set)}for(let o of e){let l=o.uniqueId,c=i.dependsOn.get(l);if(o instanceof hc){let d=o.sourceMesh;t.has(d.uniqueId)&&(c.add(d.uniqueId),i.dependedBy.get(d.uniqueId).add(l))}let f=i.dependedBy.get(l);for(let d of o.getDescendants()){let h=d.uniqueId;t.has(h)&&(f.add(h),i.dependsOn.get(h).add(l))}}let r=[],s=[];for(let o of e){let l=o.uniqueId;i.dependsOn.get(l).size===0&&(s.push(o),t.delete(l))}let a=s;for(;a.length>0;){let o=a.shift();r.push(o);let l=i.dependedBy.get(o.uniqueId);for(let c of Array.from(l.values())){let f=i.dependsOn.get(c);f.delete(o.uniqueId),f.size===0&&t.get(c)&&(a.push(t.get(c)),t.delete(c))}}return t.size>0&&(ee.Error("SceneSerializer._topologicalSort: There were unvisited nodes:"),t.forEach(o=>{ee.Error(o.name)})),r}_addNodeAndDescendantsToList(e,t,i,r){if(!(!i||r&&!r(i)||t.has(i.uniqueId))){e.push(i),t.add(i.uniqueId);for(let s of i.getDescendants(!0))this._addNodeAndDescendantsToList(e,t,s,r)}}_isNodeInContainer(e){return e instanceof Ar&&this.meshes.indexOf(e)!==-1||e instanceof Yt&&this.transformNodes.indexOf(e)!==-1||e instanceof zt&&this.lights.indexOf(e)!==-1||e instanceof mt&&this.cameras.indexOf(e)!==-1}_isValidHierarchy(){for(let e of this.meshes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.transformNodes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.lights)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.cameras)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;return!0}instantiateModelsToScene(e,t=!1,i){this._isValidHierarchy()||_e.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new _O,o=[],l=[],c={doNotInstantiate:!0,...i},f=(_,p)=>{if(r[_.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(_.name)),p instanceof Z){let g=p;if(g.morphTargetManager){let v=_.morphTargetManager;g.morphTargetManager=v.clone();for(let x=0;x{if(f(_,p),_.parent){let g=r[_.parent.uniqueId],v=s[g];v?p.parent=v:p.parent=_.parent}if(p.position&&_.position&&p.position.copyFrom(_.position),p.rotationQuaternion&&_.rotationQuaternion&&p.rotationQuaternion.copyFrom(_.rotationQuaternion),p.rotation&&_.rotation&&p.rotation.copyFrom(_.rotation),p.scaling&&_.scaling&&p.scaling.copyFrom(_.scaling),p.material){let g=p;if(g.material)if(t){let v=_.material;if(l.indexOf(v)===-1){let x=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=x.uniqueId,s[x.uniqueId]=x,v.getClassName()==="MultiMaterial"){let S=v;for(let E of S.subMaterials)E&&(x=E.clone(e?e(E.name):"Clone of "+E.name),l.push(E),r[E.uniqueId]=x.uniqueId,s[x.uniqueId]=x);S.subMaterials=S.subMaterials.map(E=>E&&s[r[E.uniqueId]])}}g.getClassName()!=="InstancedMesh"&&(g.material=s[r[v.uniqueId]])}else g.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(g.material)===-1&&this.scene.addMultiMaterial(g.material):this.scene.materials.indexOf(g.material)===-1&&this.scene.addMaterial(g.material)}p.parent===null&&a.rootNodes.push(p)};for(let _ of u)if(_.getClassName()==="InstancedMesh"){let p=_,g=p.sourceMesh,v=r[g.uniqueId],S=(typeof v=="number"?s[v]:g).createInstance(p.name);m(p,S)}else{let p=!0;_.getClassName()==="TransformNode"||_.getClassName()==="Node"||_.skeleton||!_.getTotalVertices||_.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(_):p=!c.doNotInstantiate);let g=p?_.createInstance(`instance of ${_.name}`):_.clone(`Clone of ${_.name}`,null,!0);if(!g)throw new Error(`Could not clone or instantiate node on Asset Container ${_.name}`);m(_,g)}for(let _ of this.skeletons){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name);for(let g of this.meshes)if(g.skeleton===_&&!g.isAnInstance){let v=s[r[g.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let x of p.bones)x._linkedTransformNode&&(x._linkedTransformNode=s[r[x._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let _ of this.animationGroups){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name,g=>s[r[g.uniqueId]]||g);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||_e.Warn("SceneSerializer.addAllToScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!0,this.addToScene(null),this.environmentTexture&&(this.scene.environmentTexture=this.environmentTexture);for(let e of this.scene._serializableComponents)e.addFromContainer(this);this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null}}addToScene(e=null){let t=[];for(let i of this.cameras)e&&!e(i)||(this.scene.addCamera(i),t.push(i));for(let i of this.lights)e&&!e(i)||(this.scene.addLight(i),t.push(i));for(let i of this.meshes)e&&!e(i)||(this.scene.addMesh(i),t.push(i));for(let i of this.skeletons)e&&!e(i)||this.scene.addSkeleton(i);for(let i of this.animations)e&&!e(i)||this.scene.addAnimation(i);for(let i of this.animationGroups)e&&!e(i)||this.scene.addAnimationGroup(i);for(let i of this.multiMaterials)e&&!e(i)||this.scene.addMultiMaterial(i);for(let i of this.materials)e&&!e(i)||this.scene.addMaterial(i);for(let i of this.morphTargetManagers)e&&!e(i)||this.scene.addMorphTargetManager(i);for(let i of this.geometries)e&&!e(i)||this.scene.addGeometry(i);for(let i of this.transformNodes)e&&!e(i)||(this.scene.addTransformNode(i),t.push(i));for(let i of this.actionManagers)e&&!e(i)||this.scene.addActionManager(i);for(let i of this.textures)e&&!e(i)||this.scene.addTexture(i);for(let i of this.reflectionProbes)e&&!e(i)||this.scene.addReflectionProbe(i);for(let i of this.spriteManagers)e&&!e(i)||(this.scene.spriteManagers||(this.scene.spriteManagers=[]),this.scene.spriteManagers.push(i));if(t.length){let i=new Set(this.scene.meshes);for(let r of this.scene.lights)i.add(r);for(let r of this.scene.cameras)i.add(r);for(let r of this.scene.transformNodes)i.add(r);for(let r of this.skeletons)for(let s of r.bones)i.add(s);for(let r of t)r.parent&&!i.has(r.parent)&&(r.setParent?r.setParent(null):r.parent=null)}}removeAllFromScene(){this._isValidHierarchy()||_e.Warn("SceneSerializer.removeAllFromScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!1,this.removeFromScene(null),this.environmentTexture===this.scene.environmentTexture&&(this.scene.environmentTexture=null);for(let e of this.scene._serializableComponents)e.removeFromContainer(this)}removeFromScene(e=null){for(let t of this.cameras)e&&!e(t)||this.scene.removeCamera(t);for(let t of this.lights)e&&!e(t)||this.scene.removeLight(t);for(let t of this.meshes)e&&!e(t)||this.scene.removeMesh(t,!0);for(let t of this.skeletons)e&&!e(t)||this.scene.removeSkeleton(t);for(let t of this.animations)e&&!e(t)||this.scene.removeAnimation(t);for(let t of this.animationGroups)e&&!e(t)||this.scene.removeAnimationGroup(t);for(let t of this.multiMaterials)e&&!e(t)||this.scene.removeMultiMaterial(t);for(let t of this.materials)e&&!e(t)||this.scene.removeMaterial(t);for(let t of this.morphTargetManagers)e&&!e(t)||this.scene.removeMorphTargetManager(t);for(let t of this.geometries)e&&!e(t)||this.scene.removeGeometry(t);for(let t of this.transformNodes)e&&!e(t)||this.scene.removeTransformNode(t);for(let t of this.actionManagers)e&&!e(t)||this.scene.removeActionManager(t);for(let t of this.textures)e&&!e(t)||this.scene.removeTexture(t);for(let t of this.reflectionProbes)e&&!e(t)||this.scene.removeReflectionProbe(t);for(let t of this.spriteManagers)if(!(e&&!e(t))&&this.scene.spriteManagers){let i=this.scene.spriteManagers.indexOf(t);i!==-1&&this.scene.spriteManagers.splice(i,1)}}dispose(){let e=this.cameras.slice(0);for(let _ of e)_.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let _ of t)_.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let _ of i)_.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let _ of r)_.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let _ of s)_.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let _ of a)_.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let _ of o)_.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let _ of l)_.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let _ of c)_.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let _ of f)_.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let _ of d)_.dispose();this.textures.length=0;let h=this.reflectionProbes.slice(0);for(let _ of h)_.dispose();this.reflectionProbes.length=0;let u=this.morphTargetManagers.slice(0);for(let _ of u)_.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let _ of m)_.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let _ of this.scene._serializableComponents)_.removeFromContainer(this,!0);this._onContextRestoredObserver&&(this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}_moveAssets(e,t,i){if(!(!e||!t))for(let r of e){let s=!0;if(i){for(let a of i)if(r===a){s=!1;break}}s&&(t.push(r),r._parentContainer=this)}}moveAllFromScene(e){this._wasAddedToScene=!1,e===void 0&&(e=new pO);for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=this[t]||(t==="_environmentTexture"?null:[]),this._moveAssets(this.scene[t],this[t],e[t]));this.environmentTexture=this.scene.environmentTexture,this.removeAllFromScene()}createRootMesh(){let e=new Z("assetContainerRootMesh",this.scene);for(let t of this.meshes)t.parent||e.addChild(t);return this.meshes.unshift(e),e}mergeAnimationsTo(e=Oe.LastCreatedScene,t,i=null){if(!e)return ee.Error("No scene available to merge animations to"),[];let r=i||(l=>{let c,f=l.animations.length?l.animations[0].targetProperty:"",d=l.name.split(".").join("").split("_primitive")[0];switch(f){case"position":case"rotationQuaternion":c=e.getTransformNodeByName(l.name)||e.getTransformNodeByName(d);break;case"influence":c=e.getMorphTargetByName(l.name)||e.getMorphTargetByName(d);break;default:c=e.getNodeByName(l.name)||e.getNodeByName(d)}return c}),s=this.getNodes();for(let l of s){let c=r(l);if(c!==null){for(let f of l.animations){let d=c.animations.filter(h=>h.targetProperty===f.targetProperty);for(let h of d){let u=c.animations.indexOf(h,0);u>-1&&c.animations.splice(u,1)}}c.animations=c.animations.concat(l.animations)}}let a=[],o=this.animationGroups.slice();for(let l of o){a.push(l.clone(l.name,r));for(let c of l.animatables)c.stop()}for(let l of t){let c=r(l.target);c&&(e.beginAnimation(c,l.fromFrame,l.toFrame,l.loopAnimation,l.speedRatio,l.onAnimationEnd?l.onAnimationEnd:void 0,void 0,!0,void 0,l.onAnimationLoop?l.onAnimationLoop:void 0),e.stopAnimation(l.target))}return a}populateRootNodes(){this.rootNodes.length=0;for(let e of this.meshes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.transformNodes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.lights)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.cameras)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e)}addAllAssetsToContainer(e){if(!e)return;let t=[],i=new Set;for(t.push(e);t.length>0;){let r=t.pop();if(r instanceof Z?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof hc?this.meshes.push(r):r instanceof Yt?this.transformNodes.push(r):r instanceof zt?this.lights.push(r):r instanceof mt&&this.cameras.push(r),r instanceof Ar){if(r.material&&this.materials.indexOf(r.material)===-1){this.materials.push(r.material);for(let s of r.material.getActiveTextures())this.textures.indexOf(s)===-1&&this.textures.push(s)}r.skeleton&&this.skeletons.indexOf(r.skeleton)===-1&&this.skeletons.push(r.skeleton),r.morphTargetManager&&this.morphTargetManagers.indexOf(r.morphTargetManager)===-1&&this.morphTargetManagers.push(r.morphTargetManager)}for(let s of r.getChildren())i.has(s)||t.push(s);i.add(r)}this.populateRootNodes()}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];$t&&$t.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialsByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}}});var Ih,c8=I(()=>{_g();Ih=class{constructor(e){this.byteOffset=0,this.buffer=e}async loadAsync(e){let t=await this.buffer.readAsync(this.byteOffset,e);this._dataView=new DataView(t.buffer,t.byteOffset,t.byteLength),this._dataByteOffset=0}readUint32(){let e=this._dataView.getUint32(this._dataByteOffset,!0);return this._dataByteOffset+=4,this.byteOffset+=4,e}readUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._dataByteOffset,e);return this._dataByteOffset+=e,this.byteOffset+=e,t}readString(e){return sV(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function gO(n,e,t,i){let r={externalResourceFunction:i};return t&&(r.uri=e==="file:"?t:e+t),ArrayBuffer.isView(n)?GLTFValidator.validateBytes(n,r):GLTFValidator.validateString(n,r)}function Kue(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{gO(t.data,t.rootUrl,t.fileName,i=>new Promise((r,s)=>{let a=n.length;n.push({resolve:r,reject:s}),postMessage({id:"getExternalResource",index:a,uri:i})})).then(i=>{postMessage({id:"validate.resolve",value:i})},i=>{postMessage({id:"validate.reject",reason:i})});break}case"getExternalResource.resolve":{n[t.index].resolve(t.value);break}case"getExternalResource.reject":{n[t.index].reject(t.reason);break}}}}var gp,f8=I(()=>{yi();gp=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${gO}(${Kue})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=h=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(h)},d=h=>{let u=h.data;switch(u.id){case"getExternalResource":{r(u.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:u.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:u.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=u.value,s(u.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(u.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:_e.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let h=e.slice();c.postMessage({id:"validate",data:h,rootUrl:t,fileName:i},[h.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=_e.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>gO(e,t,i,r)))}};gp.Configuration={url:`${_e._DefaultCdnUrl}/gltf_validator.js`};gp._LastResults=null});var Lc,_v,d8=I(()=>{Lc="Z2xURg",_v={name:"gltf",extensions:{".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},canDirectLoad(n){return n.indexOf("asset")!==-1&&n.indexOf("version")!==-1||n.startsWith("data:base64,"+Lc)||n.startsWith("data:;base64,"+Lc)||n.startsWith("data:application/octet-stream;base64,"+Lc)||n.startsWith("data:model/gltf-binary;base64,"+Lc)}}});function h8(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function jue(n,e,t){try{if(e<0||e>=n.byteLength)throw new RangeError("Offset is out of range.");if(e+t>n.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(n.buffer,n.byteOffset+e,t))}catch(i){return Promise.reject(i)}}var vp,yh,ms,hb,que,vO,id,EO=I(()=>{hi();yi();_p();pv();Pt();c8();f8();d8();Jl();pg();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(vp||(vp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(yh||(yh={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(ms||(ms={}));hb=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=yh.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=vp.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}},que=new hb,vO=class extends hb{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E,T,R,M,y,C,L;e&&(this.alwaysComputeBoundingBox=(t=e.alwaysComputeBoundingBox)!=null?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=(i=e.alwaysComputeSkeletonRootNode)!=null?i:this.alwaysComputeSkeletonRootNode,this.animationStartMode=(r=e.animationStartMode)!=null?r:this.animationStartMode,this.capturePerformanceCounters=(s=e.capturePerformanceCounters)!=null?s:this.capturePerformanceCounters,this.compileMaterials=(a=e.compileMaterials)!=null?a:this.compileMaterials,this.compileShadowGenerators=(o=e.compileShadowGenerators)!=null?o:this.compileShadowGenerators,this.coordinateSystemMode=(l=e.coordinateSystemMode)!=null?l:this.coordinateSystemMode,this.createInstances=(c=e.createInstances)!=null?c:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=(f=e.extensionOptions)!=null?f:this.extensionOptions,this.loadAllMaterials=(d=e.loadAllMaterials)!=null?d:this.loadAllMaterials,this.loadMorphTargets=(h=e.loadMorphTargets)!=null?h:this.loadMorphTargets,this.loadNodeAnimations=(u=e.loadNodeAnimations)!=null?u:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(_=e.loadSkins)!=null?_:this.loadSkins,this.loggingEnabled=(p=e.loggingEnabled)!=null?p:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=(g=e.preprocessUrlAsync)!=null?g:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(x=e.targetFps)!=null?x:this.targetFps,this.transparencyAsCoverage=(S=e.transparencyAsCoverage)!=null?S:this.transparencyAsCoverage,this.useClipPlane=(E=e.useClipPlane)!=null?E:this.useClipPlane,this.useGltfTextureNames=(T=e.useGltfTextureNames)!=null?T:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(y=e.useSRGBBuffers)!=null?y:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(L=e.dontUseTransmissionHelper)!=null?L:this.dontUseTransmissionHelper)}},id=class n extends vO{constructor(e){super(),this.onParsedObservable=new ie,this.onMeshLoadedObservable=new ie,this.onSkinLoadedObservable=new ie,this.onTextureLoadedObservable=new ie,this.onMaterialLoadedObservable=new ie,this.onCameraLoadedObservable=new ie,this.onCompleteObservable=new ie,this.onErrorObservable=new ie,this.onDisposeObservable=new ie,this.onExtensionLoadedObservable=new ie,this.onValidatedObservable=new ie,this._loader=null,this._state=null,this._requests=new Array,this.name=_v.name,this.extensions=_v.extensions,this.onLoaderStateChangedObservable=new ie,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign({...que},e))}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(let e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=e=>Promise.resolve(e),this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,t,i,r,s,a,o,l){if(ArrayBuffer.isView(t))return this._loadBinary(e,t,i,r,o,l),null;this._progressCallback=s;let c=t.name||_e.GetFilename(t);if(a){if(this.useRangeRequests){this.validate&&ee.Warn("glTF validation is not supported when range requests are enabled");let f={abort:()=>{},onCompleteObservable:new ie},d={readAsync:(h,u)=>new Promise((m,_)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{_(p)},p=>{p.setRequestHeader("Range",`bytes=${h}-${h+u-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new Ih(d)).then(h=>{f.onCompleteObservable.notifyObservers(f),r(h)},o?h=>o(void 0,h):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new Ih({readAsync:(d,h)=>h8(f,d,h),byteLength:f.byteLength})).then(d=>{r(d)},o?d=>o(void 0,d):void 0)},!0,o)}else return this._loadFile(e,t,f=>{try{this._validate(e,f,i,c),r({json:this._parseJson(f)})}catch(d){o&&o()}},!1,o)}_loadBinary(e,t,i,r,s,a){this._validate(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i,a),this._unpackBinaryAsync(new Ih({readAsync:(o,l)=>jue(t,o,l),byteLength:t.byteLength})).then(o=>{r(o)},s?o=>s(void 0,o):void 0)}importMeshAsync(e,t,i,r,s,a){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(i),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(i),this._loader.importMeshAsync(e,t,null,i,r,s,a)))}loadAsync(e,t,i,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,i,r,s)))}loadAssetContainerAsync(e,t,i,r,s){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t);let a=new Rl(e),o=[];this.onMaterialLoadedObservable.add(d=>{o.push(d)});let l=[];this.onTextureLoadedObservable.add(d=>{l.push(d)});let c=[];this.onCameraLoadedObservable.add(d=>{c.push(d)});let f=[];return this.onMeshLoadedObservable.add(d=>{d.morphTargetManager&&f.push(d.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,t,i,r,s).then(d=>(Array.prototype.push.apply(a.geometries,d.geometries),Array.prototype.push.apply(a.meshes,d.meshes),Array.prototype.push.apply(a.particleSystems,d.particleSystems),Array.prototype.push.apply(a.skeletons,d.skeletons),Array.prototype.push.apply(a.animationGroups,d.animationGroups),Array.prototype.push.apply(a.materials,o),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,d.lights),Array.prototype.push.apply(a.transformNodes,d.transformNodes),Array.prototype.push.apply(a.cameras,c),Array.prototype.push.apply(a.morphTargetManagers,f),a))})}canDirectLoad(e){return _v.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+Lc)||t.startsWith(";base64,"+Lc)||t.startsWith("application/octet-stream;base64,"+Lc)||t.startsWith("model/gltf-binary;base64,"+Lc)){let i=Ef(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new Ih({readAsync:(r,s)=>h8(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[_v.name])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(i=>{t(i)})})}_setState(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(ms[this._state]))}_loadFile(e,t,i,r,s,a){let o=e._loadFile(t,i,l=>{this._onProgress(l,o)},!0,r,s,a);return o.onCompleteObservable.add(()=>{o._lengthComputable=!0,o._total=o._loaded}),this._requests.push(o),o}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let i=!0,r=0,s=0;for(let a of this._requests){if(a._lengthComputable===void 0||a._loaded===void 0||a._total===void 0)return;i=i&&a._lengthComputable,r+=a._loaded,s+=a._total}this._progressCallback({lengthComputable:i,loaded:r,total:i?s:0})}_validate(e,t,i="",r=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),gp.ValidateAsync(t,i,r,s=>this.preprocessUrlAsync(i+s).then(a=>e._loadFileAsync(a,void 0,!0,!0).then(o=>new Uint8Array(o,0,o.byteLength)))).then(s=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(s),this.onValidatedObservable.clear()},s=>{this._endPerformanceCounter("Validate JSON"),_e.Warn(`Failed to validate: ${s.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){let t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);let i=n._parseVersion(t.version);if(!i)throw new Error("Invalid version: "+t.version);if(t.minVersion!==void 0){let a=n._parseVersion(t.minVersion);if(!a)throw new Error("Invalid minimum version: "+t.minVersion);if(n._compareVersion(a,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}let s={1:n._CreateGLTF1Loader,2:n._CreateGLTF2Loader}[i.major];if(!s)throw new Error("Unsupported version: "+t.version);return s(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);let t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{let t={Magic:1179937895},i=e.readUint32();if(i!==t.Magic)throw new Fs("Unexpected magic: "+i,Ia.GLTFLoaderUnexpectedMagicError);let r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);let s=e.readUint32();!this.useRangeRequests&&s!==e.buffer.byteLength&&ee.Warn(`Length in header does not match actual data length: ${s} != ${e.buffer.byteLength}`);let a;switch(r){case 1:{a=this._unpackBinaryV1Async(e,s);break}case 2:{a=this._unpackBinaryV2Async(e,s);break}default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),a})}_unpackBinaryV1Async(e,t){let i={JSON:0},r=e.readUint32(),s=e.readUint32();if(s!==i.JSON)throw new Error(`Unexpected content format: ${s}`);let a=t-e.byteOffset,o={json:this._parseJson(e.readString(r)),bin:null};if(a!==0){let l=e.byteOffset;o.bin={readAsync:(c,f)=>e.buffer.readAsync(l+c,f),byteLength:a}}return Promise.resolve(o)}_unpackBinaryV2Async(e,t){let i={JSON:1313821514,BIN:5130562},r=e.readUint32();if(e.readUint32()!==i.JSON)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{let a={json:this._parseJson(e.readString(r)),bin:null},o=()=>{let l=e.readUint32();switch(e.readUint32()){case i.JSON:throw new Error("Unexpected JSON chunk");case i.BIN:{let f=e.byteOffset;a.bin={readAsync:(d,h)=>e.buffer.readAsync(f+d,h),byteLength:l},e.skipBytes(l);break}default:{e.skipBytes(l);break}}return e.byteOffset!==t?e.loadAsync(8).then(o):Promise.resolve(a)};return o()})}static _parseVersion(e){if(e==="1.0"||e==="1.0.1")return{major:1,minor:0};let t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.majort.minor?1:e.minor{ub=class{get resolve(){return this._resolve}get reject(){return this._reject}constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}}});var Qn,m8=I(()=>{Gt();Vt();Tl();dx();ke();yi();Qn=class{constructor(){this.keysUp=[38],this.keysUpward=[33],this.keysDown=[40],this.keysDownward=[34],this.keysLeft=[37],this.keysRight=[39],this.rotationSpeed=.5,this.keysRotateLeft=[],this.keysRotateRight=[],this.keysRotateUp=[],this.keysRotateDown=[],this._keys=new Array}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===xo.KEYDOWN)(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),e||i.preventDefault());else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),e||i.preventDefault()}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Gt();hi();Vt();Tl();Ao();yi();Ch=class{constructor(e=!0){this.touchEnabled=e,this.buttons=[0,1,2],this.angularSensibility=2e3,this._previousPosition=null,this.onPointerMovedObservable=new ie,this._allowCameraRotation=!0,this._currentActiveButton=-1,this._activePointerId=-1}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement();this._pointerInput||(this._pointerInput=r=>{let s=r.event,a=s.pointerType==="touch";if(!this.touchEnabled&&a||r.type!==st.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===st.POINTERDOWN){if(a&&this._activePointerId!==-1||!a&&this._currentActiveButton!==-1)return;this._activePointerId=s.pointerId;try{o==null||o.setPointerCapture(s.pointerId)}catch(l){}this._currentActiveButton===-1&&(this._currentActiveButton=s.button),this._previousPosition={x:s.clientX,y:s.clientY},e||(s.preventDefault(),i&&i.focus()),t.isPointerLock&&this._onMouseMove&&this._onMouseMove(r.event)}else if(r.type===st.POINTERUP){if(a&&this._activePointerId!==s.pointerId||!a&&this._currentActiveButton!==s.button)return;try{o==null||o.releasePointerCapture(s.pointerId)}catch(l){}this._currentActiveButton=-1,this._previousPosition=null,e||s.preventDefault(),this._activePointerId=-1}else if(r.type===st.POINTERMOVE&&(this._activePointerId===s.pointerId||!a)){if(t.isPointerLock&&this._onMouseMove)this._onMouseMove(r.event);else if(this._previousPosition){let l=this.camera._calculateHandednessMultiplier(),c=(s.clientX-this._previousPosition.x)*l,f=(s.clientY-this._previousPosition.y)*l;this._allowCameraRotation&&(this.camera.cameraRotation.y+=c/this.angularSensibility,this.camera.cameraRotation.x+=f/this.angularSensibility),this.onPointerMovedObservable.notifyObservers({offsetX:c,offsetY:f}),this._previousPosition={x:s.clientX,y:s.clientY},e||s.preventDefault()}}}),this._onMouseMove=r=>{if(!t.isPointerLock)return;let s=this.camera._calculateHandednessMultiplier();this.camera.cameraRotation.y+=r.movementX*s/this.angularSensibility,this.camera.cameraRotation.x+=r.movementY*s/this.angularSensibility,this._previousPosition=null,e||r.preventDefault()},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE),i&&(this._contextMenuBind=r=>this.onContextMenu(r),i.addEventListener("contextmenu",this._contextMenuBind,!1))}onContextMenu(e){e.preventDefault()}detachControl(){if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._contextMenuBind){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("contextmenu",this._contextMenuBind)}this.onPointerMovedObservable&&this.onPointerMovedObservable.clear(),this._observer=null,this._onMouseMove=null,this._previousPosition=null}this._activePointerId=-1,this._currentActiveButton=-1}getClassName(){return"FreeCameraMouseInput"}getSimpleName(){return"mouse"}};P([F()],Ch.prototype,"buttons",void 0);P([F()],Ch.prototype,"angularSensibility",void 0);Kn.FreeCameraMouseInput=Ch});var Ph,_8=I(()=>{Gt();Vt();hi();Ao();hx();yi();Ph=class{constructor(){this.wheelPrecisionX=3,this.wheelPrecisionY=3,this.wheelPrecisionZ=3,this.onChangedObservable=new ie,this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0,this._ffMultiplier=12,this._normalize=120}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==st.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Ro.DOM_DELTA_LINE?this._ffMultiplier:1;this._wheelDeltaX+=this.wheelPrecisionX*r*i.deltaX/this._normalize,this._wheelDeltaY-=this.wheelPrecisionY*r*i.deltaY/this._normalize,this._wheelDeltaZ+=this.wheelPrecisionZ*r*i.deltaZ/this._normalize,i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,st.POINTERWHEEL)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null),this.onChangedObservable&&this.onChangedObservable.clear()}checkInputs(){this.onChangedObservable.notifyObservers({wheelDeltaX:this._wheelDeltaX,wheelDeltaY:this._wheelDeltaY,wheelDeltaZ:this._wheelDeltaZ}),this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0}getClassName(){return"BaseCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}};P([F()],Ph.prototype,"wheelPrecisionX",void 0);P([F()],Ph.prototype,"wheelPrecisionY",void 0);P([F()],Ph.prototype,"wheelPrecisionZ",void 0)});var wi,zs,g8=I(()=>{Gt();Vt();Tl();_8();ke();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(wi||(wi={}));zs=class extends Ph{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=wi.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=wi.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==wi.MoveRelative||(this._wheelXAction=wi.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==wi.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==wi.MoveRelative||(this._wheelYAction=wi.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==wi.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==wi.MoveRelative||(this._wheelZAction=wi.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==wi.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==wi.RotateRelative||(this._wheelXAction=wi.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==wi.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==wi.RotateRelative||(this._wheelYAction=wi.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==wi.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==wi.RotateRelative||(this._wheelZAction=wi.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==wi.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==wi.MoveScene||(this._wheelXAction=wi.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==wi.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==wi.MoveScene||(this._wheelYAction=wi.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==wi.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==wi.MoveScene||(this._wheelZAction=wi.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==wi.MoveScene?null:this._wheelZActionCoordinate}checkInputs(){if(this._wheelDeltaX===0&&this._wheelDeltaY===0&&this._wheelDeltaZ==0)return;this._moveRelative.setAll(0),this._rotateRelative.setAll(0),this._moveScene.setAll(0),this._updateCamera(),this.camera.getScene().useRightHandedSystem&&(this._moveRelative.z*=-1);let e=q.Zero();this.camera.getViewMatrix().invertToRef(e);let t=b.Zero();b.TransformNormalToRef(this._moveRelative,e,t),this.camera.cameraRotation.x+=this._rotateRelative.x/200,this.camera.cameraRotation.y+=this._rotateRelative.y/200,this.camera.cameraDirection.addInPlace(t),this.camera.cameraDirection.addInPlace(this._moveScene),super.checkInputs()}_updateCamera(){this._updateCameraProperty(this._wheelDeltaX,this._wheelXAction,this._wheelXActionCoordinate),this._updateCameraProperty(this._wheelDeltaY,this._wheelYAction,this._wheelYActionCoordinate),this._updateCameraProperty(this._wheelDeltaZ,this._wheelZAction,this._wheelZActionCoordinate)}_updateCameraProperty(e,t,i){if(e===0||t===null||i===null)return;let r=null;switch(t){case wi.MoveRelative:r=this._moveRelative;break;case wi.RotateRelative:r=this._rotateRelative;break;case wi.MoveScene:r=this._moveScene;break}switch(i){case 0:r.set(e,0,0);break;case 1:r.set(0,e,0);break;case 2:r.set(0,0,e);break}}};P([F()],zs.prototype,"wheelXMoveRelative",null);P([F()],zs.prototype,"wheelYMoveRelative",null);P([F()],zs.prototype,"wheelZMoveRelative",null);P([F()],zs.prototype,"wheelXRotateRelative",null);P([F()],zs.prototype,"wheelYRotateRelative",null);P([F()],zs.prototype,"wheelZRotateRelative",null);P([F()],zs.prototype,"wheelXMoveScene",null);P([F()],zs.prototype,"wheelYMoveScene",null);P([F()],zs.prototype,"wheelZMoveScene",null);Kn.FreeCameraMouseWheelInput=zs});var Dh,v8=I(()=>{Gt();Vt();Tl();Ao();ke();yi();Dh=class{constructor(e=!1){this.allowMouse=e,this.touchAngularSensibility=2e5,this.touchMoveSensibility=250,this.singleFingerRotate=!1,this._offsetX=null,this._offsetY=null,this._pointerPressed=new Array,this._isSafari=_e.IsSafari()}attachControl(e){e=_e.BackCompatCameraNoPreventDefault(arguments);let t=null;if(this._pointerInput===void 0&&(this._onLostFocus=()=>{this._offsetX=null,this._offsetY=null},this._pointerInput=i=>{let r=i.event,s=r.pointerType==="mouse"||this._isSafari&&typeof r.pointerType=="undefined";if(!(!this.allowMouse&&s)){if(i.type===st.POINTERDOWN){if(e||r.preventDefault(),this._pointerPressed.push(r.pointerId),this._pointerPressed.length!==1)return;t={x:r.clientX,y:r.clientY}}else if(i.type===st.POINTERUP){e||r.preventDefault();let a=this._pointerPressed.indexOf(r.pointerId);if(a===-1||(this._pointerPressed.splice(a,1),a!=0))return;t=null,this._offsetX=null,this._offsetY=null}else if(i.type===st.POINTERMOVE){if(e||r.preventDefault(),!t||this._pointerPressed.indexOf(r.pointerId)!=0)return;this._offsetX=r.clientX-t.x,this._offsetY=-(r.clientY-t.y)}}}),this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,st.POINTERDOWN|st.POINTERUP|st.POINTERMOVE),this._onLostFocus){let r=this.camera.getEngine().getInputElement();r&&r.addEventListener("blur",this._onLostFocus)}}detachControl(){if(this._pointerInput){if(this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null),this._onLostFocus){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("blur",this._onLostFocus),this._onLostFocus=null}this._pointerPressed.length=0,this._offsetX=null,this._offsetY=null}}checkInputs(){if(this._offsetX===null||this._offsetY===null||this._offsetX===0&&this._offsetY===0)return;let e=this.camera,t=e._calculateHandednessMultiplier();if(e.cameraRotation.y=this._offsetX*t/this.touchAngularSensibility,this.singleFingerRotate&&this._pointerPressed.length===1||!this.singleFingerRotate&&this._pointerPressed.length>1)e.cameraRotation.x=-(this._offsetY*t)/this.touchAngularSensibility;else{let r=e._computeLocalCameraSpeed(),s=$.Vector3[0];s.copyFromFloats(0,0,this.touchMoveSensibility!==0?r*this._offsetY/this.touchMoveSensibility:0),q.RotationYawPitchRollToRef(e.rotation.y,e.rotation.x,0,e._cameraRotationMatrix),b.TransformCoordinatesToRef(s,e._cameraRotationMatrix,s),e.cameraDirection.addInPlace(s)}}getClassName(){return"FreeCameraTouchInput"}getSimpleName(){return"touch"}};P([F()],Dh.prototype,"touchAngularSensibility",void 0);P([F()],Dh.prototype,"touchMoveSensibility",void 0);Kn.FreeCameraTouchInput=Dh});var mb,E8=I(()=>{Tl();m8();p8();g8();v8();mb=class extends ip{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new Qn),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new Ch(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new zs,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new Dh),this}clear(){super.clear(),this._mouseInput=null}}});var Oc,S8=I(()=>{Gt();Vt();ke();vD();E8();yi();Yi();Vr();Oc=class extends Gs{get angularSensibility(){let e=this.inputs.attached.mouse;return e?e.angularSensibility:0}set angularSensibility(e){let t=this.inputs.attached.mouse;t&&(t.angularSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysUpward(){let e=this.inputs.attached.keyboard;return e?e.keysUpward:[]}set keysUpward(e){let t=this.inputs.attached.keyboard;t&&(t.keysUpward=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysDownward(){let e=this.inputs.attached.keyboard;return e?e.keysDownward:[]}set keysDownward(e){let t=this.inputs.attached.keyboard;t&&(t.keysDownward=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get keysRotateLeft(){let e=this.inputs.attached.keyboard;return e?e.keysRotateLeft:[]}set keysRotateLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateLeft=e)}get keysRotateRight(){let e=this.inputs.attached.keyboard;return e?e.keysRotateRight:[]}set keysRotateRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateRight=e)}get keysRotateUp(){let e=this.inputs.attached.keyboard;return e?e.keysRotateUp:[]}set keysRotateUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateUp=e)}get keysRotateDown(){let e=this.inputs.attached.keyboard;return e?e.keysRotateDown:[]}set keysRotateDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateDown=e)}constructor(e,t,i,r=!0){super(e,t,i,r),this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.checkCollisions=!1,this.applyGravity=!1,this._needMoveForGravity=!1,this._oldPosition=b.Zero(),this._diffPosition=b.Zero(),this._newPosition=b.Zero(),this._collisionMask=-1,this._onCollisionPositionChange=(s,a,o=null)=>{this._newPosition.copyFrom(a),this._newPosition.subtractToRef(this._oldPosition,this._diffPosition),this._diffPosition.length()>Ie.CollisionsEpsilon&&(this.position.addToRef(this._diffPosition,this._deferredPositionUpdate),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate),this.onCollide&&o&&this.onCollide(o))},this.inputs=new mb(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=_e.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(t)}detachControl(){this.inputs.detachElement(),this.cameraDirection=new b(0,0,0),this.cameraRotation=new Fe(0,0)}get collisionMask(){return this._collisionMask}set collisionMask(e){this._collisionMask=isNaN(e)?-1:e}_collideWithWorld(e){let t;this.parent?t=b.TransformCoordinates(this.position,this.parent.getWorldMatrix()):t=this.position,t.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);let i=this.getScene().collisionCoordinator;this._collider||(this._collider=i.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;let r=e;this.applyGravity&&(r=e.add(this.getScene().gravity)),i.getNewPosition(this._oldPosition,r,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}_checkInputs(){this._localDirection||(this._localDirection=b.Zero(),this._transformedDirection=b.Zero()),this.inputs.checkInputs(),super._checkInputs()}set needMoveForGravity(e){this._needMoveForGravity=e}get needMoveForGravity(){return this._needMoveForGravity}_decideIfNeedsToMove(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):super._updatePosition()}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"FreeCamera"}};P([Xr()],Oc.prototype,"ellipsoid",void 0);P([Xr()],Oc.prototype,"ellipsoidOffset",void 0);P([F()],Oc.prototype,"checkCollisions",void 0);P([F()],Oc.prototype,"applyGravity",void 0);Ft("BABYLON.FreeCamera",Oc)});var Ha,pb=I(()=>{ke();ol();la();Ha=class n extends _i{get _matrix(){return this._compose(),this._localMatrix}set _matrix(e){e.updateFlag===this._localMatrix.updateFlag&&!this._needToCompose||(this._needToCompose=!1,this._localMatrix.copyFrom(e),this._markAsDirtyAndDecompose())}constructor(e,t,i=null,r=null,s=null,a=null,o=null){var l;super(e,t.getScene(),!1),this.name=e,this.children=[],this.animations=[],this._index=null,this._scalingDeterminant=1,this._needToDecompose=!0,this._needToCompose=!1,this._linkedTransformNode=null,this._waitingTransformNodeId=null,this._waitingTransformNodeUniqueId=null,this._skeleton=t,this._localMatrix=(l=r==null?void 0:r.clone())!=null?l:q.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new q,this._absoluteBindMatrix=new q,this._absoluteInverseBindMatrix=new q,this._finalMatrix=new q,t.bones.push(this),this.setParent(i,!1),this._updateAbsoluteBindMatrices()}getClassName(){return"Bone"}getSkeleton(){return this._skeleton}get parent(){return this._parentNode}getParent(){return this.parent}getChildren(){return this.children}getIndex(){return this._index===null?this.getSkeleton().bones.indexOf(this):this._index}set parent(e){this.setParent(e)}setParent(e,t=!0){if(this.parent!==e){if(this.parent){let i=this.parent.children.indexOf(this);i!==-1&&this.parent.children.splice(i,1)}this._parentNode=e,this.parent&&this.parent.children.push(this),t&&this._updateAbsoluteBindMatrices(),this.markAsDirty()}}getLocalMatrix(){return this._compose(),this._localMatrix}getBindMatrix(){return this._bindMatrix}getBaseMatrix(){return this.getBindMatrix()}getRestMatrix(){return this._restMatrix}getRestPose(){return this.getRestMatrix()}setRestMatrix(e){this._restMatrix.copyFrom(e)}setRestPose(e){this.setRestMatrix(e)}getBindPose(){return this.getBindMatrix()}setBindMatrix(e){this.updateMatrix(e)}setBindPose(e){this.setBindMatrix(e)}getFinalMatrix(){return this._finalMatrix}getWorldMatrix(){return this.getFinalMatrix()}returnToRest(){var e;if(this._linkedTransformNode){let t=$.Vector3[0],i=$.Quaternion[0],r=$.Vector3[1];this.getRestMatrix().decompose(t,i,r),this._linkedTransformNode.position.copyFrom(r),this._linkedTransformNode.rotationQuaternion=(e=this._linkedTransformNode.rotationQuaternion)!=null?e:Xe.Identity(),this._linkedTransformNode.rotationQuaternion.copyFrom(i),this._linkedTransformNode.scaling.copyFrom(t)}else this._matrix=this._restMatrix}getAbsoluteInverseBindMatrix(){return this._absoluteInverseBindMatrix}getInvertedAbsoluteTransform(){return this.getAbsoluteInverseBindMatrix()}getAbsoluteMatrix(){return this._skeleton.computeAbsoluteMatrices(),this._absoluteMatrix}getAbsoluteTransform(){return this.getAbsoluteMatrix()}linkTransformNode(e){this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode--,this._linkedTransformNode=e,this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode++}getTransformNode(){return this._linkedTransformNode}get position(){return this._decompose(),this._localPosition}set position(e){this._decompose(),this._localPosition.copyFrom(e),this._markAsDirtyAndCompose()}get rotation(){return this.getRotation()}set rotation(e){this.setRotation(e)}get rotationQuaternion(){return this._decompose(),this._localRotation}set rotationQuaternion(e){this.setRotationQuaternion(e)}get scaling(){return this.getScale()}set scaling(e){this.setScale(e)}get animationPropertiesOverride(){return this._skeleton.animationPropertiesOverride}_decompose(){this._needToDecompose&&(this._needToDecompose=!1,this._localScaling||(this._localScaling=b.Zero(),this._localRotation=Xe.Zero(),this._localPosition=b.Zero()),this._localMatrix.decompose(this._localScaling,this._localRotation,this._localPosition))}_compose(){if(this._needToCompose){if(!this._localScaling){this._needToCompose=!1;return}this._needToCompose=!1,q.ComposeToRef(this._localScaling,this._localRotation,this._localPosition,this._localMatrix)}}updateMatrix(e,t=!0,i=!0){this._bindMatrix.copyFrom(e),t&&this._updateAbsoluteBindMatrices(),i?this._matrix=e:this.markAsDirty()}_updateAbsoluteBindMatrices(e,t=!0){if(e||(e=this._bindMatrix),this.parent?e.multiplyToRef(this.parent._absoluteBindMatrix,this._absoluteBindMatrix):this._absoluteBindMatrix.copyFrom(e),this._absoluteBindMatrix.invertToRef(this._absoluteInverseBindMatrix),t)for(let i=0;i{Gr();gv=class n extends ge{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,h,u){super(null,s,!a,o,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,f),this.format=r,this._engine&&(!this._engine._caps.textureFloatLinearFiltering&&c===1&&(l=1),!this._engine._caps.textureHalfFloatLinearFiltering&&c===2&&(l=1),this._texture=this._engine.createRawTexture(e,t,i,r,a,o,l,null,c,f!=null?f:0,d!=null?d:!1,u),this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._waitingForData=!!h&&!e)}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._getEngine().updateRawTexture(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,this._texture._useSRGBBuffer,t),this._waitingForData=!1}clone(){if(!this._texture)return super.clone();let e=new n(null,this.getSize().width,this.getSize().height,this.format,this.getScene(),this._texture.generateMipMaps,this._invertY,this.samplingMode,this._texture.type,this._texture._creationFlags,this._useSRGBBuffer);return e._texture=this._texture,this._texture.incrementReferences(),e}isReady(){return super.isReady()&&!this._waitingForData}static CreateLuminanceTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,1,r,s,a,o)}static CreateLuminanceAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,2,r,s,a,o)}static CreateAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,0,r,s,a,o)}static CreateRGBTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1){return new n(e,t,i,4,r,s,a,o,l,c,f)}static CreateRGBATexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1,d=!1){return new n(e,t,i,5,r,s,a,o,l,c,f,d)}static CreateRGBAStorageTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=!1){return new n(e,t,i,5,r,s,a,o,l,1,c)}static CreateRTexture(e,t,i,r,s=!0,a=!1,o=ge.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l)}static CreateRStorageTexture(e,t,i,r,s=!0,a=!1,o=ge.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l,1)}}});var _b,A8=I(()=>{pb();hi();ke();T8();wf();fD();Ni();Pt();Eg();_b=class n{get useTextureToStoreBoneMatrices(){return this._useTextureToStoreBoneMatrices}set useTextureToStoreBoneMatrices(e){this._useTextureToStoreBoneMatrices=e,this._markAsDirty()}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}get isUsingTextureForMatrices(){return this.useTextureToStoreBoneMatrices&&this._canUseTextureForBones}get uniqueId(){return this._uniqueId}constructor(e,t,i){this.name=e,this.id=t,this.bones=[],this.needInitialSkinMatrix=!1,this._isDirty=!0,this._meshesWithPoseMatrix=new Array,this._identity=q.Identity(),this._currentRenderId=-1,this._textureWidth=0,this._textureHeight=1,this._ranges={},this._absoluteTransformIsDirty=!0,this._canUseTextureForBones=!1,this._uniqueId=0,this._numBonesWithLinkedTransformNode=0,this._hasWaitingData=null,this._parentContainer=null,this.doNotSerialize=!1,this._useTextureToStoreBoneMatrices=!0,this._animationPropertiesOverride=null,this.onBeforeComputeObservable=new ie,this.metadata=null,this.bones=[],this._scene=i||Oe.LastCreatedScene,this._uniqueId=this._scene.getUniqueId(),this._scene.addSkeleton(this),this._isDirty=!0;let r=this._scene.getEngine().getCaps();this._canUseTextureForBones=r.textureFloat&&r.maxVertexTextureImageUnits>0}getClassName(){return"Skeleton"}getChildren(){return this.bones.filter(e=>!e.getParent())}getTransformMatrices(e){if(this.needInitialSkinMatrix){if(!e)throw new Error("getTransformMatrices: When using the needInitialSkinMatrix flag, a mesh must be provided");return e._bonesTransformMatrices||this.prepare(!0),e._bonesTransformMatrices}return(!this._transformMatrices||this._isDirty)&&this.prepare(!this._transformMatrices),this._transformMatrices}getTransformMatrixTexture(e){return this.needInitialSkinMatrix&&e._transformMatrixTexture?e._transformMatrixTexture:this._transformMatrixTexture}getScene(){return this._scene}toString(e){let t=`Name: ${this.name}, nBones: ${this.bones.length}`;if(t+=`, nAnimationRanges: ${this._ranges?Object.keys(this._ranges).length:"none"}`,e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i&&(t+=", ",i=!1),t+=r;t+="}"}return t}getBoneIndexByName(e){for(let t=0,i=this.bones.length;t-1&&this._meshesWithPoseMatrix.splice(t,1)}_computeTransformMatrices(e,t){this.onBeforeComputeObservable.notifyObservers(this);for(let i=0;i0){for(let r of this.bones)if(r._linkedTransformNode){let s=r._linkedTransformNode;r.position=s.position,s.rotationQuaternion?r.rotationQuaternion=s.rotationQuaternion:r.rotation=s.rotation,r.scaling=s.scaling}}let t=null;if(this.needInitialSkinMatrix)for(let r of this._meshesWithPoseMatrix){let s=r.getPoseMatrix(),a=this._isDirty;if(t===null&&(t=this._computeTextureSize()),(!r._bonesTransformMatrices||r._bonesTransformMatrices.length!==t)&&(r._bonesTransformMatrices=new Float32Array(t),a=!0),!!a){if(this._synchronizedWithMesh!==r){this._synchronizedWithMesh=r;for(let o of this.bones)o.getParent()||(o.getBindMatrix().multiplyToRef(s,$.Matrix[1]),o._updateAbsoluteBindMatrices($.Matrix[1]));if(this.isUsingTextureForMatrices){let o=(i=r._transformMatrixTexture)==null?void 0:i.getSize(),l=o?o.width*o.height*4:0;(!r._transformMatrixTexture||l!==t)&&(r._transformMatrixTexture&&r._transformMatrixTexture.dispose(),r._transformMatrixTexture=gv.CreateRGBATexture(r._bonesTransformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))}}this._computeTransformMatrices(r._bonesTransformMatrices,s),this.isUsingTextureForMatrices&&r._transformMatrixTexture&&r._transformMatrixTexture.update(r._bonesTransformMatrices)}}else{if(!this._isDirty)return;t===null&&(t=this._computeTextureSize()),(!this._transformMatrices||this._transformMatrices.length!==t)&&(this._transformMatrices=new Float32Array(t),this.isUsingTextureForMatrices&&(this._transformMatrixTexture&&this._transformMatrixTexture.dispose(),this._transformMatrixTexture=gv.CreateRGBATexture(this._transformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))),this._computeTransformMatrices(this._transformMatrices,null),this.isUsingTextureForMatrices&&this._transformMatrixTexture&&this._transformMatrixTexture.update(this._transformMatrices)}this._isDirty=!1}getAnimatables(){if(!this._animatables||this._animatables.length!==this.bones.length){this._animatables=[];for(let e=0;e-1&&this._parentContainer.skeletons.splice(e,1),this._parentContainer=null}this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null)}serialize(){var t,i;let e={};e.name=this.name,e.id=this.id,e.uniqueId=this.uniqueId,this.dimensionsAtRest&&(e.dimensionsAtRest=this.dimensionsAtRest.asArray()),e.bones=[],e.needInitialSkinMatrix=this.needInitialSkinMatrix,this.metadata&&(e.metadata=this.metadata);for(let r=0;r0&&(o.animation=s.animations[0].serialize()),e.ranges=[];for(let l in this._ranges){let c=this._ranges[l];if(!c)continue;let f={};f.name=l,f.from=c.from,f.to=c.to,e.ranges.push(f)}}return e}static Parse(e,t){let i=new n(e.name,e.id,t);e.dimensionsAtRest&&(i.dimensionsAtRest=b.FromArray(e.dimensionsAtRest)),i.needInitialSkinMatrix=e.needInitialSkinMatrix,e.metadata&&(i.metadata=e.metadata);let r;for(r=0;r-1&&(o=i.bones[s.parentBoneIndex]);let l=s.rest?q.FromArray(s.rest):null,c=new Ha(s.name,i,o,q.FromArray(s.matrix),l,null,a);s.id!==void 0&&s.id!==null&&(c.id=s.id),s.length&&(c.length=s.length),s.metadata&&(c.metadata=s.metadata),s.animation&&c.animations.push(dt.Parse(s.animation)),s.linkedTransformNodeId!==void 0&&s.linkedTransformNodeId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeId=s.linkedTransformNodeId),s.linkedTransformNodeUniqueId!==void 0&&s.linkedTransformNodeUniqueId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeUniqueId=s.linkedTransformNodeUniqueId)}if(e.ranges)for(r=0;r0&&(e=this._meshesWithPoseMatrix[0].getPoseMatrix()),e}sortBones(){let e=[],t=new Array(this.bones.length);for(let i=0;i{Gt();hi();Ni();Wi();Vt();br();Yi();rd=class n{get influence(){return this._influence}set influence(e){if(this._influence===e)return;let t=this._influence;this._influence=e,this.onInfluenceChanged.hasObservers()&&this.onInfluenceChanged.notifyObservers(t===0||e===0)}get animationPropertiesOverride(){return!this._animationPropertiesOverride&&this._scene?this._scene.animationPropertiesOverride:this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}constructor(e,t=0,i=null,r=null){this.name=e,this.animations=[],this._positions=null,this._normals=null,this._tangents=null,this._uvs=null,this._uv2s=null,this._colors=null,this._uniqueId=0,this.onInfluenceChanged=new ie,this._onDataLayoutChanged=new ie,this.morphTargetManager=null,this._animationPropertiesOverride=null,this.id=e,this.morphTargetManager=r,this._scene=i||Oe.LastCreatedScene,this.influence=t,this._scene&&(this._uniqueId=this._scene.getUniqueId())}get uniqueId(){return this._uniqueId}get hasPositions(){return!!this._positions}get hasNormals(){return!!this._normals}get hasTangents(){return!!this._tangents}get hasUVs(){return!!this._uvs}get hasUV2s(){return!!this._uv2s}get hasColors(){return!!this._colors}get vertexCount(){return this._positions?this._positions.length/3:this._normals?this._normals.length/3:this._tangents?this._tangents.length/3:this._uvs?this._uvs.length/2:this._uv2s?this._uv2s.length/2:this._colors?this._colors.length/4:0}setPositions(e){let t=this.hasPositions;this._positions=e,t!==this.hasPositions&&this._onDataLayoutChanged.notifyObservers(void 0)}getPositions(){return this._positions}setNormals(e){let t=this.hasNormals;this._normals=e,t!==this.hasNormals&&this._onDataLayoutChanged.notifyObservers(void 0)}getNormals(){return this._normals}setTangents(e){let t=this.hasTangents;this._tangents=e,t!==this.hasTangents&&this._onDataLayoutChanged.notifyObservers(void 0)}getTangents(){return this._tangents}setUVs(e){let t=this.hasUVs;this._uvs=e,t!==this.hasUVs&&this._onDataLayoutChanged.notifyObservers(void 0)}getUVs(){return this._uvs}setUV2s(e){let t=this.hasUV2s;this._uv2s=e,t!==this.hasUV2s&&this._onDataLayoutChanged.notifyObservers(void 0)}getUV2s(){return this._uv2s}setColors(e){let t=this.hasColors;this._colors=e,t!==this.hasColors&&this._onDataLayoutChanged.notifyObservers(void 0)}getColors(){return this._colors}clone(){let e=it.Clone(()=>new n(this.name,this.influence,this._scene,this.morphTargetManager),this);return e._positions=this._positions,e._normals=this._normals,e._tangents=this._tangents,e._uvs=this._uvs,e._uv2s=this._uv2s,e._colors=this._colors,e}serialize(){let e={};return e.name=this.name,e.influence=this.influence,this.id!=null&&(e.id=this.id),e.uniqueId=this.uniqueId,e.positions=Array.prototype.slice.call(this.getPositions()),this.hasNormals&&(e.normals=Array.prototype.slice.call(this.getNormals())),this.hasTangents&&(e.tangents=Array.prototype.slice.call(this.getTangents())),this.hasUVs&&(e.uvs=Array.prototype.slice.call(this.getUVs())),this.hasUV2s&&(e.uv2s=Array.prototype.slice.call(this.getUV2s())),this.hasColors&&(e.colors=Array.prototype.slice.call(this.getColors())),it.AppendSerializedAnimations(this,e),e}getClassName(){return"MorphTarget"}static Parse(e,t,i=null){let r=new n(e.name,e.influence,t,i);if(r.setPositions(e.positions),e.id!=null&&(r.id=e.id),e.normals&&r.setNormals(e.normals),e.tangents&&r.setTangents(e.tangents),e.uvs&&r.setUVs(e.uvs),e.uv2s&&r.setUV2s(e.uv2s),e.colors&&r.setColors(e.colors),e.animations){for(let s=0;s{Gr();gb=class n extends ge{get depth(){return this._depth}constructor(e,t,i,r,s,a,o=!0,l=!1,c=ge.TRILINEAR_SAMPLINGMODE,f=0,d,h){super(null,a,!o,l),this.format=s,this._texture=a.getEngine().createRawTexture2DArray(e,t,i,r,s,o,l,c,null,f,d!=null?d:0,h),this._depth=r,this.is2DArray=!0}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._texture&&this._getEngine().updateRawTexture2DArray(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,t)}static CreateRGBATexture(e,t,i,r,s,a=!0,o=!1,l=3,c=0){return new n(e,t,i,r,5,s,a,o,l,c)}}});var Lh,R8=I(()=>{So();Pt();Ni();SO();x8();Lh=class n{set areUpdatesFrozen(e){e?this._blockCounter++:(this._blockCounter--,this._blockCounter<=0&&(this._blockCounter=0,this._syncActiveTargets(this._forceUpdateWhenUnfrozen),this._forceUpdateWhenUnfrozen=!1))}get areUpdatesFrozen(){return this._blockCounter>0}constructor(e=null,t){if(this.meshName=t,this._targets=new Array,this._targetInfluenceChangedObservers=new Array,this._targetDataLayoutChangedObservers=new Array,this._activeTargets=new Vi(16),this._supportsPositions=!1,this._supportsNormals=!1,this._supportsTangents=!1,this._supportsUVs=!1,this._supportsUV2s=!1,this._supportsColors=!1,this._vertexCount=0,this._uniqueId=0,this._tempInfluences=new Array,this._canUseTextureForTargets=!1,this._blockCounter=0,this._mustSynchronize=!0,this._forceUpdateWhenUnfrozen=!1,this._textureVertexStride=0,this._textureWidth=0,this._textureHeight=1,this._parentContainer=null,this.optimizeInfluencers=!0,this.enablePositionMorphing=!0,this.enableNormalMorphing=!0,this.enableTangentMorphing=!0,this.enableUVMorphing=!0,this.enableUV2Morphing=!0,this.enableColorMorphing=!0,this._numMaxInfluencers=0,this._useTextureToStoreTargets=!0,this.metadata=null,this._influencesAreDirty=!1,this._needUpdateInfluences=!1,e||(e=Oe.LastCreatedScene),this._scene=e,this._scene){this._scene.addMorphTargetManager(this),this._uniqueId=this._scene.getUniqueId();let i=this._scene.getEngine().getCaps();this._canUseTextureForTargets=i.canUseGLVertexID&&i.textureFloat&&i.maxVertexTextureImageUnits>0&&i.texture2DArrayMaxLayerCount>1}}get numMaxInfluencers(){return n.ConstantTargetCountForTextureMode>0&&this.isUsingTextureForTargets?n.ConstantTargetCountForTextureMode:this._numMaxInfluencers}set numMaxInfluencers(e){this._numMaxInfluencers!==e&&(this._numMaxInfluencers=e,this._mustSynchronize=!0,this._syncActiveTargets())}get uniqueId(){return this._uniqueId}get vertexCount(){return this._vertexCount}get supportsPositions(){return this._supportsPositions&&this.enablePositionMorphing}get supportsNormals(){return this._supportsNormals&&this.enableNormalMorphing}get supportsTangents(){return this._supportsTangents&&this.enableTangentMorphing}get supportsUVs(){return this._supportsUVs&&this.enableUVMorphing}get supportsUV2s(){return this._supportsUV2s&&this.enableUV2Morphing}get supportsColors(){return this._supportsColors&&this.enableColorMorphing}get hasPositions(){return this._supportsPositions}get hasNormals(){return this._supportsNormals}get hasTangents(){return this._supportsTangents}get hasUVs(){return this._supportsUVs}get hasUV2s(){return this._supportsUV2s}get hasColors(){return this._supportsColors}get numTargets(){return this._targets.length}get numInfluencers(){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.length}get influences(){return this._influencesAreDirty&&this._syncActiveTargets(),this._influences}get useTextureToStoreTargets(){return this._useTextureToStoreTargets}set useTextureToStoreTargets(e){this._useTextureToStoreTargets!==e&&(this._useTextureToStoreTargets=e,this._mustSynchronize=!0,this._syncActiveTargets())}get isUsingTextureForTargets(){var e;return n.EnableTextureStorage&&this.useTextureToStoreTargets&&this._canUseTextureForTargets&&!((e=this._scene)!=null&&e.getEngine().getCaps().disableMorphTargetTexture)}getActiveTarget(e){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.data[e]}getTarget(e){return this._targets[e]}getTargetByName(e){for(let t of this._targets)if(t.name===e)return t;return null}addTarget(e){this._targets.push(e),this._targetInfluenceChangedObservers.push(e.onInfluenceChanged.add(t=>{this.areUpdatesFrozen&&t&&(this._forceUpdateWhenUnfrozen=!0),this._influencesAreDirty=!0,this._needUpdateInfluences=this._needUpdateInfluences||t})),this._targetDataLayoutChangedObservers.push(e._onDataLayoutChanged.add(()=>{this._mustSynchronize=!0,this._syncActiveTargets()})),this._mustSynchronize=!0,this._syncActiveTargets()}removeTarget(e){let t=this._targets.indexOf(e);t>=0&&(this._targets.splice(t,1),e.onInfluenceChanged.remove(this._targetInfluenceChangedObservers.splice(t,1)[0]),e._onDataLayoutChanged.remove(this._targetDataLayoutChangedObservers.splice(t,1)[0]),this._mustSynchronize=!0,this._syncActiveTargets()),this._scene&&this._scene.stopAnimation(e)}_bind(e){this._influencesAreDirty&&this._syncActiveTargets(),e.setFloat3("morphTargetTextureInfo",this._textureVertexStride,this._textureWidth,this._textureHeight),e.setFloatArray("morphTargetTextureIndices",this._morphTargetTextureIndices),e.setTexture("morphTargets",this._targetStoreTexture),e.setFloat("morphTargetCount",this.numInfluencers)}clone(){let e=new n(this._scene);e.areUpdatesFrozen=!0;for(let t of this._targets)e.addTarget(t.clone());return e.areUpdatesFrozen=!1,e.enablePositionMorphing=this.enablePositionMorphing,e.enableNormalMorphing=this.enableNormalMorphing,e.enableTangentMorphing=this.enableTangentMorphing,e.enableUVMorphing=this.enableUVMorphing,e.enableUV2Morphing=this.enableUV2Morphing,e.enableColorMorphing=this.enableColorMorphing,e.metadata=this.metadata,e}serialize(){let e={};e.id=this.uniqueId,e.meshName=this.meshName,e.targets=[];for(let t of this._targets)e.targets.push(t.serialize());return this.metadata&&(e.metadata=this.metadata),e}_syncActiveTargets(e=!1){if(this.areUpdatesFrozen)return;e=e||this._needUpdateInfluences,this._needUpdateInfluences=!1,this._influencesAreDirty=!1;let t=!!this._targetStoreTexture,i=this.isUsingTextureForTargets;(this._mustSynchronize||t!==i)&&(this._mustSynchronize=!1,this.synchronize());let r=0;this._activeTargets.reset(),(!this._morphTargetTextureIndices||this._morphTargetTextureIndices.length!==this._targets.length)&&(this._morphTargetTextureIndices=new Float32Array(this._targets.length));let s=-1;for(let a of this._targets)if(s++,!(a.influence===0&&this.optimizeInfluencers)){if(this._activeTargets.length>=n.MaxActiveMorphTargetsInVertexAttributeMode&&!this.isUsingTextureForTargets)break;this._activeTargets.push(a),this._morphTargetTextureIndices[r]=s,this._tempInfluences[r++]=a.influence}this._morphTargetTextureIndices.length!==r&&(this._morphTargetTextureIndices=this._morphTargetTextureIndices.slice(0,r)),(!this._influences||this._influences.length!==r)&&(this._influences=new Float32Array(r));for(let a=0;ae.getCaps().texture2DArrayMaxLayerCount&&(this.useTextureToStoreTargets=!1);for(let i of this._targets){this._supportsPositions=this._supportsPositions&&i.hasPositions,this._supportsNormals=this._supportsNormals&&i.hasNormals,this._supportsTangents=this._supportsTangents&&i.hasTangents,this._supportsUVs=this._supportsUVs&&i.hasUVs,this._supportsUV2s=this._supportsUV2s&&i.hasUV2s,this._supportsColors=this._supportsColors&&i.hasColors;let r=i.vertexCount;if(this._vertexCount===0)this._vertexCount=r;else if(this._vertexCount!==r){ee.Error(`Incompatible target. Targets must all have the same vertices count. Current vertex count: ${this._vertexCount}, vertex count for target "${i.name}": ${r}`);return}}if(this.isUsingTextureForTargets){this._textureVertexStride=0,this._supportsPositions&&this._textureVertexStride++,this._supportsNormals&&this._textureVertexStride++,this._supportsTangents&&this._textureVertexStride++,this._supportsUVs&&this._textureVertexStride++,this._supportsUV2s&&this._textureVertexStride++,this._supportsColors&&this._textureVertexStride++,this._textureWidth=this._vertexCount*this._textureVertexStride||1,this._textureHeight=1;let i=e.getCaps().maxTextureSize;this._textureWidth>i&&(this._textureHeight=Math.ceil(this._textureWidth/i),this._textureWidth=i);let r=this._targets.length,s=new Float32Array(r*this._textureWidth*this._textureHeight*4),a;for(let o=0;o-1&&this._parentContainer.morphTargetManagers.splice(e,1),this._parentContainer=null}for(let e of this._targets)this._scene.stopAnimation(e)}}static Parse(e,t){let i=new n(t);for(let r of e.targets)i.addTarget(rd.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};Lh.EnableTextureStorage=!0;Lh.MaxActiveMorphTargetsInVertexAttributeMode=8;Lh.ConstantTargetCountForTextureMode=0});function vb(n,e,t){vv(n)&&ee.Warn(`Extension with the name '${n}' already exists`),TO.set(n,{isGLTFExtension:e,factory:t})}function vv(n){return TO.delete(n)}var TO,b8,AO=I(()=>{Pt();TO=new Map,b8=TO});var W,xO=I(()=>{W=class{};W.AUTOSAMPLERSUFFIX="Sampler";W.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";W.ALPHA_DISABLE=0;W.ALPHA_ADD=1;W.ALPHA_COMBINE=2;W.ALPHA_SUBTRACT=3;W.ALPHA_MULTIPLY=4;W.ALPHA_MAXIMIZED=5;W.ALPHA_ONEONE=6;W.ALPHA_PREMULTIPLIED=7;W.ALPHA_PREMULTIPLIED_PORTERDUFF=8;W.ALPHA_INTERPOLATE=9;W.ALPHA_SCREENMODE=10;W.ALPHA_ONEONE_ONEONE=11;W.ALPHA_ALPHATOCOLOR=12;W.ALPHA_REVERSEONEMINUS=13;W.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;W.ALPHA_ONEONE_ONEZERO=15;W.ALPHA_EXCLUSION=16;W.ALPHA_LAYER_ACCUMULATE=17;W.ALPHA_MIN=18;W.ALPHA_MAX=19;W.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;W.ALPHA_EQUATION_ADD=0;W.ALPHA_EQUATION_SUBSTRACT=1;W.ALPHA_EQUATION_REVERSE_SUBTRACT=2;W.ALPHA_EQUATION_MAX=3;W.ALPHA_EQUATION_MIN=4;W.ALPHA_EQUATION_DARKEN=5;W.DELAYLOADSTATE_NONE=0;W.DELAYLOADSTATE_LOADED=1;W.DELAYLOADSTATE_LOADING=2;W.DELAYLOADSTATE_NOTLOADED=4;W.NEVER=512;W.ALWAYS=519;W.LESS=513;W.EQUAL=514;W.LEQUAL=515;W.GREATER=516;W.GEQUAL=518;W.NOTEQUAL=517;W.KEEP=7680;W.ZERO=0;W.REPLACE=7681;W.INCR=7682;W.DECR=7683;W.INVERT=5386;W.INCR_WRAP=34055;W.DECR_WRAP=34056;W.TEXTURE_CLAMP_ADDRESSMODE=0;W.TEXTURE_WRAP_ADDRESSMODE=1;W.TEXTURE_MIRROR_ADDRESSMODE=2;W.TEXTURE_CREATIONFLAG_STORAGE=1;W.TEXTUREFORMAT_ALPHA=0;W.TEXTUREFORMAT_LUMINANCE=1;W.TEXTUREFORMAT_LUMINANCE_ALPHA=2;W.TEXTUREFORMAT_RGB=4;W.TEXTUREFORMAT_RGBA=5;W.TEXTUREFORMAT_RED=6;W.TEXTUREFORMAT_R=6;W.TEXTUREFORMAT_R16_UNORM=33322;W.TEXTUREFORMAT_RG16_UNORM=33324;W.TEXTUREFORMAT_RGB16_UNORM=32852;W.TEXTUREFORMAT_RGBA16_UNORM=32859;W.TEXTUREFORMAT_R16_SNORM=36760;W.TEXTUREFORMAT_RG16_SNORM=36761;W.TEXTUREFORMAT_RGB16_SNORM=36762;W.TEXTUREFORMAT_RGBA16_SNORM=36763;W.TEXTUREFORMAT_RG=7;W.TEXTUREFORMAT_RED_INTEGER=8;W.TEXTUREFORMAT_R_INTEGER=8;W.TEXTUREFORMAT_RG_INTEGER=9;W.TEXTUREFORMAT_RGB_INTEGER=10;W.TEXTUREFORMAT_RGBA_INTEGER=11;W.TEXTUREFORMAT_BGRA=12;W.TEXTUREFORMAT_DEPTH24_STENCIL8=13;W.TEXTUREFORMAT_DEPTH32_FLOAT=14;W.TEXTUREFORMAT_DEPTH16=15;W.TEXTUREFORMAT_DEPTH24=16;W.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;W.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;W.TEXTUREFORMAT_STENCIL8=19;W.TEXTUREFORMAT_UNDEFINED=4294967295;W.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;W.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;W.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;W.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;W.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;W.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;W.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;W.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;W.TEXTURETYPE_UNSIGNED_BYTE=0;W.TEXTURETYPE_UNSIGNED_INT=0;W.TEXTURETYPE_FLOAT=1;W.TEXTURETYPE_HALF_FLOAT=2;W.TEXTURETYPE_BYTE=3;W.TEXTURETYPE_SHORT=4;W.TEXTURETYPE_UNSIGNED_SHORT=5;W.TEXTURETYPE_INT=6;W.TEXTURETYPE_UNSIGNED_INTEGER=7;W.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;W.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;W.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;W.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;W.TEXTURETYPE_UNSIGNED_INT_24_8=12;W.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;W.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;W.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;W.TEXTURETYPE_UNDEFINED=16;W.TEXTURE_2D=3553;W.TEXTURE_2D_ARRAY=35866;W.TEXTURE_CUBE_MAP=34067;W.TEXTURE_CUBE_MAP_ARRAY=3735928559;W.TEXTURE_3D=32879;W.TEXTURE_NEAREST_SAMPLINGMODE=1;W.TEXTURE_NEAREST_NEAREST=1;W.TEXTURE_BILINEAR_SAMPLINGMODE=2;W.TEXTURE_LINEAR_LINEAR=2;W.TEXTURE_TRILINEAR_SAMPLINGMODE=3;W.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;W.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;W.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;W.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;W.TEXTURE_NEAREST_LINEAR=7;W.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;W.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;W.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;W.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;W.TEXTURE_LINEAR_NEAREST=12;W.TEXTURE_EXPLICIT_MODE=0;W.TEXTURE_SPHERICAL_MODE=1;W.TEXTURE_PLANAR_MODE=2;W.TEXTURE_CUBIC_MODE=3;W.TEXTURE_PROJECTION_MODE=4;W.TEXTURE_SKYBOX_MODE=5;W.TEXTURE_INVCUBIC_MODE=6;W.TEXTURE_EQUIRECTANGULAR_MODE=7;W.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;W.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;W.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;W.TEXTURE_FILTERING_QUALITY_HIGH=64;W.TEXTURE_FILTERING_QUALITY_MEDIUM=16;W.TEXTURE_FILTERING_QUALITY_LOW=8;W.SCALEMODE_FLOOR=1;W.SCALEMODE_NEAREST=2;W.SCALEMODE_CEILING=3;W.MATERIAL_TextureDirtyFlag=1;W.MATERIAL_LightDirtyFlag=2;W.MATERIAL_FresnelDirtyFlag=4;W.MATERIAL_AttributesDirtyFlag=8;W.MATERIAL_MiscDirtyFlag=16;W.MATERIAL_PrePassDirtyFlag=32;W.MATERIAL_ImageProcessingDirtyFlag=64;W.MATERIAL_AllDirtyFlag=127;W.MATERIAL_TriangleFillMode=0;W.MATERIAL_WireFrameFillMode=1;W.MATERIAL_PointFillMode=2;W.MATERIAL_PointListDrawMode=3;W.MATERIAL_LineListDrawMode=4;W.MATERIAL_LineLoopDrawMode=5;W.MATERIAL_LineStripDrawMode=6;W.MATERIAL_TriangleStripDrawMode=7;W.MATERIAL_TriangleFanDrawMode=8;W.MATERIAL_ClockWiseSideOrientation=0;W.MATERIAL_CounterClockWiseSideOrientation=1;W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;W.MATERIAL_DIFFUSE_MODEL_BURLEY=1;W.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;W.MATERIAL_DIFFUSE_MODEL_LEGACY=3;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;W.ACTION_NothingTrigger=0;W.ACTION_OnPickTrigger=1;W.ACTION_OnLeftPickTrigger=2;W.ACTION_OnRightPickTrigger=3;W.ACTION_OnCenterPickTrigger=4;W.ACTION_OnPickDownTrigger=5;W.ACTION_OnDoublePickTrigger=6;W.ACTION_OnPickUpTrigger=7;W.ACTION_OnPickOutTrigger=16;W.ACTION_OnLongPressTrigger=8;W.ACTION_OnPointerOverTrigger=9;W.ACTION_OnPointerOutTrigger=10;W.ACTION_OnEveryFrameTrigger=11;W.ACTION_OnIntersectionEnterTrigger=12;W.ACTION_OnIntersectionExitTrigger=13;W.ACTION_OnKeyDownTrigger=14;W.ACTION_OnKeyUpTrigger=15;W.PARTICLES_BILLBOARDMODE_Y=2;W.PARTICLES_BILLBOARDMODE_ALL=7;W.PARTICLES_BILLBOARDMODE_STRETCHED=8;W.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;W.MESHES_CULLINGSTRATEGY_STANDARD=0;W.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;W.SCENELOADER_NO_LOGGING=0;W.SCENELOADER_MINIMAL_LOGGING=1;W.SCENELOADER_SUMMARY_LOGGING=2;W.SCENELOADER_DETAILED_LOGGING=3;W.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;W.PREPASS_POSITION_TEXTURE_TYPE=1;W.PREPASS_VELOCITY_TEXTURE_TYPE=2;W.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;W.PREPASS_COLOR_TEXTURE_TYPE=4;W.PREPASS_DEPTH_TEXTURE_TYPE=5;W.PREPASS_NORMAL_TEXTURE_TYPE=6;W.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;W.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;W.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;W.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;W.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;W.PREPASS_ALBEDO_TEXTURE_TYPE=12;W.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;W.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;W.BUFFER_CREATIONFLAG_READ=1;W.BUFFER_CREATIONFLAG_WRITE=2;W.BUFFER_CREATIONFLAG_READWRITE=3;W.BUFFER_CREATIONFLAG_UNIFORM=4;W.BUFFER_CREATIONFLAG_VERTEX=8;W.BUFFER_CREATIONFLAG_INDEX=16;W.BUFFER_CREATIONFLAG_STORAGE=32;W.BUFFER_CREATIONFLAG_INDIRECT=64;W.RENDERPASS_MAIN=0;W.INPUT_ALT_KEY=18;W.INPUT_CTRL_KEY=17;W.INPUT_META_KEY1=91;W.INPUT_META_KEY2=92;W.INPUT_META_KEY3=93;W.INPUT_SHIFT_KEY=16;W.SNAPSHOTRENDERING_STANDARD=0;W.SNAPSHOTRENDERING_FAST=1;W.PERSPECTIVE_CAMERA=0;W.ORTHOGRAPHIC_CAMERA=1;W.FOVMODE_VERTICAL_FIXED=0;W.FOVMODE_HORIZONTAL_FIXED=1;W.RIG_MODE_NONE=0;W.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;W.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;W.RIG_MODE_STEREOSCOPIC_INTERLACED=14;W.RIG_MODE_VR=20;W.RIG_MODE_CUSTOM=22;W.MAX_SUPPORTED_UV_SETS=6;W.GL_ALPHA_EQUATION_ADD=32774;W.GL_ALPHA_EQUATION_MIN=32775;W.GL_ALPHA_EQUATION_MAX=32776;W.GL_ALPHA_EQUATION_SUBTRACT=32778;W.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;W.GL_ALPHA_FUNCTION_SRC=768;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;W.GL_ALPHA_FUNCTION_SRC_ALPHA=770;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;W.GL_ALPHA_FUNCTION_DST_ALPHA=772;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;W.GL_ALPHA_FUNCTION_DST_COLOR=774;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;W.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;W.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;W.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;W.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;W.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;W.SnippetUrl="https://snippet.babylonjs.com";W.FOGMODE_NONE=0;W.FOGMODE_EXP=1;W.FOGMODE_EXP2=2;W.FOGMODE_LINEAR=3;W.BYTE=5120;W.UNSIGNED_BYTE=5121;W.SHORT=5122;W.UNSIGNED_SHORT=5123;W.INT=5124;W.UNSIGNED_INT=5125;W.FLOAT=5126;W.PositionKind="position";W.NormalKind="normal";W.TangentKind="tangent";W.UVKind="uv";W.UV2Kind="uv2";W.UV3Kind="uv3";W.UV4Kind="uv4";W.UV5Kind="uv5";W.UV6Kind="uv6";W.ColorKind="color";W.ColorInstanceKind="instanceColor";W.MatricesIndicesKind="matricesIndices";W.MatricesWeightsKind="matricesWeights";W.MatricesIndicesExtraKind="matricesIndicesExtra";W.MatricesWeightsExtraKind="matricesWeightsExtra";W.ANIMATIONTYPE_FLOAT=0;W.ANIMATIONTYPE_VECTOR3=1;W.ANIMATIONTYPE_QUATERNION=2;W.ANIMATIONTYPE_MATRIX=3;W.ANIMATIONTYPE_COLOR3=4;W.ANIMATIONTYPE_COLOR4=7;W.ANIMATIONTYPE_VECTOR2=5;W.ANIMATIONTYPE_SIZE=6;W.ShadowMinZ=0;W.ShadowMaxZ=1e4;W.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;W.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var tet,M8=I(()=>{tet=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function nd(n,e,t,i){let r=at(n,e);return i?r[t][i]:r[t]}function at(n,e,t){var i,r,s;return(s=(r=n._data)==null?void 0:r[(i=t==null?void 0:t.fillMode)!=null?i:W.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function on(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=nd(t,r,n,e);return new Fe(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:at,set:(t,i,r,s)=>{let a=nd(i,s,n,e);a.uOffset=t.x,a.vOffset=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uOffset`,()=>`${n}${e?"."+e:""}.vOffset`]},rotation:{type:"number",get:(t,i,r)=>{var s;return(s=nd(t,r,n,e))==null?void 0:s.wAng},getTarget:at,set:(t,i,r,s)=>nd(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=nd(t,r,n,e);return new Fe(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:at,set:(t,i,r,s)=>{let a=nd(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function Ev(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=I8;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function Sv(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=I8;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var Zue,Que,$ue,Jue,eme,tme,I8,RO=I(()=>{ke();xO();Ht();ED();M8();Zue={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTransformNode),getPropertyName:[()=>"length"]},__array__:{__target__:!0,translation:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.position},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.position.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.rotationQuaternion},set:(n,e)=>{var t,i;return(i=(t=e._babylonTransformNode)==null?void 0:t.rotationQuaternion)==null?void 0:i.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.scaling},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.scaling.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{length:{type:"number",get:n=>n._numMorphTargets,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},__array__:{__target__:!0,type:"number",get:(n,e)=>{var t,i;return e!==void 0?(i=(t=n._primitiveBabylonMeshes)==null?void 0:t[0].morphTargetManager)==null?void 0:i.getTarget(e).influence:void 0},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},type:"number[]",get:(n,e)=>[0],getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:n=>{var e,t,i;return q.Compose((e=n._babylonTransformNode)==null?void 0:e.scaling,(t=n._babylonTransformNode)==null?void 0:t.rotationQuaternion,(i=n._babylonTransformNode)==null?void 0:i.position)},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:n=>{var r,s,a,o,l,c,f;let e=q.Identity(),t=n.parent;for(;t&&t.parent;)t=t.parent;let i=((r=n._babylonTransformNode)==null?void 0:r.position._isDirty)||((a=(s=n._babylonTransformNode)==null?void 0:s.rotationQuaternion)==null?void 0:a._isDirty)||((o=n._babylonTransformNode)==null?void 0:o.scaling._isDirty);if(t){let d=(l=t._babylonTransformNode)==null?void 0:l.computeWorldMatrix(!0).invert();d&&((f=(c=n._babylonTransformNode)==null?void 0:c.computeWorldMatrix(i))==null||f.multiplyToRef(d,e))}else n._babylonTransformNode&&e.copyFrom(n._babylonTransformNode.computeWorldMatrix(i));return e},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Wr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Wr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Wr,!0)[0];t&&(t.intensity=n)}}},color:{type:"Color3",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Wr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Wr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Wr,!0)[0];t&&(t.diffuse=n)}}}},KHR_node_visibility:{visible:{type:"boolean",get:n=>n._primitiveBabylonMeshes?n._primitiveBabylonMeshes[0].isVisible:!1,getTarget:()=>{},set:(n,e)=>{e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.forEach(t=>t.isVisible=n)}}}}}},Que={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},$ue={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>{var t;return(t=e.primitives[0]._instanceData)==null?void 0:t.babylonSourceMesh}),getPropertyName:[()=>"length"]},__array__:{}},Jue={__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new Fe((t=(e=n._babylonCamera)==null?void 0:e.orthoLeft)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoRight)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoLeft=n.x,e._babylonCamera.orthoRight=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new Fe((t=(e=n._babylonCamera)==null?void 0:e.orthoBottom)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoTop)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoBottom=n.x,e._babylonCamera.orthoTop=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.getEngine().getAspectRatio(n._babylonCamera)},getTarget:n=>n,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.fov},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.fov=n)},getTarget:n=>n,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}}}},eme={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).emissiveColor,set:(n,e,t,i)=>at(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:on("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=nd(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=nd(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:on("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>at(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:on("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=at(n,e,t);return lt.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=at(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:on("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>at(n,e,t).metallic,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).roughness,set:(n,e,t,i)=>{let r=at(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:on("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>at(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{at(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>at(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{at(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:on("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>at(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{at(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{at(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>at(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:on("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=at(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:at,set:(n,e,t,i)=>at(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:on("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:on("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.dispersion,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>at(n,e,t).emissiveIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>at(n,e,t).indexOfRefraction,getTarget:at,set:(n,e,t,i)=>at(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.intensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.indexOfRefraction,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:on("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.maximumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>at(n,e,t).iridescence.minimumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:on("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).sheen.color,getTarget:at,set:(n,e,t,i)=>at(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:on("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).sheen.intensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:on("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>at(n,e,t).metallicF0Factor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).metallicReflectanceColor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:on("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:on("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.refractionIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:on("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.translucencyIntensity,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:on("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>at(n,e,t).subSurface.translucencyColor,getTarget:at,set:(n,e,t,i)=>{var r;return n&&((r=at(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:on("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>at(n,e,t).subSurface.tintColor,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.tintColorAtDistance,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>at(n,e,t).subSurface.maximumThickness,getTarget:at,set:(n,e,t,i)=>at(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:on("subSurface","thicknessTexture")}}}}}},tme={KHR_lights_punctual:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},range:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.range},set:(n,e)=>e._babylonLight?e._babylonLight.range=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"range"]},spot:{innerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.innerAngle},set:(n,e)=>e._babylonLight?e._babylonLight.innerAngle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"innerConeAngle"]},outerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.angle},set:(n,e)=>e._babylonLight?e._babylonLight.angle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},size:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.height},set:(n,e)=>e._babylonLight?e._babylonLight.height=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"size"]},rect:{aspect:{type:"number",get:n=>{var e,t;return((e=n._babylonLight)==null?void 0:e.width)/((t=n._babylonLight)==null?void 0:t.height)},set:(n,e)=>e._babylonLight?e._babylonLight.width=n*e._babylonLight.height:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]}}},EXT_lights_image_based:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTexture),getPropertyName:[n=>"length"]},__array__:{__target__:!0,intensity:{type:"number",get:n=>{var e;return(e=n._babylonTexture)==null?void 0:e.level},set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.level=n)},getTarget:n=>n._babylonTexture},rotation:{type:"Quaternion",get:n=>{var e;return n._babylonTexture&&Xe.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=Xe.Inverse(n)),q.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};I8={cameras:Jue,nodes:Zue,materials:eme,extensions:tme,animations:Que,meshes:$ue}});function bO(...n){let e=t=>!!t&&typeof t=="object";return n.reduce((t,i)=>{let r=Object.keys(i);for(let s of r){let a=t[s],o=i[s];Array.isArray(a)&&Array.isArray(o)?t[s]=a.concat(...o):e(a)&&e(o)?t[s]=bO(a,o):t[s]=o}return t},{})}var y8=I(()=>{});var Tv,C8=I(()=>{Tv=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var Eb,P8=I(()=>{ke();wf();Eb=class{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,r){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=r,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===dt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=q.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){let a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(let o of this._target)this._preparePath(o,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];let s=t.getEvents();if(s&&s.length>0)for(let a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){let i=this._animation.targetPropertyPath;if(i.length>1){let r=e;for(let s=0;s-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;ii[i.length-1].frame&&(e=i[i.length-1].frame);let r=this._events;if(r.length)for(let a=0;athis._maxFrame)&&(t=this._minFrame),(ithis._maxFrame)&&(i=this._maxFrame),h=i-t;let m,_=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,g=!1,v=r&&this._animationState.loopMode===dt.ANIMATIONLOOPMODE_YOYO;if(v){let x=(_-t)/h,S=Math.sin(x*Math.PI);_=Math.abs(S)*h+t;let T=S>=0?1:-1;this._yoyoDirection!==T&&(g=!0),this._yoyoDirection=T}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=_,!r&&i>=t&&(_>=h&&s>0||_<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(_<=h&&s<0||_>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==dt.ANIMATIONLOOPMODE_CYCLE){let x=i.toString()+t.toString();if(!this._offsetsCache[x]){this._animationState.repeatCount=0,this._animationState.loopMode=dt.ANIMATIONLOOPMODE_CYCLE;let S=o._interpolate(t,this._animationState),E=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case dt.ANIMATIONTYPE_FLOAT:this._offsetsCache[x]=E-S;break;case dt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_SIZE:this._offsetsCache[x]=E.subtract(S);break;case dt.ANIMATIONTYPE_COLOR3:this._offsetsCache[x]=E.subtract(S);break;default:break}this._highLimitsCache[x]=E}p=this._highLimitsCache[x],m=this._offsetsCache[x]}if(m===void 0)switch(o.dataType){case dt.ANIMATIONTYPE_FLOAT:m=0;break;case dt.ANIMATIONTYPE_QUATERNION:m=dD;break;case dt.ANIMATIONTYPE_VECTOR3:m=hD;break;case dt.ANIMATIONTYPE_VECTOR2:m=uD;break;case dt.ANIMATIONTYPE_SIZE:m=mD;break;case dt.ANIMATIONTYPE_COLOR3:m=pD;break;case dt.ANIMATIONTYPE_COLOR4:m=_D;break}if(this._host&&this._host.syncRoot){let x=this._host.syncRoot,S=(x.masterFrame-x.fromFrame)/(x.toFrame-x.fromFrame);f=t+h*S}else _>0&&t>i||_<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=h===0?0:_/h>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let u=o._interpolate(f,this._animationState);if(this.setValue(u,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||h<0&&f<=d[m].frame&&d[m].frame<=t){let _=d[m];_.isDone||(_.onlyOnce&&(d.splice(m,1),m--),_.isDone=!0,_.action(f))}}return c||(this._stopped=!0),c}}});function ime(n){if(n.totalWeight===0&&n.totalAdditiveWeight===0)return n.originalValue;let e=1,t=$.Vector3[0],i=$.Vector3[1],r=$.Quaternion[0],s=0,a=n.animations[0],o=n.originalValue,l,c=!1;if(n.totalWeight<1)l=1-n.totalWeight,o.decompose(i,r,t);else{if(s=1,e=n.totalWeight,l=a.weight/e,l==1)if(n.totalAdditiveWeight)c=!0;else return a.currentValue;a.currentValue.decompose(i,r,t)}if(!c){i.scaleInPlace(l),t.scaleInPlace(l),r.scaleInPlace(l);for(let d=s;d0?l:-l,r),u.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(Xe.SlerpToRef(i,t.currentValue,Math.min(1,n.totalWeight),r),n.totalAdditiveWeight===0)return r}else if(n.animations.length>1){let s=1,a,o;if(n.totalWeight<1){let c=1-n.totalWeight;a=[],o=[],a.push(i),o.push(c)}else{if(n.animations.length===2&&(Xe.SlerpToRef(n.animations[0].currentValue,n.animations[1].currentValue,n.animations[1].weight/n.totalWeight,e),n.totalAdditiveWeight===0))return e;a=[],o=[],s=n.totalWeight}for(let c=0;c=l&&v.frame<=c&&(s?(S=v.value.clone(),m?(x=S.getTranslation(),S.setTranslation(x.scaleInPlace(_))):p&&a?(x=S.getTranslation(),S.setTranslation(x.multiplyInPlace(a))):S=v.value):S=v.value,g.push({frame:v.frame+r,value:S}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=Er.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;let r=this._activeAnimatables;if(r.length===0)return;this._animationTime+=this.deltaTime;let s=this._animationTime;for(let a=0;at.playOrder-i.playOrder)},n.prototype.beginWeightedAnimation=function(t,i,r,s=1,a,o=1,l,c,f,d,h=!1){let u=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,h);return u.weight=s,u},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,h=!1){if(a<0){let m=i;i=r,r=m,a=-a}i>r&&(a=-a),c&&this.stopAnimation(t,void 0,f),l||(l=new Av(this,t,i,r,s,a,o,void 0,d,h));let u=f?f(t):!0;if(t.animations&&u&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let _=0;_s&&(o=-o),new Av(this,t,r,s,a,o,l,i,c,f)},n.prototype.beginDirectHierarchyAnimation=function(t,i,r,s,a,o,l,c,f,d=!1){let h=t.getDescendants(i),u=[];u.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of h)u.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return u},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{hi();P8();wf();Yl();ke();Av=class n{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){let t=this._runtimeAnimations;for(let i=0;i-1){let a=this._runtimeAnimations;for(let o=a.length-1;o>=0;o--){let l=a[o];e&&l.animation.name!=e||t&&!t(l.target)||(l.dispose(),a.splice(o,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),r||this._raiseOnAnimationEnd())}}else{let s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);let a=this._runtimeAnimations;for(let o=0;o{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!n.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1,i=this._runtimeAnimations,r;for(r=0;r{pb();MO();Bs();MO();D8(ei,Ha)});var O8={};Be(O8,{AnimationGroup:()=>IO,TargetedAnimation:()=>Sb});var Sb,IO,N8=I(()=>{wf();hi();Ni();Sf();L8();vx();Sb=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=lc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},IO=class n{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t0)){for(let t=0;ta&&(a=l.to);let o=new n(e[0].name+"_merged",e[0]._scene,r);for(let l of e){i&&l.normalize(s,a);for(let c of l.targetedAnimations)o.addTargetedAnimation(c.animation,c.target);t&&l.dispose()}return o}getScene(){return this._scene}constructor(e,t=null,i=-1,r=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new ie,this.onAnimationLoopObservable=new ie,this.onAnimationGroupLoopObservable=new ie,this.onAnimationGroupEndObservable=new ie,this.onAnimationGroupPauseObservable=new ie,this.onAnimationGroupPlayObservable=new ie,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||Oe.LastCreatedScene,this._weight=i,this._playOrder=r,this.uniqueId=this._scene.getUniqueId(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){let i=new Sb(this);i.animation=e,i.target=t;let r=e.getKeys();return this._from>r[0].frame&&(this._from=r[0].frame),this._to-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;ie){let l={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,l)}if(o.frame{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,r,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a{this.onAnimationEndObservable.notifyObservers(o),this._checkAnimationGroupEnded(l)},this._processLoop(l,o,a),this._animatables.push(l)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){let i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,r=!1){let s=new n(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(let a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(r):a.animation,t?t(a.target):a.target);return s}serialize(){let e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t_[0].frame&&(c=_[0].frame),f<_[_.length-1].frame&&(f=_[_.length-1].frame)}o._from=c,o._to=f}return o}static ClipKeys(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipKeysInPlace(a,t,i,s)}static ClipKeysInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!1)}static ClipFrames(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipFramesInPlace(a,t,i,s)}static ClipFramesInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!0)}static ClipInPlace(e,t,i,r,s=!1){let a=Number.MAX_VALUE,o=-Number.MAX_VALUE,l=e.targetedAnimations;for(let c=0;c=t&&_<=i||s&&p.frame>=t&&p.frame<=i){let g={frame:p.frame,value:p.value.clone?p.value.clone():p.value,inTangent:p.inTangent,outTangent:p.outTangent,interpolation:p.interpolation,lockedTangent:p.lockedTangent};m===Number.MAX_VALUE&&(m=g.frame),g.frame-=m,u.push(g)}}if(u.length===0){l.splice(c,1),c--;continue}a>u[0].frame&&(a=u[0].frame),oxv,TransformNodeAnimationPropertyInfo:()=>Ep,WeightAnimationPropertyInfo:()=>Tb,getQuaternion:()=>w8,getVector3:()=>yO,getWeights:()=>F8});function yO(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function w8(n,e,t,i){return Xe.FromArray(e,t).scaleInPlace(i)}function F8(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{wf();ke();RO();xv=class{constructor(e,t,i,r){this.type=e,this.name=t,this.getValue=i,this.getStride=r}_buildAnimation(e,t,i){let r=new dt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},Ep=class extends xv{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},Tb=class extends xv{buildAnimations(e,t,i,r){let s=[];if(e._numMorphTargets)for(let a=0;a({frame:l.frame,inTangent:l.inTangent?l.inTangent[a]:void 0,value:l.value[a],outTangent:l.outTangent?l.outTangent[a]:void 0,interpolation:l.interpolation})),!0),e._primitiveBabylonMeshes){for(let l of e._primitiveBabylonMeshes)if(l.morphTargetManager){let c=l.morphTargetManager.getTarget(a),f=o.clone();c.animations.push(f),s.push({babylonAnimatable:c,babylonAnimation:f})}}}return s}};Sv("/nodes/{}/translation",[new Ep(dt.ANIMATIONTYPE_VECTOR3,"position",yO,()=>3)]);Sv("/nodes/{}/rotation",[new Ep(dt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",w8,()=>4)]);Sv("/nodes/{}/scale",[new Ep(dt.ANIMATIONTYPE_VECTOR3,"scaling",yO,()=>3)]);Sv("/nodes/{}/weights",[new Tb(dt.ANIMATIONTYPE_FLOAT,"influence",F8,n=>n._numMorphTargets)])});var sme,ame,ome,lme,CO,Ab,PO,V8,xb=I(()=>{Gr();_P();sme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR42u29yY5tWXIlZnbuiSaTbZFUkZRKrCKhElASQA0EoQABgn6hJvoXzfUP+gP9hWb6Bg00IgRoQJaKqUxmZmTEe8/v0uB2u7Fm2T7HIyIrnz88uPvt3f2a2WrMbOvf/u3PvvzP/sUf/N6//i8vf/lv/3v5H//d//Sb//Uq/5u8yf8hV/m/5Cp/L1f5hVzlG7nKJ7mKyJuIXN/hPwqXI/g++zq6rPI5u8z+WqfLre+zy7PrVv9L8brsMiGvk8XLmM/sdfHXal4e3ad6GXPdyu2ij8u/+uv/5cuf/OSLfdtEfvUr+dnf/d0X//t3H/7bf/hP//N/928h/0Yg/4VA/kogfyGQP5Wr/IFAvhbIlwK5CGQTPP+9z5uPeePJSW+yo2+s/GtN30Rnv1E+f5zxof9R/lSXv/nr//mrr3+i+5dfyX7ZZQP07Tffys//8R/l/9TtX7790T/7r/8G8pdy+/8XAvnnAvkzgfwzgfyxQP5AIL8vkJ8K5KsmMVzu1U7p5PA5AXxOAJ8TwPf7sX/51ZeXfcemqnp9w/W77/S7X/6T/vzf/7383RWCX3/z05/9i3/13/0PX//eX/2FyP8tIv+PiPy9iPy/IvIzEfm5iPxCRH4lIt/c/393//9BRD6KyKf7f488fP74/PH544dJAF9cLl98IZfLBZtuqterXr/7Dt9982v95S9+Lv+gF/3i7Spv/8lf/vnf/vGf/dF/JfKnIvLnIvLvReQ/NEngn0TklyLy6/v/34jIt00iGJOBlxAsdvv54/PH5493SQCXy9t2ueh2ueimKorrFbjq9eNH+fDtb+TXv/ol/vHyhX4Fxfbx7euPf/Lnf/PfiPyeiPyhiPxxkwB+fk8AvxzQgJcIrGTwFsiAEXH4/PH54/PHUgLY7whgu2C7bLqpQgHB2xvePn6SDx8+6G9+84384vKF/IPu8iVU9Y/+7C/+jWxffiHytYj8VER+X0T+oEEBvxqQwCMJeIngo5EI3goIwVMIPn98/vj8ESaAbbtu2ybbvl8u2ybbdtluSECA65u8ffqIDx8+6G++/VZ/efkV/sO261dQXP7wT/7kX8vl8qXIFyLylbySwe/dE0CLAr65B/9vGn0gQwRMMqgmhM/J4fPH548eAezbZd/lsm3YtssNAYiqiogAAkCvb5/k46cP8u2HD/rrb7+R/2/b9Wu9yJe//8d/9Ney6S5yEZFdRL68/38khG/uKOCnAwoYkcCoEXwkEgGDDq7CeQfyOTl8/vhd1QCum26ybZtu2yabbrKpQvXue1yvuF6v+vbpTT5+/CDffviAX1++1V9sO77WXb/66R/+4V/dgkbllQi+aBLBV/dE8LWRALwkYCWCNyMZXElkwLTMeMkga/P4/PH547ccAVwuctkvdxSw6bbdtYDbTfSZBN7e8PHTR/3u4wf55vKd/nL7DX6mu3791U9//5+/gkNFZGuSgZUQvnKowKgLWLTAQgRtEniTuEfwaELw0MJvf3LQzynud+53uG+X6y3gN9kul+2y6XVT1U27JCDAFVc8ksAn/e7jR/nN5YP+avtWfq6Xy9f7Vz/9w1dgRYngiyYhfNkkgzYBWHTg44AEMmqQUYQKOmDaiCIa8TmsfmzB+DnZDQjgcpGLbti2y3bZHjRAdRMVvb/dcYU8kcDbPQlsH/CrbddfbF98+RPZfvLFnAQeieCRDC5DMvju/vmD4JkEvjRQgKULeGggowdHkAHTYxihg89vu88I5UeGAPSOAFTlrgPopiqbKPSmCKreUoAAkCcSePukHz590m8vH+WbD9/JP335k6/+tA86KxFchv8jMvhiogE4JQm8XhfKqOAqx5qRPyeGzx8/cgSwbXcUoLJtim27C4Oi93+4v6VxQwKAvl2v+Hj9pB8+fZJvt4/yzfbF9lPdv/wJnsE2BogmyeCRED40tGFvksIXiSbgiYSRRpDNDZ6BDI6ghM+J4fPHeyKAO+zX7cb9t4tedMMNAQju5V+f1uAtBSiu1zsduMrHy5t8ePsk3376KN98sX/xE5FPAnm7/782o0DiUINXMkCXCB7/P94/e87AWUmARQWVvgMuKej9t1RLBp+Tw+ePgwngsutFFdu26WXbbl+rSvdfbnqAiuA23QcBgCugV1zl7e1NPm5v+LC96XfbJ/1W9y++fgXjA3bDYXV+MuhRwSPwL3JLMFYC+HS/LU8HYrGwIhwyNOF12SvgM4SgztdifP85MXz+KGsA2C6X7aJ6bXSAOwrY5OYIqGy3d5uq4P5GhABXuV6veLvRAf10fZMPb2/y3b7vX7+g+9v98/WOBq7GG7RNAlYy+Dgkhhb+Xxp0sE8IAC4SGAP/TbgVJK/PoJPBnAiwPKxsXfbbnRg+i3s/JAK4Q/4b9NfLtomBAqCickMBjy7BuywAUVyv8na94tMjCVzf9KNcLl/0SeA6oAEYb1i9g+FtSALb/bKL8/+t+wxXFMyswqiHoK4ToIgKqslgpg1qUC0QoYbvJZg/B/q5v4szHmPX7YEAsD0CX25OwEUVm9xag1+agKg+nxQArnKjAtDr9U0+Xd/k4/UqH7bL5YsewrcBBiMJZPRAp6TwQgWfjM9vgRbgUYGL8AvLWH2gqhesCokeUmCSwPsnhs8fP2YNYMO2XeSmAWxy2VQaXeDmDIhApf33rD4PTUCuV+DtCn27XuXT5ir8VmCJ2G5BpBM8/r/dEcJb8/0lEQMtJHA5TAlqNuLRhJChhEpSqFabH3di+G1AGj+W1/dyAR4IYJNNnuLf6+tWC9CHHiAtFhAIFLjK2/Uqn65X+SS67aK+3QeTDoy/IG2ogQ7fb/dAtz5vBgrYGqrwNtCHsVfgIvwK07OTQBURVNCBFpKCOjqCHn5L/67TgTN+fpySAC56nwSUi256kXsSuFGAVyLoUIDo8/Pz7fdoErr/v17lk162HbgHvFpIYDfoAJJfW4sGPjkU4VNAF8ZEcLmLhdc7kljdY1y1Dq9yLiI4IiRqcLujb138KIPn80ejATwRwIbtBvn1cqv+2J78/5EI5N4cJA8qIPcmwRsKAHDF9WYP6mV7VmrgLuTpxYTcMEW0LAmoQxFsuvAI8tv/a/C5fV2ZMMiKg++FCM7RDPRu8ebWY7VG6VJi+Bzk35MI2LsAckMAgwvQ0gC5DQjd3ABg2HQLAPpEAlZ1Bu7VV7MGHDFRAbo3VKsTbAY9sPWC/uvx86gBbDK3D1eEQS8pbAeSgSwmhepnJb6uBv/o/PzHLzxWA/X7TH77De5j6AGQi6o0CUGfCOD2X7cXAlCFQABtEsGLDtxuOyQB2UTQBKZe5GUPXgkUYCUAbZJRhBDeuq8xBf+bgwbehDm+BFQi2IJksOocvA8ysIMfxluVcRsY/eB3JzH8GFDAXQO48X/dcIf9jyDHptIigDsFkEe066tBSETQUYF7ElDdYEBytN4+rk9UcBPfrKaZqFHWcw3i4J8/X4ev2//bSXqAhwTay6OEIPLD2Ipt8OtAGzxkwLw9WVFRjTc/qC6H3+YK/b1oAA0KuOizHfieCLaHHiAb5NYTIC9EMEbZrVEQt1xwhVy1UfBh8PUOquMizwaap3tQXfY5B//tea/NZdfhsvbz+PURQTDSGWB87VX/7WSd4KxjUqrIgE0IUkoKGnhIvwvawpGf6eECXJ7tv4qbA7DJgwpsKthEmmYgfaAAffYF3HLxo0vwNjJ0SwRWMG4db4eh1gPNm18vQ+us/0eGmxDemu/fnM/X4evq/8342ksGHgLY5LyT/zg0wM8lcMjgGFXwqIOVFJBQw99eCvF9oZL9Mfl3QwAvIXDsBRC9R+fz8x0FPBLB0xJEpwUobrfAkARgIAF41h3wQgP6QAmX5E/7eI43IxGwwf/moIkRyWRJQIPgt9CA9b39nzt4bYUWjAlCjWDPgv8IEjgLJfzuaAsrv9VdVG4OwOXW/fdoA35qAdL0BDwvf6AAUVHd8LIEu94A3K+Q+2YxaB84MOH62P//qoo38fCRDERE2zf0JfmDa+MieElAjcDPKz+mRKCOtdgGtXaBjgNJ4H2owSpNeAW/rRH4CaHSpMwnBYYycjgSJwfie9CR6mPu20Uv8kABF206AvXlBMiIBPSlB9wjBW1fwEuSb94296VCqgMaGCt/G1BbExi3IG+r3a3J6P48Gv/J0YmEYoiGY7V/SxwFCwGoE/xa0AJ0CEiV9QPCJb1OJ5F1VTjEY2/MO9AEJvj1BJTQpqLfTlGwjABuzT962e4IoKnyrdh3+/6mzDVJ4PHOxj0JqGKoy20+wBMN6D1gLWi9NQHfVP5MEEPzjGYy8BMAOnTAJgEr8HUIejRo5xrA5xkR5AngmiSHs+zDDAmMgWzTg55GSJEmHE8IvWPAoYTfhWak/Wn/bQ0CGLSAjv83SUEfKp5q24LXuQICpzrjrgWoza8xVE00CQCORdhMJuTUT/rjuls0gO4Iby8BIEgK6gS7BsGuTtDrScH/fR68biUHNVGBnxjeNyHEvQe/ve3LZQqgG3rof6cEclsNflG9J4KtaQ8WHcVBHS1BtHE4QP9OBMS98mpbKTeDW7dJwRsnHpMBTFJpV4I+b0kY/NqInVFSyBLANbnMSgBM8F+Fqfxq/h657/Up+GaBnwV9hRqc9bZ/vA6vu+T9E8KPJWns94UfTeCj2QXwCHS9dNL8Xf3Ho/rfewSeFODGDV69AU0y6NFAE1DP3qK++rdB7/1HRxf86gT376zOr99T/h/ioBiXWQkgQgVeIrCC/WomhDmQK+hASI2ARQZKooHMLdCJwGEBBXC3+uERwg+VOHZ9ioAt9H80AI06wGgJ3nQA3BoCut6AhxYwgcPOFnxuFnrphk+NIKIGrWPQtgz3b0i7Y6D5rs1GKqTop0nQX52vmQC4BkjA+r4a7Kx9WLENGeegkhSETBCrNXIMdi/444Rw1n6E96ry7OPuj8UfLxtQ78NA2iSBbg7gIiIbdDLsb5agPhLC3RkYKv8NDbS2YGsatNRAG2oQwf9ZIOydgy1MAzBkAw8UwEEIDzSAqdPQ6za0PkeJAMH3Z0wXniUSZoHvBXU2mcjQgv56TedIKglCpIoQfgwCIjOytd8WgN0bfxoR8Fn9Gx0Aj5Zgq0lIZbsH/ibSJoFnS+C98g9ooHEELI3gliy25yONIiE6pb0NfBlyNEYyENoodkKwgl6I6s8kARgJ4ZoEfuYWHLEJa0LhSBXm7kImGeSfVdoJ1DO2G7WXsehAptupSOoyrCSF904k+6vt98X/ZcM98Hsd4JYIXhQAIg3/f9AAUYhsLQKAtkHVBnzjCKhOoYl2ym+iBtvzDzQ2DLXJ4PUmbJHAVnBQX4jkxfvHhNDqAdHXGQJgv0aSDGItgOseHIU+K9hXnIJzkoGlEKzNHagTdJ6VWEUH4iCKH4fd2AwDPaYBm4Wgng4gQ9V/CoGiuNmD04AQtNGMGzSAAQ2I2pzfogY9LRh7BrbOh4+D30sAencljFu2CUFrwY8UAWRfWwGvVOVfbx2uIILM0pwDv082dUTw8hYs8L+uIWiHGpWgClnAa1lMPJogovvvbePPs/q3Xr++kgCsfgB5oQF9WYKPJqEn6G+OE3i5AqouF59FQOmahQC8rlPLj38kg1c2f30vw+XaoIX24/pMGIgSBoZqoH3wo0sIIGlA9PWcCPrAtpPB8eBf6x1o6cHra+2+tpIFP4PgBfxZtZUJfo4qxELT948D9ucK8Mt9+ccjIQw6QJcEbrD/1g340ATuDgDkFfx6twSf1f9xvuBECYxq/7ythQQGm+5JDx6Brw4CkMGT3wgscCUoQ4sU2t6DR2ciBjTgtcpenQoZVX9NuL4Owc+dVaDursYVkVALX+shjSBKBuvCYDUZjE5BdNkxdHAUBexyHwB6NP7Iyw7sxUDViwge1t+mz8B/LAvVx/c3PeBBCToB8IUGOgqA3iV4yUg6UAOxaUFHDx6CYS8SorMOue0CCJGAf5YfRhoAI+A1CvwxqNkAY5yAIx2EQmkFfeWOXi+nEdSQQA0ZHMEItiagJArQxDXIrj8nCfQi4HZPAttrIahso9oPQ/2/JwV5JQU8zw+7I4D7/sBn4EO6rjw0FR+i3Z9fHtahzsFvJgM0X+tmVH5vaYiNDGAigewAz+gyNLThnjCURQFR1b9d3lZvnVqmj9mEPDKIUIC4KCCjBXywS4N+otp/Hk3QVthOkwEKlV9PQwXjT7s/zwF4Qf9toAAzFdjuaEB6S7D1//U5FIQu2MevO0rQQH8ZmoXE6B/IkgE60XCjVoq8gt2iCG0S8L5GdxkM1cGsfsCMArSCAnrr7dzAZxCEEpepvB8tqHJ/q+bmJGGts/AcAXFOMMeTwC7Pw0B6CtCtA2vWgonqBQJFSwH0JQK29OB2kvgj2HHXAoyeAIsCQO0kMNECAhFMqCBf8mElAkyBbX1tJQP2RJ/ha0gpAfS9l+/5n00CkrQpq0MZbOdAuxmMvHswog62jZj7BnYQe19b14kxNq2D/ehX/p68HEcF+x3yP7z/V/A/q/5DA3i5A/dzA5pdgbKp3v3/wQF4Bb70WkCTHGRAA6+KL0bFl6FJaFw0ImZwm6igSwbbwPn9RMBWf3sN2JgA/BVh/Rg0kQBgePf6HglAHLFQwqQQOwDjbdVxNZjR4iM6Qa3WxwvNxh0JFb3g/WzFQQS8b/ttKcDWoABtUMAd8j9hf0MB2uDXhzX4CHj03L9DBU3Qjz0C0l4mLSLQPicOOwZoVCB6P6dA7nDbGkVuxcNr8PU2JQO4wX5trEqmccZaHU4q8oCDFOpzAnOwqyMIMktNNNAHouDGxO37DgArQZzlmp/14W1QlqHTMaIIx7SCx0+5yza7AKJ3IXBrNAHVDcMZAU/BT/vgv/ULPOA+XiLggAREDF2g0ci6xNDRglegd7P7TWWH5oJfayliEg7bScQRBVgI4Ookg/F6rvpLWP29swREqA3CaG8/FpKqS8DTAV4TiBqIqtxfzaQRLys5I0XEFIFrPbZRQb+16Fgi2LvJv8EFUPW1gGfQv1T/F/d/HBnccP7rAwnIIyHI4ArgWeGbU4eHy6Tx/EeTZIb5bo/BsMBjmjBE08f/RB0PHYBd9eVRAGY7cHRwiBf8WeCPHY1bgBTa9xKTELzEkQX9CPtl0gJiqsAmCT7I8xbjivh3JGFI+D2nBcSJQJ8agDX+O9iBL7UfG4bzAkcaICrbtYHz1ycSmGmAjJfL3CMgT3tQpmrfB7gxSzC1DnvdhQMieG47u75+kTouKNkM8c/+vq/Q7ZYjO/hhVvRq8F/9gGfhP8aqE9EIdR6LTwJ1h0BItyDqB8iFwuNqASscRnYioxOg9ApvnYA35f8e9Ohbfe8J4rknoFkO0lmA2gmAG0YK0DkB4ieEjiLoMD8wBzom27ANZkzIoU8EMHk/uo1mzeVoEoRWKn8L/62EYAX/lsB7D/LXg74uAMr9oGivJ0CNJCGD6i9DhZdQF+gtOp4S+NODRzsDVbhdgv4BqTMNyIL9SCKwL9/FGPp5oQKxIf8A/UX6r231H7YIqLML0Ae2GtrADOvRQH5b/MPE9dt9BGLNG8jVTAQvIaK5TtvvvWQgDvyXIClUA78S9Nfg7VtIBlO7cbsEYkQDMot+ygQ7QwmOawTHnAM2XUSnJvPIYRYMmYPS+sv3J+cfP3d04JYIXsF/EwMbBKB9Q9AY+BiSwFj9mzrSXmcJhFPVHySTbgHJCPvRQ/z7G/SVUETsg0ZF+i3CRoCjhf7y1A9mOiDD7TwdwEoEXjLwAv+avLE2B7Jnb+OqDpBoAchoQJskxKnss0vu7Q2YhcDv4ySeLOg9GsCKiUIihP7yfW7zbTsBh0TQfN0iAWn9f72Z56/Ax9P7j5OAH/Qvv3/QxKfk0DgDuP+R3USg3bzBC7bO/QT9Eeh9QvDPG7glBQzJwK740lAFFgFk8P88CqDGAa223YckWYhr+c0BPdwetl2ocnsfzePAWcVnnAIp6gDVhDLyfV4nqFEDPxHsbWD3k4BDkN+pARqKMLYBPzYEvxp9xmCHQQdgWH/9EtH2TIFpu3AH/cdGydv1j0TQbRrq+D/mLcX3ZACZ15bF378CG0My6Kq/zoGOQwhASDFwFbxyNGBuSxbCEhQ/uEPe/6gAERWQObCVVfjPpQX+rexxYhYFxIkgpgX7Y/vPs+Pvxf9vwt8kAs7i32t3QCP+3SPaTwIytQXP38u0PESm+YER+o9B3vr8mETAUfDrEkPI80ck0FZ0dXh9U+HRbhey0cAc2H7A4y4egoD6y8JfkBiigLdFP8v2W00E8deT2IeAKujZ/QAVKpAtKI20gLWksHedfgPcb+0+NEHefd9vB9rayi8h7J91gBbaw20MsnWAF5xHkyDUCOoXp+yrOwwxcKj0aL6fFppaaKDv6OpHR5sgx5BAlK/+fYhuP1D196o8e7lFBaKqv5YIMnFQpd0FGVR35RJCnCDaABaXBtgbiSwtICMtalKC+1JQ6bx/PLcDPQL91QFodQNKpwOgF/9eqcBxBBqRcKAAVk+ArQOMx1RYGgB6naDhlK+uQQwJYx4meQbxtNnYQwMjt/d4f3M9ZE4UOld1LAh99fbfzOxiEkKFCkTJIUIMUeVnJ/9sDt8/e1NEJOi9oVHDGYhgnSLss9DX2IAqw1zALUncKcDr0FB5NP+0cBQNrEezDiyiADPkt9qGpwoPdL0AGPx/NOKeyf3b9WJNdfcFv6bKd2cLMJVfJ6Y3B6wB9WFUfWWEwKMfGiQL+3bz9XGQz2EHKhF41GCtZyDi/gUCsNhYoAr3UNJ58YidHKqnMb/6AB5J4N73/4L+t7mAkeeP3P+1LNSB/l0SkMEd8DcEuUlguEw6t2AU/PCE/q++Akw6QFf1u6SBrj1ZnnhG50AfkoGIdf7gJv1KcSfgzWWkQ9U33Z3tHXYASKJ9e/YhU90rvD+q9Ej69/wxYJVs506Eg/r3DkMDzEdDBRGgcZay49XihLA30P+l8N+hf1f57/0AoxbQbwYaan/rBMirE9Dk+sBzTkC8JNDEUlv5McB8PP19Y01Gayep+hC/2zvQ/2HGLAurowsNGlA1cnqGGzeH5weiYLZm7h3QQC4O2tXdhvMMk1ZS5ebpgI8eMrPvPGkwaxayk8Yc6PMOBPEdC1XZ+2UfbfOPtxLMQQAG9BcZFoF0gp/RKjxe7+oAw9T7ZPWhgedodgz0gf5KBtrtIZhQAZpAV1Bi36w6t98qVfH7hqGI318lLCjLCUFlxRHwqYEH9a2qb4XjWvDT7kBwfbZA5P0+PNuRuW1yf4yNQH3zzwv6b70QOJ0G9OT/dhoYRUGT15uQH/71MjQLtQlxfDuiCXrtM+SkA+icQdH6sU/xz7Ze7FlubV4TpoTQ2osdpaEjtqADmEU7OkBEFoLeC3IWFFeswJXKXzkboNL+wzcFHU8hTGKIboO7CLi1/P+5F+gydQhuvRbwEgxvtACmANikhLTbj0gCYk8KdlYgmj+4Ymaod7TwahwadICuX0Cm2fE5iNHPK0x/CDV66Kyg1MnqjNFBnhBoLQCgUULfaVe5nq/6EQWY67bXCszUb+7232fVPz51iGB12owK9peyP1T4raMFF/OEYJP792mgXYfZ04GHMAhBkCSmSj+dKqRPgVFGHbpLEGMiGFeQWfSgrY52VxaeDUPSNJI0P7NoisG729HHl78z6hxfs9rV3m4JjgM/lsui2qmThjCfDFSb+I9vwUqG5wwL55U7C+6ot8B+7N2o6r3q37T9trfpjgmTvv7PSQATLLeRAOZhIJHBQfDQQJPBdUwEbVW3+L08EcEE/9G4ANrCeWcnPKRHDupbNynMx5AA9IRYLmrc/YLSiD5EaEBS/s/TgnU9ILcH19n+CpHwegLejx7Mn/d25fdN+e9U/1vgb7bqf08MOtf8EXxaoh+GY8L6gDfhvs4i6HQ7seYI2sv1GchdMsBIG3xlvxcCRzdgCPTn+6q/TW00VE8Q9FaFv+R2VlOM1vm/hhjhDCdgNflVKME5B47I9xT8z0YgPAJ8myb/LqHy36j/Mwqw9AALxuO1JVjiuQAYLcFzIhiEPe05fk8tRjGw7yWQbsfuLAT2VqOId1osnr0F49VM8INACPHDoBz4B5mqqSnUgyh3ArjXxfQH5BbgUS8gP7aU+w0zHD9GGD0CGHf+P1p/DeivlhU4BbxR9a2kYFR58YaDZCUR2P0DMmgED2eg77puegy6PgDphEB0CwlG/i9d+/Hs34pBEQrBn0W51mqGnJAk3ACCHeiqkQ1XFQA5AlKH7Lk8yJKWY3/nym14h2C3JvxeMwD9ZVMz0BPMi1n1RbKl1cYhIVblF3G0ATsRiCMUvoK9//OgcwYMoe+ZKOLlC6/Xk50br9NFz9fanqA8UIYSpCwlBO4kHc4WLLBfBHVaKwKgLQjmP4Un61Vq+3s7Bsyi0WztmLjJwJwFeE0I2vD/1Q6MVwefxfUf32skCPbCnxQqf+QMPEUDHZ7vGeyj020JgkPXXwsldA7SYR1RE3h94NvNtugswcgxXEkIcBPCGZ1rmrgDC0A4K88nm2fn/eTnpQtWyZfybRoK8Dro4zYDIMGsf7saTBzvX0SMbkAD6o9CYbsfMK38cJKD9l2FJt9/VGs0h5Gib33pxMKWNsigFUh3G2un+/N1WUglI/EEx8fq27vUNnwsiOoKecL7kQS8VnWAGCFUgn6dBtQhv40CmIYggwK0uwDHRGAuBXVdfwzHUjZzATLMAoyJ4FmBhzaWBlrHld9CCWpPHRqofBqMReMGTJ78q9rDes1Tv7/0m0v0AFHXNR6P6g30SHivin7V1BOhh3iWPwvps/yE836L2XiwnUT8x2iHgfqhnwn667QHEE8oLQjEvtEW7GYBZDrDVkwNIO4G5GiBDf9fGoFM6n+vbEtzXwP6u9AduaWnGYSLAlVdl/AU+ikrSeEIKgwdaZ4AACAASURBVKj4/wtgHcHtdO2nWKcBkPfxcvnNQvsj2Me9f02r76T8q0IBn9OLKfz1HX8yVXQYGoAB/2UeBQ5/5kCL6+H/OGGoRnLSwdd3oH8r7KkGTbgIxEwVWvnF8KOpHnyzfF9Jod5Px+IF1h8owyitDw/XEgRb5bPqbt1uvn7qBIQ16vtS/u+DP3cR7CH0WWJgd5mTJKYgNzoGjQrfvu99NDBC+bnyW1x/qhTatv2OaMKgJWPvv5kwnMgxHYGFRtJW8VMl3uP+MgoqSZyWFKr7+KIDw1d6+IiOgZI4+d5iYL3imzbgyO+tph9t2oSBxOM3ugHtPoFZ1LM0hF4kXNEBssvVgPdjdXZWK7uKvyS3q1Xb1WQwtVDqSUggq+Vw3t56JA2cz7PXOwGNW1ecwxPhfe3QEUsDsFaAz8jg0nf+iZMAHNg/XSazDuC18Iq1HBRrOsAQ8NLB+16g614jmuSgs3bROxE55D+WDDQNA4ivdMJ9M1b309UqknaDU8ObV9/PwmMPATvTMAxpABLBzugUtV9bLdhNDQA+7B9tQJ06/7QNDHGSwtgZOCIA47InIoDdROQGtt0U1HI3GaoUnCnC/rzBMQJteN17+VaAzYNA7e+PFqHQUyXPUYB7iQYa5ZFjq1Zqpx8Uqu/XT7+6BWC1Xaj0GlBIwMoHu7UzcI/6/Acb8KIq+hzmGWmAYnADrIpvKP7TZeLaf0LAeQkGgebbq9FToI44p654F47tekKkI0L5PQNZPsDwPBpy/ni+wKMN76Vav4+2cFZFf8+JwAraMt0DFB7beA/u4Zz/a+RXx0M/ct4/jwaNAS8G17eSwmta0Fhx0VRxJkHMivso+onMXr+YwdWKbgioy1jp4x4AzIKg5lEA7wvHEYCRmdx11TAuT6lDLVl4KvXkAET9P4RT8H2u+lg9EPQIpw+/NpJ7RwE8HaDv/Mu4f3OdNkq/EfAiEiOANjEALvcWL9gfFV4NZbgbQc6qPky4Pm35QZxtH1f4j+P/jXuaYPcWwIEH/fmEPBoAO4m4LGxV3txOQqDU+dXgey+UwSzuqP++uImO/u/6ogCb7wTc1n61sL+vZi87rxnrNas+giTg6QLzaUCjIp6JfhwtGI7AjBBB9JjDY4ePYVR6ZPgN4owVv6Q2N5hhVHwNeYrM+w6dN6K1sMHZm/Ce7bHe3dzKr1xw1w4JrSQMZtgnoQHlr18fzunAszD4qurNUg/TDqzx/lfCaO6t4tACMUQ6P6htWjDPC1hCoZ8kpODzJ70MUR9AODcgwyqyPhmE+wfHYB/hvSqt6qeXUShhXH+d9SR8DzrDaZZdpSp/HxqLMQuATgDU/qDPRgOIeT8cvz/h/XC6BtE7ACLOWPE0KIS4UUjmZaJ2grBphiWgT41BUVWZfP3AnEIT6OrfoF122l2rMycBoU5i/OXoUZ4/aglsXwLzHNU++FVF3qikOj5HXm2PBitT1WuvJRAB+6O//W0/PY8vQH5IrAsMs/WuVmAdHBrQgrbOxJShXwRSsu08h8JMBpo0+aDTALwV4tbswgzHrftG/dJKIAQb5h9KCssWIMeto+GYqG12/HWGjx8kzqNJaa0noMWOr2KwW01AMwJoNvhMQda2/RKQP/3ecABM3g9uD6BY68Ntz9+nDOMb5iV+hIE+dP/Zs/wwJhJ9mgBnohBuStABUXjugF3hkXF9ZZJAjefKdHZCc389LoStKvIl7QIEb1d9RyciQgFDI9Cjyccc/23Aam7/PZJBhgDgin5CtQvbCzX8ip9YgIFtOAt+w0owp/hOiCWgEGbVHuYjRigPGR/YOnEoqPDoV5z5YqB3mRq2ox5ICmSSgAP1Ne+XV2NE+/vuFbCTRADxtS70VRBCjgBk2OyDUQiUgfl77b7DwaHm2rAZ7osRSOOUoHgKfNBSLI767+oDYrfwZvqChSpGfj3pFwZFsCJg2jeIQQBUiyI4WgD68ww4qO8khuWkkIuDrxWv2nv+UTBpJYiPd0KemTA8qqFiuUF1jWS3BoG6pADJq751JqBI0wvAVPyMQvjcX1zbELltKK+zBiXRFiRxG+b7q3M9xuLdzR8g0gCGNzSM5gNYfqGO9CBT8OHct6oB3KsSDBisUnwsFuISQaRHxDSv0vptt2oeLHMERfRn/FG/Cx01EpgIQG8LP+/i37PKw53xn6sYCM4/JwSRrCnIeB1ZkLsawDhaPKv/njU3wnZ/dBdGE8+YTHSG8+ofGgIjsC19YnwdM/KAnTSsqj6ig7uGgIPw3nYFzhhIIvriAxFP9CQd4HSlnzgxONIdrE7A8ZDPx9fjib8ifgegNIliRgdx95+E1T7+3nQVNNhEzDgGA3T2rEDLduwtPpuuouPcs8swwXFjdTaMKt+jA5gUAQPcf95KJQxYU0cYxEDvsBSmYuukp7AwnqniC9Afa5z8vboI68ImT0t26CvwBzSggkj447r9IojvCn7U92J/Hw0QSdwZKNNjxPCfSxRqnATkdwpOwh88oc4J8KTSm/wdbZjrc+4iFP8YO0/5JJDCfaijK5xVXevqfg6zGRrQf83chvX4aRfAE//6vv5+6490U4ADdO7QgM/5bcHP/n4OtCQhBEFeDWSvos8DPq8/IwzLzjpa8/U6MMSkBklDm8e0mn3QIY7XG1Om8wzN48y7HwhOK3P0/ZwUQHHv4psbdoVeb9VlAjChBCdtDDpOKTh9ZfcagOYq31RFjN4/gwBYzp8lAwYNwBELhZoxECeZxMlAzWGdCRV0fQWGHo8+8Kx+AAxnCIzowAxy9KvNepWfsfp4RR9kUrD88CPVTuXRybhqqTHcnxEGndsgub1Gdug8yz9fHt3Hpl57x/mfCOC29FOSQ7/noAZR5W3Ob24UMpuPYAYiQrQgk1gnFoUIKr4vKFpV15pHUJO3Y5rfH3UFHU4bGkU+NKJ9f2hJyOMxDBDpjAgwiYqvk5TqNl9EH2Arb6fA3yaA4cBtPWewhkEcIQJBlGzYp6zRmr1v+e3Fv27xpzvyI44NGDkCIi7CGNV9Dw0M8NtHC2vUwHINumCGNG8erxOwtQINsW88Tlwdoc+F85nI559ngEDpt2F/Uu3hiXYrkN/pBFS26hYDAkFgErMK67y9mGBA3L5ore5izf8b3n805MOq/t7XU4WHv1DUF/5gugCSOAIW/59uMwl6CHWAib8bvfxWl9/rBGEMTTwDfG+ezEYG4yk6FvRPuPwE+wvc39IRjENWM+/cm5b0W4Pf4WuKUnw/vD6eDbB1ETs5vl77Dhnm/51g6wPWwQAqxnivgQaeS3gy/u/1H4hpTPrIgHAN0mSgXUX13YP5PMIuQAfBr/f70cdeE+QoCX3i8nFMLcAjInBoAIYqt1LhC1WdtvmSab28AYffaeivCB+ohdYQgfUa/WS4ToMsNLHLc9nnvPZLwn1/EefPVf+U/xvnCVSEQEkEQEnEQJO7S7RvYDxNeNYKrG7DKMhtsQ8cMmhgPKKKj+F7CiHYFR5KIIPxOmg5IVAtu3ACQSPh7CzUQOgAej5CWEkIe3vgxz0ROGO//qYfz/dnLT+ZxDr4QW0eNCJBorCFOVC312Ec2TiY5Bk0cAaQmiA1VH1MOwDHQ0kHdEDDf+2UTWhS4Z8diQMicLx8MLBfverLcP/jQzF0P8EJj5+NGK9RCz755S6F/f1+X/gxeP+Wsedv+vF8/54aSPJYFjIQd624MDz/UDLQnr8HU3ztKHRf8Qeno1vyAQJBaLcMtTV3cvgP56COCqd/QP9xLgBkH4BxO13n4hNUDtACC6G1S3zqooZ6Ba4lp/zcAFb7iERKQwQcF39IFJjdXECGADw0IE4gg674pYAnk4HoHPx54tD5daO5vxrugSkMjgiiqc7TVKAT6AT8R4ckbHEQCYR/IZBxJgA+XZjsR7vaoRpIxWqeqfXuGC2CxwudicwePEB1kNkaZCuwyF0DuKv/4sz9mzP/Qxdg3BDkBTMC8Q+loD6UGBzx0Kz6eAX/KArOQTlPHFoI4vVtf4rNuLrca9edRn4xBP7k8w+9AgZCgBfEUZWfEs8iFNZ3UO7TqmkjCO/rWdgco/yIqHcQWaC2EGTzgz5y/iXQAvyx3riyxxV/JeBriaGB9OrTA5g9/eokM+37GszqfA/UZk9iW5UnCtBqBl3XoNN6Ag/+zy6A5evPAp+TIFDn15gQw9rjrOzFX0s2JBVAxa/nP1a6AsNWYGjPNGPLTQgBsNUFvOA3Ht9o/rGDN0tWOCcxJGp+f7++kkP7PxcGv1+GjkaLt/fawpwwerQxBJNW4b+PJsYEgiAYYdEAGIlDNaAbRkIgK3ut0jKByp+8yz23X6GttmBmjwDvChgiYLP5V/zhH6/110sGcKo5CkggCngxnIPoPja0j2B+1BRkiYJiviaLJqghDI63G2nAgAxMCuDdnoD0wIQm+urMB3VuAwbBrFGgGgnhAFqg9+ujKsLxB3qGCQNEEtPinIQlAj4WgIw7/iXc9V/x/yUWFs2KH504bAh4aYWf4TrTLGTy9YbftyLeVOWNfYNyt/ji29mQnqMAltU3ioTtbX343yv/1u0YPUBz6zB702tQucnX0gWaFh6DgPdmhXaapGotw0SFz1qDiTMdd8h45HfcqCPRUhA3+NmKz1l9teCPaMd4urGaewRitNBDdahR5c3AfQmDCFT9vmtQEwqAYXX4XI2n23Z9B/Yb1FL+LWox6wHGbZSo6FR1LzyG+3hriSZvWT6jfXhl2cmQZJDrAbuYAqAHo1GA/EOgD8eGcU7A8eDvH4fQBuAhBL/Zp/vamPTrRENDGLTV/7E1WEPLDlP/PwzU4YhusIMUgfIPAr6Dhv5R4y2r8ldFwiFoYHnmr8TAHbhRQSZOctH598ZYhqt6wP7q/ouqe77RJxvzFYaji/z4vna4v5cUMDXqDAJ5ytktqtBDckyjvJg04hl16LB0xFfyMfD77PZjErGQRRjYIfSvoAXntks0ok8MsUC4KARWnYPlJBeIgLeFrUgDOHYCag0/XNAbWgRwQuLAsaQwIhC1g7+jCNKuT38JfnYSyTi+QQEwwHeT4/dWHYxJPxfOj5oAnRQqgU3YgGZSOaDyK3n/qkDYBKptzR3oD6B4fyRKjp2AzSl80YR/3P+/1vBjX18Jbu+YsrMRgbqPP8zrDLTAaupphfeZtyPs9BPztpLSBZjowF3woYRwBwOWaqbev15b7X4RWsiqYiY6ZkFEIoUwUA2OrkeEQE8HYNyD/rl3m88jCGgO/nPW3xy8x4Q/HBcM1dYg5q8N+B/SBSYhtD0EY1PRGLDoKIBHF3yLz4H/gSYQJRETgqeB2d4vC8L2NVnQn4PoVJJAcP0inahAfdXVI8CFszjRagCTtRdV7Sr895NBpRKXIT64RMFw/iw5eChhEvmmyUIH+k+Qu3cLzOAN6ILlFvgWnx3YWFDz0f38ze9GlfP6UQ3ojEY0gtqRIEbA5/WgQFhsEuIeL75uTzvqHktAWfj/OD6sQXssROcGiRgFn0QVkld7OznMDT7CJKzhMIqxW9B+LCOQdH4uyxIcE49VTSeLj0wKjzcp2oDXQA8YoDEGBLMW0BJw+eAxXejPV/IXd59/tp5rVyYXDw5BlRetSpQAcvgfOwVM8ObzBq/AQ2wX4lwkQV3vNhYFfn2LFgaoDU1ogqsfqGkJYmrj9Tr22KQwBLzbLuzDeA9yzyJjVRfwegWq0H+FThDPA6ZhZwX2M2Kh4waovCzAWJTzD/qY00c+6PM8coz08VNqglzx54LfHuTJK7z2rwX35ABLg1DzsZ7Qv7l/f2yXDlbf4C/irg0MJ0aCuD0wP74MrxfdFlX7tq+vtRdCpvt599EG9Yz3V+P+Oj/n4zLruZHcJ7oMt/MNp9eD6HEeFb6/TMfbWo85Pb79HJo8t3371/PuIAZqMvjPC34nVV6ZB4hEuA7AzA5cfU0y2n6ux89D/35/n2/vWY5Bf0qwf3tPLISO1Tap9qzFB6eap/beqI94NCCbGwgqOItY3CGl446CaQ8i2Q9g0AvmgJOnBoAA0gu17tsKtKS7D4udgCYERy2QIceCX/P7mBW+g/7D9S6Mn50CS0eAoQPDcBjopIA5+EcxEjLweRjXq0UbLIjcBxsGx2IZvlf0ATjz/6qypAmY7bhrk4ahsIis6ccXKHdueAfUgk+RWPCLh42c6zEeKyJpRTdRAOqBbl/Wq/uT+q+Fx3FoTIuCzc6+hN8j4veGjuAnhSE5gKnco3A3XwYlq2sq+lmP4yEOpqEoG0M+mGDYuYT0pKCFHgLHKt3T7T9p8GcWH+n1UwGa8X6kQt2x4CeqPexegT6o/Z4Cr313PHdgrsS2ZReLfpKIf+IMFnmVmwxQ9AhithYT73+p2s+JIVfrjwiHnpAZrSsr9CMstQXP1+1+510N/q8E/YoekMN9OMFvi5LvkRDsy9rgFCOoPdpgaQIWBZjf5KCSQszZJ1ivTvLokpen6tsJAVND0NFqb6GUGg2Im4Dyx9Pn7/0dm4pADAslJzTv+dKNrAPQ0wyySm7bj1RQgbAXsRa4R+mBJzpaQmHLmy0BLoL+Nh2ZRca8uUc6P37k97n451fvTieAE8BdZ2ItqFEK6oOJIYPsiU4woo140Oh+H/UC++gatHYcOFT+2y3AYvD1rM/fpxdUcsAi70c0OxAEP45X/hymE9XeoC0zfYhbcqfbhs09HpwnKMDR6g0mmYyKth/UcLl9ITGQ8N1S6s+gA1HvQCc2pluPvN2Br8SyZyfyxPP/VhCi1L1HWX2CQCuAE8TIq/sBYdANZmTIwqq0sb0HIzhhugBeUpBZLFyA8y+EErsBUYDZHYN9QAAooQwOws+uQlhdESSSqk5Qsh8LSYI6LDS1AbmOvLlRBqQIeITvM36+TP63VfE5hFClCTr9zEyVFwS3STQBy66DMHB+PJWIrfgGnYBx2dTboPa2X49GaBVlePA7CFx4iaGi4ns0aLVjMGvtPTDtmO4XEE8E5Kb/8qYai+NHl60LgAICcUCoJPVeiYG6Pxw/X9VFNVbFn9FNPzXoIRDTyzcpREYB5Fm1EQQn3KRi9wKApR8Tz48SwxnV3qM0q7ZhpdKvr0zfY+gO4oQf+EGPFYW/Xf5hwWsUgxiBbShGoGIx+D2eH1h2EeR3UQMH4zMaUKr4033nzkSkfQADelFbLOQCalxdxvN8mInhPas9bxtGJw29Fx3Y8429MAS0fL33Oeo7qFZeiToCC3B/VSNYuU0fgDnkhxGgMFdxiYEY7MYel+OHPH30IMeVFK1C79l+QdXVpFqHlMAXEf3EYDyfkkGdNvJ8f3RAXU0jpgM7jMNA5yCrtfzOicKG/M9bgEkEjqqPPDEcDfqVwGZv6zcO9avDfOhf4OmLFd9OLBHHdxp51HvOBlnAoQksYjASA1xnIhPsapTCPjbsGB2YevpPpgM73EYeSYIftgPgte6CWesVBB9QEgfnWYMgoeC8ql69bWoRIqYHvSIv/u26bj/jdqZ9KSGk74JRo6QS9PuTiSHm6Z62kLUGH0UO4rwWrhtRETkR4iKRdI8giJ2D2nUCMjsA0TXiVDb98NAf/rCMlajA9wesWHZrAe1dlwRyVI2jx4KkyUHSx7YDe6YD4tOC6XW01puEdAJwaEJzf1uATHi6ZlSCpBQscsh6C1xRcWEG4bCFeKcAVhVlDu54JQIkTT21hptIT/Afk0kMcS9BKfjBJozcDXCrtgbWXxbMAw3INQIxtQJPAGwXmYaBbYh4SCsuKwLOAQ5awKskCMmRg8P3xwlBfbosQaDqyZqBkyQe1CLQACoTgN4qbyHsPwkTiF2pYaj6MAXBmUosQHnUEYCsBL3MW39SNKMJ5PfoBsT33DVJCEbFnBCMOkHfvj6Xq8uw+dgRIhGgAiUqf5QgKDFyhe8nnYrlqn9sG1GoAfirubygX4H+8IM1CmQrMFAJ5ExzKIp54nPoVU2Auh6eBShDlTV4u5c4HE/fVvjFrsII0Ik6QX+Iq68jB19ziLoKC27FYe0gC+j1RSS+BgB7AvAM3m8HLdy5fV60C8RMVuhD1ieQB32MCCq0QPJuvuw5IHF/geMKwOPdpmsxBwVEfGEOgeincJqNmuSFIPhPq/xM81CWIIi+gCFBqDX3QPYd2OcCRo6GZBoA3AM+00aesAOQ7/2Pe/vBCXoguD4OBD1WfPwClzcui12AuH+gC0gEwW72KfjBCQRBr05D0IQc7N8PzOCMehPWK384MPVDJQim7yDdoiRTItzzFV/ZOX9sYFetP0fsQzb6O7wOoFjxk89YoQXv+BmSN+yYHYO+BsDRAXHhuJXsEFbdIEGZQWUkNVNzGA9NZUVBIQL7jASR0AclE4Pb7JN3BO72mG92+o8UG3nybj+mASh0FsLKn9GPxDrEcS2Au35BzHO1BksriIJdpqWjKR1wlpR4fN977rZqI+XbYjYDgVDpcYQalOYKMiuQbB3G6Pu/HlMbi9a0EMkksXtjvvXTfgMKAEZRN/i/O7yD8Da2S2Bdh3ICWfp8yuMkYl5a4df4vVWt4UF0yyqEnaT6swYyWB8/j111Y1ERS9oB0SLMtBGDEBD1PEHwtdjUEAHnqmoHU4wCDAoAS+lHwtu9eQLUAgmxVvAuMB9cELMV3m8EUtcBYYI9nkNIEEJYrQeUHfnzzRyC39j8CgSkir/E0P2odnAmAqDnDIhqrtV9BDNS2POjv/0pwKr6z1h/PMz3uf9ykFYq9TtoAXSwpz0HljdvBCVAPY6t7osv6gFhMpkX13rcfXQMIpuTsfTibkfOPRAC2meLRipI4mDPwMD5x+v3+Ey+qEfACwoUEkKQSMZxYJDz9R68PyP43yvo2aYf881rNQbZgRU/jp80QnW/hdXqJxMvCFxXQSNHpE8QiF4XI+wFfQcw7VL2Md7RRajsKgh2D+6SLAKPF356+/7yXYBTUgFy/38StUjFHweD+iiHh8/LV/i/TSvGk4L5x7F6AsIKbgb4C0YjgdGRIToGUx7cgS3JKP8pRcgak95BJGQbjaJdBYQ1qHYnYHL8F45QgHx2gLMQ2cDxBD/4SeR0LSDi5XzPQNjM4ySE/HGG6g+ugltLNSARn281BPtNO72eJLjdX4ITSEgpQvJYFEUg24f1qAYQNQdxx6Q/RcB85j9f+03zf2QV33IDPHegNgPABTfqFR8cZK9TA7/ll0EQbUUHW8Gr1d+MSadia+LRHwhunv87yWoJ3h/pRDwJAbDNQQFd2P2mH4kP/wDT/ZeN3CK3+ZjvgVpw4r20AMafb58j4N1UMknuj6iCx883PU9g2VHVH5JX2eEcPghSgRBCKPzK0Q3fknwPN0Hk0CyC0zBkz//7duEetgFjVtypASDI4CsknYJgYDhqsBxxy29+eyxrAZX75EEf8f+CkOcijMDDHx4ASYGGu8WHgPwpHJc0qOG8FgFTuVk0cRZVePFwHEIUEu8xSHoL5qWg4I7/HgOKXe2dcnu2SSdCGIDTA+AcxY1zYL6Q6AAFu+/1GvjKPSe"+"EoJV3NiM4Dz9C6oWkEav+NWjPWXNOIkKgNTi2I8LeBgaZHJxqrC4oNXoB9pzzMws/OW3ghSyQJgjbygOVEDhoj4nHLld8HPD6UUMFVLIgKrTL7cFoBRLQgEdXIseZ2/HhFPKbk4d5tYWwwR0nIFQSD2P5gQhs6meVfB+Bkyz2fOIvX/zxqsSODuAGIOLtPNnmIPCrv6Kqvgz3q4tCwNl9lWYfnsdHj2HTgQw5IBHwULmfSu1jEV3gDFSxTBmqSEVqiYK2IkWcRiAkwV/cyW9YhqHXDw9dkNQAcO6HFNJT7oChfrPUYc3KY17zAd+evAwF2w5SCKLV4EuCEKsKfjBVWHu9Q9Arh4CoBqEMWYBsNX7YgKP/69uC3M7/mOOz232QT+ox4iCyJGEFP4oBHd+GVvXBwX35nqp7qeIbV6L6tdZub3ueJ+gBIKgC6S5gOQFxDoGr+Bv2nzqbknd7ph/EmXzO0o+kZdc/wqvQkAOUffVMzKtYgx5Vob1/+HAfCdzHSiXHenX35/2JTr3KZ9Ruj2lYiMhLIFoNyMq9hFroeYMTE0bSLbhb4l3YlFPa6hMd2jk8dmrDgdQCnC4/+ANFlYTB6ATlx2GDGXP1rvL+SnWHw+cJes5/rRWt4H2pw9GklD4uSMpwasIQiaYR92gIyFX5S8dtRZt/nCAH48VXW3hRE/HKOsGquj8EM85Q9cfeAV4XwNGAlmIFIwPYrfLKuxV476RRetzcdeAsRSZhiHizCKEIOHn3EMOWy5X4uIJnXX6sFiBFLaBm/THOQAkVJK9j6TKwiSDTBWpwHkSPQJX7U959uAkoaTUuug6oQCBz1Zlxm0OJSIoIw04M+7zCGuYiznCfHww9AN6Ir+HXA7lfn2oBSJ2FOOh8SzINfmcAyITq8JX/sOMPx6A9LeYtVfwgCBZhdu25OB9/XmWWNPUEPD5dUuJ68wd1AqD2+w1PI9KxE9BW5t3z/igdYGWiL7L+wPv9jgVY8f0ZcbCKCuLAHN+c5wa69Zpr0J9t2KnpAGzyiAIPiFalJ8/xXrrA6Y+/8NoDnWCPNwFJzf5DpVkHte8hx76P+HU1+HEytEeSEIzAsu5r6wPJGu6oLz8VrKofXLce+ywIHhNa/Dmw8LrptWXZ4NKZm4pr/QQ7Qk8ehMrPtAF7PQCD309QgRgRZMKgAbFREAfBBXNalbHA9cEHMo4IgIUuPjjBWEUFEQpYTkhVO43eRiynJw9Jjj8TOUIlJExK+0wA4gWgQvcFBHAc7P4/u78/Ff4CC5ATB3P3oUwFClYgcALcxzp/B9Ez4DUV8RjBbsCBrMH4dLNwIDaCGhA6o3pXksdBvYBsktrXDgNJKAFy1Z+ZGIy5NXgXoBT8a3ZgVSPIUAMV6DjLxhsV8wX4n4ibbONObHNyCr8Z4FinNFjg8ziiF5zSV8A99u7Zdf5OisvVaAAAG3VJREFU/kIPAJLWX3hUIFD6o7MD4WkHIMXBk4IftSrPNBJVk0OoC7ice8HGS8XBKDoz/YFBLaQi392lGpCMJfhD9xVkx5Xbj73P9V4m1j0v73x9FjDDPlYvATkgFAVWcdNvJBamliOjAwRV0EpeRymAe717kMYRyy/j5FwFBX0fP7Dyx8gq8wn2ZXi8GfGYR+lFcGJSxa3Y84WgzBHetlU4cvKY44Ps4iP9fsgsPGEhQTAcHqwwGCj61SoPexKwasXFqtxq8qhD9SixoBBYcJEDNzmIoi3J7QkoJActVHocTVpPBCDhElAvMDK1PT/Sq3DwB/ygmyB9GNhYDH4so4Foy48kkPtZfZEv1PQTxYpyX0EI3Bu+/5krcN8fgwVdwWu2JNVNWAk+PcOOPMNdGFyAZ5Aj6gicgzNfwuHZg0HrLxBWfjSRl88fVCo/apX/IBrIvf65ZxtEoK9Bec4KZIPLe76osQns46NwW0pUPCPAyMc4A/KXOwZzFLGbAqD5xhhbgBcWfoJBAlarcCSQgdQJ+Movnih4gjZQTw51rz588y/ZgxVUEAQ8soCfX8OR26JwujCLGFAMsOjnwGrlPuQw9D/PPv8BYVR7pG/eeFtQpsLzR2KFI8SwKj9KlX++HeLOPuSBKrKeHBi7L4b+Kx184+ptAp4Trcscv69oARVYzWgaK01H1X0K3zNSmARKtxXYHvwJuT+8gLGGWgpHcWOmBeljFB2Ckg6wiAYOqfxEK3GMCAj6kIiTWdCBCXhkjUKMgJcLk271N9uLSbtvvK0S69OXAvoA5z94VsFubbmZvx4QAnXgBnJxENyQjy38wef81uPhxMpPJIQzr5ckuUTKe0wZyN57iFTWga8GvCwlh5UqvYgmaNV9XSxEVWs40kkosFwA70RgNOu8mLZfR6wDiwRa35y7j08NksqPQhcfkRBK/J8R75Iz+9C8gJpqzwiIeZII3QnYOkJWbVEI5jNuA+o2BwK82ifwnpSgHwaC+GNAdmW2VXfC+vPu6wR6lBj84C9WfvivZyUhZMJlJhjSukDlFJ3g4AvGJfC1iEpQJ/CaEd7G9wds7p71+odruKrHip/C7RdsxeVjzIxhoNkFGOW/+sk/YVAGtltfzZAIfzix8gcHhZCXpcGN2u69qWqD9OlRFAy7x2fQBhHUiETB+DocqvArYt98f+AEAXApsEmEcNLC0t2uPHCqPQIXwHYDfI4/9+8LMpchqr5HK39MJSrBXwnutNqjovjHFdq+fcHLp7YLR4mGgduW5hFpAXUoL4cTTuW5HJSkB5PC0S7A+8c+837DyoM1J9iv/po/o3BunlDqPjOSO/YbLFd+FGy9sxKFeT8b+nLNPrkAyD53FtT27yUS32yqUaEGTMBiASGcZ0FmK8nWxbvjC1q6WQC4VdWdAcBY8eFoAzIrC0b7Wt8wlPcIdE1FhUWeKU1Igv8Q/0dl4k/NnYSxdlDon8diUDeuQB4c8XVzcahRgyyZmNC+LAgeCfSVALde8/t1DCYawNoePGT83wlOpFUdOZKwxn89OsMEf0X8CxJCBN/dwKbFwkSMgx0ACJJDJD4iC1JEYh6XcEqVHpx4+J4I4UiAl26r5x64sttvSlAn3LBuQCz6edU8C+J5epBrC4YP52EFDgHrCw1B0eU9bOaTgh3wmYvQV3Oqqcf53XnVNXUBELX1xtSgFrirlII5d3HFulxBCNEfZx0h7K2f34XwdHpuYQcguN189Ow/nPXclaUcqMH5leCXjKOjbv3F0a7i2ZaRHmBe5zwnhA9S736ZC8AH8LHkg/T5znYgmES1dtuzGo92qwHIquiWX+4KgVLd8utv9Ml1BQNhEJW/FOgweiTguCUoQHkEwYhjfQIgm8eAzPKzHqAG5xGiiPyxeGRRaYetUpDVpHVC1T9bHGyaknb/TQTnuG7rDYwYCUT7/cMjtILzA+Go/FPw581F/mWeTkDuBsBCAK8ki+A29nMzPn4Rzjv6QV7xWW4fzQFUxb9jQQ1qc28kMi4mDl1NBr4usIsz5ltZqNm7AeJXfuTHd7nioLEyPBISU+8/tP1AC4Il/n+YGmjg2NiBRdl6yCw//zG5ph7bqaBuz8B4VMU/TqSsNPbwCeZA1cdxyG9SgKzRZPL+GXFOiH1/SFZ9wX8M3zUgvH8a4rMBjZj/h1W9MrwTiN6MlsCKiI4gycBzgV/xUaQGjGDHwHiYi0VIzeEAasCpNuL76AC7BIEl7i4AIxnAfoMxk35eJbZ68wWEUChs8IPz/EEE9BkUoNA4RCWSLJkY1h0Y/dG9bVCtUVPe7QRhtStXG4nOECDfUxc4Uw/Ik8JkA9o9+a83IrfHH11EdFUWc4phNgVFWkPsIHBnCvCCYBSgqEN9qtoXuwHhByYoJJA7BxIkkRwpDGgAHo+vQ3ZGOwCFJCJKUAx4MBpFZWvReeLgtBBkDDQu2OJxXa7SE/P4ZiUPHABjY1DsFIhPAaygWewiXK72hHjow/k8gCL6gKES8qcDZ7A+EhYlWCPGCX1wXIwzkQEKt8cP6iqkC0FEhFj/ZYtvXCtwuBLcDT5wXN+9H6ZEIkTwV/x/s78fXFX3siWHEKrC3tw7EFZ31Ll7ttknQyEMGgAqCaVe1bGk8r8nFWCQQR0h7CY0dsU/mIeIuA1AGCo02Q0YVXxub36sG1Qgfo0CBBUXxap+ECFEycQVyViBEBFPt14TK9rZHB9EwMG7DPXOv0OVHkdtx7OSCXfb3av4CFZGTwQBwT7/hKPHE4PzpJ4L4+FM9r1n8B+B+9R9I4Fu9brYUZgCunZWNxdQgIs8mASBQ4F8hJpEiaf4GPihk8FdAxin/kybjZjTj+mAQy6ihZ9whDvHAWB6BKrBXQr+5SBfqPaINwiz12UIwoTmbPACZY/fshBBBKNlW8ZCHwH/cVKSOZMm4Mxk4OwE9JeB+EFkn1IzcPQoiSB4vGgNeJSoik1A7m0TCmE/HrggB+/1M12C1Z18ACGoIeH1pH2IhAqFWgBq+kDFEWAvA3X8tpW0cnSD5WAOriOHhnYraF1eLTkS8P/QsHUBdtMPnOrMaANJE9AZiaKWII5Ue/8PTHn/UcCSTgIF2xN4zdmAQYIAKeBFl6FiO0aKfq5jcImHfPwTxcEdRmD3LcFoAva1Hdjm9UgGggI9YOoPkOBYLsT8HlG3nucMDGkOOJ8CkNOELdSO7D5qqAeJYBb2GpABgRi2gxLITgrOQ9C937HgB+0i7MeRx3gfPWCXLtgbLJAu/gCFBPzRX8eADJqCvA3FViC/BlOQC4LZyrBq8BdQAOUKoKjqR7v7EFfVFMojPgEoSlJesNIePyLHwW9NRgq7E6HvUN8A0yj0wyWDHRZ3J2A1jHdMyu3hCGwSDwdRir7h9VP7AKLgPoMCgKziOFLtrUm8aIFHlgxYfz8WBYUU55iAXauo+evJaIK/NTgRJM9sUcZRzcCnMdNKMJc7usnAyrpxHYkTRHK+n1HxS01LheAHqRWwKIDqLvQC0+PupHZgBawfVGsiniTVHwZHRqbUI/D4Cd+ftgyLAR1ehkIiqaKFw7MJEwUIuK5zsu4svoFYCFKgBJZACBuppOId2RDkPZas8H9kULcA9a0KTCQDGtpnzT+RMJiOGseHl4BQ1C29AWUXIIf/OIwwqoNEK3SCuA7FRiBrE9B4/PcrGJ1OQNj83F4Xbol/TgVHfMiIZLAdcaVkgh8sLrd+liNQH/FqsNTfj15m1J0X+ffZuq/gTY7QnvIfJz6UzBJLs83ItQpt3RfZz5iuGfNPajpngUm0R8DoA5jDlzsOTAwZjzsC3Jjxg7H914PjlcskGdghgx9HG4OOQH34uwQyzz61/0qiYNQjXxECuWYbGM/DrjtPH/Mw/K+gBLLSA+cEfPr4MroArzcDuybbr8Zc72i2UnzeHnTgzD4Ug78SzIvCoARVOQxaFFR3TzWnkkHUVFShEuqKxZnKz4p4YYcf8ZhYhuu8wFgSHcuuwCJagI4bgchJQK/qe9c/RT6nGcg6KGREJpb+MI0EY/b0jcsni3AJBeCQNsBOFVYoApcM2Aom4VFgIRdHpeIG8D3YaxBD+qCiQ+rBOSVnci8hzkAG1t/pgHA4uwDzmu8xFKkkkIqCfkIRs204r/hiDgutoAAcowBMZ9+KS0CcXVBOHCvJw2jMQSJyeoeExF2DuTuRcuWAo9sefyUQ6/oBaIjPtiRH1KvQKvygAHb171d+vc4GRMDPoxN/kL5pwlVh1mBQ1quQJAJ5j0TgOAis+h8d3mnC8xTKE34+8sDNjyVXE6nFMN+H39TQDmocHScENvN74LoGScGU4f7g6IG3n3C3qnG6JBS+Z5tHOOzRYQx+u7MZmAl0OSsRLAS/VIKfRAWU92+12aaVPksGDBWQuCMvgNy2M2Mt8EwqbjosZAec5xLEAmXmcFTHiOWARWglpNpjdEtBQRxJJU5VL5/7F1X86XntXgUK4q+KggsUoIIK8oA+kgy4+zLaACqQGTVOX6MBWdehL6BxHn+tlyBMDGAqufd7WOX5WTJwKYDfXJJP2GXDPk7Tj5Ed7BOG7DMFaBRAJgI/+H2Ngeb2SKb0zkoGlQBHkefDr7xMA5HZeJPtKIzyApI9gmnPgf1c3mulfhe0gFekDCdNFnrOwi4Gs6eTACNjB+Uegcgojog4V25P8bctRYY6RL8AJklE9ACFAGZdBEahd4d4CmghFhbzcwaXYH5qTlS6DY+KfNH5Avzjo2JJ0poDkSCMxLn73H/eB+ifvgvyIFCWAji7BWC8hd0qj0FziMdrS70BlVbgamIgcmotGZDNPwm0L9l5iHv7WRoAFx57ScFS2r2iwot8oKu8l+TOCOg2mZ2nFdjTgOFQENzKkJ8OjEnsE8f6AzyXwT6MNF3RDRnuj0Lwo6wTlBMDIyqaz6G+RiLJMg/KUrQV/rh9uH0tWduwoxmky0kSMQ+rnXxZsGadgnxfgk1pCnsIsGYltvfdzTOBIclIsN8MLAGcz5gBwj94AE8DuC9Molip/JGwB57nRyJiyD3pyk6q5ij+3TzRLohcqyqCEQBTepF15+WVmW8SEr5jMUUkx3oMIsrH3ndwAQganKzyMpOJNxMQooGBYwcByw7axIhgPRGEr6GSGJhkAELoQ1YRg+dPeD5IIRDIqq5PA2Jh0Rq0YcS8XBi0ghGRFpCtWTdum5+yLOsQf2EuYY8AfnbQZDgCjHxBSKwTGpt8QCIDVH3/4H5OwEvldhliINwAFLsEyyIfGKV+vm3eEehVqKTdNxtDiPoLHCRiuwTJxCECxMDqDjTvZ63KaPKvRgV2i/F3ohm88V8LN8hgJcXD5pVGIPPNn9EBqSQC0I4AMxBUcQNCkarkFgSn/oCs9GCVep4eUG5BRAOcQOCWlGSc3If0IFqRfURQGRrKewPKEJ9sLnIowKCcw+f48N6UHjqYtgInaCCkBbPSj8VEkCr2g8U43wY1xX/BNkwreQrzg+oaJghOCGTU8RBxuIp6VFOGoEXgEsBLIgV6gBgxoLSI5CgiYNT+GBHsU01GthrceiMUtv9KgAYktgVNeGrBbtiOQVi9x8WjiAW7UNUnm4Vet7WtsFgDCDYEwQ/EVL1PnQf/xCDLTowTh4c4HPRDoQaiwhKIAae4B7xgCBydI/CDPOrevK0FR4p6w3VfoXgQiB3T1N8Y1PCD0X19JqcHGfzB5WkQE4p/kdeXBcEVUXEIFqSij82lMyrWq/7c+LFHA7z5/dwOHHg8s/Y8C2CmhbmALtare+4UWLfb25BmXABKABTniC8gRAP2yvDAiUAsElnrxFzITQa/sAFecAOY7zPV/8jMQHSbWAiUPGkQNABhw85xrSCv+mMSzFR8+7mjw01A8f4F8S/td4jnDHYxpT8/OEyV3gz2+GTfdAeAszswfJNGlQhEIjB0Bls0BKn4Iw7WKu9f1gmSagmvqleEwJwnZwjO7npz1HdCJ1hS/mlBcRXyF3i/M7NxqJFoeH27z7nnJaBmpUZKHsTbGUc1ALEoIGsGYl9ixS50gjAT/VhB8IzvGTrBVfWEz1MzAkRFTtecW731VdjNQPukVdhdn0Y8d/a7WYH6i/TBPBzUFwAlHwtGHOQISrgb1AMUgDETTA3+THAdeRJhg59V/Ektofa9I8wxVICkC7QQSAd2O3cftzPzdMK6aA4iZI4ILfYRbb9RgqICt2AxVnYZ4kkBvHOBxT/zN9ybHx/f5Ql2fkGCX6ANm6F8WCfqAS+Eq5AGcHJd2IFHagTMHAAj+mWBnDXuc81CjhsAi5dL2K8QCYI1aJ/PJtSSxEFXASv7C2I3ZB9/a0j/7nDn/j1pHsz9Jr8fNpxPBUAUUYD4wz5GBlmyAiORjtAIGDFwzSUwqiNZ1d1tPiB7/Q9VeI9KeJU16/knkEeQJEALjY4rkp74fCZiMDSA/PgvT/aT2gYgp5E/P29AKBQAo6TRth5T4VesQFb0i4K7RA2MZpgyFXCEQHCOixuYMPgy2L7+45ezSSKt2oUkURlpXkEMOLSiXPuDQZjk63N5bmzOSxQdLHX7AhwUEA0BAeQPJIQzkAuFlOK/GtyLdiGDKEBdllQ7YouxV2Xdwza9So4Kp5Z0yAgUhTlJgFzSFrznIHYIwKcCu2/L3LsCg6UI1b1/CA+ApIV5/32HqOIjdQusE4azip5Wc1b0q/QGIAlaWEJbXP3r/L+AEipw/+BtkQVY9fIM2i/ZhgVEgJO6DZ1ksVtlYdoQAPhVO0oKmYBmnAYco4DRCRB3TwCziptaE0auER9/VzRqKNOEYINOQg2m1l9GpGNQAhh1v6UmxNQh2M4+LmlUzll0OTjYQOaGlZAEMCrdhmBphaMBwBADrSQQc3//He8KgFETT7p6BHnjj2X9EXsDjrgBS6ihoAmcSQVYmE4JgYWFpp1waAQRoqDzxDhU+HxSnZHz/9JEY6Y5MJA+cwoWrt99+U3Mc/9g/NQTFaigAEtwB1yBzwzucZSX7RZEILhR1d5GDCsBLVUdIQvsldZfEJt5i/MHx2hGJZFkVVyK242iFeh58oBUFqIQbkfp2DV2X0CkAYgv1sU+P+I/HmBu8nErugdRnUWhfp+A/ddlbEH3uQlBsNobUEMHasK1HOYn8BEEvCUaiuigXRIKj+sGOPA4KAWz9/s7WxcgB4+a6/fI2osEwv4yOENAiPf+wQhbc/5f0gGisWuQaRFmGoIqguARWsBQgTTocDLMT5OJUQnhqdCEig+/EShKSEgTVV0MBMnz04BcshPnLk/+OaV0/dwKzB4QUt1NB6uTDfGOP+cNm9mEsBAFiM7AQh9AKVEU75vy68jeOxrUC4mDEuYO0oLqoSdHaEF2eXYYSm0V+oEOwpLmYFOF3Z4CmAeBTIGueiIw2xoKPzDBJVBXQ5g5O8/twwA+QguIjJt3+g0NQEcDfUXgO5gsqlTBLkQLdl86K3CWneitQ8sg/5oWAUJP2C3V3RoEyji5n4b9lB4t9pz2CA+cAFn1Z9I/uzYsU/ELtEBOCHYQQqGcFejV+yeuRJX31zsKV5IGjway9z6PLDxKwNEPsBuOEiqw57jGgOtZ1Y++T50AuMFl7hPIbhskiOwsATtRoc7rS7dXrpcgrMCGJca6ELJo+Y0be0BW5ZKGcFz4y8W9BduwcDnK9iO5fagsKpp9ANnvDPxeP8THNyIVFo1AMas8Qk5v2Ytm0LCCYAXqn+wQsPTBh/5Bcnne14Os3uCQt28vsK1WUESJFviBgAW//3u9PLxusXchcCR2WsNzv/ImvgZzzkUByDUAIrjTvmSHAowpJBQE4SUlxMxnARlQbIqkArVAJ6pBBvELCCKlkyCDAP45BYfEPfcUpfMch3Vn4bheYK4E66BxAxHSVd5INgEPgU/NBCDfNQ8Ho1CoINAPQAW/QT8OCIZlNFCB84XhoDChFByHGjx35v9BLgyhmojqHYb5QYXnuAecvua0hZe6BV9f7v4ibvgvamrmAc1TmaEir0LQ9h97eYAYVoM/nWA60i8Q3Ifezha9BqaaL3zvqd6IAuwwLSCCuCLuJWch4h30giPtyiAphKEBcCu9BV5wwzkMxID8rhMwdwMhcSFgrBT3RUTQboAUg3+p+Qe1IGarOioVnazmefV3lHpwA0AcLWCahUiXwePHWJsP+GH1gnp/we5KfOhJAbsj0H/BIEb04TbrTPsAyb2LLu93KwfCvn5PLAwrOXAa72eEQRo1CNdw5IprsAZ3hApy9zlcITG2vpCihsRSYxNS+J4vdBZ6B52eqRcQ/QXmSjAWSfa/5GA5qEg4iJFtm624AqXLrSA2gx8p1Mdqcghv41S0lSp/xAYs9gakQc4Ie2RTUYwYgt748mV+FU1Xgp14eW3XYZ6cdqGTNHwHICTwEeTPl0jEZwIgP9gDEaogeg5IHWCF+1eoAhvEKPB/EAeTRsM/pSAP5wjWEUMM1/NJRhwJbpJSgK7S7zF3EOsI5jBQBK9DV80Z8Y0COzvmWzJXgDl40KEC6cqvqgi4OB5cpgLFYK/1CvDiItXqC6/S87wfAUfPtxqfGNzlYaOjlf1IsHPPvffHgDAoEeEST4ZLZUd/RSo91/BjXY5ggWgQ4In3fyj4mUqPrInHOCLKO3wUwRsfyXpt1nEIRLrqcWeTuk7bigsbid1zD4iDRQtnIdQsyIXnFCn1I9D7ADgxEhOvR5AJosoUbu1FkJyYCi9OhQERoIx+4AX/YqUXQhtYEwKN4Cy1HntLMmtaAQpqfrT/UCoLSxeswjA5UWPPi0mjajUWxMTdVusNvt/ChMdmILK5IRMFu90BMEzFYHdg2GAgeYVHMMJIBTA7EFTx/5fpgTFXz9w/en0ZjD8kCDoKPNGwlB01BmoWQbh+AxR689mBponGJOr9OwmMu3dtJ/ylW1Tik4ElUPmR9RqII+pVhD9ychABMQ51gOIZg+/G+5mGIzLB1JJC5WhzYjhJ7IWmLDpA8jzsAafUPkB2WnFBF4iSxkq1ty7f25rv/+EQLOxs2oUdTSA9HIR9swdBlCcFe9owPC3XWDDC0ISVzsEVbSCF/sWdA5Fu4HJqankp2SeQCYYrImNalfmhpVxYrGkUS4LeSUjg8dD7+D7w/ybIfy7vlB9/HJ978zr7/45Qgajzj+4EjIK/ULHPRAOlKr/aG0AFcqCyu0GcW45Igh6JMJmhA49/U+cEssHNJhtXDC1MOya3j/sAiAGcrEtqtgjBD6wEzSDc7D8o6C8rIqAZyPk+NQoNLAZ1hR64Yl1FBY648smUYKnSg1Xwk/0DyRyArByMUobyByhCcPnOaPyoegREFS4jNfYAw+IHCjdC1J2WDZBke/OyN85J24WiXwDYPoJyYuCD238ulvuzwt6KgHf0shWKsqCFFGjB/w8HU8eeTED9wAAAAABJRU5ErkJggg==",ame="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAF9UlEQVR4nGWVy64eVxGF16X27u7/HMcyuZGYAINwmTBigngBXoc34El4B0ZMGDJjFCExQUIKiRKZYBITHdvn/L1rF4P+c+yEUqmH9WmtrrWLkdB4C1/91h/9yn947D8+8CfdlBeGGAMtqwNd6K7VWAJrw9qwLtw2nDaernh6wKuHPD3S1Vs6vaPT97W9r/Wx1seKUWj7Uzz6vX79T//wF/Gbx/7rw/jsFB/39nlrX7q99LKrp5bJZXAtrqW1uJIncbNOXafBU+o0tZW28got0AJ3KACsE4OfYvmzfvDMb/+4//Td9snD9rfr9vHWnyz9361/1fpNLLde0mt5pTZ7a9pCm32SrqQTfZI3aqNXHAwvcAB4BPwnk/oMEcqX8eaz1t9cHjxs7133f5z6p2v/Ylme9eWmLbexjlhnrPBirz3WxWv30rw0L/Yi96PpDrcDcPMEfq+qvQCfsFF1blcv2js3vb2xLNd9O/XT1p8u/Vlfnvd+25bResXC6BFLj2WJpUdv7uEe0exGByPoOAC//BH+cgNqUjfkU4mOEetde+O2vf+y8br71Nva+9q/XpYXvZ97z9ardUXrra3RerQWrUU4myLk4AzYiADwJ+NRQ41i7MSNEBIcM5YR1+f21rnlXcPWtbVYW1/a7dL21mZvbK211lv01lpEtIi0MxTmFGzMAABAN6gF1CTPxI1gkXa5Z5xGPNrbfo6xB/bQubW9nXvkHtXDPfqIJd2bI+1mpZjmNK17QFuxDzhBJued8Fy0KLvcp7fpNzJuM3JE7daIWGKMqAylW0bLiHQ0e1ppTXEK8Qrwkzv8fUIua6oG553wQpRIme7lbfpBxm3GnoEMZ+wZlYGMlu6pNh1pT3nqALCEugCeAB2ohKqYk9hZd4JFS5ThDm/lB9N305nGtKfnNKZiqk23qZhySZOcYhHFewXfI54UMCBDOYlU3TMkSaYWaCtdwXu5yprOKUxrqk9FyUWXNKXiBfCNgucGboGAUBwUJzFYO3G+MCwFtdAn6K6UZZSyXCXBAUVdGCoS5IVxAcQNujAHKCiLLHJqDtWZh1GHV0Et8EYNqOABTUhglKJoyKBBgSwCBC6Ajz7Azz+GiJbwhFTkZCXnEM6EJcuHDmmlztCkBE2IkMGAAhQoSCBBvgYA0G6xN4DgLE5IU5iqZA1hJ8zDqCY2qktJHfEnZSpIk6bE++kEXwHUEBMCmBBBFzE5UzNZuyBRshlSSF0aEg6MaDHIgyFCPAqvA/YdIjTgQ3WBLNZkpWoQPnRIUljdGiIkHd9jumgeO0ESEI97cNTPJj6Z4ISOZh1JUSVLwiAs7pRp02aTypRUhwIzjvhfPCKF1wH/BTqwA5pQlnYyipgs6dDBQVncZatZaZUlsUxZYVq0jyfm8kNeBzz/Gu0ETrjABAURAoTJOVVJpDAoM3ZOc5olfmMK42CYMrRTAr6tIK6QiSA84VtIIEosslSTNYUkUxyS5aEDQ6tMmQ7YDMOmjziYx8E56oPEl8DdDgM2/BLeIJVw9CRSTClZg97ZrDl0BF6m49V0GTIZQL4CvNuxFj47w4ASmqUkAalYU+DBoIbK8hAG506aZTLonWFG0IMa1AAHXlegW9wFGuAJG97hhFkqiuCxUZyqSSWR5GCZHKxB7nSwDcZADHiACQ4eJ/Oot9+BvsaLQD2Hby9RUEEs1cUlcdKpmWKSQ2VyqAY56J0RiEEPOqHxXYv2W4yJuANWxBkBOKEGFcwyjlhMYdLJSjLJpA8FAxqMwXZRQA0wgdQ94Hcf4nqDFnQhBDcY5YJUIqSSpnxpRqone6ol+2Af7Il2MJJxnN/8lgIA8yWQUKItaBMRsGEdDIrQoYNTnGSyBqdZQSY16IEYaANOOKn/A+htXH+OdgLOiB1BBOEGCz5ejmO6JpGEeexVJTmohJNORqIlnVDyO4CvvsT2AGm0BVEHo0IMHeEooeQipzDFY5eSNcigLgwoGYlIKHF/ky9Z+xD/WrCfoQUuRCGAKBhlwIBRQvmSuykkMYHkqx7EAPK+/wdqEbWmfB0bfwAAAABJRU5ErkJggg==",ome="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABGSklEQVR42u3cx4tb6brvcf0DmmpUoxrUoAY1KCgwFAZjME1jjGmMTWNs2tjY2MY2DjjinHPOOeec3dXOOeecU2VlaSksSc/9aq1X0pJKqmD3Dn3upvnCSe197v38nlfS2fscW1x+kbCMloAsFY/skEY5KbVySb7JXfkoT+WtvJGX8ol/67s8lDr+o065KW65Jl7+q/zyF3/nWTpJx+gQ/7H94pPd/Oe38yduEZds4E9dK/Wykj95GX/OYvkq8/kz58h7mcmfP41/hMnyTCbIIxkn9/nv5raMlOsyTK7IELkgg6RKBshp6ScnpI8ckd5yQHrJHvmd/3578I/QjX+E32SNdOEfobMskV9lAf+vmiOdZIZ0lKnSQSZKe/7kSv7kdjKchkoFf2q59Ke+UsafWCY9pZQ/rZQ/rUS6Umcp5k8q5k8p5k8p4k8p4k8o4u928Hc7+Dsd/F1mpWLn7zArVhWpHOlsRvYC/Yf++t8A/j8fQCxrADvTA/j6vwH8/zGAaOzX/w3g/+cBaJEuEkqMMQbg/t8A2jiA8n/+AHzB7qLFx8K2zBhAA5Q16QE8+98A/q8PwOXvLYHYePEllsO666cGcPR/A/jnDaDRN0C80Ynija8QV2K3GsBlywDe5h3AVYAvAv0X4IUH4P7fAP7bB9DgGyau0BRx6yvFGd8j9YlTUp24LF+g/gDKGwbwAqwnwD1o5QD2/VcPYMT/BmD9q94/Thq0GeKMrpbG2B6pi5+S78kBJAoNoDFrAFU/PICP/+UD6PL/xwDqAlOlNjBH6sMQ6XulJnZavsWvyGcG8D7BABJvsgZwxxiAK2sAZ9ID8P/gAF78QwbQ/v/eAGqDc6Tav1BqtA1SE90v1fpp+Rq7Ip/id+UdA3jNAJ4nPsnjRGYAN0C9whe8C+kB+BmAP2sAu/jPNx1AjRrAlzwDeNqKARz/3wD+7r+qtSXy1QdLcJN8Dx+Qb9Ez8kW/Ih9id+Vt/Jm8sgzgfqL5ARwxBuBjAN70ADbznSE5gDWMJzWARekBvGsygLFy738D+Hf+9T20Sj77VsuXwFb5oh2SL5Gz8lG/Ku8ZwJvYM3kZfyPP4h/lUeIbA6iV24lGuZ5IDcALjQ8aP4+zOYCD/Pt70wNwqQE0WAbwLWcAr/MM4FbOAP78Bw+g6L97AN/CG+Sjb6N89O+Qj9oR+Rg+J++jV+Wtfk9eMYAXsTfyhAE8jH+TuwzgVqLBGMDlhFvOJ7zyZyI5AB8D8EHjyxrAtjYN4EnWAEYYA7j8XzCAXwoMoOJvHsB/aARfwtvkvS/ZHnkfOCbvtCp5G74mb6L35KX+TJ4xgMexj/IgOYB4rdyMN8i1hFMuGQPwyDlGcJoRHE+YAzgA/l7jn1VwqwE0WgZQLUuNAXxmAB+MAcyQVxClBvCQAdxtxQD25x1A1x8ewB9tGEAljO3+7wzgU2SPvPPvlje+A/LGf0LeBP+S16Fr8jJyT55Hn8kT/Y080j/K/dhXuROvYQD1cjWeHIBL/lIDOEXH6TAdoD0JcwBbGcAmBrCeL4Br+AWQO4DZ/MQ0B/C8mQGczxnA4YIDaM0LUNmqAfz2LxmA/b9xAB8iB+VN4IC88h2Rl/5T8jJwXl5o1+V56L48jTyTx9HX8kD/IHf1r3IrViPXY/VyJd4oF+IuqYq75SzYJ0E/ZgzAI/tpD6/DDgaylZdiE9efHMBqYwDfGcBXBvBJ5uUMYJIxgAeWAVyzDODcv2gAA35oAEV5BpAZwT9sAO+iR+VV4Ii88B2X576z8tx/QZ4Fb8gT7b48Dj+Vh5HXcj/6Qe7oX+SmXi3XYnVyOdbAAJwMwCVnGMHJuEeOAn/IGICbAbiMAWzhC+NGvjOs49fD6kSNrFADWGgM4L0awEs1gMeWAdxUA7jUxgGs+Le8AP+nBvAmelJeBE/IM99peeqrkif+S/I4cFMeMYAHoadyP/xK7kTey63oF7muf5creq1c4hU4H2uUczGXnGYEJxjBETpE+4DfbQzAqQZQzwBqZVWiWlbwS2JJ4ossTHxUA3ijBvDMGMB4YwB3ZFTeAZz6FwzA+gL0+jcN4L/sl8BL/Yw8004Df04e+87LI98Veei/JQ+CD+Se9lTuhF7JrfB7uRH5JNei3+SyXiMX9Hqp0hvkbMwppxjBcTrCEA7SXtrF67Ad/C1c/wauf60awHJjAJ8ZwAeZm3gnsxJvZHrihUxNpAZwvxUDOKQGsJsBbP+bB/A7df/JAfzD/mcBz3WuXvtTHvmr5IHvotz3XZN7DOBu4IHcCT6VW9oruRF6J9fCn+RK5KtcjFbL+Wid/MkITuuNcpIRHKPDjGA/8HtoJ98RtvFrYTNfGDeAv5bnf2XiOwP4KosTn2SBMYC3DOCVMYApiacyKfFIxifuy5hEcgA3YLrKAC7KYPlLBjKA/nKSARzLM4DNagCr/4UD6PRvGsB/YARPda5eOy8PAhfknu+y3PVdlzu+O3LL/0BuBp7Kde2lXNPeyZXQR7kU/irnI9+lKlojZxnBKV6B44zgCB3iI2E/7aEd4G8Ff1O8Tjbw03FNvFpW8jNyGc//Yp7/BYn3lgE8ZwBPZKIxgHsM4LaMSlyXEYkrMjTBABJVDOCsMYC+lgH0VAPo/hMDqGhxAJ1bOYCyf+4AHuuX+Ky/yMVfAv6q3PLdlJsM4Ib/oVxnANeCL+WK9lYuaR/kQuiLVIW/yblItZyO1spJRnCMl+AwQzhAe2kXXxB38B1hC18WN4K/HvzV8e8M4KssjX+WRfGPMp/nfw7P/8zES5mWHsADGZe4ywBuGQMYbgzggjmAxBnpn2AAiaPSJ5EcwD4GsAuubWoA6/83gB/964F+Re6Grsjt4FW56b8uN3y35LrvrlzzPZQr/qdyOfBSLgbfyHntvVRpn+Rc6KucCX+Xk5EaOR6plSOM4FC0XvYzhD20U6+TbeBvidXKBn42rot9l1Vc/4r4FwbwiQF8kHnxtzI7/lpmxl8wgGcyOfE4awAjE9cYwGXLAE4zgBMM4AgDOCi9E3ulZ4IBJBhAYpN0S6QGsByyxX/bAEqyBtDxJwbwX/xL4J5+TW6Hr8nN4HW57r8B/G254rsnl32P5BIDuOB/IecDb6Qq+F7OaR/ljPZFToW+yXFGcJQRHGYEB3gN9tJufiHsoK18UdzET8YN4K+JfZOVsa+yPPZJlsQ+yML4OwbwhgG8khnx5zI1/lQmxx/JhPh9BnBHRiduqgFcYgDnGcCfWQP4Iz2AndkDSKySLgkGkGAAifnyS2K2GsCUv2UAxQUH8A//HwbdiV2Xm2HwtRtyNXAL/DtyyXdfLjCA876n8hcDqAq8lnOBd3Im+EFO8QqcYATHGMFhRnAwXC37GcIe2sl3g+18SdwC/kZ+Mq7Xv8lq/SsD+CzLYh9lcey9LIi9lbmx1zIr/lKmx58xgCcyKf6QAdyTsfHbMjp+Q0bGrxoDGMIABiXOqQEcVwM4wAD2qAFsVQNYl38ACQaQYAAJBpBgAIm2DKDrDwzg7/gp+G8ewc3YTbkevilXtZs897flov8u+PfBfyRVDOCc74Wc9b+S04G3cpJX4ETwoxzTPssR7ascYgT7+U6whyHs4svhDtoa/S6b+Lm4Afi1+hdZpX+WFfpHWap/kEWxdzI/9kbmxF7JzNgLmR57KlPijxnAAxkfv8sAbjEAvgDGr8iw+EUZEv9LBsX5CZjgJ6AxgMMMgF8AxgB2SA9jABuNAXRt7QASDCDBABIMIMEAEgwgwQAShQbQ+n9VUNP/WcA/4HvA9RhXH7nFl7xbciFwR84zgCrfA/mTAZzzPZEzvudy2v9STvrfyHFegaO8AkcYwSFGsJ+XYC/fCXbTDoawLfJNtvBTcSOtj36RNdFPshL85eAv0d/JQv2tzNNfyWzwZ8aeybTYE5kceyQTY/dlfOyOjInflFHxawzgMgO4wACqGMBZGRDnJ2D8mPSNH8oZwBY1gLUMYCUDWMYAFlkGML1tA0gwgAQDSDCARKEBFP7nA/6RA7jCAC5FbssFDfwg+P57wD8A/pGcZgAnGcAJ30s57n8tR/1v5XDgvRxiBPsZwV4+DvYwhJ38OthOW8JfZBNtiHyWtZFPsir6UVZEP8jS6DtZBP4C/bXM1V/KLP25zNCfylT9MQN4IBNid2Vc7LaMid2QUTGe/xif/3E+/+N/MoDTagD8AkgOIM4A4rulZ5wBxJMD2JBnAPPyDGAs+KPyDKBf4QEkGECCASQYQIIBJP5d/7OAf+MILvH/8Rcid+Sv0B35kwGcC9zn4h/IKQZwkgEc9z2TY3wMHPG9kkO8AgcZwX5GsJcR7GEEO/liuJ0hbAl9ks20IfxR1tHqyAdZGXkvyyPvZEn0rSyMvpZ50ZcyR+f69WcyHfwp+kOZpN+XCfodGcsQR/N9ZGTsCgO4KENjf8ngGJ//DKB//DgD4BdAnC+A8X0MgF8A8e3mAOIb5Lf4GukaTw5gqWUAsywDmNDGAXQrPIAEA0gwgAQDSDCABANIMIBEqZE9UaIqVhVZcqSzJf5LBnCep7cqeoefd3flrHaPz/r7PPcPuPpH4D+RowzgMK/AIV6BA3wX2M8I9vJ9YDcfBzv5TrCdIWzVPshm2hj6IOtpTei9rAy/kxW0NPJWFkVeywLw50ZfyOzoM5kRfSLT9EcyWX8gE/W7Ml6/LWP1GzKaXyQjYjz/sQsMoIoBnJWBsZPSP8bnf+wwA+ALYHwvA+ALYHwbA9icPYA4A4gvlF/jc+WXeGoAk/+GAfzSigGUtXEAagS5/bsHUMUAzkXv8tv+Lt/w78lJBnCcARxlAEd8j4F/KgcZwH5egX2MYA8j2M0IdjCC7bQ1+E4200btnayntbQq9FZW0rLwG1kSfiULIy9lXuSFzIk8k1ngT48+lqnRBzI5es+4/nH6TRmjX5dR+hUZoV+SYfp5GRLj+Y/x/BsD4PM/xvMf2y+9Y3z+x3YwgK0MgF8AcX4CxlczgBUMYEn2AOLTpGOcAcStAxje4gBK/5MDSGfL9K/86xwDOM0ATjGAEwzgePC+HAk8kMP+R+A/lgO8Avt5BfYygj2MYBcj2MEItvOdYEvgjWymjcE3sp7Wam9kNa2k5aFXsoQWhV/K/PBzmRt+JrMjT2RG5LFMizyUKdH7Mol/3PHRWzI2al7/SP2yDNe5fr1KhujnZJDOAHSe/9gRywB2mwOI8fzH+AIY4ydgfBUDWK4GsEANYGb2AOIMIM4A4gwgzgDihb4E9rAMoMvfMIDiHxxAzghy+7v+Os0ATgJxnAEcYwBHGMAhBnDQ/xD4R1z9Y+CfyG5GsJMR7GAE22gLvww2M4SNgVeyntYGX8lqWqm9kuXaS1lKi7UXsiD0XOaFnsmc8BOZGX4s08MPZWrkvkyO3JWJfPkcF+X6o9dkVJTrj15kAOcZwJ8yWD8jA/WT5gB0nn/9gPyh8/zHdjGA7WoAfAGMrZXfYiula4wBxBYbA/glPqd1A4gzgDgDiDOAOAOIM4A4A4gzgDgDiDOAeGoAnZoZQL7vAcXNvgI/PYC21NxfJ+N35Difw0cZwJHQPb7h35cDDGA/HwN7eQX2MIBdDGAHbWcEW2kLQ9jECDb4X8h6Wht4IatpZfCFLKelwefgP5eF2jOZrz2VOaHHMiv0SGaEHsi08H2Zwj/WJPAnRG7KuMh1GRO5ygAuMYALMizK9UfN6x+on5D++lHpqx9iAFy/vkd66Tulp87nf2yzGsAaYwBdYvwCiPEFMMZPwNgc6RSbwQCmMoBJDGA8AxhjGcCQtg0gzgDiDCDOAOK5A/iZL4L/xhEU6hgDOMIADnORB/kiuF+7L/sYwR5GsJtXYCevwA5GsI22MILNfCfYxAg20Hpa638uq2ll4LksDzyTpbQ4+EwWBp+A/0Tmao9ltvZIZoI/PQQ+/xiTwuCHwQ9fl7Hgj45clpGRCzI8wvVHuf7oGRkU5fqjxxkAz79+kOvfxwB2MwCef53Pf32TdNfXSzedz39jAEvVAPgFEJttDKBjjAHEGECMAcSSAxj59wwgzgDiDCBeYfZPHsARBnCIL2IHGcB+cPbyMbCHAeziy+AOXoHtvgdc/SPwH4H/WDbSBoawjtbQKlrpfyLLaWngiSymhYHHMj/4WOYGH4H/QGYyqun8uVO1uzI5dFsmhm7K+BD44WsyOnxFRoUvygjwh0W4/shZGRzh+qMnGMBR6Rfl+qP7jee/t87zr/P861sYAJ//Op//Op//Ol8AdT7/db4A6skB8AUwxi+AGD8BYxNpnDmA2EhpFxtGDCDGAGL9pTzGAGIMINaaAXTMGUBqBAwgXqZiAPF/0AAOxW/LAQawL3JH9jCA3SDtDN7jW/592ea/L1sZwRZGsMn3EPhHXP0jWUtrGMIqWknLaan/sSzmI2MhzQ88lLm8ILMZ0kyaEbwr07Q7MkW7JZO0mzJBuy7jQtdkTAj80CUZGT4vw8NVMjR8jgGclkERrj/C9Ue4/uhBcwBRnv/oDukZ3coAeP51nn+dz3+dz3+dz3+dz3+dL4A6XwB1BqAzAJ0B6AxAZwD6aKnUrQMY2HQAMQYQYwCx/AMoNgaQ7xXIMwCjYktFmbIG4PjPDmA/A9jH7/A9DGBX+I7sAGo7I9gWuMu3/Ht80bvP1d8H/z5X/wD8B7KaVjKIFbSMlvLvL6aFjGU+zeXvmc3fO4s/Y0bwjkwL3pYpwQz+eO2qjNWuyOgkfuiCjAhVybAQ+OEzMjh8UgaGjzOAI9Ivckj6RsCPcP2RXQyA649y/dGN0j3K8x9drQawjAEsYgDzGQBfAHW+AOp8AdT5AqjzBTA9gBHSTmcA+mCp0AeC38wAYgwgxgBi/BSMtXUApc0PIO5IZzOym/0nRrAnfkv26LdkV/S27OCzeXvojmxlBFuA2wTgBv9dvujdBf8eV3+fq78vK733ZQUt499eQotoIc3nv2Yu/7WzaZb/jswI3JZpgVsyJXBTJgevy8TgNRkfTOJfljHaRRmlga/9JcNDf8rQ0BkZEjolg0I8/eGj0j98WPqFuf7wPgawhwFw/ZFt8ntkMwPYwADWMgCe/yjPf5TP/yjPf5TnPzqb+AKo8/mvT1IDGEujmg5AZwA6A9AZgJ4aQPecAfxqDiDGAGIMIMYAYgwg1poBlLRtAAWzFe5nB7ArflN2MoAd/B7fFr4lW/iM3qzd5rf9HdkQuAP+Hb7o3eHq73L1Zsu9d2UpLaFF/PsLaL7vjsyl2b7b4N+SGTTNfxP8GzI5AH4giX9FxgUvyZhgEv+8jNSqZLj2pwzTzsoQ7bQMDnH9oWMyIMT1h7j+8H4GAH6Y6w9vZwBbGABf/iJcf4Rv/xGuP8LzH+H5j/L8R3n+ozz/0enEAKIMIDo+ZwBDCw9AZwA6A9AZgN6KAcQYQIwBxMpVDCBWavT3DqCFEfzMQHYwgO36TdnK7/EtDGBT6JZs4LN6A0/2Oq53DVe8yn8b+Ns8+be5+js8+Xdksfe2LKQFNM93C/xb4N+Smb6bMoOm+a/LFJrsvyYT/VdkQuCyjAuAH7ggo4PgB6tkRPCcgT80ia+dlEEaT792RPqD3y8Efmiv/BHazQC4/jCf/WGuP8z1h9dJtzDPf2QFA1jKAHj+Izz/EZ7/yExjAB2jU2iiOYAoXwCjDCA63DIAfgHo/ahP4QHoDEBnADoD0Ns4gFiJqlhVZCl3AI5/3QBaalv8hmzRb8jm6A3ZyO/yDXxDX89n9VpaHbwpq3i+V3LNy2kZwEtoMS303pT5NI/m0GzvDfCvy3Sa5rsmU2iy74qJ778k4/wXZWwSPwB+APzAORkePCNDg6dlSNDEH5jE18DXDkhfbZ/00bj+0E7pFeL6Q1x/aKP0CK1nAFx/mOsPc/3hJbRQOofnMQCe/wjPf4TP/wif/5EJDIDP/yif/9GR5gCifAGM8gsgah1A79YNQGcAOgPQGYDOAHQGoLd2AHlGoLIZ2bP7dw1gS/y6bNKvy4YoRa7LOn6br9FuyGpaGbwhK3jCl/tv8C3/BvA3ePJv8OTfAP+6zKU5NItmeq/JdJrmuwr+FfAvy0TfJZnguwj+BRnrPy+j/VUyyv+niR8AP3BKhgROyOAg+MEjMiB4iAFk8P/QdklvbYf00rh+jevXuP4Q1x/i+kMMIMSXvxDPf5jnP8zzH55FPP9hnv/IJHMAEZ7/CAOIjGAAw7IHEGUAUQYQZQDRnj8+AL1cxQD0UiO7/pMDyJvN7O8cwMb4NdmgX5P10WuyNnJN1vDbfBW/0VfybX0FX9yW8fm9hBbznC/kqhfQPJpLswGf5b0qM7xXwL8iU2mK95JMoonAj/ddkHG+8zLW95eM9iXxz8kI/1kZ7j8tw/wnTfzAMRkUAD8AfvCg9Avul75B8IMZ/J4a169x/RrXr62RbtpK+U1bzgC4/hDXH+L6Qzz/YZ7/8DTi+Q/z/Id5/iNjaJQxgHYRBhBhABF+Akb6Nx1AlAFEGUCUAUQZQJQBRFszgArLAMoyAzAqtlRklncAjtYPoFA/MoAN8auyLnZV1uhXZXXkqqwMX5UVoauynJ9qS/nGvoQWBa7yE+8qP/Gugn9F5tBsmgn4DO9lmQb4VJrivQj+BZlI473nZZz3L/CrwP9TRvnA952R4T6F7z8ug/3g+4/IwCR+4ID0C4Af2CN9ArsYAPjBbdIzCH4Q/CDXr/HNX1sFPp/9Gp/9Gtevcf2hucTzH+L5D3H9ockMgOsP8/yH+fwP8/yHef7DfP5HBmcGEOlLfP5HGECEAUR6GAMoif6WPYAoA4gygCgDiLZ1ACVNB2DkSGfT/6YBtKXUANbGr8ia2BVZpV+RlZErsiJ8RZaFrshSfqcvpkV8c18QuAL+ZX7iXQb/ksyimTQd9GmgTwV8Mk0CfQKN91aBXyVjvH/KaO85GeU9A/5p8E/KMN8JGeoD33fUxPcfkgF+8P3g+8H3gx/YIb0D26RXYIv0DGyS3wMbGMBa6R5cLd2CyetfxgC4fo3r17h+jevXZhLPf4jrD/H8h8YTz39otGUAQ4jnP8zzH2YAYQYQTg6gV2YAEQYQYQARBhApMIAoA4gygCgDiFaYNRlAaQsDyDMC3d60f+UIkq2OX5KVMdIvyfLoJVkaviRLQpdkkXZJFtJ8frbN49v7XJrNF7lZPO0zeNqn0zTQpwA+mSZy7RNAHw/6ONDH0GjgR3lPywjvKRnuBd97HPxj4B+RQb7DMtAHvu+A9Pftk74+he8H3w++H3y/wg+sk+4B8APgB3n6g1x/kG/+wQUMgOvXuH6N69f48qdx/RrPv8bzr/H8h3j+Q3z+h3j+Qzz/IQYQSg6A5z/M858cQJgBhHn+wwwg3M0ygM5SHGEAEQYQYQARBhApMIAoA4iWqcCP/k0DaJItu58dwMr4RVkRuyjL9IuyNHpRFkcuyqLQRVmgXZD5NDd4Qebw7X02zeSL3Ayaxuf6VD7Xp4A+CfSJNAH48aCP9Z4F/wz4p2Uk8COAH+49YeJ7j8pgL/jeQzLQe1AGePcb+P3A7+sD3we+D3wf+D7w/eD7wfevMfEDK2ipdA0sli4B8INcf5DrD3L9Qa5f4/o1rl/j+dd4/rXRxPVrXL/G86/x/Id4/kNcf4gBhBhAiOc/xC8A6wDCDCDchRhAOM8AIgwgwgAiDCDSzACiJapiS3/zAFpboQEsj1+QZbELskS/IIujF2Rh5IIsCJ+XeaHzMlc7L7P5zT6LZgb+kun+v/h9XwV+Fd/y/5RJNBH0JPw44MeCPoZGeU7JSM9JGeE5IcM9x2WY55gM8RwB/7DCP2Die/dKPy/43l3Sx7tD/vBuk97eLQxgEwPYIL/71ksP3xoGsEq6+cH38/T7efoDPP2B+TRHfg3wzT/A9QenEtcf5PqDPP9Bnn+N69e4fo3r14aYA9AYgMYANJ7/0B9qADz/IQYQ4gtgiAGEcgYQZgBhBhBmAOE8AzBiAJEyVakaQYEBpHOks/07RpCvpfHzsjh2Xhbp52VB9LzMj/wl88J/yZzQXzJbq5KZNCNYJdP57T6Vn3BT+CY/mS90k2iC7yz4Z8A/beCP5tpHAT8S+BHADwd+GPBDPIdlsOeQDPIclIGe/TLAs0/6e/ZIP89u6evZKX08Fnwv+F7wvQrfB76P6/cpfP8iAt/P0++fbeD/EuCbf4DrD0wirj/I9Qd5/oMMIMgAguYAKjSef43nX+tnDkBjABrPv8YAtB6WAfD8hxhAiAGEGEAoZwBhBhBmAGEGEC4wALJHSlTFZs0NIJ29af/KASyOV8nCWJUs0KtkXrRK5kaqZE64SmaF/gT/T5mhnZNpwXMyld/uUwJnZZL/DD/xzoB/mp95SfhTXP1J8E+Afxz84+Cb8EMN/EPgHwT/gMLfq/B3gb8D/O3yh2er9PaA7wHfo/C94HvB9ybxl9MS6eoD38fT75tn4P/q5+n38/T7uX4/1+/n+gPjCPwA+AGe/wDPf5DnP8j1B7n+INcfTA6A51/rrQbwuzkAjQFoXL/GALScAYQ6SVGIAYQYQChnAEYMIFymKjAAoyJLjjwjsLciW3Y/M4CF8T9lfuxPmaefkznRczI7ck5mhc/JjNA5ma6dlWk0JXhGJgdOyySayG/48f5T/L4/yU+8k+CfAP84X/aOAX+Uqz+i8A8p/AMyyL1fBrr3yQD3Hunv3i393Dulrxt8N/hu8N0WfM866eEB32Pid/OC7+Vz3wu+18Tv7OPp9/H0+7h+H9fvM/E7+nn6/Tz9fj77/Ul8rj/A9Qd4/gNcf2CAGgDXH2QAQQYQtA6A67cOQGMAGvga15/GVwMIMYAQAwhVmOUOgOzhElWxWZMBqBGobEb27FozgNZUaADz4udkbuyszNHPyqzoWZkZOSMzwmdkeui0TNVOyxSaHDwlEwOnZELgJPgnZZz/BPjHZYzPhB/Jl7sRfLkbzlM/DHQT/4AMBn4Q8AOBN/F3gb9D4W8Dfwv4m6WXe6P0dIPvBt9t4nf3gO8B3wO+hy99ngUMAHwv+F7wveB7k/g8/T6efh9Pv4/r93H9fq7fD76f6/dz/X6uPzDQGEB5gOsPMIDAH2oAPP9BBhDk+oMMIJgaQBL/18wANAagga+1V+UMIMQAQmWqUqMmAzAqyslhlh5AnhHkzWYW/cnmxk/L7NhpmaWflpnR0zI9clqmhU/J1NAp8E/KJJoYPCkTgidkfOA4+MD7j8lofseP4ufcSOBH8OVuOOjDeOqHAj+Ep34w8IPcexX+bvB3Sj8X+K7t0se1Vf5wge/aJL1cG8BfD/5aA7+HG3w3+G7w3SZ+V89CBsDnvofPfQ9Pv4en38vT7+Xp93L9Xp5+L9fv4/p9XL+P6/cNJ67fz/X7uX4/A/Bz/f4kPtcfAD/A9QcYQKCHZQDgB7n+IAMIMoBgMwPQGIBWoWIAWs4AQiWqYksFBkC2dPbsmhtAS7U0gNnxUzIzdkpm6KdkevSkTIuclCnhkzI5dEIm0UTtuIwPAh88JmMDx8A/KqP9R0x8fseP4Fv9MK8F3pMfvh/wfV3bwN8C/mbwN5r4LvBd4LtW00rp7loB/jLw+cx3g+8G3w2+ey4pfM90At8DvoenP4nvHUtcv5fr944w8X1cv4/r94Hv4/n39zMH4Of6/QzA35N+NwcQYAABrj/AAAI5AwgygCADCDKAYAq/wACMSo3sWolZ1giKcnKks4UKDCBvNrPITzYzflJmxIDXT8jU6AmZEjkuk8PHZSJNCB2T8doxGacdlbHBIzImALz/sIz0Aw/+cN9B8A/w+34/+PvA38uXvT3g7wZ/F/g71NVvM67exN9kwV8H/ppsfBf4riW0SLq6ePZdFnw3+G7w3eC7JzMAnn4PT7+Hp98DvmcUA+D6vVy/F3wv1+8dpAbA9fsYgK8PMQBfL2MApckB+MH3c/1+BuBXAwgwgAADCDCAAAMIWAYQrFQxgGCFWXMDMCpWFWWXOwAje/7yDaClWhrA9PhxmRY7LlN14PVjMil6TCZGjsqE8FEZHzoiYzXgtcMyOnhIRgUOgX9QRvgPgL9fhtFQ7z4Zwu/5wcAP4mfdQOAHAG/ibwN/a/rq/wC+N/C9uPqeXL2Jv0rhL8+DP4/Ad4Hvmkngu5L4Uwh89wQC383T7+Hp94Dv4fo9XL8HfA/X7wXfy/V7wfdy/d4kfm9zAD7wfVy/jwH4UgMA3w++H3w/+H4T3xhAgAEEGEAA/EA7I3MA5aoyVamRPZhvALkjcKSzpbMXHkE6W3bhH2xq/JhMiR0F/6hM0o/IxOgRGR85IuPCh2Vs6BD4h2Q0jQoelJGBA+Dvl+H+JP4+GerbA/4eGezdDf4ufubtUPjbwd8K/hbwN6ur36Dw10lPJ/hOrt650qi7M4m/FPjFOfhzmuK7wHeB7wLfNd7A7+AG3831u8F3D6OhBn47D9fvAd/D9XuS+H3MAXjB9/L8exmAt4eBX+oD38f1+xiAjwH4LAPwg+/voMoZQIABBMpVZWbWAaQrttSKARSquRE0V6EBTIkfkUkx4MGfoB+W8dFDMi5ySMaGwQ8dBP+AjNT2y4gg8IF9Msy/V4b6gQd/sA94r4I38LeDv5Vv+lsU/qb01fd2rpdewPd0rgF/lcJfAf4y6eYE3wm+c6F0dYLvBN8JvhN8Zwb/l1x8F/gunn4X+C7wXcNNfDfX7wbfzfW7+zOAfuYAPOB7uH4PA/AofC/X7+X6vQzAywC8DMCrBuBjAD4G4GMAPvB97c0B+BmAH3wjBuAvN0sNIFBqZA+UWMoZQDpHOluwFQPIyta0UBubFD8kE2OHwD8k42ls9KCMiRyQ0eH9Miq038TX9snw4F4ZFthj4vt3g79TBvl2yEBvEh94zzYD3sTfDP5G8JNXn4RfR2vAXw3+SoW/XOHz5DsXKfz5FvxZJr4TfCf4TvCd4Dsn5sEfaeK7ePpd4Lu4flcSf4AxgHI3+G6u380A3En8nuYAPAzAwwA84HvA9yh8L/he8L2dVJYB+CpV4PsqzFID8JepwDcqMUsNIF2RJUfTERjZm9aaAbQm6wAmxA/K+NhBGacfkLH6fhkT3S+jI+CH98nI0F7w98hwGhbcLUMDu8DfKYP9OxT+dhng3QY+8NSX3/R9+U3fB3gTf526+tW0SuGbV9+dq+/WyNU3gt+4QLo2gt84l8BvBL9xBmXjd0riO8F3gu8E3wm+cyQDMPErXUMVPtfvAt/F9bu4fhf4riR+b3MAbvDd4LvBd3P9bssAPAzAwwA8DMCj8I0YgJcBeCtVDMCrBuArV5WpwPdZBmBUbKnILDUAS7Z0drNgc9my+5ExjI/vl3Gx/Sa+vk9GR/fKqAjwYeBDwGvAa8AHd8qQwA4T379dBvq2gb9F+nuT+En4TdLHvUHhrwd/bfrqewL/u+XquzcuUfgLFf48hT87G78R/EbwG8FvBL9xPPGlr3EMAxht4jt5+p3gO8F3gu9M4g+04PdVAwDfBb6L63cxABcDcCUHAL4bfDf47s5GxW4G4FYD8IDv6aBiAB7wPe0yAzAqV5Wp1AB8Jari7FIDMHJkZUuVGkCz2ZqOoLnyDWBcfJ+Mie2V0Trw+h4ZGd0jIyK7ZXh4twwL7QIfeA34IPAB4P1bZYB/iwzwJfE3Sz/vJunr2Wjg/+FeD/468NfwZS9z9b9z9T0M+KUKf5HCn6/w5yj8mQp/msKfrPAnZOM3gt8IfiP4jeA3JvGHGPjtnOA7uX4n+E7wneA7uX5nHnwX1+9iAC4G4GIALvBdCt/dScUA3OC726vMATiMwPeUq8pUpeYAjEpUxZl8RTk5skoPwG8vnHUALdXSKMbE98jo2B4TX98tI6K7ZHhkpwwL75ChoR3gb5fB2jYZFNwqAwNbDPz+/s3S37cJ/I3gc/Ue4N3rjKvvDXwvftr1VPC/c/U9LFffTV29ic/VN4DfMEs6N4DfMJ3AbwC/AfwG8BvAbwC/gWe/AfwGK/5wE78R/EauvxH8RvAbuf5G8BtT+L3NATgZgJMBOMF38s3facW3DMDFAFzguzoaFbkYgEvhG4HvrlCVqywDILtRicoyAG9RTg6z1ADS2ZuWdxC2pgXa0Oj4bhkV2wX+Lhmh75Th0R0yLAJ+eLsMCW0Df6sM0rbIwCD4AeD9wPuA922Qvt714K+TPzzAu9cY8L34Td/Tlbn6Hs7k1S82rr6b5eq7NiTxZyv8GRb8KQp/Yn78BvAbwG8Av2Eogd8AfgP4DeA3JPG5fmMAfxD4jeA3gt8IfiPX32gOoCQ5ACcDcILvBN8JvvMXMzWANL5RpYoBuCpU5WbJARiVGtndJZmSA0hXlJMjMwKypbNn8jWXLZO/DaUGMDK+U0bEdshwHXgaGgU+Anx4qwwObTHxtc0yILhJ+gc2Sj//BgO/j2+d9PGuBX8N+Fy9e6XC5+pdyw34HnzD7+40r76b5eq7GlefxJ9pwZ+ajV8Pfj349eDXg18Pfj349SMYQC7+oAx+A/gN4Ddw/Q3gN4DfAH6DBb+R628EvxH8RvAbOxsVN6YGAL6zo1GRkwE426vAd7bLPwBXmarUyO6yDMBdbKkou+QALNnS2c28LWXLHkFL5Q5hRBz82Hbwt8lQGhIFPgJ8GPjQZvA3yQBto/QPbpB+AfD9wPuA966h1dLbs8rAT8L3BP531zKFvxj8RQp/PvjzFL559Sa+efW/1oNfD349T359Cn+cBX9UBr8e/Hrw68GvB7+ez/168OvBrwe/Hvx68Ot5+uutAwDfiAE0cP0NDKCBATQwgAaF3/iLigE0gt/YQQV+Y6UZA3AYge8sV5VlDcCeGkC6YktFZukROLKypbNnRtBcyQG0pkKDGB7fJsNiW8HfIkNocBT8CPBh4EPAaxtM/OB66RtYK338wPtWg78KfK6eerqXg78MfOBdSwz47vyu7+Y0r/63JDxf9LpannwDvz6Jn4SfbMEf3zJ+Hfh14Ncl8Qem8Sss+OVJ/Hrw68Gv5/rrwa8Hv57rrwe/Hvx6E98YQAMDaAC/AfyGjkZFDeA3tDczBtDOyNFYoSo3Sw7AqNTIblSSKd8A0jmysqVKDqCljBHYWq65YQyLb5GhsST+ZhlMg6KbZGBkowwIAx8CXlsP/joTPwC8H3jfSuntTeKvMPB/dy8Ffwn4XL0rib8AfPPqM/iz0k++iT/Vgm9evYFfB34d+HWjCfw68OvAr+Pbfl0Ofh34deDXgV8Hfh34deDXgV8Hfh34deDXgV8Hfp0VXw2gHvx68Ot/UTGAevDrO5gZA6hUtTNyNFSo1AAay1SlRnajkkzOYktFORUYgMvefOkh2JqvpXEMjW+WIbFN4G+SQfpGGRjdIAMi4IeBDwGvrZW+wTXgrwIfeOrlWyG9vFy9Z5nCXww+8K6FGXznXPCB5+ediW/Cd1ZP/q/qyU/j14034DvWjcnBH94Uvxb8WvBrwa8Fvxb8WvBrwa8FvzaDX2bFp5I6BlAHfh34dVx/HfhG4NeBX9fRqKguOYD2qkoV+PUVqnJzAA1llkqN7A0lmRqLcyrKLjkAS7Z09kzNjsFWOHcrGhLfKINjG8HfIANpQHS99I+sk35h4EPAa6ulTxD8QBIfeN9yWiY9vcB7uHp3Eh94F/Cu+eDPU/jANwLPb/sMvgn/q3ryDfy6JP64PPhcfS34teDXgl8Lfm0r8WvBrwW/FnwjBlDLAGrBrwW/FvzazkbFteDXgl/bySyFbwR+XaWqnZGjzjIAozJVqZHdqMTMGEFxTkXZNTrS2bKyZ3I2l83M9YMNjm+QQbEk/noZoK+T/tG14K8BH3htFa2UP4LgB8D3A+9bCv4S8IH3LGIAKfx5BLxzDqXwZ4BvXn02/kQyrz4bf5R0qOXqa5viV6bwa/jCVwN+Dfg14NeAXwN+TW8Cv6aniqe/Bvwa8GvArwG/BvyaLioGUAN+zS9mxgA6GhXVgl/bXlWpAr9WDcCoXFWmKjWyG5WYGUMotlTUtAZHOltW9kyNzWUzc7ay3AEMiq+XgbF14K+V/voa6RdZLX3DwIeAT+JrK6R3kKsPgO8H37dYfvcC71kI/gLw51vwgXfOAn9mDr4J/6u6+mz8McTV1xbArwG/Bvyaga3A79UCftcc/NQAOqnAr+mgAr+mUtXOyFFboSpXlVkqNbIblWRGUFdsqahp9Y50tqzsmRqay2bW2MpyBzEwvlYGxNaAv1r6RVdJ38hK6RMGPrQC/OXSW1smvYLAB5YwAPB94HsXMID50t1twndzcfUuhe8EvnE6mVffFN+E76SuvmNtHvyaYWn4yppB2fjV4Ff3JfCrwa/ubVRWDX41+NU8/dXgV4NfDX71b0Yl1eBXg1/d2ai4Gvxq8Ks7qbj+auCN2qsqzZL4RhWqclWZqtTIblRilhxBbXFORU2rc6SzZWXPVN9ctkwNrcw6iAHx1dI/tkr66SulbxT8CPDh5QxgGfhLpZcGfHAxA1gkv/u5eh9X7wXfA77bhP/NlYSfmQcf+IZJ4JtX3zy+Cd++ZmhT/Grwq1vA/w7+d/C/g/8d/O/dVOB/B/87+N87q8D//osK/O8djYq+d1BZ8KvbGTmqK1TllspUpUZ2o5LMCGqKcyrKCfjaTLas7NnVFcqWXX0rS42hfxz8GPgMoE8U/AhXHwY/lMH/PbAQfK7eB7x3HvhzTXy3wnfNAB945zTwgW/k6hX+L03wzSe/o4LvYLn6LPxq8KtN/HZW/O/gfwf/e2+jsu/N4H8D/xv437qowP8G/rdfVJ1UOfhGlSrwjSpU5aoyS6VG9u8lZtWpii0V5clhjkBlS2dvWm2hbE2ra2XJIfSLgx9bIX10rj4KfGQpA1givUJcvcbVB8EPgO8H3we+d4508wDvngX+TBPfZeJ3dqbwufoG4BsUfL159Xnxa3Lwq/Pgfwf/ewH8b+B/A/8b+N/A/9ZNVQj/1yb4xd+AN2qvqlS1M3J8q1CVWypTlRrZjUrMjCEU51SUJ4c5ApUtnT1/+YZRY8tfbSvrG18ufWLL5A8d+OgSBrBYeoUXSc8Q8NoCBjBfegSA989lAOB7wfeA755pwHd1cfVJeOcU8Ln6xjz49T+I/z0P/jfwvyXh8+HTV/C/gv+1qwr8r+B/Bd4I/K+dVB2Nir52UIH/tVLVzsjxtcJSuarMUqmR3agkM4JvxTkV5clhxhBsWdmbL2sYtsLVtKI+cfBj4OvgR8GPgB8GPwS+Bn4Q/MAcBjBbuvmA985kAFy9W+G7FL5T4Tcq/AYFX6/g+YnXUcF3sDz57S3wlQY8fc/B/wb+tzz4X8H/Cv7X7ioTvzSF/wX8L51V4H/5RQX+l45GRV86qNqrKlXtjBxfKlTllspUpUZ2oxJzAOmKcyrKyZGV7Zs1e8ulB2FrueZG8kcc+NhiBrBIekUXSs8I8OH5DGCe9NC4+iD4AfD9VnwTvosLeNdk8E34XxuT8OPz49e1Al/Bp/G/5cH/miwP/hfwv4D/JQnfEr4awGfgjdqrKlXtjByfKyyVq8oslRrZjUrMERgV51SUJ0dWtmRfU9lb3zdb68s3jj/i4MfA18GPgh8BP6zwNfCDs8AH3jeDAXD1HvDdOfhOhd+Yg1//I/hJ+Bz8r+Cn4RX+F/C/dFdZ8D8nA/9zZxX4n4H/lKyTqqNR0SfwP7VXVaraGTmMKlTlqjJLpUZ2o5KcinMqyu5zMkdWNmtf7G3IZva1jaVG0Tu+UHrFFkhPHfjoPAYwV3qEgddmE/gB8P3g+8D3gu8B353En0TAOycQ8I3jwAe+YQz4wNeb8B3rTPgOtcNaid83g/81g1+ewv9i4pel8D+D/xn8JPynZOB/6qwC36gA/sdk7VWVqnZGjo8VqnJLZZZKjexGJZaK81TUtE+OrGzp7K3rcypb0760oV5x8GPzGQD4UfAj4IcUfhD8wHQGME26+oD3TgGfq3crfJcFv7EAfp3CrzXh2xs/8fLgW66+Cf6XJHwO/meF/wn8T3nwPwJvBP7HTqqORia8Bf9DpaqdkeNDhaVyVZmlUiO7UUlOxTkV5cmR6SPoWdnbGIiffrDkWHrGwY+Br4MfBT4yiwHMlG4aVx8EPwC+H3wf+J48+E4LfoPCr28O34QviG/A5+L/bvYZ/CT8p2Q5+B+7qEz8kjS+GsCHjirgjdqrcvDfJ6tQlVsqs1RqZDcqyak4p6I8ObKypfqQzN7GbE372IZ6xufK77E50kMHPwp+GPwQ+Br4QfAD4PvB94LvmcgAgHeNJ+CdY8EHvnE0+MA3jGwVfuonXrP4Xyz4nxX+pxz8j0n4HPwPvxoVf/hFlYP/Pll7VaWldkZp/HfllsoslRrZjUpyKs6pqECOrGxZ2TO9b022lvvQTL/HwY/NZgDgR8EPgx8CXwM/OIUBTOb6uXov+B7w3QrfBb5T4Tem8EcQ8HXDaKiJX6vwa3Lx++XB750f/1MKv5vZxxz8D8ny4L/vpAL/fQ7+u2SVqnZGjncVlhT+2zJLpensRiWWivNUlCdHVrYm2Qv3Ll+2Hys1jh5x8GPg6+BHpzOAaQxgqnTVwA+C7wffB743D77Tgt+Qiw987eBm8NWXva8W/C8WfAM+B/9jBr/0Q1cFb8F/D/77X1QW/Hd87r/roLLgv03WzsjxtsJSuSXg36QqNbIbleRUnFNRgRxZ2bKy/0A2s7c/WI/4TOkemyHddPAj4IfBD4GvgR8A3w++D3wP+G6F77LgN1rw63PxB6XxK1vE75WD3yOD/9GC/yEH/31nAz4L/10nVUcV8G+TtVdl4xe9YQBvKlTllpriO16Db1Riqbhpr4oK5MjKlpW9cK8LZWu5N83UPT6DAYCvgx8BPwx+CHxtEgMA3w++F3wP8O4x4APvGsUARmbwGyz4dQq/NolvwjfF75Mf/3MO/kcL/gcL/vsuKgv+u19UCv9tR5UF/02ySlW7dAb861TlZq/Kcio1shuV5FSc3ctkRXlyZGVrkr2N2bJ79QN1j4MfA1+fygDADyv8IPgB4P3jGAD4HvDdFnwn8I3DwR9m4tfnwa9J4vc3/gkdA/975vO+IufLnoH/KQ/+Bwv++xz8d78apfHfdlJZ8N90UPAK/3WqdkaOVxWWyi0p+JfJSo3sRiU5FWf3IllRgRxZ2bKy/0C2H8s6mm5x8GPg6+BHwA+Dr02QzsHxDAB8H/heC77Lgt8IfMPQDH5dK/C/tYD/sRX473Lw31rw33RUWfBftzfRX6VqZ5SGf5ms3FKZJfBfmNmNSnIqzu55sqI8OZpky8r+A9l+vm5x8GPg65MZAPgh8DXwg+AHxjIA8L2jGYCJ38kFvtOKD3z94Ax+rcKvSeL3y4Pfuxn87k3x31vw31nw3/6q4BX+mxz81x1M+FftLfD0sp2RiW7Bf5GqzJIF/3mykpyKm/asqECOrGxNsv9Atp/vtzj4MfCjE6VLBPwQ+Br4QfD94PvA94DvVvgu8J3gN4LfkMIfZNQEv7pvC/i/N8VPX70FPw3f2YA3U/hvLPivkwH/qoOCV72sVJn4RS8YwIsKlQX/eVlOpUYG/rOSPBVn97SoQKA/yc6Wlf0Hs/18v8XB17n86AQGAH4IfA38IPh+8L3ge8B358FvAL/egl+bB//7D+C/z4P/Ngf/jQU/Cf8qmQX/ZSqF/6JdujT+82TllkB/lqo0nf2ZGsBTa4A/ya0of48dWdmaZG97j5LZfr6u8UkMAPwo+JFxDAB8DfwA+H7wveB7FL4LfCf4jUMYgMKvB77Ogl+Twu+Tg9+rbfjvCuC/seC/7qTgTfzilx0s8PSiUqXwn7dT6Kpn5ZYs+E9L09mfJCvJSYE/tlaUv0eOJtmaZM/fw+aytb0Heeoa5+nXwY+CHwE/NIYBgB8A3w++F3y3wneB7wS/EfyGHPxaC361Bf/bT+C/teC/seAb8Bb8lxb8F6kU/vN26Uz0VBb8p2VmT5KVpjPwH5fkSaE/slaUv4eOrGzJHlizt637qWx/T13iE9QAwA+DHwJfG8UAwPeNYADgu4cxgBz8BuDrga+z4NdY8L9b8L/+BP4bC/7rXxS8wn9pwX9hwX9eqVL4z9pZ4OlpudmTcoVu6XFpOvtjNYBH1izoD1MVmT3IzdEk2/3c7M13r1C27O7+YF3i4OtcfxT8MPgh8IPgB8D3ge8B3w2+C3wn+I0mfvsUfh34tRb86gx+hRX/S/Zv/Dbhv87Bf2nBf5HEVwN4bsF/VmnAmyXR6UmFQrfgP7YG/CMzu5FCf5gK7Ae5WcDv5+bI7h7gWQF5t43dSWX7e+oSB1/n+o0BgK+BHwTfD74PfI/Cd4HvBL8R/IYB6vot+DU5+N9y8D9n45dZ8d8p/LcK/00O/qs8+C8s+M8t+M8s+E+TpeAV/mNrCv5RWRrewH9YaoI/yA3w+7lZwO9Zuutoks3aHYcFs4Vu58tmdusn6xwHXwc/yvUbAwA/CL4ffC/4HhO/gwt8J/iNwBsD6M8AwK818c3rB/+7Bf+riV+ehd8tD34XKW0J/6XCf2HBf67wn7XPwD+tNOGfJFPwj1Mp+EflCl0FuNED4I0U+H1rFvR7qZLQBQI4N1uq26ksoLda2c1kth/vRk6d4+Dr4EfBD3P9xgDA9w9lAOC7W8Cv7aOu34L/LQ/+pzz47wvgv6ZXzeA/z4P/VPWkXboMfIVCt+A/VD0oM+CN7oNvZIG/V2Ji381XEjpfgN+2dAvsJllBW9ENawrv+k90TfVrfDQDAD8Kfhh8jetXA+igBtBeDaDSGAD49eDX5eBXg/89B//LT+K/VPgv8uA/U/hpeAv+Ywv+Iwv+w3ILuup+aToD/55Cv5vKAn7HmsK+rbplzZHpJth5y0Wl663omj2D15quttCvcfD1kQwA/PBwBgB+AHwf+F7w3eC7uH4n+I3gN4BfD35dH2MAFTU5+N/A/6rwP1vwP7YevyQf/nMTv/hZDv4TC/5jhf+oItNDBf+g3IKeSuHfA/5uqQWd7qSyoN9W3Spq2s1UjuxugJ3qeqpCsM10NZUF70obulwgcwDgR8APga/x9AfA9/H0exS+C3yniV+ZD7+6lxpAHvxP/wL8p+0t8JVp+KJHyVLwFRb48hz4MgPdcdcsjX8npzR4blZw1Y0iA9voeiabtWupCuGqrjRXHsRLbehiTr/ER6YH0DEEvgZ+AHwf+B4LfiP4DX0t1w9+TR78rz3Mf+Wugd89g/8h81Ov9F0L+C8U/vOOaXgD/2kO/uNKC7zCT8I/qMjA3y+3oKvuZvAdd0ot4KpbJdngN61Zwem6NQV/LVMa/WqqFoAvW7qUr2YwL7Sh86pf4uDrXH9kmGUAgxgA+J4BDAB8Zz9jAO2MAYBfB34t+DW9jAGUfwf/2++W6+9uefpbif8yH37HbPwn7S3wOfhp+AoLvMpAT2Wip7LfLrWgW/Bv5nSjOA84XUtlgb9qZruSpxaBVRctXbDWDGZz/ZWnKmMA4OvgR8APgR/k+v1cv5cBuLl+NYB2jbn4vbPxv6Wuv7vl6c/+Z/XMp/9n8Ntn8NPw9MCCnwVfboEvy4J3JOFvlWbQb1pLgdP1VLngqqsqcHOzXVZdStVaZEvnrbWAWtWK/sypkzEA8CNDGAD4QfD94HvBd4Pv4vqd4DeAXw9+XW/L9YP/PQf/cw7+hxz8t23Af9rBAq/wHxXAv1+RA2/Bv6O6bcI7blnwrfA3SnLQ6VqqXHBrgF9WXTKzWbuYqjXIlv6yVGVvPeq5FjprqVN8WHoAHYwBgO/n6feC7wbfBX4j+A1/WAYAfg346QGA/7W7un6F/zEXv0vr8J+1At+AV/j3LaXhyzPoBnyZgZ7KfrM0B52ul+RBVzUBp8uqS47sLlrAL1hrBXRVgf5M1QbYZGdyOp2nTnHwda4/An6I61cDqPRYrl8NoKI+P37m+rsZA8jCf9/F8rmf/YWvJI3fqQl+cSvwi9LwFRl4K74Bb8G/aZaGv24pC1x1pbgp+iVrJrjRhUwG+HlrhS66APS5fP0AbqpTOZ20ZA4A/Ahf/DTwg1y/D3yPun4n+I3J6we/rpcxgHJjAOB/72G5/m6W6++qBtCl6Ze+tuI/UvgPKxU83W9n4hvwFvw75TnwZVnwjhvgJ8uCT2VFV13Og35RdaEoC91+3iyN/pelghddAPus6oyl1uCebKYTOR1XdYwPSQ+gfXIAAfB94HvAd4HvBL+ht3n9xgDAr8mDb1x/U/yCn/vN4T9uI/4dVRZ8WRa843oSvjQHna6WZMNfVl0qLoBuwT9v6S8zW1VOzWGfzYN9Ok+tQc6Hm69jOXWMg69z/WHwtQF5B1BhDAD8OoWvrr/sW3fL9Vs+9z90UQNoBf7zVuLfV6XhKzLwufg3y7Lg0/i58FdKsuEvWcqHfj5VNrq9yswEV51L1VZs1UlrbUC24h7N6UiesgcAfgB8H/hu8F1cfyP4DeDX98xcfzXX/727GkDy+n+zXH8e/Dd5vvQ1we/QFP9BK/Bv061yC3xZFryBf63Ucu0p+JKca0/BFxdAp79UVY7sssBVZx0/iK06oTpubz3ykQIdtnQop45x8HXwwwMyA/BmBlCRGkDy+mvBr+lhuX7wv/xmDCD99BsDsPwrePN97reE/7AZ/DsVGfi8+GUZ/GtmTeFLsuEvpuCLm0FPZYIbncuURj+j+mHsnFoL3RxyqoOWDqg6pAfQnwGAH+jLAMB3c/1O8BvN6y+v+90cQPr6u6UHkPzf0W96/Zl/Tj/7S19T/OKW8IEvysW/pcqCL8uCd1wtbQp/qSTn2i2dL86Gr7L0Z1ETdPtZswy6pULgzWKrjqqO2NsOnQ852f4CdYgPZAADjAFUJgfg5/q94LvAd4Lf2DMzgOT1V4OfGoBx/V3VALpYrj/zr+BN47/M81v/ieVzPx/+vVbgp+HLMvAp/CbwqrzwxXmuXcGfS5VBtwNuP52LrmoNeF7snA7b2wZdCHmfpb2W9qgBtI9y/WHwNa7f3yd7AA3g1yevv4cxgLLq1PX/Zrn+LvmffuP6O2U//Xnx27eMf7vCAt8MPvCOK0n80jzwJU3RDfjiZtDpbFEWujUTPKd86C2BH1YdspaD3dJFF0LO125Vh/gAYwCVagDt/OB7wHeB7+T6G35Xz39yAMnr75YeQPL/KldmAJ0LX39z3/gftbd84au04LdrHf61six4A/9yDr4BX1IAvrh5+DNFTeFBt2eBq447mqK3CZwOqg7YC2Pnu+jmkJPtsrTTUodYcgDgh7n+YJ/sAfD8lxsDAL+2u3n9xgCS19/V+L/MVfDpV9ef/fRn8ItbgV+UDz/r6pviO5L4TeBLCsAXq8/23GtX8KeLmqCnykZXNXflrQKn/al+EDsf9I4Cbaf2sf7mAEJqAL7eDAB8F9ffCH59D3MAyeuvBv/7b5br75K+fuN/T/+d+b+2ZV5/HvxnzXzps+LfycG/mcIvz8a/WpYF77hU2hTeip8Fr2py7Sl4OlXUBN7eBF111NE69ILgqn2qtmDvbAF7u6Vtqq2qzADAD/5hDKDCbQ6gPDWA5PXXdDMHkLz+r10tA8jz9L9Ofe7n/LN7hb70tQX/Whvwz6vywhdnw5/OgT9ZlIVuP54pG52OOLLRm7vyguCqPfafu+xcaCv2ljy1j4Ef7WsZAPhurt8JfmOP7AEkr/+bwv+s8Ft7/blP/8NWPPst4St4Az8vfEkB+OIW4IvywtuboKsKoee78rzglnbb8193a7C3toC9WbXJUmYA4Ae5fusAGpLPP/i13SzPf3IAXTLX/yEH/3Whpz/P5376d34ufkUG/3oO/pV8+KUt46fhi5uHP1GUDX9M1QRddcjxc+i7VbtUhcCbe8Zbi71RtcFS+xj4Ua4/OYAAA/AmBwC+s0fOANT1pwfQ2RhA9vV3Utdv+RdzNvnWn/Ol767l6W8rPvCOC6V54EsKwNPp4mbg6XhRBv6o6ohZNrqqNeh7WkKnHal+4Lpbi51qvaXKrAGA7+X6XakBgF8Hfs1vlgF0ST//qf/TbCXvLNf/Kv/T3+LnfnP4V/9m/ILwRRn4I5aaoKvaim4Fz0JXWdHbct2twV5naa1qjU3+HwuefjlXE4+yAAAAAElFTkSuQmCC",lme=0,CO=(n,e,t,i)=>{if(!n[t]){let r=n.useDelayedTextureLoading;n.useDelayedTextureLoading=!1;let s=n._blockEntityCollection;n._blockEntityCollection=!1;let a=ge.CreateFromBase64String(e,i+lme++,n,!0,!1,ge.BILINEAR_SAMPLINGMODE);n._blockEntityCollection=s;let o=n.getEngine().getLoadedTexturesCache(),l=o.indexOf(a.getInternalTexture());l!==-1&&o.splice(l,1),a.isRGBD=!0,a.wrapU=ge.CLAMP_ADDRESSMODE,a.wrapV=ge.CLAMP_ADDRESSMODE,n[t]=a,n.useDelayedTextureLoading=r,Mm.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),Mm.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},Ab=n=>CO(n,sme,"environmentBRDFTexture","EnvironmentBRDFTexture"),PO=n=>CO(n,ame,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),V8=n=>CO(n,ome,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function G8(n){return class extends n{constructor(){super(...arguments),this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1}}}var k8=I(()=>{});var DO=I(()=>{Os();Pt();os();bt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};bt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};bt.prototype.buildTextureLayout=function(n,e=!1){let t=this._gl,i=[];if(e)i.push(t.BACK);else for(let r=0;r1&&(e.depthTextureFormat===13||e.depthTextureFormat===17||e.depthTextureFormat===16||e.depthTextureFormat===14||e.depthTextureFormat===18)&&(o=e.depthTextureFormat)),o===void 0&&(o=s?13:14);let C=this._gl,L=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let G=(X=n.width)!=null?X:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);y.label=(ve=e==null?void 0:e.label)!=null?ve:"MultiRenderTargetWrapper",y._framebuffer=w,y._generateDepthBuffer=a||r,y._generateStencilBuffer=a?V:s,y._depthStencilBuffer=this._setupFramebufferDepthAttachments(y._generateStencilBuffer,y._generateDepthBuffer,G,O,1,o),y._attachments=B;for(let ae=0;ae1||this.isWebGPU);let Et=this.webGLVersion>1,Ke=C[Et?"COLOR_ATTACHMENT"+ae:"COLOR_ATTACHMENT"+ae+"_WEBGL"];if(B.push(Ke),de===-1||M)continue;let Ze=new Oi(this,6);N[ae]=Ze,C.activeTexture(C["TEXTURE"+ae]),C.bindTexture(de,Ze._hardwareTexture.underlyingResource),C.texParameteri(de,C.TEXTURE_MAG_FILTER,Ye.mag),C.texParameteri(de,C.TEXTURE_MIN_FILTER,Ye.min),C.texParameteri(de,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(de,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Jt=this._getRGBABufferInternalSizedFormat(ne,Pe,fe),Lt=this._getInternalFormat(Pe),xi=this._getWebGLTextureType(ne);if(Et&&(de===35866||de===32879))de===35866?Ze.is2DArray=!0:Ze.is3D=!0,Ze.baseDepth=Ze.depth=Re,C.texImage3D(de,0,Jt,G,O,Re,0,Lt,xi,null);else if(de===34067){for(let oe=0;oe<6;oe++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+oe,0,Jt,G,O,0,Lt,xi,null);Ze.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Jt,G,O,0,Lt,xi,null);i&&C.generateMipmap(de),this._bindTextureDirectly(de,null),Ze.baseWidth=G,Ze.baseHeight=O,Ze.width=G,Ze.height=O,Ze.isReady=!0,Ze.samples=1,Ze.generateMipMaps=i,Ze.samplingMode=me,Ze.type=ne,Ze._useSRGBBuffer=fe,Ze.format=Pe,Ze.label=(Ue=R[ae])!=null?Ue:y.label+"-Texture"+ae,this._internalTexturesCache.push(Ze)}if(a&&this._caps.depthTextureExtension&&!M){let ae=new Oi(this,14),me=5,ne=C.DEPTH_COMPONENT16,fe=C.DEPTH_COMPONENT,Pe=C.UNSIGNED_SHORT,de=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ne=C.DEPTH_COMPONENT:o===14?(me=1,Pe=C.FLOAT,ne=C.DEPTH_COMPONENT32F):o===18?(me=0,Pe=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ne=C.DEPTH32F_STENCIL8,fe=C.DEPTH_STENCIL,de=C.DEPTH_STENCIL_ATTACHMENT):o===16?(me=0,Pe=C.UNSIGNED_INT,ne=C.DEPTH_COMPONENT24,de=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(me=12,Pe=C.UNSIGNED_INT_24_8,ne=C.DEPTH24_STENCIL8,fe=C.DEPTH_STENCIL,de=C.DEPTH_STENCIL_ATTACHMENT),this._bindTextureDirectly(C.TEXTURE_2D,ae,!0),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),C.texImage2D(C.TEXTURE_2D,0,ne,G,O,0,fe,Pe,null),C.framebufferTexture2D(C.FRAMEBUFFER,de,C.TEXTURE_2D,ae._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),y._depthStencilTexture=ae,y._depthStencilTextureWithStencil=V,ae.baseWidth=G,ae.baseHeight=O,ae.width=G,ae.height=O,ae.isReady=!0,ae.samples=1,ae.generateMipMaps=i,ae.samplingMode=1,ae.format=o,ae.type=me,ae.label=y.label+"-DepthStencil",N[l]=ae,this._internalTexturesCache.push(ae)}if(y.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(L),y.setLayerAndFaceIndices(E,S),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(y,c,t);else if(c>1){let ae=C.createFramebuffer();if(!ae)throw new Error("Unable to create multi sampled framebuffer");y._samples=c,y._MSAAFramebuffer=ae,l>0&&t&&(this._bindUnboundFramebuffer(ae),C.drawBuffers(B),this._bindUnboundFramebuffer(L))}return y};bt.prototype.updateMultipleRenderTargetTextureSampleCount=function(n,e,t=!0){if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let i=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(i.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(i.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let r=n._attachments.length;for(let a=0;a1&&typeof i.renderbufferStorageMultisample=="function"){let a=i.createFramebuffer();if(!a)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=a,this._bindUnboundFramebuffer(a);let o=[];for(let l=0;l1?"COLOR_ATTACHMENT"+l:"COLOR_ATTACHMENT"+l+"_WEBGL"],h=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!h)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(h),c.samples=e,o.push(d)}t&&i.drawBuffers(o)}else this._bindUnboundFramebuffer(n._framebuffer);let s=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,s),this._bindUnboundFramebuffer(null),n._samples=e,e};bt.prototype.generateMipMapsMultiFramebuffer=function(n){let e=n,t=this._gl;if(e.isMulti)for(let i=0;i1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"],t.readBuffer(r[a]),t.drawBuffers(r),t.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i,t.NEAREST)}for(let a=0;a1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"];t.drawBuffers(r),t.bindFramebuffer(this._gl.FRAMEBUFFER,e._MSAAFramebuffer)}});var Rb,W8=I(()=>{Gr();Rf();DO();Rb=class extends kr{get isSupported(){var e,t;return(t=(e=this._engine)==null?void 0:e.getCaps().drawBuffersExtension)!=null?t:!1}get textures(){return this._textures}get count(){return this._count}get depthTexture(){return this._textures[this._textures.length-1]}set wrapU(e){if(this._textures)for(let t=0;t0&&(this._createInternalTextures(),this._createTextures(a))}_initTypes(e,t,i,r,s,a,o,l,c,f){for(let d=0;d{this.onAfterRenderObservable.notifyObservers(t)})}dispose(e=!1){this._releaseTextures(),e?this._texture=null:this.releaseInternalTextures(),super.dispose()}releaseInternalTextures(){var t,i;let e=(t=this._renderTarget)==null?void 0:t.textures;if(e){for(let r=e.length-1;r>=0;r--)this._textures[r]._texture=null;(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null}}}});var H8,cme,z8=I(()=>{k();H8="mrtFragmentDeclaration",cme=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) layout(location=0) out vec4 glFragData[{X}]; #endif -`;A.IncludesShadersStore[G8]||(A.IncludesShadersStore[G8]=nme)});var W8,sme,xb=I(()=>{k();W8="pbrFragmentReflectionDeclaration",sme=`#ifdef REFLECTION +`;A.IncludesShadersStore[H8]||(A.IncludesShadersStore[H8]=cme)});var X8,fme,bb=I(()=>{k();X8="pbrFragmentReflectionDeclaration",fme=`#ifdef REFLECTION #ifdef REFLECTIONMAP_3D #define sampleReflection(s,c) textureCube(s,c) uniform samplerCube reflectionSampler; @@ -10754,12 +10754,12 @@ varying vec3 vDirectionW; #endif #endif #endif -`;A.IncludesShadersStore[W8]||(A.IncludesShadersStore[W8]=sme)});var H8,ame,CO=I(()=>{k();H8="sceneFragmentDeclaration",ame=`uniform mat4 viewProjection; +`;A.IncludesShadersStore[X8]||(A.IncludesShadersStore[X8]=fme)});var Y8,dme,LO=I(()=>{k();Y8="sceneFragmentDeclaration",dme=`uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition;uniform mat4 inverseProjection; -`;A.IncludesShadersStore[H8]||(A.IncludesShadersStore[H8]=ame)});var z8,ome,Sp=I(()=>{k();z8="pbrBRDFFunctions",ome=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 +`;A.IncludesShadersStore[Y8]||(A.IncludesShadersStore[Y8]=dme)});var K8,hme,Sp=I(()=>{k();K8="pbrBRDFFunctions",hme=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 #define BRDF_DIFFUSE_MODEL_EON 0 #define BRDF_DIFFUSE_MODEL_BURLEY 1 #define BRDF_DIFFUSE_MODEL_LAMBERT 2 @@ -10932,7 +10932,7 @@ vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance, float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);} #endif #endif -`;A.IncludesShadersStore[z8]||(A.IncludesShadersStore[z8]=ome)});var X8,lme,PO=I(()=>{k();X8="openpbrDielectricReflectance",lme=`struct ReflectanceParams +`;A.IncludesShadersStore[K8]||(A.IncludesShadersStore[K8]=hme)});var j8,ume,OO=I(()=>{k();j8="openpbrDielectricReflectance",ume=`struct ReflectanceParams {float F0;float F90;vec3 coloredF0;vec3 coloredF90;}; #define pbr_inline ReflectanceParams dielectricReflectance( @@ -10950,7 +10950,7 @@ float maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams. outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight); #endif outParams.F90=mix(f90Scale_NoSpec,f90Scale,specularWeight);outParams.coloredF0=mix(vec3(dielectricF0_NoSpec),vec3(dielectricF0),specularWeight)*specularColor.rgb;outParams.coloredF90=mix(dielectricColorF90_NoSpec,dielectricColorF90,specularWeight);return outParams;} -`;A.IncludesShadersStore[X8]||(A.IncludesShadersStore[X8]=lme)});var Y8,cme,Rb=I(()=>{k();Y8="pbrIBLFunctions",cme=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;A.IncludesShadersStore[j8]||(A.IncludesShadersStore[j8]=ume)});var q8,mme,Mb=I(()=>{k();q8="pbrIBLFunctions",mme=`#if defined(REFLECTION) || defined(SS_REFRACTION) float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;} float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;} #endif @@ -10964,7 +10964,7 @@ float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {v #define UNPACK_LOD(x) (1.0-x)*255.0 float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);} #endif -`;A.IncludesShadersStore[Y8]||(A.IncludesShadersStore[Y8]=cme)});var K8,fme,DO=I(()=>{k();K8="openpbrGeometryInfo",fme=`struct geometryInfoOutParams +`;A.IncludesShadersStore[q8]||(A.IncludesShadersStore[q8]=mme)});var Z8,pme,NO=I(()=>{k();Z8="openpbrGeometryInfo",pme=`struct geometryInfoOutParams {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;};struct geometryInfoAnisoOutParams {float NdotV;float NdotVUnclamped;vec3 environmentBrdf;float horizonOcclusion;float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;mat3 TBN;}; #define pbr_inline @@ -10993,7 +10993,7 @@ geometryInfoAnisoOutParams geometryInfoAniso( in vec3 normalW,in vec3 viewDirectionW,in float roughness,in vec3 geometricNormalW ,in vec3 vAnisotropy,in mat3 TBN ) -{geometryInfoOutParams geoInfo=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);geometryInfoAnisoOutParams outParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}`;A.IncludesShadersStore[K8]||(A.IncludesShadersStore[K8]=fme)});var j8,dme,LO=I(()=>{k();j8="openpbrIblFunctions",dme=`#ifdef REFLECTION +{geometryInfoOutParams geoInfo=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);geometryInfoAnisoOutParams outParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;vec3 anisotropyDirection=vec3(vAnisotropy.xy,0.);mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}`;A.IncludesShadersStore[Z8]||(A.IncludesShadersStore[Z8]=pme)});var Q8,_me,wO=I(()=>{k();Q8="openpbrIblFunctions",_me=`#ifdef REFLECTION vec3 sampleIrradiance( in vec3 surfaceNormal #if defined(NORMAL) && defined(USESPHERICALINVERTEX) @@ -11215,7 +11215,7 @@ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90 #endif } #endif -`;A.IncludesShadersStore[j8]||(A.IncludesShadersStore[j8]=dme)});var q8,hme,OO=I(()=>{k();q8="openpbrSubsurfaceLayerData",hme=`float subsurface_weight=vSubsurfaceWeight;vec3 subsurface_color=vSubsurfaceColor.rgb;float subsurface_radius=vSubsurfaceRadius;vec3 subsurface_radius_scale=vSubsurfaceRadiusScale;float subsurface_scatter_anisotropy=clamp(vSubsurfaceScatterAnisotropy,-0.9999,0.9999); +`;A.IncludesShadersStore[Q8]||(A.IncludesShadersStore[Q8]=_me)});var $8,gme,FO=I(()=>{k();$8="openpbrSubsurfaceLayerData",gme=`float subsurface_weight=vSubsurfaceWeight;vec3 subsurface_color=vSubsurfaceColor.rgb;float subsurface_radius=vSubsurfaceRadius;vec3 subsurface_radius_scale=vSubsurfaceRadiusScale;float subsurface_scatter_anisotropy=clamp(vSubsurfaceScatterAnisotropy,-0.9999,0.9999); #ifdef SUBSURFACE_WEIGHT vec4 subsurfaceWeightFromTexture=texture2D(subsurfaceWeightSampler,vSubsurfaceWeightUV+uvOffset); #endif @@ -11239,7 +11239,7 @@ subsurface_color*=vSubsurfaceColorInfos.y; #ifdef SUBSURFACE_RADIUS_SCALE subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb; #endif -`;A.IncludesShadersStore[q8]||(A.IncludesShadersStore[q8]=hme)});var Z8,ume,NO=I(()=>{k();Z8="openpbrTransmissionLayerData",ume=`float transmission_weight=vTransmissionWeight;vec3 transmission_color=vTransmissionColor.rgb;float transmission_depth=vTransmissionDepth;vec3 transmission_scatter=vTransmissionScatter.rgb;float transmission_scatter_anisotropy=clamp(vTransmissionScatterAnisotropy,-0.9999,0.9999);float transmission_dispersion_scale=vTransmissionDispersionScale;float transmission_dispersion_abbe_number=vTransmissionDispersionAbbeNumber; +`;A.IncludesShadersStore[$8]||(A.IncludesShadersStore[$8]=gme)});var J8,vme,BO=I(()=>{k();J8="openpbrTransmissionLayerData",vme=`float transmission_weight=vTransmissionWeight;vec3 transmission_color=vTransmissionColor.rgb;float transmission_depth=vTransmissionDepth;vec3 transmission_scatter=vTransmissionScatter.rgb;float transmission_scatter_anisotropy=clamp(vTransmissionScatterAnisotropy,-0.9999,0.9999);float transmission_dispersion_scale=vTransmissionDispersionScale;float transmission_dispersion_abbe_number=vTransmissionDispersionAbbeNumber; #ifdef TRANSMISSION_WEIGHT vec4 transmissionWeightFromTexture=texture2D(transmissionWeightSampler,vTransmissionWeightUV+uvOffset); #endif @@ -11275,7 +11275,7 @@ transmission_scatter*=transmissionScatterFromTexture.rgb; #ifdef TRANSMISSION_DISPERSION_SCALE transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r; #endif -`;A.IncludesShadersStore[Z8]||(A.IncludesShadersStore[Z8]=ume)});var $8={};Be($8,{geometryPixelShader:()=>mme});var wO,Q8,mme,FO=I(()=>{k();Cc();k8();XR();YR();Fa();xb();CO();xh();Sp();PO();Rb();hv();DO();LO();bh();Pc();KR();OO();NO();wO="geometryPixelShader",Q8=`#extension GL_EXT_draw_buffers : require +`;A.IncludesShadersStore[J8]||(A.IncludesShadersStore[J8]=vme)});var t6={};Be(t6,{geometryPixelShader:()=>Eme});var UO,e6,Eme,VO=I(()=>{k();Cc();z8();KR();jR();Fa();bb();LO();xh();Sp();OO();Mb();hv();NO();wO();bh();Pc();qR();FO();BO();UO="geometryPixelShader",e6=`#extension GL_EXT_draw_buffers : require #if defined(BUMP) || !defined(NORMAL) #extension GL_OES_standard_derivatives : enable #endif @@ -11513,8 +11513,8 @@ irradiance_alpha=min(subsurface_weight+transmission_weight,1.0); gl_FragData[IRRADIANCE_INDEX]=vec4(irradiance,irradiance_alpha); #endif } -`;A.ShadersStore[wO]||(A.ShadersStore[wO]=Q8);mme={name:wO,shader:Q8}});var J8,pme,e6=I(()=>{k();J8="geometryVertexDeclaration",pme="uniform mat4 viewProjection;uniform mat4 view;";A.IncludesShadersStore[J8]||(A.IncludesShadersStore[J8]=pme)});var t6,_me,i6=I(()=>{k();xh();t6="geometryUboDeclaration",_me=`#include -`;A.IncludesShadersStore[t6]||(A.IncludesShadersStore[t6]=_me)});var r6,gme,Tp=I(()=>{k();r6="harmonicsFunctions",gme=`#ifdef USESPHERICALFROMREFLECTIONMAP +`;A.ShadersStore[UO]||(A.ShadersStore[UO]=e6);Eme={name:UO,shader:e6}});var i6,Sme,r6=I(()=>{k();i6="geometryVertexDeclaration",Sme="uniform mat4 viewProjection;uniform mat4 view;";A.IncludesShadersStore[i6]||(A.IncludesShadersStore[i6]=Sme)});var n6,Tme,s6=I(()=>{k();xh();n6="geometryUboDeclaration",Tme=`#include +`;A.IncludesShadersStore[n6]||(A.IncludesShadersStore[n6]=Tme)});var a6,Ame,Tp=I(()=>{k();a6="harmonicsFunctions",Ame=`#ifdef USESPHERICALFROMREFLECTIONMAP #ifdef SPHERICAL_HARMONICS vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00 + vSphericalL1_1*(normal.y) @@ -11529,7 +11529,7 @@ vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00 vec3 computeEnvironmentIrradiance(vec3 normal) {float Nx=normal.x;float Ny=normal.y;float Nz=normal.z;vec3 C1=vSphericalZZ.rgb;vec3 Cx=vSphericalX.rgb;vec3 Cy=vSphericalY.rgb;vec3 Cz=vSphericalZ.rgb;vec3 Cxx_zz=vSphericalXX_ZZ.rgb;vec3 Cyy_zz=vSphericalYY_ZZ.rgb;vec3 Cxy=vSphericalXY.rgb;vec3 Cyz=vSphericalYZ.rgb;vec3 Czx=vSphericalZX.rgb;vec3 a1=Cyy_zz*Ny+Cy;vec3 a2=Cyz*Nz+a1;vec3 b1=Czx*Nz+Cx;vec3 b2=Cxy*Ny+b1;vec3 b3=Cxx_zz*Nx+b2;vec3 t1=Cz *Nz+C1;vec3 t2=a2 *Ny+t1;vec3 t3=b3 *Nx+t2;return t3;} #endif #endif -`;A.IncludesShadersStore[r6]||(A.IncludesShadersStore[r6]=gme)});var s6={};Be(s6,{geometryVertexShader:()=>vme});var BO,n6,vme,UO=I(()=>{k();Ac();xc();Zf();Qf();zf();e6();i6();Rc();Tp();$f();Jf();bc();Mc();Ic();yc();NR();BO="geometryVertexShader",n6=`precision highp float; +`;A.IncludesShadersStore[a6]||(A.IncludesShadersStore[a6]=Ame)});var l6={};Be(l6,{geometryVertexShader:()=>xme});var GO,o6,xme,kO=I(()=>{k();Ac();xc();Zf();Qf();zf();r6();s6();Rc();Tp();$f();Jf();bc();Mc();Ic();yc();FR();GO="geometryVertexShader",o6=`precision highp float; #include #include #include @@ -11741,7 +11741,7 @@ vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVector)*vReflectio #endif #endif } -`;A.ShadersStore[BO]||(A.ShadersStore[BO]=n6);vme={name:BO,shader:n6}});var a6,Eme,Ap=I(()=>{k();a6="harmonicsFunctions",Eme=`#ifdef USESPHERICALFROMREFLECTIONMAP +`;A.ShadersStore[GO]||(A.ShadersStore[GO]=o6);xme={name:GO,shader:o6}});var c6,Rme,Ap=I(()=>{k();c6="harmonicsFunctions",Rme=`#ifdef USESPHERICALFROMREFLECTIONMAP #ifdef SPHERICAL_HARMONICS fn computeEnvironmentIrradiance(normal: vec3f)->vec3f {return uniforms.vSphericalL00 + uniforms.vSphericalL1_1*(normal.y) @@ -11756,7 +11756,7 @@ fn computeEnvironmentIrradiance(normal: vec3f)->vec3f {return uniforms.vSpherica fn computeEnvironmentIrradiance(normal: vec3f)->vec3f {var Nx: f32=normal.x;var Ny: f32=normal.y;var Nz: f32=normal.z;var C1: vec3f=uniforms.vSphericalZZ.rgb;var Cx: vec3f=uniforms.vSphericalX.rgb;var Cy: vec3f=uniforms.vSphericalY.rgb;var Cz: vec3f=uniforms.vSphericalZ.rgb;var Cxx_zz: vec3f=uniforms.vSphericalXX_ZZ.rgb;var Cyy_zz: vec3f=uniforms.vSphericalYY_ZZ.rgb;var Cxy: vec3f=uniforms.vSphericalXY.rgb;var Cyz: vec3f=uniforms.vSphericalYZ.rgb;var Czx: vec3f=uniforms.vSphericalZX.rgb;var a1: vec3f=Cyy_zz*Ny+Cy;var a2: vec3f=Cyz*Nz+a1;var b1: vec3f=Czx*Nz+Cx;var b2: vec3f=Cxy*Ny+b1;var b3: vec3f=Cxx_zz*Nx+b2;var t1: vec3f=Cz *Nz+C1;var t2: vec3f=a2 *Ny+t1;var t3: vec3f=b3 *Nx+t2;return t3;} #endif #endif -`;A.IncludesShadersStoreWGSL[a6]||(A.IncludesShadersStoreWGSL[a6]=Eme)});var l6={};Be(l6,{geometryVertexShaderWGSL:()=>Sme});var VO,o6,Sme,c6=I(()=>{k();uc();mc();Yf();Kf();Hf();Sh();pc();Ap();jf();qf();_c();gc();vc();Ec();fR();VO="geometryVertexShader",o6=`#include +`;A.IncludesShadersStoreWGSL[c6]||(A.IncludesShadersStoreWGSL[c6]=Rme)});var d6={};Be(d6,{geometryVertexShaderWGSL:()=>bme});var WO,f6,bme,h6=I(()=>{k();uc();mc();Yf();Kf();Hf();Sh();pc();Ap();jf();qf();_c();gc();vc();Ec();hR();WO="geometryVertexShader",f6=`#include #include #include #include[0..maxSimultaneousMorphTargets] @@ -11967,7 +11967,7 @@ vertexOutputs.vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVect #endif #endif } -`;A.ShadersStoreWGSL[VO]||(A.ShadersStoreWGSL[VO]=o6);Sme={name:VO,shader:o6}});var f6,Tme,bb=I(()=>{k();f6="pbrFragmentReflectionDeclaration",Tme=`#ifdef REFLECTION +`;A.ShadersStoreWGSL[WO]||(A.ShadersStoreWGSL[WO]=f6);bme={name:WO,shader:f6}});var u6,Mme,Ib=I(()=>{k();u6="pbrFragmentReflectionDeclaration",Mme=`#ifdef REFLECTION #ifdef REFLECTIONMAP_3D var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube; #ifdef LODBASEDMICROSFURACE @@ -11995,7 +11995,7 @@ varying vDirectionW: vec3f; #endif #endif #endif -`;A.IncludesShadersStoreWGSL[f6]||(A.IncludesShadersStoreWGSL[f6]=Tme)});var d6,Ame,xp=I(()=>{k();d6="pbrBRDFFunctions",Ame=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 +`;A.IncludesShadersStoreWGSL[u6]||(A.IncludesShadersStoreWGSL[u6]=Mme)});var m6,Ime,xp=I(()=>{k();m6="pbrBRDFFunctions",Ime=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 #define BRDF_DIFFUSE_MODEL_EON 0 #define BRDF_DIFFUSE_MODEL_BURLEY 1 #define BRDF_DIFFUSE_MODEL_LAMBERT 2 @@ -12167,7 +12167,7 @@ fn transmittanceBRDF_Burley(tintColor: vec3f,diffusionDistance: vec3f,thickness: fn computeWrappedDiffuseNdotL(NdotL: f32,w: f32)->f32 {var t: f32=1.0+w;var invt2: f32=1.0/(t*t);return saturate((NdotL+w)*invt2);} #endif #endif -`;A.IncludesShadersStoreWGSL[d6]||(A.IncludesShadersStoreWGSL[d6]=Ame)});var h6,xme,GO=I(()=>{k();h6="openpbrDielectricReflectance",xme=`struct ReflectanceParams +`;A.IncludesShadersStoreWGSL[m6]||(A.IncludesShadersStoreWGSL[m6]=Ime)});var p6,yme,HO=I(()=>{k();p6="openpbrDielectricReflectance",yme=`struct ReflectanceParams {F0: f32, F90: f32, coloredF0: vec3f, @@ -12189,7 +12189,7 @@ let dielectricColorF90: vec3f=specularColor.rgb*vec3f(f90Scale)*specularWeight; let dielectricColorF90: vec3f=vec3f(f90Scale)*specularWeight; #endif outParams.coloredF90=dielectricColorF90;return outParams;} -`;A.IncludesShadersStoreWGSL[h6]||(A.IncludesShadersStoreWGSL[h6]=xme)});var u6,Rme,Mb=I(()=>{k();u6="pbrIBLFunctions",Rme=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;A.IncludesShadersStoreWGSL[p6]||(A.IncludesShadersStoreWGSL[p6]=yme)});var _6,Cme,yb=I(()=>{k();_6="pbrIBLFunctions",Cme=`#if defined(REFLECTION) || defined(SS_REFRACTION) fn getLodFromAlphaG(cubeMapDimensionPixels: f32,microsurfaceAverageSlope: f32)->f32 {var microsurfaceAverageSlopeTexels: f32=cubeMapDimensionPixels*microsurfaceAverageSlope;var lod: f32=log2(microsurfaceAverageSlopeTexels);return lod;} fn getLinearLodFromRoughness(cubeMapDimensionPixels: f32,roughness: f32)->f32 {var lod: f32=log2(cubeMapDimensionPixels)*roughness;return lod;} #endif @@ -12203,7 +12203,7 @@ fn environmentHorizonOcclusion(view: vec3f,normal: vec3f,geometricNormal: vec3f) fn UNPACK_LOD(x: f32)->f32 {return (1.0-x)*255.0;} fn getLodFromAlphaGNdotV(cubeMapDimensionPixels: f32,alphaG: f32,NdotV: f32)->f32 {var microsurfaceAverageSlope: f32=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);} #endif -`;A.IncludesShadersStoreWGSL[u6]||(A.IncludesShadersStoreWGSL[u6]=Rme)});var m6,bme,kO=I(()=>{k();m6="openpbrGeometryInfo",bme=`struct geometryInfoOutParams +`;A.IncludesShadersStoreWGSL[_6]||(A.IncludesShadersStoreWGSL[_6]=Cme)});var g6,Pme,zO=I(()=>{k();g6="openpbrGeometryInfo",Pme=`struct geometryInfoOutParams {NdotV: f32, NdotVUnclamped: f32, environmentBrdf: vec3f, @@ -12240,7 +12240,7 @@ normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f ,vAnisotropy: vec3f,TBN: mat3x3 )->geometryInfoAnisoOutParams {let geoInfo: geometryInfoOutParams=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);var outParams: geometryInfoAnisoOutParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;let anisotropyDirection: vec3f=vec3f(vAnisotropy.xy,0.);let anisoTBN: mat3x3=mat3x3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;} -`;A.IncludesShadersStoreWGSL[m6]||(A.IncludesShadersStoreWGSL[m6]=bme)});var p6,Mme,WO=I(()=>{k();p6="openpbrIblFunctions",Mme=`#ifdef REFLECTION +`;A.IncludesShadersStoreWGSL[g6]||(A.IncludesShadersStoreWGSL[g6]=Pme)});var v6,Dme,XO=I(()=>{k();v6="openpbrIblFunctions",Dme=`#ifdef REFLECTION fn sampleIrradiance( surfaceNormal: vec3f #if defined(NORMAL) && defined(USESPHERICALINVERTEX) @@ -12458,7 +12458,7 @@ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90 #endif } #endif -`;A.IncludesShadersStoreWGSL[p6]||(A.IncludesShadersStoreWGSL[p6]=Mme)});var _6,Ime,HO=I(()=>{k();_6="openpbrSubsurfaceLayerData",Ime=`var subsurface_weight: f32=uniforms.vSubsurfaceWeight;var subsurface_color: vec3f=uniforms.vSubsurfaceColor.rgb;var subsurface_radius: f32=uniforms.vSubsurfaceRadius;var subsurface_radius_scale: vec3f=uniforms.vSubsurfaceRadiusScale;var subsurface_scatter_anisotropy: f32=clamp(uniforms.vSubsurfaceScatterAnisotropy,-0.9999f,0.9999f); +`;A.IncludesShadersStoreWGSL[v6]||(A.IncludesShadersStoreWGSL[v6]=Dme)});var E6,Lme,YO=I(()=>{k();E6="openpbrSubsurfaceLayerData",Lme=`var subsurface_weight: f32=uniforms.vSubsurfaceWeight;var subsurface_color: vec3f=uniforms.vSubsurfaceColor.rgb;var subsurface_radius: f32=uniforms.vSubsurfaceRadius;var subsurface_radius_scale: vec3f=uniforms.vSubsurfaceRadiusScale;var subsurface_scatter_anisotropy: f32=clamp(uniforms.vSubsurfaceScatterAnisotropy,-0.9999f,0.9999f); #ifdef SUBSURFACE_WEIGHT let subsurfaceWeightFromTexture: vec4f=textureSample(subsurfaceWeightSampler,subsurfaceWeightSamplerSampler,fragmentInputs.vSubsurfaceWeightUV+uvOffset); #endif @@ -12482,7 +12482,7 @@ subsurface_color*=uniforms.vSubsurfaceColorInfos.y; #ifdef SUBSURFACE_RADIUS_SCALE subsurface_radius_scale*=subsurfaceRadiusScaleFromTexture.rgb; #endif -`;A.IncludesShadersStoreWGSL[_6]||(A.IncludesShadersStoreWGSL[_6]=Ime)});var g6,yme,zO=I(()=>{k();g6="openpbrTransmissionLayerData",yme=`var transmission_weight: f32=uniforms.vTransmissionWeight;var transmission_color: vec3f=uniforms.vTransmissionColor.rgb;var transmission_depth: f32=uniforms.vTransmissionDepth;var transmission_scatter: vec3f=uniforms.vTransmissionScatter.rgb;var transmission_scatter_anisotropy: f32=clamp(uniforms.vTransmissionScatterAnisotropy,-0.9999f,0.9999f);var transmission_dispersion_scale: f32=uniforms.vTransmissionDispersionScale;var transmission_dispersion_abbe_number: f32=uniforms.vTransmissionDispersionAbbeNumber; +`;A.IncludesShadersStoreWGSL[E6]||(A.IncludesShadersStoreWGSL[E6]=Lme)});var S6,Ome,KO=I(()=>{k();S6="openpbrTransmissionLayerData",Ome=`var transmission_weight: f32=uniforms.vTransmissionWeight;var transmission_color: vec3f=uniforms.vTransmissionColor.rgb;var transmission_depth: f32=uniforms.vTransmissionDepth;var transmission_scatter: vec3f=uniforms.vTransmissionScatter.rgb;var transmission_scatter_anisotropy: f32=clamp(uniforms.vTransmissionScatterAnisotropy,-0.9999f,0.9999f);var transmission_dispersion_scale: f32=uniforms.vTransmissionDispersionScale;var transmission_dispersion_abbe_number: f32=uniforms.vTransmissionDispersionAbbeNumber; #ifdef TRANSMISSION_WEIGHT let transmissionWeightFromTexture: vec4f=textureSample(transmissionWeightSampler,transmissionWeightSamplerSampler,fragmentInputs.vTransmissionWeightUV+uvOffset); #endif @@ -12518,7 +12518,7 @@ transmission_scatter*=transmissionScatterFromTexture.rgb; #ifdef TRANSMISSION_DISPERSION_SCALE transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r; #endif -`;A.IncludesShadersStoreWGSL[g6]||(A.IncludesShadersStoreWGSL[g6]=yme)});var E6={};Be(E6,{geometryPixelShaderWGSL:()=>Cme});var XO,v6,Cme,S6=I(()=>{k();Sc();ER();SR();wa();bb();Sh();xp();GO();Mb();fv();kO();WO();Ah();Tc();TR();HO();zO();XO="geometryPixelShader",v6=`#ifdef BUMP +`;A.IncludesShadersStoreWGSL[S6]||(A.IncludesShadersStoreWGSL[S6]=Ome)});var A6={};Be(A6,{geometryPixelShaderWGSL:()=>Nme});var jO,T6,Nme,x6=I(()=>{k();Sc();TR();AR();wa();Ib();Sh();xp();HO();yb();fv();zO();XO();Ah();Tc();xR();YO();KO();jO="geometryPixelShader",T6=`#ifdef BUMP varying vWorldView0: vec4f;varying vWorldView1: vec4f;varying vWorldView2: vec4f;varying vWorldView3: vec4f;varying vNormalW: vec3f; #else varying vNormalV: vec3f; @@ -12779,22 +12779,22 @@ fragmentOutputs.fragData6=fragData[6]; fragmentOutputs.fragData7=fragData[7]; #endif } -`;A.ShadersStoreWGSL[XO]||(A.ShadersStoreWGSL[XO]=v6);Cme={name:XO,shader:v6}});var T6,YO,ps,A6=I(()=>{ke();Wi();Gr();V8();Ht();un();Yn();FO();UO();Ua();vl();Xn();yO();T6=["diffuseSampler","bumpSampler","reflectivitySampler","albedoSampler","morphTargets","boneSampler","transmissionWeightSampler","subsurfaceWeightSampler","iblShadowSampler"],YO=["world","mBones","viewProjection","diffuseMatrix","view","previousWorld","previousViewProjection","mPreviousBones","bumpMatrix","reflectivityMatrix","albedoMatrix","reflectivityColor","albedoColor","reflectionMatrix","vTransmissionWeight","vSubsurfaceWeight","vEyePosition","vTransmissionScatterAnisotropy","vSubsurfaceScatterAnisotropy","shadowTextureSize","metallic","glossiness","vTangentSpaceParams","vBumpInfos","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","boneTextureInfo"];Of(YO,T6,!0);Wn(YO);ps=class n{get normalsAreUnsigned(){return this._normalsAreUnsigned}_linkPrePassRenderer(e){this._linkedWithPrePass=!0,this._prePassRenderer=e,this._multiRenderTarget&&(this._multiRenderTarget.onClearObservable.clear(),this._multiRenderTarget.onClearObservable.add(()=>{}))}_unlinkPrePassRenderer(){this._linkedWithPrePass=!1,this._createRenderTargets()}_resetLayout(){this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableReflectivity=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._attachmentsFromPrePass=[]}_forceTextureType(e,t){e===n.POSITION_TEXTURE_TYPE?(this._positionIndex=t,this._enablePosition=!0):e===n.VELOCITY_TEXTURE_TYPE?(this._velocityIndex=t,this._enableVelocity=!0):e===n.VELOCITY_LINEAR_TEXTURE_TYPE?(this._velocityLinearIndex=t,this._enableVelocityLinear=!0):e===n.REFLECTIVITY_TEXTURE_TYPE?(this._reflectivityIndex=t,this._enableReflectivity=!0):e===n.DEPTH_TEXTURE_TYPE?(this._depthIndex=t,this._enableDepth=!0):e===n.NORMAL_TEXTURE_TYPE?(this._normalIndex=t,this._enableNormal=!0):e===n.SCREENSPACE_DEPTH_TEXTURE_TYPE?(this._screenspaceDepthIndex=t,this._enableScreenspaceDepth=!0):e===n.IRRADIANCE_TEXTURE_TYPE&&(this._irradianceIndex=t,this._enableIrradiance=!0)}_setAttachments(e){this._attachmentsFromPrePass=e}_linkInternalTexture(e){this._multiRenderTarget.setInternalTexture(e,0,!1)}get renderList(){return this._multiRenderTarget.renderList}set renderList(e){this._multiRenderTarget.renderList=e}get isSupported(){return this._multiRenderTarget.isSupported}getTextureIndex(e){switch(e){case n.POSITION_TEXTURE_TYPE:return this._positionIndex;case n.VELOCITY_TEXTURE_TYPE:return this._velocityIndex;case n.VELOCITY_LINEAR_TEXTURE_TYPE:return this._velocityLinearIndex;case n.REFLECTIVITY_TEXTURE_TYPE:return this._reflectivityIndex;case n.DEPTH_TEXTURE_TYPE:return this._depthIndex;case n.NORMAL_TEXTURE_TYPE:return this._normalIndex;case n.SCREENSPACE_DEPTH_TEXTURE_TYPE:return this._screenspaceDepthIndex;case n.IRRADIANCE_TEXTURE_TYPE:return this._irradianceIndex;default:return-1}}get enableDepth(){return this._enableDepth}set enableDepth(e){this._enableDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableNormal(){return this._enableNormal}set enableNormal(e){this._enableNormal=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enablePosition(){return this._enablePosition}set enablePosition(e){this._enablePosition=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableVelocity(){return this._enableVelocity}set enableVelocity(e){this._enableVelocity=e,e||(this._previousTransformationMatrices={}),this._linkedWithPrePass||(this.dispose(),this._createRenderTargets()),this._scene.needsPreviousWorldMatrices=e}get enableVelocityLinear(){return this._enableVelocityLinear}set enableVelocityLinear(e){this._enableVelocityLinear=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableReflectivity(){return this._enableReflectivity}set enableReflectivity(e){this._enableReflectivity=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableScreenspaceDepth(){return this._enableScreenspaceDepth}set enableScreenspaceDepth(e){this._enableScreenspaceDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableIrradiance(){return this._enableIrradiance}set enableIrradiance(e){this._enableIrradiance=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get scene(){return this._scene}get ratio(){return typeof this._ratioOrDimensions=="object"?1:this._ratioOrDimensions}get shaderLanguage(){return this._shaderLanguage}constructor(e,t=1,i=15,r){this._previousTransformationMatrices={},this._previousBonesTransformationMatrices={},this.excludedSkinnedMeshesFromVelocity=[],this.renderTransparentMeshes=!0,this.generateNormalsInWorldSpace=!1,this._normalsAreUnsigned=!1,this._resizeObserver=null,this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableReflectivity=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._clearColor=new lt(0,0,0,0),this._clearDepthColor=new lt(0,0,0,1),this._positionIndex=-1,this._velocityIndex=-1,this._velocityLinearIndex=-1,this._reflectivityIndex=-1,this._depthIndex=-1,this._normalIndex=-1,this._screenspaceDepthIndex=-1,this._irradianceIndex=-1,this._linkedWithPrePass=!1,this.generateIrradianceWithScatterMask=!1,this.useSpecificClearForDepthTexture=!1,this._shaderLanguage=0,this._shadersLoaded=!1,this._scene=e,this._ratioOrDimensions=t,this._useUbo=e.getEngine().supportsUniformBuffers,this._depthFormat=i,this._textureTypesAndFormats=r||{},this._initShaderSourceAsync(),n._SceneComponentInitialization(this._scene),this._createRenderTargets()}async _initShaderSourceAsync(){this._scene.getEngine().isWebGPU&&!n.ForceGLSL?(this._shaderLanguage=1,await Promise.all([Promise.resolve().then(()=>(c6(),l6)),Promise.resolve().then(()=>(S6(),E6))])):await Promise.all([Promise.resolve().then(()=>(UO(),s6)),Promise.resolve().then(()=>(FO(),$8))]),this._shadersLoaded=!0}isReady(e,t){if(!this._shadersLoaded)return!1;let i=e.getMaterial();if(i&&i.disableDepthWrite)return!1;let r=[],s=[D.PositionKind],a=e.getMesh();a.isVerticesDataPresent(D.NormalKind)&&(r.push("#define HAS_NORMAL_ATTRIBUTE"),s.push(D.NormalKind));let l=!1,c=!1,f=!1;if(i){let p=!1;if(i.needAlphaTestingForMesh(a)&&i.getAlphaTestTexture()&&(r.push("#define ALPHATEST"),r.push(`#define ALPHATEST_UV${i.getAlphaTestTexture().coordinatesIndex+1}`),p=!0),(i.bumpTexture||i.normalTexture||i.geometryNormalTexture)&&ce.BumpTextureEnabled){let g=i.bumpTexture||i.normalTexture||i.geometryNormalTexture;r.push("#define BUMP"),r.push(`#define BUMP_UV${g.coordinatesIndex+1}`),p=!0}if(this._enableReflectivity){let g=!1;if(i.getClassName()==="PBRMetallicRoughnessMaterial")i.metallicRoughnessTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicRoughnessTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g&&(i.baseTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.baseTexture.coordinatesIndex+1}`),i.baseTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.baseColor&&r.push("#define ALBEDOCOLOR"));else if(i.getClassName()==="PBRSpecularGlossinessMaterial")i.specularGlossinessTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularGlossinessTexture.coordinatesIndex+1}`),p=!0,i.specularGlossinessTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE")):i.specularColor&&r.push("#define REFLECTIVITYCOLOR"),i.glossiness!=null&&r.push("#define GLOSSINESS");else if(i.getClassName()==="PBRMaterial")i.metallicTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g?(i.albedoTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.albedoTexture.coordinatesIndex+1}`),i.albedoTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.albedoColor&&r.push("#define ALBEDOCOLOR")):(i.reflectivityTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.reflectivityTexture.coordinatesIndex+1}`),i.reflectivityTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0):i.reflectivityColor&&r.push("#define REFLECTIVITYCOLOR"),i.microSurface!=null&&r.push("#define GLOSSINESS"));else if(i.getClassName()==="StandardMaterial")i.specularTexture&&(r.push("#define REFLECTIVITYTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularTexture.coordinatesIndex+1}`),i.specularTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0),i.specularColor&&r.push("#define REFLECTIVITYCOLOR");else if(i.getClassName()==="OpenPBRMaterial"){let v=i;r.push("#define METALLIC"),r.push("#define ROUGHNESS"),v._useRoughnessFromMetallicTextureGreen&&v.baseMetalnessTexture?(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.baseMetalnessTexture?(r.push("#define METALLIC_TEXTURE"),r.push(`#define METALLIC_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.specularRoughnessTexture&&(r.push("#define ROUGHNESS_TEXTURE"),r.push(`#define ROUGHNESS_UV${v.specularRoughnessTexture.coordinatesIndex+1}`),p=!0),v.baseColorTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${v.baseColorTexture.coordinatesIndex+1}`),v.baseColorTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),v.baseColor&&r.push("#define ALBEDOCOLOR")}}if(this._enableIrradiance&&this.generateIrradianceWithScatterMask&&(r.push("#define IRRADIANCE_SCATTER_MASK"),i.getClassName()==="OpenPBRMaterial")){let g=i;g.subsurfaceWeight>0&&g.subsurfaceWeightTexture&&(r.push("#define SUBSURFACE_WEIGHT"),r.push(`#define SUBSURFACEWEIGHT_UV${g.subsurfaceWeightTexture.coordinatesIndex+1}`),p=!0),g.transmissionWeight>0&&g.transmissionWeightTexture&&(r.push("#define TRANSMISSION_WEIGHT"),r.push(`#define TRANSMISSIONWEIGHT_UV${g.transmissionWeightTexture.coordinatesIndex+1}`),p=!0)}p&&(r.push("#define NEED_UV"),a.isVerticesDataPresent(D.UVKind)&&(s.push(D.UVKind),r.push("#define UV1"),l=!0),a.isVerticesDataPresent(D.UV2Kind)&&(s.push(D.UV2Kind),r.push("#define UV2"),c=!0))}if(this._enableDepth&&(r.push("#define DEPTH"),r.push("#define DEPTH_INDEX "+this._depthIndex)),this._enableNormal&&(r.push("#define NORMAL"),r.push("#define NORMAL_INDEX "+this._normalIndex)),this._enablePosition&&(r.push("#define POSITION"),r.push("#define POSITION_INDEX "+this._positionIndex)),this._enableVelocity&&(r.push("#define VELOCITY"),r.push("#define VELOCITY_INDEX "+this._velocityIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableVelocityLinear&&(r.push("#define VELOCITY_LINEAR"),r.push("#define VELOCITY_LINEAR_INDEX "+this._velocityLinearIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableReflectivity&&(r.push("#define REFLECTIVITY"),r.push("#define REFLECTIVITY_INDEX "+this._reflectivityIndex)),this._enableScreenspaceDepth&&this._screenspaceDepthIndex!==-1&&(r.push("#define SCREENSPACE_DEPTH_INDEX "+this._screenspaceDepthIndex),r.push("#define SCREENSPACE_DEPTH")),this._enableIrradiance&&this._irradianceIndex!==-1){r.push("#define IRRADIANCE_INDEX "+this._irradianceIndex),r.push("#define IRRADIANCE");let p=this._scene;if(p.environmentTexture){let g={},v=!1,x=0;(i.getClassName()==="OpenPBRMaterial"||i.getClassName()==="StandardMaterial"||i.getClassName()==="PBRMetallicRoughnessMaterial"||i.getClassName()==="PBRSpecularGlossinessMaterial"||i.getClassName()==="PBRMaterial")&&(v=!!i.realtimeFiltering,x=i.realtimeFilteringQuality||0),Lf(p,p.environmentTexture,g,v,x,!0);for(let E in g)g[E]&&r.push("#define "+E);g.USEIRRADIANCEMAP||r.push("#define SPHERICAL_HARMONICS");let S=p.postProcessRenderPipelineManager.supportedPipelines.find(E=>E.getClassName()==="IBLShadowsRenderPipeline");if(S){let E=S;E._getAccumulatedTexture()&&(r.push("#define IBL_SHADOW_TEXTURE"),E.coloredShadows&&r.push("#define COLORED_IBL_SHADOWS"))}}}this.generateNormalsInWorldSpace&&r.push("#define NORMAL_WORLDSPACE"),this._normalsAreUnsigned&&r.push("#define ENCODE_NORMAL"),a.useBones&&a.computeBonesUsingShaders&&a.skeleton?(s.push(D.MatricesIndicesKind),s.push(D.MatricesWeightsKind),a.numBoneInfluencers>4&&(s.push(D.MatricesIndicesExtraKind),s.push(D.MatricesWeightsExtraKind)),r.push("#define NUM_BONE_INFLUENCERS "+a.numBoneInfluencers),r.push("#define BONETEXTURE "+a.skeleton.isUsingTextureForMatrices),r.push("#define BonesPerMesh "+(a.skeleton.bones.length+1))):(r.push("#define NUM_BONE_INFLUENCERS 0"),r.push("#define BONETEXTURE false"),r.push("#define BonesPerMesh 0"));let d=a.morphTargetManager?El(a.morphTargetManager,r,s,a,!0,!0,!1,l,c,f):0;t&&(r.push("#define INSTANCES"),yo(s,this._enableVelocity||this._enableVelocityLinear),e.getRenderingMesh().hasThinInstances&&r.push("#define THIN_INSTANCES")),this._linkedWithPrePass?r.push("#define SCENE_MRT_COUNT "+this._attachmentsFromPrePass.length):r.push("#define SCENE_MRT_COUNT "+this._multiRenderTarget.textures.length),gl(i,this._scene,r);let h=this._scene.getEngine(),u=e._getDrawWrapper(void 0,!0),m=u.defines,_=r.join(` -`);return m!==_&&u.setEffect(h.createEffect("geometry",{attributes:s,uniformsNames:YO,samplers:T6,defines:_,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},h),_),u.effect.isReady()}getGBuffer(){return this._multiRenderTarget}get samples(){return this._multiRenderTarget.samples}set samples(e){this._multiRenderTarget.samples=e}dispose(){var e,t;this._resizeObserver&&(this._scene.getEngine().onResizeObservable.remove(this._resizeObserver),this._resizeObserver=null),(e=this._multiRenderTarget)!=null&&e.renderTarget&&this.scene.getEngine()._currentRenderTarget===this._multiRenderTarget.renderTarget&&this.scene.getEngine().unBindFramebuffer((t=this._multiRenderTarget)==null?void 0:t.renderTarget),this.getGBuffer().dispose()}_assignRenderTargetIndices(){let e=[],t=[],i=0;return this._enableDepth&&(this._depthIndex=i,i++,e.push("gBuffer_Depth"),t.push(this._textureTypesAndFormats[n.DEPTH_TEXTURE_TYPE])),this._enableNormal&&(this._normalIndex=i,i++,e.push("gBuffer_Normal"),t.push(this._textureTypesAndFormats[n.NORMAL_TEXTURE_TYPE])),this._enablePosition&&(this._positionIndex=i,i++,e.push("gBuffer_Position"),t.push(this._textureTypesAndFormats[n.POSITION_TEXTURE_TYPE])),this._enableVelocity&&(this._velocityIndex=i,i++,e.push("gBuffer_Velocity"),t.push(this._textureTypesAndFormats[n.VELOCITY_TEXTURE_TYPE])),this._enableVelocityLinear&&(this._velocityLinearIndex=i,i++,e.push("gBuffer_VelocityLinear"),t.push(this._textureTypesAndFormats[n.VELOCITY_LINEAR_TEXTURE_TYPE])),this._enableReflectivity&&(this._reflectivityIndex=i,i++,e.push("gBuffer_Reflectivity"),t.push(this._textureTypesAndFormats[n.REFLECTIVITY_TEXTURE_TYPE])),this._enableScreenspaceDepth&&(this._screenspaceDepthIndex=i,i++,e.push("gBuffer_ScreenspaceDepth"),t.push(this._textureTypesAndFormats[n.SCREENSPACE_DEPTH_TEXTURE_TYPE])),this._enableIrradiance&&(this._irradianceIndex=i,i++,e.push("gBuffer_Irradiance"),t.push(this._textureTypesAndFormats[n.IRRADIANCE_TEXTURE_TYPE])),[i,e,t]}_createRenderTargets(){var g;let e=this._scene.getEngine(),[t,i,r]=this._assignRenderTargetIndices(),s=0;e._caps.textureFloat&&e._caps.textureFloatLinearFiltering?s=1:e._caps.textureHalfFloat&&e._caps.textureHalfFloatLinearFiltering&&(s=2);let a=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions},o=[],l=[],c=[];for(let v of r)v?(o.push(v.textureType),l.push(v.textureFormat),c.push((g=v.samplingMode)!=null?g:2)):(o.push(s),l.push(5),c.push(2));if(this._normalsAreUnsigned=o[n.NORMAL_TEXTURE_TYPE]===11||o[n.NORMAL_TEXTURE_TYPE]===13,this._multiRenderTarget=new Ab("gBuffer",a,t,this._scene,{generateMipMaps:!1,generateDepthTexture:!0,types:o,formats:l,samplingModes:c,depthTextureFormat:this._depthFormat},i.concat("gBuffer_DepthBuffer")),!this.isSupported)return;this._multiRenderTarget.wrapU=ge.CLAMP_ADDRESSMODE,this._multiRenderTarget.wrapV=ge.CLAMP_ADDRESSMODE,this._multiRenderTarget.refreshRate=1,this._multiRenderTarget.renderParticles=!1,this._multiRenderTarget.renderList=null;let f=[!0],d=[!1],h=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:u),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(_),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(u)}),this._resizeObserver=e.onResizeObservable.add(()=>{if(this._multiRenderTarget){let v=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions};this._multiRenderTarget.resize(v)}});let p=v=>{let x=v.getRenderingMesh(),S=v.getEffectiveMesh(),E=this._scene,T=E.getEngine(),R=v.getMaterial();if(!R)return;if(S._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[S.uniqueId]&&(this._previousTransformationMatrices[S.uniqueId]={world:q.Identity(),viewProjection:E.getTransformMatrix()},x.skeleton)){let L=x.skeleton.getTransformMatrices(x);this._previousBonesTransformationMatrices[x.uniqueId]=this._copyBonesTransformationMatrices(L,new Float32Array(L.length))}let M=x._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let y=T.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||x.hasThinInstances),C=S.getWorldMatrix();if(this.isReady(v,y)){let L=v._getDrawWrapper();if(!L)return;let w=L.effect;T.enableEffect(L),y||x._bind(v,w,R.fillMode),this._useUbo?(Df(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",E.getTransformMatrix()),w.setMatrix("view",E.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let G;if(!x._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=S._getWorldMatrixDeterminant();G=R._getEffectiveOrientation(x),N<0&&(G=G===Se.ClockWiseSideOrientation?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation)}else G=x._effectiveSideOrientation;if(R._preBind(L,G),R.needAlphaTestingForMesh(S)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&E.getEngine().getCaps().standardDerivatives&&ce.BumpTextureEnabled){let N=R.bumpTexture||R.normalTexture||R.geometryNormalTexture;w.setFloat3("vBumpInfos",N.coordinatesIndex,1/N.level,R.parallaxScaleBias),w.setMatrix("bumpMatrix",N.getTextureMatrix()),w.setTexture("bumpSampler",N),w.setFloat2("vTangentSpaceParams",R.invertNormalMapX?-1:1,R.invertNormalMapY?-1:1)}if(this._enableReflectivity){if(R.getClassName()==="PBRMetallicRoughnessMaterial")R.metallicRoughnessTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicRoughnessTexture),w.setMatrix("reflectivityMatrix",R.metallicRoughnessTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.baseTexture!==null&&(w.setTexture("albedoSampler",R.baseTexture),w.setMatrix("albedoMatrix",R.baseTexture.getTextureMatrix())),R.baseColor!==null&&w.setColor3("albedoColor",R.baseColor);else if(R.getClassName()==="PBRSpecularGlossinessMaterial")R.specularGlossinessTexture!==null?(w.setTexture("reflectivitySampler",R.specularGlossinessTexture),w.setMatrix("reflectivityMatrix",R.specularGlossinessTexture.getTextureMatrix())):R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor),R.glossiness!==null&&w.setFloat("glossiness",R.glossiness);else if(R.getClassName()==="PBRMaterial")R.metallicTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicTexture),w.setMatrix("reflectivityMatrix",R.metallicTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.roughness!==null||R.metallic!==null||R.metallicTexture!==null?(R.albedoTexture!==null&&(w.setTexture("albedoSampler",R.albedoTexture),w.setMatrix("albedoMatrix",R.albedoTexture.getTextureMatrix())),R.albedoColor!==null&&w.setColor3("albedoColor",R.albedoColor)):(R.reflectivityTexture!==null?(w.setTexture("reflectivitySampler",R.reflectivityTexture),w.setMatrix("reflectivityMatrix",R.reflectivityTexture.getTextureMatrix())):R.reflectivityColor!==null&&w.setColor3("reflectivityColor",R.reflectivityColor),R.microSurface!==null&&w.setFloat("glossiness",R.microSurface));else if(R.getClassName()==="StandardMaterial")R.specularTexture!==null&&(w.setTexture("reflectivitySampler",R.specularTexture),w.setMatrix("reflectivityMatrix",R.specularTexture.getTextureMatrix())),R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor);else if(R.getClassName()==="OpenPBRMaterial"){let N=R;N._useRoughnessFromMetallicTextureGreen&&N.baseMetalnessTexture?(w.setTexture("reflectivitySampler",N.baseMetalnessTexture),w.setMatrix("reflectivityMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.baseMetalnessTexture?(w.setTexture("metallicSampler",N.baseMetalnessTexture),w.setMatrix("metallicMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.specularRoughnessTexture&&(w.setTexture("roughnessSampler",N.specularRoughnessTexture),w.setMatrix("roughnessMatrix",N.specularRoughnessTexture.getTextureMatrix())),w.setFloat("metallic",N.baseMetalness),w.setFloat("glossiness",1-N.specularRoughness),N.baseColorTexture!==null&&(w.setTexture("albedoSampler",N.baseColorTexture),w.setMatrix("albedoMatrix",N.baseColorTexture.getTextureMatrix())),N.baseColor!==null&&w.setColor3("albedoColor",N.baseColor)}}if(this._enableIrradiance&&E.environmentTexture){let N=E.environmentTexture,B=E.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let J=B._getAccumulatedTexture();J&&(w.setTexture("iblShadowSampler",J),w.setFloat2("shadowTextureSize",J.getSize().width,J.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*E.iblIntensity,0),w.setTexture("reflectionSampler",N),N.irradianceTexture&&(w.setTexture("irradianceSampler",N.irradianceTexture),N.irradianceTexture._dominantDirection&&w.setVector3("vReflectionDominantDirection",N.irradianceTexture._dominantDirection)),N.sphericalPolynomial){let V=N.sphericalPolynomial;if(V.preScaledHarmonics){let J=V.preScaledHarmonics;w.setVector3("vSphericalL00",J.l00),w.setVector3("vSphericalL1_1",J.l1_1),w.setVector3("vSphericalL10",J.l10),w.setVector3("vSphericalL11",J.l11),w.setVector3("vSphericalL2_2",J.l2_2),w.setVector3("vSphericalL2_1",J.l2_1),w.setVector3("vSphericalL20",J.l20),w.setVector3("vSphericalL21",J.l21),w.setVector3("vSphericalL22",J.l22)}else w.setFloat3("vSphericalX",V.x.x,V.x.y,V.x.z),w.setFloat3("vSphericalY",V.y.x,V.y.y,V.y.z),w.setFloat3("vSphericalZ",V.z.x,V.z.y,V.z.z),w.setFloat3("vSphericalXX_ZZ",V.xx.x-V.zz.x,V.xx.y-V.zz.y,V.xx.z-V.zz.z),w.setFloat3("vSphericalYY_ZZ",V.yy.x-V.zz.x,V.yy.y-V.zz.y,V.yy.z-V.zz.z),w.setFloat3("vSphericalZZ",V.zz.x,V.zz.y,V.zz.z),w.setFloat3("vSphericalXY",V.xy.x,V.xy.y,V.xy.z),w.setFloat3("vSphericalYZ",V.yz.x,V.yz.y,V.yz.z),w.setFloat3("vSphericalZX",V.zx.x,V.zx.y,V.zx.z)}if(this.generateIrradianceWithScatterMask&&R.getClassName()==="OpenPBRMaterial"){let V=R;w.setFloat("vSubsurfaceWeight",V.subsurfaceWeight),V.subsurfaceWeightTexture&&(w.setTexture("subsurfaceWeightSampler",V.subsurfaceWeightTexture),w.setMatrix("subsurfaceWeightMatrix",V.subsurfaceWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionWeight",V.transmissionWeight),V.transmissionWeightTexture&&(w.setTexture("transmissionWeightSampler",V.transmissionWeightTexture),w.setMatrix("transmissionWeightMatrix",V.transmissionWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionScatterAnisotropy",V.transmissionScatterAnisotropy),w.setFloat("vSubsurfaceScatterAnisotropy",V.subsurfaceScatterAnisotropy)}}if(Hn(w,R,this._scene),x.useBones&&x.computeBonesUsingShaders&&x.skeleton){let N=x.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(x);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",x.skeleton.getTransformMatrices(x));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[x.uniqueId])}zn(x,w),x.morphTargetManager&&x.morphTargetManager.isUsingTextureForTargets&&x.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[S.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[S.uniqueId].viewProjection)),y&&x.hasThinInstances&&w.setMatrix("world",C),x._processRendering(S,v,w,R.fillMode,M,y,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[S.uniqueId].world=C.clone(),this._previousTransformationMatrices[S.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),x.skeleton&&this._copyBonesTransformationMatrices(x.skeleton.getTransformMatrices(x),this._previousBonesTransformationMatrices[S.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,x,S)=>{if((S||x===0)&&v.subMeshes)for(let E=0;E{let T;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(E.length){for(e.setColorWrite(!1),T=0;T{throw Qe("GeometryBufferRendererSceneComponent")}});var x6,Pme,KO=I(()=>{k();Sh();cv();x6="openpbrUboDeclaration",Pme=`uniform vTangentSpaceParams: vec2f;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vDebugMode: vec2f;uniform renderTargetSize: vec2f;uniform cameraInfo: vec4f;uniform backgroundRefractionMatrix: mat4x4f;uniform vBackgroundRefractionInfos: vec3f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f;uniform vBaseWeight: f32;uniform vBaseColor: vec4f;uniform vBaseDiffuseRoughness: f32;uniform vReflectanceInfo: vec4f;uniform vSpecularColor: vec4f;uniform vSpecularAnisotropy: vec3f;uniform vTransmissionWeight : f32;uniform vTransmissionColor : vec3f;uniform vTransmissionDepth : f32;uniform vTransmissionScatter : vec3f;uniform vTransmissionScatterAnisotropy : f32;uniform vTransmissionDispersionScale : f32;uniform vTransmissionDispersionAbbeNumber : f32;uniform vSubsurfaceWeight: f32;uniform vSubsurfaceColor: vec3f;uniform vSubsurfaceRadius: f32;uniform vSubsurfaceRadiusScale: vec3f;uniform vSubsurfaceScatterAnisotropy: f32;uniform vCoatWeight: f32;uniform vCoatColor: vec3f;uniform vCoatRoughness: f32;uniform vCoatRoughnessAnisotropy: f32;uniform vCoatIor: f32;uniform vCoatDarkening : f32;uniform vFuzzWeight: f32;uniform vFuzzColor: vec3f;uniform vFuzzRoughness: f32;uniform vGeometryThinWalled: f32;uniform vGeometryCoatTangent: vec2f;uniform vGeometryThickness: f32;uniform vEmissionColor: vec3f;uniform vThinFilmWeight: f32;uniform vThinFilmThickness: vec2f;uniform vThinFilmIor: f32;uniform vBaseWeightInfos: vec2f;uniform baseWeightMatrix: mat4x4f;uniform vBaseColorInfos: vec2f;uniform baseColorMatrix: mat4x4f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform vBaseMetalnessInfos: vec2f;uniform baseMetalnessMatrix: mat4x4f;uniform vSpecularWeightInfos: vec2f;uniform specularWeightMatrix: mat4x4f;uniform vSpecularColorInfos: vec2f;uniform specularColorMatrix: mat4x4f;uniform vSpecularRoughnessInfos: vec2f;uniform specularRoughnessMatrix: mat4x4f;uniform vSpecularRoughnessAnisotropyInfos: vec2f;uniform specularRoughnessAnisotropyMatrix: mat4x4f;uniform vTransmissionWeightInfos : vec2f;uniform transmissionWeightMatrix : mat4x4f;uniform vTransmissionColorInfos : vec2f;uniform transmissionColorMatrix : mat4x4f;uniform vTransmissionDepthInfos : vec2f;uniform transmissionDepthMatrix : mat4x4f;uniform vTransmissionScatterInfos : vec2f;uniform transmissionScatterMatrix : mat4x4f;uniform vTransmissionDispersionScaleInfos : vec2f;uniform transmissionDispersionScaleMatrix : mat4x4f;uniform vSubsurfaceWeightInfos: vec2f;uniform subsurfaceWeightMatrix: mat4x4f;uniform vSubsurfaceColorInfos: vec2f;uniform subsurfaceColorMatrix: mat4x4f;uniform vSubsurfaceRadiusScaleInfos: vec2f;uniform subsurfaceRadiusScaleMatrix: mat4x4f;uniform vCoatWeightInfos: vec2f;uniform coatWeightMatrix: mat4x4f;uniform vCoatColorInfos: vec2f;uniform coatColorMatrix: mat4x4f;uniform vCoatRoughnessInfos: vec2f;uniform coatRoughnessMatrix: mat4x4f;uniform vCoatRoughnessAnisotropyInfos: vec2f;uniform coatRoughnessAnisotropyMatrix: mat4x4f;uniform vCoatDarkeningInfos : vec2f;uniform coatDarkeningMatrix : mat4x4f;uniform vFuzzWeightInfos: vec2f;uniform fuzzWeightMatrix: mat4x4f;uniform vFuzzColorInfos: vec2f;uniform fuzzColorMatrix: mat4x4f;uniform vFuzzRoughnessInfos: vec2f;uniform fuzzRoughnessMatrix: mat4x4f;uniform vGeometryNormalInfos: vec2f;uniform geometryNormalMatrix: mat4x4f;uniform vGeometryTangentInfos: vec2f;uniform geometryTangentMatrix: mat4x4f;uniform vGeometryCoatNormalInfos: vec2f;uniform geometryCoatNormalMatrix: mat4x4f;uniform vGeometryCoatTangentInfos: vec2f;uniform geometryCoatTangentMatrix: mat4x4f;uniform vGeometryOpacityInfos: vec2f;uniform geometryOpacityMatrix: mat4x4f;uniform vGeometryThicknessInfos: vec2f;uniform geometryThicknessMatrix: mat4x4f;uniform vEmissionInfos: vec2f;uniform emissionMatrix: mat4x4f;uniform vThinFilmWeightInfos: vec2f;uniform thinFilmWeightMatrix: mat4x4f;uniform vThinFilmThicknessInfos: vec2f;uniform thinFilmThicknessMatrix: mat4x4f;uniform vAmbientOcclusionInfos: vec2f;uniform ambientOcclusionMatrix: mat4x4f; +`;A.ShadersStoreWGSL[jO]||(A.ShadersStoreWGSL[jO]=T6);Nme={name:jO,shader:T6}});var R6,qO,ps,b6=I(()=>{ke();Wi();Gr();W8();Ht();un();Yn();VO();kO();Ua();vl();Xn();DO();R6=["diffuseSampler","bumpSampler","reflectivitySampler","albedoSampler","morphTargets","boneSampler","transmissionWeightSampler","subsurfaceWeightSampler","iblShadowSampler"],qO=["world","mBones","viewProjection","diffuseMatrix","view","previousWorld","previousViewProjection","mPreviousBones","bumpMatrix","reflectivityMatrix","albedoMatrix","reflectivityColor","albedoColor","reflectionMatrix","vTransmissionWeight","vSubsurfaceWeight","vEyePosition","vTransmissionScatterAnisotropy","vSubsurfaceScatterAnisotropy","shadowTextureSize","metallic","glossiness","vTangentSpaceParams","vBumpInfos","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","boneTextureInfo"];Of(qO,R6,!0);Wn(qO);ps=class n{get normalsAreUnsigned(){return this._normalsAreUnsigned}_linkPrePassRenderer(e){this._linkedWithPrePass=!0,this._prePassRenderer=e,this._multiRenderTarget&&(this._multiRenderTarget.onClearObservable.clear(),this._multiRenderTarget.onClearObservable.add(()=>{}))}_unlinkPrePassRenderer(){this._linkedWithPrePass=!1,this._createRenderTargets()}_resetLayout(){this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableReflectivity=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._attachmentsFromPrePass=[]}_forceTextureType(e,t){e===n.POSITION_TEXTURE_TYPE?(this._positionIndex=t,this._enablePosition=!0):e===n.VELOCITY_TEXTURE_TYPE?(this._velocityIndex=t,this._enableVelocity=!0):e===n.VELOCITY_LINEAR_TEXTURE_TYPE?(this._velocityLinearIndex=t,this._enableVelocityLinear=!0):e===n.REFLECTIVITY_TEXTURE_TYPE?(this._reflectivityIndex=t,this._enableReflectivity=!0):e===n.DEPTH_TEXTURE_TYPE?(this._depthIndex=t,this._enableDepth=!0):e===n.NORMAL_TEXTURE_TYPE?(this._normalIndex=t,this._enableNormal=!0):e===n.SCREENSPACE_DEPTH_TEXTURE_TYPE?(this._screenspaceDepthIndex=t,this._enableScreenspaceDepth=!0):e===n.IRRADIANCE_TEXTURE_TYPE&&(this._irradianceIndex=t,this._enableIrradiance=!0)}_setAttachments(e){this._attachmentsFromPrePass=e}_linkInternalTexture(e){this._multiRenderTarget.setInternalTexture(e,0,!1)}get renderList(){return this._multiRenderTarget.renderList}set renderList(e){this._multiRenderTarget.renderList=e}get isSupported(){return this._multiRenderTarget.isSupported}getTextureIndex(e){switch(e){case n.POSITION_TEXTURE_TYPE:return this._positionIndex;case n.VELOCITY_TEXTURE_TYPE:return this._velocityIndex;case n.VELOCITY_LINEAR_TEXTURE_TYPE:return this._velocityLinearIndex;case n.REFLECTIVITY_TEXTURE_TYPE:return this._reflectivityIndex;case n.DEPTH_TEXTURE_TYPE:return this._depthIndex;case n.NORMAL_TEXTURE_TYPE:return this._normalIndex;case n.SCREENSPACE_DEPTH_TEXTURE_TYPE:return this._screenspaceDepthIndex;case n.IRRADIANCE_TEXTURE_TYPE:return this._irradianceIndex;default:return-1}}get enableDepth(){return this._enableDepth}set enableDepth(e){this._enableDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableNormal(){return this._enableNormal}set enableNormal(e){this._enableNormal=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enablePosition(){return this._enablePosition}set enablePosition(e){this._enablePosition=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableVelocity(){return this._enableVelocity}set enableVelocity(e){this._enableVelocity=e,e||(this._previousTransformationMatrices={}),this._linkedWithPrePass||(this.dispose(),this._createRenderTargets()),this._scene.needsPreviousWorldMatrices=e}get enableVelocityLinear(){return this._enableVelocityLinear}set enableVelocityLinear(e){this._enableVelocityLinear=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableReflectivity(){return this._enableReflectivity}set enableReflectivity(e){this._enableReflectivity=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableScreenspaceDepth(){return this._enableScreenspaceDepth}set enableScreenspaceDepth(e){this._enableScreenspaceDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableIrradiance(){return this._enableIrradiance}set enableIrradiance(e){this._enableIrradiance=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get scene(){return this._scene}get ratio(){return typeof this._ratioOrDimensions=="object"?1:this._ratioOrDimensions}get shaderLanguage(){return this._shaderLanguage}constructor(e,t=1,i=15,r){this._previousTransformationMatrices={},this._previousBonesTransformationMatrices={},this.excludedSkinnedMeshesFromVelocity=[],this.renderTransparentMeshes=!0,this.generateNormalsInWorldSpace=!1,this._normalsAreUnsigned=!1,this._resizeObserver=null,this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableReflectivity=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._clearColor=new lt(0,0,0,0),this._clearDepthColor=new lt(0,0,0,1),this._positionIndex=-1,this._velocityIndex=-1,this._velocityLinearIndex=-1,this._reflectivityIndex=-1,this._depthIndex=-1,this._normalIndex=-1,this._screenspaceDepthIndex=-1,this._irradianceIndex=-1,this._linkedWithPrePass=!1,this.generateIrradianceWithScatterMask=!1,this.useSpecificClearForDepthTexture=!1,this._shaderLanguage=0,this._shadersLoaded=!1,this._scene=e,this._ratioOrDimensions=t,this._useUbo=e.getEngine().supportsUniformBuffers,this._depthFormat=i,this._textureTypesAndFormats=r||{},this._initShaderSourceAsync(),n._SceneComponentInitialization(this._scene),this._createRenderTargets()}async _initShaderSourceAsync(){this._scene.getEngine().isWebGPU&&!n.ForceGLSL?(this._shaderLanguage=1,await Promise.all([Promise.resolve().then(()=>(h6(),d6)),Promise.resolve().then(()=>(x6(),A6))])):await Promise.all([Promise.resolve().then(()=>(kO(),l6)),Promise.resolve().then(()=>(VO(),t6))]),this._shadersLoaded=!0}isReady(e,t){if(!this._shadersLoaded)return!1;let i=e.getMaterial();if(i&&i.disableDepthWrite)return!1;let r=[],s=[D.PositionKind],a=e.getMesh();a.isVerticesDataPresent(D.NormalKind)&&(r.push("#define HAS_NORMAL_ATTRIBUTE"),s.push(D.NormalKind));let l=!1,c=!1,f=!1;if(i){let p=!1;if(i.needAlphaTestingForMesh(a)&&i.getAlphaTestTexture()&&(r.push("#define ALPHATEST"),r.push(`#define ALPHATEST_UV${i.getAlphaTestTexture().coordinatesIndex+1}`),p=!0),(i.bumpTexture||i.normalTexture||i.geometryNormalTexture)&&ce.BumpTextureEnabled){let g=i.bumpTexture||i.normalTexture||i.geometryNormalTexture;r.push("#define BUMP"),r.push(`#define BUMP_UV${g.coordinatesIndex+1}`),p=!0}if(this._enableReflectivity){let g=!1;if(i.getClassName()==="PBRMetallicRoughnessMaterial")i.metallicRoughnessTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicRoughnessTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g&&(i.baseTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.baseTexture.coordinatesIndex+1}`),i.baseTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.baseColor&&r.push("#define ALBEDOCOLOR"));else if(i.getClassName()==="PBRSpecularGlossinessMaterial")i.specularGlossinessTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularGlossinessTexture.coordinatesIndex+1}`),p=!0,i.specularGlossinessTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE")):i.specularColor&&r.push("#define REFLECTIVITYCOLOR"),i.glossiness!=null&&r.push("#define GLOSSINESS");else if(i.getClassName()==="PBRMaterial")i.metallicTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g?(i.albedoTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.albedoTexture.coordinatesIndex+1}`),i.albedoTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.albedoColor&&r.push("#define ALBEDOCOLOR")):(i.reflectivityTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.reflectivityTexture.coordinatesIndex+1}`),i.reflectivityTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0):i.reflectivityColor&&r.push("#define REFLECTIVITYCOLOR"),i.microSurface!=null&&r.push("#define GLOSSINESS"));else if(i.getClassName()==="StandardMaterial")i.specularTexture&&(r.push("#define REFLECTIVITYTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularTexture.coordinatesIndex+1}`),i.specularTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0),i.specularColor&&r.push("#define REFLECTIVITYCOLOR");else if(i.getClassName()==="OpenPBRMaterial"){let v=i;r.push("#define METALLIC"),r.push("#define ROUGHNESS"),v._useRoughnessFromMetallicTextureGreen&&v.baseMetalnessTexture?(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.baseMetalnessTexture?(r.push("#define METALLIC_TEXTURE"),r.push(`#define METALLIC_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.specularRoughnessTexture&&(r.push("#define ROUGHNESS_TEXTURE"),r.push(`#define ROUGHNESS_UV${v.specularRoughnessTexture.coordinatesIndex+1}`),p=!0),v.baseColorTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${v.baseColorTexture.coordinatesIndex+1}`),v.baseColorTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),v.baseColor&&r.push("#define ALBEDOCOLOR")}}if(this._enableIrradiance&&this.generateIrradianceWithScatterMask&&(r.push("#define IRRADIANCE_SCATTER_MASK"),i.getClassName()==="OpenPBRMaterial")){let g=i;g.subsurfaceWeight>0&&g.subsurfaceWeightTexture&&(r.push("#define SUBSURFACE_WEIGHT"),r.push(`#define SUBSURFACEWEIGHT_UV${g.subsurfaceWeightTexture.coordinatesIndex+1}`),p=!0),g.transmissionWeight>0&&g.transmissionWeightTexture&&(r.push("#define TRANSMISSION_WEIGHT"),r.push(`#define TRANSMISSIONWEIGHT_UV${g.transmissionWeightTexture.coordinatesIndex+1}`),p=!0)}p&&(r.push("#define NEED_UV"),a.isVerticesDataPresent(D.UVKind)&&(s.push(D.UVKind),r.push("#define UV1"),l=!0),a.isVerticesDataPresent(D.UV2Kind)&&(s.push(D.UV2Kind),r.push("#define UV2"),c=!0))}if(this._enableDepth&&(r.push("#define DEPTH"),r.push("#define DEPTH_INDEX "+this._depthIndex)),this._enableNormal&&(r.push("#define NORMAL"),r.push("#define NORMAL_INDEX "+this._normalIndex)),this._enablePosition&&(r.push("#define POSITION"),r.push("#define POSITION_INDEX "+this._positionIndex)),this._enableVelocity&&(r.push("#define VELOCITY"),r.push("#define VELOCITY_INDEX "+this._velocityIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableVelocityLinear&&(r.push("#define VELOCITY_LINEAR"),r.push("#define VELOCITY_LINEAR_INDEX "+this._velocityLinearIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableReflectivity&&(r.push("#define REFLECTIVITY"),r.push("#define REFLECTIVITY_INDEX "+this._reflectivityIndex)),this._enableScreenspaceDepth&&this._screenspaceDepthIndex!==-1&&(r.push("#define SCREENSPACE_DEPTH_INDEX "+this._screenspaceDepthIndex),r.push("#define SCREENSPACE_DEPTH")),this._enableIrradiance&&this._irradianceIndex!==-1){r.push("#define IRRADIANCE_INDEX "+this._irradianceIndex),r.push("#define IRRADIANCE");let p=this._scene;if(p.environmentTexture){let g={},v=!1,x=0;(i.getClassName()==="OpenPBRMaterial"||i.getClassName()==="StandardMaterial"||i.getClassName()==="PBRMetallicRoughnessMaterial"||i.getClassName()==="PBRSpecularGlossinessMaterial"||i.getClassName()==="PBRMaterial")&&(v=!!i.realtimeFiltering,x=i.realtimeFilteringQuality||0),Lf(p,p.environmentTexture,g,v,x,!0);for(let E in g)g[E]&&r.push("#define "+E);g.USEIRRADIANCEMAP||r.push("#define SPHERICAL_HARMONICS");let S=p.postProcessRenderPipelineManager.supportedPipelines.find(E=>E.getClassName()==="IBLShadowsRenderPipeline");if(S){let E=S;E._getAccumulatedTexture()&&(r.push("#define IBL_SHADOW_TEXTURE"),E.coloredShadows&&r.push("#define COLORED_IBL_SHADOWS"))}}}this.generateNormalsInWorldSpace&&r.push("#define NORMAL_WORLDSPACE"),this._normalsAreUnsigned&&r.push("#define ENCODE_NORMAL"),a.useBones&&a.computeBonesUsingShaders&&a.skeleton?(s.push(D.MatricesIndicesKind),s.push(D.MatricesWeightsKind),a.numBoneInfluencers>4&&(s.push(D.MatricesIndicesExtraKind),s.push(D.MatricesWeightsExtraKind)),r.push("#define NUM_BONE_INFLUENCERS "+a.numBoneInfluencers),r.push("#define BONETEXTURE "+a.skeleton.isUsingTextureForMatrices),r.push("#define BonesPerMesh "+(a.skeleton.bones.length+1))):(r.push("#define NUM_BONE_INFLUENCERS 0"),r.push("#define BONETEXTURE false"),r.push("#define BonesPerMesh 0"));let d=a.morphTargetManager?El(a.morphTargetManager,r,s,a,!0,!0,!1,l,c,f):0;t&&(r.push("#define INSTANCES"),yo(s,this._enableVelocity||this._enableVelocityLinear),e.getRenderingMesh().hasThinInstances&&r.push("#define THIN_INSTANCES")),this._linkedWithPrePass?r.push("#define SCENE_MRT_COUNT "+this._attachmentsFromPrePass.length):r.push("#define SCENE_MRT_COUNT "+this._multiRenderTarget.textures.length),gl(i,this._scene,r);let h=this._scene.getEngine(),u=e._getDrawWrapper(void 0,!0),m=u.defines,_=r.join(` +`);return m!==_&&u.setEffect(h.createEffect("geometry",{attributes:s,uniformsNames:qO,samplers:R6,defines:_,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},h),_),u.effect.isReady()}getGBuffer(){return this._multiRenderTarget}get samples(){return this._multiRenderTarget.samples}set samples(e){this._multiRenderTarget.samples=e}dispose(){var e,t;this._resizeObserver&&(this._scene.getEngine().onResizeObservable.remove(this._resizeObserver),this._resizeObserver=null),(e=this._multiRenderTarget)!=null&&e.renderTarget&&this.scene.getEngine()._currentRenderTarget===this._multiRenderTarget.renderTarget&&this.scene.getEngine().unBindFramebuffer((t=this._multiRenderTarget)==null?void 0:t.renderTarget),this.getGBuffer().dispose()}_assignRenderTargetIndices(){let e=[],t=[],i=0;return this._enableDepth&&(this._depthIndex=i,i++,e.push("gBuffer_Depth"),t.push(this._textureTypesAndFormats[n.DEPTH_TEXTURE_TYPE])),this._enableNormal&&(this._normalIndex=i,i++,e.push("gBuffer_Normal"),t.push(this._textureTypesAndFormats[n.NORMAL_TEXTURE_TYPE])),this._enablePosition&&(this._positionIndex=i,i++,e.push("gBuffer_Position"),t.push(this._textureTypesAndFormats[n.POSITION_TEXTURE_TYPE])),this._enableVelocity&&(this._velocityIndex=i,i++,e.push("gBuffer_Velocity"),t.push(this._textureTypesAndFormats[n.VELOCITY_TEXTURE_TYPE])),this._enableVelocityLinear&&(this._velocityLinearIndex=i,i++,e.push("gBuffer_VelocityLinear"),t.push(this._textureTypesAndFormats[n.VELOCITY_LINEAR_TEXTURE_TYPE])),this._enableReflectivity&&(this._reflectivityIndex=i,i++,e.push("gBuffer_Reflectivity"),t.push(this._textureTypesAndFormats[n.REFLECTIVITY_TEXTURE_TYPE])),this._enableScreenspaceDepth&&(this._screenspaceDepthIndex=i,i++,e.push("gBuffer_ScreenspaceDepth"),t.push(this._textureTypesAndFormats[n.SCREENSPACE_DEPTH_TEXTURE_TYPE])),this._enableIrradiance&&(this._irradianceIndex=i,i++,e.push("gBuffer_Irradiance"),t.push(this._textureTypesAndFormats[n.IRRADIANCE_TEXTURE_TYPE])),[i,e,t]}_createRenderTargets(){var g;let e=this._scene.getEngine(),[t,i,r]=this._assignRenderTargetIndices(),s=0;e._caps.textureFloat&&e._caps.textureFloatLinearFiltering?s=1:e._caps.textureHalfFloat&&e._caps.textureHalfFloatLinearFiltering&&(s=2);let a=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions},o=[],l=[],c=[];for(let v of r)v?(o.push(v.textureType),l.push(v.textureFormat),c.push((g=v.samplingMode)!=null?g:2)):(o.push(s),l.push(5),c.push(2));if(this._normalsAreUnsigned=o[n.NORMAL_TEXTURE_TYPE]===11||o[n.NORMAL_TEXTURE_TYPE]===13,this._multiRenderTarget=new Rb("gBuffer",a,t,this._scene,{generateMipMaps:!1,generateDepthTexture:!0,types:o,formats:l,samplingModes:c,depthTextureFormat:this._depthFormat},i.concat("gBuffer_DepthBuffer")),!this.isSupported)return;this._multiRenderTarget.wrapU=ge.CLAMP_ADDRESSMODE,this._multiRenderTarget.wrapV=ge.CLAMP_ADDRESSMODE,this._multiRenderTarget.refreshRate=1,this._multiRenderTarget.renderParticles=!1,this._multiRenderTarget.renderList=null;let f=[!0],d=[!1],h=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:u),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(_),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(u)}),this._resizeObserver=e.onResizeObservable.add(()=>{if(this._multiRenderTarget){let v=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions};this._multiRenderTarget.resize(v)}});let p=v=>{let x=v.getRenderingMesh(),S=v.getEffectiveMesh(),E=this._scene,T=E.getEngine(),R=v.getMaterial();if(!R)return;if(S._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[S.uniqueId]&&(this._previousTransformationMatrices[S.uniqueId]={world:q.Identity(),viewProjection:E.getTransformMatrix()},x.skeleton)){let L=x.skeleton.getTransformMatrices(x);this._previousBonesTransformationMatrices[x.uniqueId]=this._copyBonesTransformationMatrices(L,new Float32Array(L.length))}let M=x._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let y=T.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||x.hasThinInstances),C=S.getWorldMatrix();if(this.isReady(v,y)){let L=v._getDrawWrapper();if(!L)return;let w=L.effect;T.enableEffect(L),y||x._bind(v,w,R.fillMode),this._useUbo?(Df(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",E.getTransformMatrix()),w.setMatrix("view",E.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let G;if(!x._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=S._getWorldMatrixDeterminant();G=R._getEffectiveOrientation(x),N<0&&(G=G===Se.ClockWiseSideOrientation?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation)}else G=x._effectiveSideOrientation;if(R._preBind(L,G),R.needAlphaTestingForMesh(S)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&E.getEngine().getCaps().standardDerivatives&&ce.BumpTextureEnabled){let N=R.bumpTexture||R.normalTexture||R.geometryNormalTexture;w.setFloat3("vBumpInfos",N.coordinatesIndex,1/N.level,R.parallaxScaleBias),w.setMatrix("bumpMatrix",N.getTextureMatrix()),w.setTexture("bumpSampler",N),w.setFloat2("vTangentSpaceParams",R.invertNormalMapX?-1:1,R.invertNormalMapY?-1:1)}if(this._enableReflectivity){if(R.getClassName()==="PBRMetallicRoughnessMaterial")R.metallicRoughnessTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicRoughnessTexture),w.setMatrix("reflectivityMatrix",R.metallicRoughnessTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.baseTexture!==null&&(w.setTexture("albedoSampler",R.baseTexture),w.setMatrix("albedoMatrix",R.baseTexture.getTextureMatrix())),R.baseColor!==null&&w.setColor3("albedoColor",R.baseColor);else if(R.getClassName()==="PBRSpecularGlossinessMaterial")R.specularGlossinessTexture!==null?(w.setTexture("reflectivitySampler",R.specularGlossinessTexture),w.setMatrix("reflectivityMatrix",R.specularGlossinessTexture.getTextureMatrix())):R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor),R.glossiness!==null&&w.setFloat("glossiness",R.glossiness);else if(R.getClassName()==="PBRMaterial")R.metallicTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicTexture),w.setMatrix("reflectivityMatrix",R.metallicTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.roughness!==null||R.metallic!==null||R.metallicTexture!==null?(R.albedoTexture!==null&&(w.setTexture("albedoSampler",R.albedoTexture),w.setMatrix("albedoMatrix",R.albedoTexture.getTextureMatrix())),R.albedoColor!==null&&w.setColor3("albedoColor",R.albedoColor)):(R.reflectivityTexture!==null?(w.setTexture("reflectivitySampler",R.reflectivityTexture),w.setMatrix("reflectivityMatrix",R.reflectivityTexture.getTextureMatrix())):R.reflectivityColor!==null&&w.setColor3("reflectivityColor",R.reflectivityColor),R.microSurface!==null&&w.setFloat("glossiness",R.microSurface));else if(R.getClassName()==="StandardMaterial")R.specularTexture!==null&&(w.setTexture("reflectivitySampler",R.specularTexture),w.setMatrix("reflectivityMatrix",R.specularTexture.getTextureMatrix())),R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor);else if(R.getClassName()==="OpenPBRMaterial"){let N=R;N._useRoughnessFromMetallicTextureGreen&&N.baseMetalnessTexture?(w.setTexture("reflectivitySampler",N.baseMetalnessTexture),w.setMatrix("reflectivityMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.baseMetalnessTexture?(w.setTexture("metallicSampler",N.baseMetalnessTexture),w.setMatrix("metallicMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.specularRoughnessTexture&&(w.setTexture("roughnessSampler",N.specularRoughnessTexture),w.setMatrix("roughnessMatrix",N.specularRoughnessTexture.getTextureMatrix())),w.setFloat("metallic",N.baseMetalness),w.setFloat("glossiness",1-N.specularRoughness),N.baseColorTexture!==null&&(w.setTexture("albedoSampler",N.baseColorTexture),w.setMatrix("albedoMatrix",N.baseColorTexture.getTextureMatrix())),N.baseColor!==null&&w.setColor3("albedoColor",N.baseColor)}}if(this._enableIrradiance&&E.environmentTexture){let N=E.environmentTexture,B=E.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let J=B._getAccumulatedTexture();J&&(w.setTexture("iblShadowSampler",J),w.setFloat2("shadowTextureSize",J.getSize().width,J.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*E.iblIntensity,0),w.setTexture("reflectionSampler",N),N.irradianceTexture&&(w.setTexture("irradianceSampler",N.irradianceTexture),N.irradianceTexture._dominantDirection&&w.setVector3("vReflectionDominantDirection",N.irradianceTexture._dominantDirection)),N.sphericalPolynomial){let V=N.sphericalPolynomial;if(V.preScaledHarmonics){let J=V.preScaledHarmonics;w.setVector3("vSphericalL00",J.l00),w.setVector3("vSphericalL1_1",J.l1_1),w.setVector3("vSphericalL10",J.l10),w.setVector3("vSphericalL11",J.l11),w.setVector3("vSphericalL2_2",J.l2_2),w.setVector3("vSphericalL2_1",J.l2_1),w.setVector3("vSphericalL20",J.l20),w.setVector3("vSphericalL21",J.l21),w.setVector3("vSphericalL22",J.l22)}else w.setFloat3("vSphericalX",V.x.x,V.x.y,V.x.z),w.setFloat3("vSphericalY",V.y.x,V.y.y,V.y.z),w.setFloat3("vSphericalZ",V.z.x,V.z.y,V.z.z),w.setFloat3("vSphericalXX_ZZ",V.xx.x-V.zz.x,V.xx.y-V.zz.y,V.xx.z-V.zz.z),w.setFloat3("vSphericalYY_ZZ",V.yy.x-V.zz.x,V.yy.y-V.zz.y,V.yy.z-V.zz.z),w.setFloat3("vSphericalZZ",V.zz.x,V.zz.y,V.zz.z),w.setFloat3("vSphericalXY",V.xy.x,V.xy.y,V.xy.z),w.setFloat3("vSphericalYZ",V.yz.x,V.yz.y,V.yz.z),w.setFloat3("vSphericalZX",V.zx.x,V.zx.y,V.zx.z)}if(this.generateIrradianceWithScatterMask&&R.getClassName()==="OpenPBRMaterial"){let V=R;w.setFloat("vSubsurfaceWeight",V.subsurfaceWeight),V.subsurfaceWeightTexture&&(w.setTexture("subsurfaceWeightSampler",V.subsurfaceWeightTexture),w.setMatrix("subsurfaceWeightMatrix",V.subsurfaceWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionWeight",V.transmissionWeight),V.transmissionWeightTexture&&(w.setTexture("transmissionWeightSampler",V.transmissionWeightTexture),w.setMatrix("transmissionWeightMatrix",V.transmissionWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionScatterAnisotropy",V.transmissionScatterAnisotropy),w.setFloat("vSubsurfaceScatterAnisotropy",V.subsurfaceScatterAnisotropy)}}if(Hn(w,R,this._scene),x.useBones&&x.computeBonesUsingShaders&&x.skeleton){let N=x.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(x);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",x.skeleton.getTransformMatrices(x));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[x.uniqueId])}zn(x,w),x.morphTargetManager&&x.morphTargetManager.isUsingTextureForTargets&&x.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[S.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[S.uniqueId].viewProjection)),y&&x.hasThinInstances&&w.setMatrix("world",C),x._processRendering(S,v,w,R.fillMode,M,y,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[S.uniqueId].world=C.clone(),this._previousTransformationMatrices[S.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),x.skeleton&&this._copyBonesTransformationMatrices(x.skeleton.getTransformMatrices(x),this._previousBonesTransformationMatrices[S.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,x,S)=>{if((S||x===0)&&v.subMeshes)for(let E=0;E{let T;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(E.length){for(e.setColorWrite(!1),T=0;T{throw Qe("GeometryBufferRendererSceneComponent")}});var M6,wme,ZO=I(()=>{k();Sh();cv();M6="openpbrUboDeclaration",wme=`uniform vTangentSpaceParams: vec2f;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vDebugMode: vec2f;uniform renderTargetSize: vec2f;uniform cameraInfo: vec4f;uniform backgroundRefractionMatrix: mat4x4f;uniform vBackgroundRefractionInfos: vec3f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f;uniform vBaseWeight: f32;uniform vBaseColor: vec4f;uniform vBaseDiffuseRoughness: f32;uniform vReflectanceInfo: vec4f;uniform vSpecularColor: vec4f;uniform vSpecularAnisotropy: vec3f;uniform vTransmissionWeight : f32;uniform vTransmissionColor : vec3f;uniform vTransmissionDepth : f32;uniform vTransmissionScatter : vec3f;uniform vTransmissionScatterAnisotropy : f32;uniform vTransmissionDispersionScale : f32;uniform vTransmissionDispersionAbbeNumber : f32;uniform vSubsurfaceWeight: f32;uniform vSubsurfaceColor: vec3f;uniform vSubsurfaceRadius: f32;uniform vSubsurfaceRadiusScale: vec3f;uniform vSubsurfaceScatterAnisotropy: f32;uniform vCoatWeight: f32;uniform vCoatColor: vec3f;uniform vCoatRoughness: f32;uniform vCoatRoughnessAnisotropy: f32;uniform vCoatIor: f32;uniform vCoatDarkening : f32;uniform vFuzzWeight: f32;uniform vFuzzColor: vec3f;uniform vFuzzRoughness: f32;uniform vGeometryThinWalled: f32;uniform vGeometryCoatTangent: vec2f;uniform vGeometryThickness: f32;uniform vEmissionColor: vec3f;uniform vThinFilmWeight: f32;uniform vThinFilmThickness: vec2f;uniform vThinFilmIor: f32;uniform vBaseWeightInfos: vec2f;uniform baseWeightMatrix: mat4x4f;uniform vBaseColorInfos: vec2f;uniform baseColorMatrix: mat4x4f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform vBaseMetalnessInfos: vec2f;uniform baseMetalnessMatrix: mat4x4f;uniform vSpecularWeightInfos: vec2f;uniform specularWeightMatrix: mat4x4f;uniform vSpecularColorInfos: vec2f;uniform specularColorMatrix: mat4x4f;uniform vSpecularRoughnessInfos: vec2f;uniform specularRoughnessMatrix: mat4x4f;uniform vSpecularRoughnessAnisotropyInfos: vec2f;uniform specularRoughnessAnisotropyMatrix: mat4x4f;uniform vTransmissionWeightInfos : vec2f;uniform transmissionWeightMatrix : mat4x4f;uniform vTransmissionColorInfos : vec2f;uniform transmissionColorMatrix : mat4x4f;uniform vTransmissionDepthInfos : vec2f;uniform transmissionDepthMatrix : mat4x4f;uniform vTransmissionScatterInfos : vec2f;uniform transmissionScatterMatrix : mat4x4f;uniform vTransmissionDispersionScaleInfos : vec2f;uniform transmissionDispersionScaleMatrix : mat4x4f;uniform vSubsurfaceWeightInfos: vec2f;uniform subsurfaceWeightMatrix: mat4x4f;uniform vSubsurfaceColorInfos: vec2f;uniform subsurfaceColorMatrix: mat4x4f;uniform vSubsurfaceRadiusScaleInfos: vec2f;uniform subsurfaceRadiusScaleMatrix: mat4x4f;uniform vCoatWeightInfos: vec2f;uniform coatWeightMatrix: mat4x4f;uniform vCoatColorInfos: vec2f;uniform coatColorMatrix: mat4x4f;uniform vCoatRoughnessInfos: vec2f;uniform coatRoughnessMatrix: mat4x4f;uniform vCoatRoughnessAnisotropyInfos: vec2f;uniform coatRoughnessAnisotropyMatrix: mat4x4f;uniform vCoatDarkeningInfos : vec2f;uniform coatDarkeningMatrix : mat4x4f;uniform vFuzzWeightInfos: vec2f;uniform fuzzWeightMatrix: mat4x4f;uniform vFuzzColorInfos: vec2f;uniform fuzzColorMatrix: mat4x4f;uniform vFuzzRoughnessInfos: vec2f;uniform fuzzRoughnessMatrix: mat4x4f;uniform vGeometryNormalInfos: vec2f;uniform geometryNormalMatrix: mat4x4f;uniform vGeometryTangentInfos: vec2f;uniform geometryTangentMatrix: mat4x4f;uniform vGeometryCoatNormalInfos: vec2f;uniform geometryCoatNormalMatrix: mat4x4f;uniform vGeometryCoatTangentInfos: vec2f;uniform geometryCoatTangentMatrix: mat4x4f;uniform vGeometryOpacityInfos: vec2f;uniform geometryOpacityMatrix: mat4x4f;uniform vGeometryThicknessInfos: vec2f;uniform geometryThicknessMatrix: mat4x4f;uniform vEmissionInfos: vec2f;uniform emissionMatrix: mat4x4f;uniform vThinFilmWeightInfos: vec2f;uniform thinFilmWeightMatrix: mat4x4f;uniform vThinFilmThicknessInfos: vec2f;uniform thinFilmThicknessMatrix: mat4x4f;uniform vAmbientOcclusionInfos: vec2f;uniform ambientOcclusionMatrix: mat4x4f; #define ADDITIONAL_UBO_DECLARATION #include #include -`;A.IncludesShadersStoreWGSL[x6]||(A.IncludesShadersStoreWGSL[x6]=Pme)});var R6,Dme,b6=I(()=>{k();R6="openpbrNormalMapVertexDeclaration",Dme=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) +`;A.IncludesShadersStoreWGSL[M6]||(A.IncludesShadersStoreWGSL[M6]=wme)});var I6,Fme,y6=I(()=>{k();I6="openpbrNormalMapVertexDeclaration",Fme=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) #if defined(TANGENT) && defined(NORMAL) varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; #endif #endif -`;A.IncludesShadersStoreWGSL[R6]||(A.IncludesShadersStoreWGSL[R6]=Dme)});var M6,Lme,I6=I(()=>{k();M6="openpbrNormalMapVertex",Lme=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) +`;A.IncludesShadersStoreWGSL[I6]||(A.IncludesShadersStoreWGSL[I6]=Fme)});var C6,Bme,P6=I(()=>{k();C6="openpbrNormalMapVertex",Bme=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) #if defined(TANGENT) && defined(NORMAL) var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2]; #endif #endif -`;A.IncludesShadersStoreWGSL[M6]||(A.IncludesShadersStoreWGSL[M6]=Lme)});var C6={};Be(C6,{openpbrVertexShaderWGSL:()=>Ome});var jO,y6,Ome,P6=I(()=>{k();KO();tR();hp();wa();xp();uc();mc();Hf();iR();rR();Ap();b6();pc();jg();nR();Yf();Kf();Th();sR();aR();jf();qf();_c();gc();vc();oR();lR();cR();I6();Ec();qg();dR();Zg();hR();jO="openpbrVertexShader",y6=`#define OPENPBR_VERTEX_SHADER +`;A.IncludesShadersStoreWGSL[C6]||(A.IncludesShadersStoreWGSL[C6]=Bme)});var L6={};Be(L6,{openpbrVertexShaderWGSL:()=>Ume});var QO,D6,Ume,O6=I(()=>{k();ZO();rR();hp();wa();xp();uc();mc();Hf();nR();sR();Ap();y6();pc();jg();aR();Yf();Kf();Th();oR();lR();jf();qf();_c();gc();vc();cR();fR();dR();P6();Ec();qg();uR();Zg();mR();QO="openpbrVertexShader",D6=`#define OPENPBR_VERTEX_SHADER #include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING @@ -13034,7 +13034,7 @@ vertexOutputs.vMainUV2=uv2Updated; #include #include #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStoreWGSL[jO]||(A.ShadersStoreWGSL[jO]=y6);Ome={name:jO,shader:y6}});var D6,Nme,qO=I(()=>{k();hp();D6="pbrFragmentExtraDeclaration",Nme=`varying vPositionW: vec3f; +}`;A.ShadersStoreWGSL[QO]||(A.ShadersStoreWGSL[QO]=D6);Ume={name:QO,shader:D6}});var N6,Vme,$O=I(()=>{k();hp();N6="pbrFragmentExtraDeclaration",Vme=`varying vPositionW: vec3f; #if DEBUGMODE>0 varying vClipSpacePosition: vec4f; #endif @@ -13051,7 +13051,7 @@ varying vColor: vec4f; #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 varying vViewDepth: f32; #endif -`;A.IncludesShadersStoreWGSL[D6]||(A.IncludesShadersStoreWGSL[D6]=Nme)});var L6,wme,O6=I(()=>{k();Ah();bb();L6="openpbrFragmentSamplersDeclaration",wme=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;A.IncludesShadersStoreWGSL[N6]||(A.IncludesShadersStoreWGSL[N6]=Vme)});var w6,Gme,F6=I(()=>{k();Ah();Ib();w6="openpbrFragmentSamplersDeclaration",Gme=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness) @@ -13103,15 +13103,15 @@ var blueNoiseSamplerSampler: sampler;var blueNoiseSampler: texture_2d; #ifdef IBL_CDF_FILTERING var icdfSamplerSampler: sampler;var icdfSampler: texture_2d; #endif -`;A.IncludesShadersStoreWGSL[L6]||(A.IncludesShadersStoreWGSL[L6]=wme)});var N6,Fme,ZO=I(()=>{k();N6="subSurfaceScatteringFunctions",Fme=`fn testLightingForSSS(diffusionProfile: f32)->bool -{return diffusionProfile<1.;}`;A.IncludesShadersStoreWGSL[N6]||(A.IncludesShadersStoreWGSL[N6]=Fme)});var w6,Bme,QO=I(()=>{k();w6="importanceSampling",Bme=`fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} +`;A.IncludesShadersStoreWGSL[w6]||(A.IncludesShadersStoreWGSL[w6]=Gme)});var B6,kme,JO=I(()=>{k();B6="subSurfaceScatteringFunctions",kme=`fn testLightingForSSS(diffusionProfile: f32)->bool +{return diffusionProfile<1.;}`;A.IncludesShadersStoreWGSL[B6]||(A.IncludesShadersStoreWGSL[B6]=kme)});var U6,Wme,eN=I(()=>{k();U6="importanceSampling",Wme=`fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} fn hemisphereImportanceSampleDggx(u: vec2f,a: f32)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} fn hemisphereImportanceSampleDggxAnisotropic(Xi: vec2f,alphaTangent: f32,alphaBitangent: f32)->vec3f {let alphaT: f32=max(alphaTangent,0.0001);let alphaB: f32=max(alphaBitangent,0.0001);var phi: f32=atan(alphaB/alphaT*tan(2.0f*PI*Xi.x));if (Xi.x>0.5) {phi+=PI; } let cosPhi: f32=cos(phi);let sinPhi: f32=sin(phi);let alpha2: f32=(cosPhi*cosPhi)/(alphaT*alphaT) + (sinPhi*sinPhi)/(alphaB*alphaB);let tanTheta2: f32=Xi.y/(1.0f-Xi.y)/alpha2;let cosTheta: f32=1.0f/sqrt(1.0f+tanTheta2);let sinTheta: f32=sqrt(max(0.0f,1.0f-cosTheta*cosTheta));return vec3f(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);} fn hemisphereImportanceSampleDCharlie(u: vec2f,a: f32)->vec3f { -var phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;A.IncludesShadersStoreWGSL[w6]||(A.IncludesShadersStoreWGSL[w6]=Bme)});var F6,Ume,$O=I(()=>{k();F6="pbrHelperFunctions",Ume=`#define MINIMUMVARIANCE 0.0005 +var phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;A.IncludesShadersStoreWGSL[U6]||(A.IncludesShadersStoreWGSL[U6]=Wme)});var V6,Hme,tN=I(()=>{k();V6="pbrHelperFunctions",Hme=`#define MINIMUMVARIANCE 0.0005 fn convertRoughnessToAverageSlope(roughness: f32)->f32 {return roughness*roughness+MINIMUMVARIANCE;} fn fresnelGrazingReflectance(reflectance0: f32)->f32 {var reflectance90: f32=saturate(reflectance0*25.0);return reflectance90;} @@ -13145,7 +13145,7 @@ clearCoatIntensity);return clearCoatAbsorption;} fn computeDefaultMicroSurface(microSurface: f32,reflectivityColor: vec3f)->f32 {const kReflectivityNoAlphaWorkflow_SmoothnessMax: f32=0.95;var reflectivityLuminance: f32=getLuminance(reflectivityColor);var reflectivityLuma: f32=sqrt(reflectivityLuminance);var resultMicroSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return resultMicroSurface;} #endif -`;A.IncludesShadersStoreWGSL[F6]||(A.IncludesShadersStoreWGSL[F6]=Ume)});var B6,Vme,JO=I(()=>{k();oL();B6="pbrDirectLightingSetupFunctions",Vme=`struct preLightingInfo +`;A.IncludesShadersStoreWGSL[V6]||(A.IncludesShadersStoreWGSL[V6]=Hme)});var G6,zme,iN=I(()=>{k();fL();G6="pbrDirectLightingSetupFunctions",zme=`struct preLightingInfo {lightOffset: vec3f, lightDistanceSquared: f32, lightDistance: f32, @@ -13190,7 +13190,7 @@ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular; #endif result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3f(0.);return result;} #endif -`;A.IncludesShadersStoreWGSL[B6]||(A.IncludesShadersStoreWGSL[B6]=Vme)});var U6,Gme,eN=I(()=>{k();U6="pbrDirectLightingFalloffFunctions",Gme=`fn computeDistanceLightFalloff_Standard(lightOffset: vec3f,range: f32)->f32 +`;A.IncludesShadersStoreWGSL[G6]||(A.IncludesShadersStoreWGSL[G6]=zme)});var k6,Xme,rN=I(()=>{k();k6="pbrDirectLightingFalloffFunctions",Xme=`fn computeDistanceLightFalloff_Standard(lightOffset: vec3f,range: f32)->f32 {return max(0.,1.0-length(lightOffset)/range);} fn computeDistanceLightFalloff_Physical(lightDistanceSquared: f32)->f32 {return 1.0/maxEps(lightDistanceSquared);} @@ -13226,7 +13226,7 @@ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenter #else return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent); #endif -}`;A.IncludesShadersStoreWGSL[U6]||(A.IncludesShadersStoreWGSL[U6]=Gme)});var V6,kme,tN=I(()=>{k();V6="hdrFilteringFunctions",kme=`#ifdef NUM_SAMPLES +}`;A.IncludesShadersStoreWGSL[k6]||(A.IncludesShadersStoreWGSL[k6]=Xme)});var W6,Yme,nN=I(()=>{k();W6="hdrFilteringFunctions",Yme=`#ifdef NUM_SAMPLES #if NUM_SAMPLES>0 fn radicalInverse_VdC(value: u32)->f32 {var bits=(value<<16u) | (value>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return f32(bits)*2.3283064365386963e-10; } @@ -13343,11 +13343,11 @@ result=result/weight;return result;} #endif #endif #endif -`;A.IncludesShadersStoreWGSL[V6]||(A.IncludesShadersStoreWGSL[V6]=kme)});var G6,Wme,iN=I(()=>{k();G6="pbrBlockReflectance0",Wme=`var reflectanceF0: f32=reflectivityOut.reflectanceF0;var specularEnvironmentR0: vec3f=reflectivityOut.colorReflectanceF0;var specularEnvironmentR90: vec3f= reflectivityOut.reflectanceF90; +`;A.IncludesShadersStoreWGSL[W6]||(A.IncludesShadersStoreWGSL[W6]=Yme)});var H6,Kme,sN=I(()=>{k();H6="pbrBlockReflectance0",Kme=`var reflectanceF0: f32=reflectivityOut.reflectanceF0;var specularEnvironmentR0: vec3f=reflectivityOut.colorReflectanceF0;var specularEnvironmentR90: vec3f= reflectivityOut.reflectanceF90; #ifdef ALPHAFRESNEL var reflectance90: f32=fresnelGrazingReflectance(reflectanceF0);specularEnvironmentR90=specularEnvironmentR90*reflectance90; #endif -`;A.IncludesShadersStoreWGSL[G6]||(A.IncludesShadersStoreWGSL[G6]=Wme)});var k6,Hme,rN=I(()=>{k();lL();iN();k6="pbrDirectLightingFunctions",Hme=`#define CLEARCOATREFLECTANCE90 1.0 +`;A.IncludesShadersStoreWGSL[H6]||(A.IncludesShadersStoreWGSL[H6]=Kme)});var z6,jme,aN=I(()=>{k();dL();sN();z6="pbrDirectLightingFunctions",jme=`#define CLEARCOATREFLECTANCE90 1.0 struct lightingInfo {diffuse: vec3f, #ifdef SS_TRANSLUCENCY @@ -13569,7 +13569,7 @@ result.sheen+=info.sheen; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;A.IncludesShadersStoreWGSL[k6]||(A.IncludesShadersStoreWGSL[k6]=Hme)});var W6,zme,H6=I(()=>{k();W6="openpbrNormalMapFragmentMainFunctions",zme=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) +`;A.IncludesShadersStoreWGSL[z6]||(A.IncludesShadersStoreWGSL[z6]=jme)});var X6,qme,Y6=I(()=>{k();X6="openpbrNormalMapFragmentMainFunctions",qme=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; #endif @@ -13609,7 +13609,7 @@ fn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f fn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f {var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);} #endif -`;A.IncludesShadersStoreWGSL[W6]||(A.IncludesShadersStoreWGSL[W6]=zme)});var z6,Xme,X6=I(()=>{k();Ah();z6="openpbrNormalMapFragmentFunctions",Xme=`#if defined(GEOMETRY_NORMAL) +`;A.IncludesShadersStoreWGSL[X6]||(A.IncludesShadersStoreWGSL[X6]=qme)});var K6,Zme,j6=I(()=>{k();Ah();K6="openpbrNormalMapFragmentFunctions",Zme=`#if defined(GEOMETRY_NORMAL) #include(_DEFINENAME_,GEOMETRY_NORMAL,_VARYINGNAME_,GeometryNormal,_SAMPLERNAME_,geometryNormal) #endif #if defined(GEOMETRY_COAT_NORMAL) @@ -13642,7 +13642,7 @@ return -texCoordOffset; #endif } #endif -`;A.IncludesShadersStoreWGSL[z6]||(A.IncludesShadersStoreWGSL[z6]=Xme)});var Y6,Yme,K6=I(()=>{k();Y6="openpbrConductorReflectance",Yme=`#define pbr_inline +`;A.IncludesShadersStoreWGSL[K6]||(A.IncludesShadersStoreWGSL[K6]=Zme)});var q6,Qme,Z6=I(()=>{k();q6="openpbrConductorReflectance",Qme=`#define pbr_inline fn conductorReflectance(baseColor: vec3f,specularColor: vec3f,specularWeight: f32)->ReflectanceParams {var outParams: ReflectanceParams; #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) @@ -13650,9 +13650,9 @@ outParams.coloredF0=baseColor*specularWeight;outParams.coloredF90=specularColor* #else outParams.coloredF0=baseColor;outParams.coloredF90=vec3f(1.0f); #endif -outParams.F0=1.0f;outParams.F90=1.0f;return outParams;}`;A.IncludesShadersStoreWGSL[Y6]||(A.IncludesShadersStoreWGSL[Y6]=Yme)});var j6,Kme,q6=I(()=>{k();j6="openpbrAmbientOcclusionFunctions",Kme=`fn compute_specular_occlusion(n_dot_v: f32,metallic: f32,ambient_occlusion: f32,roughness: f32)->f32 +outParams.F0=1.0f;outParams.F90=1.0f;return outParams;}`;A.IncludesShadersStoreWGSL[q6]||(A.IncludesShadersStoreWGSL[q6]=Qme)});var Q6,$me,$6=I(()=>{k();Q6="openpbrAmbientOcclusionFunctions",$me=`fn compute_specular_occlusion(n_dot_v: f32,metallic: f32,ambient_occlusion: f32,roughness: f32)->f32 {let specular_occlusion: f32=saturate(pow(n_dot_v+ambient_occlusion,exp2(-16.0*roughness-1.0))-1.0+ambient_occlusion);return mix(specular_occlusion,1.0,metallic*square(1.0-roughness));} -`;A.IncludesShadersStoreWGSL[j6]||(A.IncludesShadersStoreWGSL[j6]=Kme)});var Z6,jme,Q6=I(()=>{k();Z6="openpbrVolumeFunctions",jme=`struct OpenPBRHomogeneousVolume {extinction_coeff: vec3f, +`;A.IncludesShadersStoreWGSL[Q6]||(A.IncludesShadersStoreWGSL[Q6]=$me)});var J6,Jme,e7=I(()=>{k();J6="openpbrVolumeFunctions",Jme=`struct OpenPBRHomogeneousVolume {extinction_coeff: vec3f, ss_albedo: vec3f, multi_scatter_color: vec3f, absorption_coeff: vec3f, @@ -13709,7 +13709,7 @@ let filter_samples_scale: f32=samples_scale(pixels_to_projective(overscan_size_i return vec3f(select(unconvolved_irradiance.r,irradiance_sum.r/weight_sum.r,weight_sum.r>=1e-5f), select(unconvolved_irradiance.g,irradiance_sum.g/weight_sum.g,weight_sum.g>=1e-5f), select(unconvolved_irradiance.b,irradiance_sum.b/weight_sum.b,weight_sum.b>=1e-5f));} -`;A.IncludesShadersStoreWGSL[Z6]||(A.IncludesShadersStoreWGSL[Z6]=jme)});var $6,qme,nN=I(()=>{k();$6="pbrBlockNormalGeometric",qme=`var viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW); +`;A.IncludesShadersStoreWGSL[J6]||(A.IncludesShadersStoreWGSL[J6]=Jme)});var t7,epe,oN=I(()=>{k();t7="pbrBlockNormalGeometric",epe=`var viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW); #ifdef NORMAL var normalW: vec3f=normalize(input.vNormalW); #else @@ -13719,7 +13719,7 @@ var geometricNormalW: vec3f=normalW; #if defined(TWOSIDEDLIGHTING) && defined(NORMAL) geometricNormalW=select(-geometricNormalW,geometricNormalW,fragmentInputs.frontFacing); #endif -`;A.IncludesShadersStoreWGSL[$6]||(A.IncludesShadersStoreWGSL[$6]=qme)});var J6,Zme,e7=I(()=>{k();J6="openpbrNormalMapFragment",Zme=`var uvOffset: vec2f= vec2f(0.0,0.0); +`;A.IncludesShadersStoreWGSL[t7]||(A.IncludesShadersStoreWGSL[t7]=epe)});var i7,tpe,r7=I(()=>{k();i7="openpbrNormalMapFragment",tpe=`var uvOffset: vec2f= vec2f(0.0,0.0); #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE var normalScale: f32=1.0; @@ -13774,7 +13774,7 @@ normalW=perturbNormalBase(TBN,blendedNormal,uniforms.vGeometryNormalInfos.y); #elif defined(DETAIL) detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);normalW=perturbNormalBase(TBN,detailNormal,uniforms.vDetailInfos.z); #endif -`;A.IncludesShadersStoreWGSL[J6]||(A.IncludesShadersStoreWGSL[J6]=Zme)});var t7,Qme,i7=I(()=>{k();t7="openpbrBlockNormalFinal",Qme=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;A.IncludesShadersStoreWGSL[i7]||(A.IncludesShadersStoreWGSL[i7]=tpe)});var n7,ipe,s7=I(()=>{k();n7="openpbrBlockNormalFinal",ipe=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) var faceNormal: vec3f=normalize(cross(dpdx(fragmentInputs.vPositionW),dpdy(fragmentInputs.vPositionW)))*scene.vEyePosition.w; #if defined(TWOSIDEDLIGHTING) faceNormal=select(-faceNormal,faceNormal,fragmentInputs.frontFacing); @@ -13788,7 +13788,7 @@ normalW=select(normalW,-normalW,fragmentInputs.frontFacing);coatNormalW=select(c normalW=select(-normalW,normalW,fragmentInputs.frontFacing);coatNormalW=select(-coatNormalW,coatNormalW,fragmentInputs.frontFacing); #endif #endif -`;A.IncludesShadersStoreWGSL[t7]||(A.IncludesShadersStoreWGSL[t7]=Qme)});var r7,$me,n7=I(()=>{k();r7="openpbrBaseLayerData",$me=`var base_color=vec3f(0.8);var base_metalness: f32=0.0;var base_diffuse_roughness: f32=0.0;var specular_weight: f32=1.0;var specular_roughness: f32=0.3;var specular_color: vec3f=vec3f(1.0);var specular_roughness_anisotropy: f32=0.0;var specular_ior: f32=1.5;var alpha: f32=1.0;var geometry_tangent: vec2f=vec2f(1.0,0.0);var geometry_thickness: f32=0.0; +`;A.IncludesShadersStoreWGSL[n7]||(A.IncludesShadersStoreWGSL[n7]=ipe)});var a7,rpe,o7=I(()=>{k();a7="openpbrBaseLayerData",rpe=`var base_color=vec3f(0.8);var base_metalness: f32=0.0;var base_diffuse_roughness: f32=0.0;var specular_weight: f32=1.0;var specular_roughness: f32=0.3;var specular_color: vec3f=vec3f(1.0);var specular_roughness_anisotropy: f32=0.0;var specular_ior: f32=1.5;var alpha: f32=1.0;var geometry_tangent: vec2f=vec2f(1.0,0.0);var geometry_thickness: f32=0.0; #ifdef BASE_WEIGHT let baseWeightFromTexture: vec4f=textureSample(baseWeightSampler,baseWeightSamplerSampler,fragmentInputs.vBaseWeightUV+uvOffset); #endif @@ -13914,7 +13914,7 @@ let detailRoughness: f32=mix(0.5f,detailColor.b,vDetailInfos.w);let loLerp: f32= #ifdef USE_GLTF_STYLE_ANISOTROPY let baseAlpha: f32=specular_roughness*specular_roughness;let roughnessT: f32=mix(baseAlpha,1.0f,specular_roughness_anisotropy*specular_roughness_anisotropy);let roughnessB: f32=baseAlpha;specular_roughness_anisotropy=1.0f-roughnessB/max(roughnessT,0.00001f);specular_roughness=sqrt(roughnessT/sqrt(2.0f/(1.0f+(1.0f-specular_roughness_anisotropy)*(1.0f-specular_roughness_anisotropy)))); #endif -`;A.IncludesShadersStoreWGSL[r7]||(A.IncludesShadersStoreWGSL[r7]=$me)});var s7,Jme,a7=I(()=>{k();s7="openpbrCoatLayerData",Jme=`var coat_weight: f32=0.0f;var coat_color: vec3f=vec3f(1.0f);var coat_roughness: f32=0.0f;var coat_roughness_anisotropy: f32=0.0f;var coat_ior: f32=1.6f;var coat_darkening: f32=1.0f;var geometry_coat_tangent: vec2f=vec2f(1.0f,0.0f); +`;A.IncludesShadersStoreWGSL[a7]||(A.IncludesShadersStoreWGSL[a7]=rpe)});var l7,npe,c7=I(()=>{k();l7="openpbrCoatLayerData",npe=`var coat_weight: f32=0.0f;var coat_color: vec3f=vec3f(1.0f);var coat_roughness: f32=0.0f;var coat_roughness_anisotropy: f32=0.0f;var coat_ior: f32=1.6f;var coat_darkening: f32=1.0f;var geometry_coat_tangent: vec2f=vec2f(1.0f,0.0f); #ifdef COAT_WEIGHT var coatWeightFromTexture: vec4f=textureSample(coatWeightSampler,coatWeightSamplerSampler,fragmentInputs.vCoatWeightUV+uvOffset); #endif @@ -13966,7 +13966,7 @@ coat_darkening*=coatDarkeningFromTexture.r; #ifdef USE_GLTF_STYLE_ANISOTROPY let coatAlpha: f32=coat_roughness*coat_roughness;let coatRoughnessT: f32=mix(coatAlpha,1.0f,coat_roughness_anisotropy*coat_roughness_anisotropy);let coatRoughnessB: f32=coatAlpha;coat_roughness_anisotropy=1.0f-coatRoughnessB/max(coatRoughnessT,0.00001f);coat_roughness=sqrt(coatRoughnessT/sqrt(2.0f/(1.0f+(1.0f-coat_roughness_anisotropy)*(1.0f-coat_roughness_anisotropy)))); #endif -`;A.IncludesShadersStoreWGSL[s7]||(A.IncludesShadersStoreWGSL[s7]=Jme)});var o7,epe,l7=I(()=>{k();o7="openpbrThinFilmLayerData",epe=`#ifdef THIN_FILM +`;A.IncludesShadersStoreWGSL[l7]||(A.IncludesShadersStoreWGSL[l7]=npe)});var f7,spe,d7=I(()=>{k();f7="openpbrThinFilmLayerData",spe=`#ifdef THIN_FILM var thin_film_weight: f32=uniforms.vThinFilmWeight;var thin_film_thickness: f32=uniforms.vThinFilmThickness.r*1000.0f; var thin_film_ior: f32=uniforms.vThinFilmIor; #ifdef THIN_FILM_WEIGHT @@ -13983,7 +13983,7 @@ thin_film_thickness*=thinFilmThicknessFromTexture; #endif let thin_film_ior_scale: f32=clamp(2.0f*abs(thin_film_ior-1.0f),0.0f,1.0f); #endif -`;A.IncludesShadersStoreWGSL[o7]||(A.IncludesShadersStoreWGSL[o7]=epe)});var c7,tpe,f7=I(()=>{k();c7="openpbrFuzzLayerData",tpe=`var fuzz_weight: f32=0.0f;var fuzz_color: vec3f=vec3f(1.0f);var fuzz_roughness: f32=0.0f; +`;A.IncludesShadersStoreWGSL[f7]||(A.IncludesShadersStoreWGSL[f7]=spe)});var h7,ape,u7=I(()=>{k();h7="openpbrFuzzLayerData",ape=`var fuzz_weight: f32=0.0f;var fuzz_color: vec3f=vec3f(1.0f);var fuzz_roughness: f32=0.0f; #ifdef FUZZ #ifdef FUZZ_WEIGHT let fuzzWeightFromTexture: vec4f=textureSample(fuzzWeightSampler,fuzzWeightSamplerSampler,fragmentInputs.vFuzzWeightUV+uvOffset); @@ -14012,11 +14012,11 @@ fuzz_roughness*=fuzzRoughnessFromTexture.a; fuzz_roughness*=fuzzRoughnessFromTexture.r; #endif #endif -`;A.IncludesShadersStoreWGSL[c7]||(A.IncludesShadersStoreWGSL[c7]=tpe)});var d7,ipe,h7=I(()=>{k();d7="openpbrAmbientOcclusionData",ipe=`var ambient_occlusion: vec3f=vec3f(1.0f,1.0f,1.0f);var specular_ambient_occlusion: f32=1.0f;var coat_specular_ambient_occlusion: f32=1.0f; +`;A.IncludesShadersStoreWGSL[h7]||(A.IncludesShadersStoreWGSL[h7]=ape)});var m7,ope,p7=I(()=>{k();m7="openpbrAmbientOcclusionData",ope=`var ambient_occlusion: vec3f=vec3f(1.0f,1.0f,1.0f);var specular_ambient_occlusion: f32=1.0f;var coat_specular_ambient_occlusion: f32=1.0f; #ifdef AMBIENT_OCCLUSION var ambientOcclusionFromTexture: vec3f=textureSample(ambientOcclusionSampler,ambientOcclusionSamplerSampler,fragmentInputs.vAmbientOcclusionUV+uvOffset).rgb;ambient_occlusion=vec3f(ambientOcclusionFromTexture.r*uniforms.vAmbientOcclusionInfos.y+(1.0f-uniforms.vAmbientOcclusionInfos.y)); #endif -`;A.IncludesShadersStoreWGSL[d7]||(A.IncludesShadersStoreWGSL[d7]=ipe)});var u7,rpe,m7=I(()=>{k();u7="openpbrBackgroundTransmission",rpe=`var slab_translucent_background: vec4f=vec4f(0.,0.,0.,1.); +`;A.IncludesShadersStoreWGSL[m7]||(A.IncludesShadersStoreWGSL[m7]=ope)});var _7,lpe,g7=I(()=>{k();_7="openpbrBackgroundTransmission",lpe=`var slab_translucent_background: vec4f=vec4f(0.,0.,0.,1.); #ifdef REFRACTED_BACKGROUND {let refractionLOD: f32=min(transmission_roughness,0.7)*uniforms.vBackgroundRefractionInfos.x;let lodTexelSize: f32=pow(2.0f,refractionLOD-uniforms.vBackgroundRefractionInfos.x); #ifdef DISPERSION @@ -14044,7 +14044,7 @@ let noiseOffset: vec2f=noise.xy*lodTexelSize;slab_translucent_background=texture #endif } #endif -`;A.IncludesShadersStoreWGSL[u7]||(A.IncludesShadersStoreWGSL[u7]=rpe)});var p7,npe,_7=I(()=>{k();p7="openpbrEnvironmentLighting",npe=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) +`;A.IncludesShadersStoreWGSL[_7]||(A.IncludesShadersStoreWGSL[_7]=lpe)});var v7,cpe,E7=I(()=>{k();v7="openpbrEnvironmentLighting",cpe=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) var coatAbsorption=vec3f(1.0f);var coatIblFresnel: f32=0.0;if (coat_weight>0.0) {coatIblFresnel=computeDielectricIblFresnel(coatReflectance,coatGeoInfo.environmentBrdf);let hemisphere_avg_fresnel: f32=coatReflectance.F0+0.5f*(1.0f-coatReflectance.F0);var averageReflectance: f32=(coatIblFresnel+hemisphere_avg_fresnel)*0.5f;let roughnessFactor=1.0f-coat_roughness*0.5f;averageReflectance*=roughnessFactor;var darkened_transmission: f32=(1.0f-averageReflectance)*(1.0f-averageReflectance);darkened_transmission=mix(1.0,darkened_transmission,coat_darkening);var sin2: f32=1.0f-coatGeoInfo.NdotV*coatGeoInfo.NdotV;sin2=sin2/(coat_ior*coat_ior);let cos_t: f32=sqrt(1.0f-sin2);let coatPathLength=1.0f/cos_t;let colored_transmission: vec3f=pow(coat_color,vec3f(coatPathLength));coatAbsorption=mix(vec3f(1.0f),colored_transmission*darkened_transmission,coat_weight);} #endif #ifdef REFLECTION @@ -14338,7 +14338,7 @@ slab_translucent_base_ibl=slab_translucent_background.rgb*volume_absorption*tran #endif let material_dielectric_base_ibl: vec3f=mix(black,slab_translucent_base_ibl.rgb,surface_translucency_weight);let material_dielectric_gloss_ibl: vec3f=material_dielectric_base_ibl*(baseGeoInfo.NdotV);let material_base_substrate_ibl: vec3f=mix(material_dielectric_gloss_ibl,black,base_metalness);let material_coated_base_ibl: vec3f=layer(material_base_substrate_ibl,black,coatIblFresnel,coatAbsorption,vec3f(1.0f));material_surface_ibl=material_coated_base_ibl; #endif -`;A.IncludesShadersStoreWGSL[p7]||(A.IncludesShadersStoreWGSL[p7]=npe)});var g7,spe,v7=I(()=>{k();g7="openpbrDirectLightingInit",spe=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[v7]||(A.IncludesShadersStoreWGSL[v7]=cpe)});var S7,fpe,T7=I(()=>{k();S7="openpbrDirectLightingInit",fpe=`#ifdef LIGHT{X} var preInfo{X}: preLightingInfo;var preInfoCoat{X}: preLightingInfo;let lightColor{X}: vec4f=light{X}.vLightDiffuse;var shadow{X}: f32=1.0f; #if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X}) #else @@ -14409,7 +14409,7 @@ preInfo{X}.roughness=adjustRoughnessFromLightProperties(specular_roughness,light preInfo{X}.diffuseRoughness=base_diffuse_roughness;preInfo{X}.surfaceAlbedo=base_color.rgb; #endif #endif -`;A.IncludesShadersStoreWGSL[g7]||(A.IncludesShadersStoreWGSL[g7]=spe)});var E7,ape,S7=I(()=>{k();E7="openpbrDirectLighting",ape=`#ifdef LIGHT{X} +`;A.IncludesShadersStoreWGSL[S7]||(A.IncludesShadersStoreWGSL[S7]=fpe)});var A7,dpe,x7=I(()=>{k();A7="openpbrDirectLighting",dpe=`#ifdef LIGHT{X} {var slab_diffuse: vec3f=vec3f(0.f,0.f,0.f);var slab_translucent: vec3f=vec3f(0.f,0.f,0.f);var slab_glossy: vec3f=vec3f(0.f,0.f,0.f);var specularFresnel: f32=0.0f;var specularColoredFresnel: vec3f=vec3f(0.f,0.f,0.f);var slab_metal: vec3f=vec3f(0.f,0.f,0.f);var slab_coat: vec3f=vec3f(0.f,0.f,0.f);var coatFresnel: f32=0.0f;var slab_fuzz: vec3f=vec3f(0.f,0.f,0.f);var fuzzFresnel: f32=0.0f; #ifdef HEMILIGHT{X} slab_diffuse=computeHemisphericDiffuseLighting(preInfo{X},lightColor{X}.rgb,light{X}.vLightGround); @@ -14564,7 +14564,7 @@ total_direct_diffuse+=slab_diffuse; #endif let material_dielectric_base: vec3f=mix(slab_diffuse*base_color.rgb,slab_translucent,surface_translucency_weight);let material_dielectric_gloss: vec3f=material_dielectric_base*(1.0f-specularFresnel)+slab_glossy*specularColoredFresnel;let material_base_substrate: vec3f=mix(material_dielectric_gloss,slab_metal,base_metalness);let material_coated_base: vec3f=layer(material_base_substrate,slab_coat,coatFresnel,coatAbsorption,vec3f(1.0f));material_surface_direct+=layer(material_coated_base,slab_fuzz,fuzzFresnel*fuzz_weight,vec3f(1.0f),fuzz_color);} #endif -`;A.IncludesShadersStoreWGSL[E7]||(A.IncludesShadersStoreWGSL[E7]=ape)});var T7,ope,sN=I(()=>{k();T7="pbrBlockImageProcessing",ope=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) +`;A.IncludesShadersStoreWGSL[A7]||(A.IncludesShadersStoreWGSL[A7]=dpe)});var R7,hpe,lN=I(()=>{k();R7="pbrBlockImageProcessing",hpe=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) #if !defined(SKIPFINALCOLORCLAMP) finalColor=vec4f(clamp(finalColor.rgb,vec3f(0.),vec3f(30.0)),finalColor.a); #endif @@ -14575,7 +14575,7 @@ finalColor=vec4f(finalColor.rgb,finalColor.a*mesh.visibility); #ifdef PREMULTIPLYALPHA finalColor=vec4f(finalColor.rgb*finalColor.a,finalColor.a);; #endif -`;A.IncludesShadersStoreWGSL[T7]||(A.IncludesShadersStoreWGSL[T7]=ope)});var A7,lpe,x7=I(()=>{k();A7="openpbrBlockPrePass",lpe=`#if SCENE_MRT_COUNT>0 +`;A.IncludesShadersStoreWGSL[R7]||(A.IncludesShadersStoreWGSL[R7]=hpe)});var b7,upe,M7=I(()=>{k();b7="openpbrBlockPrePass",upe=`#if SCENE_MRT_COUNT>0 var writeGeometryInfo: f32=select(0.0,1.0,finalColor.a>ALPHATESTVALUE);var fragData: array,SCENE_MRT_COUNT>; #ifdef PREPASS_POSITION fragData[PREPASS_POSITION_INDEX]= vec4f(fragmentInputs.vPositionW,writeGeometryInfo); @@ -14665,7 +14665,7 @@ fragmentOutputs.fragData6=fragData[6]; fragmentOutputs.fragData7=fragData[7]; #endif #endif -`;A.IncludesShadersStoreWGSL[A7]||(A.IncludesShadersStoreWGSL[A7]=lpe)});var R7,cpe,aN=I(()=>{k();R7="pbrDebug",cpe=`#if DEBUGMODE>0 +`;A.IncludesShadersStoreWGSL[b7]||(A.IncludesShadersStoreWGSL[b7]=upe)});var I7,mpe,cN=I(()=>{k();I7="pbrDebug",mpe=`#if DEBUGMODE>0 if (input.vClipSpacePosition.x/input.vClipSpacePosition.w>=uniforms.vDebugMode.x) {var color: vec3f; #if DEBUGMODE==1 color=fragmentInputs.vPositionW.rgb; @@ -14849,7 +14849,7 @@ return fragmentOutputs; #endif } #endif -`;A.IncludesShadersStoreWGSL[R7]||(A.IncludesShadersStoreWGSL[R7]=cpe)});var M7={};Be(M7,{openpbrPixelShaderWGSL:()=>fpe});var oN,b7,fpe,I7=I(()=>{k();uR();mR();KO();qO();pR();O6();gR();Sc();Th();Qg();wa();ZO();QO();$O();vR();_R();Ap();JO();eN();xp();tN();rN();Mb();H6();X6();fv();GO();K6();q6();kO();WO();Q6();Tc();nN();e7();i7();n7();zO();HO();a7();l7();f7();h7();AR();m7();_7();v7();S7();xR();$g();sN();x7();RR();aN();oN="openpbrPixelShader",b7=`#define OPENPBR_FRAGMENT_SHADER +`;A.IncludesShadersStoreWGSL[I7]||(A.IncludesShadersStoreWGSL[I7]=mpe)});var C7={};Be(C7,{openpbrPixelShaderWGSL:()=>ppe});var fN,y7,ppe,P7=I(()=>{k();pR();_R();ZO();$O();gR();F6();ER();Sc();Th();Qg();wa();JO();eN();tN();SR();vR();Ap();iN();rN();xp();nN();aN();yb();Y6();j6();fv();HO();Z6();$6();zO();XO();e7();Tc();oN();r7();s7();o7();KO();YO();c7();d7();u7();p7();RR();g7();E7();T7();x7();bR();$g();lN();M7();MR();cN();fN="openpbrPixelShader",y7=`#define OPENPBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_BEGIN #include[SCENE_MRT_COUNT] #include @@ -15073,7 +15073,7 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #include #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStoreWGSL[oN]||(A.ShadersStoreWGSL[oN]=b7);fpe={name:oN,shader:b7}});var y7,dpe,C7=I(()=>{k();HL();bR();y7="openpbrVertexDeclaration",dpe=`#include +`;A.ShadersStoreWGSL[fN]||(A.ShadersStoreWGSL[fN]=y7);ppe={name:fN,shader:y7}});var D7,_pe,L7=I(()=>{k();YL();IR();D7="openpbrVertexDeclaration",_pe=`#include #ifdef BASE_COLOR uniform vec2 vBaseColorInfos;uniform mat4 baseColorMatrix; #endif @@ -15200,22 +15200,22 @@ uniform vec4 vDetailInfos;uniform mat4 detailMatrix; #endif #include #define ADDITIONAL_VERTEX_DECLARATION -`;A.IncludesShadersStore[y7]||(A.IncludesShadersStore[y7]=dpe)});var P7,hpe,lN=I(()=>{k();xh();dv();P7="openpbrUboDeclaration",hpe=`layout(std140,column_major) uniform;uniform Material {vec2 vTangentSpaceParams;vec4 vLightingIntensity;float pointSize;vec2 vDebugMode;vec2 renderTargetSize;vec4 cameraInfo;mat4 backgroundRefractionMatrix;vec3 vBackgroundRefractionInfos;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX;float vBaseWeight;vec4 vBaseColor;float vBaseDiffuseRoughness;vec4 vReflectanceInfo;vec4 vSpecularColor;vec3 vSpecularAnisotropy;float vTransmissionWeight;vec3 vTransmissionColor;float vTransmissionDepth;vec3 vTransmissionScatter;float vTransmissionScatterAnisotropy;float vTransmissionDispersionScale;float vTransmissionDispersionAbbeNumber;float vSubsurfaceWeight;vec3 vSubsurfaceColor;float vSubsurfaceRadius;vec3 vSubsurfaceRadiusScale;float vSubsurfaceScatterAnisotropy;float vCoatWeight;vec3 vCoatColor;float vCoatRoughness;float vCoatRoughnessAnisotropy;float vCoatIor;float vCoatDarkening;float vFuzzWeight;vec3 vFuzzColor;float vFuzzRoughness;float vGeometryThinWalled;vec2 vGeometryCoatTangent;float vGeometryThickness;vec3 vEmissionColor;float vThinFilmWeight;vec2 vThinFilmThickness;float vThinFilmIor;vec2 vBaseWeightInfos;mat4 baseWeightMatrix;vec2 vBaseColorInfos;mat4 baseColorMatrix;vec2 vBaseDiffuseRoughnessInfos;mat4 baseDiffuseRoughnessMatrix;vec2 vBaseMetalnessInfos;mat4 baseMetalnessMatrix;vec2 vSpecularWeightInfos;mat4 specularWeightMatrix;vec2 vSpecularColorInfos;mat4 specularColorMatrix;vec2 vSpecularRoughnessInfos;mat4 specularRoughnessMatrix;vec2 vSpecularRoughnessAnisotropyInfos;mat4 specularRoughnessAnisotropyMatrix;vec2 vTransmissionWeightInfos;mat4 transmissionWeightMatrix;vec2 vTransmissionColorInfos;mat4 transmissionColorMatrix;vec2 vTransmissionDepthInfos;mat4 transmissionDepthMatrix;vec2 vTransmissionScatterInfos;mat4 transmissionScatterMatrix;vec2 vTransmissionDispersionScaleInfos;mat4 transmissionDispersionScaleMatrix;vec2 vSubsurfaceWeightInfos;mat4 subsurfaceWeightMatrix;vec2 vSubsurfaceColorInfos;mat4 subsurfaceColorMatrix;vec2 vSubsurfaceRadiusScaleInfos;mat4 subsurfaceRadiusScaleMatrix;vec2 vCoatWeightInfos;mat4 coatWeightMatrix;vec2 vCoatColorInfos;mat4 coatColorMatrix;vec2 vCoatRoughnessInfos;mat4 coatRoughnessMatrix;vec2 vCoatRoughnessAnisotropyInfos;mat4 coatRoughnessAnisotropyMatrix;vec2 vCoatDarkeningInfos;mat4 coatDarkeningMatrix;vec2 vFuzzWeightInfos;mat4 fuzzWeightMatrix;vec2 vFuzzColorInfos;mat4 fuzzColorMatrix;vec2 vFuzzRoughnessInfos;mat4 fuzzRoughnessMatrix;vec2 vGeometryNormalInfos;mat4 geometryNormalMatrix;vec2 vGeometryTangentInfos;mat4 geometryTangentMatrix;vec2 vGeometryCoatNormalInfos;mat4 geometryCoatNormalMatrix;vec2 vGeometryCoatTangentInfos;mat4 geometryCoatTangentMatrix;vec2 vGeometryOpacityInfos;mat4 geometryOpacityMatrix;vec2 vGeometryThicknessInfos;mat4 geometryThicknessMatrix;vec2 vEmissionColorInfos;mat4 emissionColorMatrix;vec2 vThinFilmWeightInfos;mat4 thinFilmWeightMatrix;vec2 vThinFilmThicknessInfos;mat4 thinFilmThicknessMatrix;vec2 vAmbientOcclusionInfos;mat4 ambientOcclusionMatrix; +`;A.IncludesShadersStore[D7]||(A.IncludesShadersStore[D7]=_pe)});var O7,gpe,dN=I(()=>{k();xh();dv();O7="openpbrUboDeclaration",gpe=`layout(std140,column_major) uniform;uniform Material {vec2 vTangentSpaceParams;vec4 vLightingIntensity;float pointSize;vec2 vDebugMode;vec2 renderTargetSize;vec4 cameraInfo;mat4 backgroundRefractionMatrix;vec3 vBackgroundRefractionInfos;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX;float vBaseWeight;vec4 vBaseColor;float vBaseDiffuseRoughness;vec4 vReflectanceInfo;vec4 vSpecularColor;vec3 vSpecularAnisotropy;float vTransmissionWeight;vec3 vTransmissionColor;float vTransmissionDepth;vec3 vTransmissionScatter;float vTransmissionScatterAnisotropy;float vTransmissionDispersionScale;float vTransmissionDispersionAbbeNumber;float vSubsurfaceWeight;vec3 vSubsurfaceColor;float vSubsurfaceRadius;vec3 vSubsurfaceRadiusScale;float vSubsurfaceScatterAnisotropy;float vCoatWeight;vec3 vCoatColor;float vCoatRoughness;float vCoatRoughnessAnisotropy;float vCoatIor;float vCoatDarkening;float vFuzzWeight;vec3 vFuzzColor;float vFuzzRoughness;float vGeometryThinWalled;vec2 vGeometryCoatTangent;float vGeometryThickness;vec3 vEmissionColor;float vThinFilmWeight;vec2 vThinFilmThickness;float vThinFilmIor;vec2 vBaseWeightInfos;mat4 baseWeightMatrix;vec2 vBaseColorInfos;mat4 baseColorMatrix;vec2 vBaseDiffuseRoughnessInfos;mat4 baseDiffuseRoughnessMatrix;vec2 vBaseMetalnessInfos;mat4 baseMetalnessMatrix;vec2 vSpecularWeightInfos;mat4 specularWeightMatrix;vec2 vSpecularColorInfos;mat4 specularColorMatrix;vec2 vSpecularRoughnessInfos;mat4 specularRoughnessMatrix;vec2 vSpecularRoughnessAnisotropyInfos;mat4 specularRoughnessAnisotropyMatrix;vec2 vTransmissionWeightInfos;mat4 transmissionWeightMatrix;vec2 vTransmissionColorInfos;mat4 transmissionColorMatrix;vec2 vTransmissionDepthInfos;mat4 transmissionDepthMatrix;vec2 vTransmissionScatterInfos;mat4 transmissionScatterMatrix;vec2 vTransmissionDispersionScaleInfos;mat4 transmissionDispersionScaleMatrix;vec2 vSubsurfaceWeightInfos;mat4 subsurfaceWeightMatrix;vec2 vSubsurfaceColorInfos;mat4 subsurfaceColorMatrix;vec2 vSubsurfaceRadiusScaleInfos;mat4 subsurfaceRadiusScaleMatrix;vec2 vCoatWeightInfos;mat4 coatWeightMatrix;vec2 vCoatColorInfos;mat4 coatColorMatrix;vec2 vCoatRoughnessInfos;mat4 coatRoughnessMatrix;vec2 vCoatRoughnessAnisotropyInfos;mat4 coatRoughnessAnisotropyMatrix;vec2 vCoatDarkeningInfos;mat4 coatDarkeningMatrix;vec2 vFuzzWeightInfos;mat4 fuzzWeightMatrix;vec2 vFuzzColorInfos;mat4 fuzzColorMatrix;vec2 vFuzzRoughnessInfos;mat4 fuzzRoughnessMatrix;vec2 vGeometryNormalInfos;mat4 geometryNormalMatrix;vec2 vGeometryTangentInfos;mat4 geometryTangentMatrix;vec2 vGeometryCoatNormalInfos;mat4 geometryCoatNormalMatrix;vec2 vGeometryCoatTangentInfos;mat4 geometryCoatTangentMatrix;vec2 vGeometryOpacityInfos;mat4 geometryOpacityMatrix;vec2 vGeometryThicknessInfos;mat4 geometryThicknessMatrix;vec2 vEmissionColorInfos;mat4 emissionColorMatrix;vec2 vThinFilmWeightInfos;mat4 thinFilmWeightMatrix;vec2 vThinFilmThicknessInfos;mat4 thinFilmThicknessMatrix;vec2 vAmbientOcclusionInfos;mat4 ambientOcclusionMatrix; #define ADDITIONAL_UBO_DECLARATION }; #include #include -`;A.IncludesShadersStore[P7]||(A.IncludesShadersStore[P7]=hpe)});var D7,upe,L7=I(()=>{k();D7="openpbrNormalMapVertexDeclaration",upe=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) +`;A.IncludesShadersStore[O7]||(A.IncludesShadersStore[O7]=gpe)});var N7,vpe,w7=I(()=>{k();N7="openpbrNormalMapVertexDeclaration",vpe=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif #endif -`;A.IncludesShadersStore[D7]||(A.IncludesShadersStore[D7]=upe)});var O7,mpe,N7=I(()=>{k();O7="openpbrNormalMapVertex",mpe=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) +`;A.IncludesShadersStore[N7]||(A.IncludesShadersStore[N7]=vpe)});var F7,Epe,B7=I(()=>{k();F7="openpbrNormalMapVertex",Epe=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) #if defined(TANGENT) && defined(NORMAL) vec3 tbnNormal=normalize(normalUpdated);vec3 tbnTangent=normalize(tangentUpdated.xyz);vec3 tbnBitangent=cross(tbnNormal,tbnTangent)*tangentUpdated.w;vTBN=mat3(finalWorld)*mat3(tbnTangent,tbnBitangent,tbnNormal); #endif #endif -`;A.IncludesShadersStore[O7]||(A.IncludesShadersStore[O7]=mpe)});var F7={};Be(F7,{openpbrVertexShader:()=>ppe});var cN,w7,ppe,B7=I(()=>{k();C7();lN();MR();up();Fa();Sp();Ac();xc();zf();IR();yR();Tp();L7();Rc();Jg();CR();PR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();DR();LR();OR();N7();yc();ev();wR();tv();FR();cN="openpbrVertexShader",w7=`#define OPENPBR_VERTEX_SHADER +`;A.IncludesShadersStore[F7]||(A.IncludesShadersStore[F7]=Epe)});var V7={};Be(V7,{openpbrVertexShader:()=>Spe});var hN,U7,Spe,G7=I(()=>{k();L7();dN();yR();up();Fa();Sp();Ac();xc();zf();CR();PR();Tp();w7();Rc();Jg();DR();LR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();OR();NR();wR();B7();yc();ev();BR();tv();UR();hN="openpbrVertexShader",U7=`#define OPENPBR_VERTEX_SHADER #define CUSTOM_VERTEX_EXTENSION precision highp float; #include<__decl__openpbrVertex> @@ -15436,7 +15436,7 @@ gl_PointSize=pointSize; #include #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStore[cN]||(A.ShadersStore[cN]=w7);ppe={name:cN,shader:w7}});var U7,_pe,V7=I(()=>{k();CO();BR();U7="openpbrFragmentDeclaration",_pe=`uniform float vBaseWeight;uniform vec4 vBaseColor;uniform float vBaseDiffuseRoughness;uniform vec4 vReflectanceInfo;uniform vec4 vSpecularColor;uniform vec3 vSpecularAnisotropy;uniform float vTransmissionWeight;uniform vec3 vTransmissionColor;uniform float vTransmissionDepth;uniform vec3 vTransmissionScatter;uniform float vTransmissionScatterAnisotropy;uniform float vTransmissionDispersionScale;uniform float vTransmissionDispersionAbbeNumber;uniform float vSubsurfaceWeight;uniform vec3 vSubsurfaceColor;uniform float vSubsurfaceRadius;uniform vec3 vSubsurfaceRadiusScale;uniform float vSubsurfaceScatterAnisotropy;uniform float vCoatWeight;uniform vec3 vCoatColor;uniform float vCoatRoughness;uniform float vCoatRoughnessAnisotropy;uniform float vCoatIor;uniform float vCoatDarkening;uniform float vFuzzWeight;uniform vec3 vFuzzColor;uniform float vFuzzRoughness;uniform vec2 vGeometryCoatTangent;uniform float vGeometryThickness;uniform vec3 vEmissionColor;uniform float vThinFilmWeight;uniform vec2 vThinFilmThickness;uniform float vThinFilmIor;uniform float vGeometryThinWalled;uniform vec4 vLightingIntensity;uniform float visibility;uniform vec2 renderTargetSize; +`;A.ShadersStore[hN]||(A.ShadersStore[hN]=U7);Spe={name:hN,shader:U7}});var k7,Tpe,W7=I(()=>{k();LO();VR();k7="openpbrFragmentDeclaration",Tpe=`uniform float vBaseWeight;uniform vec4 vBaseColor;uniform float vBaseDiffuseRoughness;uniform vec4 vReflectanceInfo;uniform vec4 vSpecularColor;uniform vec3 vSpecularAnisotropy;uniform float vTransmissionWeight;uniform vec3 vTransmissionColor;uniform float vTransmissionDepth;uniform vec3 vTransmissionScatter;uniform float vTransmissionScatterAnisotropy;uniform float vTransmissionDispersionScale;uniform float vTransmissionDispersionAbbeNumber;uniform float vSubsurfaceWeight;uniform vec3 vSubsurfaceColor;uniform float vSubsurfaceRadius;uniform vec3 vSubsurfaceRadiusScale;uniform float vSubsurfaceScatterAnisotropy;uniform float vCoatWeight;uniform vec3 vCoatColor;uniform float vCoatRoughness;uniform float vCoatRoughnessAnisotropy;uniform float vCoatIor;uniform float vCoatDarkening;uniform float vFuzzWeight;uniform vec3 vFuzzColor;uniform float vFuzzRoughness;uniform vec2 vGeometryCoatTangent;uniform float vGeometryThickness;uniform vec3 vEmissionColor;uniform float vThinFilmWeight;uniform vec2 vThinFilmThickness;uniform float vThinFilmIor;uniform float vGeometryThinWalled;uniform vec4 vLightingIntensity;uniform float visibility;uniform vec2 renderTargetSize; #ifdef BASE_COLOR uniform vec2 vBaseColorInfos; #endif @@ -15585,7 +15585,7 @@ uniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;unifo uniform mat4 backgroundRefractionMatrix;uniform vec3 vBackgroundRefractionInfos; #endif #define ADDITIONAL_FRAGMENT_DECLARATION -`;A.IncludesShadersStore[U7]||(A.IncludesShadersStore[U7]=_pe)});var G7,gpe,fN=I(()=>{k();up();G7="pbrFragmentExtraDeclaration",gpe=`varying vec3 vPositionW; +`;A.IncludesShadersStore[k7]||(A.IncludesShadersStore[k7]=Tpe)});var H7,Ape,uN=I(()=>{k();up();H7="pbrFragmentExtraDeclaration",Ape=`varying vec3 vPositionW; #if DEBUGMODE>0 varying vec4 vClipSpacePosition; #endif @@ -15602,7 +15602,7 @@ varying vec4 vColor; #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 varying float vViewDepth; #endif -`;A.IncludesShadersStore[G7]||(A.IncludesShadersStore[G7]=gpe)});var k7,vpe,W7=I(()=>{k();bh();xb();k7="openpbrFragmentSamplersDeclaration",vpe=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;A.IncludesShadersStore[H7]||(A.IncludesShadersStore[H7]=Ape)});var z7,xpe,X7=I(()=>{k();bh();bb();z7="openpbrFragmentSamplersDeclaration",xpe=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness) @@ -15654,15 +15654,15 @@ uniform sampler2D blueNoiseSampler; #ifdef IBL_CDF_FILTERING uniform sampler2D icdfSampler; #endif -`;A.IncludesShadersStore[k7]||(A.IncludesShadersStore[k7]=vpe)});var H7,Epe,dN=I(()=>{k();H7="subSurfaceScatteringFunctions",Epe=`bool testLightingForSSS(float diffusionProfile) -{return diffusionProfile<1.;}`;A.IncludesShadersStore[H7]||(A.IncludesShadersStore[H7]=Epe)});var z7,Spe,hN=I(()=>{k();z7="importanceSampling",Spe=`vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} +`;A.IncludesShadersStore[z7]||(A.IncludesShadersStore[z7]=xpe)});var Y7,Rpe,mN=I(()=>{k();Y7="subSurfaceScatteringFunctions",Rpe=`bool testLightingForSSS(float diffusionProfile) +{return diffusionProfile<1.;}`;A.IncludesShadersStore[Y7]||(A.IncludesShadersStore[Y7]=Rpe)});var K7,bpe,pN=I(()=>{k();K7="importanceSampling",bpe=`vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} vec3 hemisphereImportanceSampleDggx(vec2 u,float a) {float phi=2.*PI*u.x;float cosTheta2=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);} vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent) {alphaTangent=max(alphaTangent,0.0001);alphaBitangent=max(alphaBitangent,0.0001);float phi=atan(alphaBitangent/alphaTangent*tan(2.0*3.14159265*Xi.x));if (Xi.x>0.5) phi+=3.14159265; float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) + (sinPhi*sinPhi)/(alphaBitangent*alphaBitangent);float tanTheta2=Xi.y/(1.0-Xi.y)/alpha2;float cosTheta=1.0/sqrt(1.0+tanTheta2);float sinTheta=sqrt(max(0.0,1.0-cosTheta*cosTheta));return vec3(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);} vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) { -float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;A.IncludesShadersStore[z7]||(A.IncludesShadersStore[z7]=Spe)});var X7,Tpe,uN=I(()=>{k();X7="pbrHelperFunctions",Tpe=`#define MINIMUMVARIANCE 0.0005 +float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;A.IncludesShadersStore[K7]||(A.IncludesShadersStore[K7]=bpe)});var j7,Mpe,_N=I(()=>{k();j7="pbrHelperFunctions",Mpe=`#define MINIMUMVARIANCE 0.0005 float convertRoughnessToAverageSlope(float roughness) {return square(roughness)+MINIMUMVARIANCE;} float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;} @@ -15697,7 +15697,7 @@ clearCoatIntensity);return clearCoatAbsorption;} float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor) {const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;} #endif -`;A.IncludesShadersStore[X7]||(A.IncludesShadersStore[X7]=Tpe)});var Y7,Ape,mN=I(()=>{k();_L();Y7="pbrDirectLightingSetupFunctions",Ape=`struct preLightingInfo +`;A.IncludesShadersStore[j7]||(A.IncludesShadersStore[j7]=Mpe)});var q7,Ipe,gN=I(()=>{k();EL();q7="pbrDirectLightingSetupFunctions",Ipe=`struct preLightingInfo {vec3 lightOffset;float lightDistanceSquared;float lightDistance;float attenuation;vec3 L;vec3 H;float NdotV;float NdotLUnclamped;float NdotL;float VdotH;float LdotV;float roughness;float diffuseRoughness;vec3 surfaceAlbedo; #ifdef IRIDESCENCE float iridescenceIntensity; @@ -15730,7 +15730,7 @@ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular; #endif result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;} #endif -`;A.IncludesShadersStore[Y7]||(A.IncludesShadersStore[Y7]=Ape)});var K7,xpe,pN=I(()=>{k();K7="pbrDirectLightingFalloffFunctions",xpe=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range) +`;A.IncludesShadersStore[q7]||(A.IncludesShadersStore[q7]=Ipe)});var Z7,ype,vN=I(()=>{k();Z7="pbrDirectLightingFalloffFunctions",ype=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range) {return max(0.,1.0-length(lightOffset)/range);} float computeDistanceLightFalloff_Physical(float lightDistanceSquared) {return 1.0/maxEps(lightDistanceSquared);} @@ -15766,7 +15766,7 @@ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenter #else return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent); #endif -}`;A.IncludesShadersStore[K7]||(A.IncludesShadersStore[K7]=xpe)});var j7,Rpe,_N=I(()=>{k();j7="hdrFilteringFunctions",Rpe=`#if NUM_SAMPLES +}`;A.IncludesShadersStore[Z7]||(A.IncludesShadersStore[Z7]=ype)});var Q7,Cpe,EN=I(()=>{k();Q7="hdrFilteringFunctions",Cpe=`#if NUM_SAMPLES #if NUM_SAMPLES>0 #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) float radicalInverse_VdC(uint bits) @@ -15911,7 +15911,7 @@ result=result/weight;return result;} #endif #endif #endif -`;A.IncludesShadersStore[j7]||(A.IncludesShadersStore[j7]=Rpe)});var q7,bpe,gN=I(()=>{k();q7="pbrDirectLightingFunctions",bpe=`#define CLEARCOATREFLECTANCE90 1.0 +`;A.IncludesShadersStore[Q7]||(A.IncludesShadersStore[Q7]=Cpe)});var $7,Ppe,SN=I(()=>{k();$7="pbrDirectLightingFunctions",Ppe=`#define CLEARCOATREFLECTANCE90 1.0 struct lightingInfo {vec3 diffuse; #ifdef SS_TRANSLUCENCY @@ -16017,7 +16017,7 @@ float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG); float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */ float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;} #endif -`;A.IncludesShadersStore[q7]||(A.IncludesShadersStore[q7]=bpe)});var Z7,Mpe,Q7=I(()=>{k();Z7="openpbrNormalMapFragmentMainFunctions",Mpe=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) +`;A.IncludesShadersStore[$7]||(A.IncludesShadersStore[$7]=Ppe)});var J7,Dpe,e9=I(()=>{k();J7="openpbrNormalMapFragmentMainFunctions",Dpe=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif @@ -16078,7 +16078,7 @@ vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale) mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams) {vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);} #endif -`;A.IncludesShadersStore[Z7]||(A.IncludesShadersStore[Z7]=Mpe)});var $7,Ipe,J7=I(()=>{k();bh();$7="openpbrNormalMapFragmentFunctions",Ipe=`#if defined(GEOMETRY_NORMAL) +`;A.IncludesShadersStore[J7]||(A.IncludesShadersStore[J7]=Dpe)});var t9,Lpe,i9=I(()=>{k();bh();t9="openpbrNormalMapFragmentFunctions",Lpe=`#if defined(GEOMETRY_NORMAL) #include(_DEFINENAME_,GEOMETRY_NORMAL,_VARYINGNAME_,GeometryNormal,_SAMPLERNAME_,geometryNormal) #endif #if defined(GEOMETRY_COAT_NORMAL) @@ -16111,7 +16111,7 @@ return -texCoordOffset; #endif } #endif -`;A.IncludesShadersStore[$7]||(A.IncludesShadersStore[$7]=Ipe)});var e9,ype,t9=I(()=>{k();e9="openpbrConductorReflectance",ype=`#define pbr_inline +`;A.IncludesShadersStore[t9]||(A.IncludesShadersStore[t9]=Lpe)});var r9,Ope,n9=I(()=>{k();r9="openpbrConductorReflectance",Ope=`#define pbr_inline ReflectanceParams conductorReflectance(in vec3 baseColor,in vec3 specularColor,in float specularWeight) {ReflectanceParams outParams; #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) @@ -16119,9 +16119,9 @@ outParams.coloredF0=baseColor*specularWeight;outParams.coloredF90=specularColor* #else outParams.coloredF0=baseColor;outParams.coloredF90=vec3(1.0); #endif -outParams.F0=1.0;outParams.F90=1.0;return outParams;}`;A.IncludesShadersStore[e9]||(A.IncludesShadersStore[e9]=ype)});var i9,Cpe,r9=I(()=>{k();i9="openpbrAmbientOcclusionFunctions",Cpe=`float compute_specular_occlusion(const float n_dot_v,const float metallic,const float ambient_occlusion,const float roughness) +outParams.F0=1.0;outParams.F90=1.0;return outParams;}`;A.IncludesShadersStore[r9]||(A.IncludesShadersStore[r9]=Ope)});var s9,Npe,a9=I(()=>{k();s9="openpbrAmbientOcclusionFunctions",Npe=`float compute_specular_occlusion(const float n_dot_v,const float metallic,const float ambient_occlusion,const float roughness) {float specular_occlusion=saturate(pow(n_dot_v+ambient_occlusion,exp2(-16.0*roughness-1.0))-1.0+ambient_occlusion);return mix(specular_occlusion,1.0,metallic*square(1.0-roughness));} -`;A.IncludesShadersStore[i9]||(A.IncludesShadersStore[i9]=Cpe)});var n9,Ppe,s9=I(()=>{k();n9="openpbrVolumeFunctions",Ppe=`struct OpenPBRHomogeneousVolume {vec3 extinction_coeff; +`;A.IncludesShadersStore[s9]||(A.IncludesShadersStore[s9]=Npe)});var o9,wpe,l9=I(()=>{k();o9="openpbrVolumeFunctions",wpe=`struct OpenPBRHomogeneousVolume {vec3 extinction_coeff; vec3 ss_albedo; vec3 multi_scatter_color; vec3 absorption_coeff; @@ -16177,7 +16177,7 @@ float filter_samples_scale=samples_scale(pixels_to_projective(overscan_size_in_p {vec3 weights=sss_irradiance.a/sss_samples_pdf(icdf,dz)*sss_pdf(dist,d.rgb);irradiance_sum+=weights*sss_irradiance.rgb;weight_sum+=weights;}} return vec3(weight_sum.r<1e-5f ? unconvolved_irradiance.r : irradiance_sum.r/weight_sum.r, weight_sum.g<1e-5f ? unconvolved_irradiance.g : irradiance_sum.g/weight_sum.g, -weight_sum.b<1e-5f ? unconvolved_irradiance.b : irradiance_sum.b/weight_sum.b);}`;A.IncludesShadersStore[n9]||(A.IncludesShadersStore[n9]=Ppe)});var a9,Dpe,vN=I(()=>{k();a9="pbrBlockNormalGeometric",Dpe=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW); +weight_sum.b<1e-5f ? unconvolved_irradiance.b : irradiance_sum.b/weight_sum.b);}`;A.IncludesShadersStore[o9]||(A.IncludesShadersStore[o9]=wpe)});var c9,Fpe,TN=I(()=>{k();c9="pbrBlockNormalGeometric",Fpe=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW); #ifdef NORMAL vec3 normalW=normalize(vNormalW); #else @@ -16187,7 +16187,7 @@ vec3 geometricNormalW=normalW; #if defined(TWOSIDEDLIGHTING) && defined(NORMAL) geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW; #endif -`;A.IncludesShadersStore[a9]||(A.IncludesShadersStore[a9]=Dpe)});var o9,Lpe,l9=I(()=>{k();o9="openpbrNormalMapFragment",Lpe=`vec2 uvOffset=vec2(0.0,0.0); +`;A.IncludesShadersStore[c9]||(A.IncludesShadersStore[c9]=Fpe)});var f9,Bpe,d9=I(()=>{k();f9="openpbrNormalMapFragment",Bpe=`vec2 uvOffset=vec2(0.0,0.0); #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE float normalScale=1.0; @@ -16242,7 +16242,7 @@ normalW=perturbNormalBase(TBN,blendedNormal,vGeometryNormalInfos.y); #elif defined(DETAIL) detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z); #endif -`;A.IncludesShadersStore[o9]||(A.IncludesShadersStore[o9]=Lpe)});var c9,Ope,f9=I(()=>{k();c9="openpbrBlockNormalFinal",Ope=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;A.IncludesShadersStore[f9]||(A.IncludesShadersStore[f9]=Bpe)});var h9,Upe,u9=I(()=>{k();h9="openpbrBlockNormalFinal",Upe=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) vec3 faceNormal=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w; #if defined(TWOSIDEDLIGHTING) faceNormal=gl_FrontFacing ? faceNormal : -faceNormal; @@ -16256,7 +16256,7 @@ normalW=gl_FrontFacing ? -normalW : normalW;coatNormalW=gl_FrontFacing ? -coatNo normalW=gl_FrontFacing ? normalW : -normalW;coatNormalW=gl_FrontFacing ? coatNormalW : -coatNormalW; #endif #endif -`;A.IncludesShadersStore[c9]||(A.IncludesShadersStore[c9]=Ope)});var d9,Npe,h9=I(()=>{k();d9="openpbrBaseLayerData",Npe=`vec3 base_color=vec3(0.8);float base_metalness=0.0;float base_diffuse_roughness=0.0;float specular_weight=1.0;float specular_roughness=0.3;vec3 specular_color=vec3(1.0);float specular_roughness_anisotropy=0.0;float specular_ior=1.5;float alpha=1.0;vec2 geometry_tangent=vec2(1.0,0.0);float geometry_thickness=0.0; +`;A.IncludesShadersStore[h9]||(A.IncludesShadersStore[h9]=Upe)});var m9,Vpe,p9=I(()=>{k();m9="openpbrBaseLayerData",Vpe=`vec3 base_color=vec3(0.8);float base_metalness=0.0;float base_diffuse_roughness=0.0;float specular_weight=1.0;float specular_roughness=0.3;vec3 specular_color=vec3(1.0);float specular_roughness_anisotropy=0.0;float specular_ior=1.5;float alpha=1.0;vec2 geometry_tangent=vec2(1.0,0.0);float geometry_thickness=0.0; #ifdef BASE_WEIGHT vec4 baseWeightFromTexture=texture2D(baseWeightSampler,vBaseWeightUV+uvOffset); #endif @@ -16382,7 +16382,7 @@ float detailRoughness=mix(0.5,detailColor.b,vDetailInfos.w);float loLerp=mix(0., #ifdef USE_GLTF_STYLE_ANISOTROPY float baseAlpha=specular_roughness*specular_roughness;float roughnessT=mix(baseAlpha,1.0,specular_roughness_anisotropy*specular_roughness_anisotropy);float roughnessB=baseAlpha;specular_roughness_anisotropy=1.0-roughnessB/max(roughnessT,0.00001);specular_roughness=sqrt(roughnessT/sqrt(2.0/(1.0+(1.0-specular_roughness_anisotropy)*(1.0-specular_roughness_anisotropy)))); #endif -`;A.IncludesShadersStore[d9]||(A.IncludesShadersStore[d9]=Npe)});var u9,wpe,m9=I(()=>{k();u9="openpbrCoatLayerData",wpe=`float coat_weight=0.0;vec3 coat_color=vec3(1.0);float coat_roughness=0.0;float coat_roughness_anisotropy=0.0;float coat_ior=1.6;float coat_darkening=1.0;vec2 geometry_coat_tangent=vec2(1.0,0.0); +`;A.IncludesShadersStore[m9]||(A.IncludesShadersStore[m9]=Vpe)});var _9,Gpe,g9=I(()=>{k();_9="openpbrCoatLayerData",Gpe=`float coat_weight=0.0;vec3 coat_color=vec3(1.0);float coat_roughness=0.0;float coat_roughness_anisotropy=0.0;float coat_ior=1.6;float coat_darkening=1.0;vec2 geometry_coat_tangent=vec2(1.0,0.0); #ifdef COAT_WEIGHT vec4 coatWeightFromTexture=texture2D(coatWeightSampler,vCoatWeightUV+uvOffset); #endif @@ -16434,7 +16434,7 @@ coat_darkening*=coatDarkeningFromTexture.r; #ifdef USE_GLTF_STYLE_ANISOTROPY float coatAlpha=coat_roughness*coat_roughness;float coatRoughnessT=mix(coatAlpha,1.0,coat_roughness_anisotropy*coat_roughness_anisotropy);float coatRoughnessB=coatAlpha;coat_roughness_anisotropy=1.0-coatRoughnessB/max(coatRoughnessT,0.00001);coat_roughness=sqrt(coatRoughnessT/sqrt(2.0/(1.0+(1.0-coat_roughness_anisotropy)*(1.0-coat_roughness_anisotropy)))); #endif -`;A.IncludesShadersStore[u9]||(A.IncludesShadersStore[u9]=wpe)});var p9,Fpe,_9=I(()=>{k();p9="openpbrThinFilmLayerData",Fpe=`#ifdef THIN_FILM +`;A.IncludesShadersStore[_9]||(A.IncludesShadersStore[_9]=Gpe)});var v9,kpe,E9=I(()=>{k();v9="openpbrThinFilmLayerData",kpe=`#ifdef THIN_FILM float thin_film_weight=vThinFilmWeight;float thin_film_thickness=vThinFilmThickness.r*1000.0; float thin_film_ior=vThinFilmIor; #ifdef THIN_FILM_WEIGHT @@ -16451,7 +16451,7 @@ thin_film_thickness*=thinFilmThicknessFromTexture; #endif float thin_film_ior_scale=clamp(2.0f*abs(thin_film_ior-1.0f),0.0f,1.0f); #endif -`;A.IncludesShadersStore[p9]||(A.IncludesShadersStore[p9]=Fpe)});var g9,Bpe,v9=I(()=>{k();g9="openpbrFuzzLayerData",Bpe=`float fuzz_weight=0.0;vec3 fuzz_color=vec3(1.0);float fuzz_roughness=0.0; +`;A.IncludesShadersStore[v9]||(A.IncludesShadersStore[v9]=kpe)});var S9,Wpe,T9=I(()=>{k();S9="openpbrFuzzLayerData",Wpe=`float fuzz_weight=0.0;vec3 fuzz_color=vec3(1.0);float fuzz_roughness=0.0; #ifdef FUZZ #ifdef FUZZ_WEIGHT vec4 fuzzWeightFromTexture=texture2D(fuzzWeightSampler,vFuzzWeightUV+uvOffset); @@ -16480,11 +16480,11 @@ fuzz_roughness*=fuzzRoughnessFromTexture.a; fuzz_roughness*=fuzzRoughnessFromTexture.r; #endif #endif -`;A.IncludesShadersStore[g9]||(A.IncludesShadersStore[g9]=Bpe)});var E9,Upe,S9=I(()=>{k();E9="openpbrAmbientOcclusionData",Upe=`vec3 ambient_occlusion=vec3(1.0);float specular_ambient_occlusion=1.0;float coat_specular_ambient_occlusion=1.0; +`;A.IncludesShadersStore[S9]||(A.IncludesShadersStore[S9]=Wpe)});var A9,Hpe,x9=I(()=>{k();A9="openpbrAmbientOcclusionData",Hpe=`vec3 ambient_occlusion=vec3(1.0);float specular_ambient_occlusion=1.0;float coat_specular_ambient_occlusion=1.0; #ifdef AMBIENT_OCCLUSION vec3 ambientOcclusionFromTexture=texture2D(ambientOcclusionSampler,vAmbientOcclusionUV+uvOffset).rgb;ambient_occlusion=vec3(ambientOcclusionFromTexture.r*vAmbientOcclusionInfos.y+(1.0-vAmbientOcclusionInfos.y)); #endif -`;A.IncludesShadersStore[E9]||(A.IncludesShadersStore[E9]=Upe)});var T9,Vpe,A9=I(()=>{k();T9="openpbrBackgroundTransmission",Vpe=`vec4 slab_translucent_background=vec4(0.,0.,0.,1.); +`;A.IncludesShadersStore[A9]||(A.IncludesShadersStore[A9]=Hpe)});var R9,zpe,b9=I(()=>{k();R9="openpbrBackgroundTransmission",zpe=`vec4 slab_translucent_background=vec4(0.,0.,0.,1.); #ifdef REFRACTED_BACKGROUND {float refractionLOD=min(transmission_roughness,0.7)*vBackgroundRefractionInfos.x;float lodTexelSize=pow(2.0,refractionLOD-vBackgroundRefractionInfos.x); #ifdef DISPERSION @@ -16512,7 +16512,7 @@ vec2 noiseOffset=noise.xy*lodTexelSize;slab_translucent_background=texture2DLodE #endif } #endif -`;A.IncludesShadersStore[T9]||(A.IncludesShadersStore[T9]=Vpe)});var x9,Gpe,R9=I(()=>{k();x9="openpbrEnvironmentLighting",Gpe=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) +`;A.IncludesShadersStore[R9]||(A.IncludesShadersStore[R9]=zpe)});var M9,Xpe,I9=I(()=>{k();M9="openpbrEnvironmentLighting",Xpe=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) vec3 coatAbsorption=vec3(1.0);float coatIblFresnel=0.0;if (coat_weight>0.0) {coatIblFresnel=computeDielectricIblFresnel(coatReflectance,coatGeoInfo.environmentBrdf);float hemisphere_avg_fresnel=coatReflectance.F0+0.5*(1.0-coatReflectance.F0);float averageReflectance=(coatIblFresnel+hemisphere_avg_fresnel)*0.5;float roughnessFactor=1.0-coat_roughness*0.5;averageReflectance*=roughnessFactor;float darkened_transmission=(1.0-averageReflectance)*(1.0-averageReflectance);darkened_transmission=mix(1.0,darkened_transmission,coat_darkening);float sin2=1.0-coatGeoInfo.NdotV*coatGeoInfo.NdotV;sin2=sin2/(coat_ior*coat_ior);float cos_t=sqrt(1.0-sin2);float coatPathLength=1.0/cos_t;vec3 colored_transmission=pow(coat_color,vec3(coatPathLength));coatAbsorption=mix(vec3(1.0),colored_transmission*darkened_transmission,coat_weight);} #endif #ifdef REFLECTION @@ -16794,7 +16794,7 @@ slab_translucent_base_ibl=slab_translucent_background.rgb*volume_absorption*tran #endif vec3 material_dielectric_base_ibl=mix(black,slab_translucent_base_ibl.rgb,surface_translucency_weight);vec3 material_dielectric_gloss_ibl=material_dielectric_base_ibl*(baseGeoInfo.NdotV);vec3 material_base_substrate_ibl=mix(material_dielectric_gloss_ibl,black,base_metalness);vec3 material_coated_base_ibl=layer(material_base_substrate_ibl,black,coatIblFresnel,coatAbsorption,vec3(1.0));material_surface_ibl=material_coated_base_ibl; #endif -`;A.IncludesShadersStore[x9]||(A.IncludesShadersStore[x9]=Gpe)});var b9,kpe,M9=I(()=>{k();b9="openpbrDirectLightingInit",kpe=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[M9]||(A.IncludesShadersStore[M9]=Xpe)});var y9,Ype,C9=I(()=>{k();y9="openpbrDirectLightingInit",Ype=`#ifdef LIGHT{X} preLightingInfo preInfo{X};preLightingInfo preInfoCoat{X};vec4 lightColor{X}=light{X}.vLightDiffuse;float shadow{X}=1.; #if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X}) #else @@ -16865,7 +16865,7 @@ preInfo{X}.roughness=adjustRoughnessFromLightProperties(specular_roughness,light preInfo{X}.diffuseRoughness=base_diffuse_roughness;preInfo{X}.surfaceAlbedo=base_color.rgb; #endif #endif -`;A.IncludesShadersStore[b9]||(A.IncludesShadersStore[b9]=kpe)});var I9,Wpe,y9=I(()=>{k();I9="openpbrDirectLighting",Wpe=`#ifdef LIGHT{X} +`;A.IncludesShadersStore[y9]||(A.IncludesShadersStore[y9]=Ype)});var P9,Kpe,D9=I(()=>{k();P9="openpbrDirectLighting",Kpe=`#ifdef LIGHT{X} {vec3 slab_diffuse=vec3(0.,0.,0.);vec3 slab_translucent=vec3(0.,0.,0.);vec3 slab_glossy=vec3(0.,0.,0.);float specularFresnel=0.0;vec3 specularColoredFresnel=vec3(0.,0.,0.);vec3 slab_metal=vec3(0.,0.,0.);vec3 slab_coat=vec3(0.,0.,0.);float coatFresnel=0.0;vec3 slab_fuzz=vec3(0.,0.,0.);float fuzzFresnel=0.0; #ifdef HEMILIGHT{X} slab_diffuse=computeHemisphericDiffuseLighting(preInfo{X},lightColor{X}.rgb,light{X}.vLightGround); @@ -17020,7 +17020,7 @@ total_direct_diffuse+=slab_diffuse; #endif vec3 material_dielectric_base=mix(slab_diffuse*base_color.rgb,slab_translucent,surface_translucency_weight);vec3 material_dielectric_gloss=material_dielectric_base*(1.0-specularFresnel)+slab_glossy*specularColoredFresnel;vec3 material_base_substrate=mix(material_dielectric_gloss,slab_metal,base_metalness);vec3 material_coated_base=layer(material_base_substrate,slab_coat,coatFresnel,coatAbsorption,vec3(1.0));material_surface_direct+=layer(material_coated_base,slab_fuzz,fuzzFresnel*fuzz_weight,vec3(1.0),fuzz_color);} #endif -`;A.IncludesShadersStore[I9]||(A.IncludesShadersStore[I9]=Wpe)});var C9,Hpe,EN=I(()=>{k();C9="pbrBlockImageProcessing",Hpe=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) +`;A.IncludesShadersStore[P9]||(A.IncludesShadersStore[P9]=Kpe)});var L9,jpe,AN=I(()=>{k();L9="pbrBlockImageProcessing",jpe=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) #if !defined(SKIPFINALCOLORCLAMP) finalColor.rgb=clamp(finalColor.rgb,0.,30.0); #endif @@ -17031,7 +17031,7 @@ finalColor.a*=visibility; #ifdef PREMULTIPLYALPHA finalColor.rgb*=finalColor.a; #endif -`;A.IncludesShadersStore[C9]||(A.IncludesShadersStore[C9]=Hpe)});var P9,zpe,D9=I(()=>{k();P9="openpbrBlockPrePass",zpe=`#if SCENE_MRT_COUNT>0 +`;A.IncludesShadersStore[L9]||(A.IncludesShadersStore[L9]=jpe)});var O9,qpe,N9=I(()=>{k();O9="openpbrBlockPrePass",qpe=`#if SCENE_MRT_COUNT>0 float writeGeometryInfo=finalColor.a>ALPHATESTVALUE ? 1.0 : 0.0; #ifdef PREPASS_POSITION gl_FragData[PREPASS_POSITION_INDEX]=vec4(vPositionW,writeGeometryInfo); @@ -17097,7 +17097,7 @@ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4( 0.0,0.0,0.0,1.0 )*writeGeometryInf #endif #endif #endif -`;A.IncludesShadersStore[P9]||(A.IncludesShadersStore[P9]=zpe)});var L9,Xpe,SN=I(()=>{k();L9="pbrDebug",Xpe=`#if DEBUGMODE>0 +`;A.IncludesShadersStore[O9]||(A.IncludesShadersStore[O9]=qpe)});var w9,Zpe,xN=I(()=>{k();w9="pbrDebug",Zpe=`#if DEBUGMODE>0 if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) { #if DEBUGMODE==1 gl_FragColor.rgb=vPositionW.rgb; @@ -17281,7 +17281,7 @@ return; #endif } #endif -`;A.IncludesShadersStore[L9]||(A.IncludesShadersStore[L9]=Xpe)});var N9={};Be(N9,{openpbrPixelShader:()=>Ype});var TN,O9,Ype,w9=I(()=>{k();UR();VR();V7();lN();fN();GR();kR();W7();HR();Cc();Rh();iv();Fa();dN();hN();uN();zR();WR();Tp();mN();pN();Sp();_N();gN();Rb();Q7();J7();hv();PO();t9();r9();DO();LO();s9();Pc();vN();l9();f9();h9();NO();OO();m9();_9();v9();S9();jR();A9();R9();M9();y9();qR();rv();EN();D9();ZR();SN();TN="openpbrPixelShader",O9=`#define OPENPBR_FRAGMENT_SHADER +`;A.IncludesShadersStore[w9]||(A.IncludesShadersStore[w9]=Zpe)});var B9={};Be(B9,{openpbrPixelShader:()=>Qpe});var RN,F9,Qpe,U9=I(()=>{k();GR();kR();W7();dN();uN();WR();HR();X7();XR();Cc();Rh();iv();Fa();mN();pN();_N();YR();zR();Tp();gN();vN();Sp();EN();SN();Mb();e9();i9();hv();OO();n9();a9();NO();wO();l9();Pc();TN();d9();u9();p9();BO();FO();g9();E9();T9();x9();ZR();b9();I9();C9();D9();QR();rv();AN();N9();$R();xN();RN="openpbrPixelShader",F9=`#define OPENPBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_EXTENSION #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) #extension GL_OES_standard_derivatives : enable @@ -17516,11 +17516,11 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaM #include #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStore[TN]||(A.ShadersStore[TN]=O9);Ype={name:TN,shader:O9}});var F9={};Be(F9,{OpenPBRMaterial:()=>Ne,OpenPBRMaterialDefines:()=>Rv});var Rp,Ib,si,Ti,AN,xN,Rv,RN,Ne,B9=I(()=>{Gt();Vt();Tb();Ht();Mg();Gr();Yi();Yn();br();Ga();Zx();Gf();vl();Kg();Xn();Wi();Qx();qx();Ua();Pt();$x();Jx();U8();ke();eR();Yg();So();yi();A6();Rp={effect:null,subMesh:null},Ib=class n{populateVectorFromLinkedProperties(e){let t=e.dimension[0];for(let i in this.linkedProperties){let r=this.linkedProperties[i],s=r.numComponents;if(tt-s){s==1?ee.Error(`Float property ${r.name} has an offset that is too large.`):ee.Error(`Vector${s} property ${r.name} won't fit in Vector${t} or has an offset that is too large.`);return}typeof r.value=="number"?n._tmpArray[r.targetUniformComponentOffset]=r.value:r.value.toArray(n._tmpArray,r.targetUniformComponentOffset)}e.fromArray(n._tmpArray)}constructor(e,t){this.linkedProperties={},this.firstLinkedKey="",this.name=e,this.numComponents=t}};Ib._tmpArray=[0,0,0,0];si=class{constructor(e,t,i,r,s=0,a){this.targetUniformComponentNum=4,this.targetUniformComponentOffset=0,this.name=e,this.targetUniformName=i,this.defaultValue=t,this.value=t,this.targetUniformComponentNum=r,this.targetUniformComponentOffset=s,this.requiredDefine=a}get numComponents(){return typeof this.defaultValue=="number"?1:this.defaultValue.dimension[0]}},Ti=class{get samplerName(){return this.samplerPrefix+"Sampler"}get samplerInfoName(){return"v"+this.samplerPrefix.charAt(0).toUpperCase()+this.samplerPrefix.slice(1)+"Infos"}get samplerMatrixName(){return this.samplerPrefix+"Matrix"}constructor(e,t,i){this.value=null,this.samplerPrefix="",this.textureDefine="",this.name=e,this.samplerPrefix=t,this.textureDefine=i}},AN=class extends fp(cp(Mr)){},xN=class extends B8(AN){},Rv=class extends op(xN){constructor(e){super(e),this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.LIGHTCOUNT=0,this.VERTEXCOLOR=!1,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.VERTEXALPHA=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHA_FROM_BASE_COLOR_TEXTURE=!1,this.ALPHATESTVALUE="0.5",this.PREMULTIPLYALPHA=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.LODBASEDMICROSFURACE=!0,this.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=!1,this.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.SPECULAR_WEIGHT_IN_ALPHA=!1,this.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=!1,this.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=!1,this.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.USE_GLTF_STYLE_ANISOTROPY=!1,this.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=!1,this.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=!1,this.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=!1,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.FUZZENVIRONMENTBRDF=!1,this.NORMAL=!1,this.TANGENT=!1,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.ANISOTROPIC=!1,this.ANISOTROPIC_OPENPBR=!0,this.ANISOTROPIC_BASE=!1,this.ANISOTROPIC_COAT=!1,this.FUZZ_IBL_SAMPLES=6,this.REFRACTION_HIGH_QUALITY_BLUR=!1,this.FUZZ=!1,this.THIN_FILM=!1,this.IRIDESCENCE=!1,this.DISPERSION=!1,this.SCATTERING=!1,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!1,this.SSS_SAMPLE_COUNT=16,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!1,this.TRANSMISSION_SLAB=!1,this.TRANSMISSION_SLAB_VOLUME=!1,this.SUBSURFACE_SLAB=!1,this.GEOMETRY_THIN_WALLED=!1,this.REFRACTED_BACKGROUND=!1,this.REFRACTED_LIGHTS=!1,this.REFRACTED_ENVIRONMENT=!1,this.REFRACTED_ENVIRONMENT_OPPOSITEZ=!1,this.REFRACTED_ENVIRONMENT_LOCAL_CUBE=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.BRDF_V_HEIGHT_CORRELATED=!0,this.MS_BRDF_ENERGY_CONSERVATION=!0,this.SPHERICAL_HARMONICS=!0,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!0,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=1,this.CONDUCTOR_SPECULAR_MODEL=1,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.NORMALXYSCALE=!0}},RN=class extends dp(Al){},Ne=class n extends RN{get geometryTangentAngle(){return Math.atan2(this.geometryTangent.y,this.geometryTangent.x)}set geometryTangentAngle(e){this.geometryTangent=new Fe(Math.cos(e),Math.sin(e))}get geometryCoatTangentAngle(){return Math.atan2(this.geometryCoatTangent.y,this.geometryCoatTangent.x)}set geometryCoatTangentAngle(e){this.geometryCoatTangent=new Fe(Math.cos(e),Math.sin(e))}get sssQuality(){return this._sssQuality}set sssQuality(e){this._sssQuality!==e&&(this._sssQuality=e,this.markAsDirty(1))}get sssIrradianceTexture(){return this._sssIrradianceTexture}set sssIrradianceTexture(e){this._sssIrradianceTexture!==e&&(this._sssIrradianceTexture=e,this._markAllSubMeshesAsTexturesDirty())}get sssDepthTexture(){return this._sssDepthTexture}set sssDepthTexture(e){this._sssDepthTexture!==e&&(this._sssDepthTexture=e,this._markAllSubMeshesAsTexturesDirty())}get hasTransparency(){return this.subsurfaceWeight>0||this.transmissionWeight>0}get hasScattering(){return this.transmissionWeight>0&&this.transmissionDepth>0&&!this.transmissionScatter.equals(pe.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_GLTF:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get backgroundRefractionTexture(){return this._backgroundRefractionTexture}set backgroundRefractionTexture(e){this._backgroundRefractionTexture=e,this._markAllSubMeshesAsTexturesDirty()}get refractionHighQualityBlur(){return this._refractionHighQualityBlur}set refractionHighQualityBlur(e){this._refractionHighQualityBlur!==e&&(this._refractionHighQualityBlur=e,this.markAsDirty(1))}get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get fuzzSampleNumber(){return this._fuzzSampleNumber}set fuzzSampleNumber(e){this._fuzzSampleNumber=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){var s;super(e,t,void 0,i||n.ForceGLSL),this._baseWeight=new si("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Ti("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new si("base_color",pe.White(),"vBaseColor",4),this._baseColorTexture=new Ti("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new si("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Ti("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new si("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Ti("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new si("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Ti("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new si("specular_color",pe.White(),"vSpecularColor",4),this._specularColorTexture=new Ti("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new si("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Ti("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new si("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Ti("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new si("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new si("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Ti("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new si("transmission_color",pe.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Ti("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new si("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Ti("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new si("transmission_scatter",pe.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Ti("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new si("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new si("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Ti("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new si("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new si("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Ti("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new si("subsurface_color",new pe(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Ti("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new si("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new si("subsurface_radius_scale",new pe(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Ti("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new si("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new si("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Ti("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new si("coat_color",pe.White(),"vCoatColor",3,0),this._coatColorTexture=new Ti("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new si("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Ti("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new si("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Ti("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new si("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new si("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Ti("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new si("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Ti("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new si("fuzz_color",pe.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Ti("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new si("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Ti("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new si("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Ti("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new si("geometry_tangent",new Fe(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Ti("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Ti("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new si("geometry_coat_tangent",new Fe(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Ti("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new si("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Ti("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new si("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Ti("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new si("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new si("emission_color",pe.Black(),"vEmissionColor",3),this._emissionColorTexture=new Ti("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new si("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Ti("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new si("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new si("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Ti("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new si("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Ti("ambient_occlusion","ambientOcclusion","AMBIENT_OCCLUSION"),this._sssQuality=n.SSS_QUALITY_MEDIUM,this._sssIrradianceTexture=null,this._sssDepthTexture=null,this._uniformsList={},this._uniformsArray=[],this._samplersList={},this._samplerDefines={},this.directIntensity=1,this.environmentIntensity=1,this.useSpecularWeightFromTextureAlpha=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._lightingInfos=new Ii(this.directIntensity,1,this.environmentIntensity,1),this._radianceTexture=null,this._useSpecularWeightFromAlpha=!1,this._useSpecularWeightFromSpecularColorTexture=!1,this._useSpecularRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessFromGreenChannel=!1,this._useGltfStyleAnisotropy=!1,this._useFuzzRoughnessFromTextureAlpha=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromBaseColorTexture=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallicFromMetallicTextureBlue=!1,this._useThinFilmThicknessFromTextureGreen=!1,this._useGeometryThicknessFromGreenChannel=!1,this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._environmentFuzzBRDFTexture=null,this._backgroundRefractionTexture=null,this._refractionHighQualityBlur=!0,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._fuzzSampleNumber=4,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Vi(16),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this._transparencyMode=Se.MATERIAL_OPAQUE,this.getScene()&&!((s=this.getScene())!=null&&s.getEngine().isWebGPU)&&this.getScene().getEngine().webGLVersion<2&&ee.Error("OpenPBRMaterial: WebGL 2.0 or above is required for this material."),n._noiseTextures[this.getScene().uniqueId]||(n._noiseTextures[this.getScene().uniqueId]=new ge(_e.GetAssetUrl("https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png"),this.getScene(),!1,!0,1),this.getScene().onDisposeObservable.addOnce(()=>{var a;(a=n._noiseTextures[this.getScene().uniqueId])==null||a.dispose(),delete n._noiseTextures[this.getScene().uniqueId]})),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=F8(this.getScene()),this._environmentFuzzBRDFTexture=IO(this.getScene()),this.prePassConfiguration=new Hs,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof si&&(this._propertyList[a]=o)}Object.keys(this._propertyList).forEach(a=>{let o=this._propertyList[a],l=this._uniformsList[o.targetUniformName];l?l.numComponents!==o.targetUniformComponentNum?ee.Error(`Uniform ${o.targetUniformName} already exists of size ${l.numComponents}, but trying to set it to ${o.targetUniformComponentNum}.`):l.requiredDefine!==o.requiredDefine&&(l.requiredDefine=void 0):(l=new Ib(o.targetUniformName,o.targetUniformComponentNum),l.requiredDefine=o.requiredDefine,this._uniformsList[o.targetUniformName]=l),l.firstLinkedKey===""&&(l.firstLinkedKey=o.name),l.linkedProperties[o.name]=o}),this._uniformsArray=Object.values(this._uniformsList),this._samplersList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof Ti&&(this._samplersList[a]=o)}for(let a in this._samplersList){let l=this._samplersList[a].textureDefine;this._samplerDefines[l]={type:"boolean",default:!1},this._samplerDefines[l+"DIRECTUV"]={type:"number",default:0},this._samplerDefines[l+"_GAMMA"]={type:"boolean",default:!1}}this._baseWeight,this._baseWeightTexture,this._baseColor,this._baseColorTexture,this._baseDiffuseRoughness,this._baseDiffuseRoughnessTexture,this._baseMetalness,this._baseMetalnessTexture,this._specularWeight,this._specularWeightTexture,this._specularColor,this._specularColorTexture,this._specularRoughness,this._specularIor,this._specularRoughnessTexture,this._specularRoughnessAnisotropy,this._specularRoughnessAnisotropyTexture,this._transmissionWeight,this._transmissionWeightTexture,this._transmissionColor,this._transmissionColorTexture,this._transmissionDepth,this._transmissionDepthTexture,this._transmissionScatter,this._transmissionScatterTexture,this._transmissionScatterAnisotropy,this._transmissionDispersionScale,this._transmissionDispersionScaleTexture,this._transmissionDispersionAbbeNumber,this._subsurfaceWeight,this._subsurfaceWeightTexture,this._subsurfaceColor,this._subsurfaceColorTexture,this._subsurfaceRadius,this._subsurfaceRadiusScale,this._subsurfaceRadiusScaleTexture,this._subsurfaceScatterAnisotropy,this._coatWeight,this._coatWeightTexture,this._coatColor,this._coatColorTexture,this._coatRoughness,this._coatRoughnessTexture,this._coatRoughnessAnisotropy,this._coatRoughnessAnisotropyTexture,this._coatIor,this._coatDarkening,this._coatDarkeningTexture,this._fuzzWeight,this._fuzzWeightTexture,this._fuzzColor,this._fuzzColorTexture,this._fuzzRoughness,this._fuzzRoughnessTexture,this._geometryThinWalled,this._geometryNormalTexture,this._geometryTangent,this._geometryTangentTexture,this._geometryCoatNormalTexture,this._geometryCoatTangent,this._geometryCoatTangentTexture,this._geometryOpacity,this._geometryOpacityTexture,this._geometryThickness,this._geometryThicknessTexture,this._thinFilmWeight,this._thinFilmWeightTexture,this._thinFilmThickness,this._thinFilmThicknessMin,this._thinFilmThicknessTexture,this._thinFilmIor,this._emissionLuminance,this._emissionColor,this._emissionColorTexture,this._ambientOcclusionTexture}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"OpenPBRMaterial"}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}_shouldUseAlphaFromBaseColorTexture(){return this._hasAlphaChannel()&&this._transparencyMode!==Se.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.OpenPBRMaterial",e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new Rv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Rp.effect=o,Rp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Rp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new Rv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){for(let m in this._samplersList){let _=this._samplersList[m];if(_.value&&!_.value.isReadyOrNotBlocking())return!1}let u=this._getRadianceTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&ce.RefractionTextureEnabled&&!this._backgroundRefractionTexture.isReadyOrNotBlocking()||n._noiseTextures[a.uniqueId]&&!n._noiseTextures[a.uniqueId].isReady()||this._sssIrradianceTexture&&this._sssDepthTexture&&(!this._sssIrradianceTexture.isReady()||!this._sssDepthTexture.isReady()))return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED){for(let u=0;u{e.addUniform(t.name,t.numComponents)}),Object.values(this._samplersList).forEach(t=>{e.addUniform(t.samplerInfoName,2),e.addUniform(t.samplerMatrixName,16)}),super.buildUniformLayout()}bindPropertiesForSubMesh(e,t,i,r){if(this.geometryThickness===0)e.updateFloat("vGeometryThickness",0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat("vGeometryThickness",this.geometryThickness*s)}}bindForSubMesh(e,t,i){var d;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);Vs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Wf(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let h=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value&&(f.updateFloat2(_.samplerInfoName,_.value.coordinatesIndex,_.value.level),ni(_.value,f,_.samplerPrefix))}(this.geometryNormalTexture||this.geometryCoatNormalTexture)&&(r._mirroredCameraPosition?f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),Fm(r,s,f,pe.White(),h,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let u=this._uniformsArray;for(let m=0,_=u.length;m<_;m++){let p=u[m];p.requiredDefine!==void 0&&!s[p.requiredDefine]||(p.numComponents===4?(p.populateVectorFromLinkedProperties($.Vector4[0]),f.updateVector4(p.name,$.Vector4[0])):p.numComponents===3?(p.populateVectorFromLinkedProperties($.Vector3[0]),f.updateVector3(p.name,$.Vector3[0])):p.numComponents===2?(p.populateVectorFromLinkedProperties($.Vector2[0]),f.updateFloat2(p.name,$.Vector2[0].x,$.Vector2[0].y)):p.numComponents===1&&f.updateFloat(p.name,p.linkedProperties[p.firstLinkedKey].value))}this._lightingInfos.x=this.directIntensity,this._lightingInfos.y=this.emissionLuminance,this._lightingInfos.z=this.environmentIntensity*r.environmentIntensity,this._lightingInfos.w=1,f.updateVector4("vLightingIntensity",this._lightingInfos),f.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}if(r.texturesEnabled){for(let u in this._samplersList){let m=this._samplersList[u];m.value&&f.setTexture(m.samplerName,m.value)}if(Ox(r,s,f,h,this.realTimeFiltering),s.ENVIRONMENTBRDF&&f.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),s.FUZZENVIRONMENTBRDF&&f.setTexture("environmentFuzzBrdfSampler",this._environmentFuzzBRDFTexture),s.REFRACTED_BACKGROUND&&(f.setTexture("backgroundRefractionSampler",this._backgroundRefractionTexture),f.updateMatrix("backgroundRefractionMatrix",this._backgroundRefractionTexture.getReflectionTextureMatrix()),$.Vector3[1].set(Math.log2(this._backgroundRefractionTexture.getSize().width),0,0),f.updateVector3("vBackgroundRefractionInfos",$.Vector3[1])),(s.ANISOTROPIC||s.FUZZ||s.REFRACTED_BACKGROUND||s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&f.setTexture("blueNoiseSampler",n._noiseTextures[this.getScene().uniqueId]),s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&this.sssIrradianceTexture&&this.sssDepthTexture){let u=this.sssIrradianceTexture.getSize().width,m=this.sssIrradianceTexture.getSize().height;f.setTexture("sceneIrradianceSampler",this.sssIrradianceTexture),f.setTexture("sceneDepthSampler",this.sssDepthTexture),f.updateFloat2("renderTargetSize",u,m)}}this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);this.bindPropertiesForSubMesh(this._uniformBuffer,r,r.getEngine(),i),(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,this._activeEffect,s,this._maxSimultaneousLights),this.bindView(a),Pf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&zn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((d=t.bakedVertexAnimationManager)==null||d.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Cf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),f.update()}getAnimatables(){let e=super.getAnimatables();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&i.value.animations&&i.value.animations.length>0&&e.push(i.value)}return this._radianceTexture&&this._radianceTexture.animations&&this._radianceTexture.animations.length>0&&e.push(this._radianceTexture),e}getActiveTextures(){let e=super.getActiveTextures();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&e.push(i.value)}return this._radianceTexture&&e.push(this._radianceTexture),e}hasTexture(e){if(super.hasTexture(e))return!0;for(let t in this._samplersList)if(this._samplersList[t].value===e)return!0;return this._radianceTexture===e}setPrePassRenderer(){return!1}dispose(e,t){var i,r;if(this._breakShaderLoadedCheck=!0,t){this._environmentBRDFTexture&&this.getScene().openPBREnvironmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),this._environmentFuzzBRDFTexture&&this.getScene().environmentFuzzBRDFTexture!==this._environmentFuzzBRDFTexture&&this._environmentFuzzBRDFTexture.dispose(),this._backgroundRefractionTexture=null;for(let s in this._samplersList)(i=this._samplersList[s].value)==null||i.dispose();(r=this._radianceTexture)==null||r.dispose()}this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}_getRadianceTexture(){return this._radianceTexture?this._radianceTexture:this.getScene().environmentTexture}_prepareEffect(e,t,i,r=null,s=null,a=null,o=null){if(this._prepareDefines(e,t,i,a,o),!i.isDirty)return null;i.markAsProcessed();let c=this.getScene().getEngine(),f=new qn,d=0;i.USESPHERICALINVERTEX&&f.addFallback(d++,"USESPHERICALINVERTEX"),i.FOG&&f.addFallback(d,"FOG"),i.SPECULARAA&&f.addFallback(d,"SPECULARAA"),i.POINTSIZE&&f.addFallback(d,"POINTSIZE"),i.LOGARITHMICDEPTH&&f.addFallback(d,"LOGARITHMICDEPTH"),i.PARALLAX&&f.addFallback(d,"PARALLAX"),i.PARALLAX_RHS&&f.addFallback(d,"PARALLAX_RHS"),i.PARALLAXOCCLUSION&&f.addFallback(d++,"PARALLAXOCCLUSION"),i.ENVIRONMENTBRDF&&f.addFallback(d++,"ENVIRONMENTBRDF"),i.TANGENT&&f.addFallback(d++,"TANGENT"),d=km(i,f,this._maxSimultaneousLights,d),i.SPECULARTERM&&f.addFallback(d++,"SPECULARTERM"),i.USESPHERICALFROMREFLECTIONMAP&&f.addFallback(d++,"USESPHERICALFROMREFLECTIONMAP"),i.USEIRRADIANCEMAP&&f.addFallback(d++,"USEIRRADIANCEMAP"),i.NORMAL&&f.addFallback(d++,"NORMAL"),i.VERTEXCOLOR&&f.addFallback(d++,"VERTEXCOLOR"),i.MORPHTARGETS&&f.addFallback(d++,"MORPHTARGETS"),i.MULTIVIEW&&f.addFallback(0,"MULTIVIEW");let h=[D.PositionKind];i.NORMAL&&h.push(D.NormalKind),i.TANGENT&&h.push(D.TangentKind);for(let E=1;E<=6;++E)i["UV"+E]&&h.push(`uv${E===1?"":E}`);i.VERTEXCOLOR&&h.push(D.ColorKind),Vm(h,e,i,f),Gm(h,i),gh(h,e,i),Bm(h,e,i);let u="openpbr",m=["world","view","viewProjection","projection","vEyePosition","inverseProjection","renderTargetSize","vLightsType","visibility","vFogInfos","vFogColor","pointSize","mBones","normalMatrix","vLightingIntensity","logarithmicDepthConstant","vTangentSpaceParams","boneTextureInfo","vDebugMode","morphTargetTextureInfo","morphTargetTextureIndices","cameraInfo","backgroundRefractionMatrix","vBackgroundRefractionInfos"];for(let E in this._uniformsList)m.push(E);let _=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&_.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&_.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&_.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(_.push("sceneIrradianceSampler"),_.push("sceneDepthSampler"));for(let E in this._samplersList){let T=this._samplersList[E];_.push(T.samplerName),m.push(T.samplerInfoName),m.push(T.samplerMatrixName)}Of(m,_,!0);let p=["Material","Scene","Mesh"],g={maxSimultaneousLights:this._maxSimultaneousLights,maxSimultaneousMorphTargets:i.NUM_MORPH_INFLUENCERS};if(this._eventInfo.fallbacks=f,this._eventInfo.fallbackRank=d,this._eventInfo.defines=i,this._eventInfo.uniforms=m,this._eventInfo.attributes=h,this._eventInfo.samplers=_,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=g,this._callbackPluginEventGeneric(128,this._eventInfo),Zn.AddUniformsAndSamplers(m,_),Hs.AddUniforms(m),Hs.AddSamplers(_),Wn(m),this._useVertexPulling){let E=t==null?void 0:t.geometry;E&&(this._vertexPullingMetadata=kf(E),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((T,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;kt&&(kt.PrepareUniforms(m,i),kt.PrepareSamplers(_,i)),Zm({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let x=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(P6(),C6)),Promise.resolve().then(()=>(I7(),M7))]):await Promise.all([Promise.resolve().then(()=>(B7(),F7)),Promise.resolve().then(()=>(w9(),N9))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();zm(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Km(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(o,i,this.canRenderToMRT&&!c),jm(o,i,c),Zn.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let h=1;h<=6;++h)i["MAINUV"+h]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value?(ri(_.value,i,_.textureDefine),i[_.textureDefine+"_GAMMA"]=_.value.gammaSpace):i[_.textureDefine]=!1}let h=this._getRadianceTexture(),u=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(Lf(o,h,i,this.realTimeFiltering,this.realTimeFilteringQuality,!u),this._baseMetalnessTexture&&(i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed),i.SPECULAR_WEIGHT_IN_ALPHA=this._useSpecularWeightFromAlpha,i.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=this._useSpecularWeightFromSpecularColorTexture,i.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useSpecularRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useCoatRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=this._useCoatRoughnessFromGreenChannel,i.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=this._useRoughnessFromMetallicTextureGreen,i.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=this._useFuzzRoughnessFromTextureAlpha,i.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=this._useMetallicFromMetallicTextureBlue,i.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=this._useThinFilmThicknessFromTextureGreen,i.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=this._useGeometryThicknessFromGreenChannel,this.geometryNormalTexture?(this._useParallax&&this.baseColorTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._environmentFuzzBRDFTexture?i.FUZZENVIRONMENTBRDF=!0:i.FUZZENVIRONMENTBRDF=!1,this.hasTransparency){i.REFRACTED_BACKGROUND=!!this._backgroundRefractionTexture&&ce.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=ce.RefractionTextureEnabled,i.REFRACTED_ENVIRONMENT_OPPOSITEZ=this.getScene().useRightHandedSystem?!m.invertZ:m.invertZ,i.REFRACTED_ENVIRONMENT_LOCAL_CUBE=m.isCube&&m.boundingBoxSize):i.REFRACTED_ENVIRONMENT=!1}else i.REFRACTED_BACKGROUND=!1,i.REFRACTED_LIGHTS=!1,i.REFRACTED_ENVIRONMENT=!1;this._shouldUseAlphaFromBaseColorTexture()?i.ALPHA_FROM_BASE_COLOR_TEXTURE=!0:i.ALPHA_FROM_BASE_COLOR_TEXTURE=!1}this._lightFalloff===Se.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Se.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e)),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,(this.specularRoughnessAnisotropy>0||this.coatRoughnessAnisotropy>0)&&n._noiseTextures[o.uniqueId]&&ce.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(D.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._useGltfStyleAnisotropy&&(i.USE_GLTF_STYLE_ANISOTROPY=!0),i.ANISOTROPIC_BASE=this.specularRoughnessAnisotropy>0,i.ANISOTROPIC_COAT=this.coatRoughnessAnisotropy>0):(i.ANISOTROPIC=!1,i.USE_GLTF_STYLE_ANISOTROPY=!1,i.ANISOTROPIC_BASE=!1,i.ANISOTROPIC_COAT=!1),i.THIN_FILM=this.thinFilmWeight>0,i.IRIDESCENCE=this.thinFilmWeight>0,i.DISPERSION=this.transmissionDispersionScale>0,i.SCATTERING=this.hasScattering;let f=[8,16,32];if(i.SSS_SAMPLE_COUNT=(d=f[this._sssQuality])!=null?d:16,i.TRANSMISSION_SLAB=this.transmissionWeight>0,i.TRANSMISSION_SLAB_VOLUME=this.transmissionWeight>0&&this.transmissionDepth>0,i.SUBSURFACE_SLAB=this.subsurfaceWeight>0,!i.PREPASS&&(i.SUBSURFACE_SLAB||i.TRANSMISSION_SLAB_VOLUME)){let h=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(ps.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(ps.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,h&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&ce.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(D.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=IO(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(Wm(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(D.NormalKind),i.DEBUGMODE=this._debugMode),Xm(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),Ym(e,i,!0,!0,!0,this._transparencyMode!==Se.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};Ne.SSS_QUALITY_LOW=0;Ne.SSS_QUALITY_MEDIUM=1;Ne.SSS_QUALITY_HIGH=2;Ne._noiseTextures={};Ne.ForceGLSL=!1;P([ut("_markAllSubMeshesAsTexturesDirty","baseWeight")],Ne.prototype,"_baseWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],Ne.prototype,"_baseWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseColor")],Ne.prototype,"_baseColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],Ne.prototype,"_baseColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],Ne.prototype,"_baseDiffuseRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],Ne.prototype,"_baseDiffuseRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseMetalness")],Ne.prototype,"_baseMetalness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],Ne.prototype,"_baseMetalnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularWeight")],Ne.prototype,"_specularWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],Ne.prototype,"_specularWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularColor")],Ne.prototype,"_specularColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],Ne.prototype,"_specularColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughness")],Ne.prototype,"_specularRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],Ne.prototype,"_specularRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],Ne.prototype,"_specularRoughnessAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],Ne.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularIor")],Ne.prototype,"_specularIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],Ne.prototype,"_transmissionWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],Ne.prototype,"_transmissionWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionColor")],Ne.prototype,"_transmissionColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],Ne.prototype,"_transmissionColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],Ne.prototype,"_transmissionDepth",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],Ne.prototype,"_transmissionDepthTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],Ne.prototype,"_transmissionScatter",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],Ne.prototype,"_transmissionScatterTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],Ne.prototype,"_transmissionScatterAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],Ne.prototype,"_transmissionDispersionScale",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],Ne.prototype,"_transmissionDispersionScaleTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],Ne.prototype,"_transmissionDispersionAbbeNumber",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],Ne.prototype,"_subsurfaceWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],Ne.prototype,"_subsurfaceWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],Ne.prototype,"_subsurfaceColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],Ne.prototype,"_subsurfaceColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],Ne.prototype,"_subsurfaceRadius",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],Ne.prototype,"_subsurfaceRadiusScale",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],Ne.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],Ne.prototype,"_subsurfaceScatterAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatWeight")],Ne.prototype,"_coatWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],Ne.prototype,"_coatWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatColor")],Ne.prototype,"_coatColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],Ne.prototype,"_coatColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughness")],Ne.prototype,"_coatRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],Ne.prototype,"_coatRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],Ne.prototype,"_coatRoughnessAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],Ne.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatIor")],Ne.prototype,"_coatIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatDarkening")],Ne.prototype,"_coatDarkening",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],Ne.prototype,"_coatDarkeningTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],Ne.prototype,"_fuzzWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],Ne.prototype,"_fuzzWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzColor")],Ne.prototype,"_fuzzColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],Ne.prototype,"_fuzzColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],Ne.prototype,"_fuzzRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],Ne.prototype,"_fuzzRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],Ne.prototype,"_geometryThinWalled",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],Ne.prototype,"_geometryNormalTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryTangent")],Ne.prototype,"_geometryTangent",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],Ne.prototype,"_geometryTangentTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],Ne.prototype,"_geometryCoatNormalTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],Ne.prototype,"_geometryCoatTangent",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],Ne.prototype,"_geometryCoatTangentTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],Ne.prototype,"_geometryOpacity",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],Ne.prototype,"_geometryOpacityTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThickness")],Ne.prototype,"_geometryThickness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],Ne.prototype,"_geometryThicknessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],Ne.prototype,"_emissionLuminance",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionColor")],Ne.prototype,"_emissionColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],Ne.prototype,"_emissionColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],Ne.prototype,"_thinFilmWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],Ne.prototype,"_thinFilmWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],Ne.prototype,"_thinFilmThickness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],Ne.prototype,"_thinFilmThicknessMin",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],Ne.prototype,"_thinFilmThicknessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],Ne.prototype,"_thinFilmIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],Ne.prototype,"_ambientOcclusionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientInGrayScale",void 0);P([F()],Ne.prototype,"usePhysicalLightFalloff",null);P([F()],Ne.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"debugMode",void 0);P([F()],Ne.prototype,"transparencyMode",null);Ft("BABYLON.OpenPBRMaterial",Ne)});var U9={};Be(U9,{OpenPBRMaterialLoadingAdapter:()=>bN});var bN,V9=I(()=>{Ht();bN=class{constructor(e){this._diffuseTransmissionTint=pe.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){}get alphaCutOff(){return .5}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return!1}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){let t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var t;let e=this._material.ambientOcclusionTexture;return(t=e==null?void 0:e.level)!=null?t:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}set coatDarkening(e){this._material.coatDarkening=e}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||this._material.transmissionDepth!==0?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(pe.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalize(){(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(pe.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(pe.White())||this.baseColorTexture)&&(this._material.coatWeight=this.subsurfaceWeight,this._material.coatWeightTexture=this.subsurfaceWeightTexture,this._material.coatColor=this._diffuseTransmissionTint,this._material.coatColorTexture=this._diffuseTransmissionTintTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture,this._material.specularRoughness=1,this._material.specularRoughnessTexture=null)),this.transmissionWeight>0&&(this._material.geometryThinWalled||this._material.transmissionDepth===0?(this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture):this._material.coatWeight==0&&(!this.baseColor.equals(pe.White())||this.baseColorTexture!==null)&&(this._material.coatWeight=this.transmissionWeight,this._material.coatWeightTexture=this.transmissionWeightTexture,this._material.coatColor=this.baseColor,this._material.coatColorTexture=this.baseColorTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture))}}});var MN,Pr,G9=I(()=>{Gt();Vt();Ga();Xf();MN=class extends Mr{constructor(){super(...arguments),this.BRDF_V_HEIGHT_CORRELATED=!1,this.MS_BRDF_ENERGY_CONSERVATION=!1,this.SPHERICAL_HARMONICS=!1,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!1,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=0,this.CONDUCTOR_SPECULAR_MODEL=0}},Pr=class n extends Hr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new MN,t),this._useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this.useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this._useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this.useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this._useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this.useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this._useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this.useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this._mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this.mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this._useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this.useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this._baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this.baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this._dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this.dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this._conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this.conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16],this._enable(!0)}prepareDefines(e){e.BRDF_V_HEIGHT_CORRELATED=this._useSmithVisibilityHeightCorrelated,e.MS_BRDF_ENERGY_CONSERVATION=this._useEnergyConservation&&this._useSmithVisibilityHeightCorrelated,e.SPHERICAL_HARMONICS=this._useSphericalHarmonics,e.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=this._useSpecularGlossinessInputEnergyConservation,e.MIX_IBL_RADIANCE_WITH_IRRADIANCE=this._mixIblRadianceWithIrradiance&&!this._material._disableLighting,e.LEGACY_SPECULAR_ENERGY_CONSERVATION=this._useLegacySpecularEnergyConservation,e.BASE_DIFFUSE_MODEL=this._baseDiffuseModel,e.DIELECTRIC_SPECULAR_MODEL=this._dielectricSpecularModel,e.CONDUCTOR_SPECULAR_MODEL=this._conductorSpecularModel}getClassName(){return"PBRBRDFConfiguration"}};Pr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Pr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Pr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Pr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Pr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Pr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Pr.DEFAULT_DIFFUSE_MODEL=0;Pr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Pr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSphericalHarmonics",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"conductorSpecularModel",void 0)});var IN,ln,k9=I(()=>{Gt();Vt();Ht();Ua();Xf();Ga();Xn();IN=class extends Mr{constructor(){super(...arguments),this.CLEARCOAT=!1,this.CLEARCOAT_DEFAULTIOR=!1,this.CLEARCOAT_TEXTURE=!1,this.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this.CLEARCOAT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,this.CLEARCOAT_BUMP=!1,this.CLEARCOAT_BUMPDIRECTUV=0,this.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,this.CLEARCOAT_REMAP_F0=!1,this.CLEARCOAT_TINT=!1,this.CLEARCOAT_TINT_TEXTURE=!1,this.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TINT_GAMMATEXTURE=!1}},ln=class n extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new IN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.roughness=0,this._indexOfRefraction=n._DefaultIndexOfRefraction,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._textureRoughness=null,this.textureRoughness=null,this._remapF0OnInterfaceChange=!0,this.remapF0OnInterfaceChange=!0,this._bumpTexture=null,this.bumpTexture=null,this._isTintEnabled=!1,this.isTintEnabled=!1,this.tintColor=pe.White(),this.tintColorAtDistance=1,this.tintThickness=1,this._tintTexture=null,this.tintTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){if(!this._isEnabled)return!0;let r=this._material._disableBumpMap;return!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&ce.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&!this._tintTexture.isReadyOrNotBlocking()))}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.CLEARCOAT=!0,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e.CLEARCOAT_REMAP_F0=this._remapF0OnInterfaceChange,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled?ri(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&ce.ClearCoatTextureEnabled?ri(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&ce.ClearCoatBumpTextureEnabled?ri(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&ce.ClearCoatTintTextureEnabled?(ri(this._tintTexture,e,"CLEARCOAT_TINT_TEXTURE"),e.CLEARCOAT_TINT_GAMMATEXTURE=this._tintTexture.gammaSpace):e.CLEARCOAT_TINT_TEXTURE=!1):(e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1))):(e.CLEARCOAT=!1,e.CLEARCOAT_TEXTURE=!1,e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.CLEARCOAT_DEFAULTIOR=!1,e.CLEARCOAT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,e.CLEARCOAT_BUMPDIRECTUV=0,e.CLEARCOAT_REMAP_F0=!1,e.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TINT_GAMMATEXTURE=!1)}bindForSubMesh(e,t,i,r){var f,d,h,u,m,_,p,g;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material._disableBumpMap,l=this._material._invertNormalMapX,c=this._material._invertNormalMapY;if(!e.useUbo||!a||!e.isSync){(this._texture||this._textureRoughness)&&ce.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(u=(h=this._texture)==null?void 0:h.level)!=null?u:0,(_=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?_:0,(g=(p=this._textureRoughness)==null?void 0:p.level)!=null?g:0),this._texture&&ni(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ni(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),ni(this._bumpTexture,e,"clearCoatBump"),t._mirroredCameraPosition?e.updateFloat2("vClearCoatTangentSpaceParams",l?1:-1,c?1:-1):e.updateFloat2("vClearCoatTangentSpaceParams",l?-1:1,c?-1:1)),this._tintTexture&&ce.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),ni(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,x=1+this._indexOfRefraction,S=Math.pow(-v/x,2),E=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",S,E,v,x),this._isTintEnabled&&(e.updateFloat4("vClearCoatTintParams",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintThickness)),e.updateFloat("clearCoatColorAtDistance",Math.max(1e-5,this.tintColorAtDistance)))}t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&e.setTexture("clearCoatTintSampler",this._tintTexture))}hasTexture(e){return this._texture===e||this._textureRoughness===e||this._bumpTexture===e||this._tintTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness),this._bumpTexture&&e.push(this._bumpTexture),this._tintTexture&&e.push(this._tintTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._tintTexture&&this._tintTexture.animations&&this._tintTexture.animations.length>0&&e.push(this._tintTexture)}dispose(e){var t,i,r,s;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose(),(r=this._bumpTexture)==null||r.dispose(),(s=this._tintTexture)==null||s.dispose())}getClassName(){return"PBRClearCoatConfiguration"}addFallbacks(e,t,i){return e.CLEARCOAT_BUMP&&t.addFallback(i++,"CLEARCOAT_BUMP"),e.CLEARCOAT_TINT&&t.addFallback(i++,"CLEARCOAT_TINT"),e.CLEARCOAT&&t.addFallback(i++,"CLEARCOAT"),i}getSamplers(e){e.push("clearCoatSampler","clearCoatRoughnessSampler","clearCoatBumpSampler","clearCoatTintSampler")}getUniforms(){return{ubo:[{name:"vClearCoatParams",size:2,type:"vec2"},{name:"vClearCoatRefractionParams",size:4,type:"vec4"},{name:"vClearCoatInfos",size:4,type:"vec4"},{name:"clearCoatMatrix",size:16,type:"mat4"},{name:"clearCoatRoughnessMatrix",size:16,type:"mat4"},{name:"vClearCoatBumpInfos",size:2,type:"vec2"},{name:"vClearCoatTangentSpaceParams",size:2,type:"vec2"},{name:"clearCoatBumpMatrix",size:16,type:"mat4"},{name:"vClearCoatTintParams",size:4,type:"vec4"},{name:"clearCoatColorAtDistance",size:1,type:"float"},{name:"vClearCoatTintInfos",size:2,type:"vec2"},{name:"clearCoatTintMatrix",size:16,type:"mat4"}]}}};ln._DefaultIndexOfRefraction=1.5;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"isEnabled",void 0);P([F()],ln.prototype,"intensity",void 0);P([F()],ln.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"indexOfRefraction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"useRoughnessFromMainTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"remapF0OnInterfaceChange",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"bumpTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"isTintEnabled",void 0);P([Tr()],ln.prototype,"tintColor",void 0);P([F()],ln.prototype,"tintColorAtDistance",void 0);P([F()],ln.prototype,"tintThickness",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"tintTexture",void 0)});var yN,Xs,W9=I(()=>{Gt();Vt();Ua();Xf();Ga();Xn();yN=class extends Mr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},Xs=class n extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new yN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.minimumThickness=n._DefaultMinimumThickness,this.maximumThickness=n._DefaultMaximumThickness,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._thicknessTexture=null,this.thicknessTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&ce.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled?ri(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&ce.IridescenceTextureEnabled?ri(this._thicknessTexture,e,"IRIDESCENCE_THICKNESS_TEXTURE"):e.IRIDESCENCE_THICKNESS_TEXTURE=!1)):(e.IRIDESCENCE=!1,e.IRIDESCENCE_TEXTURE=!1,e.IRIDESCENCE_THICKNESS_TEXTURE=!1,e.IRIDESCENCE_TEXTUREDIRECTUV=0,e.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0)}bindForSubMesh(e,t){var r,s,a,o,l,c,f,d;if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&((this._texture||this._thicknessTexture)&&ce.IridescenceTextureEnabled&&(e.updateFloat4("vIridescenceInfos",(s=(r=this._texture)==null?void 0:r.coordinatesIndex)!=null?s:0,(o=(a=this._texture)==null?void 0:a.level)!=null?o:0,(c=(l=this._thicknessTexture)==null?void 0:l.coordinatesIndex)!=null?c:0,(d=(f=this._thicknessTexture)==null?void 0:f.level)!=null?d:0),this._texture&&ni(this._texture,e,"iridescence"),this._thicknessTexture&&ni(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceThicknessSampler",this._thicknessTexture))}hasTexture(e){return this._texture===e||this._thicknessTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._thicknessTexture&&e.push(this._thicknessTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._thicknessTexture)==null||i.dispose())}getClassName(){return"PBRIridescenceConfiguration"}addFallbacks(e,t,i){return e.IRIDESCENCE&&t.addFallback(i++,"IRIDESCENCE"),i}getSamplers(e){e.push("iridescenceSampler","iridescenceThicknessSampler")}getUniforms(){return{ubo:[{name:"vIridescenceParams",size:4,type:"vec4"},{name:"vIridescenceInfos",size:4,type:"vec4"},{name:"iridescenceMatrix",size:16,type:"mat4"},{name:"iridescenceThicknessMatrix",size:16,type:"mat4"}]}}};Xs._DefaultMinimumThickness=100;Xs._DefaultMaximumThickness=400;Xs._DefaultIndexOfRefraction=1.3;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"isEnabled",void 0);P([F()],Xs.prototype,"intensity",void 0);P([F()],Xs.prototype,"minimumThickness",void 0);P([F()],Xs.prototype,"maximumThickness",void 0);P([F()],Xs.prototype,"indexOfRefraction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"texture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"thicknessTexture",void 0)});var CN,Nc,H9=I(()=>{Gt();Vt();Wi();ke();Ua();Xf();Ga();Xn();CN=class extends Mr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Nc=class extends Hr{set angle(e){this.direction.x=Math.cos(e),this.direction.y=Math.sin(e)}get angle(){return Math.atan2(this.direction.y,this.direction.x)}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markAllSubMeshesAsMiscDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRAnisotropic",110,new CN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.direction=new Fe(1,0),this._texture=null,this.texture=null,this._legacy=!1,this.legacy=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(D.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.AnisotropicTextureEnabled?ri(this._texture,e,"ANISOTROPIC_TEXTURE"):e.ANISOTROPIC_TEXTURE=!1),e._areMiscDirty&&(e.ANISOTROPIC_LEGACY=this._legacy)):(e.ANISOTROPIC=!1,e.ANISOTROPIC_TEXTURE=!1,e.ANISOTROPIC_TEXTUREDIRECTUV=0,e.ANISOTROPIC_LEGACY=!1)}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&(this._texture&&ce.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),ni(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&e.setTexture("anisotropySampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){e&&this._texture&&this._texture.dispose()}getClassName(){return"PBRAnisotropicConfiguration"}addFallbacks(e,t,i){return e.ANISOTROPIC&&t.addFallback(i++,"ANISOTROPIC"),i}getSamplers(e){e.push("anisotropySampler")}getUniforms(){return{ubo:[{name:"vAnisotropy",size:3,type:"vec3"},{name:"vAnisotropyInfos",size:2,type:"vec2"},{name:"anisotropyMatrix",size:16,type:"mat4"}]}}parse(e,t,i){super.parse(e,t,i),e.legacy===void 0&&(this.legacy=!0)}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Nc.prototype,"isEnabled",void 0);P([F()],Nc.prototype,"intensity",void 0);P([vm()],Nc.prototype,"direction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Nc.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Nc.prototype,"legacy",void 0)});var PN,da,z9=I(()=>{Gt();Vt();Ht();Ua();Xf();Ga();Xn();PN=class extends Mr{constructor(){super(...arguments),this.SHEEN=!1,this.SHEEN_TEXTURE=!1,this.SHEEN_GAMMATEXTURE=!1,this.SHEEN_TEXTURE_ROUGHNESS=!1,this.SHEEN_TEXTUREDIRECTUV=0,this.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0,this.SHEEN_LINKWITHALBEDO=!1,this.SHEEN_ROUGHNESS=!1,this.SHEEN_ALBEDOSCALING=!1,this.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1}},da=class extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new PN,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=pe.White(),this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._roughness=null,this.roughness=null,this._textureRoughness=null,this.textureRoughness=null,this._albedoScaling=!1,this.albedoScaling=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.SheenTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.SHEEN=!0,e.SHEEN_LINKWITHALBEDO=this._linkSheenWithAlbedo,e.SHEEN_ROUGHNESS=this._roughness!==null,e.SHEEN_ALBEDOSCALING=this._albedoScaling,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled?(ri(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&ce.SheenTextureEnabled?ri(this._textureRoughness,e,"SHEEN_TEXTURE_ROUGHNESS"):e.SHEEN_TEXTURE_ROUGHNESS=!1)):(e.SHEEN=!1,e.SHEEN_TEXTURE=!1,e.SHEEN_TEXTURE_ROUGHNESS=!1,e.SHEEN_LINKWITHALBEDO=!1,e.SHEEN_ROUGHNESS=!1,e.SHEEN_ALBEDOSCALING=!1,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.SHEEN_GAMMATEXTURE=!1,e.SHEEN_TEXTUREDIRECTUV=0,e.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0)}bindForSubMesh(e,t,i,r){var o,l,c,f,d,h,u,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&ce.SheenTextureEnabled&&(e.updateFloat4("vSheenInfos",(l=(o=this._texture)==null?void 0:o.coordinatesIndex)!=null?l:0,(f=(c=this._texture)==null?void 0:c.level)!=null?f:0,(h=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?h:0,(m=(u=this._textureRoughness)==null?void 0:u.level)!=null?m:0),this._texture&&ni(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ni(this._textureRoughness,e,"sheenRoughness")),e.updateFloat4("vSheenColor",this.color.r,this.color.g,this.color.b,this.intensity),this._roughness!==null&&e.updateFloat("vSheenRoughness",this._roughness)),t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.SheenTextureEnabled&&e.setTexture("sheenRoughnessSampler",this._textureRoughness))}hasTexture(e){return this._texture===e||this._textureRoughness===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose())}getClassName(){return"PBRSheenConfiguration"}addFallbacks(e,t,i){return e.SHEEN&&t.addFallback(i++,"SHEEN"),i}getSamplers(e){e.push("sheenSampler","sheenRoughnessSampler")}getUniforms(){return{ubo:[{name:"vSheenColor",size:4,type:"vec4"},{name:"vSheenRoughness",size:1,type:"float"},{name:"vSheenInfos",size:4,type:"vec4"},{name:"sheenMatrix",size:16,type:"mat4"},{name:"sheenRoughnessMatrix",size:16,type:"mat4"}]}}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"isEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"linkSheenWithAlbedo",void 0);P([F()],da.prototype,"intensity",void 0);P([Tr()],da.prototype,"color",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"useRoughnessFromMainTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"roughness",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"albedoScaling",void 0)});var DN,Ai,X9=I(()=>{Gt();Vt();Ht();Ua();ke();Xf();Ga();Xn();DN=class extends Mr{constructor(){super(...arguments),this.SUBSURFACE=!1,this.SS_REFRACTION=!1,this.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_TRANSLUCENCY=!1,this.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_SCATTERING=!1,this.SS_DISPERSION=!1,this.SS_THICKNESSANDMASK_TEXTURE=!1,this.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,this.SS_HAS_THICKNESS=!1,this.SS_REFRACTIONINTENSITY_TEXTURE=!1,this.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,this.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,this.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,this.SS_REFRACTIONMAP_3D=!1,this.SS_REFRACTIONMAP_OPPOSITEZ=!1,this.SS_LODINREFRACTIONALPHA=!1,this.SS_GAMMAREFRACTION=!1,this.SS_RGBDREFRACTION=!1,this.SS_LINEARSPECULARREFRACTION=!1,this.SS_LINKREFRACTIONTOTRANSPARENCY=!1,this.SS_ALBEDOFORREFRACTIONTINT=!1,this.SS_ALBEDOFORTRANSLUCENCYTINT=!1,this.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.SS_USE_THICKNESS_AS_DEPTH=!1,this.SS_USE_GLTF_TEXTURES=!1,this.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1,this.SS_TRANSLUCENCY_LEGACY=!1}},Ai=class n extends Hr{get scatteringDiffusionProfile(){return this._scene.subSurfaceConfiguration?this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex]:null}set scatteringDiffusionProfile(e){this._scene.enableSubSurfaceForPrePass()&&e&&(this._scatteringDiffusionProfileIndex=this._scene.subSurfaceConfiguration.addDiffusionProfile(e))}get volumeIndexOfRefraction(){return this._volumeIndexOfRefraction>=1?this._volumeIndexOfRefraction:this._indexOfRefraction}set volumeIndexOfRefraction(e){e>=1?this._volumeIndexOfRefraction=e:this._volumeIndexOfRefraction=-1}get legacyTransluceny(){return this.legacyTranslucency}set legacyTransluceny(e){this.legacyTranslucency=e}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markScenePrePassDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty(),this._internalMarkScenePrePassDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRSubSurface",130,new DN,t),this._isRefractionEnabled=!1,this.isRefractionEnabled=!1,this._isTranslucencyEnabled=!1,this.isTranslucencyEnabled=!1,this._isDispersionEnabled=!1,this.isDispersionEnabled=!1,this._isScatteringEnabled=!1,this.isScatteringEnabled=!1,this._scatteringDiffusionProfileIndex=0,this.refractionIntensity=1,this.translucencyIntensity=1,this._useAlbedoToTintRefraction=!1,this.useAlbedoToTintRefraction=!1,this._useAlbedoToTintTranslucency=!1,this.useAlbedoToTintTranslucency=!1,this._thicknessTexture=null,this.thicknessTexture=null,this._refractionTexture=null,this.refractionTexture=null,this._indexOfRefraction=1.5,this.indexOfRefraction=1.5,this._volumeIndexOfRefraction=-1,this._invertRefractionY=!1,this.invertRefractionY=!1,this._linkRefractionWithTransparency=!1,this.linkRefractionWithTransparency=!1,this.minimumThickness=0,this.maximumThickness=1,this.useThicknessAsDepth=!1,this.tintColor=pe.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=pe.White(),this._useMaskFromThicknessTexture=!1,this.useMaskFromThicknessTexture=!1,this._refractionIntensityTexture=null,this.refractionIntensityTexture=null,this._translucencyIntensityTexture=null,this.translucencyIntensityTexture=null,this.translucencyColor=null,this._translucencyColorTexture=null,this.translucencyColorTexture=null,this._useGltfStyleTextures=!0,this.useGltfStyleTextures=!0,this.applyAlbedoAfterSubSurface=n.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE,this.legacyTranslucency=n.DEFAULT_LEGACY_TRANSLUCENCY,this._scene=e.getScene(),this.registerForExtraEvents=!0,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkScenePrePassDirty=e._dirtyCallbacks[32]}isReadyForSubMesh(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&ce.RefractionTextureEnabled&&!i.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled){e.SUBSURFACE=!1,e.SS_DISPERSION=!1,e.SS_TRANSLUCENCY=!1,e.SS_SCATTERING=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,e.SS_HAS_THICKNESS=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,e.SS_REFRACTIONMAP_3D=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1;return}if(e._areTexturesDirty){if(e.SUBSURFACE=!0,e.SS_DISPERSION=this._isDispersionEnabled,e.SS_TRANSLUCENCY=this._isTranslucencyEnabled,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_LEGACY=this.legacyTranslucency,e.SS_SCATTERING=this._isScatteringEnabled,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_HAS_THICKNESS=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_REFRACTIONMAP_3D=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=this.applyAlbedoAfterSubSurface,e._areTexturesDirty&&t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&ri(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&ri(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&ri(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&(ri(this._translucencyColorTexture,e,"SS_TRANSLUCENCYCOLOR_TEXTURE"),e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=this._translucencyColorTexture.gammaSpace)),e.SS_HAS_THICKNESS=this.maximumThickness-this.minimumThickness!==0,e.SS_USE_GLTF_TEXTURES=this._useGltfStyleTextures,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._refractionIntensityTexture,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._translucencyIntensityTexture,this._isRefractionEnabled&&t.texturesEnabled){let i=this._getRefractionTexture(t);i&&ce.RefractionTextureEnabled&&(e.SS_REFRACTION=!0,e.SS_REFRACTIONMAP_3D=i.isCube,e.SS_GAMMAREFRACTION=i.gammaSpace,e.SS_RGBDREFRACTION=i.isRGBD,e.SS_LINEARSPECULARREFRACTION=i.linearSpecularLOD,e.SS_REFRACTIONMAP_OPPOSITEZ=this._scene.useRightHandedSystem&&i.isCube?!i.invertZ:i.invertZ,e.SS_LODINREFRACTIONALPHA=i.lodLevelInAlpha,e.SS_LINKREFRACTIONTOTRANSPARENCY=this._linkRefractionWithTransparency,e.SS_ALBEDOFORREFRACTIONTINT=this._useAlbedoToTintRefraction,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=i.isCube&&i.boundingBoxSize,e.SS_USE_THICKNESS_AS_DEPTH=this.useThicknessAsDepth)}this._isTranslucencyEnabled&&(e.SS_ALBEDOFORTRANSLUCENCYTINT=this._useAlbedoToTintTranslucency)}}hardBindForSubMesh(e,t,i,r){if(!(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled))if(this.maximumThickness===0&&this.minimumThickness===0)e.updateFloat2("vThicknessParam",0,0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat2("vThicknessParam",this.minimumThickness*s,(this.maximumThickness-this.minimumThickness)*s)}}bindForSubMesh(e,t,i,r){var f;if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material.realTimeFiltering,l=s.LODBASEDMICROSFURACE,c=this._getRefractionTexture(t);if(!e.useUbo||!a||!e.isSync){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),ni(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),ni(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),ni(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),ni(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&ce.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let h=c.getSize().width,u=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/u,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",h,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",h,Math.log2(h)),c.boundingBoxSize){let m=c;e.updateVector3("vRefractionPosition",m.boundingBoxPosition),e.updateVector3("vRefractionSize",m.boundingBoxSize)}}this._isScatteringEnabled&&e.updateFloat("scatteringDiffusionProfile",this._scatteringDiffusionProfileIndex),e.updateColor3("vDiffusionDistance",this.diffusionDistance),e.updateFloat4("vTintColor",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintColorAtDistance)),e.updateColor4("vTranslucencyColor",(f=this.translucencyColor)!=null?f:this.tintColor,0),e.updateFloat3("vSubSurfaceIntensity",this.refractionIntensity,this.translucencyIntensity,0),e.updateFloat("dispersion",this.dispersion)}t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&ce.RefractionTextureEnabled&&(l?e.setTexture("refractionSampler",c):(e.setTexture("refractionSampler",c._lodTextureMid||c),e.setTexture("refractionSamplerLow",c._lodTextureLow||c),e.setTexture("refractionSamplerHigh",c._lodTextureHigh||c))))}_getRefractionTexture(e){return this._refractionTexture?this._refractionTexture:this._isRefractionEnabled?e.environmentTexture:null}get disableAlphaBlending(){return this._isRefractionEnabled&&this._linkRefractionWithTransparency}fillRenderTargetTextures(e){ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&e.push(this._refractionTexture)}hasTexture(e){return this._thicknessTexture===e||this._refractionTexture===e||this._refractionIntensityTexture===e||this._translucencyIntensityTexture===e||this._translucencyColorTexture===e}hasRenderTargetTextures(){return!!(ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget)}getActiveTextures(e){this._thicknessTexture&&e.push(this._thicknessTexture),this._refractionTexture&&e.push(this._refractionTexture),this._refractionIntensityTexture&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&e.push(this._translucencyIntensityTexture)}getAnimatables(e){this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),this._refractionIntensityTexture&&this._refractionIntensityTexture.animations&&this._refractionIntensityTexture.animations.length>0&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&this._translucencyColorTexture.animations&&this._translucencyColorTexture.animations.length>0&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.animations&&this._translucencyIntensityTexture.animations.length>0&&e.push(this._translucencyIntensityTexture)}dispose(e){e&&(this._thicknessTexture&&this._thicknessTexture.dispose(),this._refractionTexture&&this._refractionTexture.dispose(),this._refractionIntensityTexture&&this._refractionIntensityTexture.dispose(),this._translucencyColorTexture&&this._translucencyColorTexture.dispose(),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.dispose())}getClassName(){return"PBRSubSurfaceConfiguration"}addFallbacks(e,t,i){return e.SS_SCATTERING&&t.addFallback(i++,"SS_SCATTERING"),e.SS_TRANSLUCENCY&&t.addFallback(i++,"SS_TRANSLUCENCY"),i}getSamplers(e){e.push("thicknessSampler","refractionIntensitySampler","translucencyIntensitySampler","refractionSampler","refractionSamplerLow","refractionSamplerHigh","translucencyColorSampler")}getUniforms(){return{ubo:[{name:"vRefractionMicrosurfaceInfos",size:4,type:"vec4"},{name:"vRefractionFilteringInfo",size:2,type:"vec2"},{name:"vTranslucencyIntensityInfos",size:2,type:"vec2"},{name:"vRefractionInfos",size:4,type:"vec4"},{name:"refractionMatrix",size:16,type:"mat4"},{name:"vThicknessInfos",size:2,type:"vec2"},{name:"vRefractionIntensityInfos",size:2,type:"vec2"},{name:"thicknessMatrix",size:16,type:"mat4"},{name:"refractionIntensityMatrix",size:16,type:"mat4"},{name:"translucencyIntensityMatrix",size:16,type:"mat4"},{name:"vThicknessParam",size:2,type:"vec2"},{name:"vDiffusionDistance",size:3,type:"vec3"},{name:"vTintColor",size:4,type:"vec4"},{name:"vSubSurfaceIntensity",size:3,type:"vec3"},{name:"vRefractionPosition",size:3,type:"vec3"},{name:"vRefractionSize",size:3,type:"vec3"},{name:"scatteringDiffusionProfile",size:1,type:"float"},{name:"dispersion",size:1,type:"float"},{name:"vTranslucencyColor",size:4,type:"vec4"},{name:"vTranslucencyColorInfos",size:2,type:"vec2"},{name:"translucencyColorMatrix",size:16,type:"mat4"}]}}};Ai.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ai.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isRefractionEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isTranslucencyEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isDispersionEnabled",void 0);P([F(),le("_markScenePrePassDirty")],Ai.prototype,"isScatteringEnabled",void 0);P([F()],Ai.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ai.prototype,"refractionIntensity",void 0);P([F()],Ai.prototype,"translucencyIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useAlbedoToTintRefraction",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useAlbedoToTintTranslucency",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"thicknessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"refractionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"indexOfRefraction",void 0);P([F()],Ai.prototype,"_volumeIndexOfRefraction",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"volumeIndexOfRefraction",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"invertRefractionY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ai.prototype,"minimumThickness",void 0);P([F()],Ai.prototype,"maximumThickness",void 0);P([F()],Ai.prototype,"useThicknessAsDepth",void 0);P([Tr()],Ai.prototype,"tintColor",void 0);P([F()],Ai.prototype,"tintColorAtDistance",void 0);P([F()],Ai.prototype,"dispersion",void 0);P([Tr()],Ai.prototype,"diffusionDistance",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useMaskFromThicknessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"refractionIntensityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"translucencyIntensityTexture",void 0);P([Tr()],Ai.prototype,"translucencyColor",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"translucencyColorTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useGltfStyleTextures",void 0);P([F()],Ai.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ai.prototype,"legacyTranslucency",void 0)});var Y9,Kpe,LN=I(()=>{k();Sh();cv();Y9="pbrUboDeclaration",Kpe=`uniform vAlbedoInfos: vec2f;uniform vBaseWeightInfos: vec2f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform vAmbientInfos: vec4f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vReflectivityInfos: vec3f;uniform vMicroSurfaceSamplerInfos: vec2f;uniform vBumpInfos: vec3f;uniform albedoMatrix: mat4x4f;uniform baseWeightMatrix: mat4x4f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform reflectivityMatrix: mat4x4f;uniform microSurfaceSamplerMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform vAlbedoColor: vec4f;uniform baseWeight: f32;uniform baseDiffuseRoughness: f32;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vReflectivityColor: vec4f;uniform vEmissiveColor: vec3f;uniform vAmbientColor: vec3f;uniform vDebugMode: vec2f;uniform vMetallicReflectanceFactors: vec4f;uniform vMetallicReflectanceInfos: vec2f;uniform metallicReflectanceMatrix: mat4x4f;uniform vReflectanceInfos: vec2f;uniform reflectanceMatrix: mat4x4f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f; +`;A.ShadersStore[RN]||(A.ShadersStore[RN]=F9);Qpe={name:RN,shader:F9}});var V9={};Be(V9,{OpenPBRMaterial:()=>Ne,OpenPBRMaterialDefines:()=>Rv});var Rp,Cb,si,Ti,bN,MN,Rv,IN,Ne,G9=I(()=>{Gt();Vt();xb();Ht();Mg();Gr();Yi();Yn();br();Ga();$x();Gf();vl();Kg();Xn();Wi();Jx();Qx();Ua();Pt();eR();tR();k8();ke();iR();Yg();So();yi();b6();Rp={effect:null,subMesh:null},Cb=class n{populateVectorFromLinkedProperties(e){let t=e.dimension[0];for(let i in this.linkedProperties){let r=this.linkedProperties[i],s=r.numComponents;if(tt-s){s==1?ee.Error(`Float property ${r.name} has an offset that is too large.`):ee.Error(`Vector${s} property ${r.name} won't fit in Vector${t} or has an offset that is too large.`);return}typeof r.value=="number"?n._tmpArray[r.targetUniformComponentOffset]=r.value:r.value.toArray(n._tmpArray,r.targetUniformComponentOffset)}e.fromArray(n._tmpArray)}constructor(e,t){this.linkedProperties={},this.firstLinkedKey="",this.name=e,this.numComponents=t}};Cb._tmpArray=[0,0,0,0];si=class{constructor(e,t,i,r,s=0,a){this.targetUniformComponentNum=4,this.targetUniformComponentOffset=0,this.name=e,this.targetUniformName=i,this.defaultValue=t,this.value=t,this.targetUniformComponentNum=r,this.targetUniformComponentOffset=s,this.requiredDefine=a}get numComponents(){return typeof this.defaultValue=="number"?1:this.defaultValue.dimension[0]}},Ti=class{get samplerName(){return this.samplerPrefix+"Sampler"}get samplerInfoName(){return"v"+this.samplerPrefix.charAt(0).toUpperCase()+this.samplerPrefix.slice(1)+"Infos"}get samplerMatrixName(){return this.samplerPrefix+"Matrix"}constructor(e,t,i){this.value=null,this.samplerPrefix="",this.textureDefine="",this.name=e,this.samplerPrefix=t,this.textureDefine=i}},bN=class extends fp(cp(Mr)){},MN=class extends G8(bN){},Rv=class extends op(MN){constructor(e){super(e),this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.LIGHTCOUNT=0,this.VERTEXCOLOR=!1,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.VERTEXALPHA=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHA_FROM_BASE_COLOR_TEXTURE=!1,this.ALPHATESTVALUE="0.5",this.PREMULTIPLYALPHA=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.LODBASEDMICROSFURACE=!0,this.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=!1,this.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.SPECULAR_WEIGHT_IN_ALPHA=!1,this.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=!1,this.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=!1,this.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.USE_GLTF_STYLE_ANISOTROPY=!1,this.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=!1,this.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=!1,this.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=!1,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.FUZZENVIRONMENTBRDF=!1,this.NORMAL=!1,this.TANGENT=!1,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.ANISOTROPIC=!1,this.ANISOTROPIC_OPENPBR=!0,this.ANISOTROPIC_BASE=!1,this.ANISOTROPIC_COAT=!1,this.FUZZ_IBL_SAMPLES=6,this.REFRACTION_HIGH_QUALITY_BLUR=!1,this.FUZZ=!1,this.THIN_FILM=!1,this.IRIDESCENCE=!1,this.DISPERSION=!1,this.SCATTERING=!1,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!1,this.SSS_SAMPLE_COUNT=16,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!1,this.TRANSMISSION_SLAB=!1,this.TRANSMISSION_SLAB_VOLUME=!1,this.SUBSURFACE_SLAB=!1,this.GEOMETRY_THIN_WALLED=!1,this.REFRACTED_BACKGROUND=!1,this.REFRACTED_LIGHTS=!1,this.REFRACTED_ENVIRONMENT=!1,this.REFRACTED_ENVIRONMENT_OPPOSITEZ=!1,this.REFRACTED_ENVIRONMENT_LOCAL_CUBE=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.BRDF_V_HEIGHT_CORRELATED=!0,this.MS_BRDF_ENERGY_CONSERVATION=!0,this.SPHERICAL_HARMONICS=!0,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!0,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=1,this.CONDUCTOR_SPECULAR_MODEL=1,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.NORMALXYSCALE=!0}},IN=class extends dp(Al){},Ne=class n extends IN{get geometryTangentAngle(){return Math.atan2(this.geometryTangent.y,this.geometryTangent.x)}set geometryTangentAngle(e){this.geometryTangent=new Fe(Math.cos(e),Math.sin(e))}get geometryCoatTangentAngle(){return Math.atan2(this.geometryCoatTangent.y,this.geometryCoatTangent.x)}set geometryCoatTangentAngle(e){this.geometryCoatTangent=new Fe(Math.cos(e),Math.sin(e))}get sssQuality(){return this._sssQuality}set sssQuality(e){this._sssQuality!==e&&(this._sssQuality=e,this.markAsDirty(1))}get sssIrradianceTexture(){return this._sssIrradianceTexture}set sssIrradianceTexture(e){this._sssIrradianceTexture!==e&&(this._sssIrradianceTexture=e,this._markAllSubMeshesAsTexturesDirty())}get sssDepthTexture(){return this._sssDepthTexture}set sssDepthTexture(e){this._sssDepthTexture!==e&&(this._sssDepthTexture=e,this._markAllSubMeshesAsTexturesDirty())}get hasTransparency(){return this.subsurfaceWeight>0||this.transmissionWeight>0}get hasScattering(){return this.transmissionWeight>0&&this.transmissionDepth>0&&!this.transmissionScatter.equals(pe.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_GLTF:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get backgroundRefractionTexture(){return this._backgroundRefractionTexture}set backgroundRefractionTexture(e){this._backgroundRefractionTexture=e,this._markAllSubMeshesAsTexturesDirty()}get refractionHighQualityBlur(){return this._refractionHighQualityBlur}set refractionHighQualityBlur(e){this._refractionHighQualityBlur!==e&&(this._refractionHighQualityBlur=e,this.markAsDirty(1))}get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get fuzzSampleNumber(){return this._fuzzSampleNumber}set fuzzSampleNumber(e){this._fuzzSampleNumber=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){var s;super(e,t,void 0,i||n.ForceGLSL),this._baseWeight=new si("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Ti("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new si("base_color",pe.White(),"vBaseColor",4),this._baseColorTexture=new Ti("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new si("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Ti("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new si("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Ti("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new si("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Ti("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new si("specular_color",pe.White(),"vSpecularColor",4),this._specularColorTexture=new Ti("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new si("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Ti("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new si("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Ti("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new si("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new si("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Ti("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new si("transmission_color",pe.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Ti("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new si("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Ti("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new si("transmission_scatter",pe.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Ti("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new si("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new si("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Ti("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new si("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new si("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Ti("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new si("subsurface_color",new pe(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Ti("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new si("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new si("subsurface_radius_scale",new pe(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Ti("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new si("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new si("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Ti("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new si("coat_color",pe.White(),"vCoatColor",3,0),this._coatColorTexture=new Ti("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new si("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Ti("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new si("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Ti("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new si("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new si("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Ti("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new si("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Ti("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new si("fuzz_color",pe.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Ti("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new si("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Ti("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new si("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Ti("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new si("geometry_tangent",new Fe(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Ti("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Ti("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new si("geometry_coat_tangent",new Fe(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Ti("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new si("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Ti("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new si("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Ti("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new si("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new si("emission_color",pe.Black(),"vEmissionColor",3),this._emissionColorTexture=new Ti("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new si("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Ti("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new si("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new si("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Ti("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new si("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Ti("ambient_occlusion","ambientOcclusion","AMBIENT_OCCLUSION"),this._sssQuality=n.SSS_QUALITY_MEDIUM,this._sssIrradianceTexture=null,this._sssDepthTexture=null,this._uniformsList={},this._uniformsArray=[],this._samplersList={},this._samplerDefines={},this.directIntensity=1,this.environmentIntensity=1,this.useSpecularWeightFromTextureAlpha=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._lightingInfos=new Ii(this.directIntensity,1,this.environmentIntensity,1),this._radianceTexture=null,this._useSpecularWeightFromAlpha=!1,this._useSpecularWeightFromSpecularColorTexture=!1,this._useSpecularRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessFromGreenChannel=!1,this._useGltfStyleAnisotropy=!1,this._useFuzzRoughnessFromTextureAlpha=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromBaseColorTexture=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallicFromMetallicTextureBlue=!1,this._useThinFilmThicknessFromTextureGreen=!1,this._useGeometryThicknessFromGreenChannel=!1,this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._environmentFuzzBRDFTexture=null,this._backgroundRefractionTexture=null,this._refractionHighQualityBlur=!0,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._fuzzSampleNumber=4,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Vi(16),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this._transparencyMode=Se.MATERIAL_OPAQUE,this.getScene()&&!((s=this.getScene())!=null&&s.getEngine().isWebGPU)&&this.getScene().getEngine().webGLVersion<2&&ee.Error("OpenPBRMaterial: WebGL 2.0 or above is required for this material."),n._noiseTextures[this.getScene().uniqueId]||(n._noiseTextures[this.getScene().uniqueId]=new ge(_e.GetAssetUrl("https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png"),this.getScene(),!1,!0,1),this.getScene().onDisposeObservable.addOnce(()=>{var a;(a=n._noiseTextures[this.getScene().uniqueId])==null||a.dispose(),delete n._noiseTextures[this.getScene().uniqueId]})),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=V8(this.getScene()),this._environmentFuzzBRDFTexture=PO(this.getScene()),this.prePassConfiguration=new Hs,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof si&&(this._propertyList[a]=o)}Object.keys(this._propertyList).forEach(a=>{let o=this._propertyList[a],l=this._uniformsList[o.targetUniformName];l?l.numComponents!==o.targetUniformComponentNum?ee.Error(`Uniform ${o.targetUniformName} already exists of size ${l.numComponents}, but trying to set it to ${o.targetUniformComponentNum}.`):l.requiredDefine!==o.requiredDefine&&(l.requiredDefine=void 0):(l=new Cb(o.targetUniformName,o.targetUniformComponentNum),l.requiredDefine=o.requiredDefine,this._uniformsList[o.targetUniformName]=l),l.firstLinkedKey===""&&(l.firstLinkedKey=o.name),l.linkedProperties[o.name]=o}),this._uniformsArray=Object.values(this._uniformsList),this._samplersList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof Ti&&(this._samplersList[a]=o)}for(let a in this._samplersList){let l=this._samplersList[a].textureDefine;this._samplerDefines[l]={type:"boolean",default:!1},this._samplerDefines[l+"DIRECTUV"]={type:"number",default:0},this._samplerDefines[l+"_GAMMA"]={type:"boolean",default:!1}}this._baseWeight,this._baseWeightTexture,this._baseColor,this._baseColorTexture,this._baseDiffuseRoughness,this._baseDiffuseRoughnessTexture,this._baseMetalness,this._baseMetalnessTexture,this._specularWeight,this._specularWeightTexture,this._specularColor,this._specularColorTexture,this._specularRoughness,this._specularIor,this._specularRoughnessTexture,this._specularRoughnessAnisotropy,this._specularRoughnessAnisotropyTexture,this._transmissionWeight,this._transmissionWeightTexture,this._transmissionColor,this._transmissionColorTexture,this._transmissionDepth,this._transmissionDepthTexture,this._transmissionScatter,this._transmissionScatterTexture,this._transmissionScatterAnisotropy,this._transmissionDispersionScale,this._transmissionDispersionScaleTexture,this._transmissionDispersionAbbeNumber,this._subsurfaceWeight,this._subsurfaceWeightTexture,this._subsurfaceColor,this._subsurfaceColorTexture,this._subsurfaceRadius,this._subsurfaceRadiusScale,this._subsurfaceRadiusScaleTexture,this._subsurfaceScatterAnisotropy,this._coatWeight,this._coatWeightTexture,this._coatColor,this._coatColorTexture,this._coatRoughness,this._coatRoughnessTexture,this._coatRoughnessAnisotropy,this._coatRoughnessAnisotropyTexture,this._coatIor,this._coatDarkening,this._coatDarkeningTexture,this._fuzzWeight,this._fuzzWeightTexture,this._fuzzColor,this._fuzzColorTexture,this._fuzzRoughness,this._fuzzRoughnessTexture,this._geometryThinWalled,this._geometryNormalTexture,this._geometryTangent,this._geometryTangentTexture,this._geometryCoatNormalTexture,this._geometryCoatTangent,this._geometryCoatTangentTexture,this._geometryOpacity,this._geometryOpacityTexture,this._geometryThickness,this._geometryThicknessTexture,this._thinFilmWeight,this._thinFilmWeightTexture,this._thinFilmThickness,this._thinFilmThicknessMin,this._thinFilmThicknessTexture,this._thinFilmIor,this._emissionLuminance,this._emissionColor,this._emissionColorTexture,this._ambientOcclusionTexture}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"OpenPBRMaterial"}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}_shouldUseAlphaFromBaseColorTexture(){return this._hasAlphaChannel()&&this._transparencyMode!==Se.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.OpenPBRMaterial",e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new Rv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Rp.effect=o,Rp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Rp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new Rv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){for(let m in this._samplersList){let _=this._samplersList[m];if(_.value&&!_.value.isReadyOrNotBlocking())return!1}let u=this._getRadianceTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&ce.RefractionTextureEnabled&&!this._backgroundRefractionTexture.isReadyOrNotBlocking()||n._noiseTextures[a.uniqueId]&&!n._noiseTextures[a.uniqueId].isReady()||this._sssIrradianceTexture&&this._sssDepthTexture&&(!this._sssIrradianceTexture.isReady()||!this._sssDepthTexture.isReady()))return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED){for(let u=0;u{e.addUniform(t.name,t.numComponents)}),Object.values(this._samplersList).forEach(t=>{e.addUniform(t.samplerInfoName,2),e.addUniform(t.samplerMatrixName,16)}),super.buildUniformLayout()}bindPropertiesForSubMesh(e,t,i,r){if(this.geometryThickness===0)e.updateFloat("vGeometryThickness",0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat("vGeometryThickness",this.geometryThickness*s)}}bindForSubMesh(e,t,i){var d;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);Vs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Wf(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let h=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value&&(f.updateFloat2(_.samplerInfoName,_.value.coordinatesIndex,_.value.level),ni(_.value,f,_.samplerPrefix))}(this.geometryNormalTexture||this.geometryCoatNormalTexture)&&(r._mirroredCameraPosition?f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),Fm(r,s,f,pe.White(),h,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let u=this._uniformsArray;for(let m=0,_=u.length;m<_;m++){let p=u[m];p.requiredDefine!==void 0&&!s[p.requiredDefine]||(p.numComponents===4?(p.populateVectorFromLinkedProperties($.Vector4[0]),f.updateVector4(p.name,$.Vector4[0])):p.numComponents===3?(p.populateVectorFromLinkedProperties($.Vector3[0]),f.updateVector3(p.name,$.Vector3[0])):p.numComponents===2?(p.populateVectorFromLinkedProperties($.Vector2[0]),f.updateFloat2(p.name,$.Vector2[0].x,$.Vector2[0].y)):p.numComponents===1&&f.updateFloat(p.name,p.linkedProperties[p.firstLinkedKey].value))}this._lightingInfos.x=this.directIntensity,this._lightingInfos.y=this.emissionLuminance,this._lightingInfos.z=this.environmentIntensity*r.environmentIntensity,this._lightingInfos.w=1,f.updateVector4("vLightingIntensity",this._lightingInfos),f.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}if(r.texturesEnabled){for(let u in this._samplersList){let m=this._samplersList[u];m.value&&f.setTexture(m.samplerName,m.value)}if(wx(r,s,f,h,this.realTimeFiltering),s.ENVIRONMENTBRDF&&f.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),s.FUZZENVIRONMENTBRDF&&f.setTexture("environmentFuzzBrdfSampler",this._environmentFuzzBRDFTexture),s.REFRACTED_BACKGROUND&&(f.setTexture("backgroundRefractionSampler",this._backgroundRefractionTexture),f.updateMatrix("backgroundRefractionMatrix",this._backgroundRefractionTexture.getReflectionTextureMatrix()),$.Vector3[1].set(Math.log2(this._backgroundRefractionTexture.getSize().width),0,0),f.updateVector3("vBackgroundRefractionInfos",$.Vector3[1])),(s.ANISOTROPIC||s.FUZZ||s.REFRACTED_BACKGROUND||s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&f.setTexture("blueNoiseSampler",n._noiseTextures[this.getScene().uniqueId]),s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&this.sssIrradianceTexture&&this.sssDepthTexture){let u=this.sssIrradianceTexture.getSize().width,m=this.sssIrradianceTexture.getSize().height;f.setTexture("sceneIrradianceSampler",this.sssIrradianceTexture),f.setTexture("sceneDepthSampler",this.sssDepthTexture),f.updateFloat2("renderTargetSize",u,m)}}this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);this.bindPropertiesForSubMesh(this._uniformBuffer,r,r.getEngine(),i),(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,this._activeEffect,s,this._maxSimultaneousLights),this.bindView(a),Pf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&zn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((d=t.bakedVertexAnimationManager)==null||d.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Cf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),f.update()}getAnimatables(){let e=super.getAnimatables();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&i.value.animations&&i.value.animations.length>0&&e.push(i.value)}return this._radianceTexture&&this._radianceTexture.animations&&this._radianceTexture.animations.length>0&&e.push(this._radianceTexture),e}getActiveTextures(){let e=super.getActiveTextures();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&e.push(i.value)}return this._radianceTexture&&e.push(this._radianceTexture),e}hasTexture(e){if(super.hasTexture(e))return!0;for(let t in this._samplersList)if(this._samplersList[t].value===e)return!0;return this._radianceTexture===e}setPrePassRenderer(){return!1}dispose(e,t){var i,r;if(this._breakShaderLoadedCheck=!0,t){this._environmentBRDFTexture&&this.getScene().openPBREnvironmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),this._environmentFuzzBRDFTexture&&this.getScene().environmentFuzzBRDFTexture!==this._environmentFuzzBRDFTexture&&this._environmentFuzzBRDFTexture.dispose(),this._backgroundRefractionTexture=null;for(let s in this._samplersList)(i=this._samplersList[s].value)==null||i.dispose();(r=this._radianceTexture)==null||r.dispose()}this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}_getRadianceTexture(){return this._radianceTexture?this._radianceTexture:this.getScene().environmentTexture}_prepareEffect(e,t,i,r=null,s=null,a=null,o=null){if(this._prepareDefines(e,t,i,a,o),!i.isDirty)return null;i.markAsProcessed();let c=this.getScene().getEngine(),f=new qn,d=0;i.USESPHERICALINVERTEX&&f.addFallback(d++,"USESPHERICALINVERTEX"),i.FOG&&f.addFallback(d,"FOG"),i.SPECULARAA&&f.addFallback(d,"SPECULARAA"),i.POINTSIZE&&f.addFallback(d,"POINTSIZE"),i.LOGARITHMICDEPTH&&f.addFallback(d,"LOGARITHMICDEPTH"),i.PARALLAX&&f.addFallback(d,"PARALLAX"),i.PARALLAX_RHS&&f.addFallback(d,"PARALLAX_RHS"),i.PARALLAXOCCLUSION&&f.addFallback(d++,"PARALLAXOCCLUSION"),i.ENVIRONMENTBRDF&&f.addFallback(d++,"ENVIRONMENTBRDF"),i.TANGENT&&f.addFallback(d++,"TANGENT"),d=km(i,f,this._maxSimultaneousLights,d),i.SPECULARTERM&&f.addFallback(d++,"SPECULARTERM"),i.USESPHERICALFROMREFLECTIONMAP&&f.addFallback(d++,"USESPHERICALFROMREFLECTIONMAP"),i.USEIRRADIANCEMAP&&f.addFallback(d++,"USEIRRADIANCEMAP"),i.NORMAL&&f.addFallback(d++,"NORMAL"),i.VERTEXCOLOR&&f.addFallback(d++,"VERTEXCOLOR"),i.MORPHTARGETS&&f.addFallback(d++,"MORPHTARGETS"),i.MULTIVIEW&&f.addFallback(0,"MULTIVIEW");let h=[D.PositionKind];i.NORMAL&&h.push(D.NormalKind),i.TANGENT&&h.push(D.TangentKind);for(let E=1;E<=6;++E)i["UV"+E]&&h.push(`uv${E===1?"":E}`);i.VERTEXCOLOR&&h.push(D.ColorKind),Vm(h,e,i,f),Gm(h,i),gh(h,e,i),Bm(h,e,i);let u="openpbr",m=["world","view","viewProjection","projection","vEyePosition","inverseProjection","renderTargetSize","vLightsType","visibility","vFogInfos","vFogColor","pointSize","mBones","normalMatrix","vLightingIntensity","logarithmicDepthConstant","vTangentSpaceParams","boneTextureInfo","vDebugMode","morphTargetTextureInfo","morphTargetTextureIndices","cameraInfo","backgroundRefractionMatrix","vBackgroundRefractionInfos"];for(let E in this._uniformsList)m.push(E);let _=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&_.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&_.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&_.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(_.push("sceneIrradianceSampler"),_.push("sceneDepthSampler"));for(let E in this._samplersList){let T=this._samplersList[E];_.push(T.samplerName),m.push(T.samplerInfoName),m.push(T.samplerMatrixName)}Of(m,_,!0);let p=["Material","Scene","Mesh"],g={maxSimultaneousLights:this._maxSimultaneousLights,maxSimultaneousMorphTargets:i.NUM_MORPH_INFLUENCERS};if(this._eventInfo.fallbacks=f,this._eventInfo.fallbackRank=d,this._eventInfo.defines=i,this._eventInfo.uniforms=m,this._eventInfo.attributes=h,this._eventInfo.samplers=_,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=g,this._callbackPluginEventGeneric(128,this._eventInfo),Zn.AddUniformsAndSamplers(m,_),Hs.AddUniforms(m),Hs.AddSamplers(_),Wn(m),this._useVertexPulling){let E=t==null?void 0:t.geometry;E&&(this._vertexPullingMetadata=kf(E),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((T,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;kt&&(kt.PrepareUniforms(m,i),kt.PrepareSamplers(_,i)),Zm({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let x=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(O6(),L6)),Promise.resolve().then(()=>(P7(),C7))]):await Promise.all([Promise.resolve().then(()=>(G7(),V7)),Promise.resolve().then(()=>(U9(),B9))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();zm(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Km(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(o,i,this.canRenderToMRT&&!c),jm(o,i,c),Zn.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let h=1;h<=6;++h)i["MAINUV"+h]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value?(ri(_.value,i,_.textureDefine),i[_.textureDefine+"_GAMMA"]=_.value.gammaSpace):i[_.textureDefine]=!1}let h=this._getRadianceTexture(),u=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(Lf(o,h,i,this.realTimeFiltering,this.realTimeFilteringQuality,!u),this._baseMetalnessTexture&&(i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed),i.SPECULAR_WEIGHT_IN_ALPHA=this._useSpecularWeightFromAlpha,i.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=this._useSpecularWeightFromSpecularColorTexture,i.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useSpecularRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useCoatRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=this._useCoatRoughnessFromGreenChannel,i.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=this._useRoughnessFromMetallicTextureGreen,i.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=this._useFuzzRoughnessFromTextureAlpha,i.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=this._useMetallicFromMetallicTextureBlue,i.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=this._useThinFilmThicknessFromTextureGreen,i.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=this._useGeometryThicknessFromGreenChannel,this.geometryNormalTexture?(this._useParallax&&this.baseColorTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._environmentFuzzBRDFTexture?i.FUZZENVIRONMENTBRDF=!0:i.FUZZENVIRONMENTBRDF=!1,this.hasTransparency){i.REFRACTED_BACKGROUND=!!this._backgroundRefractionTexture&&ce.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=ce.RefractionTextureEnabled,i.REFRACTED_ENVIRONMENT_OPPOSITEZ=this.getScene().useRightHandedSystem?!m.invertZ:m.invertZ,i.REFRACTED_ENVIRONMENT_LOCAL_CUBE=m.isCube&&m.boundingBoxSize):i.REFRACTED_ENVIRONMENT=!1}else i.REFRACTED_BACKGROUND=!1,i.REFRACTED_LIGHTS=!1,i.REFRACTED_ENVIRONMENT=!1;this._shouldUseAlphaFromBaseColorTexture()?i.ALPHA_FROM_BASE_COLOR_TEXTURE=!0:i.ALPHA_FROM_BASE_COLOR_TEXTURE=!1}this._lightFalloff===Se.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Se.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e)),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,(this.specularRoughnessAnisotropy>0||this.coatRoughnessAnisotropy>0)&&n._noiseTextures[o.uniqueId]&&ce.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(D.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._useGltfStyleAnisotropy&&(i.USE_GLTF_STYLE_ANISOTROPY=!0),i.ANISOTROPIC_BASE=this.specularRoughnessAnisotropy>0,i.ANISOTROPIC_COAT=this.coatRoughnessAnisotropy>0):(i.ANISOTROPIC=!1,i.USE_GLTF_STYLE_ANISOTROPY=!1,i.ANISOTROPIC_BASE=!1,i.ANISOTROPIC_COAT=!1),i.THIN_FILM=this.thinFilmWeight>0,i.IRIDESCENCE=this.thinFilmWeight>0,i.DISPERSION=this.transmissionDispersionScale>0,i.SCATTERING=this.hasScattering;let f=[8,16,32];if(i.SSS_SAMPLE_COUNT=(d=f[this._sssQuality])!=null?d:16,i.TRANSMISSION_SLAB=this.transmissionWeight>0,i.TRANSMISSION_SLAB_VOLUME=this.transmissionWeight>0&&this.transmissionDepth>0,i.SUBSURFACE_SLAB=this.subsurfaceWeight>0,!i.PREPASS&&(i.SUBSURFACE_SLAB||i.TRANSMISSION_SLAB_VOLUME)){let h=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(ps.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(ps.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,h&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&ce.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(D.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=PO(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(Wm(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(D.NormalKind),i.DEBUGMODE=this._debugMode),Xm(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),Ym(e,i,!0,!0,!0,this._transparencyMode!==Se.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};Ne.SSS_QUALITY_LOW=0;Ne.SSS_QUALITY_MEDIUM=1;Ne.SSS_QUALITY_HIGH=2;Ne._noiseTextures={};Ne.ForceGLSL=!1;P([ut("_markAllSubMeshesAsTexturesDirty","baseWeight")],Ne.prototype,"_baseWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],Ne.prototype,"_baseWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseColor")],Ne.prototype,"_baseColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],Ne.prototype,"_baseColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],Ne.prototype,"_baseDiffuseRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],Ne.prototype,"_baseDiffuseRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseMetalness")],Ne.prototype,"_baseMetalness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],Ne.prototype,"_baseMetalnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularWeight")],Ne.prototype,"_specularWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],Ne.prototype,"_specularWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularColor")],Ne.prototype,"_specularColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],Ne.prototype,"_specularColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughness")],Ne.prototype,"_specularRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],Ne.prototype,"_specularRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],Ne.prototype,"_specularRoughnessAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],Ne.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","specularIor")],Ne.prototype,"_specularIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],Ne.prototype,"_transmissionWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],Ne.prototype,"_transmissionWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionColor")],Ne.prototype,"_transmissionColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],Ne.prototype,"_transmissionColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],Ne.prototype,"_transmissionDepth",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],Ne.prototype,"_transmissionDepthTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],Ne.prototype,"_transmissionScatter",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],Ne.prototype,"_transmissionScatterTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],Ne.prototype,"_transmissionScatterAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],Ne.prototype,"_transmissionDispersionScale",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],Ne.prototype,"_transmissionDispersionScaleTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],Ne.prototype,"_transmissionDispersionAbbeNumber",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],Ne.prototype,"_subsurfaceWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],Ne.prototype,"_subsurfaceWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],Ne.prototype,"_subsurfaceColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],Ne.prototype,"_subsurfaceColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],Ne.prototype,"_subsurfaceRadius",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],Ne.prototype,"_subsurfaceRadiusScale",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],Ne.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],Ne.prototype,"_subsurfaceScatterAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatWeight")],Ne.prototype,"_coatWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],Ne.prototype,"_coatWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatColor")],Ne.prototype,"_coatColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],Ne.prototype,"_coatColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughness")],Ne.prototype,"_coatRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],Ne.prototype,"_coatRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],Ne.prototype,"_coatRoughnessAnisotropy",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],Ne.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatIor")],Ne.prototype,"_coatIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatDarkening")],Ne.prototype,"_coatDarkening",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],Ne.prototype,"_coatDarkeningTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],Ne.prototype,"_fuzzWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],Ne.prototype,"_fuzzWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzColor")],Ne.prototype,"_fuzzColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],Ne.prototype,"_fuzzColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],Ne.prototype,"_fuzzRoughness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],Ne.prototype,"_fuzzRoughnessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],Ne.prototype,"_geometryThinWalled",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],Ne.prototype,"_geometryNormalTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryTangent")],Ne.prototype,"_geometryTangent",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],Ne.prototype,"_geometryTangentTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],Ne.prototype,"_geometryCoatNormalTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],Ne.prototype,"_geometryCoatTangent",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],Ne.prototype,"_geometryCoatTangentTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],Ne.prototype,"_geometryOpacity",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],Ne.prototype,"_geometryOpacityTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThickness")],Ne.prototype,"_geometryThickness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],Ne.prototype,"_geometryThicknessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],Ne.prototype,"_emissionLuminance",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionColor")],Ne.prototype,"_emissionColor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],Ne.prototype,"_emissionColorTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],Ne.prototype,"_thinFilmWeight",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],Ne.prototype,"_thinFilmWeightTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],Ne.prototype,"_thinFilmThickness",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],Ne.prototype,"_thinFilmThicknessMin",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],Ne.prototype,"_thinFilmThicknessTexture",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],Ne.prototype,"_thinFilmIor",void 0);P([ut("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],Ne.prototype,"_ambientOcclusionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientInGrayScale",void 0);P([F()],Ne.prototype,"usePhysicalLightFalloff",null);P([F()],Ne.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"debugMode",void 0);P([F()],Ne.prototype,"transparencyMode",null);Ft("BABYLON.OpenPBRMaterial",Ne)});var k9={};Be(k9,{OpenPBRMaterialLoadingAdapter:()=>yN});var yN,W9=I(()=>{Ht();yN=class{constructor(e){this._diffuseTransmissionTint=pe.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){}get alphaCutOff(){return .5}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return!1}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){let t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var t;let e=this._material.ambientOcclusionTexture;return(t=e==null?void 0:e.level)!=null?t:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}set coatDarkening(e){this._material.coatDarkening=e}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||this._material.transmissionDepth!==0?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(pe.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalize(){(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(pe.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(pe.White())||this.baseColorTexture)&&(this._material.coatWeight=this.subsurfaceWeight,this._material.coatWeightTexture=this.subsurfaceWeightTexture,this._material.coatColor=this._diffuseTransmissionTint,this._material.coatColorTexture=this._diffuseTransmissionTintTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture,this._material.specularRoughness=1,this._material.specularRoughnessTexture=null)),this.transmissionWeight>0&&(this._material.geometryThinWalled||this._material.transmissionDepth===0?(this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture):this._material.coatWeight==0&&(!this.baseColor.equals(pe.White())||this.baseColorTexture!==null)&&(this._material.coatWeight=this.transmissionWeight,this._material.coatWeightTexture=this.transmissionWeightTexture,this._material.coatColor=this.baseColor,this._material.coatColorTexture=this.baseColorTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture))}}});var CN,Pr,H9=I(()=>{Gt();Vt();Ga();Xf();CN=class extends Mr{constructor(){super(...arguments),this.BRDF_V_HEIGHT_CORRELATED=!1,this.MS_BRDF_ENERGY_CONSERVATION=!1,this.SPHERICAL_HARMONICS=!1,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!1,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=0,this.CONDUCTOR_SPECULAR_MODEL=0}},Pr=class n extends Hr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new CN,t),this._useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this.useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this._useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this.useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this._useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this.useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this._useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this.useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this._mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this.mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this._useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this.useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this._baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this.baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this._dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this.dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this._conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this.conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16],this._enable(!0)}prepareDefines(e){e.BRDF_V_HEIGHT_CORRELATED=this._useSmithVisibilityHeightCorrelated,e.MS_BRDF_ENERGY_CONSERVATION=this._useEnergyConservation&&this._useSmithVisibilityHeightCorrelated,e.SPHERICAL_HARMONICS=this._useSphericalHarmonics,e.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=this._useSpecularGlossinessInputEnergyConservation,e.MIX_IBL_RADIANCE_WITH_IRRADIANCE=this._mixIblRadianceWithIrradiance&&!this._material._disableLighting,e.LEGACY_SPECULAR_ENERGY_CONSERVATION=this._useLegacySpecularEnergyConservation,e.BASE_DIFFUSE_MODEL=this._baseDiffuseModel,e.DIELECTRIC_SPECULAR_MODEL=this._dielectricSpecularModel,e.CONDUCTOR_SPECULAR_MODEL=this._conductorSpecularModel}getClassName(){return"PBRBRDFConfiguration"}};Pr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Pr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Pr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Pr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Pr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Pr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Pr.DEFAULT_DIFFUSE_MODEL=0;Pr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Pr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSphericalHarmonics",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Pr.prototype,"conductorSpecularModel",void 0)});var PN,ln,z9=I(()=>{Gt();Vt();Ht();Ua();Xf();Ga();Xn();PN=class extends Mr{constructor(){super(...arguments),this.CLEARCOAT=!1,this.CLEARCOAT_DEFAULTIOR=!1,this.CLEARCOAT_TEXTURE=!1,this.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this.CLEARCOAT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,this.CLEARCOAT_BUMP=!1,this.CLEARCOAT_BUMPDIRECTUV=0,this.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,this.CLEARCOAT_REMAP_F0=!1,this.CLEARCOAT_TINT=!1,this.CLEARCOAT_TINT_TEXTURE=!1,this.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TINT_GAMMATEXTURE=!1}},ln=class n extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new PN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.roughness=0,this._indexOfRefraction=n._DefaultIndexOfRefraction,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._textureRoughness=null,this.textureRoughness=null,this._remapF0OnInterfaceChange=!0,this.remapF0OnInterfaceChange=!0,this._bumpTexture=null,this.bumpTexture=null,this._isTintEnabled=!1,this.isTintEnabled=!1,this.tintColor=pe.White(),this.tintColorAtDistance=1,this.tintThickness=1,this._tintTexture=null,this.tintTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){if(!this._isEnabled)return!0;let r=this._material._disableBumpMap;return!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&ce.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&!this._tintTexture.isReadyOrNotBlocking()))}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.CLEARCOAT=!0,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e.CLEARCOAT_REMAP_F0=this._remapF0OnInterfaceChange,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled?ri(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&ce.ClearCoatTextureEnabled?ri(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&ce.ClearCoatBumpTextureEnabled?ri(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&ce.ClearCoatTintTextureEnabled?(ri(this._tintTexture,e,"CLEARCOAT_TINT_TEXTURE"),e.CLEARCOAT_TINT_GAMMATEXTURE=this._tintTexture.gammaSpace):e.CLEARCOAT_TINT_TEXTURE=!1):(e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1))):(e.CLEARCOAT=!1,e.CLEARCOAT_TEXTURE=!1,e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.CLEARCOAT_DEFAULTIOR=!1,e.CLEARCOAT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,e.CLEARCOAT_BUMPDIRECTUV=0,e.CLEARCOAT_REMAP_F0=!1,e.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TINT_GAMMATEXTURE=!1)}bindForSubMesh(e,t,i,r){var f,d,h,u,m,_,p,g;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material._disableBumpMap,l=this._material._invertNormalMapX,c=this._material._invertNormalMapY;if(!e.useUbo||!a||!e.isSync){(this._texture||this._textureRoughness)&&ce.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(u=(h=this._texture)==null?void 0:h.level)!=null?u:0,(_=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?_:0,(g=(p=this._textureRoughness)==null?void 0:p.level)!=null?g:0),this._texture&&ni(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ni(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),ni(this._bumpTexture,e,"clearCoatBump"),t._mirroredCameraPosition?e.updateFloat2("vClearCoatTangentSpaceParams",l?1:-1,c?1:-1):e.updateFloat2("vClearCoatTangentSpaceParams",l?-1:1,c?-1:1)),this._tintTexture&&ce.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),ni(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,x=1+this._indexOfRefraction,S=Math.pow(-v/x,2),E=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",S,E,v,x),this._isTintEnabled&&(e.updateFloat4("vClearCoatTintParams",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintThickness)),e.updateFloat("clearCoatColorAtDistance",Math.max(1e-5,this.tintColorAtDistance)))}t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&e.setTexture("clearCoatTintSampler",this._tintTexture))}hasTexture(e){return this._texture===e||this._textureRoughness===e||this._bumpTexture===e||this._tintTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness),this._bumpTexture&&e.push(this._bumpTexture),this._tintTexture&&e.push(this._tintTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._tintTexture&&this._tintTexture.animations&&this._tintTexture.animations.length>0&&e.push(this._tintTexture)}dispose(e){var t,i,r,s;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose(),(r=this._bumpTexture)==null||r.dispose(),(s=this._tintTexture)==null||s.dispose())}getClassName(){return"PBRClearCoatConfiguration"}addFallbacks(e,t,i){return e.CLEARCOAT_BUMP&&t.addFallback(i++,"CLEARCOAT_BUMP"),e.CLEARCOAT_TINT&&t.addFallback(i++,"CLEARCOAT_TINT"),e.CLEARCOAT&&t.addFallback(i++,"CLEARCOAT"),i}getSamplers(e){e.push("clearCoatSampler","clearCoatRoughnessSampler","clearCoatBumpSampler","clearCoatTintSampler")}getUniforms(){return{ubo:[{name:"vClearCoatParams",size:2,type:"vec2"},{name:"vClearCoatRefractionParams",size:4,type:"vec4"},{name:"vClearCoatInfos",size:4,type:"vec4"},{name:"clearCoatMatrix",size:16,type:"mat4"},{name:"clearCoatRoughnessMatrix",size:16,type:"mat4"},{name:"vClearCoatBumpInfos",size:2,type:"vec2"},{name:"vClearCoatTangentSpaceParams",size:2,type:"vec2"},{name:"clearCoatBumpMatrix",size:16,type:"mat4"},{name:"vClearCoatTintParams",size:4,type:"vec4"},{name:"clearCoatColorAtDistance",size:1,type:"float"},{name:"vClearCoatTintInfos",size:2,type:"vec2"},{name:"clearCoatTintMatrix",size:16,type:"mat4"}]}}};ln._DefaultIndexOfRefraction=1.5;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"isEnabled",void 0);P([F()],ln.prototype,"intensity",void 0);P([F()],ln.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"indexOfRefraction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"useRoughnessFromMainTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"remapF0OnInterfaceChange",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"bumpTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"isTintEnabled",void 0);P([Tr()],ln.prototype,"tintColor",void 0);P([F()],ln.prototype,"tintColorAtDistance",void 0);P([F()],ln.prototype,"tintThickness",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ln.prototype,"tintTexture",void 0)});var DN,Xs,X9=I(()=>{Gt();Vt();Ua();Xf();Ga();Xn();DN=class extends Mr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},Xs=class n extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new DN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.minimumThickness=n._DefaultMinimumThickness,this.maximumThickness=n._DefaultMaximumThickness,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._thicknessTexture=null,this.thicknessTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&ce.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled?ri(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&ce.IridescenceTextureEnabled?ri(this._thicknessTexture,e,"IRIDESCENCE_THICKNESS_TEXTURE"):e.IRIDESCENCE_THICKNESS_TEXTURE=!1)):(e.IRIDESCENCE=!1,e.IRIDESCENCE_TEXTURE=!1,e.IRIDESCENCE_THICKNESS_TEXTURE=!1,e.IRIDESCENCE_TEXTUREDIRECTUV=0,e.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0)}bindForSubMesh(e,t){var r,s,a,o,l,c,f,d;if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&((this._texture||this._thicknessTexture)&&ce.IridescenceTextureEnabled&&(e.updateFloat4("vIridescenceInfos",(s=(r=this._texture)==null?void 0:r.coordinatesIndex)!=null?s:0,(o=(a=this._texture)==null?void 0:a.level)!=null?o:0,(c=(l=this._thicknessTexture)==null?void 0:l.coordinatesIndex)!=null?c:0,(d=(f=this._thicknessTexture)==null?void 0:f.level)!=null?d:0),this._texture&&ni(this._texture,e,"iridescence"),this._thicknessTexture&&ni(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceThicknessSampler",this._thicknessTexture))}hasTexture(e){return this._texture===e||this._thicknessTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._thicknessTexture&&e.push(this._thicknessTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._thicknessTexture)==null||i.dispose())}getClassName(){return"PBRIridescenceConfiguration"}addFallbacks(e,t,i){return e.IRIDESCENCE&&t.addFallback(i++,"IRIDESCENCE"),i}getSamplers(e){e.push("iridescenceSampler","iridescenceThicknessSampler")}getUniforms(){return{ubo:[{name:"vIridescenceParams",size:4,type:"vec4"},{name:"vIridescenceInfos",size:4,type:"vec4"},{name:"iridescenceMatrix",size:16,type:"mat4"},{name:"iridescenceThicknessMatrix",size:16,type:"mat4"}]}}};Xs._DefaultMinimumThickness=100;Xs._DefaultMaximumThickness=400;Xs._DefaultIndexOfRefraction=1.3;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"isEnabled",void 0);P([F()],Xs.prototype,"intensity",void 0);P([F()],Xs.prototype,"minimumThickness",void 0);P([F()],Xs.prototype,"maximumThickness",void 0);P([F()],Xs.prototype,"indexOfRefraction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"texture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Xs.prototype,"thicknessTexture",void 0)});var LN,Nc,Y9=I(()=>{Gt();Vt();Wi();ke();Ua();Xf();Ga();Xn();LN=class extends Mr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Nc=class extends Hr{set angle(e){this.direction.x=Math.cos(e),this.direction.y=Math.sin(e)}get angle(){return Math.atan2(this.direction.y,this.direction.x)}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markAllSubMeshesAsMiscDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRAnisotropic",110,new LN,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.direction=new Fe(1,0),this._texture=null,this.texture=null,this._legacy=!1,this.legacy=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(D.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.AnisotropicTextureEnabled?ri(this._texture,e,"ANISOTROPIC_TEXTURE"):e.ANISOTROPIC_TEXTURE=!1),e._areMiscDirty&&(e.ANISOTROPIC_LEGACY=this._legacy)):(e.ANISOTROPIC=!1,e.ANISOTROPIC_TEXTURE=!1,e.ANISOTROPIC_TEXTUREDIRECTUV=0,e.ANISOTROPIC_LEGACY=!1)}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&(this._texture&&ce.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),ni(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&e.setTexture("anisotropySampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){e&&this._texture&&this._texture.dispose()}getClassName(){return"PBRAnisotropicConfiguration"}addFallbacks(e,t,i){return e.ANISOTROPIC&&t.addFallback(i++,"ANISOTROPIC"),i}getSamplers(e){e.push("anisotropySampler")}getUniforms(){return{ubo:[{name:"vAnisotropy",size:3,type:"vec3"},{name:"vAnisotropyInfos",size:2,type:"vec2"},{name:"anisotropyMatrix",size:16,type:"mat4"}]}}parse(e,t,i){super.parse(e,t,i),e.legacy===void 0&&(this.legacy=!0)}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Nc.prototype,"isEnabled",void 0);P([F()],Nc.prototype,"intensity",void 0);P([vm()],Nc.prototype,"direction",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Nc.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Nc.prototype,"legacy",void 0)});var ON,da,K9=I(()=>{Gt();Vt();Ht();Ua();Xf();Ga();Xn();ON=class extends Mr{constructor(){super(...arguments),this.SHEEN=!1,this.SHEEN_TEXTURE=!1,this.SHEEN_GAMMATEXTURE=!1,this.SHEEN_TEXTURE_ROUGHNESS=!1,this.SHEEN_TEXTUREDIRECTUV=0,this.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0,this.SHEEN_LINKWITHALBEDO=!1,this.SHEEN_ROUGHNESS=!1,this.SHEEN_ALBEDOSCALING=!1,this.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1}},da=class extends Hr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new ON,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=pe.White(),this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._roughness=null,this.roughness=null,this._textureRoughness=null,this.textureRoughness=null,this._albedoScaling=!1,this.albedoScaling=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.SheenTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.SHEEN=!0,e.SHEEN_LINKWITHALBEDO=this._linkSheenWithAlbedo,e.SHEEN_ROUGHNESS=this._roughness!==null,e.SHEEN_ALBEDOSCALING=this._albedoScaling,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled?(ri(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&ce.SheenTextureEnabled?ri(this._textureRoughness,e,"SHEEN_TEXTURE_ROUGHNESS"):e.SHEEN_TEXTURE_ROUGHNESS=!1)):(e.SHEEN=!1,e.SHEEN_TEXTURE=!1,e.SHEEN_TEXTURE_ROUGHNESS=!1,e.SHEEN_LINKWITHALBEDO=!1,e.SHEEN_ROUGHNESS=!1,e.SHEEN_ALBEDOSCALING=!1,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.SHEEN_GAMMATEXTURE=!1,e.SHEEN_TEXTUREDIRECTUV=0,e.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0)}bindForSubMesh(e,t,i,r){var o,l,c,f,d,h,u,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&ce.SheenTextureEnabled&&(e.updateFloat4("vSheenInfos",(l=(o=this._texture)==null?void 0:o.coordinatesIndex)!=null?l:0,(f=(c=this._texture)==null?void 0:c.level)!=null?f:0,(h=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?h:0,(m=(u=this._textureRoughness)==null?void 0:u.level)!=null?m:0),this._texture&&ni(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ni(this._textureRoughness,e,"sheenRoughness")),e.updateFloat4("vSheenColor",this.color.r,this.color.g,this.color.b,this.intensity),this._roughness!==null&&e.updateFloat("vSheenRoughness",this._roughness)),t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.SheenTextureEnabled&&e.setTexture("sheenRoughnessSampler",this._textureRoughness))}hasTexture(e){return this._texture===e||this._textureRoughness===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose())}getClassName(){return"PBRSheenConfiguration"}addFallbacks(e,t,i){return e.SHEEN&&t.addFallback(i++,"SHEEN"),i}getSamplers(e){e.push("sheenSampler","sheenRoughnessSampler")}getUniforms(){return{ubo:[{name:"vSheenColor",size:4,type:"vec4"},{name:"vSheenRoughness",size:1,type:"float"},{name:"vSheenInfos",size:4,type:"vec4"},{name:"sheenMatrix",size:16,type:"mat4"},{name:"sheenRoughnessMatrix",size:16,type:"mat4"}]}}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"isEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"linkSheenWithAlbedo",void 0);P([F()],da.prototype,"intensity",void 0);P([Tr()],da.prototype,"color",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"useRoughnessFromMainTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"roughness",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],da.prototype,"albedoScaling",void 0)});var NN,Ai,j9=I(()=>{Gt();Vt();Ht();Ua();ke();Xf();Ga();Xn();NN=class extends Mr{constructor(){super(...arguments),this.SUBSURFACE=!1,this.SS_REFRACTION=!1,this.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_TRANSLUCENCY=!1,this.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_SCATTERING=!1,this.SS_DISPERSION=!1,this.SS_THICKNESSANDMASK_TEXTURE=!1,this.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,this.SS_HAS_THICKNESS=!1,this.SS_REFRACTIONINTENSITY_TEXTURE=!1,this.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,this.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,this.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,this.SS_REFRACTIONMAP_3D=!1,this.SS_REFRACTIONMAP_OPPOSITEZ=!1,this.SS_LODINREFRACTIONALPHA=!1,this.SS_GAMMAREFRACTION=!1,this.SS_RGBDREFRACTION=!1,this.SS_LINEARSPECULARREFRACTION=!1,this.SS_LINKREFRACTIONTOTRANSPARENCY=!1,this.SS_ALBEDOFORREFRACTIONTINT=!1,this.SS_ALBEDOFORTRANSLUCENCYTINT=!1,this.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.SS_USE_THICKNESS_AS_DEPTH=!1,this.SS_USE_GLTF_TEXTURES=!1,this.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1,this.SS_TRANSLUCENCY_LEGACY=!1}},Ai=class n extends Hr{get scatteringDiffusionProfile(){return this._scene.subSurfaceConfiguration?this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex]:null}set scatteringDiffusionProfile(e){this._scene.enableSubSurfaceForPrePass()&&e&&(this._scatteringDiffusionProfileIndex=this._scene.subSurfaceConfiguration.addDiffusionProfile(e))}get volumeIndexOfRefraction(){return this._volumeIndexOfRefraction>=1?this._volumeIndexOfRefraction:this._indexOfRefraction}set volumeIndexOfRefraction(e){e>=1?this._volumeIndexOfRefraction=e:this._volumeIndexOfRefraction=-1}get legacyTransluceny(){return this.legacyTranslucency}set legacyTransluceny(e){this.legacyTranslucency=e}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markScenePrePassDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty(),this._internalMarkScenePrePassDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRSubSurface",130,new NN,t),this._isRefractionEnabled=!1,this.isRefractionEnabled=!1,this._isTranslucencyEnabled=!1,this.isTranslucencyEnabled=!1,this._isDispersionEnabled=!1,this.isDispersionEnabled=!1,this._isScatteringEnabled=!1,this.isScatteringEnabled=!1,this._scatteringDiffusionProfileIndex=0,this.refractionIntensity=1,this.translucencyIntensity=1,this._useAlbedoToTintRefraction=!1,this.useAlbedoToTintRefraction=!1,this._useAlbedoToTintTranslucency=!1,this.useAlbedoToTintTranslucency=!1,this._thicknessTexture=null,this.thicknessTexture=null,this._refractionTexture=null,this.refractionTexture=null,this._indexOfRefraction=1.5,this.indexOfRefraction=1.5,this._volumeIndexOfRefraction=-1,this._invertRefractionY=!1,this.invertRefractionY=!1,this._linkRefractionWithTransparency=!1,this.linkRefractionWithTransparency=!1,this.minimumThickness=0,this.maximumThickness=1,this.useThicknessAsDepth=!1,this.tintColor=pe.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=pe.White(),this._useMaskFromThicknessTexture=!1,this.useMaskFromThicknessTexture=!1,this._refractionIntensityTexture=null,this.refractionIntensityTexture=null,this._translucencyIntensityTexture=null,this.translucencyIntensityTexture=null,this.translucencyColor=null,this._translucencyColorTexture=null,this.translucencyColorTexture=null,this._useGltfStyleTextures=!0,this.useGltfStyleTextures=!0,this.applyAlbedoAfterSubSurface=n.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE,this.legacyTranslucency=n.DEFAULT_LEGACY_TRANSLUCENCY,this._scene=e.getScene(),this.registerForExtraEvents=!0,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkScenePrePassDirty=e._dirtyCallbacks[32]}isReadyForSubMesh(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&ce.RefractionTextureEnabled&&!i.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled){e.SUBSURFACE=!1,e.SS_DISPERSION=!1,e.SS_TRANSLUCENCY=!1,e.SS_SCATTERING=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,e.SS_HAS_THICKNESS=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,e.SS_REFRACTIONMAP_3D=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1;return}if(e._areTexturesDirty){if(e.SUBSURFACE=!0,e.SS_DISPERSION=this._isDispersionEnabled,e.SS_TRANSLUCENCY=this._isTranslucencyEnabled,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_LEGACY=this.legacyTranslucency,e.SS_SCATTERING=this._isScatteringEnabled,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_HAS_THICKNESS=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_REFRACTIONMAP_3D=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=this.applyAlbedoAfterSubSurface,e._areTexturesDirty&&t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&ri(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&ri(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&ri(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&(ri(this._translucencyColorTexture,e,"SS_TRANSLUCENCYCOLOR_TEXTURE"),e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=this._translucencyColorTexture.gammaSpace)),e.SS_HAS_THICKNESS=this.maximumThickness-this.minimumThickness!==0,e.SS_USE_GLTF_TEXTURES=this._useGltfStyleTextures,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._refractionIntensityTexture,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._translucencyIntensityTexture,this._isRefractionEnabled&&t.texturesEnabled){let i=this._getRefractionTexture(t);i&&ce.RefractionTextureEnabled&&(e.SS_REFRACTION=!0,e.SS_REFRACTIONMAP_3D=i.isCube,e.SS_GAMMAREFRACTION=i.gammaSpace,e.SS_RGBDREFRACTION=i.isRGBD,e.SS_LINEARSPECULARREFRACTION=i.linearSpecularLOD,e.SS_REFRACTIONMAP_OPPOSITEZ=this._scene.useRightHandedSystem&&i.isCube?!i.invertZ:i.invertZ,e.SS_LODINREFRACTIONALPHA=i.lodLevelInAlpha,e.SS_LINKREFRACTIONTOTRANSPARENCY=this._linkRefractionWithTransparency,e.SS_ALBEDOFORREFRACTIONTINT=this._useAlbedoToTintRefraction,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=i.isCube&&i.boundingBoxSize,e.SS_USE_THICKNESS_AS_DEPTH=this.useThicknessAsDepth)}this._isTranslucencyEnabled&&(e.SS_ALBEDOFORTRANSLUCENCYTINT=this._useAlbedoToTintTranslucency)}}hardBindForSubMesh(e,t,i,r){if(!(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled))if(this.maximumThickness===0&&this.minimumThickness===0)e.updateFloat2("vThicknessParam",0,0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat2("vThicknessParam",this.minimumThickness*s,(this.maximumThickness-this.minimumThickness)*s)}}bindForSubMesh(e,t,i,r){var f;if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material.realTimeFiltering,l=s.LODBASEDMICROSFURACE,c=this._getRefractionTexture(t);if(!e.useUbo||!a||!e.isSync){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),ni(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),ni(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),ni(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),ni(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&ce.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let h=c.getSize().width,u=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/u,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",h,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",h,Math.log2(h)),c.boundingBoxSize){let m=c;e.updateVector3("vRefractionPosition",m.boundingBoxPosition),e.updateVector3("vRefractionSize",m.boundingBoxSize)}}this._isScatteringEnabled&&e.updateFloat("scatteringDiffusionProfile",this._scatteringDiffusionProfileIndex),e.updateColor3("vDiffusionDistance",this.diffusionDistance),e.updateFloat4("vTintColor",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintColorAtDistance)),e.updateColor4("vTranslucencyColor",(f=this.translucencyColor)!=null?f:this.tintColor,0),e.updateFloat3("vSubSurfaceIntensity",this.refractionIntensity,this.translucencyIntensity,0),e.updateFloat("dispersion",this.dispersion)}t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&ce.RefractionTextureEnabled&&(l?e.setTexture("refractionSampler",c):(e.setTexture("refractionSampler",c._lodTextureMid||c),e.setTexture("refractionSamplerLow",c._lodTextureLow||c),e.setTexture("refractionSamplerHigh",c._lodTextureHigh||c))))}_getRefractionTexture(e){return this._refractionTexture?this._refractionTexture:this._isRefractionEnabled?e.environmentTexture:null}get disableAlphaBlending(){return this._isRefractionEnabled&&this._linkRefractionWithTransparency}fillRenderTargetTextures(e){ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&e.push(this._refractionTexture)}hasTexture(e){return this._thicknessTexture===e||this._refractionTexture===e||this._refractionIntensityTexture===e||this._translucencyIntensityTexture===e||this._translucencyColorTexture===e}hasRenderTargetTextures(){return!!(ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget)}getActiveTextures(e){this._thicknessTexture&&e.push(this._thicknessTexture),this._refractionTexture&&e.push(this._refractionTexture),this._refractionIntensityTexture&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&e.push(this._translucencyIntensityTexture)}getAnimatables(e){this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),this._refractionIntensityTexture&&this._refractionIntensityTexture.animations&&this._refractionIntensityTexture.animations.length>0&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&this._translucencyColorTexture.animations&&this._translucencyColorTexture.animations.length>0&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.animations&&this._translucencyIntensityTexture.animations.length>0&&e.push(this._translucencyIntensityTexture)}dispose(e){e&&(this._thicknessTexture&&this._thicknessTexture.dispose(),this._refractionTexture&&this._refractionTexture.dispose(),this._refractionIntensityTexture&&this._refractionIntensityTexture.dispose(),this._translucencyColorTexture&&this._translucencyColorTexture.dispose(),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.dispose())}getClassName(){return"PBRSubSurfaceConfiguration"}addFallbacks(e,t,i){return e.SS_SCATTERING&&t.addFallback(i++,"SS_SCATTERING"),e.SS_TRANSLUCENCY&&t.addFallback(i++,"SS_TRANSLUCENCY"),i}getSamplers(e){e.push("thicknessSampler","refractionIntensitySampler","translucencyIntensitySampler","refractionSampler","refractionSamplerLow","refractionSamplerHigh","translucencyColorSampler")}getUniforms(){return{ubo:[{name:"vRefractionMicrosurfaceInfos",size:4,type:"vec4"},{name:"vRefractionFilteringInfo",size:2,type:"vec2"},{name:"vTranslucencyIntensityInfos",size:2,type:"vec2"},{name:"vRefractionInfos",size:4,type:"vec4"},{name:"refractionMatrix",size:16,type:"mat4"},{name:"vThicknessInfos",size:2,type:"vec2"},{name:"vRefractionIntensityInfos",size:2,type:"vec2"},{name:"thicknessMatrix",size:16,type:"mat4"},{name:"refractionIntensityMatrix",size:16,type:"mat4"},{name:"translucencyIntensityMatrix",size:16,type:"mat4"},{name:"vThicknessParam",size:2,type:"vec2"},{name:"vDiffusionDistance",size:3,type:"vec3"},{name:"vTintColor",size:4,type:"vec4"},{name:"vSubSurfaceIntensity",size:3,type:"vec3"},{name:"vRefractionPosition",size:3,type:"vec3"},{name:"vRefractionSize",size:3,type:"vec3"},{name:"scatteringDiffusionProfile",size:1,type:"float"},{name:"dispersion",size:1,type:"float"},{name:"vTranslucencyColor",size:4,type:"vec4"},{name:"vTranslucencyColorInfos",size:2,type:"vec2"},{name:"translucencyColorMatrix",size:16,type:"mat4"}]}}};Ai.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ai.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isRefractionEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isTranslucencyEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"isDispersionEnabled",void 0);P([F(),le("_markScenePrePassDirty")],Ai.prototype,"isScatteringEnabled",void 0);P([F()],Ai.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ai.prototype,"refractionIntensity",void 0);P([F()],Ai.prototype,"translucencyIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useAlbedoToTintRefraction",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useAlbedoToTintTranslucency",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"thicknessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"refractionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"indexOfRefraction",void 0);P([F()],Ai.prototype,"_volumeIndexOfRefraction",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"volumeIndexOfRefraction",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"invertRefractionY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ai.prototype,"minimumThickness",void 0);P([F()],Ai.prototype,"maximumThickness",void 0);P([F()],Ai.prototype,"useThicknessAsDepth",void 0);P([Tr()],Ai.prototype,"tintColor",void 0);P([F()],Ai.prototype,"tintColorAtDistance",void 0);P([F()],Ai.prototype,"dispersion",void 0);P([Tr()],Ai.prototype,"diffusionDistance",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useMaskFromThicknessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"refractionIntensityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"translucencyIntensityTexture",void 0);P([Tr()],Ai.prototype,"translucencyColor",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"translucencyColorTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ai.prototype,"useGltfStyleTextures",void 0);P([F()],Ai.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ai.prototype,"legacyTranslucency",void 0)});var q9,$pe,wN=I(()=>{k();Sh();cv();q9="pbrUboDeclaration",$pe=`uniform vAlbedoInfos: vec2f;uniform vBaseWeightInfos: vec2f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform vAmbientInfos: vec4f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vReflectivityInfos: vec3f;uniform vMicroSurfaceSamplerInfos: vec2f;uniform vBumpInfos: vec3f;uniform albedoMatrix: mat4x4f;uniform baseWeightMatrix: mat4x4f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform reflectivityMatrix: mat4x4f;uniform microSurfaceSamplerMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform vAlbedoColor: vec4f;uniform baseWeight: f32;uniform baseDiffuseRoughness: f32;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vReflectivityColor: vec4f;uniform vEmissiveColor: vec3f;uniform vAmbientColor: vec3f;uniform vDebugMode: vec2f;uniform vMetallicReflectanceFactors: vec4f;uniform vMetallicReflectanceInfos: vec2f;uniform metallicReflectanceMatrix: mat4x4f;uniform vReflectanceInfos: vec2f;uniform reflectanceMatrix: mat4x4f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f; #define ADDITIONAL_UBO_DECLARATION #include #include -`;A.IncludesShadersStoreWGSL[Y9]||(A.IncludesShadersStoreWGSL[Y9]=Kpe)});var j9={};Be(j9,{pbrVertexShaderWGSL:()=>jpe});var ON,K9,jpe,q9=I(()=>{k();LN();tR();hp();wa();xp();uc();mc();Hf();iR();rR();Ap();sL();pc();jg();nR();Yf();Kf();Th();sR();aR();jf();qf();_c();gc();vc();oR();lR();cR();fR();Ec();qg();dR();Zg();hR();ON="pbrVertexShader",K9=`#define PBR_VERTEX_SHADER +`;A.IncludesShadersStoreWGSL[q9]||(A.IncludesShadersStoreWGSL[q9]=$pe)});var Q9={};Be(Q9,{pbrVertexShaderWGSL:()=>Jpe});var FN,Z9,Jpe,$9=I(()=>{k();wN();rR();hp();wa();xp();uc();mc();Hf();nR();sR();Ap();lL();pc();jg();aR();Yf();Kf();Th();oR();lR();jf();qf();_c();gc();vc();cR();fR();dR();hR();Ec();qg();uR();Zg();mR();FN="pbrVertexShader",Z9=`#define PBR_VERTEX_SHADER #include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING @@ -17774,7 +17774,7 @@ vertexOutputs.vMainUV2=uv2Updated; #include #include #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStoreWGSL[ON]||(A.ShadersStoreWGSL[ON]=K9);jpe={name:ON,shader:K9}});var Z9,qpe,Q9=I(()=>{k();Z9="samplerFragmentAlternateDeclaration",qpe=`#ifdef _DEFINENAME_ +}`;A.ShadersStoreWGSL[FN]||(A.ShadersStoreWGSL[FN]=Z9);Jpe={name:FN,shader:Z9}});var J9,e_e,eK=I(()=>{k();J9="samplerFragmentAlternateDeclaration",e_e=`#ifdef _DEFINENAME_ #if _DEFINENAME_DIRECTUV==1 #define v_VARYINGNAME_UV vMainUV1 #elif _DEFINENAME_DIRECTUV==2 @@ -17791,7 +17791,7 @@ vertexOutputs.vMainUV2=uv2Updated; varying v_VARYINGNAME_UV: vec2f; #endif #endif -`;A.IncludesShadersStoreWGSL[Z9]||(A.IncludesShadersStoreWGSL[Z9]=qpe)});var $9,Zpe,J9=I(()=>{k();Ah();Q9();bb();$9="pbrFragmentSamplersDeclaration",Zpe=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;A.IncludesShadersStoreWGSL[J9]||(A.IncludesShadersStoreWGSL[J9]=e_e)});var tK,t_e,iK=I(()=>{k();Ah();eK();Ib();tK="pbrFragmentSamplersDeclaration",t_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient) @@ -17854,7 +17854,7 @@ var refractionLowSamplerSampler: sampler;var refractionLowSampler: texture_2d; #endif -`;A.IncludesShadersStoreWGSL[$9]||(A.IncludesShadersStoreWGSL[$9]=Zpe)});var eK,Qpe,tK=I(()=>{k();cL();eK="pbrBlockAlbedoOpacity",Qpe=`struct albedoOpacityOutParams +`;A.IncludesShadersStoreWGSL[tK]||(A.IncludesShadersStoreWGSL[tK]=t_e)});var rK,i_e,nK=I(()=>{k();hL();rK="pbrBlockAlbedoOpacity",i_e=`struct albedoOpacityOutParams {surfaceAlbedo: vec3f, alpha: f32}; #define pbr_inline @@ -17933,7 +17933,7 @@ alpha=1.0; #endif #endif outParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;} -`;A.IncludesShadersStoreWGSL[eK]||(A.IncludesShadersStoreWGSL[eK]=Qpe)});var iK,$pe,rK=I(()=>{k();iK="pbrBlockReflectivity",$pe=`struct reflectivityOutParams +`;A.IncludesShadersStoreWGSL[rK]||(A.IncludesShadersStoreWGSL[rK]=i_e)});var sK,r_e,aK=I(()=>{k();sK="pbrBlockReflectivity",r_e=`struct reflectivityOutParams {microSurface: f32, roughness: f32, diffuseRoughness: f32, @@ -18093,7 +18093,7 @@ microSurface=saturate(microSurface);var roughness: f32=1.-microSurface;var diffu diffuseRoughness*=baseDiffuseRoughnessTexture*baseDiffuseRoughnessInfos.y; #endif outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.diffuseRoughness=diffuseRoughness;return outParams;} -`;A.IncludesShadersStoreWGSL[iK]||(A.IncludesShadersStoreWGSL[iK]=$pe)});var nK,Jpe,sK=I(()=>{k();nK="pbrBlockAmbientOcclusion",Jpe=`struct ambientOcclusionOutParams +`;A.IncludesShadersStoreWGSL[sK]||(A.IncludesShadersStoreWGSL[sK]=r_e)});var oK,n_e,lK=I(()=>{k();oK="pbrBlockAmbientOcclusion",n_e=`struct ambientOcclusionOutParams {ambientOcclusionColor: vec3f, #if DEBUGMODE>0 && defined(AMBIENT) ambientOcclusionColorMap: vec3f @@ -18119,7 +18119,7 @@ outParams.ambientOcclusionColorMap=ambientOcclusionColorMap; #endif #endif outParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;} -`;A.IncludesShadersStoreWGSL[nK]||(A.IncludesShadersStoreWGSL[nK]=Jpe)});var aK,e_e,oK=I(()=>{k();aK="pbrBlockAlphaFresnel",e_e=`#ifdef ALPHAFRESNEL +`;A.IncludesShadersStoreWGSL[oK]||(A.IncludesShadersStoreWGSL[oK]=n_e)});var cK,s_e,fK=I(()=>{k();cK="pbrBlockAlphaFresnel",s_e=`#ifdef ALPHAFRESNEL #if defined(ALPHATEST) || defined(ALPHABLEND) struct alphaFresnelOutParams {alpha: f32};fn faceforward(N: vec3,I: vec3,Nref: vec3)->vec3 {return select(N,-N,dot(Nref,I)>0.0);} @@ -18146,7 +18146,7 @@ outParams.alpha=1.0; return outParams;} #endif #endif -`;A.IncludesShadersStoreWGSL[aK]||(A.IncludesShadersStoreWGSL[aK]=e_e)});var lK,t_e,cK=I(()=>{k();lK="pbrBlockAnisotropic",t_e=`#ifdef ANISOTROPIC +`;A.IncludesShadersStoreWGSL[cK]||(A.IncludesShadersStoreWGSL[cK]=s_e)});var dK,a_e,hK=I(()=>{k();dK="pbrBlockAnisotropic",a_e=`#ifdef ANISOTROPIC struct anisotropicOutParams {anisotropy: f32, anisotropicTangent: vec3f, @@ -18183,7 +18183,7 @@ anisotropyDirection=vec3f(mat2x2f(anisotropyDirection.x,anisotropyDirection.y,-a #endif var anisoTBN: mat3x3f= mat3x3f(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));var anisotropicTangent: vec3f=normalize(anisoTBN*anisotropyDirection);var anisotropicBitangent: vec3f=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);return outParams;} #endif -`;A.IncludesShadersStoreWGSL[lK]||(A.IncludesShadersStoreWGSL[lK]=t_e)});var fK,i_e,dK=I(()=>{k();fK="pbrBlockReflection",i_e=`#ifdef REFLECTION +`;A.IncludesShadersStoreWGSL[dK]||(A.IncludesShadersStoreWGSL[dK]=a_e)});var uK,o_e,mK=I(()=>{k();uK="pbrBlockReflection",o_e=`#ifdef REFLECTION struct reflectionOutParams {environmentRadiance: vec4f ,environmentIrradiance: vec3f @@ -18493,7 +18493,7 @@ outParams.environmentRadiance=environmentRadiance; #endif outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;} #endif -`;A.IncludesShadersStoreWGSL[fK]||(A.IncludesShadersStoreWGSL[fK]=i_e)});var hK,r_e,uK=I(()=>{k();hK="pbrBlockSheen",r_e=`#ifdef SHEEN +`;A.IncludesShadersStoreWGSL[uK]||(A.IncludesShadersStoreWGSL[uK]=o_e)});var pK,l_e,_K=I(()=>{k();pK="pbrBlockSheen",l_e=`#ifdef SHEEN struct sheenOutParams {sheenIntensity: f32 ,sheenColor: vec3f @@ -18679,7 +18679,7 @@ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor. #endif outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;} #endif -`;A.IncludesShadersStoreWGSL[hK]||(A.IncludesShadersStoreWGSL[hK]=r_e)});var mK,n_e,pK=I(()=>{k();mK="pbrBlockClearcoat",n_e=`struct clearcoatOutParams +`;A.IncludesShadersStoreWGSL[pK]||(A.IncludesShadersStoreWGSL[pK]=l_e)});var gK,c_e,vK=I(()=>{k();gK="pbrBlockClearcoat",c_e=`struct clearcoatOutParams {specularEnvironmentR0: vec3f, conservationFactor: f32, clearCoatNormalW: vec3f, @@ -18932,7 +18932,7 @@ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParam #endif return outParams;} #endif -`;A.IncludesShadersStoreWGSL[mK]||(A.IncludesShadersStoreWGSL[mK]=n_e)});var _K,s_e,gK=I(()=>{k();_K="pbrBlockIridescence",s_e=`struct iridescenceOutParams +`;A.IncludesShadersStoreWGSL[gK]||(A.IncludesShadersStoreWGSL[gK]=c_e)});var EK,f_e,SK=I(()=>{k();EK="pbrBlockIridescence",f_e=`struct iridescenceOutParams {iridescenceIntensity: f32, iridescenceIOR: f32, iridescenceThickness: f32, @@ -18973,7 +18973,7 @@ topIor=mix(1.0,uniforms.vClearCoatRefractionParams.w-1.,clearCoatIntensity);view #endif var iridescenceFresnel: vec3f=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;} #endif -`;A.IncludesShadersStoreWGSL[_K]||(A.IncludesShadersStoreWGSL[_K]=s_e)});var vK,a_e,EK=I(()=>{k();vK="pbrBlockSubSurface",a_e=`struct subSurfaceOutParams +`;A.IncludesShadersStoreWGSL[EK]||(A.IncludesShadersStoreWGSL[EK]=f_e)});var TK,d_e,AK=I(()=>{k();TK="pbrBlockSubSurface",d_e=`struct subSurfaceOutParams {specularEnvironmentReflectance: vec3f, #ifdef SS_REFRACTION finalRefraction: vec3f, @@ -19395,7 +19395,7 @@ outParams.refractionIrradiance=refractionIrradiance; #endif return outParams;} #endif -`;A.IncludesShadersStoreWGSL[vK]||(A.IncludesShadersStoreWGSL[vK]=a_e)});var SK,o_e,TK=I(()=>{k();SK="pbrBlockNormalFinal",o_e=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;A.IncludesShadersStoreWGSL[TK]||(A.IncludesShadersStoreWGSL[TK]=d_e)});var xK,h_e,RK=I(()=>{k();xK="pbrBlockNormalFinal",h_e=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) var faceNormal: vec3f=normalize(cross(dpdx(fragmentInputs.vPositionW),dpdy(fragmentInputs.vPositionW)))*scene.vEyePosition.w; #if defined(TWOSIDEDLIGHTING) faceNormal=select(-faceNormal,faceNormal,fragmentInputs.frontFacing); @@ -19409,7 +19409,7 @@ normalW=select(normalW,-normalW,fragmentInputs.frontFacing); normalW=select(-normalW,normalW,fragmentInputs.frontFacing); #endif #endif -`;A.IncludesShadersStoreWGSL[SK]||(A.IncludesShadersStoreWGSL[SK]=o_e)});var AK,l_e,xK=I(()=>{k();AK="pbrBlockLightmapInit",l_e=`#ifdef LIGHTMAP +`;A.IncludesShadersStoreWGSL[xK]||(A.IncludesShadersStoreWGSL[xK]=h_e)});var bK,u_e,MK=I(()=>{k();bK="pbrBlockLightmapInit",u_e=`#ifdef LIGHTMAP var lightmapColor: vec4f=textureSample(lightmapSampler,lightmapSamplerSampler,fragmentInputs.vLightmapUV+uvOffset); #ifdef RGBDLIGHTMAP lightmapColor=vec4f(fromRGBD(lightmapColor),lightmapColor.a); @@ -19419,7 +19419,7 @@ lightmapColor=vec4f(toLinearSpaceVec3(lightmapColor.rgb),lightmapColor.a); #endif lightmapColor=vec4f(lightmapColor.rgb*uniforms.vLightmapInfos.y,lightmapColor.a); #endif -`;A.IncludesShadersStoreWGSL[AK]||(A.IncludesShadersStoreWGSL[AK]=l_e)});var RK,c_e,bK=I(()=>{k();RK="pbrBlockGeometryInfo",c_e=`var NdotVUnclamped: f32=dot(normalW,viewDirectionW);var NdotV: f32=absEps(NdotVUnclamped);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var AARoughnessFactors: vec2f=getAARoughnessFactors(normalW.xyz); +`;A.IncludesShadersStoreWGSL[bK]||(A.IncludesShadersStoreWGSL[bK]=u_e)});var IK,m_e,yK=I(()=>{k();IK="pbrBlockGeometryInfo",m_e=`var NdotVUnclamped: f32=dot(normalW,viewDirectionW);var NdotV: f32=absEps(NdotVUnclamped);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var AARoughnessFactors: vec2f=getAARoughnessFactors(normalW.xyz); #ifdef SPECULARAA alphaG+=AARoughnessFactors.y; #endif @@ -19443,7 +19443,7 @@ var eho: f32=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormal #endif #endif #endif -`;A.IncludesShadersStoreWGSL[RK]||(A.IncludesShadersStoreWGSL[RK]=c_e)});var MK,f_e,IK=I(()=>{k();MK="pbrBlockReflectance",f_e=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) +`;A.IncludesShadersStoreWGSL[IK]||(A.IncludesShadersStoreWGSL[IK]=m_e)});var CK,p_e,PK=I(()=>{k();CK="pbrBlockReflectance",p_e=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) var baseSpecularEnvironmentReflectance: vec3f=getReflectanceFromBRDFWithEnvLookup(vec3f(reflectanceF0),vec3f(reflectivityOut.reflectanceF90),environmentBrdf); #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) let metalEnvironmentReflectance: vec3f=vec3f(reflectivityOut.specularWeight)*getF82Specular(NdotV,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);let dielectricEnvironmentReflectance=getReflectanceFromBRDFWithEnvLookup(reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90,environmentBrdf);var colorSpecularEnvironmentReflectance: vec3f=mix(dielectricEnvironmentReflectance,metalEnvironmentReflectance,reflectivityOut.metallic); @@ -19469,7 +19469,7 @@ colorSpecularEnvironmentReflectance*=clearcoatOut.conservationFactor; colorSpecularEnvironmentReflectance*=clearcoatOut.absorption; #endif #endif -`;A.IncludesShadersStoreWGSL[MK]||(A.IncludesShadersStoreWGSL[MK]=f_e)});var yK,d_e,CK=I(()=>{k();yK="pbrBlockDirectLighting",d_e=`var diffuseBase: vec3f=vec3f(0.,0.,0.); +`;A.IncludesShadersStoreWGSL[CK]||(A.IncludesShadersStoreWGSL[CK]=p_e)});var DK,__e,LK=I(()=>{k();DK="pbrBlockDirectLighting",__e=`var diffuseBase: vec3f=vec3f(0.,0.,0.); #ifdef SS_TRANSLUCENCY var diffuseTransmissionBase: vec3f=vec3f(0.,0.,0.); #endif @@ -19490,7 +19490,7 @@ var aggShadow: f32=0.;var numLights: f32=0.; #if defined(CLEARCOAT) && defined(CLEARCOAT_TINT) var absorption: vec3f=vec3f(0.); #endif -`;A.IncludesShadersStoreWGSL[yK]||(A.IncludesShadersStoreWGSL[yK]=d_e)});var PK,h_e,DK=I(()=>{k();PK="pbrBlockFinalLitComponents",h_e=`aggShadow=aggShadow/numLights; +`;A.IncludesShadersStoreWGSL[DK]||(A.IncludesShadersStoreWGSL[DK]=__e)});var OK,g_e,NK=I(()=>{k();OK="pbrBlockFinalLitComponents",g_e=`aggShadow=aggShadow/numLights; #if defined(ENVIRONMENTBRDF) #ifdef MS_BRDF_ENERGY_CONSERVATION var baseSpecularEnergyConservationFactor: vec3f=getEnergyConservationFactor(vec3f(reflectanceF0),environmentBrdf);var coloredEnergyConservationFactor: vec3f=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf); @@ -19596,7 +19596,7 @@ luminanceOverAlpha+=getLuminance(finalClearCoatScaled); alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha); #endif #endif -`;A.IncludesShadersStoreWGSL[PK]||(A.IncludesShadersStoreWGSL[PK]=h_e)});var LK,u_e,OK=I(()=>{k();LK="pbrBlockFinalUnlitComponents",u_e=`var finalDiffuse: vec3f=diffuseBase;finalDiffuse*=surfaceAlbedo; +`;A.IncludesShadersStoreWGSL[OK]||(A.IncludesShadersStoreWGSL[OK]=g_e)});var wK,v_e,FK=I(()=>{k();wK="pbrBlockFinalUnlitComponents",v_e=`var finalDiffuse: vec3f=diffuseBase;finalDiffuse*=surfaceAlbedo; #if defined(SS_REFRACTION) && !defined(UNLIT) && !defined(LEGACY_SPECULAR_ENERGY_CONSERVATION) finalDiffuse*=subSurfaceOut.refractionOpacity; #endif @@ -19620,7 +19620,7 @@ var ambientOcclusionForDirectDiffuse: vec3f=mix( vec3f(1.),aoOut.ambientOcclusio var ambientOcclusionForDirectDiffuse: vec3f=aoOut.ambientOcclusionColor; #endif finalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse; -`;A.IncludesShadersStoreWGSL[LK]||(A.IncludesShadersStoreWGSL[LK]=u_e)});var NK,m_e,wK=I(()=>{k();NK="pbrBlockFinalColorComposition",m_e=`var finalColor: vec4f= vec4f( +`;A.IncludesShadersStoreWGSL[wK]||(A.IncludesShadersStoreWGSL[wK]=v_e)});var BK,E_e,UK=I(()=>{k();BK="pbrBlockFinalColorComposition",E_e=`var finalColor: vec4f= vec4f( #ifndef UNLIT #ifdef REFLECTION finalIrradiance + @@ -19662,7 +19662,7 @@ finalColor=vec4f(finalColor.rgb+lightmapColor.rgb,finalColor.a); finalColor=vec4f(finalColor.rgb+finalEmissive,finalColor.a); #define CUSTOM_FRAGMENT_BEFORE_FOG finalColor=max(finalColor,vec4f(0.0)); -`;A.IncludesShadersStoreWGSL[NK]||(A.IncludesShadersStoreWGSL[NK]=m_e)});var FK,p_e,BK=I(()=>{k();FK="pbrBlockPrePass",p_e=`#if SCENE_MRT_COUNT>0 +`;A.IncludesShadersStoreWGSL[BK]||(A.IncludesShadersStoreWGSL[BK]=E_e)});var VK,S_e,GK=I(()=>{k();VK="pbrBlockPrePass",S_e=`#if SCENE_MRT_COUNT>0 var writeGeometryInfo: f32=select(0.0,1.0,finalColor.a>ALPHATESTVALUE);var fragData: array,SCENE_MRT_COUNT>; #ifdef PREPASS_POSITION fragData[PREPASS_POSITION_INDEX]= vec4f(fragmentInputs.vPositionW,writeGeometryInfo); @@ -19768,7 +19768,7 @@ fragmentOutputs.fragData6=fragData[6]; fragmentOutputs.fragData7=fragData[7]; #endif #endif -`;A.IncludesShadersStoreWGSL[FK]||(A.IncludesShadersStoreWGSL[FK]=p_e)});var VK={};Be(VK,{pbrPixelShaderWGSL:()=>__e});var NN,UK,__e,GK=I(()=>{k();uR();mR();LN();qO();pR();J9();gR();Sc();Th();Qg();wa();ZO();QO();$O();vR();_R();Ap();JO();eN();xp();tN();rN();Mb();ER();SR();fv();tK();rK();sK();oK();cK();dK();uK();pK();gK();EK();Tc();nN();TR();TK();AR();xK();bK();iN();IK();CK();fL();DK();OK();wK();xR();$g();sN();BK();RR();aN();NN="pbrPixelShader",UK=`#define PBR_FRAGMENT_SHADER +`;A.IncludesShadersStoreWGSL[VK]||(A.IncludesShadersStoreWGSL[VK]=S_e)});var WK={};Be(WK,{pbrPixelShaderWGSL:()=>T_e});var BN,kK,T_e,HK=I(()=>{k();pR();_R();wN();$O();gR();iK();ER();Sc();Th();Qg();wa();JO();eN();tN();SR();vR();Ap();iN();rN();xp();nN();aN();yb();TR();AR();fv();nK();aK();lK();fK();hK();mK();_K();vK();SK();AK();Tc();oN();xR();RK();RR();MK();yK();sN();PK();LK();uL();NK();FK();UK();bR();$g();lN();GK();MR();cN();BN="pbrPixelShader",kK=`#define PBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_BEGIN #include[SCENE_MRT_COUNT] #include @@ -20332,7 +20332,7 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #include #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStoreWGSL[NN]||(A.ShadersStoreWGSL[NN]=UK);__e={name:NN,shader:UK}});var kK,g_e,WK=I(()=>{k();bR();kK="pbrVertexDeclaration",g_e=`uniform mat4 view;uniform mat4 viewProjection;uniform vec4 vEyePosition; +`;A.ShadersStoreWGSL[BN]||(A.ShadersStoreWGSL[BN]=kK);T_e={name:BN,shader:kK}});var zK,A_e,XK=I(()=>{k();IR();zK="pbrVertexDeclaration",A_e=`uniform mat4 view;uniform mat4 viewProjection;uniform vec4 vEyePosition; #ifdef MULTIVIEW mat4 viewProjectionR; #endif @@ -20457,12 +20457,12 @@ uniform vec4 vDetailInfos;uniform mat4 detailMatrix; #endif #include #define ADDITIONAL_VERTEX_DECLARATION -`;A.IncludesShadersStore[kK]||(A.IncludesShadersStore[kK]=g_e)});var HK,v_e,wN=I(()=>{k();xh();dv();HK="pbrUboDeclaration",v_e=`layout(std140,column_major) uniform;uniform Material {vec2 vAlbedoInfos;vec2 vBaseWeightInfos;vec2 vBaseDiffuseRoughnessInfos;vec4 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec3 vReflectivityInfos;vec2 vMicroSurfaceSamplerInfos;vec3 vBumpInfos;mat4 albedoMatrix;mat4 baseWeightMatrix;mat4 baseDiffuseRoughnessMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 reflectivityMatrix;mat4 microSurfaceSamplerMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;vec4 vAlbedoColor;float baseWeight;float baseDiffuseRoughness;vec4 vLightingIntensity;float pointSize;vec4 vReflectivityColor;vec3 vEmissiveColor;vec3 vAmbientColor;vec2 vDebugMode;vec4 vMetallicReflectanceFactors;vec2 vMetallicReflectanceInfos;mat4 metallicReflectanceMatrix;vec2 vReflectanceInfos;mat4 reflectanceMatrix;vec4 cameraInfo;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX; +`;A.IncludesShadersStore[zK]||(A.IncludesShadersStore[zK]=A_e)});var YK,x_e,UN=I(()=>{k();xh();dv();YK="pbrUboDeclaration",x_e=`layout(std140,column_major) uniform;uniform Material {vec2 vAlbedoInfos;vec2 vBaseWeightInfos;vec2 vBaseDiffuseRoughnessInfos;vec4 vAmbientInfos;vec2 vOpacityInfos;vec2 vEmissiveInfos;vec2 vLightmapInfos;vec3 vReflectivityInfos;vec2 vMicroSurfaceSamplerInfos;vec3 vBumpInfos;mat4 albedoMatrix;mat4 baseWeightMatrix;mat4 baseDiffuseRoughnessMatrix;mat4 ambientMatrix;mat4 opacityMatrix;mat4 emissiveMatrix;mat4 lightmapMatrix;mat4 reflectivityMatrix;mat4 microSurfaceSamplerMatrix;mat4 bumpMatrix;vec2 vTangentSpaceParams;vec4 vAlbedoColor;float baseWeight;float baseDiffuseRoughness;vec4 vLightingIntensity;float pointSize;vec4 vReflectivityColor;vec3 vEmissiveColor;vec3 vAmbientColor;vec2 vDebugMode;vec4 vMetallicReflectanceFactors;vec2 vMetallicReflectanceInfos;mat4 metallicReflectanceMatrix;vec2 vReflectanceInfos;mat4 reflectanceMatrix;vec4 cameraInfo;vec2 vReflectionInfos;mat4 reflectionMatrix;vec3 vReflectionMicrosurfaceInfos;vec3 vReflectionPosition;vec3 vReflectionSize;vec2 vReflectionFilteringInfo;vec3 vReflectionDominantDirection;vec3 vReflectionColor;vec3 vSphericalL00;vec3 vSphericalL1_1;vec3 vSphericalL10;vec3 vSphericalL11;vec3 vSphericalL2_2;vec3 vSphericalL2_1;vec3 vSphericalL20;vec3 vSphericalL21;vec3 vSphericalL22;vec3 vSphericalX;vec3 vSphericalY;vec3 vSphericalZ;vec3 vSphericalXX_ZZ;vec3 vSphericalYY_ZZ;vec3 vSphericalZZ;vec3 vSphericalXY;vec3 vSphericalYZ;vec3 vSphericalZX; #define ADDITIONAL_UBO_DECLARATION }; #include #include -`;A.IncludesShadersStore[HK]||(A.IncludesShadersStore[HK]=v_e)});var XK={};Be(XK,{pbrVertexShader:()=>E_e});var FN,zK,E_e,YK=I(()=>{k();WK();wN();MR();up();Fa();Sp();Ac();xc();zf();IR();yR();Tp();uL();Rc();Jg();CR();PR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();DR();LR();OR();NR();yc();ev();wR();tv();FR();FN="pbrVertexShader",zK=`#define PBR_VERTEX_SHADER +`;A.IncludesShadersStore[YK]||(A.IncludesShadersStore[YK]=x_e)});var jK={};Be(jK,{pbrVertexShader:()=>R_e});var VN,KK,R_e,qK=I(()=>{k();XK();UN();yR();up();Fa();Sp();Ac();xc();zf();CR();PR();Tp();_L();Rc();Jg();DR();LR();Zf();Qf();Rh();$f();Jf();bc();Mc();Ic();OR();NR();wR();FR();yc();ev();BR();tv();UR();VN="pbrVertexShader",KK=`#define PBR_VERTEX_SHADER #define CUSTOM_VERTEX_EXTENSION precision highp float; #include<__decl__pbrVertex> @@ -20693,7 +20693,7 @@ gl_PointSize=pointSize; #include #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStore[FN]||(A.ShadersStore[FN]=zK);E_e={name:FN,shader:zK}});var KK,S_e,jK=I(()=>{k();BR();KK="pbrFragmentDeclaration",S_e=`uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform float baseWeight;uniform float baseDiffuseRoughness;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor; +`;A.ShadersStore[VN]||(A.ShadersStore[VN]=KK);R_e={name:VN,shader:KK}});var ZK,b_e,QK=I(()=>{k();VR();ZK="pbrFragmentDeclaration",b_e=`uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform float baseWeight;uniform float baseDiffuseRoughness;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor; #ifdef ALBEDO uniform vec2 vAlbedoInfos; #endif @@ -20841,7 +20841,7 @@ uniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;unifo #endif #endif #define ADDITIONAL_FRAGMENT_DECLARATION -`;A.IncludesShadersStore[KK]||(A.IncludesShadersStore[KK]=S_e)});var qK,T_e,ZK=I(()=>{k();qK="samplerFragmentAlternateDeclaration",T_e=`#ifdef _DEFINENAME_ +`;A.IncludesShadersStore[ZK]||(A.IncludesShadersStore[ZK]=b_e)});var $K,M_e,JK=I(()=>{k();$K="samplerFragmentAlternateDeclaration",M_e=`#ifdef _DEFINENAME_ #if _DEFINENAME_DIRECTUV==1 #define v_VARYINGNAME_UV vMainUV1 #elif _DEFINENAME_DIRECTUV==2 @@ -20858,7 +20858,7 @@ uniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;unifo varying vec2 v_VARYINGNAME_UV; #endif #endif -`;A.IncludesShadersStore[qK]||(A.IncludesShadersStore[qK]=T_e)});var QK,A_e,$K=I(()=>{k();bh();ZK();xb();QK="pbrFragmentSamplersDeclaration",A_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;A.IncludesShadersStore[$K]||(A.IncludesShadersStore[$K]=M_e)});var ej,I_e,tj=I(()=>{k();bh();JK();bb();ej="pbrFragmentSamplersDeclaration",I_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient) @@ -20925,7 +20925,7 @@ uniform sampler2D refractionSamplerLow;uniform sampler2D refractionSamplerHigh; #ifdef IBL_CDF_FILTERING uniform sampler2D icdfSampler; #endif -`;A.IncludesShadersStore[QK]||(A.IncludesShadersStore[QK]=A_e)});var JK,x_e,ej=I(()=>{k();vL();JK="pbrBlockAlbedoOpacity",x_e=`struct albedoOpacityOutParams +`;A.IncludesShadersStore[ej]||(A.IncludesShadersStore[ej]=I_e)});var ij,y_e,rj=I(()=>{k();TL();ij="pbrBlockAlbedoOpacity",y_e=`struct albedoOpacityOutParams {vec3 surfaceAlbedo;float alpha;}; #define pbr_inline albedoOpacityOutParams albedoOpacityBlock( @@ -21004,7 +21004,7 @@ alpha=1.0; #endif #endif outParams.surfaceAlbedo=surfaceAlbedo;outParams.alpha=alpha;return outParams;} -`;A.IncludesShadersStore[JK]||(A.IncludesShadersStore[JK]=x_e)});var tj,R_e,ij=I(()=>{k();tj="pbrBlockReflectivity",R_e=`struct reflectivityOutParams +`;A.IncludesShadersStore[ij]||(A.IncludesShadersStore[ij]=y_e)});var nj,C_e,sj=I(()=>{k();nj="pbrBlockReflectivity",C_e=`struct reflectivityOutParams {float microSurface;float roughness;float diffuseRoughness;float reflectanceF0;vec3 reflectanceF90;vec3 colorReflectanceF0;vec3 colorReflectanceF90; #ifdef METALLICWORKFLOW vec3 surfaceAlbedo;float metallic;float specularWeight;vec3 dielectricColorF0; @@ -21151,7 +21151,7 @@ microSurface=saturate(microSurface);float roughness=1.-microSurface;float diffus diffuseRoughness*=baseDiffuseRoughnessTexture*baseDiffuseRoughnessInfos.y; #endif outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.diffuseRoughness=diffuseRoughness;return outParams;} -`;A.IncludesShadersStore[tj]||(A.IncludesShadersStore[tj]=R_e)});var rj,b_e,nj=I(()=>{k();rj="pbrBlockAmbientOcclusion",b_e=`struct ambientOcclusionOutParams +`;A.IncludesShadersStore[nj]||(A.IncludesShadersStore[nj]=C_e)});var aj,P_e,oj=I(()=>{k();aj="pbrBlockAmbientOcclusion",P_e=`struct ambientOcclusionOutParams {vec3 ambientOcclusionColor; #if DEBUGMODE>0 && defined(AMBIENT) vec3 ambientOcclusionColorMap; @@ -21174,7 +21174,7 @@ outParams.ambientOcclusionColorMap=ambientOcclusionColorMap; #endif #endif outParams.ambientOcclusionColor=ambientOcclusionColor;return outParams;} -`;A.IncludesShadersStore[rj]||(A.IncludesShadersStore[rj]=b_e)});var sj,M_e,aj=I(()=>{k();sj="pbrBlockAlphaFresnel",M_e=`#ifdef ALPHAFRESNEL +`;A.IncludesShadersStore[aj]||(A.IncludesShadersStore[aj]=P_e)});var lj,D_e,cj=I(()=>{k();lj="pbrBlockAlphaFresnel",D_e=`#ifdef ALPHAFRESNEL #if defined(ALPHATEST) || defined(ALPHABLEND) struct alphaFresnelOutParams {float alpha;}; @@ -21202,7 +21202,7 @@ outParams.alpha=1.0; return outParams;} #endif #endif -`;A.IncludesShadersStore[sj]||(A.IncludesShadersStore[sj]=M_e)});var oj,I_e,lj=I(()=>{k();oj="pbrBlockAnisotropic",I_e=`#ifdef ANISOTROPIC +`;A.IncludesShadersStore[lj]||(A.IncludesShadersStore[lj]=D_e)});var fj,L_e,dj=I(()=>{k();fj="pbrBlockAnisotropic",L_e=`#ifdef ANISOTROPIC struct anisotropicOutParams {float anisotropy;vec3 anisotropicTangent;vec3 anisotropicBitangent;vec3 anisotropicNormal; #if DEBUGMODE>0 && defined(ANISOTROPIC_TEXTURE) @@ -21235,7 +21235,7 @@ anisotropyDirection.xy=mat2(anisotropyDirection.x,anisotropyDirection.y,-anisotr #endif mat3 anisoTBN=mat3(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));vec3 anisotropicTangent=normalize(anisoTBN*anisotropyDirection);vec3 anisotropicBitangent=normalize(cross(anisoTBN[2],anisotropicTangent));outParams.anisotropy=anisotropy;outParams.anisotropicTangent=anisotropicTangent;outParams.anisotropicBitangent=anisotropicBitangent;outParams.anisotropicNormal=getAnisotropicBentNormals(anisotropicTangent,anisotropicBitangent,normalW,viewDirectionW,anisotropy,roughness);return outParams;} #endif -`;A.IncludesShadersStore[oj]||(A.IncludesShadersStore[oj]=I_e)});var cj,y_e,fj=I(()=>{k();cj="pbrBlockReflection",y_e=`#ifdef REFLECTION +`;A.IncludesShadersStore[fj]||(A.IncludesShadersStore[fj]=L_e)});var hj,O_e,uj=I(()=>{k();hj="pbrBlockReflection",O_e=`#ifdef REFLECTION struct reflectionOutParams {vec4 environmentRadiance;vec3 environmentIrradiance; #ifdef REFLECTIONMAP_3D @@ -21520,7 +21520,7 @@ outParams.environmentRadiance=environmentRadiance; #endif outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;} #endif -`;A.IncludesShadersStore[cj]||(A.IncludesShadersStore[cj]=y_e)});var dj,C_e,hj=I(()=>{k();dj="pbrBlockSheen",C_e=`#ifdef SHEEN +`;A.IncludesShadersStore[hj]||(A.IncludesShadersStore[hj]=O_e)});var mj,N_e,pj=I(()=>{k();mj="pbrBlockSheen",N_e=`#ifdef SHEEN struct sheenOutParams {float sheenIntensity;vec3 sheenColor;float sheenRoughness; #ifdef SHEEN_LINKWITHALBEDO @@ -21697,7 +21697,7 @@ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor. #endif outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;} #endif -`;A.IncludesShadersStore[dj]||(A.IncludesShadersStore[dj]=C_e)});var uj,P_e,mj=I(()=>{k();uj="pbrBlockClearcoat",P_e=`struct clearcoatOutParams +`;A.IncludesShadersStore[mj]||(A.IncludesShadersStore[mj]=N_e)});var _j,w_e,gj=I(()=>{k();_j="pbrBlockClearcoat",w_e=`struct clearcoatOutParams {vec3 specularEnvironmentR0;float conservationFactor;vec3 clearCoatNormalW;vec2 clearCoatAARoughnessFactors;float clearCoatIntensity;float clearCoatRoughness; #ifdef REFLECTION vec3 finalClearCoatRadianceScaled; @@ -21934,7 +21934,7 @@ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParam #endif return outParams;} #endif -`;A.IncludesShadersStore[uj]||(A.IncludesShadersStore[uj]=P_e)});var pj,D_e,_j=I(()=>{k();pj="pbrBlockIridescence",D_e=`struct iridescenceOutParams +`;A.IncludesShadersStore[_j]||(A.IncludesShadersStore[_j]=w_e)});var vj,F_e,Ej=I(()=>{k();vj="pbrBlockIridescence",F_e=`struct iridescenceOutParams {float iridescenceIntensity;float iridescenceIOR;float iridescenceThickness;vec3 specularEnvironmentR0;}; #ifdef IRIDESCENCE #define pbr_inline @@ -21974,7 +21974,7 @@ topIor=mix(1.0,vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqr #endif vec3 iridescenceFresnel=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;return outParams;} #endif -`;A.IncludesShadersStore[pj]||(A.IncludesShadersStore[pj]=D_e)});var gj,L_e,vj=I(()=>{k();gj="pbrBlockSubSurface",L_e=`struct subSurfaceOutParams +`;A.IncludesShadersStore[vj]||(A.IncludesShadersStore[vj]=F_e)});var Sj,B_e,Tj=I(()=>{k();Sj="pbrBlockSubSurface",B_e=`struct subSurfaceOutParams {vec3 specularEnvironmentReflectance; #ifdef SS_REFRACTION vec3 finalRefraction;vec3 surfaceAlbedo; @@ -22371,11 +22371,11 @@ outParams.refractionIrradiance=refractionIrradiance.rgb; #endif return outParams;} #endif -`;A.IncludesShadersStore[gj]||(A.IncludesShadersStore[gj]=L_e)});var Ej,O_e,BN=I(()=>{k();Ej="pbrBlockReflectance0",O_e=`float reflectanceF0=reflectivityOut.reflectanceF0;vec3 specularEnvironmentR0=reflectivityOut.colorReflectanceF0;vec3 specularEnvironmentR90=reflectivityOut.colorReflectanceF90; +`;A.IncludesShadersStore[Sj]||(A.IncludesShadersStore[Sj]=B_e)});var Aj,U_e,GN=I(()=>{k();Aj="pbrBlockReflectance0",U_e=`float reflectanceF0=reflectivityOut.reflectanceF0;vec3 specularEnvironmentR0=reflectivityOut.colorReflectanceF0;vec3 specularEnvironmentR90=reflectivityOut.colorReflectanceF90; #ifdef ALPHAFRESNEL float reflectance90=fresnelGrazingReflectance(reflectanceF0);specularEnvironmentR90=specularEnvironmentR90*reflectance90; #endif -`;A.IncludesShadersStore[Ej]||(A.IncludesShadersStore[Ej]=O_e)});var Sj,N_e,Tj=I(()=>{k();gL();BN();Sj="pbrClusteredLightingFunctions",N_e=`#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 +`;A.IncludesShadersStore[Aj]||(A.IncludesShadersStore[Aj]=U_e)});var xj,V_e,Rj=I(()=>{k();SL();GN();xj="pbrClusteredLightingFunctions",V_e=`#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 #include #define inline lightingInfo computeClusteredLighting( @@ -22488,7 +22488,7 @@ result.sheen+=info.sheen; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;A.IncludesShadersStore[Sj]||(A.IncludesShadersStore[Sj]=N_e)});var Aj,w_e,xj=I(()=>{k();Aj="pbrBlockNormalFinal",w_e=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;A.IncludesShadersStore[xj]||(A.IncludesShadersStore[xj]=V_e)});var bj,G_e,Mj=I(()=>{k();bj="pbrBlockNormalFinal",G_e=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) vec3 faceNormal=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w; #if defined(TWOSIDEDLIGHTING) faceNormal=gl_FrontFacing ? faceNormal : -faceNormal; @@ -22502,7 +22502,7 @@ normalW=gl_FrontFacing ? -normalW : normalW; normalW=gl_FrontFacing ? normalW : -normalW; #endif #endif -`;A.IncludesShadersStore[Aj]||(A.IncludesShadersStore[Aj]=w_e)});var Rj,F_e,bj=I(()=>{k();Rj="pbrBlockLightmapInit",F_e=`#ifdef LIGHTMAP +`;A.IncludesShadersStore[bj]||(A.IncludesShadersStore[bj]=G_e)});var Ij,k_e,yj=I(()=>{k();Ij="pbrBlockLightmapInit",k_e=`#ifdef LIGHTMAP vec4 lightmapColor=texture2D(lightmapSampler,vLightmapUV+uvOffset); #ifdef RGBDLIGHTMAP lightmapColor.rgb=fromRGBD(lightmapColor); @@ -22512,7 +22512,7 @@ lightmapColor.rgb=toLinearSpace(lightmapColor.rgb); #endif lightmapColor.rgb*=vLightmapInfos.y; #endif -`;A.IncludesShadersStore[Rj]||(A.IncludesShadersStore[Rj]=F_e)});var Mj,B_e,Ij=I(()=>{k();Mj="pbrBlockGeometryInfo",B_e=`float NdotVUnclamped=dot(normalW,viewDirectionW);float NdotV=absEps(NdotVUnclamped);float alphaG=convertRoughnessToAverageSlope(roughness);vec2 AARoughnessFactors=getAARoughnessFactors(normalW.xyz); +`;A.IncludesShadersStore[Ij]||(A.IncludesShadersStore[Ij]=k_e)});var Cj,W_e,Pj=I(()=>{k();Cj="pbrBlockGeometryInfo",W_e=`float NdotVUnclamped=dot(normalW,viewDirectionW);float NdotV=absEps(NdotVUnclamped);float alphaG=convertRoughnessToAverageSlope(roughness);vec2 AARoughnessFactors=getAARoughnessFactors(normalW.xyz); #ifdef SPECULARAA alphaG+=AARoughnessFactors.y; #endif @@ -22536,7 +22536,7 @@ float eho=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW); #endif #endif #endif -`;A.IncludesShadersStore[Mj]||(A.IncludesShadersStore[Mj]=B_e)});var yj,U_e,Cj=I(()=>{k();yj="pbrBlockReflectance",U_e=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) +`;A.IncludesShadersStore[Cj]||(A.IncludesShadersStore[Cj]=W_e)});var Dj,H_e,Lj=I(()=>{k();Dj="pbrBlockReflectance",H_e=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) vec3 baseSpecularEnvironmentReflectance=getReflectanceFromBRDFLookup(vec3(reflectanceF0),reflectivityOut.reflectanceF90,environmentBrdf); #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR) vec3 metalEnvironmentReflectance=reflectivityOut.specularWeight*getF82Specular(NdotV,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);vec3 dielectricEnvironmentReflectance=getReflectanceFromBRDFLookup(reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90,environmentBrdf);vec3 colorSpecularEnvironmentReflectance=mix(dielectricEnvironmentReflectance,metalEnvironmentReflectance,reflectivityOut.metallic); @@ -22562,7 +22562,7 @@ colorSpecularEnvironmentReflectance*=clearcoatOut.conservationFactor; colorSpecularEnvironmentReflectance*=clearcoatOut.absorption; #endif #endif -`;A.IncludesShadersStore[yj]||(A.IncludesShadersStore[yj]=U_e)});var Pj,V_e,Dj=I(()=>{k();Pj="pbrBlockDirectLighting",V_e=`vec3 diffuseBase=vec3(0.,0.,0.); +`;A.IncludesShadersStore[Dj]||(A.IncludesShadersStore[Dj]=H_e)});var Oj,z_e,Nj=I(()=>{k();Oj="pbrBlockDirectLighting",z_e=`vec3 diffuseBase=vec3(0.,0.,0.); #ifdef SS_TRANSLUCENCY vec3 diffuseTransmissionBase=vec3(0.,0.,0.); #endif @@ -22583,7 +22583,7 @@ float aggShadow=0.;float numLights=0.; #if defined(CLEARCOAT) && defined(CLEARCOAT_TINT) vec3 absorption=vec3(0.); #endif -`;A.IncludesShadersStore[Pj]||(A.IncludesShadersStore[Pj]=V_e)});var Lj,G_e,Oj=I(()=>{k();Lj="pbrBlockFinalLitComponents",G_e=`aggShadow=aggShadow/numLights; +`;A.IncludesShadersStore[Oj]||(A.IncludesShadersStore[Oj]=z_e)});var wj,X_e,Fj=I(()=>{k();wj="pbrBlockFinalLitComponents",X_e=`aggShadow=aggShadow/numLights; #if defined(ENVIRONMENTBRDF) #ifdef MS_BRDF_ENERGY_CONSERVATION vec3 baseSpecularEnergyConservationFactor=getEnergyConservationFactor(vec3(reflectanceF0),environmentBrdf);vec3 coloredEnergyConservationFactor=getEnergyConservationFactor(clearcoatOut.specularEnvironmentR0,environmentBrdf); @@ -22689,7 +22689,7 @@ luminanceOverAlpha+=getLuminance(finalClearCoatScaled); alpha=saturate(alpha+luminanceOverAlpha*luminanceOverAlpha); #endif #endif -`;A.IncludesShadersStore[Lj]||(A.IncludesShadersStore[Lj]=G_e)});var Nj,k_e,wj=I(()=>{k();Nj="pbrBlockFinalUnlitComponents",k_e=`vec3 finalDiffuse=diffuseBase;finalDiffuse*=surfaceAlbedo; +`;A.IncludesShadersStore[wj]||(A.IncludesShadersStore[wj]=X_e)});var Bj,Y_e,Uj=I(()=>{k();Bj="pbrBlockFinalUnlitComponents",Y_e=`vec3 finalDiffuse=diffuseBase;finalDiffuse*=surfaceAlbedo; #if defined(SS_REFRACTION) && !defined(UNLIT) && !defined(LEGACY_SPECULAR_ENERGY_CONSERVATION) finalDiffuse*=subSurfaceOut.refractionOpacity; #endif @@ -22713,7 +22713,7 @@ vec3 ambientOcclusionForDirectDiffuse=mix(vec3(1.),aoOut.ambientOcclusionColor,v vec3 ambientOcclusionForDirectDiffuse=aoOut.ambientOcclusionColor; #endif finalAmbient*=aoOut.ambientOcclusionColor;finalDiffuse*=ambientOcclusionForDirectDiffuse; -`;A.IncludesShadersStore[Nj]||(A.IncludesShadersStore[Nj]=k_e)});var Fj,W_e,Bj=I(()=>{k();Fj="pbrBlockFinalColorComposition",W_e=`vec4 finalColor=vec4( +`;A.IncludesShadersStore[Bj]||(A.IncludesShadersStore[Bj]=Y_e)});var Vj,K_e,Gj=I(()=>{k();Vj="pbrBlockFinalColorComposition",K_e=`vec4 finalColor=vec4( #ifndef UNLIT #ifdef REFLECTION finalIrradiance + @@ -22755,7 +22755,7 @@ finalColor.rgb+=lightmapColor.rgb; finalColor.rgb+=finalEmissive; #define CUSTOM_FRAGMENT_BEFORE_FOG finalColor=max(finalColor,0.0); -`;A.IncludesShadersStore[Fj]||(A.IncludesShadersStore[Fj]=W_e)});var Uj,H_e,Vj=I(()=>{k();Uj="pbrBlockPrePass",H_e=`#if SCENE_MRT_COUNT>0 +`;A.IncludesShadersStore[Vj]||(A.IncludesShadersStore[Vj]=K_e)});var kj,j_e,Wj=I(()=>{k();kj="pbrBlockPrePass",j_e=`#if SCENE_MRT_COUNT>0 float writeGeometryInfo=finalColor.a>ALPHATESTVALUE ? 1.0 : 0.0; #ifdef PREPASS_POSITION gl_FragData[PREPASS_POSITION_INDEX]=vec4(vPositionW,writeGeometryInfo); @@ -22837,7 +22837,7 @@ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4( 0.0,0.0,0.0,1.0 )*writeGeometryInf #endif #endif #endif -`;A.IncludesShadersStore[Uj]||(A.IncludesShadersStore[Uj]=H_e)});var kj={};Be(kj,{pbrPixelShader:()=>z_e});var UN,Gj,z_e,Wj=I(()=>{k();UR();VR();jK();wN();fN();GR();kR();$K();HR();Cc();Rh();iv();Fa();dN();hN();uN();zR();WR();Tp();mN();pN();Sp();_N();gN();Rb();XR();YR();hv();ej();ij();nj();aj();lj();fj();hj();mj();_j();vj();Tj();Pc();vN();KR();xj();jR();bj();Ij();BN();Cj();Dj();EL();Oj();wj();Bj();qR();rv();EN();Vj();ZR();SN();UN="pbrPixelShader",Gj=`#define PBR_FRAGMENT_SHADER +`;A.IncludesShadersStore[kj]||(A.IncludesShadersStore[kj]=j_e)});var zj={};Be(zj,{pbrPixelShader:()=>q_e});var kN,Hj,q_e,Xj=I(()=>{k();GR();kR();QK();UN();uN();WR();HR();tj();XR();Cc();Rh();iv();Fa();mN();pN();_N();YR();zR();Tp();gN();vN();Sp();EN();SN();Mb();KR();jR();hv();rj();sj();oj();cj();dj();uj();pj();gj();Ej();Tj();Rj();Pc();TN();qR();Mj();ZR();yj();Pj();GN();Lj();Nj();AL();Fj();Uj();Gj();QR();rv();AN();Wj();$R();xN();kN="pbrPixelShader",Hj=`#define PBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_EXTENSION #if defined(BUMP) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #extension GL_OES_standard_derivatives : enable @@ -23400,23 +23400,23 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaM #include #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStore[UN]||(A.ShadersStore[UN]=Gj);z_e={name:UN,shader:Gj}});var bp,VN,yb,GN,xr,Hj=I(()=>{Gt();Vt();Pt();So();Tb();Bs();ke();Wi();G9();qx();Ht();Zx();Mg();Yn();Ga();Yg();Ua();mP();Gf();k9();W9();H9();z9();X9();rL();vl();Kg();Xn();Qx();$x();Jx();eR();bp={effect:null,subMesh:null},VN=class extends fp(cp(Mr)){},yb=class extends op(VN){constructor(e){super(e),this.PBR=!0,this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.ALBEDO=!1,this.GAMMAALBEDO=!1,this.ALBEDODIRECTUV=0,this.VERTEXCOLOR=!1,this.BASE_WEIGHT=!1,this.BASE_WEIGHTDIRECTUV=0,this.BASE_DIFFUSE_ROUGHNESS=!1,this.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.AMBIENTINGRAYSCALE=!1,this.OPACITY=!1,this.VERTEXALPHA=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHAFROMALBEDO=!1,this.ALPHATESTVALUE="0.5",this.SPECULAROVERALPHA=!1,this.RADIANCEOVERALPHA=!1,this.ALPHAFRESNEL=!1,this.LINEARALPHAFRESNEL=!1,this.PREMULTIPLYALPHA=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.GAMMAEMISSIVE=!1,this.REFLECTIVITY=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.MICROSURFACEFROMREFLECTIVITYMAP=!1,this.MICROSURFACEAUTOMATIC=!1,this.LODBASEDMICROSFURACE=!1,this.MICROSURFACEMAP=!1,this.MICROSURFACEMAPDIRECTUV=0,this.METALLICWORKFLOW=!1,this.ROUGHNESSSTOREINMETALMAPALPHA=!1,this.ROUGHNESSSTOREINMETALMAPGREEN=!1,this.METALLNESSSTOREINMETALMAPBLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.METALLIC_REFLECTANCE=!1,this.METALLIC_REFLECTANCE_GAMMA=!1,this.METALLIC_REFLECTANCEDIRECTUV=0,this.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=!1,this.REFLECTANCE=!1,this.REFLECTANCE_GAMMA=!1,this.REFLECTANCEDIRECTUV=0,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.NORMAL=!1,this.TANGENT=!1,this.BUMP=!1,this.BUMPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.USELIGHTMAPASSHADOWMAP=!1,this.GAMMALIGHTMAP=!1,this.RGBDLIGHTMAP=!1,this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1,this.LINEARSPECULARREFLECTION=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.PBR=!0,this.NORMALXYSCALE=!0}},GN=class extends dp(Al){},xr=class n extends GN{get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._directIntensity=1,this._emissiveIntensity=1,this._environmentIntensity=1,this._specularIntensity=1,this._lightingInfos=new Ii(this._directIntensity,this._emissiveIntensity,this._environmentIntensity,this._specularIntensity),this._disableBumpMap=!1,this._albedoTexture=null,this._baseWeightTexture=null,this._baseDiffuseRoughnessTexture=null,this._ambientTexture=null,this._ambientTextureStrength=1,this._ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._reflectivityTexture=null,this._metallicTexture=null,this._metallic=null,this._roughness=null,this._metallicF0Factor=1,this._metallicReflectanceColor=pe.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new pe(0,0,0),this._albedoColor=new pe(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new pe(1,1,1),this._reflectionColor=new pe(1,1,1),this._emissiveColor=new pe(0,0,0),this._microSurface=.9,this._useLightmapAsShadowmap=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromAlbedoTexture=!1,this._useSpecularOverAlpha=!0,this._useMicroSurfaceFromReflectivityMapAlpha=!1,this._useRoughnessFromMetallicTextureAlpha=!0,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallnessFromMetallicTextureBlue=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useAmbientInGrayScale=!1,this._useAutoMicroSurfaceFromReflectivityMap=!1,this._lightFalloff=n.LIGHTFALLOFF_PHYSICAL,this._useRadianceOverAlpha=!0,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Vi(16),this._globalAmbientColor=new pe(0,0,0),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this.brdf=new Pr(this),this.clearCoat=new ln(this),this.iridescence=new Xs(this),this.anisotropy=new Nc(this),this.sheen=new da(this),this.subSurface=new Ai(this),this.detailMap=new ka(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=Sb(this.getScene()),this.prePassConfiguration=new Hs}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"PBRBaseMaterial"}get _disableAlphaBlending(){var e;return this._transparencyMode===n.PBRMATERIAL_OPAQUE||this._transparencyMode===n.PBRMATERIAL_ALPHATEST||((e=this.subSurface)==null?void 0:e.disableAlphaBlending)}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromAlbedoTexture()}needAlphaTesting(){var e;return this._hasTransparencyMode?this._transparencyModeIsTest:(e=this.subSurface)!=null&&e.disableAlphaBlending?!1:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===n.PBRMATERIAL_ALPHATEST)}_shouldUseAlphaFromAlbedoTexture(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha&&this._useAlphaFromAlbedoTexture&&this._transparencyMode!==n.PBRMATERIAL_OPAQUE}_hasAlphaChannel(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._albedoTexture}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new yb(this._eventInfo.defineNames));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){if(this._albedoTexture&&ce.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&ce.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&ce.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let u=this._getReflectionTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&ce.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&ce.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(ce.SpecularTextureEnabled){if(this._metallicTexture){if(!this._metallicTexture.isReadyOrNotBlocking())return!1}else if(this._reflectivityTexture&&!this._reflectivityTexture.isReadyOrNotBlocking())return!1;if(this._metallicReflectanceTexture&&!this._metallicReflectanceTexture.isReadyOrNotBlocking()||this._reflectanceTexture&&!this._reflectanceTexture.isReadyOrNotBlocking()||this._microSurfaceTexture&&!this._microSurfaceTexture.isReadyOrNotBlocking())return!1}if(o.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady())return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED||s.CLUSTLIGHT_BATCH){for(let u=0;u{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;kt&&(kt.PrepareUniforms(m,i),kt.PrepareSamplers(_,i)),Zm({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let x=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(q9(),j9)),Promise.resolve().then(()=>(GK(),VK))]):await Promise.all([Promise.resolve().then(()=>(YK(),XK)),Promise.resolve().then(()=>(Wj(),kj))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();zm(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Km(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(o,i,this.canRenderToMRT&&!c),jm(o,i,c),Zn.PrepareDefines(l.currentRenderPassId,e,i),i.METALLICWORKFLOW=this.isMetallicWorkflow(),i._areTexturesDirty){i._needUVs=!1;for(let f=1;f<=6;++f)i["MAINUV"+f]=!1;if(o.texturesEnabled){i.ALBEDODIRECTUV=0,i.BASE_WEIGHTDIRECTUV=0,i.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,i.AMBIENTDIRECTUV=0,i.OPACITYDIRECTUV=0,i.EMISSIVEDIRECTUV=0,i.REFLECTIVITYDIRECTUV=0,i.MICROSURFACEMAPDIRECTUV=0,i.METALLIC_REFLECTANCEDIRECTUV=0,i.REFLECTANCEDIRECTUV=0,i.BUMPDIRECTUV=0,i.LIGHTMAPDIRECTUV=0,l.getCaps().textureLOD&&(i.LODBASEDMICROSFURACE=!0),this._albedoTexture&&ce.DiffuseTextureEnabled?(ri(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&ce.BaseWeightTextureEnabled?ri(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled?ri(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&ce.AmbientTextureEnabled?(ri(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&ce.OpacityTextureEnabled?(ri(this._opacityTexture,i,"OPACITY"),i.OPACITYRGB=this._opacityTexture.getAlphaFromRGB):i.OPACITY=!1;let f=this._getReflectionTexture(),d=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;Lf(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&ce.LightmapTextureEnabled?(ri(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&ce.EmissiveTextureEnabled?(ri(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,ce.SpecularTextureEnabled?(this._metallicTexture?(ri(this._metallicTexture,i,"REFLECTIVITY"),i.ROUGHNESSSTOREINMETALMAPALPHA=this._useRoughnessFromMetallicTextureAlpha,i.ROUGHNESSSTOREINMETALMAPGREEN=!this._useRoughnessFromMetallicTextureAlpha&&this._useRoughnessFromMetallicTextureGreen,i.METALLNESSSTOREINMETALMAPBLUE=this._useMetallnessFromMetallicTextureBlue,i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed,i.REFLECTIVITY_GAMMA=!1):this._reflectivityTexture?(ri(this._reflectivityTexture,i,"REFLECTIVITY"),i.MICROSURFACEFROMREFLECTIVITYMAP=this._useMicroSurfaceFromReflectivityMapAlpha,i.MICROSURFACEAUTOMATIC=this._useAutoMicroSurfaceFromReflectivityMap,i.REFLECTIVITY_GAMMA=this._reflectivityTexture.gammaSpace):i.REFLECTIVITY=!1,this._metallicReflectanceTexture||this._reflectanceTexture?(i.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=this._useOnlyMetallicFromMetallicReflectanceTexture,this._metallicReflectanceTexture?(ri(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(ri(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?ri(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap?(ri(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.BUMP=!1,i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._shouldUseAlphaFromAlbedoTexture()?i.ALPHAFROMALBEDO=!0:i.ALPHAFROMALBEDO=!1}i.SPECULAROVERALPHA=this._useSpecularOverAlpha,this._lightFalloff===n.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===n.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),i.RADIANCEOVERALPHA=this._useRadianceOverAlpha,!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e),i.ALPHAFRESNEL=this._useAlphaFresnel||this._useLinearAlphaFresnel,i.LINEARALPHAFRESNEL=this._useLinearAlphaFresnel),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,i._areMiscDirty&&(Wm(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(D.NormalKind),i.DEBUGMODE=this._debugMode),Xm(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),Ym(e,i,!0,!0,!0,this._transparencyMode!==n.PBRMATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new yb(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(bp.effect=o,bp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(bp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("vAlbedoInfos",2),e.addUniform("vBaseWeightInfos",2),e.addUniform("vBaseDiffuseRoughnessInfos",2),e.addUniform("vAmbientInfos",4),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vReflectivityInfos",3),e.addUniform("vMicroSurfaceSamplerInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("albedoMatrix",16),e.addUniform("baseWeightMatrix",16),e.addUniform("baseDiffuseRoughnessMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("reflectivityMatrix",16),e.addUniform("microSurfaceSamplerMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("vAlbedoColor",4),e.addUniform("baseWeight",1),e.addUniform("baseDiffuseRoughness",1),e.addUniform("vLightingIntensity",4),e.addUniform("pointSize",1),e.addUniform("vReflectivityColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vAmbientColor",3),e.addUniform("vDebugMode",2),e.addUniform("vMetallicReflectanceFactors",4),e.addUniform("vMetallicReflectanceInfos",2),e.addUniform("metallicReflectanceMatrix",16),e.addUniform("vReflectanceInfos",2),e.addUniform("reflectanceMatrix",16),e.addUniform("cameraInfo",4),Qm(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var h,u,m,_;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);Vs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Wf(this._activeEffect,this._vertexPullingMetadata);let f=null,d=this._uniformBuffer;if(c){if(this.bindViewProjection(a),f=this._getReflectionTexture(),!d.useUbo||!this.isFrozen||!d.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),ni(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),ni(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),ni(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&ce.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),ni(this._ambientTexture,d,"ambient")),this._opacityTexture&&ce.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ni(this._opacityTexture,d,"opacity")),this._emissiveTexture&&ce.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ni(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&ce.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ni(this._lightmapTexture,d,"lightmap")),ce.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),ni(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),ni(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),ni(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),ni(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),ni(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),ni(this._bumpTexture,d,"bump"),r._mirroredCameraPosition?d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),Fm(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Rn.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Rn.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(u=(h=this.subSurface)==null?void 0:h._indexOfRefraction)!=null?u:1.5,g=1;Rn.Color4[0].b=p;let v=Math.pow((p-g)/(p+g),2);Rn.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Rn.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",ce.EmissiveTextureEnabled?this._emissiveColor:pe.BlackReadOnly),!s.SS_REFRACTION&&((m=this.subSurface)!=null&&m._linkRefractionWithTransparency)?d.updateColor4("vAlbedoColor",this._albedoColor,1):d.updateColor4("vAlbedoColor",this._albedoColor,this.alpha),d.updateFloat("baseWeight",this._baseWeight),d.updateFloat("baseDiffuseRoughness",this._baseDiffuseRoughness||0),this._lightingInfos.x=this._directIntensity,this._lightingInfos.y=this._emissiveIntensity,this._lightingInfos.z=this._environmentIntensity*r.environmentIntensity,this._lightingInfos.w=this._specularIntensity,d.updateVector4("vLightingIntensity",this._lightingInfos),r.ambientColor.multiplyToRef(this._ambientColor,this._globalAmbientColor),d.updateColor3("vAmbientColor",this._globalAmbientColor),d.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&ce.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&ce.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),Ox(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&ce.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&ce.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),ce.SpecularTextureEnabled&&(this._metallicTexture?d.setTexture("reflectivitySampler",this._metallicTexture):this._reflectivityTexture&&d.setTexture("reflectivitySampler",this._reflectivityTexture),this._metallicReflectanceTexture&&d.setTexture("metallicReflectanceSampler",this._metallicReflectanceTexture),this._reflectanceTexture&&s.REFLECTANCE&&d.setTexture("reflectanceSampler",this._reflectanceTexture),this._microSurfaceTexture&&d.setTexture("microSurfaceSampler",this._microSurfaceTexture)),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&d.setTexture("bumpSampler",this._bumpTexture)),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ei.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),Pf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&zn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((_=t.bakedVertexAnimationManager)==null||_.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Cf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),d.update()}getAnimatables(){let e=super.getAnimatables();return this._albedoTexture&&this._albedoTexture.animations&&this._albedoTexture.animations.length>0&&e.push(this._albedoTexture),this._baseWeightTexture&&this._baseWeightTexture.animations&&this._baseWeightTexture.animations.length>0&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&this._baseDiffuseRoughnessTexture.animations&&this._baseDiffuseRoughnessTexture.animations.length>0&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._metallicTexture&&this._metallicTexture.animations&&this._metallicTexture.animations.length>0?e.push(this._metallicTexture):this._reflectivityTexture&&this._reflectivityTexture.animations&&this._reflectivityTexture.animations.length>0&&e.push(this._reflectivityTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._metallicReflectanceTexture&&this._metallicReflectanceTexture.animations&&this._metallicReflectanceTexture.animations.length>0&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&this._reflectanceTexture.animations&&this._reflectanceTexture.animations.length>0&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&this._microSurfaceTexture.animations&&this._microSurfaceTexture.animations.length>0&&e.push(this._microSurfaceTexture),e}_getReflectionTexture(){return this._reflectionTexture?this._reflectionTexture:this.getScene().environmentTexture}getActiveTextures(){let e=super.getActiveTextures();return this._albedoTexture&&e.push(this._albedoTexture),this._baseWeightTexture&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._reflectivityTexture&&e.push(this._reflectivityTexture),this._metallicTexture&&e.push(this._metallicTexture),this._metallicReflectanceTexture&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&e.push(this._microSurfaceTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._albedoTexture===e||this._baseWeightTexture===e||this._baseDiffuseRoughnessTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._reflectivityTexture===e||this._metallicTexture===e||this._metallicReflectanceTexture===e||this._reflectanceTexture===e||this._microSurfaceTexture===e||this._bumpTexture===e||this._lightmapTexture===e)}setPrePassRenderer(){var t;if(!((t=this.subSurface)!=null&&t.isScatteringEnabled))return!1;let e=this.getScene().enableSubSurfaceForPrePass();return e&&(e.enabled=!0),!0}dispose(e,t){var i,r,s,a,o,l,c,f,d,h,u,m,_,p;this._breakShaderLoadedCheck=!0,t&&(this._environmentBRDFTexture&&this.getScene().environmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),(i=this._albedoTexture)==null||i.dispose(),(r=this._baseWeightTexture)==null||r.dispose(),(s=this._baseDiffuseRoughnessTexture)==null||s.dispose(),(a=this._ambientTexture)==null||a.dispose(),(o=this._opacityTexture)==null||o.dispose(),(l=this._reflectionTexture)==null||l.dispose(),(c=this._emissiveTexture)==null||c.dispose(),(f=this._metallicTexture)==null||f.dispose(),(d=this._reflectivityTexture)==null||d.dispose(),(h=this._bumpTexture)==null||h.dispose(),(u=this._lightmapTexture)==null||u.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(_=this._reflectanceTexture)==null||_.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};xr.PBRMATERIAL_OPAQUE=Se.MATERIAL_OPAQUE;xr.PBRMATERIAL_ALPHATEST=Se.MATERIAL_ALPHATEST;xr.PBRMATERIAL_ALPHABLEND=Se.MATERIAL_ALPHABLEND;xr.PBRMATERIAL_ALPHATESTANDBLEND=Se.MATERIAL_ALPHATESTANDBLEND;xr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;xr.LIGHTFALLOFF_PHYSICAL=0;xr.LIGHTFALLOFF_GLTF=1;xr.LIGHTFALLOFF_STANDARD=2;xr.ForceGLSL=!1;P([le("_markAllSubMeshesAsMiscDirty")],xr.prototype,"debugMode",void 0)});var zj={};Be(zj,{PBRMaterial:()=>ht});var ht,Xj=I(()=>{Gt();Vt();Tb();Ht();Hj();Yi();Yn();br();ht=class n extends xr{get refractionTexture(){return this.subSurface.refractionTexture}set refractionTexture(e){this.subSurface.refractionTexture=e,e?this.subSurface.isRefractionEnabled=!0:this.subSurface.linkRefractionWithTransparency||(this.subSurface.isRefractionEnabled=!1)}get indexOfRefraction(){return this.subSurface.indexOfRefraction}set indexOfRefraction(e){this.subSurface.indexOfRefraction=e}get invertRefractionY(){return this.subSurface.invertRefractionY}set invertRefractionY(e){this.subSurface.invertRefractionY=e}get linkRefractionWithTransparency(){return this.subSurface.linkRefractionWithTransparency}set linkRefractionWithTransparency(e){this.subSurface.linkRefractionWithTransparency=e,e&&(this.subSurface.isRefractionEnabled=!0)}get usePhysicalLightFalloff(){return this._lightFalloff===xr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=xr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=xr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===xr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=xr.LIGHTFALLOFF_GLTF:this._lightFalloff=xr.LIGHTFALLOFF_STANDARD)}constructor(e,t,i=!1){super(e,t,i),this.directIntensity=1,this.emissiveIntensity=1,this.environmentIntensity=1,this.specularIntensity=1,this.disableBumpMap=!1,this.ambientTextureStrength=1,this.ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this.metallicF0Factor=1,this.metallicReflectanceColor=pe.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new pe(0,0,0),this.albedoColor=new pe(1,1,1),this.baseWeight=1,this.reflectivityColor=new pe(1,1,1),this.reflectionColor=new pe(1,1,1),this.emissiveColor=new pe(0,0,0),this.microSurface=1,this.useLightmapAsShadowmap=!1,this.useAlphaFromAlbedoTexture=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useSpecularOverAlpha=!0,this.useMicroSurfaceFromReflectivityMapAlpha=!1,this.useRoughnessFromMetallicTextureAlpha=!0,this.useRoughnessFromMetallicTextureGreen=!1,this.useMetallnessFromMetallicTextureBlue=!1,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useAutoMicroSurfaceFromReflectivityMap=!1,this.useRadianceOverAlpha=!0,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._environmentBRDFTexture=Sb(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.PBRMaterial",e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),e.clearCoat&&r.clearCoat.parse(e.clearCoat,t,i),e.anisotropy&&r.anisotropy.parse(e.anisotropy,t,i),e.brdf&&r.brdf.parse(e.brdf,t,i),e.sheen&&r.sheen.parse(e.sheen,t,i),e.subSurface&&r.subSurface.parse(e.subSurface,t,i),e.iridescence&&r.iridescence.parse(e.iridescence,t,i),r}};ht.PBRMATERIAL_OPAQUE=xr.PBRMATERIAL_OPAQUE;ht.PBRMATERIAL_ALPHATEST=xr.PBRMATERIAL_ALPHATEST;ht.PBRMATERIAL_ALPHABLEND=xr.PBRMATERIAL_ALPHABLEND;ht.PBRMATERIAL_ALPHATESTANDBLEND=xr.PBRMATERIAL_ALPHATESTANDBLEND;ht.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=xr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"specularIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"disableBumpMap",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"albedoTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseWeightTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseDiffuseRoughnessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTextureStrength",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"opacityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectionTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectivityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallic",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicF0Factor",void 0);P([Tr(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicReflectanceColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicReflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"microSurfaceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"bumpTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty",null)],ht.prototype,"lightmapTexture",void 0);P([Tr("ambient"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientColor",void 0);P([Tr("albedo"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"albedoColor",void 0);P([F("baseWeight"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseDiffuseRoughness",void 0);P([Tr("reflectivity"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectivityColor",void 0);P([Tr("reflection"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectionColor",void 0);P([Tr("emissive"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"microSurface",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useLightmapAsShadowmap",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useSpecularOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAmbientInGrayScale",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],ht.prototype,"usePhysicalLightFalloff",null);P([F()],ht.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRadianceOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],ht.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],ht.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],ht.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],ht.prototype,"applyDecalMapAfterDetailMap",void 0);Ft("BABYLON.PBRMaterial",ht)});var Yj={};Be(Yj,{PBRMaterialLoadingAdapter:()=>kN});var kN,Kj=I(()=>{Ht();SO();ke();kN=class{constructor(e){this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return(e=this._material.baseDiffuseRoughness)!=null?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return(e=this._material.metallic)!=null?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return(e=this._material.metallicF0Factor)!=null?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._material.metallicReflectanceColor=e}get specularColor(){return this._material.metallicReflectanceColor}set specularColorTexture(e){this._material.reflectanceTexture=e}get specularColorTexture(){return this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return(e=this._material.roughness)!=null?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return(e=this._material.ambientTextureStrength)!=null?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=pe.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return(e=this._material.clearCoat.roughness)!=null?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new pe(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new pe(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return!0}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){let t=new b(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));t.scaleInPlace(1/Math.max(this.transmissionDepth,.001));let i=t,r=Math.max(i.x,Math.max(i.y,i.z)),s=r>0?1/r:1;this._material.subSurface.diffusionDistance=new pe(Math.exp(-i.x*s),Math.exp(-i.y*s),Math.exp(-i.z*s))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return(e=this._material.subSurface.scatteringDiffusionProfile)!=null?e:pe.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}});function K_e(n){if(n.min&&n.max){let e=n.min,t=n.max,i=$.Vector3[0].copyFromFloats(e[0],e[1],e[2]),r=$.Vector3[1].copyFromFloats(t[0],t[1],t[2]);if(n.normalized&&n.componentType!==5126){let s=1;switch(n.componentType){case 5120:s=127;break;case 5121:s=255;break;case 5122:s=32767;break;case 5123:s=65535;break}let a=1/s;i.scaleInPlace(a),r.scaleInPlace(a)}return new pn(i,r)}return null}var X_e,Y_e,Kt,Cb,jj=I(()=>{f8();ke();Ht();yi();_l();g8();ub();E8();Yn();Gr();yf();Wi();Px();Nm();Ci();gO();T8();_O();Jl();Pt();Lm();EO();TO();b8();Tm();M8();X_e=new Tv(()=>Promise.resolve().then(()=>(D8(),P8))),Y_e=new Tv(()=>Promise.resolve().then(()=>(w8(),N8))),Kt=class{static Get(e,t,i){if(!t||i==null||!t[i])throw new Error(`${e}: Failed to find index (${i})`);return t[i]}static TryGet(e,t){return!e||t==null||!e[t]?null:e[t]}static Assign(e){if(e)for(let t=0;tt.dispose&&t.dispose()),this._extensions.length=0;for(let t of Array.from(this._materialAdapters))(e=t.finalize)==null||e.call(t);this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose()}}async importMeshAsync(e,t,i,r,s,a,o=""){return await Promise.resolve().then(async()=>{this._babylonScene=t,this._assetContainer=i,this._loadData(r);let l=null;if(e){let c={};if(this._gltf.nodes)for(let d of this._gltf.nodes)d.name&&(c[d.name]=d.index);l=(e instanceof Array?e:[e]).map(d=>{let h=c[d];if(h===void 0)throw new Error(`Failed to find node '${d}'`);return h})}return await this._loadAsync(s,o,l,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))})}async loadAsync(e,t,i,r,s=""){return this._babylonScene=e,this._loadData(t),await this._loadAsync(i,s,null,()=>{})}async _loadAsync(e,t,i,r){return await Promise.resolve().then(async()=>{this._rootUrl=e,this._uniqueRootUrl=!e.startsWith("file:")&&t?e:`${e}${Date.now()}/`,this._fileName=t,this._allMaterialsDirtyRequired=!1,await this._loadExtensionsAsync(),!this.parent.skipMaterials&&this._pbrMaterialImpl==null&&(this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr")?this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(B9(),F9))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(V9(),U9))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(Xj(),zj))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(Kj(),Yj))).PBRMaterialLoadingAdapter});let s=`${ms[ms.LOADING]} => ${ms[ms.READY]}`,a=`${ms[ms.LOADING]} => ${ms[ms.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(ms.LOADING),this._extensionsOnLoading();let o=new Array,l=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials){if(i)o.push(this.loadSceneAsync("/nodes",{nodes:i,index:-1}));else if(this._gltf.scene!=null||this._gltf.scenes&&this._gltf.scenes[0]){let f=Kt.Get("/scene",this._gltf.scenes,this._gltf.scene||0);o.push(this.loadSceneAsync(`/scenes/${f.index}`,f))}}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let f=0;f{}))}return this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=l:this._babylonScene._forceBlockMaterialDirtyMechanism(l),this._parent.compileMaterials&&o.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&o.push(this._compileShadowGeneratorsAsync()),await Promise.all(o).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(let f of this._babylonScene.materials){let d=f;d.maxSimultaneousLights!==void 0&&(d.maxSimultaneousLights=Math.max(d.maxSimultaneousLights,this._babylonScene.lights.length))}return this._extensionsOnReady(),this._parent._setState(ms.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),_e.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(ms.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},d=>{this._parent.onErrorObservable.notifyObservers(d),this._parent.onErrorObservable.clear(),this.dispose()})}),f))}).catch(s=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(s),this._parent.onErrorObservable.clear(),this.dispose()),s})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){let t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){let i=t[0];(i.byteLengthe.bin.byteLength)&&ee.Warn(`Binary buffer length (${i.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else ee.Warn("Unexpected BIN chunk")}}_setupData(){if(Kt.Assign(this._gltf.accessors),Kt.Assign(this._gltf.animations),Kt.Assign(this._gltf.buffers),Kt.Assign(this._gltf.bufferViews),Kt.Assign(this._gltf.cameras),Kt.Assign(this._gltf.images),Kt.Assign(this._gltf.materials),Kt.Assign(this._gltf.meshes),Kt.Assign(this._gltf.nodes),Kt.Assign(this._gltf.samplers),Kt.Assign(this._gltf.scenes),Kt.Assign(this._gltf.skins),Kt.Assign(this._gltf.textures),this._gltf.nodes){let e={};for(let i of this._gltf.nodes)if(i.children)for(let r of i.children)e[r]=i.index;let t=this._createRootNode();for(let i of this._gltf.nodes){let r=e[i.index];i.parent=r===void 0?t:this._gltf.nodes[r]}}}async _loadExtensionsAsync(){var t;let e=[];if(A8.forEach((i,r)=>{var s;((s=this.parent.extensionOptions[r])==null?void 0:s.enabled)===!1?i.isGLTFExtension&&this.isExtensionUsed(r)&&ee.Warn(`Extension ${r} is used but has been explicitly disabled.`):(!i.isGLTFExtension||this.isExtensionUsed(r))&&e.push((async()=>{let a=await i.factory(this);return a.name!==r&&ee.Warn(`The name of the glTF loader extension instance does not match the registered name: ${a.name} !== ${r}`),this._parent.onExtensionLoadedObservable.notifyObservers(a),a})())}),this._extensions.push(...await Promise.all(e)),this._extensions.sort((i,r)=>(i.order||Number.MAX_VALUE)-(r.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired){for(let i of this._gltf.extensionsRequired)if(!this._extensions.some(s=>s.name===i&&s.enabled))throw((t=this.parent.extensionOptions[i])==null?void 0:t.enabled)===!1?new Error(`Required extension ${i} is disabled`):new Error(`Required extension ${i} is not available`)}}_createRootNode(){if(this._parent.customRootNode!==void 0)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:this._rootBabylonMesh===null?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;let e=new Z("__root__",this._babylonScene);this._rootBabylonMesh=e,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);let t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case vp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case vp.FORCE_RIGHT_HANDED:{this._babylonScene.useRightHandedSystem=!0;break}default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(e),t}loadSceneAsync(e,t){let i=this._extensionsLoadSceneAsync(e,t);if(i)return i;let r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(let s of t.nodes){let a=Kt.Get(`${e}/nodes/${s}`,this._gltf.nodes,s);r.push(this.loadNodeAsync(`/nodes/${a.index}`,a,o=>{o.parent=this._rootBabylonMesh}))}for(let s of this._postSceneLoadActions)s();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(let i of e._primitiveBabylonMeshes)t(i)}_getGeometries(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{let s=r.geometry;s&&e.indexOf(s)===-1&&e.push(s)});return e}_getMeshes(){let e=[];this._rootBabylonMesh instanceof Ar&&e.push(this._rootBabylonMesh);let t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{e.push(r)});return e}_getTransformNodes(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)i._babylonTransformNode&&i._babylonTransformNode.getClassName()==="TransformNode"&&e.push(i._babylonTransformNode),i._babylonTransformNodeForSkin&&e.push(i._babylonTransformNodeForSkin);return e}_getSkeletons(){let e=[],t=this._gltf.skins;if(t)for(let i of t)i._data&&e.push(i._data.babylonSkeleton);return e}_getAnimationGroups(){let e=[],t=this._gltf.animations;if(t)for(let i of t)i._babylonAnimationGroup&&e.push(i._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case yh.NONE:break;case yh.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case yh.ALL:{let e=this._getAnimationGroups();for(let t of e)t.start(!0);break}default:{ee.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);return}}}loadNodeAsync(e,t,i=()=>{}){let r=this._extensionsLoadNodeAsync(e,t,i);if(r)return r;if(t._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);let s=new Array;this.logOpen(`${e} ${t.name||""}`);let a=c=>{if(n.AddPointerMetadata(c,e),n._LoadTransform(t,c),t.camera!=null){let f=Kt.Get(`${e}/camera`,this._gltf.cameras,t.camera);s.push(this.loadCameraAsync(`/cameras/${f.index}`,f,d=>{d.parent=c,this._babylonScene.useRightHandedSystem||(c.scaling.x=-1)}))}if(t.children)for(let f of t.children){let d=Kt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,h=>{h.parent=c}))}i(c)},o=t.mesh!=null,l=this._parent.loadSkins&&t.skin!=null;if(!o||l){let c=t.name||`node${t.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f=new Yt(c,this._babylonScene);f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t.mesh==null?t._babylonTransformNode=f:t._babylonTransformNodeForSkin=f,a(f)}if(o)if(l){let c=Kt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=AO(d.metadata,f.metadata||{});let h=Kt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${h.index}`,t,h,u=>{this._forEachPrimitive(t,m=>{m.skeleton=u}),this._postSceneLoadActions.push(()=>{if(h.skeleton!=null){let m=Kt.Get(`/skins/${h.index}/skeleton`,this._gltf.nodes,h.skeleton).parent;t.index===m.index?f.parent=d.parent:f.parent=m._babylonTransformNode}else f.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:d,skinnedNode:f})})}))}))}else{let c=Kt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,a))}return this.logClose(),Promise.all(s).then(()=>(this._forEachPrimitive(t,c=>{let f=c;!f.isAnInstance&&f.geometry&&f.geometry.useBoundingInfoFromGeometry?c._updateBoundingInfo():c.refreshBoundingInfo(!0,!0)}),t._babylonTransformNode))}_loadMeshAsync(e,t,i,r){let s=i.primitives;if(!s||!s.length)throw new Error(`${e}: Primitives are missing`);s[0].index==null&&Kt.Assign(s);let a=new Array;this.logOpen(`${e} ${i.name||""}`);let o=t.name||`node${t.index}`;if(s.length===1){let l=i.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,o,t,i,l,c=>{t._babylonTransformNode=c,t._primitiveBabylonMeshes=[c]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new Yt(o,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(let l of s)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,`${o}_primitive${l.index}`,t,i,l,c=>{c.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(c)}))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>t._babylonTransformNode)}_loadMeshPrimitiveAsync(e,t,i,r,s,a){let o=this._extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a);if(o)return o;this.logOpen(`${e}`);let l=this._disableInstancedMesh===0&&this._parent.createInstances&&i.skin==null&&!r.primitives[0].targets,c,f;if(l&&s._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,c=s._instanceData.babylonSourceMesh.createInstance(t),c._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,f=s._instanceData.promise;else{let d=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;let h=new Z(t,this._babylonScene);if(h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,h.sideOrientation=this._babylonScene.useRightHandedSystem?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,h),d.push(this._loadVertexDataAsync(e,s,h).then(async u=>await this._loadMorphTargetsAsync(e,s,h,u).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,u.applyToMesh(h),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let u=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[u];m||(m=this._createDefaultMaterial("__GLTFLoader._default",u),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[u]=m),h.material=m}else{let m=Kt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,h,u,_=>{h.material=_}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:h,promise:f}),c=h}return n.AddPointerMetadata(c,e),this._parent.onMeshLoadedObservable.notifyObservers(c),a(c),this.logClose(),f.then(()=>c)}_loadVertexDataAsync(e,t,i){let r=this._extensionsLoadVertexDataAsync(e,t,i);if(r)return r;let s=t.attributes;if(!s)throw new Error(`${e}: Attributes are missing`);let a=new Array,o=new _n(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=Kt.Get(`${e}/indices`,this._gltf.accessors,t.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${c.index}`,c).then(f=>{o.setIndices(f)}))}let l=(c,f,d)=>{if(s[c]==null)return;i._delayInfo=i._delayInfo||[],i._delayInfo.indexOf(f)===-1&&i._delayInfo.push(f);let h=Kt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${h.index}`,h,f).then(u=>{if(u.getKind()===D.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=K_e(h);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(u,h.count)})),f==D.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(h)};return l("POSITION",D.PositionKind),l("NORMAL",D.NormalKind),l("TANGENT",D.TangentKind),l("TEXCOORD_0",D.UVKind),l("TEXCOORD_1",D.UV2Kind),l("TEXCOORD_2",D.UV3Kind),l("TEXCOORD_3",D.UV4Kind),l("TEXCOORD_4",D.UV5Kind),l("TEXCOORD_5",D.UV6Kind),l("JOINTS_0",D.MatricesIndicesKind),l("WEIGHTS_0",D.MatricesWeightsKind),l("JOINTS_1",D.MatricesIndicesExtraKind),l("WEIGHTS_1",D.MatricesWeightsExtraKind),l("COLOR_0",D.ColorKind,c=>{c.type==="VEC4"&&(i.hasVertexAlpha=!0)}),Promise.all(a).then(()=>o)}_createMorphTargets(e,t,i,r,s){if(!r.targets||!this._parent.loadMorphTargets)return;if(t._numMorphTargets==null)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);let a=i.extras?i.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,s.morphTargetManager=new Lh(this._babylonScene),s.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.morphTargetManager.areUpdatesFrozen=!0;for(let o=0;o{a.areUpdatesFrozen=!1})}async _loadMorphTargetVertexDataAsync(e,t,i,r){let s=new Array,a=(o,l,c)=>{if(i[o]==null)return;let f=t.getVertexBuffer(l);if(!f)return;let d=Kt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(h=>{c(f,h)}))};return a("POSITION",D.PositionKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setPositions(c)}),a("NORMAL",D.NormalKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(c.length,(f,d)=>{c[d]=l[d]+f}),r.setNormals(c)}),a("TANGENT",D.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,h)=>{(h+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",D.UVKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUVs(c)}),a("TEXCOORD_1",D.UV2Kind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUV2s(c)}),a("COLOR_0",D.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,h)=>{let u=Math.floor(h/3),m=h%3;c[4*u+m]=l[3*u+m]+d});for(let d=0;d{c[h]=l[h]+d});else throw new Error(`${e}: Invalid number of components (${f}) for COLOR_0 attribute`);r.setColors(c)}),await Promise.all(s).then(()=>{})}static _LoadTransform(e,t){if(e.skin!=null)return;let i=b.Zero(),r=Xe.Identity(),s=b.One();e.matrix?q.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=Xe.FromArray(e.rotation)),e.scale&&(s=b.FromArray(e.scale))),t.position=i,t.rotationQuaternion=r,t.scaling=s}_loadSkinAsync(e,t,i,r){if(!this._parent.loadSkins)return Promise.resolve();let s=this._extensionsLoadSkinAsync(e,t,i);if(s)return s;if(i._data)return r(i._data.babylonSkeleton),i._data.promise;let a=`skeleton${i.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let o=new mb(i.name||a,a,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,i,o);let l=this._loadSkinInverseBindMatricesDataAsync(e,i).then(c=>{this._updateBoneMatrices(o,c)});return i._data={babylonSkeleton:o,promise:l},r(o),l}_loadBones(e,t,i){if(t.skeleton==null||this._parent.alwaysComputeSkeletonRootNode){let s=this._findSkeletonRootNode(`${e}/joints`,t.joints);if(s)if(t.skeleton===void 0)t.skeleton=s.index;else{let a=(l,c)=>{for(;c.parent;c=c.parent)if(c.parent===l)return!0;return!1},o=Kt.Get(`${e}/skeleton`,this._gltf.nodes,t.skeleton);o!==s&&!a(o,s)&&(ee.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),t.skeleton=s.index)}else ee.Warn(`${e}: Failed to find common root`)}let r={};for(let s of t.joints){let a=Kt.Get(`${e}/joints/${s}`,this._gltf.nodes,s);this._loadBone(a,t,i,r)}}_findSkeletonRootNode(e,t){if(t.length===0)return null;let i={};for(let s of t){let a=[],o=Kt.Get(`${e}/${s}`,this._gltf.nodes,s);for(;o.index!==-1;)a.unshift(o),o=o.parent;i[s]=a}let r=null;for(let s=0;;++s){let a=i[t[0]];if(s>=a.length)return r;let o=a[s];for(let l=1;l=a.length||o!==a[s])return r;r=o}}_loadBone(e,t,i,r){e._isJoint=!0;let s=r[e.index];if(s)return s;let a=null;e.index!==t.skeleton&&(e.parent&&e.parent.index!==-1?a=this._loadBone(e.parent,t,i,r):t.skeleton!==void 0&&ee.Warn(`/skins/${t.index}/skeleton: Skeleton node is not a common root`));let o=t.joints.indexOf(e.index);return s=new Ha(e.name||`joint${e.index}`,i,a,this._getNodeMatrix(e),null,null,o),r[e.index]=s,this._postSceneLoadActions.push(()=>{s.linkTransformNode(e._babylonTransformNode)}),s}_loadSkinInverseBindMatricesDataAsync(e,t){if(t.inverseBindMatrices==null)return Promise.resolve(null);let i=Kt.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${i.index}`,i)}_updateBoneMatrices(e,t){for(let i of e.bones){let r=q.Identity(),s=i._index;t&&s!==-1&&(q.FromArrayToRef(t,s*16,r),r.invertToRef(r));let a=i.getParent();a&&r.multiplyToRef(a.getAbsoluteInverseBindMatrix(),r),i.updateMatrix(r,!1,!1),i._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?q.FromArray(e.matrix):q.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?Xe.FromArray(e.rotation):Xe.Identity(),e.translation?b.FromArray(e.translation):b.Zero())}loadCameraAsync(e,t,i=()=>{}){let r=this._extensionsLoadCameraAsync(e,t,i);if(r)return r;let s=new Array;this.logOpen(`${e} ${t.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;let a=new Oc(t.name||`camera${t.index}`,b.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonCamera=a,a.setTarget(new b(0,0,-1)),t.type){case"perspective":{let o=t.perspective;if(!o)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=o.yfov,a.minZ=o.znear,a.maxZ=o.zfar||0;break}case"orthographic":{if(!t.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=mt.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break}default:throw new Error(`${e}: Invalid camera type (${t.type})`)}return n.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),i(a),this.logClose(),Promise.all(s).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");let e=this._gltf.animations;if(!e)return Promise.resolve();let t=new Array;for(let i=0;i{s.targetedAnimations.length===0&&s.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");let i=this._extensionsLoadAnimationAsync(e,t);return i||X_e.value.then(({AnimationGroup:r})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;let s=new r(t.name||`animation${t.index}`,this._babylonScene);s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=s;let a=new Array;Kt.Assign(t.channels),Kt.Assign(t.samplers);for(let o of t.channels)a.push(this._loadAnimationChannelAsync(`${e}/channels/${o.index}`,e,t,o,(l,c)=>{l.animations=l.animations||[],l.animations.push(c),s.addTargetedAnimation(c,l)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(a).then(()=>(s.normalize(0),s))})}_loadAnimationChannelAsync(e,t,i,r,s){let a=this._extensionsLoadAnimationChannelAsync(e,t,i,r,s);if(a)return a;if(r.target.node==null)return Promise.resolve();let o=Kt.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),l=r.target.path,c=l==="weights";return c&&!o._numMorphTargets||!c&&!o._babylonTransformNode||!this._parent.loadNodeAnimations&&!c&&!o._isJoint?Promise.resolve():Y_e.value.then(()=>{var h,u,m,_;let f;switch(l){case"translation":{f=(h=Ev("/nodes/{}/translation"))==null?void 0:h.interpolation;break}case"rotation":{f=(u=Ev("/nodes/{}/rotation"))==null?void 0:u.interpolation;break}case"scale":{f=(m=Ev("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(_=Ev("/nodes/{}/weights"))==null?void 0:_.interpolation;break}default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!f)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);let d={object:o,info:f};return this._loadAnimationChannelFromTargetInfoAsync(e,t,i,r,d,s)})}_loadAnimationChannelFromTargetInfoAsync(e,t,i,r,s,a){let o=this.parent.targetFps,l=1/o,c=Kt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,h=s.object,u=s.info;for(let m of u){let _=m.getStride(h),p=f.input,g=f.output,v=new Array(p.length),x=0;switch(f.interpolation){case"STEP":{for(let S=0;S0){let S=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,E=m.buildAnimations(h,S,o,v);for(let T of E)d++,a(T.babylonAnimatable,T.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;let i=t.interpolation||"LINEAR";switch(i){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}let r=Kt.Get(`${e}/input`,this._gltf.accessors,t.input),s=Kt.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)]).then(([a,o])=>({input:a,interpolation:i,output:o})),t._data}loadBufferAsync(e,t,i,r){let s=this._extensionsLoadBufferAsync(e,t,i,r);if(s)return s;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(a=>{try{return new Uint8Array(a.buffer,a.byteOffset+i,r)}catch(o){throw new Error(`${e}: ${o.message}`,{cause:o})}})}loadBufferViewAsync(e,t){let i=this._extensionsLoadBufferViewAsync(e,t);if(i)return i;if(t._data)return t._data;let r=Kt.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,t,i){if(t._data)return t._data;let r=n._GetNumComponents(e,t.type),s=r*D.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${o.index}`,o).then(l=>{if(t.componentType===5126&&!t.normalized&&(!o.byteStride||o.byteStride===s))return n._GetTypedArray(e,t.componentType,l,t.byteOffset,a);{let c=new i(a);return D.ForEach(l,t.byteOffset||0,o.byteStride||s,r,t.componentType,c.length,t.normalized||!1,(f,d)=>{c[d]=f}),c}})}if(t.sparse){let o=t.sparse;t._data=t._data.then(l=>{let c=l,f=Kt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=Kt.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,o.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${f.index}`,f),this.loadBufferViewAsync(`/bufferViews/${d.index}`,d)]).then(([h,u])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,h,o.indices.byteOffset,o.count),_=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);p=new i(_),D.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(x,S)=>{p[S]=x})}let g=0;for(let v=0;vn._GetTypedArray(e,t.componentType,r,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;let t=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(i=>new vo(t,i,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,t,i){var s;if((s=t._babylonVertexBuffer)!=null&&s[i])return t._babylonVertexBuffer[i];t._babylonVertexBuffer||(t._babylonVertexBuffer={});let r=this._babylonScene.getEngine();if(t.sparse||t.bufferView==null)t._babylonVertexBuffer[i]=this._loadFloatAccessorAsync(e,t).then(a=>new D(r,a,i,!1));else{let a=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._babylonVertexBuffer[i]=this._loadVertexBufferViewAsync(a).then(o=>{let l=n._GetNumComponents(e,t.type);return new D(r,o,i,!1,void 0,a.byteStride,void 0,t.byteOffset,l,t.componentType,t.normalized,!0,void 0,!0)})}return t._babylonVertexBuffer[i]}_loadMaterialMetallicRoughnessPropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);return t&&(t.baseColorFactor?(s.baseColor=pe.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=pe.White(),s.baseMetalness=t.metallicFactor==null?1:t.metallicFactor,s.specularRoughness=t.roughnessFactor==null?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,t.baseColorTexture,a=>{a.name=`${i.name} (Base Color)`,s.baseColorTexture=a})),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,t.metallicRoughnessTexture,a=>{a.name=`${i.name} (Metallic Roughness)`,s.baseMetalnessTexture=a,s.specularRoughnessTexture=a})),s.useRoughnessFromMetallicTextureGreen=!0,s.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,i,r,s=()=>{}){let a=this._extensionsLoadMaterialAsync(e,t,i,r,s);if(a)return a;t._data=t._data||{};let o=t._data[r];if(!o){this.logOpen(`${e} ${t.name||""}`);let l=this.createMaterial(e,t,r);o={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,l)},t._data[r]=o,n.AddPointerMetadata(l,e),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return i&&(o.babylonMeshes.push(i),i.onDisposeObservable.addOnce(()=>{let l=o.babylonMeshes.indexOf(i);l!==-1&&o.babylonMeshes.splice(l,1)})),s(o.babylonMaterial),o.promise.then(()=>o.babylonMaterial)}_createDefaultMaterial(e,t){if(!this._pbrMaterialImpl)throw new Error("PBR Material class not loaded");this._babylonScene._blockEntityCollection=!!this._assetContainer;let i=new this._pbrMaterialImpl.materialClass(e,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.fillMode=t,i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;let r=this._getOrCreateMaterialAdapter(i);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,i}createMaterial(e,t,i){let r=this._extensionsCreateMaterial(e,t,i);if(r)return r;let s=t.name||`material${t.index}`;return this._createDefaultMaterial(s,i)}loadMaterialPropertiesAsync(e,t,i){let r=this._extensionsLoadMaterialPropertiesAsync(e,t,i);if(r)return r;let s=new Array;return s.push(this.loadMaterialBasePropertiesAsync(e,t,i)),t.pbrMetallicRoughness&&s.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,i)),this.loadMaterialAlphaProperties(e,t,i),Promise.all(s).then(()=>{})}loadMaterialBasePropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);s.emissionColor=t.emissiveFactor?pe.FromArray(t.emissiveFactor):new pe(0,0,0),t.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,t.normalTexture,c=>{var f;c.name=`${i.name} (Normal)`,s.geometryNormalTexture=c,((f=t.normalTexture)==null?void 0:f.scale)!=null&&(c.level=t.normalTexture.scale)})),s.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let a,o=1,l;return t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,t.occlusionTexture,c=>{c.name=`${i.name} (Occlusion)`,a=c})),t.occlusionTexture.strength!=null&&(o=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,t.emissiveTexture,c=>{c.name=`${i.name} (Emissive)`,l=c})),Promise.all(r).then(()=>{a&&(s.ambientOcclusionTexture=a,s.ambientOcclusionTextureStrength=o),l&&(s.emissionColorTexture=l)})}loadMaterialAlphaProperties(e,t,i){if(!this._pbrMaterialImpl)throw new Error(`${e}: Material type not supported`);let r=this._getOrCreateMaterialAdapter(i),s=r.baseColorTexture;switch(t.alphaMode||"OPAQUE"){case"OPAQUE":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE,i.alpha=1;break}case"MASK":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST,r.alphaCutOff=t.alphaCutoff==null?.5:t.alphaCutoff,s&&(s.hasAlpha=!0);break}case"BLEND":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break}default:throw new Error(`${e}/alphaMode: Invalid value (${t.alphaMode})`)}}loadTextureInfoAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureInfoAsync(e,t,i);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);let s=Kt.Get(`${e}/index`,this._gltf.textures,t.index);s._textureInfo=t;let a=this._loadTextureAsync(`/textures/${t.index}`,s,o=>{o.coordinatesIndex=t.texCoord||0,n.AddPointerMetadata(o,e),this._parent.onTextureLoadedObservable.notifyObservers(o),i(o)});return this.logClose(),a}_loadTextureAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureAsync(e,t,i);if(r)return r;this.logOpen(`${e} ${t.name||""}`);let s=t.sampler==null?n.DefaultSampler:Kt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=Kt.Get(`${e}/source`,this._gltf.images,t.source),o=this._createTextureAsync(e,s,a,i,void 0,!t._textureInfo.nonColorData);return this.logClose(),o}_createTextureAsync(e,t,i,r=()=>{},s,a){var m,_;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new db;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,g)=>{this._disposed||c.reject(new Error(`${e}: ${g&&g.message?g.message:p||"Failed to load texture"}`))},mimeType:(_=i.mimeType)!=null?_:lV((m=i.uri)!=null?m:""),loaderOptions:s,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},d=new ge(null,this._babylonScene,f);d._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,l.push(c.promise);let h=i.uri&&!vf(i.uri)?i.uri:void 0,u=h!=null?h:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let g=`data:${this._uniqueRootUrl}${u}`;d.updateURL(g,p);let v=d.getInternalTexture();v&&(v.label=i.name)})),d.wrapU=o.wrapU,d.wrapV=o.wrapV,r(d),this._parent.useGltfTextureNames){let p=i.name||h||`image${i.index}`;d.name=p}return Promise.all(l).then(()=>d)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:t.minFilter===9728||t.minFilter===9729,samplingMode:n._GetTextureSamplingMode(e,t),wrapU:n._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:n._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{let i=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i)}this.logClose()}return t._data}loadUriAsync(e,t,i){let r=this._extensionsLoadUriAsync(e,t,i);if(r)return r;if(!n._ValidateUri(i))throw new Error(`${e}: '${i}' is invalid`);if(vf(i)){let s=new Uint8Array(Ef(i));return this.log(`${e}: Decoded ${i.substring(0,64)}... (${s.length} bytes)`),Promise.resolve(s)}return this.log(`${e}: Loading ${i}`),this._parent.preprocessUrlAsync(this._rootUrl+i).then(s=>new Promise((a,o)=>{this._parent._loadFile(this._babylonScene,s,l=>{this._disposed||(this.log(`${e}: Loaded ${i} (${l.byteLength} bytes)`),a(new Uint8Array(l)))},!0,l=>{o(new Am(`${e}: Failed to load '${i}'${l?": "+l.status+" "+l.statusText:""}`,l))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};let i=e._internalMetadata=e._internalMetadata||{},r=i.gltf=i.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,t){switch(t=t==null?10497:t,t){case 33071:return ge.CLAMP_ADDRESSMODE;case 33648:return ge.MIRROR_ADDRESSMODE;case 10497:return ge.WRAP_ADDRESSMODE;default:return ee.Warn(`${e}: Invalid value (${t})`),ge.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,t){let i=t.magFilter==null?9729:t.magFilter,r=t.minFilter==null?9987:t.minFilter;if(i===9729)switch(r){case 9728:return ge.LINEAR_NEAREST;case 9729:return ge.LINEAR_LINEAR;case 9984:return ge.LINEAR_NEAREST_MIPNEAREST;case 9985:return ge.LINEAR_LINEAR_MIPNEAREST;case 9986:return ge.LINEAR_NEAREST_MIPLINEAR;case 9987:return ge.LINEAR_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),ge.LINEAR_LINEAR_MIPLINEAR}else switch(i!==9728&&ee.Warn(`${e}/magFilter: Invalid value (${i})`),r){case 9728:return ge.NEAREST_NEAREST;case 9729:return ge.NEAREST_LINEAR;case 9984:return ge.NEAREST_NEAREST_MIPNEAREST;case 9985:return ge.NEAREST_LINEAR_MIPNEAREST;case 9986:return ge.NEAREST_NEAREST_MIPLINEAR;case 9987:return ge.NEAREST_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),ge.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,t){try{return vC(t)}catch(i){throw new Error(`${e}: ${i.message}`,{cause:i})}}static _GetTypedArray(e,t,i,r,s){let a=i.buffer;r=i.byteOffset+(r||0);let o=n._GetTypedArrayConstructor(`${e}/componentType`,t),l=D.GetTypeByteLength(t);return r%l!==0?(ee.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new o(a.slice(r,r+s*l),0)):new o(a,r,s)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return _e.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Se.PointListDrawMode;case 1:return Se.LineListDrawMode;case 2:return Se.LineLoopDrawMode;case 3:return Se.LineStripDrawMode;case 4:return Se.TriangleFillMode;case 5:return Se.TriangleStripDrawMode;case 6:return Se.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${t})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");let e=new Array;if(this._gltf.materials){for(let t of this._gltf.materials)if(t._data)for(let i in t._data){let r=t._data[i];for(let s of r.babylonMeshes){s.computeWorldMatrix(!0);let a=r.babylonMaterial;e.push(a.forceCompilationAsync(s)),e.push(a.forceCompilationAsync(s,{useInstances:!0})),this._parent.useClipPlane&&(e.push(a.forceCompilationAsync(s,{clipPlane:!0})),e.push(a.forceCompilationAsync(s,{clipPlane:!0,useInstances:!0})))}}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");let e=new Array,t=this._babylonScene.lights;for(let i of t){let r=i.getShadowGenerator();r&&e.push(r.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(let t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,i){for(let r of this._extensions)if(r.enabled){let s=`${r.name}.${t}`,a=e;a._activeLoaderExtensionFunctions=a._activeLoaderExtensionFunctions||{};let o=a._activeLoaderExtensionFunctions;if(!o[s]){o[s]=!0;try{let l=i(r);if(l)return l}finally{delete o[s]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",i=>i.loadSceneAsync&&i.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,i){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,i))}_extensionsLoadCameraAsync(e,t,i){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,i))}_extensionsLoadVertexDataAsync(e,t,i){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,i))}_extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a){return this._applyExtensions(s,"loadMeshPrimitive",o=>o._loadMeshPrimitiveAsync&&o._loadMeshPrimitiveAsync(e,t,i,r,s,a))}_extensionsLoadMaterialAsync(e,t,i,r,s){return this._applyExtensions(t,"loadMaterial",a=>a._loadMaterialAsync&&a._loadMaterialAsync(e,t,i,r,s))}_extensionsCreateMaterial(e,t,i){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,i))}_extensionsLoadMaterialPropertiesAsync(e,t,i){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,i))}_extensionsLoadTextureInfoAsync(e,t,i){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,i))}_extensionsLoadTextureAsync(e,t,i){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,i))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",i=>i.loadAnimationAsync&&i.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,i,r,s){return this._applyExtensions(i,"loadAnimationChannel",a=>a._loadAnimationChannelAsync&&a._loadAnimationChannelAsync(e,t,i,r,s))}_extensionsLoadSkinAsync(e,t,i){return this._applyExtensions(i,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,i))}_extensionsLoadUriAsync(e,t,i){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,i))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",i=>i.loadBufferViewAsync&&i.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,i,r){return this._applyExtensions(t,"loadBuffer",s=>s.loadBufferAsync&&s.loadBufferAsync(e,t,i,r))}static LoadExtensionAsync(e,t,i,r){if(!t.extensions)return null;let a=t.extensions[i];return a?r(`${e}/extensions/${i}`,a):null}static LoadExtraAsync(e,t,i,r){if(!t.extras)return null;let a=t.extras[i];return a?r(`${e}/extras/${i}`,a):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&this._gltf.extensionsUsed.indexOf(e)!==-1}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}};Cb.DefaultSampler={index:-1};id._CreateGLTF2Loader=n=>new Cb(n)});var HN,WN,qj=I(()=>{EO();HN="ExtrasAsMetadata",WN=class{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){let i=e.metadata=e.metadata||{},r=i.gltf=i.gltf||{};r.extras=t.extras}}constructor(e){this.name=HN,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,i){return this._loader.loadNodeAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}loadCameraAsync(e,t,i){return this._loader.loadCameraAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}createMaterial(e,t,i){let r=this._loader.createMaterial(e,t,i);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(i=>(this._assignExtras(i,t),i))}};vv(HN);_b(HN,!1,n=>new WN(n))});var Pb,Zj=I(()=>{Pb={name:"obj",extensions:".obj"}});var Oh,Qj=I(()=>{Ht();Gr();Dc();Oh=class n{constructor(){this.materials=[]}parseMTL(e,t,i,r){if(t instanceof ArrayBuffer)return;let s=t.split(` -`),a=/\s+/,o,l=null;for(let c=0;c=0?f.substring(0,d):f;h=h.toLowerCase();let u=d>=0?f.substring(d+1).trim():"";if(h==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new We(u,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(h==="kd"&&l)o=u.split(a,3).map(parseFloat),l.diffuseColor=pe.FromArray(o);else if(h==="ka"&&l)o=u.split(a,3).map(parseFloat),l.ambientColor=pe.FromArray(o);else if(h==="ks"&&l)o=u.split(a,3).map(parseFloat),l.specularColor=pe.FromArray(o);else if(h==="ke"&&l)o=u.split(a,3).map(parseFloat),l.emissiveColor=pe.FromArray(o);else if(h==="ns"&&l)l.specularPower=parseFloat(u);else if(h==="d"&&l)l.alpha=parseFloat(u);else if(h==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,u,e);else if(h==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,u,e);else if(h==="map_ks"&&l)l.specularTexture=n._GetTexture(i,u,e);else if(h!=="map_ns")if(h==="map_bump"&&l){let m=u.split(a),_=m.indexOf("-bm"),p=null;_>=0&&(p=m[_+1],m.splice(_,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else h==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,u,e))}l&&this.materials.push(l)}static _GetTexture(e,t,i){if(!t)return null;let r=e;if(e==="file:"){let s=t.lastIndexOf("\\");s===-1&&(s=t.lastIndexOf("/")),s>-1?r+=t.substring(s+1):r+=t}else r+=t;return new ge(r,i,!1,n.INVERT_TEXTURE_Y)}};Oh.INVERT_TEXTURE_Y=!0});var qr,$j=I(()=>{Wi();Dc();Ht();ke();Px();Ci();pr();Pt();qr=class n{constructor(e,t,i){this._positions=[],this._normals=[],this._uvs=[],this._colors=[],this._extColors=[],this._meshesFromObj=[],this._indicesForBabylon=[],this._wrappedPositionForBabylon=[],this._wrappedUvsForBabylon=[],this._wrappedColorsForBabylon=[],this._wrappedNormalsForBabylon=[],this._tuplePosNorm=[],this._curPositionInIndices=0,this._hasMeshes=!1,this._unwrappedPositionsForBabylon=[],this._unwrappedColorsForBabylon=[],this._unwrappedNormalsForBabylon=[],this._unwrappedUVForBabylon=[],this._triangles=[],this._materialNameFromObj="",this._objMeshName="",this._increment=1,this._isFirstMaterial=!0,this._grayColor=new lt(.5,.5,.5,1),this._hasLineData=!1,this._materialToUse=e,this._babylonMeshesArray=t,this._loadingOptions=i}_isInArray(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});let i=e[t[0]].normals.indexOf(t[1]);return i===-1?-1:e[t[0]].idx[i]}_isInArrayUV(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});let i=e[t[0]].normals.indexOf(t[1]);return i!=1&&t[2]===e[t[0]].uv[i]?e[t[0]].idx[i]:-1}_setData(e){var i,r;(i=e.indiceUvsFromObj)!=null||(e.indiceUvsFromObj=-1),(r=e.indiceNormalFromObj)!=null||(e.indiceNormalFromObj=-1);let t;this._loadingOptions.optimizeWithUV?t=this._isInArrayUV(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj,e.indiceUvsFromObj]):t=this._isInArray(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj]),t===-1?(this._indicesForBabylon.push(this._wrappedPositionForBabylon.length),this._wrappedPositionForBabylon.push(e.positionVectorFromOBJ),e.textureVectorFromOBJ!==void 0&&this._wrappedUvsForBabylon.push(e.textureVectorFromOBJ),e.normalsVectorFromOBJ!==void 0&&this._wrappedNormalsForBabylon.push(e.normalsVectorFromOBJ),e.positionColorsFromOBJ!==void 0&&this._wrappedColorsForBabylon.push(e.positionColorsFromOBJ),this._tuplePosNorm[e.indicePositionFromObj].normals.push(e.indiceNormalFromObj),this._tuplePosNorm[e.indicePositionFromObj].idx.push(this._curPositionInIndices++),this._loadingOptions.optimizeWithUV&&this._tuplePosNorm[e.indicePositionFromObj].uv.push(e.indiceUvsFromObj)):this._indicesForBabylon.push(t)}_unwrapData(){try{for(let e=0;e0&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._unwrapData(),this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._handledMesh.indices=this._indicesForBabylon.slice(),this._handledMesh.positions=this._unwrappedPositionsForBabylon.slice(),this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon.slice()),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon.slice()),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon.slice()),this._handledMesh.hasLines=this._hasLineData,this._indicesForBabylon.length=0,this._unwrappedPositionsForBabylon.length=0,this._unwrappedColorsForBabylon.length=0,this._unwrappedNormalsForBabylon.length=0,this._unwrappedUVForBabylon.length=0,this._hasLineData=!1)}_optimizeNormals(e){let t=e.getVerticesData(D.PositionKind),i=e.getVerticesData(D.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u+1],h[u]),this._handednessSign=1):(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=-1);let a=t.split(` -`),o=[],l=[];o.push(l);for(let h=0;h=7){let _=parseFloat(m[4]),p=parseFloat(m[5]),g=parseFloat(m[6]);this._colors.push(new lt(_>1?_/255:_,p>1?p/255:p,g>1?g/255:g,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(u))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(u))!==null)this._uvs.push(new Fe(parseFloat(m[1])*this._loadingOptions.UVScaling.x,parseFloat(m[2])*this._loadingOptions.UVScaling.y));else if((m=n.FacePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(u))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(u))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(u,!this._loadingOptions.importVertexColors))for(let _ of m)this._extColors.push(_);else if((m=n.LinePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(u)||n.ObjectDescriptor.test(u)){let _={name:u.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(u)};this._addPreviousObjMesh(),this._meshesFromObj.push(_),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(u)){if(this._materialNameFromObj=u.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let _={name:(this._objMeshName||"mesh")+"_mm"+this._increment.toString(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:!1};this._increment++,this._meshesFromObj.push(_),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(u)?s(u.substring(7).trim()):n.SmoothDescriptor.test(u)||ee.Log("Unhandled expression at line : "+u)}if(this._hasMeshes&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData(),this._handledMesh.indices=this._indicesForBabylon,this._handledMesh.positions=this._unwrappedPositionsForBabylon,this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon),this._handledMesh.hasLines=this._hasLineData),!this._hasMeshes){let h=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let u of this._positions)this._unwrappedPositionsForBabylon.push(u.x,u.y,u.z);if(this._normals.length)for(let u of this._normals)this._unwrappedNormalsForBabylon.push(u.x,u.y,u.z);if(this._uvs.length)for(let u of this._uvs)this._unwrappedUVForBabylon.push(u.x,u.y);if(this._extColors.length)for(let u of this._extColors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);else if(this._colors.length)for(let u of this._colors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);this._materialNameFromObj||(h=new We(_n.RandomId(),i),h.pointsCloud=!0,this._materialNameFromObj=h.name,this._normals.length||(h.disableLighting=!0,h.emissiveColor=pe.White()))}this._meshesFromObj.push({name:_n.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:h,isObject:!0,hasLines:this._hasLineData})}for(let h=0;h=0;--_)if(this._meshesFromObj[_].isObject&&this._meshesFromObj[_]._babylonMesh){u.parent=this._meshesFromObj[_]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[h].materialName),this._handledMesh.hasLines&&((f=u._internalMetadata)!=null||(u._internalMetadata={}),u._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(u);continue}let m=new ye;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let _=new Array;ye.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,_),m.normals=_}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(u),this._loadingOptions.invertY&&(u.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(u),this._babylonMeshesArray.push(u),this._handledMesh.directMaterial&&(u.material=this._handledMesh.directMaterial)}}};qr.ObjectDescriptor=/^o/;qr.GroupDescriptor=/^g/;qr.MtlLibGroupDescriptor=/^mtllib /;qr.UseMtlDescriptor=/^usemtl /;qr.SmoothDescriptor=/^s /;qr.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;qr.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;qr.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;qr.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;qr.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;qr.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;qr.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;qr.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var Jj={};Be(Jj,{OBJFileLoader:()=>ha});var ha,zN=I(()=>{ke();yi();_p();pv();Zj();Qj();$j();Dc();ha=class n{static get INVERT_TEXTURE_Y(){return Oh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){Oh.INVERT_TEXTURE_Y=e}constructor(e){this.name=Pb.name,this.extensions=Pb.extensions,this._assetContainer=null,this._loadingOptions={...n._DefaultLoadingOptions,...e!=null?e:{}}}static get _DefaultLoadingOptions(){return{computeNormals:n.COMPUTE_NORMALS,optimizeNormals:n.OPTIMIZE_NORMALS,importVertexColors:n.IMPORT_VERTEX_COLORS,invertY:n.INVERT_Y,invertTextureY:n.INVERT_TEXTURE_Y,UVScaling:n.UV_SCALING,materialLoadingFailsSilently:n.MATERIAL_LOADING_FAILS_SILENTLY,optimizeWithUV:n.OPTIMIZE_WITH_UV,skipMaterials:n.SKIP_MATERIALS,useLegacyBehavior:n.USE_LEGACY_BEHAVIOR}}_loadMTL(e,t,i,r){let s=t+e;_e.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[Pb.name])}canDirectLoad(){return!1}importMeshAsync(e,t,i,r){return this._parseSolidAsync(e,t,i,r).then(s=>({meshes:s,particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))}loadAsync(e,t,i){return this.importMeshAsync(null,e,t,i).then(()=>{})}loadAssetContainerAsync(e,t,i){let r=new Rl(e);return this._assetContainer=r,this.importMeshAsync(null,e,t,i).then(s=>(s.meshes.forEach(a=>r.meshes.push(a)),s.meshes.forEach(a=>{let o=a.material;o&&r.materials.indexOf(o)==-1&&(r.materials.push(o),o.getActiveTextures().forEach(c=>{r.textures.indexOf(c)==-1&&r.textures.push(c)}))}),this._assetContainer=null,r)).catch(s=>{throw this._assetContainer=null,s})}_parseSolidAsync(e,t,i,r){let s="",a=new Oh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new qr(o,l,this._loadingOptions).parse(e,i,t,this._assetContainer,d=>{s=d});let f=[];return s!==""&&!this._loadingOptions.skipMaterials&&f.push(new Promise((d,h)=>{this._loadMTL(s,r,u=>{try{a.parseMTL(t,u,r,this._assetContainer);for(let m=0;m-1;)p.push(g),_=g+1;if(g===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{_e.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():h(m)})})),Promise.all(f).then(()=>{let d=h=>{var u,m;return!!((m=(u=h._internalMetadata)==null?void 0:u._isLine)!=null&&m)};return l.forEach(h=>{var u,m;if(d(h)){let _=(u=h.material)!=null?u:new We(h.name+"_line",t);_.getBindedMeshes().filter(g=>!d(g)).length>0&&(_=(m=_.clone(_.name+"_line"))!=null?m:_),_.wireframe=!0,h.material=_,h._internalMetadata&&(h._internalMetadata._isLine=void 0)}}),l})}};ha.OPTIMIZE_WITH_UV=!0;ha.INVERT_Y=!1;ha.IMPORT_VERTEX_COLORS=!1;ha.COMPUTE_NORMALS=!1;ha.OPTIMIZE_NORMALS=!1;ha.UV_SCALING=new Fe(1,1);ha.SKIP_MATERIALS=!1;ha.MATERIAL_LOADING_FAILS_SILENTLY=!0;ha.USE_LEGACY_BEHAVIOR=!1;td(new ha)});function j_e(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function XN(n,e){if(j_e(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function Db(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function tq(){if(eq)return;let n=i=>XN(i,"asset loading"),e=i=>XN(i,"script loading"),t=()=>-1;_e.PreprocessUrl=n,_e.ScriptPreprocessUrl=e,_e.DefaultRetryStrategy=t,_e.LoadScript=(i,r,s)=>{try{e(i),Db(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},_e.LoadScriptAsync=async i=>{e(i),Db(i)},_e.LoadBabylonScript=(i,r,s)=>{try{Db(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},_e.LoadBabylonScriptAsync=async i=>{Db(i)},ki.PreprocessUrl=n,ki.ScriptPreprocessUrl=e,ki.DefaultRetryStrategy=t,Cr.CustomRequestModifiers.push((i,r)=>XN(r,"request")),eq=!0}var eq,iq=I(()=>{"use strict";Jl();yi();nh();eq=!1});function Lb(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let _=new TextDecoder().decode(new Uint8Array(e,0,6));if(_==="solid "||_===`solid -`){let p=new TextDecoder().decode(new Uint8Array(e,0,Math.min(e.byteLength,800)));if(p.includes("facet")||p.includes("endsolid"))throw new Error("ASCII STL detected \u2014 only binary STL is supported. Convert to binary STL first.")}}let t=new DataView(e),i=t.getUint32(80,!0);if(i===0)throw new Error("STL file contains 0 triangles");let r=84+i*50;if(e.byteLength>0&31)/31,O=(v>>5&31)/31,N=(v>>10&31)/31,B=_*12;l[B+0]=G,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=G,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=G,l[B+9]=O,l[B+10]=N,l[B+11]=1}let x=a[p+3]-a[p+0],S=a[p+4]-a[p+1],E=a[p+5]-a[p+2],T=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],y=S*M-E*R,C=E*T-x*M,L=x*R-S*T,w=Math.sqrt(y*y+C*C+L*L);w>1e-8?(y/=w,C/=w,L/=w):(y=0,C=0,L=1,f++),o[p+0]=y,o[p+1]=C,o[p+2]=L,o[p+3]=y,o[p+4]=C,o[p+5]=L,o[p+6]=y,o[p+7]=C,o[p+8]=L,c[g+0]=p/3+0,c[g+1]=p/3+1,c[g+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let h=new ye;h.positions=a,h.normals=o,h.indices=c,l&&(h.colors=l);let u=new Z("stl-model",n);h.applyToMesh(u);let m=new We("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new pe(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new pe(1,1,1),m.emissiveColor=new pe(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new pe(.85,.85,.85),m.emissiveColor=new pe(.1,.1,.1)),u.material=m,u}function rq(n,e){return Lb(n,e)}function nq(n){n(q_e)}var q_e,YN=I(()=>{"use strict";Ci();pv();pr();Dc();Ht();q_e={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[Lb(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{Lb(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=Lb(n,e),i=new Rl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function Z_e(n){let e=n.split(` -`),t=[],i="binary_little_endian",r=null;for(let s of e){let a=s.trim();if(a==="end_header")break;if(a==="ply"||a===""||a.startsWith("comment"))continue;let o=a.split(/\s+/),l=o[0];l==="format"?i=o[1]:l==="element"?(r={name:o[1],count:parseInt(o[2],10),properties:[]},t.push(r)):l==="property"&&r&&(o[1]==="list"?r.properties.push({name:o[4],type:"list",isList:!0,countType:o[2],itemType:o[3]}):r.properties.push({name:o[2],type:o[1],isList:!1}))}return{format:i,elements:t}}function Mp(n){switch(n){case"uchar":case"uint8":return 1;case"char":case"int8":return 1;case"ushort":case"uint16":return 2;case"short":case"int16":return 2;case"uint":case"uint32":return 4;case"int":case"int32":return 4;case"float":case"float32":return 4;case"double":case"float64":return 8;default:return 4}}function Ob(n,e,t,i){switch(t){case"uchar":case"uint8":return n.getUint8(e);case"char":case"int8":return n.getInt8(e);case"ushort":case"uint16":return n.getUint16(e,i);case"short":case"int16":return n.getInt16(e,i);case"uint":case"uint32":return n.getUint32(e,i);case"int":case"int32":return n.getInt32(e,i);case"float":case"float32":return n.getFloat32(e,i);case"double":case"float64":return n.getFloat64(e,i);default:return 0}}function Q_e(n,e,t,i){let r=i,s=new DataView(n),a=[],o=[],l=[],c=e.elements.find(d=>d.name==="vertex"),f=e.elements.find(d=>d.name==="face");if(c){let d=c.properties.some(u=>u.name==="x"),h=c.properties.some(u=>u.name==="red"||u.name==="r");for(let u=0;uh.name==="vertex"),c=e.elements.find(h=>h.name==="face"),f=0;if(l){let h=l.properties.some(_=>_.name==="x"),u=l.properties.some(_=>_.name==="red"||_.name==="r"),m=l.properties.filter(_=>!_.isList);for(let _=0;_0){c.indices=o.indices;let h=new Array(l.length).fill(0),u=o.indices,m=l.length-3;for(let _=0;_m||g>m||v>m)continue;let x=l[p],S=l[p+1],E=l[p+2],T=l[g]-x,R=l[g+1]-S,M=l[g+2]-E,y=l[v]-x,C=l[v+1]-S,L=l[v+2]-E,w=R*L-M*C,G=M*y-T*L,O=T*C-R*y;h[p]+=w,h[p+1]+=G,h[p+2]+=O,h[g]+=w,h[g+1]+=G,h[g+2]+=O,h[v]+=w,h[v+1]+=G,h[v+2]+=O}for(let _=0;_0&&(h[_]/=p,h[_+1]/=p,h[_+2]/=p)}c.normals=h}else{let h=o.positions.length/3,u=[];for(let m=0;m=3&&u.push(0,1,2),c.indices=u}let f=new Z("ply-model",n);c.applyToMesh(f);let d=new We("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new pe(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new pe(.7,.7,.7),f.material=d,f}function sq(n,e){return Nb(n,e)}function aq(n){n(J_e)}var J_e,KN=I(()=>{"use strict";Ci();pv();pr();Dc();Ht();J_e={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[Nb(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{Nb(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=Nb(n,e),i=new Rl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function bv(){oq||(tq(),nq(td),aq(td),oq=!0)}var oq,Mv=I(()=>{"use strict";_O();jj();qj();zN();_p();iq();YN();KN();oq=!1});function Iv(n){return Math.floor(n.getTotalIndices()/3)}function sd(n){return n.getTotalVertices()}function Nh(n,e=[]){let t=[n,...e,...n.getChildMeshes(!0)],i=new Set;return t.filter(r=>!r||i.has(r)||r.isDisposed()?!1:(i.add(r),sd(r)>0||r.getTotalIndices()>0))}function lq(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function jN(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return hf(Qt(e.minimumWorld),Qt(e.maximumWorld))}function ad(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=Kd(e,jN(t)));return e}function Fb(n,e=[]){var t;return(t=ad(Nh(n,e)))!=null?t:jN(n)}function Bb(n,e,t,i={}){return NT({rootName:n,boundingSize:ji(e),meshes:t.map(r=>({triangleCount:Iv(r),vertexCount:sd(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function cq(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:Iv(n),vertexCount:sd(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function qN(n,e=wb){var a,o,l;let t=jN(n),i=n.name||`mesh-${n.uniqueId}`,r=Vb(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=aa(r,{name:i,path:Ub(n)});return zl({name:QN(s,i),triangleCount:Iv(n),vertexCount:sd(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:ji(t),center:vr(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function fq(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function ege(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function tge(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function ZN(n,e,t=wb){var u,m;if(e.includes(n))return qN(n,t);let i=new Set(e),r=fq(n,i),s=Qt(n.getAbsolutePosition()),a=(u=ad(r))!=null?u:hf(s,s),o=new Set,l=0,c=0;for(let _ of r)l+=Iv(_),c+=sd(_),(m=_.material)!=null&&m.name&&o.add(_.material.name);let f=Ip(n,`component-${n.uniqueId}`),d=Vb(n.metadata,t.get(`node:${f}`)),h=aa(d,{name:f,path:Ub(n)});return zl({name:QN(h,f),triangleCount:l,vertexCount:c,materialName:jd(o),boundingSize:ji(a),center:vr(a),source:h.hasExplicitIdentity?"component":"group",meshNames:r.map(_=>_.name||`mesh-${_.uniqueId}`),childCount:r.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function yv(n,e,t,i=wb){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=fq(f,r);if(d.length>0&&d.length1&&u.trim()&&!ege(u)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function dq(n,e,t=wb){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(h=>i.has(h)),c=Ip(o,`component-${o.uniqueId}`),f=Vb(o.metadata,t.get(`node:${c}`)),d=aa(f,{name:Ip(o,`component-${o.uniqueId}`),path:Ub(o)});l.length<1||l.length===n.length||!d.hasExplicitIdentity&&(!o.name.trim()||l.length<2)||a.push({node:o,childMeshes:l,identity:d})}return a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({node:o,childMeshes:l,identity:c})=>{var _;let f=l.filter(p=>!s.has(p));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let p of f)s.add(p);let d=ad(f);if(!d)return;let h=new Set,u=0,m=0;for(let p of f)u+=Iv(p),m+=sd(p),(_=p.material)!=null&&_.name&&h.add(p.material.name);r.push(zl({name:QN(c,Ip(o,`component-${o.uniqueId}`)),triangleCount:u,vertexCount:m,materialName:jd(h),boundingSize:ji(d),center:vr(d),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(p=>p.name||`mesh-${p.uniqueId}`),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function hq(n,e){let t=ige(n,e),i=new Map;if(!t)return i;let r=Array.isArray(t.nodes)?t.nodes:[];for(let a of r){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`node:${l}`,o.extras)}let s=Array.isArray(t.meshes)?t.meshes:[];for(let a of s){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`mesh:${l}`,o.extras)}return i}function Ip(n,e){var i;return((i=aa(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function Ub(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Ip(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function ige(n,e){try{if(e==="gltf")return JSON.parse(new TextDecoder().decode(new Uint8Array(n)));if(e!=="glb")return null;let t=new DataView(n);if(t.byteLength<20||t.getUint32(0,!0)!==1179937895)return null;let i=t.getUint32(12,!0);if(t.getUint32(16,!0)!==1313821514||20+i>t.byteLength)return null;let s=new Uint8Array(n,20,i);return JSON.parse(new TextDecoder().decode(s))}catch(t){return null}}function Vb(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function QN(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var wb,Cv=I(()=>{"use strict";il();wy();tg();Ds();wT();wb=new Map});function od(n){return rn(n)}function uq(n,e,t,i=[]){$T(new Gb(n,i),e,t)}function $N(n,e=[]){JT(new Gb(n,e))}var Gb,mq=I(()=>{"use strict";ke();il();Ds();Vy();Cv();Gb=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return Nh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return vr(Fb(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return Qt(e.position)}getPartCenter(e){return Qt(e.getBoundingInfo().boundingBox.centerWorld)}setPartPosition(e,t){e.position=new b(t.x,t.y,t.z)}getPartState(e){let t=e.metadata;return t!=null&&t._previewExplodeState?{originalPosition:od(t._previewExplodeState.originalPosition),originalCenter:od(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:od(t._originalPos),originalCenter:od(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:od(t.originalPosition),originalCenter:od(t.originalCenter)},i._originalPos=od(t.originalPosition),i._originalCenter=od(t.originalCenter)}}});var kb={};Be(kb,{glowBlurPostProcessPixelShaderWGSL:()=>rge});var JN,pq,rge,Wb=I(()=>{k();JN="glowBlurPostProcessPixelShader",pq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f;uniform direction: vec2f;uniform blurWidth: f32;fn getLuminance(color: vec3f)->f32 +`;A.ShadersStore[kN]||(A.ShadersStore[kN]=Hj);q_e={name:kN,shader:Hj}});var bp,WN,Pb,HN,xr,Yj=I(()=>{Gt();Vt();Pt();So();xb();Bs();ke();Wi();H9();Qx();Ht();$x();Mg();Yn();Ga();Yg();Ua();gP();Gf();z9();X9();Y9();K9();j9();aL();vl();Kg();Xn();Jx();eR();tR();iR();bp={effect:null,subMesh:null},WN=class extends fp(cp(Mr)){},Pb=class extends op(WN){constructor(e){super(e),this.PBR=!0,this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.ALBEDO=!1,this.GAMMAALBEDO=!1,this.ALBEDODIRECTUV=0,this.VERTEXCOLOR=!1,this.BASE_WEIGHT=!1,this.BASE_WEIGHTDIRECTUV=0,this.BASE_DIFFUSE_ROUGHNESS=!1,this.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.AMBIENTINGRAYSCALE=!1,this.OPACITY=!1,this.VERTEXALPHA=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHAFROMALBEDO=!1,this.ALPHATESTVALUE="0.5",this.SPECULAROVERALPHA=!1,this.RADIANCEOVERALPHA=!1,this.ALPHAFRESNEL=!1,this.LINEARALPHAFRESNEL=!1,this.PREMULTIPLYALPHA=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.GAMMAEMISSIVE=!1,this.REFLECTIVITY=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.MICROSURFACEFROMREFLECTIVITYMAP=!1,this.MICROSURFACEAUTOMATIC=!1,this.LODBASEDMICROSFURACE=!1,this.MICROSURFACEMAP=!1,this.MICROSURFACEMAPDIRECTUV=0,this.METALLICWORKFLOW=!1,this.ROUGHNESSSTOREINMETALMAPALPHA=!1,this.ROUGHNESSSTOREINMETALMAPGREEN=!1,this.METALLNESSSTOREINMETALMAPBLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.METALLIC_REFLECTANCE=!1,this.METALLIC_REFLECTANCE_GAMMA=!1,this.METALLIC_REFLECTANCEDIRECTUV=0,this.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=!1,this.REFLECTANCE=!1,this.REFLECTANCE_GAMMA=!1,this.REFLECTANCEDIRECTUV=0,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.NORMAL=!1,this.TANGENT=!1,this.BUMP=!1,this.BUMPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.USELIGHTMAPASSHADOWMAP=!1,this.GAMMALIGHTMAP=!1,this.RGBDLIGHTMAP=!1,this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1,this.LINEARSPECULARREFLECTION=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.PBR=!0,this.NORMALXYSCALE=!0}},HN=class extends dp(Al){},xr=class n extends HN{get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._directIntensity=1,this._emissiveIntensity=1,this._environmentIntensity=1,this._specularIntensity=1,this._lightingInfos=new Ii(this._directIntensity,this._emissiveIntensity,this._environmentIntensity,this._specularIntensity),this._disableBumpMap=!1,this._albedoTexture=null,this._baseWeightTexture=null,this._baseDiffuseRoughnessTexture=null,this._ambientTexture=null,this._ambientTextureStrength=1,this._ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._reflectivityTexture=null,this._metallicTexture=null,this._metallic=null,this._roughness=null,this._metallicF0Factor=1,this._metallicReflectanceColor=pe.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new pe(0,0,0),this._albedoColor=new pe(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new pe(1,1,1),this._reflectionColor=new pe(1,1,1),this._emissiveColor=new pe(0,0,0),this._microSurface=.9,this._useLightmapAsShadowmap=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromAlbedoTexture=!1,this._useSpecularOverAlpha=!0,this._useMicroSurfaceFromReflectivityMapAlpha=!1,this._useRoughnessFromMetallicTextureAlpha=!0,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallnessFromMetallicTextureBlue=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useAmbientInGrayScale=!1,this._useAutoMicroSurfaceFromReflectivityMap=!1,this._lightFalloff=n.LIGHTFALLOFF_PHYSICAL,this._useRadianceOverAlpha=!0,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Vi(16),this._globalAmbientColor=new pe(0,0,0),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this.brdf=new Pr(this),this.clearCoat=new ln(this),this.iridescence=new Xs(this),this.anisotropy=new Nc(this),this.sheen=new da(this),this.subSurface=new Ai(this),this.detailMap=new ka(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=Ab(this.getScene()),this.prePassConfiguration=new Hs}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"PBRBaseMaterial"}get _disableAlphaBlending(){var e;return this._transparencyMode===n.PBRMATERIAL_OPAQUE||this._transparencyMode===n.PBRMATERIAL_ALPHATEST||((e=this.subSurface)==null?void 0:e.disableAlphaBlending)}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromAlbedoTexture()}needAlphaTesting(){var e;return this._hasTransparencyMode?this._transparencyModeIsTest:(e=this.subSurface)!=null&&e.disableAlphaBlending?!1:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===n.PBRMATERIAL_ALPHATEST)}_shouldUseAlphaFromAlbedoTexture(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha&&this._useAlphaFromAlbedoTexture&&this._transparencyMode!==n.PBRMATERIAL_OPAQUE}_hasAlphaChannel(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._albedoTexture}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new Pb(this._eventInfo.defineNames));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){if(this._albedoTexture&&ce.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&ce.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&ce.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let u=this._getReflectionTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&ce.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&ce.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(ce.SpecularTextureEnabled){if(this._metallicTexture){if(!this._metallicTexture.isReadyOrNotBlocking())return!1}else if(this._reflectivityTexture&&!this._reflectivityTexture.isReadyOrNotBlocking())return!1;if(this._metallicReflectanceTexture&&!this._metallicReflectanceTexture.isReadyOrNotBlocking()||this._reflectanceTexture&&!this._reflectanceTexture.isReadyOrNotBlocking()||this._microSurfaceTexture&&!this._microSurfaceTexture.isReadyOrNotBlocking())return!1}if(o.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady())return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED||s.CLUSTLIGHT_BATCH){for(let u=0;u{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;kt&&(kt.PrepareUniforms(m,i),kt.PrepareSamplers(_,i)),Zm({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let x=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:x,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>($9(),Q9)),Promise.resolve().then(()=>(HK(),WK))]):await Promise.all([Promise.resolve().then(()=>(qK(),jK)),Promise.resolve().then(()=>(Xj(),zj))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();zm(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Km(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(qm(o,i,this.canRenderToMRT&&!c),jm(o,i,c),Zn.PrepareDefines(l.currentRenderPassId,e,i),i.METALLICWORKFLOW=this.isMetallicWorkflow(),i._areTexturesDirty){i._needUVs=!1;for(let f=1;f<=6;++f)i["MAINUV"+f]=!1;if(o.texturesEnabled){i.ALBEDODIRECTUV=0,i.BASE_WEIGHTDIRECTUV=0,i.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,i.AMBIENTDIRECTUV=0,i.OPACITYDIRECTUV=0,i.EMISSIVEDIRECTUV=0,i.REFLECTIVITYDIRECTUV=0,i.MICROSURFACEMAPDIRECTUV=0,i.METALLIC_REFLECTANCEDIRECTUV=0,i.REFLECTANCEDIRECTUV=0,i.BUMPDIRECTUV=0,i.LIGHTMAPDIRECTUV=0,l.getCaps().textureLOD&&(i.LODBASEDMICROSFURACE=!0),this._albedoTexture&&ce.DiffuseTextureEnabled?(ri(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&ce.BaseWeightTextureEnabled?ri(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled?ri(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&ce.AmbientTextureEnabled?(ri(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&ce.OpacityTextureEnabled?(ri(this._opacityTexture,i,"OPACITY"),i.OPACITYRGB=this._opacityTexture.getAlphaFromRGB):i.OPACITY=!1;let f=this._getReflectionTexture(),d=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;Lf(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&ce.LightmapTextureEnabled?(ri(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&ce.EmissiveTextureEnabled?(ri(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,ce.SpecularTextureEnabled?(this._metallicTexture?(ri(this._metallicTexture,i,"REFLECTIVITY"),i.ROUGHNESSSTOREINMETALMAPALPHA=this._useRoughnessFromMetallicTextureAlpha,i.ROUGHNESSSTOREINMETALMAPGREEN=!this._useRoughnessFromMetallicTextureAlpha&&this._useRoughnessFromMetallicTextureGreen,i.METALLNESSSTOREINMETALMAPBLUE=this._useMetallnessFromMetallicTextureBlue,i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed,i.REFLECTIVITY_GAMMA=!1):this._reflectivityTexture?(ri(this._reflectivityTexture,i,"REFLECTIVITY"),i.MICROSURFACEFROMREFLECTIVITYMAP=this._useMicroSurfaceFromReflectivityMapAlpha,i.MICROSURFACEAUTOMATIC=this._useAutoMicroSurfaceFromReflectivityMap,i.REFLECTIVITY_GAMMA=this._reflectivityTexture.gammaSpace):i.REFLECTIVITY=!1,this._metallicReflectanceTexture||this._reflectanceTexture?(i.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=this._useOnlyMetallicFromMetallicReflectanceTexture,this._metallicReflectanceTexture?(ri(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(ri(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?ri(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap?(ri(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.BUMP=!1,i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._shouldUseAlphaFromAlbedoTexture()?i.ALPHAFROMALBEDO=!0:i.ALPHAFROMALBEDO=!1}i.SPECULAROVERALPHA=this._useSpecularOverAlpha,this._lightFalloff===n.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===n.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),i.RADIANCEOVERALPHA=this._useRadianceOverAlpha,!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e),i.ALPHAFRESNEL=this._useAlphaFresnel||this._useLinearAlphaFresnel,i.LINEARALPHAFRESNEL=this._useLinearAlphaFresnel),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,i._areMiscDirty&&(Wm(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(D.NormalKind),i.DEBUGMODE=this._debugMode),Xm(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),Ym(e,i,!0,!0,!0,this._transparencyMode!==n.PBRMATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new Pb(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(bp.effect=o,bp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(bp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("vAlbedoInfos",2),e.addUniform("vBaseWeightInfos",2),e.addUniform("vBaseDiffuseRoughnessInfos",2),e.addUniform("vAmbientInfos",4),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vReflectivityInfos",3),e.addUniform("vMicroSurfaceSamplerInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("albedoMatrix",16),e.addUniform("baseWeightMatrix",16),e.addUniform("baseDiffuseRoughnessMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("reflectivityMatrix",16),e.addUniform("microSurfaceSamplerMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("vAlbedoColor",4),e.addUniform("baseWeight",1),e.addUniform("baseDiffuseRoughness",1),e.addUniform("vLightingIntensity",4),e.addUniform("pointSize",1),e.addUniform("vReflectivityColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vAmbientColor",3),e.addUniform("vDebugMode",2),e.addUniform("vMetallicReflectanceFactors",4),e.addUniform("vMetallicReflectanceInfos",2),e.addUniform("metallicReflectanceMatrix",16),e.addUniform("vReflectanceInfos",2),e.addUniform("reflectanceMatrix",16),e.addUniform("cameraInfo",4),Qm(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var h,u,m,_;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),Zn.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);Vs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Wf(this._activeEffect,this._vertexPullingMetadata);let f=null,d=this._uniformBuffer;if(c){if(this.bindViewProjection(a),f=this._getReflectionTexture(),!d.useUbo||!this.isFrozen||!d.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),ni(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),ni(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),ni(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&ce.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),ni(this._ambientTexture,d,"ambient")),this._opacityTexture&&ce.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ni(this._opacityTexture,d,"opacity")),this._emissiveTexture&&ce.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ni(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&ce.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ni(this._lightmapTexture,d,"lightmap")),ce.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),ni(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),ni(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),ni(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),ni(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),ni(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),ni(this._bumpTexture,d,"bump"),r._mirroredCameraPosition?d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),Fm(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Rn.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Rn.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(u=(h=this.subSurface)==null?void 0:h._indexOfRefraction)!=null?u:1.5,g=1;Rn.Color4[0].b=p;let v=Math.pow((p-g)/(p+g),2);Rn.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Rn.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",ce.EmissiveTextureEnabled?this._emissiveColor:pe.BlackReadOnly),!s.SS_REFRACTION&&((m=this.subSurface)!=null&&m._linkRefractionWithTransparency)?d.updateColor4("vAlbedoColor",this._albedoColor,1):d.updateColor4("vAlbedoColor",this._albedoColor,this.alpha),d.updateFloat("baseWeight",this._baseWeight),d.updateFloat("baseDiffuseRoughness",this._baseDiffuseRoughness||0),this._lightingInfos.x=this._directIntensity,this._lightingInfos.y=this._emissiveIntensity,this._lightingInfos.z=this._environmentIntensity*r.environmentIntensity,this._lightingInfos.w=this._specularIntensity,d.updateVector4("vLightingIntensity",this._lightingInfos),r.ambientColor.multiplyToRef(this._ambientColor,this._globalAmbientColor),d.updateColor3("vAmbientColor",this._globalAmbientColor),d.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&ce.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&ce.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),wx(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&ce.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&ce.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),ce.SpecularTextureEnabled&&(this._metallicTexture?d.setTexture("reflectivitySampler",this._metallicTexture):this._reflectivityTexture&&d.setTexture("reflectivitySampler",this._reflectivityTexture),this._metallicReflectanceTexture&&d.setTexture("metallicReflectanceSampler",this._metallicReflectanceTexture),this._reflectanceTexture&&s.REFLECTANCE&&d.setTexture("reflectanceSampler",this._reflectanceTexture),this._microSurfaceTexture&&d.setTexture("microSurfaceSampler",this._microSurfaceTexture)),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&d.setTexture("bumpSampler",this._bumpTexture)),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),Hn(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Um(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ei.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),Pf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&zn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((_=t.bakedVertexAnimationManager)==null||_.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Cf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),d.update()}getAnimatables(){let e=super.getAnimatables();return this._albedoTexture&&this._albedoTexture.animations&&this._albedoTexture.animations.length>0&&e.push(this._albedoTexture),this._baseWeightTexture&&this._baseWeightTexture.animations&&this._baseWeightTexture.animations.length>0&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&this._baseDiffuseRoughnessTexture.animations&&this._baseDiffuseRoughnessTexture.animations.length>0&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._metallicTexture&&this._metallicTexture.animations&&this._metallicTexture.animations.length>0?e.push(this._metallicTexture):this._reflectivityTexture&&this._reflectivityTexture.animations&&this._reflectivityTexture.animations.length>0&&e.push(this._reflectivityTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._metallicReflectanceTexture&&this._metallicReflectanceTexture.animations&&this._metallicReflectanceTexture.animations.length>0&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&this._reflectanceTexture.animations&&this._reflectanceTexture.animations.length>0&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&this._microSurfaceTexture.animations&&this._microSurfaceTexture.animations.length>0&&e.push(this._microSurfaceTexture),e}_getReflectionTexture(){return this._reflectionTexture?this._reflectionTexture:this.getScene().environmentTexture}getActiveTextures(){let e=super.getActiveTextures();return this._albedoTexture&&e.push(this._albedoTexture),this._baseWeightTexture&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._reflectivityTexture&&e.push(this._reflectivityTexture),this._metallicTexture&&e.push(this._metallicTexture),this._metallicReflectanceTexture&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&e.push(this._microSurfaceTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._albedoTexture===e||this._baseWeightTexture===e||this._baseDiffuseRoughnessTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._reflectivityTexture===e||this._metallicTexture===e||this._metallicReflectanceTexture===e||this._reflectanceTexture===e||this._microSurfaceTexture===e||this._bumpTexture===e||this._lightmapTexture===e)}setPrePassRenderer(){var t;if(!((t=this.subSurface)!=null&&t.isScatteringEnabled))return!1;let e=this.getScene().enableSubSurfaceForPrePass();return e&&(e.enabled=!0),!0}dispose(e,t){var i,r,s,a,o,l,c,f,d,h,u,m,_,p;this._breakShaderLoadedCheck=!0,t&&(this._environmentBRDFTexture&&this.getScene().environmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),(i=this._albedoTexture)==null||i.dispose(),(r=this._baseWeightTexture)==null||r.dispose(),(s=this._baseDiffuseRoughnessTexture)==null||s.dispose(),(a=this._ambientTexture)==null||a.dispose(),(o=this._opacityTexture)==null||o.dispose(),(l=this._reflectionTexture)==null||l.dispose(),(c=this._emissiveTexture)==null||c.dispose(),(f=this._metallicTexture)==null||f.dispose(),(d=this._reflectivityTexture)==null||d.dispose(),(h=this._bumpTexture)==null||h.dispose(),(u=this._lightmapTexture)==null||u.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(_=this._reflectanceTexture)==null||_.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};xr.PBRMATERIAL_OPAQUE=Se.MATERIAL_OPAQUE;xr.PBRMATERIAL_ALPHATEST=Se.MATERIAL_ALPHATEST;xr.PBRMATERIAL_ALPHABLEND=Se.MATERIAL_ALPHABLEND;xr.PBRMATERIAL_ALPHATESTANDBLEND=Se.MATERIAL_ALPHATESTANDBLEND;xr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;xr.LIGHTFALLOFF_PHYSICAL=0;xr.LIGHTFALLOFF_GLTF=1;xr.LIGHTFALLOFF_STANDARD=2;xr.ForceGLSL=!1;P([le("_markAllSubMeshesAsMiscDirty")],xr.prototype,"debugMode",void 0)});var Kj={};Be(Kj,{PBRMaterial:()=>ht});var ht,jj=I(()=>{Gt();Vt();xb();Ht();Yj();Yi();Yn();br();ht=class n extends xr{get refractionTexture(){return this.subSurface.refractionTexture}set refractionTexture(e){this.subSurface.refractionTexture=e,e?this.subSurface.isRefractionEnabled=!0:this.subSurface.linkRefractionWithTransparency||(this.subSurface.isRefractionEnabled=!1)}get indexOfRefraction(){return this.subSurface.indexOfRefraction}set indexOfRefraction(e){this.subSurface.indexOfRefraction=e}get invertRefractionY(){return this.subSurface.invertRefractionY}set invertRefractionY(e){this.subSurface.invertRefractionY=e}get linkRefractionWithTransparency(){return this.subSurface.linkRefractionWithTransparency}set linkRefractionWithTransparency(e){this.subSurface.linkRefractionWithTransparency=e,e&&(this.subSurface.isRefractionEnabled=!0)}get usePhysicalLightFalloff(){return this._lightFalloff===xr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=xr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=xr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===xr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=xr.LIGHTFALLOFF_GLTF:this._lightFalloff=xr.LIGHTFALLOFF_STANDARD)}constructor(e,t,i=!1){super(e,t,i),this.directIntensity=1,this.emissiveIntensity=1,this.environmentIntensity=1,this.specularIntensity=1,this.disableBumpMap=!1,this.ambientTextureStrength=1,this.ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this.metallicF0Factor=1,this.metallicReflectanceColor=pe.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new pe(0,0,0),this.albedoColor=new pe(1,1,1),this.baseWeight=1,this.reflectivityColor=new pe(1,1,1),this.reflectionColor=new pe(1,1,1),this.emissiveColor=new pe(0,0,0),this.microSurface=1,this.useLightmapAsShadowmap=!1,this.useAlphaFromAlbedoTexture=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useSpecularOverAlpha=!0,this.useMicroSurfaceFromReflectivityMapAlpha=!1,this.useRoughnessFromMetallicTextureAlpha=!0,this.useRoughnessFromMetallicTextureGreen=!1,this.useMetallnessFromMetallicTextureBlue=!1,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useAutoMicroSurfaceFromReflectivityMap=!1,this.useRadianceOverAlpha=!0,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._environmentBRDFTexture=Ab(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=it.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.PBRMaterial",e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),e.clearCoat&&r.clearCoat.parse(e.clearCoat,t,i),e.anisotropy&&r.anisotropy.parse(e.anisotropy,t,i),e.brdf&&r.brdf.parse(e.brdf,t,i),e.sheen&&r.sheen.parse(e.sheen,t,i),e.subSurface&&r.subSurface.parse(e.subSurface,t,i),e.iridescence&&r.iridescence.parse(e.iridescence,t,i),r}};ht.PBRMATERIAL_OPAQUE=xr.PBRMATERIAL_OPAQUE;ht.PBRMATERIAL_ALPHATEST=xr.PBRMATERIAL_ALPHATEST;ht.PBRMATERIAL_ALPHABLEND=xr.PBRMATERIAL_ALPHABLEND;ht.PBRMATERIAL_ALPHATESTANDBLEND=xr.PBRMATERIAL_ALPHATESTANDBLEND;ht.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=xr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"specularIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"disableBumpMap",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"albedoTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseWeightTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseDiffuseRoughnessTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTextureStrength",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"opacityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectionTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectivityTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallic",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicF0Factor",void 0);P([Tr(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicReflectanceColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"metallicReflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectanceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"microSurfaceTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"bumpTexture",void 0);P([Ut(),le("_markAllSubMeshesAsTexturesDirty",null)],ht.prototype,"lightmapTexture",void 0);P([Tr("ambient"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"ambientColor",void 0);P([Tr("albedo"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"albedoColor",void 0);P([F("baseWeight"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"baseDiffuseRoughness",void 0);P([Tr("reflectivity"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectivityColor",void 0);P([Tr("reflection"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"reflectionColor",void 0);P([Tr("emissive"),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"emissiveColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"microSurface",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useLightmapAsShadowmap",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],ht.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useSpecularOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAmbientInGrayScale",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],ht.prototype,"usePhysicalLightFalloff",null);P([F()],ht.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRadianceOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],ht.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],ht.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],ht.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],ht.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],ht.prototype,"applyDecalMapAfterDetailMap",void 0);Ft("BABYLON.PBRMaterial",ht)});var qj={};Be(qj,{PBRMaterialLoadingAdapter:()=>zN});var zN,Zj=I(()=>{Ht();xO();ke();zN=class{constructor(e){this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return(e=this._material.baseDiffuseRoughness)!=null?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return(e=this._material.metallic)!=null?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return(e=this._material.metallicF0Factor)!=null?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._material.metallicReflectanceColor=e}get specularColor(){return this._material.metallicReflectanceColor}set specularColorTexture(e){this._material.reflectanceTexture=e}get specularColorTexture(){return this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return(e=this._material.roughness)!=null?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return(e=this._material.ambientTextureStrength)!=null?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=pe.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return(e=this._material.clearCoat.roughness)!=null?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new pe(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new pe(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return!0}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){let t=new b(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));t.scaleInPlace(1/Math.max(this.transmissionDepth,.001));let i=t,r=Math.max(i.x,Math.max(i.y,i.z)),s=r>0?1/r:1;this._material.subSurface.diffusionDistance=new pe(Math.exp(-i.x*s),Math.exp(-i.y*s),Math.exp(-i.z*s))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return(e=this._material.subSurface.scatteringDiffusionProfile)!=null?e:pe.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}});function $_e(n){if(n.min&&n.max){let e=n.min,t=n.max,i=$.Vector3[0].copyFromFloats(e[0],e[1],e[2]),r=$.Vector3[1].copyFromFloats(t[0],t[1],t[2]);if(n.normalized&&n.componentType!==5126){let s=1;switch(n.componentType){case 5120:s=127;break;case 5121:s=255;break;case 5122:s=32767;break;case 5123:s=65535;break}let a=1/s;i.scaleInPlace(a),r.scaleInPlace(a)}return new pn(i,r)}return null}var Z_e,Q_e,Kt,Db,Qj=I(()=>{u8();ke();Ht();yi();_l();S8();pb();A8();Yn();Gr();yf();Wi();Lx();Nm();Ci();SO();R8();EO();Jl();Pt();Lm();AO();RO();y8();Tm();C8();Z_e=new Tv(()=>Promise.resolve().then(()=>(N8(),O8))),Q_e=new Tv(()=>Promise.resolve().then(()=>(U8(),B8))),Kt=class{static Get(e,t,i){if(!t||i==null||!t[i])throw new Error(`${e}: Failed to find index (${i})`);return t[i]}static TryGet(e,t){return!e||t==null||!e[t]?null:e[t]}static Assign(e){if(e)for(let t=0;tt.dispose&&t.dispose()),this._extensions.length=0;for(let t of Array.from(this._materialAdapters))(e=t.finalize)==null||e.call(t);this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose()}}async importMeshAsync(e,t,i,r,s,a,o=""){return await Promise.resolve().then(async()=>{this._babylonScene=t,this._assetContainer=i,this._loadData(r);let l=null;if(e){let c={};if(this._gltf.nodes)for(let d of this._gltf.nodes)d.name&&(c[d.name]=d.index);l=(e instanceof Array?e:[e]).map(d=>{let h=c[d];if(h===void 0)throw new Error(`Failed to find node '${d}'`);return h})}return await this._loadAsync(s,o,l,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))})}async loadAsync(e,t,i,r,s=""){return this._babylonScene=e,this._loadData(t),await this._loadAsync(i,s,null,()=>{})}async _loadAsync(e,t,i,r){return await Promise.resolve().then(async()=>{this._rootUrl=e,this._uniqueRootUrl=!e.startsWith("file:")&&t?e:`${e}${Date.now()}/`,this._fileName=t,this._allMaterialsDirtyRequired=!1,await this._loadExtensionsAsync(),!this.parent.skipMaterials&&this._pbrMaterialImpl==null&&(this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr")?this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(G9(),V9))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(W9(),k9))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(jj(),Kj))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(Zj(),qj))).PBRMaterialLoadingAdapter});let s=`${ms[ms.LOADING]} => ${ms[ms.READY]}`,a=`${ms[ms.LOADING]} => ${ms[ms.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(ms.LOADING),this._extensionsOnLoading();let o=new Array,l=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials){if(i)o.push(this.loadSceneAsync("/nodes",{nodes:i,index:-1}));else if(this._gltf.scene!=null||this._gltf.scenes&&this._gltf.scenes[0]){let f=Kt.Get("/scene",this._gltf.scenes,this._gltf.scene||0);o.push(this.loadSceneAsync(`/scenes/${f.index}`,f))}}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let f=0;f{}))}return this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=l:this._babylonScene._forceBlockMaterialDirtyMechanism(l),this._parent.compileMaterials&&o.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&o.push(this._compileShadowGeneratorsAsync()),await Promise.all(o).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(let f of this._babylonScene.materials){let d=f;d.maxSimultaneousLights!==void 0&&(d.maxSimultaneousLights=Math.max(d.maxSimultaneousLights,this._babylonScene.lights.length))}return this._extensionsOnReady(),this._parent._setState(ms.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),_e.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(ms.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},d=>{this._parent.onErrorObservable.notifyObservers(d),this._parent.onErrorObservable.clear(),this.dispose()})}),f))}).catch(s=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(s),this._parent.onErrorObservable.clear(),this.dispose()),s})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){let t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){let i=t[0];(i.byteLengthe.bin.byteLength)&&ee.Warn(`Binary buffer length (${i.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else ee.Warn("Unexpected BIN chunk")}}_setupData(){if(Kt.Assign(this._gltf.accessors),Kt.Assign(this._gltf.animations),Kt.Assign(this._gltf.buffers),Kt.Assign(this._gltf.bufferViews),Kt.Assign(this._gltf.cameras),Kt.Assign(this._gltf.images),Kt.Assign(this._gltf.materials),Kt.Assign(this._gltf.meshes),Kt.Assign(this._gltf.nodes),Kt.Assign(this._gltf.samplers),Kt.Assign(this._gltf.scenes),Kt.Assign(this._gltf.skins),Kt.Assign(this._gltf.textures),this._gltf.nodes){let e={};for(let i of this._gltf.nodes)if(i.children)for(let r of i.children)e[r]=i.index;let t=this._createRootNode();for(let i of this._gltf.nodes){let r=e[i.index];i.parent=r===void 0?t:this._gltf.nodes[r]}}}async _loadExtensionsAsync(){var t;let e=[];if(b8.forEach((i,r)=>{var s;((s=this.parent.extensionOptions[r])==null?void 0:s.enabled)===!1?i.isGLTFExtension&&this.isExtensionUsed(r)&&ee.Warn(`Extension ${r} is used but has been explicitly disabled.`):(!i.isGLTFExtension||this.isExtensionUsed(r))&&e.push((async()=>{let a=await i.factory(this);return a.name!==r&&ee.Warn(`The name of the glTF loader extension instance does not match the registered name: ${a.name} !== ${r}`),this._parent.onExtensionLoadedObservable.notifyObservers(a),a})())}),this._extensions.push(...await Promise.all(e)),this._extensions.sort((i,r)=>(i.order||Number.MAX_VALUE)-(r.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired){for(let i of this._gltf.extensionsRequired)if(!this._extensions.some(s=>s.name===i&&s.enabled))throw((t=this.parent.extensionOptions[i])==null?void 0:t.enabled)===!1?new Error(`Required extension ${i} is disabled`):new Error(`Required extension ${i} is not available`)}}_createRootNode(){if(this._parent.customRootNode!==void 0)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:this._rootBabylonMesh===null?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;let e=new Z("__root__",this._babylonScene);this._rootBabylonMesh=e,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);let t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case vp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case vp.FORCE_RIGHT_HANDED:{this._babylonScene.useRightHandedSystem=!0;break}default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(e),t}loadSceneAsync(e,t){let i=this._extensionsLoadSceneAsync(e,t);if(i)return i;let r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(let s of t.nodes){let a=Kt.Get(`${e}/nodes/${s}`,this._gltf.nodes,s);r.push(this.loadNodeAsync(`/nodes/${a.index}`,a,o=>{o.parent=this._rootBabylonMesh}))}for(let s of this._postSceneLoadActions)s();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(let i of e._primitiveBabylonMeshes)t(i)}_getGeometries(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{let s=r.geometry;s&&e.indexOf(s)===-1&&e.push(s)});return e}_getMeshes(){let e=[];this._rootBabylonMesh instanceof Ar&&e.push(this._rootBabylonMesh);let t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{e.push(r)});return e}_getTransformNodes(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)i._babylonTransformNode&&i._babylonTransformNode.getClassName()==="TransformNode"&&e.push(i._babylonTransformNode),i._babylonTransformNodeForSkin&&e.push(i._babylonTransformNodeForSkin);return e}_getSkeletons(){let e=[],t=this._gltf.skins;if(t)for(let i of t)i._data&&e.push(i._data.babylonSkeleton);return e}_getAnimationGroups(){let e=[],t=this._gltf.animations;if(t)for(let i of t)i._babylonAnimationGroup&&e.push(i._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case yh.NONE:break;case yh.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case yh.ALL:{let e=this._getAnimationGroups();for(let t of e)t.start(!0);break}default:{ee.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);return}}}loadNodeAsync(e,t,i=()=>{}){let r=this._extensionsLoadNodeAsync(e,t,i);if(r)return r;if(t._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);let s=new Array;this.logOpen(`${e} ${t.name||""}`);let a=c=>{if(n.AddPointerMetadata(c,e),n._LoadTransform(t,c),t.camera!=null){let f=Kt.Get(`${e}/camera`,this._gltf.cameras,t.camera);s.push(this.loadCameraAsync(`/cameras/${f.index}`,f,d=>{d.parent=c,this._babylonScene.useRightHandedSystem||(c.scaling.x=-1)}))}if(t.children)for(let f of t.children){let d=Kt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,h=>{h.parent=c}))}i(c)},o=t.mesh!=null,l=this._parent.loadSkins&&t.skin!=null;if(!o||l){let c=t.name||`node${t.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f=new Yt(c,this._babylonScene);f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t.mesh==null?t._babylonTransformNode=f:t._babylonTransformNodeForSkin=f,a(f)}if(o)if(l){let c=Kt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=bO(d.metadata,f.metadata||{});let h=Kt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${h.index}`,t,h,u=>{this._forEachPrimitive(t,m=>{m.skeleton=u}),this._postSceneLoadActions.push(()=>{if(h.skeleton!=null){let m=Kt.Get(`/skins/${h.index}/skeleton`,this._gltf.nodes,h.skeleton).parent;t.index===m.index?f.parent=d.parent:f.parent=m._babylonTransformNode}else f.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:d,skinnedNode:f})})}))}))}else{let c=Kt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,a))}return this.logClose(),Promise.all(s).then(()=>(this._forEachPrimitive(t,c=>{let f=c;!f.isAnInstance&&f.geometry&&f.geometry.useBoundingInfoFromGeometry?c._updateBoundingInfo():c.refreshBoundingInfo(!0,!0)}),t._babylonTransformNode))}_loadMeshAsync(e,t,i,r){let s=i.primitives;if(!s||!s.length)throw new Error(`${e}: Primitives are missing`);s[0].index==null&&Kt.Assign(s);let a=new Array;this.logOpen(`${e} ${i.name||""}`);let o=t.name||`node${t.index}`;if(s.length===1){let l=i.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,o,t,i,l,c=>{t._babylonTransformNode=c,t._primitiveBabylonMeshes=[c]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new Yt(o,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(let l of s)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,`${o}_primitive${l.index}`,t,i,l,c=>{c.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(c)}))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>t._babylonTransformNode)}_loadMeshPrimitiveAsync(e,t,i,r,s,a){let o=this._extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a);if(o)return o;this.logOpen(`${e}`);let l=this._disableInstancedMesh===0&&this._parent.createInstances&&i.skin==null&&!r.primitives[0].targets,c,f;if(l&&s._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,c=s._instanceData.babylonSourceMesh.createInstance(t),c._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,f=s._instanceData.promise;else{let d=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;let h=new Z(t,this._babylonScene);if(h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,h.sideOrientation=this._babylonScene.useRightHandedSystem?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,h),d.push(this._loadVertexDataAsync(e,s,h).then(async u=>await this._loadMorphTargetsAsync(e,s,h,u).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,u.applyToMesh(h),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let u=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[u];m||(m=this._createDefaultMaterial("__GLTFLoader._default",u),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[u]=m),h.material=m}else{let m=Kt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,h,u,_=>{h.material=_}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:h,promise:f}),c=h}return n.AddPointerMetadata(c,e),this._parent.onMeshLoadedObservable.notifyObservers(c),a(c),this.logClose(),f.then(()=>c)}_loadVertexDataAsync(e,t,i){let r=this._extensionsLoadVertexDataAsync(e,t,i);if(r)return r;let s=t.attributes;if(!s)throw new Error(`${e}: Attributes are missing`);let a=new Array,o=new _n(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=Kt.Get(`${e}/indices`,this._gltf.accessors,t.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${c.index}`,c).then(f=>{o.setIndices(f)}))}let l=(c,f,d)=>{if(s[c]==null)return;i._delayInfo=i._delayInfo||[],i._delayInfo.indexOf(f)===-1&&i._delayInfo.push(f);let h=Kt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${h.index}`,h,f).then(u=>{if(u.getKind()===D.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=$_e(h);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(u,h.count)})),f==D.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(h)};return l("POSITION",D.PositionKind),l("NORMAL",D.NormalKind),l("TANGENT",D.TangentKind),l("TEXCOORD_0",D.UVKind),l("TEXCOORD_1",D.UV2Kind),l("TEXCOORD_2",D.UV3Kind),l("TEXCOORD_3",D.UV4Kind),l("TEXCOORD_4",D.UV5Kind),l("TEXCOORD_5",D.UV6Kind),l("JOINTS_0",D.MatricesIndicesKind),l("WEIGHTS_0",D.MatricesWeightsKind),l("JOINTS_1",D.MatricesIndicesExtraKind),l("WEIGHTS_1",D.MatricesWeightsExtraKind),l("COLOR_0",D.ColorKind,c=>{c.type==="VEC4"&&(i.hasVertexAlpha=!0)}),Promise.all(a).then(()=>o)}_createMorphTargets(e,t,i,r,s){if(!r.targets||!this._parent.loadMorphTargets)return;if(t._numMorphTargets==null)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);let a=i.extras?i.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,s.morphTargetManager=new Lh(this._babylonScene),s.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.morphTargetManager.areUpdatesFrozen=!0;for(let o=0;o{a.areUpdatesFrozen=!1})}async _loadMorphTargetVertexDataAsync(e,t,i,r){let s=new Array,a=(o,l,c)=>{if(i[o]==null)return;let f=t.getVertexBuffer(l);if(!f)return;let d=Kt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(h=>{c(f,h)}))};return a("POSITION",D.PositionKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setPositions(c)}),a("NORMAL",D.NormalKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(c.length,(f,d)=>{c[d]=l[d]+f}),r.setNormals(c)}),a("TANGENT",D.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,h)=>{(h+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",D.UVKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUVs(c)}),a("TEXCOORD_1",D.UV2Kind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUV2s(c)}),a("COLOR_0",D.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,h)=>{let u=Math.floor(h/3),m=h%3;c[4*u+m]=l[3*u+m]+d});for(let d=0;d{c[h]=l[h]+d});else throw new Error(`${e}: Invalid number of components (${f}) for COLOR_0 attribute`);r.setColors(c)}),await Promise.all(s).then(()=>{})}static _LoadTransform(e,t){if(e.skin!=null)return;let i=b.Zero(),r=Xe.Identity(),s=b.One();e.matrix?q.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=Xe.FromArray(e.rotation)),e.scale&&(s=b.FromArray(e.scale))),t.position=i,t.rotationQuaternion=r,t.scaling=s}_loadSkinAsync(e,t,i,r){if(!this._parent.loadSkins)return Promise.resolve();let s=this._extensionsLoadSkinAsync(e,t,i);if(s)return s;if(i._data)return r(i._data.babylonSkeleton),i._data.promise;let a=`skeleton${i.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let o=new _b(i.name||a,a,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,i,o);let l=this._loadSkinInverseBindMatricesDataAsync(e,i).then(c=>{this._updateBoneMatrices(o,c)});return i._data={babylonSkeleton:o,promise:l},r(o),l}_loadBones(e,t,i){if(t.skeleton==null||this._parent.alwaysComputeSkeletonRootNode){let s=this._findSkeletonRootNode(`${e}/joints`,t.joints);if(s)if(t.skeleton===void 0)t.skeleton=s.index;else{let a=(l,c)=>{for(;c.parent;c=c.parent)if(c.parent===l)return!0;return!1},o=Kt.Get(`${e}/skeleton`,this._gltf.nodes,t.skeleton);o!==s&&!a(o,s)&&(ee.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),t.skeleton=s.index)}else ee.Warn(`${e}: Failed to find common root`)}let r={};for(let s of t.joints){let a=Kt.Get(`${e}/joints/${s}`,this._gltf.nodes,s);this._loadBone(a,t,i,r)}}_findSkeletonRootNode(e,t){if(t.length===0)return null;let i={};for(let s of t){let a=[],o=Kt.Get(`${e}/${s}`,this._gltf.nodes,s);for(;o.index!==-1;)a.unshift(o),o=o.parent;i[s]=a}let r=null;for(let s=0;;++s){let a=i[t[0]];if(s>=a.length)return r;let o=a[s];for(let l=1;l=a.length||o!==a[s])return r;r=o}}_loadBone(e,t,i,r){e._isJoint=!0;let s=r[e.index];if(s)return s;let a=null;e.index!==t.skeleton&&(e.parent&&e.parent.index!==-1?a=this._loadBone(e.parent,t,i,r):t.skeleton!==void 0&&ee.Warn(`/skins/${t.index}/skeleton: Skeleton node is not a common root`));let o=t.joints.indexOf(e.index);return s=new Ha(e.name||`joint${e.index}`,i,a,this._getNodeMatrix(e),null,null,o),r[e.index]=s,this._postSceneLoadActions.push(()=>{s.linkTransformNode(e._babylonTransformNode)}),s}_loadSkinInverseBindMatricesDataAsync(e,t){if(t.inverseBindMatrices==null)return Promise.resolve(null);let i=Kt.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${i.index}`,i)}_updateBoneMatrices(e,t){for(let i of e.bones){let r=q.Identity(),s=i._index;t&&s!==-1&&(q.FromArrayToRef(t,s*16,r),r.invertToRef(r));let a=i.getParent();a&&r.multiplyToRef(a.getAbsoluteInverseBindMatrix(),r),i.updateMatrix(r,!1,!1),i._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?q.FromArray(e.matrix):q.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?Xe.FromArray(e.rotation):Xe.Identity(),e.translation?b.FromArray(e.translation):b.Zero())}loadCameraAsync(e,t,i=()=>{}){let r=this._extensionsLoadCameraAsync(e,t,i);if(r)return r;let s=new Array;this.logOpen(`${e} ${t.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;let a=new Oc(t.name||`camera${t.index}`,b.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonCamera=a,a.setTarget(new b(0,0,-1)),t.type){case"perspective":{let o=t.perspective;if(!o)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=o.yfov,a.minZ=o.znear,a.maxZ=o.zfar||0;break}case"orthographic":{if(!t.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=mt.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break}default:throw new Error(`${e}: Invalid camera type (${t.type})`)}return n.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),i(a),this.logClose(),Promise.all(s).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");let e=this._gltf.animations;if(!e)return Promise.resolve();let t=new Array;for(let i=0;i{s.targetedAnimations.length===0&&s.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");let i=this._extensionsLoadAnimationAsync(e,t);return i||Z_e.value.then(({AnimationGroup:r})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;let s=new r(t.name||`animation${t.index}`,this._babylonScene);s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=s;let a=new Array;Kt.Assign(t.channels),Kt.Assign(t.samplers);for(let o of t.channels)a.push(this._loadAnimationChannelAsync(`${e}/channels/${o.index}`,e,t,o,(l,c)=>{l.animations=l.animations||[],l.animations.push(c),s.addTargetedAnimation(c,l)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(a).then(()=>(s.normalize(0),s))})}_loadAnimationChannelAsync(e,t,i,r,s){let a=this._extensionsLoadAnimationChannelAsync(e,t,i,r,s);if(a)return a;if(r.target.node==null)return Promise.resolve();let o=Kt.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),l=r.target.path,c=l==="weights";return c&&!o._numMorphTargets||!c&&!o._babylonTransformNode||!this._parent.loadNodeAnimations&&!c&&!o._isJoint?Promise.resolve():Q_e.value.then(()=>{var h,u,m,_;let f;switch(l){case"translation":{f=(h=Ev("/nodes/{}/translation"))==null?void 0:h.interpolation;break}case"rotation":{f=(u=Ev("/nodes/{}/rotation"))==null?void 0:u.interpolation;break}case"scale":{f=(m=Ev("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(_=Ev("/nodes/{}/weights"))==null?void 0:_.interpolation;break}default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!f)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);let d={object:o,info:f};return this._loadAnimationChannelFromTargetInfoAsync(e,t,i,r,d,s)})}_loadAnimationChannelFromTargetInfoAsync(e,t,i,r,s,a){let o=this.parent.targetFps,l=1/o,c=Kt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,h=s.object,u=s.info;for(let m of u){let _=m.getStride(h),p=f.input,g=f.output,v=new Array(p.length),x=0;switch(f.interpolation){case"STEP":{for(let S=0;S0){let S=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,E=m.buildAnimations(h,S,o,v);for(let T of E)d++,a(T.babylonAnimatable,T.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;let i=t.interpolation||"LINEAR";switch(i){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}let r=Kt.Get(`${e}/input`,this._gltf.accessors,t.input),s=Kt.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)]).then(([a,o])=>({input:a,interpolation:i,output:o})),t._data}loadBufferAsync(e,t,i,r){let s=this._extensionsLoadBufferAsync(e,t,i,r);if(s)return s;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(a=>{try{return new Uint8Array(a.buffer,a.byteOffset+i,r)}catch(o){throw new Error(`${e}: ${o.message}`,{cause:o})}})}loadBufferViewAsync(e,t){let i=this._extensionsLoadBufferViewAsync(e,t);if(i)return i;if(t._data)return t._data;let r=Kt.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,t,i){if(t._data)return t._data;let r=n._GetNumComponents(e,t.type),s=r*D.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${o.index}`,o).then(l=>{if(t.componentType===5126&&!t.normalized&&(!o.byteStride||o.byteStride===s))return n._GetTypedArray(e,t.componentType,l,t.byteOffset,a);{let c=new i(a);return D.ForEach(l,t.byteOffset||0,o.byteStride||s,r,t.componentType,c.length,t.normalized||!1,(f,d)=>{c[d]=f}),c}})}if(t.sparse){let o=t.sparse;t._data=t._data.then(l=>{let c=l,f=Kt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=Kt.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,o.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${f.index}`,f),this.loadBufferViewAsync(`/bufferViews/${d.index}`,d)]).then(([h,u])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,h,o.indices.byteOffset,o.count),_=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);p=new i(_),D.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(x,S)=>{p[S]=x})}let g=0;for(let v=0;vn._GetTypedArray(e,t.componentType,r,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;let t=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(i=>new vo(t,i,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,t,i){var s;if((s=t._babylonVertexBuffer)!=null&&s[i])return t._babylonVertexBuffer[i];t._babylonVertexBuffer||(t._babylonVertexBuffer={});let r=this._babylonScene.getEngine();if(t.sparse||t.bufferView==null)t._babylonVertexBuffer[i]=this._loadFloatAccessorAsync(e,t).then(a=>new D(r,a,i,!1));else{let a=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._babylonVertexBuffer[i]=this._loadVertexBufferViewAsync(a).then(o=>{let l=n._GetNumComponents(e,t.type);return new D(r,o,i,!1,void 0,a.byteStride,void 0,t.byteOffset,l,t.componentType,t.normalized,!0,void 0,!0)})}return t._babylonVertexBuffer[i]}_loadMaterialMetallicRoughnessPropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);return t&&(t.baseColorFactor?(s.baseColor=pe.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=pe.White(),s.baseMetalness=t.metallicFactor==null?1:t.metallicFactor,s.specularRoughness=t.roughnessFactor==null?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,t.baseColorTexture,a=>{a.name=`${i.name} (Base Color)`,s.baseColorTexture=a})),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,t.metallicRoughnessTexture,a=>{a.name=`${i.name} (Metallic Roughness)`,s.baseMetalnessTexture=a,s.specularRoughnessTexture=a})),s.useRoughnessFromMetallicTextureGreen=!0,s.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,i,r,s=()=>{}){let a=this._extensionsLoadMaterialAsync(e,t,i,r,s);if(a)return a;t._data=t._data||{};let o=t._data[r];if(!o){this.logOpen(`${e} ${t.name||""}`);let l=this.createMaterial(e,t,r);o={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,l)},t._data[r]=o,n.AddPointerMetadata(l,e),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return i&&(o.babylonMeshes.push(i),i.onDisposeObservable.addOnce(()=>{let l=o.babylonMeshes.indexOf(i);l!==-1&&o.babylonMeshes.splice(l,1)})),s(o.babylonMaterial),o.promise.then(()=>o.babylonMaterial)}_createDefaultMaterial(e,t){if(!this._pbrMaterialImpl)throw new Error("PBR Material class not loaded");this._babylonScene._blockEntityCollection=!!this._assetContainer;let i=new this._pbrMaterialImpl.materialClass(e,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.fillMode=t,i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;let r=this._getOrCreateMaterialAdapter(i);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,i}createMaterial(e,t,i){let r=this._extensionsCreateMaterial(e,t,i);if(r)return r;let s=t.name||`material${t.index}`;return this._createDefaultMaterial(s,i)}loadMaterialPropertiesAsync(e,t,i){let r=this._extensionsLoadMaterialPropertiesAsync(e,t,i);if(r)return r;let s=new Array;return s.push(this.loadMaterialBasePropertiesAsync(e,t,i)),t.pbrMetallicRoughness&&s.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,i)),this.loadMaterialAlphaProperties(e,t,i),Promise.all(s).then(()=>{})}loadMaterialBasePropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);s.emissionColor=t.emissiveFactor?pe.FromArray(t.emissiveFactor):new pe(0,0,0),t.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,t.normalTexture,c=>{var f;c.name=`${i.name} (Normal)`,s.geometryNormalTexture=c,((f=t.normalTexture)==null?void 0:f.scale)!=null&&(c.level=t.normalTexture.scale)})),s.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let a,o=1,l;return t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,t.occlusionTexture,c=>{c.name=`${i.name} (Occlusion)`,a=c})),t.occlusionTexture.strength!=null&&(o=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,t.emissiveTexture,c=>{c.name=`${i.name} (Emissive)`,l=c})),Promise.all(r).then(()=>{a&&(s.ambientOcclusionTexture=a,s.ambientOcclusionTextureStrength=o),l&&(s.emissionColorTexture=l)})}loadMaterialAlphaProperties(e,t,i){if(!this._pbrMaterialImpl)throw new Error(`${e}: Material type not supported`);let r=this._getOrCreateMaterialAdapter(i),s=r.baseColorTexture;switch(t.alphaMode||"OPAQUE"){case"OPAQUE":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE,i.alpha=1;break}case"MASK":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST,r.alphaCutOff=t.alphaCutoff==null?.5:t.alphaCutoff,s&&(s.hasAlpha=!0);break}case"BLEND":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break}default:throw new Error(`${e}/alphaMode: Invalid value (${t.alphaMode})`)}}loadTextureInfoAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureInfoAsync(e,t,i);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);let s=Kt.Get(`${e}/index`,this._gltf.textures,t.index);s._textureInfo=t;let a=this._loadTextureAsync(`/textures/${t.index}`,s,o=>{o.coordinatesIndex=t.texCoord||0,n.AddPointerMetadata(o,e),this._parent.onTextureLoadedObservable.notifyObservers(o),i(o)});return this.logClose(),a}_loadTextureAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureAsync(e,t,i);if(r)return r;this.logOpen(`${e} ${t.name||""}`);let s=t.sampler==null?n.DefaultSampler:Kt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=Kt.Get(`${e}/source`,this._gltf.images,t.source),o=this._createTextureAsync(e,s,a,i,void 0,!t._textureInfo.nonColorData);return this.logClose(),o}_createTextureAsync(e,t,i,r=()=>{},s,a){var m,_;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new ub;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,g)=>{this._disposed||c.reject(new Error(`${e}: ${g&&g.message?g.message:p||"Failed to load texture"}`))},mimeType:(_=i.mimeType)!=null?_:dV((m=i.uri)!=null?m:""),loaderOptions:s,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},d=new ge(null,this._babylonScene,f);d._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,l.push(c.promise);let h=i.uri&&!vf(i.uri)?i.uri:void 0,u=h!=null?h:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let g=`data:${this._uniqueRootUrl}${u}`;d.updateURL(g,p);let v=d.getInternalTexture();v&&(v.label=i.name)})),d.wrapU=o.wrapU,d.wrapV=o.wrapV,r(d),this._parent.useGltfTextureNames){let p=i.name||h||`image${i.index}`;d.name=p}return Promise.all(l).then(()=>d)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:t.minFilter===9728||t.minFilter===9729,samplingMode:n._GetTextureSamplingMode(e,t),wrapU:n._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:n._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{let i=Kt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i)}this.logClose()}return t._data}loadUriAsync(e,t,i){let r=this._extensionsLoadUriAsync(e,t,i);if(r)return r;if(!n._ValidateUri(i))throw new Error(`${e}: '${i}' is invalid`);if(vf(i)){let s=new Uint8Array(Ef(i));return this.log(`${e}: Decoded ${i.substring(0,64)}... (${s.length} bytes)`),Promise.resolve(s)}return this.log(`${e}: Loading ${i}`),this._parent.preprocessUrlAsync(this._rootUrl+i).then(s=>new Promise((a,o)=>{this._parent._loadFile(this._babylonScene,s,l=>{this._disposed||(this.log(`${e}: Loaded ${i} (${l.byteLength} bytes)`),a(new Uint8Array(l)))},!0,l=>{o(new Am(`${e}: Failed to load '${i}'${l?": "+l.status+" "+l.statusText:""}`,l))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};let i=e._internalMetadata=e._internalMetadata||{},r=i.gltf=i.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,t){switch(t=t==null?10497:t,t){case 33071:return ge.CLAMP_ADDRESSMODE;case 33648:return ge.MIRROR_ADDRESSMODE;case 10497:return ge.WRAP_ADDRESSMODE;default:return ee.Warn(`${e}: Invalid value (${t})`),ge.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,t){let i=t.magFilter==null?9729:t.magFilter,r=t.minFilter==null?9987:t.minFilter;if(i===9729)switch(r){case 9728:return ge.LINEAR_NEAREST;case 9729:return ge.LINEAR_LINEAR;case 9984:return ge.LINEAR_NEAREST_MIPNEAREST;case 9985:return ge.LINEAR_LINEAR_MIPNEAREST;case 9986:return ge.LINEAR_NEAREST_MIPLINEAR;case 9987:return ge.LINEAR_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),ge.LINEAR_LINEAR_MIPLINEAR}else switch(i!==9728&&ee.Warn(`${e}/magFilter: Invalid value (${i})`),r){case 9728:return ge.NEAREST_NEAREST;case 9729:return ge.NEAREST_LINEAR;case 9984:return ge.NEAREST_NEAREST_MIPNEAREST;case 9985:return ge.NEAREST_LINEAR_MIPNEAREST;case 9986:return ge.NEAREST_NEAREST_MIPLINEAR;case 9987:return ge.NEAREST_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),ge.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,t){try{return TC(t)}catch(i){throw new Error(`${e}: ${i.message}`,{cause:i})}}static _GetTypedArray(e,t,i,r,s){let a=i.buffer;r=i.byteOffset+(r||0);let o=n._GetTypedArrayConstructor(`${e}/componentType`,t),l=D.GetTypeByteLength(t);return r%l!==0?(ee.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new o(a.slice(r,r+s*l),0)):new o(a,r,s)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return _e.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Se.PointListDrawMode;case 1:return Se.LineListDrawMode;case 2:return Se.LineLoopDrawMode;case 3:return Se.LineStripDrawMode;case 4:return Se.TriangleFillMode;case 5:return Se.TriangleStripDrawMode;case 6:return Se.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${t})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");let e=new Array;if(this._gltf.materials){for(let t of this._gltf.materials)if(t._data)for(let i in t._data){let r=t._data[i];for(let s of r.babylonMeshes){s.computeWorldMatrix(!0);let a=r.babylonMaterial;e.push(a.forceCompilationAsync(s)),e.push(a.forceCompilationAsync(s,{useInstances:!0})),this._parent.useClipPlane&&(e.push(a.forceCompilationAsync(s,{clipPlane:!0})),e.push(a.forceCompilationAsync(s,{clipPlane:!0,useInstances:!0})))}}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");let e=new Array,t=this._babylonScene.lights;for(let i of t){let r=i.getShadowGenerator();r&&e.push(r.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(let t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,i){for(let r of this._extensions)if(r.enabled){let s=`${r.name}.${t}`,a=e;a._activeLoaderExtensionFunctions=a._activeLoaderExtensionFunctions||{};let o=a._activeLoaderExtensionFunctions;if(!o[s]){o[s]=!0;try{let l=i(r);if(l)return l}finally{delete o[s]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",i=>i.loadSceneAsync&&i.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,i){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,i))}_extensionsLoadCameraAsync(e,t,i){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,i))}_extensionsLoadVertexDataAsync(e,t,i){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,i))}_extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a){return this._applyExtensions(s,"loadMeshPrimitive",o=>o._loadMeshPrimitiveAsync&&o._loadMeshPrimitiveAsync(e,t,i,r,s,a))}_extensionsLoadMaterialAsync(e,t,i,r,s){return this._applyExtensions(t,"loadMaterial",a=>a._loadMaterialAsync&&a._loadMaterialAsync(e,t,i,r,s))}_extensionsCreateMaterial(e,t,i){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,i))}_extensionsLoadMaterialPropertiesAsync(e,t,i){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,i))}_extensionsLoadTextureInfoAsync(e,t,i){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,i))}_extensionsLoadTextureAsync(e,t,i){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,i))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",i=>i.loadAnimationAsync&&i.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,i,r,s){return this._applyExtensions(i,"loadAnimationChannel",a=>a._loadAnimationChannelAsync&&a._loadAnimationChannelAsync(e,t,i,r,s))}_extensionsLoadSkinAsync(e,t,i){return this._applyExtensions(i,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,i))}_extensionsLoadUriAsync(e,t,i){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,i))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",i=>i.loadBufferViewAsync&&i.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,i,r){return this._applyExtensions(t,"loadBuffer",s=>s.loadBufferAsync&&s.loadBufferAsync(e,t,i,r))}static LoadExtensionAsync(e,t,i,r){if(!t.extensions)return null;let a=t.extensions[i];return a?r(`${e}/extensions/${i}`,a):null}static LoadExtraAsync(e,t,i,r){if(!t.extras)return null;let a=t.extras[i];return a?r(`${e}/extras/${i}`,a):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&this._gltf.extensionsUsed.indexOf(e)!==-1}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}};Db.DefaultSampler={index:-1};id._CreateGLTF2Loader=n=>new Db(n)});var YN,XN,$j=I(()=>{AO();YN="ExtrasAsMetadata",XN=class{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){let i=e.metadata=e.metadata||{},r=i.gltf=i.gltf||{};r.extras=t.extras}}constructor(e){this.name=YN,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,i){return this._loader.loadNodeAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}loadCameraAsync(e,t,i){return this._loader.loadCameraAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}createMaterial(e,t,i){let r=this._loader.createMaterial(e,t,i);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(i=>(this._assignExtras(i,t),i))}};vv(YN);vb(YN,!1,n=>new XN(n))});var Lb,Jj=I(()=>{Lb={name:"obj",extensions:".obj"}});var Oh,eq=I(()=>{Ht();Gr();Dc();Oh=class n{constructor(){this.materials=[]}parseMTL(e,t,i,r){if(t instanceof ArrayBuffer)return;let s=t.split(` +`),a=/\s+/,o,l=null;for(let c=0;c=0?f.substring(0,d):f;h=h.toLowerCase();let u=d>=0?f.substring(d+1).trim():"";if(h==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new We(u,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(h==="kd"&&l)o=u.split(a,3).map(parseFloat),l.diffuseColor=pe.FromArray(o);else if(h==="ka"&&l)o=u.split(a,3).map(parseFloat),l.ambientColor=pe.FromArray(o);else if(h==="ks"&&l)o=u.split(a,3).map(parseFloat),l.specularColor=pe.FromArray(o);else if(h==="ke"&&l)o=u.split(a,3).map(parseFloat),l.emissiveColor=pe.FromArray(o);else if(h==="ns"&&l)l.specularPower=parseFloat(u);else if(h==="d"&&l)l.alpha=parseFloat(u);else if(h==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,u,e);else if(h==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,u,e);else if(h==="map_ks"&&l)l.specularTexture=n._GetTexture(i,u,e);else if(h!=="map_ns")if(h==="map_bump"&&l){let m=u.split(a),_=m.indexOf("-bm"),p=null;_>=0&&(p=m[_+1],m.splice(_,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else h==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,u,e))}l&&this.materials.push(l)}static _GetTexture(e,t,i){if(!t)return null;let r=e;if(e==="file:"){let s=t.lastIndexOf("\\");s===-1&&(s=t.lastIndexOf("/")),s>-1?r+=t.substring(s+1):r+=t}else r+=t;return new ge(r,i,!1,n.INVERT_TEXTURE_Y)}};Oh.INVERT_TEXTURE_Y=!0});var qr,tq=I(()=>{Wi();Dc();Ht();ke();Lx();Ci();pr();Pt();qr=class n{constructor(e,t,i){this._positions=[],this._normals=[],this._uvs=[],this._colors=[],this._extColors=[],this._meshesFromObj=[],this._indicesForBabylon=[],this._wrappedPositionForBabylon=[],this._wrappedUvsForBabylon=[],this._wrappedColorsForBabylon=[],this._wrappedNormalsForBabylon=[],this._tuplePosNorm=[],this._curPositionInIndices=0,this._hasMeshes=!1,this._unwrappedPositionsForBabylon=[],this._unwrappedColorsForBabylon=[],this._unwrappedNormalsForBabylon=[],this._unwrappedUVForBabylon=[],this._triangles=[],this._materialNameFromObj="",this._objMeshName="",this._increment=1,this._isFirstMaterial=!0,this._grayColor=new lt(.5,.5,.5,1),this._hasLineData=!1,this._materialToUse=e,this._babylonMeshesArray=t,this._loadingOptions=i}_isInArray(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});let i=e[t[0]].normals.indexOf(t[1]);return i===-1?-1:e[t[0]].idx[i]}_isInArrayUV(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});let i=e[t[0]].normals.indexOf(t[1]);return i!=1&&t[2]===e[t[0]].uv[i]?e[t[0]].idx[i]:-1}_setData(e){var i,r;(i=e.indiceUvsFromObj)!=null||(e.indiceUvsFromObj=-1),(r=e.indiceNormalFromObj)!=null||(e.indiceNormalFromObj=-1);let t;this._loadingOptions.optimizeWithUV?t=this._isInArrayUV(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj,e.indiceUvsFromObj]):t=this._isInArray(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj]),t===-1?(this._indicesForBabylon.push(this._wrappedPositionForBabylon.length),this._wrappedPositionForBabylon.push(e.positionVectorFromOBJ),e.textureVectorFromOBJ!==void 0&&this._wrappedUvsForBabylon.push(e.textureVectorFromOBJ),e.normalsVectorFromOBJ!==void 0&&this._wrappedNormalsForBabylon.push(e.normalsVectorFromOBJ),e.positionColorsFromOBJ!==void 0&&this._wrappedColorsForBabylon.push(e.positionColorsFromOBJ),this._tuplePosNorm[e.indicePositionFromObj].normals.push(e.indiceNormalFromObj),this._tuplePosNorm[e.indicePositionFromObj].idx.push(this._curPositionInIndices++),this._loadingOptions.optimizeWithUV&&this._tuplePosNorm[e.indicePositionFromObj].uv.push(e.indiceUvsFromObj)):this._indicesForBabylon.push(t)}_unwrapData(){try{for(let e=0;e0&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._unwrapData(),this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._handledMesh.indices=this._indicesForBabylon.slice(),this._handledMesh.positions=this._unwrappedPositionsForBabylon.slice(),this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon.slice()),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon.slice()),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon.slice()),this._handledMesh.hasLines=this._hasLineData,this._indicesForBabylon.length=0,this._unwrappedPositionsForBabylon.length=0,this._unwrappedColorsForBabylon.length=0,this._unwrappedNormalsForBabylon.length=0,this._unwrappedUVForBabylon.length=0,this._hasLineData=!1)}_optimizeNormals(e){let t=e.getVerticesData(D.PositionKind),i=e.getVerticesData(D.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u+1],h[u]),this._handednessSign=1):(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=-1);let a=t.split(` +`),o=[],l=[];o.push(l);for(let h=0;h=7){let _=parseFloat(m[4]),p=parseFloat(m[5]),g=parseFloat(m[6]);this._colors.push(new lt(_>1?_/255:_,p>1?p/255:p,g>1?g/255:g,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(u))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(u))!==null)this._uvs.push(new Fe(parseFloat(m[1])*this._loadingOptions.UVScaling.x,parseFloat(m[2])*this._loadingOptions.UVScaling.y));else if((m=n.FacePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(u))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(u))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(u,!this._loadingOptions.importVertexColors))for(let _ of m)this._extColors.push(_);else if((m=n.LinePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(u)||n.ObjectDescriptor.test(u)){let _={name:u.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(u)};this._addPreviousObjMesh(),this._meshesFromObj.push(_),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(u)){if(this._materialNameFromObj=u.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let _={name:(this._objMeshName||"mesh")+"_mm"+this._increment.toString(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:!1};this._increment++,this._meshesFromObj.push(_),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(u)?s(u.substring(7).trim()):n.SmoothDescriptor.test(u)||ee.Log("Unhandled expression at line : "+u)}if(this._hasMeshes&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData(),this._handledMesh.indices=this._indicesForBabylon,this._handledMesh.positions=this._unwrappedPositionsForBabylon,this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon),this._handledMesh.hasLines=this._hasLineData),!this._hasMeshes){let h=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let u of this._positions)this._unwrappedPositionsForBabylon.push(u.x,u.y,u.z);if(this._normals.length)for(let u of this._normals)this._unwrappedNormalsForBabylon.push(u.x,u.y,u.z);if(this._uvs.length)for(let u of this._uvs)this._unwrappedUVForBabylon.push(u.x,u.y);if(this._extColors.length)for(let u of this._extColors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);else if(this._colors.length)for(let u of this._colors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);this._materialNameFromObj||(h=new We(_n.RandomId(),i),h.pointsCloud=!0,this._materialNameFromObj=h.name,this._normals.length||(h.disableLighting=!0,h.emissiveColor=pe.White()))}this._meshesFromObj.push({name:_n.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:h,isObject:!0,hasLines:this._hasLineData})}for(let h=0;h=0;--_)if(this._meshesFromObj[_].isObject&&this._meshesFromObj[_]._babylonMesh){u.parent=this._meshesFromObj[_]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[h].materialName),this._handledMesh.hasLines&&((f=u._internalMetadata)!=null||(u._internalMetadata={}),u._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(u);continue}let m=new ye;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let _=new Array;ye.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,_),m.normals=_}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(u),this._loadingOptions.invertY&&(u.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(u),this._babylonMeshesArray.push(u),this._handledMesh.directMaterial&&(u.material=this._handledMesh.directMaterial)}}};qr.ObjectDescriptor=/^o/;qr.GroupDescriptor=/^g/;qr.MtlLibGroupDescriptor=/^mtllib /;qr.UseMtlDescriptor=/^usemtl /;qr.SmoothDescriptor=/^s /;qr.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;qr.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;qr.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;qr.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;qr.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;qr.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;qr.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;qr.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;qr.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var iq={};Be(iq,{OBJFileLoader:()=>ha});var ha,KN=I(()=>{ke();yi();_p();pv();Jj();eq();tq();Dc();ha=class n{static get INVERT_TEXTURE_Y(){return Oh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){Oh.INVERT_TEXTURE_Y=e}constructor(e){this.name=Lb.name,this.extensions=Lb.extensions,this._assetContainer=null,this._loadingOptions={...n._DefaultLoadingOptions,...e!=null?e:{}}}static get _DefaultLoadingOptions(){return{computeNormals:n.COMPUTE_NORMALS,optimizeNormals:n.OPTIMIZE_NORMALS,importVertexColors:n.IMPORT_VERTEX_COLORS,invertY:n.INVERT_Y,invertTextureY:n.INVERT_TEXTURE_Y,UVScaling:n.UV_SCALING,materialLoadingFailsSilently:n.MATERIAL_LOADING_FAILS_SILENTLY,optimizeWithUV:n.OPTIMIZE_WITH_UV,skipMaterials:n.SKIP_MATERIALS,useLegacyBehavior:n.USE_LEGACY_BEHAVIOR}}_loadMTL(e,t,i,r){let s=t+e;_e.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[Lb.name])}canDirectLoad(){return!1}importMeshAsync(e,t,i,r){return this._parseSolidAsync(e,t,i,r).then(s=>({meshes:s,particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))}loadAsync(e,t,i){return this.importMeshAsync(null,e,t,i).then(()=>{})}loadAssetContainerAsync(e,t,i){let r=new Rl(e);return this._assetContainer=r,this.importMeshAsync(null,e,t,i).then(s=>(s.meshes.forEach(a=>r.meshes.push(a)),s.meshes.forEach(a=>{let o=a.material;o&&r.materials.indexOf(o)==-1&&(r.materials.push(o),o.getActiveTextures().forEach(c=>{r.textures.indexOf(c)==-1&&r.textures.push(c)}))}),this._assetContainer=null,r)).catch(s=>{throw this._assetContainer=null,s})}_parseSolidAsync(e,t,i,r){let s="",a=new Oh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new qr(o,l,this._loadingOptions).parse(e,i,t,this._assetContainer,d=>{s=d});let f=[];return s!==""&&!this._loadingOptions.skipMaterials&&f.push(new Promise((d,h)=>{this._loadMTL(s,r,u=>{try{a.parseMTL(t,u,r,this._assetContainer);for(let m=0;m-1;)p.push(g),_=g+1;if(g===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{_e.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():h(m)})})),Promise.all(f).then(()=>{let d=h=>{var u,m;return!!((m=(u=h._internalMetadata)==null?void 0:u._isLine)!=null&&m)};return l.forEach(h=>{var u,m;if(d(h)){let _=(u=h.material)!=null?u:new We(h.name+"_line",t);_.getBindedMeshes().filter(g=>!d(g)).length>0&&(_=(m=_.clone(_.name+"_line"))!=null?m:_),_.wireframe=!0,h.material=_,h._internalMetadata&&(h._internalMetadata._isLine=void 0)}}),l})}};ha.OPTIMIZE_WITH_UV=!0;ha.INVERT_Y=!1;ha.IMPORT_VERTEX_COLORS=!1;ha.COMPUTE_NORMALS=!1;ha.OPTIMIZE_NORMALS=!1;ha.UV_SCALING=new Fe(1,1);ha.SKIP_MATERIALS=!1;ha.MATERIAL_LOADING_FAILS_SILENTLY=!0;ha.USE_LEGACY_BEHAVIOR=!1;td(new ha)});function J_e(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function jN(n,e){if(J_e(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function Ob(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function nq(){if(rq)return;let n=i=>jN(i,"asset loading"),e=i=>jN(i,"script loading"),t=()=>-1;_e.PreprocessUrl=n,_e.ScriptPreprocessUrl=e,_e.DefaultRetryStrategy=t,_e.LoadScript=(i,r,s)=>{try{e(i),Ob(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},_e.LoadScriptAsync=async i=>{e(i),Ob(i)},_e.LoadBabylonScript=(i,r,s)=>{try{Ob(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},_e.LoadBabylonScriptAsync=async i=>{Ob(i)},ki.PreprocessUrl=n,ki.ScriptPreprocessUrl=e,ki.DefaultRetryStrategy=t,Cr.CustomRequestModifiers.push((i,r)=>jN(r,"request")),rq=!0}var rq,sq=I(()=>{"use strict";Jl();yi();nh();rq=!1});function Nb(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let _=new TextDecoder().decode(new Uint8Array(e,0,6));if(_==="solid "||_===`solid +`){let p=new TextDecoder().decode(new Uint8Array(e,0,Math.min(e.byteLength,800)));if(p.includes("facet")||p.includes("endsolid"))throw new Error("ASCII STL detected \u2014 only binary STL is supported. Convert to binary STL first.")}}let t=new DataView(e),i=t.getUint32(80,!0);if(i===0)throw new Error("STL file contains 0 triangles");let r=84+i*50;if(e.byteLength>0&31)/31,O=(v>>5&31)/31,N=(v>>10&31)/31,B=_*12;l[B+0]=G,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=G,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=G,l[B+9]=O,l[B+10]=N,l[B+11]=1}let x=a[p+3]-a[p+0],S=a[p+4]-a[p+1],E=a[p+5]-a[p+2],T=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],y=S*M-E*R,C=E*T-x*M,L=x*R-S*T,w=Math.sqrt(y*y+C*C+L*L);w>1e-8?(y/=w,C/=w,L/=w):(y=0,C=0,L=1,f++),o[p+0]=y,o[p+1]=C,o[p+2]=L,o[p+3]=y,o[p+4]=C,o[p+5]=L,o[p+6]=y,o[p+7]=C,o[p+8]=L,c[g+0]=p/3+0,c[g+1]=p/3+1,c[g+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let h=new ye;h.positions=a,h.normals=o,h.indices=c,l&&(h.colors=l);let u=new Z("stl-model",n);h.applyToMesh(u);let m=new We("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new pe(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new pe(1,1,1),m.emissiveColor=new pe(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new pe(.85,.85,.85),m.emissiveColor=new pe(.1,.1,.1)),u.material=m,u}function aq(n,e){return Nb(n,e)}function oq(n){n(ege)}var ege,qN=I(()=>{"use strict";Ci();pv();pr();Dc();Ht();ege={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[Nb(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{Nb(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=Nb(n,e),i=new Rl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function tge(n){let e=n.split(` +`),t=[],i="binary_little_endian",r=null;for(let s of e){let a=s.trim();if(a==="end_header")break;if(a==="ply"||a===""||a.startsWith("comment"))continue;let o=a.split(/\s+/),l=o[0];l==="format"?i=o[1]:l==="element"?(r={name:o[1],count:parseInt(o[2],10),properties:[]},t.push(r)):l==="property"&&r&&(o[1]==="list"?r.properties.push({name:o[4],type:"list",isList:!0,countType:o[2],itemType:o[3]}):r.properties.push({name:o[2],type:o[1],isList:!1}))}return{format:i,elements:t}}function Mp(n){switch(n){case"uchar":case"uint8":return 1;case"char":case"int8":return 1;case"ushort":case"uint16":return 2;case"short":case"int16":return 2;case"uint":case"uint32":return 4;case"int":case"int32":return 4;case"float":case"float32":return 4;case"double":case"float64":return 8;default:return 4}}function wb(n,e,t,i){switch(t){case"uchar":case"uint8":return n.getUint8(e);case"char":case"int8":return n.getInt8(e);case"ushort":case"uint16":return n.getUint16(e,i);case"short":case"int16":return n.getInt16(e,i);case"uint":case"uint32":return n.getUint32(e,i);case"int":case"int32":return n.getInt32(e,i);case"float":case"float32":return n.getFloat32(e,i);case"double":case"float64":return n.getFloat64(e,i);default:return 0}}function ige(n,e,t,i){let r=i,s=new DataView(n),a=[],o=[],l=[],c=e.elements.find(d=>d.name==="vertex"),f=e.elements.find(d=>d.name==="face");if(c){let d=c.properties.some(u=>u.name==="x"),h=c.properties.some(u=>u.name==="red"||u.name==="r");for(let u=0;uh.name==="vertex"),c=e.elements.find(h=>h.name==="face"),f=0;if(l){let h=l.properties.some(_=>_.name==="x"),u=l.properties.some(_=>_.name==="red"||_.name==="r"),m=l.properties.filter(_=>!_.isList);for(let _=0;_0){c.indices=o.indices;let h=new Array(l.length).fill(0),u=o.indices,m=l.length-3;for(let _=0;_m||g>m||v>m)continue;let x=l[p],S=l[p+1],E=l[p+2],T=l[g]-x,R=l[g+1]-S,M=l[g+2]-E,y=l[v]-x,C=l[v+1]-S,L=l[v+2]-E,w=R*L-M*C,G=M*y-T*L,O=T*C-R*y;h[p]+=w,h[p+1]+=G,h[p+2]+=O,h[g]+=w,h[g+1]+=G,h[g+2]+=O,h[v]+=w,h[v+1]+=G,h[v+2]+=O}for(let _=0;_0&&(h[_]/=p,h[_+1]/=p,h[_+2]/=p)}c.normals=h}else{let h=o.positions.length/3,u=[];for(let m=0;m=3&&u.push(0,1,2),c.indices=u}let f=new Z("ply-model",n);c.applyToMesh(f);let d=new We("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new pe(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new pe(.7,.7,.7),f.material=d,f}function lq(n,e){return Fb(n,e)}function cq(n){n(nge)}var nge,ZN=I(()=>{"use strict";Ci();pv();pr();Dc();Ht();nge={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[Fb(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{Fb(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=Fb(n,e),i=new Rl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function bv(){fq||(nq(),oq(td),cq(td),fq=!0)}var fq,Mv=I(()=>{"use strict";EO();Qj();$j();KN();_p();sq();qN();ZN();fq=!1});function Iv(n){return Math.floor(n.getTotalIndices()/3)}function sd(n){return n.getTotalVertices()}function Nh(n,e=[]){let t=[n,...e,...n.getChildMeshes(!0)],i=new Set;return t.filter(r=>!r||i.has(r)||r.isDisposed()?!1:(i.add(r),sd(r)>0||r.getTotalIndices()>0))}function dq(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function QN(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return hf(Qt(e.minimumWorld),Qt(e.maximumWorld))}function ad(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=Kd(e,QN(t)));return e}function Ub(n,e=[]){var t;return(t=ad(Nh(n,e)))!=null?t:QN(n)}function Vb(n,e,t,i={}){return FT({rootName:n,boundingSize:ji(e),meshes:t.map(r=>({triangleCount:Iv(r),vertexCount:sd(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function hq(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:Iv(n),vertexCount:sd(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function $N(n,e=Bb){var a,o,l;let t=QN(n),i=n.name||`mesh-${n.uniqueId}`,r=kb(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=aa(r,{name:i,path:Gb(n)});return zl({name:ew(s,i),triangleCount:Iv(n),vertexCount:sd(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:ji(t),center:vr(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function uq(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function sge(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function age(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function JN(n,e,t=Bb){var u,m;if(e.includes(n))return $N(n,t);let i=new Set(e),r=uq(n,i),s=Qt(n.getAbsolutePosition()),a=(u=ad(r))!=null?u:hf(s,s),o=new Set,l=0,c=0;for(let _ of r)l+=Iv(_),c+=sd(_),(m=_.material)!=null&&m.name&&o.add(_.material.name);let f=Ip(n,`component-${n.uniqueId}`),d=kb(n.metadata,t.get(`node:${f}`)),h=aa(d,{name:f,path:Gb(n)});return zl({name:ew(h,f),triangleCount:l,vertexCount:c,materialName:jd(o),boundingSize:ji(a),center:vr(a),source:h.hasExplicitIdentity?"component":"group",meshNames:r.map(_=>_.name||`mesh-${_.uniqueId}`),childCount:r.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function yv(n,e,t,i=Bb){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=uq(f,r);if(d.length>0&&d.length1&&u.trim()&&!sge(u)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function mq(n,e,t=Bb){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(h=>i.has(h)),c=Ip(o,`component-${o.uniqueId}`),f=kb(o.metadata,t.get(`node:${c}`)),d=aa(f,{name:Ip(o,`component-${o.uniqueId}`),path:Gb(o)});l.length<1||l.length===n.length||!d.hasExplicitIdentity&&(!o.name.trim()||l.length<2)||a.push({node:o,childMeshes:l,identity:d})}return a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({node:o,childMeshes:l,identity:c})=>{var _;let f=l.filter(p=>!s.has(p));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let p of f)s.add(p);let d=ad(f);if(!d)return;let h=new Set,u=0,m=0;for(let p of f)u+=Iv(p),m+=sd(p),(_=p.material)!=null&&_.name&&h.add(p.material.name);r.push(zl({name:ew(c,Ip(o,`component-${o.uniqueId}`)),triangleCount:u,vertexCount:m,materialName:jd(h),boundingSize:ji(d),center:vr(d),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(p=>p.name||`mesh-${p.uniqueId}`),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function pq(n,e){let t=oge(n,e),i=new Map;if(!t)return i;let r=Array.isArray(t.nodes)?t.nodes:[];for(let a of r){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`node:${l}`,o.extras)}let s=Array.isArray(t.meshes)?t.meshes:[];for(let a of s){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`mesh:${l}`,o.extras)}return i}function Ip(n,e){var i;return((i=aa(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function Gb(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Ip(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function oge(n,e){try{if(e==="gltf")return JSON.parse(new TextDecoder().decode(new Uint8Array(n)));if(e!=="glb")return null;let t=new DataView(n);if(t.byteLength<20||t.getUint32(0,!0)!==1179937895)return null;let i=t.getUint32(12,!0);if(t.getUint32(16,!0)!==1313821514||20+i>t.byteLength)return null;let s=new Uint8Array(n,20,i);return JSON.parse(new TextDecoder().decode(s))}catch(t){return null}}function kb(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function ew(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var Bb,Cv=I(()=>{"use strict";il();Uy();tg();Ds();BT();Bb=new Map});function od(n){return rn(n)}function _q(n,e,t,i=[]){eA(new Wb(n,i),e,t)}function tw(n,e=[]){tA(new Wb(n,e))}var Wb,gq=I(()=>{"use strict";ke();il();Ds();Wy();Cv();Wb=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return Nh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return vr(Ub(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return Qt(e.position)}getPartCenter(e){return Qt(e.getBoundingInfo().boundingBox.centerWorld)}setPartPosition(e,t){e.position=new b(t.x,t.y,t.z)}getPartState(e){let t=e.metadata;return t!=null&&t._previewExplodeState?{originalPosition:od(t._previewExplodeState.originalPosition),originalCenter:od(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:od(t._originalPos),originalCenter:od(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:od(t.originalPosition),originalCenter:od(t.originalCenter)},i._originalPos=od(t.originalPosition),i._originalCenter=od(t.originalCenter)}}});var Hb={};Be(Hb,{glowBlurPostProcessPixelShaderWGSL:()=>lge});var iw,vq,lge,zb=I(()=>{k();iw="glowBlurPostProcessPixelShader",vq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f;uniform direction: vec2f;uniform blurWidth: f32;fn getLuminance(color: vec3f)->f32 {return dot(color, vec3f(0.2126,0.7152,0.0722));} #define CUSTOM_FRAGMENT_DEFINITIONS @fragment fn main(input: FragmentInputs)->FragmentOutputs {var weights: array;weights[0]=0.05;weights[1]=0.1;weights[2]=0.2;weights[3]=0.3;weights[4]=0.2;weights[5]=0.1;weights[6]=0.05;var texelSize: vec2f= vec2f(1.0/uniforms.screenSize.x,1.0/uniforms.screenSize.y);var texelStep: vec2f=texelSize*uniforms.direction*uniforms.blurWidth;var start: vec2f=input.vUV-3.0*texelStep;var baseColor: vec4f= vec4f(0.,0.,0.,0.);var texelOffset: vec2f= vec2f(0.,0.);for (var i: i32=0; i<7; i++) {var texel: vec4f=textureSample(textureSampler,textureSamplerSampler,start+texelOffset);baseColor=vec4f(baseColor.rgb,baseColor.a+texel.a*weights[i]);var luminance: f32=getLuminance(baseColor.rgb);var luminanceTexel: f32=getLuminance(texel.rgb);var choice: f32=step(luminanceTexel,luminance);baseColor=vec4f(choice*baseColor.rgb+(1.0-choice)*texel.rgb,baseColor.a);texelOffset+=texelStep;} -fragmentOutputs.color=baseColor;}`;A.ShadersStoreWGSL[JN]||(A.ShadersStoreWGSL[JN]=pq);rge={name:JN,shader:pq}});var Hb={};Be(Hb,{glowBlurPostProcessPixelShader:()=>nge});var ew,_q,nge,zb=I(()=>{k();ew="glowBlurPostProcessPixelShader",_q=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize;uniform vec2 direction;uniform float blurWidth;float getLuminance(vec3 color) +fragmentOutputs.color=baseColor;}`;A.ShadersStoreWGSL[iw]||(A.ShadersStoreWGSL[iw]=vq);lge={name:iw,shader:vq}});var Xb={};Be(Xb,{glowBlurPostProcessPixelShader:()=>cge});var rw,Eq,cge,Yb=I(()=>{k();rw="glowBlurPostProcessPixelShader",Eq=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize;uniform vec2 direction;uniform float blurWidth;float getLuminance(vec3 color) {return dot(color,vec3(0.2126,0.7152,0.0722));} #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) {float weights[7];weights[0]=0.05;weights[1]=0.1;weights[2]=0.2;weights[3]=0.3;weights[4]=0.2;weights[5]=0.1;weights[6]=0.05;vec2 texelSize=vec2(1.0/screenSize.x,1.0/screenSize.y);vec2 texelStep=texelSize*direction*blurWidth;vec2 start=vUV-3.0*texelStep;vec4 baseColor=vec4(0.,0.,0.,0.);vec2 texelOffset=vec2(0.,0.);for (int i=0; i<7; i++) {vec4 texel=texture2D(textureSampler,start+texelOffset);baseColor.a+=texel.a*weights[i];float luminance=getLuminance(baseColor.rgb);float luminanceTexel=getLuminance(texel.rgb);float choice=step(luminanceTexel,luminance);baseColor.rgb=choice*baseColor.rgb+(1.0-choice)*texel.rgb;texelOffset+=texelStep;} -gl_FragColor=baseColor;}`;A.ShadersStore[ew]||(A.ShadersStore[ew]=_q);nge={name:ew,shader:_q}});var vq={};Be(vq,{glowMapGenerationVertexShaderWGSL:()=>sge});var tw,gq,sge,Eq=I(()=>{k();uc();mc();Yf();Kf();pc();Hf();jf();qf();_c();gc();vc();Ec();tw="glowMapGenerationVertexShader",gq=`attribute position: vec3f; +gl_FragColor=baseColor;}`;A.ShadersStore[rw]||(A.ShadersStore[rw]=Eq);cge={name:rw,shader:Eq}});var Tq={};Be(Tq,{glowMapGenerationVertexShaderWGSL:()=>fge});var nw,Sq,fge,Aq=I(()=>{k();uc();mc();Yf();Kf();pc();Hf();jf();qf();_c();gc();vc();Ec();nw="glowMapGenerationVertexShader",Sq=`attribute position: vec3f; #include #include #include @@ -23490,7 +23490,7 @@ vertexOutputs.vUVEmissive= (uniforms.emissiveMatrix* vec4f(uv2Updated,1.0,0.0)). vertexOutputs.vColor=vertexInputs.color; #endif #include -}`;A.ShadersStoreWGSL[tw]||(A.ShadersStoreWGSL[tw]=gq);sge={name:tw,shader:gq}});var Tq={};Be(Tq,{glowMapGenerationPixelShaderWGSL:()=>age});var iw,Sq,age,Aq=I(()=>{k();wa();Sc();Tc();iw="glowMapGenerationPixelShader",Sq=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) +}`;A.ShadersStoreWGSL[nw]||(A.ShadersStoreWGSL[nw]=Sq);fge={name:nw,shader:Sq}});var Rq={};Be(Rq,{glowMapGenerationPixelShaderWGSL:()=>dge});var sw,xq,dge,bq=I(()=>{k();wa();Sc();Tc();sw="glowMapGenerationPixelShader",xq=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) #include #endif #ifdef DIFFUSE @@ -23552,7 +23552,7 @@ fragmentOutputs.color=finalColor*uniforms.glowIntensity; fragmentOutputs.color=vec4f(fragmentOutputs.color.rgb,uniforms.glowColor.a); #endif } -`;A.ShadersStoreWGSL[iw]||(A.ShadersStoreWGSL[iw]=Sq);age={name:iw,shader:Sq}});var Rq={};Be(Rq,{glowMapGenerationVertexShader:()=>oge});var rw,xq,oge,bq=I(()=>{k();Ac();xc();Zf();Qf();Rc();zf();$f();Jf();bc();Mc();Ic();yc();rw="glowMapGenerationVertexShader",xq=`attribute vec3 position; +`;A.ShadersStoreWGSL[sw]||(A.ShadersStoreWGSL[sw]=xq);dge={name:sw,shader:xq}});var Iq={};Be(Iq,{glowMapGenerationVertexShader:()=>hge});var aw,Mq,hge,yq=I(()=>{k();Ac();xc();Zf();Qf();Rc();zf();$f();Jf();bc();Mc();Ic();yc();aw="glowMapGenerationVertexShader",Mq=`attribute vec3 position; #include #include #include @@ -23626,7 +23626,7 @@ vUVEmissive=vec2(emissiveMatrix*vec4(uv2Updated,1.0,0.0)); vColor=color; #endif #include -}`;A.ShadersStore[rw]||(A.ShadersStore[rw]=xq);oge={name:rw,shader:xq}});var Iq={};Be(Iq,{glowMapGenerationPixelShader:()=>lge});var nw,Mq,lge,yq=I(()=>{k();Fa();Cc();Pc();nw="glowMapGenerationPixelShader",Mq=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) +}`;A.ShadersStore[aw]||(A.ShadersStore[aw]=Mq);hge={name:aw,shader:Mq}});var Pq={};Be(Pq,{glowMapGenerationPixelShader:()=>uge});var ow,Cq,uge,Dq=I(()=>{k();Fa();Cc();Pc();ow="glowMapGenerationPixelShader",Cq=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) #include #endif #ifdef DIFFUSE @@ -23688,8 +23688,8 @@ gl_FragColor=finalColor*glowIntensity; #ifdef HIGHLIGHT gl_FragColor.a=glowColor.a; #endif -}`;A.ShadersStore[nw]||(A.ShadersStore[nw]=Mq);lge={name:nw,shader:Mq}});var wo,wc,Xb=I(()=>{hi();Ht();Ni();Wi();lh();Yn();Gf();oh();vl();Xn();RC();wo=class n extends Yr{constructor(e,t=null,i,r,s){super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms}),this.direction=i,this.kernel=r,this.textureWidth=0,this.textureHeight=0}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(Wb(),kb)))):t.push(Promise.resolve().then(()=>(zb(),Hb))),super._gatherImports(e,t)}bind(){super.bind(),this._drawWrapper.effect.setFloat2("screenSize",this.textureWidth,this.textureHeight),this._drawWrapper.effect.setVector2("direction",this.direction),this._drawWrapper.effect.setFloat("blurWidth",this.kernel)}};wo.FragmentUrl="glowBlurPostProcess";wo.Uniforms=["screenSize","direction","blurWidth"];wc=class n{get camera(){return this._options.camera}set camera(e){this._options.camera=e}get renderingGroupId(){return this._options.renderingGroupId}set renderingGroupId(e){this._options.renderingGroupId=e}get objectRenderer(){return this._objectRenderer}get shaderLanguage(){return this._shaderLanguage}setMaterialForRendering(e,t){if(this._objectRenderer.setMaterialForRendering(e,t),Array.isArray(e))for(let i=0;i{t=this._scene.getBoundingBoxRenderer().enabled,this._scene.getBoundingBoxRenderer().enabled=!this.disableBoundingBoxesFromEffectLayer&&t}),this._objectRenderer.onAfterRenderObservable.add(()=>{this._scene.getBoundingBoxRenderer().enabled=t})),this._objectRenderer.customIsReadyFunction=(i,r,s)=>{if((s||r===0)&&i.subMeshes)for(let a=0;a{this.onBeforeRenderLayerObservable.notifyObservers(this);let o,l=this._scene.getEngine();if(a.length){for(l.setColorWrite(!1),o=0;o4&&(c.push(D.MatricesIndicesExtraKind),c.push(D.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let E=s.skeleton;E&&E.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(E?E.bones.length+1:0)),s.numBoneInfluencers>0&&u.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?El(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,h):0;t&&(l.push("#define INSTANCES"),yo(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let _=s.bakedVertexAnimationManager;_&&_.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),gl(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),g=p.defines,v=l.join(` -`);if(g!==v){let E=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Wn(E),p.setEffect(this._engine.createEffect("glowMapGeneration",c,E,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,u,void 0,void 0,{maxSimultaneousMorphTargets:m},this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0}),v)}return p.effect.isReady()&&(this._dontCheckIfReady||!this._dontCheckIfReady&&this.isLayerReady())}_isSubMeshReady(e,t,i){return this._internalIsSubMeshReady(e,t,i)}async _importShadersAsync(){var e;this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Eq(),vq)),Promise.resolve().then(()=>(Aq(),Tq))]):await Promise.all([Promise.resolve().then(()=>(bq(),Rq)),Promise.resolve().then(()=>(yq(),Iq))]),(e=this._additionalImportShadersAsync)==null||e.call(this)}_internalIsLayerReady(){let e=!0;for(let i=0;iv.setMatrix("world",R)),(i.disableDepthWrite||i.forceDepthWrite)&&c.setDepthWrite(x),i.disableColorWrite&&c.setColorWrite(S),i.depthFunction!==0&&c.setDepthFunction(E)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[D.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[D.PositionKind];e&&(e.dispose(),this._vertexBuffers[D.PositionKind]=null),this._indexBuffer&&(this._scene.getEngine()._releaseBuffer(this._indexBuffer),this._indexBuffer=null);for(let t of this._mergeDrawWrapper)t.dispose();this._mergeDrawWrapper=[],this._objectRenderer.dispose(),this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onBeforeRenderLayerObservable.clear(),this.onBeforeComposeObservable.clear(),this.onBeforeRenderMeshToEffect.clear(),this.onAfterRenderMeshToEffect.clear(),this.onAfterComposeObservable.clear()}};wc.ForceGLSL=!1});var Ys,sw=I(()=>{Gt();Vt();yi();hi();Ni();Gr();Rf();un();uo();Xb();_x();Ys=class n{get _shouldRender(){return this._thinEffectLayer._shouldRender}set _shouldRender(e){this._thinEffectLayer._shouldRender=e}get _emissiveTextureAndColor(){return this._thinEffectLayer._emissiveTextureAndColor}set _emissiveTextureAndColor(e){this._thinEffectLayer._emissiveTextureAndColor=e}get _effectIntensity(){return this._thinEffectLayer._effectIntensity}set _effectIntensity(e){this._thinEffectLayer._effectIntensity=e}static get ForceGLSL(){return wc.ForceGLSL}static set ForceGLSL(e){wc.ForceGLSL=e}get name(){return this._thinEffectLayer.name}set name(e){this._thinEffectLayer.name=e}get neutralColor(){return this._thinEffectLayer.neutralColor}set neutralColor(e){this._thinEffectLayer.neutralColor=e}get isEnabled(){return this._thinEffectLayer.isEnabled}set isEnabled(e){this._thinEffectLayer.isEnabled=e}get camera(){return this._thinEffectLayer.camera}get renderingGroupId(){return this._thinEffectLayer.renderingGroupId}set renderingGroupId(e){this._thinEffectLayer.renderingGroupId=e}get disableBoundingBoxesFromEffectLayer(){return this._thinEffectLayer.disableBoundingBoxesFromEffectLayer}set disableBoundingBoxesFromEffectLayer(e){this._thinEffectLayer.disableBoundingBoxesFromEffectLayer=e}get mainTexture(){return this._mainTexture}get _shaderLanguage(){return this._thinEffectLayer.shaderLanguage}get shaderLanguage(){return this._thinEffectLayer.shaderLanguage}setMaterialForRendering(e,t){this._thinEffectLayer.setMaterialForRendering(e,t)}getEffectIntensity(e){return this._thinEffectLayer.getEffectIntensity(e)}setEffectIntensity(e,t){this._thinEffectLayer.setEffectIntensity(e,t)}constructor(e,t,i=!1,r){this._mainTextureCreatedSize={width:0,height:0},this._maxSize=0,this._mainTextureDesiredSize={width:0,height:0},this._postProcesses=[],this._textures=[],this.uniqueId=lc.UniqueId,this.onDisposeObservable=new ie,this.onBeforeRenderMainTextureObservable=new ie,this.onBeforeComposeObservable=new ie,this.onBeforeRenderMeshToEffect=new ie,this.onAfterRenderMeshToEffect=new ie,this.onAfterComposeObservable=new ie,this.onSizeChangedObservable=new ie,this._internalThinEffectLayer=!r,r||(r=new wc(e,t,i,!1,this._importShadersAsync.bind(this)),r.getEffectName=this.getEffectName.bind(this),r.isReady=this.isReady.bind(this),r._createMergeEffect=this._createMergeEffect.bind(this),r._createTextureAndPostProcesses=this._createTextureAndPostProcesses.bind(this),r._internalCompose=this._internalRender.bind(this),r._setEmissiveTextureAndColor=this._setEmissiveTextureAndColor.bind(this),r._numInternalDraws=this._numInternalDraws.bind(this),r._addCustomEffectDefines=this._addCustomEffectDefines.bind(this),r.hasMesh=this.hasMesh.bind(this),r.shouldRender=this.shouldRender.bind(this),r._shouldRenderMesh=this._shouldRenderMesh.bind(this),r._canRenderMesh=this._canRenderMesh.bind(this),r._useMeshMaterial=this._useMeshMaterial.bind(this)),this._thinEffectLayer=r,this.name=e,this._scene=t||Oe.LastCreatedScene,n._SceneComponentInitialization(this._scene),this._engine=this._scene.getEngine(),this._maxSize=this._engine.getCaps().maxTextureSize,this._scene.addEffectLayer(this),this._thinEffectLayer.onDisposeObservable.add(()=>{this.onDisposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderLayerObservable.add(()=>{this.onBeforeRenderMainTextureObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeComposeObservable.add(()=>{this.onBeforeComposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderMeshToEffect.add(s=>{this.onBeforeRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterRenderMeshToEffect.add(s=>{this.onAfterRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterComposeObservable.add(()=>{this.onAfterComposeObservable.notifyObservers(this)})}get _shadersLoaded(){return this._thinEffectLayer._shadersLoaded}set _shadersLoaded(e){this._thinEffectLayer._shadersLoaded=e}_numInternalDraws(){return this._internalThinEffectLayer?1:this._thinEffectLayer._numInternalDraws()}_init(e){this._effectLayerOptions={mainTextureRatio:.5,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,generateStencilBuffer:!1,...e},this._setMainTextureSize(),this._thinEffectLayer._init(e),this._createMainTexture(),this._createTextureAndPostProcesses()}_setMainTextureSize(){this._effectLayerOptions.mainTextureFixedSize?(this._mainTextureDesiredSize.width=this._effectLayerOptions.mainTextureFixedSize,this._mainTextureDesiredSize.height=this._effectLayerOptions.mainTextureFixedSize):(this._mainTextureDesiredSize.width=this._engine.getRenderWidth()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.height=this._engine.getRenderHeight()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.width=this._engine.needPOTTextures?An(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?An(this._mainTextureDesiredSize.height,this._maxSize):this._mainTextureDesiredSize.height),this._mainTextureDesiredSize.width=Math.floor(this._mainTextureDesiredSize.width),this._mainTextureDesiredSize.height=Math.floor(this._mainTextureDesiredSize.height)}_createMainTexture(){this._mainTexture=new kr("EffectLayerMainRTT",{width:this._mainTextureDesiredSize.width,height:this._mainTextureDesiredSize.height},this._scene,{type:this._effectLayerOptions.mainTextureType,format:this._effectLayerOptions.mainTextureFormat,samplingMode:ge.TRILINEAR_SAMPLINGMODE,generateStencilBuffer:this._effectLayerOptions.generateStencilBuffer,existingObjectRenderer:this._thinEffectLayer.objectRenderer}),this._mainTexture.activeCamera=this._effectLayerOptions.camera,this._mainTexture.wrapU=ge.CLAMP_ADDRESSMODE,this._mainTexture.wrapV=ge.CLAMP_ADDRESSMODE,this._mainTexture.anisotropicFilteringLevel=1,this._mainTexture.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE),this._mainTexture.renderParticles=!1,this._mainTexture.renderList=null,this._mainTexture.ignoreCameraViewport=!0,this._mainTexture.onClearObservable.add(e=>{e.clear(this.neutralColor,!0,!0,!0)})}_addCustomEffectDefines(e){}_isReady(e,t,i){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsSubMeshReady(e,t,i):this._thinEffectLayer._isSubMeshReady(e,t,i)}async _importShadersAsync(){}_arePostProcessAndMergeReady(){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsLayerReady():this._thinEffectLayer.isLayerReady()}isLayerReady(){return this._arePostProcessAndMergeReady()&&this._mainTexture.isReady()}render(){this._thinEffectLayer.compose()&&(this._setMainTextureSize(),(this._mainTextureCreatedSize.width!==this._mainTextureDesiredSize.width||this._mainTextureCreatedSize.height!==this._mainTextureDesiredSize.height)&&this._mainTextureDesiredSize.width!==0&&this._mainTextureDesiredSize.height!==0&&(this.onSizeChangedObservable.notifyObservers(this),this._disposeTextureAndPostProcesses(),this._createMainTexture(),this._createTextureAndPostProcesses(),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height))}hasMesh(e){return this._internalThinEffectLayer?this._thinEffectLayer._internalHasMesh(e):this._thinEffectLayer.hasMesh(e)}shouldRender(){return this._internalThinEffectLayer?this._thinEffectLayer._internalShouldRender():this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._internalThinEffectLayer?!0:this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._internalThinEffectLayer?this._thinEffectLayer._internalCanRenderMesh(e,t):this._thinEffectLayer._canRenderMesh(e,t)}_shouldRenderEmissiveTextureForMesh(){return!0}_useMeshMaterial(e){return this._internalThinEffectLayer?!1:this._thinEffectLayer._useMeshMaterial(e)}_rebuild(){this._thinEffectLayer._rebuild()}_disposeTextureAndPostProcesses(){this._mainTexture.dispose();for(let e=0;e{throw Qe("EffectLayerSceneComponent")};P([F()],Ys.prototype,"name",null);P([Em()],Ys.prototype,"neutralColor",null);P([F()],Ys.prototype,"isEnabled",null);P([JU()],Ys.prototype,"camera",null);P([F()],Ys.prototype,"renderingGroupId",null);P([F()],Ys.prototype,"disableBoundingBoxesFromEffectLayer",null)});var Pq={};Be(Pq,{glowMapMergePixelShaderWGSL:()=>cge});var aw,Cq,cge,Dq=I(()=>{k();aw="glowMapMergePixelShader",Cq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +}`;A.ShadersStore[ow]||(A.ShadersStore[ow]=Cq);uge={name:ow,shader:Cq}});var wo,wc,Kb=I(()=>{hi();Ht();Ni();Wi();lh();Yn();Gf();oh();vl();Xn();IC();wo=class n extends Yr{constructor(e,t=null,i,r,s){super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms}),this.direction=i,this.kernel=r,this.textureWidth=0,this.textureHeight=0}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(zb(),Hb)))):t.push(Promise.resolve().then(()=>(Yb(),Xb))),super._gatherImports(e,t)}bind(){super.bind(),this._drawWrapper.effect.setFloat2("screenSize",this.textureWidth,this.textureHeight),this._drawWrapper.effect.setVector2("direction",this.direction),this._drawWrapper.effect.setFloat("blurWidth",this.kernel)}};wo.FragmentUrl="glowBlurPostProcess";wo.Uniforms=["screenSize","direction","blurWidth"];wc=class n{get camera(){return this._options.camera}set camera(e){this._options.camera=e}get renderingGroupId(){return this._options.renderingGroupId}set renderingGroupId(e){this._options.renderingGroupId=e}get objectRenderer(){return this._objectRenderer}get shaderLanguage(){return this._shaderLanguage}setMaterialForRendering(e,t){if(this._objectRenderer.setMaterialForRendering(e,t),Array.isArray(e))for(let i=0;i{t=this._scene.getBoundingBoxRenderer().enabled,this._scene.getBoundingBoxRenderer().enabled=!this.disableBoundingBoxesFromEffectLayer&&t}),this._objectRenderer.onAfterRenderObservable.add(()=>{this._scene.getBoundingBoxRenderer().enabled=t})),this._objectRenderer.customIsReadyFunction=(i,r,s)=>{if((s||r===0)&&i.subMeshes)for(let a=0;a{this.onBeforeRenderLayerObservable.notifyObservers(this);let o,l=this._scene.getEngine();if(a.length){for(l.setColorWrite(!1),o=0;o4&&(c.push(D.MatricesIndicesExtraKind),c.push(D.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let E=s.skeleton;E&&E.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(E?E.bones.length+1:0)),s.numBoneInfluencers>0&&u.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?El(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,h):0;t&&(l.push("#define INSTANCES"),yo(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let _=s.bakedVertexAnimationManager;_&&_.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),gl(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),g=p.defines,v=l.join(` +`);if(g!==v){let E=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Wn(E),p.setEffect(this._engine.createEffect("glowMapGeneration",c,E,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,u,void 0,void 0,{maxSimultaneousMorphTargets:m},this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0}),v)}return p.effect.isReady()&&(this._dontCheckIfReady||!this._dontCheckIfReady&&this.isLayerReady())}_isSubMeshReady(e,t,i){return this._internalIsSubMeshReady(e,t,i)}async _importShadersAsync(){var e;this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Aq(),Tq)),Promise.resolve().then(()=>(bq(),Rq))]):await Promise.all([Promise.resolve().then(()=>(yq(),Iq)),Promise.resolve().then(()=>(Dq(),Pq))]),(e=this._additionalImportShadersAsync)==null||e.call(this)}_internalIsLayerReady(){let e=!0;for(let i=0;iv.setMatrix("world",R)),(i.disableDepthWrite||i.forceDepthWrite)&&c.setDepthWrite(x),i.disableColorWrite&&c.setColorWrite(S),i.depthFunction!==0&&c.setDepthFunction(E)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[D.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[D.PositionKind];e&&(e.dispose(),this._vertexBuffers[D.PositionKind]=null),this._indexBuffer&&(this._scene.getEngine()._releaseBuffer(this._indexBuffer),this._indexBuffer=null);for(let t of this._mergeDrawWrapper)t.dispose();this._mergeDrawWrapper=[],this._objectRenderer.dispose(),this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onBeforeRenderLayerObservable.clear(),this.onBeforeComposeObservable.clear(),this.onBeforeRenderMeshToEffect.clear(),this.onAfterRenderMeshToEffect.clear(),this.onAfterComposeObservable.clear()}};wc.ForceGLSL=!1});var Ys,lw=I(()=>{Gt();Vt();yi();hi();Ni();Gr();Rf();un();uo();Kb();vx();Ys=class n{get _shouldRender(){return this._thinEffectLayer._shouldRender}set _shouldRender(e){this._thinEffectLayer._shouldRender=e}get _emissiveTextureAndColor(){return this._thinEffectLayer._emissiveTextureAndColor}set _emissiveTextureAndColor(e){this._thinEffectLayer._emissiveTextureAndColor=e}get _effectIntensity(){return this._thinEffectLayer._effectIntensity}set _effectIntensity(e){this._thinEffectLayer._effectIntensity=e}static get ForceGLSL(){return wc.ForceGLSL}static set ForceGLSL(e){wc.ForceGLSL=e}get name(){return this._thinEffectLayer.name}set name(e){this._thinEffectLayer.name=e}get neutralColor(){return this._thinEffectLayer.neutralColor}set neutralColor(e){this._thinEffectLayer.neutralColor=e}get isEnabled(){return this._thinEffectLayer.isEnabled}set isEnabled(e){this._thinEffectLayer.isEnabled=e}get camera(){return this._thinEffectLayer.camera}get renderingGroupId(){return this._thinEffectLayer.renderingGroupId}set renderingGroupId(e){this._thinEffectLayer.renderingGroupId=e}get disableBoundingBoxesFromEffectLayer(){return this._thinEffectLayer.disableBoundingBoxesFromEffectLayer}set disableBoundingBoxesFromEffectLayer(e){this._thinEffectLayer.disableBoundingBoxesFromEffectLayer=e}get mainTexture(){return this._mainTexture}get _shaderLanguage(){return this._thinEffectLayer.shaderLanguage}get shaderLanguage(){return this._thinEffectLayer.shaderLanguage}setMaterialForRendering(e,t){this._thinEffectLayer.setMaterialForRendering(e,t)}getEffectIntensity(e){return this._thinEffectLayer.getEffectIntensity(e)}setEffectIntensity(e,t){this._thinEffectLayer.setEffectIntensity(e,t)}constructor(e,t,i=!1,r){this._mainTextureCreatedSize={width:0,height:0},this._maxSize=0,this._mainTextureDesiredSize={width:0,height:0},this._postProcesses=[],this._textures=[],this.uniqueId=lc.UniqueId,this.onDisposeObservable=new ie,this.onBeforeRenderMainTextureObservable=new ie,this.onBeforeComposeObservable=new ie,this.onBeforeRenderMeshToEffect=new ie,this.onAfterRenderMeshToEffect=new ie,this.onAfterComposeObservable=new ie,this.onSizeChangedObservable=new ie,this._internalThinEffectLayer=!r,r||(r=new wc(e,t,i,!1,this._importShadersAsync.bind(this)),r.getEffectName=this.getEffectName.bind(this),r.isReady=this.isReady.bind(this),r._createMergeEffect=this._createMergeEffect.bind(this),r._createTextureAndPostProcesses=this._createTextureAndPostProcesses.bind(this),r._internalCompose=this._internalRender.bind(this),r._setEmissiveTextureAndColor=this._setEmissiveTextureAndColor.bind(this),r._numInternalDraws=this._numInternalDraws.bind(this),r._addCustomEffectDefines=this._addCustomEffectDefines.bind(this),r.hasMesh=this.hasMesh.bind(this),r.shouldRender=this.shouldRender.bind(this),r._shouldRenderMesh=this._shouldRenderMesh.bind(this),r._canRenderMesh=this._canRenderMesh.bind(this),r._useMeshMaterial=this._useMeshMaterial.bind(this)),this._thinEffectLayer=r,this.name=e,this._scene=t||Oe.LastCreatedScene,n._SceneComponentInitialization(this._scene),this._engine=this._scene.getEngine(),this._maxSize=this._engine.getCaps().maxTextureSize,this._scene.addEffectLayer(this),this._thinEffectLayer.onDisposeObservable.add(()=>{this.onDisposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderLayerObservable.add(()=>{this.onBeforeRenderMainTextureObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeComposeObservable.add(()=>{this.onBeforeComposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderMeshToEffect.add(s=>{this.onBeforeRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterRenderMeshToEffect.add(s=>{this.onAfterRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterComposeObservable.add(()=>{this.onAfterComposeObservable.notifyObservers(this)})}get _shadersLoaded(){return this._thinEffectLayer._shadersLoaded}set _shadersLoaded(e){this._thinEffectLayer._shadersLoaded=e}_numInternalDraws(){return this._internalThinEffectLayer?1:this._thinEffectLayer._numInternalDraws()}_init(e){this._effectLayerOptions={mainTextureRatio:.5,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,generateStencilBuffer:!1,...e},this._setMainTextureSize(),this._thinEffectLayer._init(e),this._createMainTexture(),this._createTextureAndPostProcesses()}_setMainTextureSize(){this._effectLayerOptions.mainTextureFixedSize?(this._mainTextureDesiredSize.width=this._effectLayerOptions.mainTextureFixedSize,this._mainTextureDesiredSize.height=this._effectLayerOptions.mainTextureFixedSize):(this._mainTextureDesiredSize.width=this._engine.getRenderWidth()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.height=this._engine.getRenderHeight()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.width=this._engine.needPOTTextures?An(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?An(this._mainTextureDesiredSize.height,this._maxSize):this._mainTextureDesiredSize.height),this._mainTextureDesiredSize.width=Math.floor(this._mainTextureDesiredSize.width),this._mainTextureDesiredSize.height=Math.floor(this._mainTextureDesiredSize.height)}_createMainTexture(){this._mainTexture=new kr("EffectLayerMainRTT",{width:this._mainTextureDesiredSize.width,height:this._mainTextureDesiredSize.height},this._scene,{type:this._effectLayerOptions.mainTextureType,format:this._effectLayerOptions.mainTextureFormat,samplingMode:ge.TRILINEAR_SAMPLINGMODE,generateStencilBuffer:this._effectLayerOptions.generateStencilBuffer,existingObjectRenderer:this._thinEffectLayer.objectRenderer}),this._mainTexture.activeCamera=this._effectLayerOptions.camera,this._mainTexture.wrapU=ge.CLAMP_ADDRESSMODE,this._mainTexture.wrapV=ge.CLAMP_ADDRESSMODE,this._mainTexture.anisotropicFilteringLevel=1,this._mainTexture.updateSamplingMode(ge.BILINEAR_SAMPLINGMODE),this._mainTexture.renderParticles=!1,this._mainTexture.renderList=null,this._mainTexture.ignoreCameraViewport=!0,this._mainTexture.onClearObservable.add(e=>{e.clear(this.neutralColor,!0,!0,!0)})}_addCustomEffectDefines(e){}_isReady(e,t,i){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsSubMeshReady(e,t,i):this._thinEffectLayer._isSubMeshReady(e,t,i)}async _importShadersAsync(){}_arePostProcessAndMergeReady(){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsLayerReady():this._thinEffectLayer.isLayerReady()}isLayerReady(){return this._arePostProcessAndMergeReady()&&this._mainTexture.isReady()}render(){this._thinEffectLayer.compose()&&(this._setMainTextureSize(),(this._mainTextureCreatedSize.width!==this._mainTextureDesiredSize.width||this._mainTextureCreatedSize.height!==this._mainTextureDesiredSize.height)&&this._mainTextureDesiredSize.width!==0&&this._mainTextureDesiredSize.height!==0&&(this.onSizeChangedObservable.notifyObservers(this),this._disposeTextureAndPostProcesses(),this._createMainTexture(),this._createTextureAndPostProcesses(),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height))}hasMesh(e){return this._internalThinEffectLayer?this._thinEffectLayer._internalHasMesh(e):this._thinEffectLayer.hasMesh(e)}shouldRender(){return this._internalThinEffectLayer?this._thinEffectLayer._internalShouldRender():this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._internalThinEffectLayer?!0:this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._internalThinEffectLayer?this._thinEffectLayer._internalCanRenderMesh(e,t):this._thinEffectLayer._canRenderMesh(e,t)}_shouldRenderEmissiveTextureForMesh(){return!0}_useMeshMaterial(e){return this._internalThinEffectLayer?!1:this._thinEffectLayer._useMeshMaterial(e)}_rebuild(){this._thinEffectLayer._rebuild()}_disposeTextureAndPostProcesses(){this._mainTexture.dispose();for(let e=0;e{throw Qe("EffectLayerSceneComponent")};P([F()],Ys.prototype,"name",null);P([Em()],Ys.prototype,"neutralColor",null);P([F()],Ys.prototype,"isEnabled",null);P([iV()],Ys.prototype,"camera",null);P([F()],Ys.prototype,"renderingGroupId",null);P([F()],Ys.prototype,"disableBoundingBoxesFromEffectLayer",null)});var Oq={};Be(Oq,{glowMapMergePixelShaderWGSL:()=>mge});var cw,Lq,mge,Nq=I(()=>{k();cw="glowMapMergePixelShader",Lq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #ifdef EMISSIVE var textureSampler2Sampler: sampler;var textureSampler2: texture_2d; #endif @@ -23713,14 +23713,14 @@ baseColor=clamp(baseColor,vec4f(0.),vec4f(1.0)); fragmentOutputs.color=baseColor; #define CUSTOM_FRAGMENT_MAIN_END } -`;A.ShadersStoreWGSL[aw]||(A.ShadersStoreWGSL[aw]=Cq);cge={name:aw,shader:Cq}});var Oq={};Be(Oq,{glowMapMergeVertexShaderWGSL:()=>fge});var ow,Lq,fge,Nq=I(()=>{k();ow="glowMapMergeVertexShader",Lq=`attribute position: vec2f;varying vUV: vec2f; +`;A.ShadersStoreWGSL[cw]||(A.ShadersStoreWGSL[cw]=Lq);mge={name:cw,shader:Lq}});var Fq={};Be(Fq,{glowMapMergeVertexShaderWGSL:()=>pge});var fw,wq,pge,Bq=I(()=>{k();fw="glowMapMergeVertexShader",wq=`attribute position: vec2f;varying vUV: vec2f; #define CUSTOM_VERTEX_DEFINITIONS @vertex fn main(input : VertexInputs)->FragmentInputs {const madd: vec2f= vec2f(0.5,0.5); #define CUSTOM_VERTEX_MAIN_BEGIN vertexOutputs.vUV=vertexInputs.position*madd+madd;vertexOutputs.position= vec4f(vertexInputs.position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStoreWGSL[ow]||(A.ShadersStoreWGSL[ow]=Lq);fge={name:ow,shader:Lq}});var Fq={};Be(Fq,{glowMapMergePixelShader:()=>dge});var lw,wq,dge,Bq=I(()=>{k();lw="glowMapMergePixelShader",wq=`varying vec2 vUV;uniform sampler2D textureSampler; +}`;A.ShadersStoreWGSL[fw]||(A.ShadersStoreWGSL[fw]=wq);pge={name:fw,shader:wq}});var Vq={};Be(Vq,{glowMapMergePixelShader:()=>_ge});var dw,Uq,_ge,Gq=I(()=>{k();dw="glowMapMergePixelShader",Uq=`varying vec2 vUV;uniform sampler2D textureSampler; #ifdef EMISSIVE uniform sampler2D textureSampler2; #endif @@ -23742,14 +23742,14 @@ baseColor=clamp(baseColor,0.,1.0); #endif gl_FragColor=baseColor; #define CUSTOM_FRAGMENT_MAIN_END -}`;A.ShadersStore[lw]||(A.ShadersStore[lw]=wq);dge={name:lw,shader:wq}});var Vq={};Be(Vq,{glowMapMergeVertexShader:()=>hge});var cw,Uq,hge,Gq=I(()=>{k();cw="glowMapMergeVertexShader",Uq=`attribute vec2 position;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); +}`;A.ShadersStore[dw]||(A.ShadersStore[dw]=Uq);_ge={name:dw,shader:Uq}});var Wq={};Be(Wq,{glowMapMergeVertexShader:()=>gge});var hw,kq,gge,Hq=I(()=>{k();hw="glowMapMergeVertexShader",kq=`attribute vec2 position;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); #define CUSTOM_VERTEX_DEFINITIONS void main(void) { #define CUSTOM_VERTEX_MAIN_BEGIN vUV=position*madd+madd;gl_Position=vec4(position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;A.ShadersStore[cw]||(A.ShadersStore[cw]=Uq);hge={name:cw,shader:Uq}});var bl,kq=I(()=>{ke();Wi();Yn();VC();Xb();Ht();FL();bl=class n extends wc{set blurHorizontalSize(e){this._horizontalBlurPostprocess.kernel=e,this._options.blurHorizontalSize=e}set blurVerticalSize(e){this._verticalBlurPostprocess.kernel=e,this._options.blurVerticalSize=e}get blurHorizontalSize(){return this._horizontalBlurPostprocess.kernel}get blurVerticalSize(){return this._verticalBlurPostprocess.kernel}get stencilReference(){return this._instanceGlowingMeshStencilReference<<8-this.numStencilBits}constructor(e,t,i,r=!1){super(e,t,i!==void 0?!!i.forceGLSL:!1),this.innerGlow=!0,this.outerGlow=!0,this._instanceGlowingMeshStencilReference=n.GlowingMeshStencilReference++,this._meshes={},this._excludedMeshes={},this._mainObjectRendererRenderPassId=-1,this.numStencilBits=8,this.neutralColor=n.NeutralColor,this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,forceGLSL:!1,mainTextureType:0,mainTextureFormat:5,isStroke:!1,...i},this._init(this._options),this._shouldRender=!1,r&&this._createTextureAndPostProcesses()}getClassName(){return"HighlightLayer"}async _importShadersAsync(){this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Dq(),Pq)),Promise.resolve().then(()=>(Nq(),Oq)),Promise.resolve().then(()=>(Wb(),kb))]):await Promise.all([Promise.resolve().then(()=>(Bq(),Fq)),Promise.resolve().then(()=>(Gq(),Vq)),Promise.resolve().then(()=>(zb(),Hb))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[D.PositionKind],["offset"],["textureSampler"],this._options.isStroke?`#define STROKE -`:void 0,void 0,void 0,void 0,void 0,this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0})}_createTextureAndPostProcesses(){this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new nc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new wo("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new wo("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new us("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new us("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize/2),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess])}needStencil(){return!0}isReady(e,t){let i=e.getMaterial(),r=e.getRenderingMesh();if(!i||!r||!this._meshes)return!1;let s=null,a=this._meshes[r.uniqueId];return a&&a.glowEmissiveOnly&&i&&(s=i.emissiveTexture),super._isSubMeshReady(e,t,s)}_canRenderMesh(e,t){return!0}_internalCompose(e,t){this.bindTexturesForCompose(e);let i=this._engine;i.cacheStencilState(),i.setStencilOperationPass(7681),i.setStencilOperationFail(7680),i.setStencilOperationDepthFail(7680),i.setStencilMask(0),i.setStencilBuffer(!0),i.setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits),i.setStencilFunctionMask(255-((1<<8-this.numStencilBits)-1)),this.outerGlow&&t===0&&(e.setFloat("offset",0),i.setStencilFunction(517),i.drawElementsType(Se.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Se.TriangleFillMode,0,6)),i.restoreStencilState()}_setEmissiveTextureAndColor(e,t,i){let r=this._meshes[e.uniqueId];r?this._emissiveTextureAndColor.color.set(r.color.r,r.color.g,r.color.b,1):this._emissiveTextureAndColor.color.set(this.neutralColor.r,this.neutralColor.g,this.neutralColor.b,this.neutralColor.a),r&&r.glowEmissiveOnly&&i?(this._emissiveTextureAndColor.texture=i.emissiveTexture,this._emissiveTextureAndColor.color.set(1,1,1,1)):this._emissiveTextureAndColor.texture=null}shouldRender(){return!!(this._meshes&&super.shouldRender())}_shouldRenderMesh(e){return this._excludedMeshes&&this._excludedMeshes[e.uniqueId]?!1:super.hasMesh(e)}_addCustomEffectDefines(e){e.push("#define HIGHLIGHT")}addExcludedMesh(e){if(!this._excludedMeshes)return;if(!this._excludedMeshes[e.uniqueId]){let i={mesh:e,beforeBind:null,afterRender:null,stencilState:!1};i.beforeBind=e.onBeforeBindObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||(i.stencilState=r.getEngine().getStencilBuffer(),r.getEngine().setStencilBuffer(!1))}),i.afterRender=e.onAfterRenderObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||r.getEngine().setStencilBuffer(i.stencilState)}),this._excludedMeshes[e.uniqueId]=i}}removeExcludedMesh(e){if(!this._excludedMeshes)return;let t=this._excludedMeshes[e.uniqueId];t&&(t.beforeBind&&e.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&e.onAfterRenderObservable.remove(t.afterRender)),this._excludedMeshes[e.uniqueId]=null}hasMesh(e){return!this._meshes||!super.hasMesh(e)?!1:!!this._meshes[e.uniqueId]}addMesh(e,t,i=!1){if(!this._meshes)return;let r=this._meshes[e.uniqueId];r?r.color=t:(this._meshes[e.uniqueId]={mesh:e,color:t,observerHighlight:e.onBeforeBindObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&(this._excludedMeshes&&this._excludedMeshes[s.uniqueId]?this._defaultStencilReference(s):s.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits))}),observerDefault:e.onAfterRenderObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&this._defaultStencilReference(s)}),glowEmissiveOnly:i},e.onDisposeObservable.add(()=>{this._disposeMesh(e)})),this._shouldRender=!0}removeMesh(e){if(!this._meshes)return;let t=this._meshes[e.uniqueId];t&&(t.observerHighlight&&e.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&e.onAfterRenderObservable.remove(t.observerDefault),delete this._meshes[e.uniqueId]),this._shouldRender=!1;for(let i in this._meshes)if(this._meshes[i]){this._shouldRender=!0;break}}removeAllMeshes(){if(this._meshes){for(let e in this._meshes)if(Object.prototype.hasOwnProperty.call(this._meshes,e)){let t=this._meshes[e];t&&this.removeMesh(t.mesh)}}}_defaultStencilReference(e){e.getScene().getEngine().setStencilFunctionReference(n.NormalMeshStencilReference<<8-this.numStencilBits)}_disposeMesh(e){this.removeMesh(e),this.removeExcludedMesh(e)}dispose(){if(this._meshes){for(let e in this._meshes){let t=this._meshes[e];t&&t.mesh&&(t.observerHighlight&&t.mesh.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&t.mesh.onAfterRenderObservable.remove(t.observerDefault))}this._meshes=null}if(this._excludedMeshes){for(let e in this._excludedMeshes){let t=this._excludedMeshes[e];t&&(t.beforeBind&&t.mesh.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&t.mesh.onAfterRenderObservable.remove(t.afterRender))}this._excludedMeshes=null}super.dispose()}};bl.EffectName="HighlightLayer";bl.NeutralColor=new lt(0,0,0,0);bl.GlowingMeshStencilReference=2;bl.NormalMeshStencilReference=1});var Yb,ua,Wq=I(()=>{Gt();Vt();hi();Bs();ke();Gr();Rf();rc();kC();BL();sw();Pt();Yi();Ht();kq();br();uo();Xb();ei.prototype.getHighlightLayerByName=function(n){var e;for(let t=0;t<((e=this.effectLayers)==null?void 0:e.length);t++)if(this.effectLayers[t].name===n&&this.effectLayers[t].getEffectName()===ua.EffectName)return this.effectLayers[t];return null};Yb=class extends Ri{constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:wo.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,wo.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new wo(e,o,t,i,c):void 0,...c}),this.direction=t,this.kernel=i,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this.width,this._effectWrapper.textureHeight=this.height})}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(Wb(),kb)))):t.push(Promise.resolve().then(()=>(zb(),Hb))),super._gatherImports(e,t)}},ua=class n extends Ys{static get NeutralColor(){return bl.NeutralColor}static set NeutralColor(e){bl.NeutralColor=e}get innerGlow(){return this._thinEffectLayer.innerGlow}set innerGlow(e){this._thinEffectLayer.innerGlow=e}get outerGlow(){return this._thinEffectLayer.outerGlow}set outerGlow(e){this._thinEffectLayer.outerGlow=e}set blurHorizontalSize(e){this._thinEffectLayer.blurHorizontalSize=e}set blurVerticalSize(e){this._thinEffectLayer.blurVerticalSize=e}get blurHorizontalSize(){return this._thinEffectLayer.blurHorizontalSize}get blurVerticalSize(){return this._thinEffectLayer.blurVerticalSize}get numStencilBits(){return this._thinEffectLayer.numStencilBits}set numStencilBits(e){this._thinEffectLayer.numStencilBits=e}get stencilReference(){return this._thinEffectLayer.stencilReference}constructor(e,t,i){super(e,t,i!==void 0?!!i.forceGLSL:!1,new bl(e,t,i)),this.onBeforeBlurObservable=new ie,this.onAfterBlurObservable=new ie,this._engine.isStencilEnable||ee.Warn("Rendering the Highlight Layer requires the stencil to be active on the canvas. var engine = new Engine(canvas, antialias, { stencil: true }"),this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,forceGLSL:!1,isStroke:!1,generateStencilBuffer:!1,...i},this._init(this._options),this._shouldRender=!1}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._thinEffectLayer._createMergeEffect()}_createTextureAndPostProcesses(){let e=this._mainTextureDesiredSize.width*this._options.blurTextureSizeRatio,t=this._mainTextureDesiredSize.height*this._options.blurTextureSizeRatio;e=this._engine.needPOTTextures?An(e,this._maxSize):e,t=this._engine.needPOTTextures?An(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new kr("HighlightLayerBlurRTT",{width:e,height:t},this._scene,!1,!0,i),this._blurTexture.wrapU=ge.CLAMP_ADDRESSMODE,this._blurTexture.wrapV=ge.CLAMP_ADDRESSMODE,this._blurTexture.anisotropicFilteringLevel=16,this._blurTexture.updateSamplingMode(ge.TRILINEAR_SAMPLINGMODE),this._blurTexture.renderParticles=!1,this._blurTexture.ignoreCameraViewport=!0,this._textures=[this._blurTexture],this._thinEffectLayer.bindTexturesForCompose=r=>{r.setTexture("textureSampler",this._blurTexture)},this._thinEffectLayer._createTextureAndPostProcesses(),this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new ch("HighlightLayerPPP",{size:this._options.blurTextureSizeRatio,samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._downSamplePostprocess.externalTextureSamplerBinding=!0,this._downSamplePostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._horizontalBlurPostprocess=new Yb("HighlightLayerHBP",new Fe(1,0),this._options.blurHorizontalSize,{samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[1]}),this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._verticalBlurPostprocess=new Yb("HighlightLayerVBP",new Fe(0,1),this._options.blurVerticalSize,{samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[2]}),this._verticalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Wa("HighlightLayerHBP",new Fe(1,0),this._options.blurHorizontalSize/2,{size:{width:e,height:t},samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i,effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._horizontalBlurPostprocess.width=e,this._horizontalBlurPostprocess.height=t,this._horizontalBlurPostprocess.externalTextureSamplerBinding=!0,this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._verticalBlurPostprocess=new Wa("HighlightLayerVBP",new Fe(0,1),this._options.blurVerticalSize/2,{size:{width:e,height:t},samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i}),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess]),this._mainTexture.onAfterUnbindObservable.add(()=>{this.onBeforeBlurObservable.notifyObservers(this);let r=this._blurTexture.renderTarget;r&&(this._scene.postProcessManager.directRender(this._postProcesses,r,!0),this._engine.unBindFramebuffer(r,!0)),this.onAfterBlurObservable.notifyObservers(this)}),this._postProcesses.map(r=>{r.autoClear=!1}),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height}needStencil(){return this._thinEffectLayer.needStencil()}isReady(e,t){return this._thinEffectLayer.isReady(e,t)}_internalRender(e,t){this._thinEffectLayer._internalCompose(e,t)}shouldRender(){return this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._thinEffectLayer._canRenderMesh(e,t)}_addCustomEffectDefines(e){this._thinEffectLayer._addCustomEffectDefines(e)}_setEmissiveTextureAndColor(e,t,i){this._thinEffectLayer._setEmissiveTextureAndColor(e,t,i)}addExcludedMesh(e){this._thinEffectLayer.addExcludedMesh(e)}removeExcludedMesh(e){this._thinEffectLayer.removeExcludedMesh(e)}hasMesh(e){return this._thinEffectLayer.hasMesh(e)}addMesh(e,t,i=!1){this._thinEffectLayer.addMesh(e,t,i)}removeMesh(e){this._thinEffectLayer.removeMesh(e)}removeAllMeshes(){this._thinEffectLayer.removeAllMeshes()}_disposeMesh(e){this._thinEffectLayer._disposeMesh(e)}getClassName(){return"HighlightLayer"}serialize(){let e=it.Serialize(this);e.customType="BABYLON.HighlightLayer",e.meshes=[];let t=this._thinEffectLayer._meshes;if(t)for(let r in t){let s=t[r];s&&e.meshes.push({glowEmissiveOnly:s.glowEmissiveOnly,color:s.color.asArray(),meshId:s.mesh.id})}e.excludedMeshes=[];let i=this._thinEffectLayer._excludedMeshes;if(i)for(let r in i){let s=i[r];s&&e.excludedMeshes.push(s.mesh.id)}return e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{_l();Rm();sw();Ni();rO();ob(tt.NAME_EFFECTLAYER,(n,e,t,i)=>{if(n.effectLayers){t.effectLayers||(t.effectLayers=[]);for(let r=0;r0){this._previousStencilState=this._engine.getStencilBuffer();for(let r of i)if(r.shouldRender()&&(!r.camera||r.camera.cameraRigMode===mt.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==mt.RIG_MODE_NONE&&r.camera._rigCameras.indexOf(e)>-1)){this._renderEffects=!0,this._needStencil=this._needStencil||r.needStencil();let s=r._mainTexture;s._shouldRender()&&(this.scene.incrementRenderId(),s.render(!1,!1),t=!0)}this.scene.incrementRenderId()}return t}_setStencil(){this._needStencil&&this._engine.setStencilBuffer(!0)}_setStencilBack(){this._needStencil&&this._engine.setStencilBuffer(this._previousStencilState)}_draw(e){if(this._renderEffects){this._engine.setDepthBuffer(!1);let t=this.scene.effectLayers;for(let i=0;i{let e=n._getComponent(tt.NAME_EFFECTLAYER);e||(e=new fw(n),n._addComponent(e))}});function zq(n,e,t=()=>!0,i=r=>[r]){let r=new ua("ai3d-pick-highlight",n),s=new pe(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let f of a)f.isDisposed()||(f.renderOutline=!1,f.outlineWidth=0);a=[]}function l(f){a=f.filter(d=>!d.isDisposed());for(let d of a)r.addMesh(d,s),d.renderOutline=!0,d.outlineColor=s,d.outlineWidth=.045}let c=n.onPointerObservable.add(f=>{var _;if(f.type!==st.POINTERDOWN)return;let d=f.event,h=d.clientX,u=d.clientY,m=f.pickInfo;if(m!=null&&m.hit&&m.pickedMesh){if(t()){let p=i(m.pickedMesh).filter(v=>!v.isDisposed());a.length===p.length&&a.every((v,x)=>v===p[x])||(o(),l(p))}else o();e({mesh:m.pickedMesh,pickedPoint:(_=m.pickedPoint)!=null?_:null,screenX:h,screenY:u})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:u})});return()=>{o(),r.dispose(),n.onPointerObservable.remove(c)}}var Xq=I(()=>{"use strict";Ao();Ht();Wq();Hq()});function Ege(n,e,t){let i=pe.FromHexString(e),r=new We(n,t);return r.emissiveColor=i,r.diffuseColor=pe.Black(),r.specularColor=pe.Black(),r.backFaceCulling=!1,r}function Sge(n){let e=new We("gizmo-origin-mat",n);return e.emissiveColor=new pe(.72,.78,.86),e.diffuseColor=pe.Black(),e.specularColor=pe.Black(),e}var uge,Kb,mge,hw,pge,_ge,dw,gge,vge,jb,Yq=I(()=>{"use strict";Bs();kx();Wx();ke();Ht();_m();tL();Dc();uge=.32,Kb=1.05,mge=.075,hw=.28,pge=.22,_ge=.16,dw=(Kb+hw)*.42,gge=new b(dw,dw,dw),vge=[{name:"x",color:"#e74c3c",rot:new b(0,0,-Math.PI/2),dir:new b(1,0,0)},{name:"y",color:"#2ecc71",rot:new b(0,0,0),dir:new b(0,1,0)},{name:"z",color:"#3498db",rot:new b(Math.PI/2,0,0),dir:new b(0,0,1)}];jb=class{constructor(e,t){this.engine=e,this.scene=new ei(e),this.scene.clearColor=new lt(0,0,0,0),this.scene.autoClear=!1,this.camera=new gi("gizmo-cam",0,0,4.1,gge,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new fa("gizmo-light",new b(0,1,.5),this.scene);let i=hs.CreateSphere("gizmo-origin",{diameter:_ge,segments:16},this.scene);i.material=Sge(this.scene);for(let{name:s,color:a,rot:o,dir:l}of vge){let c=Ege(`gizmo-${s}-mat`,a,this.scene),f=hs.CreateCylinder(`gizmo-${s}-shaft`,{height:Kb,diameter:mge,tessellation:8},this.scene);f.material=c,f.position=l.scale(Kb/2),f.rotation=o;let d=hs.CreateCylinder(`gizmo-${s}-head`,{height:hw,diameterTop:0,diameterBottom:pge,tessellation:8},this.scene);d.material=c;let h=Kb+hw/2;d.position=l.scale(h),d.rotation=o}let r=uge;this.viewport=new go(.02,.03,r,r),this.camera.viewport=this.viewport,this.syncWith(t)}syncWith(e){this.camera.alpha=e.alpha,this.camera.beta=e.beta}render(){let e=this.engine.getRenderWidth(),t=this.engine.getRenderHeight(),i=this.viewport.x*e,r=this.viewport.y*t,s=this.viewport.width*e,a=this.viewport.height*t;this.engine.enableScissor(i,r,s,a),this.engine.clear(null,!1,!0,!0),this.scene.render(),this.engine.disableScissor()}dispose(){this.scene.dispose()}}});var mw={};Be(mw,{boundingBoxRendererVertexShaderWGSL:()=>Tge});var uw,Kq,Tge,pw=I(()=>{k();uw="boundingBoxRendererVertexShader",Kq=`attribute position: vec3f;uniform world: mat4x4f;uniform viewProjection: mat4x4f; +}`;A.ShadersStore[hw]||(A.ShadersStore[hw]=kq);gge={name:hw,shader:kq}});var bl,zq=I(()=>{ke();Wi();Yn();WC();Kb();Ht();VL();bl=class n extends wc{set blurHorizontalSize(e){this._horizontalBlurPostprocess.kernel=e,this._options.blurHorizontalSize=e}set blurVerticalSize(e){this._verticalBlurPostprocess.kernel=e,this._options.blurVerticalSize=e}get blurHorizontalSize(){return this._horizontalBlurPostprocess.kernel}get blurVerticalSize(){return this._verticalBlurPostprocess.kernel}get stencilReference(){return this._instanceGlowingMeshStencilReference<<8-this.numStencilBits}constructor(e,t,i,r=!1){super(e,t,i!==void 0?!!i.forceGLSL:!1),this.innerGlow=!0,this.outerGlow=!0,this._instanceGlowingMeshStencilReference=n.GlowingMeshStencilReference++,this._meshes={},this._excludedMeshes={},this._mainObjectRendererRenderPassId=-1,this.numStencilBits=8,this.neutralColor=n.NeutralColor,this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,forceGLSL:!1,mainTextureType:0,mainTextureFormat:5,isStroke:!1,...i},this._init(this._options),this._shouldRender=!1,r&&this._createTextureAndPostProcesses()}getClassName(){return"HighlightLayer"}async _importShadersAsync(){this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Nq(),Oq)),Promise.resolve().then(()=>(Bq(),Fq)),Promise.resolve().then(()=>(zb(),Hb))]):await Promise.all([Promise.resolve().then(()=>(Gq(),Vq)),Promise.resolve().then(()=>(Hq(),Wq)),Promise.resolve().then(()=>(Yb(),Xb))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[D.PositionKind],["offset"],["textureSampler"],this._options.isStroke?`#define STROKE +`:void 0,void 0,void 0,void 0,void 0,this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0})}_createTextureAndPostProcesses(){this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new nc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new wo("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new wo("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new us("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new us("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize/2),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess])}needStencil(){return!0}isReady(e,t){let i=e.getMaterial(),r=e.getRenderingMesh();if(!i||!r||!this._meshes)return!1;let s=null,a=this._meshes[r.uniqueId];return a&&a.glowEmissiveOnly&&i&&(s=i.emissiveTexture),super._isSubMeshReady(e,t,s)}_canRenderMesh(e,t){return!0}_internalCompose(e,t){this.bindTexturesForCompose(e);let i=this._engine;i.cacheStencilState(),i.setStencilOperationPass(7681),i.setStencilOperationFail(7680),i.setStencilOperationDepthFail(7680),i.setStencilMask(0),i.setStencilBuffer(!0),i.setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits),i.setStencilFunctionMask(255-((1<<8-this.numStencilBits)-1)),this.outerGlow&&t===0&&(e.setFloat("offset",0),i.setStencilFunction(517),i.drawElementsType(Se.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Se.TriangleFillMode,0,6)),i.restoreStencilState()}_setEmissiveTextureAndColor(e,t,i){let r=this._meshes[e.uniqueId];r?this._emissiveTextureAndColor.color.set(r.color.r,r.color.g,r.color.b,1):this._emissiveTextureAndColor.color.set(this.neutralColor.r,this.neutralColor.g,this.neutralColor.b,this.neutralColor.a),r&&r.glowEmissiveOnly&&i?(this._emissiveTextureAndColor.texture=i.emissiveTexture,this._emissiveTextureAndColor.color.set(1,1,1,1)):this._emissiveTextureAndColor.texture=null}shouldRender(){return!!(this._meshes&&super.shouldRender())}_shouldRenderMesh(e){return this._excludedMeshes&&this._excludedMeshes[e.uniqueId]?!1:super.hasMesh(e)}_addCustomEffectDefines(e){e.push("#define HIGHLIGHT")}addExcludedMesh(e){if(!this._excludedMeshes)return;if(!this._excludedMeshes[e.uniqueId]){let i={mesh:e,beforeBind:null,afterRender:null,stencilState:!1};i.beforeBind=e.onBeforeBindObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||(i.stencilState=r.getEngine().getStencilBuffer(),r.getEngine().setStencilBuffer(!1))}),i.afterRender=e.onAfterRenderObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||r.getEngine().setStencilBuffer(i.stencilState)}),this._excludedMeshes[e.uniqueId]=i}}removeExcludedMesh(e){if(!this._excludedMeshes)return;let t=this._excludedMeshes[e.uniqueId];t&&(t.beforeBind&&e.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&e.onAfterRenderObservable.remove(t.afterRender)),this._excludedMeshes[e.uniqueId]=null}hasMesh(e){return!this._meshes||!super.hasMesh(e)?!1:!!this._meshes[e.uniqueId]}addMesh(e,t,i=!1){if(!this._meshes)return;let r=this._meshes[e.uniqueId];r?r.color=t:(this._meshes[e.uniqueId]={mesh:e,color:t,observerHighlight:e.onBeforeBindObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&(this._excludedMeshes&&this._excludedMeshes[s.uniqueId]?this._defaultStencilReference(s):s.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits))}),observerDefault:e.onAfterRenderObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&this._defaultStencilReference(s)}),glowEmissiveOnly:i},e.onDisposeObservable.add(()=>{this._disposeMesh(e)})),this._shouldRender=!0}removeMesh(e){if(!this._meshes)return;let t=this._meshes[e.uniqueId];t&&(t.observerHighlight&&e.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&e.onAfterRenderObservable.remove(t.observerDefault),delete this._meshes[e.uniqueId]),this._shouldRender=!1;for(let i in this._meshes)if(this._meshes[i]){this._shouldRender=!0;break}}removeAllMeshes(){if(this._meshes){for(let e in this._meshes)if(Object.prototype.hasOwnProperty.call(this._meshes,e)){let t=this._meshes[e];t&&this.removeMesh(t.mesh)}}}_defaultStencilReference(e){e.getScene().getEngine().setStencilFunctionReference(n.NormalMeshStencilReference<<8-this.numStencilBits)}_disposeMesh(e){this.removeMesh(e),this.removeExcludedMesh(e)}dispose(){if(this._meshes){for(let e in this._meshes){let t=this._meshes[e];t&&t.mesh&&(t.observerHighlight&&t.mesh.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&t.mesh.onAfterRenderObservable.remove(t.observerDefault))}this._meshes=null}if(this._excludedMeshes){for(let e in this._excludedMeshes){let t=this._excludedMeshes[e];t&&(t.beforeBind&&t.mesh.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&t.mesh.onAfterRenderObservable.remove(t.afterRender))}this._excludedMeshes=null}super.dispose()}};bl.EffectName="HighlightLayer";bl.NeutralColor=new lt(0,0,0,0);bl.GlowingMeshStencilReference=2;bl.NormalMeshStencilReference=1});var jb,ua,Xq=I(()=>{Gt();Vt();hi();Bs();ke();Gr();Rf();rc();zC();GL();lw();Pt();Yi();Ht();zq();br();uo();Kb();ei.prototype.getHighlightLayerByName=function(n){var e;for(let t=0;t<((e=this.effectLayers)==null?void 0:e.length);t++)if(this.effectLayers[t].name===n&&this.effectLayers[t].getEffectName()===ua.EffectName)return this.effectLayers[t];return null};jb=class extends Ri{constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:wo.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,wo.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new wo(e,o,t,i,c):void 0,...c}),this.direction=t,this.kernel=i,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this.width,this._effectWrapper.textureHeight=this.height})}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(zb(),Hb)))):t.push(Promise.resolve().then(()=>(Yb(),Xb))),super._gatherImports(e,t)}},ua=class n extends Ys{static get NeutralColor(){return bl.NeutralColor}static set NeutralColor(e){bl.NeutralColor=e}get innerGlow(){return this._thinEffectLayer.innerGlow}set innerGlow(e){this._thinEffectLayer.innerGlow=e}get outerGlow(){return this._thinEffectLayer.outerGlow}set outerGlow(e){this._thinEffectLayer.outerGlow=e}set blurHorizontalSize(e){this._thinEffectLayer.blurHorizontalSize=e}set blurVerticalSize(e){this._thinEffectLayer.blurVerticalSize=e}get blurHorizontalSize(){return this._thinEffectLayer.blurHorizontalSize}get blurVerticalSize(){return this._thinEffectLayer.blurVerticalSize}get numStencilBits(){return this._thinEffectLayer.numStencilBits}set numStencilBits(e){this._thinEffectLayer.numStencilBits=e}get stencilReference(){return this._thinEffectLayer.stencilReference}constructor(e,t,i){super(e,t,i!==void 0?!!i.forceGLSL:!1,new bl(e,t,i)),this.onBeforeBlurObservable=new ie,this.onAfterBlurObservable=new ie,this._engine.isStencilEnable||ee.Warn("Rendering the Highlight Layer requires the stencil to be active on the canvas. var engine = new Engine(canvas, antialias, { stencil: true }"),this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,forceGLSL:!1,isStroke:!1,generateStencilBuffer:!1,...i},this._init(this._options),this._shouldRender=!1}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._thinEffectLayer._createMergeEffect()}_createTextureAndPostProcesses(){let e=this._mainTextureDesiredSize.width*this._options.blurTextureSizeRatio,t=this._mainTextureDesiredSize.height*this._options.blurTextureSizeRatio;e=this._engine.needPOTTextures?An(e,this._maxSize):e,t=this._engine.needPOTTextures?An(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new kr("HighlightLayerBlurRTT",{width:e,height:t},this._scene,!1,!0,i),this._blurTexture.wrapU=ge.CLAMP_ADDRESSMODE,this._blurTexture.wrapV=ge.CLAMP_ADDRESSMODE,this._blurTexture.anisotropicFilteringLevel=16,this._blurTexture.updateSamplingMode(ge.TRILINEAR_SAMPLINGMODE),this._blurTexture.renderParticles=!1,this._blurTexture.ignoreCameraViewport=!0,this._textures=[this._blurTexture],this._thinEffectLayer.bindTexturesForCompose=r=>{r.setTexture("textureSampler",this._blurTexture)},this._thinEffectLayer._createTextureAndPostProcesses(),this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new ch("HighlightLayerPPP",{size:this._options.blurTextureSizeRatio,samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._downSamplePostprocess.externalTextureSamplerBinding=!0,this._downSamplePostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._horizontalBlurPostprocess=new jb("HighlightLayerHBP",new Fe(1,0),this._options.blurHorizontalSize,{samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[1]}),this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._verticalBlurPostprocess=new jb("HighlightLayerVBP",new Fe(0,1),this._options.blurVerticalSize,{samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[2]}),this._verticalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Wa("HighlightLayerHBP",new Fe(1,0),this._options.blurHorizontalSize/2,{size:{width:e,height:t},samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i,effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._horizontalBlurPostprocess.width=e,this._horizontalBlurPostprocess.height=t,this._horizontalBlurPostprocess.externalTextureSamplerBinding=!0,this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._verticalBlurPostprocess=new Wa("HighlightLayerVBP",new Fe(0,1),this._options.blurVerticalSize/2,{size:{width:e,height:t},samplingMode:ge.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i}),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess]),this._mainTexture.onAfterUnbindObservable.add(()=>{this.onBeforeBlurObservable.notifyObservers(this);let r=this._blurTexture.renderTarget;r&&(this._scene.postProcessManager.directRender(this._postProcesses,r,!0),this._engine.unBindFramebuffer(r,!0)),this.onAfterBlurObservable.notifyObservers(this)}),this._postProcesses.map(r=>{r.autoClear=!1}),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height}needStencil(){return this._thinEffectLayer.needStencil()}isReady(e,t){return this._thinEffectLayer.isReady(e,t)}_internalRender(e,t){this._thinEffectLayer._internalCompose(e,t)}shouldRender(){return this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._thinEffectLayer._canRenderMesh(e,t)}_addCustomEffectDefines(e){this._thinEffectLayer._addCustomEffectDefines(e)}_setEmissiveTextureAndColor(e,t,i){this._thinEffectLayer._setEmissiveTextureAndColor(e,t,i)}addExcludedMesh(e){this._thinEffectLayer.addExcludedMesh(e)}removeExcludedMesh(e){this._thinEffectLayer.removeExcludedMesh(e)}hasMesh(e){return this._thinEffectLayer.hasMesh(e)}addMesh(e,t,i=!1){this._thinEffectLayer.addMesh(e,t,i)}removeMesh(e){this._thinEffectLayer.removeMesh(e)}removeAllMeshes(){this._thinEffectLayer.removeAllMeshes()}_disposeMesh(e){this._thinEffectLayer._disposeMesh(e)}getClassName(){return"HighlightLayer"}serialize(){let e=it.Serialize(this);e.customType="BABYLON.HighlightLayer",e.meshes=[];let t=this._thinEffectLayer._meshes;if(t)for(let r in t){let s=t[r];s&&e.meshes.push({glowEmissiveOnly:s.glowEmissiveOnly,color:s.color.asArray(),meshId:s.mesh.id})}e.excludedMeshes=[];let i=this._thinEffectLayer._excludedMeshes;if(i)for(let r in i){let s=i[r];s&&e.excludedMeshes.push(s.mesh.id)}return e}static Parse(e,t,i){let r=it.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{_l();Rm();lw();Ni();aO();cb(tt.NAME_EFFECTLAYER,(n,e,t,i)=>{if(n.effectLayers){t.effectLayers||(t.effectLayers=[]);for(let r=0;r0){this._previousStencilState=this._engine.getStencilBuffer();for(let r of i)if(r.shouldRender()&&(!r.camera||r.camera.cameraRigMode===mt.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==mt.RIG_MODE_NONE&&r.camera._rigCameras.indexOf(e)>-1)){this._renderEffects=!0,this._needStencil=this._needStencil||r.needStencil();let s=r._mainTexture;s._shouldRender()&&(this.scene.incrementRenderId(),s.render(!1,!1),t=!0)}this.scene.incrementRenderId()}return t}_setStencil(){this._needStencil&&this._engine.setStencilBuffer(!0)}_setStencilBack(){this._needStencil&&this._engine.setStencilBuffer(this._previousStencilState)}_draw(e){if(this._renderEffects){this._engine.setDepthBuffer(!1);let t=this.scene.effectLayers;for(let i=0;i{let e=n._getComponent(tt.NAME_EFFECTLAYER);e||(e=new uw(n),n._addComponent(e))}});function Kq(n,e,t=()=>!0,i=r=>[r]){let r=new ua("ai3d-pick-highlight",n),s=new pe(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let f of a)f.isDisposed()||(f.renderOutline=!1,f.outlineWidth=0);a=[]}function l(f){a=f.filter(d=>!d.isDisposed());for(let d of a)r.addMesh(d,s),d.renderOutline=!0,d.outlineColor=s,d.outlineWidth=.045}let c=n.onPointerObservable.add(f=>{var _;if(f.type!==st.POINTERDOWN)return;let d=f.event,h=d.clientX,u=d.clientY,m=f.pickInfo;if(m!=null&&m.hit&&m.pickedMesh){if(t()){let p=i(m.pickedMesh).filter(v=>!v.isDisposed());a.length===p.length&&a.every((v,x)=>v===p[x])||(o(),l(p))}else o();e({mesh:m.pickedMesh,pickedPoint:(_=m.pickedPoint)!=null?_:null,screenX:h,screenY:u})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:u})});return()=>{o(),r.dispose(),n.onPointerObservable.remove(c)}}var jq=I(()=>{"use strict";Ao();Ht();Xq();Yq()});function Rge(n,e,t){let i=pe.FromHexString(e),r=new We(n,t);return r.emissiveColor=i,r.diffuseColor=pe.Black(),r.specularColor=pe.Black(),r.backFaceCulling=!1,r}function bge(n){let e=new We("gizmo-origin-mat",n);return e.emissiveColor=new pe(.72,.78,.86),e.diffuseColor=pe.Black(),e.specularColor=pe.Black(),e}var vge,qb,Ege,pw,Sge,Tge,mw,Age,xge,Zb,qq=I(()=>{"use strict";Bs();Hx();zx();ke();Ht();_m();nL();Dc();vge=.32,qb=1.05,Ege=.075,pw=.28,Sge=.22,Tge=.16,mw=(qb+pw)*.42,Age=new b(mw,mw,mw),xge=[{name:"x",color:"#e74c3c",rot:new b(0,0,-Math.PI/2),dir:new b(1,0,0)},{name:"y",color:"#2ecc71",rot:new b(0,0,0),dir:new b(0,1,0)},{name:"z",color:"#3498db",rot:new b(Math.PI/2,0,0),dir:new b(0,0,1)}];Zb=class{constructor(e,t){this.engine=e,this.scene=new ei(e),this.scene.clearColor=new lt(0,0,0,0),this.scene.autoClear=!1,this.camera=new gi("gizmo-cam",0,0,4.1,Age,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new fa("gizmo-light",new b(0,1,.5),this.scene);let i=hs.CreateSphere("gizmo-origin",{diameter:Tge,segments:16},this.scene);i.material=bge(this.scene);for(let{name:s,color:a,rot:o,dir:l}of xge){let c=Rge(`gizmo-${s}-mat`,a,this.scene),f=hs.CreateCylinder(`gizmo-${s}-shaft`,{height:qb,diameter:Ege,tessellation:8},this.scene);f.material=c,f.position=l.scale(qb/2),f.rotation=o;let d=hs.CreateCylinder(`gizmo-${s}-head`,{height:pw,diameterTop:0,diameterBottom:Sge,tessellation:8},this.scene);d.material=c;let h=qb+pw/2;d.position=l.scale(h),d.rotation=o}let r=vge;this.viewport=new go(.02,.03,r,r),this.camera.viewport=this.viewport,this.syncWith(t)}syncWith(e){this.camera.alpha=e.alpha,this.camera.beta=e.beta}render(){let e=this.engine.getRenderWidth(),t=this.engine.getRenderHeight(),i=this.viewport.x*e,r=this.viewport.y*t,s=this.viewport.width*e,a=this.viewport.height*t;this.engine.enableScissor(i,r,s,a),this.engine.clear(null,!1,!0,!0),this.scene.render(),this.engine.disableScissor()}dispose(){this.scene.dispose()}}});var gw={};Be(gw,{boundingBoxRendererVertexShaderWGSL:()=>Mge});var _w,Zq,Mge,vw=I(()=>{k();_w="boundingBoxRendererVertexShader",Zq=`attribute position: vec3f;uniform world: mat4x4f;uniform viewProjection: mat4x4f; #ifdef INSTANCES attribute world0 : vec4;attribute world1 : vec4;attribute world2 : vec4;attribute world3 : vec4; #endif @@ -23765,18 +23765,18 @@ var worldPos: vec4f=uniforms.world* vec4f(vertexInputs.position,1.0); vertexOutputs.position=uniforms.viewProjection*worldPos; #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStoreWGSL[uw]||(A.ShadersStoreWGSL[uw]=Kq);Tge={name:uw,shader:Kq}});var gw={};Be(gw,{boundingBoxRendererPixelShaderWGSL:()=>Age});var _w,jq,Age,vw=I(()=>{k();_w="boundingBoxRendererPixelShader",jq=`uniform color: vec4f; +`;A.ShadersStoreWGSL[_w]||(A.ShadersStoreWGSL[_w]=Zq);Mge={name:_w,shader:Zq}});var Sw={};Be(Sw,{boundingBoxRendererPixelShaderWGSL:()=>Ige});var Ew,Qq,Ige,Tw=I(()=>{k();Ew="boundingBoxRendererPixelShader",Qq=`uniform color: vec4f; #define CUSTOM_FRAGMENT_DEFINITIONS @fragment fn main(input: FragmentInputs)->FragmentOutputs { #define CUSTOM_FRAGMENT_MAIN_BEGIN fragmentOutputs.color=uniforms.color; #define CUSTOM_FRAGMENT_MAIN_END -}`;A.ShadersStoreWGSL[_w]||(A.ShadersStoreWGSL[_w]=jq);Age={name:_w,shader:jq}});var qq,xge,Zq=I(()=>{k();qq="boundingBoxRendererVertexDeclaration",xge=`uniform mat4 world;uniform mat4 viewProjection; +}`;A.ShadersStoreWGSL[Ew]||(A.ShadersStoreWGSL[Ew]=Qq);Ige={name:Ew,shader:Qq}});var $q,yge,Jq=I(()=>{k();$q="boundingBoxRendererVertexDeclaration",yge=`uniform mat4 world;uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif -`;A.IncludesShadersStore[qq]||(A.IncludesShadersStore[qq]=xge)});var Qq,Rge,Ew=I(()=>{k();Qq="boundingBoxRendererUboDeclaration",Rge=`#ifdef WEBGL2 +`;A.IncludesShadersStore[$q]||(A.IncludesShadersStore[$q]=yge)});var eZ,Cge,Aw=I(()=>{k();eZ="boundingBoxRendererUboDeclaration",Cge=`#ifdef WEBGL2 uniform vec4 color;uniform mat4 world;uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; @@ -23784,7 +23784,7 @@ uniform mat4 viewProjectionR; #else layout(std140,column_major) uniform;uniform BoundingBoxRenderer {vec4 color;mat4 world;mat4 viewProjection;mat4 viewProjectionR;}; #endif -`;A.IncludesShadersStore[Qq]||(A.IncludesShadersStore[Qq]=Rge)});var Tw={};Be(Tw,{boundingBoxRendererVertexShader:()=>bge});var Sw,$q,bge,Aw=I(()=>{k();Zq();Ew();Sw="boundingBoxRendererVertexShader",$q=`attribute vec3 position; +`;A.IncludesShadersStore[eZ]||(A.IncludesShadersStore[eZ]=Cge)});var Rw={};Be(Rw,{boundingBoxRendererVertexShader:()=>Pge});var xw,tZ,Pge,bw=I(()=>{k();Jq();Aw();xw="boundingBoxRendererVertexShader",tZ=`attribute vec3 position; #include<__decl__boundingBoxRendererVertex> #ifdef INSTANCES attribute vec4 world0;attribute vec4 world1;attribute vec4 world2;attribute vec4 world3; @@ -23804,18 +23804,18 @@ gl_Position=viewProjection*worldPos; #endif #define CUSTOM_VERTEX_MAIN_END } -`;A.ShadersStore[Sw]||(A.ShadersStore[Sw]=$q);bge={name:Sw,shader:$q}});var Jq,Mge,eZ=I(()=>{k();Jq="boundingBoxRendererFragmentDeclaration",Mge=`uniform vec4 color; -`;A.IncludesShadersStore[Jq]||(A.IncludesShadersStore[Jq]=Mge)});var Rw={};Be(Rw,{boundingBoxRendererPixelShader:()=>Ige});var xw,tZ,Ige,bw=I(()=>{k();eZ();Ew();xw="boundingBoxRendererPixelShader",tZ=`#include<__decl__boundingBoxRendererFragment> +`;A.ShadersStore[xw]||(A.ShadersStore[xw]=tZ);Pge={name:xw,shader:tZ}});var iZ,Dge,rZ=I(()=>{k();iZ="boundingBoxRendererFragmentDeclaration",Dge=`uniform vec4 color; +`;A.IncludesShadersStore[iZ]||(A.IncludesShadersStore[iZ]=Dge)});var Iw={};Be(Iw,{boundingBoxRendererPixelShader:()=>Lge});var Mw,nZ,Lge,yw=I(()=>{k();rZ();Aw();Mw="boundingBoxRendererPixelShader",nZ=`#include<__decl__boundingBoxRendererFragment> #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) { #define CUSTOM_FRAGMENT_MAIN_BEGIN gl_FragColor=color; #define CUSTOM_FRAGMENT_MAIN_END -}`;A.ShadersStore[xw]||(A.ShadersStore[xw]=tZ);Ige={name:xw,shader:tZ}});var nZ,iZ,qb,yge,Cge,rZ,Mw,sZ=I(()=>{Bs();Wi();Nm();ke();So();Rm();QP();Yn();OD();Ht();hi();oh();Af();RD();sl();Pt();Object.defineProperty(ei.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ei.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new Mw(this)),this._boundingBoxRenderer};Object.defineProperty(Ar.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});nZ=q.Identity(),iZ=new q,qb=new b,yge=new b,Cge=nZ.asArray(),rZ=new If(qb,qb),Mw=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=tt.NAME_BOUNDINGBOXRENDERER,this.frontColor=new pe(1,1,1),this.backColor=new pe(.1,.1,.1),this.showBackLines=!0,this.onBeforeBoxRenderingObservable=new ie,this.onAfterBoxRenderingObservable=new ie,this.onResourcesReadyObservable=new ie,this.enabled=!0,this._shaderLanguage=0,this.renderList=new Vi(32),this._vertexBuffers={},this._fillIndexBuffer=null,this._fillIndexData=null,this._matrixBuffer=null,this._matrices=null,this._useInstances=!1,this._drawWrapperFront=null,this._drawWrapperBack=null,this.scene=e,this.scene.getEngine().isWebGPU&&(this._shaderLanguage=1),e._addComponent(this),this._uniformBufferFront=new mr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new mr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererBack",!0),this._buildUniformLayout(this._uniformBufferBack)}_buildUniformLayout(e){e.addUniform("color",4),e.addUniform("world",16),e.addUniform("viewProjection",16),e.addUniform("viewProjectionR",16),e.create()}register(){this.scene._beforeEvaluateActiveMeshStage.registerStep(tt.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER,this,this.reset),this.scene._preActiveMeshStage.registerStep(tt.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER,this,this._preActiveMesh),this.scene._evaluateSubMeshStage.registerStep(tt.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER,this,this._evaluateSubMesh),this.scene._afterRenderingGroupDrawStage.registerStep(tt.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER,this,this.render)}async whenReadyAsync(e=16,t=3e4){return this._prepareResources(),await new Promise(i=>{nl(()=>this._colorShader.isReady(),()=>{i()},(r,s)=>{s?(ee.Error("BoundingBoxRenderer: Timeout while waiting for the renderer to be ready."),r&&ee.Error(r)):(ee.Error("BoundingBoxRenderer: An unexpected error occurred while waiting for the renderer to be ready."),r&&(ee.Error(r),r.stack&&ee.Error(r.stack)))},e,t)})}_evaluateSubMesh(e,t){if(e.showSubMeshesBoundingBox){let i=t.getBoundingInfo();i!=null&&(i.boundingBox._tag=e.renderingGroupId,this.renderList.push(i.boundingBox))}}_preActiveMesh(e){if(e.showBoundingBox||this.scene.forceShowBoundingBoxes){let t=e.getBoundingInfo();t.boundingBox._tag=e.renderingGroupId,this.renderList.push(t.boundingBox)}}_prepareResources(){if(this._colorShader)return;this._colorShader=new Lo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[D.PositionKind,"world0","world1","world2","world3"],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(pw(),mw)),Promise.resolve().then(()=>(vw(),gw))]):await Promise.all([Promise.resolve().then(()=>(Aw(),Tw)),Promise.resolve().then(()=>(bw(),Rw))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Lo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[D.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(pw(),mw)),Promise.resolve().then(()=>(vw(),gw))]):await Promise.all([Promise.resolve().then(()=>(Aw(),Tw)),Promise.resolve().then(()=>(bw(),Rw))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=zx({size:1});this._vertexBuffers[D.PositionKind]=new D(e,t.positions,D.PositionKind,!1),this._createIndexBuffer(),this._fillIndexData=t.indices,this.onResourcesReadyObservable.notifyObservers(this)}_createIndexBuffer(){let e=this.scene.getEngine();this._indexBuffer=e.createIndexBuffer([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,7,1,6,2,5,3,4])}rebuild(){let e=this._vertexBuffers[D.PositionKind];e&&e._rebuild(),this._createIndexBuffer(),this._matrixBuffer&&this._matrixBuffer._rebuild()}reset(){this.renderList.reset()}render(e){var r,s;if(this.renderList.length===0||!this.enabled)return;if(this._useInstances){this._renderInstanced(e);return}if(this._prepareResources(),!this._colorShader.isReady())return;let t=this.scene.getEngine();t.setDepthWrite(!1);let i=this.scene.getTransformMatrix();for(let a=0;ar*2)&&(i=new Float32Array(r),this._matrices=i),this.onBeforeBoxRenderingObservable.notifyObservers(rZ);let s=0,a=this.scene.floatingOriginOffset;for(let g=0;g{"use strict";ke();CL();Ht();Ao();sZ();Ds();Cv();Ny();ld=class ld{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new jr(b.Zero(),b.Zero(),1);this.lastOccluded=!1;this.selected=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.meshes=r,this.parts=Oge(i,r,s);for(let a of this.parts)for(let o of a.meshes)this.meshToPart.set(o.uniqueId,a);this.setBoundingBoxColor(ld.BBOX_VISIBLE)}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return Lge(e.node)||e.meshes.every(t=>t.isDisposed())}captureTransform(e){var t,i;return{parent:e.node.parent,position:e.node.position.clone(),rotation:e.node.rotation.clone(),rotationQuaternion:(i=(t=e.node.rotationQuaternion)==null?void 0:t.clone())!=null?i:null,scaling:e.node.scaling.clone()}}restoreTransform(e,t){var i,r;e.node.setParent(t.parent),e.node.position.copyFrom(t.position),e.node.rotation.copyFrom(t.rotation),e.node.rotationQuaternion=(r=(i=t.rotationQuaternion)==null?void 0:i.clone())!=null?r:null,e.node.scaling.copyFrom(t.scaling),e.node.computeWorldMatrix(!0);for(let s of e.meshes)s.computeWorldMatrix(!0)}subscribe(e){let t=this.scene.getEngine().getRenderingCanvas();t==null||t.classList.add("ai3d-disassembly-active");let i=this.scene.onPointerObservable.add(s=>{var o,l,c,f;let a=s.event;if(a.isPrimary!==!1){if(s.type===st.POINTERDOWN){if(a.button!==0)return;let d=(l=(o=s.pickInfo)==null?void 0:o.pickedMesh)!=null?l:null;if(this.partPointerActive=!!this.resolvePart(d),this.partPointerActive){a.preventDefault(),a.stopPropagation(),this.activePointerId=a.pointerId;try{(c=t==null?void 0:t.setPointerCapture)==null||c.call(t,a.pointerId)}catch(h){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===st.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===st.POINTERUP){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;if(this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerUp(a),this.activePointerId!==null&&((f=t==null?void 0:t.hasPointerCapture)!=null&&f.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(d){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}}}),r=this.scene.onAfterRenderCameraObservable.add(s=>{s===this.camera&&e.onRender()});return()=>{var s;if(this.scene.onPointerObservable.remove(i),this.scene.onAfterRenderCameraObservable.remove(r),t==null||t.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.activePointerId!==null&&((s=t==null?void 0:t.hasPointerCapture)!=null&&s.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(a){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(t,!0)}}resolvePart(e){var t;return Pge(e)?this.parts.includes(e)?e:null:!e||typeof e!="object"?null:(t=this.meshToPart.get(e.uniqueId))!=null?t:null}setSelected(e){if(this.selected)for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!1);if(this.selected=e,this.lastOccluded=!1,this.setBoundingBoxColor(ld.BBOX_VISIBLE),this.selected&&!this.isDisposed(this.selected))for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!0)}beginDrag(e,t){var o,l,c;let i=this.getPointOnDragPlane(e,t);if(!i)return null;t.preventDefault(),t.stopPropagation(),(o=this.scene.getEngine().getRenderingCanvas())==null||o.classList.add("ai3d-disassembly-dragging"),e.node.setParent(null),e.node.computeWorldMatrix(!0);for(let f of e.meshes)f.computeWorldMatrix(!0);t.shiftKey&&!e.node.rotationQuaternion&&(e.node.rotationQuaternion=Xe.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=Iw(e),s=Ku(Qt(i),Qt(this.camera.getForwardRay().direction));if(!s)return null;let a={part:e,mode:t.shiftKey?"rotate":"move",plane:s,startPoint:i,startPosition:e.node.position.clone(),startRotationQuaternion:(c=(l=e.node.rotationQuaternion)==null?void 0:l.clone())!=null?c:null,pivot:r,pointerX:t.clientX,pointerY:t.clientY};return this.camera.detachControl(),a}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=i.subtract(e.startPoint);e.part.node.position=e.startPosition.add(r),e.part.node.computeWorldMatrix(!0);for(let s of e.part.meshes)s.computeWorldMatrix(!0)}endDrag(e){var t;(t=this.scene.getEngine().getRenderingCanvas())==null||t.classList.remove("ai3d-disassembly-dragging"),this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}updateSelectionOcclusion(e){let t=Iw(e),i=this.camera.position,r=df(Qt(i),Qt(t));if(!r)return;let s=this.occlusionDirection;s.set(r.direction.x,r.direction.y,r.direction.z),this.occlusionRay.origin=i,this.occlusionRay.direction=s,this.occlusionRay.length=r.distance;let a=this.scene.pickWithRay(this.occlusionRay),o=!!(a!=null&&a.hit)&&ff(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.setBoundingBoxColor(o?ld.BBOX_OCCLUDED:ld.BBOX_VISIBLE))}setBoundingBoxColor(e){var i,r;let t=(r=(i=this.scene).getBoundingBoxRenderer)==null?void 0:r.call(i);t&&(t.frontColor=e,t.backColor=e)}updateRotation(e,t){if(!e.startRotationQuaternion)return;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=PT({startPosition:Qt(e.startPosition),pivot:Qt(e.pivot),startRotationQuaternion:CT(e.startRotationQuaternion),yawAxis:Qt(this.camera.getDirection(b.Up()).normalize()),pitchAxis:Qt(this.camera.getDirection(b.Right()).normalize()),deltaX:i,deltaY:r,sensitivity:.01});if(s){e.part.node.position=new b(s.position.x,s.position.y,s.position.z),e.part.node.rotationQuaternion=new Xe(s.rotationQuaternion.x,s.rotationQuaternion.y,s.rotationQuaternion.z,s.rotationQuaternion.w),e.part.node.rotation.set(0,0,0),e.part.node.computeWorldMatrix(!0);for(let a of e.part.meshes)a.computeWorldMatrix(!0)}}getPointOnDragPlane(e,t){var s;let i=Iw(e),r=Ku(Qt(i),Qt(this.camera.getForwardRay().direction));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:i}getRayPlanePoint(e,t){let i=this.scene.getEngine().getRenderingCanvas();if(!i)return null;let r=i.getBoundingClientRect(),s=e.clientX-r.left,a=e.clientY-r.top,o=this.scene.createPickingRay(s,a,q.Identity(),this.camera),l=yT({origin:Qt(o.origin),direction:Qt(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};ld.BBOX_VISIBLE=new pe(.25,.7,1),ld.BBOX_OCCLUDED=new pe(.1,.25,.4);yw=ld});var dZ={};Be(dZ,{BabylonModelPreview:()=>$b,createBabylonModelPreview:()=>Hge});function Bge(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function Cw(n){return n.getClassName()==="GaussianSplattingMesh"}function Uge(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function cZ(n){return n instanceof Yt}function fZ(n){let e=n;return typeof e.isDisposed=="function"?e.isDisposed():!1}function Qb(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function Pv(n){return new b(n.x,n.y,n.z)}function Vge(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function Gge(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}function kge(n){var t,i;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return e==="jpg"||e==="jpeg"?"image/jpeg":e==="png"?"image/png":e==="bmp"?"image/bmp":e==="tga"?"image/x-tga":e==="webp"?"image/webp":`image/${e}`}function Wge(n,e,t){let i=Cs(e),r=i.replace(/\.[^.]+$/,""),s=tn(t),a=[ss(n,e),ss(n,i)];if(s)for(let o of lZ)a.push(ss(n,`${s}.${o}`));for(let o of lZ){let l=`${r}.${o}`;l!==i&&a.push(ss(n,l))}return a}function Hge(n){return new $b(n)}var Zb,lZ,Nge,wge,Fge,ma,$b,hZ=I(()=>{"use strict";YP();Bs();kx();Wx();eH();tH();_D();ke();Ht();Ci();yf();tL();Dc();GX();CL();ib();QY();sD();_p();Mv();Mv();YN();KN();mq();Xq();RT();sa();Ps();Yq();oZ();Cv();il();LT();Cy();tg();Ds();UT();Ly();Zb=null,lZ=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Nge=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,wge=.242,Fge=320;ma=class ma{constructor(e){this.rootMesh=null;this.loadedMeshes=[];this.loadedTransformNodes=[];this.cachedRenderableMeshes=null;this.cachedRenderableRoot=null;this.loadedExt="";this.rendering=!1;this.contextLost=!1;this.viewportVisible=!0;this.viewportObserver=null;this.cleanupPicking=null;this.configLights=[];this.shadowGenerator=null;this.groundMesh=null;this.gridMesh=null;this.axisMeshes=[];this.autoRotateBehavior=null;this.wireframeEnabled=!1;this.gizmo=null;this.gizmoEnabled=!1;this.disassembly=null;this.focusSelectionEnabled=!1;this.focusedNode=null;this.originalMeshVisibility=new Map;this.bboxMesh=null;this.bboxEnabled=!1;this.currentQuality="high";this.resourceWarnings=[];this.gltfComponentMetadata=new Map;this.animPlaying=!1;this.initialCamera={alpha:Math.PI/4,beta:Math.PI/3,radius:5,target:b.Zero()};this.focusWorldPointFrame=0;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},!this.measurementActive||(this.pendingPoint&&this.updatePreviewLine(),this.measurementMarkers.length===0))return;let t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top,a=this.scene.pick(r,s,l=>this.measurementMarkers.includes(l)),o=a.hit?this.measurementMarkers.indexOf(a.pickedMesh):-1;if(o!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&o{e.preventDefault(),e.stopPropagation()};this.handleViewportIntersection=e=>{let t=e.some(i=>i.isIntersecting);t!==this.viewportVisible&&(this.viewportVisible=t,t?this.startRenderLoop():this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1))};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop()};this.engine=new Ve(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ei(this.engine),this.scene.clearColor=new lt(.12,.12,.14,1),this.camera=new gi("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=30,e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene.ambientColor=new pe(.3,.3,.3);let t=new fa("default-light",new b(0,1,.5),this.scene);t.intensity=1.2,this.resizeObs=new ResizeObserver(()=>this.engine.resize()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=aZ(this.scene,this.camera,this.rootMesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)),this.disassembly):null}isDisassemblyActive(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}async loadModel(e,t,i,r){var d,h,u;if(await bv(),this.rootMesh){let m=this.rootMesh;m.dispose(!0,!0);for(let _ of this.loadedMeshes)_!==m&&!_.isDisposed()&&_.dispose(!0,!0);this.rootMesh=null}this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),(d=this.disassembly)==null||d.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let s=t.toLowerCase().replace(".","");this.loadedExt=s,this.resourceWarnings=[],this.gltfComponentMetadata=hq(e,s);let a=this.scene,l=(h={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[s])!=null?h:`.${s}`,c=`data:application/octet-stream;base64,${Xd(e)}`;if(s==="obj"&&i&&r){Zb&&await Zb;let m;Zb=new Promise(_=>{m=_});try{let{OBJFileLoader:_}=await Promise.resolve().then(()=>(zN(),Jj)),p=_.prototype;typeof p._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let g=p._loadMTL,x=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),S=null;if(x&&i&&r){let T=Vge(x[1]),R=$_(r),M=ss(R,T);try{let y=await i(M),L=new TextDecoder().decode(new Uint8Array(y)).split(` -`);for(let O=0;OO!=="");if(!w.some(O=>/^\s*Kd\s+/i.test(O))){let O=w.findIndex(N=>/^\s*newmtl\s+/i.test(N));w.splice(O>=0?O+1:0,0,"Kd 0.80 0.80 0.80")}S=w.join(` -`)}catch(y){this.resourceWarnings.push(`OBJ material library not found: ${M}`)}}p._loadMTL=function(T,R,M){let y=S!=null?S:"";M(y)};let E=await mv(c,a,{meshNames:"",pluginExtension:l});this.loadedMeshes=E.meshes,this.loadedTransformNodes=E.transformNodes,E.meshes.length>0&&(this.rootMesh=E.meshes[0]),p._loadMTL=g}catch(_){throw console.error("[AI3D] OBJ load error:",_),_}finally{m(),Zb=null}}else if(s==="stl")this.rootMesh=rq(a,e),this.rootMesh&&(this.loadedMeshes=[this.rootMesh]);else if(s==="ply")this.rootMesh=sq(a,e),this.rootMesh&&(this.loadedMeshes=[this.rootMesh]);else{let m=await mv(c,a,{meshNames:"",pluginExtension:l});this.loadedMeshes=m.meshes,this.loadedTransformNodes=m.transformNodes,m.meshes.length>0&&(this.rootMesh=m.meshes[0])}if(!this.rootMesh)throw new Error("No mesh found in model file");for(let m of this.getRenderableMeshes(this.rootMesh))m.material&&(m.material.backFaceCulling=!1);let f=DT(this.getRenderableBounds(this.rootMesh));return this.camera.target=Pv(f.target),this.camera.radius=f.radius,this.camera.lowerRadiusLimit=f.lowerRadiusLimit,this.camera.upperRadiusLimit=f.upperRadiusLimit,this.camera.minZ=f.near,this.camera.maxZ=f.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.startRenderLoop(),this.engine.resize(),(u=this.cleanupPicking)==null||u.call(this),this.cleanupPicking=zq(this.scene,m=>{if(this.isDisassemblyActive())return;if(this.measurementActive&&m.pickedPoint){this.addMeasurementPoint(Pv(m.pickedPoint));return}let _=m.mesh&&this.rootMesh?yv(this.rootMesh,m.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,p={mesh:_,pickedPoint:m.pickedPoint,screenX:m.screenX,screenY:m.screenY};this._lastPickResult=p,this.focusSelectionEnabled&&_&&this.setFocusedNode(_),this._onPickCallbacks.forEach(g=>g(p))},()=>!this.focusSelectionEnabled,m=>this.resolvePickHighlightMeshes(m)),this.ensureDisassemblyController(),this.createModelSummary(this.rootMesh)}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.loadedExt==="stl"&&(e.stl.color&&this.setSTLColor(e.stl.color),e.stl.wireframe!==void 0&&this.setWireframe(e.stl.wireframe))}applyCameraConfig(e){var i;let t=this.engine.getRenderingCanvas();if(t){if(e.mode==="orthographic"){let r=this.camera.radius,s=t.clientWidth/t.clientHeight,a=(i=e.zoom)!=null?i:1,o=r/a;this.camera.mode=1,this.camera.orthoLeft=-o*s,this.camera.orthoRight=o*s,this.camera.orthoTop=o,this.camera.orthoBottom=-o}else this.camera.mode=0,e.fov&&(this.camera.fov=e.fov*Math.PI/180);if(e.position){let[r,s,a]=e.position;this.camera.setPosition(new b(r,s,a))}if(e.lookAt){let[r,s,a]=e.lookAt;this.camera.setTarget(new b(r,s,a))}e.near!==void 0&&(this.camera.minZ=e.near),e.far!==void 0&&(this.camera.maxZ=e.far)}}applyLightConfig(e){var i;for(let r of this.configLights)r.dispose();this.configLights=[],(i=this.shadowGenerator)==null||i.dispose(),this.shadowGenerator=null;let t=this.scene.getLightByName("default-light");t&&t.dispose();for(let r of e){let s=this.createLight(r);s&&this.configLights.push(s)}}createLight(e){var r,s;let t=e.color?pe.FromHexString(e.color):pe.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?pe.FromHexString(e.groundColor):new pe(.2,.2,.2),o=new fa("hemi",new b(0,1,0),this.scene);return o.diffuse=t,o.groundColor=a,o.intensity=i,o}case"directional":{let a=e.position?new b(...e.position).normalize():new b(-1,-2,-1).normalize(),o=new Ws("dir",a,this.scene);return o.diffuse=t,o.intensity=i,e.castShadow&&this.rootMesh&&this.setupShadow(o),o}case"point":{let a=e.position?new b(...e.position):new b(0,5,0),o=new Vf("point",a,this.scene);return o.diffuse=t,o.intensity=i,e.decay!==void 0&&(o.decay=e.decay),o}case"spot":{let a=e.position?new b(...e.position):new b(0,5,0),l=(e.target?new b(...e.target):b.Zero()).subtract(a).normalize(),c=e.angle?e.angle*Math.PI/180:Math.PI/4,f=(s=e.penumbra)!=null?s:.5,d=new Wr("spot",a,l,c,f,this.scene);return d.diffuse=t,d.intensity=i,e.decay!==void 0&&(d.decay=e.decay),e.castShadow&&this.rootMesh&&this.setupShadow(d),d}case"attachToCam":{let a=new Vf("cam-light",b.Zero(),this.scene);return a.diffuse=t,a.intensity=i,a.parent=this.camera,a}default:return null}}setupShadow(e){if(!this.rootMesh)return;if(!Bge(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Pi(1024,e);t.useBlurExponentialShadowMap=!0,t.blurKernel=32;for(let i of this.getRenderableMeshes(this.rootMesh))t.addShadowCaster(i),i.receiveShadows=!0;this.shadowGenerator=t}applySceneConfig(e){var t,i;if(e.background!==void 0){let r=lt.FromColor3(pe.FromHexString(e.background),e.transparent?0:1);this.scene.clearColor=r}e.autoRotate&&(this.autoRotateBehavior?this.autoRotateBehavior.idleRotationSpeed=(i=e.autoRotateSpeed)!=null?i:.5:(this.autoRotateBehavior=new ep,this.autoRotateBehavior.idleRotationSpeed=(t=e.autoRotateSpeed)!=null?t:.5,this.autoRotateBehavior.idleRotationWaitTime=1e3,this.autoRotateBehavior.idleRotationSpinupTime=500,this.camera.addBehavior(this.autoRotateBehavior))),e.groundShadow&&this.rootMesh&&this.createGround(),e.grid&&this.createGrid(),e.axis&&this.createAxis()}createGround(){if(!this.rootMesh||this.groundMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=ji(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=hs.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new We("ground-mat",this.scene);s.diffuseColor=new pe(.15,.15,.15),s.specularColor=pe.Black(),s.alpha=.5,this.groundMesh.material=s,this.groundMesh.receiveShadows=!0}createGrid(){if(!this.rootMesh||this.gridMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=ji(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=hs.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new We("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new pe(.3,.3,.3),s.emissiveColor=new pe(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=l2(e)*1.5,i=Pv(e.min),r=eg(e)*.01,s=[["x",pe.Red(),new b(t,0,0)],["y",pe.Green(),new b(0,t,0)],["z",pe.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=hs.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new We(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=pe.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=pe.FromHexString(e);for(let i of this.getRenderableMeshes(this.rootMesh))if(i.material&&i.material.name==="stl-mat"){let r=i.material;r.diffuseColor=t,r.emissiveColor=t.scale(.1)}}setWireframe(e){this.rootMesh&&(Cw(this.rootMesh)||(this.wireframeEnabled=e,this.scene.forceWireframe=e))}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}hasAnimations(){return this.scene.animationGroups.length>0}toggleAnimation(){let e=this.scene.animationGroups;if(e.length===0)return!1;this.animPlaying=!this.animPlaying;for(let t of e)this.animPlaying?t.play(!0):t.pause();return this.animPlaying}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.measurementActive||this.cancelPendingMeasurement(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){e&&(this.measurementActive=!1),this.cancelPendingMeasurement(!1);for(let t of this.measurementSegments)t.line.dispose(!1,!0),t.label.dispose(!1,!0);this.measurementSegments=[];for(let t of this.measurementMarkers)t.dispose(!1,!0);this.measurementMarkers=[]}setMeasurementScale(e){this.measurementScale=ng(e),this.updateMeasurementLabels()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=WT(e),this.updateMeasurementLabels()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootMesh)return null;let e=this.getRenderableBounds(this.rootMesh);return e?{x:e.max.x-e.min.x,y:e.max.y-e.min.y,z:e.max.z-e.min.z}:null}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return zT(this.createMeasurementRecords())}updateMeasurementLabels(){if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let t of this.measurementSegments){let i=qu(this.createMeasurementReading(t.start,t.end));t.label.dispose(!1,!0);let r=b.Center(t.start,t.end);t.label=this.createMeasurementLabelMesh(i,r,e)}}setAnimationSpeed(e){for(let t of this.scene.animationGroups)t.speedRatio=e}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.scene.render(),e.toDataURL("image/png")):null}toggleOrientationGizmo(){return this.gizmoEnabled=!this.gizmoEnabled,this.gizmoEnabled&&!this.gizmo&&(this.gizmo=new jb(this.engine,this.camera)),this.gizmoEnabled}isOrientationGizmoEnabled(){return this.gizmoEnabled}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i={low:2,medium:1.33,high:1}[this.currentQuality],r=gr()?1.5:1;return this.engine.setHardwareScalingLevel(i*r/t),t}getPerformanceSnapshot(){return{backend:"babylon",renderScale:Number((1/this.engine.getHardwareScalingLevel()).toFixed(2)),quality:this.currentQuality,meshCount:this.rootMesh?this.getRenderableMeshes(this.rootMesh).length:0}}toggleBoundingBox(){var e;if(this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled){if(!this.rootMesh)return this.bboxEnabled;this.bboxMesh&&this.bboxMesh.dispose();let t=this.getRenderableBounds(this.rootMesh),i=Pv(vr(t)),r=Pv(ji(t));this.bboxMesh=hs.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new We("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new pe(1,1,0),s.disableLighting=!0,s.alpha=.6,this.bboxMesh.material=s}else(e=this.bboxMesh)==null||e.dispose(),this.bboxMesh=null;return this.bboxEnabled}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1)),this.focusSelectionEnabled=e,this.focusSelectionEnabled?this._lastPickResult.mesh&&this.setFocusedNode(this._lastPickResult.mesh):this.clearFocusedMesh(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}toggleDisassembly(){let e=this.ensureDisassemblyController();if(!e)return!1;let t=!e.isEnabled();return t&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&uq(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&$N(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&$N(this.rootMesh,this.loadedMeshes),this.resetDisassembly(),this.clearFocusedMesh(),this.camera.mode=0,this.camera.alpha=this.initialCamera.alpha,this.camera.beta=this.initialCamera.beta,this.camera.radius=this.initialCamera.radius,this.camera.target=this.initialCamera.target.clone()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=Cw(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Cs(e)||r.rootName;return FT({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>cq(a,{isSplat:i})),materialNames:t.map(a=>{var o;return(o=a.material)==null?void 0:o.name})})}getModelEvidence(){if(!this.rootMesh)return null;let e=this.getRenderableMeshes(this.rootMesh),t=dq(e,this.loadedTransformNodes,this.gltfComponentMetadata);return kT({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>qN(i,this.gltfComponentMetadata),getMeshMaterialNames:i=>{var r;return[(r=i.material)==null?void 0:r.name]},resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var t;if(!this.rootMesh)return null;let e=(t=this.focusedNode)!=null?t:cZ(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||fZ(e)?null:ZN(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?BT(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Qt(e.pickedPoint):this.rootMesh&&cZ(e.mesh)?ZN(e.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata).center:null}focusWorldPoint(e){let t=new b(e.x,e.y,e.z),i=this.camera.target.clone(),r=performance.now();this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0);let s=a=>{let o=Math.min(1,Math.max(0,(a-r)/Fge)),l=o<.5?4*o*o*o:1-Math.pow(-2*o+2,3)/2;if(this.camera.target=b.Lerp(i,t,l),o<1&&!this.scene.isDisposed){this.focusWorldPointFrame=window.requestAnimationFrame(s);return}this.focusWorldPointFrame=0};this.focusWorldPointFrame=window.requestAnimationFrame(s)}getAnnotationCameraStateKey(){return GT([{value:this.camera.alpha,digits:3},{value:this.camera.beta,digits:3},{value:this.camera.radius,digits:3},{value:this.camera.target.x,digits:2},{value:this.camera.target.y,digits:2},{value:this.camera.target.z,digits:2}])}projectAnnotationWorldPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.scene.isDisposed)return!1;let r=this.engine.getRenderWidth(),s=this.engine.getRenderHeight();if(r===0||s===0||i.clientWidth===0||i.clientHeight===0)return!1;let a=ma.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,ma.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),ma.annotationProjection),_2(ma.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=df(Qt(this.camera.position),e);if(!t)return!1;let i=ma.annotationDirection,r=ma.annotationRay;i.set(t.direction.x,t.direction.y,t.direction.z),r.origin=this.camera.position,r.direction=i,r.length=t.distance;let s=this.scene.pickWithRay(r);return!!(s!=null&&s.hit)&&ff(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return VT({canvas:e,observeRender:t=>{let i=this.scene.onAfterRenderCameraObservable.add(r=>{r===this.camera&&t()});return{remove:()=>this.scene.onAfterRenderCameraObservable.remove(i)}},getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}getCanvas(){return this.engine.getRenderingCanvas()}getLastPickResult(){return this._lastPickResult}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}setRenderQuality(e,t=1){this.currentQuality=e;let i={low:2,medium:1.33,high:1},r=gr()?1.5:1,s=i[e]*r/Math.max(t,.25);if(this.engine.setHardwareScalingLevel(s),this.shadowGenerator){let a={low:0,medium:16,high:32};this.shadowGenerator.blurKernel=a[e],e==="low"?(this.shadowGenerator.useBlurExponentialShadowMap=!1,this.shadowGenerator.useExponentialShadowMap=!0):(this.shadowGenerator.useBlurExponentialShadowMap=!0,this.shadowGenerator.useExponentialShadowMap=!1)}}destroy(){var t,i,r,s,a,o,l,c;this.engine.stopRenderLoop(),this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0),this._onPickCallbacks=[],(t=this.cleanupPicking)==null||t.call(this),this.cleanupPicking=null,(i=this.gizmo)==null||i.dispose(),this.gizmo=null,(r=this.disassembly)==null||r.dispose(),this.disassembly=null,this.disposeMeasurementOverlays(!0),this.clearFocusedMesh(),this.originalMeshVisibility.clear(),(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,this.camera.detachControl();let e=this.engine.getRenderingCanvas();e==null||e.removeEventListener("wheel",this.preventCanvasWheelScroll),e==null||e.removeEventListener("pointermove",this.handlePointerMove),e==null||e.removeEventListener("webglcontextlost",this.handleContextLost),e==null||e.removeEventListener("webglcontextrestored",this.handleContextRestored),(a=this.viewportObserver)==null||a.disconnect(),this.viewportObserver=null,this.resizeObs.disconnect(),this.invalidateMeshCache(),this.rootMesh=null,this.loadedMeshes=[],this.loadedTransformNodes=[],this.autoRotateBehavior&&(this.camera.removeBehavior(this.autoRotateBehavior),this.autoRotateBehavior=null);for(let f of this.configLights)f.dispose();this.configLights=[],(o=this.shadowGenerator)==null||o.dispose(),this.shadowGenerator=null,(l=this.groundMesh)==null||l.dispose(),this.groundMesh=null,(c=this.gridMesh)==null||c.dispose(),this.gridMesh=null;for(let f of this.axisMeshes)f.dispose();this.axisMeshes=[],this.scene.dispose(),this.engine.dispose()}startRenderLoop(){this.rendering||!this.viewportVisible||this.contextLost||(this.rendering=!0,this.engine.runRenderLoop(()=>{if(!this.canRender()||!this.viewportVisible||this.contextLost){this.engine.stopRenderLoop(),this.rendering=!1;return}this.scene.render(),this.gizmo&&this.gizmoEnabled&&(this.gizmo.syncWith(this.camera),this.gizmo.render())}))}getRenderableMeshes(e){if(this.cachedRenderableMeshes&&this.cachedRenderableRoot===e)return this.cachedRenderableMeshes;let t=Nh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return Fb(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=yv(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>Qb(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||fZ(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>Qb(a,t));if(r.length===0){this.clearFocusedMesh();return}let s=new Set(r);for(let a of i){this.originalMeshVisibility.has(a.uniqueId)||this.originalMeshVisibility.set(a.uniqueId,a.visibility);let o=s.has(a);a.visibility=o?1:wge,a.renderOutline=o,a.outlineColor=new pe(.18,.76,1),a.outlineWidth=o?.045:0}this.focusedNode=t}clearFocusedMesh(){if(!this.rootMesh){this.focusedNode=null;return}for(let e of this.getRenderableMeshes(this.rootMesh)){let t=this.originalMeshVisibility.get(e.uniqueId);t!==void 0&&(e.visibility=t),e.renderOutline=!1,e.outlineWidth=0}this.originalMeshVisibility.clear(),this.focusedNode=null}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>Qb(r,e)))return e;if(!Uge(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>Qb(s,r)))return r;i=i.parent}return null}getMeasurementMarkerSize(){if(!this.rootMesh)return .02;let e=this.getRenderableBounds(this.rootMesh);return e?Math.max(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z,.001)*.015:.02}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),t.material.diffuseColor=new pe(1,.42,.42),t.material.emissiveColor=new pe(1,.42,.42));e&&this.scene.render()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>b.Distance(t.start,e)<1e-4||b.Distance(t.end,e)<1e-4)}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(b.Distance(i,this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=hs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1;let a=new We("measure-marker-mat",this.scene);a.diffuseColor=new pe(1,.42,.42),a.emissiveColor=new pe(1,.42,.42),s.material=a,s.renderingGroupId=2,this.measurementMarkers.push(s)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),this.pendingMarker.material.diffuseColor=new pe(1,.42,.42),this.pendingMarker.material.emissiveColor=new pe(1,.42,.42)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=hs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1;let a=new We("measure-marker-mat",this.scene);a.diffuseColor=new pe(1,.42,.42),a.emissiveColor=new pe(1,.42,.42),s.material=a,s.renderingGroupId=2,this.measurementMarkers.push(s),this.pendingMarker=s}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scaling.setAll(1.6),this.pendingMarker.material.diffuseColor=new pe(.32,.81,.4),this.pendingMarker.material.emissiveColor=new pe(.32,.81,.4),this.pendingPoint=i,this.ensurePreviewLine()}}createMeasurementSegment(e,t){let i=hs.CreateLines("measure-line",{points:[e,t]},this.scene);i.color=new pe(1,.42,.42),i.isPickable=!1,i.renderingGroupId=2;let r=qu(this.createMeasurementReading(e,t)),s=b.Center(e,t),a=this.createMeasurementLabelMesh(r,s,this.getMeasurementMarkerSize()*4);this.measurementSegments.push({start:e,end:t,line:i,label:a})}createMeasurementLabelMesh(e,t,i){let r=hs.CreatePlane("measure-label",{width:i*5,height:i*1.25},this.scene);r.position=t,r.billboardMode=Z.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new QR("measure-label-tex",{width:640,height:160},this.scene),a=s.getContext();a.fillStyle="rgba(32, 36, 46, 0.9)",a.fillRect(0,0,640,160),a.strokeStyle="#ff6b6b",a.lineWidth=4,a.strokeRect(0,0,640,160),a.fillStyle="#ffffff",a.textAlign="center",a.textBaseline="middle",a.font="bold 46px sans-serif",a.fillText(e.primary,320,58),a.font="28px sans-serif",a.fillStyle="rgba(255, 255, 255, 0.82)",a.fillText(e.secondary,320,112),s.update();let o=new We("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new pe(1,1,1),o.disableLighting=!0,o.opacityTexture=s,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=hs.CreateLines("measure-preview",{points:[b.Zero(),b.Zero()],updatable:!0},this.scene),this.previewLine.color=new pe(1,1,1),this.previewLine.alpha=.5,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.engine.getRenderingCanvas();if(!e)return;let t=e.getBoundingClientRect(),i=this.lastPointerClient.x-t.left,r=this.lastPointerClient.y-t.top,s=this.scene.pick(i,r,o=>o!==this.previewLine&&!this.measurementMarkers.includes(o)),a;if(s.hit&&s.pickedPoint)a=s.pickedPoint;else{let o=this.scene.createPickingRay(i,r,q.Identity(),this.camera);a=this.pendingPoint.add(o.direction.scale(5))}this.previewLine=hs.CreateLines("measure-preview",{points:[this.pendingPoint,a],instance:this.previewLine},this.scene),this.previewLine.color=new pe(1,1,1),this.previewLine.alpha=.5,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return HT(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}createModelSummary(e){let t=this.getRenderableMeshes(e),i=Cw(e),r=t.reduce((s,a)=>s+sd(a),0);return Bb(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};ma.annotationIdentity=q.Identity(),ma.annotationWorldPoint=b.Zero(),ma.annotationProjection=b.Zero(),ma.annotationDirection=b.Zero(),ma.annotationRay=new jr(b.Zero(),b.Zero(),1);$b=ma});async function uZ(n,e){if(Kh(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(k2(),G2));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(hZ(),dZ));return i(n)}var mZ=I(()=>{"use strict";aE()});var pZ={};Be(pZ,{createBabylonGridRenderer:()=>Xge});function zge(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function Pw(n){return new b(n.x,n.y,n.z)}function Xge(n){return new Dw(n)}var yp,Dw,_Z=I(()=>{"use strict";YP();Bs();kx();Wx();ke();Ht();_m();_p();yf();Dc();Mv();Mv();Cv();RT();sa();il();LT();yp=32;Dw=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.preventCanvasWheelScroll=e=>{e.preventDefault(),e.stopPropagation()};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop(),this.markDirty()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new Ve(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ei(this.engine),this.scene.clearColor=new lt(.12,.12,.14,1),this.scene.autoClear=!1,new fa("default-light",new b(0,1,.5),this.scene),this.resizeObs=new ResizeObserver(()=>{this.engine.resize(),this.markDirty()}),this.resizeObs.observe(e),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}markDirty(){this.dirty=!0}getCellBounds(e){let t=ad(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,h,u;await bv();let r=e.length>yp?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${yp} (layerMask limit)`),e.slice(0,yp)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(h=t.gapX)!=null?h:.02,o=(u=t.gapY)!=null?u:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;myp?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${yp} (layerMask limit)`),e.placements.slice(0,yp)):e.placements,r=[];for(let f=0;f0&&(h.push(...r[_]),u|=1<<_)}else h=d?[...d]:[],u=1<this.markDirty())),this.initialCameras.push({alpha:f.alpha,beta:f.beta,radius:f.radius,target:f.target.clone()}),f}async loadOne(e,t,i,r,s,a,o){var h,u;let l=await t(e.path),c=(u=(h=e.path.split(".").pop())==null?void 0:h.replace(".","").toLowerCase())!=null?u:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=pe.FromHexString(e.color);for(let _ of f)_.material instanceof We&&_.material.name==="stl-mat"&&(_.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof We&&(m.material.wireframe=e.wireframe);let d=this.createCellCamera(f,o,i,r,s,a);this.cells.push({meshes:f,camera:d})}createCellCamera(e,t,i,r,s,a){let o=DT(this.getCellBounds(e)),l=new gi(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,Pw(o.target),this.scene);l.fov=45*Math.PI/180,l.minZ=o.near,l.maxZ=o.far,l.lowerRadiusLimit=o.lowerRadiusLimit,l.upperRadiusLimit=o.upperRadiusLimit,l.wheelPrecision=30,l.viewport=new go(i,r,s,a),l.layerMask=1<this.markDirty())),this.initialCameras.push({alpha:l.alpha,beta:l.beta,radius:l.radius,target:l.target.clone()}),l}renderFrame(){if(!this.canRender()||!this.dirty||this.contextLost)return;this.dirty=!1;let e=this.engine,t=this.scene;e.clear(t.clearColor,!0,!0);for(let i of this.cells){e.setViewport(i.camera.viewport);let r=i.camera.viewport,s=e.getRenderWidth(),a=e.getRenderHeight();e.enableScissor(r.x*s,r.y*a,r.width*s,r.height*a),t.activeCamera=i.camera,t.render(),e.disableScissor()}}startRenderLoop(){this.rendering||(this.rendering=!0,this.engine.runRenderLoop(()=>this.renderFrame()))}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.renderFrame(),e.toDataURL("image/png")):null}getEngine(){return this.engine}getScene(){return this.scene}getCellCount(){return this.cells.length}getCanvas(){return this.engine.getRenderingCanvas()}getPrimaryCamera(){var e,t;return(t=(e=this.cells[0])==null?void 0:e.camera)!=null?t:null}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i=gr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),t}resetView(){for(let e=0;e(_Z(),pZ));return e(n)}var vZ=I(()=>{"use strict"});var TZ={};Be(TZ,{createLoggedGridRenderer:()=>Lw,createLoggedModelPreview:()=>Cp,logGridPreviewSelection:()=>SZ,logModelPreviewSelection:()=>EZ});function EZ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason,ext:t.ext,annotationMode:t.annotationMode,requireWorkbenchFeatures:t.requireWorkbenchFeatures,rendererRollout:t.rendererRollout})}async function Cp(n,e,t,i){let r=Kh(i);return EZ(n,e,r),{preview:await uZ(t,i),route:r}}function SZ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function Lw(n,e,t){let i=p1();return SZ(n,e,i),{renderer:await gZ(t),route:i}}var Jb=I(()=>{"use strict";mZ();vZ();aE()});function Ow(n){xZ=n}function eM(n){return AZ[n]>=AZ[xZ]}function tM(){return new Date().toISOString()}function iM(n){return n&&Object.keys(n).length>0?n:void 0}function Hi(n){let e=`[AI3D][${n}]`;return{debug(t,i){eM("debug")&&console.debug(e,tM(),t,iM(i))},info(t,i){eM("info")&&console.debug(e,tM(),t,iM(i))},warn(t,i){eM("warn")&&console.warn(e,tM(),t,iM(i))},error(t,i){eM("error")&&console.error(e,tM(),t,iM(i))}}}var AZ,xZ,Mn=I(()=>{"use strict";AZ={debug:10,info:20,warn:30,error:40},xZ="warn"});var bZ={};Be(bZ,{supportsAnimationPreview:()=>nM,supportsAnnotationPreview:()=>rM,supportsBoundingBoxPreview:()=>aM,supportsDisassemblyPreview:()=>Pp,supportsFocusSelectionPreview:()=>Dp,supportsMeasurementPreview:()=>gn,supportsOrientationGizmoPreview:()=>Dv,supportsRenderScalePreview:()=>oM,supportsWireframePreview:()=>sM,supportsWorkbenchPreview:()=>RZ});function _r(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function rM(n){return _r(n,"getAnnotationProvider")}function nM(n){return _r(n,"hasAnimations")&&_r(n,"toggleAnimation")}function gn(n){return _r(n,"toggleMeasurement")&&_r(n,"isMeasurementActive")&&_r(n,"clearMeasurements")&&_r(n,"setMeasurementScale")&&_r(n,"getMeasurementScale")&&_r(n,"setMeasurementUnit")&&_r(n,"getMeasurementUnit")&&_r(n,"getMeasurementBounds")&&_r(n,"getMeasurementRecords")&&_r(n,"updateMeasurementLabels")&&_r(n,"exportMeasurements")}function Pp(n){return _r(n,"toggleDisassembly")&&_r(n,"resetDisassembly")&&_r(n,"isDisassemblyEnabled")}function Dp(n){return _r(n,"toggleFocusSelection")&&_r(n,"isFocusSelectionEnabled")}function sM(n){return _r(n,"toggleWireframe")}function Dv(n){return _r(n,"toggleOrientationGizmo")}function aM(n){return _r(n,"toggleBoundingBox")}function oM(n){return _r(n,"setRenderScale")}function RZ(n){return _r(n,"setExplode")&&_r(n,"resetExplode")&&_r(n,"focusWorldPoint")}var Lp=I(()=>{"use strict"});function Dr(n){let e=createSvg("svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("width","16"),e.setAttribute("height","16");let t=new DOMParser().parseFromString(`${n}`,"image/svg+xml");for(let i of Array.from(t.documentElement.childNodes))e.appendChild(activeDocument.importNode(i,!0));return e}function MZ(n){var a,o;let[e,t]=n.split(","),i=(o=(a=e.match(/:(.*?);/))==null?void 0:a[1])!=null?o:"image/png",r=atob(t),s=new Uint8Array(r.length);for(let l=0;l{re.stopPropagation()};h.addEventListener("pointerdown",p),h.addEventListener("mousedown",p),h.addEventListener("click",p),f&&(h.classList.add("is-mobile"),IZ(e,!1));let g=re=>(re.classList.add("is-secondary"),re),v=(re,K)=>{re.classList.toggle("ai3d-btn-active",K),re.setAttribute("aria-pressed",String(K))},x=()=>{for(let re of[u,m,_]){let K=Array.from(re.querySelectorAll(".ai3d-inline-btn")).filter(je=>!je.classList.contains("is-hidden")),De=K.length>0,xe=K.some(je=>!je.classList.contains("is-secondary"));re.classList.toggle("is-hidden",!De),re.classList.toggle("has-primary-visible",xe)}},S=!1,E=!1,T=f?u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":j("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;T==null||T.appendChild(Dr(''));let R=(Wt=T==null?void 0:T.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?Wt:null,M=()=>{f&&T&&(IZ(e,S),v(T,S),R==null||R.setText(S?j("helper.scrollAction"):j("helper.interactAction")),T.setAttribute("aria-label",S?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))),v(Jt,E),h.classList.toggle("show-secondary",E),x()},y=re=>{S=re,M()};T==null||T.addEventListener("click",()=>{let re=!S;l==null||l(re),y(re),bi(T,re?j("helper.interactionOn"):j("helper.interactionOff"))});let C=(re,K)=>{re.classList.toggle("is-hidden",!K)},L=null,w=()=>{var je;let re=i(),K=re&&Dp(re)?re:null,De=re&&Pp(re)?re:null,xe=re&&gn(re)?re:null;v(te,!!(K!=null&&K.isFocusSelectionEnabled())),v(X,!!(De!=null&&De.isDisassemblyEnabled())),v(me,!!(xe!=null&&xe.isMeasurementActive())),re&&Dv(re)&&v(J,!!((je=re.isOrientationGizmoEnabled)!=null&&je.call(re)))},G=()=>{let re=i(),K=re&&Dp(re)?re:null,De=re&&Pp(re)?re:null,xe=re&&nM(re)?re:null;re!==L&&(L=re,v(V,!1),v(Q,!1),v(ae,!1),ae.replaceChildren(Dr('')),C(O,!!(re!=null&&re.resetView)),C(N,!!(re!=null&&re.exportModelInfo)),C(B,!!(re!=null&&re.exportSelectedPartInfo)),C(V,!!re&&sM(re)),C(J,!!re&&Dv(re)),C(Q,!!re&&aM(re)),C(te,!!K),C(X,!!De),C(Ue,!!re&&oM(re)),C(ae,!!(xe!=null&&xe.hasAnimations()))),C(me,!!re&&gn(re)),C(ne,!!re&&gn(re)),C(fe,!!re&&gn(re)),C(Pe,!!re&&gn(re)),w(),x()},O=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.resetViewLabel")}});cn(O,"reset-view"),O.appendChild(Dr('')),O.addEventListener("click",()=>{let re=i();re!=null&&re.resetView&&(re.resetView(),G(),bi(O,j("helper.resetViewDone")))});let N=g(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copyModelInfoLabel")}}));cn(N,"copy-model-info"),N.appendChild(Dr('')),N.addEventListener("click",()=>{let re=i();if(re!=null&&re.exportModelInfo)try{let K=re.exportModelInfo(r());if(!K)return;navigator.clipboard.writeText(K).then(()=>{bi(N,j("helper.copied"))}).catch(()=>{bi(N,j("helper.failed"))})}catch(K){console.error("[AI3D] Export model info failed:",K),bi(N,j("helper.failed"))}});let B=g(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySelectedPartInfoLabel")}}));cn(B,"copy-selected-part-info"),B.appendChild(Dr('')),B.addEventListener("click",()=>{let re=i();if(re!=null&&re.exportSelectedPartInfo)try{let K=re.exportSelectedPartInfo();if(!K){bi(B,j("helper.noSelectedPart"));return}navigator.clipboard.writeText(K).then(()=>{bi(B,j("helper.copied"))}).catch(()=>{bi(B,j("helper.failed"))})}catch(K){console.error("[AI3D] Export selected part info failed:",K),bi(B,j("helper.failed"))}});let V=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleWireframeLabel"),"aria-pressed":"false"}});cn(V,"toggle-wireframe"),V.appendChild(Dr('')),V.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleWireframe))return;let K=re.toggleWireframe();v(V,K),bi(V,K?j("helper.wireframeOn"):j("helper.wireframeOff"))});let J=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleAxesLabel"),"aria-pressed":"false"}});cn(J,"toggle-axes"),J.appendChild(Dr('')),J.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleOrientationGizmo))return;let K=re.toggleOrientationGizmo();v(J,K),bi(J,K?j("helper.axesOn"):j("helper.axesOff"))});let Q=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});cn(Q,"toggle-bounding-box"),Q.appendChild(Dr('')),Q.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleBoundingBox))return;let K=re.toggleBoundingBox();v(Q,K),bi(Q,K?j("helper.boundingBoxOn"):j("helper.boundingBoxOff"))});let te=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});cn(te,"toggle-focus"),te.appendChild(Dr('')),te.addEventListener("click",()=>{let re=i();if(!re||!Dp(re))return;let K=re.toggleFocusSelection();G(),bi(te,K?j("helper.focusSelectionOn"):j("helper.focusSelectionOff"))});let X=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});cn(X,"toggle-disassembly"),X.appendChild(Dr('')),X.addEventListener("click",()=>{let re=i();if(!re||!Pp(re))return;let K=re.toggleDisassembly();G(),bi(X,K?j("helper.disassemblyOn"):j("helper.disassemblyOff"))});let Y=[.5,.75,1,1.5,2],ve=(qt=a==null?void 0:a().renderScale)!=null?qt:1,Ee=Y.reduce((re,K,De)=>{let xe=Math.abs(K-ve),je=Math.abs(Y[re]-ve);return xe{let re=i();if(!(re!=null&&re.setRenderScale))return;Ee=(Ee+1)%Y.length;let K=re.setRenderScale(Y[Ee]);Ue.textContent=`${K.toFixed(1)}x`,bi(Ue,qi("helper.resolutionValue",{value:`${K}x`}))});let ae=g(u.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));cn(ae,"toggle-animation"),ae.appendChild(Dr('')),ae.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleAnimation))return;let K=re.toggleAnimation();ae.replaceChildren(Dr(K?'':'')),v(ae,K),bi(ae,K?j("helper.playing"):j("helper.paused"))});let me=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:j("helper.toggleMeasurementLabel")}});cn(me,"toggle-measurement"),me.appendChild(Dr('')),me.addEventListener("click",()=>{let re=i();if(!re||!gn(re))return;let K=re.toggleMeasurement();v(me,K),bi(me,K?j("helper.measurementOn"):j("helper.measurementOff")),K||v(ne,!1)});let ne=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.clearMeasurementsLabel")}}));cn(ne,"clear-measurements"),ne.appendChild(Dr('')),ne.addEventListener("click",()=>{let re=i();!re||!gn(re)||(re.clearMeasurements(),v(me,re.isMeasurementActive()),bi(ne,j("helper.measurementsCleared")))});let fe=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.copyMeasurementsLabel")}}));cn(fe,"copy-measurements"),fe.appendChild(Dr('')),fe.addEventListener("click",()=>{let re=i();if(!re||!gn(re))return;let K=re.exportMeasurements();if(!K){bi(fe,j("helper.noMeasurements"));return}navigator.clipboard.writeText(K).then(()=>{bi(fe,j("helper.measurementsCopied"))}).catch(()=>{bi(fe,j("helper.failed"))})});let Pe=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.calibrateLabel")}}));cn(Pe,"toggle-calibration"),Pe.appendChild(Dr(''));let de=_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySnapshotLabel")}});cn(de,"copy-snapshot"),de.appendChild(Dr('')),de.addEventListener("click",()=>{let re=i();if(re)try{let K=re.captureSnapshot();if(!K)return;let De=MZ(K);navigator.clipboard.write([new ClipboardItem({"image/png":De})]).then(()=>{bi(de,j("helper.copied"))}).catch(()=>{bi(de,j("helper.failed"))})}catch(K){console.error("[AI3D] Copy snapshot failed:",K),bi(de,j("helper.failed"))}});let Re=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.saveSnapshotLabel")}}));cn(Re,"save-snapshot"),Re.appendChild(Dr('')),Re.addEventListener("click",()=>{var K,De;let re=i();if(re)try{let xe=re.captureSnapshot();if(!xe)return;let je=r(),qe=tn(je)||"model",we=a==null?void 0:a(),At=(K=we==null?void 0:we.snapshotFolder)!=null?K:"Media/3D Previews",Zt=(De=we==null?void 0:we.snapshotNaming)!=null?De:"model-name",rr=Date.now(),vi=Zt==="timestamp"?`snapshot_${rr}.png`:`${qe}_snapshot_${rr}.png`,yn=MZ(xe),$i=new FileReader;$i.onload=()=>{let za=$i.result;t.vault.adapter.exists(At).then(Yp=>Yp?Promise.resolve():t.vault.createFolder(At).catch(Qv=>{Yge.warn("Failed to create vault folder",{path:At,error:String(Qv)})})).then(()=>t.vault.createBinary(`${At}/${vi}`,za)).then(()=>{bi(Re,j("helper.saved"))}).catch(Yp=>{console.error("[AI3D] Save snapshot failed:",Yp),bi(Re,j("helper.failed"))})},$i.onerror=()=>{console.error("[AI3D] FileReader error"),bi(Re,j("helper.failed"))},$i.onabort=()=>{console.error("[AI3D] FileReader aborted"),bi(Re,j("helper.failed"))},$i.readAsArrayBuffer(yn)}catch(xe){console.error("[AI3D] Save snapshot failed:",xe),bi(Re,j("helper.failed"))}});let Ye=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.downloadSnapshotLabel")}}));cn(Ye,"download-snapshot"),Ye.appendChild(Dr('')),Ye.addEventListener("click",()=>{let re=i();if(re)try{let K=re.captureSnapshot();if(!K)return;let De=r(),je=`${tn(De)||"model"}_snapshot_${Date.now()}.png`,qe=createEl("a");qe.href=K,qe.download=je,activeDocument.body.appendChild(qe),qe.click(),qe.remove(),bi(Ye,j("helper.downloaded"))}catch(K){console.error("[AI3D] Download snapshot failed:",K),bi(Ye,j("helper.failed"))}});let Et=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.removePreviewLabel")}}));cn(Et,"remove-preview"),Et.appendChild(Dr('')),Et.addEventListener("click",s);let Ke=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":j(d.labelKey),"aria-pressed":"false"}});cn(Ke,"toggle-annotation"),Ke.appendChild(Dr(''));let Ze=Ke.createSpan({cls:"ai3d-pin-badge is-hidden"});Ke.addEventListener("click",()=>{if(!o)return;let re=o();v(Ke,re),bi(Ke,re?j(d.activeTooltipKey):j(d.inactiveTooltipKey))});let Jt=h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":j("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Jt.appendChild(Dr('')),Jt.addEventListener("click",()=>{E=!E,Jt.setAttribute("aria-label",E?j("helper.hideMoreActionsLabel"):j("helper.showMoreActionsLabel")),M(),bi(Jt,E?j("helper.moreActionsShown"):j("helper.moreActionsHidden"))}),n.insertBefore(h,e.nextSibling);let Lt=n.createDiv({cls:"ai3d-calibrate-panel is-hidden"});Lt.createDiv({cls:"ai3d-calibrate-title",text:j("helper.calibrateTitle")});let xi=Lt.createDiv({cls:"ai3d-calibrate-row"});xi.createSpan({cls:"ai3d-calibrate-label",text:j("helper.calibrateCurrent")});let oe=xi.createSpan({cls:"ai3d-calibrate-readonly"}),Gi=xi.createSpan({cls:"ai3d-calibrate-readonly"}),ti=xi.createSpan({cls:"ai3d-calibrate-readonly"}),Fi=Lt.createDiv({cls:"ai3d-calibrate-row"});Fi.createSpan({cls:"ai3d-calibrate-label",text:j("helper.calibrateReal")});let ot=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"X"}}),Di=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"Y"}}),z=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"Z"}}),U=Lt.createDiv({cls:"ai3d-calibrate-row"}),ue=U.createEl("select",{cls:"ai3d-calibrate-select"});for(let re of["um","mm","cm","m"]){let K=ue.createEl("option");K.value=re,K.textContent=re}ue.value="mm";let Le=U.createEl("label",{cls:"ai3d-calibrate-lock"}),Ge=Le.createEl("input",{attr:{type:"checkbox",checked:"true"}});Le.appendChild(activeDocument.createTextNode(" "+j("helper.calibrateLock")));let et=Lt.createDiv({cls:"ai3d-calibrate-row ai3d-calibrate-actions"}),rt=et.createEl("button",{cls:"ai3d-inline-btn",text:j("helper.calibrateApply")}),Ce=et.createEl("button",{cls:"ai3d-inline-btn is-secondary",text:j("helper.calibrateReset")}),Me=null;function ct(){var xe,je;let re=i();if(!re||!gn(re))return;let K=(je=(xe=re.getMeasurementBounds)==null?void 0:xe.call(re))!=null?je:null,De=re.getMeasurementScale();ue.value=re.getMeasurementUnit(),Me=K,K?(oe.textContent=`X: ${(K.x*De.x).toFixed(3)}`,Gi.textContent=`Y: ${(K.y*De.y).toFixed(3)}`,ti.textContent=`Z: ${(K.z*De.z).toFixed(3)}`):(oe.textContent="X: -",Gi.textContent="Y: -",ti.textContent="Z: -")}function Tt(){var qe,we;let re=i();if(!re||!gn(re)||!Me)return;let K=parseFloat(ot.value),De=parseFloat(Di.value),xe=parseFloat(z.value);if(!isFinite(K)||!isFinite(De)||!isFinite(xe))return;let je={x:Me.x>1e-4?K/Me.x:1,y:Me.y>1e-4?De/Me.y:1,z:Me.z>1e-4?xe/Me.z:1};(qe=re.setMeasurementUnit)==null||qe.call(re,ue.value),(we=re.setMeasurementScale)==null||we.call(re,je),bi(rt,j("helper.calibrated"))}function nt(){var K,De;let re=i();!re||!gn(re)||((K=re.setMeasurementUnit)==null||K.call(re,ue.value),(De=re.setMeasurementScale)==null||De.call(re,{x:1,y:1,z:1}),ct(),Me?(ot.value=Me.x.toFixed(3),Di.value=Me.y.toFixed(3),z.value=Me.z.toFixed(3)):(ot.value="",Di.value="",z.value=""),bi(Ce,j("helper.calibrateResetDone")))}function $e(re){if(!Ge.checked||!Me)return;let De=parseFloat((re==="x"?ot:re==="y"?Di:z).value);if(!isFinite(De)||De===0)return;let xe=Me[re];if(xe<=1e-4)return;let je=De/xe;re!=="x"&&(ot.value=(Me.x*je).toFixed(3)),re!=="y"&&(Di.value=(Me.y*je).toFixed(3)),re!=="z"&&(z.value=(Me.z*je).toFixed(3))}return ot.addEventListener("input",()=>$e("x")),Di.addEventListener("input",()=>$e("y")),z.addEventListener("input",()=>$e("z")),ue.addEventListener("change",()=>{let re=i();!re||!gn(re)||re.setMeasurementUnit(ue.value)}),rt.addEventListener("click",Tt),Ce.addEventListener("click",nt),Pe.addEventListener("click",()=>{let re=Lt.classList.contains("is-hidden");if(re&&(ct(),Me)){let K=i(),De=K&&gn(K)?K.getMeasurementScale():{x:1,y:1,z:1};ot.value=(Me.x*De.x).toFixed(3),Di.value=(Me.y*De.y).toFixed(3),z.value=(Me.z*De.z).toFixed(3)}Lt.classList.toggle("is-hidden",!re),v(Pe,re),bi(Pe,re?j("helper.calibrateOpen"):j("helper.calibrateClose"))}),M(),G(),{showAnimButton(){ae.classList.remove("is-hidden"),x()},showAnnotateButton(){Ke.classList.remove("is-hidden"),x()},updateAnnotationBadge(re){re>0?(Ze.textContent=String(re),Ze.classList.remove("is-hidden")):Ze.classList.add("is-hidden")},setMobileInteractionMode(re){f&&y(re)},syncCapabilities:G}}function bi(n,e){var i;(i=Nw.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,Nw.set(n,t),window.setTimeout(()=>{t.remove(),Nw.delete(n)},1500)}var Yge,Nw,ww=I(()=>{"use strict";vn();Mn();Lp();sa();Ps();Yge=Hi("helper-buttons");Nw=new WeakMap});function yZ(n){let e=Xa(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),Kge.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var Kge,CZ=I(()=>{"use strict";Ka();Mn();Kge=Hi("direct-load-service")});var PZ={};Be(PZ,{MissingConverterError:()=>cd,MobileConversionUnavailableError:()=>wh,describeModelLoadFailure:()=>Nv,formatModelLoadFailure:()=>lM,isMissingConverterError:()=>Ov});function cM(n){return`.${n.trim().toLowerCase()}`}function Ov(n){return n instanceof cd}function lM(n){var e;if(n instanceof cd){let t=(e=jge[n.converterId])!=null?e:n.converterId;return qi("modelLoad.warningMessage",{ext:cM(n.sourceExt),converterName:t})}return n instanceof wh?qi("modelLoad.mobileWarningMessage",{ext:cM(n.sourceExt)}):qi("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function Nv(n){return n instanceof cd?{level:"warning",title:j("modelLoad.warningTitle"),message:lM(n),hint:j("modelLoad.warningHint")}:n instanceof wh?{level:"warning",title:j("modelLoad.warningTitle"),message:lM(n),hint:j("modelLoad.mobileWarningHint")}:{level:"error",title:j("modelLoad.errorTitle"),message:lM(n),hint:j("modelLoad.errorHint")}}var jge,cd,wh,Op=I(()=>{"use strict";vn();jge={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};cd=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${cM(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},wh=class extends Error{constructor(t){super(`Format ${cM(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var LZ={};Be(LZ,{convertForPreview:()=>tve});function DZ(n,e){let t=n.lastIndexOf("."),i=t>0?n.slice(0,t):n,r=Math.max(i.lastIndexOf("/"),i.lastIndexOf("\\")),s=i.slice(0,r+1),a=i.slice(r+1);return`${s}${a}.ai3d-converted.${e}`}function qge(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function Zge(n){let e=ns(n);return ra(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function Qge(n,e,t){if(!t)return DZ(n,e);let i=Zge(n),r=qge(`${n}::${e}`);return Ui(t,`${i}-${r}.ai3d-converted.${e}`)}function $ge(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function Jge(n){if(!n)return!1;try{return await is(n,rs),!0}catch(e){return!1}}async function Bw(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:Hd(n),Hd(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function eve(n){return typeof n=="function"?await n():n}async function tve(n){var d,h,u,m,_,p,g,v,x;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(d=n.capability.outputFormat)!=null?d:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);fd.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=Hd(n.sourcePath)),i),s=(h=n.convertedAssetCache)==null?void 0:h.get(n.sourcePath,n.sourceExt,t);if(s)if(!await Jge(s.outputPath))fd.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(u=n.convertedAssetCache)==null||u.delete(n.sourcePath,n.sourceExt,t);else if(!$ge(s,e))fd.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!await Bw(n.sourcePath,s.outputPath,r()))fd.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(_=n.convertedAssetCache)==null||_.delete(n.sourcePath,n.sourceExt,t);else return fd.info("conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),{effectivePath:s.outputPath,effectiveExt:s.outputExt,warnings:[...s.warnings,"Using cached conversion output."]};let a=Qge(n.sourcePath,t,n.outputRoot);if(await Bw(n.sourcePath,a,r()))return fd.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(p=n.convertedAssetCache)==null||p.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:a,effectiveExt:t,warnings:["Using existing conversion output."]};let o=DZ(n.sourcePath,t);if(o!==a&&await Bw(n.sourcePath,o,r()))return fd.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(g=n.convertedAssetCache)==null||g.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:o,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:o,effectiveExt:t,warnings:["Using existing conversion output."]};let l=await eve(n.conversionManager);if(!l)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!l.canConvert(n.sourceExt))throw new cd(e,n.sourceExt);let c=await l.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await Nn(n.outputRoot,{recursive:!0});let f=await l.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(x=n.convertedAssetCache)==null||x.set({cacheVersion:2,converterId:e,converterCacheKey:(v=c==null?void 0:c.cacheKey)!=null?v:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:f.outputPath,outputExt:f.outputExt,warnings:f.warnings,createdAt:Date.now()}),fd.info("conversion route done",{sourcePath:n.sourcePath,outputPath:f.outputPath,warningCount:f.warnings.length}),{effectivePath:f.outputPath,effectiveExt:f.outputExt,warnings:f.warnings}}var fd,OZ=I(()=>{"use strict";qM();Mn();ar();Op();fd=Hi("conversion-service")});var NZ={};Be(NZ,{prepareModelInput:()=>Np});function ive(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function Np(n){var a,o;let e=Xa((a=n.path.split(".").pop())!=null?a:""),t=ZM(e);if(dd.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw dd.warn("unsupported format",{sourceExt:e,path:n.path}),Kp(e)?new Error("SPLAT preview is disabled in packaged builds. Local-only .splat support is planned; .spz and .sog remain unavailable until their decoders can be bundled locally."):new Error(`Unsupported format: .${e}`);let i=ive(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(gr())throw dd.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new wh(e);if(!n.absolutePath)throw dd.error("filesystem path missing for conversion",{sourceExt:e,path:n.path}),new Error(`Format .${e} requires a local filesystem path for conversion, but none was resolved for '${n.path}'.`);let l=t.strategy==="convert"?t:{...t,strategy:"convert",outputFormat:(o=t.outputFormat)!=null?o:"glb"};if(!l.converterId)throw dd.error("preferred conversion route missing converter id",{sourceExt:e,path:n.path}),new Error(`Format .${e} is configured to prefer conversion, but no converter id is defined.`);i&&t.strategy==="direct"&&dd.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(OZ(),LZ)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return dd.info("conversion completed",{sourceExt:e,outputExt:f.effectiveExt,outputPath:f.effectivePath,warningCount:f.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:"convert",effectivePath:f.effectivePath,effectiveExt:f.effectiveExt,warnings:f.warnings}}let s=yZ({path:n.path,sourceExt:e});return dd.debug("direct route",{sourceExt:e,path:n.path,warningCount:s.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:t.strategy,effectivePath:s.effectivePath,effectiveExt:s.effectiveExt,warnings:s.warnings}}var dd,fM=I(()=>{"use strict";Ka();CZ();Op();Mn();sa();dd=Hi("model-pipeline")});function wv(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var Uw=I(()=>{"use strict"});var wZ={};Be(wZ,{listPreferredConversionExts:()=>wp});function wp(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var dM=I(()=>{"use strict"});function Fh(n){let e=n.createDiv({cls:"ai3d-loading-overlay"}),t=e.createDiv({cls:"ai3d-loading-skeleton"});t.createDiv({cls:"ai3d-loading-skeleton-canvas"});let i=t.createDiv({cls:"ai3d-loading-skeleton-meta"});i.createDiv({cls:"ai3d-loading-skeleton-line"}),i.createDiv({cls:"ai3d-loading-skeleton-line is-short"}),e.createDiv({cls:"ai3d-loading-spinner"});let r=e.createDiv({cls:"ai3d-loading-text"}),s="loading.default",a="",o=()=>{r.textContent=s?j(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=h1(()=>{!f&&s&&o()});return{el:e,setPhase(h){s=null,a=h,f||o()},setPhaseKey(h){s=h,f||o()},setProgress(h){f||(h<0?(c.className="ai3d-loading-bar-fill is-indeterminate",c.style.removeProperty("--bar-width")):(c.className="ai3d-loading-bar-fill",c.style.setProperty("--bar-width",`${Math.min(100,Math.max(0,h))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var hM=I(()=>{"use strict";vn()});var Vw={};Be(Vw,{renderModelLoadFailure:()=>Fv,renderModelPerformanceFeedback:()=>Bv});function Fv(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});gr()&&t.classList.add("is-mobile");let i=t.createDiv({cls:`ai3d-load-feedback is-${e.level}`});return i.createDiv({cls:"ai3d-load-feedback-title",text:e.title}),i.createDiv({cls:"ai3d-load-feedback-message",text:e.message}),i.createDiv({cls:"ai3d-load-feedback-hint",text:e.hint}),t}function Bv(n,e){var o,l,c,f,d,h,u;if((!e.performanceTier||e.performanceTier==="light")&&!((o=e.resourceWarnings)!=null&&o.length))return null;let t=(l=e.performanceTier)!=null?l:"light",i=((c=e.splatCount)!=null?c:e.triangleCount).toLocaleString(),r=e.splatCount!==void 0?"splats":"triangles",s=n.createDiv({cls:`ai3d-performance-feedback is-${t}`});s.createDiv({cls:"ai3d-performance-feedback-tier",text:(f=e.resourceWarnings)!=null&&f.length?"assets":(d=e.performanceTier)!=null?d:"light"}),s.createDiv({cls:"ai3d-performance-feedback-meta",text:(h=e.resourceWarnings)!=null&&h.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(u=e.resourceWarnings)!=null?u:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` -`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var Uv=I(()=>{"use strict";sa()});function Fc(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return rve.has(e)?e:"glb"}function Bh(n,e,t){return typeof n=="string"&&nve.has(n)?n:e===t?"direct":"convert"}var rve,nve,uM=I(()=>{"use strict";rve=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),nve=new Set(["direct","convert"])});function Fp(n,e,t){let i=j("previewCanvas.modelShortcuts");kZ(n,{label:qi(UZ[e],{model:Cs(t)||j("workbench.modelTitle"),shortcuts:i}),shortcutKeys:sve,shortcutHint:i})}function VZ(n){let e=j("previewCanvas.gridShortcuts");kZ(n,{label:qi(UZ.grid,{shortcuts:e}),shortcutKeys:ave,shortcutHint:e})}function Bp(n,e){n.addEventListener("keydown",t=>{var s,a,o,l,c;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"?((a=i.toggleWireframe)==null||a.call(i),t.preventDefault()):r==="g"?((o=i.toggleOrientationGizmo)==null||o.call(i),t.preventDefault()):r==="b"?((l=i.toggleBoundingBox)==null||l.call(i),t.preventDefault()):r===" "?((c=i.toggleAnimation)==null||c.call(i),t.preventDefault()):r==="m"&&(gn(i)&&i.toggleMeasurement(),t.preventDefault())})}function GZ(n,e){n.addEventListener("keydown",t=>{var s,a;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"&&((a=i.toggleWireframe)==null||a.call(i),t.preventDefault())})}function kZ(n,e){ove(n),n.setAttribute("role","application"),n.setAttribute("aria-label",e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),n.setAttribute("title",e.shortcutHint),n.dataset.testid="ai3d-preview-canvas"}function ove(n){if(BZ(n),FZ.has(n)||typeof MutationObserver=="undefined")return;FZ.add(n),new MutationObserver(()=>BZ(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function BZ(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var sve,ave,FZ,UZ,mM=I(()=>{"use strict";vn();Lp();Ps();sve=["R","W","G","B","M","Space"],ave=["R","W"],FZ=new WeakSet,UZ={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function WZ(n){let{contentEl:e,filePath:t,mobile:i,getPreview:r}=n,s=e.createDiv({cls:"ai3d-workspace"}),a=s.createDiv({cls:"ai3d-workspace-track-top"}),o=a.createDiv({cls:"ai3d-workspace-main"}),l=a.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-h"}),c=a.createDiv({cls:"ai3d-workspace-sidebar"}),f=createDiv(),d=f.createDiv({cls:"ai3d-preview-host"}),h=f.createEl("canvas");h.className="ai3d-canvas-full",Fp(h,"direct-view",t),Bp(h,r),d.appendChild(h);let u=f.createDiv();u.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(u),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),_=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"}),p=s.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:h,modeOverlay:u,sidebarContent:m,vHandle:_,workbenchPanel:p}}var HZ=I(()=>{"use strict";vn();mM()});function pM(n){return Math.round(n!=null?n:0).toLocaleString()}function lve(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function cve(n){return n==="three"?"Three.js":"Babylon.js"}function zZ(n){var f,d;let{panel:e,summary:t,route:i,registeredPartCount:r}=n;e.empty(),e.removeClass("is-hidden"),e.dataset.ai3dBackend=i.backend,e.dataset.ai3dRouteReason=i.reason;let s=e.createDiv({cls:"ai3d-direct-workbench-overview"}),a=s.createDiv({cls:"ai3d-direct-workbench-status"}),o=a.createDiv({cls:"ai3d-direct-workbench-line"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:cve(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});Up(c,j("workbench.meshesLabel"),pM(t.meshCount)),Up(c,j("directWorkbench.partCandidatesLabel"),pM(r)),Up(c,t.splatCount!==void 0?j("workbench.splatsLabel"):j("workbench.trianglesLabel"),pM((f=t.splatCount)!=null?f:t.triangleCount)),Up(c,j("workbench.materialsLabel"),pM(t.materialCount)),Up(c,j("workbench.boundingSizeLabel"),lve(t)),Up(c,j("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function Up(n,e,t){let i=n.createDiv({cls:"ai3d-direct-workbench-metric"});i.createSpan({cls:"ai3d-direct-workbench-label",text:e}),i.createSpan({cls:"ai3d-direct-workbench-value",text:t})}var XZ=I(()=>{"use strict";vn()});function fve(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&Gw.has(e.ext)&&Gw.has(e.sourceExt)}function dve(n){return YZ.has(n.ext)?n.strategy==="direct"?YZ.has(n.sourceExt):n.strategy==="convert"&&Gw.has(n.ext):!1}function KZ(n,e){let t=fve(n,e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!dve(e),rendererRollout:n.previewRendererRollout,useThreeRenderer:n.useThreeRenderer}}var YZ,Gw,jZ=I(()=>{"use strict";YZ=new Set(["glb","gltf","stl","ply","obj"]),Gw=new Set(["glb","gltf"])});function kw(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function hve(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?kw(n):(e!=null?e:0)>=201326592?{renderQuality:"low",renderScale:Math.min(n.renderScale,.65)}:(e!=null?e:0)>=67108864?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,.85)}:kw(n)}function qZ(n,e){return e.performanceTier==="extreme"?{renderQuality:"low",renderScale:Math.min(n.renderScale,.65)}:e.performanceTier==="heavy"?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,.85)}:e.performanceTier==="medium"?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,1)}:kw(n)}function uve(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}async function mve(n,e){if(uve(e))try{let{stat:i}=await Promise.resolve().then(()=>(ar(),XB));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return pve(t)?t.stat.size:null}function pve(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function Vp(n,e,t){return hve(t,await mve(n,e))}var _M=I(()=>{"use strict"});function gve(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new Ww(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var Vv,_ve,Ww,gM,ZZ=I(()=>{"use strict";Ka();Mn();Vv=Hi("conversion-manager"),_ve=3e5,Ww=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};gM=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get(Xa(e))}registerConverter(e){Vv.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set(Xa(t),e)}canConvert(e){let t=Xa(e),i=this.converters.has(t);return Vv.debug("can convert",{ext:t,ok:i}),i}async getConverterCacheIdentity(e){let t=this.getConverter(e);if(t)return{converterId:t.id,cacheKey:await t.getCacheKey()}}async convert(e){var o;let t=Xa(e.sourceExt),i=this.getConverter(t);if(!i)throw Vv.error("converter missing",{ext:t,targetExt:e.targetExt}),new Error(`No converter registered for .${t}`);let r=`${e.sourcePath}::${t}::${e.targetExt}`,s=this.pending.get(r);if(s)return Vv.info("joining in-flight conversion",{key:r}),s;Vv.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=gve(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:_ve,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var $w={};Be($w,{describeConverterCommandSource:()=>jw,inspectAllConverterCommands:()=>wve,inspectConverterCommand:()=>Qw,listConverterCommandSpecs:()=>Nve,resolveConverterCommand:()=>Fve,resolveConverterInvocation:()=>In});function Xw(...n){let e=(He==null?void 0:He.platform)==="darwin"?["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin","/usr/bin"]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin","/usr/bin"];return Array.from(new Set(e.flatMap(t=>n.map(i=>`${t}/${i}`))))}function Eve(){var r,s,a;if((He==null?void 0:He.platform)==="darwin")return["/Applications/FreeCAD.app/Contents/MacOS/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/freecadcmd",...Xw("FreeCADCmd","freecadcmd")];if((He==null?void 0:He.platform)!=="win32")return["/usr/local/bin/freecadcmd","/opt/homebrew/bin/freecadcmd","/opt/local/bin/freecadcmd","/snap/freecad/current/usr/bin/freecadcmd","/usr/bin/freecadcmd"];let n=[],e=(r=He==null?void 0:He.env)==null?void 0:r.LOCALAPPDATA,t=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,i=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"];if(e&&n.push(Ui(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(Ui(t,"FreeCAD","bin","FreeCADCmd.exe")),e)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${e}/Programs/FreeCAD ${o}/bin/FreeCADCmd.exe`);if(t)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${t}/FreeCAD ${o}/bin/FreeCADCmd.exe`);return i&&n.push(`${i}/FreeCAD/bin/FreeCADCmd.exe`),n}function Sve(n){var a,o,l,c;if((He==null?void 0:He.platform)!=="win32")return[];let e=(a=He==null?void 0:He.env)==null?void 0:a.APPDATA,t=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,i=(l=He==null?void 0:He.env)==null?void 0:l.npm_config_prefix,r=(c=He==null?void 0:He.env)==null?void 0:c.USERPROFILE,s=[i,e?Ui(e,"npm"):void 0,t?Ui(t,"npm"):void 0,r?Ui(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>Ui(f,n))))}function Tve(...n){var s,a,o;if((He==null?void 0:He.platform)!=="win32")return[];let e=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,t=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"],i=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,r=[e,t,i?Ui(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>Ui(l,c)))))}async function Zw(n){try{return await is(n,(He==null?void 0:He.platform)==="win32"?rs:Ey),!0}catch(e){return!1}}function Hw(n){let e=n==null?void 0:n.trim();if(e)return e}function $Z(n){return Ave.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function xve(n,e){for(let t of[n,...e]){let i=$Z(t);if(!i.ok)return i}return{ok:!0}}async function Rve(n){try{return(await Hd(n)).isFile()}catch(e){return!1}}function bve(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:vve}async function Cve(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(Sy).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?yve(n):[""];for(let s of t)for(let a of i){let o=Ui(s,a?`${n}${a}`:n);if(await Zw(o))return o}}function Yw(n,e,t=15e3){let i=$Z(n);return i.ok?new Promise((r,s)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:4*1024*1024},(a,o,l)=>{if(a){s(new Error((l||o||a.message).toString().trim()||a.message));return}r({stdout:o!=null?o:"",stderr:l!=null?l:""})})}):Promise.reject(new Error(`Refusing to execute converter command: ${i.reason}`))}function Kw(n){let t=(n instanceof Error?n.message:String(n)).replace(/\s+/g," ").trim();return t.length>180?`${t.slice(0,177)}...`:t}async function zw(n,e,t,i){let r="";for(let s of t)try{return await Yw(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=Kw(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function Pve(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad")try{return await Yw(e,[...t,"-c","import cadquery, trimesh; print('ok')"]),[{kind:"cad-python",ok:!0,detail:""}]}catch(r){return[{kind:"cad-python",ok:!1,detail:Kw(r)}]}if(n.id==="assimp")try{return await Yw(e,[...t,"-c","import trimesh, numpy, networkx, collada; print('ok')"]),[{kind:"mesh-python",ok:!0,detail:""}]}catch(r){return[{kind:"mesh-python",ok:!1,detail:Kw(r)}]}if(n.id==="freecadcmd"){let r=await zw(e,t,[["--version"],["--help"]],/freecad|usage|help|version/i);return[{kind:"freecadcmd-cli",ok:r.ok,detail:r.detail}]}if(n.id==="obj2gltf"){let r=await zw(e,t,[["--version"],["--help"]],/obj2gltf|usage|help|version/i);return[{kind:"obj2gltf-cli",ok:r.ok,detail:r.detail}]}if(n.id==="fbx2gltf"){let r=await zw(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function Dve(n){let e=qw.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function Lve(n){var s,a,o,l;let e=(a=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles)==null?void 0:a.toLowerCase(),t=(l=(o=He==null?void 0:He.env)==null?void 0:o["ProgramFiles(x86)"])==null?void 0:l.toLowerCase(),i=[],r=[];for(let c of n.knownCandidates){let f=c.toLowerCase(),d=(He==null?void 0:He.platform)==="win32"&&((e?f.startsWith(e):!1)||(t?f.startsWith(t):!1)),h=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||h?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function QZ(n,e,t){for(let i of e)if(await Zw(i))return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,command:i,executable:i,args:[],resolvedPath:i,available:!0,source:"candidate",detail:t,checkedCandidates:[i]}}function Ove(n,e){let t=[];return n.length&&t.push(`Checked common user locations: ${n.join("; ")}`),e.length&&t.push(`Checked system fallback locations: ${e.join("; ")}`),t.join(". ")}async function vM(n,e,t,i){let r=Mve(e),s=xve(r.executable,r.args);if(!s.ok)return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:void 0,available:!1,source:t,detail:s.reason,checkedCandidates:[r.executable]};if(Ive(r.executable)){let[o,l]=await Promise.all([Zw(r.executable),Rve(r.executable)]),c=o&&l;return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:c?r.executable:void 0,available:c,source:t,detail:c?`Using ${jw(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await Cve(r.executable);return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:a,available:!!a,source:t,detail:a?`Resolved from ${jw(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function Nve(){return qw}function jw(n){switch(n){case"settings":return"plugin settings";case"env":return"environment variable";case"candidate":return"known install location";case"path":return"PATH fallback"}}async function Qw(n,e){var h,u,m;let t=Dve(n),{userCandidates:i,systemCandidates:r}=Lve(t),s=Hw(e);if(s)return vM(t,s,"settings",s);let a=Hw((h=He==null?void 0:He.env)==null?void 0:h[t.envVar]);if(a)return vM(t,a,"env");for(let _ of(u=t.envVarAliases)!=null?u:[]){let p=Hw((m=He==null?void 0:He.env)==null?void 0:m[_]);if(p)return vM(t,p,"env")}let o=await QZ(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let _ of t.fallbackCommands){let p=await vM(t,_,"path");if(l.push(p),p.available)return p}let c=await QZ(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(_=>_.checkedCandidates),d=Ove(i,r);return{...l[0],detail:d?`Command name was not found on PATH. ${d}`:"Command name was not found on PATH.",checkedCandidates:[...i,...f,...r]}}async function wve(n){let e=await Promise.all(qw.map(t=>Qw(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await Pve(t)})))}async function Fve(n,e){return(await In(n,e)).command}async function In(n,e){var i;let t=await Qw(n,e);if(!t.available&&t.detail==="Command contains unsafe shell metacharacters.")throw new Error(`Refusing to resolve converter command '${n}': ${t.detail}`);return{command:(i=t.resolvedPath)!=null?i:t.executable,args:[...t.args]}}var He,vve,qw,Ave,hd=I(()=>{"use strict";ar();ar();ar();He=Wu(),vve=[".exe",".cmd",".bat",".com"];qw=[{id:"freecad",label:"Python (CadQuery/OCCT)",settingsKey:"freecadCommand",envVar:"AI3D_FREECAD_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand",envVar:"AI3D_OBJ2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["obj2gltf.cmd"]:["obj2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?Sve("obj2gltf.cmd"):Xw("obj2gltf")},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand",envVar:"AI3D_FBX2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FBX2glTF.exe"]:["FBX2glTF","fbx2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?Tve(Ui("FBX2glTF","FBX2glTF-windows-x64.exe"),Ui("FBX2glTF","FBX2glTF.exe")):Xw("FBX2glTF","fbx2gltf")},{id:"assimp",label:"Python (trimesh)",settingsKey:"assimpCommand",envVar:"AI3D_ASSIMP_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"freecadcmd",label:"FreeCAD (SLDPRT)",settingsKey:"freecadcmdCommand",envVar:"AI3D_FREECADCMD",envVarAliases:["AI3D_FREECMDCMD"],fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FreeCADCmd.exe"]:["freecadcmd","FreeCADCmd"],knownCandidates:Eve()}];Ave=/[;|&<>$`\r\n\t]/});var eQ,JZ=I(()=>{eQ=`import cadquery as cq +}`;A.ShadersStore[Mw]||(A.ShadersStore[Mw]=nZ);Lge={name:Mw,shader:nZ}});var oZ,sZ,Qb,Oge,Nge,aZ,Cw,lZ=I(()=>{Bs();Wi();Nm();ke();So();Rm();eD();Yn();FD();Ht();hi();oh();Af();ID();sl();Pt();Object.defineProperty(ei.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ei.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new Cw(this)),this._boundingBoxRenderer};Object.defineProperty(Ar.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});oZ=q.Identity(),sZ=new q,Qb=new b,Oge=new b,Nge=oZ.asArray(),aZ=new If(Qb,Qb),Cw=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=tt.NAME_BOUNDINGBOXRENDERER,this.frontColor=new pe(1,1,1),this.backColor=new pe(.1,.1,.1),this.showBackLines=!0,this.onBeforeBoxRenderingObservable=new ie,this.onAfterBoxRenderingObservable=new ie,this.onResourcesReadyObservable=new ie,this.enabled=!0,this._shaderLanguage=0,this.renderList=new Vi(32),this._vertexBuffers={},this._fillIndexBuffer=null,this._fillIndexData=null,this._matrixBuffer=null,this._matrices=null,this._useInstances=!1,this._drawWrapperFront=null,this._drawWrapperBack=null,this.scene=e,this.scene.getEngine().isWebGPU&&(this._shaderLanguage=1),e._addComponent(this),this._uniformBufferFront=new mr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new mr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererBack",!0),this._buildUniformLayout(this._uniformBufferBack)}_buildUniformLayout(e){e.addUniform("color",4),e.addUniform("world",16),e.addUniform("viewProjection",16),e.addUniform("viewProjectionR",16),e.create()}register(){this.scene._beforeEvaluateActiveMeshStage.registerStep(tt.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER,this,this.reset),this.scene._preActiveMeshStage.registerStep(tt.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER,this,this._preActiveMesh),this.scene._evaluateSubMeshStage.registerStep(tt.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER,this,this._evaluateSubMesh),this.scene._afterRenderingGroupDrawStage.registerStep(tt.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER,this,this.render)}async whenReadyAsync(e=16,t=3e4){return this._prepareResources(),await new Promise(i=>{nl(()=>this._colorShader.isReady(),()=>{i()},(r,s)=>{s?(ee.Error("BoundingBoxRenderer: Timeout while waiting for the renderer to be ready."),r&&ee.Error(r)):(ee.Error("BoundingBoxRenderer: An unexpected error occurred while waiting for the renderer to be ready."),r&&(ee.Error(r),r.stack&&ee.Error(r.stack)))},e,t)})}_evaluateSubMesh(e,t){if(e.showSubMeshesBoundingBox){let i=t.getBoundingInfo();i!=null&&(i.boundingBox._tag=e.renderingGroupId,this.renderList.push(i.boundingBox))}}_preActiveMesh(e){if(e.showBoundingBox||this.scene.forceShowBoundingBoxes){let t=e.getBoundingInfo();t.boundingBox._tag=e.renderingGroupId,this.renderList.push(t.boundingBox)}}_prepareResources(){if(this._colorShader)return;this._colorShader=new Lo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[D.PositionKind,"world0","world1","world2","world3"],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(vw(),gw)),Promise.resolve().then(()=>(Tw(),Sw))]):await Promise.all([Promise.resolve().then(()=>(bw(),Rw)),Promise.resolve().then(()=>(yw(),Iw))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Lo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[D.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(vw(),gw)),Promise.resolve().then(()=>(Tw(),Sw))]):await Promise.all([Promise.resolve().then(()=>(bw(),Rw)),Promise.resolve().then(()=>(yw(),Iw))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=Yx({size:1});this._vertexBuffers[D.PositionKind]=new D(e,t.positions,D.PositionKind,!1),this._createIndexBuffer(),this._fillIndexData=t.indices,this.onResourcesReadyObservable.notifyObservers(this)}_createIndexBuffer(){let e=this.scene.getEngine();this._indexBuffer=e.createIndexBuffer([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,7,1,6,2,5,3,4])}rebuild(){let e=this._vertexBuffers[D.PositionKind];e&&e._rebuild(),this._createIndexBuffer(),this._matrixBuffer&&this._matrixBuffer._rebuild()}reset(){this.renderList.reset()}render(e){var r,s;if(this.renderList.length===0||!this.enabled)return;if(this._useInstances){this._renderInstanced(e);return}if(this._prepareResources(),!this._colorShader.isReady())return;let t=this.scene.getEngine();t.setDepthWrite(!1);let i=this.scene.getTransformMatrix();for(let a=0;ar*2)&&(i=new Float32Array(r),this._matrices=i),this.onBeforeBoxRenderingObservable.notifyObservers(aZ);let s=0,a=this.scene.floatingOriginOffset;for(let g=0;g{"use strict";ke();LL();Ht();Ao();lZ();Ds();Cv();By();ld=class ld{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new jr(b.Zero(),b.Zero(),1);this.lastOccluded=!1;this.selected=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.meshes=r,this.parts=Uge(i,r,s);for(let a of this.parts)for(let o of a.meshes)this.meshToPart.set(o.uniqueId,a);this.setBoundingBoxColor(ld.BBOX_VISIBLE)}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return Bge(e.node)||e.meshes.every(t=>t.isDisposed())}captureTransform(e){var t,i;return{parent:e.node.parent,position:e.node.position.clone(),rotation:e.node.rotation.clone(),rotationQuaternion:(i=(t=e.node.rotationQuaternion)==null?void 0:t.clone())!=null?i:null,scaling:e.node.scaling.clone()}}restoreTransform(e,t){var i,r;e.node.setParent(t.parent),e.node.position.copyFrom(t.position),e.node.rotation.copyFrom(t.rotation),e.node.rotationQuaternion=(r=(i=t.rotationQuaternion)==null?void 0:i.clone())!=null?r:null,e.node.scaling.copyFrom(t.scaling),e.node.computeWorldMatrix(!0);for(let s of e.meshes)s.computeWorldMatrix(!0)}subscribe(e){let t=this.scene.getEngine().getRenderingCanvas();t==null||t.classList.add("ai3d-disassembly-active");let i=this.scene.onPointerObservable.add(s=>{var o,l,c,f;let a=s.event;if(a.isPrimary!==!1){if(s.type===st.POINTERDOWN){if(a.button!==0)return;let d=(l=(o=s.pickInfo)==null?void 0:o.pickedMesh)!=null?l:null;if(this.partPointerActive=!!this.resolvePart(d),this.partPointerActive){a.preventDefault(),a.stopPropagation(),this.activePointerId=a.pointerId;try{(c=t==null?void 0:t.setPointerCapture)==null||c.call(t,a.pointerId)}catch(h){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===st.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===st.POINTERUP){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;if(this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerUp(a),this.activePointerId!==null&&((f=t==null?void 0:t.hasPointerCapture)!=null&&f.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(d){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}}}),r=this.scene.onAfterRenderCameraObservable.add(s=>{s===this.camera&&e.onRender()});return()=>{var s;if(this.scene.onPointerObservable.remove(i),this.scene.onAfterRenderCameraObservable.remove(r),t==null||t.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.activePointerId!==null&&((s=t==null?void 0:t.hasPointerCapture)!=null&&s.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(a){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(t,!0)}}resolvePart(e){var t;return wge(e)?this.parts.includes(e)?e:null:!e||typeof e!="object"?null:(t=this.meshToPart.get(e.uniqueId))!=null?t:null}setSelected(e){if(this.selected)for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!1);if(this.selected=e,this.lastOccluded=!1,this.setBoundingBoxColor(ld.BBOX_VISIBLE),this.selected&&!this.isDisposed(this.selected))for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!0)}beginDrag(e,t){var o,l,c;let i=this.getPointOnDragPlane(e,t);if(!i)return null;t.preventDefault(),t.stopPropagation(),(o=this.scene.getEngine().getRenderingCanvas())==null||o.classList.add("ai3d-disassembly-dragging"),e.node.setParent(null),e.node.computeWorldMatrix(!0);for(let f of e.meshes)f.computeWorldMatrix(!0);t.shiftKey&&!e.node.rotationQuaternion&&(e.node.rotationQuaternion=Xe.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=Pw(e),s=Ku(Qt(i),Qt(this.camera.getForwardRay().direction));if(!s)return null;let a={part:e,mode:t.shiftKey?"rotate":"move",plane:s,startPoint:i,startPosition:e.node.position.clone(),startRotationQuaternion:(c=(l=e.node.rotationQuaternion)==null?void 0:l.clone())!=null?c:null,pivot:r,pointerX:t.clientX,pointerY:t.clientY};return this.camera.detachControl(),a}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=i.subtract(e.startPoint);e.part.node.position=e.startPosition.add(r),e.part.node.computeWorldMatrix(!0);for(let s of e.part.meshes)s.computeWorldMatrix(!0)}endDrag(e){var t;(t=this.scene.getEngine().getRenderingCanvas())==null||t.classList.remove("ai3d-disassembly-dragging"),this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}updateSelectionOcclusion(e){let t=Pw(e),i=this.camera.position,r=df(Qt(i),Qt(t));if(!r)return;let s=this.occlusionDirection;s.set(r.direction.x,r.direction.y,r.direction.z),this.occlusionRay.origin=i,this.occlusionRay.direction=s,this.occlusionRay.length=r.distance;let a=this.scene.pickWithRay(this.occlusionRay),o=!!(a!=null&&a.hit)&&ff(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.setBoundingBoxColor(o?ld.BBOX_OCCLUDED:ld.BBOX_VISIBLE))}setBoundingBoxColor(e){var i,r;let t=(r=(i=this.scene).getBoundingBoxRenderer)==null?void 0:r.call(i);t&&(t.frontColor=e,t.backColor=e)}updateRotation(e,t){if(!e.startRotationQuaternion)return;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=LT({startPosition:Qt(e.startPosition),pivot:Qt(e.pivot),startRotationQuaternion:DT(e.startRotationQuaternion),yawAxis:Qt(this.camera.getDirection(b.Up()).normalize()),pitchAxis:Qt(this.camera.getDirection(b.Right()).normalize()),deltaX:i,deltaY:r,sensitivity:.01});if(s){e.part.node.position=new b(s.position.x,s.position.y,s.position.z),e.part.node.rotationQuaternion=new Xe(s.rotationQuaternion.x,s.rotationQuaternion.y,s.rotationQuaternion.z,s.rotationQuaternion.w),e.part.node.rotation.set(0,0,0),e.part.node.computeWorldMatrix(!0);for(let a of e.part.meshes)a.computeWorldMatrix(!0)}}getPointOnDragPlane(e,t){var s;let i=Pw(e),r=Ku(Qt(i),Qt(this.camera.getForwardRay().direction));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:i}getRayPlanePoint(e,t){let i=this.scene.getEngine().getRenderingCanvas();if(!i)return null;let r=i.getBoundingClientRect(),s=e.clientX-r.left,a=e.clientY-r.top,o=this.scene.createPickingRay(s,a,q.Identity(),this.camera),l=PT({origin:Qt(o.origin),direction:Qt(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};ld.BBOX_VISIBLE=new pe(.25,.7,1),ld.BBOX_OCCLUDED=new pe(.1,.25,.4);Dw=ld});var mZ={};Be(mZ,{BabylonModelPreview:()=>eM,createBabylonModelPreview:()=>jge});function Wge(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function Lw(n){return n.getClassName()==="GaussianSplattingMesh"}function Hge(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function hZ(n){return n instanceof Yt}function uZ(n){let e=n;return typeof e.isDisposed=="function"?e.isDisposed():!1}function Jb(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function Pv(n){return new b(n.x,n.y,n.z)}function zge(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function Xge(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}function Yge(n){var t,i;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return e==="jpg"||e==="jpeg"?"image/jpeg":e==="png"?"image/png":e==="bmp"?"image/bmp":e==="tga"?"image/x-tga":e==="webp"?"image/webp":`image/${e}`}function Kge(n,e,t){let i=Cs(e),r=i.replace(/\.[^.]+$/,""),s=tn(t),a=[ss(n,e),ss(n,i)];if(s)for(let o of dZ)a.push(ss(n,`${s}.${o}`));for(let o of dZ){let l=`${r}.${o}`;l!==i&&a.push(ss(n,l))}return a}function jge(n){return new eM(n)}var $b,dZ,Vge,Gge,kge,ma,eM,pZ=I(()=>{"use strict";qP();Bs();Hx();zx();rH();nH();ED();ke();Ht();Ci();yf();nL();Dc();HX();LL();nb();e8();lD();_p();Mv();Mv();qN();ZN();gq();jq();MT();sa();Ps();qq();fZ();Cv();il();NT();Ly();tg();Ds();GT();wy();$b=null,dZ=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Vge=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Gge=.242,kge=320;ma=class ma{constructor(e){this.rootMesh=null;this.loadedMeshes=[];this.loadedTransformNodes=[];this.cachedRenderableMeshes=null;this.cachedRenderableRoot=null;this.loadedExt="";this.rendering=!1;this.contextLost=!1;this.viewportVisible=!0;this.viewportObserver=null;this.cleanupPicking=null;this.configLights=[];this.shadowGenerator=null;this.groundMesh=null;this.gridMesh=null;this.axisMeshes=[];this.autoRotateBehavior=null;this.wireframeEnabled=!1;this.gizmo=null;this.gizmoEnabled=!1;this.disassembly=null;this.focusSelectionEnabled=!1;this.focusedNode=null;this.originalMeshVisibility=new Map;this.bboxMesh=null;this.bboxEnabled=!1;this.currentQuality="high";this.resourceWarnings=[];this.gltfComponentMetadata=new Map;this.animPlaying=!1;this.initialCamera={alpha:Math.PI/4,beta:Math.PI/3,radius:5,target:b.Zero()};this.focusWorldPointFrame=0;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},!this.measurementActive||(this.pendingPoint&&this.updatePreviewLine(),this.measurementMarkers.length===0))return;let t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top,a=this.scene.pick(r,s,l=>this.measurementMarkers.includes(l)),o=a.hit?this.measurementMarkers.indexOf(a.pickedMesh):-1;if(o!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&o{e.preventDefault(),e.stopPropagation()};this.handleViewportIntersection=e=>{let t=e.some(i=>i.isIntersecting);t!==this.viewportVisible&&(this.viewportVisible=t,t?this.startRenderLoop():this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1))};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop()};this.engine=new Ve(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ei(this.engine),this.scene.clearColor=new lt(.12,.12,.14,1),this.camera=new gi("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=30,e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene.ambientColor=new pe(.3,.3,.3);let t=new fa("default-light",new b(0,1,.5),this.scene);t.intensity=1.2,this.resizeObs=new ResizeObserver(()=>this.engine.resize()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=cZ(this.scene,this.camera,this.rootMesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)),this.disassembly):null}isDisassemblyActive(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}async loadModel(e,t,i,r){var d,h,u;if(await bv(),this.rootMesh){let m=this.rootMesh;m.dispose(!0,!0);for(let _ of this.loadedMeshes)_!==m&&!_.isDisposed()&&_.dispose(!0,!0);this.rootMesh=null}this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),(d=this.disassembly)==null||d.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let s=t.toLowerCase().replace(".","");this.loadedExt=s,this.resourceWarnings=[],this.gltfComponentMetadata=pq(e,s);let a=this.scene,l=(h={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[s])!=null?h:`.${s}`,c=`data:application/octet-stream;base64,${Xd(e)}`;if(s==="obj"&&i&&r){$b&&await $b;let m;$b=new Promise(_=>{m=_});try{let{OBJFileLoader:_}=await Promise.resolve().then(()=>(KN(),iq)),p=_.prototype;typeof p._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let g=p._loadMTL,x=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),S=null;if(x&&i&&r){let T=zge(x[1]),R=$_(r),M=ss(R,T);try{let y=await i(M),L=new TextDecoder().decode(new Uint8Array(y)).split(` +`);for(let O=0;OO!=="");if(!w.some(O=>/^\s*Kd\s+/i.test(O))){let O=w.findIndex(N=>/^\s*newmtl\s+/i.test(N));w.splice(O>=0?O+1:0,0,"Kd 0.80 0.80 0.80")}S=w.join(` +`)}catch(y){this.resourceWarnings.push(`OBJ material library not found: ${M}`)}}p._loadMTL=function(T,R,M){let y=S!=null?S:"";M(y)};let E=await mv(c,a,{meshNames:"",pluginExtension:l});this.loadedMeshes=E.meshes,this.loadedTransformNodes=E.transformNodes,E.meshes.length>0&&(this.rootMesh=E.meshes[0]),p._loadMTL=g}catch(_){throw console.error("[AI3D] OBJ load error:",_),_}finally{m(),$b=null}}else if(s==="stl")this.rootMesh=aq(a,e),this.rootMesh&&(this.loadedMeshes=[this.rootMesh]);else if(s==="ply")this.rootMesh=lq(a,e),this.rootMesh&&(this.loadedMeshes=[this.rootMesh]);else{let m=await mv(c,a,{meshNames:"",pluginExtension:l});this.loadedMeshes=m.meshes,this.loadedTransformNodes=m.transformNodes,m.meshes.length>0&&(this.rootMesh=m.meshes[0])}if(!this.rootMesh)throw new Error("No mesh found in model file");for(let m of this.getRenderableMeshes(this.rootMesh))m.material&&(m.material.backFaceCulling=!1);let f=OT(this.getRenderableBounds(this.rootMesh));return this.camera.target=Pv(f.target),this.camera.radius=f.radius,this.camera.lowerRadiusLimit=f.lowerRadiusLimit,this.camera.upperRadiusLimit=f.upperRadiusLimit,this.camera.minZ=f.near,this.camera.maxZ=f.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.startRenderLoop(),this.engine.resize(),(u=this.cleanupPicking)==null||u.call(this),this.cleanupPicking=Kq(this.scene,m=>{if(this.isDisassemblyActive())return;if(this.measurementActive&&m.pickedPoint){this.addMeasurementPoint(Pv(m.pickedPoint));return}let _=m.mesh&&this.rootMesh?yv(this.rootMesh,m.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,p={mesh:_,pickedPoint:m.pickedPoint,screenX:m.screenX,screenY:m.screenY};this._lastPickResult=p,this.focusSelectionEnabled&&_&&this.setFocusedNode(_),this._onPickCallbacks.forEach(g=>g(p))},()=>!this.focusSelectionEnabled,m=>this.resolvePickHighlightMeshes(m)),this.ensureDisassemblyController(),this.createModelSummary(this.rootMesh)}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.loadedExt==="stl"&&(e.stl.color&&this.setSTLColor(e.stl.color),e.stl.wireframe!==void 0&&this.setWireframe(e.stl.wireframe))}applyCameraConfig(e){var i;let t=this.engine.getRenderingCanvas();if(t){if(e.mode==="orthographic"){let r=this.camera.radius,s=t.clientWidth/t.clientHeight,a=(i=e.zoom)!=null?i:1,o=r/a;this.camera.mode=1,this.camera.orthoLeft=-o*s,this.camera.orthoRight=o*s,this.camera.orthoTop=o,this.camera.orthoBottom=-o}else this.camera.mode=0,e.fov&&(this.camera.fov=e.fov*Math.PI/180);if(e.position){let[r,s,a]=e.position;this.camera.setPosition(new b(r,s,a))}if(e.lookAt){let[r,s,a]=e.lookAt;this.camera.setTarget(new b(r,s,a))}e.near!==void 0&&(this.camera.minZ=e.near),e.far!==void 0&&(this.camera.maxZ=e.far)}}applyLightConfig(e){var i;for(let r of this.configLights)r.dispose();this.configLights=[],(i=this.shadowGenerator)==null||i.dispose(),this.shadowGenerator=null;let t=this.scene.getLightByName("default-light");t&&t.dispose();for(let r of e){let s=this.createLight(r);s&&this.configLights.push(s)}}createLight(e){var r,s;let t=e.color?pe.FromHexString(e.color):pe.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?pe.FromHexString(e.groundColor):new pe(.2,.2,.2),o=new fa("hemi",new b(0,1,0),this.scene);return o.diffuse=t,o.groundColor=a,o.intensity=i,o}case"directional":{let a=e.position?new b(...e.position).normalize():new b(-1,-2,-1).normalize(),o=new Ws("dir",a,this.scene);return o.diffuse=t,o.intensity=i,e.castShadow&&this.rootMesh&&this.setupShadow(o),o}case"point":{let a=e.position?new b(...e.position):new b(0,5,0),o=new Vf("point",a,this.scene);return o.diffuse=t,o.intensity=i,e.decay!==void 0&&(o.decay=e.decay),o}case"spot":{let a=e.position?new b(...e.position):new b(0,5,0),l=(e.target?new b(...e.target):b.Zero()).subtract(a).normalize(),c=e.angle?e.angle*Math.PI/180:Math.PI/4,f=(s=e.penumbra)!=null?s:.5,d=new Wr("spot",a,l,c,f,this.scene);return d.diffuse=t,d.intensity=i,e.decay!==void 0&&(d.decay=e.decay),e.castShadow&&this.rootMesh&&this.setupShadow(d),d}case"attachToCam":{let a=new Vf("cam-light",b.Zero(),this.scene);return a.diffuse=t,a.intensity=i,a.parent=this.camera,a}default:return null}}setupShadow(e){if(!this.rootMesh)return;if(!Wge(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Pi(1024,e);t.useBlurExponentialShadowMap=!0,t.blurKernel=32;for(let i of this.getRenderableMeshes(this.rootMesh))t.addShadowCaster(i),i.receiveShadows=!0;this.shadowGenerator=t}applySceneConfig(e){var t,i;if(e.background!==void 0){let r=lt.FromColor3(pe.FromHexString(e.background),e.transparent?0:1);this.scene.clearColor=r}e.autoRotate&&(this.autoRotateBehavior?this.autoRotateBehavior.idleRotationSpeed=(i=e.autoRotateSpeed)!=null?i:.5:(this.autoRotateBehavior=new ep,this.autoRotateBehavior.idleRotationSpeed=(t=e.autoRotateSpeed)!=null?t:.5,this.autoRotateBehavior.idleRotationWaitTime=1e3,this.autoRotateBehavior.idleRotationSpinupTime=500,this.camera.addBehavior(this.autoRotateBehavior))),e.groundShadow&&this.rootMesh&&this.createGround(),e.grid&&this.createGrid(),e.axis&&this.createAxis()}createGround(){if(!this.rootMesh||this.groundMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=ji(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=hs.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new We("ground-mat",this.scene);s.diffuseColor=new pe(.15,.15,.15),s.specularColor=pe.Black(),s.alpha=.5,this.groundMesh.material=s,this.groundMesh.receiveShadows=!0}createGrid(){if(!this.rootMesh||this.gridMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=ji(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=hs.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new We("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new pe(.3,.3,.3),s.emissiveColor=new pe(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=d2(e)*1.5,i=Pv(e.min),r=eg(e)*.01,s=[["x",pe.Red(),new b(t,0,0)],["y",pe.Green(),new b(0,t,0)],["z",pe.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=hs.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new We(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=pe.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=pe.FromHexString(e);for(let i of this.getRenderableMeshes(this.rootMesh))if(i.material&&i.material.name==="stl-mat"){let r=i.material;r.diffuseColor=t,r.emissiveColor=t.scale(.1)}}setWireframe(e){this.rootMesh&&(Lw(this.rootMesh)||(this.wireframeEnabled=e,this.scene.forceWireframe=e))}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}hasAnimations(){return this.scene.animationGroups.length>0}toggleAnimation(){let e=this.scene.animationGroups;if(e.length===0)return!1;this.animPlaying=!this.animPlaying;for(let t of e)this.animPlaying?t.play(!0):t.pause();return this.animPlaying}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.measurementActive||this.cancelPendingMeasurement(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){e&&(this.measurementActive=!1),this.cancelPendingMeasurement(!1);for(let t of this.measurementSegments)t.line.dispose(!1,!0),t.label.dispose(!1,!0);this.measurementSegments=[];for(let t of this.measurementMarkers)t.dispose(!1,!0);this.measurementMarkers=[]}setMeasurementScale(e){this.measurementScale=ng(e),this.updateMeasurementLabels()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=zT(e),this.updateMeasurementLabels()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootMesh)return null;let e=this.getRenderableBounds(this.rootMesh);return e?{x:e.max.x-e.min.x,y:e.max.y-e.min.y,z:e.max.z-e.min.z}:null}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return YT(this.createMeasurementRecords())}updateMeasurementLabels(){if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let t of this.measurementSegments){let i=qu(this.createMeasurementReading(t.start,t.end));t.label.dispose(!1,!0);let r=b.Center(t.start,t.end);t.label=this.createMeasurementLabelMesh(i,r,e)}}setAnimationSpeed(e){for(let t of this.scene.animationGroups)t.speedRatio=e}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.scene.render(),e.toDataURL("image/png")):null}toggleOrientationGizmo(){return this.gizmoEnabled=!this.gizmoEnabled,this.gizmoEnabled&&!this.gizmo&&(this.gizmo=new Zb(this.engine,this.camera)),this.gizmoEnabled}isOrientationGizmoEnabled(){return this.gizmoEnabled}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i={low:2,medium:1.33,high:1}[this.currentQuality],r=gr()?1.5:1;return this.engine.setHardwareScalingLevel(i*r/t),t}getPerformanceSnapshot(){return{backend:"babylon",renderScale:Number((1/this.engine.getHardwareScalingLevel()).toFixed(2)),quality:this.currentQuality,meshCount:this.rootMesh?this.getRenderableMeshes(this.rootMesh).length:0}}toggleBoundingBox(){var e;if(this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled){if(!this.rootMesh)return this.bboxEnabled;this.bboxMesh&&this.bboxMesh.dispose();let t=this.getRenderableBounds(this.rootMesh),i=Pv(vr(t)),r=Pv(ji(t));this.bboxMesh=hs.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new We("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new pe(1,1,0),s.disableLighting=!0,s.alpha=.6,this.bboxMesh.material=s}else(e=this.bboxMesh)==null||e.dispose(),this.bboxMesh=null;return this.bboxEnabled}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1)),this.focusSelectionEnabled=e,this.focusSelectionEnabled?this._lastPickResult.mesh&&this.setFocusedNode(this._lastPickResult.mesh):this.clearFocusedMesh(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}toggleDisassembly(){let e=this.ensureDisassemblyController();if(!e)return!1;let t=!e.isEnabled();return t&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&_q(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&tw(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&tw(this.rootMesh,this.loadedMeshes),this.resetDisassembly(),this.clearFocusedMesh(),this.camera.mode=0,this.camera.alpha=this.initialCamera.alpha,this.camera.beta=this.initialCamera.beta,this.camera.radius=this.initialCamera.radius,this.camera.target=this.initialCamera.target.clone()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=Lw(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Cs(e)||r.rootName;return UT({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>hq(a,{isSplat:i})),materialNames:t.map(a=>{var o;return(o=a.material)==null?void 0:o.name})})}getModelEvidence(){if(!this.rootMesh)return null;let e=this.getRenderableMeshes(this.rootMesh),t=mq(e,this.loadedTransformNodes,this.gltfComponentMetadata);return HT({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>$N(i,this.gltfComponentMetadata),getMeshMaterialNames:i=>{var r;return[(r=i.material)==null?void 0:r.name]},resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var t;if(!this.rootMesh)return null;let e=(t=this.focusedNode)!=null?t:hZ(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||uZ(e)?null:JN(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?VT(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Qt(e.pickedPoint):this.rootMesh&&hZ(e.mesh)?JN(e.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata).center:null}focusWorldPoint(e){let t=new b(e.x,e.y,e.z),i=this.camera.target.clone(),r=performance.now();this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0);let s=a=>{let o=Math.min(1,Math.max(0,(a-r)/kge)),l=o<.5?4*o*o*o:1-Math.pow(-2*o+2,3)/2;if(this.camera.target=b.Lerp(i,t,l),o<1&&!this.scene.isDisposed){this.focusWorldPointFrame=window.requestAnimationFrame(s);return}this.focusWorldPointFrame=0};this.focusWorldPointFrame=window.requestAnimationFrame(s)}getAnnotationCameraStateKey(){return WT([{value:this.camera.alpha,digits:3},{value:this.camera.beta,digits:3},{value:this.camera.radius,digits:3},{value:this.camera.target.x,digits:2},{value:this.camera.target.y,digits:2},{value:this.camera.target.z,digits:2}])}projectAnnotationWorldPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.scene.isDisposed)return!1;let r=this.engine.getRenderWidth(),s=this.engine.getRenderHeight();if(r===0||s===0||i.clientWidth===0||i.clientHeight===0)return!1;let a=ma.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,ma.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),ma.annotationProjection),E2(ma.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=df(Qt(this.camera.position),e);if(!t)return!1;let i=ma.annotationDirection,r=ma.annotationRay;i.set(t.direction.x,t.direction.y,t.direction.z),r.origin=this.camera.position,r.direction=i,r.length=t.distance;let s=this.scene.pickWithRay(r);return!!(s!=null&&s.hit)&&ff(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return kT({canvas:e,observeRender:t=>{let i=this.scene.onAfterRenderCameraObservable.add(r=>{r===this.camera&&t()});return{remove:()=>this.scene.onAfterRenderCameraObservable.remove(i)}},getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}getCanvas(){return this.engine.getRenderingCanvas()}getLastPickResult(){return this._lastPickResult}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}setRenderQuality(e,t=1){this.currentQuality=e;let i={low:2,medium:1.33,high:1},r=gr()?1.5:1,s=i[e]*r/Math.max(t,.25);if(this.engine.setHardwareScalingLevel(s),this.shadowGenerator){let a={low:0,medium:16,high:32};this.shadowGenerator.blurKernel=a[e],e==="low"?(this.shadowGenerator.useBlurExponentialShadowMap=!1,this.shadowGenerator.useExponentialShadowMap=!0):(this.shadowGenerator.useBlurExponentialShadowMap=!0,this.shadowGenerator.useExponentialShadowMap=!1)}}destroy(){var t,i,r,s,a,o,l,c;this.engine.stopRenderLoop(),this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0),this._onPickCallbacks=[],(t=this.cleanupPicking)==null||t.call(this),this.cleanupPicking=null,(i=this.gizmo)==null||i.dispose(),this.gizmo=null,(r=this.disassembly)==null||r.dispose(),this.disassembly=null,this.disposeMeasurementOverlays(!0),this.clearFocusedMesh(),this.originalMeshVisibility.clear(),(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,this.camera.detachControl();let e=this.engine.getRenderingCanvas();e==null||e.removeEventListener("wheel",this.preventCanvasWheelScroll),e==null||e.removeEventListener("pointermove",this.handlePointerMove),e==null||e.removeEventListener("webglcontextlost",this.handleContextLost),e==null||e.removeEventListener("webglcontextrestored",this.handleContextRestored),(a=this.viewportObserver)==null||a.disconnect(),this.viewportObserver=null,this.resizeObs.disconnect(),this.invalidateMeshCache(),this.rootMesh=null,this.loadedMeshes=[],this.loadedTransformNodes=[],this.autoRotateBehavior&&(this.camera.removeBehavior(this.autoRotateBehavior),this.autoRotateBehavior=null);for(let f of this.configLights)f.dispose();this.configLights=[],(o=this.shadowGenerator)==null||o.dispose(),this.shadowGenerator=null,(l=this.groundMesh)==null||l.dispose(),this.groundMesh=null,(c=this.gridMesh)==null||c.dispose(),this.gridMesh=null;for(let f of this.axisMeshes)f.dispose();this.axisMeshes=[],this.scene.dispose(),this.engine.dispose()}startRenderLoop(){this.rendering||!this.viewportVisible||this.contextLost||(this.rendering=!0,this.engine.runRenderLoop(()=>{if(!this.canRender()||!this.viewportVisible||this.contextLost){this.engine.stopRenderLoop(),this.rendering=!1;return}this.scene.render(),this.gizmo&&this.gizmoEnabled&&(this.gizmo.syncWith(this.camera),this.gizmo.render())}))}getRenderableMeshes(e){if(this.cachedRenderableMeshes&&this.cachedRenderableRoot===e)return this.cachedRenderableMeshes;let t=Nh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return Ub(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=yv(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>Jb(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||uZ(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>Jb(a,t));if(r.length===0){this.clearFocusedMesh();return}let s=new Set(r);for(let a of i){this.originalMeshVisibility.has(a.uniqueId)||this.originalMeshVisibility.set(a.uniqueId,a.visibility);let o=s.has(a);a.visibility=o?1:Gge,a.renderOutline=o,a.outlineColor=new pe(.18,.76,1),a.outlineWidth=o?.045:0}this.focusedNode=t}clearFocusedMesh(){if(!this.rootMesh){this.focusedNode=null;return}for(let e of this.getRenderableMeshes(this.rootMesh)){let t=this.originalMeshVisibility.get(e.uniqueId);t!==void 0&&(e.visibility=t),e.renderOutline=!1,e.outlineWidth=0}this.originalMeshVisibility.clear(),this.focusedNode=null}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>Jb(r,e)))return e;if(!Hge(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>Jb(s,r)))return r;i=i.parent}return null}getMeasurementMarkerSize(){if(!this.rootMesh)return .02;let e=this.getRenderableBounds(this.rootMesh);return e?Math.max(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z,.001)*.015:.02}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),t.material.diffuseColor=new pe(1,.42,.42),t.material.emissiveColor=new pe(1,.42,.42));e&&this.scene.render()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>b.Distance(t.start,e)<1e-4||b.Distance(t.end,e)<1e-4)}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(b.Distance(i,this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=hs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1;let a=new We("measure-marker-mat",this.scene);a.diffuseColor=new pe(1,.42,.42),a.emissiveColor=new pe(1,.42,.42),s.material=a,s.renderingGroupId=2,this.measurementMarkers.push(s)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),this.pendingMarker.material.diffuseColor=new pe(1,.42,.42),this.pendingMarker.material.emissiveColor=new pe(1,.42,.42)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=hs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1;let a=new We("measure-marker-mat",this.scene);a.diffuseColor=new pe(1,.42,.42),a.emissiveColor=new pe(1,.42,.42),s.material=a,s.renderingGroupId=2,this.measurementMarkers.push(s),this.pendingMarker=s}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scaling.setAll(1.6),this.pendingMarker.material.diffuseColor=new pe(.32,.81,.4),this.pendingMarker.material.emissiveColor=new pe(.32,.81,.4),this.pendingPoint=i,this.ensurePreviewLine()}}createMeasurementSegment(e,t){let i=hs.CreateLines("measure-line",{points:[e,t]},this.scene);i.color=new pe(1,.42,.42),i.isPickable=!1,i.renderingGroupId=2;let r=qu(this.createMeasurementReading(e,t)),s=b.Center(e,t),a=this.createMeasurementLabelMesh(r,s,this.getMeasurementMarkerSize()*4);this.measurementSegments.push({start:e,end:t,line:i,label:a})}createMeasurementLabelMesh(e,t,i){let r=hs.CreatePlane("measure-label",{width:i*5,height:i*1.25},this.scene);r.position=t,r.billboardMode=Z.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new JR("measure-label-tex",{width:640,height:160},this.scene),a=s.getContext();a.fillStyle="rgba(32, 36, 46, 0.9)",a.fillRect(0,0,640,160),a.strokeStyle="#ff6b6b",a.lineWidth=4,a.strokeRect(0,0,640,160),a.fillStyle="#ffffff",a.textAlign="center",a.textBaseline="middle",a.font="bold 46px sans-serif",a.fillText(e.primary,320,58),a.font="28px sans-serif",a.fillStyle="rgba(255, 255, 255, 0.82)",a.fillText(e.secondary,320,112),s.update();let o=new We("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new pe(1,1,1),o.disableLighting=!0,o.opacityTexture=s,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=hs.CreateLines("measure-preview",{points:[b.Zero(),b.Zero()],updatable:!0},this.scene),this.previewLine.color=new pe(1,1,1),this.previewLine.alpha=.5,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.engine.getRenderingCanvas();if(!e)return;let t=e.getBoundingClientRect(),i=this.lastPointerClient.x-t.left,r=this.lastPointerClient.y-t.top,s=this.scene.pick(i,r,o=>o!==this.previewLine&&!this.measurementMarkers.includes(o)),a;if(s.hit&&s.pickedPoint)a=s.pickedPoint;else{let o=this.scene.createPickingRay(i,r,q.Identity(),this.camera);a=this.pendingPoint.add(o.direction.scale(5))}this.previewLine=hs.CreateLines("measure-preview",{points:[this.pendingPoint,a],instance:this.previewLine},this.scene),this.previewLine.color=new pe(1,1,1),this.previewLine.alpha=.5,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return XT(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}createModelSummary(e){let t=this.getRenderableMeshes(e),i=Lw(e),r=t.reduce((s,a)=>s+sd(a),0);return Vb(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};ma.annotationIdentity=q.Identity(),ma.annotationWorldPoint=b.Zero(),ma.annotationProjection=b.Zero(),ma.annotationDirection=b.Zero(),ma.annotationRay=new jr(b.Zero(),b.Zero(),1);eM=ma});async function _Z(n,e){if(Kh(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(z2(),H2));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(pZ(),mZ));return i(n)}var gZ=I(()=>{"use strict";oE()});var vZ={};Be(vZ,{createBabylonGridRenderer:()=>Zge});function qge(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function Ow(n){return new b(n.x,n.y,n.z)}function Zge(n){return new Nw(n)}var yp,Nw,EZ=I(()=>{"use strict";qP();Bs();Hx();zx();ke();Ht();_m();_p();yf();Dc();Mv();Mv();Cv();MT();sa();il();NT();yp=32;Nw=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.preventCanvasWheelScroll=e=>{e.preventDefault(),e.stopPropagation()};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop(),this.markDirty()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new Ve(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ei(this.engine),this.scene.clearColor=new lt(.12,.12,.14,1),this.scene.autoClear=!1,new fa("default-light",new b(0,1,.5),this.scene),this.resizeObs=new ResizeObserver(()=>{this.engine.resize(),this.markDirty()}),this.resizeObs.observe(e),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}markDirty(){this.dirty=!0}getCellBounds(e){let t=ad(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,h,u;await bv();let r=e.length>yp?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${yp} (layerMask limit)`),e.slice(0,yp)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(h=t.gapX)!=null?h:.02,o=(u=t.gapY)!=null?u:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;myp?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${yp} (layerMask limit)`),e.placements.slice(0,yp)):e.placements,r=[];for(let f=0;f0&&(h.push(...r[_]),u|=1<<_)}else h=d?[...d]:[],u=1<this.markDirty())),this.initialCameras.push({alpha:f.alpha,beta:f.beta,radius:f.radius,target:f.target.clone()}),f}async loadOne(e,t,i,r,s,a,o){var h,u;let l=await t(e.path),c=(u=(h=e.path.split(".").pop())==null?void 0:h.replace(".","").toLowerCase())!=null?u:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=pe.FromHexString(e.color);for(let _ of f)_.material instanceof We&&_.material.name==="stl-mat"&&(_.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof We&&(m.material.wireframe=e.wireframe);let d=this.createCellCamera(f,o,i,r,s,a);this.cells.push({meshes:f,camera:d})}createCellCamera(e,t,i,r,s,a){let o=OT(this.getCellBounds(e)),l=new gi(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,Ow(o.target),this.scene);l.fov=45*Math.PI/180,l.minZ=o.near,l.maxZ=o.far,l.lowerRadiusLimit=o.lowerRadiusLimit,l.upperRadiusLimit=o.upperRadiusLimit,l.wheelPrecision=30,l.viewport=new go(i,r,s,a),l.layerMask=1<this.markDirty())),this.initialCameras.push({alpha:l.alpha,beta:l.beta,radius:l.radius,target:l.target.clone()}),l}renderFrame(){if(!this.canRender()||!this.dirty||this.contextLost)return;this.dirty=!1;let e=this.engine,t=this.scene;e.clear(t.clearColor,!0,!0);for(let i of this.cells){e.setViewport(i.camera.viewport);let r=i.camera.viewport,s=e.getRenderWidth(),a=e.getRenderHeight();e.enableScissor(r.x*s,r.y*a,r.width*s,r.height*a),t.activeCamera=i.camera,t.render(),e.disableScissor()}}startRenderLoop(){this.rendering||(this.rendering=!0,this.engine.runRenderLoop(()=>this.renderFrame()))}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.renderFrame(),e.toDataURL("image/png")):null}getEngine(){return this.engine}getScene(){return this.scene}getCellCount(){return this.cells.length}getCanvas(){return this.engine.getRenderingCanvas()}getPrimaryCamera(){var e,t;return(t=(e=this.cells[0])==null?void 0:e.camera)!=null?t:null}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i=gr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),t}resetView(){for(let e=0;e(EZ(),vZ));return e(n)}var TZ=I(()=>{"use strict"});var RZ={};Be(RZ,{createLoggedGridRenderer:()=>ww,createLoggedModelPreview:()=>Cp,logGridPreviewSelection:()=>xZ,logModelPreviewSelection:()=>AZ});function AZ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason,ext:t.ext,annotationMode:t.annotationMode,requireWorkbenchFeatures:t.requireWorkbenchFeatures,rendererRollout:t.rendererRollout})}async function Cp(n,e,t,i){let r=Kh(i);return AZ(n,e,r),{preview:await _Z(t,i),route:r}}function xZ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function ww(n,e,t){let i=E1();return xZ(n,e,i),{renderer:await SZ(t),route:i}}var tM=I(()=>{"use strict";gZ();TZ();oE()});function Fw(n){MZ=n}function iM(n){return bZ[n]>=bZ[MZ]}function rM(){return new Date().toISOString()}function nM(n){return n&&Object.keys(n).length>0?n:void 0}function Hi(n){let e=`[AI3D][${n}]`;return{debug(t,i){iM("debug")&&console.debug(e,rM(),t,nM(i))},info(t,i){iM("info")&&console.debug(e,rM(),t,nM(i))},warn(t,i){iM("warn")&&console.warn(e,rM(),t,nM(i))},error(t,i){iM("error")&&console.error(e,rM(),t,nM(i))}}}var bZ,MZ,Mn=I(()=>{"use strict";bZ={debug:10,info:20,warn:30,error:40},MZ="warn"});var yZ={};Be(yZ,{supportsAnimationPreview:()=>aM,supportsAnnotationPreview:()=>sM,supportsBoundingBoxPreview:()=>lM,supportsDisassemblyPreview:()=>Pp,supportsFocusSelectionPreview:()=>Dp,supportsMeasurementPreview:()=>gn,supportsOrientationGizmoPreview:()=>Dv,supportsRenderScalePreview:()=>cM,supportsWireframePreview:()=>oM,supportsWorkbenchPreview:()=>IZ});function _r(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function sM(n){return _r(n,"getAnnotationProvider")}function aM(n){return _r(n,"hasAnimations")&&_r(n,"toggleAnimation")}function gn(n){return _r(n,"toggleMeasurement")&&_r(n,"isMeasurementActive")&&_r(n,"clearMeasurements")&&_r(n,"setMeasurementScale")&&_r(n,"getMeasurementScale")&&_r(n,"setMeasurementUnit")&&_r(n,"getMeasurementUnit")&&_r(n,"getMeasurementBounds")&&_r(n,"getMeasurementRecords")&&_r(n,"updateMeasurementLabels")&&_r(n,"exportMeasurements")}function Pp(n){return _r(n,"toggleDisassembly")&&_r(n,"resetDisassembly")&&_r(n,"isDisassemblyEnabled")}function Dp(n){return _r(n,"toggleFocusSelection")&&_r(n,"isFocusSelectionEnabled")}function oM(n){return _r(n,"toggleWireframe")}function Dv(n){return _r(n,"toggleOrientationGizmo")}function lM(n){return _r(n,"toggleBoundingBox")}function cM(n){return _r(n,"setRenderScale")}function IZ(n){return _r(n,"setExplode")&&_r(n,"resetExplode")&&_r(n,"focusWorldPoint")}var Lp=I(()=>{"use strict"});function Dr(n){let e=createSvg("svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("width","16"),e.setAttribute("height","16");let t=new DOMParser().parseFromString(`${n}`,"image/svg+xml");for(let i of Array.from(t.documentElement.childNodes))e.appendChild(activeDocument.importNode(i,!0));return e}function CZ(n){var a,o;let[e,t]=n.split(","),i=(o=(a=e.match(/:(.*?);/))==null?void 0:a[1])!=null?o:"image/png",r=atob(t),s=new Uint8Array(r.length);for(let l=0;l{re.stopPropagation()};h.addEventListener("pointerdown",p),h.addEventListener("mousedown",p),h.addEventListener("click",p),f&&(h.classList.add("is-mobile"),PZ(e,!1));let g=re=>(re.classList.add("is-secondary"),re),v=(re,K)=>{re.classList.toggle("ai3d-btn-active",K),re.setAttribute("aria-pressed",String(K))},x=()=>{for(let re of[u,m,_]){let K=Array.from(re.querySelectorAll(".ai3d-inline-btn")).filter(je=>!je.classList.contains("is-hidden")),De=K.length>0,xe=K.some(je=>!je.classList.contains("is-secondary"));re.classList.toggle("is-hidden",!De),re.classList.toggle("has-primary-visible",xe)}},S=!1,E=!1,T=f?u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":j("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;T==null||T.appendChild(Dr(''));let R=(Wt=T==null?void 0:T.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?Wt:null,M=()=>{f&&T&&(PZ(e,S),v(T,S),R==null||R.setText(S?j("helper.scrollAction"):j("helper.interactAction")),T.setAttribute("aria-label",S?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))),v(Jt,E),h.classList.toggle("show-secondary",E),x()},y=re=>{S=re,M()};T==null||T.addEventListener("click",()=>{let re=!S;l==null||l(re),y(re),bi(T,re?j("helper.interactionOn"):j("helper.interactionOff"))});let C=(re,K)=>{re.classList.toggle("is-hidden",!K)},L=null,w=()=>{var je;let re=i(),K=re&&Dp(re)?re:null,De=re&&Pp(re)?re:null,xe=re&&gn(re)?re:null;v(te,!!(K!=null&&K.isFocusSelectionEnabled())),v(X,!!(De!=null&&De.isDisassemblyEnabled())),v(me,!!(xe!=null&&xe.isMeasurementActive())),re&&Dv(re)&&v(J,!!((je=re.isOrientationGizmoEnabled)!=null&&je.call(re)))},G=()=>{let re=i(),K=re&&Dp(re)?re:null,De=re&&Pp(re)?re:null,xe=re&&aM(re)?re:null;re!==L&&(L=re,v(V,!1),v(Q,!1),v(ae,!1),ae.replaceChildren(Dr('')),C(O,!!(re!=null&&re.resetView)),C(N,!!(re!=null&&re.exportModelInfo)),C(B,!!(re!=null&&re.exportSelectedPartInfo)),C(V,!!re&&oM(re)),C(J,!!re&&Dv(re)),C(Q,!!re&&lM(re)),C(te,!!K),C(X,!!De),C(Ue,!!re&&cM(re)),C(ae,!!(xe!=null&&xe.hasAnimations()))),C(me,!!re&&gn(re)),C(ne,!!re&&gn(re)),C(fe,!!re&&gn(re)),C(Pe,!!re&&gn(re)),w(),x()},O=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.resetViewLabel")}});cn(O,"reset-view"),O.appendChild(Dr('')),O.addEventListener("click",()=>{let re=i();re!=null&&re.resetView&&(re.resetView(),G(),bi(O,j("helper.resetViewDone")))});let N=g(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copyModelInfoLabel")}}));cn(N,"copy-model-info"),N.appendChild(Dr('')),N.addEventListener("click",()=>{let re=i();if(re!=null&&re.exportModelInfo)try{let K=re.exportModelInfo(r());if(!K)return;navigator.clipboard.writeText(K).then(()=>{bi(N,j("helper.copied"))}).catch(()=>{bi(N,j("helper.failed"))})}catch(K){console.error("[AI3D] Export model info failed:",K),bi(N,j("helper.failed"))}});let B=g(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySelectedPartInfoLabel")}}));cn(B,"copy-selected-part-info"),B.appendChild(Dr('')),B.addEventListener("click",()=>{let re=i();if(re!=null&&re.exportSelectedPartInfo)try{let K=re.exportSelectedPartInfo();if(!K){bi(B,j("helper.noSelectedPart"));return}navigator.clipboard.writeText(K).then(()=>{bi(B,j("helper.copied"))}).catch(()=>{bi(B,j("helper.failed"))})}catch(K){console.error("[AI3D] Export selected part info failed:",K),bi(B,j("helper.failed"))}});let V=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleWireframeLabel"),"aria-pressed":"false"}});cn(V,"toggle-wireframe"),V.appendChild(Dr('')),V.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleWireframe))return;let K=re.toggleWireframe();v(V,K),bi(V,K?j("helper.wireframeOn"):j("helper.wireframeOff"))});let J=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleAxesLabel"),"aria-pressed":"false"}});cn(J,"toggle-axes"),J.appendChild(Dr('')),J.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleOrientationGizmo))return;let K=re.toggleOrientationGizmo();v(J,K),bi(J,K?j("helper.axesOn"):j("helper.axesOff"))});let Q=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});cn(Q,"toggle-bounding-box"),Q.appendChild(Dr('')),Q.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleBoundingBox))return;let K=re.toggleBoundingBox();v(Q,K),bi(Q,K?j("helper.boundingBoxOn"):j("helper.boundingBoxOff"))});let te=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});cn(te,"toggle-focus"),te.appendChild(Dr('')),te.addEventListener("click",()=>{let re=i();if(!re||!Dp(re))return;let K=re.toggleFocusSelection();G(),bi(te,K?j("helper.focusSelectionOn"):j("helper.focusSelectionOff"))});let X=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});cn(X,"toggle-disassembly"),X.appendChild(Dr('')),X.addEventListener("click",()=>{let re=i();if(!re||!Pp(re))return;let K=re.toggleDisassembly();G(),bi(X,K?j("helper.disassemblyOn"):j("helper.disassemblyOff"))});let Y=[.5,.75,1,1.5,2],ve=(qt=a==null?void 0:a().renderScale)!=null?qt:1,Ee=Y.reduce((re,K,De)=>{let xe=Math.abs(K-ve),je=Math.abs(Y[re]-ve);return xe{let re=i();if(!(re!=null&&re.setRenderScale))return;Ee=(Ee+1)%Y.length;let K=re.setRenderScale(Y[Ee]);Ue.textContent=`${K.toFixed(1)}x`,bi(Ue,qi("helper.resolutionValue",{value:`${K}x`}))});let ae=g(u.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));cn(ae,"toggle-animation"),ae.appendChild(Dr('')),ae.addEventListener("click",()=>{let re=i();if(!(re!=null&&re.toggleAnimation))return;let K=re.toggleAnimation();ae.replaceChildren(Dr(K?'':'')),v(ae,K),bi(ae,K?j("helper.playing"):j("helper.paused"))});let me=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:j("helper.toggleMeasurementLabel")}});cn(me,"toggle-measurement"),me.appendChild(Dr('')),me.addEventListener("click",()=>{let re=i();if(!re||!gn(re))return;let K=re.toggleMeasurement();v(me,K),bi(me,K?j("helper.measurementOn"):j("helper.measurementOff")),K||v(ne,!1)});let ne=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.clearMeasurementsLabel")}}));cn(ne,"clear-measurements"),ne.appendChild(Dr('')),ne.addEventListener("click",()=>{let re=i();!re||!gn(re)||(re.clearMeasurements(),v(me,re.isMeasurementActive()),bi(ne,j("helper.measurementsCleared")))});let fe=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.copyMeasurementsLabel")}}));cn(fe,"copy-measurements"),fe.appendChild(Dr('')),fe.addEventListener("click",()=>{let re=i();if(!re||!gn(re))return;let K=re.exportMeasurements();if(!K){bi(fe,j("helper.noMeasurements"));return}navigator.clipboard.writeText(K).then(()=>{bi(fe,j("helper.measurementsCopied"))}).catch(()=>{bi(fe,j("helper.failed"))})});let Pe=g(m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.calibrateLabel")}}));cn(Pe,"toggle-calibration"),Pe.appendChild(Dr(''));let de=_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySnapshotLabel")}});cn(de,"copy-snapshot"),de.appendChild(Dr('')),de.addEventListener("click",()=>{let re=i();if(re)try{let K=re.captureSnapshot();if(!K)return;let De=CZ(K);navigator.clipboard.write([new ClipboardItem({"image/png":De})]).then(()=>{bi(de,j("helper.copied"))}).catch(()=>{bi(de,j("helper.failed"))})}catch(K){console.error("[AI3D] Copy snapshot failed:",K),bi(de,j("helper.failed"))}});let Re=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.saveSnapshotLabel")}}));cn(Re,"save-snapshot"),Re.appendChild(Dr('')),Re.addEventListener("click",()=>{var K,De;let re=i();if(re)try{let xe=re.captureSnapshot();if(!xe)return;let je=r(),qe=tn(je)||"model",we=a==null?void 0:a(),At=(K=we==null?void 0:we.snapshotFolder)!=null?K:"Media/3D Previews",Zt=(De=we==null?void 0:we.snapshotNaming)!=null?De:"model-name",nr=Date.now(),vi=Zt==="timestamp"?`snapshot_${nr}.png`:`${qe}_snapshot_${nr}.png`,yn=CZ(xe),Ji=new FileReader;Ji.onload=()=>{let za=Ji.result;t.vault.adapter.exists(At).then(Yp=>Yp?Promise.resolve():t.vault.createFolder(At).catch($v=>{Qge.warn("Failed to create vault folder",{path:At,error:String($v)})})).then(()=>t.vault.createBinary(`${At}/${vi}`,za)).then(()=>{bi(Re,j("helper.saved"))}).catch(Yp=>{console.error("[AI3D] Save snapshot failed:",Yp),bi(Re,j("helper.failed"))})},Ji.onerror=()=>{console.error("[AI3D] FileReader error"),bi(Re,j("helper.failed"))},Ji.onabort=()=>{console.error("[AI3D] FileReader aborted"),bi(Re,j("helper.failed"))},Ji.readAsArrayBuffer(yn)}catch(xe){console.error("[AI3D] Save snapshot failed:",xe),bi(Re,j("helper.failed"))}});let Ye=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.downloadSnapshotLabel")}}));cn(Ye,"download-snapshot"),Ye.appendChild(Dr('')),Ye.addEventListener("click",()=>{let re=i();if(re)try{let K=re.captureSnapshot();if(!K)return;let De=r(),je=`${tn(De)||"model"}_snapshot_${Date.now()}.png`,qe=createEl("a");qe.href=K,qe.download=je,activeDocument.body.appendChild(qe),qe.click(),qe.remove(),bi(Ye,j("helper.downloaded"))}catch(K){console.error("[AI3D] Download snapshot failed:",K),bi(Ye,j("helper.failed"))}});let Et=g(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.removePreviewLabel")}}));cn(Et,"remove-preview"),Et.appendChild(Dr('')),Et.addEventListener("click",s);let Ke=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":j(d.labelKey),"aria-pressed":"false"}});cn(Ke,"toggle-annotation"),Ke.appendChild(Dr(''));let Ze=Ke.createSpan({cls:"ai3d-pin-badge is-hidden"});Ke.addEventListener("click",()=>{if(!o)return;let re=o();v(Ke,re),bi(Ke,re?j(d.activeTooltipKey):j(d.inactiveTooltipKey))});let Jt=h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":j("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Jt.appendChild(Dr('')),Jt.addEventListener("click",()=>{E=!E,Jt.setAttribute("aria-label",E?j("helper.hideMoreActionsLabel"):j("helper.showMoreActionsLabel")),M(),bi(Jt,E?j("helper.moreActionsShown"):j("helper.moreActionsHidden"))}),n.insertBefore(h,e.nextSibling);let Lt=n.createDiv({cls:"ai3d-calibrate-panel is-hidden"});Lt.createDiv({cls:"ai3d-calibrate-title",text:j("helper.calibrateTitle")});let xi=Lt.createDiv({cls:"ai3d-calibrate-row"});xi.createSpan({cls:"ai3d-calibrate-label",text:j("helper.calibrateCurrent")});let oe=xi.createSpan({cls:"ai3d-calibrate-readonly"}),Gi=xi.createSpan({cls:"ai3d-calibrate-readonly"}),ti=xi.createSpan({cls:"ai3d-calibrate-readonly"}),Fi=Lt.createDiv({cls:"ai3d-calibrate-row"});Fi.createSpan({cls:"ai3d-calibrate-label",text:j("helper.calibrateReal")});let ot=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"X"}}),Di=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"Y"}}),z=Fi.createEl("input",{cls:"ai3d-calibrate-input",attr:{type:"number",step:"any",placeholder:"Z"}}),U=Lt.createDiv({cls:"ai3d-calibrate-row"}),ue=U.createEl("select",{cls:"ai3d-calibrate-select"});for(let re of["um","mm","cm","m"]){let K=ue.createEl("option");K.value=re,K.textContent=re}ue.value="mm";let Le=U.createEl("label",{cls:"ai3d-calibrate-lock"}),Ge=Le.createEl("input",{attr:{type:"checkbox",checked:"true"}});Le.appendChild(activeDocument.createTextNode(" "+j("helper.calibrateLock")));let et=Lt.createDiv({cls:"ai3d-calibrate-row ai3d-calibrate-actions"}),rt=et.createEl("button",{cls:"ai3d-inline-btn",text:j("helper.calibrateApply")}),Ce=et.createEl("button",{cls:"ai3d-inline-btn is-secondary",text:j("helper.calibrateReset")}),Me=null;function ct(){var xe,je;let re=i();if(!re||!gn(re))return;let K=(je=(xe=re.getMeasurementBounds)==null?void 0:xe.call(re))!=null?je:null,De=re.getMeasurementScale();ue.value=re.getMeasurementUnit(),Me=K,K?(oe.textContent=`X: ${(K.x*De.x).toFixed(3)}`,Gi.textContent=`Y: ${(K.y*De.y).toFixed(3)}`,ti.textContent=`Z: ${(K.z*De.z).toFixed(3)}`):(oe.textContent="X: -",Gi.textContent="Y: -",ti.textContent="Z: -")}function Tt(){var qe,we;let re=i();if(!re||!gn(re)||!Me)return;let K=parseFloat(ot.value),De=parseFloat(Di.value),xe=parseFloat(z.value);if(!isFinite(K)||!isFinite(De)||!isFinite(xe))return;let je={x:Me.x>1e-4?K/Me.x:1,y:Me.y>1e-4?De/Me.y:1,z:Me.z>1e-4?xe/Me.z:1};(qe=re.setMeasurementUnit)==null||qe.call(re,ue.value),(we=re.setMeasurementScale)==null||we.call(re,je),bi(rt,j("helper.calibrated"))}function nt(){var K,De;let re=i();!re||!gn(re)||((K=re.setMeasurementUnit)==null||K.call(re,ue.value),(De=re.setMeasurementScale)==null||De.call(re,{x:1,y:1,z:1}),ct(),Me?(ot.value=Me.x.toFixed(3),Di.value=Me.y.toFixed(3),z.value=Me.z.toFixed(3)):(ot.value="",Di.value="",z.value=""),bi(Ce,j("helper.calibrateResetDone")))}function $e(re){if(!Ge.checked||!Me)return;let De=parseFloat((re==="x"?ot:re==="y"?Di:z).value);if(!isFinite(De)||De===0)return;let xe=Me[re];if(xe<=1e-4)return;let je=De/xe;re!=="x"&&(ot.value=(Me.x*je).toFixed(3)),re!=="y"&&(Di.value=(Me.y*je).toFixed(3)),re!=="z"&&(z.value=(Me.z*je).toFixed(3))}return ot.addEventListener("input",()=>$e("x")),Di.addEventListener("input",()=>$e("y")),z.addEventListener("input",()=>$e("z")),ue.addEventListener("change",()=>{let re=i();!re||!gn(re)||re.setMeasurementUnit(ue.value)}),rt.addEventListener("click",Tt),Ce.addEventListener("click",nt),Pe.addEventListener("click",()=>{let re=Lt.classList.contains("is-hidden");if(re&&(ct(),Me)){let K=i(),De=K&&gn(K)?K.getMeasurementScale():{x:1,y:1,z:1};ot.value=(Me.x*De.x).toFixed(3),Di.value=(Me.y*De.y).toFixed(3),z.value=(Me.z*De.z).toFixed(3)}Lt.classList.toggle("is-hidden",!re),v(Pe,re),bi(Pe,re?j("helper.calibrateOpen"):j("helper.calibrateClose"))}),M(),G(),{showAnimButton(){ae.classList.remove("is-hidden"),x()},showAnnotateButton(){Ke.classList.remove("is-hidden"),x()},updateAnnotationBadge(re){re>0?(Ze.textContent=String(re),Ze.classList.remove("is-hidden")):Ze.classList.add("is-hidden")},setMobileInteractionMode(re){f&&y(re)},syncCapabilities:G}}function bi(n,e){var i;(i=Bw.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,Bw.set(n,t),window.setTimeout(()=>{t.remove(),Bw.delete(n)},1500)}var Qge,Bw,Uw=I(()=>{"use strict";vn();Mn();Lp();sa();Ps();Qge=Hi("helper-buttons");Bw=new WeakMap});function DZ(n){let e=Xa(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),$ge.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var $ge,LZ=I(()=>{"use strict";Ka();Mn();$ge=Hi("direct-load-service")});var OZ={};Be(OZ,{MissingConverterError:()=>cd,MobileConversionUnavailableError:()=>wh,describeModelLoadFailure:()=>Nv,formatModelLoadFailure:()=>fM,isMissingConverterError:()=>Ov});function dM(n){return`.${n.trim().toLowerCase()}`}function Ov(n){return n instanceof cd}function fM(n){var e;if(n instanceof cd){let t=(e=Jge[n.converterId])!=null?e:n.converterId;return qi("modelLoad.warningMessage",{ext:dM(n.sourceExt),converterName:t})}return n instanceof wh?qi("modelLoad.mobileWarningMessage",{ext:dM(n.sourceExt)}):qi("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function Nv(n){return n instanceof cd?{level:"warning",title:j("modelLoad.warningTitle"),message:fM(n),hint:j("modelLoad.warningHint")}:n instanceof wh?{level:"warning",title:j("modelLoad.warningTitle"),message:fM(n),hint:j("modelLoad.mobileWarningHint")}:{level:"error",title:j("modelLoad.errorTitle"),message:fM(n),hint:j("modelLoad.errorHint")}}var Jge,cd,wh,Op=I(()=>{"use strict";vn();Jge={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};cd=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${dM(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},wh=class extends Error{constructor(t){super(`Format ${dM(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var wZ={};Be(wZ,{convertForPreview:()=>ave});function NZ(n,e){let t=n.lastIndexOf("."),i=t>0?n.slice(0,t):n,r=Math.max(i.lastIndexOf("/"),i.lastIndexOf("\\")),s=i.slice(0,r+1),a=i.slice(r+1);return`${s}${a}.ai3d-converted.${e}`}function eve(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function tve(n){let e=ns(n);return ra(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function ive(n,e,t){if(!t)return NZ(n,e);let i=tve(n),r=eve(`${n}::${e}`);return Ui(t,`${i}-${r}.ai3d-converted.${e}`)}function rve(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function nve(n){if(!n)return!1;try{return await is(n,rs),!0}catch(e){return!1}}async function Gw(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:Hd(n),Hd(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function sve(n){return typeof n=="function"?await n():n}async function ave(n){var d,h,u,m,_,p,g,v,x;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(d=n.capability.outputFormat)!=null?d:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);fd.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=Hd(n.sourcePath)),i),s=(h=n.convertedAssetCache)==null?void 0:h.get(n.sourcePath,n.sourceExt,t);if(s)if(!await nve(s.outputPath))fd.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(u=n.convertedAssetCache)==null||u.delete(n.sourcePath,n.sourceExt,t);else if(!rve(s,e))fd.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!await Gw(n.sourcePath,s.outputPath,r()))fd.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(_=n.convertedAssetCache)==null||_.delete(n.sourcePath,n.sourceExt,t);else return fd.info("conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),{effectivePath:s.outputPath,effectiveExt:s.outputExt,warnings:[...s.warnings,"Using cached conversion output."]};let a=ive(n.sourcePath,t,n.outputRoot);if(await Gw(n.sourcePath,a,r()))return fd.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(p=n.convertedAssetCache)==null||p.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:a,effectiveExt:t,warnings:["Using existing conversion output."]};let o=NZ(n.sourcePath,t);if(o!==a&&await Gw(n.sourcePath,o,r()))return fd.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(g=n.convertedAssetCache)==null||g.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:o,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:o,effectiveExt:t,warnings:["Using existing conversion output."]};let l=await sve(n.conversionManager);if(!l)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!l.canConvert(n.sourceExt))throw new cd(e,n.sourceExt);let c=await l.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await Nn(n.outputRoot,{recursive:!0});let f=await l.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(x=n.convertedAssetCache)==null||x.set({cacheVersion:2,converterId:e,converterCacheKey:(v=c==null?void 0:c.cacheKey)!=null?v:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:f.outputPath,outputExt:f.outputExt,warnings:f.warnings,createdAt:Date.now()}),fd.info("conversion route done",{sourcePath:n.sourcePath,outputPath:f.outputPath,warningCount:f.warnings.length}),{effectivePath:f.outputPath,effectiveExt:f.outputExt,warnings:f.warnings}}var fd,FZ=I(()=>{"use strict";$M();Mn();Qi();Op();fd=Hi("conversion-service")});var BZ={};Be(BZ,{prepareModelInput:()=>Np});function ove(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function Np(n){var a,o;let e=Xa((a=n.path.split(".").pop())!=null?a:""),t=JM(e);if(dd.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw dd.warn("unsupported format",{sourceExt:e,path:n.path}),Kp(e)?new Error("SPLAT preview is disabled in packaged builds. Local-only .splat support is planned; .spz and .sog remain unavailable until their decoders can be bundled locally."):new Error(`Unsupported format: .${e}`);let i=ove(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(gr())throw dd.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new wh(e);if(!n.absolutePath)throw dd.error("filesystem path missing for conversion",{sourceExt:e,path:n.path}),new Error(`Format .${e} requires a local filesystem path for conversion, but none was resolved for '${n.path}'.`);let l=t.strategy==="convert"?t:{...t,strategy:"convert",outputFormat:(o=t.outputFormat)!=null?o:"glb"};if(!l.converterId)throw dd.error("preferred conversion route missing converter id",{sourceExt:e,path:n.path}),new Error(`Format .${e} is configured to prefer conversion, but no converter id is defined.`);i&&t.strategy==="direct"&&dd.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(FZ(),wZ)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return dd.info("conversion completed",{sourceExt:e,outputExt:f.effectiveExt,outputPath:f.effectivePath,warningCount:f.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:"convert",effectivePath:f.effectivePath,effectiveExt:f.effectiveExt,warnings:f.warnings}}let s=DZ({path:n.path,sourceExt:e});return dd.debug("direct route",{sourceExt:e,path:n.path,warningCount:s.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:t.strategy,effectivePath:s.effectivePath,effectiveExt:s.effectiveExt,warnings:s.warnings}}var dd,hM=I(()=>{"use strict";Ka();LZ();Op();Mn();sa();dd=Hi("model-pipeline")});function wv(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var kw=I(()=>{"use strict"});var UZ={};Be(UZ,{listPreferredConversionExts:()=>wp});function wp(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var uM=I(()=>{"use strict"});function Fh(n){let e=n.createDiv({cls:"ai3d-loading-overlay"}),t=e.createDiv({cls:"ai3d-loading-skeleton"});t.createDiv({cls:"ai3d-loading-skeleton-canvas"});let i=t.createDiv({cls:"ai3d-loading-skeleton-meta"});i.createDiv({cls:"ai3d-loading-skeleton-line"}),i.createDiv({cls:"ai3d-loading-skeleton-line is-short"}),e.createDiv({cls:"ai3d-loading-spinner"});let r=e.createDiv({cls:"ai3d-loading-text"}),s="loading.default",a="",o=()=>{r.textContent=s?j(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=_1(()=>{!f&&s&&o()});return{el:e,setPhase(h){s=null,a=h,f||o()},setPhaseKey(h){s=h,f||o()},setProgress(h){f||(h<0?(c.className="ai3d-loading-bar-fill is-indeterminate",c.style.removeProperty("--bar-width")):(c.className="ai3d-loading-bar-fill",c.style.setProperty("--bar-width",`${Math.min(100,Math.max(0,h))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var mM=I(()=>{"use strict";vn()});var Ww={};Be(Ww,{renderModelLoadFailure:()=>Fv,renderModelPerformanceFeedback:()=>Bv});function Fv(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});gr()&&t.classList.add("is-mobile");let i=t.createDiv({cls:`ai3d-load-feedback is-${e.level}`});return i.createDiv({cls:"ai3d-load-feedback-title",text:e.title}),i.createDiv({cls:"ai3d-load-feedback-message",text:e.message}),i.createDiv({cls:"ai3d-load-feedback-hint",text:e.hint}),t}function Bv(n,e){var o,l,c,f,d,h,u;if((!e.performanceTier||e.performanceTier==="light")&&!((o=e.resourceWarnings)!=null&&o.length))return null;let t=(l=e.performanceTier)!=null?l:"light",i=((c=e.splatCount)!=null?c:e.triangleCount).toLocaleString(),r=e.splatCount!==void 0?"splats":"triangles",s=n.createDiv({cls:`ai3d-performance-feedback is-${t}`});s.createDiv({cls:"ai3d-performance-feedback-tier",text:(f=e.resourceWarnings)!=null&&f.length?"assets":(d=e.performanceTier)!=null?d:"light"}),s.createDiv({cls:"ai3d-performance-feedback-meta",text:(h=e.resourceWarnings)!=null&&h.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(u=e.resourceWarnings)!=null?u:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` +`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var Uv=I(()=>{"use strict";sa()});function Fc(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return lve.has(e)?e:"glb"}function Bh(n,e,t){return typeof n=="string"&&cve.has(n)?n:e===t?"direct":"convert"}var lve,cve,pM=I(()=>{"use strict";lve=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),cve=new Set(["direct","convert"])});function Fp(n,e,t){let i=j("previewCanvas.modelShortcuts");zZ(n,{label:qi(kZ[e],{model:Cs(t)||j("workbench.modelTitle"),shortcuts:i}),shortcutKeys:fve,shortcutHint:i})}function WZ(n){let e=j("previewCanvas.gridShortcuts");zZ(n,{label:qi(kZ.grid,{shortcuts:e}),shortcutKeys:dve,shortcutHint:e})}function Bp(n,e){n.addEventListener("keydown",t=>{var s,a,o,l,c;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"?((a=i.toggleWireframe)==null||a.call(i),t.preventDefault()):r==="g"?((o=i.toggleOrientationGizmo)==null||o.call(i),t.preventDefault()):r==="b"?((l=i.toggleBoundingBox)==null||l.call(i),t.preventDefault()):r===" "?((c=i.toggleAnimation)==null||c.call(i),t.preventDefault()):r==="m"&&(gn(i)&&i.toggleMeasurement(),t.preventDefault())})}function HZ(n,e){n.addEventListener("keydown",t=>{var s,a;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"&&((a=i.toggleWireframe)==null||a.call(i),t.preventDefault())})}function zZ(n,e){hve(n),n.setAttribute("role","application"),n.setAttribute("aria-label",e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),n.setAttribute("title",e.shortcutHint),n.dataset.testid="ai3d-preview-canvas"}function hve(n){if(GZ(n),VZ.has(n)||typeof MutationObserver=="undefined")return;VZ.add(n),new MutationObserver(()=>GZ(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function GZ(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var fve,dve,VZ,kZ,_M=I(()=>{"use strict";vn();Lp();Ps();fve=["R","W","G","B","M","Space"],dve=["R","W"],VZ=new WeakSet,kZ={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function XZ(n){let{contentEl:e,filePath:t,mobile:i,getPreview:r}=n,s=e.createDiv({cls:"ai3d-workspace"}),a=s.createDiv({cls:"ai3d-workspace-track-top"}),o=a.createDiv({cls:"ai3d-workspace-main"}),l=a.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-h"}),c=a.createDiv({cls:"ai3d-workspace-sidebar"}),f=createDiv(),d=f.createDiv({cls:"ai3d-preview-host"}),h=f.createEl("canvas");h.className="ai3d-canvas-full",Fp(h,"direct-view",t),Bp(h,r),d.appendChild(h);let u=f.createDiv();u.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(u),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),_=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"}),p=s.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:h,modeOverlay:u,sidebarContent:m,vHandle:_,workbenchPanel:p}}var YZ=I(()=>{"use strict";vn();_M()});function gM(n){return Math.round(n!=null?n:0).toLocaleString()}function uve(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function mve(n){return n==="three"?"Three.js":"Babylon.js"}function KZ(n){var f,d;let{panel:e,summary:t,route:i,registeredPartCount:r}=n;e.empty(),e.removeClass("is-hidden"),e.dataset.ai3dBackend=i.backend,e.dataset.ai3dRouteReason=i.reason;let s=e.createDiv({cls:"ai3d-direct-workbench-overview"}),a=s.createDiv({cls:"ai3d-direct-workbench-status"}),o=a.createDiv({cls:"ai3d-direct-workbench-line"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:mve(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});Up(c,j("workbench.meshesLabel"),gM(t.meshCount)),Up(c,j("directWorkbench.partCandidatesLabel"),gM(r)),Up(c,t.splatCount!==void 0?j("workbench.splatsLabel"):j("workbench.trianglesLabel"),gM((f=t.splatCount)!=null?f:t.triangleCount)),Up(c,j("workbench.materialsLabel"),gM(t.materialCount)),Up(c,j("workbench.boundingSizeLabel"),uve(t)),Up(c,j("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function Up(n,e,t){let i=n.createDiv({cls:"ai3d-direct-workbench-metric"});i.createSpan({cls:"ai3d-direct-workbench-label",text:e}),i.createSpan({cls:"ai3d-direct-workbench-value",text:t})}var jZ=I(()=>{"use strict";vn()});function pve(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&Hw.has(e.ext)&&Hw.has(e.sourceExt)}function _ve(n){return qZ.has(n.ext)?n.strategy==="direct"?qZ.has(n.sourceExt):n.strategy==="convert"&&Hw.has(n.ext):!1}function ZZ(n,e){let t=pve(n,e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!_ve(e),rendererRollout:n.previewRendererRollout,useThreeRenderer:n.useThreeRenderer}}var qZ,Hw,QZ=I(()=>{"use strict";qZ=new Set(["glb","gltf","stl","ply","obj"]),Hw=new Set(["glb","gltf"])});function zw(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function vve(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?zw(n):(e!=null?e:0)>=201326592?{renderQuality:"low",renderScale:Math.min(n.renderScale,.65)}:(e!=null?e:0)>=67108864?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,.85)}:zw(n)}function $Z(n,e){return e.performanceTier==="extreme"?{renderQuality:"low",renderScale:Math.min(n.renderScale,.65)}:e.performanceTier==="heavy"?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,.85)}:e.performanceTier==="medium"?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,1)}:zw(n)}function Vv(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function vM(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function JZ(n){try{return decodeURIComponent(n)}catch(e){return n}}function Xw(n){let e=JZ(n).replace(/\\/g,"/"),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function Eve(n,e){return Xw(n?`${n}/${vM(e)}`:vM(e))}function Sve(n){let e=n.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Tve(n){return!n||n.startsWith("data:")?!0:gve.test(n)&&!Vv(n)}function Ave(n){return Xw(vM(n))}async function xve(n,e){let t=await Rve(n,e);return t===null?null:e.toLowerCase().split(/[?#]/,1)[0].endsWith(".gltf")?Ive(n,e,t):t}async function Rve(n,e){if(Vv(e))try{let{stat:i}=await Promise.resolve().then(()=>(Qi(),RT));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return eQ(t)?t.stat.size:null}async function bve(n,e){if(Vv(e))try{let{readFile:r}=await Promise.resolve().then(()=>(Qi(),RT));return new TextDecoder().decode(await r(e))}catch(r){return null}let t=n.vault.getAbstractFileByPath(e),i=n.vault;if(!t||typeof i.read!="function")return null;try{return await i.read(t)}catch(r){return null}}async function Mve(n,e,t){if(Vv(e))try{let{pathJoin:a,pathNormalize:o,stat:l}=await Promise.resolve().then(()=>(Qi(),RT)),c=vM(JZ(t)),f=o(e.replace(/[\\/][^\\/]*$/,"")),d=Vv(c)?o(c):o(a(f,c));return(await l(d)).size}catch(a){return null}let i=Sve(e),r=Eve(i,t),s=n.vault.getAbstractFileByPath(r);return eQ(s)?s.stat.size:null}async function Ive(n,e,t){var l,c;let i=await bve(n,e);if(!i)return t;let r;try{r=JSON.parse(i)}catch(f){return t}let s=t,a=new Set,o=async(f,d)=>{var p;let h=f==null?void 0:f.uri;if(!h||Tve(h))return;let u=Ave(h);if(!u||a.has(u))return;a.add(u);let m=await Mve(n,e,h);if(m!==null&&Number.isFinite(m)&&m>0){s+=m;return}let _=(p=f==null?void 0:f.byteLength)!=null?p:d;Number.isFinite(_)&&(_!=null?_:0)>0&&(s+=_!=null?_:0)};for(let f of(l=r.buffers)!=null?l:[])await o(f,f.byteLength);for(let f of(c=r.images)!=null?c:[])await o(f);return s}function eQ(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function Vp(n,e,t){return vve(t,await xve(n,e))}var gve,EM=I(()=>{"use strict";gve=/^[a-z][a-z0-9+.-]*:/i});function Cve(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new Yw(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var Gv,yve,Yw,SM,tQ=I(()=>{"use strict";Ka();Mn();Gv=Hi("conversion-manager"),yve=3e5,Yw=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};SM=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get(Xa(e))}registerConverter(e){Gv.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set(Xa(t),e)}canConvert(e){let t=Xa(e),i=this.converters.has(t);return Gv.debug("can convert",{ext:t,ok:i}),i}async getConverterCacheIdentity(e){let t=this.getConverter(e);if(t)return{converterId:t.id,cacheKey:await t.getCacheKey()}}async convert(e){var o;let t=Xa(e.sourceExt),i=this.getConverter(t);if(!i)throw Gv.error("converter missing",{ext:t,targetExt:e.targetExt}),new Error(`No converter registered for .${t}`);let r=`${e.sourcePath}::${t}::${e.targetExt}`,s=this.pending.get(r);if(s)return Gv.info("joining in-flight conversion",{key:r}),s;Gv.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=Cve(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:yve,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var iF={};Be(iF,{describeConverterCommandSource:()=>$w,inspectAllConverterCommands:()=>Kve,inspectConverterCommand:()=>tF,listConverterCommandSpecs:()=>Yve,resolveConverterCommand:()=>jve,resolveConverterInvocation:()=>In});function qw(...n){let e=(He==null?void 0:He.platform)==="darwin"?["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin","/usr/bin"]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin","/usr/bin"];return Array.from(new Set(e.flatMap(t=>n.map(i=>`${t}/${i}`))))}function Dve(){var r,s,a;if((He==null?void 0:He.platform)==="darwin")return["/Applications/FreeCAD.app/Contents/MacOS/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/freecadcmd",...qw("FreeCADCmd","freecadcmd")];if((He==null?void 0:He.platform)!=="win32")return["/usr/local/bin/freecadcmd","/opt/homebrew/bin/freecadcmd","/opt/local/bin/freecadcmd","/snap/freecad/current/usr/bin/freecadcmd","/usr/bin/freecadcmd"];let n=[],e=(r=He==null?void 0:He.env)==null?void 0:r.LOCALAPPDATA,t=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,i=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"];if(e&&n.push(Ui(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(Ui(t,"FreeCAD","bin","FreeCADCmd.exe")),e)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${e}/Programs/FreeCAD ${o}/bin/FreeCADCmd.exe`);if(t)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${t}/FreeCAD ${o}/bin/FreeCADCmd.exe`);return i&&n.push(`${i}/FreeCAD/bin/FreeCADCmd.exe`),n}function Lve(n){var a,o,l,c;if((He==null?void 0:He.platform)!=="win32")return[];let e=(a=He==null?void 0:He.env)==null?void 0:a.APPDATA,t=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,i=(l=He==null?void 0:He.env)==null?void 0:l.npm_config_prefix,r=(c=He==null?void 0:He.env)==null?void 0:c.USERPROFILE,s=[i,e?Ui(e,"npm"):void 0,t?Ui(t,"npm"):void 0,r?Ui(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>Ui(f,n))))}function Ove(...n){var s,a,o;if((He==null?void 0:He.platform)!=="win32")return[];let e=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,t=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"],i=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,r=[e,t,i?Ui(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>Ui(l,c)))))}async function eF(n){try{return await is(n,(He==null?void 0:He.platform)==="win32"?rs:Ay),!0}catch(e){return!1}}function Kw(n){let e=n==null?void 0:n.trim();if(e)return e}function rQ(n){return Nve.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function wve(n,e){for(let t of[n,...e]){let i=rQ(t);if(!i.ok)return i}return{ok:!0}}async function Fve(n){try{return(await Hd(n)).isFile()}catch(e){return!1}}function Bve(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:Pve}async function kve(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(xy).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?Gve(n):[""];for(let s of t)for(let a of i){let o=Ui(s,a?`${n}${a}`:n);if(await eF(o))return o}}function Zw(n,e,t=15e3){let i=rQ(n);return i.ok?new Promise((r,s)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:4*1024*1024},(a,o,l)=>{if(a){s(new Error((l||o||a.message).toString().trim()||a.message));return}r({stdout:o!=null?o:"",stderr:l!=null?l:""})})}):Promise.reject(new Error(`Refusing to execute converter command: ${i.reason}`))}function Qw(n){let t=(n instanceof Error?n.message:String(n)).replace(/\s+/g," ").trim();return t.length>180?`${t.slice(0,177)}...`:t}async function jw(n,e,t,i){let r="";for(let s of t)try{return await Zw(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=Qw(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function Wve(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad")try{return await Zw(e,[...t,"-c","import cadquery, trimesh; print('ok')"]),[{kind:"cad-python",ok:!0,detail:""}]}catch(r){return[{kind:"cad-python",ok:!1,detail:Qw(r)}]}if(n.id==="assimp")try{return await Zw(e,[...t,"-c","import trimesh, numpy, networkx, collada; print('ok')"]),[{kind:"mesh-python",ok:!0,detail:""}]}catch(r){return[{kind:"mesh-python",ok:!1,detail:Qw(r)}]}if(n.id==="freecadcmd"){let r=await jw(e,t,[["--version"],["--help"]],/freecad|usage|help|version/i);return[{kind:"freecadcmd-cli",ok:r.ok,detail:r.detail}]}if(n.id==="obj2gltf"){let r=await jw(e,t,[["--version"],["--help"]],/obj2gltf|usage|help|version/i);return[{kind:"obj2gltf-cli",ok:r.ok,detail:r.detail}]}if(n.id==="fbx2gltf"){let r=await jw(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function Hve(n){let e=Jw.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function zve(n){var s,a,o,l;let e=(a=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles)==null?void 0:a.toLowerCase(),t=(l=(o=He==null?void 0:He.env)==null?void 0:o["ProgramFiles(x86)"])==null?void 0:l.toLowerCase(),i=[],r=[];for(let c of n.knownCandidates){let f=c.toLowerCase(),d=(He==null?void 0:He.platform)==="win32"&&((e?f.startsWith(e):!1)||(t?f.startsWith(t):!1)),h=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||h?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function iQ(n,e,t){for(let i of e)if(await eF(i))return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,command:i,executable:i,args:[],resolvedPath:i,available:!0,source:"candidate",detail:t,checkedCandidates:[i]}}function Xve(n,e){let t=[];return n.length&&t.push(`Checked common user locations: ${n.join("; ")}`),e.length&&t.push(`Checked system fallback locations: ${e.join("; ")}`),t.join(". ")}async function TM(n,e,t,i){let r=Uve(e),s=wve(r.executable,r.args);if(!s.ok)return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:void 0,available:!1,source:t,detail:s.reason,checkedCandidates:[r.executable]};if(Vve(r.executable)){let[o,l]=await Promise.all([eF(r.executable),Fve(r.executable)]),c=o&&l;return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:c?r.executable:void 0,available:c,source:t,detail:c?`Using ${$w(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await kve(r.executable);return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:a,available:!!a,source:t,detail:a?`Resolved from ${$w(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function Yve(){return Jw}function $w(n){switch(n){case"settings":return"plugin settings";case"env":return"environment variable";case"candidate":return"known install location";case"path":return"PATH fallback"}}async function tF(n,e){var h,u,m;let t=Hve(n),{userCandidates:i,systemCandidates:r}=zve(t),s=Kw(e);if(s)return TM(t,s,"settings",s);let a=Kw((h=He==null?void 0:He.env)==null?void 0:h[t.envVar]);if(a)return TM(t,a,"env");for(let _ of(u=t.envVarAliases)!=null?u:[]){let p=Kw((m=He==null?void 0:He.env)==null?void 0:m[_]);if(p)return TM(t,p,"env")}let o=await iQ(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let _ of t.fallbackCommands){let p=await TM(t,_,"path");if(l.push(p),p.available)return p}let c=await iQ(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(_=>_.checkedCandidates),d=Xve(i,r);return{...l[0],detail:d?`Command name was not found on PATH. ${d}`:"Command name was not found on PATH.",checkedCandidates:[...i,...f,...r]}}async function Kve(n){let e=await Promise.all(Jw.map(t=>tF(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await Wve(t)})))}async function jve(n,e){return(await In(n,e)).command}async function In(n,e){var i;let t=await tF(n,e);if(!t.available&&t.detail==="Command contains unsafe shell metacharacters.")throw new Error(`Refusing to resolve converter command '${n}': ${t.detail}`);return{command:(i=t.resolvedPath)!=null?i:t.executable,args:[...t.args]}}var He,Pve,Jw,Nve,hd=I(()=>{"use strict";Qi();Qi();Qi();He=Wu(),Pve=[".exe",".cmd",".bat",".com"];Jw=[{id:"freecad",label:"Python (CadQuery/OCCT)",settingsKey:"freecadCommand",envVar:"AI3D_FREECAD_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand",envVar:"AI3D_OBJ2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["obj2gltf.cmd"]:["obj2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?Lve("obj2gltf.cmd"):qw("obj2gltf")},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand",envVar:"AI3D_FBX2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FBX2glTF.exe"]:["FBX2glTF","fbx2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?Ove(Ui("FBX2glTF","FBX2glTF-windows-x64.exe"),Ui("FBX2glTF","FBX2glTF.exe")):qw("FBX2glTF","fbx2gltf")},{id:"assimp",label:"Python (trimesh)",settingsKey:"assimpCommand",envVar:"AI3D_ASSIMP_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"freecadcmd",label:"FreeCAD (SLDPRT)",settingsKey:"freecadcmdCommand",envVar:"AI3D_FREECADCMD",envVarAliases:["AI3D_FREECMDCMD"],fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FreeCADCmd.exe"]:["freecadcmd","FreeCADCmd"],knownCandidates:Dve()}];Nve=/[;|&<>$`\r\n\t]/});var sQ,nQ=I(()=>{sQ=`import cadquery as cq import trimesh import trimesh.visual import numpy as np @@ -23943,7 +23943,7 @@ with open(out, 'wb') as f: f.write(data) print(f'Converted {src} -> {out} ({len(data)} bytes, {matched_count}/{total_faces} colored faces)') -`});var iQ,tQ=I(()=>{iQ=`import cadquery as cq +`});var oQ,aQ=I(()=>{oQ=`import cadquery as cq import trimesh import trimesh.visual import numpy as np @@ -24071,7 +24071,7 @@ with open(out, 'wb') as f: f.write(data) print(f'Converted {src} -> {out} ({len(data)} bytes, {matched_count}/{total_faces} colored faces)') -`});var nQ,rQ=I(()=>{nQ=`import cadquery as cq +`});var cQ,lQ=I(()=>{cQ=`import cadquery as cq import trimesh import trimesh.visual import numpy as np @@ -24594,27 +24594,27 @@ with open(out, 'wb') as f: f.write(data) print(f'Converted {src} -> {out} ({len(data)} bytes, {matched_count}/{total_faces} colored faces)') -`});function Bc(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var EM=I(()=>{"use strict"});function sQ(n){return n.toLowerCase().replace(/^\./,"")}function Hve(n){let e=sQ(n);return e==="step"||e==="stp"?nQ:e==="iges"||e==="igs"?iQ:eQ}function Jw(n,e,t){return n.split(e).join(t)}function aQ(n,e,t){let i=sQ(t),r=Jw(Hve(i),Gve,Bc(n)),s=Jw(r,kve,Bc(e));return Jw(s,Wve,i)}var Gve,kve,Wve,oQ=I(()=>{"use strict";JZ();tQ();rQ();EM();Gve="__AI3D_SOURCE_PATH__",kve="__AI3D_OUTPUT_PATH__",Wve="__AI3D_SOURCE_EXT__"});async function Yve(n){try{return await is(n,rs),!0}catch(e){return!1}}function Kve(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`CAD conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var zve,Xve,SM,lQ=I(()=>{"use strict";ar();ar();ar();ar();Mn();hd();oQ();zve=Hi("freecad-converter"),Xve=300*1e3;SM=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking CAD conversion.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-freecad"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,aQ(e.sourcePath,s,e.sourceExt),"utf8"),zve.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await Kve(t.command,[...t.args,o],Xve)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python with cadquery is installed: pip install cadquery trimesh. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await Yve(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await ia(s)).byteLength===0)throw new Error(`CAD conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/CadQuery(OCCT) bridge."]}}}});async function Zve(n){try{return await is(n,rs),!0}catch(e){return!1}}function Qve(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`obj2gltf command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var jve,qve,TM,cQ=I(()=>{"use strict";ar();ar();ar();Mn();hd();jve=Hi("obj2gltf-converter"),qve=180*1e3;TM=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking obj2gltf.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ui(i,`${r}.ai3d-converted.glb`);await Nn(wn(s),{recursive:!0}),jve.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await Qve(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],qve)}catch(l){throw new Error(`obj2gltf conversion failed for '${e.sourcePath}'. Set obj2gltf command path in plugin settings or AI3D_OBJ2GLTF_CMD if obj2gltf is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await Zve(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await ia(s)).byteLength===0)throw new Error(`obj2gltf output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local obj2gltf CLI bridge."]}}}});async function eEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function tEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`FBX2glTF command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var $ve,Jve,AM,fQ=I(()=>{"use strict";ar();ar();ar();Mn();hd();$ve=Hi("fbx2gltf-converter"),Jve=180*1e3;AM=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking FBX2glTF.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ui(i,`${r}.ai3d-converted.glb`);await Nn(wn(s),{recursive:!0}),$ve.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await tEe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],Jve)}catch(l){throw new Error(`FBX2glTF conversion failed for '${e.sourcePath}'. Set FBX2glTF command path in plugin settings or AI3D_FBX2GLTF_CMD if FBX2glTF is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await eEe(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await ia(s)).byteLength===0)throw new Error(`FBX2glTF output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FBX2glTF CLI bridge."]}}}});async function nEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function sEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`mesh conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function aEe(n,e){let t=Bc(n),i=Bc(e);return["import trimesh","import sys","",`src = r"${t}"`,`out = r"${i}"`,"","try:"," loaded = trimesh.load(src, force=None)","except Exception as e:",' print(f"Failed to load {src}: {e}", file=sys.stderr)'," sys.exit(1)","","if isinstance(loaded, trimesh.Scene):"," scene = loaded","elif isinstance(loaded, trimesh.Trimesh):"," scene = trimesh.Scene([loaded])","else:",' print(f"Unsupported type: {type(loaded)}", file=sys.stderr)'," sys.exit(1)","","try:"," data = scene.export(file_type='glb')","except Exception as e:",' print(f"Failed to export GLB: {e}", file=sys.stderr)'," sys.exit(1)","","with open(out, 'wb') as f:"," f.write(data)","","print(f'Converted {src} -> {out} ({len(data)} bytes)')"].join(` -`)}var iEe,rEe,xM,dQ=I(()=>{"use strict";ar();ar();ar();ar();Mn();hd();EM();iEe=Hi("assimp-converter"),rEe=300*1e3;xM=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking mesh conversion.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-mesh-convert"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,aEe(e.sourcePath,s),"utf8"),iEe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await sEe(t.command,[...t.args,o],rEe)}catch(f){throw new Error(`Mesh conversion failed for '${e.sourcePath}'. Ensure Python with trimesh is installed: pip install trimesh numpy networkx pycollada. Set Python command path in plugin settings or AI3D_ASSIMP_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await nEe(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await ia(s)).byteLength===0)throw new Error(`Mesh conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/trimesh bridge."]}}}});async function lEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function cEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i({stdout:a!=null?a:"",stderr:o!=null?o:""});return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`SLDPRT conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function fEe(n,e){let t=Bc(n),i=Bc(e),r=i.replace(/\.glb$/i,".intermediate.step");return["import sys","import os","",`src = r"${t}"`,`out = r"${i}"`,`step_out = r"${r}"`,"","# Step 1: Import SLDPRT via FreeCAD","try:"," import FreeCAD"," import ImportGui"," import Mesh","except ImportError as e:",' print(f"FreeCAD modules not available: {e}", file=sys.stderr)',' print("Ensure this script runs under FreeCADCmd (not system Python).", file=sys.stderr)'," sys.exit(1)","","print(f'Opening SLDPRT: {src}')","try:"," doc = FreeCAD.newDocument('Convert')"," ImportGui.open(src, doc.Name)","except Exception as e:",' print(f"Failed to open SLDPRT file: {e}", file=sys.stderr)'," sys.exit(1)","","if not doc.Objects:",' print("SLDPRT file imported but contains no objects", file=sys.stderr)'," sys.exit(1)","",'print(f"Imported {len(doc.Objects)} object(s) from SLDPRT")',"","# Step 2: Export to STEP (intermediate)","try:"," import Import"," objs = [o for o in doc.Objects if hasattr(o, 'Shape')]"," if not objs:",' print("No shape objects found after import", file=sys.stderr)'," sys.exit(1)"," Import.export(objs, step_out)",' print(f"Exported intermediate STEP: {step_out}")',"except Exception as e:",' print(f"Failed to export STEP: {e}", file=sys.stderr)'," sys.exit(1)","","FreeCAD.closeDocument(doc.Name)","","# Step 3: Convert STEP to GLB using OCP (same pipeline as FreecadConverter)","import trimesh","import trimesh.visual","import numpy as np","","from OCP.STEPControl import STEPControl_Reader","from OCP.TopoDS import TopoDS","from OCP.TopAbs import TopAbs_FACE","from OCP.TopExp import TopExp_Explorer","from OCP.BRep import BRep_Tool","from OCP.BRepMesh import BRepMesh_IncrementalMesh","from OCP.TopLoc import TopLoc_Location","from OCP.IFSelect import IFSelect_RetDone","","DEFAULT_COLOR = [180, 180, 180, 255]","","def triangulate_face(face, linear=0.1, angular=0.5):"," BRepMesh_IncrementalMesh(face, linear, False, angular, True)"," loc = TopLoc_Location()"," tri = BRep_Tool.Triangulation_s(face, loc)"," if tri is None:"," return None, None"," n = tri.NbNodes()"," verts = []"," for i in range(1, n + 1):"," p = tri.Node(i)"," if not loc.IsIdentity():"," p = p.Transformed(loc.Transformation())"," verts.append([p.X(), p.Y(), p.Z()])"," ntri = tri.NbTriangles()"," faces = []"," for i in range(1, ntri + 1):"," t = tri.Triangle(i)"," n1, n2, n3 = t.Get()"," faces.append([n1 - 1, n2 - 1, n3 - 1])"," return verts, faces","","sr = STEPControl_Reader()","status = sr.ReadFile(step_out)","if status != IFSelect_RetDone:",' print(f"Failed to read intermediate STEP: {step_out}", file=sys.stderr)'," sys.exit(1)","sr.TransferRoots()","shape = sr.OneShape()","","all_verts = []","all_faces = []","all_colors = []","total_faces = 0","","exp = TopExp_Explorer(shape, TopAbs_FACE)","while exp.More():"," face = TopoDS.Face_s(exp.Current())"," total_faces += 1"," verts, faces = triangulate_face(face)"," if verts and faces:"," offset = len(all_verts)"," all_verts.extend(verts)"," for tri in faces:"," all_faces.append([tri[0] + offset, tri[1] + offset, tri[2] + offset])"," all_colors.extend([DEFAULT_COLOR] * len(verts))"," exp.Next()","","if not all_verts or not all_faces:",' print(f"No geometry extracted from STEP ({total_faces} faces scanned)", file=sys.stderr)'," sys.exit(1)","",'print(f"Triangulated: {total_faces} faces, {len(all_verts)} verts")',"","verts_arr = np.array(all_verts, dtype=float)","faces_arr = np.array(all_faces, dtype=int)","colors_arr = np.array(all_colors, dtype=np.uint8)","","mesh = trimesh.Trimesh("," vertices=verts_arr,"," faces=faces_arr,"," visual=trimesh.visual.ColorVisuals(vertex_colors=colors_arr),"," process=True,",")","mesh.fix_normals()","scene = trimesh.Scene([mesh])","","result = scene.export(file_type='glb')","if isinstance(result, bytes):"," data = result","elif isinstance(result, str):"," with open(result, 'rb') as f:"," data = f.read()","else:"," data = bytes(result)","","with open(out, 'wb') as f:"," f.write(data)","","# Cleanup intermediate STEP","try:"," os.remove(step_out)","except OSError:"," pass","","print(f'Converted {src} -> {out} ({len(data)} bytes, {total_faces} faces)')"].join(` -`)}var eF,oEe,RM,hQ=I(()=>{"use strict";ar();ar();ar();ar();Mn();hd();EM();eF=Hi("sldprt-converter"),oEe=600*1e3;RM=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await In("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking SLDPRT conversion.`);let t=await In("freecadcmd",this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-sldprt"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,fEe(e.sourcePath,s),"utf8"),eF.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await cEe(t.command,[...t.args,o],oEe);f&&eF.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&eF.warn("FreeCAD stderr",{stderr:d.trim().slice(0,500)})}catch(f){throw new Error(`SLDPRT conversion failed for '${e.sourcePath}'. Ensure FreeCAD is installed (https://www.freecad.org/downloads.php). Set FreeCADCmd path in plugin settings or AI3D_FREECADCMD env var. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await lEe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await ia(s)).byteLength===0)throw new Error(`SLDPRT conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FreeCAD + OpenCASCADE bridge."]}}}});var bM={};Be(bM,{createConversionManager:()=>dEe});function dEe(n){var r;let e=new gM,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);tF.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new SM(n==null?void 0:n.freecadCommand),new TM(n==null?void 0:n.obj2gltfCommand),new AM(n==null?void 0:n.fbx2gltfCommand),new xM(n==null?void 0:n.assimpCommand),new RM(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),tF.info("enabled converter",{converterId:s.id})):tF.debug("converter disabled",{converterId:s.id});return e}var tF,MM=I(()=>{"use strict";ZZ();lQ();cQ();fQ();dQ();hQ();Mn();tF=Hi("conversion-factory")});var IM={};Be(IM,{AnnotationManager:()=>rF});function _Ee(){return`pin-${Date.now()}-${hEe++}`}function _Q(n){return rn(n)}function gEe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var Gv,Gp,hEe,iF,uEe,mEe,uQ,mQ,pEe,pQ,kp,rF,yM=I(()=>{"use strict";Gv=require("obsidian");vn();Ps();Ds();Gp=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],hEe=1,iF=4,uEe=2,mEe=6,uQ=6,mQ=72,pEe=80,pQ=200;kp=class kp{constructor(e,t,i,r,s,a,o,l={}){this.provider=e;this.hostEl=t;this.mode=i;this.onChange=s;this.noteReader=a;this.headingSearch=o;this.pinEls=new Map;this.observer=null;this.resizeObs=null;this.annotations=[];this.editorEl=null;this.disposeCallbacks=[];this.frameCount=0;this.lastCamState="";this.idleFrames=0;this.cameraIdle=!1;this.movingOcclusionCursor=0;this.hoverPopover=null;this.hoverTimeout=null;this.hoverCloseTimeout=null;this.hoverRequestId=0;this._highlightHandler=null;this._pulseTimeout=null;this._headingDropdown=null;this._headingDebounce=null;this._selectedHeading=null;this.previewRenderRoot=new Gv.Component;this.previewRenderChildren=new WeakMap;var c,f;this.previewApp=l.app,this.previewMode=(c=l.previewMode)!=null?c:"plain-text",this.displayMode=(f=l.displayMode)!=null?f:"surface",this.previewRenderRoot.load(),this.overlay=this.hostEl.createDiv({cls:"ai3d-annotation-overlay"}),this.setAnnotations(r),this._highlightHandler=d=>{let h=d.detail,u=h==null?void 0:h.pinId;u&&this.pulsePin(u)},activeDocument.addEventListener("ai3d-pin-highlight",this._highlightHandler),this.disposeCallbacks.push(()=>activeDocument.removeEventListener("ai3d-pin-highlight",this._highlightHandler)),this.disposeCallbacks.push(()=>this.previewRenderRoot.unload()),this.startProjectionLoop()}setAnnotations(e){for(let[,t]of this.pinEls)this.removePinElement(t.el);this.pinEls.clear(),this.annotations=[...e];for(let t of e)this.createPinElement(t);this.updateProjections()}addPin(e,t,i){var s;if(this.annotations.length>=pQ)return console.warn(`[AI3D] Pin limit (${pQ}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:_Ee(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:Gp[this.annotations.length%Gp.length],createdAt:new Date().toISOString()};return this.annotations.push(r),this.createPinElement(r),this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations),r}removePin(e){var i;let t=this.pinEls.get(e);t&&(this.removePinElement(t.el),this.pinEls.delete(e)),this.annotations=this.annotations.filter(r=>r.id!==e),(i=this.onChange)==null||i.call(this,this.annotations)}updatePin(e,t){var s;let i=this.annotations.find(a=>a.id===e);if(!i)return;Object.assign(i,t);let r=this.pinEls.get(e);if(r){t.position&&(r.worldPos={x:t.position[0],y:t.position[1],z:t.position[2]});let a=r.el.querySelector(".ai3d-pin-label");a&&t.label!==void 0&&(a.textContent=t.label);let o=r.el.querySelector(".ai3d-pin-dot");o&&t.color!==void 0&&o.style.setProperty("--pin-color",t.color),(t.notePath!==void 0||t.headingRef!==void 0||t.label!==void 0)&&this.renderPinDisplay(r.el,i)}this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations)}showEditor(e,t,i){this.showEditorInternal(e,t,i)}editPin(e){let t=this.annotations.find(o=>o.id===e);if(!t)return;let i=this.pinEls.get(e);if(!i)return;let r=i.el.getBoundingClientRect(),s=r.left+r.width/2,a=r.top;this.showEditorInternal(s,a,_Q(i.worldPos),t)}getPinPosition(e){let t=this.pinEls.get(e);return t?_Q(t.worldPos):null}getAnnotations(){return this.annotations}showEditorInternal(e,t,i,r){var w,G;this.hideEditor(),this._selectedHeading=null;let s=this.overlay.createDiv({cls:"ai3d-annotation-editor"}),a=s.createDiv({cls:"ai3d-editor-input-wrap"}),o=a.createEl("input",{cls:"ai3d-annotation-editor-input"});o.type="text",o.placeholder=this.headingSearch?"Label or search heading...":"Label...",r&&(o.value=r.label);let l=a.createSpan({cls:"ai3d-editor-binding-tag is-hidden"}),c=l.createEl("button",{cls:"ai3d-editor-binding-clear"});c.textContent="\xD7",c.addEventListener("click",O=>{O.stopPropagation(),this._selectedHeading=null,l.classList.add("is-hidden"),f.classList.add("is-hidden"),f.textContent="",o.value="",o.focus()});let f=s.createDiv({cls:"ai3d-editor-content-preview is-hidden"}),d=s.createDiv({cls:"ai3d-heading-dropdown is-hidden"});this._headingDropdown=d;let h=-1,u=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),h=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=tn(O.notePath);(V=l.querySelector(".ai3d-editor-binding-text"))==null||V.remove();let B=l.createSpan({cls:"ai3d-editor-binding-text"});B.textContent=`\u{1F4C4} ${N}`,l.classList.remove("is-hidden"),p(),o.focus(),this.loadContentPreview(f,O.notePath,O.heading)},p=()=>{d.classList.add("is-hidden"),d.replaceChildren(),h=-1},g=O=>{if(d.replaceChildren(),h=-1,u=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{te.preventDefault(),te.stopPropagation(),_(B)}),V.addEventListener("mouseenter",()=>m(N))}d.classList.remove("is-hidden")};o.addEventListener("input",()=>{if(!this.headingSearch)return;this._headingDebounce&&window.clearTimeout(this._headingDebounce);let O=o.value.trim();if(O.length<1){p();return}this._headingDebounce=window.setTimeout(()=>{let N=this.headingSearch(O);g(N)},150)}),o.addEventListener("keydown",O=>{if(d.classList.contains("is-hidden")){O.key==="Enter"?(O.preventDefault(),R.click()):O.key==="Escape"&&(O.preventDefault(),this.hideEditor());return}let N=d.querySelectorAll(".ai3d-heading-dropdown-item");O.key==="ArrowDown"?(O.preventDefault(),m(Math.min(h+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(h-1,0))):O.key==="Enter"?(O.preventDefault(),h>=0&&h{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),x=(w=r==null?void 0:r.color)==null?void 0:w.trim(),S=x||Gp[0],E=x&&!Gp.includes(x)?[x,...Gp]:Gp;for(let O of E){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",qi("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===S&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),S=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let T=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-delete"});O.textContent="Delete",O.addEventListener("click",N=>{N.stopPropagation(),this.removePin(r.id),this.hideEditor()})}let R=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-confirm"});R.textContent=r?"Save":"OK",R.addEventListener("click",O=>{O.stopPropagation();let N=o.value.trim()||"Pin",B=this._selectedHeading;if(r){let V={label:N,color:S};B&&(V.notePath=B.notePath,V.headingRef=B.heading,V.headingLevel=B.level),this.updatePin(r.id,V)}else{let V=this.addPin(i,N,S);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let y=this.overlay.getBoundingClientRect(),C=e-y.left,L=t-y.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,y.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(L-10,y.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=tn(r.notePath),N=l.createSpan({cls:"ai3d-editor-binding-text"});N.textContent=`\u{1F4C4} ${O}`,l.classList.remove("is-hidden"),this._selectedHeading={notePath:r.notePath,heading:r.headingRef,level:(G=r.headingLevel)!=null?G:2},this.loadContentPreview(f,r.notePath,r.headingRef)}window.requestAnimationFrame(()=>o.focus()),s.addEventListener("pointerdown",O=>O.stopPropagation()),s.addEventListener("mousedown",O=>O.stopPropagation())}hideEditor(){if(this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,this.editorEl){let e=this.editorEl.querySelector(".ai3d-editor-content-preview");e&&this.clearRenderedPreview(e),this.editorEl.remove(),this.editorEl=null}}async loadContentPreview(e,t,i){if(!this.noteReader)return;this.clearRenderedPreview(e),e.classList.add("is-hidden");let r=await this.noteReader(t,i);if(!r){e.textContent=j("annotation.sectionEmpty"),e.className="ai3d-editor-content-preview ai3d-editor-content-preview--empty",e.classList.remove("is-hidden");return}await this.renderPreviewContent(e,r,t,"editor")}async showHoverPopover(e,t,i){if(!this.noteReader||!i.notePath||!i.headingRef)return;this.hideHoverPopover();let r=await this.noteReader(i.notePath,i.headingRef);if(!r||e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)return;let s=createDiv({cls:"ai3d-pin-popover"}),a=s.createDiv({cls:"ai3d-pin-popover-title"});a.textContent=i.headingRef;let o=s.createDiv({cls:"ai3d-pin-popover-body"}),l=t.getBoundingClientRect();s.style.setProperty("--popover-left",`${l.left+l.width/2}px`),s.style.setProperty("--popover-top",`${l.bottom+4}px`),s.addEventListener("mouseenter",()=>this.cancelHoverClose()),s.addEventListener("mouseleave",()=>this.scheduleHoverClose()),activeDocument.body.appendChild(s),this.hoverPopover=s,await this.renderPreviewContent(o,r,i.notePath,"popover"),(e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)&&(this.clearRenderedPreview(o),this.hoverPopover===s&&(this.hoverPopover=null),s.remove())}hideHoverPopover(){if(this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null),this.hoverPopover){let e=this.hoverPopover.querySelector(".ai3d-pin-popover-body");e&&this.clearRenderedPreview(e),this.hoverPopover.remove(),this.hoverPopover=null}}cancelHoverClose(){this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null)}scheduleHoverClose(){this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null,this.hoverRequestId++),this.cancelHoverClose(),this.hoverCloseTimeout=window.setTimeout(()=>{this.hoverCloseTimeout=null,this.hoverRequestId++,this.hideHoverPopover()},180)}clearRenderedPreview(e){let t=this.previewRenderChildren.get(e);t&&(this.previewRenderRoot.removeChild(t),this.previewRenderChildren.delete(e)),e.replaceChildren()}removePinElement(e){e.querySelectorAll(".ai3d-rendered-preview").forEach(t=>{this.clearRenderedPreview(t)}),e.remove()}async renderPreviewContent(e,t,i,r){let s=this.previewMode==="markdown"&&!!this.previewApp,a=r==="editor",o=r==="pin-snippet";if(!s){let c=a?300:o?180:1/0,f=t.length>c?t.slice(0,c)+"...":t;e.textContent=f,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden");return}e.className=a?"ai3d-editor-content-preview ai3d-editor-content-preview--markdown markdown-rendered":o?"ai3d-pin-snippet ai3d-pin-snippet--markdown ai3d-rendered-preview markdown-rendered":"ai3d-pin-popover-body ai3d-pin-popover-body--markdown ai3d-rendered-preview markdown-rendered",a&&e.classList.remove("is-hidden");let l=this.previewRenderRoot.addChild(new Gv.Component);this.previewRenderChildren.set(e,l);try{await Gv.MarkdownRenderer.render(this.previewApp,t,e,i,l)}catch(c){this.previewRenderRoot.removeChild(l),this.previewRenderChildren.delete(e);let f=a?300:o?180:1/0;e.textContent=t.length>f?t.slice(0,f)+"...":t,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden"),console.warn("[AI3D] Annotation markdown preview fallback:",c)}}pulsePin(e){let t=this.pinEls.get(e);t&&(this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),t.el.classList.remove("ai3d-pin-pulse"),t.el.offsetWidth,t.el.classList.add("ai3d-pin-pulse"),this._pulseTimeout=window.setTimeout(()=>{t.el.classList.remove("ai3d-pin-pulse"),this._pulseTimeout=null},1200))}destroy(){var e,t,i;this.hoverRequestId++,this.hideHoverPopover(),this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,(e=this.observer)==null||e.remove(),this.observer=null,(t=this.resizeObs)==null||t.disconnect(),this.resizeObs=null;for(let r of this.disposeCallbacks)r();this.disposeCallbacks=[],this.overlay.remove(),this.pinEls.clear(),(i=this.editorEl)==null||i.remove(),this.editorEl=null}createPinElement(e){let t=this.overlay.createDiv({cls:"ai3d-annotation-pin"});if(t.dataset.pinId=e.id,this.renderPinDisplay(t,e),this.mode==="edit"){let i=t.createEl("button",{cls:"ai3d-pin-delete"});i.textContent="\xD7",i.addEventListener("click",r=>{r.stopPropagation(),this.removePin(e.id)}),t.addEventListener("click",r=>{r.target.closest(".ai3d-pin-delete")||(r.stopPropagation(),this.editPin(e.id))})}t.addEventListener("pointerdown",i=>i.stopPropagation()),t.addEventListener("wheel",i=>{i.preventDefault(),i.stopPropagation(),this.provider.canvas.dispatchEvent(new WheelEvent("wheel",{bubbles:!0,cancelable:!0,clientX:i.clientX,clientY:i.clientY,ctrlKey:i.ctrlKey,deltaMode:i.deltaMode,deltaX:i.deltaX,deltaY:i.deltaY,deltaZ:i.deltaZ,metaKey:i.metaKey,shiftKey:i.shiftKey}))},{passive:!1}),e.notePath&&e.headingRef&&this.noteReader&&(t.addEventListener("mouseenter",()=>{this.cancelHoverClose(),this.hoverTimeout&&window.clearTimeout(this.hoverTimeout);let i=++this.hoverRequestId;this.hoverTimeout=window.setTimeout(()=>{this.hoverTimeout=null,i===this.hoverRequestId&&this.showHoverPopover(i,t,e)},300)}),t.addEventListener("mouseleave",()=>{this.scheduleHoverClose()})),this.pinEls.set(e.id,{el:t,worldPos:{x:e.position[0],y:e.position[1],z:e.position[2]}})}renderPinDisplay(e,t){let i=e.querySelector(".ai3d-pin-delete");if(e.querySelectorAll(".ai3d-rendered-preview").forEach(s=>{this.clearRenderedPreview(s)}),e.replaceChildren(),e.className=`ai3d-annotation-pin ai3d-annotation-pin--${this.displayMode}`,e.createDiv({cls:"ai3d-pin-dot"}).style.setProperty("--pin-color",t.color),e.title=t.label,e.setAttribute("aria-label",t.label),this.displayMode!=="dot"){let s=e.createDiv({cls:"ai3d-pin-content"}),a=s.createSpan({cls:"ai3d-pin-label"});if(a.textContent=t.label,this.displayMode==="snippet"&&t.notePath&&t.headingRef&&this.noteReader){let o=s.createDiv({cls:"ai3d-pin-snippet ai3d-rendered-preview"});this.loadPinSnippet(o,t.notePath,t.headingRef)}}i&&e.appendChild(i)}async loadPinSnippet(e,t,i){if(!this.noteReader)return;let r=await this.noteReader(t,i);!r||!e.isConnected||await this.renderPreviewContent(e,r,t,"pin-snippet")}startProjectionLoop(){this.observer=this.provider.observeRender(()=>this.updateProjections()),this.resizeObs=new ResizeObserver(()=>this.updateProjections()),this.resizeObs.observe(this.provider.canvas)}updateProjections(){if(this.pinEls.size===0)return;let{canvas:e}=this.provider;if(!this.hostEl.isConnected||!e.isConnected||e.clientWidth===0||e.clientHeight===0)return;let t=this.provider.getCameraStateKey();t===this.lastCamState?this.idleFrames++:(this.idleFrames=0,this.cameraIdle=!1),this.lastCamState=t,this.idleFrames>=kp.IDLE_THRESHOLD&&!this.cameraIdle&&(this.cameraIdle=!0),this.frameCount++;let i=this.cameraIdle?1:this.pinEls.size>=12?3:2;if(!this.cameraIdle&&this.frameCount%i!==0)return;let r=Array.from(this.pinEls.values()),s=this.cameraIdle?this.frameCount%mEe===0:this.frameCount%uEe===0,a=this.cameraIdle||r.length<=iF,o=a?0:this.movingOcclusionCursor%r.length,l=o+iF,c=kp._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(h.el);else{let u=Math.round(c.screenX),m=Math.round(c.screenY);h.el.style.setProperty("--pin-left",`${u}px`),h.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(h.el,c.depth),f.push({el:h.el,screenX:u,screenY:m,depth:c.depth});let _=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+iF)%r.length),this.cameraIdle)this.applyLabelAvoidance(f);else for(let d of f)d.el.style.removeProperty("--pin-offset-y")}updatePinPriority(e,t){let i=Math.max(0,Math.min(1,1-t)),r=this.cameraIdle?0:160,s=e.classList.contains("ai3d-pin-occluded")?80:0;e.style.zIndex=String(100+r+Math.round(i*120)-s)}applyLabelAvoidance(e){if(e.length===0)return;if(e.length>pEe){for(let a of e)a.el.style.removeProperty("--pin-offset-y");return}let i=e.filter(a=>!a.el.classList.contains("ai3d-pin-hidden")&&!a.el.classList.contains("ai3d-pin-occluded")).sort((a,o)=>a.depth-o.depth).map(a=>({pin:a,rect:a.el.getBoundingClientRect()})),r=[],s=[];for(let{pin:a,rect:o}of i){let l=0,c=o;for(let f of r){if(!gEe(c,f,uQ))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-mQ,Math.min(mQ,l+d*(f.height+uQ)));let h=c.width,u=c.height;c=new DOMRect(c.x,c.y+l,h,u)}r.push(c),s.push({el:a.el,offset:l})}for(let{el:a,offset:o}of s)a.setCssProps({"--pin-offset-y":o===0?"0px":`${o}px`})}hidePin(e){e.classList.remove("ai3d-pin-occluded"),e.classList.add("ai3d-pin-hidden")}showPin(e){e.classList.remove("ai3d-pin-hidden")}};kp.IDLE_THRESHOLD=15,kp._scratchProjection={screenX:0,screenY:0,depth:0};rF=kp});function Ml(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var kv=I(()=>{"use strict"});var CM={};Be(CM,{createHeadingSearch:()=>vEe,createNoteReader:()=>EEe,normalizeHeadingText:()=>Ml,readHeadingSection:()=>EQ,searchVaultHeadings:()=>vQ});function vQ(n,e){let t=e.toLowerCase().trim();if(!t)return[];let i=[],r=n.vault.getMarkdownFiles();for(let s of r){let a=n.metadataCache.getFileCache(s);if(a!=null&&a.headings)for(let o of a.headings)o.heading.toLowerCase().includes(t)&&i.push({notePath:s.path,heading:o.heading,level:o.level})}return i.slice(0,15)}function vEe(n){return e=>vQ(n,e)}async function EQ(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof gQ.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` +`});function Bc(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var AM=I(()=>{"use strict"});function fQ(n){return n.toLowerCase().replace(/^\./,"")}function tEe(n){let e=fQ(n);return e==="step"||e==="stp"?cQ:e==="iges"||e==="igs"?oQ:sQ}function rF(n,e,t){return n.split(e).join(t)}function dQ(n,e,t){let i=fQ(t),r=rF(tEe(i),$ve,Bc(n)),s=rF(r,Jve,Bc(e));return rF(s,eEe,i)}var $ve,Jve,eEe,hQ=I(()=>{"use strict";nQ();aQ();lQ();AM();$ve="__AI3D_SOURCE_PATH__",Jve="__AI3D_OUTPUT_PATH__",eEe="__AI3D_SOURCE_EXT__"});async function nEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function sEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`CAD conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var iEe,rEe,xM,uQ=I(()=>{"use strict";Qi();Qi();Qi();Qi();Mn();hd();hQ();iEe=Hi("freecad-converter"),rEe=300*1e3;xM=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking CAD conversion.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-freecad"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,dQ(e.sourcePath,s,e.sourceExt),"utf8"),iEe.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await sEe(t.command,[...t.args,o],rEe)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python with cadquery is installed: pip install cadquery trimesh. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await nEe(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await ia(s)).byteLength===0)throw new Error(`CAD conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/CadQuery(OCCT) bridge."]}}}});async function lEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function cEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`obj2gltf command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var aEe,oEe,RM,mQ=I(()=>{"use strict";Qi();Qi();Qi();Mn();hd();aEe=Hi("obj2gltf-converter"),oEe=180*1e3;RM=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking obj2gltf.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ui(i,`${r}.ai3d-converted.glb`);await Nn(wn(s),{recursive:!0}),aEe.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await cEe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],oEe)}catch(l){throw new Error(`obj2gltf conversion failed for '${e.sourcePath}'. Set obj2gltf command path in plugin settings or AI3D_OBJ2GLTF_CMD if obj2gltf is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await lEe(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await ia(s)).byteLength===0)throw new Error(`obj2gltf output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local obj2gltf CLI bridge."]}}}});async function hEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function uEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`FBX2glTF command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var fEe,dEe,bM,pQ=I(()=>{"use strict";Qi();Qi();Qi();Mn();hd();fEe=Hi("fbx2gltf-converter"),dEe=180*1e3;bM=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking FBX2glTF.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ui(i,`${r}.ai3d-converted.glb`);await Nn(wn(s),{recursive:!0}),fEe.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await uEe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],dEe)}catch(l){throw new Error(`FBX2glTF conversion failed for '${e.sourcePath}'. Set FBX2glTF command path in plugin settings or AI3D_FBX2GLTF_CMD if FBX2glTF is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await hEe(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await ia(s)).byteLength===0)throw new Error(`FBX2glTF output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FBX2glTF CLI bridge."]}}}});async function _Ee(n){try{return await is(n,rs),!0}catch(e){return!1}}function gEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`mesh conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function vEe(n,e){let t=Bc(n),i=Bc(e);return["import trimesh","import sys","",`src = r"${t}"`,`out = r"${i}"`,"","try:"," loaded = trimesh.load(src, force=None)","except Exception as e:",' print(f"Failed to load {src}: {e}", file=sys.stderr)'," sys.exit(1)","","if isinstance(loaded, trimesh.Scene):"," scene = loaded","elif isinstance(loaded, trimesh.Trimesh):"," scene = trimesh.Scene([loaded])","else:",' print(f"Unsupported type: {type(loaded)}", file=sys.stderr)'," sys.exit(1)","","try:"," data = scene.export(file_type='glb')","except Exception as e:",' print(f"Failed to export GLB: {e}", file=sys.stderr)'," sys.exit(1)","","with open(out, 'wb') as f:"," f.write(data)","","print(f'Converted {src} -> {out} ({len(data)} bytes)')"].join(` +`)}var mEe,pEe,MM,_Q=I(()=>{"use strict";Qi();Qi();Qi();Qi();Mn();hd();AM();mEe=Hi("assimp-converter"),pEe=300*1e3;MM=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await In(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking mesh conversion.`);let t=await In(this.id,this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-mesh-convert"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,vEe(e.sourcePath,s),"utf8"),mEe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await gEe(t.command,[...t.args,o],pEe)}catch(f){throw new Error(`Mesh conversion failed for '${e.sourcePath}'. Ensure Python with trimesh is installed: pip install trimesh numpy networkx pycollada. Set Python command path in plugin settings or AI3D_ASSIMP_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await _Ee(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await ia(s)).byteLength===0)throw new Error(`Mesh conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/trimesh bridge."]}}}});async function SEe(n){try{return await is(n,rs),!0}catch(e){return!1}}function TEe(n,e,t){return new Promise((i,r)=>{na(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i({stdout:a!=null?a:"",stderr:o!=null?o:""});return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`SLDPRT conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function AEe(n,e){let t=Bc(n),i=Bc(e),r=i.replace(/\.glb$/i,".intermediate.step");return["import sys","import os","",`src = r"${t}"`,`out = r"${i}"`,`step_out = r"${r}"`,"","# Step 1: Import SLDPRT via FreeCAD","try:"," import FreeCAD"," import ImportGui"," import Mesh","except ImportError as e:",' print(f"FreeCAD modules not available: {e}", file=sys.stderr)',' print("Ensure this script runs under FreeCADCmd (not system Python).", file=sys.stderr)'," sys.exit(1)","","print(f'Opening SLDPRT: {src}')","try:"," doc = FreeCAD.newDocument('Convert')"," ImportGui.open(src, doc.Name)","except Exception as e:",' print(f"Failed to open SLDPRT file: {e}", file=sys.stderr)'," sys.exit(1)","","if not doc.Objects:",' print("SLDPRT file imported but contains no objects", file=sys.stderr)'," sys.exit(1)","",'print(f"Imported {len(doc.Objects)} object(s) from SLDPRT")',"","# Step 2: Export to STEP (intermediate)","try:"," import Import"," objs = [o for o in doc.Objects if hasattr(o, 'Shape')]"," if not objs:",' print("No shape objects found after import", file=sys.stderr)'," sys.exit(1)"," Import.export(objs, step_out)",' print(f"Exported intermediate STEP: {step_out}")',"except Exception as e:",' print(f"Failed to export STEP: {e}", file=sys.stderr)'," sys.exit(1)","","FreeCAD.closeDocument(doc.Name)","","# Step 3: Convert STEP to GLB using OCP (same pipeline as FreecadConverter)","import trimesh","import trimesh.visual","import numpy as np","","from OCP.STEPControl import STEPControl_Reader","from OCP.TopoDS import TopoDS","from OCP.TopAbs import TopAbs_FACE","from OCP.TopExp import TopExp_Explorer","from OCP.BRep import BRep_Tool","from OCP.BRepMesh import BRepMesh_IncrementalMesh","from OCP.TopLoc import TopLoc_Location","from OCP.IFSelect import IFSelect_RetDone","","DEFAULT_COLOR = [180, 180, 180, 255]","","def triangulate_face(face, linear=0.1, angular=0.5):"," BRepMesh_IncrementalMesh(face, linear, False, angular, True)"," loc = TopLoc_Location()"," tri = BRep_Tool.Triangulation_s(face, loc)"," if tri is None:"," return None, None"," n = tri.NbNodes()"," verts = []"," for i in range(1, n + 1):"," p = tri.Node(i)"," if not loc.IsIdentity():"," p = p.Transformed(loc.Transformation())"," verts.append([p.X(), p.Y(), p.Z()])"," ntri = tri.NbTriangles()"," faces = []"," for i in range(1, ntri + 1):"," t = tri.Triangle(i)"," n1, n2, n3 = t.Get()"," faces.append([n1 - 1, n2 - 1, n3 - 1])"," return verts, faces","","sr = STEPControl_Reader()","status = sr.ReadFile(step_out)","if status != IFSelect_RetDone:",' print(f"Failed to read intermediate STEP: {step_out}", file=sys.stderr)'," sys.exit(1)","sr.TransferRoots()","shape = sr.OneShape()","","all_verts = []","all_faces = []","all_colors = []","total_faces = 0","","exp = TopExp_Explorer(shape, TopAbs_FACE)","while exp.More():"," face = TopoDS.Face_s(exp.Current())"," total_faces += 1"," verts, faces = triangulate_face(face)"," if verts and faces:"," offset = len(all_verts)"," all_verts.extend(verts)"," for tri in faces:"," all_faces.append([tri[0] + offset, tri[1] + offset, tri[2] + offset])"," all_colors.extend([DEFAULT_COLOR] * len(verts))"," exp.Next()","","if not all_verts or not all_faces:",' print(f"No geometry extracted from STEP ({total_faces} faces scanned)", file=sys.stderr)'," sys.exit(1)","",'print(f"Triangulated: {total_faces} faces, {len(all_verts)} verts")',"","verts_arr = np.array(all_verts, dtype=float)","faces_arr = np.array(all_faces, dtype=int)","colors_arr = np.array(all_colors, dtype=np.uint8)","","mesh = trimesh.Trimesh("," vertices=verts_arr,"," faces=faces_arr,"," visual=trimesh.visual.ColorVisuals(vertex_colors=colors_arr),"," process=True,",")","mesh.fix_normals()","scene = trimesh.Scene([mesh])","","result = scene.export(file_type='glb')","if isinstance(result, bytes):"," data = result","elif isinstance(result, str):"," with open(result, 'rb') as f:"," data = f.read()","else:"," data = bytes(result)","","with open(out, 'wb') as f:"," f.write(data)","","# Cleanup intermediate STEP","try:"," os.remove(step_out)","except OSError:"," pass","","print(f'Converted {src} -> {out} ({len(data)} bytes, {total_faces} faces)')"].join(` +`)}var nF,EEe,IM,gQ=I(()=>{"use strict";Qi();Qi();Qi();Qi();Mn();hd();AM();nF=Hi("sldprt-converter"),EEe=600*1e3;IM=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await In("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Fn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking SLDPRT conversion.`);let t=await In("freecadcmd",this.configuredCommand),i=wn(e.sourcePath),r=ra(e.sourcePath,ns(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ui(i,`${r}.ai3d-converted.glb`),a=Ui(zd(),"ai3d-sldprt"),o=Ui(a,`${r}-${Date.now()}.py`);await Nn(wn(s),{recursive:!0}),await Nn(a,{recursive:!0}),await kd(o,AEe(e.sourcePath,s),"utf8"),nF.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await TEe(t.command,[...t.args,o],EEe);f&&nF.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&nF.warn("FreeCAD stderr",{stderr:d.trim().slice(0,500)})}catch(f){throw new Error(`SLDPRT conversion failed for '${e.sourcePath}'. Ensure FreeCAD is installed (https://www.freecad.org/downloads.php). Set FreeCADCmd path in plugin settings or AI3D_FREECADCMD env var. ${f instanceof Error?f.message:String(f)}`)}finally{Wd(o,{force:!0})}if(!await SEe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await ia(s)).byteLength===0)throw new Error(`SLDPRT conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FreeCAD + OpenCASCADE bridge."]}}}});var yM={};Be(yM,{createConversionManager:()=>xEe});function xEe(n){var r;let e=new SM,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);sF.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new xM(n==null?void 0:n.freecadCommand),new RM(n==null?void 0:n.obj2gltfCommand),new bM(n==null?void 0:n.fbx2gltfCommand),new MM(n==null?void 0:n.assimpCommand),new IM(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),sF.info("enabled converter",{converterId:s.id})):sF.debug("converter disabled",{converterId:s.id});return e}var sF,CM=I(()=>{"use strict";tQ();uQ();mQ();pQ();_Q();gQ();Mn();sF=Hi("conversion-factory")});var PM={};Be(PM,{AnnotationManager:()=>oF});function yEe(){return`pin-${Date.now()}-${REe++}`}function TQ(n){return rn(n)}function CEe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var kv,Gp,REe,aF,bEe,MEe,vQ,EQ,IEe,SQ,kp,oF,DM=I(()=>{"use strict";kv=require("obsidian");vn();Ps();Ds();Gp=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],REe=1,aF=4,bEe=2,MEe=6,vQ=6,EQ=72,IEe=80,SQ=200;kp=class kp{constructor(e,t,i,r,s,a,o,l={}){this.provider=e;this.hostEl=t;this.mode=i;this.onChange=s;this.noteReader=a;this.headingSearch=o;this.pinEls=new Map;this.observer=null;this.resizeObs=null;this.annotations=[];this.editorEl=null;this.disposeCallbacks=[];this.frameCount=0;this.lastCamState="";this.idleFrames=0;this.cameraIdle=!1;this.movingOcclusionCursor=0;this.hoverPopover=null;this.hoverTimeout=null;this.hoverCloseTimeout=null;this.hoverRequestId=0;this._highlightHandler=null;this._pulseTimeout=null;this._headingDropdown=null;this._headingDebounce=null;this._selectedHeading=null;this.previewRenderRoot=new kv.Component;this.previewRenderChildren=new WeakMap;var c,f;this.previewApp=l.app,this.previewMode=(c=l.previewMode)!=null?c:"plain-text",this.displayMode=(f=l.displayMode)!=null?f:"surface",this.previewRenderRoot.load(),this.overlay=this.hostEl.createDiv({cls:"ai3d-annotation-overlay"}),this.setAnnotations(r),this._highlightHandler=d=>{let h=d.detail,u=h==null?void 0:h.pinId;u&&this.pulsePin(u)},activeDocument.addEventListener("ai3d-pin-highlight",this._highlightHandler),this.disposeCallbacks.push(()=>activeDocument.removeEventListener("ai3d-pin-highlight",this._highlightHandler)),this.disposeCallbacks.push(()=>this.previewRenderRoot.unload()),this.startProjectionLoop()}setAnnotations(e){for(let[,t]of this.pinEls)this.removePinElement(t.el);this.pinEls.clear(),this.annotations=[...e];for(let t of e)this.createPinElement(t);this.updateProjections()}addPin(e,t,i){var s;if(this.annotations.length>=SQ)return console.warn(`[AI3D] Pin limit (${SQ}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:yEe(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:Gp[this.annotations.length%Gp.length],createdAt:new Date().toISOString()};return this.annotations.push(r),this.createPinElement(r),this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations),r}removePin(e){var i;let t=this.pinEls.get(e);t&&(this.removePinElement(t.el),this.pinEls.delete(e)),this.annotations=this.annotations.filter(r=>r.id!==e),(i=this.onChange)==null||i.call(this,this.annotations)}updatePin(e,t){var s;let i=this.annotations.find(a=>a.id===e);if(!i)return;Object.assign(i,t);let r=this.pinEls.get(e);if(r){t.position&&(r.worldPos={x:t.position[0],y:t.position[1],z:t.position[2]});let a=r.el.querySelector(".ai3d-pin-label");a&&t.label!==void 0&&(a.textContent=t.label);let o=r.el.querySelector(".ai3d-pin-dot");o&&t.color!==void 0&&o.style.setProperty("--pin-color",t.color),(t.notePath!==void 0||t.headingRef!==void 0||t.label!==void 0)&&this.renderPinDisplay(r.el,i)}this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations)}showEditor(e,t,i){this.showEditorInternal(e,t,i)}editPin(e){let t=this.annotations.find(o=>o.id===e);if(!t)return;let i=this.pinEls.get(e);if(!i)return;let r=i.el.getBoundingClientRect(),s=r.left+r.width/2,a=r.top;this.showEditorInternal(s,a,TQ(i.worldPos),t)}getPinPosition(e){let t=this.pinEls.get(e);return t?TQ(t.worldPos):null}getAnnotations(){return this.annotations}showEditorInternal(e,t,i,r){var w,G;this.hideEditor(),this._selectedHeading=null;let s=this.overlay.createDiv({cls:"ai3d-annotation-editor"}),a=s.createDiv({cls:"ai3d-editor-input-wrap"}),o=a.createEl("input",{cls:"ai3d-annotation-editor-input"});o.type="text",o.placeholder=this.headingSearch?"Label or search heading...":"Label...",r&&(o.value=r.label);let l=a.createSpan({cls:"ai3d-editor-binding-tag is-hidden"}),c=l.createEl("button",{cls:"ai3d-editor-binding-clear"});c.textContent="\xD7",c.addEventListener("click",O=>{O.stopPropagation(),this._selectedHeading=null,l.classList.add("is-hidden"),f.classList.add("is-hidden"),f.textContent="",o.value="",o.focus()});let f=s.createDiv({cls:"ai3d-editor-content-preview is-hidden"}),d=s.createDiv({cls:"ai3d-heading-dropdown is-hidden"});this._headingDropdown=d;let h=-1,u=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),h=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=tn(O.notePath);(V=l.querySelector(".ai3d-editor-binding-text"))==null||V.remove();let B=l.createSpan({cls:"ai3d-editor-binding-text"});B.textContent=`\u{1F4C4} ${N}`,l.classList.remove("is-hidden"),p(),o.focus(),this.loadContentPreview(f,O.notePath,O.heading)},p=()=>{d.classList.add("is-hidden"),d.replaceChildren(),h=-1},g=O=>{if(d.replaceChildren(),h=-1,u=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{te.preventDefault(),te.stopPropagation(),_(B)}),V.addEventListener("mouseenter",()=>m(N))}d.classList.remove("is-hidden")};o.addEventListener("input",()=>{if(!this.headingSearch)return;this._headingDebounce&&window.clearTimeout(this._headingDebounce);let O=o.value.trim();if(O.length<1){p();return}this._headingDebounce=window.setTimeout(()=>{let N=this.headingSearch(O);g(N)},150)}),o.addEventListener("keydown",O=>{if(d.classList.contains("is-hidden")){O.key==="Enter"?(O.preventDefault(),R.click()):O.key==="Escape"&&(O.preventDefault(),this.hideEditor());return}let N=d.querySelectorAll(".ai3d-heading-dropdown-item");O.key==="ArrowDown"?(O.preventDefault(),m(Math.min(h+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(h-1,0))):O.key==="Enter"?(O.preventDefault(),h>=0&&h{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),x=(w=r==null?void 0:r.color)==null?void 0:w.trim(),S=x||Gp[0],E=x&&!Gp.includes(x)?[x,...Gp]:Gp;for(let O of E){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",qi("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===S&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),S=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let T=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-delete"});O.textContent="Delete",O.addEventListener("click",N=>{N.stopPropagation(),this.removePin(r.id),this.hideEditor()})}let R=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-confirm"});R.textContent=r?"Save":"OK",R.addEventListener("click",O=>{O.stopPropagation();let N=o.value.trim()||"Pin",B=this._selectedHeading;if(r){let V={label:N,color:S};B&&(V.notePath=B.notePath,V.headingRef=B.heading,V.headingLevel=B.level),this.updatePin(r.id,V)}else{let V=this.addPin(i,N,S);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=T.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let y=this.overlay.getBoundingClientRect(),C=e-y.left,L=t-y.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,y.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(L-10,y.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=tn(r.notePath),N=l.createSpan({cls:"ai3d-editor-binding-text"});N.textContent=`\u{1F4C4} ${O}`,l.classList.remove("is-hidden"),this._selectedHeading={notePath:r.notePath,heading:r.headingRef,level:(G=r.headingLevel)!=null?G:2},this.loadContentPreview(f,r.notePath,r.headingRef)}window.requestAnimationFrame(()=>o.focus()),s.addEventListener("pointerdown",O=>O.stopPropagation()),s.addEventListener("mousedown",O=>O.stopPropagation())}hideEditor(){if(this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,this.editorEl){let e=this.editorEl.querySelector(".ai3d-editor-content-preview");e&&this.clearRenderedPreview(e),this.editorEl.remove(),this.editorEl=null}}async loadContentPreview(e,t,i){if(!this.noteReader)return;this.clearRenderedPreview(e),e.classList.add("is-hidden");let r=await this.noteReader(t,i);if(!r){e.textContent=j("annotation.sectionEmpty"),e.className="ai3d-editor-content-preview ai3d-editor-content-preview--empty",e.classList.remove("is-hidden");return}await this.renderPreviewContent(e,r,t,"editor")}async showHoverPopover(e,t,i){if(!this.noteReader||!i.notePath||!i.headingRef)return;this.hideHoverPopover();let r=await this.noteReader(i.notePath,i.headingRef);if(!r||e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)return;let s=createDiv({cls:"ai3d-pin-popover"}),a=s.createDiv({cls:"ai3d-pin-popover-title"});a.textContent=i.headingRef;let o=s.createDiv({cls:"ai3d-pin-popover-body"}),l=t.getBoundingClientRect();s.style.setProperty("--popover-left",`${l.left+l.width/2}px`),s.style.setProperty("--popover-top",`${l.bottom+4}px`),s.addEventListener("mouseenter",()=>this.cancelHoverClose()),s.addEventListener("mouseleave",()=>this.scheduleHoverClose()),activeDocument.body.appendChild(s),this.hoverPopover=s,await this.renderPreviewContent(o,r,i.notePath,"popover"),(e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)&&(this.clearRenderedPreview(o),this.hoverPopover===s&&(this.hoverPopover=null),s.remove())}hideHoverPopover(){if(this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null),this.hoverPopover){let e=this.hoverPopover.querySelector(".ai3d-pin-popover-body");e&&this.clearRenderedPreview(e),this.hoverPopover.remove(),this.hoverPopover=null}}cancelHoverClose(){this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null)}scheduleHoverClose(){this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null,this.hoverRequestId++),this.cancelHoverClose(),this.hoverCloseTimeout=window.setTimeout(()=>{this.hoverCloseTimeout=null,this.hoverRequestId++,this.hideHoverPopover()},180)}clearRenderedPreview(e){let t=this.previewRenderChildren.get(e);t&&(this.previewRenderRoot.removeChild(t),this.previewRenderChildren.delete(e)),e.replaceChildren()}removePinElement(e){e.querySelectorAll(".ai3d-rendered-preview").forEach(t=>{this.clearRenderedPreview(t)}),e.remove()}async renderPreviewContent(e,t,i,r){let s=this.previewMode==="markdown"&&!!this.previewApp,a=r==="editor",o=r==="pin-snippet";if(!s){let c=a?300:o?180:1/0,f=t.length>c?t.slice(0,c)+"...":t;e.textContent=f,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden");return}e.className=a?"ai3d-editor-content-preview ai3d-editor-content-preview--markdown markdown-rendered":o?"ai3d-pin-snippet ai3d-pin-snippet--markdown ai3d-rendered-preview markdown-rendered":"ai3d-pin-popover-body ai3d-pin-popover-body--markdown ai3d-rendered-preview markdown-rendered",a&&e.classList.remove("is-hidden");let l=this.previewRenderRoot.addChild(new kv.Component);this.previewRenderChildren.set(e,l);try{await kv.MarkdownRenderer.render(this.previewApp,t,e,i,l)}catch(c){this.previewRenderRoot.removeChild(l),this.previewRenderChildren.delete(e);let f=a?300:o?180:1/0;e.textContent=t.length>f?t.slice(0,f)+"...":t,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden"),console.warn("[AI3D] Annotation markdown preview fallback:",c)}}pulsePin(e){let t=this.pinEls.get(e);t&&(this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),t.el.classList.remove("ai3d-pin-pulse"),t.el.offsetWidth,t.el.classList.add("ai3d-pin-pulse"),this._pulseTimeout=window.setTimeout(()=>{t.el.classList.remove("ai3d-pin-pulse"),this._pulseTimeout=null},1200))}destroy(){var e,t,i;this.hoverRequestId++,this.hideHoverPopover(),this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,(e=this.observer)==null||e.remove(),this.observer=null,(t=this.resizeObs)==null||t.disconnect(),this.resizeObs=null;for(let r of this.disposeCallbacks)r();this.disposeCallbacks=[],this.overlay.remove(),this.pinEls.clear(),(i=this.editorEl)==null||i.remove(),this.editorEl=null}createPinElement(e){let t=this.overlay.createDiv({cls:"ai3d-annotation-pin"});if(t.dataset.pinId=e.id,this.renderPinDisplay(t,e),this.mode==="edit"){let i=t.createEl("button",{cls:"ai3d-pin-delete"});i.textContent="\xD7",i.addEventListener("click",r=>{r.stopPropagation(),this.removePin(e.id)}),t.addEventListener("click",r=>{r.target.closest(".ai3d-pin-delete")||(r.stopPropagation(),this.editPin(e.id))})}t.addEventListener("pointerdown",i=>i.stopPropagation()),t.addEventListener("wheel",i=>{i.preventDefault(),i.stopPropagation(),this.provider.canvas.dispatchEvent(new WheelEvent("wheel",{bubbles:!0,cancelable:!0,clientX:i.clientX,clientY:i.clientY,ctrlKey:i.ctrlKey,deltaMode:i.deltaMode,deltaX:i.deltaX,deltaY:i.deltaY,deltaZ:i.deltaZ,metaKey:i.metaKey,shiftKey:i.shiftKey}))},{passive:!1}),e.notePath&&e.headingRef&&this.noteReader&&(t.addEventListener("mouseenter",()=>{this.cancelHoverClose(),this.hoverTimeout&&window.clearTimeout(this.hoverTimeout);let i=++this.hoverRequestId;this.hoverTimeout=window.setTimeout(()=>{this.hoverTimeout=null,i===this.hoverRequestId&&this.showHoverPopover(i,t,e)},300)}),t.addEventListener("mouseleave",()=>{this.scheduleHoverClose()})),this.pinEls.set(e.id,{el:t,worldPos:{x:e.position[0],y:e.position[1],z:e.position[2]}})}renderPinDisplay(e,t){let i=e.querySelector(".ai3d-pin-delete");if(e.querySelectorAll(".ai3d-rendered-preview").forEach(s=>{this.clearRenderedPreview(s)}),e.replaceChildren(),e.className=`ai3d-annotation-pin ai3d-annotation-pin--${this.displayMode}`,e.createDiv({cls:"ai3d-pin-dot"}).style.setProperty("--pin-color",t.color),e.title=t.label,e.setAttribute("aria-label",t.label),this.displayMode!=="dot"){let s=e.createDiv({cls:"ai3d-pin-content"}),a=s.createSpan({cls:"ai3d-pin-label"});if(a.textContent=t.label,this.displayMode==="snippet"&&t.notePath&&t.headingRef&&this.noteReader){let o=s.createDiv({cls:"ai3d-pin-snippet ai3d-rendered-preview"});this.loadPinSnippet(o,t.notePath,t.headingRef)}}i&&e.appendChild(i)}async loadPinSnippet(e,t,i){if(!this.noteReader)return;let r=await this.noteReader(t,i);!r||!e.isConnected||await this.renderPreviewContent(e,r,t,"pin-snippet")}startProjectionLoop(){this.observer=this.provider.observeRender(()=>this.updateProjections()),this.resizeObs=new ResizeObserver(()=>this.updateProjections()),this.resizeObs.observe(this.provider.canvas)}updateProjections(){if(this.pinEls.size===0)return;let{canvas:e}=this.provider;if(!this.hostEl.isConnected||!e.isConnected||e.clientWidth===0||e.clientHeight===0)return;let t=this.provider.getCameraStateKey();t===this.lastCamState?this.idleFrames++:(this.idleFrames=0,this.cameraIdle=!1),this.lastCamState=t,this.idleFrames>=kp.IDLE_THRESHOLD&&!this.cameraIdle&&(this.cameraIdle=!0),this.frameCount++;let i=this.cameraIdle?1:this.pinEls.size>=12?3:2;if(!this.cameraIdle&&this.frameCount%i!==0)return;let r=Array.from(this.pinEls.values()),s=this.cameraIdle?this.frameCount%MEe===0:this.frameCount%bEe===0,a=this.cameraIdle||r.length<=aF,o=a?0:this.movingOcclusionCursor%r.length,l=o+aF,c=kp._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(h.el);else{let u=Math.round(c.screenX),m=Math.round(c.screenY);h.el.style.setProperty("--pin-left",`${u}px`),h.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(h.el,c.depth),f.push({el:h.el,screenX:u,screenY:m,depth:c.depth});let _=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+aF)%r.length),this.cameraIdle)this.applyLabelAvoidance(f);else for(let d of f)d.el.style.removeProperty("--pin-offset-y")}updatePinPriority(e,t){let i=Math.max(0,Math.min(1,1-t)),r=this.cameraIdle?0:160,s=e.classList.contains("ai3d-pin-occluded")?80:0;e.style.zIndex=String(100+r+Math.round(i*120)-s)}applyLabelAvoidance(e){if(e.length===0)return;if(e.length>IEe){for(let a of e)a.el.style.removeProperty("--pin-offset-y");return}let i=e.filter(a=>!a.el.classList.contains("ai3d-pin-hidden")&&!a.el.classList.contains("ai3d-pin-occluded")).sort((a,o)=>a.depth-o.depth).map(a=>({pin:a,rect:a.el.getBoundingClientRect()})),r=[],s=[];for(let{pin:a,rect:o}of i){let l=0,c=o;for(let f of r){if(!CEe(c,f,vQ))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-EQ,Math.min(EQ,l+d*(f.height+vQ)));let h=c.width,u=c.height;c=new DOMRect(c.x,c.y+l,h,u)}r.push(c),s.push({el:a.el,offset:l})}for(let{el:a,offset:o}of s)a.setCssProps({"--pin-offset-y":o===0?"0px":`${o}px`})}hidePin(e){e.classList.remove("ai3d-pin-occluded"),e.classList.add("ai3d-pin-hidden")}showPin(e){e.classList.remove("ai3d-pin-hidden")}};kp.IDLE_THRESHOLD=15,kp._scratchProjection={screenX:0,screenY:0,depth:0};oF=kp});function Ml(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var Wv=I(()=>{"use strict"});var LM={};Be(LM,{createHeadingSearch:()=>PEe,createNoteReader:()=>DEe,normalizeHeadingText:()=>Ml,readHeadingSection:()=>RQ,searchVaultHeadings:()=>xQ});function xQ(n,e){let t=e.toLowerCase().trim();if(!t)return[];let i=[],r=n.vault.getMarkdownFiles();for(let s of r){let a=n.metadataCache.getFileCache(s);if(a!=null&&a.headings)for(let o of a.headings)o.heading.toLowerCase().includes(t)&&i.push({notePath:s.path,heading:o.heading,level:o.level})}return i.slice(0,15)}function PEe(n){return e=>xQ(n,e)}async function RQ(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof AQ.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` `),a=-1,o=0,l=Ml(t);for(let f=0;fEQ(n,e,t)}var gQ,PM=I(()=>{"use strict";gQ=require("obsidian");kv();kv()});var oF={};Be(oF,{LOCAL_ANALYSIS_VERSION:()=>Uh,buildLocalAnalysisResult:()=>aF,buildPartRecordsFromEvidence:()=>RQ,inferModelAssetFormat:()=>Fc,normalizeModelLoadStrategy:()=>Bh});function xQ(){return typeof performance!="undefined"?performance.now():Date.now()}function ud(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function REe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(xQ()-n)),status:"success"}}function bEe(n,e){let t=n[0]-e[0],i=n[1]-e[1],r=n[2]-e[2];return Math.sqrt(t*t+i*i+r*r)}function sF(n){return Xh([n.x,n.y,n.z])}function SQ(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function TQ(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function MEe(n,e,t,i){var c,f;let r=TQ(tn(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${TQ(s)||t+1}`:`${r}:part:${t+1}`,o=a,l=2;for(;i.has(o);)o=`${a}:${l}`,l++;return i.add(o),o}function Wv(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function DM(n){return new Set(Wv(n).split(" ").filter(e=>e.length>=2))}function AQ(n,e){if(n.size===0||e.size===0)return 0;let t=0;for(let i of n)e.has(i)&&(t+=1);return t/Math.max(n.size,e.size)}function IEe(n,e){if(!n||!e||n.length<3||e.length<3)return 0;let t=[...n].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),i=[...e].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),r=0;for(let s=0;s<3;s++)r+=Math.min(t[s],i[s])/Math.max(t[s],i[s]);return r/3}function yEe(n,e){let t=Wv(n),i=Wv(e);return!!t&&!!i&&t===i}function nF(n,e){let t=Wv(n),i=Wv(e);return!!t&&!!i&&t===i}function CEe(n){return n.map(e=>({part:e,nameTokens:DM(e.name),meshTokens:DM(e.meshRefs.join(" "))}))}function PEe(n,e){let t=DM(n.name),i=DM(n.meshRefs.join(" "));return e.filter(s=>s.part.assetId!==n.assetId||s.part.partId!==n.partId).flatMap(s=>{let a=s.part,o=[],l=AQ(t,s.nameTokens),c=AQ(i,s.meshTokens),f=IEe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,h=yEe(n.materialName,a.materialName),u=nF(n.componentId,a.componentId),m=nF(n.partNumber,a.partNumber),_=nF(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return u&&(p+=.5),m&&(p+=.4),_&&(p+=.25),d&&(p+=.1),h&&(p+=.08),u&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),_&&o.push("same occurrence id"),l>=.5&&o.push("similar part name"),c>=.5&&o.push("similar mesh names"),f>=.72&&o.push("similar bounding size"),d&&o.push(`same category: ${n.category}`),h&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,SEe)}function DEe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=CEe(e);return n.map(i=>{let r=PEe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function LEe(n){var t;let e=n.name.toLowerCase();return n.source==="component"?"component":n.source==="group"?"group":n.source==="detail-cluster"?"detail-cluster":e.includes("wheel")||e.includes("gear")||e.includes("axle")?"mechanical":e.includes("shell")||e.includes("case")||e.includes("cover")||e.includes("housing")?"enclosure":e.includes("button")||e.includes("key")||e.includes("switch")?"control":e.includes("glass")||e.includes("screen")||e.includes("lens")?"surface":(t=n.materialName)!=null&&t.toLowerCase().includes("metal")?"material-driven":"unclassified"}function OEe(n){var t,i,r,s,a,o,l,c,f,d,h,u;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${ud((r=(i=n.childCount)!=null?i:(t=n.meshNames)==null?void 0:t.length)!=null?r:0,"child mesh","child meshes")}.`),n.source==="component"&&e.push(`Registered from model component metadata with ${ud((o=(a=n.childCount)!=null?a:(s=n.meshNames)==null?void 0:s.length)!=null?o:1,"child mesh","child meshes")}.`),n.source==="detail-cluster"&&e.push(`Merged from ${ud((f=(c=n.childCount)!=null?c:(l=n.meshNames)==null?void 0:l.length)!=null?f:0,"generic tiny mesh","generic tiny meshes")} to avoid over-splitting renderer fragments.`),n.componentId&&e.push(`Component ID: ${n.componentId}.`),n.occurrenceId&&e.push(`Occurrence ID: ${n.occurrenceId}.`),n.partNumber&&e.push(`Part number: ${n.partNumber}.`),n.componentPath&&e.push(`Component path: ${n.componentPath}.`),n.sourceFormat||n.effectiveFormat||n.loadStrategy){let m=(h=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?h:"glb",_=(u=n.effectiveFormat)!=null?u:m,p=Bh(n.loadStrategy,m,_);e.push(`Format lineage: ${m.toUpperCase()}${_!==m?` -> ${_.toUpperCase()}`:""} (${p}).`)}return e.push(`${ud(n.triangleCount,"triangle")} and ${ud(n.vertexCount,"vertex")}.`,`Bounding size ${n.boundingSize.x.toFixed(3)} x ${n.boundingSize.y.toFixed(3)} x ${n.boundingSize.z.toFixed(3)}.`),n.materialName&&e.push(`Uses material "${n.materialName}".`),e}function NEe(n,e,t){var o,l,c,f,d;let i=Fc(n),r=(l=(o=e.sourceFormat)!=null?o:t==null?void 0:t.sourceFormat)!=null?l:i,s=(f=(c=e.effectiveFormat)!=null?c:t==null?void 0:t.effectiveFormat)!=null?f:r,a=Bh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function wEe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function RQ(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=NEe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:MEe(n,r,s,i),assetId:n,name:r.name||`Part ${s+1}`,source:r.source,componentId:r.componentId,occurrenceId:r.occurrenceId,partNumber:r.partNumber,componentPath:r.componentPath,category:LEe(r),meshRefs:SQ((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],AEe),childCount:r.childCount,materialRefs:SQ(r.materialName?[r.materialName]:[],xEe),bbox:sF(r.boundingSize),center:sF(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:wEe(r),observations:OEe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function FEe(n,e,t,i,r){var o;let s=[],a=t==null?void 0:t.summary;a&&s.push({id:`${n}:geometry`,title:"Geometry overview",domain:"geometry",summary:`${ud(a.meshCount,"mesh")}, ${ud(a.triangleCount,"triangle")}, ${ud(a.materialCount,"material slot")}.`,relatedPartIds:i.slice(0,12).map(l=>l.partId),relatedAssetIds:[n],confidence:.72,source:"rule"});for(let l of(o=e==null?void 0:e.annotations)!=null?o:[]){let c=r.find(f=>f.annotationId===l.id);s.push({id:`${n}:annotation:${l.id}`,title:l.label||"Annotation focus",domain:"assembly",summary:[l.headingRef?`Pinned focus area linked to heading "${l.headingRef}".`:"Pinned focus area marked by the user for follow-up analysis.",c!=null&&c.nearestPartName?`Nearest part candidate: ${c.nearestPartName}.`:""].filter(Boolean).join(" "),relatedPartIds:c!=null&&c.nearestPartId?[c.nearestPartId]:[],relatedAssetIds:[n],confidence:.8,source:"user"})}return s}function BEe(n,e){var i;return((i=n==null?void 0:n.annotations)!=null?i:[]).map(r=>{let s=r.position,a=null,o=Number.POSITIVE_INFINITY;for(let c of e){if(!c.center)continue;let f=bEe(s,c.center);f{var p;return{partId:_.partId,name:_.name,notePath:_.notePath,source:_.source,componentId:_.componentId,occurrenceId:_.occurrenceId,partNumber:_.partNumber,componentPath:_.componentPath,category:_.category,sourceFormat:_.sourceFormat,effectiveFormat:_.effectiveFormat,loadStrategy:_.loadStrategy,meshRefs:[..._.meshRefs],childCount:_.childCount,triangleCount:_.triangleCount,materialName:_.materialName,registeredMatches:(p=_.registeredMatches)==null?void 0:p.map(g=>({...g,reasons:[...g.reasons]})),observations:_.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function VEe(n,e){var t,i;return Array.from(new Set([...(t=n==null?void 0:n.resourceWarnings)!=null?t:[],...(i=e==null?void 0:e.resourceWarnings)!=null?i:[]]))}function aF(n){var m,_,p,g,v,x,S,E,T,R,M,y,C;let e=(m=n.startedAt)!=null?m:xQ(),t=(p=(_=n.evidence)==null?void 0:_.summary)!=null?p:n.preview,i=Fc(n.modelPath),r=(g=n.evidence)==null?void 0:g.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=Bh(r==null?void 0:r.loadStrategy,(x=r==null?void 0:r.sourceFormat)!=null?x:i,s),o=DEe(RQ(n.modelPath,(E=(S=n.evidence)==null?void 0:S.parts)!=null?E:[],r),(T=n.registeredParts)!=null?T:[]),l=new Date().toISOString(),c=VEe(n.preview,n.evidence),f=BEe(n.profile,o),d=FEe(n.modelPath,n.profile,n.evidence,o,f),h=(R=n.previewImages)!=null?R:[],u=UEe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:h,warnings:c});return{asset:{assetId:n.modelPath,title:tn(n.modelPath)||n.modelPath,sourcePath:n.modelPath,format:i,effectiveFormat:s,loadStrategy:a,importedAt:l,updatedAt:l,status:t?"ready":"processing",vertexCount:t==null?void 0:t.vertexCount,triangleCount:t==null?void 0:t.triangleCount,materialCount:t==null?void 0:t.materialCount,boundingBox:t?sF(t.boundingSize):void 0,analysisVersion:Uh},parts:o,knowledgeNodes:d,previewImages:h,annotationLinks:f,draftingInput:u,evidence:(M=n.evidence)!=null?M:void 0,warnings:c,pipeline:[{stage:"stats",durationMs:0,status:t?"success":"skipped"},{stage:"split",durationMs:0,status:(C=(y=n.evidence)==null?void 0:y.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},REe(e)]}}var Uh,SEe,TEe,AEe,xEe,LM=I(()=>{"use strict";Ps();tE();uM();uM();Uh="local-evidence-v1",SEe=3,TEe=.58,AEe=16,xEe=16});function Vh(n){let e=n.trim();return e.length>bQ?Li(e.slice(0,bQ))+"\u2026":Li(e)}function MQ(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=Vh(t);if(!i)return null;let r=Array.isArray(e.sections)?e.sections.flatMap(o=>{if(!o||typeof o!="object")return[];let l=o,c=typeof l.heading=="string"?l.heading.trim():"",f=typeof l.body=="string"?l.body.trim():"",d=Vh(c),h=Vh(f);return d&&h?[{heading:d,body:h}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Vh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Vh(o)):void 0;return{title:typeof e.title=="string"?Vh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?Vh(e.model):void 0}}var bQ,IQ=I(()=>{"use strict";OT();bQ=8e3});function kEe(n){let e=n.trim().replace(/\/+$/,"");if(!e)return"";let t=/^[a-z][a-z\d+\-.]*:\/\//i.test(e)?e:`http://${e}`;try{let i=new URL(t);return i.protocol!=="http:"&&i.protocol!=="https:"||i.search||i.hash?null:i.toString().replace(/\/+$/,"")}catch(i){return null}}function WEe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function HEe(n){return{...n,model:{...n.model,summary:void 0},partCandidates:[],annotationLinks:n.annotationLinks.map(e=>({...e,notePath:void 0,position:[0,0,0],nearestPartId:void 0,nearestPartName:void 0,distance:void 0,confidence:Math.min(e.confidence,.25)})),knowledgeNodes:n.knowledgeNodes.map(e=>({...e,summary:"Geometry details were withheld by privacy settings.",relatedPartIds:[]}))}}function zEe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=WEe(t)),n.sendGeometrySummaryToRemote||(t=HEe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function CQ(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=kEe(n.serviceBaseUrl);return i===""?{enabled:!1,reason:"serviceBaseUrl is empty"}:i===null?{enabled:!1,reason:"serviceBaseUrl must be a valid http(s) URL"}:n.sendRawModelToRemote?{enabled:!1,reason:"raw model upload is not supported by this draft client"}:e?{enabled:!0,endpoint:`${i}/draft-note`,request:{analysisVersion:t,draftingInput:zEe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function XEe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):GEe}async function YEe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new lF(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function PQ(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=XEe(e.timeoutMs),i=await YEe((0,yQ.requestUrl)({url:n.endpoint,method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n.request)}),t,n.endpoint);if(i.status<200||i.status>=300)throw new Error(`Remote draft request failed: HTTP ${i.status}`);return MQ(i.json)}var yQ,GEe,lF,DQ=I(()=>{"use strict";yQ=require("obsidian");IQ();GEe=15e3,lF=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var OM={};Be(OM,{buildKnowledgeIndexContent:()=>QQ,buildKnowledgeIndexManagedSection:()=>SF,buildKnowledgeNoteContent:()=>YQ,collectRegisteredPartsFromProfiles:()=>qQ,generateKnowledgeNote:()=>bSe,replaceManagedSection:()=>ZQ,stripTransientRegisteredPartData:()=>EF});function cF(n){var e,t,i;return{modelPath:n.modelPath,reportNotePath:n.reportNotePath,analysisSidecarPath:n.analysisSidecarPath,knowledgeIndexPath:n.knowledgeIndexPath,partNoteCount:(e=n.partNoteCount)!=null?e:0,previewImageCount:(t=n.previewImageCount)!=null?t:0,generatedAt:new Date().toISOString(),status:n.status,warningCount:(i=n.warningCount)!=null?i:0}}function GQ(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function uF(n){return n.filter(e=>e.length>0).join(", ")}function fF(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function gF(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function mF(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function pF(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function qEe(n,e=12){if(n.length===0)return"-";let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i.toLocaleString()} more`:t}function kQ(n){var e,t;return n.source==="component"?n.childCount&&n.childCount>1?`component (${n.childCount})`:"component":n.source==="group"?`group (${(e=n.childCount)!=null?e:n.meshRefs.length})`:n.source==="detail-cluster"?`detail cluster (${(t=n.childCount)!=null?t:n.meshRefs.length})`:"mesh"}function _F(n){var a,o,l;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(a=n.sourceFormat)!=null?a:n.effectiveFormat,t=(o=n.effectiveFormat)!=null?o:e,i=(l=n.loadStrategy)!=null?l:e&&t&&e!==t?"convert":"direct",r=e?e.toUpperCase():"unknown",s=t&&t!==e?` -> ${t.toUpperCase()}`:"";return`${r}${s} (${i})`}function ZEe(n){let e=n.sourceNotePath?`[[${n.sourceNotePath}|${n.sourcePartName}]]`:n.sourcePartName,t=n.reasons.length>0?` - ${n.reasons.join(", ")}`:"";return`${e} (${Math.round(n.confidence*100)}%${t})`}function WQ(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Li(n.headingRef)}`),n.notePath){let i=(t=Cs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function QEe(n){return[{axis:"x",value:Math.max(0,n.boundingSize.x)},{axis:"y",value:Math.max(0,n.boundingSize.y)},{axis:"z",value:Math.max(0,n.boundingSize.z)}].sort((e,t)=>t.value-e.value)}function HQ(n){let[e,t,i]=QEe(n);if(!e||e.value<=0)return"Bounding information is incomplete, so scale and orientation still need manual review.";let r=i.value>0?e.value/i.value:Number.POSITIVE_INFINITY,s=e.value>0?t.value/e.value:0;return(e.value>0?i.value/e.value:0)<=.18&&s>=.45?`The bounding box is strongly planar, with a thin ${i.axis.toUpperCase()} dimension compared with ${e.axis.toUpperCase()}.`:r>=3&&s<=.55?`The model is strongly elongated along ${e.axis.toUpperCase()}, which suggests a directional or axial structure.`:"The overall bounding volume is fairly balanced, so semantic grouping is more likely to come from mesh and material boundaries than from one dominant axis."}function zQ(n){if(n.splatCount!==void 0)return`This is a splat-based asset with ${n.splatCount.toLocaleString()} splats; review should focus on capture coverage, density, and viewpoint clarity instead of triangle topology.`;let e=0;return n.triangleCount>=5e5?e+=3:n.triangleCount>=1e5?e+=2:n.triangleCount>=2e4&&(e+=1),n.meshCount>=100?e+=2:n.meshCount>=25&&(e+=1),n.materialCount>=8&&(e+=1),e>=5?"The mesh and material counts point to a high-complexity asset; expect semantic cleanup, regrouping, or naming review before turning it into stable knowledge notes.":e>=3?"The asset sits in a medium-complexity range: it already contains useful structure, but some meshes or materials may still reflect export convenience rather than real-world parts.":"The asset is structurally compact, so a lightweight local pass can usually produce usable first-draft notes without a heavier analysis pipeline."}function $Ee(n){var t;let e=(t=n==null?void 0:n.tags)!=null?t:[];return e.length===0?"No knowledge tags are stored yet, so the note should establish the first stable vocabulary for this model.":`Current tags already suggest a working taxonomy: ${uF(e)}.`}function LQ(n){var t;let e=(t=n==null?void 0:n.annotations)!=null?t:[];return e.length===0?"No annotation pins are stored yet, so the next useful pass is to mark semantically important regions before splitting the model into part notes.":e.length===1?"There is 1 saved annotation pin, which already gives this report a concrete user-selected focus area.":`There are ${e.length} saved annotation pins, which provide a useful first-pass map of user-relevant regions.`}function JEe(n,e){var r;if(!n)return["Preview statistics were not available when this note was generated, so the next step is to reload the model and regenerate the report.",LQ(e)];let t=[`${n.meshCount.toLocaleString()} mesh(es), ${((r=n.splatCount)!=null?r:n.triangleCount).toLocaleString()} ${n.splatCount!==void 0?"splats":"triangles"}, and ${n.materialCount.toLocaleString()} material slot(s) are currently visible in the preview pipeline.`,zQ(n),HQ(n),LQ(e)],i=$Ee(e);return i&&t.push(i),t}function eSe(n){var i;let e=(i=n==null?void 0:n.annotations)!=null?i:[];if(e.length===0)return["## Focus Areas","","- No focus areas have been pinned yet.",""];let t=["## Focus Areas",""];for(let r of e){let s=WQ(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Li(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function tSe(n){var i,r;let e=(i=n==null?void 0:n.annotationLinks)!=null?i:[];if(e.length===0)return["## Annotation Links","","- No annotation-to-part links were produced in this pass.",""];let t=["## Annotation Links","","| Annotation | Nearest Part | Linked Note | Distance | Confidence |","|------------|--------------|-------------|----------|------------|"];for(let s of e){let a=s.notePath?`[[${s.notePath}]]`:"-";t.push(`| ${pa(s.label)} | ${pa((r=s.nearestPartName)!=null?r:"-")} | ${pa(a)} | ${s.distance===void 0?"-":s.distance.toFixed(3)} | ${Math.round(s.confidence*100)}% |`)}return t.push(""),t}function iSe(n){var i,r,s,a;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(o=>o.notePath);if(e.length===0)return["## Suggested Part Notes","","- No part note drafts were created in this pass.",""];let t=["## Suggested Part Notes",""];for(let o of e.slice(0,UQ)){let l=Li((s=Cs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",Fo(o.triangleCount,"triangle"),o.materialName?`material ${Li(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Li(o.name)} (${c})`)}return t.push(""),t}function Fo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function rSe(n){return n.length===0?"No per-part evidence was captured yet, so the first useful editing pass is to reload the model and regenerate this note from the workbench.":n.slice(0,6).map((e,t)=>{var r;let i=e.materialName?`, material ${Li(e.materialName)}`:"";return`${t+1}. ${Li(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${Fo(e.triangleCount,"triangle")}${i})`}).join(` -`)}function nSe(n){let e=n.filter(t=>{var i;return(i=t.registeredMatches)==null?void 0:i.length});return e.length===0?"No previously registered parts were matched across other analyzed models in this pass.":e.slice(0,6).map(t=>{var r;let i=(r=t.registeredMatches)==null?void 0:r[0];return i?`- ${Li(t.name)}: possible reuse of ${Li(i.sourcePartName)} from ${Li(i.sourceAssetId)} (${Math.round(i.confidence*100)}% confidence).`:""}).filter(Boolean).join(` -`)}function XQ(n){var p,g,v,x,S,E,T,R,M;let e=GQ(n.sourcePath).toUpperCase(),t=n.preview,i=[...(g=(p=n.analysis)==null?void 0:p.parts)!=null?g:[]].sort((y,C)=>{var L,w;return((L=C.triangleCount)!=null?L:0)-((w=y.triangleCount)!=null?w:0)}),r=(x=(v=n.profile)==null?void 0:v.annotations)!=null?x:[],s=(E=(S=n.analysis)==null?void 0:S.annotationLinks)!=null?E:[],a=fF(i.map(y=>{var C;return(C=y.category)!=null?C:"unclassified"})).slice(0,6),o=fF(i.flatMap(y=>y.materialName?[Li(y.materialName)]:[])).slice(0,6),l=rSe(i),c=nSe(i),f=t?HQ(t):"Geometry statistics are not available yet, so this draft should stay provisional.",d=t?zQ(t):"Reload the preview to capture mesh, triangle, vertex, and material evidence.",h=(T=n.profile)==null?void 0:T.notes.trim(),u=t?`${n.baseName} is a ${e} asset with ${Fo(t.meshCount,"mesh")}, ${Fo(t.triangleCount,"triangle")}, ${Fo(t.vertexCount,"vertex")}, and ${Fo(t.materialCount,"material slot")}.`:`${n.baseName} is a ${e} asset that still needs a refreshed preview pass before its geometry can be summarized confidently.`,m=r.length>0?r.map(y=>{let C=s.find(G=>G.annotationId===y.id),L=C!=null&&C.nearestPartName?` Nearest captured part: ${Li(C.nearestPartName)}.`:"",w=y.headingRef?` Linked heading: ${Li(y.headingRef)}.`:"";return`- ${Li(y.label||"Untitled pin")}.${L}${w}`}).join(` -`):"- No pins are saved yet. Add pins for the regions that should become standalone notes, questions, or review checkpoints.",_=[i.length>0?"Rename the strongest part candidates so their mesh names match real semantic parts.":"Regenerate after the model preview has captured per-part evidence.",r.length>0?"Turn each saved pin into a short linked note or heading-level review item.":"Place at least one pin on the most important region before treating this as a finished note.","Review scale, orientation, materials, and whether mesh boundaries represent real assembly boundaries."];return{title:`${n.baseName} local knowledge draft`,summary:[u,f,h?`User notes add this context: ${h}`:"No user notes are stored yet, so the draft stays grounded in renderer evidence and saved pins."].join(" "),sections:[{heading:"Evidence-backed description",body:[d,a.length>0?`Detected part categories: ${uF(a)}.`:"No part categories were inferred yet.",o.length>0?`Visible materials include ${uF(o)}.`:"No material names were captured from the renderer evidence."].join(" ")},{heading:"Candidate structure",body:l},{heading:"Registered part reuse",body:c},{heading:"Focus areas",body:m},{heading:"Suggested note shape",body:[`Start with a short purpose paragraph for ${n.baseName}.`,"Then split the note into geometry evidence, meaningful part candidates, saved focus areas, and unresolved review questions.","Only promote a mesh into a standalone part note after a human confirms its function or assembly role."].join(" ")}],suggestedTags:fF([...(M=(R=n.profile)==null?void 0:R.tags)!=null?M:[],`format/${e.toLowerCase()}`,...a.map(y=>`part/${y}`)]).slice(0,12),nextActions:_,generatedAt:new Date().toISOString()}}function sSe(n){var i,r;let e=(r=(i=n.analysis)==null?void 0:i.localDraft)!=null?r:XQ(n),t=["## Local Draft Metadata","",`- Generated at: ${e.generatedAt}`,`- Sections: ${e.sections.length.toLocaleString()}`];return e.suggestedTags.length>0&&t.push("Suggested tags:","",...e.suggestedTags.map(s=>`- ${Li(s)}`),""),e.nextActions.length>0&&t.push("Next actions:","",...e.nextActions.map(s=>`- ${Li(s)}`),""),t}function Zr(n){return JSON.stringify(n)}function aSe(n){return n!=null&&n.draftingInput?["## AI Drafting Input","","- Grounded drafting input is available in the sidecar JSON under `draftingInput`.",`- Part candidates included: ${n.draftingInput.partCandidates.length.toLocaleString()}`,`- Annotation links included: ${n.draftingInput.annotationLinks.length.toLocaleString()}`,"- Raw model included: false",""]:["## AI Drafting Input","","- No drafting input was prepared in this pass.",""]}function oSe(n){var i,r,s,a;let e=n==null?void 0:n.remoteDraft;if(!e)return["## Remote Draft","","- No remote draft was requested or returned for this pass.",""];let t=["## Remote Draft","",e.title?`### ${e.title}`:"### Draft Summary","",e.summary,""];for(let o of(i=e.sections)!=null?i:[])t.push(`### ${o.heading}`,"",o.body,"");(r=e.suggestedTags)!=null&&r.length&&t.push("Suggested tags:","",...e.suggestedTags.map(o=>`- ${o}`),"");for(let o of(s=e.warnings)!=null?s:[])t.push(`- Remote warning: ${o}`);return(a=e.warnings)!=null&&a.length&&t.push(""),t}function lSe(n){var i,r;let e=(i=n==null?void 0:n.remoteDraft)!=null?i:n==null?void 0:n.localDraft;if(!e)return["## Editable Draft","","- No draft body was produced in this pass.",""];let t=["## Editable Draft","",n!=null&&n.remoteDraft?"- Source: optional remote draft, grounded by the local evidence sidecar.":"- Source: local evidence draft, generated without a remote service.","",e.summary,""];for(let s of(r=e.sections)!=null?r:[])t.push(`### ${s.heading}`,"",s.body,"");return t}function cSe(n){var t;let e=(t=n==null?void 0:n.previewImages)!=null?t:[];return e.length===0?["## Evidence Snapshots","","- No preview snapshot was captured for this generation pass.",""]:["## Evidence Snapshots","",...e.map(i=>`![[${i}]]`),""]}function fSe(n){var i,r,s,a;let e=(i=n==null?void 0:n.parts)!=null?i:[];if(e.length===0)return["## Part Candidates","","- No per-mesh evidence was available. Reload the model in the workbench and regenerate the note to capture part candidates.",""];let t=["## Part Candidates","","| # | Part | Part Note | Source | Category | Triangles | Material | Center | Evidence |","|---|------|-----------|--------|----------|-----------|----------|--------|----------|"];for(let[o,l]of e.slice(0,32).entries()){let c=pF(l.center),f=l.observations.slice(0,2).join(" "),d=l.notePath?`[[${l.notePath}]]`:"-",h=_F(l),u=[kQ(l),h].filter(Boolean).join("; ");t.push(`| ${o+1} | ${pa(l.name)} | ${pa(d)} | ${pa(u)} | ${pa((r=l.category)!=null?r:"unclassified")} | ${((s=l.triangleCount)!=null?s:0).toLocaleString()} | ${pa((a=l.materialName)!=null?a:"-")} | ${c} | ${pa(f)} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more candidate parts omitted from this note | - | - | - | - | - | - | See sidecar JSON |`),t.push(""),t}function dSe(n){var i,r;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(s=>{var a;return(a=s.registeredMatches)==null?void 0:a.length});if(e.length===0)return["## Registered Part Matches","","- No previously registered parts were matched across other analyzed models in this pass.",""];let t=["## Registered Part Matches","","| Current Part | Best Existing Part | Source Model | Confidence | Reasons |","|--------------|--------------------|--------------|------------|---------|"];for(let s of e.slice(0,32)){let a=(r=s.registeredMatches)==null?void 0:r[0];if(!a)continue;let o=a.sourceNotePath?`[[${a.sourceNotePath}|${a.sourcePartName}]]`:a.sourcePartName;t.push(`| ${pa(s.name)} | ${pa(o)} | ${pa(a.sourceAssetId)} | ${Math.round(a.confidence*100)}% | ${pa(a.reasons.join(", "))} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more matched parts omitted | - | - | See sidecar JSON |`),t.push(""),t}function hSe(n){var i;let e=(i=n==null?void 0:n.knowledgeNodes)!=null?i:[];if(e.length===0)return["## Knowledge Nodes","","- No knowledge nodes were produced in this pass.",""];let t=["## Knowledge Nodes",""];for(let r of e)t.push(`- **${Li(r.title)}** (${r.domain}, ${Math.round(r.confidence*100)}%, ${r.source}): ${Li(r.summary)}`);return t.push(""),t}function uSe(n,e){var i,r;let t=["## Evidence Health","",`- Analysis version: ${Uh}`,e?`- Sidecar: [[${e}|Analysis JSON]]`:"- Sidecar: not written",n!=null&&n.knowledgeIndexPath?`- Knowledge index: [[${n.knowledgeIndexPath}|Model index]]`:"- Knowledge index: not written"];for(let s of(i=n==null?void 0:n.warnings)!=null?i:[])t.push(`- Warning: ${s}`);return((r=n==null?void 0:n.warnings)!=null?r:[]).length===0&&t.push("- Warnings: none"),t.push(""),t}function mSe(n,e){var r;let t=(r=e==null?void 0:e.annotations)!=null?r:[],i=["## Draft Knowledge Points",""];if(n?(i.push(`- Geometry overview: explain how ${n.meshCount.toLocaleString()} mesh(es) and ${n.materialCount.toLocaleString()} material slot(s) map to real semantic parts instead of export-only fragments.`),n.splatCount!==void 0?i.push(`- Capture quality: review whether the ${n.splatCount.toLocaleString()} splats preserve enough silhouette and depth detail for note-taking from multiple angles.`):i.push(`- Structural density: verify whether ${(n.triangleCount/Math.max(n.meshCount,1)).toLocaleString(void 0,{maximumFractionDigits:0})} average triangles per mesh reflects deliberate detail or accidental over-segmentation.`)):i.push("- Geometry overview: reload the model and capture preview statistics before turning this into a stable knowledge note."),t.length>0)for(let s of t.slice(0,8)){let a=WQ(s),o=a.length>0?` (${a.join("; ")})`:"";i.push(`- **${Li(s.label||"Untitled pin")}**${o}: describe what this region does, why it matters, and whether it deserves its own linked part note.`)}else i.push("- Focus mapping: add pins for the regions that should become standalone part notes or review checkpoints.");return i.push("- Review pass: confirm scale, orientation, and whether material boundaries reflect actual function, assembly, or simply renderer setup."),i.push(""),i}function YQ(n){var c,f,d,h;let e=n.profile,t=n.preview,i=n.analysis,r=GQ(n.sourcePath),s=(c=e==null?void 0:e.tags)!=null?c:[],a=(f=e==null?void 0:e.annotations)!=null?f:[],o=(d=i==null?void 0:i.previewImages)!=null?d:[];return[["---",`source_model: ${Zr(n.sourcePath)}`,`format: ${r}`,"status: ready","analysis_mode: local",`analysis_version: ${Uh}`,`report_note_path: ${Zr(n.notePath)}`,...n.analysisSidecarPath?[`analysis_sidecar_path: ${Zr(n.analysisSidecarPath)}`]:[],...n.knowledgeIndexPath?[`knowledge_index_path: ${Zr(n.knowledgeIndexPath)}`]:[],`annotation_count: ${a.length}`,`updated_at: ${new Date().toISOString()}`,...o.length>0?["preview_images:",...o.map(u=>` - ${Zr(u)}`)]:[],...s.length>0?["knowledge_tags:",...s.map(u=>` - ${Zr(u)}`)]:[],"---"].join(` -`),"",`# ${Li(n.baseName)}`,"","## Summary","",...t?[...u2(t,{decimals:2}),""]:["(No preview data available)",""],...lSe(i),...sSe(n),...n.knowledgeIndexPath?["## Knowledge Index","",`- [[${n.knowledgeIndexPath}|Open model knowledge index]]`,""]:[],"## Local Observations","",...JEe(t,e).map(u=>`- ${u}`),"",...uSe(i,n.analysisSidecarPath),...cSe(i),...eSe(e),...tSe(i),...iSe(i),...fSe(i),...dSe(i),...hSe(i),...aSe(i),...oSe(i),...mSe(t,e),"## Review Notes","",(h=e==null?void 0:e.notes)!=null&&h.trim()?Li(e.notes.trim()):"-",""].join(` -`)}function pa(n){return Li(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function pSe(n){let[,e=""]=n.split(",",2),t=atob(e),i=new Uint8Array(t.length);for(let r=0;r{KEe.warn("Failed to create vault folder",{path:i,error:String(s)})})}async function KQ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof Il.TFile)return i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);return s instanceof Il.TFile?s:null}}async function OQ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof Il.TFile)return await n.vault.modify(i,t),i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);if(s instanceof Il.TFile)return await n.vault.modify(s,t),s}return null}async function _Se(n,e,t,i){var s;let r=(s=e==null?void 0:e.captureSnapshot)==null?void 0:s.call(e);if(!(r!=null&&r.startsWith("data:image/png;base64,")))return{paths:[]};try{await vF(n,t);let a=`${t}/${i}_evidence_${Date.now()}.png`;return await n.vault.createBinary(a,pSe(r)),{paths:[a]}}catch(a){let o=a instanceof Error?a.message:String(a);return{paths:[],warning:`Evidence snapshot failed: ${o}`}}}function jQ(n){return!!n&&typeof n=="object"}function Hv(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"):[];return Number.isFinite(e)?t.slice(0,e):t}function NQ(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Xh(e):void 0}function gSe(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function wQ(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function vSe(n){return n==="direct"||n==="convert"?n:void 0}function ESe(n,e){if(!jQ(n))return null;let t=typeof n.partId=="string"?n.partId:"",i=typeof n.name=="string"?n.name:"";if(!t||!i)return null;let r=typeof n.assetId=="string"&&n.assetId?n.assetId:e;return{partId:t,assetId:r,parentPartId:typeof n.parentPartId=="string"?n.parentPartId:void 0,name:i,source:gSe(n.source),componentId:typeof n.componentId=="string"?n.componentId:void 0,occurrenceId:typeof n.occurrenceId=="string"?n.occurrenceId:void 0,partNumber:typeof n.partNumber=="string"?n.partNumber:void 0,componentPath:typeof n.componentPath=="string"?n.componentPath:void 0,category:typeof n.category=="string"?n.category:void 0,meshRefs:Hv(n.meshRefs,16),childCount:Number.isFinite(n.childCount)?Number(n.childCount):void 0,materialRefs:Hv(n.materialRefs,32),bbox:NQ(n.bbox),center:NQ(n.center),triangleCount:Number.isFinite(n.triangleCount)?Number(n.triangleCount):void 0,vertexCount:Number.isFinite(n.vertexCount)?Number(n.vertexCount):void 0,materialName:typeof n.materialName=="string"?n.materialName:null,sourceFormat:wQ(n.sourceFormat),effectiveFormat:wQ(n.effectiveFormat),loadStrategy:vSe(n.loadStrategy),confidence:Number.isFinite(n.confidence)?Number(n.confidence):.5,observations:Hv(n.observations,16),inferredFunctions:Hv(n.inferredFunctions),knowledgeTags:Hv(n.knowledgeTags),notePath:typeof n.notePath=="string"?n.notePath:void 0,registeredMatches:void 0,reviewed:n.reviewed===!0}}function FQ(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function BQ(n){return[...n].sort((e,t)=>{var s,a,o,l;let i=FQ(e)-FQ(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)})}function EF(n){return Yh(n)}async function qQ(n,e,t,i={}){var c,f,d;let r=[],s=new Set,a=(c=i.includeSidecars)!=null?c:!0,o=(f=i.perProfileLimit)!=null?f:jEe,l=(h,u)=>{let m=ESe(h,u);if(!m)return;let _=`${m.assetId}:${m.partId}`;s.has(_)||(s.add(_),r.push(EF(m)))};for(let[h,u]of Object.entries(e)){if(h===t)continue;if(a&&u.analysisSidecarPath){let _=n.vault.getAbstractFileByPath(u.analysisSidecarPath);if(_ instanceof Il.TFile)try{let p=await n.vault.read(_),g=JSON.parse(p);if(jQ(g)&&Array.isArray(g.parts))for(let v of g.parts)l(v,h)}catch(p){console.warn("[AI3D] Failed to read registered part sidecar:",u.analysisSidecarPath,p)}}let m=BQ((d=u.registeredParts)!=null?d:[]).slice(0,o);for(let _ of m)l(_,h)}return typeof i.maxParts=="number"&&i.maxParts>0?BQ(r).slice(0,i.maxParts):r}function SSe(n){var t;let e=new Set(((t=n.annotationLinks)!=null?t:[]).flatMap(i=>i.nearestPartId?[i.nearestPartId]:[]));return new Set([...n.parts].filter(i=>{var r;return i.source!=="detail-cluster"||e.has(i.partId)||!!((r=i.registeredMatches)!=null&&r.length)}).sort((i,r)=>{var c,f,d,h;let s=e.has(i.partId)?1:0,a=e.has(r.partId)?1:0;if(s!==a)return a-s;let o=(c=i.registeredMatches)!=null&&c.length?1:0,l=(f=r.registeredMatches)!=null&&f.length?1:0;return o!==l?l-o:((d=r.triangleCount)!=null?d:0)-((h=i.triangleCount)!=null?h:0)}).slice(0,UQ).map(i=>i.partId))}function TSe(n,e,t,i){let r=gF(n)||"Parts/3D Components",s=mF(e,"model"),a=mF(t.name,`Part ${i+1}`);return`${r}/${s}/${String(i+1).padStart(2,"0")} ${a}.md`}function ASe(n){var i,r,s,a,o,l;let e=((i=n.analysis.annotationLinks)!=null?i:[]).filter(c=>c.nearestPartId===n.part.partId);return[["---",`source_model: ${Zr(n.sourcePath)}`,`parent_report: ${Zr(n.notePath)}`,`part_id: ${Zr(n.part.partId)}`,`asset_id: ${Zr(n.part.assetId)}`,...n.part.componentId?[`component_id: ${Zr(n.part.componentId)}`]:[],...n.part.occurrenceId?[`occurrence_id: ${Zr(n.part.occurrenceId)}`]:[],...n.part.partNumber?[`part_number: ${Zr(n.part.partNumber)}`]:[],...n.part.sourceFormat?[`source_format: ${Zr(n.part.sourceFormat)}`]:[],...n.part.effectiveFormat?[`effective_format: ${Zr(n.part.effectiveFormat)}`]:[],...n.part.loadStrategy?[`load_strategy: ${Zr(n.part.loadStrategy)}`]:[],`category: ${Zr((r=n.part.category)!=null?r:"unclassified")}`,"status: draft","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` -`),"",`# ${Li(n.part.name)}`,"","## Evidence","",`- Source model: [[${n.sourcePath}|${n.baseName}]]`,`- Parent report: [[${n.notePath}|${n.baseName} Report]]`,`- Source: ${kQ(n.part)}`,..._F(n.part)?[`- Format lineage: ${_F(n.part)}`]:[],`- Category: ${(s=n.part.category)!=null?s:"unclassified"}`,...n.part.componentId?[`- Component ID: ${n.part.componentId}`]:[],...n.part.occurrenceId?[`- Occurrence ID: ${n.part.occurrenceId}`]:[],...n.part.partNumber?[`- Part number: ${n.part.partNumber}`]:[],...n.part.componentPath?[`- Component path: ${n.part.componentPath}`]:[],...n.part.source==="group"||n.part.source==="component"||n.part.source==="detail-cluster"?[`- Child meshes: ${qEe(n.part.meshRefs)}`]:[],`- Triangles: ${((a=n.part.triangleCount)!=null?a:0).toLocaleString()}`,`- Vertices: ${((o=n.part.vertexCount)!=null?o:0).toLocaleString()}`,`- Material: ${n.part.materialName?Li(n.part.materialName):"-"}`,`- Bounding size: ${pF(n.part.bbox)}`,`- Center: ${pF(n.part.center)}`,...(l=n.part.registeredMatches)!=null&&l.length?[`- Possible registered match: ${ZEe(n.part.registeredMatches[0])}`]:[],"","## Renderer Observations","",...n.part.observations.length>0?n.part.observations.map(c=>`- ${c}`):["- No renderer observations were captured for this part."],"","## Linked Focus Areas","",...e.length>0?e.map(c=>`- ${c.label} (${Math.round(c.confidence*100)}% confidence, distance ${c.distance===void 0?"-":c.distance.toFixed(3)})`):["- No saved annotation pin is linked to this part yet."],"","## Working Notes","","- ",""].join(` -`)}async function xSe(n){var a;let e=SSe(n.analysis);if(e.size===0)return n.analysis.pipeline.push({stage:"partNotes",durationMs:0,status:"skipped"}),[];let t=[],i=typeof performance!="undefined"?performance.now():Date.now(),s=`${gF(n.partFolder)||"Parts/3D Components"}/${mF(n.baseName,"model")}`;await vF(n.app,s);for(let[o,l]of n.analysis.parts.entries()){if(!e.has(l.partId))continue;let c=TSe(n.partFolder,n.baseName,l,o),f={...l,notePath:c},d=ASe({baseName:n.baseName,notePath:n.notePath,sourcePath:n.sourcePath,part:f,analysis:n.analysis}),h=await KQ(n.app,c,d);h&&(l.notePath=h.path,t.push(h.path))}n.analysis.partNotePaths=t;for(let o of(a=n.analysis.annotationLinks)!=null?a:[]){let l=n.analysis.parts.find(c=>c.partId===o.nearestPartId);l!=null&&l.notePath&&!o.notePath&&(o.notePath=l.notePath)}return n.analysis.pipeline.push({stage:"partNotes",durationMs:Math.max(0,Math.round((typeof performance!="undefined"?performance.now():Date.now())-i)),status:t.length>0?"success":"skipped"}),t}function SF(n){var r,s,a,o,l,c;let e=((r=n.analysis.parts)!=null?r:[]).filter(f=>f.notePath),t=(a=(s=n.profile)==null?void 0:s.annotations)!=null?a:[],i=(l=(o=n.analysis.localDraft)==null?void 0:o.nextActions)!=null?l:[];return[VQ,"","## Entry Points","",`- Model report: [[${n.notePath}|${n.baseName} Report]]`,`- Analysis sidecar: [[${n.analysisSidecarPath}|Analysis JSON]]`,`- Source model: [[${n.sourcePath}|${n.baseName}]]`,"","## Model Snapshot","",n.preview?`- ${Fo(n.preview.meshCount,"mesh")}, ${Fo(n.preview.triangleCount,"triangle")}, ${Fo(n.preview.vertexCount,"vertex")}, ${Fo(n.preview.materialCount,"material slot")}.`:"- No preview statistics were available for this index.",`- Evidence images: ${((c=n.analysis.previewImages)!=null?c:[]).length.toLocaleString()}`,`- Part drafts: ${e.length.toLocaleString()}`,`- Saved annotations: ${t.length.toLocaleString()}`,"","## Part Notes","",...e.length>0?e.map(f=>{var u,m;let d=(u=f.registeredMatches)==null?void 0:u[0],h=d?`, matches ${Li(d.sourcePartName)} (${Math.round(d.confidence*100)}%)`:"";return`- [[${f.notePath}|${Li(f.name)}]] - ${(m=f.category)!=null?m:"unclassified"}, ${Fo(f.triangleCount,"triangle")}${h}`}):["- No part note drafts were created in this pass."],"","## Evidence Images","",...n.analysis.previewImages.length>0?n.analysis.previewImages.map(f=>`- ![[${f}]]`):["- No evidence image was captured in this pass."],"","## Focus Areas","",...t.length>0?t.map(f=>{var u;let d=(u=n.analysis.annotationLinks)==null?void 0:u.find(m=>m.annotationId===f.id),h=d!=null&&d.notePath?` -> [[${d.notePath}|part note]]`:"";return`- ${f.label||"Untitled pin"}${h}`}):["- No saved annotation pins yet."],"","## Next Actions","",...i.length?i.map(f=>`- ${f}`):["- Review generated part drafts and promote confirmed components into stable notes."],"",hF,""].join(` -`)}function ZQ(n,e){let t=n.indexOf(VQ),i=n.indexOf(hF);if(t>=0&&i>t){let r=n.slice(0,t).replace(/\s+$/,""),s=n.slice(i+hF.length).replace(/^\s+/,"");return[r,e.trim(),s].filter(Boolean).join(` +`).trim()||null}catch(i){return null}}function DEe(n){return(e,t)=>RQ(n,e,t)}var AQ,OM=I(()=>{"use strict";AQ=require("obsidian");Wv();Wv()});var dF={};Be(dF,{LOCAL_ANALYSIS_VERSION:()=>Uh,buildLocalAnalysisResult:()=>fF,buildPartRecordsFromEvidence:()=>CQ,inferModelAssetFormat:()=>Fc,normalizeModelLoadStrategy:()=>Bh});function yQ(){return typeof performance!="undefined"?performance.now():Date.now()}function ud(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function FEe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(yQ()-n)),status:"success"}}function BEe(n,e){let t=n[0]-e[0],i=n[1]-e[1],r=n[2]-e[2];return Math.sqrt(t*t+i*i+r*r)}function cF(n){return Xh([n.x,n.y,n.z])}function bQ(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function MQ(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function UEe(n,e,t,i){var c,f;let r=MQ(tn(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${MQ(s)||t+1}`:`${r}:part:${t+1}`,o=a,l=2;for(;i.has(o);)o=`${a}:${l}`,l++;return i.add(o),o}function Hv(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function NM(n){return new Set(Hv(n).split(" ").filter(e=>e.length>=2))}function IQ(n,e){if(n.size===0||e.size===0)return 0;let t=0;for(let i of n)e.has(i)&&(t+=1);return t/Math.max(n.size,e.size)}function VEe(n,e){if(!n||!e||n.length<3||e.length<3)return 0;let t=[...n].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),i=[...e].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),r=0;for(let s=0;s<3;s++)r+=Math.min(t[s],i[s])/Math.max(t[s],i[s]);return r/3}function GEe(n,e){let t=Hv(n),i=Hv(e);return!!t&&!!i&&t===i}function lF(n,e){let t=Hv(n),i=Hv(e);return!!t&&!!i&&t===i}function kEe(n){return n.map(e=>({part:e,nameTokens:NM(e.name),meshTokens:NM(e.meshRefs.join(" "))}))}function WEe(n,e){let t=NM(n.name),i=NM(n.meshRefs.join(" "));return e.filter(s=>s.part.assetId!==n.assetId||s.part.partId!==n.partId).flatMap(s=>{let a=s.part,o=[],l=IQ(t,s.nameTokens),c=IQ(i,s.meshTokens),f=VEe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,h=GEe(n.materialName,a.materialName),u=lF(n.componentId,a.componentId),m=lF(n.partNumber,a.partNumber),_=lF(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return u&&(p+=.5),m&&(p+=.4),_&&(p+=.25),d&&(p+=.1),h&&(p+=.08),u&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),_&&o.push("same occurrence id"),l>=.5&&o.push("similar part name"),c>=.5&&o.push("similar mesh names"),f>=.72&&o.push("similar bounding size"),d&&o.push(`same category: ${n.category}`),h&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,LEe)}function HEe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=kEe(e);return n.map(i=>{let r=WEe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function zEe(n){var t;let e=n.name.toLowerCase();return n.source==="component"?"component":n.source==="group"?"group":n.source==="detail-cluster"?"detail-cluster":e.includes("wheel")||e.includes("gear")||e.includes("axle")?"mechanical":e.includes("shell")||e.includes("case")||e.includes("cover")||e.includes("housing")?"enclosure":e.includes("button")||e.includes("key")||e.includes("switch")?"control":e.includes("glass")||e.includes("screen")||e.includes("lens")?"surface":(t=n.materialName)!=null&&t.toLowerCase().includes("metal")?"material-driven":"unclassified"}function XEe(n){var t,i,r,s,a,o,l,c,f,d,h,u;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${ud((r=(i=n.childCount)!=null?i:(t=n.meshNames)==null?void 0:t.length)!=null?r:0,"child mesh","child meshes")}.`),n.source==="component"&&e.push(`Registered from model component metadata with ${ud((o=(a=n.childCount)!=null?a:(s=n.meshNames)==null?void 0:s.length)!=null?o:1,"child mesh","child meshes")}.`),n.source==="detail-cluster"&&e.push(`Merged from ${ud((f=(c=n.childCount)!=null?c:(l=n.meshNames)==null?void 0:l.length)!=null?f:0,"generic tiny mesh","generic tiny meshes")} to avoid over-splitting renderer fragments.`),n.componentId&&e.push(`Component ID: ${n.componentId}.`),n.occurrenceId&&e.push(`Occurrence ID: ${n.occurrenceId}.`),n.partNumber&&e.push(`Part number: ${n.partNumber}.`),n.componentPath&&e.push(`Component path: ${n.componentPath}.`),n.sourceFormat||n.effectiveFormat||n.loadStrategy){let m=(h=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?h:"glb",_=(u=n.effectiveFormat)!=null?u:m,p=Bh(n.loadStrategy,m,_);e.push(`Format lineage: ${m.toUpperCase()}${_!==m?` -> ${_.toUpperCase()}`:""} (${p}).`)}return e.push(`${ud(n.triangleCount,"triangle")} and ${ud(n.vertexCount,"vertex")}.`,`Bounding size ${n.boundingSize.x.toFixed(3)} x ${n.boundingSize.y.toFixed(3)} x ${n.boundingSize.z.toFixed(3)}.`),n.materialName&&e.push(`Uses material "${n.materialName}".`),e}function YEe(n,e,t){var o,l,c,f,d;let i=Fc(n),r=(l=(o=e.sourceFormat)!=null?o:t==null?void 0:t.sourceFormat)!=null?l:i,s=(f=(c=e.effectiveFormat)!=null?c:t==null?void 0:t.effectiveFormat)!=null?f:r,a=Bh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function KEe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function CQ(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=YEe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:UEe(n,r,s,i),assetId:n,name:r.name||`Part ${s+1}`,source:r.source,componentId:r.componentId,occurrenceId:r.occurrenceId,partNumber:r.partNumber,componentPath:r.componentPath,category:zEe(r),meshRefs:bQ((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],NEe),childCount:r.childCount,materialRefs:bQ(r.materialName?[r.materialName]:[],wEe),bbox:cF(r.boundingSize),center:cF(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:KEe(r),observations:XEe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function jEe(n,e,t,i,r){var o;let s=[],a=t==null?void 0:t.summary;a&&s.push({id:`${n}:geometry`,title:"Geometry overview",domain:"geometry",summary:`${ud(a.meshCount,"mesh")}, ${ud(a.triangleCount,"triangle")}, ${ud(a.materialCount,"material slot")}.`,relatedPartIds:i.slice(0,12).map(l=>l.partId),relatedAssetIds:[n],confidence:.72,source:"rule"});for(let l of(o=e==null?void 0:e.annotations)!=null?o:[]){let c=r.find(f=>f.annotationId===l.id);s.push({id:`${n}:annotation:${l.id}`,title:l.label||"Annotation focus",domain:"assembly",summary:[l.headingRef?`Pinned focus area linked to heading "${l.headingRef}".`:"Pinned focus area marked by the user for follow-up analysis.",c!=null&&c.nearestPartName?`Nearest part candidate: ${c.nearestPartName}.`:""].filter(Boolean).join(" "),relatedPartIds:c!=null&&c.nearestPartId?[c.nearestPartId]:[],relatedAssetIds:[n],confidence:.8,source:"user"})}return s}function qEe(n,e){var i;return((i=n==null?void 0:n.annotations)!=null?i:[]).map(r=>{let s=r.position,a=null,o=Number.POSITIVE_INFINITY;for(let c of e){if(!c.center)continue;let f=BEe(s,c.center);f{var p;return{partId:_.partId,name:_.name,notePath:_.notePath,source:_.source,componentId:_.componentId,occurrenceId:_.occurrenceId,partNumber:_.partNumber,componentPath:_.componentPath,category:_.category,sourceFormat:_.sourceFormat,effectiveFormat:_.effectiveFormat,loadStrategy:_.loadStrategy,meshRefs:[..._.meshRefs],childCount:_.childCount,triangleCount:_.triangleCount,materialName:_.materialName,registeredMatches:(p=_.registeredMatches)==null?void 0:p.map(g=>({...g,reasons:[...g.reasons]})),observations:_.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function QEe(n,e){var t,i;return Array.from(new Set([...(t=n==null?void 0:n.resourceWarnings)!=null?t:[],...(i=e==null?void 0:e.resourceWarnings)!=null?i:[]]))}function fF(n){var m,_,p,g,v,x,S,E,T,R,M,y,C;let e=(m=n.startedAt)!=null?m:yQ(),t=(p=(_=n.evidence)==null?void 0:_.summary)!=null?p:n.preview,i=Fc(n.modelPath),r=(g=n.evidence)==null?void 0:g.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=Bh(r==null?void 0:r.loadStrategy,(x=r==null?void 0:r.sourceFormat)!=null?x:i,s),o=HEe(CQ(n.modelPath,(E=(S=n.evidence)==null?void 0:S.parts)!=null?E:[],r),(T=n.registeredParts)!=null?T:[]),l=new Date().toISOString(),c=QEe(n.preview,n.evidence),f=qEe(n.profile,o),d=jEe(n.modelPath,n.profile,n.evidence,o,f),h=(R=n.previewImages)!=null?R:[],u=ZEe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:h,warnings:c});return{asset:{assetId:n.modelPath,title:tn(n.modelPath)||n.modelPath,sourcePath:n.modelPath,format:i,effectiveFormat:s,loadStrategy:a,importedAt:l,updatedAt:l,status:t?"ready":"processing",vertexCount:t==null?void 0:t.vertexCount,triangleCount:t==null?void 0:t.triangleCount,materialCount:t==null?void 0:t.materialCount,boundingBox:t?cF(t.boundingSize):void 0,analysisVersion:Uh},parts:o,knowledgeNodes:d,previewImages:h,annotationLinks:f,draftingInput:u,evidence:(M=n.evidence)!=null?M:void 0,warnings:c,pipeline:[{stage:"stats",durationMs:0,status:t?"success":"skipped"},{stage:"split",durationMs:0,status:(C=(y=n.evidence)==null?void 0:y.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},FEe(e)]}}var Uh,LEe,OEe,NEe,wEe,wM=I(()=>{"use strict";Ps();iE();pM();pM();Uh="local-evidence-v1",LEe=3,OEe=.58,NEe=16,wEe=16});function Vh(n){let e=n.trim();return e.length>PQ?Li(e.slice(0,PQ))+"\u2026":Li(e)}function DQ(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=Vh(t);if(!i)return null;let r=Array.isArray(e.sections)?e.sections.flatMap(o=>{if(!o||typeof o!="object")return[];let l=o,c=typeof l.heading=="string"?l.heading.trim():"",f=typeof l.body=="string"?l.body.trim():"",d=Vh(c),h=Vh(f);return d&&h?[{heading:d,body:h}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Vh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Vh(o)):void 0;return{title:typeof e.title=="string"?Vh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?Vh(e.model):void 0}}var PQ,LQ=I(()=>{"use strict";wT();PQ=8e3});function JEe(n){let e=n.trim().replace(/\/+$/,"");if(!e)return"";let t=/^[a-z][a-z\d+\-.]*:\/\//i.test(e)?e:`http://${e}`;try{let i=new URL(t);return i.protocol!=="http:"&&i.protocol!=="https:"||i.search||i.hash?null:i.toString().replace(/\/+$/,"")}catch(i){return null}}function eSe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function tSe(n){return{...n,model:{...n.model,summary:void 0},partCandidates:[],annotationLinks:n.annotationLinks.map(e=>({...e,notePath:void 0,position:[0,0,0],nearestPartId:void 0,nearestPartName:void 0,distance:void 0,confidence:Math.min(e.confidence,.25)})),knowledgeNodes:n.knowledgeNodes.map(e=>({...e,summary:"Geometry details were withheld by privacy settings.",relatedPartIds:[]}))}}function iSe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=eSe(t)),n.sendGeometrySummaryToRemote||(t=tSe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function NQ(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=JEe(n.serviceBaseUrl);return i===""?{enabled:!1,reason:"serviceBaseUrl is empty"}:i===null?{enabled:!1,reason:"serviceBaseUrl must be a valid http(s) URL"}:n.sendRawModelToRemote?{enabled:!1,reason:"raw model upload is not supported by this draft client"}:e?{enabled:!0,endpoint:`${i}/draft-note`,request:{analysisVersion:t,draftingInput:iSe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function rSe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):$Ee}async function nSe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new hF(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function wQ(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=rSe(e.timeoutMs),i=await nSe((0,OQ.requestUrl)({url:n.endpoint,method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n.request)}),t,n.endpoint);if(i.status<200||i.status>=300)throw new Error(`Remote draft request failed: HTTP ${i.status}`);return DQ(i.json)}var OQ,$Ee,hF,FQ=I(()=>{"use strict";OQ=require("obsidian");LQ();$Ee=15e3,hF=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var FM={};Be(FM,{buildKnowledgeIndexContent:()=>i$,buildKnowledgeIndexManagedSection:()=>RF,buildKnowledgeNoteContent:()=>QQ,collectRegisteredPartsFromProfiles:()=>e$,generateKnowledgeNote:()=>BSe,replaceManagedSection:()=>t$,stripTransientRegisteredPartData:()=>xF});function uF(n){var e,t,i;return{modelPath:n.modelPath,reportNotePath:n.reportNotePath,analysisSidecarPath:n.analysisSidecarPath,knowledgeIndexPath:n.knowledgeIndexPath,partNoteCount:(e=n.partNoteCount)!=null?e:0,previewImageCount:(t=n.previewImageCount)!=null?t:0,generatedAt:new Date().toISOString(),status:n.status,warningCount:(i=n.warningCount)!=null?i:0}}function XQ(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function gF(n){return n.filter(e=>e.length>0).join(", ")}function mF(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function TF(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function vF(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function EF(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function oSe(n,e=12){if(n.length===0)return"-";let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i.toLocaleString()} more`:t}function YQ(n){var e,t;return n.source==="component"?n.childCount&&n.childCount>1?`component (${n.childCount})`:"component":n.source==="group"?`group (${(e=n.childCount)!=null?e:n.meshRefs.length})`:n.source==="detail-cluster"?`detail cluster (${(t=n.childCount)!=null?t:n.meshRefs.length})`:"mesh"}function SF(n){var a,o,l;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(a=n.sourceFormat)!=null?a:n.effectiveFormat,t=(o=n.effectiveFormat)!=null?o:e,i=(l=n.loadStrategy)!=null?l:e&&t&&e!==t?"convert":"direct",r=e?e.toUpperCase():"unknown",s=t&&t!==e?` -> ${t.toUpperCase()}`:"";return`${r}${s} (${i})`}function lSe(n){let e=n.sourceNotePath?`[[${n.sourceNotePath}|${n.sourcePartName}]]`:n.sourcePartName,t=n.reasons.length>0?` - ${n.reasons.join(", ")}`:"";return`${e} (${Math.round(n.confidence*100)}%${t})`}function KQ(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Li(n.headingRef)}`),n.notePath){let i=(t=Cs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function cSe(n){return[{axis:"x",value:Math.max(0,n.boundingSize.x)},{axis:"y",value:Math.max(0,n.boundingSize.y)},{axis:"z",value:Math.max(0,n.boundingSize.z)}].sort((e,t)=>t.value-e.value)}function jQ(n){let[e,t,i]=cSe(n);if(!e||e.value<=0)return"Bounding information is incomplete, so scale and orientation still need manual review.";let r=i.value>0?e.value/i.value:Number.POSITIVE_INFINITY,s=e.value>0?t.value/e.value:0;return(e.value>0?i.value/e.value:0)<=.18&&s>=.45?`The bounding box is strongly planar, with a thin ${i.axis.toUpperCase()} dimension compared with ${e.axis.toUpperCase()}.`:r>=3&&s<=.55?`The model is strongly elongated along ${e.axis.toUpperCase()}, which suggests a directional or axial structure.`:"The overall bounding volume is fairly balanced, so semantic grouping is more likely to come from mesh and material boundaries than from one dominant axis."}function qQ(n){if(n.splatCount!==void 0)return`This is a splat-based asset with ${n.splatCount.toLocaleString()} splats; review should focus on capture coverage, density, and viewpoint clarity instead of triangle topology.`;let e=0;return n.triangleCount>=5e5?e+=3:n.triangleCount>=1e5?e+=2:n.triangleCount>=2e4&&(e+=1),n.meshCount>=100?e+=2:n.meshCount>=25&&(e+=1),n.materialCount>=8&&(e+=1),e>=5?"The mesh and material counts point to a high-complexity asset; expect semantic cleanup, regrouping, or naming review before turning it into stable knowledge notes.":e>=3?"The asset sits in a medium-complexity range: it already contains useful structure, but some meshes or materials may still reflect export convenience rather than real-world parts.":"The asset is structurally compact, so a lightweight local pass can usually produce usable first-draft notes without a heavier analysis pipeline."}function fSe(n){var t;let e=(t=n==null?void 0:n.tags)!=null?t:[];return e.length===0?"No knowledge tags are stored yet, so the note should establish the first stable vocabulary for this model.":`Current tags already suggest a working taxonomy: ${gF(e)}.`}function BQ(n){var t;let e=(t=n==null?void 0:n.annotations)!=null?t:[];return e.length===0?"No annotation pins are stored yet, so the next useful pass is to mark semantically important regions before splitting the model into part notes.":e.length===1?"There is 1 saved annotation pin, which already gives this report a concrete user-selected focus area.":`There are ${e.length} saved annotation pins, which provide a useful first-pass map of user-relevant regions.`}function dSe(n,e){var r;if(!n)return["Preview statistics were not available when this note was generated, so the next step is to reload the model and regenerate the report.",BQ(e)];let t=[`${n.meshCount.toLocaleString()} mesh(es), ${((r=n.splatCount)!=null?r:n.triangleCount).toLocaleString()} ${n.splatCount!==void 0?"splats":"triangles"}, and ${n.materialCount.toLocaleString()} material slot(s) are currently visible in the preview pipeline.`,qQ(n),jQ(n),BQ(e)],i=fSe(e);return i&&t.push(i),t}function hSe(n){var i;let e=(i=n==null?void 0:n.annotations)!=null?i:[];if(e.length===0)return["## Focus Areas","","- No focus areas have been pinned yet.",""];let t=["## Focus Areas",""];for(let r of e){let s=KQ(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Li(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function uSe(n){var i,r;let e=(i=n==null?void 0:n.annotationLinks)!=null?i:[];if(e.length===0)return["## Annotation Links","","- No annotation-to-part links were produced in this pass.",""];let t=["## Annotation Links","","| Annotation | Nearest Part | Linked Note | Distance | Confidence |","|------------|--------------|-------------|----------|------------|"];for(let s of e){let a=s.notePath?`[[${s.notePath}]]`:"-";t.push(`| ${pa(s.label)} | ${pa((r=s.nearestPartName)!=null?r:"-")} | ${pa(a)} | ${s.distance===void 0?"-":s.distance.toFixed(3)} | ${Math.round(s.confidence*100)}% |`)}return t.push(""),t}function mSe(n){var i,r,s,a;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(o=>o.notePath);if(e.length===0)return["## Suggested Part Notes","","- No part note drafts were created in this pass.",""];let t=["## Suggested Part Notes",""];for(let o of e.slice(0,HQ)){let l=Li((s=Cs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",Fo(o.triangleCount,"triangle"),o.materialName?`material ${Li(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Li(o.name)} (${c})`)}return t.push(""),t}function Fo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function pSe(n){return n.length===0?"No per-part evidence was captured yet, so the first useful editing pass is to reload the model and regenerate this note from the workbench.":n.slice(0,6).map((e,t)=>{var r;let i=e.materialName?`, material ${Li(e.materialName)}`:"";return`${t+1}. ${Li(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${Fo(e.triangleCount,"triangle")}${i})`}).join(` +`)}function _Se(n){let e=n.filter(t=>{var i;return(i=t.registeredMatches)==null?void 0:i.length});return e.length===0?"No previously registered parts were matched across other analyzed models in this pass.":e.slice(0,6).map(t=>{var r;let i=(r=t.registeredMatches)==null?void 0:r[0];return i?`- ${Li(t.name)}: possible reuse of ${Li(i.sourcePartName)} from ${Li(i.sourceAssetId)} (${Math.round(i.confidence*100)}% confidence).`:""}).filter(Boolean).join(` +`)}function ZQ(n){var p,g,v,x,S,E,T,R,M;let e=XQ(n.sourcePath).toUpperCase(),t=n.preview,i=[...(g=(p=n.analysis)==null?void 0:p.parts)!=null?g:[]].sort((y,C)=>{var L,w;return((L=C.triangleCount)!=null?L:0)-((w=y.triangleCount)!=null?w:0)}),r=(x=(v=n.profile)==null?void 0:v.annotations)!=null?x:[],s=(E=(S=n.analysis)==null?void 0:S.annotationLinks)!=null?E:[],a=mF(i.map(y=>{var C;return(C=y.category)!=null?C:"unclassified"})).slice(0,6),o=mF(i.flatMap(y=>y.materialName?[Li(y.materialName)]:[])).slice(0,6),l=pSe(i),c=_Se(i),f=t?jQ(t):"Geometry statistics are not available yet, so this draft should stay provisional.",d=t?qQ(t):"Reload the preview to capture mesh, triangle, vertex, and material evidence.",h=(T=n.profile)==null?void 0:T.notes.trim(),u=t?`${n.baseName} is a ${e} asset with ${Fo(t.meshCount,"mesh")}, ${Fo(t.triangleCount,"triangle")}, ${Fo(t.vertexCount,"vertex")}, and ${Fo(t.materialCount,"material slot")}.`:`${n.baseName} is a ${e} asset that still needs a refreshed preview pass before its geometry can be summarized confidently.`,m=r.length>0?r.map(y=>{let C=s.find(G=>G.annotationId===y.id),L=C!=null&&C.nearestPartName?` Nearest captured part: ${Li(C.nearestPartName)}.`:"",w=y.headingRef?` Linked heading: ${Li(y.headingRef)}.`:"";return`- ${Li(y.label||"Untitled pin")}.${L}${w}`}).join(` +`):"- No pins are saved yet. Add pins for the regions that should become standalone notes, questions, or review checkpoints.",_=[i.length>0?"Rename the strongest part candidates so their mesh names match real semantic parts.":"Regenerate after the model preview has captured per-part evidence.",r.length>0?"Turn each saved pin into a short linked note or heading-level review item.":"Place at least one pin on the most important region before treating this as a finished note.","Review scale, orientation, materials, and whether mesh boundaries represent real assembly boundaries."];return{title:`${n.baseName} local knowledge draft`,summary:[u,f,h?`User notes add this context: ${h}`:"No user notes are stored yet, so the draft stays grounded in renderer evidence and saved pins."].join(" "),sections:[{heading:"Evidence-backed description",body:[d,a.length>0?`Detected part categories: ${gF(a)}.`:"No part categories were inferred yet.",o.length>0?`Visible materials include ${gF(o)}.`:"No material names were captured from the renderer evidence."].join(" ")},{heading:"Candidate structure",body:l},{heading:"Registered part reuse",body:c},{heading:"Focus areas",body:m},{heading:"Suggested note shape",body:[`Start with a short purpose paragraph for ${n.baseName}.`,"Then split the note into geometry evidence, meaningful part candidates, saved focus areas, and unresolved review questions.","Only promote a mesh into a standalone part note after a human confirms its function or assembly role."].join(" ")}],suggestedTags:mF([...(M=(R=n.profile)==null?void 0:R.tags)!=null?M:[],`format/${e.toLowerCase()}`,...a.map(y=>`part/${y}`)]).slice(0,12),nextActions:_,generatedAt:new Date().toISOString()}}function gSe(n){var i,r;let e=(r=(i=n.analysis)==null?void 0:i.localDraft)!=null?r:ZQ(n),t=["## Local Draft Metadata","",`- Generated at: ${e.generatedAt}`,`- Sections: ${e.sections.length.toLocaleString()}`];return e.suggestedTags.length>0&&t.push("Suggested tags:","",...e.suggestedTags.map(s=>`- ${Li(s)}`),""),e.nextActions.length>0&&t.push("Next actions:","",...e.nextActions.map(s=>`- ${Li(s)}`),""),t}function Zr(n){return JSON.stringify(n)}function vSe(n){return n!=null&&n.draftingInput?["## AI Drafting Input","","- Grounded drafting input is available in the sidecar JSON under `draftingInput`.",`- Part candidates included: ${n.draftingInput.partCandidates.length.toLocaleString()}`,`- Annotation links included: ${n.draftingInput.annotationLinks.length.toLocaleString()}`,"- Raw model included: false",""]:["## AI Drafting Input","","- No drafting input was prepared in this pass.",""]}function ESe(n){var i,r,s,a;let e=n==null?void 0:n.remoteDraft;if(!e)return["## Remote Draft","","- No remote draft was requested or returned for this pass.",""];let t=["## Remote Draft","",e.title?`### ${e.title}`:"### Draft Summary","",e.summary,""];for(let o of(i=e.sections)!=null?i:[])t.push(`### ${o.heading}`,"",o.body,"");(r=e.suggestedTags)!=null&&r.length&&t.push("Suggested tags:","",...e.suggestedTags.map(o=>`- ${o}`),"");for(let o of(s=e.warnings)!=null?s:[])t.push(`- Remote warning: ${o}`);return(a=e.warnings)!=null&&a.length&&t.push(""),t}function SSe(n){var i,r;let e=(i=n==null?void 0:n.remoteDraft)!=null?i:n==null?void 0:n.localDraft;if(!e)return["## Editable Draft","","- No draft body was produced in this pass.",""];let t=["## Editable Draft","",n!=null&&n.remoteDraft?"- Source: optional remote draft, grounded by the local evidence sidecar.":"- Source: local evidence draft, generated without a remote service.","",e.summary,""];for(let s of(r=e.sections)!=null?r:[])t.push(`### ${s.heading}`,"",s.body,"");return t}function TSe(n){var t;let e=(t=n==null?void 0:n.previewImages)!=null?t:[];return e.length===0?["## Evidence Snapshots","","- No preview snapshot was captured for this generation pass.",""]:["## Evidence Snapshots","",...e.map(i=>`![[${i}]]`),""]}function ASe(n){var i,r,s,a;let e=(i=n==null?void 0:n.parts)!=null?i:[];if(e.length===0)return["## Part Candidates","","- No per-mesh evidence was available. Reload the model in the workbench and regenerate the note to capture part candidates.",""];let t=["## Part Candidates","","| # | Part | Part Note | Source | Category | Triangles | Material | Center | Evidence |","|---|------|-----------|--------|----------|-----------|----------|--------|----------|"];for(let[o,l]of e.slice(0,32).entries()){let c=EF(l.center),f=l.observations.slice(0,2).join(" "),d=l.notePath?`[[${l.notePath}]]`:"-",h=SF(l),u=[YQ(l),h].filter(Boolean).join("; ");t.push(`| ${o+1} | ${pa(l.name)} | ${pa(d)} | ${pa(u)} | ${pa((r=l.category)!=null?r:"unclassified")} | ${((s=l.triangleCount)!=null?s:0).toLocaleString()} | ${pa((a=l.materialName)!=null?a:"-")} | ${c} | ${pa(f)} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more candidate parts omitted from this note | - | - | - | - | - | - | See sidecar JSON |`),t.push(""),t}function xSe(n){var i,r;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(s=>{var a;return(a=s.registeredMatches)==null?void 0:a.length});if(e.length===0)return["## Registered Part Matches","","- No previously registered parts were matched across other analyzed models in this pass.",""];let t=["## Registered Part Matches","","| Current Part | Best Existing Part | Source Model | Confidence | Reasons |","|--------------|--------------------|--------------|------------|---------|"];for(let s of e.slice(0,32)){let a=(r=s.registeredMatches)==null?void 0:r[0];if(!a)continue;let o=a.sourceNotePath?`[[${a.sourceNotePath}|${a.sourcePartName}]]`:a.sourcePartName;t.push(`| ${pa(s.name)} | ${pa(o)} | ${pa(a.sourceAssetId)} | ${Math.round(a.confidence*100)}% | ${pa(a.reasons.join(", "))} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more matched parts omitted | - | - | See sidecar JSON |`),t.push(""),t}function RSe(n){var i;let e=(i=n==null?void 0:n.knowledgeNodes)!=null?i:[];if(e.length===0)return["## Knowledge Nodes","","- No knowledge nodes were produced in this pass.",""];let t=["## Knowledge Nodes",""];for(let r of e)t.push(`- **${Li(r.title)}** (${r.domain}, ${Math.round(r.confidence*100)}%, ${r.source}): ${Li(r.summary)}`);return t.push(""),t}function bSe(n,e){var i,r;let t=["## Evidence Health","",`- Analysis version: ${Uh}`,e?`- Sidecar: [[${e}|Analysis JSON]]`:"- Sidecar: not written",n!=null&&n.knowledgeIndexPath?`- Knowledge index: [[${n.knowledgeIndexPath}|Model index]]`:"- Knowledge index: not written"];for(let s of(i=n==null?void 0:n.warnings)!=null?i:[])t.push(`- Warning: ${s}`);return((r=n==null?void 0:n.warnings)!=null?r:[]).length===0&&t.push("- Warnings: none"),t.push(""),t}function MSe(n,e){var r;let t=(r=e==null?void 0:e.annotations)!=null?r:[],i=["## Draft Knowledge Points",""];if(n?(i.push(`- Geometry overview: explain how ${n.meshCount.toLocaleString()} mesh(es) and ${n.materialCount.toLocaleString()} material slot(s) map to real semantic parts instead of export-only fragments.`),n.splatCount!==void 0?i.push(`- Capture quality: review whether the ${n.splatCount.toLocaleString()} splats preserve enough silhouette and depth detail for note-taking from multiple angles.`):i.push(`- Structural density: verify whether ${(n.triangleCount/Math.max(n.meshCount,1)).toLocaleString(void 0,{maximumFractionDigits:0})} average triangles per mesh reflects deliberate detail or accidental over-segmentation.`)):i.push("- Geometry overview: reload the model and capture preview statistics before turning this into a stable knowledge note."),t.length>0)for(let s of t.slice(0,8)){let a=KQ(s),o=a.length>0?` (${a.join("; ")})`:"";i.push(`- **${Li(s.label||"Untitled pin")}**${o}: describe what this region does, why it matters, and whether it deserves its own linked part note.`)}else i.push("- Focus mapping: add pins for the regions that should become standalone part notes or review checkpoints.");return i.push("- Review pass: confirm scale, orientation, and whether material boundaries reflect actual function, assembly, or simply renderer setup."),i.push(""),i}function QQ(n){var c,f,d,h;let e=n.profile,t=n.preview,i=n.analysis,r=XQ(n.sourcePath),s=(c=e==null?void 0:e.tags)!=null?c:[],a=(f=e==null?void 0:e.annotations)!=null?f:[],o=(d=i==null?void 0:i.previewImages)!=null?d:[];return[["---",`source_model: ${Zr(n.sourcePath)}`,`format: ${r}`,"status: ready","analysis_mode: local",`analysis_version: ${Uh}`,`report_note_path: ${Zr(n.notePath)}`,...n.analysisSidecarPath?[`analysis_sidecar_path: ${Zr(n.analysisSidecarPath)}`]:[],...n.knowledgeIndexPath?[`knowledge_index_path: ${Zr(n.knowledgeIndexPath)}`]:[],`annotation_count: ${a.length}`,`updated_at: ${new Date().toISOString()}`,...o.length>0?["preview_images:",...o.map(u=>` - ${Zr(u)}`)]:[],...s.length>0?["knowledge_tags:",...s.map(u=>` - ${Zr(u)}`)]:[],"---"].join(` +`),"",`# ${Li(n.baseName)}`,"","## Summary","",...t?[..._2(t,{decimals:2}),""]:["(No preview data available)",""],...SSe(i),...gSe(n),...n.knowledgeIndexPath?["## Knowledge Index","",`- [[${n.knowledgeIndexPath}|Open model knowledge index]]`,""]:[],"## Local Observations","",...dSe(t,e).map(u=>`- ${u}`),"",...bSe(i,n.analysisSidecarPath),...TSe(i),...hSe(e),...uSe(i),...mSe(i),...ASe(i),...xSe(i),...RSe(i),...vSe(i),...ESe(i),...MSe(t,e),"## Review Notes","",(h=e==null?void 0:e.notes)!=null&&h.trim()?Li(e.notes.trim()):"-",""].join(` +`)}function pa(n){return Li(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function ISe(n){let[,e=""]=n.split(",",2),t=atob(e),i=new Uint8Array(t.length);for(let r=0;r{sSe.warn("Failed to create vault folder",{path:i,error:String(s)})})}async function $Q(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof Il.TFile)return i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);return s instanceof Il.TFile?s:null}}async function UQ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof Il.TFile)return await n.vault.modify(i,t),i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);if(s instanceof Il.TFile)return await n.vault.modify(s,t),s}return null}async function ySe(n,e,t,i){var s;let r=(s=e==null?void 0:e.captureSnapshot)==null?void 0:s.call(e);if(!(r!=null&&r.startsWith("data:image/png;base64,")))return{paths:[]};try{await AF(n,t);let a=`${t}/${i}_evidence_${Date.now()}.png`;return await n.vault.createBinary(a,ISe(r)),{paths:[a]}}catch(a){let o=a instanceof Error?a.message:String(a);return{paths:[],warning:`Evidence snapshot failed: ${o}`}}}function JQ(n){return!!n&&typeof n=="object"}function zv(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"):[];return Number.isFinite(e)?t.slice(0,e):t}function VQ(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Xh(e):void 0}function CSe(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function GQ(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function PSe(n){return n==="direct"||n==="convert"?n:void 0}function DSe(n,e){if(!JQ(n))return null;let t=typeof n.partId=="string"?n.partId:"",i=typeof n.name=="string"?n.name:"";if(!t||!i)return null;let r=typeof n.assetId=="string"&&n.assetId?n.assetId:e;return{partId:t,assetId:r,parentPartId:typeof n.parentPartId=="string"?n.parentPartId:void 0,name:i,source:CSe(n.source),componentId:typeof n.componentId=="string"?n.componentId:void 0,occurrenceId:typeof n.occurrenceId=="string"?n.occurrenceId:void 0,partNumber:typeof n.partNumber=="string"?n.partNumber:void 0,componentPath:typeof n.componentPath=="string"?n.componentPath:void 0,category:typeof n.category=="string"?n.category:void 0,meshRefs:zv(n.meshRefs,16),childCount:Number.isFinite(n.childCount)?Number(n.childCount):void 0,materialRefs:zv(n.materialRefs,32),bbox:VQ(n.bbox),center:VQ(n.center),triangleCount:Number.isFinite(n.triangleCount)?Number(n.triangleCount):void 0,vertexCount:Number.isFinite(n.vertexCount)?Number(n.vertexCount):void 0,materialName:typeof n.materialName=="string"?n.materialName:null,sourceFormat:GQ(n.sourceFormat),effectiveFormat:GQ(n.effectiveFormat),loadStrategy:PSe(n.loadStrategy),confidence:Number.isFinite(n.confidence)?Number(n.confidence):.5,observations:zv(n.observations,16),inferredFunctions:zv(n.inferredFunctions),knowledgeTags:zv(n.knowledgeTags),notePath:typeof n.notePath=="string"?n.notePath:void 0,registeredMatches:void 0,reviewed:n.reviewed===!0}}function kQ(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function WQ(n){return[...n].sort((e,t)=>{var s,a,o,l;let i=kQ(e)-kQ(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)})}function xF(n){return Yh(n)}async function e$(n,e,t,i={}){var c,f,d;let r=[],s=new Set,a=(c=i.includeSidecars)!=null?c:!0,o=(f=i.perProfileLimit)!=null?f:aSe,l=(h,u)=>{let m=DSe(h,u);if(!m)return;let _=`${m.assetId}:${m.partId}`;s.has(_)||(s.add(_),r.push(xF(m)))};for(let[h,u]of Object.entries(e)){if(h===t)continue;if(a&&u.analysisSidecarPath){let _=n.vault.getAbstractFileByPath(u.analysisSidecarPath);if(_ instanceof Il.TFile)try{let p=await n.vault.read(_),g=JSON.parse(p);if(JQ(g)&&Array.isArray(g.parts))for(let v of g.parts)l(v,h)}catch(p){console.warn("[AI3D] Failed to read registered part sidecar:",u.analysisSidecarPath,p)}}let m=WQ((d=u.registeredParts)!=null?d:[]).slice(0,o);for(let _ of m)l(_,h)}return typeof i.maxParts=="number"&&i.maxParts>0?WQ(r).slice(0,i.maxParts):r}function LSe(n){var t;let e=new Set(((t=n.annotationLinks)!=null?t:[]).flatMap(i=>i.nearestPartId?[i.nearestPartId]:[]));return new Set([...n.parts].filter(i=>{var r;return i.source!=="detail-cluster"||e.has(i.partId)||!!((r=i.registeredMatches)!=null&&r.length)}).sort((i,r)=>{var c,f,d,h;let s=e.has(i.partId)?1:0,a=e.has(r.partId)?1:0;if(s!==a)return a-s;let o=(c=i.registeredMatches)!=null&&c.length?1:0,l=(f=r.registeredMatches)!=null&&f.length?1:0;return o!==l?l-o:((d=r.triangleCount)!=null?d:0)-((h=i.triangleCount)!=null?h:0)}).slice(0,HQ).map(i=>i.partId))}function OSe(n,e,t,i){let r=TF(n)||"Parts/3D Components",s=vF(e,"model"),a=vF(t.name,`Part ${i+1}`);return`${r}/${s}/${String(i+1).padStart(2,"0")} ${a}.md`}function NSe(n){var i,r,s,a,o,l;let e=((i=n.analysis.annotationLinks)!=null?i:[]).filter(c=>c.nearestPartId===n.part.partId);return[["---",`source_model: ${Zr(n.sourcePath)}`,`parent_report: ${Zr(n.notePath)}`,`part_id: ${Zr(n.part.partId)}`,`asset_id: ${Zr(n.part.assetId)}`,...n.part.componentId?[`component_id: ${Zr(n.part.componentId)}`]:[],...n.part.occurrenceId?[`occurrence_id: ${Zr(n.part.occurrenceId)}`]:[],...n.part.partNumber?[`part_number: ${Zr(n.part.partNumber)}`]:[],...n.part.sourceFormat?[`source_format: ${Zr(n.part.sourceFormat)}`]:[],...n.part.effectiveFormat?[`effective_format: ${Zr(n.part.effectiveFormat)}`]:[],...n.part.loadStrategy?[`load_strategy: ${Zr(n.part.loadStrategy)}`]:[],`category: ${Zr((r=n.part.category)!=null?r:"unclassified")}`,"status: draft","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` +`),"",`# ${Li(n.part.name)}`,"","## Evidence","",`- Source model: [[${n.sourcePath}|${n.baseName}]]`,`- Parent report: [[${n.notePath}|${n.baseName} Report]]`,`- Source: ${YQ(n.part)}`,...SF(n.part)?[`- Format lineage: ${SF(n.part)}`]:[],`- Category: ${(s=n.part.category)!=null?s:"unclassified"}`,...n.part.componentId?[`- Component ID: ${n.part.componentId}`]:[],...n.part.occurrenceId?[`- Occurrence ID: ${n.part.occurrenceId}`]:[],...n.part.partNumber?[`- Part number: ${n.part.partNumber}`]:[],...n.part.componentPath?[`- Component path: ${n.part.componentPath}`]:[],...n.part.source==="group"||n.part.source==="component"||n.part.source==="detail-cluster"?[`- Child meshes: ${oSe(n.part.meshRefs)}`]:[],`- Triangles: ${((a=n.part.triangleCount)!=null?a:0).toLocaleString()}`,`- Vertices: ${((o=n.part.vertexCount)!=null?o:0).toLocaleString()}`,`- Material: ${n.part.materialName?Li(n.part.materialName):"-"}`,`- Bounding size: ${EF(n.part.bbox)}`,`- Center: ${EF(n.part.center)}`,...(l=n.part.registeredMatches)!=null&&l.length?[`- Possible registered match: ${lSe(n.part.registeredMatches[0])}`]:[],"","## Renderer Observations","",...n.part.observations.length>0?n.part.observations.map(c=>`- ${c}`):["- No renderer observations were captured for this part."],"","## Linked Focus Areas","",...e.length>0?e.map(c=>`- ${c.label} (${Math.round(c.confidence*100)}% confidence, distance ${c.distance===void 0?"-":c.distance.toFixed(3)})`):["- No saved annotation pin is linked to this part yet."],"","## Working Notes","","- ",""].join(` +`)}async function wSe(n){var a;let e=LSe(n.analysis);if(e.size===0)return n.analysis.pipeline.push({stage:"partNotes",durationMs:0,status:"skipped"}),[];let t=[],i=typeof performance!="undefined"?performance.now():Date.now(),s=`${TF(n.partFolder)||"Parts/3D Components"}/${vF(n.baseName,"model")}`;await AF(n.app,s);for(let[o,l]of n.analysis.parts.entries()){if(!e.has(l.partId))continue;let c=OSe(n.partFolder,n.baseName,l,o),f={...l,notePath:c},d=NSe({baseName:n.baseName,notePath:n.notePath,sourcePath:n.sourcePath,part:f,analysis:n.analysis}),h=await $Q(n.app,c,d);h&&(l.notePath=h.path,t.push(h.path))}n.analysis.partNotePaths=t;for(let o of(a=n.analysis.annotationLinks)!=null?a:[]){let l=n.analysis.parts.find(c=>c.partId===o.nearestPartId);l!=null&&l.notePath&&!o.notePath&&(o.notePath=l.notePath)}return n.analysis.pipeline.push({stage:"partNotes",durationMs:Math.max(0,Math.round((typeof performance!="undefined"?performance.now():Date.now())-i)),status:t.length>0?"success":"skipped"}),t}function RF(n){var r,s,a,o,l,c;let e=((r=n.analysis.parts)!=null?r:[]).filter(f=>f.notePath),t=(a=(s=n.profile)==null?void 0:s.annotations)!=null?a:[],i=(l=(o=n.analysis.localDraft)==null?void 0:o.nextActions)!=null?l:[];return[zQ,"","## Entry Points","",`- Model report: [[${n.notePath}|${n.baseName} Report]]`,`- Analysis sidecar: [[${n.analysisSidecarPath}|Analysis JSON]]`,`- Source model: [[${n.sourcePath}|${n.baseName}]]`,"","## Model Snapshot","",n.preview?`- ${Fo(n.preview.meshCount,"mesh")}, ${Fo(n.preview.triangleCount,"triangle")}, ${Fo(n.preview.vertexCount,"vertex")}, ${Fo(n.preview.materialCount,"material slot")}.`:"- No preview statistics were available for this index.",`- Evidence images: ${((c=n.analysis.previewImages)!=null?c:[]).length.toLocaleString()}`,`- Part drafts: ${e.length.toLocaleString()}`,`- Saved annotations: ${t.length.toLocaleString()}`,"","## Part Notes","",...e.length>0?e.map(f=>{var u,m;let d=(u=f.registeredMatches)==null?void 0:u[0],h=d?`, matches ${Li(d.sourcePartName)} (${Math.round(d.confidence*100)}%)`:"";return`- [[${f.notePath}|${Li(f.name)}]] - ${(m=f.category)!=null?m:"unclassified"}, ${Fo(f.triangleCount,"triangle")}${h}`}):["- No part note drafts were created in this pass."],"","## Evidence Images","",...n.analysis.previewImages.length>0?n.analysis.previewImages.map(f=>`- ![[${f}]]`):["- No evidence image was captured in this pass."],"","## Focus Areas","",...t.length>0?t.map(f=>{var u;let d=(u=n.analysis.annotationLinks)==null?void 0:u.find(m=>m.annotationId===f.id),h=d!=null&&d.notePath?` -> [[${d.notePath}|part note]]`:"";return`- ${f.label||"Untitled pin"}${h}`}):["- No saved annotation pins yet."],"","## Next Actions","",...i.length?i.map(f=>`- ${f}`):["- Review generated part drafts and promote confirmed components into stable notes."],"",_F,""].join(` +`)}function t$(n,e){let t=n.indexOf(zQ),i=n.indexOf(_F);if(t>=0&&i>t){let r=n.slice(0,t).replace(/\s+$/,""),s=n.slice(i+_F.length).replace(/^\s+/,"");return[r,e.trim(),s].filter(Boolean).join(` `)+` `}return`${n.replace(/\s+$/,"")} ${e.trim()} -`}function QQ(n){var r;let e=SF(n),t=((r=n.analysis.parts)!=null?r:[]).filter(s=>s.notePath).length;return[["---",`source_model: ${Zr(n.sourcePath)}`,`report_note_path: ${Zr(n.notePath)}`,`analysis_sidecar_path: ${Zr(n.analysisSidecarPath)}`,`part_note_count: ${t}`,"status: index","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` +`}function i$(n){var r;let e=RF(n),t=((r=n.analysis.parts)!=null?r:[]).filter(s=>s.notePath).length;return[["---",`source_model: ${Zr(n.sourcePath)}`,`report_note_path: ${Zr(n.notePath)}`,`analysis_sidecar_path: ${Zr(n.analysisSidecarPath)}`,`part_note_count: ${t}`,"status: index","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` `),"",`# ${n.baseName} Knowledge Index`,"","## User Notes","","- ","",e].join(` -`)}async function RSe(n){let e=typeof performance!="undefined"?performance.now():Date.now(),t=n.app.vault.getAbstractFileByPath(n.indexPath),i=null;if(t instanceof Il.TFile){let r=await n.app.vault.read(t),s=SF(n);await n.app.vault.modify(t,ZQ(r,s)),i=t}else i=await KQ(n.app,n.indexPath,QQ(n));return i&&(n.analysis.knowledgeIndexPath=i.path),n.analysis.pipeline.push({stage:"index",durationMs:Math.max(0,Math.round((typeof performance!="undefined"?performance.now():Date.now())-e)),status:i?"success":"failed"}),i}async function bSe(n,e,t={}){var o,l,c,f,d,h,u,m,_,p,g;if(dF!==null)return;let i;dF=new Promise(v=>{i=v});let r=null,s=null,a=0;try{let v=e.store.getState(),x=v.currentModelPath;if(!x)return;let S=v.modelAssetProfiles[x],E=v.modelPreview,T=tn(x)||"model",R=v.settings.reportFolder,M=`${R}/${T} Report.md`,y=`${R}/${T} Analysis.json`,C=`${R}/${T} Index.md`,L=((o=v.lastKnowledgeGeneration)==null?void 0:o.status)==="pending"?`Previous knowledge generation for ${v.lastKnowledgeGeneration.modelPath} did not complete. This run can replace the pending marker if it finishes.`:null;L&&new Il.Notice(L),r=cF({modelPath:x,reportNotePath:M,analysisSidecarPath:y,knowledgeIndexPath:C,status:"pending"}),e.setLastKnowledgeGeneration(r);let w=(f=(c=(l=t.preview)==null?void 0:l.getModelEvidence)==null?void 0:c.call(l))!=null?f:null,G=await _Se(n,t.preview,v.settings.previewFolder,T);a=G.paths.length;let O=await qQ(n,v.modelAssetProfiles,x);s=aF({modelPath:x,profile:S,preview:E,evidence:w,previewImages:G.paths,registeredParts:O}),L&&(s.warnings=[...s.warnings,L]);let N=s;G.warning&&(N.warnings=[...N.warnings,G.warning],N.draftingInput&&(N.draftingInput={...N.draftingInput,evidence:{...N.draftingInput.evidence,warnings:[...N.draftingInput.evidence.warnings,G.warning]}})),N.localDraft=XQ({baseName:T,sourcePath:x,profile:S,preview:E,analysis:N}),N.pipeline.push({stage:"draft",durationMs:0,status:"success"}),await xSe({app:n,partFolder:v.settings.partFolder,baseName:T,notePath:M,sourcePath:x,analysis:N}),N.draftingInput&&(N.draftingInput={...N.draftingInput,partCandidates:N.draftingInput.partCandidates.map(X=>{let Y=N.parts.find(ve=>ve.partId===X.partId);return Y!=null&&Y.notePath?{...X,notePath:Y.notePath}:X}),annotationLinks:[...(d=N.annotationLinks)!=null?d:[]]});let B=CQ(v.settings,N.draftingInput,Uh);if(B.enabled)try{let X=await PQ(B);X?(N.remoteDraft=X,N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"success"})):N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"})}catch(X){let Y=X instanceof Error?X.message:String(X);N.warnings=[...N.warnings,`Remote draft failed: ${Y}`],N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"failed"})}else N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"});if(await vF(n,R),!await RSe({app:n,baseName:T,notePath:M,sourcePath:x,analysisSidecarPath:y,indexPath:C,analysis:N,preview:E,profile:S}))throw new Error(`Unable to write knowledge index: ${C}`);let J=YQ({baseName:T,notePath:M,sourcePath:x,profile:S,preview:E,analysis:N,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath});if(!await OQ(n,y,`${JSON.stringify(N,null,2)} -`))throw new Error(`Unable to write analysis sidecar: ${y}`);let te=await OQ(n,M,J);if(!te)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(x,X=>({analysisVersion:Uh,registeredParts:N.parts.map(EF),reportNotePath:te.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:G.paths})),e.setLastKnowledgeGeneration(cF({modelPath:x,reportNotePath:te.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(u=(h=N.partNotePaths)==null?void 0:h.length)!=null?u:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(te,{active:!0}),new Il.Notice(`Knowledge note updated: ${te.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(cF({...r,partNoteCount:(_=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?_:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(g=s==null?void 0:s.warnings.length)!=null?g:0)})),v}finally{i(),dF=null}}var Il,KEe,UQ,jEe,VQ,hF,dF,NM=I(()=>{"use strict";Il=require("obsidian");UT();OT();Mn();Ps();tE();iE();LM();DQ();KEe=Hi("knowledge-note"),UQ=8,jEe=256,VQ="",hF="";dF=null});var $Q={};Be($Q,{renderRegisteredPartMatchRow:()=>ISe});function MSe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function ISe(n,e,t){var o,l;let i=n.createDiv({cls:"ai3d-direct-workbench-match"}),r=i.createDiv({cls:"ai3d-direct-workbench-match-main"});r.createDiv({cls:"ai3d-direct-workbench-match-title",text:e}),r.createDiv({cls:"ai3d-direct-workbench-match-source",text:t.sourcePartName||t.sourcePartId}),t.sourceModelPath&&r.createDiv({cls:"ai3d-direct-workbench-match-model",text:qi("directWorkbench.registeredSourceModel",{model:MSe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?j("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?j("directWorkbench.registeredTargetSourceModel"):j("directWorkbench.registeredTargetUnavailable")}),t.reasons.length>0&&r.createDiv({cls:"ai3d-direct-workbench-match-reasons",text:t.reasons.slice(0,2).join(" / ")});let s=i.createDiv({cls:"ai3d-direct-workbench-match-side"});s.createDiv({cls:"ai3d-direct-workbench-match-score",text:`${Math.round(t.matchScore*100)}%`});let a=s.createEl("button",{cls:"ai3d-direct-workbench-action ai3d-direct-workbench-match-open",text:t.sourceNotePath?j("directWorkbench.registeredOpenNote"):j("directWorkbench.registeredOpenModel"),attr:{type:"button","data-ai3d-action":"open-registered-part","data-ai3d-target-path":(l=(o=t.sourceNotePath)!=null?o:t.sourceModelPath)!=null?l:""}});return a.disabled=!t.sourceNotePath&&!t.sourceModelPath,i}var JQ=I(()=>{"use strict";vn()});var a$={};Be(a$,{DirectModelView:()=>TF});function BSe(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function i$(n){var i,r,s;let e=(r=(i=n.occurrenceId)!=null?i:n.componentId)!=null?r:n.partNumber;if(e!=null&&e.trim())return`component:${e.trim().toLowerCase()}`;let t=n.meshRefs.map(a=>a.trim().toLowerCase()).filter(Boolean).sort().join("|");return`${(s=n.source)!=null?s:"mesh"}:${n.name.trim().toLowerCase()}:${t}`}function USe(n,e){return n?{...e,notePath:n.notePath,reviewed:n.reviewed,observations:n.reviewed||n.notePath?n.observations:e.observations,inferredFunctions:n.inferredFunctions.length>0?n.inferredFunctions:e.inferredFunctions,knowledgeTags:n.knowledgeTags.length>0?n.knowledgeTags:e.knowledgeTags}:e}function r$(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function VSe(n){return n.length<=e$?n:[...n].sort((e,t)=>{var s,a,o,l;let i=r$(e)-r$(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)}).slice(0,e$)}function n$(n){return{partId:n.partId,assetId:n.assetId,parentPartId:n.parentPartId,name:n.name,source:n.source,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath,category:n.category,meshRefs:n.meshRefs,childCount:n.childCount,materialRefs:n.materialRefs,bbox:n.bbox,center:n.center,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:n.materialName,sourceFormat:n.sourceFormat,effectiveFormat:n.effectiveFormat,loadStrategy:n.loadStrategy,confidence:n.confidence,observations:n.observations,inferredFunctions:n.inferredFunctions,knowledgeTags:n.knowledgeTags,notePath:n.notePath,reviewed:n.reviewed}}function GSe(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(n$))===JSON.stringify(e.map(n$))}function AF(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function kSe(n){let e=AF(n.performanceTier);return e>=2?PSe:e===1?CSe:ySe}function WSe(n){return AF(n.performanceTier)<2&&n.meshCount<=DSe&&n.triangleCount<=LSe}function HSe(n){let e=AF(n.performanceTier);return e>=2?null:e===1?wSe:NSe}function s$(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function zSe(n){return n.parts.length<=t$?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=s$(e)-s$(t);if(i!==0)return i;let r=((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0);return r!==0?r:t.triangleCount-e.triangleCount}).slice(0,t$)}}function XSe(n){return{sourcePath:n.sourcePath,sourceFormat:Fc(n.sourceExt||n.sourcePath),effectiveFormat:Fc(n.ext||n.path),loadStrategy:n.strategy}}function YSe(n,e,t=[]){if(!e&&t.length===0)return n;let i=e!=null?e:n.formatLineage,r=Array.from(new Set([...n.resourceWarnings,...t]));return{...n,formatLineage:i,resourceWarnings:r,parts:n.parts.map(s=>{var a,o,l;return{...s,sourceFormat:(a=s.sourceFormat)!=null?a:i==null?void 0:i.sourceFormat,effectiveFormat:(o=s.effectiveFormat)!=null?o:i==null?void 0:i.effectiveFormat,loadStrategy:(l=s.loadStrategy)!=null?l:i==null?void 0:i.loadStrategy}})}}var Uc,wM,ySe,CSe,PSe,e$,DSe,LSe,t$,OSe,NSe,wSe,FSe,TF,o$=I(()=>{"use strict";Uc=require("obsidian");Jb();ww();fM();Uw();Ps();dM();hM();Op();vn();Uv();sa();Mn();iE();uM();HZ();XZ();jZ();sE();_M();i0();wM=Hi("direct-view"),ySe=450,CSe=1200,PSe=1500,e$=256,DSe=500,LSe=15e5,t$=64,OSe=512,NSe=250,wSe=1e3,FSe=".obsidian/ai-model-workbench/converted-assets";TF=class extends Uc.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.escHandler=null;this.workbenchPanel=null;this.workbenchSummary=null;this.workbenchRoute=null;this.workbenchModelPath=null;this.workbenchEvidenceLineage=null;this.workbenchSourceWarnings=[];this.workbenchEvidenceModelPath=null;this.workbenchEvidence=null;this.evidenceRegistrationTimer=null;this.registeredMatchPreviewTimer=null;this.sidebarContent=null;this.getSettings=i,this.convertedAssetCache=r,this.ps=s}getViewType(){return _d}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),this.contentEl.addClass("ai3d-direct-view"),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),await this.loadModel(t)}onClose(){var t,i;return this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.preview)==null||i.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var v,x,S,E,T,R;let i=++this.loadGeneration,r=gr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(v=this.annotationMgr)==null||v.destroy(),this.annotationMgr=null,this.workbenchPanel=null,this.workbenchSummary=null,this.workbenchRoute=null,this.workbenchModelPath=null,this.workbenchEvidenceLineage=null,this.workbenchSourceWarnings=[],this.workbenchEvidenceModelPath=null,this.workbenchEvidence=null,this.sidebarContent=null,(x=this.preview)==null||x.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:c,canvas:f,modeOverlay:d,sidebarContent:h,vHandle:u,workbenchPanel:m}=WZ({contentEl:this.contentEl,filePath:t.path,mobile:r,getPreview:()=>this.preview}),_=null,p=M=>{var y;this.annotationMode=M,r&&M&&(_==null||_.setMobileInteractionMode(!0)),(y=this.annotationMgr)==null||y.hideEditor(),d.classList.toggle("is-hidden",!M)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=M=>{M.key==="Escape"&&this.annotationMode&&p(!1)},activeDocument.addEventListener("keydown",this.escHandler),_=Lv(o,c,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(p(!this.annotationMode),this.annotationMode),M=>{!M&&this.annotationMode&&p(!1)}),this.sidebarContent=h,this.workbenchPanel=m,this.setupResizeHandles(l,u,a,s);let g=Fh(c);try{let M=this.getSettings(),y=(S=oo(this.app,t.path))!=null?S:void 0,C=(E=oo(this.app,FSe))!=null?E:void 0;g.setPhaseKey("loading.preparingModel");let L=await Np({path:t.path,absolutePath:y,preferConversionExts:wp(M),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(MM(),bM));return J(M)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:C});if(i!==this.loadGeneration){new Uc.Notice(j("directWorkbench.modelLoadInterrupted"));return}let w=wv(L);this.workbenchEvidenceLineage=XSe(w),this.workbenchSourceWarnings=[...w.warnings];let G=KZ(M,w),O=await Vp(this.app,w.path,M);_==null||_.syncCapabilities(),g.setPhaseKey("loading.loadingModel");let N=lo(this.app,w.path);N.catch(()=>{});let B=await this.createPreviewWithFallback(f,N,w,G,t.path,O);if(i!==this.loadGeneration){B.preview.destroy(),new Uc.Notice(j("directWorkbench.modelLoadInterrupted"));return}this.preview=B.preview,c.dataset.ai3dBackend=B.route.backend,c.dataset.ai3dRouteReason=B.route.reason,_==null||_.syncCapabilities();let V=B.summary;this.applyLargeModelRenderBudget(B.preview,M,V),Bv(c,V),this.workbenchPanel=m,this.workbenchSummary=V,this.workbenchRoute=B.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(m,V,B.route,t.path),this.renderSidebarContent(t.path,V),this.ps.setCurrentModel(t.path,V),wM.info("direct view model loaded",{path:t.path,effectivePath:w.path,effectiveExt:w.ext,strategy:w.strategy,backend:B.route.backend,routeReason:B.route.reason,meshCount:V.meshCount,triangleCount:V.triangleCount}),g.setProgress(100),g.hide(),this.setupAnnotationManager(t.path,i,c,_),this.scheduleDeferredEvidenceRegistration(t.path,i,V)}catch(M){if(i!==this.loadGeneration)return;g.hide(),(T=this.preview)==null||T.destroy(),this.preview=null,c.replaceChildren(),(R=this.workbenchPanel)==null||R.addClass("is-hidden");let y=Nv(M);Ov(M)?console.warn("[AI3D] Direct view blocked by converter settings:",y.message):console.error("[AI3D] Direct view failed:",M),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),Fv(c,y)}finally{g.hide()}}async setupAnnotationManager(t,i,r,s){var l;let a=this.preview;if(!a)return;let o=a.getAnnotationProvider();if(o.canvas)try{let[{AnnotationManager:c},{createHeadingSearch:f,createNoteReader:d}]=await Promise.all([Promise.resolve().then(()=>(yM(),IM)),Promise.resolve().then(()=>(PM(),CM))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let h=this.ps.store.getState().modelAssetProfiles[t],u=(l=h==null?void 0:h.annotations)!=null?l:[],m=d(this.app),_=f(this.app);this.annotationMgr=new c(o,r,"edit",u,p=>{this.ps.updateModelProfile(t,g=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,_,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(u.length),a.onPick(p=>{var S,E;if(!this.annotationMode||!this.annotationMgr)return;let g=p.screenX,v=p.screenY,x=(E=(S=this.preview)==null?void 0:S.getPickWorldPoint(p))!=null?E:null;x&&this.annotationMgr.showEditor(g,v,x)})}catch(c){console.warn("[AI3D] Direct view annotation runtime failed to load:",c)}}async registerModelPartsFromEvidence(t,i){var f,d;if(!(i!=null&&i.parts.length))return;let{buildPartRecordsFromEvidence:r}=await Promise.resolve().then(()=>(LM(),oF)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:t0(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(h=>[i$(h),h])),c=VSe(s.map(h=>USe(l.get(i$(h)),h))).map(Yh);GSe(o.registeredParts,c)||this.ps.updateModelProfile(t,h=>({registeredParts:c}))}clearDeferredEvidenceRegistration(){this.evidenceRegistrationTimer!==null&&(window.clearTimeout(this.evidenceRegistrationTimer),this.evidenceRegistrationTimer=null)}clearRegisteredMatchPreview(){this.registeredMatchPreviewTimer!==null&&(window.clearTimeout(this.registeredMatchPreviewTimer),this.registeredMatchPreviewTimer=null)}scheduleDeferredEvidenceRegistration(t,i,r){if(this.clearDeferredEvidenceRegistration(),!WSe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),wM.info("skip automatic evidence capture for very large model",{modelPath:t,performanceTier:r.performanceTier,meshCount:r.meshCount,triangleCount:r.triangleCount});return}this.evidenceRegistrationTimer=window.setTimeout(()=>{this.evidenceRegistrationTimer=null,!(i!==this.loadGeneration||this.workbenchModelPath!==t)&&(async()=>{let s=this.getCurrentModelEvidence();await this.registerModelPartsFromEvidence(t,s),i===this.loadGeneration&&this.workbenchModelPath===t&&this.refreshWorkbenchPanel()})().catch(s=>{console.warn("[AI3D] Deferred model evidence capture failed:",s)})},kSe(r))}getCurrentModelEvidence(){var s,a,o;let t=this.workbenchModelPath;if(t&&this.workbenchEvidenceModelPath===t)return this.workbenchEvidence;let i=(o=(a=(s=this.preview)==null?void 0:s.getModelEvidence)==null?void 0:a.call(s))!=null?o:null,r=i?YSe(i,this.workbenchEvidenceLineage,this.workbenchSourceWarnings):null;return t&&(this.workbenchEvidenceModelPath=t,this.workbenchEvidence=r),r}getCachedModelEvidence(t){return this.workbenchEvidenceModelPath===t?this.workbenchEvidence:null}createKnowledgePreviewAdapter(){return this.preview?{captureSnapshot:()=>{var t,i;return(i=(t=this.preview)==null?void 0:t.captureSnapshot())!=null?i:null},getModelEvidence:()=>this.getCurrentModelEvidence()}:null}renderWorkbenchPanel(t,i,r,s){var a,o;zZ({panel:t,summary:i,route:r,registeredPartCount:(o=(a=this.ps.store.getState().modelAssetProfiles[s])==null?void 0:a.registeredParts)==null?void 0:o.length})}renderSidebarContent(t,i){this.sidebarContent&&(this.clearRegisteredMatchPreview(),this.sidebarContent.empty(),this.renderKnowledgeControls(this.sidebarContent,t),this.renderRegisteredPartMatches(this.sidebarContent,t,i))}refreshWorkbenchPanel(){!this.workbenchPanel||!this.workbenchSummary||!this.workbenchRoute||!this.workbenchModelPath||(this.renderWorkbenchPanel(this.workbenchPanel,this.workbenchSummary,this.workbenchRoute,this.workbenchModelPath),this.renderSidebarContent(this.workbenchModelPath,this.workbenchSummary))}setupResizeHandles(t,i,r,s){let a=(c,f,d)=>{let h=0,u=0,m=p=>{f(p.clientX-h,p.clientY-u),h=p.clientX,u=p.clientY},_=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",_),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),h=p.clientX,u=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",_)})},o=200;a(t,c=>{o=Math.max(48,Math.min(400,o-c)),r.style.gridTemplateColumns=`1fr 4px ${o}px`},()=>{});let l=220;a(i,(c,f)=>{l=Math.max(120,Math.min(500,l-f)),s.style.gridTemplateRows=`1fr 4px ${l}px`},()=>{})}renderKnowledgeControls(t,i){let r=this.ps.store.getState().modelAssetProfiles[i],s=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-knowledge"});s.createDiv({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?j("workbench.indexReady"):r!=null&&r.reportNotePath?j("workbench.noteReady"):j("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(NM(),OM)).then(({generateKnowledgeNote:f})=>f(this.app,this.ps,{preview:this.createKnowledgePreviewAdapter()})).catch(f=>{console.error("[AI3D] Generate knowledge note failed:",f)}).finally(()=>{o.disabled=!1,this.refreshWorkbenchPanel()})});let l=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})})}renderRegisteredPartMatches(t,i,r){let s=this.loadGeneration,a=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-registered"}),o=a.createDiv({cls:"ai3d-direct-workbench-control-head"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:j("directWorkbench.registeredLoading")}),c=a.createDiv({cls:"ai3d-direct-workbench-registered-body"}),f=m=>{l.setText(""),c.empty(),c.createDiv({cls:"ai3d-direct-workbench-empty",text:j(m)})},d=this.getCachedModelEvidence(i),h=d?zSe(d):null;if(!(h!=null&&h.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:j("directWorkbench.registeredLoading")});return}let u=HSe(r);if(u===null){f("directWorkbench.registeredUnavailable");return}this.registeredMatchPreviewTimer=window.setTimeout(()=>{this.registeredMatchPreviewTimer=null,!(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)&&Promise.all([Promise.resolve().then(()=>(NM(),OM)),Promise.resolve().then(()=>(LM(),oF)),Promise.resolve().then(()=>(JQ(),$Q))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:_},{renderRegisteredPartMatchRow:p}])=>{var R;let g=this.ps.store.getState(),v=await m(this.app,g.modelAssetProfiles,i,{includeSidecars:!1,maxParts:OSe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let x=this.ps.store.getState().modelAssetProfiles[i],E=_({modelPath:i,profile:x,preview:r,evidence:h,registeredParts:v}).parts.filter(M=>{var y;return(y=M.registeredMatches)==null?void 0:y.length}).sort((M,y)=>{var C,L,w,G,O,N;return((w=(L=(C=y.registeredMatches)==null?void 0:C[0])==null?void 0:L.matchScore)!=null?w:0)-((N=(O=(G=M.registeredMatches)==null?void 0:G[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(E.length===0){f("directWorkbench.registeredEmpty");return}l.setText(qi("directWorkbench.registeredCount",{count:String(E.length)})),c.empty();let T=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of E){let y=(R=M.registeredMatches)==null?void 0:R[0];if(!y)continue;let L=p(T,M.name,y).querySelector("[data-ai3d-action='open-registered-part']");L instanceof HTMLButtonElement&&L.addEventListener("click",()=>{let w=L.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let G=this.app.vault.getAbstractFileByPath(w);G instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(G,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},u)}async createPreviewWithFallback(t,i,r,s,a,o){let l=await Cp(wM,{surface:"direct-view",modelPath:a},t,s);this.applyRenderBudget(l.preview,o);let c;try{c=await i}catch(f){throw l.preview.destroy(),f}try{let f=await l.preview.loadModel(c,r.ext,d=>lo(this.app,d),r.path);return{preview:l.preview,summary:f,route:l.route}}catch(f){if(l.preview.destroy(),l.route.backend!=="three"||!s.requireWorkbenchFeatures||!s.allowWorkbenchFeaturesOnThree)throw f;console.warn("[AI3D] Experimental Three workbench failed; falling back to Babylon:",f);let d={...s,allowWorkbenchFeaturesOnThree:!1},h=await Cp(wM,{surface:"direct-view-fallback",modelPath:a},t,d);this.applyRenderBudget(h.preview,o);try{let u=await h.preview.loadModel(c,r.ext,m=>lo(this.app,m),r.path);return{preview:h.preview,summary:u,route:h.route}}catch(u){throw h.preview.destroy(),BSe(f)?f:u}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=qZ(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var c$={};Be(c$,{AI3DSettingTab:()=>RF});function KSe(){switch(xF==null?void 0:xF.platform){case"win32":return{python:"Path to python executable",freecad:"Path to FreeCADCmd.exe",obj2gltf:"Path to obj2gltf.cmd",fbx2gltf:"Path to FBX2glTF.exe"};case"darwin":return{python:"Path to python3",freecad:"Path to FreeCADCmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};case"linux":return{python:"Path to python3",freecad:"Path to freecadcmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};default:return{python:"Path to python executable",freecad:"Path to FreeCAD command",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"}}}var jt,xF,RF,f$=I(()=>{"use strict";jt=require("obsidian");QM();vn();sa();ar();xF=Wu();RF=class extends jt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),Jp(this.plugin.getSettings().locale),this.diagnosticsEl=null,this.addTitle(t),this.buildLanguageSection(t),this.buildFoldersSection(t),this.buildBehaviorSection(t),this.buildKnowledgeGenerationSection(t),this.buildConvertersSection(t),this.buildPerformanceSection(t)}addTitle(t){new jt.Setting(t).setName(j("settings.title")).setHeading()}createSecondaryMenu(t,i,r){let s=t.createEl("details",{cls:"ai3d-settings-secondary-menu"});s.createEl("summary",{cls:"ai3d-settings-secondary-menu-summary",text:i});let a=s.createDiv({cls:"ai3d-settings-secondary-menu-body"});return a.createEl("p",{cls:"setting-item-description",text:r}),a}resetCommandDiagnostics(){this.diagnosticsEl&&(this.diagnosticsRunId++,this.diagnosticsEl.empty(),this.diagnosticsEl.createEl("p",{text:j("settings.diagnostics.idle")}))}buildLanguageSection(t){new jt.Setting(t).setName(j("settings.language")).setHeading(),new jt.Setting(t).setName(j("settings.language")).setDesc(j("settings.language.desc")).addDropdown(i=>i.addOption("en","English").addOption("zh-CN","\u7B80\u4F53\u4E2D\u6587").setValue(this.plugin.getSettings().locale).onChange(r=>{this.plugin.updateSettings({locale:r}),this.display()}))}buildFoldersSection(t){new jt.Setting(t).setName(j("settings.folders")).setHeading(),new jt.Setting(t).setName(j("settings.sourceModelFolder")).setDesc(j("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder(Wc.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new jt.Setting(t).setName(j("settings.reportFolder")).setDesc(j("settings.reportFolder.desc")).addText(i=>i.setPlaceholder(Wc.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new jt.Setting(t).setName(j("settings.partFolder")).setDesc(j("settings.partFolder.desc")).addText(i=>i.setPlaceholder(Wc.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new jt.Setting(t).setName(j("settings.snapshotFolder")).setDesc(j("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder(Wc.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new jt.Setting(t).setName(j("settings.behavior")).setHeading(),new jt.Setting(t).setName(j("settings.autoGenerateKnowledgeNotes")).setDesc(j("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new jt.Setting(t).setName(j("settings.annotationPreviewMode")).setDesc(j("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",j("settings.annotationPreviewMode.plainText")).addOption("markdown",j("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new jt.Setting(t).setName(j("settings.annotationDisplayMode")).setDesc(j("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",j("settings.annotationDisplayMode.snippet")).addOption("surface",j("settings.annotationDisplayMode.surface")).addOption("dot",j("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new jt.Setting(t).setName(j("settings.previewRendererRollout")).setDesc(j("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",j("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",j("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",j("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new jt.Setting(t).setName(j("settings.useThreeRenderer")).setDesc(j("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new jt.Setting(t).setName(j("settings.experimentalThreeWorkbench")).setDesc(j("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new jt.Setting(t).setName(j("settings.autoRotateDefault")).setDesc(j("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new jt.Setting(t).setName(j("settings.snapshotNaming")).setDesc(j("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",j("settings.snapshotNaming.modelName")).addOption("timestamp",j("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new jt.Setting(t).setName(j("settings.logLevel")).setDesc(j("settings.logLevel.desc")).addDropdown(i=>i.addOption("debug","Debug").addOption("info","Info").addOption("warn","Warn").addOption("error","Error").setValue(this.plugin.getSettings().logLevel).onChange(r=>{this.plugin.updateSettings({logLevel:r})}))}buildKnowledgeGenerationSection(t){new jt.Setting(t).setName(j("settings.knowledgeGeneration")).setHeading(),new jt.Setting(t).setName(j("settings.analysisMode")).setDesc(j("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",j("settings.analysisMode.local")).addOption("hybrid",j("settings.analysisMode.hybrid")).addOption("remote",j("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new jt.Setting(t).setName(j("settings.serviceBaseUrl")).setDesc(j("settings.serviceBaseUrl.desc")).addText(i=>i.setPlaceholder("Local draft service URL").setValue(this.plugin.getSettings().serviceBaseUrl).onChange(r=>{this.plugin.updateSettings({serviceBaseUrl:r.trim()})})),new jt.Setting(t).setName(j("settings.sendGeometrySummaryToRemote")).setDesc(j("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new jt.Setting(t).setName(j("settings.sendPreviewImagesToRemote")).setDesc(j("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new jt.Setting(t).setName(j("settings.sendRawModelToRemote")).setDesc(j("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new jt.Setting(t).setName(j("settings.converters")).setHeading(),gr()){t.createEl("p",{cls:"setting-item-description",text:j("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,j("settings.converterMenu"),j("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,j("settings.environmentInspector"),j("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new jt.Setting(t).setName(j("settings.enableCad")).setDesc(j("settings.enableCad.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("freecad");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"freecad"])):a.filter(l=>l!=="freecad");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableObj2gltf")).setDesc(j("settings.enableObj2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("obj2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"obj2gltf"])):a.filter(l=>l!=="obj2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.preferObj2gltf")).setDesc(j("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new jt.Setting(t).setName(j("settings.enableFbx2gltf")).setDesc(j("settings.enableFbx2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("fbx2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"fbx2gltf"])):a.filter(l=>l!=="fbx2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableMesh")).setDesc(j("settings.enableMesh.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("assimp");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"assimp"])):a.filter(l=>l!=="assimp");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableSldprt")).setDesc(j("settings.enableSldprt.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("sldprt");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"sldprt"])):a.filter(l=>l!=="sldprt");this.plugin.updateSettings({enabledConverterIds:o})})})}buildConverterPaths(t){let i=KSe();new jt.Setting(t).setName(j("settings.paths")).setHeading(),new jt.Setting(t).setName(j("settings.pythonCmd")).setDesc(j("settings.pythonCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().freecadCommand).onChange(s=>{this.plugin.updateSettings({freecadCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.freecadCmd")).setDesc(j("settings.freecadCmd.desc")).addText(r=>r.setPlaceholder(i.freecad).setValue(this.plugin.getSettings().freecadcmdCommand).onChange(s=>{this.plugin.updateSettings({freecadcmdCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.obj2gltfCmd")).setDesc(j("settings.obj2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.obj2gltf).setValue(this.plugin.getSettings().obj2gltfCommand).onChange(s=>{this.plugin.updateSettings({obj2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.fbx2gltfCmd")).setDesc(j("settings.fbx2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.fbx2gltf).setValue(this.plugin.getSettings().fbx2gltfCommand).onChange(s=>{this.plugin.updateSettings({fbx2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.assimpCmd")).setDesc(j("settings.assimpCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().assimpCommand).onChange(s=>{this.plugin.updateSettings({assimpCommand:s.trim()}),this.resetCommandDiagnostics()}))}buildDiagnostics(t){new jt.Setting(t).setName(j("settings.diagnostics")).setDesc(j("settings.diagnostics.desc")).addButton(r=>r.setButtonText(j("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(j("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(j("settings.diagnostics.checkNow")),r.setDisabled(!1),new jt.Notice(j("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new jt.Setting(t).setName(j("settings.performance")).setHeading(),new jt.Setting(t).setName(j("settings.canvasHeight")).setDesc(j("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new jt.Setting(t).setName(j("settings.autoRotateSpeed")).setDesc(j("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new jt.Setting(t).setName(j("settings.renderQuality")).setDesc(j("settings.renderQuality.desc")).addDropdown(i=>i.addOption("low","Low").addOption("medium","Medium").addOption("high","High").setValue(this.plugin.getSettings().renderQuality).onChange(r=>{this.plugin.updateSettings({renderQuality:r})})),new jt.Setting(t).setName(j("settings.renderScale")).setDesc(j("settings.renderScale.desc")).addSlider(i=>i.setLimits(.25,2,.25).setValue(this.plugin.getSettings().renderScale).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({renderScale:r})}))}async renderCommandDiagnostics(t){let i=++this.diagnosticsRunId;t.empty(),t.createEl("p",{text:j("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(hd(),$w)),a=await s(this.plugin.getSettings());if(i===this.diagnosticsRunId){t.empty();for(let o of a)this.renderCommandStatus(t,o,r)}}renderCommandStatus(t,i,r){var o;let s=t.createDiv({cls:"ai3d-settings-status-block"});s.createEl("strong",{text:`${i.label}: ${i.available?j("settings.diagnostics.available"):j("settings.diagnostics.notFound")}`});let a=[`${j("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${j("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${j("settings.diagnostics.resolvedPathLabel")}: ${i.resolvedPath}`:"",i.detail].filter(Boolean);for(let l of a)s.createDiv({text:l});for(let l of(o=i.dependencyChecks)!=null?o:[])this.renderDependencyCheck(s,l)}renderDependencyCheck(t,i){let r=(()=>{switch(i.kind){case"cad-python":return j("settings.diagnostics.cadPythonCheck");case"mesh-python":return j("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return j("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return j("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return j("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?j("settings.diagnostics.selfCheckOk"):j("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${j("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function h$(n){let e=new Map;for(let[t,i]of Object.entries(n))for(let r of i.annotations)if(r.headingRef&&r.id){let s=Ml(r.headingRef);if(!s)continue;let a=e.get(s);a||(a=[],e.set(s,a)),a.push({pinId:r.id,modelPath:t,color:r.color})}return e}function u$(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Ml(t.headingRef))return!0;return!1}var bF=I(()=>{"use strict";kv()});function Bo(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=MF[n])!=null?i:MF.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function yl(n,e,t=.02){let i=(1-t*(n+1))/n,r=(1-t*(e+1))/e,s=[];for(let a=0;a({path:i.path,position:[-t/2+r*e,0,0],color:i.color,wireframe:i.wireframe}))}function yF(n,e){return n.map((t,i)=>{let r=2*Math.PI*i/n.length;return{path:t.path,position:[Math.cos(r)*e,0,Math.sin(r)*e],color:t.color,wireframe:t.wireframe}})}var MF,Gh=I(()=>{"use strict";MF={iso:{alpha:Math.PI/4,beta:Math.PI/3},front:{alpha:0,beta:Math.PI/2},side:{alpha:Math.PI/2,beta:Math.PI/2},top:{alpha:0,beta:.01},back:{alpha:Math.PI,beta:Math.PI/2},"3/4":{alpha:Math.PI/6,beta:Math.PI/3.5}}});var m$,p$=I(()=>{"use strict";Gh();m$={name:"compare",description:"Side-by-side model comparison (2-4 models)",minModels:2,maxModels:4,compute(n,e){if(n.length<2||n.length>4)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=zv(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=yl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Bo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var _$,g$=I(()=>{"use strict";Gh();_$={name:"showcase",description:"Single model viewed from multiple angles",minModels:1,maxModels:1,compute(n,e){if(n.length<1)return null;let t=Number(e.angles)||4,i=Number(e.radius)||2.5,r=[{path:n[0].path,position:[0,0,0],color:n[0].color,wireframe:n[0].wireframe}],s=t>=6?["front","side","top","back","iso","3/4"]:["iso","front","side","top"],a=s.length<=4?2:3,o=Math.ceil(s.length/a),l=yl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Bo(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var v$,E$=I(()=>{"use strict";Gh();v$={name:"explode",description:"Spatial arrangement of parts (3-8 models in a ring)",minModels:3,maxModels:8,compute(n,e){if(n.length<3||n.length>8)return null;let t=Number(e.radius)||8,i=e.angle||"iso",r=yF(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=yl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Bo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var S$,T$=I(()=>{"use strict";Gh();S$={name:"timeline",description:"Horizontal progression of models (2-6 models in a strip)",minModels:2,maxModels:6,compute(n,e){if(n.length<2||n.length>6)return null;let t=Number(e.spacing)||6,i=e.angle||"3/4",r=zv(n,t),s=IF(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Bo(i),viewport:s[l]}));return{placements:r,cells:a}}}});function CF(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((h,u)=>{var m;return h+((m=u.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let h of n){let m=((f=h.weight)!=null?f:1)/s*(1-t*(n.length+1));e==="horizontal"?a.push({x:t+o,y:t,w:m,h:1-2*t}):a.push({x:t,y:t+o,w:1-2*t,h:m}),o+=m+t}let l=[],c=[];for(let h=0;h{"use strict";A$={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var x$,R$=I(()=>{"use strict";Gh();x$={name:"gallery",description:"All models in one scene, single camera (no cell limit)",minModels:1,maxModels:32,compute(n,e){if(n.length===0)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=Number(e.cols)||0,s=r>0?r:Math.ceil(Math.sqrt(n.length)),a=Math.ceil(n.length/s),o=n.map((f,d)=>{let h=d%s,u=Math.floor(d/s),m=(h-(s-1)/2)*t,_=(u-(a-1)/2)*t;return{path:f.path,position:[m,0,_],color:f.color,wireframe:f.wireframe}}),l=yl(1,1,0),c=[{modelIndex:0,camera:Bo(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function Wp(n){b$.set(n.name,n)}function DF(n){return b$.get(n)}var b$,M$=I(()=>{"use strict";p$();g$();E$();T$();PF();R$();Gh();PF();b$=new Map;Wp(m$);Wp(_$);Wp(v$);Wp(S$);Wp(A$);Wp(x$)});function Xv(n){return ZSe.schedule(n)}var LF,qSe,ZSe,OF=I(()=>{"use strict";LF=class{constructor(e=1,t=0){this.maxActive=e;this.settleDelayMs=t;this.active=0;this.drainTimer=null;this.queue=[]}get activeCount(){return this.active}get queuedCount(){return this.queue.length}schedule(e){return new Promise((t,i)=>{this.queue.push({run:e,resolve:t,reject:i}),this.drain()})}drain(){if(this.drainTimer===null)for(;this.active0;){let e=this.queue.shift();if(!e)return;this.active+=1,Promise.resolve().then(e.run).then(e.resolve,e.reject).finally(()=>{this.active-=1,this.scheduleNextDrain()})}}scheduleNextDrain(){if(this.queue.length!==0){if(this.settleDelayMs<=0){this.drain();return}this.drainTimer===null&&(this.drainTimer=globalThis.setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},qSe=75,ZSe=new LF(1,qSe)});var L$={};Be(L$,{registerCodeBlockProcessor:()=>$Se,registerGridCodeBlockProcessor:()=>eTe});async function C$(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(MM(),bM));return e(n)}async function P$(n,e,t,i){var d,h,u,m;let r=typeof e=="string"?{path:e}:e,s=cf(n,r.path);if(!s)throw new Error(qi("workbench.fileNotFound",{path:r.path}));let a=(h=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?h:"";if(!Ya(a))throw Kp(a)?new Error(j("codeBlock.splatDisabled")):new Error(qi("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Cl().join(", ")}));let o=(u=oo(n,s))!=null?u:void 0,l=(m=oo(n,y$))!=null?m:void 0,c=await Np({path:s,absolutePath:o,preferConversionExts:wp(t),conversionManager:()=>C$(t),convertedAssetCache:i,conversionOutputRoot:l}),f=wv(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function QSe(n,e,t,i){let r=[];for(let s of e.models){let a=await P$(n,s,t,i);r.push(a.model)}return{...e,models:r}}function D$(n){gr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("codeBlock.mobileHint")})}function $Se(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var y,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let L=JSON.parse(o);l=JSe(L)}catch(L){let w=s.createDiv({cls:"ai3d-json-error"}),G=String(L).match(/position\s+(\d+)/),O=qi("codeBlock.jsonParseError",{error:String(L)});if(G){let N=parseInt(G[1],10),B=o.substring(0,N).split(` -`);O+=qi("codeBlock.jsonParseLine",{line:String(B.length)})}w.createEl("pre",{text:O});return}else l={models:[{path:o}]};if(!l.models||l.models.length===0){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsInConfig")});return}l.models.length>1&&console.warn(`[AI3D] \`\`\`3d only supports one model; ${l.models.length-1} additional models ignored. Use \`\`\`3dgrid for multi-model.`);let f=l.models[0],d=cf(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:qi("workbench.fileNotFound",{path:f.path})});return}let h=(C=(y=d.split(".").pop())==null?void 0:y.toLowerCase())!=null?C:"";if(!Ya(h)){s.createDiv({cls:"ai3d-inline-empty",text:Kp(h)?j("codeBlock.splatDisabled"):qi("codeBlock.unsupportedFormat",{ext:`.${h}`,formats:Cl().join(", ")})});return}let u=e(),m=s.createDiv({cls:"ai3d-preview-host"});l.height&&m.style.setProperty("--min-height",typeof l.height=="number"?`${l.height}px`:l.height),l.width&&m.style.setProperty("--max-width",typeof l.width=="number"?`${l.width}px`:l.width);let _=m.createEl("canvas",{cls:"ai3d-canvas-full"});Fp(_,"inline",d),m.appendChild(_);let p=null,g=null,v=!0,x=!1,S=!1;Bp(_,()=>x?null:p);let E=Lv(s,m,n,()=>p,()=>d,()=>{x||(x=!0,T.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,g){let L=m.querySelector(".ai3d-annotation-overlay");L&&L.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});D$(s);let T=new MutationObserver(()=>{x||s.contains(m)||(x=!0,T.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null)});T.observe(s,{childList:!0});async function R(){if(S||x||!d)return;S=!0;let L=Fh(m),w=async(G,O)=>{if(O.length===0||!rM(G))return;let N=G.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(yM(),IM)),Promise.resolve().then(()=>(PM(),CM))]);if(x||p!==G||!m.isConnected)return;g=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:u.annotationPreviewMode,displayMode:u.annotationDisplayMode}),E.showAnnotateButton(),E.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{L.setPhaseKey("loading.preparingModel"),await Xv(async()=>{var Ee,Ue,ae,me,ne,fe,Pe,de;if(x||!m.isConnected){L.hide();return}let G=(Ee=oo(n,d))!=null?Ee:void 0,O=(Ue=oo(n,y$))!=null?Ue:void 0;L.setPhaseKey("loading.preparingModel");let N=await Np({path:d,absolutePath:G,preferConversionExts:wp(u),conversionManager:()=>C$(u),convertedAssetCache:t,conversionOutputRoot:O}),B=wv(N),V=await Vp(n,B.path,u),J=(ae=i==null?void 0:i(d))!=null?ae:[],Q={ext:B.ext,annotationMode:J.length>0?"readonly":"none",rendererRollout:u.previewRendererRollout,useThreeRenderer:u.useThreeRenderer},{preview:te}=await Cp(I$,{surface:"code-block",modelPath:d},_,Q);p=te,(me=p.setRenderQuality)==null||me.call(p,V.renderQuality,V.renderScale),E.syncCapabilities(),L.setPhaseKey("loading.loadingModel");let X=await lo(n,B.path),Y=async Re=>lo(n,Re);if(x){L.hide();return}let ve=await p.loadModel(X,B.ext,Y,B.path);if(L.setProgress(100),Bv(m,ve),x){L.hide();return}((ne=l.scene)==null?void 0:ne.autoRotate)===void 0&&u.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:u.autoRotateSpeed}),p.applyConfig(l),E.syncCapabilities(),h==="stl"&&f.color&&((fe=p.setSTLColor)==null||fe.call(p,f.color)),h==="stl"&&f.wireframe!==void 0&&((Pe=p.setWireframe)==null||Pe.call(p,f.wireframe)),(de=p.hasAnimations)!=null&&de.call(p)&&E.showAnimButton(),L.hide(),w(p,J)})}catch(G){x=!0,T.disconnect(),M.disconnect(),L.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=Nv(G);Ov(G)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",G),Fv(m,O)}}let M=new IntersectionObserver(L=>{for(let w of L)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function JSe(n){if(typeof n=="string")return{models:[{path:n}]};if(typeof n!="object"||n===null)return{models:[]};let e=n;return typeof e.path=="string"?{models:[{path:e.path,color:e.color,wireframe:e.wireframe}],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}:{models:Array.isArray(e.models)?e.models.filter(i=>{let r=typeof i=="string"?i:i&&typeof i=="object"&&"path"in i?i.path:void 0;return typeof r=="string"&&r.length>0}).map(i=>{if(typeof i=="string")return{path:i};let r=i;return{path:r.path,color:r.color,wireframe:r.wireframe}}):[],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}}function eTe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var S,E,T,R,M,y,C,L;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(w){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(w)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(E=(S=o.models)==null?void 0:S.length)!=null?E:1),c=(y=(T=o.models)==null?void 0:T[0])!=null?y:(M=(R=o.sections)==null?void 0:R[0])==null?void 0:M.models[0],f=typeof c=="string"?c:(C=c==null?void 0:c.path)!=null?C:"",d=r.createDiv({cls:"ai3d-grid-host"}),h=d.createEl("canvas");if(VZ(h),d.appendChild(h),typeof o.rowHeight=="number"){let w=o.preset==="compose"?1:Math.ceil(l/((L=o.columns)!=null?L:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*w}px`)}let u=null,m=!1,_=!1,p=null,g=null;GZ(h,()=>m?null:u);let v=Lv(r,d,n,()=>u,()=>f,()=>{m||(m=!0,p==null||p.disconnect(),g==null||g.disconnect(),u==null||u.destroy(),u=null,d.remove())},e);D$(r),p=new MutationObserver(()=>{m||r.contains(d)||(m=!0,p==null||p.disconnect(),g==null||g.disconnect(),u==null||u.destroy(),u=null)}),p.observe(r,{childList:!0});async function x(){if(_||m)return;_=!0;let w=Fh(d);w.setPhaseKey("codeBlock.renderingGrid"),w.setProgress(-1);try{await Xv(async()=>{var Q,te,X,Y,ve,Ee,Ue,ae,me,ne;if(m||!d.isConnected){w.hide();return}let G=e(),O=[];for(let fe of(Q=o.models)!=null?Q:[]){let Pe=await P$(n,fe,G,t);O.push(Pe)}let N=O.map(fe=>fe.model);f=(X=(te=O[0])==null?void 0:te.sourcePath)!=null?X:f;let{renderer:B}=await Lw(I$,{surface:"3dgrid",preset:(Y=o.preset)!=null?Y:"compare",modelCount:(Ee=(ve=o.models)==null?void 0:ve.length)!=null?Ee:0},h);u=B,v.syncCapabilities();let V=u,J=async fe=>lo(n,fe);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeRequiresSections")}),u.destroy(),u=null;return}let fe=[];for(let de of o.sections)try{if(!f){let Ye=de.models[0];if(Ye){let Et=typeof Ye=="string"?Ye:Ye.path;f=(Ue=cf(n,Et))!=null?Ue:Et}}let Re=await QSe(n,de,G,t);fe.push(Re)}catch(Re){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Re instanceof Error?Re.message:String(Re)}),V.destroy(),u=null;return}let Pe=CF(fe,(ae=o.direction)!=null?ae:"horizontal",Number((me=o.params)==null?void 0:me.gap)||.02,de=>typeof de=="string"?null:de,DF);if(!Pe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeNoValidSections")}),V.destroy(),u=null;return}await V.loadWithPreset(Pe,J)}else if(o.preset){let fe=DF(o.preset);if(!fe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:qi("codeBlock.unknownPreset",{preset:o.preset})}),V.destroy(),u=null;return}let Pe=fe.compute(N,(ne=o.params)!=null?ne:{});if(!Pe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:qi("codeBlock.presetRequiresModels",{preset:o.preset,min:String(fe.minModels),max:String(fe.maxModels),count:String(N.length)})}),V.destroy(),u=null;return}await V.loadWithPreset(Pe,J)}else await V.loadModels(N,o,J);if(m){w.hide();return}w.hide()})}catch(G){m=!0,p==null||p.disconnect(),g==null||g.disconnect(),w.hide(),u==null||u.destroy(),u=null,console.error("[AI3D Grid] Failed:",G),d.createDiv({cls:"ai3d-inline-empty",text:G instanceof Error?G.message:qi("codeBlock.gridFailed",{reason:String(G)})})}}g=new IntersectionObserver(w=>{for(let G of w)G.isIntersecting&&(g==null||g.disconnect(),x())},{rootMargin:"200px"}),g.observe(d)}}}var I$,y$,O$=I(()=>{"use strict";Ka();Jb();Lp();Ps();M$();ww();fM();Uw();dM();hM();Op();vn();Uv();sa();Mn();mM();OF();_M();I$=Hi("inline-code-block"),y$=".obsidian/ai-model-workbench/converted-assets"});var F$={};Be(F$,{registerLazyCodeBlockProcessor:()=>iTe,registerLazyGridCodeBlockProcessor:()=>rTe});function N$(){return UM!=null||(UM=Promise.resolve().then(()=>(O$(),L$))),UM}function w$(n){return(e,t,i)=>{let r=activeDocument.createElement("div");r.className="ai3d-preview-host ai3d-code-block-lazy",r.setAttribute("aria-busy","true"),t.appendChild(r);let s=async()=>{if(r.isConnected)try{let o=await n();if(!r.isConnected)return;r.remove(),await o(e,t,i)}catch(o){console.warn("[AI3D] Failed to load inline code block runtime:",o);let l=r.isConnected?r:activeDocument.createElement("div");r.isConnected||t.appendChild(l),l.classList.remove("ai3d-preview-host"),l.classList.add("ai3d-inline-empty"),l.removeAttribute("aria-busy"),l.textContent="AI3D inline preview failed to load."}};if(typeof IntersectionObserver=="undefined"){s();return}let a=new IntersectionObserver(o=>{o.some(l=>l.isIntersecting||l.intersectionRatio>0)&&(a.disconnect(),s())},{rootMargin:tTe});a.observe(r)}}function iTe(n,e,t,i){let r=null;return{id:"3d",handler:w$(async()=>(r!=null||(r=N$().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function rTe(n,e,t){let i=null;return{id:"3dgrid",handler:w$(async()=>(i!=null||(i=N$().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var UM,tTe,B$=I(()=>{"use strict";UM=null,tTe="240px"});var U$={};Be(U$,{setupHeadingPinObserver:()=>sTe});function nTe(n){if(n.length===0)return"var(--interactive-accent)";if(n.length===1)return n[0];let e=100/n.length;return`linear-gradient(135deg, ${n.map((t,i)=>{let r=Math.round(i*e),s=Math.round((i+1)*e);return`${t} ${r}% ${s}%`}).join(", ")})`}function NF(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function VM(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${NF(t)}`).sort().join("||")}function sTe(n){let e=new Map,t=null,i=new Map,r="",s=!1,a=null,o=new Set,l=0,c=O=>{var V;if(O===t)return!1;let N=new Map,B=t===null;for(let[J,Q]of Object.entries(O)){let te=(V=Q.annotations)!=null?V:[];N.set(J,te),i.get(J)!==te&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>h$(O),d=O=>Ml(Array.from(O.childNodes).map(N=>{var B;return N.instanceOf(Element)&&N.classList.contains("ai3d-heading-pin-badge")?"":(B=N.textContent)!=null?B:""}).join(" ")),h=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},u=(O,N)=>{if(N.length===0){h(O);return}let B=NF(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&h(O),O.dataset.pinBound=B;let J=O.createSpan({cls:"ai3d-heading-pin-badge"}),Q=[...new Set(N.map(Ee=>Ee.color).filter(Boolean))],te=J.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(te.style.background=nTe(Q),te.title=N.length>1?j("headingPin.showMultiple"):j("headingPin.showSingle"),te.setAttribute("role","button"),te.setAttribute("tabindex","0"),N.length>1){let Ee=J.createSpan({cls:"ai3d-heading-pin-badge-count"});Ee.textContent=`\xD7${N.length}`}let X=[...new Set(N.map(Ee=>tn(Ee.modelPath)))];J.title=qi("headingPin.linkedTo",{models:X.join(", ")});let Y=Ee=>{Ee==null||Ee.stopPropagation(),Ee==null||Ee.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};te.addEventListener("click",Ee=>{Y(Ee)}),te.addEventListener("keydown",Ee=>{Ee.instanceOf(KeyboardEvent)&&(Ee.key!=="Enter"&&Ee.key!==" "||Y(Ee))}),J.addEventListener("click",Ee=>{Ee.stopPropagation()}),O.appendChild(J);let ve=()=>{for(let Ee of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ee.pinId}}))};O.addEventListener("mouseover",ve),e.set(O,{badge:J,handler:ve,signature:B})},m=(O,N)=>{var V;let B=d(O);u(O,(V=N.get(B))!=null?V:[])},_=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){h(B);continue}let J=(N=O.get(d(B)))!=null?N:[],Q=NF(J);(J.length===0||V.signature!==Q)&&u(B,J)}},p=(O,N)=>{O.querySelectorAll(Kv).forEach(B=>m(B,N))},g=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=VM(N),s=N.size>0,!s){_(N),L();return}C(),_(N),activeDocument.querySelectorAll(Yv).forEach(V=>p(V,N))},v=0,x=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,g()},O)},S=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=VM(N);if(B!==r){if(r=B,s=N.size>0,!s){_(N),L();return}C(),x()}});n.onLayoutChange(()=>{!s&&f().size===0||x(200)});let E=O=>O.matches(Yv)||O.matches(Kv)?!0:!!O.querySelector(Yv)||!!O.querySelector(Kv),T=O=>O.isConnected&&E(O),R=O=>E(O),M=()=>{var B,V,J,Q,te,X;let O=Array.from(o);o.clear(),l=0;let N=f();_(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,Kv)&&m(Y,N),(J=(V=Y.querySelectorAll)==null?void 0:V.call(Y,Kv))==null||J.forEach(ve=>m(ve,N)),(Q=Y.matches)!=null&&Q.call(Y,Yv)&&p(Y,N),(X=(te=Y.querySelectorAll)==null?void 0:te.call(Y,Yv))==null||X.forEach(ve=>p(ve,N)));r=VM(N),s=N.size>0,s||L()},y=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&T(V)&&(o.add(V),N=!0);for(let V of Array.from(B.removedNodes))V.instanceOf(HTMLElement)&&R(V)&&(N=!0)}N&&!l&&(l=window.setTimeout(M,100))};function C(){a||(a=new MutationObserver(y),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function L(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{S(),L(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))h(O)});let w=n.getModelAssetProfiles();c(w);let G=f(w);r=VM(G),s=G.size>0,s&&(C(),x(500))}var Yv,Kv,V$=I(()=>{"use strict";vn();kv();Ps();bF();Yv=".markdown-preview-view, .markdown-source-view",Kv=[".markdown-preview-view h1",".markdown-preview-view h2",".markdown-preview-view h3",".markdown-preview-view h4",".markdown-preview-view h5",".markdown-preview-view h6",".cm-heading-1",".cm-heading-2",".cm-heading-3",".cm-heading-4",".cm-heading-5",".cm-heading-6",".cm-header-1",".cm-header-2",".cm-header-3",".cm-header-4",".cm-header-5",".cm-header-6"].join(", ")});function aTe(n){return n.includes("![[")}function GM(n){let e="";for(let t of n.iter()){if(!t)continue;let i=e?e+t:t;if(i.includes("![["))return!0;e=i.slice(-2)}return!1}function G$(n,e){return Math.max(0,Math.min(e,n.length))}function k$(n,e,t){if(n.length===0)return!1;let i=n.lineAt(G$(n,e)),r=n.lineAt(G$(n,t));for(let s=i.number;s<=r.number;s++)if(aTe(n.line(s).text))return!0;return!1}function kM(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=k$(n.startState.doc,t,i)||k$(n.state.doc,r,s))}),e}var wF=I(()=>{"use strict"});function W$(n,e,t=512){let i=new Map;return{resolve(r){var a;if(i.has(r))return(a=i.get(r))!=null?a:null;let s=e(n,r);if(i.set(r,s),i.size>t){let o=i.keys().next().value;o!==void 0&&i.delete(o)}return s},clear(){i.clear()}}}var H$=I(()=>{"use strict"});function jv(n){return createDiv().createDiv(n?{cls:n}:void 0)}function FF(n,e){return createDiv().createEl(n,e?{cls:e}:void 0)}var z$=I(()=>{"use strict"});var K$={};Be(K$,{ModelEmbedWidget:()=>WM,registerLivePreviewExtension:()=>cTe});function X$(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){var E,T;let v="state"in n?n.state.doc:n.doc,x=[];if(!GM(v))return x;let S=0;for(let R of v.iterLines()){let M=S+R.length+1;if(!R.includes("![[")){S=M;continue}let y=0;for(;y0&&R[C-1]==="\\"){y=C+"![[".length;continue}let L=R.indexOf("]]",C+"![[".length);if(L===-1)break;let G=R.slice(C+"![[".length,L).split("|"),O=G[0].trim(),N=(T=(E=O.split(".").pop())==null?void 0:E.toLowerCase())!=null?T:"";if(!Ya(N)){y=L+2;continue}let B=400,V=300;if(G.length>1){let Q=G[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);Q&&(B=parseInt(Q[1],10),V=parseInt(Q[2],10))}let J=cf(e,O);if(!J){y=L+2;continue}x.push(Hp.Decoration.replace({widget:new WM(e,J,B,V,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g),block:!0}).range(S+C,S+L+2)),y=L+2}S=M}return x}function Y$(n){return n.length===0?kh.RangeSet.empty:kh.RangeSet.of(n,!0)}function cTe(n,e,t,i){let r=kh.StateField.define({create(s){let a=e(),o=X$(s,n,a.autoRotateDefault,a.enabledConverterIds,a.freecadCommand,a.obj2gltfCommand,a.fbx2gltfCommand,a.freecadcmdCommand,a.preferObj2gltfForObj,a.preferFbx2gltfForFbx,a.annotationPreviewMode,a.annotationDisplayMode,a.previewRendererRollout,a.useThreeRenderer,a.renderQuality,a.renderScale,t,i);return Y$(o)},update(s,a){if(a.docChanged){if(!kM(a))return s.map(a.changes);let o=e(),l=X$(a.state,n,o.autoRotateDefault,o.enabledConverterIds,o.freecadCommand,o.obj2gltfCommand,o.fbx2gltfCommand,o.freecadcmdCommand,o.preferObj2gltfForObj,o.preferFbx2gltfForFbx,o.annotationPreviewMode,o.annotationDisplayMode,o.previewRendererRollout,o.useThreeRenderer,o.renderQuality,o.renderScale,t,i);return Y$(l)}return s.map(a.changes)},provide:s=>Hp.EditorView.decorations.from(s)});return[kh.Prec.highest(r)]}var Hp,kh,oTe,lTe,WM,j$=I(()=>{"use strict";Hp=require("@codemirror/view"),kh=require("@codemirror/state");Ka();Ps();hM();z$();sa();vn();Mn();mM();wF();OF();_M();oTe=Hi("inline-live-preview"),lTe=".obsidian/ai-model-workbench/converted-assets",WM=class extends Hp.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.renderQuality=v;this.renderScale=x;this.convertedAssetCache=S;this.getAnnotations=E;this.preview=null;this.annotationMgr=null;this.readyObs=null;this.viewportObs=null;this.pollId=0;this.initStarted=!1;this.destroyed=!1;this.initGeneration=0;this.viewportReady=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=gr(),i=jv("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=FF("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),Fp(r,"live-preview",this.modelPath),Bp(r,()=>this.destroyed?null:this.preview),i.appendChild(r);let a=Fh(i),o=jv("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=jv("ai3d-mobile-mode-bar"),h=jv("ai3d-mobile-mode-hint");h.textContent=j("livePreview.mobileHint");let u=FF("button","ai3d-mobile-mode-btn");u.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),u.textContent=f?j("helper.scrollAction"):j("helper.interactAction"),u.classList.toggle("ai3d-btn-active",f),u.setAttribute("aria-label",f?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))};u.addEventListener("click",()=>{f=!f,m()}),m(),d.append(h,u),i.appendChild(d)}let l=()=>{this.destroyed||this.initStarted||this.viewportReady&&(!i.isConnected||r.clientWidth<=0||r.clientHeight<=0||(this.initStarted=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),this.initPreview(i,r,a,o,++this.initGeneration)))};this.readyObs=new ResizeObserver(()=>l()),this.readyObs.observe(i),this.readyObs.observe(r);let c=()=>{if(this.pollId||this.destroyed||this.initStarted)return;let f=0,d=()=>{this.pollId=0,!(this.destroyed||this.initStarted)&&(l(),!this.initStarted&&(++f>240||(this.pollId=window.requestAnimationFrame(d))))};this.pollId=window.requestAnimationFrame(d)};return typeof IntersectionObserver=="undefined"?(this.viewportReady=!0,c(),l()):(this.viewportObs=new IntersectionObserver(f=>{this.destroyed||this.initStarted||f.some(d=>d.isIntersecting||d.intersectionRatio>0)&&(this.viewportReady=!0,this.stopViewportWatch(),c(),l())},{rootMargin:"200px"}),this.viewportObs.observe(i)),i}stopReadyPoll(){this.pollId&&(window.cancelAnimationFrame(this.pollId),this.pollId=0)}async initPreview(t,i,r,s,a){var o;try{r.setPhaseKey("loading.preparingModel"),await Xv(async()=>{var M,y,C,L,w,G,O,N;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:h},{createNoteReader:u},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(fM(),NZ)),Promise.resolve().then(()=>(dM(),wZ)),Promise.resolve().then(()=>(Jb(),TZ)),Promise.resolve().then(()=>(Lp(),bZ)),Promise.resolve().then(()=>(yM(),IM)),Promise.resolve().then(()=>(PM(),CM)),Promise.resolve().then(()=>(Uv(),Vw))]),_=(M=oo(this.app,this.modelPath))!=null?M:void 0;r.setPhaseKey("loading.preparingModel");let p=(y=oo(this.app,lTe))!=null?y:void 0,g=await l({path:this.modelPath,absolutePath:_,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:B}=await Promise.resolve().then(()=>(MM(),bM));return B({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(L=(C=this.getAnnotations)==null?void 0:C.call(this,this.modelPath))!=null?L:[],x={ext:g.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},S=await Vp(this.app,g.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),{preview:E}=await f(oTe,{surface:"live-preview",modelPath:this.modelPath},i,x);if(this.destroyed||a!==this.initGeneration){E.destroy();return}this.preview=E,(G=(w=this.preview).setRenderQuality)==null||G.call(w,S.renderQuality,S.renderScale),r.setPhaseKey("loading.loadingModel");let T=await lo(this.app,g.effectivePath);if(this.destroyed||a!==this.initGeneration){(O=this.preview)==null||O.destroy(),this.preview=null;return}let R=await this.preview.loadModel(T,g.effectiveExt,B=>lo(this.app,B),g.effectivePath);if(this.destroyed||a!==this.initGeneration){(N=this.preview)==null||N.destroy(),this.preview=null;return}if(m(t,R),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let B=this.preview.getAnnotationProvider();B.canvas&&(this.annotationMgr=new h(B,t,"readonly",v,void 0,u(this.app),void 0,{app:this.app,previewMode:this.annotationPreviewMode,displayMode:this.annotationDisplayMode}))}r.setProgress(100),r.hide()})}catch(l){if(this.destroyed||a!==this.initGeneration)return;(o=this.preview)==null||o.destroy(),this.preview=null,r.hide(),s.remove(),t.replaceChildren();let[{describeModelLoadFailure:c,isMissingConverterError:f},{renderModelLoadFailure:d}]=await Promise.all([Promise.resolve().then(()=>(Op(),PZ)),Promise.resolve().then(()=>(Uv(),Vw))]),h=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",h.message):console.error("[AI3D] Live Preview failed:",l),d(t,h)}finally{r.hide()}}destroy(){var t;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,this.preview&&(this.preview.destroy(),this.preview=null),this.initStarted=!1,this.viewportReady=!1}stopReadyWatch(){var t;(t=this.readyObs)==null||t.disconnect(),this.readyObs=null}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}ignoreEvent(){return!0}}});var Q$={};Be(Q$,{registerLazyLivePreviewExtension:()=>dTe});function fTe(){return HM!=null||(HM=Promise.resolve().then(()=>(j$(),K$))),HM}function q$(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v){var T,R;let x="state"in n?n.state.doc:n.doc,S=[];if(!GM(x))return S;let E=0;for(let M of x.iterLines()){let y=E+M.length+1;if(!M.includes("![[")){E=y;continue}let C=0;for(;C0&&M[L-1]==="\\"){C=L+"![[".length;continue}let w=M.indexOf("]]",L+"![[".length);if(w===-1)break;let O=M.slice(L+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(T=N.split(".").pop())==null?void 0:T.toLowerCase())!=null?R:"";if(!Ya(B)){C=w+2;continue}let V=400,J=300;if(O.length>1){let te=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);te&&(V=parseInt(te[1],10),J=parseInt(te[2],10))}let Q=g.resolve(N);if(!Q){C=w+2;continue}S.push(zp.Decoration.replace({widget:new BF(e,Q,V,J,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,v),block:!0}).range(E+L,E+w+2)),C=w+2}E=y}return S}function Z$(n){return n.length===0?Wh.RangeSet.empty:Wh.RangeSet.of(n,!0)}function dTe(n,e,t,i,r){let s=W$(n,cf),a=()=>s.clear(),o=[n.vault.on("create",a),n.vault.on("delete",a),n.vault.on("rename",a)];r==null||r(()=>{for(let c of o)n.vault.offref(c)});let l=Wh.StateField.define({create(c){let f=e(),d=q$(c,n,f.autoRotateDefault,f.enabledConverterIds,f.freecadCommand,f.obj2gltfCommand,f.fbx2gltfCommand,f.freecadcmdCommand,f.preferObj2gltfForObj,f.preferFbx2gltfForFbx,f.annotationPreviewMode,f.annotationDisplayMode,f.previewRendererRollout,f.useThreeRenderer,f.renderQuality,f.renderScale,t,s,i);return Z$(d)},update(c,f){if(f.docChanged){if(!kM(f))return c.map(f.changes);let d=e(),h=q$(f.state,n,d.autoRotateDefault,d.enabledConverterIds,d.freecadCommand,d.obj2gltfCommand,d.fbx2gltfCommand,d.freecadcmdCommand,d.preferObj2gltfForObj,d.preferFbx2gltfForFbx,d.annotationPreviewMode,d.annotationDisplayMode,d.previewRendererRollout,d.useThreeRenderer,d.renderQuality,d.renderScale,t,s,i);return Z$(h)}return c.map(f.changes)},provide:c=>zp.EditorView.decorations.from(c)});return[Wh.Prec.highest(l)]}var zp,Wh,HM,BF,$$=I(()=>{"use strict";zp=require("@codemirror/view"),Wh=require("@codemirror/state");Ka();Ps();wF();H$();HM=null;BF=class extends zp.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.renderQuality=v;this.renderScale=x;this.convertedAssetCache=S;this.getAnnotations=E;this.mountedWidget=null;this.mountedDom=null;this.viewportObs=null;this.destroyed=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=activeDocument.createElement("div");return t.className="ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy",t.setAttribute("contenteditable","false"),t.style.setProperty("--ai3d-embed-height",`${this.height}px`),this.watchViewport(t),t}destroy(){var t,i;this.destroyed=!0,this.stopViewportWatch(),(t=this.mountedWidget)==null||t.destroy(),this.mountedWidget=null,(i=this.mountedDom)==null||i.remove(),this.mountedDom=null}ignoreEvent(){return!0}watchViewport(t){if(typeof IntersectionObserver=="undefined"){this.mount(t);return}this.viewportObs=new IntersectionObserver(i=>{this.destroyed||this.mountedWidget||i.some(r=>r.isIntersecting||r.intersectionRatio>0)&&(this.stopViewportWatch(),this.mount(t))},{rootMargin:"240px"}),this.viewportObs.observe(t)}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}async mount(t){let i;try{i=await fTe()}catch(a){console.warn("[AI3D] Failed to load Live Preview widget runtime:",a),!this.destroyed&&t.isConnected&&(t.textContent="AI3D live preview failed to load.");return}let r=new i.ModelEmbedWidget(this.app,this.modelPath,this.width,this.height,this.autoRotate,this.enabledConverterIds,this.freecadCommand,this.obj2gltfCommand,this.fbx2gltfCommand,this.freecadcmdCommand,this.preferObj2gltfForObj,this.preferFbx2gltfForFbx,this.annotationPreviewMode,this.annotationDisplayMode,this.previewRendererRollout,this.useThreeRenderer,this.renderQuality,this.renderScale,this.convertedAssetCache,this.getAnnotations);if(this.destroyed||!t.isConnected){r.destroy();return}let s=r.toDOM();if(this.destroyed||!t.isConnected){r.destroy();return}this.mountedWidget=r,this.mountedDom=s,t.replaceWith(s)}}});var eJ={};Be(eJ,{ModelFileSuggestModal:()=>UF});var J$,UF,tJ=I(()=>{"use strict";J$=require("obsidian");Ka();vn();UF=class extends J$.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(j("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return Ya(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function iJ(n,e){return n==="three"?{backend:n,supportedFormats:hTe,fallbackRole:"Primary single-model preview path",capabilities:[...e],colorPipeline:"sRGB output, no tone mapping, PBR material preservation",fidelityNotes:["Direct GLB/GLTF/STL/PLY/OBJ are expected to preserve geometry scale and material color intent.","Workbench, grid, and SPLAT routes still keep Babylon fallback coverage."]}:{backend:n,supportedFormats:uTe,fallbackRole:"Capability and compatibility backend",capabilities:[...e],colorPipeline:"Babylon material pipeline with conservative fallback behavior",fidelityNotes:["3dgrid, conservative workbench, SPLAT, and converted workbench inputs remain on Babylon.","Babylon remains the rollback path when Three direct rendering is disabled."]}}function rJ(n){return n.backend==="three"?iJ("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","workbench"]):iJ("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","workbench"])}function nJ(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var hTe,uTe,sJ=I(()=>{"use strict";Lp();hTe=["glb","gltf","stl","ply","obj"],uTe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var oJ={};Be(oJ,{buildDiagnosticsReport:()=>xTe});function zM(n){return typeof n=="boolean"?n?"on":"off":typeof n=="number"?Number.isFinite(n)?String(n):"unknown":typeof n=="string"?n.length>0?n:"empty":"unknown"}function mTe(n){var i;let e=(i=n.split(/[\\/]/).pop())!=null?i:n,t=e.lastIndexOf(".");return t<=0||t===e.length-1?"":`.${e.slice(t+1).toLowerCase()}`}function Xp(n,e,t){if(!n)return t;if(e)return n;let i=mTe(n);return i?``:""}function qv(n,e){return n?`set (${Xp(n,e,"not set")})`:"not set"}function pTe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${zM(e.sendGeometrySummaryToRemote)}`,`preview refs ${zM(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function _Te(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function gTe(n){let e=n.lastKnowledgeGeneration;return e?e.status==="pending"?"pending or interrupted; rerun generation to replace the marker":e.status==="failed"?"failed; inspect console details and rerun after fixing the issue":e.warningCount>0?"completed with warnings":"none":"none"}function TTe(n){let e=new Set(n.enabledConverterIds);return vTe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":ETe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function ATe(n){let e=n.convertedAssetRecords;if(e.length===0)return"none";let t=new Set(e.map(r=>`${r.sourcePath}:${r.sourceExt}:${r.targetExt}`)).size,i=e.filter(r=>r.warnings.length>0).length;return[`${e.length} record(s) for ${t} source(s)`,"validated before reuse for cache version, converter identity, output presence, and source freshness",i>0?`${i} record(s) carry warning text`:""].filter(Boolean).join("; ")}function xTe(n){var c,f,d,h,u,m,_,p,g;let{manifest:e,state:t}=n,i=t.settings,r=_Te(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?Kh({ext:(c=t.currentModelPath.split(".").pop())!=null?c:"",annotationMode:r!=null&&r.annotations.length?"readonly":"none",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:i.experimentalThreeWorkbench,rendererRollout:i.previewRendererRollout,useThreeRenderer:i.useThreeRenderer}):null,o=a?rJ(a):null,l=t.lastKnowledgeGeneration;return["# AI Model Workbench Diagnostics","",`Generated: ${(f=n.generatedAt)!=null?f:new Date().toISOString()}`,"","## Runtime","",`- Plugin version: ${e.version}`,`- Minimum Obsidian version: ${e.minAppVersion}`,`- Obsidian API version: ${aJ.apiVersion}`,`- Platform: ${gr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${zM(i.useThreeRenderer)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${zM(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?nJ(o):"no current model"}`,`- Route color pipeline: ${(d=o==null?void 0:o.colorPipeline)!=null?d:"no current model"}`,`- Render quality: ${i.renderQuality}`,`- Render scale: ${i.renderScale}`,"","## Current Model","",`- Path: ${Xp(t.currentModelPath,s,"none")}`,`- Preview summary: ${t.modelPreview?`${t.modelPreview.meshCount} mesh(es), ${t.modelPreview.triangleCount.toLocaleString()} triangle(s), ${t.modelPreview.materialCount} material(s)`:"not captured"}`,`- Annotation count: ${(h=r==null?void 0:r.annotations.length)!=null?h:0}`,`- Registered part candidates: ${(m=(u=r==null?void 0:r.registeredParts)==null?void 0:u.length)!=null?m:0}`,`- Report note: ${qv(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${qv(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${qv(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${pTe(t)}`,`- Report folder: ${Xp(i.reportFolder,s,"empty")}`,`- Part notes folder: ${Xp(i.partFolder,s,"empty")}`,`- Snapshot folder: ${Xp(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${gTe(t)}`,`- Last generated model: ${Xp(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${qv(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${qv(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(_=l==null?void 0:l.partNoteCount)!=null?_:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(g=l==null?void 0:l.warningCount)!=null?g:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${TTe(i)}`,`- Conversion cache status: ${ATe(t)}`,`- Conversion timeout: ${STe}ms outer budget`,"- Converter safety: missing converters report their converter id; unsafe configured commands are rejected before execution; command paths are redacted.",`- Supported direct/model extensions: ${Cl().join(", ")}`,"","## Notes","","- Draft service URL and command paths are intentionally omitted from this report.",s?"- Vault-relative model and note paths are included because includeVaultPaths was requested.":"- Vault-relative model, report, index, and folder paths are redacted by default.","- Attach this report with the model format, console error, and reproduction steps when filing a bug.",""].join(` -`)}var aJ,vTe,ETe,STe,lJ=I(()=>{"use strict";aJ=require("obsidian");Ka();sJ();aE();sa();vTe=[{id:"freecad",label:"Python/CadQuery",settingsKey:"freecadCommand"},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand"},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand"},{id:"assimp",label:"Python/trimesh",settingsKey:"assimpCommand"},{id:"freecadcmd",label:"FreeCADCmd",settingsKey:"freecadcmdCommand"}],ETe=/[;|&<>$`\r\n\t]/,STe=3e5});var ITe={};Be(ITe,{default:()=>XM});module.exports=SJ(ITe);var _s=require("obsidian");qM();Ka();i0();var l$=require("obsidian");vn();sE();var FM=class extends l$.FileView{constructor(t,i,r,s){super(t);this.getSettings=i;this.convertedAssetCache=r;this.ps=s;this.delegate=null;this.delegatePromise=null;this.closed=!1}getViewType(){return _d}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&await this.onLoadFile(this.file)}async onLoadFile(t){this.closed=!1;let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0;let t=this.delegate;this.delegate=null,await(t==null?void 0:t.onClose())}async ensureDelegate(){return this.delegate?this.delegate:(this.delegatePromise||(this.delegatePromise=this.loadDelegate()),this.delegatePromise)}async loadDelegate(){this.contentEl.empty(),this.contentEl.addClass("ai3d-direct-view"),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:j("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(o$(),a$)),i=new t(this.leaf,this.getSettings,this.convertedAssetCache,this.ps);return i.contentEl=this.contentEl,i.file=this.file,this.delegatePromise=null,this.closed?(await i.onClose(),null):(this.delegate=i,i)}};sE();var d$=require("obsidian"),BM=class extends d$.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.delegate=null;this.delegatePromise=null}display(){this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:"Loading AI Model Workbench settings..."}),this.ensureDelegate().then(t=>{t.containerEl=this.containerEl,t.display()}).catch(t=>{this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:`Failed to load AI Model Workbench settings: ${String(t)}`})})}hide(){var t;(t=this.delegate)==null||t.hide()}ensureDelegate(){var t;return this.delegate?Promise.resolve(this.delegate):((t=this.delegatePromise)!=null||(this.delegatePromise=Promise.resolve().then(()=>(f$(),c$)).then(({AI3DSettingTab:i})=>{let r=new i(this.app,this.plugin);return this.delegate=r,this.delegatePromise=null,r}).catch(i=>{throw this.delegatePromise=null,i})),this.delegatePromise)}};Mn();vn();bF();sa();var VF=Hi("main"),RTe=700,bTe=2500;function Zv(n,e){return()=>{n().catch(t=>{VF.error(`Command ${e} failed`,{error:String(t)}),new _s.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function MTe(n){let e=!1,t=null,i=null,r=window,s=()=>{var o;t!==null&&(window.clearTimeout(t),t=null),i!==null&&((o=r.cancelIdleCallback)==null||o.call(r,i),i=null)},a=()=>{e||(s(),n())};return t=window.setTimeout(()=>{t=null,r.requestIdleCallback?i=r.requestIdleCallback(a,{timeout:bTe}):t=window.setTimeout(a,0)},RTe),()=>{e=!0,s()}}var XM=class extends _s.Plugin{constructor(){super(...arguments);this.unloaded=!1;this.headingPinObserverStarted=!1;this.headingLinkedProfilesRef=null;this.headingLinkedProfilesResult=!1}getSettings(){return this.ps.store.getState().settings}updateSettings(t){this.ps.updateSettings(t),Ow(this.getSettings().logLevel),Jp(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=s1(this),await this.ps.load(),this.convertedAssetCache=jF(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),Ow(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}Jp(this.getSettings().locale),this.addRibbonIcon("box",j("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:j("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:j("main.commandGenerateNote"),callback:Zv(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:j("main.commandOpenKnowledgeIndex"),callback:Zv(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:j("main.commandClearConversionCache"),callback:Zv(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:j("main.commandCheckConverters"),callback:Zv(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:j("main.commandCopyDiagnostics"),callback:Zv(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new BM(this.app,this)),this.registerView(_d,l=>new FM(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Cl(),_d);let t=l=>{var c,f;return(f=(c=this.ps.store.getState().modelAssetProfiles[l])==null?void 0:c.annotations)!=null?f:[]},{registerLazyCodeBlockProcessor:i,registerLazyGridCodeBlockProcessor:r}=await Promise.resolve().then(()=>(B$(),F$)),s=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t);this.registerMarkdownCodeBlockProcessor(s.id,s.handler);let a=r(this.app,()=>this.getSettings(),this.convertedAssetCache);this.registerMarkdownCodeBlockProcessor(a.id,a.handler),this.register(this.ps.store.subscribe(()=>{this.unloaded||this.headingPinObserverStarted||!this.hasHeadingLinkedAnnotations()||this.startHeadingPinObserver()})),this.app.workspace.onLayoutReady(()=>{this.unloaded||this.register(MTe(()=>{this.registerLivePreviewExtension(t),this.hasHeadingLinkedAnnotations()&&this.startHeadingPinObserver()}))})}onunload(){this.unloaded=!0,this.ps.dispose()}async startHeadingPinObserver(){if(!(this.unloaded||this.headingPinObserverStarted)){this.headingPinObserverStarted=!0;try{let{setupHeadingPinObserver:t}=await Promise.resolve().then(()=>(V$(),U$));if(this.unloaded)return;t({subscribeStore:i=>this.ps.store.subscribe(i),getModelAssetProfiles:()=>this.ps.store.getState().modelAssetProfiles,registerCleanup:i=>this.register(i),onLayoutChange:i=>{this.registerEvent(this.app.workspace.on("layout-change",i))}})}catch(t){this.headingPinObserverStarted=!1,console.warn("[AI3D] Failed to start heading pin observer:",t)}}}hasHeadingLinkedAnnotations(){let t=this.ps.store.getState().modelAssetProfiles;return this.headingLinkedProfilesRef===t?this.headingLinkedProfilesResult:(this.headingLinkedProfilesRef=t,this.headingLinkedProfilesResult=u$(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>($$(),Q$));if(this.unloaded)return;let r=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t,s=>this.register(s));for(let s of r)this.registerEditorExtension(s)}catch(i){console.warn("[AI3D] Failed to register Live Preview model embeds:",i)}}importModel(){this.showImportModelModal().catch(t=>{VF.error("Failed to open import modal",{error:String(t)}),new _s.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(tJ(),eJ));new t(this.app,i=>{let r=i.extension.toLowerCase();Ya(r)&&this.openModelFile(i)}).open()}async openModelFile(t){this.ps.setCurrentModel(t.path,null),await this.app.workspace.getLeaf(!0).openFile(t,{active:!0})}async generateNote(){let{generateKnowledgeNote:t}=await Promise.resolve().then(()=>(NM(),OM));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new _s.Notice(j("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof _s.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new _s.Notice(qi("workbench.fileNotFound",{path:t}))}resolveKnowledgeIndexPath(){var a,o,l;let t=this.ps.store.getState(),i=t.currentModelPath,r=i?(a=t.modelAssetProfiles[i])==null?void 0:a.knowledgeIndexPath:void 0;return r||((o=t.lastKnowledgeGeneration)!=null&&o.knowledgeIndexPath?t.lastKnowledgeGeneration.knowledgeIndexPath:(l=Object.values(t.modelAssetProfiles).filter(c=>!!c.knowledgeIndexPath).sort((c,f)=>Date.parse(f.updatedAt)-Date.parse(c.updatedAt))[0])==null?void 0:l.knowledgeIndexPath)}clearConversionCache(){this.convertedAssetCache.clear(),new _s.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(gr()){new _s.Notice(j("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(hd(),$w)),i=await t(this.getSettings()),r=i.filter(a=>a.available).map(a=>a.label),s=i.filter(a=>!a.available).map(a=>a.label);if(s.length===0){new _s.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new _s.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(lJ(),oJ)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new _s.Notice(j("main.diagnosticsCopied"),8e3)}catch(r){let s=this.getSettings().reportFolder.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()||"Analysis/3D Reports";await this.ensureVaultFolder(s);let a=`AI Model Workbench Diagnostics ${new Date().toISOString().replace(/[:.]/g,"-")}.md`,o=await this.app.vault.create(`${s}/${a}`,i);await this.app.workspace.getLeaf(!0).openFile(o,{active:!0}),new _s.Notice(j("main.diagnosticsCopyFailed"),1e4)}}async ensureVaultFolder(t){let i="";for(let r of t.split("/").filter(Boolean))i=i?`${i}/${r}`:r,this.app.vault.getAbstractFileByPath(i)||await this.app.vault.createFolder(i).catch(s=>{VF.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; +`)}async function FSe(n){let e=typeof performance!="undefined"?performance.now():Date.now(),t=n.app.vault.getAbstractFileByPath(n.indexPath),i=null;if(t instanceof Il.TFile){let r=await n.app.vault.read(t),s=RF(n);await n.app.vault.modify(t,t$(r,s)),i=t}else i=await $Q(n.app,n.indexPath,i$(n));return i&&(n.analysis.knowledgeIndexPath=i.path),n.analysis.pipeline.push({stage:"index",durationMs:Math.max(0,Math.round((typeof performance!="undefined"?performance.now():Date.now())-e)),status:i?"success":"failed"}),i}async function BSe(n,e,t={}){var o,l,c,f,d,h,u,m,_,p,g;if(pF!==null)return;let i;pF=new Promise(v=>{i=v});let r=null,s=null,a=0;try{let v=e.store.getState(),x=v.currentModelPath;if(!x)return;let S=v.modelAssetProfiles[x],E=v.modelPreview,T=tn(x)||"model",R=v.settings.reportFolder,M=`${R}/${T} Report.md`,y=`${R}/${T} Analysis.json`,C=`${R}/${T} Index.md`,L=((o=v.lastKnowledgeGeneration)==null?void 0:o.status)==="pending"?`Previous knowledge generation for ${v.lastKnowledgeGeneration.modelPath} did not complete. This run can replace the pending marker if it finishes.`:null;L&&new Il.Notice(L),r=uF({modelPath:x,reportNotePath:M,analysisSidecarPath:y,knowledgeIndexPath:C,status:"pending"}),e.setLastKnowledgeGeneration(r);let w=(f=(c=(l=t.preview)==null?void 0:l.getModelEvidence)==null?void 0:c.call(l))!=null?f:null,G=await ySe(n,t.preview,v.settings.previewFolder,T);a=G.paths.length;let O=await e$(n,v.modelAssetProfiles,x);s=fF({modelPath:x,profile:S,preview:E,evidence:w,previewImages:G.paths,registeredParts:O}),L&&(s.warnings=[...s.warnings,L]);let N=s;G.warning&&(N.warnings=[...N.warnings,G.warning],N.draftingInput&&(N.draftingInput={...N.draftingInput,evidence:{...N.draftingInput.evidence,warnings:[...N.draftingInput.evidence.warnings,G.warning]}})),N.localDraft=ZQ({baseName:T,sourcePath:x,profile:S,preview:E,analysis:N}),N.pipeline.push({stage:"draft",durationMs:0,status:"success"}),await wSe({app:n,partFolder:v.settings.partFolder,baseName:T,notePath:M,sourcePath:x,analysis:N}),N.draftingInput&&(N.draftingInput={...N.draftingInput,partCandidates:N.draftingInput.partCandidates.map(X=>{let Y=N.parts.find(ve=>ve.partId===X.partId);return Y!=null&&Y.notePath?{...X,notePath:Y.notePath}:X}),annotationLinks:[...(d=N.annotationLinks)!=null?d:[]]});let B=NQ(v.settings,N.draftingInput,Uh);if(B.enabled)try{let X=await wQ(B);X?(N.remoteDraft=X,N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"success"})):N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"})}catch(X){let Y=X instanceof Error?X.message:String(X);N.warnings=[...N.warnings,`Remote draft failed: ${Y}`],N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"failed"})}else N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"});if(await AF(n,R),!await FSe({app:n,baseName:T,notePath:M,sourcePath:x,analysisSidecarPath:y,indexPath:C,analysis:N,preview:E,profile:S}))throw new Error(`Unable to write knowledge index: ${C}`);let J=QQ({baseName:T,notePath:M,sourcePath:x,profile:S,preview:E,analysis:N,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath});if(!await UQ(n,y,`${JSON.stringify(N,null,2)} +`))throw new Error(`Unable to write analysis sidecar: ${y}`);let te=await UQ(n,M,J);if(!te)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(x,X=>({analysisVersion:Uh,registeredParts:N.parts.map(xF),reportNotePath:te.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:G.paths})),e.setLastKnowledgeGeneration(uF({modelPath:x,reportNotePath:te.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(u=(h=N.partNotePaths)==null?void 0:h.length)!=null?u:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(te,{active:!0}),new Il.Notice(`Knowledge note updated: ${te.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(uF({...r,partNoteCount:(_=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?_:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(g=s==null?void 0:s.warnings.length)!=null?g:0)})),v}finally{i(),pF=null}}var Il,sSe,HQ,aSe,zQ,_F,pF,BM=I(()=>{"use strict";Il=require("obsidian");GT();wT();Mn();Ps();iE();rE();wM();FQ();sSe=Hi("knowledge-note"),HQ=8,aSe=256,zQ="",_F="";pF=null});var r$={};Be(r$,{renderRegisteredPartMatchRow:()=>VSe});function USe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function VSe(n,e,t){var o,l;let i=n.createDiv({cls:"ai3d-direct-workbench-match"}),r=i.createDiv({cls:"ai3d-direct-workbench-match-main"});r.createDiv({cls:"ai3d-direct-workbench-match-title",text:e}),r.createDiv({cls:"ai3d-direct-workbench-match-source",text:t.sourcePartName||t.sourcePartId}),t.sourceModelPath&&r.createDiv({cls:"ai3d-direct-workbench-match-model",text:qi("directWorkbench.registeredSourceModel",{model:USe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?j("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?j("directWorkbench.registeredTargetSourceModel"):j("directWorkbench.registeredTargetUnavailable")}),t.reasons.length>0&&r.createDiv({cls:"ai3d-direct-workbench-match-reasons",text:t.reasons.slice(0,2).join(" / ")});let s=i.createDiv({cls:"ai3d-direct-workbench-match-side"});s.createDiv({cls:"ai3d-direct-workbench-match-score",text:`${Math.round(t.matchScore*100)}%`});let a=s.createEl("button",{cls:"ai3d-direct-workbench-action ai3d-direct-workbench-match-open",text:t.sourceNotePath?j("directWorkbench.registeredOpenNote"):j("directWorkbench.registeredOpenModel"),attr:{type:"button","data-ai3d-action":"open-registered-part","data-ai3d-target-path":(l=(o=t.sourceNotePath)!=null?o:t.sourceModelPath)!=null?l:""}});return a.disabled=!t.sourceNotePath&&!t.sourceModelPath,i}var n$=I(()=>{"use strict";vn()});var d$={};Be(d$,{DirectModelView:()=>bF});function qSe(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function o$(n){var i,r,s;let e=(r=(i=n.occurrenceId)!=null?i:n.componentId)!=null?r:n.partNumber;if(e!=null&&e.trim())return`component:${e.trim().toLowerCase()}`;let t=n.meshRefs.map(a=>a.trim().toLowerCase()).filter(Boolean).sort().join("|");return`${(s=n.source)!=null?s:"mesh"}:${n.name.trim().toLowerCase()}:${t}`}function ZSe(n,e){return n?{...e,notePath:n.notePath,reviewed:n.reviewed,observations:n.reviewed||n.notePath?n.observations:e.observations,inferredFunctions:n.inferredFunctions.length>0?n.inferredFunctions:e.inferredFunctions,knowledgeTags:n.knowledgeTags.length>0?n.knowledgeTags:e.knowledgeTags}:e}function l$(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function QSe(n){return n.length<=s$?n:[...n].sort((e,t)=>{var s,a,o,l;let i=l$(e)-l$(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)}).slice(0,s$)}function c$(n){return{partId:n.partId,assetId:n.assetId,parentPartId:n.parentPartId,name:n.name,source:n.source,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath,category:n.category,meshRefs:n.meshRefs,childCount:n.childCount,materialRefs:n.materialRefs,bbox:n.bbox,center:n.center,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:n.materialName,sourceFormat:n.sourceFormat,effectiveFormat:n.effectiveFormat,loadStrategy:n.loadStrategy,confidence:n.confidence,observations:n.observations,inferredFunctions:n.inferredFunctions,knowledgeTags:n.knowledgeTags,notePath:n.notePath,reviewed:n.reviewed}}function $Se(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(c$))===JSON.stringify(e.map(c$))}function MF(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function JSe(n){let e=MF(n.performanceTier);return e>=2?WSe:e===1?kSe:GSe}function eTe(n){return MF(n.performanceTier)<2&&n.meshCount<=HSe&&n.triangleCount<=zSe}function tTe(n){let e=MF(n.performanceTier);return e>=2?null:e===1?KSe:YSe}function f$(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function iTe(n){return n.parts.length<=a$?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=f$(e)-f$(t);if(i!==0)return i;let r=((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0);return r!==0?r:t.triangleCount-e.triangleCount}).slice(0,a$)}}function rTe(n){return{sourcePath:n.sourcePath,sourceFormat:Fc(n.sourceExt||n.sourcePath),effectiveFormat:Fc(n.ext||n.path),loadStrategy:n.strategy}}function nTe(n,e,t=[]){if(!e&&t.length===0)return n;let i=e!=null?e:n.formatLineage,r=Array.from(new Set([...n.resourceWarnings,...t]));return{...n,formatLineage:i,resourceWarnings:r,parts:n.parts.map(s=>{var a,o,l;return{...s,sourceFormat:(a=s.sourceFormat)!=null?a:i==null?void 0:i.sourceFormat,effectiveFormat:(o=s.effectiveFormat)!=null?o:i==null?void 0:i.effectiveFormat,loadStrategy:(l=s.loadStrategy)!=null?l:i==null?void 0:i.loadStrategy}})}}var Uc,UM,GSe,kSe,WSe,s$,HSe,zSe,a$,XSe,YSe,KSe,jSe,bF,h$=I(()=>{"use strict";Uc=require("obsidian");tM();Uw();hM();kw();Ps();uM();mM();Op();vn();Uv();sa();Mn();rE();pM();YZ();jZ();QZ();aE();EM();s0();UM=Hi("direct-view"),GSe=450,kSe=1200,WSe=1500,s$=256,HSe=500,zSe=15e5,a$=64,XSe=512,YSe=250,KSe=1e3,jSe=".obsidian/ai-model-workbench/converted-assets";bF=class extends Uc.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.escHandler=null;this.workbenchPanel=null;this.workbenchSummary=null;this.workbenchRoute=null;this.workbenchModelPath=null;this.workbenchEvidenceLineage=null;this.workbenchSourceWarnings=[];this.workbenchEvidenceModelPath=null;this.workbenchEvidence=null;this.evidenceRegistrationTimer=null;this.registeredMatchPreviewTimer=null;this.sidebarContent=null;this.getSettings=i,this.convertedAssetCache=r,this.ps=s}getViewType(){return _d}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),this.contentEl.addClass("ai3d-direct-view"),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),await this.loadModel(t)}onClose(){var t,i;return this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.preview)==null||i.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var v,x,S,E,T,R;let i=++this.loadGeneration,r=gr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(v=this.annotationMgr)==null||v.destroy(),this.annotationMgr=null,this.workbenchPanel=null,this.workbenchSummary=null,this.workbenchRoute=null,this.workbenchModelPath=null,this.workbenchEvidenceLineage=null,this.workbenchSourceWarnings=[],this.workbenchEvidenceModelPath=null,this.workbenchEvidence=null,this.sidebarContent=null,(x=this.preview)==null||x.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:c,canvas:f,modeOverlay:d,sidebarContent:h,vHandle:u,workbenchPanel:m}=XZ({contentEl:this.contentEl,filePath:t.path,mobile:r,getPreview:()=>this.preview}),_=null,p=M=>{var y;this.annotationMode=M,r&&M&&(_==null||_.setMobileInteractionMode(!0)),(y=this.annotationMgr)==null||y.hideEditor(),d.classList.toggle("is-hidden",!M)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=M=>{M.key==="Escape"&&this.annotationMode&&p(!1)},activeDocument.addEventListener("keydown",this.escHandler),_=Lv(o,c,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(p(!this.annotationMode),this.annotationMode),M=>{!M&&this.annotationMode&&p(!1)}),this.sidebarContent=h,this.workbenchPanel=m,this.setupResizeHandles(l,u,a,s);let g=Fh(c);try{let M=this.getSettings(),y=(S=oo(this.app,t.path))!=null?S:void 0,C=(E=oo(this.app,jSe))!=null?E:void 0;g.setPhaseKey("loading.preparingModel");let L=await Np({path:t.path,absolutePath:y,preferConversionExts:wp(M),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(CM(),yM));return J(M)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:C});if(i!==this.loadGeneration){new Uc.Notice(j("directWorkbench.modelLoadInterrupted"));return}let w=wv(L);this.workbenchEvidenceLineage=rTe(w),this.workbenchSourceWarnings=[...w.warnings];let G=ZZ(M,w),O=await Vp(this.app,w.path,M);_==null||_.syncCapabilities(),g.setPhaseKey("loading.loadingModel");let N=lo(this.app,w.path);N.catch(()=>{});let B=await this.createPreviewWithFallback(f,N,w,G,t.path,O);if(i!==this.loadGeneration){B.preview.destroy(),new Uc.Notice(j("directWorkbench.modelLoadInterrupted"));return}this.preview=B.preview,c.dataset.ai3dBackend=B.route.backend,c.dataset.ai3dRouteReason=B.route.reason,_==null||_.syncCapabilities();let V=B.summary;this.applyLargeModelRenderBudget(B.preview,M,V),Bv(c,V),this.workbenchPanel=m,this.workbenchSummary=V,this.workbenchRoute=B.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(m,V,B.route,t.path),this.renderSidebarContent(t.path,V),this.ps.setCurrentModel(t.path,V),UM.info("direct view model loaded",{path:t.path,effectivePath:w.path,effectiveExt:w.ext,strategy:w.strategy,backend:B.route.backend,routeReason:B.route.reason,meshCount:V.meshCount,triangleCount:V.triangleCount}),g.setProgress(100),g.hide(),this.setupAnnotationManager(t.path,i,c,_),this.scheduleDeferredEvidenceRegistration(t.path,i,V)}catch(M){if(i!==this.loadGeneration)return;g.hide(),(T=this.preview)==null||T.destroy(),this.preview=null,c.replaceChildren(),(R=this.workbenchPanel)==null||R.addClass("is-hidden");let y=Nv(M);Ov(M)?console.warn("[AI3D] Direct view blocked by converter settings:",y.message):console.error("[AI3D] Direct view failed:",M),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),Fv(c,y)}finally{g.hide()}}async setupAnnotationManager(t,i,r,s){var l;let a=this.preview;if(!a)return;let o=a.getAnnotationProvider();if(o.canvas)try{let[{AnnotationManager:c},{createHeadingSearch:f,createNoteReader:d}]=await Promise.all([Promise.resolve().then(()=>(DM(),PM)),Promise.resolve().then(()=>(OM(),LM))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let h=this.ps.store.getState().modelAssetProfiles[t],u=(l=h==null?void 0:h.annotations)!=null?l:[],m=d(this.app),_=f(this.app);this.annotationMgr=new c(o,r,"edit",u,p=>{this.ps.updateModelProfile(t,g=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,_,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(u.length),a.onPick(p=>{var S,E;if(!this.annotationMode||!this.annotationMgr)return;let g=p.screenX,v=p.screenY,x=(E=(S=this.preview)==null?void 0:S.getPickWorldPoint(p))!=null?E:null;x&&this.annotationMgr.showEditor(g,v,x)})}catch(c){console.warn("[AI3D] Direct view annotation runtime failed to load:",c)}}async registerModelPartsFromEvidence(t,i){var f,d;if(!(i!=null&&i.parts.length))return;let{buildPartRecordsFromEvidence:r}=await Promise.resolve().then(()=>(wM(),dF)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:n0(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(h=>[o$(h),h])),c=QSe(s.map(h=>ZSe(l.get(o$(h)),h))).map(Yh);$Se(o.registeredParts,c)||this.ps.updateModelProfile(t,h=>({registeredParts:c}))}clearDeferredEvidenceRegistration(){this.evidenceRegistrationTimer!==null&&(window.clearTimeout(this.evidenceRegistrationTimer),this.evidenceRegistrationTimer=null)}clearRegisteredMatchPreview(){this.registeredMatchPreviewTimer!==null&&(window.clearTimeout(this.registeredMatchPreviewTimer),this.registeredMatchPreviewTimer=null)}scheduleDeferredEvidenceRegistration(t,i,r){if(this.clearDeferredEvidenceRegistration(),!eTe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),UM.info("skip automatic evidence capture for very large model",{modelPath:t,performanceTier:r.performanceTier,meshCount:r.meshCount,triangleCount:r.triangleCount});return}this.evidenceRegistrationTimer=window.setTimeout(()=>{this.evidenceRegistrationTimer=null,!(i!==this.loadGeneration||this.workbenchModelPath!==t)&&(async()=>{let s=this.getCurrentModelEvidence();await this.registerModelPartsFromEvidence(t,s),i===this.loadGeneration&&this.workbenchModelPath===t&&this.refreshWorkbenchPanel()})().catch(s=>{console.warn("[AI3D] Deferred model evidence capture failed:",s)})},JSe(r))}getCurrentModelEvidence(){var s,a,o;let t=this.workbenchModelPath;if(t&&this.workbenchEvidenceModelPath===t)return this.workbenchEvidence;let i=(o=(a=(s=this.preview)==null?void 0:s.getModelEvidence)==null?void 0:a.call(s))!=null?o:null,r=i?nTe(i,this.workbenchEvidenceLineage,this.workbenchSourceWarnings):null;return t&&(this.workbenchEvidenceModelPath=t,this.workbenchEvidence=r),r}getCachedModelEvidence(t){return this.workbenchEvidenceModelPath===t?this.workbenchEvidence:null}createKnowledgePreviewAdapter(){return this.preview?{captureSnapshot:()=>{var t,i;return(i=(t=this.preview)==null?void 0:t.captureSnapshot())!=null?i:null},getModelEvidence:()=>this.getCurrentModelEvidence()}:null}renderWorkbenchPanel(t,i,r,s){var a,o;KZ({panel:t,summary:i,route:r,registeredPartCount:(o=(a=this.ps.store.getState().modelAssetProfiles[s])==null?void 0:a.registeredParts)==null?void 0:o.length})}renderSidebarContent(t,i){this.sidebarContent&&(this.clearRegisteredMatchPreview(),this.sidebarContent.empty(),this.renderKnowledgeControls(this.sidebarContent,t),this.renderRegisteredPartMatches(this.sidebarContent,t,i))}refreshWorkbenchPanel(){!this.workbenchPanel||!this.workbenchSummary||!this.workbenchRoute||!this.workbenchModelPath||(this.renderWorkbenchPanel(this.workbenchPanel,this.workbenchSummary,this.workbenchRoute,this.workbenchModelPath),this.renderSidebarContent(this.workbenchModelPath,this.workbenchSummary))}setupResizeHandles(t,i,r,s){let a=(c,f,d)=>{let h=0,u=0,m=p=>{f(p.clientX-h,p.clientY-u),h=p.clientX,u=p.clientY},_=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",_),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),h=p.clientX,u=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",_)})},o=200;a(t,c=>{o=Math.max(48,Math.min(400,o-c)),r.style.gridTemplateColumns=`1fr 4px ${o}px`},()=>{});let l=220;a(i,(c,f)=>{l=Math.max(120,Math.min(500,l-f)),s.style.gridTemplateRows=`1fr 4px ${l}px`},()=>{})}renderKnowledgeControls(t,i){let r=this.ps.store.getState().modelAssetProfiles[i],s=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-knowledge"});s.createDiv({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?j("workbench.indexReady"):r!=null&&r.reportNotePath?j("workbench.noteReady"):j("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(BM(),FM)).then(({generateKnowledgeNote:f})=>f(this.app,this.ps,{preview:this.createKnowledgePreviewAdapter()})).catch(f=>{console.error("[AI3D] Generate knowledge note failed:",f)}).finally(()=>{o.disabled=!1,this.refreshWorkbenchPanel()})});let l=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})})}renderRegisteredPartMatches(t,i,r){let s=this.loadGeneration,a=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-registered"}),o=a.createDiv({cls:"ai3d-direct-workbench-control-head"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:j("directWorkbench.registeredLoading")}),c=a.createDiv({cls:"ai3d-direct-workbench-registered-body"}),f=m=>{l.setText(""),c.empty(),c.createDiv({cls:"ai3d-direct-workbench-empty",text:j(m)})},d=this.getCachedModelEvidence(i),h=d?iTe(d):null;if(!(h!=null&&h.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:j("directWorkbench.registeredLoading")});return}let u=tTe(r);if(u===null){f("directWorkbench.registeredUnavailable");return}this.registeredMatchPreviewTimer=window.setTimeout(()=>{this.registeredMatchPreviewTimer=null,!(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)&&Promise.all([Promise.resolve().then(()=>(BM(),FM)),Promise.resolve().then(()=>(wM(),dF)),Promise.resolve().then(()=>(n$(),r$))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:_},{renderRegisteredPartMatchRow:p}])=>{var R;let g=this.ps.store.getState(),v=await m(this.app,g.modelAssetProfiles,i,{includeSidecars:!1,maxParts:XSe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let x=this.ps.store.getState().modelAssetProfiles[i],E=_({modelPath:i,profile:x,preview:r,evidence:h,registeredParts:v}).parts.filter(M=>{var y;return(y=M.registeredMatches)==null?void 0:y.length}).sort((M,y)=>{var C,L,w,G,O,N;return((w=(L=(C=y.registeredMatches)==null?void 0:C[0])==null?void 0:L.matchScore)!=null?w:0)-((N=(O=(G=M.registeredMatches)==null?void 0:G[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(E.length===0){f("directWorkbench.registeredEmpty");return}l.setText(qi("directWorkbench.registeredCount",{count:String(E.length)})),c.empty();let T=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of E){let y=(R=M.registeredMatches)==null?void 0:R[0];if(!y)continue;let L=p(T,M.name,y).querySelector("[data-ai3d-action='open-registered-part']");L instanceof HTMLButtonElement&&L.addEventListener("click",()=>{let w=L.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let G=this.app.vault.getAbstractFileByPath(w);G instanceof Uc.TFile&&this.app.workspace.getLeaf(!0).openFile(G,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},u)}async createPreviewWithFallback(t,i,r,s,a,o){let l=await Cp(UM,{surface:"direct-view",modelPath:a},t,s);this.applyRenderBudget(l.preview,o);let c;try{c=await i}catch(f){throw l.preview.destroy(),f}try{let f=await l.preview.loadModel(c,r.ext,d=>lo(this.app,d),r.path);return{preview:l.preview,summary:f,route:l.route}}catch(f){if(l.preview.destroy(),l.route.backend!=="three"||!s.requireWorkbenchFeatures||!s.allowWorkbenchFeaturesOnThree)throw f;console.warn("[AI3D] Experimental Three workbench failed; falling back to Babylon:",f);let d={...s,allowWorkbenchFeaturesOnThree:!1},h=await Cp(UM,{surface:"direct-view-fallback",modelPath:a},t,d);this.applyRenderBudget(h.preview,o);try{let u=await h.preview.loadModel(c,r.ext,m=>lo(this.app,m),r.path);return{preview:h.preview,summary:u,route:h.route}}catch(u){throw h.preview.destroy(),qSe(f)?f:u}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=$Z(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var m$={};Be(m$,{AI3DSettingTab:()=>yF});function sTe(){switch(IF==null?void 0:IF.platform){case"win32":return{python:"Path to python executable",freecad:"Path to FreeCADCmd.exe",obj2gltf:"Path to obj2gltf.cmd",fbx2gltf:"Path to FBX2glTF.exe"};case"darwin":return{python:"Path to python3",freecad:"Path to FreeCADCmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};case"linux":return{python:"Path to python3",freecad:"Path to freecadcmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};default:return{python:"Path to python executable",freecad:"Path to FreeCAD command",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"}}}var jt,IF,yF,p$=I(()=>{"use strict";jt=require("obsidian");e0();vn();sa();Qi();IF=Wu();yF=class extends jt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),Jp(this.plugin.getSettings().locale),this.diagnosticsEl=null,this.addTitle(t),this.buildLanguageSection(t),this.buildFoldersSection(t),this.buildBehaviorSection(t),this.buildKnowledgeGenerationSection(t),this.buildConvertersSection(t),this.buildPerformanceSection(t)}addTitle(t){new jt.Setting(t).setName(j("settings.title")).setHeading()}createSecondaryMenu(t,i,r){let s=t.createEl("details",{cls:"ai3d-settings-secondary-menu"});s.createEl("summary",{cls:"ai3d-settings-secondary-menu-summary",text:i});let a=s.createDiv({cls:"ai3d-settings-secondary-menu-body"});return a.createEl("p",{cls:"setting-item-description",text:r}),a}resetCommandDiagnostics(){this.diagnosticsEl&&(this.diagnosticsRunId++,this.diagnosticsEl.empty(),this.diagnosticsEl.createEl("p",{text:j("settings.diagnostics.idle")}))}buildLanguageSection(t){new jt.Setting(t).setName(j("settings.language")).setHeading(),new jt.Setting(t).setName(j("settings.language")).setDesc(j("settings.language.desc")).addDropdown(i=>i.addOption("en","English").addOption("zh-CN","\u7B80\u4F53\u4E2D\u6587").setValue(this.plugin.getSettings().locale).onChange(r=>{this.plugin.updateSettings({locale:r}),this.display()}))}buildFoldersSection(t){new jt.Setting(t).setName(j("settings.folders")).setHeading(),new jt.Setting(t).setName(j("settings.sourceModelFolder")).setDesc(j("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder(Wc.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new jt.Setting(t).setName(j("settings.reportFolder")).setDesc(j("settings.reportFolder.desc")).addText(i=>i.setPlaceholder(Wc.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new jt.Setting(t).setName(j("settings.partFolder")).setDesc(j("settings.partFolder.desc")).addText(i=>i.setPlaceholder(Wc.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new jt.Setting(t).setName(j("settings.snapshotFolder")).setDesc(j("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder(Wc.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new jt.Setting(t).setName(j("settings.behavior")).setHeading(),new jt.Setting(t).setName(j("settings.autoGenerateKnowledgeNotes")).setDesc(j("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new jt.Setting(t).setName(j("settings.annotationPreviewMode")).setDesc(j("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",j("settings.annotationPreviewMode.plainText")).addOption("markdown",j("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new jt.Setting(t).setName(j("settings.annotationDisplayMode")).setDesc(j("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",j("settings.annotationDisplayMode.snippet")).addOption("surface",j("settings.annotationDisplayMode.surface")).addOption("dot",j("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new jt.Setting(t).setName(j("settings.previewRendererRollout")).setDesc(j("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",j("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",j("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",j("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new jt.Setting(t).setName(j("settings.useThreeRenderer")).setDesc(j("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new jt.Setting(t).setName(j("settings.experimentalThreeWorkbench")).setDesc(j("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new jt.Setting(t).setName(j("settings.autoRotateDefault")).setDesc(j("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new jt.Setting(t).setName(j("settings.snapshotNaming")).setDesc(j("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",j("settings.snapshotNaming.modelName")).addOption("timestamp",j("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new jt.Setting(t).setName(j("settings.logLevel")).setDesc(j("settings.logLevel.desc")).addDropdown(i=>i.addOption("debug","Debug").addOption("info","Info").addOption("warn","Warn").addOption("error","Error").setValue(this.plugin.getSettings().logLevel).onChange(r=>{this.plugin.updateSettings({logLevel:r})}))}buildKnowledgeGenerationSection(t){new jt.Setting(t).setName(j("settings.knowledgeGeneration")).setHeading(),new jt.Setting(t).setName(j("settings.analysisMode")).setDesc(j("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",j("settings.analysisMode.local")).addOption("hybrid",j("settings.analysisMode.hybrid")).addOption("remote",j("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new jt.Setting(t).setName(j("settings.serviceBaseUrl")).setDesc(j("settings.serviceBaseUrl.desc")).addText(i=>i.setPlaceholder("Local draft service URL").setValue(this.plugin.getSettings().serviceBaseUrl).onChange(r=>{this.plugin.updateSettings({serviceBaseUrl:r.trim()})})),new jt.Setting(t).setName(j("settings.sendGeometrySummaryToRemote")).setDesc(j("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new jt.Setting(t).setName(j("settings.sendPreviewImagesToRemote")).setDesc(j("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new jt.Setting(t).setName(j("settings.sendRawModelToRemote")).setDesc(j("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new jt.Setting(t).setName(j("settings.converters")).setHeading(),gr()){t.createEl("p",{cls:"setting-item-description",text:j("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,j("settings.converterMenu"),j("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,j("settings.environmentInspector"),j("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new jt.Setting(t).setName(j("settings.enableCad")).setDesc(j("settings.enableCad.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("freecad");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"freecad"])):a.filter(l=>l!=="freecad");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableObj2gltf")).setDesc(j("settings.enableObj2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("obj2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"obj2gltf"])):a.filter(l=>l!=="obj2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.preferObj2gltf")).setDesc(j("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new jt.Setting(t).setName(j("settings.enableFbx2gltf")).setDesc(j("settings.enableFbx2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("fbx2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"fbx2gltf"])):a.filter(l=>l!=="fbx2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableMesh")).setDesc(j("settings.enableMesh.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("assimp");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"assimp"])):a.filter(l=>l!=="assimp");this.plugin.updateSettings({enabledConverterIds:o})})}),new jt.Setting(t).setName(j("settings.enableSldprt")).setDesc(j("settings.enableSldprt.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("sldprt");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"sldprt"])):a.filter(l=>l!=="sldprt");this.plugin.updateSettings({enabledConverterIds:o})})})}buildConverterPaths(t){let i=sTe();new jt.Setting(t).setName(j("settings.paths")).setHeading(),new jt.Setting(t).setName(j("settings.pythonCmd")).setDesc(j("settings.pythonCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().freecadCommand).onChange(s=>{this.plugin.updateSettings({freecadCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.freecadCmd")).setDesc(j("settings.freecadCmd.desc")).addText(r=>r.setPlaceholder(i.freecad).setValue(this.plugin.getSettings().freecadcmdCommand).onChange(s=>{this.plugin.updateSettings({freecadcmdCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.obj2gltfCmd")).setDesc(j("settings.obj2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.obj2gltf).setValue(this.plugin.getSettings().obj2gltfCommand).onChange(s=>{this.plugin.updateSettings({obj2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.fbx2gltfCmd")).setDesc(j("settings.fbx2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.fbx2gltf).setValue(this.plugin.getSettings().fbx2gltfCommand).onChange(s=>{this.plugin.updateSettings({fbx2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new jt.Setting(t).setName(j("settings.assimpCmd")).setDesc(j("settings.assimpCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().assimpCommand).onChange(s=>{this.plugin.updateSettings({assimpCommand:s.trim()}),this.resetCommandDiagnostics()}))}buildDiagnostics(t){new jt.Setting(t).setName(j("settings.diagnostics")).setDesc(j("settings.diagnostics.desc")).addButton(r=>r.setButtonText(j("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(j("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(j("settings.diagnostics.checkNow")),r.setDisabled(!1),new jt.Notice(j("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new jt.Setting(t).setName(j("settings.performance")).setHeading(),new jt.Setting(t).setName(j("settings.canvasHeight")).setDesc(j("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new jt.Setting(t).setName(j("settings.autoRotateSpeed")).setDesc(j("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new jt.Setting(t).setName(j("settings.renderQuality")).setDesc(j("settings.renderQuality.desc")).addDropdown(i=>i.addOption("low","Low").addOption("medium","Medium").addOption("high","High").setValue(this.plugin.getSettings().renderQuality).onChange(r=>{this.plugin.updateSettings({renderQuality:r})})),new jt.Setting(t).setName(j("settings.renderScale")).setDesc(j("settings.renderScale.desc")).addSlider(i=>i.setLimits(.25,2,.25).setValue(this.plugin.getSettings().renderScale).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({renderScale:r})}))}async renderCommandDiagnostics(t){let i=++this.diagnosticsRunId;t.empty(),t.createEl("p",{text:j("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(hd(),iF)),a=await s(this.plugin.getSettings());if(i===this.diagnosticsRunId){t.empty();for(let o of a)this.renderCommandStatus(t,o,r)}}renderCommandStatus(t,i,r){var o;let s=t.createDiv({cls:"ai3d-settings-status-block"});s.createEl("strong",{text:`${i.label}: ${i.available?j("settings.diagnostics.available"):j("settings.diagnostics.notFound")}`});let a=[`${j("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${j("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${j("settings.diagnostics.resolvedPathLabel")}: ${i.resolvedPath}`:"",i.detail].filter(Boolean);for(let l of a)s.createDiv({text:l});for(let l of(o=i.dependencyChecks)!=null?o:[])this.renderDependencyCheck(s,l)}renderDependencyCheck(t,i){let r=(()=>{switch(i.kind){case"cad-python":return j("settings.diagnostics.cadPythonCheck");case"mesh-python":return j("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return j("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return j("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return j("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?j("settings.diagnostics.selfCheckOk"):j("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${j("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function g$(n){let e=new Map;for(let[t,i]of Object.entries(n))for(let r of i.annotations)if(r.headingRef&&r.id){let s=Ml(r.headingRef);if(!s)continue;let a=e.get(s);a||(a=[],e.set(s,a)),a.push({pinId:r.id,modelPath:t,color:r.color})}return e}function v$(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Ml(t.headingRef))return!0;return!1}var CF=I(()=>{"use strict";Wv()});function Bo(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=PF[n])!=null?i:PF.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function yl(n,e,t=.02){let i=(1-t*(n+1))/n,r=(1-t*(e+1))/e,s=[];for(let a=0;a({path:i.path,position:[-t/2+r*e,0,0],color:i.color,wireframe:i.wireframe}))}function LF(n,e){return n.map((t,i)=>{let r=2*Math.PI*i/n.length;return{path:t.path,position:[Math.cos(r)*e,0,Math.sin(r)*e],color:t.color,wireframe:t.wireframe}})}var PF,Gh=I(()=>{"use strict";PF={iso:{alpha:Math.PI/4,beta:Math.PI/3},front:{alpha:0,beta:Math.PI/2},side:{alpha:Math.PI/2,beta:Math.PI/2},top:{alpha:0,beta:.01},back:{alpha:Math.PI,beta:Math.PI/2},"3/4":{alpha:Math.PI/6,beta:Math.PI/3.5}}});var E$,S$=I(()=>{"use strict";Gh();E$={name:"compare",description:"Side-by-side model comparison (2-4 models)",minModels:2,maxModels:4,compute(n,e){if(n.length<2||n.length>4)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=Xv(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=yl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Bo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var T$,A$=I(()=>{"use strict";Gh();T$={name:"showcase",description:"Single model viewed from multiple angles",minModels:1,maxModels:1,compute(n,e){if(n.length<1)return null;let t=Number(e.angles)||4,i=Number(e.radius)||2.5,r=[{path:n[0].path,position:[0,0,0],color:n[0].color,wireframe:n[0].wireframe}],s=t>=6?["front","side","top","back","iso","3/4"]:["iso","front","side","top"],a=s.length<=4?2:3,o=Math.ceil(s.length/a),l=yl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Bo(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var x$,R$=I(()=>{"use strict";Gh();x$={name:"explode",description:"Spatial arrangement of parts (3-8 models in a ring)",minModels:3,maxModels:8,compute(n,e){if(n.length<3||n.length>8)return null;let t=Number(e.radius)||8,i=e.angle||"iso",r=LF(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=yl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Bo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var b$,M$=I(()=>{"use strict";Gh();b$={name:"timeline",description:"Horizontal progression of models (2-6 models in a strip)",minModels:2,maxModels:6,compute(n,e){if(n.length<2||n.length>6)return null;let t=Number(e.spacing)||6,i=e.angle||"3/4",r=Xv(n,t),s=DF(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Bo(i),viewport:s[l]}));return{placements:r,cells:a}}}});function OF(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((h,u)=>{var m;return h+((m=u.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let h of n){let m=((f=h.weight)!=null?f:1)/s*(1-t*(n.length+1));e==="horizontal"?a.push({x:t+o,y:t,w:m,h:1-2*t}):a.push({x:t,y:t+o,w:1-2*t,h:m}),o+=m+t}let l=[],c=[];for(let h=0;h{"use strict";I$={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var y$,C$=I(()=>{"use strict";Gh();y$={name:"gallery",description:"All models in one scene, single camera (no cell limit)",minModels:1,maxModels:32,compute(n,e){if(n.length===0)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=Number(e.cols)||0,s=r>0?r:Math.ceil(Math.sqrt(n.length)),a=Math.ceil(n.length/s),o=n.map((f,d)=>{let h=d%s,u=Math.floor(d/s),m=(h-(s-1)/2)*t,_=(u-(a-1)/2)*t;return{path:f.path,position:[m,0,_],color:f.color,wireframe:f.wireframe}}),l=yl(1,1,0),c=[{modelIndex:0,camera:Bo(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function Wp(n){P$.set(n.name,n)}function wF(n){return P$.get(n)}var P$,D$=I(()=>{"use strict";S$();A$();R$();M$();NF();C$();Gh();NF();P$=new Map;Wp(E$);Wp(T$);Wp(x$);Wp(b$);Wp(I$);Wp(y$)});function Yv(n){return lTe.schedule(n)}var FF,oTe,lTe,BF=I(()=>{"use strict";FF=class{constructor(e=1,t=0){this.maxActive=e;this.settleDelayMs=t;this.active=0;this.drainTimer=null;this.queue=[]}get activeCount(){return this.active}get queuedCount(){return this.queue.length}schedule(e){return new Promise((t,i)=>{this.queue.push({run:e,resolve:t,reject:i}),this.drain()})}drain(){if(this.drainTimer===null)for(;this.active0;){let e=this.queue.shift();if(!e)return;this.active+=1,Promise.resolve().then(e.run).then(e.resolve,e.reject).finally(()=>{this.active-=1,this.scheduleNextDrain()})}}scheduleNextDrain(){if(this.queue.length!==0){if(this.settleDelayMs<=0){this.drain();return}this.drainTimer===null&&(this.drainTimer=globalThis.setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},oTe=75,lTe=new FF(1,oTe)});var B$={};Be(B$,{registerCodeBlockProcessor:()=>fTe,registerGridCodeBlockProcessor:()=>hTe});async function N$(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(CM(),yM));return e(n)}async function w$(n,e,t,i){var d,h,u,m;let r=typeof e=="string"?{path:e}:e,s=cf(n,r.path);if(!s)throw new Error(qi("workbench.fileNotFound",{path:r.path}));let a=(h=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?h:"";if(!Ya(a))throw Kp(a)?new Error(j("codeBlock.splatDisabled")):new Error(qi("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Cl().join(", ")}));let o=(u=oo(n,s))!=null?u:void 0,l=(m=oo(n,O$))!=null?m:void 0,c=await Np({path:s,absolutePath:o,preferConversionExts:wp(t),conversionManager:()=>N$(t),convertedAssetCache:i,conversionOutputRoot:l}),f=wv(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function cTe(n,e,t,i){let r=[];for(let s of e.models){let a=await w$(n,s,t,i);r.push(a.model)}return{...e,models:r}}function F$(n){gr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("codeBlock.mobileHint")})}function fTe(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var y,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let L=JSON.parse(o);l=dTe(L)}catch(L){let w=s.createDiv({cls:"ai3d-json-error"}),G=String(L).match(/position\s+(\d+)/),O=qi("codeBlock.jsonParseError",{error:String(L)});if(G){let N=parseInt(G[1],10),B=o.substring(0,N).split(` +`);O+=qi("codeBlock.jsonParseLine",{line:String(B.length)})}w.createEl("pre",{text:O});return}else l={models:[{path:o}]};if(!l.models||l.models.length===0){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsInConfig")});return}l.models.length>1&&console.warn(`[AI3D] \`\`\`3d only supports one model; ${l.models.length-1} additional models ignored. Use \`\`\`3dgrid for multi-model.`);let f=l.models[0],d=cf(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:qi("workbench.fileNotFound",{path:f.path})});return}let h=(C=(y=d.split(".").pop())==null?void 0:y.toLowerCase())!=null?C:"";if(!Ya(h)){s.createDiv({cls:"ai3d-inline-empty",text:Kp(h)?j("codeBlock.splatDisabled"):qi("codeBlock.unsupportedFormat",{ext:`.${h}`,formats:Cl().join(", ")})});return}let u=e(),m=s.createDiv({cls:"ai3d-preview-host"});l.height&&m.style.setProperty("--min-height",typeof l.height=="number"?`${l.height}px`:l.height),l.width&&m.style.setProperty("--max-width",typeof l.width=="number"?`${l.width}px`:l.width);let _=m.createEl("canvas",{cls:"ai3d-canvas-full"});Fp(_,"inline",d),m.appendChild(_);let p=null,g=null,v=!0,x=!1,S=!1;Bp(_,()=>x?null:p);let E=Lv(s,m,n,()=>p,()=>d,()=>{x||(x=!0,T.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,g){let L=m.querySelector(".ai3d-annotation-overlay");L&&L.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});F$(s);let T=new MutationObserver(()=>{x||s.contains(m)||(x=!0,T.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null)});T.observe(s,{childList:!0});async function R(){if(S||x||!d)return;S=!0;let L=Fh(m),w=async(G,O)=>{if(O.length===0||!sM(G))return;let N=G.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(DM(),PM)),Promise.resolve().then(()=>(OM(),LM))]);if(x||p!==G||!m.isConnected)return;g=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:u.annotationPreviewMode,displayMode:u.annotationDisplayMode}),E.showAnnotateButton(),E.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{L.setPhaseKey("loading.preparingModel"),await Yv(async()=>{var Ee,Ue,ae,me,ne,fe,Pe,de;if(x||!m.isConnected){L.hide();return}let G=(Ee=oo(n,d))!=null?Ee:void 0,O=(Ue=oo(n,O$))!=null?Ue:void 0;L.setPhaseKey("loading.preparingModel");let N=await Np({path:d,absolutePath:G,preferConversionExts:wp(u),conversionManager:()=>N$(u),convertedAssetCache:t,conversionOutputRoot:O}),B=wv(N),V=await Vp(n,B.path,u),J=(ae=i==null?void 0:i(d))!=null?ae:[],Q={ext:B.ext,annotationMode:J.length>0?"readonly":"none",rendererRollout:u.previewRendererRollout,useThreeRenderer:u.useThreeRenderer},{preview:te}=await Cp(L$,{surface:"code-block",modelPath:d},_,Q);p=te,(me=p.setRenderQuality)==null||me.call(p,V.renderQuality,V.renderScale),E.syncCapabilities(),L.setPhaseKey("loading.loadingModel");let X=await lo(n,B.path),Y=async Re=>lo(n,Re);if(x){L.hide();return}let ve=await p.loadModel(X,B.ext,Y,B.path);if(L.setProgress(100),Bv(m,ve),x){L.hide();return}((ne=l.scene)==null?void 0:ne.autoRotate)===void 0&&u.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:u.autoRotateSpeed}),p.applyConfig(l),E.syncCapabilities(),h==="stl"&&f.color&&((fe=p.setSTLColor)==null||fe.call(p,f.color)),h==="stl"&&f.wireframe!==void 0&&((Pe=p.setWireframe)==null||Pe.call(p,f.wireframe)),(de=p.hasAnimations)!=null&&de.call(p)&&E.showAnimButton(),L.hide(),w(p,J)})}catch(G){x=!0,T.disconnect(),M.disconnect(),L.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=Nv(G);Ov(G)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",G),Fv(m,O)}}let M=new IntersectionObserver(L=>{for(let w of L)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function dTe(n){if(typeof n=="string")return{models:[{path:n}]};if(typeof n!="object"||n===null)return{models:[]};let e=n;return typeof e.path=="string"?{models:[{path:e.path,color:e.color,wireframe:e.wireframe}],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}:{models:Array.isArray(e.models)?e.models.filter(i=>{let r=typeof i=="string"?i:i&&typeof i=="object"&&"path"in i?i.path:void 0;return typeof r=="string"&&r.length>0}).map(i=>{if(typeof i=="string")return{path:i};let r=i;return{path:r.path,color:r.color,wireframe:r.wireframe}}):[],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}}function hTe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var S,E,T,R,M,y,C,L;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(w){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(w)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(E=(S=o.models)==null?void 0:S.length)!=null?E:1),c=(y=(T=o.models)==null?void 0:T[0])!=null?y:(M=(R=o.sections)==null?void 0:R[0])==null?void 0:M.models[0],f=typeof c=="string"?c:(C=c==null?void 0:c.path)!=null?C:"",d=r.createDiv({cls:"ai3d-grid-host"}),h=d.createEl("canvas");if(WZ(h),d.appendChild(h),typeof o.rowHeight=="number"){let w=o.preset==="compose"?1:Math.ceil(l/((L=o.columns)!=null?L:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*w}px`)}let u=null,m=!1,_=!1,p=null,g=null;HZ(h,()=>m?null:u);let v=Lv(r,d,n,()=>u,()=>f,()=>{m||(m=!0,p==null||p.disconnect(),g==null||g.disconnect(),u==null||u.destroy(),u=null,d.remove())},e);F$(r),p=new MutationObserver(()=>{m||r.contains(d)||(m=!0,p==null||p.disconnect(),g==null||g.disconnect(),u==null||u.destroy(),u=null)}),p.observe(r,{childList:!0});async function x(){if(_||m)return;_=!0;let w=Fh(d);w.setPhaseKey("codeBlock.renderingGrid"),w.setProgress(-1);try{await Yv(async()=>{var Q,te,X,Y,ve,Ee,Ue,ae,me,ne;if(m||!d.isConnected){w.hide();return}let G=e(),O=[];for(let fe of(Q=o.models)!=null?Q:[]){let Pe=await w$(n,fe,G,t);O.push(Pe)}let N=O.map(fe=>fe.model);f=(X=(te=O[0])==null?void 0:te.sourcePath)!=null?X:f;let{renderer:B}=await ww(L$,{surface:"3dgrid",preset:(Y=o.preset)!=null?Y:"compare",modelCount:(Ee=(ve=o.models)==null?void 0:ve.length)!=null?Ee:0},h);u=B,v.syncCapabilities();let V=u,J=async fe=>lo(n,fe);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeRequiresSections")}),u.destroy(),u=null;return}let fe=[];for(let de of o.sections)try{if(!f){let Ye=de.models[0];if(Ye){let Et=typeof Ye=="string"?Ye:Ye.path;f=(Ue=cf(n,Et))!=null?Ue:Et}}let Re=await cTe(n,de,G,t);fe.push(Re)}catch(Re){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Re instanceof Error?Re.message:String(Re)}),V.destroy(),u=null;return}let Pe=OF(fe,(ae=o.direction)!=null?ae:"horizontal",Number((me=o.params)==null?void 0:me.gap)||.02,de=>typeof de=="string"?null:de,wF);if(!Pe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeNoValidSections")}),V.destroy(),u=null;return}await V.loadWithPreset(Pe,J)}else if(o.preset){let fe=wF(o.preset);if(!fe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:qi("codeBlock.unknownPreset",{preset:o.preset})}),V.destroy(),u=null;return}let Pe=fe.compute(N,(ne=o.params)!=null?ne:{});if(!Pe){w.hide(),d.createDiv({cls:"ai3d-inline-empty",text:qi("codeBlock.presetRequiresModels",{preset:o.preset,min:String(fe.minModels),max:String(fe.maxModels),count:String(N.length)})}),V.destroy(),u=null;return}await V.loadWithPreset(Pe,J)}else await V.loadModels(N,o,J);if(m){w.hide();return}w.hide()})}catch(G){m=!0,p==null||p.disconnect(),g==null||g.disconnect(),w.hide(),u==null||u.destroy(),u=null,console.error("[AI3D Grid] Failed:",G),d.createDiv({cls:"ai3d-inline-empty",text:G instanceof Error?G.message:qi("codeBlock.gridFailed",{reason:String(G)})})}}g=new IntersectionObserver(w=>{for(let G of w)G.isIntersecting&&(g==null||g.disconnect(),x())},{rootMargin:"200px"}),g.observe(d)}}}var L$,O$,U$=I(()=>{"use strict";Ka();tM();Lp();Ps();D$();Uw();hM();kw();uM();mM();Op();vn();Uv();sa();Mn();_M();BF();EM();L$=Hi("inline-code-block"),O$=".obsidian/ai-model-workbench/converted-assets"});var k$={};Be(k$,{registerLazyCodeBlockProcessor:()=>mTe,registerLazyGridCodeBlockProcessor:()=>pTe});function V$(){return kM!=null||(kM=Promise.resolve().then(()=>(U$(),B$))),kM}function G$(n){return(e,t,i)=>{let r=activeDocument.createElement("div");r.className="ai3d-preview-host ai3d-code-block-lazy",r.setAttribute("aria-busy","true"),t.appendChild(r);let s=async()=>{if(r.isConnected)try{let o=await n();if(!r.isConnected)return;r.remove(),await o(e,t,i)}catch(o){console.warn("[AI3D] Failed to load inline code block runtime:",o);let l=r.isConnected?r:activeDocument.createElement("div");r.isConnected||t.appendChild(l),l.classList.remove("ai3d-preview-host"),l.classList.add("ai3d-inline-empty"),l.removeAttribute("aria-busy"),l.textContent="AI3D inline preview failed to load."}};if(typeof IntersectionObserver=="undefined"){s();return}let a=new IntersectionObserver(o=>{o.some(l=>l.isIntersecting||l.intersectionRatio>0)&&(a.disconnect(),s())},{rootMargin:uTe});a.observe(r)}}function mTe(n,e,t,i){let r=null;return{id:"3d",handler:G$(async()=>(r!=null||(r=V$().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function pTe(n,e,t){let i=null;return{id:"3dgrid",handler:G$(async()=>(i!=null||(i=V$().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var kM,uTe,W$=I(()=>{"use strict";kM=null,uTe="240px"});var H$={};Be(H$,{setupHeadingPinObserver:()=>gTe});function _Te(n){if(n.length===0)return"var(--interactive-accent)";if(n.length===1)return n[0];let e=100/n.length;return`linear-gradient(135deg, ${n.map((t,i)=>{let r=Math.round(i*e),s=Math.round((i+1)*e);return`${t} ${r}% ${s}%`}).join(", ")})`}function UF(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function WM(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${UF(t)}`).sort().join("||")}function gTe(n){let e=new Map,t=null,i=new Map,r="",s=!1,a=null,o=new Set,l=0,c=O=>{var V;if(O===t)return!1;let N=new Map,B=t===null;for(let[J,Q]of Object.entries(O)){let te=(V=Q.annotations)!=null?V:[];N.set(J,te),i.get(J)!==te&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>g$(O),d=O=>Ml(Array.from(O.childNodes).map(N=>{var B;return N.instanceOf(Element)&&N.classList.contains("ai3d-heading-pin-badge")?"":(B=N.textContent)!=null?B:""}).join(" ")),h=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},u=(O,N)=>{if(N.length===0){h(O);return}let B=UF(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&h(O),O.dataset.pinBound=B;let J=O.createSpan({cls:"ai3d-heading-pin-badge"}),Q=[...new Set(N.map(Ee=>Ee.color).filter(Boolean))],te=J.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(te.style.background=_Te(Q),te.title=N.length>1?j("headingPin.showMultiple"):j("headingPin.showSingle"),te.setAttribute("role","button"),te.setAttribute("tabindex","0"),N.length>1){let Ee=J.createSpan({cls:"ai3d-heading-pin-badge-count"});Ee.textContent=`\xD7${N.length}`}let X=[...new Set(N.map(Ee=>tn(Ee.modelPath)))];J.title=qi("headingPin.linkedTo",{models:X.join(", ")});let Y=Ee=>{Ee==null||Ee.stopPropagation(),Ee==null||Ee.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};te.addEventListener("click",Ee=>{Y(Ee)}),te.addEventListener("keydown",Ee=>{Ee.instanceOf(KeyboardEvent)&&(Ee.key!=="Enter"&&Ee.key!==" "||Y(Ee))}),J.addEventListener("click",Ee=>{Ee.stopPropagation()}),O.appendChild(J);let ve=()=>{for(let Ee of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ee.pinId}}))};O.addEventListener("mouseover",ve),e.set(O,{badge:J,handler:ve,signature:B})},m=(O,N)=>{var V;let B=d(O);u(O,(V=N.get(B))!=null?V:[])},_=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){h(B);continue}let J=(N=O.get(d(B)))!=null?N:[],Q=UF(J);(J.length===0||V.signature!==Q)&&u(B,J)}},p=(O,N)=>{O.querySelectorAll(jv).forEach(B=>m(B,N))},g=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=WM(N),s=N.size>0,!s){_(N),L();return}C(),_(N),activeDocument.querySelectorAll(Kv).forEach(V=>p(V,N))},v=0,x=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,g()},O)},S=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=WM(N);if(B!==r){if(r=B,s=N.size>0,!s){_(N),L();return}C(),x()}});n.onLayoutChange(()=>{!s&&f().size===0||x(200)});let E=O=>O.matches(Kv)||O.matches(jv)?!0:!!O.querySelector(Kv)||!!O.querySelector(jv),T=O=>O.isConnected&&E(O),R=O=>E(O),M=()=>{var B,V,J,Q,te,X;let O=Array.from(o);o.clear(),l=0;let N=f();_(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,jv)&&m(Y,N),(J=(V=Y.querySelectorAll)==null?void 0:V.call(Y,jv))==null||J.forEach(ve=>m(ve,N)),(Q=Y.matches)!=null&&Q.call(Y,Kv)&&p(Y,N),(X=(te=Y.querySelectorAll)==null?void 0:te.call(Y,Kv))==null||X.forEach(ve=>p(ve,N)));r=WM(N),s=N.size>0,s||L()},y=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&T(V)&&(o.add(V),N=!0);for(let V of Array.from(B.removedNodes))V.instanceOf(HTMLElement)&&R(V)&&(N=!0)}N&&!l&&(l=window.setTimeout(M,100))};function C(){a||(a=new MutationObserver(y),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function L(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{S(),L(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))h(O)});let w=n.getModelAssetProfiles();c(w);let G=f(w);r=WM(G),s=G.size>0,s&&(C(),x(500))}var Kv,jv,z$=I(()=>{"use strict";vn();Wv();Ps();CF();Kv=".markdown-preview-view, .markdown-source-view",jv=[".markdown-preview-view h1",".markdown-preview-view h2",".markdown-preview-view h3",".markdown-preview-view h4",".markdown-preview-view h5",".markdown-preview-view h6",".cm-heading-1",".cm-heading-2",".cm-heading-3",".cm-heading-4",".cm-heading-5",".cm-heading-6",".cm-header-1",".cm-header-2",".cm-header-3",".cm-header-4",".cm-header-5",".cm-header-6"].join(", ")});function vTe(n){return n.includes("![[")}function HM(n){let e="";for(let t of n.iter()){if(!t)continue;let i=e?e+t:t;if(i.includes("![["))return!0;e=i.slice(-2)}return!1}function X$(n,e){return Math.max(0,Math.min(e,n.length))}function Y$(n,e,t){if(n.length===0)return!1;let i=n.lineAt(X$(n,e)),r=n.lineAt(X$(n,t));for(let s=i.number;s<=r.number;s++)if(vTe(n.line(s).text))return!0;return!1}function zM(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=Y$(n.startState.doc,t,i)||Y$(n.state.doc,r,s))}),e}var VF=I(()=>{"use strict"});function K$(n,e,t=512){let i=new Map;return{resolve(r){var a;if(i.has(r))return(a=i.get(r))!=null?a:null;let s=e(n,r);if(i.set(r,s),i.size>t){let o=i.keys().next().value;o!==void 0&&i.delete(o)}return s},clear(){i.clear()}}}var j$=I(()=>{"use strict"});function qv(n){return createDiv().createDiv(n?{cls:n}:void 0)}function GF(n,e){return createDiv().createEl(n,e?{cls:e}:void 0)}var q$=I(()=>{"use strict"});var $$={};Be($$,{ModelEmbedWidget:()=>XM,registerLivePreviewExtension:()=>TTe});function Z$(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){var E,T;let v="state"in n?n.state.doc:n.doc,x=[];if(!HM(v))return x;let S=0;for(let R of v.iterLines()){let M=S+R.length+1;if(!R.includes("![[")){S=M;continue}let y=0;for(;y0&&R[C-1]==="\\"){y=C+"![[".length;continue}let L=R.indexOf("]]",C+"![[".length);if(L===-1)break;let G=R.slice(C+"![[".length,L).split("|"),O=G[0].trim(),N=(T=(E=O.split(".").pop())==null?void 0:E.toLowerCase())!=null?T:"";if(!Ya(N)){y=L+2;continue}let B=400,V=300;if(G.length>1){let Q=G[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);Q&&(B=parseInt(Q[1],10),V=parseInt(Q[2],10))}let J=cf(e,O);if(!J){y=L+2;continue}x.push(Hp.Decoration.replace({widget:new XM(e,J,B,V,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g),block:!0}).range(S+C,S+L+2)),y=L+2}S=M}return x}function Q$(n){return n.length===0?kh.RangeSet.empty:kh.RangeSet.of(n,!0)}function TTe(n,e,t,i){let r=kh.StateField.define({create(s){let a=e(),o=Z$(s,n,a.autoRotateDefault,a.enabledConverterIds,a.freecadCommand,a.obj2gltfCommand,a.fbx2gltfCommand,a.freecadcmdCommand,a.preferObj2gltfForObj,a.preferFbx2gltfForFbx,a.annotationPreviewMode,a.annotationDisplayMode,a.previewRendererRollout,a.useThreeRenderer,a.renderQuality,a.renderScale,t,i);return Q$(o)},update(s,a){if(a.docChanged){if(!zM(a))return s.map(a.changes);let o=e(),l=Z$(a.state,n,o.autoRotateDefault,o.enabledConverterIds,o.freecadCommand,o.obj2gltfCommand,o.fbx2gltfCommand,o.freecadcmdCommand,o.preferObj2gltfForObj,o.preferFbx2gltfForFbx,o.annotationPreviewMode,o.annotationDisplayMode,o.previewRendererRollout,o.useThreeRenderer,o.renderQuality,o.renderScale,t,i);return Q$(l)}return s.map(a.changes)},provide:s=>Hp.EditorView.decorations.from(s)});return[kh.Prec.highest(r)]}var Hp,kh,ETe,STe,XM,J$=I(()=>{"use strict";Hp=require("@codemirror/view"),kh=require("@codemirror/state");Ka();Ps();mM();q$();sa();vn();Mn();_M();VF();BF();EM();ETe=Hi("inline-live-preview"),STe=".obsidian/ai-model-workbench/converted-assets",XM=class extends Hp.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.renderQuality=v;this.renderScale=x;this.convertedAssetCache=S;this.getAnnotations=E;this.preview=null;this.annotationMgr=null;this.readyObs=null;this.viewportObs=null;this.pollId=0;this.initStarted=!1;this.destroyed=!1;this.initGeneration=0;this.viewportReady=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=gr(),i=qv("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=GF("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),Fp(r,"live-preview",this.modelPath),Bp(r,()=>this.destroyed?null:this.preview),i.appendChild(r);let a=Fh(i),o=qv("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=qv("ai3d-mobile-mode-bar"),h=qv("ai3d-mobile-mode-hint");h.textContent=j("livePreview.mobileHint");let u=GF("button","ai3d-mobile-mode-btn");u.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),u.textContent=f?j("helper.scrollAction"):j("helper.interactAction"),u.classList.toggle("ai3d-btn-active",f),u.setAttribute("aria-label",f?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))};u.addEventListener("click",()=>{f=!f,m()}),m(),d.append(h,u),i.appendChild(d)}let l=()=>{this.destroyed||this.initStarted||this.viewportReady&&(!i.isConnected||r.clientWidth<=0||r.clientHeight<=0||(this.initStarted=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),this.initPreview(i,r,a,o,++this.initGeneration)))};this.readyObs=new ResizeObserver(()=>l()),this.readyObs.observe(i),this.readyObs.observe(r);let c=()=>{if(this.pollId||this.destroyed||this.initStarted)return;let f=0,d=()=>{this.pollId=0,!(this.destroyed||this.initStarted)&&(l(),!this.initStarted&&(++f>240||(this.pollId=window.requestAnimationFrame(d))))};this.pollId=window.requestAnimationFrame(d)};return typeof IntersectionObserver=="undefined"?(this.viewportReady=!0,c(),l()):(this.viewportObs=new IntersectionObserver(f=>{this.destroyed||this.initStarted||f.some(d=>d.isIntersecting||d.intersectionRatio>0)&&(this.viewportReady=!0,this.stopViewportWatch(),c(),l())},{rootMargin:"200px"}),this.viewportObs.observe(i)),i}stopReadyPoll(){this.pollId&&(window.cancelAnimationFrame(this.pollId),this.pollId=0)}async initPreview(t,i,r,s,a){var o;try{r.setPhaseKey("loading.preparingModel"),await Yv(async()=>{var M,y,C,L,w,G,O,N;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:h},{createNoteReader:u},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(hM(),BZ)),Promise.resolve().then(()=>(uM(),UZ)),Promise.resolve().then(()=>(tM(),RZ)),Promise.resolve().then(()=>(Lp(),yZ)),Promise.resolve().then(()=>(DM(),PM)),Promise.resolve().then(()=>(OM(),LM)),Promise.resolve().then(()=>(Uv(),Ww))]),_=(M=oo(this.app,this.modelPath))!=null?M:void 0;r.setPhaseKey("loading.preparingModel");let p=(y=oo(this.app,STe))!=null?y:void 0,g=await l({path:this.modelPath,absolutePath:_,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:B}=await Promise.resolve().then(()=>(CM(),yM));return B({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(L=(C=this.getAnnotations)==null?void 0:C.call(this,this.modelPath))!=null?L:[],x={ext:g.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},S=await Vp(this.app,g.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),{preview:E}=await f(ETe,{surface:"live-preview",modelPath:this.modelPath},i,x);if(this.destroyed||a!==this.initGeneration){E.destroy();return}this.preview=E,(G=(w=this.preview).setRenderQuality)==null||G.call(w,S.renderQuality,S.renderScale),r.setPhaseKey("loading.loadingModel");let T=await lo(this.app,g.effectivePath);if(this.destroyed||a!==this.initGeneration){(O=this.preview)==null||O.destroy(),this.preview=null;return}let R=await this.preview.loadModel(T,g.effectiveExt,B=>lo(this.app,B),g.effectivePath);if(this.destroyed||a!==this.initGeneration){(N=this.preview)==null||N.destroy(),this.preview=null;return}if(m(t,R),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let B=this.preview.getAnnotationProvider();B.canvas&&(this.annotationMgr=new h(B,t,"readonly",v,void 0,u(this.app),void 0,{app:this.app,previewMode:this.annotationPreviewMode,displayMode:this.annotationDisplayMode}))}r.setProgress(100),r.hide()})}catch(l){if(this.destroyed||a!==this.initGeneration)return;(o=this.preview)==null||o.destroy(),this.preview=null,r.hide(),s.remove(),t.replaceChildren();let[{describeModelLoadFailure:c,isMissingConverterError:f},{renderModelLoadFailure:d}]=await Promise.all([Promise.resolve().then(()=>(Op(),OZ)),Promise.resolve().then(()=>(Uv(),Ww))]),h=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",h.message):console.error("[AI3D] Live Preview failed:",l),d(t,h)}finally{r.hide()}}destroy(){var t;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,this.preview&&(this.preview.destroy(),this.preview=null),this.initStarted=!1,this.viewportReady=!1}stopReadyWatch(){var t;(t=this.readyObs)==null||t.disconnect(),this.readyObs=null}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}ignoreEvent(){return!0}}});var iJ={};Be(iJ,{registerLazyLivePreviewExtension:()=>xTe});function ATe(){return YM!=null||(YM=Promise.resolve().then(()=>(J$(),$$))),YM}function eJ(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v){var T,R;let x="state"in n?n.state.doc:n.doc,S=[];if(!HM(x))return S;let E=0;for(let M of x.iterLines()){let y=E+M.length+1;if(!M.includes("![[")){E=y;continue}let C=0;for(;C0&&M[L-1]==="\\"){C=L+"![[".length;continue}let w=M.indexOf("]]",L+"![[".length);if(w===-1)break;let O=M.slice(L+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(T=N.split(".").pop())==null?void 0:T.toLowerCase())!=null?R:"";if(!Ya(B)){C=w+2;continue}let V=400,J=300;if(O.length>1){let te=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);te&&(V=parseInt(te[1],10),J=parseInt(te[2],10))}let Q=g.resolve(N);if(!Q){C=w+2;continue}S.push(zp.Decoration.replace({widget:new kF(e,Q,V,J,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,v),block:!0}).range(E+L,E+w+2)),C=w+2}E=y}return S}function tJ(n){return n.length===0?Wh.RangeSet.empty:Wh.RangeSet.of(n,!0)}function xTe(n,e,t,i,r){let s=K$(n,cf),a=()=>s.clear(),o=[n.vault.on("create",a),n.vault.on("delete",a),n.vault.on("rename",a)];r==null||r(()=>{for(let c of o)n.vault.offref(c)});let l=Wh.StateField.define({create(c){let f=e(),d=eJ(c,n,f.autoRotateDefault,f.enabledConverterIds,f.freecadCommand,f.obj2gltfCommand,f.fbx2gltfCommand,f.freecadcmdCommand,f.preferObj2gltfForObj,f.preferFbx2gltfForFbx,f.annotationPreviewMode,f.annotationDisplayMode,f.previewRendererRollout,f.useThreeRenderer,f.renderQuality,f.renderScale,t,s,i);return tJ(d)},update(c,f){if(f.docChanged){if(!zM(f))return c.map(f.changes);let d=e(),h=eJ(f.state,n,d.autoRotateDefault,d.enabledConverterIds,d.freecadCommand,d.obj2gltfCommand,d.fbx2gltfCommand,d.freecadcmdCommand,d.preferObj2gltfForObj,d.preferFbx2gltfForFbx,d.annotationPreviewMode,d.annotationDisplayMode,d.previewRendererRollout,d.useThreeRenderer,d.renderQuality,d.renderScale,t,s,i);return tJ(h)}return c.map(f.changes)},provide:c=>zp.EditorView.decorations.from(c)});return[Wh.Prec.highest(l)]}var zp,Wh,YM,kF,rJ=I(()=>{"use strict";zp=require("@codemirror/view"),Wh=require("@codemirror/state");Ka();Ps();VF();j$();YM=null;kF=class extends zp.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,x,S,E){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.renderQuality=v;this.renderScale=x;this.convertedAssetCache=S;this.getAnnotations=E;this.mountedWidget=null;this.mountedDom=null;this.viewportObs=null;this.destroyed=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=activeDocument.createElement("div");return t.className="ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy",t.setAttribute("contenteditable","false"),t.style.setProperty("--ai3d-embed-height",`${this.height}px`),this.watchViewport(t),t}destroy(){var t,i;this.destroyed=!0,this.stopViewportWatch(),(t=this.mountedWidget)==null||t.destroy(),this.mountedWidget=null,(i=this.mountedDom)==null||i.remove(),this.mountedDom=null}ignoreEvent(){return!0}watchViewport(t){if(typeof IntersectionObserver=="undefined"){this.mount(t);return}this.viewportObs=new IntersectionObserver(i=>{this.destroyed||this.mountedWidget||i.some(r=>r.isIntersecting||r.intersectionRatio>0)&&(this.stopViewportWatch(),this.mount(t))},{rootMargin:"240px"}),this.viewportObs.observe(t)}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}async mount(t){let i;try{i=await ATe()}catch(a){console.warn("[AI3D] Failed to load Live Preview widget runtime:",a),!this.destroyed&&t.isConnected&&(t.textContent="AI3D live preview failed to load.");return}let r=new i.ModelEmbedWidget(this.app,this.modelPath,this.width,this.height,this.autoRotate,this.enabledConverterIds,this.freecadCommand,this.obj2gltfCommand,this.fbx2gltfCommand,this.freecadcmdCommand,this.preferObj2gltfForObj,this.preferFbx2gltfForFbx,this.annotationPreviewMode,this.annotationDisplayMode,this.previewRendererRollout,this.useThreeRenderer,this.renderQuality,this.renderScale,this.convertedAssetCache,this.getAnnotations);if(this.destroyed||!t.isConnected){r.destroy();return}let s=r.toDOM();if(this.destroyed||!t.isConnected){r.destroy();return}this.mountedWidget=r,this.mountedDom=s,t.replaceWith(s)}}});var sJ={};Be(sJ,{ModelFileSuggestModal:()=>WF});var nJ,WF,aJ=I(()=>{"use strict";nJ=require("obsidian");Ka();vn();WF=class extends nJ.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(j("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return Ya(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function oJ(n,e){return n==="three"?{backend:n,supportedFormats:RTe,fallbackRole:"Primary single-model preview path",capabilities:[...e],colorPipeline:"sRGB output, no tone mapping, PBR material preservation",fidelityNotes:["Direct GLB/GLTF/STL/PLY/OBJ are expected to preserve geometry scale and material color intent.","Workbench, grid, and SPLAT routes still keep Babylon fallback coverage."]}:{backend:n,supportedFormats:bTe,fallbackRole:"Capability and compatibility backend",capabilities:[...e],colorPipeline:"Babylon material pipeline with conservative fallback behavior",fidelityNotes:["3dgrid, conservative workbench, SPLAT, and converted workbench inputs remain on Babylon.","Babylon remains the rollback path when Three direct rendering is disabled."]}}function lJ(n){return n.backend==="three"?oJ("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","workbench"]):oJ("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","workbench"])}function cJ(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var RTe,bTe,fJ=I(()=>{"use strict";Lp();RTe=["glb","gltf","stl","ply","obj"],bTe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var hJ={};Be(hJ,{buildDiagnosticsReport:()=>wTe});function KM(n){return typeof n=="boolean"?n?"on":"off":typeof n=="number"?Number.isFinite(n)?String(n):"unknown":typeof n=="string"?n.length>0?n:"empty":"unknown"}function MTe(n){var i;let e=(i=n.split(/[\\/]/).pop())!=null?i:n,t=e.lastIndexOf(".");return t<=0||t===e.length-1?"":`.${e.slice(t+1).toLowerCase()}`}function Xp(n,e,t){if(!n)return t;if(e)return n;let i=MTe(n);return i?``:""}function Zv(n,e){return n?`set (${Xp(n,e,"not set")})`:"not set"}function ITe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${KM(e.sendGeometrySummaryToRemote)}`,`preview refs ${KM(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function yTe(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function CTe(n){let e=n.lastKnowledgeGeneration;return e?e.status==="pending"?"pending or interrupted; rerun generation to replace the marker":e.status==="failed"?"failed; inspect console details and rerun after fixing the issue":e.warningCount>0?"completed with warnings":"none":"none"}function OTe(n){let e=new Set(n.enabledConverterIds);return PTe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":DTe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function NTe(n){let e=n.convertedAssetRecords;if(e.length===0)return"none";let t=new Set(e.map(r=>`${r.sourcePath}:${r.sourceExt}:${r.targetExt}`)).size,i=e.filter(r=>r.warnings.length>0).length;return[`${e.length} record(s) for ${t} source(s)`,"validated before reuse for cache version, converter identity, output presence, and source freshness",i>0?`${i} record(s) carry warning text`:""].filter(Boolean).join("; ")}function wTe(n){var c,f,d,h,u,m,_,p,g;let{manifest:e,state:t}=n,i=t.settings,r=yTe(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?Kh({ext:(c=t.currentModelPath.split(".").pop())!=null?c:"",annotationMode:r!=null&&r.annotations.length?"readonly":"none",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:i.experimentalThreeWorkbench,rendererRollout:i.previewRendererRollout,useThreeRenderer:i.useThreeRenderer}):null,o=a?lJ(a):null,l=t.lastKnowledgeGeneration;return["# AI Model Workbench Diagnostics","",`Generated: ${(f=n.generatedAt)!=null?f:new Date().toISOString()}`,"","## Runtime","",`- Plugin version: ${e.version}`,`- Minimum Obsidian version: ${e.minAppVersion}`,`- Obsidian API version: ${dJ.apiVersion}`,`- Platform: ${gr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${KM(i.useThreeRenderer)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${KM(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?cJ(o):"no current model"}`,`- Route color pipeline: ${(d=o==null?void 0:o.colorPipeline)!=null?d:"no current model"}`,`- Render quality: ${i.renderQuality}`,`- Render scale: ${i.renderScale}`,"","## Current Model","",`- Path: ${Xp(t.currentModelPath,s,"none")}`,`- Preview summary: ${t.modelPreview?`${t.modelPreview.meshCount} mesh(es), ${t.modelPreview.triangleCount.toLocaleString()} triangle(s), ${t.modelPreview.materialCount} material(s)`:"not captured"}`,`- Annotation count: ${(h=r==null?void 0:r.annotations.length)!=null?h:0}`,`- Registered part candidates: ${(m=(u=r==null?void 0:r.registeredParts)==null?void 0:u.length)!=null?m:0}`,`- Report note: ${Zv(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${Zv(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${Zv(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${ITe(t)}`,`- Report folder: ${Xp(i.reportFolder,s,"empty")}`,`- Part notes folder: ${Xp(i.partFolder,s,"empty")}`,`- Snapshot folder: ${Xp(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${CTe(t)}`,`- Last generated model: ${Xp(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${Zv(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${Zv(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(_=l==null?void 0:l.partNoteCount)!=null?_:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(g=l==null?void 0:l.warningCount)!=null?g:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${OTe(i)}`,`- Conversion cache status: ${NTe(t)}`,`- Conversion timeout: ${LTe}ms outer budget`,"- Converter safety: missing converters report their converter id; unsafe configured commands are rejected before execution; command paths are redacted.",`- Supported direct/model extensions: ${Cl().join(", ")}`,"","## Notes","","- Draft service URL and command paths are intentionally omitted from this report.",s?"- Vault-relative model and note paths are included because includeVaultPaths was requested.":"- Vault-relative model, report, index, and folder paths are redacted by default.","- Attach this report with the model format, console error, and reproduction steps when filing a bug.",""].join(` +`)}var dJ,PTe,DTe,LTe,uJ=I(()=>{"use strict";dJ=require("obsidian");Ka();fJ();oE();sa();PTe=[{id:"freecad",label:"Python/CadQuery",settingsKey:"freecadCommand"},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand"},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand"},{id:"assimp",label:"Python/trimesh",settingsKey:"assimpCommand"},{id:"freecadcmd",label:"FreeCADCmd",settingsKey:"freecadcmdCommand"}],DTe=/[;|&<>$`\r\n\t]/,LTe=3e5});var VTe={};Be(VTe,{default:()=>jM});module.exports=bJ(VTe);var _s=require("obsidian");$M();Ka();s0();var u$=require("obsidian");vn();aE();var VM=class extends u$.FileView{constructor(t,i,r,s){super(t);this.getSettings=i;this.convertedAssetCache=r;this.ps=s;this.delegate=null;this.delegatePromise=null;this.closed=!1}getViewType(){return _d}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&await this.onLoadFile(this.file)}async onLoadFile(t){this.closed=!1;let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0;let t=this.delegate;this.delegate=null,await(t==null?void 0:t.onClose())}async ensureDelegate(){return this.delegate?this.delegate:(this.delegatePromise||(this.delegatePromise=this.loadDelegate()),this.delegatePromise)}async loadDelegate(){this.contentEl.empty(),this.contentEl.addClass("ai3d-direct-view"),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:j("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(h$(),d$)),i=new t(this.leaf,this.getSettings,this.convertedAssetCache,this.ps);return i.contentEl=this.contentEl,i.file=this.file,this.delegatePromise=null,this.closed?(await i.onClose(),null):(this.delegate=i,i)}};aE();var _$=require("obsidian"),GM=class extends _$.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.delegate=null;this.delegatePromise=null}display(){this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:"Loading AI Model Workbench settings..."}),this.ensureDelegate().then(t=>{t.containerEl=this.containerEl,t.display()}).catch(t=>{this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:`Failed to load AI Model Workbench settings: ${String(t)}`})})}hide(){var t;(t=this.delegate)==null||t.hide()}ensureDelegate(){var t;return this.delegate?Promise.resolve(this.delegate):((t=this.delegatePromise)!=null||(this.delegatePromise=Promise.resolve().then(()=>(p$(),m$)).then(({AI3DSettingTab:i})=>{let r=new i(this.app,this.plugin);return this.delegate=r,this.delegatePromise=null,r}).catch(i=>{throw this.delegatePromise=null,i})),this.delegatePromise)}};Mn();vn();CF();sa();var HF=Hi("main"),FTe=700,BTe=2500;function Qv(n,e){return()=>{n().catch(t=>{HF.error(`Command ${e} failed`,{error:String(t)}),new _s.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function UTe(n){let e=!1,t=null,i=null,r=window,s=()=>{var o;t!==null&&(window.clearTimeout(t),t=null),i!==null&&((o=r.cancelIdleCallback)==null||o.call(r,i),i=null)},a=()=>{e||(s(),n())};return t=window.setTimeout(()=>{t=null,r.requestIdleCallback?i=r.requestIdleCallback(a,{timeout:BTe}):t=window.setTimeout(a,0)},FTe),()=>{e=!0,s()}}var jM=class extends _s.Plugin{constructor(){super(...arguments);this.unloaded=!1;this.headingPinObserverStarted=!1;this.headingLinkedProfilesRef=null;this.headingLinkedProfilesResult=!1}getSettings(){return this.ps.store.getState().settings}updateSettings(t){this.ps.updateSettings(t),Fw(this.getSettings().logLevel),Jp(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=c1(this),await this.ps.load(),this.convertedAssetCache=$F(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),Fw(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}Jp(this.getSettings().locale),this.addRibbonIcon("box",j("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:j("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:j("main.commandGenerateNote"),callback:Qv(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:j("main.commandOpenKnowledgeIndex"),callback:Qv(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:j("main.commandClearConversionCache"),callback:Qv(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:j("main.commandCheckConverters"),callback:Qv(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:j("main.commandCopyDiagnostics"),callback:Qv(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new GM(this.app,this)),this.registerView(_d,l=>new VM(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Cl(),_d);let t=l=>{var c,f;return(f=(c=this.ps.store.getState().modelAssetProfiles[l])==null?void 0:c.annotations)!=null?f:[]},{registerLazyCodeBlockProcessor:i,registerLazyGridCodeBlockProcessor:r}=await Promise.resolve().then(()=>(W$(),k$)),s=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t);this.registerMarkdownCodeBlockProcessor(s.id,s.handler);let a=r(this.app,()=>this.getSettings(),this.convertedAssetCache);this.registerMarkdownCodeBlockProcessor(a.id,a.handler),this.register(this.ps.store.subscribe(()=>{this.unloaded||this.headingPinObserverStarted||!this.hasHeadingLinkedAnnotations()||this.startHeadingPinObserver()})),this.app.workspace.onLayoutReady(()=>{this.unloaded||this.register(UTe(()=>{this.registerLivePreviewExtension(t),this.hasHeadingLinkedAnnotations()&&this.startHeadingPinObserver()}))})}onunload(){this.unloaded=!0,this.ps.dispose()}async startHeadingPinObserver(){if(!(this.unloaded||this.headingPinObserverStarted)){this.headingPinObserverStarted=!0;try{let{setupHeadingPinObserver:t}=await Promise.resolve().then(()=>(z$(),H$));if(this.unloaded)return;t({subscribeStore:i=>this.ps.store.subscribe(i),getModelAssetProfiles:()=>this.ps.store.getState().modelAssetProfiles,registerCleanup:i=>this.register(i),onLayoutChange:i=>{this.registerEvent(this.app.workspace.on("layout-change",i))}})}catch(t){this.headingPinObserverStarted=!1,console.warn("[AI3D] Failed to start heading pin observer:",t)}}}hasHeadingLinkedAnnotations(){let t=this.ps.store.getState().modelAssetProfiles;return this.headingLinkedProfilesRef===t?this.headingLinkedProfilesResult:(this.headingLinkedProfilesRef=t,this.headingLinkedProfilesResult=v$(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>(rJ(),iJ));if(this.unloaded)return;let r=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t,s=>this.register(s));for(let s of r)this.registerEditorExtension(s)}catch(i){console.warn("[AI3D] Failed to register Live Preview model embeds:",i)}}importModel(){this.showImportModelModal().catch(t=>{HF.error("Failed to open import modal",{error:String(t)}),new _s.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(aJ(),sJ));new t(this.app,i=>{let r=i.extension.toLowerCase();Ya(r)&&this.openModelFile(i)}).open()}async openModelFile(t){this.ps.setCurrentModel(t.path,null),await this.app.workspace.getLeaf(!0).openFile(t,{active:!0})}async generateNote(){let{generateKnowledgeNote:t}=await Promise.resolve().then(()=>(BM(),FM));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new _s.Notice(j("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof _s.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new _s.Notice(qi("workbench.fileNotFound",{path:t}))}resolveKnowledgeIndexPath(){var a,o,l;let t=this.ps.store.getState(),i=t.currentModelPath,r=i?(a=t.modelAssetProfiles[i])==null?void 0:a.knowledgeIndexPath:void 0;return r||((o=t.lastKnowledgeGeneration)!=null&&o.knowledgeIndexPath?t.lastKnowledgeGeneration.knowledgeIndexPath:(l=Object.values(t.modelAssetProfiles).filter(c=>!!c.knowledgeIndexPath).sort((c,f)=>Date.parse(f.updatedAt)-Date.parse(c.updatedAt))[0])==null?void 0:l.knowledgeIndexPath)}clearConversionCache(){this.convertedAssetCache.clear(),new _s.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(gr()){new _s.Notice(j("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(hd(),iF)),i=await t(this.getSettings()),r=i.filter(a=>a.available).map(a=>a.label),s=i.filter(a=>!a.available).map(a=>a.label);if(s.length===0){new _s.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new _s.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(uJ(),hJ)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new _s.Notice(j("main.diagnosticsCopied"),8e3)}catch(r){let s=this.getSettings().reportFolder.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()||"Analysis/3D Reports";await this.ensureVaultFolder(s);let a=`AI Model Workbench Diagnostics ${new Date().toISOString().replace(/[:.]/g,"-")}.md`,o=await this.app.vault.create(`${s}/${a}`,i);await this.app.workspace.getLeaf(!0).openFile(o,{active:!0}),new _s.Notice(j("main.diagnosticsCopyFailed"),1e4)}}async ensureVaultFolder(t){let i="";for(let r of t.split("/").filter(Boolean))i=i?`${i}/${r}`:r,this.app.vault.getAbstractFileByPath(i)||await this.app.vault.createFolder(i).catch(s=>{HF.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; diff --git a/src/view/model-render-budget.test.ts b/src/view/model-render-budget.test.ts index b3ed828..d655298 100644 --- a/src/view/model-render-budget.test.ts +++ b/src/view/model-render-budget.test.ts @@ -40,9 +40,26 @@ function summary(tier: ModelPreviewSummary["performanceTier"]): ModelPreviewSumm } function createAppWithVaultFileSize(path: string, size: number): App { + return createAppWithVaultFiles({ [path]: { size } }); +} + +function createAppWithVaultFiles(files: Record): App { + const fileMap = new Map( + Object.entries(files).map(([path, file]) => [path, { path, stat: { size: file.size }, text: file.text }]), + ); return { vault: { - getAbstractFileByPath: (candidate: string) => candidate === path ? { stat: { size } } : null, + getAbstractFileByPath: (candidate: string) => fileMap.get(candidate) ?? null, + read: async (file: { path?: string; text?: string }) => { + if (typeof file.text === "string") { + return file.text; + } + const matched = file.path ? fileMap.get(file.path) : null; + if (typeof matched?.text === "string") { + return matched.text; + } + throw new Error("missing vault text fixture"); + }, }, } as unknown as App; } @@ -97,6 +114,82 @@ describe("model render budget", () => { expect(nodeShimMocks.stat).not.toHaveBeenCalled(); }); + it("adds relative glTF external resource sizes without loading Node shims", async () => { + nodeShimMocks.moduleLoadCount.value = 0; + nodeShimMocks.stat.mockReset(); + + const gltfText = JSON.stringify({ + buffers: [{ uri: "assembly.bin", byteLength: 128 }], + images: [{ uri: "textures/diffuse%20map.png" }], + }); + const app = createAppWithVaultFiles({ + "models/assembly.gltf": { size: 1024, text: gltfText }, + "models/assembly.bin": { size: 70 * 1024 * 1024 }, + "models/textures/diffuse map.png": { size: 2 * 1024 * 1024 }, + }); + + await expect(getModelPathByteSize(app, "models/assembly.gltf")) + .resolves.toBe(1024 + 72 * 1024 * 1024); + + expect(nodeShimMocks.moduleLoadCount.value).toBe(0); + expect(nodeShimMocks.stat).not.toHaveBeenCalled(); + }); + + it("deduplicates glTF resources after URI suffix normalization", async () => { + const gltfText = JSON.stringify({ + buffers: [{ uri: "shared.bin" }], + images: [{ uri: "shared.bin?cache=1" }], + }); + const app = createAppWithVaultFiles({ + "models/assembly.gltf": { size: 1024, text: gltfText }, + "models/shared.bin": { size: 10 * 1024 * 1024 }, + }); + + await expect(getModelPathByteSize(app, "models/assembly.gltf")) + .resolves.toBe(1024 + 10 * 1024 * 1024); + }); + + it("resolves parent-directory glTF external resource paths from the model folder", async () => { + const gltfText = JSON.stringify({ + images: [{ uri: "../textures/panel.png" }], + }); + const app = createAppWithVaultFiles({ + "models/nested/assembly.gltf": { size: 1024, text: gltfText }, + "models/textures/panel.png": { size: 4 * 1024 * 1024 }, + }); + + await expect(getModelPathByteSize(app, "models/nested/assembly.gltf")) + .resolves.toBe(1024 + 4 * 1024 * 1024); + }); + + it("falls back to declared glTF buffer byteLength when external stat is missing", async () => { + const gltfText = JSON.stringify({ + buffers: [{ uri: "missing.bin", byteLength: 68 * 1024 * 1024 }], + }); + const app = createAppWithVaultFiles({ + "models/assembly.gltf": { size: 1024, text: gltfText }, + }); + + await expect(getModelPathByteSize(app, "models/assembly.gltf")) + .resolves.toBe(1024 + 68 * 1024 * 1024); + }); + + it("skips remote and data glTF resource URIs when estimating local byte size", async () => { + const gltfText = JSON.stringify({ + buffers: [ + { uri: "https://cdn.example.com/huge.bin", byteLength: 512 * 1024 * 1024 }, + { uri: "data:application/octet-stream;base64,AA==", byteLength: 512 * 1024 * 1024 }, + ], + images: [{ uri: "data:image/png;base64,AA==" }], + }); + const app = createAppWithVaultFiles({ + "models/assembly.gltf": { size: 2048, text: gltfText }, + }); + + await expect(getModelPathByteSize(app, "models/assembly.gltf")) + .resolves.toBe(2048); + }); + it("uses Node stat only for absolute filesystem paths", async () => { nodeShimMocks.moduleLoadCount.value = 0; nodeShimMocks.stat.mockResolvedValueOnce({ size: 654321 }); diff --git a/src/view/model-render-budget.ts b/src/view/model-render-budget.ts index 8704387..a0ec5de 100644 --- a/src/view/model-render-budget.ts +++ b/src/view/model-render-budget.ts @@ -5,6 +5,17 @@ export type RenderQualityBudget = Pick 0 ? normalized.slice(0, sepIdx) : ""; +} + +function shouldSkipExternalResourceUri(uri: string | undefined): boolean { + if (!uri || uri.startsWith("data:")) { + return true; + } + return REMOTE_URI_RE.test(uri) && !looksLikeAbsoluteFilesystemPath(uri); +} + +function normalizedResourceKey(uri: string): string { + return normalizePortableRelativePath(stripUriSuffix(uri)); +} + export async function getModelPathByteSize(app: App, path: string): Promise { + const baseSize = await getSinglePathByteSize(app, path); + if (baseSize === null) { + return null; + } + if (!path.toLowerCase().split(/[?#]/, 1)[0].endsWith(".gltf")) { + return baseSize; + } + return estimateGltfAggregateByteSize(app, path, baseSize); +} + +async function getSinglePathByteSize(app: App, path: string): Promise { if (looksLikeAbsoluteFilesystemPath(path)) { try { const { stat } = await import("../utils/node-shim"); @@ -82,6 +156,96 @@ export async function getModelPathByteSize(app: App, path: string): Promise { + if (looksLikeAbsoluteFilesystemPath(path)) { + try { + const { readFile } = await import("../utils/node-shim"); + return new TextDecoder().decode(await readFile(path)); + } catch { + return null; + } + } + + const file = app.vault.getAbstractFileByPath(path); + const vault = app.vault as typeof app.vault & { read?: (file: TFile) => Promise }; + if (!file || typeof vault.read !== "function") { + return null; + } + try { + return await vault.read(file as TFile); + } catch { + return null; + } +} + +async function getExternalResourceByteSize(app: App, modelPath: string, uri: string): Promise { + if (looksLikeAbsoluteFilesystemPath(modelPath)) { + try { + const { pathJoin, pathNormalize, stat } = await import("../utils/node-shim"); + const cleanUri = stripUriSuffix(decodePortableUri(uri)); + const modelDir = pathNormalize(modelPath.replace(/[\\/][^\\/]*$/, "")); + const resourcePath = looksLikeAbsoluteFilesystemPath(cleanUri) + ? pathNormalize(cleanUri) + : pathNormalize(pathJoin(modelDir, cleanUri)); + const stats = await stat(resourcePath); + return stats.size; + } catch { + return null; + } + } + + const modelDir = getPortableDirname(modelPath); + const resourcePath = joinPortablePath(modelDir, uri); + const file = app.vault.getAbstractFileByPath(resourcePath); + return isFileWithSize(file) ? file.stat.size : null; +} + +async function estimateGltfAggregateByteSize(app: App, path: string, baseSize: number): Promise { + const text = await readGltfText(app, path); + if (!text) { + return baseSize; + } + + let manifest: GltfSizeManifest; + try { + manifest = JSON.parse(text) as GltfSizeManifest; + } catch { + return baseSize; + } + + let total = baseSize; + const seen = new Set(); + const addResource = async (resource: GltfExternalResource | undefined, fallbackByteLength?: number): Promise => { + const uri = resource?.uri; + if (!uri || shouldSkipExternalResourceUri(uri)) { + return; + } + const key = normalizedResourceKey(uri); + if (!key || seen.has(key)) { + return; + } + seen.add(key); + + const size = await getExternalResourceByteSize(app, path, uri); + if (size !== null && Number.isFinite(size) && size > 0) { + total += size; + return; + } + const declaredSize = resource?.byteLength ?? fallbackByteLength; + if (Number.isFinite(declaredSize) && (declaredSize ?? 0) > 0) { + total += declaredSize ?? 0; + } + }; + + for (const buffer of manifest.buffers ?? []) { + await addResource(buffer, buffer.byteLength); + } + for (const image of manifest.images ?? []) { + await addResource(image); + } + return total; +} + function isFileWithSize(value: unknown): value is TFile { const file = value as Partial | null | undefined; return !!file &&