From 30c8037574b4eab1bb0b6f75673efb67579ac648 Mon Sep 17 00:00:00 2001 From: flash555588 Date: Mon, 6 Jul 2026 21:08:49 +0800 Subject: [PATCH] Cap measurement corner snap radius --- CHANGELOG.md | 1 + main.js | 1168 ++++++++++++------------ src/render/babylon/scene.ts | 3 +- src/render/preview/measurement.test.ts | 13 + src/render/preview/measurement.ts | 23 + src/render/three/scene.ts | 3 +- 6 files changed, 625 insertions(+), 586 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5e0d0d..de24954 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - UI: require the locked measurement target to be the frontmost normal pick before snapping, preventing hidden target geometry behind another part from receiving ruler endpoints. - UI: clear stale measurement snap status after cancelling a pending endpoint so the selected-object ruler returns to a neutral ready state. - UI: keep the measurement strip in Free pick status while Alt/Option previewing the backup free ruler path, even when the pointer is over empty canvas space. +- UI: cap selected-object corner snapping by target edge scale so large grouped selections do not over-prioritize distant vertices when the pointer is closer to an edge. - Performance: cache selected-target measurement snap candidates while measuring so hover previews do not repeatedly rebuild vertex and edge lists for the same object. - Performance: validate selected-target measurement snap caches against target mesh signatures so transformed or updated geometry rebuilds snap candidates instead of reusing stale vertex and edge lists. - UI: restyle distance measurements as orthographic drawing-style dimension callouts with extension lines, arrowheads, and compact drafting labels instead of thick freehand ruler lines. diff --git a/main.js b/main.js index 95d08e5..e335d1d 100644 --- a/main.js +++ b/main.js @@ -1,10 +1,10 @@ -"use strict";var ey=Object.defineProperty;var Wee=Object.getOwnPropertyDescriptor;var zee=Object.getOwnPropertyNames;var Hee=Object.prototype.hasOwnProperty;var y=(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)ey(n,t,{get:e[t],enumerable:!0})},Xee=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of zee(e))!Hee.call(n,r)&&r!==t&&ey(n,r,{get:()=>e[r],enumerable:!(i=Wee(e,r))||i.enumerable});return n};var Yee=n=>Xee(ey({},"__esModule",{value:!0}),n);function Bd(n,e,t){return`${n}::${e}::${t}`}function t3(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 e3(n,e=Date.now()){let t=new Map;for(let i of n){if(!t3(i,e))continue;let r=Bd(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 Kee(n,e){if(n.length>200)return null;let t=new Set,i=Number.POSITIVE_INFINITY;for(let r of n){if(!t3(r,e))return null;let s=Bd(r.sourcePath,r.sourceExt,r.targetExt);if(t.has(s)||r.createdAt>i)return null;t.add(s),i=r.createdAt}return n}function jee(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 iy=Object.defineProperty;var zee=Object.getOwnPropertyDescriptor;var Hee=Object.getOwnPropertyNames;var Xee=Object.prototype.hasOwnProperty;var y=(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)iy(n,t,{get:e[t],enumerable:!0})},Yee=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Hee(e))!Xee.call(n,r)&&r!==t&&iy(n,r,{get:()=>e[r],enumerable:!(i=zee(e,r))||i.enumerable});return n};var Kee=n=>Yee(iy({},"__esModule",{value:!0}),n);function Bd(n,e,t){return`${n}::${e}::${t}`}function i3(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 t3(n,e=Date.now()){let t=new Map;for(let i of n){if(!i3(i,e))continue;let r=Bd(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 jee(n,e){if(n.length>200)return null;let t=new Set,i=Number.POSITIVE_INFINITY;for(let r of n){if(!i3(r,e))return null;let s=Bd(r.sourcePath,r.sourceExt,r.targetExt);if(t.has(s)||r.createdAt>i)return null;t.add(s),i=r.createdAt}return n}function qee(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 i3(n=[],e){var c;function t(){return e3([...a.values()])}function i(f){a.clear();for(let d of f)a.set(Bd(d.sourcePath,d.sourceExt,d.targetExt),d)}let r=Date.now(),s=(c=Kee(n,r))!=null?c:e3(n,r),a=new Map(s.map(f=>[Bd(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)=>!jee(f,n[d])))&&(e==null||e([...s])),{get(f,d,u){return a.get(Bd(f,d,u))},set(f){a.set(Bd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,u){let h=a.delete(Bd(f,d,u));return h&&o(),h},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var ty=y(()=>{"use strict"});function na(n){return n.trim().toLowerCase().replace(/^\./,"")}function Cg(n){return qee.get(na(n))}function lo(n){let e=Cg(n);return!!(e!=null&&e.enabled)}function Pg(n){return["splat","spz","sog"].includes(na(n))}function Xl(){return r3.filter(n=>n.enabled).map(n=>n.ext)}var r3,qee,La=y(()=>{"use strict";r3=[{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}],qee=new Map(r3.map(n=>[n.ext,n]))});var $xe,cf,iy=y(()=>{"use strict";La();$xe=new Set(Xl()),cf={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",auxiliaryFileFolder:"",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"babylon-safe",useThreeRenderer:!1,useThreeForConvertedDirectView:!0,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1.5,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function n3(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 s3=y(()=>{"use strict"});function XE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function Ah(n){return[XE(n[0]),XE(n[1]),XE(n[2])]}function a3(n){return Object.is(XE(n),n)}var YE=y(()=>{"use strict"});function o3(n){return n.trim()}function Zee(n){let e=o3(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 Qee(n){return n.map(o3).filter(e=>e.length>0)}function l3(n){let e=Qee(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!Zee(t)).slice(0,16)}function ry(n){let e=l3(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function xh(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:l3(n),registeredMatches:void 0}}var KE=y(()=>{"use strict"});function h3(n){let e=n3($ee),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(u=>console.error("[AI3D] Auto-save failed:",u))},500)}function o(){i+=1,a()}function l(){let u=e.getState();return{stateSchemaVersion:c3,settings:u.settings,convertedAssetRecords:u.convertedAssetRecords,modelAssetProfiles:u.modelAssetProfiles,agentDraft:u.agentDraft,agentPlan:u.agentPlan,lastKnowledgeGeneration:u.lastKnowledgeGeneration}}function c(u=!1){return u&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;rh[m]!==g)&&(e.setState({settings:{...h,...u}}),o())},setLastKnowledgeGeneration(u){u!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:u}),o())},async load(){var p,_,v,E,T;let u=await n.loadData();if(!u)return;d=!!((p=u.settings)!=null&&p.locale);let h=u.stateSchemaVersion===c3,{profiles:m,changed:g}=ete(u.modelAssetProfiles,{trustPersistedSchema:h});e.setState({settings:{...cf,...(_=u.settings)!=null?_:{}},convertedAssetRecords:(v=u.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(E=u.agentDraft)!=null?E:"",agentPlan:(T=u.agentPlan)!=null?T:null,lastKnowledgeGeneration:lte(u.lastKnowledgeGeneration)}),(g||!h)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(S=>console.error("[AI3D] Normalized state save failed:",S))},Jee))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(u=>console.error("[AI3D] Final save on dispose failed:",u))}}}function ete(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&&tte(s)){t[r]=s;continue}let a=new Date().toISOString(),o=ote(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 tte(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<=jE)&&co(n.analysisVersion)&&co(n.reportNotePath)&&co(n.analysisSidecarPath)&&co(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function Dg(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 Lg(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 f3(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Ah(e):void 0}function qE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&a3(Number(e)))}function m3(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function ite(n){return n===void 0||m3(n)===n}function sy(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 d3(n){return n===void 0||sy(n)===n}function p3(n){return n==="direct"||n==="convert"?n:void 0}function rte(n){return n===void 0||p3(n)===n}function co(n){return n===void 0||typeof n=="string"}function ny(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function nte(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&&co(e.parentPartId)&&ite(e.source)&&co(e.componentId)&&co(e.occurrenceId)&&co(e.partNumber)&&co(e.componentPath)&&co(e.category)&&Lg(e.meshRefs,16)&&ny(e.childCount)&&Lg(e.materialRefs,32)&&(e.bbox===void 0||qE(e.bbox))&&(e.center===void 0||qE(e.center))&&ny(e.triangleCount)&&ny(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&d3(e.sourceFormat)&&d3(e.effectiveFormat)&&rte(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&Lg(e.observations,16)&&ry(e)&&Lg(e.inferredFunctions)&&Lg(e.knowledgeTags)&&co(e.notePath)&&typeof e.reviewed=="boolean"}function ste(n){if(n.length===0)return;if(n.length>jE)return null;let e=new Set;for(let t of n){if(!nte(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function u3(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function ate(n){return n.length<=jE?n:[...n].sort((e,t)=>{var s,a;let i=u3(e)-u3(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,jE)}function ote(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=ste(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&&!qE(l.bbox)||l.center!==void 0&&!qE(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,u=`${d}:${c}`;if(r.has(u))continue;r.add(u);let h={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:m3(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:Dg(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:Dg(l.materialRefs,32),bbox:f3(l.bbox),center:f3(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:sy(l.sourceFormat),effectiveFormat:sy(l.effectiveFormat),loadStrategy:p3(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:Dg(l.observations,16),inferredFunctions:Dg(l.inferredFunctions),knowledgeTags:Dg(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=xh(h);ry(h)||(s=!0),i.push(m)}let a=ate(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function lte(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 ay(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var $ee,jE,Jee,c3,oy=y(()=>{"use strict";iy();s3();YE();KE();$ee={settings:{...cf},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},jE=256,Jee=50,c3=1});var ly,g3=y(()=>{"use strict";ly={"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.auxiliaryFileFolder":"Auxiliary file folder","settings.auxiliaryFileFolder.desc":"Vault folder for generated side files such as converted GLB assets. Leave empty to keep them under the Obsidian config folder.","settings.auxiliaryFileFolder.placeholder":"Leave empty for the hidden config folder","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 (Default)","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view","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.useThreeForConvertedDirectView":"Converted GLB Three fast path","settings.useThreeForConvertedDirectView.desc":"When opening STEP, FBX, 3MF, DAE, and other converted files, load the generated GLB with Three.js first and silently fall back to Babylon.js if it fails. Turn this off to make converted files follow the normal compatibility mode.","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":"Choose how AI Model Workbench writes its settings, preview controls, diagnostics, and knowledge-workflow labels. The switch is immediate and stays local to this vault.","settings.language.englishName":"English","settings.language.chineseName":"Simplified Chinese","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 CAD bridge (cadquery, trimesh, OCP STEP/glTF)","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":"Render scale","settings.renderScale.desc":"Canvas 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.","directView.deferredLoadTitle":"Model preview paused","directView.deferredLoadMessage":"This large or conversion-backed model is paused before loading to keep the vault responsive.","directView.deferredLoadButton":"Load model","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 render scale","helper.resolutionValue":"Render scale: {value}","helper.cameraZoomLabel":"Camera zoom","helper.cameraZoomValue":"Zoom: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Measure selected object; Alt/Option-click for free pick","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.measurementStripTitle":"Measure","helper.measurementStripActive":"Active","helper.measurementSelectTarget":"Select target","helper.measurementPickStart":"Pick start","helper.measurementPickEnd":"Pick end","helper.measurementSnapVertex":"Snap: vertex","helper.measurementSnapEdge":"Snap: edge","helper.measurementSnapFree":"Free pick","helper.measurementTargetLabel":"Target: {target}","helper.measurementTargetMissing":"Click object","helper.measurementReviewing":"Reviewing","helper.measurementStripSaved":"{count} saved","helper.measurementStripEmpty":"No distance","helper.measurementStripMeta":"{count} measurements / {unit}","helper.measurementRecordsTitle":"Records","helper.measurementNoRecords":"No saved measurements","helper.measurementCalibrationTitle":"Reference scale","helper.measurementModelSizeTitle":"Model calibration","helper.measurementUnitLabel":"Unit:","helper.calibrateLabel":"Model scale","helper.calibrateTitle":"Model scale","helper.calibrateReference":"Latest ruler:","helper.calibrateReferenceEmpty":"Measure a distance first","helper.calibrateReferencePlaceholder":"Real length","helper.calibrateReferenceApply":"Scale model","helper.calibrateCurrent":"Model size:","helper.calibrateReal":"Known size:","helper.calibrateLock":"Uniform","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Model scale applied","helper.calibrateNeedsValue":"Enter a positive target size","helper.calibrateResetDone":"Model scale reset","helper.calibrateOpen":"Model scale opened","helper.calibrateClose":"Model scale 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}","previewCanvas.gridLabel":"3D model grid preview","previewCanvas.liveLabel":"Embedded 3D model preview: {model}","previewCanvas.directLabel":"3D file preview: {model}","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 _3,v3=y(()=>{"use strict";_3={"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.auxiliaryFileFolder":"\u8F85\u52A9\u6587\u4EF6\u5939","settings.auxiliaryFileFolder.desc":"\u7528\u4E8E\u5B58\u653E\u8F6C\u6362\u540E\u7684 GLB \u7B49\u63D2\u4EF6\u751F\u6210\u7684\u526F\u6587\u4EF6\u3002\u7559\u7A7A\u65F6\u7EE7\u7EED\u653E\u5728 Obsidian \u914D\u7F6E\u76EE\u5F55\u4E0B\u3002","settings.auxiliaryFileFolder.placeholder":"\u7559\u7A7A\u4F7F\u7528\u9690\u85CF\u914D\u7F6E\u76EE\u5F55","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\uFF08\u9ED8\u8BA4\uFF09","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE","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.useThreeForConvertedDirectView":"\u8F6C\u6362 GLB \u7684 Three \u5FEB\u901F\u8DEF\u5F84","settings.useThreeForConvertedDirectView.desc":"\u6253\u5F00 STEP\u3001FBX\u30013MF\u3001DAE \u7B49\u9700\u8981\u8F6C\u6362\u7684\u6587\u4EF6\u65F6\uFF0C\u5148\u7528 Three.js \u52A0\u8F7D\u751F\u6210\u7684 GLB\uFF0C\u5931\u8D25\u540E\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002\u5173\u95ED\u540E\u8F6C\u6362\u6587\u4EF6\u4F1A\u9075\u5FAA\u666E\u901A\u517C\u5BB9\u6A21\u5F0F\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":"\u9009\u62E9 AI Model Workbench \u5728\u8BBE\u7F6E\u3001\u9884\u89C8\u63A7\u4EF6\u3001\u8BCA\u65AD\u4FE1\u606F\u548C\u77E5\u8BC6\u6D41\u7A0B\u6807\u7B7E\u4E2D\u7684\u8868\u8FBE\u65B9\u5F0F\u3002\u5207\u6362\u4F1A\u7ACB\u5373\u751F\u6548\uFF0C\u5E76\u4E14\u53EA\u4FDD\u5B58\u5728\u5F53\u524D\u4ED3\u5E93\u3002","settings.language.englishName":"English","settings.language.chineseName":"\u7B80\u4F53\u4E2D\u6587","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":"\u753B\u5E03\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","directView.deferredLoadTitle":"\u6A21\u578B\u9884\u89C8\u5DF2\u6682\u505C","directView.deferredLoadMessage":"\u8FD9\u4E2A\u5927\u578B\u6216\u9700\u8981\u8F6C\u6362\u7684\u6A21\u578B\u4F1A\u5148\u6682\u505C\u52A0\u8F7D\uFF0C\u4EE5\u4FDD\u6301\u4ED3\u5E93\u54CD\u5E94\u3002","directView.deferredLoadButton":"\u52A0\u8F7D\u6A21\u578B","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\u6E32\u67D3\u7F29\u653E","helper.resolutionValue":"\u6E32\u67D3\u7F29\u653E\uFF1A{value}","helper.cameraZoomLabel":"\u76F8\u673A\u7F29\u653E","helper.cameraZoomValue":"\u7F29\u653E\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u6D4B\u91CF\u6240\u9009\u5BF9\u8C61\uFF1B\u6309 Alt/Option \u81EA\u7531\u53D6\u70B9","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.measurementStripTitle":"\u6D4B\u91CF","helper.measurementStripActive":"\u8FDB\u884C\u4E2D","helper.measurementSelectTarget":"\u9009\u62E9\u76EE\u6807","helper.measurementPickStart":"\u9009\u62E9\u8D77\u70B9","helper.measurementPickEnd":"\u9009\u62E9\u7EC8\u70B9","helper.measurementSnapVertex":"\u5438\u9644\uFF1A\u9876\u70B9","helper.measurementSnapEdge":"\u5438\u9644\uFF1A\u8FB9","helper.measurementSnapFree":"\u81EA\u7531\u53D6\u70B9","helper.measurementTargetLabel":"\u76EE\u6807\uFF1A{target}","helper.measurementTargetMissing":"\u70B9\u51FB\u5BF9\u8C61","helper.measurementReviewing":"\u67E5\u770B\u6D4B\u91CF","helper.measurementStripSaved":"{count} \u6761","helper.measurementStripEmpty":"\u672A\u8BB0\u5F55","helper.measurementStripMeta":"{count} \u6761 / {unit}","helper.measurementRecordsTitle":"\u8BB0\u5F55","helper.measurementNoRecords":"\u6682\u65E0\u4FDD\u5B58\u7684\u6D4B\u91CF","helper.measurementCalibrationTitle":"\u53C2\u8003\u7F29\u653E","helper.measurementModelSizeTitle":"\u6A21\u578B\u6821\u51C6","helper.measurementUnitLabel":"\u5355\u4F4D\uFF1A","helper.calibrateLabel":"\u6A21\u578B\u7F29\u653E","helper.calibrateTitle":"\u6A21\u578B\u7F29\u653E","helper.calibrateReference":"\u6700\u65B0\u5C3A\u5B50\uFF1A","helper.calibrateReferenceEmpty":"\u8BF7\u5148\u6D4B\u91CF\u4E00\u6BB5\u8DDD\u79BB","helper.calibrateReferencePlaceholder":"\u771F\u5B9E\u957F\u5EA6","helper.calibrateReferenceApply":"\u7F29\u653E\u6A21\u578B","helper.calibrateCurrent":"\u6A21\u578B\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u5DF2\u77E5\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u7B49\u6BD4","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6A21\u578B\u7F29\u653E\u5DF2\u5E94\u7528","helper.calibrateNeedsValue":"\u8BF7\u8F93\u5165\u6B63\u6570\u76EE\u6807\u5C3A\u5BF8","helper.calibrateResetDone":"\u6A21\u578B\u7F29\u653E\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6A21\u578B\u7F29\u653E\u5DF2\u5C55\u5F00","helper.calibrateClose":"\u6A21\u578B\u7F29\u653E\u5DF2\u6536\u8D77","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}","previewCanvas.gridLabel":"3D model grid preview","previewCanvas.liveLabel":"Embedded 3D model preview: {model}","previewCanvas.directLabel":"3D file preview: {model}","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 Rh(n){E3=n;for(let e of cy)e()}function X(n){var e,t,i;return(i=(t=(e=cte[E3])==null?void 0:e[n])!=null?t:ly[n])!=null?i:n}function S3(n){return cy.add(n),()=>{cy.delete(n)}}function fte(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function Bi(n,e){return fte(X(n),e)}var cte,E3,cy,En=y(()=>{"use strict";g3();v3();cte={en:ly,"zh-CN":_3},E3="en",cy=new Set});var Ud,ZE=y(()=>{"use strict";Ud="ai3d-direct-view"});function Vd(n){var t,i;n.classList.add(T3),(t=n.closest(".workspace-leaf"))==null||t.classList.add(A3);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.add(x3)}function QE(n){var t,i;n.classList.remove(T3),(t=n.closest(".workspace-leaf"))==null||t.classList.remove(A3);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.remove(x3)}var T3,A3,x3,fy=y(()=>{"use strict";T3="ai3d-direct-view",A3="ai3d-direct-view-leaf",x3="ai3d-direct-view-leaf-content"});var b3={};Be(b3,{listPreferredConversionExts:()=>ff});function ff(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var Fg=y(()=>{"use strict"});function mte(n){return n!=null?n:y3}function bh(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=mte(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(M3.has(e)&&(!s||r)){if(s&&!hte.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 M3.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!==y3&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function I3(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var y3,M3,hte,$E=y(()=>{"use strict";y3="babylon-safe",M3=new Set(["glb","gltf","stl","ply","obj"]),hte=new Set(["glb","gltf"])});function pte(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function gte(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Kh(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function ZB(){let n=Kh("canvas");return n.style.display="block",n}function $g(...n){let e="THREE."+n.shift();jh?jh("log",e,...n):console.log(e,...n)}function QB(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 Dt(...n){n=QB(n);let e="THREE."+n.shift();if(jh)jh("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function kt(...n){n=QB(n);let e="THREE."+n.shift();if(jh)jh("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function GS(...n){let e=n.join(" ");e in C3||(C3[e]=!0,Dt(...n))}function $B(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 go(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Un[n&255]+Un[n>>8&255]+Un[n>>16&255]+Un[n>>24&255]+"-"+Un[e&255]+Un[e>>8&255]+"-"+Un[e>>16&15|64]+Un[e>>24&255]+"-"+Un[t&63|128]+Un[t>>8&255]+"-"+Un[t>>16&255]+Un[t>>24&255]+Un[i&255]+Un[i>>8&255]+Un[i>>16&255]+Un[i>>24&255]).toLowerCase()}function Si(n,e,t){return Math.max(e,Math.min(t,n))}function pI(n,e){return(n%e+e)%e}function _te(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function vte(n,e,t){return n!==e?(t-n)/(e-n):0}function qg(n,e,t){return(1-t)*n+t*e}function Ete(n,e,t,i){return qg(n,e,1-Math.exp(-t*i))}function Ste(n,e=1){return e-Math.abs(pI(n,e*2)-e)}function Tte(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function Ate(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function xte(n,e){return n+Math.floor(Math.random()*(e-n+1))}function Rte(n,e){return n+Math.random()*(e-n)}function bte(n){return n*(.5-Math.random())}function Mte(n){n!==void 0&&(P3=n);let e=P3+=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 yte(n){return n*jg}function Ite(n){return n*Qd}function Cte(n){return(n&n-1)===0&&n!==0}function Pte(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Dte(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Lte(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),u=a((e-i)/2),h=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*u,o*c);break;case"YZY":n.set(l*u,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*u,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*h,o*c);break;case"YXY":n.set(l*h,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*h,o*f,o*c);break;default:Dt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function mo(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 nr(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 Ote(){let n={enabled:!0,workingColorSpace:cs,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===tr&&(r.r=Jl(r.r),r.g=Jl(r.g),r.b=Jl(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===tr&&(r.r=Hh(r.r),r.g=Hh(r.g),r.b=Hh(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===nc?Qg: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 GS("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return GS("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({[cs]:{primaries:e,whitePoint:i,transfer:Qg,toXYZ:L3,fromXYZ:O3,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Li},outputColorSpaceConfig:{drawingBufferColorSpace:Li}},[Li]:{primaries:e,whitePoint:i,transfer:tr,toXYZ:L3,fromXYZ:O3,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Li}}}),n}function Jl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Hh(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function hy(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?kS.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(Dt("Texture: Unable to serialize Texture."),{})}function gy(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 Ry(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){kd.fromArray(n,s);let o=r.x*Math.abs(kd.x)+r.y*Math.abs(kd.y)+r.z*Math.abs(kd.z),l=e.dot(kd),c=t.dot(kd),f=i.dot(kd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function lS(n,e,t,i,r,s){Vh.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Wg.x=s*Vh.x-r*Vh.y,Wg.y=r*Vh.x+s*Vh.y):Wg.copy(Vh),n.copy(e),n.x+=Wg.x,n.y+=Wg.y,n.applyMatrix4(t2)}function Kte(n,e,t,i,r,s,a,o){let l;if(e.side===yn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===la,o),l===null)return null;gS.copy(o),gS.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(gS);return ct.far?null:{distance:c,point:gS.clone(),object:n}}function _S(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,uS),n.getVertexPosition(l,hS),n.getVertexPosition(c,mS);let f=Kte(n,e,t,i,uS,hS,mS,Y3);if(f){let d=new re;$l.getBarycoord(Y3,uS,hS,mS,d),r&&(f.uv=$l.getInterpolatedAttribute(r,o,l,c,d,new yt)),s&&(f.uv1=$l.getInterpolatedAttribute(s,o,l,c,d,new yt)),a&&(f.normal=$l.getInterpolatedAttribute(a,o,l,c,d,new re),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let u={a:o,b:l,c,normal:new re,materialIndex:0};$l.getNormal(uS,hS,mS,u.normal),f.face=u,f.barycoord=d}return f}function AS(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if(HS.fromBufferAttribute(o,r),XS.fromBufferAttribute(o,s),t.distanceSqToSegment(HS,XS,wy,tB)>i)return;wy.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(wy);if(!(ce.far))return{distance:c,point:tB.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function sB(n,e,t,i,r,s,a){let o=ky.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 lu(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(aB(r))r.isRenderTargetTexture?(Dt("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(aB(r[0])){let s=[];for(let a=0,o=r.length;a{xf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Rf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},pB=0,qy=1,gB=2,E_=1,aT=2,lm=3,la=0,yn=1,Ba=2,fl=0,Kd=1,Zy=2,Qy=3,$y=4,_B=5,_f=100,vB=101,EB=102,SB=103,TB=104,AB=200,xB=201,RB=202,bB=203,PS=204,DS=205,MB=206,yB=207,IB=208,CB=209,PB=210,DB=211,LB=212,OB=213,NB=214,LS=0,OS=1,NS=2,jd=3,wS=4,FS=5,BS=6,US=7,S_=0,wB=1,FB=2,ws=0,Jy=1,eI=2,tI=3,iI=4,rI=5,nI=6,sI=7,Uy="attached",BB="detached",aI=300,bf=301,au=302,oT=303,lT=304,T_=306,tl=1e3,wa=1001,Xh=1002,Vr=1003,cT=1004,ou=1005,Gr=1006,cm=1007,So=1008,Fs=1009,oI=1010,lI=1011,fm=1012,fT=1013,To=1014,da=1015,dl=1016,dT=1017,uT=1018,dm=1020,cI=35902,fI=35899,dI=1021,uI=1022,ua=1023,il=1026,Mf=1027,hT=1028,mT=1029,yf=1030,pT=1031,gT=1033,A_=33776,x_=33777,R_=33778,b_=33779,_T=35840,vT=35841,ET=35842,ST=35843,TT=36196,AT=37492,xT=37496,RT=37488,bT=37489,M_=37490,MT=37491,yT=37808,IT=37809,CT=37810,PT=37811,DT=37812,LT=37813,OT=37814,NT=37815,wT=37816,FT=37817,BT=37818,UT=37819,VT=37820,GT=37821,kT=36492,WT=36494,zT=36495,HT=36283,XT=36284,y_=36285,YT=36286,UB=2200,VB=2201,GB=2202,qd=2300,Zd=2301,CS=2302,Vy=2303,Xd=2400,Yd=2401,Zg=2402,KT=2500,kB=2501,hI=0,I_=1,um=2,WB=3200,hm=0,zB=1,nc="",Li="srgb",cs="srgb-linear",Qg="linear",tr="srgb",Hd=7680,Gy=519,HB=512,XB=513,YB=514,jT=515,KB=516,jB=517,qT=518,qB=519,VS=35044,mI="300 es",po=2e3,Yh=2001;C3={},jh=null;JB={[LS]:OS,[NS]:BS,[wS]:US,[jd]:FS,[OS]:LS,[BS]:NS,[US]:wS,[FS]:jd},Fa=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 h=.5/Math.sqrt(u+1);this._w=.25/h,this._x=(f-l)*h,this._y=(s-c)*h,this._z=(a-r)*h}else if(i>o&&i>d){let h=2*Math.sqrt(1+i-o-d);this._w=(f-l)/h,this._x=.25*h,this._y=(r+a)/h,this._z=(s+c)/h}else if(o>d){let h=2*Math.sqrt(1+o-i-d);this._w=(s-c)/h,this._x=(r+a)/h,this._y=.25*h,this._z=(l+f)/h}else{let h=2*Math.sqrt(1+d-i-o);this._w=(a-r)/h,this._x=(s+c)/h,this._y=(l+f)/h,this._z=.25*h}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(Si(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}},TI=class TI{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(D3.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(D3.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=Si(this.x,e.x,t.x),this.y=Si(this.y,e.y,t.y),this.z=Si(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Si(this.x,e,t),this.y=Si(this.y,e,t),this.z=Si(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Si(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 dy.copy(this).projectOnVector(e),this.sub(dy)}reflect(e){return this.sub(dy.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(Si(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}};TI.prototype.isVector3=!0;re=TI,dy=new re,D3=new on,AI=class AI{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],u=i[2],h=i[5],m=i[8],g=r[0],p=r[3],_=r[6],v=r[1],E=r[4],T=r[7],S=r[2],A=r[5],R=r[8];return s[0]=a*g+o*v+l*S,s[3]=a*p+o*E+l*A,s[6]=a*_+o*T+l*R,s[1]=c*g+f*v+d*S,s[4]=c*p+f*E+d*A,s[7]=c*_+f*T+d*R,s[2]=u*g+h*v+m*S,s[5]=u*p+h*E+m*A,s[8]=u*_+h*T+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,u=o*l-f*s,h=c*s-a*l,m=t*d+i*u+r*h;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let g=1/m;return e[0]=d*g,e[1]=(r*c-f*i)*g,e[2]=(o*i-r*a)*g,e[3]=u*g,e[4]=(f*t-r*l)*g,e[5]=(r*s-o*t)*g,e[6]=h*g,e[7]=(i*l-c*t)*g,e[8]=(a*t-i*s)*g,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(uy.makeScale(e,t)),this}rotate(e){return this.premultiply(uy.makeRotation(-e)),this}translate(e,t){return this.premultiply(uy.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)}};AI.prototype.isMatrix3=!0;ni=AI,uy=new ni,L3=new ni().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),O3=new ni().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);fi=Ote();kS=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{Mh===void 0&&(Mh=Kh("canvas")),Mh.width=e.width,Mh.height=e.height;let r=Mh.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=Mh}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=Kh("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(my).x}get height(){return this.source.getSize(my).y}get depth(){return this.source.getSize(my).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){Dt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Dt(`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!==aI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case tl:e.x=e.x-Math.floor(e.x);break;case wa:e.x=e.x<0?0:1;break;case Xh: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 tl:e.y=e.y-Math.floor(e.y);break;case wa:e.y=e.y<0?0:1;break;case Xh: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++}};Pr.DEFAULT_IMAGE=null;Pr.DEFAULT_MAPPING=aI;Pr.DEFAULT_ANISOTROPY=1;xI=class xI{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],u=l[1],h=l[5],m=l[9],g=l[2],p=l[6],_=l[10];if(Math.abs(f-u)<.01&&Math.abs(d-g)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+u)<.1&&Math.abs(d+g)<.1&&Math.abs(m+p)<.1&&Math.abs(c+h+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let E=(c+1)/2,T=(h+1)/2,S=(_+1)/2,A=(f+u)/4,R=(d+g)/4,M=(m+p)/4;return E>T&&E>S?E<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(E),r=A/i,s=R/i):T>S?T<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(T),i=A/r,s=M/r):S<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(S),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-g)*(d-g)+(u-f)*(u-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-g)/v,this.z=(u-f)/v,this.w=Math.acos((c+h+_-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=Si(this.x,e.x,t.x),this.y=Si(this.y,e.y,t.y),this.z=Si(this.z,e.z,t.z),this.w=Si(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Si(this.x,e,t),this.y=Si(this.y,e,t),this.z=Si(this.z,e,t),this.w=Si(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Si(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}};xI.prototype.isVector4=!0;lr=xI,WS=class extends Fa{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Gr,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 lr(0,0,e,t),this.scissorTest=!1,this.viewport=new lr(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Pr(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),u.length>0&&(i.skeletons=u),h.length>0&&(i.animations=h),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;ih+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&u<=h-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(Wte)))}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 oa;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},e2={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},uf={h:0,s:0,l:0},tS={h:0,s:0,l:0};ht=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=Li){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,fi.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=fi.workingColorSpace){return this.r=e,this.g=t,this.b=i,fi.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=fi.workingColorSpace){if(e=pI(e,1),t=Si(t,0,1),i=Si(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=gy(a,s,e+1/3),this.g=gy(a,s,e),this.b=gy(a,s,e-1/3)}return fi.colorSpaceToWorking(this,r),this}setStyle(e,t=Li){function i(s){s!==void 0&&parseFloat(s)<1&&Dt("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:Dt("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);Dt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Li){let i=e2[e.toLowerCase()];return i!==void 0?this.setHex(i,t):Dt("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=Jl(e.r),this.g=Jl(e.g),this.b=Jl(e.b),this}copyLinearToSRGB(e){return this.r=Hh(e.r),this.g=Hh(e.g),this.b=Hh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Li){return fi.workingToColorSpace(Vn.copy(this),e),Math.round(Si(Vn.r*255,0,255))*65536+Math.round(Si(Vn.g*255,0,255))*256+Math.round(Si(Vn.b*255,0,255))}getHexString(e=Li){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=fi.workingColorSpace){fi.workingToColorSpace(Vn.copy(this),t);let i=Vn.r,r=Vn.g,s=Vn.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}},uo=new re,Kl=new re,_y=new re,jl=new re,Ph=new re,Dh=new re,k3=new re,vy=new re,Ey=new re,Sy=new re,Ty=new lr,Ay=new lr,xy=new lr,$l=class n{constructor(e=new re,t=new re,i=new re){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),uo.subVectors(e,t),r.cross(uo);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){uo.subVectors(r,t),Kl.subVectors(i,t),_y.subVectors(e,t);let a=uo.dot(uo),o=uo.dot(Kl),l=uo.dot(_y),c=Kl.dot(Kl),f=Kl.dot(_y),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let u=1/d,h=(c*l-o*f)*u,m=(a*f-o*l)*u;return s.set(1-h-m,m,h)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,jl)===null?!1:jl.x>=0&&jl.y>=0&&jl.x+jl.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,jl)===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,jl.x),l.addScaledVector(a,jl.y),l.addScaledVector(o,jl.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return Ty.setScalar(0),Ay.setScalar(0),xy.setScalar(0),Ty.fromBufferAttribute(e,t),Ay.fromBufferAttribute(e,i),xy.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(Ty,s.x),a.addScaledVector(Ay,s.y),a.addScaledVector(xy,s.z),a}static isFrontFacing(e,t,i,r){return uo.subVectors(i,t),Kl.subVectors(e,t),uo.cross(Kl).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 uo.subVectors(this.c,this.b),Kl.subVectors(this.a,this.b),uo.cross(Kl).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;Ph.subVectors(r,i),Dh.subVectors(s,i),vy.subVectors(e,i);let l=Ph.dot(vy),c=Dh.dot(vy);if(l<=0&&c<=0)return t.copy(i);Ey.subVectors(e,r);let f=Ph.dot(Ey),d=Dh.dot(Ey);if(f>=0&&d<=f)return t.copy(r);let u=l*d-f*c;if(u<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector(Ph,a);Sy.subVectors(e,s);let h=Ph.dot(Sy),m=Dh.dot(Sy);if(m>=0&&h<=m)return t.copy(s);let g=h*c-l*m;if(g<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(Dh,o);let p=f*m-h*d;if(p<=0&&d-f>=0&&h-m>=0)return k3.subVectors(s,r),o=(d-f)/(d-f+(h-m)),t.copy(r).addScaledVector(k3,o);let _=1/(p+g+u);return a=g*_,o=u*_,t.copy(i).addScaledVector(Ph,a).addScaledVector(Dh,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},kr=class{constructor(e=new re(1/0,1/0,1/0),t=new re(-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,ho),ho.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(Ug),rS.subVectors(this.max,Ug),Lh.subVectors(e.a,Ug),Oh.subVectors(e.b,Ug),Nh.subVectors(e.c,Ug),hf.subVectors(Oh,Lh),mf.subVectors(Nh,Oh),Gd.subVectors(Lh,Nh);let t=[0,-hf.z,hf.y,0,-mf.z,mf.y,0,-Gd.z,Gd.y,hf.z,0,-hf.x,mf.z,0,-mf.x,Gd.z,0,-Gd.x,-hf.y,hf.x,0,-mf.y,mf.x,0,-Gd.y,Gd.x,0];return!Ry(t,Lh,Oh,Nh,rS)||(t=[1,0,0,0,1,0,0,0,1],!Ry(t,Lh,Oh,Nh,rS))?!1:(nS.crossVectors(hf,mf),t=[nS.x,nS.y,nS.z],Ry(t,Lh,Oh,Nh,rS))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,ho).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(ho).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:(ql[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ql[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ql[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ql[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ql[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ql[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ql[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ql[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ql),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}},ql=[new re,new re,new re,new re,new re,new re,new re,new re],ho=new re,iS=new kr,Lh=new re,Oh=new re,Nh=new re,hf=new re,mf=new re,Gd=new re,Ug=new re,rS=new re,nS=new re,kd=new re;Qr=new re,sS=new yt,zte=0,vr=class extends Fa{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:zte++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=VS,this.updateRanges=[],this.gpuType=da,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;Vg.subVectors(e,this.center);let t=Vg.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Vg,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):(by.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Vg.copy(e.center).add(by)),this.expandByPoint(Vg.copy(e.center).sub(by))),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}},Xte=0,Oa=new di,My=new ir,wh=new re,aa=new kr,Gg=new kr,Sn=new re,Hi=class n extends Fa{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Xte++}),this.uuid=go(),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(pte(e)?t_:e_)(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 ni().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 Oa.makeRotationFromQuaternion(e),this.applyMatrix4(Oa),this}rotateX(e){return Oa.makeRotationX(e),this.applyMatrix4(Oa),this}rotateY(e){return Oa.makeRotationY(e),this.applyMatrix4(Oa),this}rotateZ(e){return Oa.makeRotationZ(e),this.applyMatrix4(Oa),this}translate(e,t,i){return Oa.makeTranslation(e,t,i),this.applyMatrix4(Oa),this}scale(e,t,i){return Oa.makeScale(e,t,i),this.applyMatrix4(Oa),this}lookAt(e){return My.lookAt(e),My.updateMatrix(),this.applyMatrix4(My.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wh).negate(),this.translate(wh.x,wh.y,wh.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&Dt("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 kr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){kt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new re(-1/0,-1/0,-1/0),new re(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,u=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 u=0,h=d.length;u0!=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){Dt(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Dt(`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!==Kd&&(i.blending=this.blending),this.side!==la&&(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!==PS&&(i.blendSrc=this.blendSrc),this.blendDst!==DS&&(i.blendDst=this.blendDst),this.blendEquation!==_f&&(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!==jd&&(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!==Gy&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Hd&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Hd&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Hd&&(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++}},$h=class extends Wr{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ht(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}},kg=new re,Bh=new re,Uh=new re,Vh=new yt,Wg=new yt,t2=new di,aS=new re,zg=new re,oS=new re,W3=new yt,yy=new yt,z3=new yt,i_=class extends ir{constructor(e=new $h){if(super(),this.isSprite=!0,this.type="Sprite",Fh===void 0){Fh=new Hi;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 Jd(t,5);Fh.setIndex([0,1,2,0,2,3]),Fh.setAttribute("position",new vf(i,3,0,!1)),Fh.setAttribute("uv",new vf(i,2,3,!1))}this.geometry=Fh,this.material=e,this.center=new yt(.5,.5),this.count=1}raycast(e,t){e.camera===null&&kt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Bh.setFromMatrixScale(this.matrixWorld),t2.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Uh.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&Bh.multiplyScalar(-Uh.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;lS(aS.set(-.5,-.5,0),Uh,a,Bh,r,s),lS(zg.set(.5,-.5,0),Uh,a,Bh,r,s),lS(oS.set(.5,.5,0),Uh,a,Bh,r,s),W3.set(0,0),yy.set(1,0),z3.set(1,1);let o=e.ray.intersectTriangle(aS,zg,oS,!1,kg);if(o===null&&(lS(zg.set(-.5,.5,0),Uh,a,Bh,r,s),yy.set(0,1),o=e.ray.intersectTriangle(aS,oS,zg,!1,kg),o===null))return;let l=e.ray.origin.distanceTo(kg);le.far||t.push({distance:l,point:kg.clone(),uv:$l.getInterpolation(kg,aS,zg,oS,W3,yy,z3,new yt),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}};Zl=new re,Iy=new re,cS=new re,pf=new re,Cy=new re,fS=new re,Py=new re,rl=class{constructor(e=new re,t=new re(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,Zl)),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=Zl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Zl.copy(this.origin).addScaledVector(this.direction,t),Zl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Iy.copy(e).add(t).multiplyScalar(.5),cS.copy(t).sub(e).normalize(),pf.copy(this.origin).sub(Iy);let s=e.distanceTo(t)*.5,a=-this.direction.dot(cS),o=pf.dot(this.direction),l=-pf.dot(cS),c=pf.lengthSq(),f=Math.abs(1-a*a),d,u,h,m;if(f>0)if(d=a*l-o,u=a*o-l,m=s*f,d>=0)if(u>=-m)if(u<=m){let g=1/f;d*=g,u*=g,h=d*(d+a*u+2*o)+u*(a*d+u+2*l)+c}else u=s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;else u=-s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;else u<=-m?(d=Math.max(0,-(-a*s+o)),u=d>0?-s:Math.min(Math.max(-s,-l),s),h=-d*d+u*(u+2*l)+c):u<=m?(d=0,u=Math.min(Math.max(-s,-l),s),h=u*(u+2*l)+c):(d=Math.max(0,-(a*s+o)),u=d>0?s:Math.min(Math.max(-s,-l),s),h=-d*d+u*(u+2*l)+c);else u=a>0?-s:s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(Iy).addScaledVector(cS,u),h}intersectSphere(e,t){Zl.subVectors(e.center,this.origin);let i=Zl.dot(this.direction),r=Zl.dot(Zl)-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,u=this.origin;return c>=0?(i=(e.min.x-u.x)*c,r=(e.max.x-u.x)*c):(i=(e.max.x-u.x)*c,r=(e.min.x-u.x)*c),f>=0?(s=(e.min.y-u.y)*f,a=(e.max.y-u.y)*f):(s=(e.max.y-u.y)*f,a=(e.min.y-u.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-u.z)*d,l=(e.max.z-u.z)*d):(o=(e.max.z-u.z)*d,l=(e.min.z-u.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Zl)!==null}intersectTriangle(e,t,i,r,s){Cy.subVectors(t,e),fS.subVectors(i,e),Py.crossVectors(Cy,fS);let a=this.direction.dot(Py),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;pf.subVectors(this.origin,e);let l=o*this.direction.dot(fS.crossVectors(pf,fS));if(l<0)return null;let c=o*this.direction.dot(Cy.cross(pf));if(c<0||l+c>a)return null;let f=-o*pf.dot(Py);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)}},fs=class extends Wr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ht(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 _o,this.combine=S_,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}},H3=new di,Wd=new rl,dS=new Is,X3=new re,uS=new re,hS=new re,mS=new re,Dy=new re,pS=new re,Y3=new re,gS=new re,ui=class extends ir{constructor(e=new Hi,t=new fs){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))&&(H3.copy(s).invert(),Wd.copy(e.ray).applyMatrix4(H3),!(i.boundingBox!==null&&Wd.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Wd)))}_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,u=s.groups,h=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,g=u.length;m1)?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||$te.getNormalMatrix(e),r=this.coplanarPoint(Ny).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)}},zd=new Is,Jte=new yt(.5,.5),SS=new re,tm=class{constructor(e=new Na,t=new Na,i=new Na,r=new Na,s=new Na,a=new Na){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=po,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],u=s[6],h=s[7],m=s[8],g=s[9],p=s[10],_=s[11],v=s[12],E=s[13],T=s[14],S=s[15];if(r[0].setComponents(c-a,h-f,_-m,S-v).normalize(),r[1].setComponents(c+a,h+f,_+m,S+v).normalize(),r[2].setComponents(c+o,h+d,_+g,S+E).normalize(),r[3].setComponents(c-o,h-d,_-g,S-E).normalize(),i)r[4].setComponents(l,u,p,T).normalize(),r[5].setComponents(c-l,h-u,_-p,S-T).normalize();else if(r[4].setComponents(c-l,h-u,_-p,S-T).normalize(),t===po)r[5].setComponents(c+l,h+u,_+p,S+T).normalize();else if(t===Yh)r[5].setComponents(l,u,p,T).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(),zd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),zd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(zd)}intersectsSprite(e){zd.center.set(0,0,0);let t=Jte.distanceTo(e.center);return zd.radius=.7071067811865476+t,zd.applyMatrix4(e.matrixWorld),this.intersectsSphere(zd)}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,SS.y=r.normal.y>0?e.max.y:e.min.y,SS.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(SS)<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)}},Gn=class extends Wr{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ht(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}},HS=new re,XS=new re,eB=new di,Kg=new rl,TS=new Is,wy=new re,tB=new re,tu=class extends ir{constructor(e=new Hi,t=new Gn){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(j.x,j.y,j.z),d.push(Y/R),d.push(1-J/M),V+=1}}for(let J=0;J0)&&h.push(E,T,A),(_!==i-1||l[Bd(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)=>!qee(f,n[d])))&&(e==null||e([...s])),{get(f,d,u){return a.get(Bd(f,d,u))},set(f){a.set(Bd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,u){let h=a.delete(Bd(f,d,u));return h&&o(),h},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var ry=y(()=>{"use strict"});function sa(n){return n.trim().toLowerCase().replace(/^\./,"")}function Cg(n){return Zee.get(sa(n))}function lo(n){let e=Cg(n);return!!(e!=null&&e.enabled)}function Pg(n){return["splat","spz","sog"].includes(sa(n))}function Xl(){return n3.filter(n=>n.enabled).map(n=>n.ext)}var n3,Zee,Oa=y(()=>{"use strict";n3=[{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}],Zee=new Map(n3.map(n=>[n.ext,n]))});var tRe,cf,ny=y(()=>{"use strict";Oa();tRe=new Set(Xl()),cf={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",auxiliaryFileFolder:"",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"babylon-safe",useThreeRenderer:!1,useThreeForConvertedDirectView:!0,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1.5,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function s3(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 a3=y(()=>{"use strict"});function XE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function Ah(n){return[XE(n[0]),XE(n[1]),XE(n[2])]}function o3(n){return Object.is(XE(n),n)}var YE=y(()=>{"use strict"});function l3(n){return n.trim()}function Qee(n){let e=l3(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 $ee(n){return n.map(l3).filter(e=>e.length>0)}function c3(n){let e=$ee(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!Qee(t)).slice(0,16)}function sy(n){let e=c3(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function xh(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:c3(n),registeredMatches:void 0}}var KE=y(()=>{"use strict"});function m3(n){let e=s3(Jee),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(u=>console.error("[AI3D] Auto-save failed:",u))},500)}function o(){i+=1,a()}function l(){let u=e.getState();return{stateSchemaVersion:f3,settings:u.settings,convertedAssetRecords:u.convertedAssetRecords,modelAssetProfiles:u.modelAssetProfiles,agentDraft:u.agentDraft,agentPlan:u.agentPlan,lastKnowledgeGeneration:u.lastKnowledgeGeneration}}function c(u=!1){return u&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;rh[m]!==g)&&(e.setState({settings:{...h,...u}}),o())},setLastKnowledgeGeneration(u){u!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:u}),o())},async load(){var p,_,v,E,T;let u=await n.loadData();if(!u)return;d=!!((p=u.settings)!=null&&p.locale);let h=u.stateSchemaVersion===f3,{profiles:m,changed:g}=tte(u.modelAssetProfiles,{trustPersistedSchema:h});e.setState({settings:{...cf,...(_=u.settings)!=null?_:{}},convertedAssetRecords:(v=u.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(E=u.agentDraft)!=null?E:"",agentPlan:(T=u.agentPlan)!=null?T:null,lastKnowledgeGeneration:cte(u.lastKnowledgeGeneration)}),(g||!h)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(S=>console.error("[AI3D] Normalized state save failed:",S))},ete))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(u=>console.error("[AI3D] Final save on dispose failed:",u))}}}function tte(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&&ite(s)){t[r]=s;continue}let a=new Date().toISOString(),o=lte(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 ite(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<=jE)&&co(n.analysisVersion)&&co(n.reportNotePath)&&co(n.analysisSidecarPath)&&co(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function Dg(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 Lg(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 d3(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Ah(e):void 0}function qE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&o3(Number(e)))}function p3(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function rte(n){return n===void 0||p3(n)===n}function oy(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 u3(n){return n===void 0||oy(n)===n}function g3(n){return n==="direct"||n==="convert"?n:void 0}function nte(n){return n===void 0||g3(n)===n}function co(n){return n===void 0||typeof n=="string"}function ay(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function ste(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&&co(e.parentPartId)&&rte(e.source)&&co(e.componentId)&&co(e.occurrenceId)&&co(e.partNumber)&&co(e.componentPath)&&co(e.category)&&Lg(e.meshRefs,16)&&ay(e.childCount)&&Lg(e.materialRefs,32)&&(e.bbox===void 0||qE(e.bbox))&&(e.center===void 0||qE(e.center))&&ay(e.triangleCount)&&ay(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&u3(e.sourceFormat)&&u3(e.effectiveFormat)&&nte(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&Lg(e.observations,16)&&sy(e)&&Lg(e.inferredFunctions)&&Lg(e.knowledgeTags)&&co(e.notePath)&&typeof e.reviewed=="boolean"}function ate(n){if(n.length===0)return;if(n.length>jE)return null;let e=new Set;for(let t of n){if(!ste(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function h3(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function ote(n){return n.length<=jE?n:[...n].sort((e,t)=>{var s,a;let i=h3(e)-h3(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,jE)}function lte(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=ate(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&&!qE(l.bbox)||l.center!==void 0&&!qE(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,u=`${d}:${c}`;if(r.has(u))continue;r.add(u);let h={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:p3(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:Dg(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:Dg(l.materialRefs,32),bbox:d3(l.bbox),center:d3(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:oy(l.sourceFormat),effectiveFormat:oy(l.effectiveFormat),loadStrategy:g3(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:Dg(l.observations,16),inferredFunctions:Dg(l.inferredFunctions),knowledgeTags:Dg(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=xh(h);sy(h)||(s=!0),i.push(m)}let a=ote(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function cte(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 ly(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var Jee,jE,ete,f3,cy=y(()=>{"use strict";ny();a3();YE();KE();Jee={settings:{...cf},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},jE=256,ete=50,f3=1});var fy,_3=y(()=>{"use strict";fy={"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.auxiliaryFileFolder":"Auxiliary file folder","settings.auxiliaryFileFolder.desc":"Vault folder for generated side files such as converted GLB assets. Leave empty to keep them under the Obsidian config folder.","settings.auxiliaryFileFolder.placeholder":"Leave empty for the hidden config folder","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 (Default)","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view","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.useThreeForConvertedDirectView":"Converted GLB Three fast path","settings.useThreeForConvertedDirectView.desc":"When opening STEP, FBX, 3MF, DAE, and other converted files, load the generated GLB with Three.js first and silently fall back to Babylon.js if it fails. Turn this off to make converted files follow the normal compatibility mode.","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":"Choose how AI Model Workbench writes its settings, preview controls, diagnostics, and knowledge-workflow labels. The switch is immediate and stays local to this vault.","settings.language.englishName":"English","settings.language.chineseName":"Simplified Chinese","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 CAD bridge (cadquery, trimesh, OCP STEP/glTF)","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":"Render scale","settings.renderScale.desc":"Canvas 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.","directView.deferredLoadTitle":"Model preview paused","directView.deferredLoadMessage":"This large or conversion-backed model is paused before loading to keep the vault responsive.","directView.deferredLoadButton":"Load model","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 render scale","helper.resolutionValue":"Render scale: {value}","helper.cameraZoomLabel":"Camera zoom","helper.cameraZoomValue":"Zoom: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Measure selected object; Alt/Option-click for free pick","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.measurementStripTitle":"Measure","helper.measurementStripActive":"Active","helper.measurementSelectTarget":"Select target","helper.measurementPickStart":"Pick start","helper.measurementPickEnd":"Pick end","helper.measurementSnapVertex":"Snap: vertex","helper.measurementSnapEdge":"Snap: edge","helper.measurementSnapFree":"Free pick","helper.measurementTargetLabel":"Target: {target}","helper.measurementTargetMissing":"Click object","helper.measurementReviewing":"Reviewing","helper.measurementStripSaved":"{count} saved","helper.measurementStripEmpty":"No distance","helper.measurementStripMeta":"{count} measurements / {unit}","helper.measurementRecordsTitle":"Records","helper.measurementNoRecords":"No saved measurements","helper.measurementCalibrationTitle":"Reference scale","helper.measurementModelSizeTitle":"Model calibration","helper.measurementUnitLabel":"Unit:","helper.calibrateLabel":"Model scale","helper.calibrateTitle":"Model scale","helper.calibrateReference":"Latest ruler:","helper.calibrateReferenceEmpty":"Measure a distance first","helper.calibrateReferencePlaceholder":"Real length","helper.calibrateReferenceApply":"Scale model","helper.calibrateCurrent":"Model size:","helper.calibrateReal":"Known size:","helper.calibrateLock":"Uniform","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Model scale applied","helper.calibrateNeedsValue":"Enter a positive target size","helper.calibrateResetDone":"Model scale reset","helper.calibrateOpen":"Model scale opened","helper.calibrateClose":"Model scale 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}","previewCanvas.gridLabel":"3D model grid preview","previewCanvas.liveLabel":"Embedded 3D model preview: {model}","previewCanvas.directLabel":"3D file preview: {model}","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 v3,E3=y(()=>{"use strict";v3={"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.auxiliaryFileFolder":"\u8F85\u52A9\u6587\u4EF6\u5939","settings.auxiliaryFileFolder.desc":"\u7528\u4E8E\u5B58\u653E\u8F6C\u6362\u540E\u7684 GLB \u7B49\u63D2\u4EF6\u751F\u6210\u7684\u526F\u6587\u4EF6\u3002\u7559\u7A7A\u65F6\u7EE7\u7EED\u653E\u5728 Obsidian \u914D\u7F6E\u76EE\u5F55\u4E0B\u3002","settings.auxiliaryFileFolder.placeholder":"\u7559\u7A7A\u4F7F\u7528\u9690\u85CF\u914D\u7F6E\u76EE\u5F55","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\uFF08\u9ED8\u8BA4\uFF09","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE","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.useThreeForConvertedDirectView":"\u8F6C\u6362 GLB \u7684 Three \u5FEB\u901F\u8DEF\u5F84","settings.useThreeForConvertedDirectView.desc":"\u6253\u5F00 STEP\u3001FBX\u30013MF\u3001DAE \u7B49\u9700\u8981\u8F6C\u6362\u7684\u6587\u4EF6\u65F6\uFF0C\u5148\u7528 Three.js \u52A0\u8F7D\u751F\u6210\u7684 GLB\uFF0C\u5931\u8D25\u540E\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002\u5173\u95ED\u540E\u8F6C\u6362\u6587\u4EF6\u4F1A\u9075\u5FAA\u666E\u901A\u517C\u5BB9\u6A21\u5F0F\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":"\u9009\u62E9 AI Model Workbench \u5728\u8BBE\u7F6E\u3001\u9884\u89C8\u63A7\u4EF6\u3001\u8BCA\u65AD\u4FE1\u606F\u548C\u77E5\u8BC6\u6D41\u7A0B\u6807\u7B7E\u4E2D\u7684\u8868\u8FBE\u65B9\u5F0F\u3002\u5207\u6362\u4F1A\u7ACB\u5373\u751F\u6548\uFF0C\u5E76\u4E14\u53EA\u4FDD\u5B58\u5728\u5F53\u524D\u4ED3\u5E93\u3002","settings.language.englishName":"English","settings.language.chineseName":"\u7B80\u4F53\u4E2D\u6587","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":"\u753B\u5E03\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","directView.deferredLoadTitle":"\u6A21\u578B\u9884\u89C8\u5DF2\u6682\u505C","directView.deferredLoadMessage":"\u8FD9\u4E2A\u5927\u578B\u6216\u9700\u8981\u8F6C\u6362\u7684\u6A21\u578B\u4F1A\u5148\u6682\u505C\u52A0\u8F7D\uFF0C\u4EE5\u4FDD\u6301\u4ED3\u5E93\u54CD\u5E94\u3002","directView.deferredLoadButton":"\u52A0\u8F7D\u6A21\u578B","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\u6E32\u67D3\u7F29\u653E","helper.resolutionValue":"\u6E32\u67D3\u7F29\u653E\uFF1A{value}","helper.cameraZoomLabel":"\u76F8\u673A\u7F29\u653E","helper.cameraZoomValue":"\u7F29\u653E\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u6D4B\u91CF\u6240\u9009\u5BF9\u8C61\uFF1B\u6309 Alt/Option \u81EA\u7531\u53D6\u70B9","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.measurementStripTitle":"\u6D4B\u91CF","helper.measurementStripActive":"\u8FDB\u884C\u4E2D","helper.measurementSelectTarget":"\u9009\u62E9\u76EE\u6807","helper.measurementPickStart":"\u9009\u62E9\u8D77\u70B9","helper.measurementPickEnd":"\u9009\u62E9\u7EC8\u70B9","helper.measurementSnapVertex":"\u5438\u9644\uFF1A\u9876\u70B9","helper.measurementSnapEdge":"\u5438\u9644\uFF1A\u8FB9","helper.measurementSnapFree":"\u81EA\u7531\u53D6\u70B9","helper.measurementTargetLabel":"\u76EE\u6807\uFF1A{target}","helper.measurementTargetMissing":"\u70B9\u51FB\u5BF9\u8C61","helper.measurementReviewing":"\u67E5\u770B\u6D4B\u91CF","helper.measurementStripSaved":"{count} \u6761","helper.measurementStripEmpty":"\u672A\u8BB0\u5F55","helper.measurementStripMeta":"{count} \u6761 / {unit}","helper.measurementRecordsTitle":"\u8BB0\u5F55","helper.measurementNoRecords":"\u6682\u65E0\u4FDD\u5B58\u7684\u6D4B\u91CF","helper.measurementCalibrationTitle":"\u53C2\u8003\u7F29\u653E","helper.measurementModelSizeTitle":"\u6A21\u578B\u6821\u51C6","helper.measurementUnitLabel":"\u5355\u4F4D\uFF1A","helper.calibrateLabel":"\u6A21\u578B\u7F29\u653E","helper.calibrateTitle":"\u6A21\u578B\u7F29\u653E","helper.calibrateReference":"\u6700\u65B0\u5C3A\u5B50\uFF1A","helper.calibrateReferenceEmpty":"\u8BF7\u5148\u6D4B\u91CF\u4E00\u6BB5\u8DDD\u79BB","helper.calibrateReferencePlaceholder":"\u771F\u5B9E\u957F\u5EA6","helper.calibrateReferenceApply":"\u7F29\u653E\u6A21\u578B","helper.calibrateCurrent":"\u6A21\u578B\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u5DF2\u77E5\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u7B49\u6BD4","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6A21\u578B\u7F29\u653E\u5DF2\u5E94\u7528","helper.calibrateNeedsValue":"\u8BF7\u8F93\u5165\u6B63\u6570\u76EE\u6807\u5C3A\u5BF8","helper.calibrateResetDone":"\u6A21\u578B\u7F29\u653E\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6A21\u578B\u7F29\u653E\u5DF2\u5C55\u5F00","helper.calibrateClose":"\u6A21\u578B\u7F29\u653E\u5DF2\u6536\u8D77","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}","previewCanvas.gridLabel":"3D model grid preview","previewCanvas.liveLabel":"Embedded 3D model preview: {model}","previewCanvas.directLabel":"3D file preview: {model}","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 Rh(n){S3=n;for(let e of dy)e()}function X(n){var e,t,i;return(i=(t=(e=fte[S3])==null?void 0:e[n])!=null?t:fy[n])!=null?i:n}function T3(n){return dy.add(n),()=>{dy.delete(n)}}function dte(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function Bi(n,e){return dte(X(n),e)}var fte,S3,dy,En=y(()=>{"use strict";_3();E3();fte={en:fy,"zh-CN":v3},S3="en",dy=new Set});var Ud,ZE=y(()=>{"use strict";Ud="ai3d-direct-view"});function Vd(n){var t,i;n.classList.add(A3),(t=n.closest(".workspace-leaf"))==null||t.classList.add(x3);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.add(R3)}function QE(n){var t,i;n.classList.remove(A3),(t=n.closest(".workspace-leaf"))==null||t.classList.remove(x3);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.remove(R3)}var A3,x3,R3,uy=y(()=>{"use strict";A3="ai3d-direct-view",x3="ai3d-direct-view-leaf",R3="ai3d-direct-view-leaf-content"});var M3={};Be(M3,{listPreferredConversionExts:()=>ff});function ff(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var Fg=y(()=>{"use strict"});function pte(n){return n!=null?n:I3}function bh(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=pte(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(y3.has(e)&&(!s||r)){if(s&&!mte.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 y3.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!==I3&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function C3(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var I3,y3,mte,$E=y(()=>{"use strict";I3="babylon-safe",y3=new Set(["glb","gltf","stl","ply","obj"]),mte=new Set(["glb","gltf"])});function gte(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function _te(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Kh(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function QB(){let n=Kh("canvas");return n.style.display="block",n}function $g(...n){let e="THREE."+n.shift();jh?jh("log",e,...n):console.log(e,...n)}function $B(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 Dt(...n){n=$B(n);let e="THREE."+n.shift();if(jh)jh("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function kt(...n){n=$B(n);let e="THREE."+n.shift();if(jh)jh("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function GS(...n){let e=n.join(" ");e in P3||(P3[e]=!0,Dt(...n))}function JB(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 go(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Un[n&255]+Un[n>>8&255]+Un[n>>16&255]+Un[n>>24&255]+"-"+Un[e&255]+Un[e>>8&255]+"-"+Un[e>>16&15|64]+Un[e>>24&255]+"-"+Un[t&63|128]+Un[t>>8&255]+"-"+Un[t>>16&255]+Un[t>>24&255]+Un[i&255]+Un[i>>8&255]+Un[i>>16&255]+Un[i>>24&255]).toLowerCase()}function Si(n,e,t){return Math.max(e,Math.min(t,n))}function _I(n,e){return(n%e+e)%e}function vte(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function Ete(n,e,t){return n!==e?(t-n)/(e-n):0}function qg(n,e,t){return(1-t)*n+t*e}function Ste(n,e,t,i){return qg(n,e,1-Math.exp(-t*i))}function Tte(n,e=1){return e-Math.abs(_I(n,e*2)-e)}function Ate(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function xte(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function Rte(n,e){return n+Math.floor(Math.random()*(e-n+1))}function bte(n,e){return n+Math.random()*(e-n)}function Mte(n){return n*(.5-Math.random())}function yte(n){n!==void 0&&(D3=n);let e=D3+=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 Ite(n){return n*jg}function Cte(n){return n*Qd}function Pte(n){return(n&n-1)===0&&n!==0}function Dte(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Lte(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Ote(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),u=a((e-i)/2),h=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*u,o*c);break;case"YZY":n.set(l*u,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*u,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*h,o*c);break;case"YXY":n.set(l*h,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*h,o*f,o*c);break;default:Dt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function mo(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 nr(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 Nte(){let n={enabled:!0,workingColorSpace:cs,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===tr&&(r.r=Jl(r.r),r.g=Jl(r.g),r.b=Jl(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===tr&&(r.r=Hh(r.r),r.g=Hh(r.g),r.b=Hh(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===nc?Qg: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 GS("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return GS("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({[cs]:{primaries:e,whitePoint:i,transfer:Qg,toXYZ:O3,fromXYZ:N3,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Li},outputColorSpaceConfig:{drawingBufferColorSpace:Li}},[Li]:{primaries:e,whitePoint:i,transfer:tr,toXYZ:O3,fromXYZ:N3,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Li}}}),n}function Jl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Hh(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function py(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?kS.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(Dt("Texture: Unable to serialize Texture."),{})}function vy(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 My(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){kd.fromArray(n,s);let o=r.x*Math.abs(kd.x)+r.y*Math.abs(kd.y)+r.z*Math.abs(kd.z),l=e.dot(kd),c=t.dot(kd),f=i.dot(kd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function lS(n,e,t,i,r,s){Vh.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Wg.x=s*Vh.x-r*Vh.y,Wg.y=r*Vh.x+s*Vh.y):Wg.copy(Vh),n.copy(e),n.x+=Wg.x,n.y+=Wg.y,n.applyMatrix4(i2)}function jte(n,e,t,i,r,s,a,o){let l;if(e.side===yn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===ca,o),l===null)return null;gS.copy(o),gS.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(gS);return ct.far?null:{distance:c,point:gS.clone(),object:n}}function _S(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,uS),n.getVertexPosition(l,hS),n.getVertexPosition(c,mS);let f=jte(n,e,t,i,uS,hS,mS,K3);if(f){let d=new re;$l.getBarycoord(K3,uS,hS,mS,d),r&&(f.uv=$l.getInterpolatedAttribute(r,o,l,c,d,new yt)),s&&(f.uv1=$l.getInterpolatedAttribute(s,o,l,c,d,new yt)),a&&(f.normal=$l.getInterpolatedAttribute(a,o,l,c,d,new re),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let u={a:o,b:l,c,normal:new re,materialIndex:0};$l.getNormal(uS,hS,mS,u.normal),f.face=u,f.barycoord=d}return f}function AS(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if(HS.fromBufferAttribute(o,r),XS.fromBufferAttribute(o,s),t.distanceSqToSegment(HS,XS,By,iB)>i)return;By.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(By);if(!(ce.far))return{distance:c,point:iB.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function aB(n,e,t,i,r,s,a){let o=zy.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 lu(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(oB(r))r.isRenderTargetTexture?(Dt("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(oB(r[0])){let s=[];for(let a=0,o=r.length;a{xf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Rf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},gB=0,Qy=1,_B=2,E_=1,aT=2,lm=3,ca=0,yn=1,Ua=2,fl=0,Kd=1,$y=2,Jy=3,eI=4,vB=5,_f=100,EB=101,SB=102,TB=103,AB=104,xB=200,RB=201,bB=202,MB=203,PS=204,DS=205,yB=206,IB=207,CB=208,PB=209,DB=210,LB=211,OB=212,NB=213,wB=214,LS=0,OS=1,NS=2,jd=3,wS=4,FS=5,BS=6,US=7,S_=0,FB=1,BB=2,ws=0,tI=1,iI=2,rI=3,nI=4,sI=5,aI=6,oI=7,Gy="attached",UB="detached",lI=300,bf=301,au=302,oT=303,lT=304,T_=306,tl=1e3,Fa=1001,Xh=1002,Vr=1003,cT=1004,ou=1005,Gr=1006,cm=1007,So=1008,Fs=1009,cI=1010,fI=1011,fm=1012,fT=1013,To=1014,ua=1015,dl=1016,dT=1017,uT=1018,dm=1020,dI=35902,uI=35899,hI=1021,mI=1022,ha=1023,il=1026,Mf=1027,hT=1028,mT=1029,yf=1030,pT=1031,gT=1033,A_=33776,x_=33777,R_=33778,b_=33779,_T=35840,vT=35841,ET=35842,ST=35843,TT=36196,AT=37492,xT=37496,RT=37488,bT=37489,M_=37490,MT=37491,yT=37808,IT=37809,CT=37810,PT=37811,DT=37812,LT=37813,OT=37814,NT=37815,wT=37816,FT=37817,BT=37818,UT=37819,VT=37820,GT=37821,kT=36492,WT=36494,zT=36495,HT=36283,XT=36284,y_=36285,YT=36286,VB=2200,GB=2201,kB=2202,qd=2300,Zd=2301,CS=2302,ky=2303,Xd=2400,Yd=2401,Zg=2402,KT=2500,WB=2501,pI=0,I_=1,um=2,zB=3200,hm=0,HB=1,nc="",Li="srgb",cs="srgb-linear",Qg="linear",tr="srgb",Hd=7680,Wy=519,XB=512,YB=513,KB=514,jT=515,jB=516,qB=517,qT=518,ZB=519,VS=35044,gI="300 es",po=2e3,Yh=2001;P3={},jh=null;e2={[LS]:OS,[NS]:BS,[wS]:US,[jd]:FS,[OS]:LS,[BS]:NS,[US]:wS,[FS]:jd},Ba=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 h=.5/Math.sqrt(u+1);this._w=.25/h,this._x=(f-l)*h,this._y=(s-c)*h,this._z=(a-r)*h}else if(i>o&&i>d){let h=2*Math.sqrt(1+i-o-d);this._w=(f-l)/h,this._x=.25*h,this._y=(r+a)/h,this._z=(s+c)/h}else if(o>d){let h=2*Math.sqrt(1+o-i-d);this._w=(s-c)/h,this._x=(r+a)/h,this._y=.25*h,this._z=(l+f)/h}else{let h=2*Math.sqrt(1+d-i-o);this._w=(a-r)/h,this._x=(s+c)/h,this._y=(l+f)/h,this._z=.25*h}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(Si(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}},xI=class xI{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(L3.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(L3.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=Si(this.x,e.x,t.x),this.y=Si(this.y,e.y,t.y),this.z=Si(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Si(this.x,e,t),this.y=Si(this.y,e,t),this.z=Si(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Si(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 hy.copy(this).projectOnVector(e),this.sub(hy)}reflect(e){return this.sub(hy.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(Si(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}};xI.prototype.isVector3=!0;re=xI,hy=new re,L3=new on,RI=class RI{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],u=i[2],h=i[5],m=i[8],g=r[0],p=r[3],_=r[6],v=r[1],E=r[4],T=r[7],S=r[2],A=r[5],R=r[8];return s[0]=a*g+o*v+l*S,s[3]=a*p+o*E+l*A,s[6]=a*_+o*T+l*R,s[1]=c*g+f*v+d*S,s[4]=c*p+f*E+d*A,s[7]=c*_+f*T+d*R,s[2]=u*g+h*v+m*S,s[5]=u*p+h*E+m*A,s[8]=u*_+h*T+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,u=o*l-f*s,h=c*s-a*l,m=t*d+i*u+r*h;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let g=1/m;return e[0]=d*g,e[1]=(r*c-f*i)*g,e[2]=(o*i-r*a)*g,e[3]=u*g,e[4]=(f*t-r*l)*g,e[5]=(r*s-o*t)*g,e[6]=h*g,e[7]=(i*l-c*t)*g,e[8]=(a*t-i*s)*g,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(my.makeScale(e,t)),this}rotate(e){return this.premultiply(my.makeRotation(-e)),this}translate(e,t){return this.premultiply(my.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)}};RI.prototype.isMatrix3=!0;ni=RI,my=new ni,O3=new ni().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),N3=new ni().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);fi=Nte();kS=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{Mh===void 0&&(Mh=Kh("canvas")),Mh.width=e.width,Mh.height=e.height;let r=Mh.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=Mh}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=Kh("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(gy).x}get height(){return this.source.getSize(gy).y}get depth(){return this.source.getSize(gy).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){Dt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Dt(`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!==lI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case tl:e.x=e.x-Math.floor(e.x);break;case Fa:e.x=e.x<0?0:1;break;case Xh: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 tl:e.y=e.y-Math.floor(e.y);break;case Fa:e.y=e.y<0?0:1;break;case Xh: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++}};Pr.DEFAULT_IMAGE=null;Pr.DEFAULT_MAPPING=lI;Pr.DEFAULT_ANISOTROPY=1;bI=class bI{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],u=l[1],h=l[5],m=l[9],g=l[2],p=l[6],_=l[10];if(Math.abs(f-u)<.01&&Math.abs(d-g)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+u)<.1&&Math.abs(d+g)<.1&&Math.abs(m+p)<.1&&Math.abs(c+h+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let E=(c+1)/2,T=(h+1)/2,S=(_+1)/2,A=(f+u)/4,R=(d+g)/4,M=(m+p)/4;return E>T&&E>S?E<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(E),r=A/i,s=R/i):T>S?T<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(T),i=A/r,s=M/r):S<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(S),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-g)*(d-g)+(u-f)*(u-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-g)/v,this.z=(u-f)/v,this.w=Math.acos((c+h+_-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=Si(this.x,e.x,t.x),this.y=Si(this.y,e.y,t.y),this.z=Si(this.z,e.z,t.z),this.w=Si(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Si(this.x,e,t),this.y=Si(this.y,e,t),this.z=Si(this.z,e,t),this.w=Si(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Si(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}};bI.prototype.isVector4=!0;lr=bI,WS=class extends Ba{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Gr,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 lr(0,0,e,t),this.scissorTest=!1,this.viewport=new lr(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Pr(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),u.length>0&&(i.skeletons=u),h.length>0&&(i.animations=h),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;ih+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&u<=h-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(zte)))}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 la;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},t2={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},uf={h:0,s:0,l:0},tS={h:0,s:0,l:0};ht=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=Li){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,fi.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=fi.workingColorSpace){return this.r=e,this.g=t,this.b=i,fi.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=fi.workingColorSpace){if(e=_I(e,1),t=Si(t,0,1),i=Si(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=vy(a,s,e+1/3),this.g=vy(a,s,e),this.b=vy(a,s,e-1/3)}return fi.colorSpaceToWorking(this,r),this}setStyle(e,t=Li){function i(s){s!==void 0&&parseFloat(s)<1&&Dt("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:Dt("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);Dt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Li){let i=t2[e.toLowerCase()];return i!==void 0?this.setHex(i,t):Dt("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=Jl(e.r),this.g=Jl(e.g),this.b=Jl(e.b),this}copyLinearToSRGB(e){return this.r=Hh(e.r),this.g=Hh(e.g),this.b=Hh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Li){return fi.workingToColorSpace(Vn.copy(this),e),Math.round(Si(Vn.r*255,0,255))*65536+Math.round(Si(Vn.g*255,0,255))*256+Math.round(Si(Vn.b*255,0,255))}getHexString(e=Li){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=fi.workingColorSpace){fi.workingToColorSpace(Vn.copy(this),t);let i=Vn.r,r=Vn.g,s=Vn.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}},uo=new re,Kl=new re,Ey=new re,jl=new re,Ph=new re,Dh=new re,W3=new re,Sy=new re,Ty=new re,Ay=new re,xy=new lr,Ry=new lr,by=new lr,$l=class n{constructor(e=new re,t=new re,i=new re){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),uo.subVectors(e,t),r.cross(uo);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){uo.subVectors(r,t),Kl.subVectors(i,t),Ey.subVectors(e,t);let a=uo.dot(uo),o=uo.dot(Kl),l=uo.dot(Ey),c=Kl.dot(Kl),f=Kl.dot(Ey),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let u=1/d,h=(c*l-o*f)*u,m=(a*f-o*l)*u;return s.set(1-h-m,m,h)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,jl)===null?!1:jl.x>=0&&jl.y>=0&&jl.x+jl.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,jl)===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,jl.x),l.addScaledVector(a,jl.y),l.addScaledVector(o,jl.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return xy.setScalar(0),Ry.setScalar(0),by.setScalar(0),xy.fromBufferAttribute(e,t),Ry.fromBufferAttribute(e,i),by.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(xy,s.x),a.addScaledVector(Ry,s.y),a.addScaledVector(by,s.z),a}static isFrontFacing(e,t,i,r){return uo.subVectors(i,t),Kl.subVectors(e,t),uo.cross(Kl).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 uo.subVectors(this.c,this.b),Kl.subVectors(this.a,this.b),uo.cross(Kl).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;Ph.subVectors(r,i),Dh.subVectors(s,i),Sy.subVectors(e,i);let l=Ph.dot(Sy),c=Dh.dot(Sy);if(l<=0&&c<=0)return t.copy(i);Ty.subVectors(e,r);let f=Ph.dot(Ty),d=Dh.dot(Ty);if(f>=0&&d<=f)return t.copy(r);let u=l*d-f*c;if(u<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector(Ph,a);Ay.subVectors(e,s);let h=Ph.dot(Ay),m=Dh.dot(Ay);if(m>=0&&h<=m)return t.copy(s);let g=h*c-l*m;if(g<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(Dh,o);let p=f*m-h*d;if(p<=0&&d-f>=0&&h-m>=0)return W3.subVectors(s,r),o=(d-f)/(d-f+(h-m)),t.copy(r).addScaledVector(W3,o);let _=1/(p+g+u);return a=g*_,o=u*_,t.copy(i).addScaledVector(Ph,a).addScaledVector(Dh,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},kr=class{constructor(e=new re(1/0,1/0,1/0),t=new re(-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,ho),ho.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(Ug),rS.subVectors(this.max,Ug),Lh.subVectors(e.a,Ug),Oh.subVectors(e.b,Ug),Nh.subVectors(e.c,Ug),hf.subVectors(Oh,Lh),mf.subVectors(Nh,Oh),Gd.subVectors(Lh,Nh);let t=[0,-hf.z,hf.y,0,-mf.z,mf.y,0,-Gd.z,Gd.y,hf.z,0,-hf.x,mf.z,0,-mf.x,Gd.z,0,-Gd.x,-hf.y,hf.x,0,-mf.y,mf.x,0,-Gd.y,Gd.x,0];return!My(t,Lh,Oh,Nh,rS)||(t=[1,0,0,0,1,0,0,0,1],!My(t,Lh,Oh,Nh,rS))?!1:(nS.crossVectors(hf,mf),t=[nS.x,nS.y,nS.z],My(t,Lh,Oh,Nh,rS))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,ho).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(ho).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:(ql[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ql[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ql[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ql[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ql[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ql[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ql[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ql[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ql),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}},ql=[new re,new re,new re,new re,new re,new re,new re,new re],ho=new re,iS=new kr,Lh=new re,Oh=new re,Nh=new re,hf=new re,mf=new re,Gd=new re,Ug=new re,rS=new re,nS=new re,kd=new re;Qr=new re,sS=new yt,Hte=0,vr=class extends Ba{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:Hte++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=VS,this.updateRanges=[],this.gpuType=ua,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;Vg.subVectors(e,this.center);let t=Vg.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Vg,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):(yy.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Vg.copy(e.center).add(yy)),this.expandByPoint(Vg.copy(e.center).sub(yy))),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}},Yte=0,Na=new di,Iy=new ir,wh=new re,oa=new kr,Gg=new kr,Sn=new re,Hi=class n extends Ba{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Yte++}),this.uuid=go(),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(gte(e)?t_:e_)(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 ni().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 Na.makeRotationFromQuaternion(e),this.applyMatrix4(Na),this}rotateX(e){return Na.makeRotationX(e),this.applyMatrix4(Na),this}rotateY(e){return Na.makeRotationY(e),this.applyMatrix4(Na),this}rotateZ(e){return Na.makeRotationZ(e),this.applyMatrix4(Na),this}translate(e,t,i){return Na.makeTranslation(e,t,i),this.applyMatrix4(Na),this}scale(e,t,i){return Na.makeScale(e,t,i),this.applyMatrix4(Na),this}lookAt(e){return Iy.lookAt(e),Iy.updateMatrix(),this.applyMatrix4(Iy.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(wh).negate(),this.translate(wh.x,wh.y,wh.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&Dt("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 kr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){kt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new re(-1/0,-1/0,-1/0),new re(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,u=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 u=0,h=d.length;u0!=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){Dt(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Dt(`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!==Kd&&(i.blending=this.blending),this.side!==ca&&(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!==PS&&(i.blendSrc=this.blendSrc),this.blendDst!==DS&&(i.blendDst=this.blendDst),this.blendEquation!==_f&&(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!==jd&&(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!==Wy&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Hd&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Hd&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Hd&&(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++}},$h=class extends Wr{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ht(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}},kg=new re,Bh=new re,Uh=new re,Vh=new yt,Wg=new yt,i2=new di,aS=new re,zg=new re,oS=new re,z3=new yt,Cy=new yt,H3=new yt,i_=class extends ir{constructor(e=new $h){if(super(),this.isSprite=!0,this.type="Sprite",Fh===void 0){Fh=new Hi;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 Jd(t,5);Fh.setIndex([0,1,2,0,2,3]),Fh.setAttribute("position",new vf(i,3,0,!1)),Fh.setAttribute("uv",new vf(i,2,3,!1))}this.geometry=Fh,this.material=e,this.center=new yt(.5,.5),this.count=1}raycast(e,t){e.camera===null&&kt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Bh.setFromMatrixScale(this.matrixWorld),i2.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Uh.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&Bh.multiplyScalar(-Uh.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;lS(aS.set(-.5,-.5,0),Uh,a,Bh,r,s),lS(zg.set(.5,-.5,0),Uh,a,Bh,r,s),lS(oS.set(.5,.5,0),Uh,a,Bh,r,s),z3.set(0,0),Cy.set(1,0),H3.set(1,1);let o=e.ray.intersectTriangle(aS,zg,oS,!1,kg);if(o===null&&(lS(zg.set(-.5,.5,0),Uh,a,Bh,r,s),Cy.set(0,1),o=e.ray.intersectTriangle(aS,oS,zg,!1,kg),o===null))return;let l=e.ray.origin.distanceTo(kg);le.far||t.push({distance:l,point:kg.clone(),uv:$l.getInterpolation(kg,aS,zg,oS,z3,Cy,H3,new yt),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}};Zl=new re,Py=new re,cS=new re,pf=new re,Dy=new re,fS=new re,Ly=new re,rl=class{constructor(e=new re,t=new re(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,Zl)),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=Zl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Zl.copy(this.origin).addScaledVector(this.direction,t),Zl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){Py.copy(e).add(t).multiplyScalar(.5),cS.copy(t).sub(e).normalize(),pf.copy(this.origin).sub(Py);let s=e.distanceTo(t)*.5,a=-this.direction.dot(cS),o=pf.dot(this.direction),l=-pf.dot(cS),c=pf.lengthSq(),f=Math.abs(1-a*a),d,u,h,m;if(f>0)if(d=a*l-o,u=a*o-l,m=s*f,d>=0)if(u>=-m)if(u<=m){let g=1/f;d*=g,u*=g,h=d*(d+a*u+2*o)+u*(a*d+u+2*l)+c}else u=s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;else u=-s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;else u<=-m?(d=Math.max(0,-(-a*s+o)),u=d>0?-s:Math.min(Math.max(-s,-l),s),h=-d*d+u*(u+2*l)+c):u<=m?(d=0,u=Math.min(Math.max(-s,-l),s),h=u*(u+2*l)+c):(d=Math.max(0,-(a*s+o)),u=d>0?s:Math.min(Math.max(-s,-l),s),h=-d*d+u*(u+2*l)+c);else u=a>0?-s:s,d=Math.max(0,-(a*u+o)),h=-d*d+u*(u+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(Py).addScaledVector(cS,u),h}intersectSphere(e,t){Zl.subVectors(e.center,this.origin);let i=Zl.dot(this.direction),r=Zl.dot(Zl)-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,u=this.origin;return c>=0?(i=(e.min.x-u.x)*c,r=(e.max.x-u.x)*c):(i=(e.max.x-u.x)*c,r=(e.min.x-u.x)*c),f>=0?(s=(e.min.y-u.y)*f,a=(e.max.y-u.y)*f):(s=(e.max.y-u.y)*f,a=(e.min.y-u.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-u.z)*d,l=(e.max.z-u.z)*d):(o=(e.max.z-u.z)*d,l=(e.min.z-u.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Zl)!==null}intersectTriangle(e,t,i,r,s){Dy.subVectors(t,e),fS.subVectors(i,e),Ly.crossVectors(Dy,fS);let a=this.direction.dot(Ly),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;pf.subVectors(this.origin,e);let l=o*this.direction.dot(fS.crossVectors(pf,fS));if(l<0)return null;let c=o*this.direction.dot(Dy.cross(pf));if(c<0||l+c>a)return null;let f=-o*pf.dot(Ly);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)}},fs=class extends Wr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ht(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 _o,this.combine=S_,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}},X3=new di,Wd=new rl,dS=new Is,Y3=new re,uS=new re,hS=new re,mS=new re,Oy=new re,pS=new re,K3=new re,gS=new re,ui=class extends ir{constructor(e=new Hi,t=new fs){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))&&(X3.copy(s).invert(),Wd.copy(e.ray).applyMatrix4(X3),!(i.boundingBox!==null&&Wd.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Wd)))}_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,u=s.groups,h=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,g=u.length;m1)?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||Jte.getNormalMatrix(e),r=this.coplanarPoint(Fy).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)}},zd=new Is,eie=new yt(.5,.5),SS=new re,tm=class{constructor(e=new wa,t=new wa,i=new wa,r=new wa,s=new wa,a=new wa){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=po,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],u=s[6],h=s[7],m=s[8],g=s[9],p=s[10],_=s[11],v=s[12],E=s[13],T=s[14],S=s[15];if(r[0].setComponents(c-a,h-f,_-m,S-v).normalize(),r[1].setComponents(c+a,h+f,_+m,S+v).normalize(),r[2].setComponents(c+o,h+d,_+g,S+E).normalize(),r[3].setComponents(c-o,h-d,_-g,S-E).normalize(),i)r[4].setComponents(l,u,p,T).normalize(),r[5].setComponents(c-l,h-u,_-p,S-T).normalize();else if(r[4].setComponents(c-l,h-u,_-p,S-T).normalize(),t===po)r[5].setComponents(c+l,h+u,_+p,S+T).normalize();else if(t===Yh)r[5].setComponents(l,u,p,T).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(),zd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),zd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(zd)}intersectsSprite(e){zd.center.set(0,0,0);let t=eie.distanceTo(e.center);return zd.radius=.7071067811865476+t,zd.applyMatrix4(e.matrixWorld),this.intersectsSphere(zd)}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,SS.y=r.normal.y>0?e.max.y:e.min.y,SS.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(SS)<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)}},Gn=class extends Wr{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ht(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}},HS=new re,XS=new re,tB=new di,Kg=new rl,TS=new Is,By=new re,iB=new re,tu=class extends ir{constructor(e=new Hi,t=new Gn){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(j.x,j.y,j.z),d.push(Y/R),d.push(1-J/M),V+=1}}for(let J=0;J0)&&h.push(E,T,A),(_!==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}},KS=class extends fa{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},Mn=class extends Wr{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ht(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 ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(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 _o,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}},Ls=class extends Mn{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 yt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Si(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 ht(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 ht(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ht(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}},ru=class extends Wr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ht(16777215),this.specular=new ht(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _o,this.combine=S_,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}},f_=class extends Wr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _o,this.combine=S_,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}},jS=class extends Wr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=WB,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}},qS=class extends Wr{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}};nl=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&&(kt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(kt("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)){kt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){kt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&>e(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){kt("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()===CS,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}};Os.prototype.ValueTypeName="";Os.prototype.TimeBufferType=Float32Array;Os.prototype.ValueBufferType=Float32Array;Os.prototype.DefaultInterpolation=Zd;tc=class extends Os{constructor(e,t,i){super(e,t,i)}};tc.prototype.ValueTypeName="bool";tc.prototype.ValueBufferType=Array;tc.prototype.DefaultInterpolation=qd;tc.prototype.InterpolantFactoryMethodLinear=void 0;tc.prototype.InterpolantFactoryMethodSmooth=void 0;u_=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};u_.prototype.ValueTypeName="color";sl=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};sl.prototype.ValueTypeName="number";JS=class extends nl{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)on.slerpFlat(s,0,a,c-o,a,c,l);return s}},al=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new JS(this.times,this.values,this.getValueSize(),e)}};al.prototype.ValueTypeName="quaternion";al.prototype.InterpolantFactoryMethodSmooth=void 0;ic=class extends Os{constructor(e,t,i){super(e,t,i)}};ic.prototype.ValueTypeName="string";ic.prototype.ValueBufferType=Array;ic.prototype.DefaultInterpolation=qd;ic.prototype.InterpolantFactoryMethodLinear=void 0;ic.prototype.InterpolantFactoryMethodSmooth=void 0;ol=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};ol.prototype.ValueTypeName="vector";nu=class{constructor(e="",t=-1,i=[],r=KT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=go(),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(sie(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(Os.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],u=r[d];u||(r[d]=u=[]),u.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(Dt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return kt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,u,h,m,g){if(h.length!==0){let p=[],_=[];r2(h,p,_,m),p.length!==0&&g.push(new d(u,p,_))}},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(Ql[e]!==void 0){Ql[e].push({onLoad:t,onProgress:i,onError:r});return}Ql[e]=[],Ql[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&&Dt("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=Ql[e],d=c.body.getReader(),u=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),h=u?parseInt(u):0,m=h!==0,g=0,p=new ReadableStream({start(_){v();function v(){d.read().then(({done:E,value:T})=>{if(E)_.close();else{g+=T.byteLength;let S=new ProgressEvent("progress",{lengthComputable:m,loaded:g,total:h});for(let A=0,R=f.length;A{_.error(E)})}}});return new Response(p)}else throw new Wy(`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),u=d&&d[1]?d[1].toLowerCase():void 0,h=new TextDecoder(u);return c.arrayBuffer().then(m=>h.decode(m))}}}).then(c=>{el.add(`file:${e}`,c);let f=Ql[e];delete Ql[e];for(let d=0,u=f.length;d{let f=Ql[e];if(f===void 0)throw this.manager.itemError(e),c;delete Ql[e];for(let d=0,u=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}},kh=new WeakMap,eT=class extends Tn{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=el.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=kh.get(a);d===void 0&&(d=[],kh.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=Kh("img");function l(){f(),t&&t(this);let d=kh.get(this)||[];for(let u=0;u{By.has(a)===!0?(r&&r(By.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){el.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),By.set(l,c),el.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});el.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Wh=-90,zh=1,tT=class extends ir{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new _r(Wh,zh,e,t);r.layers=this.layers,this.add(r);let s=new _r(Wh,zh,e,t);s.layers=this.layers,this.add(s);let a=new _r(Wh,zh,e,t);a.layers=this.layers,this.add(a);let o=new _r(Wh,zh,e,t);o.layers=this.layers,this.add(o);let l=new _r(Wh,zh,e,t);l.layers=this.layers,this.add(l);let c=new _r(Wh,zh,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===po)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===Yh)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(),u=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let g=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=g,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,u,h),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},iT=class extends _r{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},rT=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){on.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;on.multiplyQuaternionsFlat(e,a,e,t,e,i),on.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}}},_I="\\[\\]\\.:\\/",aie=new RegExp("["+_I+"]","g"),vI="[^"+_I+"]",oie="[^"+_I.replace("\\.","")+"]",lie=/((?:WC+[\/:])*)/.source.replace("WC",vI),cie=/(WCOD+)?/.source.replace("WCOD",oie),fie=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",vI),die=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",vI),uie=new RegExp("^"+lie+cie+fie+die+"$"),hie=["material","materials","bones","map"],Yy=class{constructor(e,t,i){let r=i||or.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()}},or=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(aie,"")}static parseTrackName(e){let t=uie.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);hie.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 kB:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case KT: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===GB;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===UB){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=Yd,r.endingEnd=Yd):(e?r.endingStart=this.zeroSlopeAtStart?Yd:Xd:r.endingStart=Zg,t?r.endingEnd=this.zeroSlopeAtEnd?Yd:Xd:r.endingEnd=Zg)}_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}},mie=new Float32Array(1),g_=class extends Fa{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 u=r[d],h=u.name,m=f[h];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,h));continue}let g=t&&t._propertyBindings[d].binding.parsedPath;m=new rT(or.create(i,h,g),u.ValueTypeName,u.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,h),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;th.start-m.start);let u=0;for(let h=1;h0;E=e.get(E,T)}return E}function m(v){let E=!1,T=h(v);T===null?p(a,o):T&&T.isColor&&(p(T,1),E=!0);let S=n.xr.getEnvironmentBlendMode();S==="additive"?t.buffers.color.setClear(0,0,0,1,s):S==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||E)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function g(v,E){let T=h(E);T&&(T.isCubeTexture||T.mapping===T_)?(c===void 0&&(c=new ui(new Sf(1,1,1),new fa({name:"BackgroundCubeMaterial",uniforms:lu(hl.backgroundCube.uniforms),vertexShader:hl.backgroundCube.vertexShader,fragmentShader:hl.backgroundCube.fragmentShader,side:yn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(S,A,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=T,c.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4($ne.makeRotationFromEuler(E.backgroundRotation)).transpose(),T.isCubeTexture&&T.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(y2),c.material.toneMapped=fi.getTransfer(T.colorSpace)!==tr,(f!==T||d!==T.version||u!==n.toneMapping)&&(c.material.needsUpdate=!0,f=T,d=T.version,u=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):T&&T.isTexture&&(l===void 0&&(l=new ui(new iu(2,2),new fa({name:"BackgroundMaterial",uniforms:lu(hl.background.uniforms),vertexShader:hl.background.vertexShader,fragmentShader:hl.background.fragmentShader,side:la,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=T,l.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,l.material.toneMapped=fi.getTransfer(T.colorSpace)!==tr,T.matrixAutoUpdate===!0&&T.updateMatrix(),l.material.uniforms.uvTransform.value.copy(T.matrix),(f!==T||d!==T.version||u!==n.toneMapping)&&(l.material.needsUpdate=!0,f=T,d=T.version,u=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,E){v.getRGB(QT,gI(n)),t.buffers.color.setClear(QT.r,QT.g,QT.b,E,s)}function _(){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,E=1){a.set(v),o=E,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:g,dispose:_}}function ese(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=u(null),s=r,a=!1;function o(D,w,k,O,N){let B=!1,V=d(D,O,k,w);s!==V&&(s=V,c(s.object)),B=h(D,O,k,N),B&&m(D,O,k,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,T(D,w,k,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(D){return n.bindVertexArray(D)}function f(D){return n.deleteVertexArray(D)}function d(D,w,k,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=D.isInstancedMesh===!0?D.id:0,q=B[V];q===void 0&&(q={},B[V]=q);let j=q[k.id];j===void 0&&(j={},q[k.id]=j);let J=j[N];return J===void 0&&(J=u(l()),j[N]=J),J}function u(D){let w=[],k=[],O=[];for(let N=0;N=0){let H=N[j],Y=B[j];if(Y===void 0&&(j==="instanceMatrix"&&D.instanceMatrix&&(Y=D.instanceMatrix),j==="instanceColor"&&D.instanceColor&&(Y=D.instanceColor)),H===void 0||H.attribute!==Y||Y&&H.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(D,w,k,O){let N={},B=w.attributes,V=0,q=k.getAttributes();for(let j in q)if(q[j].location>=0){let H=B[j];H===void 0&&(j==="instanceMatrix"&&D.instanceMatrix&&(H=D.instanceMatrix),j==="instanceColor"&&D.instanceColor&&(H=D.instanceColor));let Y={};Y.attribute=H,H&&H.data&&(Y.data=H.data),N[j]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function g(){let D=s.newAttributes;for(let w=0,k=D.length;w=0){let J=N[q];if(J===void 0&&(q==="instanceMatrix"&&D.instanceMatrix&&(J=D.instanceMatrix),q==="instanceColor"&&D.instanceColor&&(J=D.instanceColor)),J!==void 0){let H=J.normalized,Y=J.itemSize,de=e.get(J);if(de===void 0)continue;let me=de.buffer,Ue=de.type,ae=de.bytesPerElement,_e=Ue===n.INT||Ue===n.UNSIGNED_INT||J.gpuType===fT;if(J.isInterleavedBufferAttribute){let ne=J.data,ve=ne.stride,Ce=J.offset;if(ne.isInstancedInterleavedBuffer){for(let ue=0;ue0&&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&&(Dt("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,u=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&u===!1&&Dt("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let h=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),_=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),E=n.getParameter(n.MAX_VARYING_VECTORS),T=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),S=n.getParameter(n.MAX_SAMPLES),A=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:u,maxTextures:h,maxVertexTextures:m,maxTextureSize:g,maxCubemapSize:p,maxAttributes:_,maxVertexUniforms:v,maxVaryings:E,maxFragmentUniforms:T,maxSamples:S,samples:A}}function rse(n){let e=this,t=null,i=0,r=!1,s=!1,a=new Na,o=new ni,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,u){let h=d.length!==0||u||i!==0||r;return r=u,i=d.length,h},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,u){t=f(d,u,0)},this.setState=function(d,u,h){let m=d.clippingPlanes,g=d.clipIntersection,p=d.clipShadows,_=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,E=v*4,T=_.clippingState||null;l.value=T,T=f(m,u,E,h);for(let S=0;S!==E;++S)T[S]=t[S];_.clippingState=T,this.numIntersection=g?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,u,h,m){let g=d!==null?d.length:0,p=null;if(g!==0){if(p=l.value,m!==!0||p===null){let _=h+g*4,v=u.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.length<_)&&(p=new Float32Array(_));for(let E=0,T=h;E!==g;++E,T+=4)a.copy(d[E]).applyMatrix4(v,o),a.normal.toArray(p,T),p[T+3]=a.constant}l.value=p,l.needsUpdate=!0}return e.numPlanes=g,e.numIntersection=0,p}}function ase(n){let e=[],t=[],i=[],r=n,s=n-If+1+n2.length;for(let a=0;an-If?l=n2[a-n+If-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,u=[f,f,d,f,d,d,f,f,d,d,f,d],h=6,m=6,g=3,p=2,_=1,v=new Float32Array(g*m*h),E=new Float32Array(p*m*h),T=new Float32Array(_*m*h);for(let A=0;A2?0:-1,I=[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(I,g*m*A),E.set(u,p*m*A);let C=[A,A,A,A,A,A];T.set(C,_*m*A)}let S=new Hi;S.setAttribute("position",new vr(v,g)),S.setAttribute("uv",new vr(E,p)),S.setAttribute("faceIndex",new vr(T,_)),i.push(new ui(S,null)),r>If&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function a2(n,e,t){let i=new ca(n,e,t);return i.texture.mapping=T_,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function mm(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function ose(n,e,t){return new fa({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:nse,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:tA(),fragmentShader:` +}`,da=class extends Wr{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=iie,this.fragmentShader=rie,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=lu(e.uniforms),this.uniformsGroups=tie(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}},KS=class extends da{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},Mn=class extends Wr{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ht(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 ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(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 _o,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}},Ls=class extends Mn{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 yt(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Si(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 ht(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 ht(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ht(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}},ru=class extends Wr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ht(16777215),this.specular=new ht(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _o,this.combine=S_,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}},f_=class extends Wr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=hm,this.normalScale=new yt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new _o,this.combine=S_,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}},jS=class extends Wr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=zB,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}},qS=class extends Wr{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}};nl=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&&(kt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(kt("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)){kt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){kt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&_te(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){kt("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()===CS,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}};Os.prototype.ValueTypeName="";Os.prototype.TimeBufferType=Float32Array;Os.prototype.ValueBufferType=Float32Array;Os.prototype.DefaultInterpolation=Zd;tc=class extends Os{constructor(e,t,i){super(e,t,i)}};tc.prototype.ValueTypeName="bool";tc.prototype.ValueBufferType=Array;tc.prototype.DefaultInterpolation=qd;tc.prototype.InterpolantFactoryMethodLinear=void 0;tc.prototype.InterpolantFactoryMethodSmooth=void 0;u_=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};u_.prototype.ValueTypeName="color";sl=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};sl.prototype.ValueTypeName="number";JS=class extends nl{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)on.slerpFlat(s,0,a,c-o,a,c,l);return s}},al=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new JS(this.times,this.values,this.getValueSize(),e)}};al.prototype.ValueTypeName="quaternion";al.prototype.InterpolantFactoryMethodSmooth=void 0;ic=class extends Os{constructor(e,t,i){super(e,t,i)}};ic.prototype.ValueTypeName="string";ic.prototype.ValueBufferType=Array;ic.prototype.DefaultInterpolation=qd;ic.prototype.InterpolantFactoryMethodLinear=void 0;ic.prototype.InterpolantFactoryMethodSmooth=void 0;ol=class extends Os{constructor(e,t,i,r){super(e,t,i,r)}};ol.prototype.ValueTypeName="vector";nu=class{constructor(e="",t=-1,i=[],r=KT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=go(),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(aie(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(Os.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],u=r[d];u||(r[d]=u=[]),u.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(Dt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return kt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,u,h,m,g){if(h.length!==0){let p=[],_=[];n2(h,p,_,m),p.length!==0&&g.push(new d(u,p,_))}},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(Ql[e]!==void 0){Ql[e].push({onLoad:t,onProgress:i,onError:r});return}Ql[e]=[],Ql[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&&Dt("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=Ql[e],d=c.body.getReader(),u=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),h=u?parseInt(u):0,m=h!==0,g=0,p=new ReadableStream({start(_){v();function v(){d.read().then(({done:E,value:T})=>{if(E)_.close();else{g+=T.byteLength;let S=new ProgressEvent("progress",{lengthComputable:m,loaded:g,total:h});for(let A=0,R=f.length;A{_.error(E)})}}});return new Response(p)}else throw new Hy(`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),u=d&&d[1]?d[1].toLowerCase():void 0,h=new TextDecoder(u);return c.arrayBuffer().then(m=>h.decode(m))}}}).then(c=>{el.add(`file:${e}`,c);let f=Ql[e];delete Ql[e];for(let d=0,u=f.length;d{let f=Ql[e];if(f===void 0)throw this.manager.itemError(e),c;delete Ql[e];for(let d=0,u=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}},kh=new WeakMap,eT=class extends Tn{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=el.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=kh.get(a);d===void 0&&(d=[],kh.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=Kh("img");function l(){f(),t&&t(this);let d=kh.get(this)||[];for(let u=0;u{Vy.has(a)===!0?(r&&r(Vy.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){el.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),Vy.set(l,c),el.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});el.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Wh=-90,zh=1,tT=class extends ir{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new _r(Wh,zh,e,t);r.layers=this.layers,this.add(r);let s=new _r(Wh,zh,e,t);s.layers=this.layers,this.add(s);let a=new _r(Wh,zh,e,t);a.layers=this.layers,this.add(a);let o=new _r(Wh,zh,e,t);o.layers=this.layers,this.add(o);let l=new _r(Wh,zh,e,t);l.layers=this.layers,this.add(l);let c=new _r(Wh,zh,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===po)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===Yh)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(),u=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let g=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=g,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,u,h),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},iT=class extends _r{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},rT=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){on.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;on.multiplyQuaternionsFlat(e,a,e,t,e,i),on.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}}},EI="\\[\\]\\.:\\/",oie=new RegExp("["+EI+"]","g"),SI="[^"+EI+"]",lie="[^"+EI.replace("\\.","")+"]",cie=/((?:WC+[\/:])*)/.source.replace("WC",SI),fie=/(WCOD+)?/.source.replace("WCOD",lie),die=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",SI),uie=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",SI),hie=new RegExp("^"+cie+fie+die+uie+"$"),mie=["material","materials","bones","map"],jy=class{constructor(e,t,i){let r=i||or.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()}},or=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(oie,"")}static parseTrackName(e){let t=hie.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);mie.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 WB:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case KT: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===kB;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===VB){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=Yd,r.endingEnd=Yd):(e?r.endingStart=this.zeroSlopeAtStart?Yd:Xd:r.endingStart=Zg,t?r.endingEnd=this.zeroSlopeAtEnd?Yd:Xd:r.endingEnd=Zg)}_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}},pie=new Float32Array(1),g_=class extends Ba{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 u=r[d],h=u.name,m=f[h];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,h));continue}let g=t&&t._propertyBindings[d].binding.parsedPath;m=new rT(or.create(i,h,g),u.ValueTypeName,u.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,h),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;th.start-m.start);let u=0;for(let h=1;h0;E=e.get(E,T)}return E}function m(v){let E=!1,T=h(v);T===null?p(a,o):T&&T.isColor&&(p(T,1),E=!0);let S=n.xr.getEnvironmentBlendMode();S==="additive"?t.buffers.color.setClear(0,0,0,1,s):S==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||E)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function g(v,E){let T=h(E);T&&(T.isCubeTexture||T.mapping===T_)?(c===void 0&&(c=new ui(new Sf(1,1,1),new da({name:"BackgroundCubeMaterial",uniforms:lu(hl.backgroundCube.uniforms),vertexShader:hl.backgroundCube.vertexShader,fragmentShader:hl.backgroundCube.fragmentShader,side:yn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(S,A,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=T,c.material.uniforms.backgroundBlurriness.value=E.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(Jne.makeRotationFromEuler(E.backgroundRotation)).transpose(),T.isCubeTexture&&T.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(I2),c.material.toneMapped=fi.getTransfer(T.colorSpace)!==tr,(f!==T||d!==T.version||u!==n.toneMapping)&&(c.material.needsUpdate=!0,f=T,d=T.version,u=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):T&&T.isTexture&&(l===void 0&&(l=new ui(new iu(2,2),new da({name:"BackgroundMaterial",uniforms:lu(hl.background.uniforms),vertexShader:hl.background.vertexShader,fragmentShader:hl.background.fragmentShader,side:ca,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=T,l.material.uniforms.backgroundIntensity.value=E.backgroundIntensity,l.material.toneMapped=fi.getTransfer(T.colorSpace)!==tr,T.matrixAutoUpdate===!0&&T.updateMatrix(),l.material.uniforms.uvTransform.value.copy(T.matrix),(f!==T||d!==T.version||u!==n.toneMapping)&&(l.material.needsUpdate=!0,f=T,d=T.version,u=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,E){v.getRGB(QT,vI(n)),t.buffers.color.setClear(QT.r,QT.g,QT.b,E,s)}function _(){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,E=1){a.set(v),o=E,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:g,dispose:_}}function tse(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=u(null),s=r,a=!1;function o(D,w,k,O,N){let B=!1,V=d(D,O,k,w);s!==V&&(s=V,c(s.object)),B=h(D,O,k,N),B&&m(D,O,k,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,T(D,w,k,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(D){return n.bindVertexArray(D)}function f(D){return n.deleteVertexArray(D)}function d(D,w,k,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=D.isInstancedMesh===!0?D.id:0,q=B[V];q===void 0&&(q={},B[V]=q);let j=q[k.id];j===void 0&&(j={},q[k.id]=j);let J=j[N];return J===void 0&&(J=u(l()),j[N]=J),J}function u(D){let w=[],k=[],O=[];for(let N=0;N=0){let H=N[j],Y=B[j];if(Y===void 0&&(j==="instanceMatrix"&&D.instanceMatrix&&(Y=D.instanceMatrix),j==="instanceColor"&&D.instanceColor&&(Y=D.instanceColor)),H===void 0||H.attribute!==Y||Y&&H.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(D,w,k,O){let N={},B=w.attributes,V=0,q=k.getAttributes();for(let j in q)if(q[j].location>=0){let H=B[j];H===void 0&&(j==="instanceMatrix"&&D.instanceMatrix&&(H=D.instanceMatrix),j==="instanceColor"&&D.instanceColor&&(H=D.instanceColor));let Y={};Y.attribute=H,H&&H.data&&(Y.data=H.data),N[j]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function g(){let D=s.newAttributes;for(let w=0,k=D.length;w=0){let J=N[q];if(J===void 0&&(q==="instanceMatrix"&&D.instanceMatrix&&(J=D.instanceMatrix),q==="instanceColor"&&D.instanceColor&&(J=D.instanceColor)),J!==void 0){let H=J.normalized,Y=J.itemSize,de=e.get(J);if(de===void 0)continue;let me=de.buffer,Ue=de.type,ae=de.bytesPerElement,_e=Ue===n.INT||Ue===n.UNSIGNED_INT||J.gpuType===fT;if(J.isInterleavedBufferAttribute){let ne=J.data,ve=ne.stride,Ce=J.offset;if(ne.isInstancedInterleavedBuffer){for(let ue=0;ue0&&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&&(Dt("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,u=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&u===!1&&Dt("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let h=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),_=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),E=n.getParameter(n.MAX_VARYING_VECTORS),T=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),S=n.getParameter(n.MAX_SAMPLES),A=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:u,maxTextures:h,maxVertexTextures:m,maxTextureSize:g,maxCubemapSize:p,maxAttributes:_,maxVertexUniforms:v,maxVaryings:E,maxFragmentUniforms:T,maxSamples:S,samples:A}}function nse(n){let e=this,t=null,i=0,r=!1,s=!1,a=new wa,o=new ni,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,u){let h=d.length!==0||u||i!==0||r;return r=u,i=d.length,h},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,u){t=f(d,u,0)},this.setState=function(d,u,h){let m=d.clippingPlanes,g=d.clipIntersection,p=d.clipShadows,_=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,E=v*4,T=_.clippingState||null;l.value=T,T=f(m,u,E,h);for(let S=0;S!==E;++S)T[S]=t[S];_.clippingState=T,this.numIntersection=g?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,u,h,m){let g=d!==null?d.length:0,p=null;if(g!==0){if(p=l.value,m!==!0||p===null){let _=h+g*4,v=u.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.length<_)&&(p=new Float32Array(_));for(let E=0,T=h;E!==g;++E,T+=4)a.copy(d[E]).applyMatrix4(v,o),a.normal.toArray(p,T),p[T+3]=a.constant}l.value=p,l.needsUpdate=!0}return e.numPlanes=g,e.numIntersection=0,p}}function ose(n){let e=[],t=[],i=[],r=n,s=n-If+1+s2.length;for(let a=0;an-If?l=s2[a-n+If-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,u=[f,f,d,f,d,d,f,f,d,d,f,d],h=6,m=6,g=3,p=2,_=1,v=new Float32Array(g*m*h),E=new Float32Array(p*m*h),T=new Float32Array(_*m*h);for(let A=0;A2?0:-1,I=[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(I,g*m*A),E.set(u,p*m*A);let C=[A,A,A,A,A,A];T.set(C,_*m*A)}let S=new Hi;S.setAttribute("position",new vr(v,g)),S.setAttribute("uv",new vr(E,p)),S.setAttribute("faceIndex",new vr(T,_)),i.push(new ui(S,null)),r>If&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function o2(n,e,t){let i=new fa(n,e,t);return i.texture.mapping=T_,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function mm(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function lse(n,e,t){return new da({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:sse,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:tA(),fragmentShader:` precision highp float; precision highp int; @@ -108,7 +108,7 @@ gl_FragColor = vec4(prefilteredColor, 1.0); } - `,blending:fl,depthTest:!1,depthWrite:!1})}function lse(n,e,t){let i=new Float32Array(cu),r=new re(0,1,0);return new fa({name:"SphericalGaussianBlur",defines:{n:cu,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:tA(),fragmentShader:` + `,blending:fl,depthTest:!1,depthWrite:!1})}function cse(n,e,t){let i=new Float32Array(cu),r=new re(0,1,0);return new da({name:"SphericalGaussianBlur",defines:{n:cu,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:tA(),fragmentShader:` precision mediump float; precision mediump int; @@ -168,7 +168,7 @@ } } - `,blending:fl,depthTest:!1,depthWrite:!1})}function o2(){return new fa({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:tA(),fragmentShader:` + `,blending:fl,depthTest:!1,depthWrite:!1})}function l2(){return new da({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:tA(),fragmentShader:` precision mediump float; precision mediump int; @@ -187,7 +187,7 @@ gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:fl,depthTest:!1,depthWrite:!1})}function l2(){return new fa({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:tA(),fragmentShader:` + `,blending:fl,depthTest:!1,depthWrite:!1})}function c2(){return new da({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:tA(),fragmentShader:` precision mediump float; precision mediump int; @@ -258,7 +258,7 @@ gl_Position = vec4( position, 1.0 ); } - `}function cse(n){let e=new WeakMap,t=new WeakMap,i=null;function r(u,h=!1){return u==null?null:h?a(u):s(u)}function s(u){if(u&&u.isTexture){let h=u.mapping;if(h===oT||h===lT)if(e.has(u)){let m=e.get(u).texture;return o(m,u.mapping)}else{let m=u.image;if(m&&m.height>0){let g=new JT(m.height);return g.fromEquirectangularTexture(n,u),e.set(u,g),u.addEventListener("dispose",c),o(g.texture,u.mapping)}else return null}}return u}function a(u){if(u&&u.isTexture){let h=u.mapping,m=h===oT||h===lT,g=h===bf||h===au;if(m||g){let p=t.get(u),_=p!==void 0?p.texture.pmremVersion:0;if(u.isRenderTargetTexture&&u.pmremVersion!==_)return i===null&&(i=new gm(n)),p=m?i.fromEquirectangular(u,p):i.fromCubemap(u,p),p.texture.pmremVersion=u.pmremVersion,t.set(u,p),p.texture;if(p!==void 0)return p.texture;{let v=u.image;return m&&v&&v.height>0||g&&v&&l(v)?(i===null&&(i=new gm(n)),p=m?i.fromEquirectangular(u):i.fromCubemap(u),p.texture.pmremVersion=u.pmremVersion,t.set(u,p),u.addEventListener("dispose",f),p.texture):null}}}return u}function o(u,h){return h===oT?u.mapping=bf:h===lT&&(u.mapping=au),u}function l(u){let h=0,m=6;for(let g=0;g=65535?t_:e_)(u,1);p.version=g;let _=s.get(d);_&&e.remove(_),s.set(d,p)}function f(d){let u=s.get(d);if(u){let h=d.index;h!==null&&u.versione.maxTextureSize&&(S=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);let A=new Float32Array(T*S*4*d),R=new Jg(A,T,S,d);R.type=da,R.needsUpdate=!0;let M=E*4;for(let C=0;C0){let g=new JT(m.height);return g.fromEquirectangularTexture(n,u),e.set(u,g),u.addEventListener("dispose",c),o(g.texture,u.mapping)}else return null}}return u}function a(u){if(u&&u.isTexture){let h=u.mapping,m=h===oT||h===lT,g=h===bf||h===au;if(m||g){let p=t.get(u),_=p!==void 0?p.texture.pmremVersion:0;if(u.isRenderTargetTexture&&u.pmremVersion!==_)return i===null&&(i=new gm(n)),p=m?i.fromEquirectangular(u,p):i.fromCubemap(u,p),p.texture.pmremVersion=u.pmremVersion,t.set(u,p),p.texture;if(p!==void 0)return p.texture;{let v=u.image;return m&&v&&v.height>0||g&&v&&l(v)?(i===null&&(i=new gm(n)),p=m?i.fromEquirectangular(u):i.fromCubemap(u),p.texture.pmremVersion=u.pmremVersion,t.set(u,p),u.addEventListener("dispose",f),p.texture):null}}}return u}function o(u,h){return h===oT?u.mapping=bf:h===lT&&(u.mapping=au),u}function l(u){let h=0,m=6;for(let g=0;g=65535?t_:e_)(u,1);p.version=g;let _=s.get(d);_&&e.remove(_),s.set(d,p)}function f(d){let u=s.get(d);if(u){let h=d.index;h!==null&&u.versione.maxTextureSize&&(S=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);let A=new Float32Array(T*S*4*d),R=new Jg(A,T,S,d);R.type=ua,R.needsUpdate=!0;let M=E*4;for(let C=0;C0&&p[0].isRenderPass===!0;let E=s.width,T=s.height;for(let S=0;S0)return n;let r=e*t,s=c2[r];if(s===void 0&&(s=new Float32Array(r),c2[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 ln(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0&&p[0].isRenderPass===!0;let E=s.width,T=s.height;for(let S=0;S0)return n;let r=e*t,s=f2[r];if(s===void 0&&(s=new Float32Array(r),f2[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 ln(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${o}: ${t[a]}`)}return i.join(` -`)}function lae(n){fi._getMatrix(g2,fi.workingColorSpace,n);let e=`mat3( ${g2.elements.map(t=>t.toFixed(4))} )`;switch(fi.getTransfer(n)){case Qg:return[e,"LinearTransferOETF"];case tr:return[e,"sRGBTransferOETF"];default:return Dt("WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function _2(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 cae(n){fi._getMatrix(_2,fi.workingColorSpace,n);let e=`mat3( ${_2.elements.map(t=>t.toFixed(4))} )`;switch(fi.getTransfer(n)){case Qg:return[e,"LinearTransferOETF"];case tr:return[e,"sRGBTransferOETF"];default:return Dt("WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function v2(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+` -`+oae(n.getShaderSource(e),o)}else return s}function cae(n,e){let t=lae(e);return[`vec4 ${n}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` -`)}function dae(n,e){let t=fae[e];return t===void 0?(Dt("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+n+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function uae(){fi.getLuminanceCoefficients($T);let n=$T.x.toFixed(4),e=$T.y.toFixed(4),t=$T.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` -`)}function hae(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(L_).join(` -`)}function mae(n){let e=[];for(let t in n){let i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` -`)}function pae(n,e){let t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r")}return FI(t)}function S2(n){return n.replace(Eae,Sae)}function Sae(n,e,t,i){let r="";for(let s=parseInt(e);s")}return UI(t)}function T2(n){return n.replace(Sae,Tae)}function Tae(n,e,t,i){let r="";for(let s=parseInt(e);s0&&(p+=` `),_=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,m].filter(L_).join(` `),_.length>0&&(_+=` -`)):(p=[T2(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=[A2(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(L_).join(` -`),_=[T2(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:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.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!==ws?"#define TONE_MAPPING":"",t.toneMapping!==ws?_i.tonemapping_pars_fragment:"",t.toneMapping!==ws?dae("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",_i.colorspace_pars_fragment,cae("linearToOutputTexel",t.outputColorSpace),uae(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`),_=[A2(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:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.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!==ws?"#define TONE_MAPPING":"",t.toneMapping!==ws?_i.tonemapping_pars_fragment:"",t.toneMapping!==ws?uae("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",_i.colorspace_pars_fragment,fae("linearToOutputTexel",t.outputColorSpace),hae(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` `].filter(L_).join(` -`)),a=FI(a),a=v2(a,t),a=E2(a,t),o=FI(o),o=v2(o,t),o=E2(o,t),a=S2(a),o=S2(o),t.isRawShaderMaterial!==!0&&(v=`#version 300 es +`)),a=UI(a),a=E2(a,t),a=S2(a,t),o=UI(o),o=E2(o,t),o=S2(o,t),a=T2(a),o=T2(o),t.isRawShaderMaterial!==!0&&(v=`#version 300 es `,p=[h,"#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+p,_=["#define varying in",t.glslVersion===mI?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===mI?"":"#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,_=["#define varying in",t.glslVersion===gI?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===gI?"":"#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(` `)+` -`+_);let E=v+p+a,T=v+_+o,S=p2(r,r.VERTEX_SHADER,E),A=p2(r,r.FRAGMENT_SHADER,T);r.attachShader(g,S),r.attachShader(g,A),t.index0AttributeName!==void 0?r.bindAttribLocation(g,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(g,0,"position"),r.linkProgram(g);function R(D){if(n.debug.checkShaderErrors){let w=r.getProgramInfoLog(g)||"",k=r.getShaderInfoLog(S)||"",O=r.getShaderInfoLog(A)||"",N=w.trim(),B=k.trim(),V=O.trim(),q=!0,j=!0;if(r.getProgramParameter(g,r.LINK_STATUS)===!1)if(q=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,g,S,A);else{let J=_2(r,S,"vertex"),H=_2(r,A,"fragment");kt("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(g,r.VALIDATE_STATUS)+` +`+_);let E=v+p+a,T=v+_+o,S=g2(r,r.VERTEX_SHADER,E),A=g2(r,r.FRAGMENT_SHADER,T);r.attachShader(g,S),r.attachShader(g,A),t.index0AttributeName!==void 0?r.bindAttribLocation(g,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(g,0,"position"),r.linkProgram(g);function R(D){if(n.debug.checkShaderErrors){let w=r.getProgramInfoLog(g)||"",k=r.getShaderInfoLog(S)||"",O=r.getShaderInfoLog(A)||"",N=w.trim(),B=k.trim(),V=O.trim(),q=!0,j=!0;if(r.getProgramParameter(g,r.LINK_STATUS)===!1)if(q=!1,typeof n.debug.onShaderError=="function")n.debug.onShaderError(r,g,S,A);else{let J=v2(r,S,"vertex"),H=v2(r,A,"fragment");kt("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(g,r.VALIDATE_STATUS)+` Material Name: `+D.name+` Material Type: `+D.type+` Program Info Log: `+N+` `+J+` -`+H)}else N!==""?Dt("WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(j=!1);j&&(D.diagnostics={runnable:q,programLog:N,vertexShader:{log:B,prefix:p},fragmentShader:{log:V,prefix:_}})}r.deleteShader(S),r.deleteShader(A),M=new pm(r,g),I=pae(r,g)}let M;this.getUniforms=function(){return M===void 0&&R(this),M};let I;this.getAttributes=function(){return I===void 0&&R(this),I};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(g,sae)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(g),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=aae++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=S,this.fragmentShader=A,this}function Lae(n){return n===yf||n===M_||n===y_}function Oae(n,e,t,i,r,s){let a=new Zh,o=new BI,l=new Set,c=[],f=new Map,d=i.logarithmicDepthBuffer,u=i.precision,h={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 g(M,I,C,D,w,k){let O=D.fog,N=w.geometry,B=M.isMeshStandardMaterial||M.isMeshLambertMaterial||M.isMeshPhongMaterial?D.environment:null,V=M.isMeshStandardMaterial||M.isMeshLambertMaterial&&!M.envMap||M.isMeshPhongMaterial&&!M.envMap,q=e.get(M.envMap||B,V),j=q&&q.mapping===T_?q.image.height:null,J=h[M.type];M.precision!==null&&(u=i.getMaxPrecision(M.precision),u!==M.precision&&Dt("WebGLProgram.getParameters:",M.precision,"not supported, using",u,"instead."));let H=N.morphAttributes.position||N.morphAttributes.normal||N.morphAttributes.color,Y=H!==void 0?H.length:0,de=0;N.morphAttributes.position!==void 0&&(de=1),N.morphAttributes.normal!==void 0&&(de=2),N.morphAttributes.color!==void 0&&(de=3);let me,Ue,ae,_e;if(J){let Gt=hl[J];me=Gt.vertexShader,Ue=Gt.fragmentShader}else me=M.vertexShader,Ue=M.fragmentShader,o.update(M),ae=o.getVertexShaderID(M),_e=o.getFragmentShaderID(M);let ne=n.getRenderTarget(),ve=n.state.buffers.depth.getReversed(),Ce=w.isInstancedMesh===!0,ue=w.isBatchedMesh===!0,be=!!M.map,Ge=!!M.matcap,qe=!!q,Ye=!!M.aoMap,Ke=!!M.lightMap,Zt=!!M.bumpMap,Ut=!!M.normalMap,Wi=!!M.displacementMap,oe=!!M.emissiveMap,Qi=!!M.metalnessMap,Ht=!!M.roughnessMap,Di=M.anisotropy>0,ot=M.clearcoat>0,ji=M.dispersion>0,K=M.iridescence>0,U=M.sheen>0,he=M.transmission>0,Pe=Di&&!!M.anisotropyMap,Ne=ot&&!!M.clearcoatMap,et=ot&&!!M.clearcoatNormalMap,rt=ot&&!!M.clearcoatRoughnessMap,ye=K&&!!M.iridescenceMap,De=K&&!!M.iridescenceThicknessMap,ct=U&&!!M.sheenColorMap,At=U&&!!M.sheenRoughnessMap,nt=!!M.specularMap,Ze=!!M.specularColorMap,Vt=!!M.specularIntensityMap,ii=he&&!!M.transmissionMap,hi=he&&!!M.thicknessMap,se=!!M.gradientMap,Qe=!!M.alphaMap,Ie=M.alphaTest>0,ut=!!M.alphaHash,it=!!M.extensions,Ve=ws;M.toneMapped&&(ne===null||ne.isXRRenderTarget===!0)&&(Ve=n.toneMapping);let Rt={shaderID:J,shaderType:M.type,shaderName:M.name,vertexShader:me,fragmentShader:Ue,defines:M.defines,customVertexShaderID:ae,customFragmentShaderID:_e,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:u,batching:ue,batchingColor:ue&&w._colorsTexture!==null,instancing:Ce,instancingColor:Ce&&w.instanceColor!==null,instancingMorph:Ce&&w.morphTexture!==null,outputColorSpace:ne===null?n.outputColorSpace:ne.isXRRenderTarget===!0?ne.texture.colorSpace:fi.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:be,matcap:Ge,envMap:qe,envMapMode:qe&&q.mapping,envMapCubeUVHeight:j,aoMap:Ye,lightMap:Ke,bumpMap:Zt,normalMap:Ut,displacementMap:Wi,emissiveMap:oe,normalMapObjectSpace:Ut&&M.normalMapType===zB,normalMapTangentSpace:Ut&&M.normalMapType===hm,packedNormalMap:Ut&&M.normalMapType===hm&&Lae(M.normalMap.format),metalnessMap:Qi,roughnessMap:Ht,anisotropy:Di,anisotropyMap:Pe,clearcoat:ot,clearcoatMap:Ne,clearcoatNormalMap:et,clearcoatRoughnessMap:rt,dispersion:ji,iridescence:K,iridescenceMap:ye,iridescenceThicknessMap:De,sheen:U,sheenColorMap:ct,sheenRoughnessMap:At,specularMap:nt,specularColorMap:Ze,specularIntensityMap:Vt,transmission:he,transmissionMap:ii,thicknessMap:hi,gradientMap:se,opaque:M.transparent===!1&&M.blending===Kd&&M.alphaToCoverage===!1,alphaMap:Qe,alphaTest:Ie,alphaHash:ut,combine:M.combine,mapUv:be&&m(M.map.channel),aoMapUv:Ye&&m(M.aoMap.channel),lightMapUv:Ke&&m(M.lightMap.channel),bumpMapUv:Zt&&m(M.bumpMap.channel),normalMapUv:Ut&&m(M.normalMap.channel),displacementMapUv:Wi&&m(M.displacementMap.channel),emissiveMapUv:oe&&m(M.emissiveMap.channel),metalnessMapUv:Qi&&m(M.metalnessMap.channel),roughnessMapUv:Ht&&m(M.roughnessMap.channel),anisotropyMapUv:Pe&&m(M.anisotropyMap.channel),clearcoatMapUv:Ne&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:et&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:ye&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:De&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:At&&m(M.sheenRoughnessMap.channel),specularMapUv:nt&&m(M.specularMap.channel),specularColorMapUv:Ze&&m(M.specularColorMap.channel),specularIntensityMapUv:Vt&&m(M.specularIntensityMap.channel),transmissionMapUv:ii&&m(M.transmissionMap.channel),thicknessMapUv:hi&&m(M.thicknessMap.channel),alphaMapUv:Qe&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Ut||Di),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&&(be||Qe),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Ut===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:ve,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:de,numDirLights:I.directional.length,numPointLights:I.point.length,numSpotLights:I.spot.length,numSpotLightMaps:I.spotLightMap.length,numRectAreaLights:I.rectArea.length,numHemiLights:I.hemi.length,numDirLightShadows:I.directionalShadowMap.length,numPointLightShadows:I.pointShadowMap.length,numSpotLightShadows:I.spotShadowMap.length,numSpotLightShadowsWithMaps:I.numSpotLightShadowsWithMaps,numLightProbes:I.numLightProbes,numLightProbeGrids:k.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:Ve,decodeVideoTexture:be&&M.map.isVideoTexture===!0&&fi.getTransfer(M.map.colorSpace)===tr,decodeVideoTextureEmissive:oe&&M.emissiveMap.isVideoTexture===!0&&fi.getTransfer(M.emissiveMap.colorSpace)===tr,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ba,flipSided:M.side===yn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:it&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(it&&M.extensions.multiDraw===!0||ue)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return Rt.vertexUv1s=l.has(1),Rt.vertexUv2s=l.has(2),Rt.vertexUv3s=l.has(3),l.clear(),Rt}function p(M){let I=[];if(M.shaderID?I.push(M.shaderID):(I.push(M.customVertexShaderID),I.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)I.push(C),I.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(_(I,M),v(I,M),I.push(n.outputColorSpace)),I.push(M.customProgramCacheKey),I.join()}function _(M,I){M.push(I.precision),M.push(I.outputColorSpace),M.push(I.envMapMode),M.push(I.envMapCubeUVHeight),M.push(I.mapUv),M.push(I.alphaMapUv),M.push(I.lightMapUv),M.push(I.aoMapUv),M.push(I.bumpMapUv),M.push(I.normalMapUv),M.push(I.displacementMapUv),M.push(I.emissiveMapUv),M.push(I.metalnessMapUv),M.push(I.roughnessMapUv),M.push(I.anisotropyMapUv),M.push(I.clearcoatMapUv),M.push(I.clearcoatNormalMapUv),M.push(I.clearcoatRoughnessMapUv),M.push(I.iridescenceMapUv),M.push(I.iridescenceThicknessMapUv),M.push(I.sheenColorMapUv),M.push(I.sheenRoughnessMapUv),M.push(I.specularMapUv),M.push(I.specularColorMapUv),M.push(I.specularIntensityMapUv),M.push(I.transmissionMapUv),M.push(I.thicknessMapUv),M.push(I.combine),M.push(I.fogExp2),M.push(I.sizeAttenuation),M.push(I.morphTargetsCount),M.push(I.morphAttributeCount),M.push(I.numDirLights),M.push(I.numPointLights),M.push(I.numSpotLights),M.push(I.numSpotLightMaps),M.push(I.numHemiLights),M.push(I.numRectAreaLights),M.push(I.numDirLightShadows),M.push(I.numPointLightShadows),M.push(I.numSpotLightShadows),M.push(I.numSpotLightShadowsWithMaps),M.push(I.numLightProbes),M.push(I.shadowMapType),M.push(I.toneMapping),M.push(I.numClippingPlanes),M.push(I.numClipIntersection),M.push(I.depthPacking)}function v(M,I){a.disableAll(),I.instancing&&a.enable(0),I.instancingColor&&a.enable(1),I.instancingMorph&&a.enable(2),I.matcap&&a.enable(3),I.envMap&&a.enable(4),I.normalMapObjectSpace&&a.enable(5),I.normalMapTangentSpace&&a.enable(6),I.clearcoat&&a.enable(7),I.iridescence&&a.enable(8),I.alphaTest&&a.enable(9),I.vertexColors&&a.enable(10),I.vertexAlphas&&a.enable(11),I.vertexUv1s&&a.enable(12),I.vertexUv2s&&a.enable(13),I.vertexUv3s&&a.enable(14),I.vertexTangents&&a.enable(15),I.anisotropy&&a.enable(16),I.alphaHash&&a.enable(17),I.batching&&a.enable(18),I.dispersion&&a.enable(19),I.batchingColor&&a.enable(20),I.gradientMap&&a.enable(21),I.packedNormalMap&&a.enable(22),I.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),I.fog&&a.enable(0),I.useFog&&a.enable(1),I.flatShading&&a.enable(2),I.logarithmicDepthBuffer&&a.enable(3),I.reversedDepthBuffer&&a.enable(4),I.skinning&&a.enable(5),I.morphTargets&&a.enable(6),I.morphNormals&&a.enable(7),I.morphColors&&a.enable(8),I.premultipliedAlpha&&a.enable(9),I.shadowMapEnabled&&a.enable(10),I.doubleSided&&a.enable(11),I.flipSided&&a.enable(12),I.useDepthPacking&&a.enable(13),I.dithering&&a.enable(14),I.transmission&&a.enable(15),I.sheen&&a.enable(16),I.opaque&&a.enable(17),I.pointsUvs&&a.enable(18),I.decodeVideoTexture&&a.enable(19),I.decodeVideoTextureEmissive&&a.enable(20),I.alphaToCoverage&&a.enable(21),I.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function E(M){let I=h[M.type],C;if(I){let D=hl[I];C=i2.clone(D.uniforms)}else C=M.uniforms;return C}function T(M,I){let C=f.get(I);return C!==void 0?++C.usedTimes:(C=new Pae(n,I,M,r),c.push(C),f.set(I,C)),C}function S(M){if(--M.usedTimes===0){let I=c.indexOf(M);c[I]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function A(M){o.remove(M)}function R(){o.dispose()}return{getParameters:g,getProgramCacheKey:p,getUniforms:E,acquireProgram:T,releaseProgram:S,releaseShaderCache:A,programs:c,dispose:R}}function Nae(){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 wae(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 A2(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 x2(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(u){let h=0;return u.isInstancedMesh&&(h+=2),u.isSkinnedMesh&&(h+=1),h}function o(u,h,m,g,p,_){let v=n[e];return v===void 0?(v={id:u.id,object:u,geometry:h,material:m,materialVariant:a(u),groupOrder:g,renderOrder:u.renderOrder,z:p,group:_},n[e]=v):(v.id=u.id,v.object=u,v.geometry=h,v.material=m,v.materialVariant=a(u),v.groupOrder=g,v.renderOrder=u.renderOrder,v.z=p,v.group=_),e++,v}function l(u,h,m,g,p,_){let v=o(u,h,m,g,p,_);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(u,h,m,g,p,_){let v=o(u,h,m,g,p,_);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(u,h){t.length>1&&t.sort(u||wae),i.length>1&&i.sort(h||A2),r.length>1&&r.sort(h||A2)}function d(){for(let u=e,h=n.length;u=s.length?(a=new x2,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function Bae(){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 re,color:new ht};break;case"SpotLight":t={position:new re,direction:new re,color:new ht,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new re,color:new ht,distance:0,decay:0};break;case"HemisphereLight":t={direction:new re,skyColor:new ht,groundColor:new ht};break;case"RectAreaLight":t={color:new ht,position:new re,halfWidth:new re,halfHeight:new re};break}return n[e.id]=t,t}}}function Uae(){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 yt};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function Gae(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function kae(n){let e=new Bae,t=Uae(),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 re);let r=new re,s=new di,a=new di;function o(c){let f=0,d=0,u=0;for(let I=0;I<9;I++)i.probe[I].set(0,0,0);let h=0,m=0,g=0,p=0,_=0,v=0,E=0,T=0,S=0,A=0,R=0;c.sort(Gae);for(let I=0,C=c.length;I0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=Et.LTC_FLOAT_1,i.rectAreaLTC2=Et.LTC_FLOAT_2):(i.rectAreaLTC1=Et.LTC_HALF_1,i.rectAreaLTC2=Et.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=u;let M=i.hash;(M.directionalLength!==h||M.pointLength!==m||M.spotLength!==g||M.rectAreaLength!==p||M.hemiLength!==_||M.numDirectionalShadows!==v||M.numPointShadows!==E||M.numSpotShadows!==T||M.numSpotMaps!==S||M.numLightProbes!==R)&&(i.directional.length=h,i.spot.length=g,i.rectArea.length=p,i.point.length=m,i.hemi.length=_,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=E,i.pointShadowMap.length=E,i.spotShadow.length=T,i.spotShadowMap.length=T,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=E,i.spotLightMatrix.length=T+S-A,i.spotLightMap.length=S,i.numSpotLightShadowsWithMaps=A,i.numLightProbes=R,M.directionalLength=h,M.pointLength=m,M.spotLength=g,M.rectAreaLength=p,M.hemiLength=_,M.numDirectionalShadows=v,M.numPointShadows=E,M.numSpotShadows=T,M.numSpotMaps=S,M.numLightProbes=R,i.version=Vae++)}function l(c,f){let d=0,u=0,h=0,m=0,g=0,p=f.matrixWorldInverse;for(let _=0,v=c.length;_=a.length?(o=new R2(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function Kae(n,e,t){let i=new tm,r=new yt,s=new yt,a=new lr,o=new jS,l=new qS,c={},f=t.maxTextureSize,d={[la]:yn,[yn]:la,[Ba]:Ba},u=new fa({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:zae,fragmentShader:Hae}),h=u.clone();h.defines.HORIZONTAL_PASS=1;let m=new Hi;m.setAttribute("position",new vr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new ui(m,u),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=E_;let _=this.type;this.render=function(A,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||A.length===0)return;this.type===aT&&(Dt("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=E_);let I=n.getRenderTarget(),C=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),w=n.state;w.setBlending(fl),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 k=_!==this.type;k&&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=A.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/q.x),r.x=s.x*q.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/q.y),r.y=s.y*q.y,V.mapSize.y=s.y));let j=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=j,V.map===null||k===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===lm){if(B.isPointLight){Dt("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new ca(r.x,r.y,{format:yf,type:dl,minFilter:Gr,magFilter:Gr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new ec(r.x,r.y,da),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=il,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr}else B.isPointLight?(V.map=new JT(r.x),V.map.depthTexture=new YS(r.x,To)):(V.map=new ca(r.x,r.y),V.map.depthTexture=new ec(r.x,r.y,To)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=il,this.type===E_?(V.map.depthTexture.compareFunction=j?qT:jT,V.map.depthTexture.minFilter=Gr,V.map.depthTexture.magFilter=Gr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr);V.camera.updateProjectionMatrix()}let J=V.map.isWebGLCubeRenderTarget?6:1;for(let H=0;H0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,k=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[k];N===void 0&&(N=C.clone(),O[k]=N,R.addEventListener("dispose",S)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,I===lm?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 T(A,R,M,I,C){if(A.visible===!1)return;if(A.layers.test(R.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&C===lm)&&(!A.frustumCulled||i.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,A.matrixWorld);let k=e.update(A),O=A.material;if(Array.isArray(O)){let N=k.groups;for(let B=0,V=N.length;B=1):j.indexOf("OpenGL ES")!==-1&&(q=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),V=q>=2);let J=null,H={},Y=n.getParameter(n.SCISSOR_BOX),de=n.getParameter(n.VIEWPORT),me=new lr().fromArray(Y),Ue=new lr().fromArray(de);function ae(se,Qe,Ie,ut){let it=new Uint8Array(4),Ve=n.createTexture();n.bindTexture(se,Ve),n.texParameteri(se,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(se,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Rt=0;Rthe||Ne.height>he)&&(Pe=he/Math.max(Ne.width,Ne.height)),Pe<1)if(typeof HTMLImageElement!="undefined"&&K instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&K instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&K instanceof ImageBitmap||typeof VideoFrame!="undefined"&&K instanceof VideoFrame){let et=Math.floor(Pe*Ne.width),rt=Math.floor(Pe*Ne.height);u===void 0&&(u=g(et,rt));let ye=U?g(et,rt):u;return ye.width=et,ye.height=rt,ye.getContext("2d").drawImage(K,0,0,et,rt),Dt("WebGLRenderer: Texture has been resized from ("+Ne.width+"x"+Ne.height+") to ("+et+"x"+rt+")."),ye}else return"data"in K&&Dt("WebGLRenderer: Image in DataTexture is too big ("+Ne.width+"x"+Ne.height+")."),K;return K}function _(K){return K.generateMipmaps}function v(K){n.generateMipmap(K)}function E(K){return K.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:K.isWebGL3DRenderTarget?n.TEXTURE_3D:K.isWebGLArrayRenderTarget||K.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function T(K,U,he,Pe,Ne,et=!1){if(K!==null){if(n[K]!==void 0)return n[K];Dt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+K+"'")}let rt;Pe&&(rt=e.get("EXT_texture_norm16"),rt||Dt("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let ye=U;if(U===n.RED&&(he===n.FLOAT&&(ye=n.R32F),he===n.HALF_FLOAT&&(ye=n.R16F),he===n.UNSIGNED_BYTE&&(ye=n.R8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.R16_EXT),he===n.SHORT&&rt&&(ye=rt.R16_SNORM_EXT)),U===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.R8UI),he===n.UNSIGNED_SHORT&&(ye=n.R16UI),he===n.UNSIGNED_INT&&(ye=n.R32UI),he===n.BYTE&&(ye=n.R8I),he===n.SHORT&&(ye=n.R16I),he===n.INT&&(ye=n.R32I)),U===n.RG&&(he===n.FLOAT&&(ye=n.RG32F),he===n.HALF_FLOAT&&(ye=n.RG16F),he===n.UNSIGNED_BYTE&&(ye=n.RG8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RG16_EXT),he===n.SHORT&&rt&&(ye=rt.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RG8UI),he===n.UNSIGNED_SHORT&&(ye=n.RG16UI),he===n.UNSIGNED_INT&&(ye=n.RG32UI),he===n.BYTE&&(ye=n.RG8I),he===n.SHORT&&(ye=n.RG16I),he===n.INT&&(ye=n.RG32I)),U===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RGB8UI),he===n.UNSIGNED_SHORT&&(ye=n.RGB16UI),he===n.UNSIGNED_INT&&(ye=n.RGB32UI),he===n.BYTE&&(ye=n.RGB8I),he===n.SHORT&&(ye=n.RGB16I),he===n.INT&&(ye=n.RGB32I)),U===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(ye=n.RGBA16UI),he===n.UNSIGNED_INT&&(ye=n.RGBA32UI),he===n.BYTE&&(ye=n.RGBA8I),he===n.SHORT&&(ye=n.RGBA16I),he===n.INT&&(ye=n.RGBA32I)),U===n.RGB&&(he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RGB16_EXT),he===n.SHORT&&rt&&(ye=rt.RGB16_SNORM_EXT),he===n.UNSIGNED_INT_5_9_9_9_REV&&(ye=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(ye=n.R11F_G11F_B10F)),U===n.RGBA){let De=et?Qg:fi.getTransfer(Ne);he===n.FLOAT&&(ye=n.RGBA32F),he===n.HALF_FLOAT&&(ye=n.RGBA16F),he===n.UNSIGNED_BYTE&&(ye=De===tr?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RGBA16_EXT),he===n.SHORT&&rt&&(ye=rt.RGBA16_SNORM_EXT),he===n.UNSIGNED_SHORT_4_4_4_4&&(ye=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(ye=n.RGB5_A1)}return(ye===n.R16F||ye===n.R32F||ye===n.RG16F||ye===n.RG32F||ye===n.RGBA16F||ye===n.RGBA32F)&&e.get("EXT_color_buffer_float"),ye}function S(K,U){let he;return K?U===null||U===To||U===dm?he=n.DEPTH24_STENCIL8:U===da?he=n.DEPTH32F_STENCIL8:U===fm&&(he=n.DEPTH24_STENCIL8,Dt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===To||U===dm?he=n.DEPTH_COMPONENT24:U===da?he=n.DEPTH_COMPONENT32F:U===fm&&(he=n.DEPTH_COMPONENT16),he}function A(K,U){return _(K)===!0||K.isFramebufferTexture&&K.minFilter!==Vr&&K.minFilter!==Gr?Math.log2(Math.max(U.width,U.height))+1:K.mipmaps!==void 0&&K.mipmaps.length>0?K.mipmaps.length:K.isCompressedTexture&&Array.isArray(K.image)?U.mipmaps.length:1}function R(K){let U=K.target;U.removeEventListener("dispose",R),I(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(K){let U=K.target;U.removeEventListener("dispose",M),D(U)}function I(K){let U=i.get(K);if(U.__webglInit===void 0)return;let he=K.source,Pe=h.get(he);if(Pe){let Ne=Pe[U.__cacheKey];Ne.usedTimes--,Ne.usedTimes===0&&C(K),Object.keys(Pe).length===0&&h.delete(he)}i.remove(K)}function C(K){let U=i.get(K);n.deleteTexture(U.__webglTexture);let he=K.source,Pe=h.get(he);delete Pe[U.__cacheKey],a.memory.textures--}function D(K){let U=i.get(K);if(K.depthTexture&&(K.depthTexture.dispose(),i.remove(K.depthTexture)),K.isWebGLCubeRenderTarget)for(let Pe=0;Pe<6;Pe++){if(Array.isArray(U.__webglFramebuffer[Pe]))for(let Ne=0;Ne=r.maxTextures&&Dt("WebGLTextures: Trying to use "+K+" texture units while this GPU supports only "+r.maxTextures),w+=1,K}function V(K){let U=[];return U.push(K.wrapS),U.push(K.wrapT),U.push(K.wrapR||0),U.push(K.magFilter),U.push(K.minFilter),U.push(K.anisotropy),U.push(K.internalFormat),U.push(K.format),U.push(K.type),U.push(K.generateMipmaps),U.push(K.premultiplyAlpha),U.push(K.flipY),U.push(K.unpackAlignment),U.push(K.colorSpace),U.join()}function q(K,U){let he=i.get(K);if(K.isVideoTexture&&Di(K),K.isRenderTargetTexture===!1&&K.isExternalTexture!==!0&&K.version>0&&he.__version!==K.version){let Pe=K.image;if(Pe===null)Dt("WebGLRenderer: Texture marked for update but no image data found.");else if(Pe.complete===!1)Dt("WebGLRenderer: Texture marked for update but image is incomplete");else{ve(he,K,U);return}}else K.isExternalTexture&&(he.__webglTexture=K.sourceTexture?K.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+U)}function j(K,U){let he=i.get(K);if(K.isRenderTargetTexture===!1&&K.version>0&&he.__version!==K.version){ve(he,K,U);return}else K.isExternalTexture&&(he.__webglTexture=K.sourceTexture?K.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+U)}function J(K,U){let he=i.get(K);if(K.isRenderTargetTexture===!1&&K.version>0&&he.__version!==K.version){ve(he,K,U);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+U)}function H(K,U){let he=i.get(K);if(K.isCubeDepthTexture!==!0&&K.version>0&&he.__version!==K.version){Ce(he,K,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+U)}let Y={[tl]:n.REPEAT,[wa]:n.CLAMP_TO_EDGE,[Xh]:n.MIRRORED_REPEAT},de={[Vr]:n.NEAREST,[cT]:n.NEAREST_MIPMAP_NEAREST,[ou]:n.NEAREST_MIPMAP_LINEAR,[Gr]:n.LINEAR,[cm]:n.LINEAR_MIPMAP_NEAREST,[So]:n.LINEAR_MIPMAP_LINEAR},me={[HB]:n.NEVER,[qB]:n.ALWAYS,[XB]:n.LESS,[jT]:n.LEQUAL,[YB]:n.EQUAL,[qT]:n.GEQUAL,[KB]:n.GREATER,[jB]:n.NOTEQUAL};function Ue(K,U){if(U.type===da&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===Gr||U.magFilter===cm||U.magFilter===ou||U.magFilter===So||U.minFilter===Gr||U.minFilter===cm||U.minFilter===ou||U.minFilter===So)&&Dt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(K,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(K,n.TEXTURE_WRAP_T,Y[U.wrapT]),(K===n.TEXTURE_3D||K===n.TEXTURE_2D_ARRAY)&&n.texParameteri(K,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(K,n.TEXTURE_MAG_FILTER,de[U.magFilter]),n.texParameteri(K,n.TEXTURE_MIN_FILTER,de[U.minFilter]),U.compareFunction&&(n.texParameteri(K,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(K,n.TEXTURE_COMPARE_FUNC,me[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Vr||U.minFilter!==ou&&U.minFilter!==So||U.type===da&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(K,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function ae(K,U){let he=!1;K.__webglInit===void 0&&(K.__webglInit=!0,U.addEventListener("dispose",R));let Pe=U.source,Ne=h.get(Pe);Ne===void 0&&(Ne={},h.set(Pe,Ne));let et=V(U);if(et!==K.__cacheKey){Ne[et]===void 0&&(Ne[et]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,he=!0),Ne[et].usedTimes++;let rt=Ne[K.__cacheKey];rt!==void 0&&(Ne[K.__cacheKey].usedTimes--,rt.usedTimes===0&&C(U)),K.__cacheKey=et,K.__webglTexture=Ne[et].texture}return he}function _e(K,U,he){return Math.floor(Math.floor(K/he)/U)}function ne(K,U,he,Pe){let et=K.updateRanges;if(et.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,he,Pe,U.data);else{et.sort((At,nt)=>At.start-nt.start);let rt=0;for(let At=1;At0){ii&&hi&&t.texStorage2D(n.TEXTURE_2D,Qe,nt,Vt[0].width,Vt[0].height);for(let Ie=0,ut=Vt.length;Ie0){let it=EI(Ze.width,Ze.height,U.format,U.type);for(let Ve of U.layerUpdates){let Rt=Ze.data.subarray(Ve*it/Ze.data.BYTES_PER_ELEMENT,(Ve+1)*it/Ze.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,Ve,Ze.width,Ze.height,1,ct,Rt)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,0,Ze.width,Ze.height,De.depth,ct,Ze.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ie,nt,Ze.width,Ze.height,De.depth,0,Ze.data,0,0);else Dt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else ii?se&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,0,Ze.width,Ze.height,De.depth,ct,At,Ze.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ie,nt,Ze.width,Ze.height,De.depth,0,ct,At,Ze.data)}else{ii&&hi&&t.texStorage2D(n.TEXTURE_2D,Qe,nt,Vt[0].width,Vt[0].height);for(let Ie=0,ut=Vt.length;Ie0){let Ie=EI(De.width,De.height,U.format,U.type);for(let ut of U.layerUpdates){let it=De.data.subarray(ut*Ie/De.data.BYTES_PER_ELEMENT,(ut+1)*Ie/De.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,ut,De.width,De.height,1,ct,At,it)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,De.width,De.height,De.depth,ct,At,De.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,nt,De.width,De.height,De.depth,0,ct,At,De.data);else if(U.isData3DTexture)ii?(hi&&t.texStorage3D(n.TEXTURE_3D,Qe,nt,De.width,De.height,De.depth),se&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,De.width,De.height,De.depth,ct,At,De.data)):t.texImage3D(n.TEXTURE_3D,0,nt,De.width,De.height,De.depth,0,ct,At,De.data);else if(U.isFramebufferTexture){if(hi)if(ii)t.texStorage2D(n.TEXTURE_2D,Qe,nt,De.width,De.height);else{let Ie=De.width,ut=De.height;for(let it=0;it>=1,ut>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let Ie=n.canvas;if(Ie.hasAttribute("layoutsubtree")||Ie.setAttribute("layoutsubtree","true"),De.parentNode!==Ie){Ie.appendChild(De),d.add(U),Ie.onpaint=Gt=>{let $i=Gt.changedElements;for(let li of d)$i.includes(li.image)&&(li.needsUpdate=!0)},Ie.requestPaint();return}let ut=0,it=n.RGBA,Ve=n.RGBA,Rt=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,ut,it,Ve,Rt,De),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(Vt.length>0){if(ii&&hi){let Ie=ji(Vt[0]);t.texStorage2D(n.TEXTURE_2D,Qe,nt,Ie.width,Ie.height)}for(let Ie=0,ut=Vt.length;Ie0&&ut++;let Ve=ji(nt[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,ut,hi,Ve.width,Ve.height)}for(let Ve=0;Ve<6;Ve++)if(At){se?Ie&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,nt[Ve].width,nt[Ve].height,Vt,ii,nt[Ve].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,hi,nt[Ve].width,nt[Ve].height,0,Vt,ii,nt[Ve].data);for(let Rt=0;Rt>et),Ze=Math.max(1,U.height>>et);Ne===n.TEXTURE_3D||Ne===n.TEXTURE_2D_ARRAY?t.texImage3D(Ne,et,De,nt,Ze,U.depth,0,rt,ye,null):t.texImage2D(Ne,et,De,nt,Ze,0,rt,ye,null)}t.bindFramebuffer(n.FRAMEBUFFER,K),Ht(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,Pe,Ne,At.__webglTexture,0,Qi(U)):(Ne===n.TEXTURE_2D||Ne>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ne<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Pe,Ne,At.__webglTexture,et),t.bindFramebuffer(n.FRAMEBUFFER,null)}function be(K,U,he){if(n.bindRenderbuffer(n.RENDERBUFFER,K),U.depthBuffer){let Pe=U.depthTexture,Ne=Pe&&Pe.isDepthTexture?Pe.type:null,et=S(U.stencilBuffer,Ne),rt=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;Ht(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Qi(U),et,U.width,U.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,Qi(U),et,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,et,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,rt,n.RENDERBUFFER,K)}else{let Pe=U.textures;for(let Ne=0;Ne{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,Pe.removeEventListener("dispose",Ne)};Pe.addEventListener("dispose",Ne),U.__depthDisposeCallback=Ne}U.__boundDepthTexture=Pe}if(K.depthTexture&&!U.__autoAllocateDepthBuffer)if(he)for(let Pe=0;Pe<6;Pe++)Ge(U.__webglFramebuffer[Pe],K,Pe);else{let Pe=K.texture.mipmaps;Pe&&Pe.length>0?Ge(U.__webglFramebuffer[0],K,0):Ge(U.__webglFramebuffer,K,0)}else if(he){U.__webglDepthbuffer=[];for(let Pe=0;Pe<6;Pe++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[Pe]),U.__webglDepthbuffer[Pe]===void 0)U.__webglDepthbuffer[Pe]=n.createRenderbuffer(),be(U.__webglDepthbuffer[Pe],K,!1);else{let Ne=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer[Pe];n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ne,n.RENDERBUFFER,et)}}else{let Pe=K.texture.mipmaps;if(Pe&&Pe.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),be(U.__webglDepthbuffer,K,!1);else{let Ne=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ne,n.RENDERBUFFER,et)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ye(K,U,he){let Pe=i.get(K);U!==void 0&&ue(Pe.__webglFramebuffer,K,K.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&qe(K)}function Ke(K){let U=K.texture,he=i.get(K),Pe=i.get(U);K.addEventListener("dispose",M);let Ne=K.textures,et=K.isWebGLCubeRenderTarget===!0,rt=Ne.length>1;if(rt||(Pe.__webglTexture===void 0&&(Pe.__webglTexture=n.createTexture()),Pe.__version=U.version,a.memory.textures++),et){he.__webglFramebuffer=[];for(let ye=0;ye<6;ye++)if(U.mipmaps&&U.mipmaps.length>0){he.__webglFramebuffer[ye]=[];for(let De=0;De0){he.__webglFramebuffer=[];for(let ye=0;ye0&&Ht(K)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let ye=0;ye0)for(let De=0;De0)for(let De=0;De0){if(Ht(K)===!1){let U=K.textures,he=K.width,Pe=K.height,Ne=n.COLOR_BUFFER_BIT,et=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,rt=i.get(K),ye=U.length>1;if(ye)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 Di(K){let U=a.render.frame;f.get(K)!==U&&(f.set(K,U),K.update())}function ot(K,U){let he=K.colorSpace,Pe=K.format,Ne=K.type;return K.isCompressedTexture===!0||K.isVideoTexture===!0||he!==cs&&he!==nc&&(fi.getTransfer(he)===tr?(Pe!==ua||Ne!==Fs)&&Dt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):kt("WebGLTextures: Unsupported texture color space:",he)),U}function ji(K){return typeof HTMLImageElement!="undefined"&&K instanceof HTMLImageElement?(c.width=K.naturalWidth||K.width,c.height=K.naturalHeight||K.height):typeof VideoFrame!="undefined"&&K instanceof VideoFrame?(c.width=K.displayWidth,c.height=K.displayHeight):(c.width=K.width,c.height=K.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=k,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=q,this.setTexture2DArray=j,this.setTexture3D=J,this.setTextureCube=H,this.rebindTextures=Ye,this.setupRenderTarget=Ke,this.updateRenderTargetMipmap=Zt,this.updateMultisampleRenderTarget=oe,this.setupDepthRenderbuffer=qe,this.setupFrameBufferTexture=ue,this.useMultisampledRTT=Ht,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function Zae(n,e){function t(i,r=nc){let s,a=fi.getTransfer(r);if(i===Fs)return n.UNSIGNED_BYTE;if(i===dT)return n.UNSIGNED_SHORT_4_4_4_4;if(i===uT)return n.UNSIGNED_SHORT_5_5_5_1;if(i===cI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===fI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===oI)return n.BYTE;if(i===lI)return n.SHORT;if(i===fm)return n.UNSIGNED_SHORT;if(i===fT)return n.INT;if(i===To)return n.UNSIGNED_INT;if(i===da)return n.FLOAT;if(i===dl)return n.HALF_FLOAT;if(i===dI)return n.ALPHA;if(i===uI)return n.RGB;if(i===ua)return n.RGBA;if(i===il)return n.DEPTH_COMPONENT;if(i===Mf)return n.DEPTH_STENCIL;if(i===hT)return n.RED;if(i===mT)return n.RED_INTEGER;if(i===yf)return n.RG;if(i===pT)return n.RG_INTEGER;if(i===gT)return n.RGBA_INTEGER;if(i===A_||i===x_||i===R_||i===b_)if(a===tr)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===A_)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===x_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===R_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===b_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===A_)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===x_)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===R_)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===b_)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===_T||i===vT||i===ET||i===ST)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===_T)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===vT)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===ET)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===ST)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===TT||i===AT||i===xT||i===RT||i===bT||i===M_||i===MT)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===TT||i===AT)return a===tr?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===xT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===RT)return s.COMPRESSED_R11_EAC;if(i===bT)return s.COMPRESSED_SIGNED_R11_EAC;if(i===M_)return s.COMPRESSED_RG11_EAC;if(i===MT)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===yT||i===IT||i===CT||i===PT||i===DT||i===LT||i===OT||i===NT||i===wT||i===FT||i===BT||i===UT||i===VT||i===GT)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===yT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===IT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===CT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===PT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===DT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===LT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===OT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===NT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===wT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===FT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===BT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===UT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===VT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===GT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===kT||i===WT||i===zT)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===kT)return a===tr?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===WT)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===zT)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===HT||i===XT||i===y_||i===YT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===HT)return s.COMPRESSED_RED_RGTC1_EXT;if(i===XT)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===y_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===YT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===dm?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function eoe(n,e){function t(p,_){p.matrixAutoUpdate===!0&&p.updateMatrix(),_.value.copy(p.matrix)}function i(p,_){_.color.getRGB(p.fogColor.value,gI(n)),_.isFog?(p.fogNear.value=_.near,p.fogFar.value=_.far):_.isFogExp2&&(p.fogDensity.value=_.density)}function r(p,_,v,E,T){_.isNodeMaterial?_.uniformsNeedUpdate=!1:_.isMeshBasicMaterial?s(p,_):_.isMeshLambertMaterial?(s(p,_),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)):_.isMeshToonMaterial?(s(p,_),d(p,_)):_.isMeshPhongMaterial?(s(p,_),f(p,_),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)):_.isMeshStandardMaterial?(s(p,_),u(p,_),_.isMeshPhysicalMaterial&&h(p,_,T)):_.isMeshMatcapMaterial?(s(p,_),m(p,_)):_.isMeshDepthMaterial?s(p,_):_.isMeshDistanceMaterial?(s(p,_),g(p,_)):_.isMeshNormalMaterial?s(p,_):_.isLineBasicMaterial?(a(p,_),_.isLineDashedMaterial&&o(p,_)):_.isPointsMaterial?l(p,_,v,E):_.isSpriteMaterial?c(p,_):_.isShadowMaterial?(p.color.value.copy(_.color),p.opacity.value=_.opacity):_.isShaderMaterial&&(_.uniformsNeedUpdate=!1)}function s(p,_){p.opacity.value=_.opacity,_.color&&p.diffuse.value.copy(_.color),_.emissive&&p.emissive.value.copy(_.emissive).multiplyScalar(_.emissiveIntensity),_.map&&(p.map.value=_.map,t(_.map,p.mapTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.bumpMap&&(p.bumpMap.value=_.bumpMap,t(_.bumpMap,p.bumpMapTransform),p.bumpScale.value=_.bumpScale,_.side===yn&&(p.bumpScale.value*=-1)),_.normalMap&&(p.normalMap.value=_.normalMap,t(_.normalMap,p.normalMapTransform),p.normalScale.value.copy(_.normalScale),_.side===yn&&p.normalScale.value.negate()),_.displacementMap&&(p.displacementMap.value=_.displacementMap,t(_.displacementMap,p.displacementMapTransform),p.displacementScale.value=_.displacementScale,p.displacementBias.value=_.displacementBias),_.emissiveMap&&(p.emissiveMap.value=_.emissiveMap,t(_.emissiveMap,p.emissiveMapTransform)),_.specularMap&&(p.specularMap.value=_.specularMap,t(_.specularMap,p.specularMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest);let v=e.get(_),E=v.envMap,T=v.envMapRotation;E&&(p.envMap.value=E,p.envMapRotation.value.setFromMatrix4(Jae.makeRotationFromEuler(T)).transpose(),E.isCubeTexture&&E.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(L2),p.reflectivity.value=_.reflectivity,p.ior.value=_.ior,p.refractionRatio.value=_.refractionRatio),_.lightMap&&(p.lightMap.value=_.lightMap,p.lightMapIntensity.value=_.lightMapIntensity,t(_.lightMap,p.lightMapTransform)),_.aoMap&&(p.aoMap.value=_.aoMap,p.aoMapIntensity.value=_.aoMapIntensity,t(_.aoMap,p.aoMapTransform))}function a(p,_){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,_.map&&(p.map.value=_.map,t(_.map,p.mapTransform))}function o(p,_){p.dashSize.value=_.dashSize,p.totalSize.value=_.dashSize+_.gapSize,p.scale.value=_.scale}function l(p,_,v,E){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,p.size.value=_.size*v,p.scale.value=E*.5,_.map&&(p.map.value=_.map,t(_.map,p.uvTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest)}function c(p,_){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,p.rotation.value=_.rotation,_.map&&(p.map.value=_.map,t(_.map,p.mapTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest)}function f(p,_){p.specular.value.copy(_.specular),p.shininess.value=Math.max(_.shininess,1e-4)}function d(p,_){_.gradientMap&&(p.gradientMap.value=_.gradientMap)}function u(p,_){p.metalness.value=_.metalness,_.metalnessMap&&(p.metalnessMap.value=_.metalnessMap,t(_.metalnessMap,p.metalnessMapTransform)),p.roughness.value=_.roughness,_.roughnessMap&&(p.roughnessMap.value=_.roughnessMap,t(_.roughnessMap,p.roughnessMapTransform)),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)}function h(p,_,v){p.ior.value=_.ior,_.sheen>0&&(p.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),p.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(p.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,p.sheenColorMapTransform)),_.sheenRoughnessMap&&(p.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,p.sheenRoughnessMapTransform))),_.clearcoat>0&&(p.clearcoat.value=_.clearcoat,p.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(p.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,p.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(p.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===yn&&p.clearcoatNormalScale.value.negate())),_.dispersion>0&&(p.dispersion.value=_.dispersion),_.iridescence>0&&(p.iridescence.value=_.iridescence,p.iridescenceIOR.value=_.iridescenceIOR,p.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(p.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,p.iridescenceMapTransform)),_.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),_.transmission>0&&(p.transmission.value=_.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),_.transmissionMap&&(p.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,p.transmissionMapTransform)),p.thickness.value=_.thickness,_.thicknessMap&&(p.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=_.attenuationDistance,p.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(p.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(p.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=_.specularIntensity,p.specularColor.value.copy(_.specularColor),_.specularColorMap&&(p.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,p.specularColorMapTransform)),_.specularIntensityMap&&(p.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,_){_.matcap&&(p.matcap.value=_.matcap)}function g(p,_){let v=e.get(_).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 toe(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,E){let T=E.program;i.uniformBlockBinding(v,T)}function c(v,E){let T=r[v.id];T===void 0&&(m(v),T=f(v),r[v.id]=T,v.addEventListener("dispose",p));let S=E.program;i.updateUBOMapping(v,S);let A=e.render.frame;s[v.id]!==A&&(u(v),s[v.id]=A)}function f(v){let E=d();v.__bindingPointIndex=E;let T=n.createBuffer(),S=v.__size,A=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,T),n.bufferData(n.UNIFORM_BUFFER,S,A),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,E,T),T}function d(){for(let v=0;v0&&(T+=S-A),v.__size=T,v.__cache={},this}function g(v){let E={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(E.boundary=4,E.storage=4):v.isVector2?(E.boundary=8,E.storage=8):v.isVector3||v.isColor?(E.boundary=16,E.storage=12):v.isVector4?(E.boundary=16,E.storage=16):v.isMatrix3?(E.boundary=48,E.storage=48):v.isMatrix4?(E.boundary=64,E.storage=64):v.isTexture?Dt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(E.boundary=16,E.storage=v.byteLength):Dt("WebGLRenderer: Unsupported uniform value type.",v),E}function p(v){let E=v.target;E.removeEventListener("dispose",p);let T=a.indexOf(E.__bindingPointIndex);a.splice(T,1),n.deleteBuffer(r[E.id]),delete r[E.id],delete s[E.id]}function _(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:_}}function roe(){return ul===null&&(ul=new em(ioe,16,16,yf,dl),ul.name="DFG_LUT",ul.minFilter=Gr,ul.magFilter=Gr,ul.wrapS=wa,ul.wrapT=wa,ul.generateMipmaps=!1,ul.needsUpdate=!0),ul}var vie,Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,yie,Iie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,zie,Hie,Xie,Yie,Kie,jie,qie,Zie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,ure,hre,mre,pre,gre,_re,vre,Ere,Sre,Tre,Are,xre,Rre,bre,Mre,yre,Ire,Cre,Pre,Dre,Lre,Ore,Nre,wre,Fre,Bre,Ure,Vre,Gre,kre,Wre,zre,Hre,Xre,Yre,Kre,jre,qre,Zre,Qre,$re,Jre,ene,tne,ine,rne,nne,sne,ane,one,lne,cne,fne,dne,une,hne,mne,pne,gne,_ne,vne,Ene,Sne,Tne,Ane,xne,Rne,bne,Mne,yne,Ine,Cne,Pne,Dne,Lne,One,Nne,wne,Fne,Bne,Une,Vne,Gne,kne,Wne,zne,Hne,Xne,Yne,Kne,jne,qne,Zne,Qne,_i,Et,hl,QT,$ne,y2,If,n2,cu,nse,P_,s2,MI,yI,II,CI,sse,gm,JT,gse,I2,LI,C2,P2,D2,c2,f2,d2,u2,h2,OI,NI,wI,PI,pm,sae,aae,g2,fae,$T,gae,_ae,Eae,Tae,xae,bae,yae,Dae,BI,UI,Vae,zae,Hae,Xae,Yae,b2,D_,DI,Qae,$ae,VI,GI,Jae,L2,ioe,ul,eA,us=y(()=>{bI();bI();vie=`#ifdef USE_ALPHAHASH +`+H)}else N!==""?Dt("WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(j=!1);j&&(D.diagnostics={runnable:q,programLog:N,vertexShader:{log:B,prefix:p},fragmentShader:{log:V,prefix:_}})}r.deleteShader(S),r.deleteShader(A),M=new pm(r,g),I=gae(r,g)}let M;this.getUniforms=function(){return M===void 0&&R(this),M};let I;this.getAttributes=function(){return I===void 0&&R(this),I};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(g,aae)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(g),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=oae++,this.cacheKey=e,this.usedTimes=1,this.program=g,this.vertexShader=S,this.fragmentShader=A,this}function Oae(n){return n===yf||n===M_||n===y_}function Nae(n,e,t,i,r,s){let a=new Zh,o=new VI,l=new Set,c=[],f=new Map,d=i.logarithmicDepthBuffer,u=i.precision,h={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 g(M,I,C,D,w,k){let O=D.fog,N=w.geometry,B=M.isMeshStandardMaterial||M.isMeshLambertMaterial||M.isMeshPhongMaterial?D.environment:null,V=M.isMeshStandardMaterial||M.isMeshLambertMaterial&&!M.envMap||M.isMeshPhongMaterial&&!M.envMap,q=e.get(M.envMap||B,V),j=q&&q.mapping===T_?q.image.height:null,J=h[M.type];M.precision!==null&&(u=i.getMaxPrecision(M.precision),u!==M.precision&&Dt("WebGLProgram.getParameters:",M.precision,"not supported, using",u,"instead."));let H=N.morphAttributes.position||N.morphAttributes.normal||N.morphAttributes.color,Y=H!==void 0?H.length:0,de=0;N.morphAttributes.position!==void 0&&(de=1),N.morphAttributes.normal!==void 0&&(de=2),N.morphAttributes.color!==void 0&&(de=3);let me,Ue,ae,_e;if(J){let Gt=hl[J];me=Gt.vertexShader,Ue=Gt.fragmentShader}else me=M.vertexShader,Ue=M.fragmentShader,o.update(M),ae=o.getVertexShaderID(M),_e=o.getFragmentShaderID(M);let ne=n.getRenderTarget(),ve=n.state.buffers.depth.getReversed(),Ce=w.isInstancedMesh===!0,ue=w.isBatchedMesh===!0,be=!!M.map,Ge=!!M.matcap,qe=!!q,Ye=!!M.aoMap,Ke=!!M.lightMap,Zt=!!M.bumpMap,Ut=!!M.normalMap,Wi=!!M.displacementMap,oe=!!M.emissiveMap,Qi=!!M.metalnessMap,Ht=!!M.roughnessMap,Di=M.anisotropy>0,ot=M.clearcoat>0,ji=M.dispersion>0,K=M.iridescence>0,U=M.sheen>0,he=M.transmission>0,Pe=Di&&!!M.anisotropyMap,Ne=ot&&!!M.clearcoatMap,et=ot&&!!M.clearcoatNormalMap,rt=ot&&!!M.clearcoatRoughnessMap,ye=K&&!!M.iridescenceMap,De=K&&!!M.iridescenceThicknessMap,ct=U&&!!M.sheenColorMap,At=U&&!!M.sheenRoughnessMap,nt=!!M.specularMap,Ze=!!M.specularColorMap,Vt=!!M.specularIntensityMap,ii=he&&!!M.transmissionMap,hi=he&&!!M.thicknessMap,se=!!M.gradientMap,Qe=!!M.alphaMap,Ie=M.alphaTest>0,ut=!!M.alphaHash,it=!!M.extensions,Ve=ws;M.toneMapped&&(ne===null||ne.isXRRenderTarget===!0)&&(Ve=n.toneMapping);let Rt={shaderID:J,shaderType:M.type,shaderName:M.name,vertexShader:me,fragmentShader:Ue,defines:M.defines,customVertexShaderID:ae,customFragmentShaderID:_e,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:u,batching:ue,batchingColor:ue&&w._colorsTexture!==null,instancing:Ce,instancingColor:Ce&&w.instanceColor!==null,instancingMorph:Ce&&w.morphTexture!==null,outputColorSpace:ne===null?n.outputColorSpace:ne.isXRRenderTarget===!0?ne.texture.colorSpace:fi.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:be,matcap:Ge,envMap:qe,envMapMode:qe&&q.mapping,envMapCubeUVHeight:j,aoMap:Ye,lightMap:Ke,bumpMap:Zt,normalMap:Ut,displacementMap:Wi,emissiveMap:oe,normalMapObjectSpace:Ut&&M.normalMapType===HB,normalMapTangentSpace:Ut&&M.normalMapType===hm,packedNormalMap:Ut&&M.normalMapType===hm&&Oae(M.normalMap.format),metalnessMap:Qi,roughnessMap:Ht,anisotropy:Di,anisotropyMap:Pe,clearcoat:ot,clearcoatMap:Ne,clearcoatNormalMap:et,clearcoatRoughnessMap:rt,dispersion:ji,iridescence:K,iridescenceMap:ye,iridescenceThicknessMap:De,sheen:U,sheenColorMap:ct,sheenRoughnessMap:At,specularMap:nt,specularColorMap:Ze,specularIntensityMap:Vt,transmission:he,transmissionMap:ii,thicknessMap:hi,gradientMap:se,opaque:M.transparent===!1&&M.blending===Kd&&M.alphaToCoverage===!1,alphaMap:Qe,alphaTest:Ie,alphaHash:ut,combine:M.combine,mapUv:be&&m(M.map.channel),aoMapUv:Ye&&m(M.aoMap.channel),lightMapUv:Ke&&m(M.lightMap.channel),bumpMapUv:Zt&&m(M.bumpMap.channel),normalMapUv:Ut&&m(M.normalMap.channel),displacementMapUv:Wi&&m(M.displacementMap.channel),emissiveMapUv:oe&&m(M.emissiveMap.channel),metalnessMapUv:Qi&&m(M.metalnessMap.channel),roughnessMapUv:Ht&&m(M.roughnessMap.channel),anisotropyMapUv:Pe&&m(M.anisotropyMap.channel),clearcoatMapUv:Ne&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:et&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rt&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:ye&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:De&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:At&&m(M.sheenRoughnessMap.channel),specularMapUv:nt&&m(M.specularMap.channel),specularColorMapUv:Ze&&m(M.specularColorMap.channel),specularIntensityMapUv:Vt&&m(M.specularIntensityMap.channel),transmissionMapUv:ii&&m(M.transmissionMap.channel),thicknessMapUv:hi&&m(M.thicknessMap.channel),alphaMapUv:Qe&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Ut||Di),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&&(be||Qe),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Ut===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:ve,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:de,numDirLights:I.directional.length,numPointLights:I.point.length,numSpotLights:I.spot.length,numSpotLightMaps:I.spotLightMap.length,numRectAreaLights:I.rectArea.length,numHemiLights:I.hemi.length,numDirLightShadows:I.directionalShadowMap.length,numPointLightShadows:I.pointShadowMap.length,numSpotLightShadows:I.spotShadowMap.length,numSpotLightShadowsWithMaps:I.numSpotLightShadowsWithMaps,numLightProbes:I.numLightProbes,numLightProbeGrids:k.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:Ve,decodeVideoTexture:be&&M.map.isVideoTexture===!0&&fi.getTransfer(M.map.colorSpace)===tr,decodeVideoTextureEmissive:oe&&M.emissiveMap.isVideoTexture===!0&&fi.getTransfer(M.emissiveMap.colorSpace)===tr,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ua,flipSided:M.side===yn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:it&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(it&&M.extensions.multiDraw===!0||ue)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return Rt.vertexUv1s=l.has(1),Rt.vertexUv2s=l.has(2),Rt.vertexUv3s=l.has(3),l.clear(),Rt}function p(M){let I=[];if(M.shaderID?I.push(M.shaderID):(I.push(M.customVertexShaderID),I.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)I.push(C),I.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(_(I,M),v(I,M),I.push(n.outputColorSpace)),I.push(M.customProgramCacheKey),I.join()}function _(M,I){M.push(I.precision),M.push(I.outputColorSpace),M.push(I.envMapMode),M.push(I.envMapCubeUVHeight),M.push(I.mapUv),M.push(I.alphaMapUv),M.push(I.lightMapUv),M.push(I.aoMapUv),M.push(I.bumpMapUv),M.push(I.normalMapUv),M.push(I.displacementMapUv),M.push(I.emissiveMapUv),M.push(I.metalnessMapUv),M.push(I.roughnessMapUv),M.push(I.anisotropyMapUv),M.push(I.clearcoatMapUv),M.push(I.clearcoatNormalMapUv),M.push(I.clearcoatRoughnessMapUv),M.push(I.iridescenceMapUv),M.push(I.iridescenceThicknessMapUv),M.push(I.sheenColorMapUv),M.push(I.sheenRoughnessMapUv),M.push(I.specularMapUv),M.push(I.specularColorMapUv),M.push(I.specularIntensityMapUv),M.push(I.transmissionMapUv),M.push(I.thicknessMapUv),M.push(I.combine),M.push(I.fogExp2),M.push(I.sizeAttenuation),M.push(I.morphTargetsCount),M.push(I.morphAttributeCount),M.push(I.numDirLights),M.push(I.numPointLights),M.push(I.numSpotLights),M.push(I.numSpotLightMaps),M.push(I.numHemiLights),M.push(I.numRectAreaLights),M.push(I.numDirLightShadows),M.push(I.numPointLightShadows),M.push(I.numSpotLightShadows),M.push(I.numSpotLightShadowsWithMaps),M.push(I.numLightProbes),M.push(I.shadowMapType),M.push(I.toneMapping),M.push(I.numClippingPlanes),M.push(I.numClipIntersection),M.push(I.depthPacking)}function v(M,I){a.disableAll(),I.instancing&&a.enable(0),I.instancingColor&&a.enable(1),I.instancingMorph&&a.enable(2),I.matcap&&a.enable(3),I.envMap&&a.enable(4),I.normalMapObjectSpace&&a.enable(5),I.normalMapTangentSpace&&a.enable(6),I.clearcoat&&a.enable(7),I.iridescence&&a.enable(8),I.alphaTest&&a.enable(9),I.vertexColors&&a.enable(10),I.vertexAlphas&&a.enable(11),I.vertexUv1s&&a.enable(12),I.vertexUv2s&&a.enable(13),I.vertexUv3s&&a.enable(14),I.vertexTangents&&a.enable(15),I.anisotropy&&a.enable(16),I.alphaHash&&a.enable(17),I.batching&&a.enable(18),I.dispersion&&a.enable(19),I.batchingColor&&a.enable(20),I.gradientMap&&a.enable(21),I.packedNormalMap&&a.enable(22),I.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),I.fog&&a.enable(0),I.useFog&&a.enable(1),I.flatShading&&a.enable(2),I.logarithmicDepthBuffer&&a.enable(3),I.reversedDepthBuffer&&a.enable(4),I.skinning&&a.enable(5),I.morphTargets&&a.enable(6),I.morphNormals&&a.enable(7),I.morphColors&&a.enable(8),I.premultipliedAlpha&&a.enable(9),I.shadowMapEnabled&&a.enable(10),I.doubleSided&&a.enable(11),I.flipSided&&a.enable(12),I.useDepthPacking&&a.enable(13),I.dithering&&a.enable(14),I.transmission&&a.enable(15),I.sheen&&a.enable(16),I.opaque&&a.enable(17),I.pointsUvs&&a.enable(18),I.decodeVideoTexture&&a.enable(19),I.decodeVideoTextureEmissive&&a.enable(20),I.alphaToCoverage&&a.enable(21),I.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function E(M){let I=h[M.type],C;if(I){let D=hl[I];C=r2.clone(D.uniforms)}else C=M.uniforms;return C}function T(M,I){let C=f.get(I);return C!==void 0?++C.usedTimes:(C=new Dae(n,I,M,r),c.push(C),f.set(I,C)),C}function S(M){if(--M.usedTimes===0){let I=c.indexOf(M);c[I]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function A(M){o.remove(M)}function R(){o.dispose()}return{getParameters:g,getProgramCacheKey:p,getUniforms:E,acquireProgram:T,releaseProgram:S,releaseShaderCache:A,programs:c,dispose:R}}function wae(){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 Fae(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 x2(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 R2(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(u){let h=0;return u.isInstancedMesh&&(h+=2),u.isSkinnedMesh&&(h+=1),h}function o(u,h,m,g,p,_){let v=n[e];return v===void 0?(v={id:u.id,object:u,geometry:h,material:m,materialVariant:a(u),groupOrder:g,renderOrder:u.renderOrder,z:p,group:_},n[e]=v):(v.id=u.id,v.object=u,v.geometry=h,v.material=m,v.materialVariant=a(u),v.groupOrder=g,v.renderOrder=u.renderOrder,v.z=p,v.group=_),e++,v}function l(u,h,m,g,p,_){let v=o(u,h,m,g,p,_);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(u,h,m,g,p,_){let v=o(u,h,m,g,p,_);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(u,h){t.length>1&&t.sort(u||Fae),i.length>1&&i.sort(h||x2),r.length>1&&r.sort(h||x2)}function d(){for(let u=e,h=n.length;u=s.length?(a=new R2,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function Uae(){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 re,color:new ht};break;case"SpotLight":t={position:new re,direction:new re,color:new ht,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new re,color:new ht,distance:0,decay:0};break;case"HemisphereLight":t={direction:new re,skyColor:new ht,groundColor:new ht};break;case"RectAreaLight":t={color:new ht,position:new re,halfWidth:new re,halfHeight:new re};break}return n[e.id]=t,t}}}function Vae(){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 yt};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new yt,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function kae(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function Wae(n){let e=new Uae,t=Vae(),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 re);let r=new re,s=new di,a=new di;function o(c){let f=0,d=0,u=0;for(let I=0;I<9;I++)i.probe[I].set(0,0,0);let h=0,m=0,g=0,p=0,_=0,v=0,E=0,T=0,S=0,A=0,R=0;c.sort(kae);for(let I=0,C=c.length;I0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=Et.LTC_FLOAT_1,i.rectAreaLTC2=Et.LTC_FLOAT_2):(i.rectAreaLTC1=Et.LTC_HALF_1,i.rectAreaLTC2=Et.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=u;let M=i.hash;(M.directionalLength!==h||M.pointLength!==m||M.spotLength!==g||M.rectAreaLength!==p||M.hemiLength!==_||M.numDirectionalShadows!==v||M.numPointShadows!==E||M.numSpotShadows!==T||M.numSpotMaps!==S||M.numLightProbes!==R)&&(i.directional.length=h,i.spot.length=g,i.rectArea.length=p,i.point.length=m,i.hemi.length=_,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=E,i.pointShadowMap.length=E,i.spotShadow.length=T,i.spotShadowMap.length=T,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=E,i.spotLightMatrix.length=T+S-A,i.spotLightMap.length=S,i.numSpotLightShadowsWithMaps=A,i.numLightProbes=R,M.directionalLength=h,M.pointLength=m,M.spotLength=g,M.rectAreaLength=p,M.hemiLength=_,M.numDirectionalShadows=v,M.numPointShadows=E,M.numSpotShadows=T,M.numSpotMaps=S,M.numLightProbes=R,i.version=Gae++)}function l(c,f){let d=0,u=0,h=0,m=0,g=0,p=f.matrixWorldInverse;for(let _=0,v=c.length;_=a.length?(o=new b2(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function jae(n,e,t){let i=new tm,r=new yt,s=new yt,a=new lr,o=new jS,l=new qS,c={},f=t.maxTextureSize,d={[ca]:yn,[yn]:ca,[Ua]:Ua},u=new da({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new yt},radius:{value:4}},vertexShader:Hae,fragmentShader:Xae}),h=u.clone();h.defines.HORIZONTAL_PASS=1;let m=new Hi;m.setAttribute("position",new vr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new ui(m,u),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=E_;let _=this.type;this.render=function(A,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||A.length===0)return;this.type===aT&&(Dt("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=E_);let I=n.getRenderTarget(),C=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),w=n.state;w.setBlending(fl),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 k=_!==this.type;k&&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=A.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/q.x),r.x=s.x*q.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/q.y),r.y=s.y*q.y,V.mapSize.y=s.y));let j=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=j,V.map===null||k===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===lm){if(B.isPointLight){Dt("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new fa(r.x,r.y,{format:yf,type:dl,minFilter:Gr,magFilter:Gr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new ec(r.x,r.y,ua),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=il,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr}else B.isPointLight?(V.map=new JT(r.x),V.map.depthTexture=new YS(r.x,To)):(V.map=new fa(r.x,r.y),V.map.depthTexture=new ec(r.x,r.y,To)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=il,this.type===E_?(V.map.depthTexture.compareFunction=j?qT:jT,V.map.depthTexture.minFilter=Gr,V.map.depthTexture.magFilter=Gr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr);V.camera.updateProjectionMatrix()}let J=V.map.isWebGLCubeRenderTarget?6:1;for(let H=0;H0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,k=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[k];N===void 0&&(N=C.clone(),O[k]=N,R.addEventListener("dispose",S)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,I===lm?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 T(A,R,M,I,C){if(A.visible===!1)return;if(A.layers.test(R.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&C===lm)&&(!A.frustumCulled||i.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,A.matrixWorld);let k=e.update(A),O=A.material;if(Array.isArray(O)){let N=k.groups;for(let B=0,V=N.length;B=1):j.indexOf("OpenGL ES")!==-1&&(q=parseFloat(/^OpenGL ES (\d)/.exec(j)[1]),V=q>=2);let J=null,H={},Y=n.getParameter(n.SCISSOR_BOX),de=n.getParameter(n.VIEWPORT),me=new lr().fromArray(Y),Ue=new lr().fromArray(de);function ae(se,Qe,Ie,ut){let it=new Uint8Array(4),Ve=n.createTexture();n.bindTexture(se,Ve),n.texParameteri(se,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(se,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Rt=0;Rthe||Ne.height>he)&&(Pe=he/Math.max(Ne.width,Ne.height)),Pe<1)if(typeof HTMLImageElement!="undefined"&&K instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&K instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&K instanceof ImageBitmap||typeof VideoFrame!="undefined"&&K instanceof VideoFrame){let et=Math.floor(Pe*Ne.width),rt=Math.floor(Pe*Ne.height);u===void 0&&(u=g(et,rt));let ye=U?g(et,rt):u;return ye.width=et,ye.height=rt,ye.getContext("2d").drawImage(K,0,0,et,rt),Dt("WebGLRenderer: Texture has been resized from ("+Ne.width+"x"+Ne.height+") to ("+et+"x"+rt+")."),ye}else return"data"in K&&Dt("WebGLRenderer: Image in DataTexture is too big ("+Ne.width+"x"+Ne.height+")."),K;return K}function _(K){return K.generateMipmaps}function v(K){n.generateMipmap(K)}function E(K){return K.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:K.isWebGL3DRenderTarget?n.TEXTURE_3D:K.isWebGLArrayRenderTarget||K.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function T(K,U,he,Pe,Ne,et=!1){if(K!==null){if(n[K]!==void 0)return n[K];Dt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+K+"'")}let rt;Pe&&(rt=e.get("EXT_texture_norm16"),rt||Dt("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let ye=U;if(U===n.RED&&(he===n.FLOAT&&(ye=n.R32F),he===n.HALF_FLOAT&&(ye=n.R16F),he===n.UNSIGNED_BYTE&&(ye=n.R8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.R16_EXT),he===n.SHORT&&rt&&(ye=rt.R16_SNORM_EXT)),U===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.R8UI),he===n.UNSIGNED_SHORT&&(ye=n.R16UI),he===n.UNSIGNED_INT&&(ye=n.R32UI),he===n.BYTE&&(ye=n.R8I),he===n.SHORT&&(ye=n.R16I),he===n.INT&&(ye=n.R32I)),U===n.RG&&(he===n.FLOAT&&(ye=n.RG32F),he===n.HALF_FLOAT&&(ye=n.RG16F),he===n.UNSIGNED_BYTE&&(ye=n.RG8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RG16_EXT),he===n.SHORT&&rt&&(ye=rt.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RG8UI),he===n.UNSIGNED_SHORT&&(ye=n.RG16UI),he===n.UNSIGNED_INT&&(ye=n.RG32UI),he===n.BYTE&&(ye=n.RG8I),he===n.SHORT&&(ye=n.RG16I),he===n.INT&&(ye=n.RG32I)),U===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RGB8UI),he===n.UNSIGNED_SHORT&&(ye=n.RGB16UI),he===n.UNSIGNED_INT&&(ye=n.RGB32UI),he===n.BYTE&&(ye=n.RGB8I),he===n.SHORT&&(ye=n.RGB16I),he===n.INT&&(ye=n.RGB32I)),U===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(ye=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(ye=n.RGBA16UI),he===n.UNSIGNED_INT&&(ye=n.RGBA32UI),he===n.BYTE&&(ye=n.RGBA8I),he===n.SHORT&&(ye=n.RGBA16I),he===n.INT&&(ye=n.RGBA32I)),U===n.RGB&&(he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RGB16_EXT),he===n.SHORT&&rt&&(ye=rt.RGB16_SNORM_EXT),he===n.UNSIGNED_INT_5_9_9_9_REV&&(ye=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(ye=n.R11F_G11F_B10F)),U===n.RGBA){let De=et?Qg:fi.getTransfer(Ne);he===n.FLOAT&&(ye=n.RGBA32F),he===n.HALF_FLOAT&&(ye=n.RGBA16F),he===n.UNSIGNED_BYTE&&(ye=De===tr?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT&&rt&&(ye=rt.RGBA16_EXT),he===n.SHORT&&rt&&(ye=rt.RGBA16_SNORM_EXT),he===n.UNSIGNED_SHORT_4_4_4_4&&(ye=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(ye=n.RGB5_A1)}return(ye===n.R16F||ye===n.R32F||ye===n.RG16F||ye===n.RG32F||ye===n.RGBA16F||ye===n.RGBA32F)&&e.get("EXT_color_buffer_float"),ye}function S(K,U){let he;return K?U===null||U===To||U===dm?he=n.DEPTH24_STENCIL8:U===ua?he=n.DEPTH32F_STENCIL8:U===fm&&(he=n.DEPTH24_STENCIL8,Dt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===To||U===dm?he=n.DEPTH_COMPONENT24:U===ua?he=n.DEPTH_COMPONENT32F:U===fm&&(he=n.DEPTH_COMPONENT16),he}function A(K,U){return _(K)===!0||K.isFramebufferTexture&&K.minFilter!==Vr&&K.minFilter!==Gr?Math.log2(Math.max(U.width,U.height))+1:K.mipmaps!==void 0&&K.mipmaps.length>0?K.mipmaps.length:K.isCompressedTexture&&Array.isArray(K.image)?U.mipmaps.length:1}function R(K){let U=K.target;U.removeEventListener("dispose",R),I(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(K){let U=K.target;U.removeEventListener("dispose",M),D(U)}function I(K){let U=i.get(K);if(U.__webglInit===void 0)return;let he=K.source,Pe=h.get(he);if(Pe){let Ne=Pe[U.__cacheKey];Ne.usedTimes--,Ne.usedTimes===0&&C(K),Object.keys(Pe).length===0&&h.delete(he)}i.remove(K)}function C(K){let U=i.get(K);n.deleteTexture(U.__webglTexture);let he=K.source,Pe=h.get(he);delete Pe[U.__cacheKey],a.memory.textures--}function D(K){let U=i.get(K);if(K.depthTexture&&(K.depthTexture.dispose(),i.remove(K.depthTexture)),K.isWebGLCubeRenderTarget)for(let Pe=0;Pe<6;Pe++){if(Array.isArray(U.__webglFramebuffer[Pe]))for(let Ne=0;Ne=r.maxTextures&&Dt("WebGLTextures: Trying to use "+K+" texture units while this GPU supports only "+r.maxTextures),w+=1,K}function V(K){let U=[];return U.push(K.wrapS),U.push(K.wrapT),U.push(K.wrapR||0),U.push(K.magFilter),U.push(K.minFilter),U.push(K.anisotropy),U.push(K.internalFormat),U.push(K.format),U.push(K.type),U.push(K.generateMipmaps),U.push(K.premultiplyAlpha),U.push(K.flipY),U.push(K.unpackAlignment),U.push(K.colorSpace),U.join()}function q(K,U){let he=i.get(K);if(K.isVideoTexture&&Di(K),K.isRenderTargetTexture===!1&&K.isExternalTexture!==!0&&K.version>0&&he.__version!==K.version){let Pe=K.image;if(Pe===null)Dt("WebGLRenderer: Texture marked for update but no image data found.");else if(Pe.complete===!1)Dt("WebGLRenderer: Texture marked for update but image is incomplete");else{ve(he,K,U);return}}else K.isExternalTexture&&(he.__webglTexture=K.sourceTexture?K.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+U)}function j(K,U){let he=i.get(K);if(K.isRenderTargetTexture===!1&&K.version>0&&he.__version!==K.version){ve(he,K,U);return}else K.isExternalTexture&&(he.__webglTexture=K.sourceTexture?K.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+U)}function J(K,U){let he=i.get(K);if(K.isRenderTargetTexture===!1&&K.version>0&&he.__version!==K.version){ve(he,K,U);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+U)}function H(K,U){let he=i.get(K);if(K.isCubeDepthTexture!==!0&&K.version>0&&he.__version!==K.version){Ce(he,K,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+U)}let Y={[tl]:n.REPEAT,[Fa]:n.CLAMP_TO_EDGE,[Xh]:n.MIRRORED_REPEAT},de={[Vr]:n.NEAREST,[cT]:n.NEAREST_MIPMAP_NEAREST,[ou]:n.NEAREST_MIPMAP_LINEAR,[Gr]:n.LINEAR,[cm]:n.LINEAR_MIPMAP_NEAREST,[So]:n.LINEAR_MIPMAP_LINEAR},me={[XB]:n.NEVER,[ZB]:n.ALWAYS,[YB]:n.LESS,[jT]:n.LEQUAL,[KB]:n.EQUAL,[qT]:n.GEQUAL,[jB]:n.GREATER,[qB]:n.NOTEQUAL};function Ue(K,U){if(U.type===ua&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===Gr||U.magFilter===cm||U.magFilter===ou||U.magFilter===So||U.minFilter===Gr||U.minFilter===cm||U.minFilter===ou||U.minFilter===So)&&Dt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(K,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(K,n.TEXTURE_WRAP_T,Y[U.wrapT]),(K===n.TEXTURE_3D||K===n.TEXTURE_2D_ARRAY)&&n.texParameteri(K,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(K,n.TEXTURE_MAG_FILTER,de[U.magFilter]),n.texParameteri(K,n.TEXTURE_MIN_FILTER,de[U.minFilter]),U.compareFunction&&(n.texParameteri(K,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(K,n.TEXTURE_COMPARE_FUNC,me[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Vr||U.minFilter!==ou&&U.minFilter!==So||U.type===ua&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(K,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function ae(K,U){let he=!1;K.__webglInit===void 0&&(K.__webglInit=!0,U.addEventListener("dispose",R));let Pe=U.source,Ne=h.get(Pe);Ne===void 0&&(Ne={},h.set(Pe,Ne));let et=V(U);if(et!==K.__cacheKey){Ne[et]===void 0&&(Ne[et]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,he=!0),Ne[et].usedTimes++;let rt=Ne[K.__cacheKey];rt!==void 0&&(Ne[K.__cacheKey].usedTimes--,rt.usedTimes===0&&C(U)),K.__cacheKey=et,K.__webglTexture=Ne[et].texture}return he}function _e(K,U,he){return Math.floor(Math.floor(K/he)/U)}function ne(K,U,he,Pe){let et=K.updateRanges;if(et.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,he,Pe,U.data);else{et.sort((At,nt)=>At.start-nt.start);let rt=0;for(let At=1;At0){ii&&hi&&t.texStorage2D(n.TEXTURE_2D,Qe,nt,Vt[0].width,Vt[0].height);for(let Ie=0,ut=Vt.length;Ie0){let it=TI(Ze.width,Ze.height,U.format,U.type);for(let Ve of U.layerUpdates){let Rt=Ze.data.subarray(Ve*it/Ze.data.BYTES_PER_ELEMENT,(Ve+1)*it/Ze.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,Ve,Ze.width,Ze.height,1,ct,Rt)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,0,Ze.width,Ze.height,De.depth,ct,Ze.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ie,nt,Ze.width,Ze.height,De.depth,0,Ze.data,0,0);else Dt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else ii?se&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ie,0,0,0,Ze.width,Ze.height,De.depth,ct,At,Ze.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ie,nt,Ze.width,Ze.height,De.depth,0,ct,At,Ze.data)}else{ii&&hi&&t.texStorage2D(n.TEXTURE_2D,Qe,nt,Vt[0].width,Vt[0].height);for(let Ie=0,ut=Vt.length;Ie0){let Ie=TI(De.width,De.height,U.format,U.type);for(let ut of U.layerUpdates){let it=De.data.subarray(ut*Ie/De.data.BYTES_PER_ELEMENT,(ut+1)*Ie/De.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,ut,De.width,De.height,1,ct,At,it)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,De.width,De.height,De.depth,ct,At,De.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,nt,De.width,De.height,De.depth,0,ct,At,De.data);else if(U.isData3DTexture)ii?(hi&&t.texStorage3D(n.TEXTURE_3D,Qe,nt,De.width,De.height,De.depth),se&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,De.width,De.height,De.depth,ct,At,De.data)):t.texImage3D(n.TEXTURE_3D,0,nt,De.width,De.height,De.depth,0,ct,At,De.data);else if(U.isFramebufferTexture){if(hi)if(ii)t.texStorage2D(n.TEXTURE_2D,Qe,nt,De.width,De.height);else{let Ie=De.width,ut=De.height;for(let it=0;it>=1,ut>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let Ie=n.canvas;if(Ie.hasAttribute("layoutsubtree")||Ie.setAttribute("layoutsubtree","true"),De.parentNode!==Ie){Ie.appendChild(De),d.add(U),Ie.onpaint=Gt=>{let $i=Gt.changedElements;for(let li of d)$i.includes(li.image)&&(li.needsUpdate=!0)},Ie.requestPaint();return}let ut=0,it=n.RGBA,Ve=n.RGBA,Rt=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,ut,it,Ve,Rt,De),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(Vt.length>0){if(ii&&hi){let Ie=ji(Vt[0]);t.texStorage2D(n.TEXTURE_2D,Qe,nt,Ie.width,Ie.height)}for(let Ie=0,ut=Vt.length;Ie0&&ut++;let Ve=ji(nt[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,ut,hi,Ve.width,Ve.height)}for(let Ve=0;Ve<6;Ve++)if(At){se?Ie&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,nt[Ve].width,nt[Ve].height,Vt,ii,nt[Ve].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,hi,nt[Ve].width,nt[Ve].height,0,Vt,ii,nt[Ve].data);for(let Rt=0;Rt>et),Ze=Math.max(1,U.height>>et);Ne===n.TEXTURE_3D||Ne===n.TEXTURE_2D_ARRAY?t.texImage3D(Ne,et,De,nt,Ze,U.depth,0,rt,ye,null):t.texImage2D(Ne,et,De,nt,Ze,0,rt,ye,null)}t.bindFramebuffer(n.FRAMEBUFFER,K),Ht(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,Pe,Ne,At.__webglTexture,0,Qi(U)):(Ne===n.TEXTURE_2D||Ne>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ne<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,Pe,Ne,At.__webglTexture,et),t.bindFramebuffer(n.FRAMEBUFFER,null)}function be(K,U,he){if(n.bindRenderbuffer(n.RENDERBUFFER,K),U.depthBuffer){let Pe=U.depthTexture,Ne=Pe&&Pe.isDepthTexture?Pe.type:null,et=S(U.stencilBuffer,Ne),rt=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;Ht(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Qi(U),et,U.width,U.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,Qi(U),et,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,et,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,rt,n.RENDERBUFFER,K)}else{let Pe=U.textures;for(let Ne=0;Ne{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,Pe.removeEventListener("dispose",Ne)};Pe.addEventListener("dispose",Ne),U.__depthDisposeCallback=Ne}U.__boundDepthTexture=Pe}if(K.depthTexture&&!U.__autoAllocateDepthBuffer)if(he)for(let Pe=0;Pe<6;Pe++)Ge(U.__webglFramebuffer[Pe],K,Pe);else{let Pe=K.texture.mipmaps;Pe&&Pe.length>0?Ge(U.__webglFramebuffer[0],K,0):Ge(U.__webglFramebuffer,K,0)}else if(he){U.__webglDepthbuffer=[];for(let Pe=0;Pe<6;Pe++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[Pe]),U.__webglDepthbuffer[Pe]===void 0)U.__webglDepthbuffer[Pe]=n.createRenderbuffer(),be(U.__webglDepthbuffer[Pe],K,!1);else{let Ne=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer[Pe];n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ne,n.RENDERBUFFER,et)}}else{let Pe=K.texture.mipmaps;if(Pe&&Pe.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),be(U.__webglDepthbuffer,K,!1);else{let Ne=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,et=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,et),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ne,n.RENDERBUFFER,et)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ye(K,U,he){let Pe=i.get(K);U!==void 0&&ue(Pe.__webglFramebuffer,K,K.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&qe(K)}function Ke(K){let U=K.texture,he=i.get(K),Pe=i.get(U);K.addEventListener("dispose",M);let Ne=K.textures,et=K.isWebGLCubeRenderTarget===!0,rt=Ne.length>1;if(rt||(Pe.__webglTexture===void 0&&(Pe.__webglTexture=n.createTexture()),Pe.__version=U.version,a.memory.textures++),et){he.__webglFramebuffer=[];for(let ye=0;ye<6;ye++)if(U.mipmaps&&U.mipmaps.length>0){he.__webglFramebuffer[ye]=[];for(let De=0;De0){he.__webglFramebuffer=[];for(let ye=0;ye0&&Ht(K)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let ye=0;ye0)for(let De=0;De0)for(let De=0;De0){if(Ht(K)===!1){let U=K.textures,he=K.width,Pe=K.height,Ne=n.COLOR_BUFFER_BIT,et=K.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,rt=i.get(K),ye=U.length>1;if(ye)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 Di(K){let U=a.render.frame;f.get(K)!==U&&(f.set(K,U),K.update())}function ot(K,U){let he=K.colorSpace,Pe=K.format,Ne=K.type;return K.isCompressedTexture===!0||K.isVideoTexture===!0||he!==cs&&he!==nc&&(fi.getTransfer(he)===tr?(Pe!==ha||Ne!==Fs)&&Dt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):kt("WebGLTextures: Unsupported texture color space:",he)),U}function ji(K){return typeof HTMLImageElement!="undefined"&&K instanceof HTMLImageElement?(c.width=K.naturalWidth||K.width,c.height=K.naturalHeight||K.height):typeof VideoFrame!="undefined"&&K instanceof VideoFrame?(c.width=K.displayWidth,c.height=K.displayHeight):(c.width=K.width,c.height=K.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=k,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=q,this.setTexture2DArray=j,this.setTexture3D=J,this.setTextureCube=H,this.rebindTextures=Ye,this.setupRenderTarget=Ke,this.updateRenderTargetMipmap=Zt,this.updateMultisampleRenderTarget=oe,this.setupDepthRenderbuffer=qe,this.setupFrameBufferTexture=ue,this.useMultisampledRTT=Ht,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function Qae(n,e){function t(i,r=nc){let s,a=fi.getTransfer(r);if(i===Fs)return n.UNSIGNED_BYTE;if(i===dT)return n.UNSIGNED_SHORT_4_4_4_4;if(i===uT)return n.UNSIGNED_SHORT_5_5_5_1;if(i===dI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===uI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===cI)return n.BYTE;if(i===fI)return n.SHORT;if(i===fm)return n.UNSIGNED_SHORT;if(i===fT)return n.INT;if(i===To)return n.UNSIGNED_INT;if(i===ua)return n.FLOAT;if(i===dl)return n.HALF_FLOAT;if(i===hI)return n.ALPHA;if(i===mI)return n.RGB;if(i===ha)return n.RGBA;if(i===il)return n.DEPTH_COMPONENT;if(i===Mf)return n.DEPTH_STENCIL;if(i===hT)return n.RED;if(i===mT)return n.RED_INTEGER;if(i===yf)return n.RG;if(i===pT)return n.RG_INTEGER;if(i===gT)return n.RGBA_INTEGER;if(i===A_||i===x_||i===R_||i===b_)if(a===tr)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===A_)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===x_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===R_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===b_)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===A_)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===x_)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===R_)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===b_)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===_T||i===vT||i===ET||i===ST)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===_T)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===vT)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===ET)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===ST)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===TT||i===AT||i===xT||i===RT||i===bT||i===M_||i===MT)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===TT||i===AT)return a===tr?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===xT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===RT)return s.COMPRESSED_R11_EAC;if(i===bT)return s.COMPRESSED_SIGNED_R11_EAC;if(i===M_)return s.COMPRESSED_RG11_EAC;if(i===MT)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===yT||i===IT||i===CT||i===PT||i===DT||i===LT||i===OT||i===NT||i===wT||i===FT||i===BT||i===UT||i===VT||i===GT)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===yT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===IT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===CT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===PT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===DT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===LT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===OT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===NT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===wT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===FT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===BT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===UT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===VT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===GT)return a===tr?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===kT||i===WT||i===zT)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===kT)return a===tr?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===WT)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===zT)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===HT||i===XT||i===y_||i===YT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===HT)return s.COMPRESSED_RED_RGTC1_EXT;if(i===XT)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===y_)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===YT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===dm?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function toe(n,e){function t(p,_){p.matrixAutoUpdate===!0&&p.updateMatrix(),_.value.copy(p.matrix)}function i(p,_){_.color.getRGB(p.fogColor.value,vI(n)),_.isFog?(p.fogNear.value=_.near,p.fogFar.value=_.far):_.isFogExp2&&(p.fogDensity.value=_.density)}function r(p,_,v,E,T){_.isNodeMaterial?_.uniformsNeedUpdate=!1:_.isMeshBasicMaterial?s(p,_):_.isMeshLambertMaterial?(s(p,_),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)):_.isMeshToonMaterial?(s(p,_),d(p,_)):_.isMeshPhongMaterial?(s(p,_),f(p,_),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)):_.isMeshStandardMaterial?(s(p,_),u(p,_),_.isMeshPhysicalMaterial&&h(p,_,T)):_.isMeshMatcapMaterial?(s(p,_),m(p,_)):_.isMeshDepthMaterial?s(p,_):_.isMeshDistanceMaterial?(s(p,_),g(p,_)):_.isMeshNormalMaterial?s(p,_):_.isLineBasicMaterial?(a(p,_),_.isLineDashedMaterial&&o(p,_)):_.isPointsMaterial?l(p,_,v,E):_.isSpriteMaterial?c(p,_):_.isShadowMaterial?(p.color.value.copy(_.color),p.opacity.value=_.opacity):_.isShaderMaterial&&(_.uniformsNeedUpdate=!1)}function s(p,_){p.opacity.value=_.opacity,_.color&&p.diffuse.value.copy(_.color),_.emissive&&p.emissive.value.copy(_.emissive).multiplyScalar(_.emissiveIntensity),_.map&&(p.map.value=_.map,t(_.map,p.mapTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.bumpMap&&(p.bumpMap.value=_.bumpMap,t(_.bumpMap,p.bumpMapTransform),p.bumpScale.value=_.bumpScale,_.side===yn&&(p.bumpScale.value*=-1)),_.normalMap&&(p.normalMap.value=_.normalMap,t(_.normalMap,p.normalMapTransform),p.normalScale.value.copy(_.normalScale),_.side===yn&&p.normalScale.value.negate()),_.displacementMap&&(p.displacementMap.value=_.displacementMap,t(_.displacementMap,p.displacementMapTransform),p.displacementScale.value=_.displacementScale,p.displacementBias.value=_.displacementBias),_.emissiveMap&&(p.emissiveMap.value=_.emissiveMap,t(_.emissiveMap,p.emissiveMapTransform)),_.specularMap&&(p.specularMap.value=_.specularMap,t(_.specularMap,p.specularMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest);let v=e.get(_),E=v.envMap,T=v.envMapRotation;E&&(p.envMap.value=E,p.envMapRotation.value.setFromMatrix4(eoe.makeRotationFromEuler(T)).transpose(),E.isCubeTexture&&E.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(O2),p.reflectivity.value=_.reflectivity,p.ior.value=_.ior,p.refractionRatio.value=_.refractionRatio),_.lightMap&&(p.lightMap.value=_.lightMap,p.lightMapIntensity.value=_.lightMapIntensity,t(_.lightMap,p.lightMapTransform)),_.aoMap&&(p.aoMap.value=_.aoMap,p.aoMapIntensity.value=_.aoMapIntensity,t(_.aoMap,p.aoMapTransform))}function a(p,_){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,_.map&&(p.map.value=_.map,t(_.map,p.mapTransform))}function o(p,_){p.dashSize.value=_.dashSize,p.totalSize.value=_.dashSize+_.gapSize,p.scale.value=_.scale}function l(p,_,v,E){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,p.size.value=_.size*v,p.scale.value=E*.5,_.map&&(p.map.value=_.map,t(_.map,p.uvTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest)}function c(p,_){p.diffuse.value.copy(_.color),p.opacity.value=_.opacity,p.rotation.value=_.rotation,_.map&&(p.map.value=_.map,t(_.map,p.mapTransform)),_.alphaMap&&(p.alphaMap.value=_.alphaMap,t(_.alphaMap,p.alphaMapTransform)),_.alphaTest>0&&(p.alphaTest.value=_.alphaTest)}function f(p,_){p.specular.value.copy(_.specular),p.shininess.value=Math.max(_.shininess,1e-4)}function d(p,_){_.gradientMap&&(p.gradientMap.value=_.gradientMap)}function u(p,_){p.metalness.value=_.metalness,_.metalnessMap&&(p.metalnessMap.value=_.metalnessMap,t(_.metalnessMap,p.metalnessMapTransform)),p.roughness.value=_.roughness,_.roughnessMap&&(p.roughnessMap.value=_.roughnessMap,t(_.roughnessMap,p.roughnessMapTransform)),_.envMap&&(p.envMapIntensity.value=_.envMapIntensity)}function h(p,_,v){p.ior.value=_.ior,_.sheen>0&&(p.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),p.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(p.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,p.sheenColorMapTransform)),_.sheenRoughnessMap&&(p.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,p.sheenRoughnessMapTransform))),_.clearcoat>0&&(p.clearcoat.value=_.clearcoat,p.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(p.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,p.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(p.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===yn&&p.clearcoatNormalScale.value.negate())),_.dispersion>0&&(p.dispersion.value=_.dispersion),_.iridescence>0&&(p.iridescence.value=_.iridescence,p.iridescenceIOR.value=_.iridescenceIOR,p.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(p.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,p.iridescenceMapTransform)),_.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),_.transmission>0&&(p.transmission.value=_.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),_.transmissionMap&&(p.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,p.transmissionMapTransform)),p.thickness.value=_.thickness,_.thicknessMap&&(p.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=_.attenuationDistance,p.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(p.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(p.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=_.specularIntensity,p.specularColor.value.copy(_.specularColor),_.specularColorMap&&(p.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,p.specularColorMapTransform)),_.specularIntensityMap&&(p.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,_){_.matcap&&(p.matcap.value=_.matcap)}function g(p,_){let v=e.get(_).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 ioe(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,E){let T=E.program;i.uniformBlockBinding(v,T)}function c(v,E){let T=r[v.id];T===void 0&&(m(v),T=f(v),r[v.id]=T,v.addEventListener("dispose",p));let S=E.program;i.updateUBOMapping(v,S);let A=e.render.frame;s[v.id]!==A&&(u(v),s[v.id]=A)}function f(v){let E=d();v.__bindingPointIndex=E;let T=n.createBuffer(),S=v.__size,A=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,T),n.bufferData(n.UNIFORM_BUFFER,S,A),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,E,T),T}function d(){for(let v=0;v0&&(T+=S-A),v.__size=T,v.__cache={},this}function g(v){let E={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(E.boundary=4,E.storage=4):v.isVector2?(E.boundary=8,E.storage=8):v.isVector3||v.isColor?(E.boundary=16,E.storage=12):v.isVector4?(E.boundary=16,E.storage=16):v.isMatrix3?(E.boundary=48,E.storage=48):v.isMatrix4?(E.boundary=64,E.storage=64):v.isTexture?Dt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(E.boundary=16,E.storage=v.byteLength):Dt("WebGLRenderer: Unsupported uniform value type.",v),E}function p(v){let E=v.target;E.removeEventListener("dispose",p);let T=a.indexOf(E.__bindingPointIndex);a.splice(T,1),n.deleteBuffer(r[E.id]),delete r[E.id],delete s[E.id]}function _(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:_}}function noe(){return ul===null&&(ul=new em(roe,16,16,yf,dl),ul.name="DFG_LUT",ul.minFilter=Gr,ul.magFilter=Gr,ul.wrapS=Fa,ul.wrapT=Fa,ul.generateMipmaps=!1,ul.needsUpdate=!0),ul}var Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,yie,Iie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,zie,Hie,Xie,Yie,Kie,jie,qie,Zie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,ure,hre,mre,pre,gre,_re,vre,Ere,Sre,Tre,Are,xre,Rre,bre,Mre,yre,Ire,Cre,Pre,Dre,Lre,Ore,Nre,wre,Fre,Bre,Ure,Vre,Gre,kre,Wre,zre,Hre,Xre,Yre,Kre,jre,qre,Zre,Qre,$re,Jre,ene,tne,ine,rne,nne,sne,ane,one,lne,cne,fne,dne,une,hne,mne,pne,gne,_ne,vne,Ene,Sne,Tne,Ane,xne,Rne,bne,Mne,yne,Ine,Cne,Pne,Dne,Lne,One,Nne,wne,Fne,Bne,Une,Vne,Gne,kne,Wne,zne,Hne,Xne,Yne,Kne,jne,qne,Zne,Qne,$ne,_i,Et,hl,QT,Jne,I2,If,s2,cu,sse,P_,a2,II,CI,PI,DI,ase,gm,JT,_se,C2,NI,P2,D2,L2,f2,d2,u2,h2,m2,wI,FI,BI,LI,pm,aae,oae,_2,dae,$T,_ae,vae,Sae,Aae,Rae,Mae,Iae,Lae,VI,GI,Gae,Hae,Xae,Yae,Kae,M2,D_,OI,$ae,Jae,kI,WI,eoe,O2,roe,ul,eA,us=y(()=>{yI();yI();Eie=`#ifdef USE_ALPHAHASH if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; -#endif`,Eie=`#ifdef USE_ALPHAHASH +#endif`,Sie=`#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`,Sie=`#ifdef USE_ALPHAMAP - diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; #endif`,Tie=`#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g; +#endif`,Aie=`#ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,Aie=`#ifdef USE_ALPHATEST +#endif`,xie=`#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`,xie=`#ifdef USE_ALPHATEST +#endif`,Rie=`#ifdef USE_ALPHATEST uniform float alphaTest; -#endif`,Rie=`#ifdef USE_AOMAP +#endif`,bie=`#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`,bie=`#ifdef USE_AOMAP +#endif`,Mie=`#ifdef USE_AOMAP uniform sampler2D aoMap; uniform float aoMapIntensity; -#endif`,Mie=`#ifdef USE_BATCHING +#endif`,yie=`#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`,yie=`#ifdef USE_BATCHING +#endif`,Iie=`#ifdef USE_BATCHING mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) ); -#endif`,Iie=`vec3 transformed = vec3( position ); +#endif`,Cie=`vec3 transformed = vec3( position ); #ifdef USE_ALPHAHASH vPosition = vec3( position ); -#endif`,Cie=`vec3 objectNormal = vec3( normal ); +#endif`,Pie=`vec3 objectNormal = vec3( normal ); #ifdef USE_TANGENT vec3 objectTangent = vec3( tangent.xyz ); -#endif`,Pie=`float G_BlinnPhong_Implicit( ) { +#endif`,Die=`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`,Die=`#ifdef USE_IRIDESCENCE +} // validated`,Lie=`#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`,Lie=`#ifdef USE_BUMPMAP +#endif`,Oie=`#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`,Oie=`#if NUM_CLIPPING_PLANES > 0 +#endif`,Nie=`#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`,Nie=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; - uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; #endif`,wie=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; #endif`,Fie=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,Bie=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,Bie=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) - diffuseColor *= vColor; #endif`,Uie=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) - varying vec4 vColor; -#endif`,Vie=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + diffuseColor *= vColor; +#endif`,Vie=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) varying vec4 vColor; #endif`,Gie=`#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec4 vColor; +#endif`,kie=`#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`,kie=`#define PI 3.141592653589793 +#endif`,Wie=`#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`,Wie=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,zie=`#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`,zie=`vec3 transformedNormal = objectNormal; +#endif`,Hie=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -822,21 +822,21 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,Hie=`#ifdef USE_DISPLACEMENTMAP +#endif`,Xie=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,Xie=`#ifdef USE_DISPLACEMENTMAP +#endif`,Yie=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,Yie=`#ifdef USE_EMISSIVEMAP +#endif`,Kie=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE emissiveColor = sRGBTransferEOTF( emissiveColor ); #endif totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,Kie=`#ifdef USE_EMISSIVEMAP +#endif`,jie=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,jie="gl_FragColor = linearToOutputTexel( gl_FragColor );",qie=`vec4 LinearTransferOETF( in vec4 value ) { +#endif`,qie="gl_FragColor = linearToOutputTexel( gl_FragColor );",Zie=`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 ); -}`,Zie=`#ifdef USE_ENVMAP +}`,Qie=`#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`,Qie=`#ifdef USE_ENVMAP +#endif`,$ie=`#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`,$ie=`#ifdef USE_ENVMAP +#endif`,Jie=`#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`,Jie=`#ifdef USE_ENVMAP +#endif`,ere=`#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`,ere=`#ifdef USE_ENVMAP +#endif`,tre=`#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`,tre=`#ifdef USE_FOG - vFogDepth = - mvPosition.z; #endif`,ire=`#ifdef USE_FOG - varying float vFogDepth; + vFogDepth = - mvPosition.z; #endif`,rre=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,nre=`#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`,nre=`#ifdef USE_FOG +#endif`,sre=`#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`,sre=`#ifdef USE_GRADIENTMAP +#endif`,are=`#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 -}`,are=`#ifdef USE_LIGHTMAP +}`,ore=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,ore=`LambertMaterial material; +#endif`,lre=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,lre=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,cre=`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`,cre=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,fre=`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 `,fre=`#ifdef USE_ENVMAP +#include `,dre=`#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`,dre=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,ure=`varying vec3 vViewPosition; +#endif`,ure=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,hre=`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`,hre=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,mre=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,mre=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,pre=`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`,pre=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,gre=`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`,gre=`uniform sampler2D dfgLUT; +#endif`,_re=`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 ); -}`,_re=` +}`,vre=` 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`,vre=`#if defined( RE_IndirectDiffuse ) +#endif`,Ere=`#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`,Ere=`#if defined( RE_IndirectDiffuse ) +#endif`,Sre=`#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`,Sre=`#ifdef USE_LIGHT_PROBES_GRID +#endif`,Tre=`#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`,Tre=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) - gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; #endif`,Are=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,xre=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,xre=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER +#endif`,Rre=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER varying float vFragDepth; varying float vIsPerspective; -#endif`,Rre=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER +#endif`,bre=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,bre=`#ifdef USE_MAP +#endif`,Mre=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,Mre=`#ifdef USE_MAP +#endif`,yre=`#ifdef USE_MAP uniform sampler2D map; -#endif`,yre=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,Ire=`#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`,Ire=`#if defined( USE_POINTS_UV ) +#endif`,Cre=`#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`,Cre=`float metalnessFactor = metalness; +#endif`,Pre=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,Pre=`#ifdef USE_METALNESSMAP +#endif`,Dre=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,Dre=`#ifdef USE_INSTANCING_MORPH +#endif`,Lre=`#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`,Lre=`#if defined( USE_MORPHCOLORS ) +#endif`,Ore=`#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`,Ore=`#ifdef USE_MORPHNORMALS +#endif`,Nre=`#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`,Nre=`#ifdef USE_MORPHTARGETS +#endif`,wre=`#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`,wre=`#ifdef USE_MORPHTARGETS +#endif`,Fre=`#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`,Fre=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,Bre=`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;`,Bre=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,Ure=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1947,12 +1947,6 @@ vec3 nonPerturbedNormal = normal;`,Bre=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,Ure=`#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif #endif`,Vre=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT @@ -1960,12 +1954,18 @@ vec3 nonPerturbedNormal = normal;`,Bre=`#ifdef USE_NORMALMAP_OBJECTSPACE varying vec3 vBitangent; #endif #endif`,Gre=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,kre=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,kre=`#ifdef USE_NORMALMAP +#endif`,Wre=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1987,13 +1987,13 @@ vec3 nonPerturbedNormal = normal;`,Bre=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,Wre=`#ifdef USE_CLEARCOAT +#endif`,zre=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,zre=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,Hre=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,Hre=`#ifdef USE_CLEARCOATMAP +#endif`,Xre=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -2002,18 +2002,18 @@ vec3 nonPerturbedNormal = normal;`,Bre=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,Xre=`#ifdef USE_IRIDESCENCEMAP +#endif`,Yre=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,Yre=`#ifdef OPAQUE +#endif`,Kre=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Kre=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,jre=`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 -}`,jre=`#ifdef PREMULTIPLIED_ALPHA +}`,qre=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,qre=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,Zre=`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;`,Zre=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,Qre=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,Qre=`#ifdef DITHERING +#endif`,$re=`#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`,$re=`float roughnessFactor = roughness; +#endif`,Jre=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,Jre=`#ifdef USE_ROUGHNESSMAP +#endif`,ene=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,ene=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,tne=`#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;`,Zre=`#ifdef DITHERING } #endif #endif -#endif`,tne=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,ine=`#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;`,Zre=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,ine=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,rne=`#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;`,Zre=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,rne=`float getShadowMask() { +#endif`,nne=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -2426,12 +2426,12 @@ gl_Position = projectionMatrix * mvPosition;`,Zre=`#ifdef DITHERING #endif #endif return shadow; -}`,nne=`#ifdef USE_SKINNING +}`,sne=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,sne=`#ifdef USE_SKINNING +#endif`,ane=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2446,7 +2446,7 @@ gl_Position = projectionMatrix * mvPosition;`,Zre=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,ane=`#ifdef USE_SKINNING +#endif`,one=`#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;`,Zre=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,one=`#ifdef USE_SKINNING +#endif`,lne=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2465,17 +2465,17 @@ gl_Position = projectionMatrix * mvPosition;`,Zre=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,lne=`float specularStrength; +#endif`,cne=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,cne=`#ifdef USE_SPECULARMAP +#endif`,fne=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,fne=`#if defined( TONE_MAPPING ) +#endif`,dne=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,dne=`#ifndef saturate +#endif`,une=`#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; }`,une=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,hne=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2593,7 +2593,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,une=`#ifdef USE_TRANSMIS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,hne=`#ifdef USE_TRANSMISSION +#endif`,mne=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2719,7 +2719,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,une=`#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`,mne=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,pne=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2789,7 +2789,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,une=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,pne=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,gne=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2883,7 +2883,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,une=`#ifdef USE_TRANSMIS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,gne=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,_ne=`#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; }`,une=`#ifdef USE_TRANSMIS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,_ne=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,vne=`#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; }`,une=`#ifdef USE_TRANSMIS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`,vne=`varying vec2 vUv; +#endif`,Ene=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,Ene=`uniform sampler2D t2D; +}`,Sne=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2980,14 +2980,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,Sne=`varying vec3 vWorldDirection; +}`,Tne=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,Tne=`#ifdef ENVMAP_TYPE_CUBE +}`,Ane=`#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 -}`,Ane=`varying vec3 vWorldDirection; +}`,xne=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,xne=`uniform samplerCube tCube; +}`,Rne=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -3026,7 +3026,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,Rne=`#include +}`,bne=`#include #include #include #include @@ -3053,7 +3053,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,bne=`#if DEPTH_PACKING == 3200 +}`,Mne=`#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 -}`,Mne=`#define DISTANCE +}`,yne=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -3118,7 +3118,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,yne=`#define DISTANCE +}`,Ine=`#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 ); -}`,Ine=`varying vec3 vWorldDirection; +}`,Cne=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,Cne=`uniform sampler2D tEquirect; +}`,Pne=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -3156,7 +3156,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,Pne=`uniform float scale; +}`,Dne=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -3178,7 +3178,7 @@ void main() { #include #include #include -}`,Dne=`uniform vec3 diffuse; +}`,Lne=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -3206,7 +3206,7 @@ void main() { #include #include #include -}`,Lne=`#include +}`,One=`#include #include #include #include @@ -3238,7 +3238,7 @@ void main() { #include #include #include -}`,One=`uniform vec3 diffuse; +}`,Nne=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -3286,7 +3286,7 @@ void main() { #include #include #include -}`,Nne=`#define LAMBERT +}`,wne=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -3325,7 +3325,7 @@ void main() { #include #include #include -}`,wne=`#define LAMBERT +}`,Fne=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3383,7 +3383,7 @@ void main() { #include #include #include -}`,Fne=`#define MATCAP +}`,Bne=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -3417,7 +3417,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,Bne=`#define MATCAP +}`,Une=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3463,7 +3463,7 @@ void main() { #include #include #include -}`,Une=`#define NORMAL +}`,Vne=`#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 -}`,Vne=`#define NORMAL +}`,Gne=`#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 -}`,Gne=`#define PHONG +}`,kne=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3556,7 +3556,7 @@ void main() { #include #include #include -}`,kne=`#define PHONG +}`,Wne=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3616,7 +3616,7 @@ void main() { #include #include #include -}`,Wne=`#define STANDARD +}`,zne=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3659,7 +3659,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,zne=`#define STANDARD +}`,Hne=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3784,7 +3784,7 @@ void main() { #include #include #include -}`,Hne=`#define TOON +}`,Xne=`#define TOON varying vec3 vViewPosition; #include #include @@ -3821,7 +3821,7 @@ void main() { #include #include #include -}`,Xne=`#define TOON +}`,Yne=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3873,7 +3873,7 @@ void main() { #include #include #include -}`,Yne=`uniform float size; +}`,Kne=`uniform float size; uniform float scale; #include #include @@ -3904,7 +3904,7 @@ void main() { #include #include #include -}`,Kne=`uniform vec3 diffuse; +}`,jne=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3929,7 +3929,7 @@ void main() { #include #include #include -}`,jne=`#include +}`,qne=`#include #include #include #include @@ -3952,7 +3952,7 @@ void main() { #include #include #include -}`,qne=`uniform vec3 color; +}`,Zne=`uniform vec3 color; uniform float opacity; #include #include @@ -3968,7 +3968,7 @@ void main() { #include #include #include -}`,Zne=`uniform float rotation; +}`,Qne=`uniform float rotation; uniform vec2 center; #include #include @@ -3992,7 +3992,7 @@ void main() { #include #include #include -}`,Qne=`uniform vec3 diffuse; +}`,$ne=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -4017,7 +4017,7 @@ void main() { #include #include #include -}`,_i={alphahash_fragment:vie,alphahash_pars_fragment:Eie,alphamap_fragment:Sie,alphamap_pars_fragment:Tie,alphatest_fragment:Aie,alphatest_pars_fragment:xie,aomap_fragment:Rie,aomap_pars_fragment:bie,batching_pars_vertex:Mie,batching_vertex:yie,begin_vertex:Iie,beginnormal_vertex:Cie,bsdfs:Pie,iridescence_fragment:Die,bumpmap_pars_fragment:Lie,clipping_planes_fragment:Oie,clipping_planes_pars_fragment:Nie,clipping_planes_pars_vertex:wie,clipping_planes_vertex:Fie,color_fragment:Bie,color_pars_fragment:Uie,color_pars_vertex:Vie,color_vertex:Gie,common:kie,cube_uv_reflection_fragment:Wie,defaultnormal_vertex:zie,displacementmap_pars_vertex:Hie,displacementmap_vertex:Xie,emissivemap_fragment:Yie,emissivemap_pars_fragment:Kie,colorspace_fragment:jie,colorspace_pars_fragment:qie,envmap_fragment:Zie,envmap_common_pars_fragment:Qie,envmap_pars_fragment:$ie,envmap_pars_vertex:Jie,envmap_physical_pars_fragment:fre,envmap_vertex:ere,fog_vertex:tre,fog_pars_vertex:ire,fog_fragment:rre,fog_pars_fragment:nre,gradientmap_pars_fragment:sre,lightmap_pars_fragment:are,lights_lambert_fragment:ore,lights_lambert_pars_fragment:lre,lights_pars_begin:cre,lights_toon_fragment:dre,lights_toon_pars_fragment:ure,lights_phong_fragment:hre,lights_phong_pars_fragment:mre,lights_physical_fragment:pre,lights_physical_pars_fragment:gre,lights_fragment_begin:_re,lights_fragment_maps:vre,lights_fragment_end:Ere,lightprobes_pars_fragment:Sre,logdepthbuf_fragment:Tre,logdepthbuf_pars_fragment:Are,logdepthbuf_pars_vertex:xre,logdepthbuf_vertex:Rre,map_fragment:bre,map_pars_fragment:Mre,map_particle_fragment:yre,map_particle_pars_fragment:Ire,metalnessmap_fragment:Cre,metalnessmap_pars_fragment:Pre,morphinstance_vertex:Dre,morphcolor_vertex:Lre,morphnormal_vertex:Ore,morphtarget_pars_vertex:Nre,morphtarget_vertex:wre,normal_fragment_begin:Fre,normal_fragment_maps:Bre,normal_pars_fragment:Ure,normal_pars_vertex:Vre,normal_vertex:Gre,normalmap_pars_fragment:kre,clearcoat_normal_fragment_begin:Wre,clearcoat_normal_fragment_maps:zre,clearcoat_pars_fragment:Hre,iridescence_pars_fragment:Xre,opaque_fragment:Yre,packing:Kre,premultiplied_alpha_fragment:jre,project_vertex:qre,dithering_fragment:Zre,dithering_pars_fragment:Qre,roughnessmap_fragment:$re,roughnessmap_pars_fragment:Jre,shadowmap_pars_fragment:ene,shadowmap_pars_vertex:tne,shadowmap_vertex:ine,shadowmask_pars_fragment:rne,skinbase_vertex:nne,skinning_pars_vertex:sne,skinning_vertex:ane,skinnormal_vertex:one,specularmap_fragment:lne,specularmap_pars_fragment:cne,tonemapping_fragment:fne,tonemapping_pars_fragment:dne,transmission_fragment:une,transmission_pars_fragment:hne,uv_pars_fragment:mne,uv_pars_vertex:pne,uv_vertex:gne,worldpos_vertex:_ne,background_vert:vne,background_frag:Ene,backgroundCube_vert:Sne,backgroundCube_frag:Tne,cube_vert:Ane,cube_frag:xne,depth_vert:Rne,depth_frag:bne,distance_vert:Mne,distance_frag:yne,equirect_vert:Ine,equirect_frag:Cne,linedashed_vert:Pne,linedashed_frag:Dne,meshbasic_vert:Lne,meshbasic_frag:One,meshlambert_vert:Nne,meshlambert_frag:wne,meshmatcap_vert:Fne,meshmatcap_frag:Bne,meshnormal_vert:Une,meshnormal_frag:Vne,meshphong_vert:Gne,meshphong_frag:kne,meshphysical_vert:Wne,meshphysical_frag:zne,meshtoon_vert:Hne,meshtoon_frag:Xne,points_vert:Yne,points_frag:Kne,shadow_vert:jne,shadow_frag:qne,sprite_vert:Zne,sprite_frag:Qne},Et={common:{diffuse:{value:new ht(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ni},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ni}},envmap:{envMap:{value:null},envMapRotation:{value:new ni},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ni}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ni}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ni},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ni},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ni},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ni}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ni}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ni}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ht(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 re},probesMax:{value:new re},probesResolution:{value:new re}},points:{diffuse:{value:new ht(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0},uvTransform:{value:new ni}},sprite:{diffuse:{value:new ht(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ni},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0}}},hl={basic:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.fog]),vertexShader:_i.meshbasic_vert,fragmentShader:_i.meshbasic_frag},lambert:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},envMapIntensity:{value:1}}]),vertexShader:_i.meshlambert_vert,fragmentShader:_i.meshlambert_frag},phong:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},specular:{value:new ht(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:_i.meshphong_vert,fragmentShader:_i.meshphong_frag},standard:{uniforms:kn([Et.common,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.roughnessmap,Et.metalnessmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:_i.meshphysical_vert,fragmentShader:_i.meshphysical_frag},toon:{uniforms:kn([Et.common,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.gradientmap,Et.fog,Et.lights,{emissive:{value:new ht(0)}}]),vertexShader:_i.meshtoon_vert,fragmentShader:_i.meshtoon_frag},matcap:{uniforms:kn([Et.common,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,{matcap:{value:null}}]),vertexShader:_i.meshmatcap_vert,fragmentShader:_i.meshmatcap_frag},points:{uniforms:kn([Et.points,Et.fog]),vertexShader:_i.points_vert,fragmentShader:_i.points_frag},dashed:{uniforms:kn([Et.common,Et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:_i.linedashed_vert,fragmentShader:_i.linedashed_frag},depth:{uniforms:kn([Et.common,Et.displacementmap]),vertexShader:_i.depth_vert,fragmentShader:_i.depth_frag},normal:{uniforms:kn([Et.common,Et.bumpmap,Et.normalmap,Et.displacementmap,{opacity:{value:1}}]),vertexShader:_i.meshnormal_vert,fragmentShader:_i.meshnormal_frag},sprite:{uniforms:kn([Et.sprite,Et.fog]),vertexShader:_i.sprite_vert,fragmentShader:_i.sprite_frag},background:{uniforms:{uvTransform:{value:new ni},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:_i.background_vert,fragmentShader:_i.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ni}},vertexShader:_i.backgroundCube_vert,fragmentShader:_i.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:_i.cube_vert,fragmentShader:_i.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:_i.equirect_vert,fragmentShader:_i.equirect_frag},distance:{uniforms:kn([Et.common,Et.displacementmap,{referencePosition:{value:new re},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:_i.distance_vert,fragmentShader:_i.distance_frag},shadow:{uniforms:kn([Et.lights,Et.fog,{color:{value:new ht(0)},opacity:{value:1}}]),vertexShader:_i.shadow_vert,fragmentShader:_i.shadow_frag}};hl.physical={uniforms:kn([hl.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ni},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ni},clearcoatNormalScale:{value:new yt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ni},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ni},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ni},sheen:{value:0},sheenColor:{value:new ht(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ni},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ni},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ni},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ni},attenuationDistance:{value:0},attenuationColor:{value:new ht(0)},specularColor:{value:new ht(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ni},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ni},anisotropyVector:{value:new yt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ni}}]),vertexShader:_i.meshphysical_vert,fragmentShader:_i.meshphysical_frag};QT={r:0,b:0,g:0},$ne=new di,y2=new ni;y2.set(-1,0,0,0,1,0,0,0,1);If=4,n2=[.125,.215,.35,.446,.526,.582],cu=20,nse=256,P_=new ds,s2=new ht,MI=null,yI=0,II=0,CI=!1,sse=new re,gm=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=sse}=s;MI=this._renderer.getRenderTarget(),yI=this._renderer.getActiveCubeFace(),II=this._renderer.getActiveMipmapLevel(),CI=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=l2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=o2(),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?S:0,S,S),d.setRenderTarget(r),_&&d.render(g,l),d.render(e,l)}d.toneMapping=h,d.autoClear=u,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===bf||e.mapping===au;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=l2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=o2());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;mm(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,P_)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-If?i-m+If:0),_=4*(this._cubeSize-g);l.envMap.value=e.texture,l.roughness.value=h,l.mipInt.value=m-t,mm(s,p,_,3*g,2*g),r.setRenderTarget(s),r.render(o,P_),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,mm(e,p,_,3*g,2*g),r.setRenderTarget(e),r.render(o,P_)}_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"&&kt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let u=c.uniforms,h=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*h):2*Math.PI/(2*cu-1),g=s/m,p=isFinite(s)?1+Math.floor(f*g):cu;p>cu&&Dt(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${cu}`);let _=[],v=0;for(let R=0;RE-If?r-E+If:0),A=4*(this._cubeSize-T);mm(t,S,A,3*T,2*T),l.setRenderTarget(t),l.render(d,P_)}};JT=class extends ca{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 a_(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:` +}`,_i={alphahash_fragment:Eie,alphahash_pars_fragment:Sie,alphamap_fragment:Tie,alphamap_pars_fragment:Aie,alphatest_fragment:xie,alphatest_pars_fragment:Rie,aomap_fragment:bie,aomap_pars_fragment:Mie,batching_pars_vertex:yie,batching_vertex:Iie,begin_vertex:Cie,beginnormal_vertex:Pie,bsdfs:Die,iridescence_fragment:Lie,bumpmap_pars_fragment:Oie,clipping_planes_fragment:Nie,clipping_planes_pars_fragment:wie,clipping_planes_pars_vertex:Fie,clipping_planes_vertex:Bie,color_fragment:Uie,color_pars_fragment:Vie,color_pars_vertex:Gie,color_vertex:kie,common:Wie,cube_uv_reflection_fragment:zie,defaultnormal_vertex:Hie,displacementmap_pars_vertex:Xie,displacementmap_vertex:Yie,emissivemap_fragment:Kie,emissivemap_pars_fragment:jie,colorspace_fragment:qie,colorspace_pars_fragment:Zie,envmap_fragment:Qie,envmap_common_pars_fragment:$ie,envmap_pars_fragment:Jie,envmap_pars_vertex:ere,envmap_physical_pars_fragment:dre,envmap_vertex:tre,fog_vertex:ire,fog_pars_vertex:rre,fog_fragment:nre,fog_pars_fragment:sre,gradientmap_pars_fragment:are,lightmap_pars_fragment:ore,lights_lambert_fragment:lre,lights_lambert_pars_fragment:cre,lights_pars_begin:fre,lights_toon_fragment:ure,lights_toon_pars_fragment:hre,lights_phong_fragment:mre,lights_phong_pars_fragment:pre,lights_physical_fragment:gre,lights_physical_pars_fragment:_re,lights_fragment_begin:vre,lights_fragment_maps:Ere,lights_fragment_end:Sre,lightprobes_pars_fragment:Tre,logdepthbuf_fragment:Are,logdepthbuf_pars_fragment:xre,logdepthbuf_pars_vertex:Rre,logdepthbuf_vertex:bre,map_fragment:Mre,map_pars_fragment:yre,map_particle_fragment:Ire,map_particle_pars_fragment:Cre,metalnessmap_fragment:Pre,metalnessmap_pars_fragment:Dre,morphinstance_vertex:Lre,morphcolor_vertex:Ore,morphnormal_vertex:Nre,morphtarget_pars_vertex:wre,morphtarget_vertex:Fre,normal_fragment_begin:Bre,normal_fragment_maps:Ure,normal_pars_fragment:Vre,normal_pars_vertex:Gre,normal_vertex:kre,normalmap_pars_fragment:Wre,clearcoat_normal_fragment_begin:zre,clearcoat_normal_fragment_maps:Hre,clearcoat_pars_fragment:Xre,iridescence_pars_fragment:Yre,opaque_fragment:Kre,packing:jre,premultiplied_alpha_fragment:qre,project_vertex:Zre,dithering_fragment:Qre,dithering_pars_fragment:$re,roughnessmap_fragment:Jre,roughnessmap_pars_fragment:ene,shadowmap_pars_fragment:tne,shadowmap_pars_vertex:ine,shadowmap_vertex:rne,shadowmask_pars_fragment:nne,skinbase_vertex:sne,skinning_pars_vertex:ane,skinning_vertex:one,skinnormal_vertex:lne,specularmap_fragment:cne,specularmap_pars_fragment:fne,tonemapping_fragment:dne,tonemapping_pars_fragment:une,transmission_fragment:hne,transmission_pars_fragment:mne,uv_pars_fragment:pne,uv_pars_vertex:gne,uv_vertex:_ne,worldpos_vertex:vne,background_vert:Ene,background_frag:Sne,backgroundCube_vert:Tne,backgroundCube_frag:Ane,cube_vert:xne,cube_frag:Rne,depth_vert:bne,depth_frag:Mne,distance_vert:yne,distance_frag:Ine,equirect_vert:Cne,equirect_frag:Pne,linedashed_vert:Dne,linedashed_frag:Lne,meshbasic_vert:One,meshbasic_frag:Nne,meshlambert_vert:wne,meshlambert_frag:Fne,meshmatcap_vert:Bne,meshmatcap_frag:Une,meshnormal_vert:Vne,meshnormal_frag:Gne,meshphong_vert:kne,meshphong_frag:Wne,meshphysical_vert:zne,meshphysical_frag:Hne,meshtoon_vert:Xne,meshtoon_frag:Yne,points_vert:Kne,points_frag:jne,shadow_vert:qne,shadow_frag:Zne,sprite_vert:Qne,sprite_frag:$ne},Et={common:{diffuse:{value:new ht(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ni},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ni}},envmap:{envMap:{value:null},envMapRotation:{value:new ni},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ni}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ni}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ni},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ni},normalScale:{value:new yt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ni},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ni}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ni}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ni}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ht(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 re},probesMax:{value:new re},probesResolution:{value:new re}},points:{diffuse:{value:new ht(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0},uvTransform:{value:new ni}},sprite:{diffuse:{value:new ht(16777215)},opacity:{value:1},center:{value:new yt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ni},alphaMap:{value:null},alphaMapTransform:{value:new ni},alphaTest:{value:0}}},hl={basic:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.fog]),vertexShader:_i.meshbasic_vert,fragmentShader:_i.meshbasic_frag},lambert:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},envMapIntensity:{value:1}}]),vertexShader:_i.meshlambert_vert,fragmentShader:_i.meshlambert_frag},phong:{uniforms:kn([Et.common,Et.specularmap,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},specular:{value:new ht(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:_i.meshphong_vert,fragmentShader:_i.meshphong_frag},standard:{uniforms:kn([Et.common,Et.envmap,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.roughnessmap,Et.metalnessmap,Et.fog,Et.lights,{emissive:{value:new ht(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:_i.meshphysical_vert,fragmentShader:_i.meshphysical_frag},toon:{uniforms:kn([Et.common,Et.aomap,Et.lightmap,Et.emissivemap,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.gradientmap,Et.fog,Et.lights,{emissive:{value:new ht(0)}}]),vertexShader:_i.meshtoon_vert,fragmentShader:_i.meshtoon_frag},matcap:{uniforms:kn([Et.common,Et.bumpmap,Et.normalmap,Et.displacementmap,Et.fog,{matcap:{value:null}}]),vertexShader:_i.meshmatcap_vert,fragmentShader:_i.meshmatcap_frag},points:{uniforms:kn([Et.points,Et.fog]),vertexShader:_i.points_vert,fragmentShader:_i.points_frag},dashed:{uniforms:kn([Et.common,Et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:_i.linedashed_vert,fragmentShader:_i.linedashed_frag},depth:{uniforms:kn([Et.common,Et.displacementmap]),vertexShader:_i.depth_vert,fragmentShader:_i.depth_frag},normal:{uniforms:kn([Et.common,Et.bumpmap,Et.normalmap,Et.displacementmap,{opacity:{value:1}}]),vertexShader:_i.meshnormal_vert,fragmentShader:_i.meshnormal_frag},sprite:{uniforms:kn([Et.sprite,Et.fog]),vertexShader:_i.sprite_vert,fragmentShader:_i.sprite_frag},background:{uniforms:{uvTransform:{value:new ni},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:_i.background_vert,fragmentShader:_i.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ni}},vertexShader:_i.backgroundCube_vert,fragmentShader:_i.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:_i.cube_vert,fragmentShader:_i.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:_i.equirect_vert,fragmentShader:_i.equirect_frag},distance:{uniforms:kn([Et.common,Et.displacementmap,{referencePosition:{value:new re},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:_i.distance_vert,fragmentShader:_i.distance_frag},shadow:{uniforms:kn([Et.lights,Et.fog,{color:{value:new ht(0)},opacity:{value:1}}]),vertexShader:_i.shadow_vert,fragmentShader:_i.shadow_frag}};hl.physical={uniforms:kn([hl.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ni},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ni},clearcoatNormalScale:{value:new yt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ni},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ni},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ni},sheen:{value:0},sheenColor:{value:new ht(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ni},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ni},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ni},transmissionSamplerSize:{value:new yt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ni},attenuationDistance:{value:0},attenuationColor:{value:new ht(0)},specularColor:{value:new ht(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ni},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ni},anisotropyVector:{value:new yt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ni}}]),vertexShader:_i.meshphysical_vert,fragmentShader:_i.meshphysical_frag};QT={r:0,b:0,g:0},Jne=new di,I2=new ni;I2.set(-1,0,0,0,1,0,0,0,1);If=4,s2=[.125,.215,.35,.446,.526,.582],cu=20,sse=256,P_=new ds,a2=new ht,II=null,CI=0,PI=0,DI=!1,ase=new re,gm=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=ase}=s;II=this._renderer.getRenderTarget(),CI=this._renderer.getActiveCubeFace(),PI=this._renderer.getActiveMipmapLevel(),DI=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=c2(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=l2(),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?S:0,S,S),d.setRenderTarget(r),_&&d.render(g,l),d.render(e,l)}d.toneMapping=h,d.autoClear=u,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===bf||e.mapping===au;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=c2()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=l2());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;mm(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,P_)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-If?i-m+If:0),_=4*(this._cubeSize-g);l.envMap.value=e.texture,l.roughness.value=h,l.mipInt.value=m-t,mm(s,p,_,3*g,2*g),r.setRenderTarget(s),r.render(o,P_),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,mm(e,p,_,3*g,2*g),r.setRenderTarget(e),r.render(o,P_)}_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"&&kt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let u=c.uniforms,h=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*h):2*Math.PI/(2*cu-1),g=s/m,p=isFinite(s)?1+Math.floor(f*g):cu;p>cu&&Dt(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${cu}`);let _=[],v=0;for(let R=0;RE-If?r-E+If:0),A=4*(this._cubeSize-T);mm(t,S,A,3*T,2*T),l.setRenderTarget(t),l.render(d,P_)}};JT=class extends fa{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 a_(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 Sf(5,5,5),s=new fa({name:"CubemapFromEquirect",uniforms:lu(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:yn,blending:fl});s.uniforms.tEquirect.value=t;let a=new ui(r,s),o=t.minFilter;return t.minFilter===So&&(t.minFilter=Gr),new tT(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)}};gse={[Jy]:"LINEAR_TONE_MAPPING",[eI]:"REINHARD_TONE_MAPPING",[tI]:"CINEON_TONE_MAPPING",[iI]:"ACES_FILMIC_TONE_MAPPING",[nI]:"AGX_TONE_MAPPING",[sI]:"NEUTRAL_TONE_MAPPING",[rI]:"CUSTOM_TONE_MAPPING"};I2=new Pr,LI=new ec(1,1),C2=new Jg,P2=new zS,D2=new a_,c2=[],f2=[],d2=new Float32Array(16),u2=new Float32Array(9),h2=new Float32Array(4);OI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=Bse(t.type)}},NI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=rae(t.type)}},wI=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)}}},PI=/(\w+)(\])?(\[|\.)?/g;pm=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}};sae=37297,aae=0;g2=new ni;fae={[Jy]:"Linear",[eI]:"Reinhard",[tI]:"Cineon",[iI]:"ACESFilmic",[nI]:"AgX",[sI]:"Neutral",[rI]:"Custom"};$T=new re;gae=/^[ \t]*#include +<([\w\d./]+)>/gm;_ae=new Map;Eae=/#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;Tae={[E_]:"SHADOWMAP_TYPE_PCF",[lm]:"SHADOWMAP_TYPE_VSM"};xae={[bf]:"ENVMAP_TYPE_CUBE",[au]:"ENVMAP_TYPE_CUBE",[T_]:"ENVMAP_TYPE_CUBE_UV"};bae={[au]:"ENVMAP_MODE_REFRACTION"};yae={[S_]:"ENVMAP_BLENDING_MULTIPLY",[wB]:"ENVMAP_BLENDING_MIX",[FB]:"ENVMAP_BLENDING_ADD"};Dae=0,BI=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 UI(e),t.set(e,i)),i}},UI=class{constructor(e){this.id=Dae++,this.code=e,this.usedTimes=0}};Vae=0;zae=`void main() { + `},r=new Sf(5,5,5),s=new da({name:"CubemapFromEquirect",uniforms:lu(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:yn,blending:fl});s.uniforms.tEquirect.value=t;let a=new ui(r,s),o=t.minFilter;return t.minFilter===So&&(t.minFilter=Gr),new tT(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)}};_se={[tI]:"LINEAR_TONE_MAPPING",[iI]:"REINHARD_TONE_MAPPING",[rI]:"CINEON_TONE_MAPPING",[nI]:"ACES_FILMIC_TONE_MAPPING",[aI]:"AGX_TONE_MAPPING",[oI]:"NEUTRAL_TONE_MAPPING",[sI]:"CUSTOM_TONE_MAPPING"};C2=new Pr,NI=new ec(1,1),P2=new Jg,D2=new zS,L2=new a_,f2=[],d2=[],u2=new Float32Array(16),h2=new Float32Array(9),m2=new Float32Array(4);wI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=Use(t.type)}},FI=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=nae(t.type)}},BI=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)}}},LI=/(\w+)(\])?(\[|\.)?/g;pm=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}};aae=37297,oae=0;_2=new ni;dae={[tI]:"Linear",[iI]:"Reinhard",[rI]:"Cineon",[nI]:"ACESFilmic",[aI]:"AgX",[oI]:"Neutral",[sI]:"Custom"};$T=new re;_ae=/^[ \t]*#include +<([\w\d./]+)>/gm;vae=new Map;Sae=/#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;Aae={[E_]:"SHADOWMAP_TYPE_PCF",[lm]:"SHADOWMAP_TYPE_VSM"};Rae={[bf]:"ENVMAP_TYPE_CUBE",[au]:"ENVMAP_TYPE_CUBE",[T_]:"ENVMAP_TYPE_CUBE_UV"};Mae={[au]:"ENVMAP_MODE_REFRACTION"};Iae={[S_]:"ENVMAP_BLENDING_MULTIPLY",[FB]:"ENVMAP_BLENDING_MIX",[BB]:"ENVMAP_BLENDING_ADD"};Lae=0,VI=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 GI(e),t.set(e,i)),i}},GI=class{constructor(e){this.id=Lae++,this.code=e,this.usedTimes=0}};Gae=0;Hae=`void main() { gl_Position = vec4( position, 1.0 ); -}`,Hae=`uniform sampler2D shadow_pass; +}`,Xae=`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 ); -}`,Xae=[new re(1,0,0),new re(-1,0,0),new re(0,1,0),new re(0,-1,0),new re(0,0,1),new re(0,0,-1)],Yae=[new re(0,-1,0),new re(0,-1,0),new re(0,0,1),new re(0,0,-1),new re(0,-1,0),new re(0,-1,0)],b2=new di,D_=new re,DI=new re;Qae=` +}`,Yae=[new re(1,0,0),new re(-1,0,0),new re(0,1,0),new re(0,-1,0),new re(0,0,1),new re(0,0,-1)],Kae=[new re(0,-1,0),new re(0,-1,0),new re(0,0,1),new re(0,0,-1),new re(0,-1,0),new re(0,-1,0)],M2=new di,D_=new re,OI=new re;$ae=` void main() { gl_Position = vec4( position, 1.0 ); -}`,$ae=` +}`,Jae=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; @@ -4103,52 +4103,52 @@ void main() { } -}`,VI=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new l_(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 fa({vertexShader:Qae,fragmentShader:$ae,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new ui(new iu(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},GI=class extends Fa{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,u=null,h=null,m=null,g=typeof XRWebGLBinding!="undefined",p=new VI,_={},v=t.getContextAttributes(),E=null,T=null,S=[],A=[],R=new yt,M=null,I=new _r;I.viewport=new lr;let C=new _r;C.viewport=new lr;let D=[I,C],w=new iT,k=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getTargetRaySpace()},this.getControllerGrip=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getGripSpace()},this.getHand=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getHandSpace()};function N(ae){let _e=A.indexOf(ae.inputSource);if(_e===-1)return;let ne=S[_e];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&&(A[ve]=null,S[ve].disconnect(ne))}for(let _e=0;_e=A.length){A.push(ne),ve=ue;break}else if(A[ue]===null){A[ue]=ne,ve=ue;break}if(ve===-1)break}let Ce=S[ve];Ce&&Ce.connect(ne)}}let q=new re,j=new re;function J(ae,_e,ne){q.setFromMatrixPosition(_e.matrixWorld),j.setFromMatrixPosition(ne.matrixWorld);let ve=q.distanceTo(j),Ce=_e.projectionMatrix.elements,ue=ne.projectionMatrix.elements,be=Ce[14]/(Ce[10]-1),Ge=Ce[14]/(Ce[10]+1),qe=(Ce[9]+1)/Ce[5],Ye=(Ce[9]-1)/Ce[5],Ke=(Ce[8]-1)/Ce[0],Zt=(ue[8]+1)/ue[0],Ut=be*Ke,Wi=be*Zt,oe=ve/(-Ke+Zt),Qi=oe*-Ke;if(_e.matrixWorld.decompose(ae.position,ae.quaternion,ae.scale),ae.translateX(Qi),ae.translateZ(oe),ae.matrixWorld.compose(ae.position,ae.quaternion,ae.scale),ae.matrixWorldInverse.copy(ae.matrixWorld).invert(),Ce[10]===-1)ae.projectionMatrix.copy(_e.projectionMatrix),ae.projectionMatrixInverse.copy(_e.projectionMatrixInverse);else{let Ht=be+oe,Di=Ge+oe,ot=Ut-Qi,ji=Wi+(ve-Qi),K=qe*Ge/Di*Ht,U=Ye*Ge/Di*Ht;ae.projectionMatrix.makePerspective(ot,ji,K,U,Ht,Di),ae.projectionMatrixInverse.copy(ae.projectionMatrix).invert()}}function H(ae,_e){_e===null?ae.matrixWorld.copy(ae.matrix):ae.matrixWorld.multiplyMatrices(_e.matrixWorld,ae.matrix),ae.matrixWorldInverse.copy(ae.matrixWorld).invert()}this.updateCamera=function(ae){if(r===null)return;let _e=ae.near,ne=ae.far;p.texture!==null&&(p.depthNear>0&&(_e=p.depthNear),p.depthFar>0&&(ne=p.depthFar)),w.near=C.near=I.near=_e,w.far=C.far=I.far=ne,(k!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),k=w.near,O=w.far),w.layers.mask=ae.layers.mask|6,I.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let ve=ae.parent,Ce=w.cameras;H(w,ve);for(let ue=0;ue{function vt(){if(Se.forEach(function(xt){K.get(xt).currentProgram.isReady()&&Se.delete(xt)}),Se.size===0){Te(G);return}setTimeout(vt,10)}Ht.get("KHR_parallel_shader_compile")!==null?vt():setTimeout(vt,10)})};let Pa=null;function UE(G){Pa&&Pa(G)}function _h(){Zr.stop()}function Ig(){Zr.start()}let Zr=new M2;Zr.setAnimationLoop(UE),typeof self!="undefined"&&Zr.setContext(self),this.setAnimationLoop=function(G){Pa=G,it.setAnimationLoop(G),G===null?Zr.stop():Zr.start()},it.addEventListener("sessionstart",_h),it.addEventListener("sessionend",Ig),this.render=function(G,le){if(le!==void 0&&le.isCamera!==!0){kt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;w!==null&&w.renderStart(G,le);let xe=it.enabled===!0&&it.isPresenting===!0,Se=I!==null&&(N===null||xe)&&I.begin(C,N);if(G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),le.parent===null&&le.matrixWorldAutoUpdate===!0&&le.updateMatrixWorld(),it.enabled===!0&&it.isPresenting===!0&&(I===null||I.isCompositing()===!1)&&(it.cameraAutoUpdate===!0&&it.updateCamera(le),le=it.getCamera()),G.isScene===!0&&G.onBeforeRender(C,G,le,N),A=ct.get(G,M.length),A.init(le),A.state.textureUnits=U.getTextureUnits(),M.push(A),qe.multiplyMatrices(le.projectionMatrix,le.matrixWorldInverse),ue.setFromProjectionMatrix(qe,po,le.reversedDepth),Ge=this.localClippingEnabled,be=At.init(this.clippingPlanes,Ge),S=De.get(G,R.length),S.init(),R.push(S),it.enabled===!0&&it.isPresenting===!0){let xt=C.xr.getDepthSensingMesh();xt!==null&&vh(xt,le,-1/0,C.sortObjects)}vh(G,le,0,C.sortObjects),S.finish(),C.sortObjects===!0&&S.sort(ae,_e),Ut=it.enabled===!1||it.isPresenting===!1||it.hasDepthSensing()===!1,Ut&&Ze.addToRenderList(S,G),this.info.render.frame++,be===!0&&At.beginShadows();let Te=A.state.shadowsArray;if(nt.render(Te,G,le),be===!0&&At.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Se&&I.hasRenderPass())===!1){let xt=S.opaque,ft=S.transmissive;if(A.setupLights(),le.isArrayCamera){let Ct=le.cameras;if(ft.length>0)for(let Pt=0,ci=Ct.length;Pt0&&GE(xt,ft,G,le),Ut&&Ze.render(G),VE(S,G,le)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Se&&I.end(C),G.isScene===!0&&G.onAfterRender(C,G,le),Qe.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(A=M[M.length-1],U.setTextureUnits(A.state.textureUnits),be===!0&&At.setGlobalState(C.clippingPlanes,A.state.camera)):A=null,R.pop(),R.length>0?S=R[R.length-1]:S=null,w!==null&&w.renderEnd()};function vh(G,le,xe,Se){if(G.visible===!1)return;if(G.layers.test(le.layers)){if(G.isGroup)xe=G.renderOrder;else if(G.isLOD)G.autoUpdate===!0&&G.update(le);else if(G.isLightProbeGrid)A.pushLightProbeGrid(G);else if(G.isLight)A.pushLight(G),G.castShadow&&A.pushShadow(G);else if(G.isSprite){if(!G.frustumCulled||ue.intersectsSprite(G)){Se&&Ke.setFromMatrixPosition(G.matrixWorld).applyMatrix4(qe);let xt=et.update(G),ft=G.material;ft.visible&&S.push(G,xt,ft,xe,Ke.z,null)}}else if((G.isMesh||G.isLine||G.isPoints)&&(!G.frustumCulled||ue.intersectsObject(G))){let xt=et.update(G),ft=G.material;if(Se&&(G.boundingSphere!==void 0?(G.boundingSphere===null&&G.computeBoundingSphere(),Ke.copy(G.boundingSphere.center)):(xt.boundingSphere===null&&xt.computeBoundingSphere(),Ke.copy(xt.boundingSphere.center)),Ke.applyMatrix4(G.matrixWorld).applyMatrix4(qe)),Array.isArray(ft)){let Ct=xt.groups;for(let Pt=0,ci=Ct.length;Pt0&&Eh(Te,le,xe),vt.length>0&&Eh(vt,le,xe),xt.length>0&&Eh(xt,le,xe),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function GE(G,le,xe,Se){if((xe.isScene===!0?xe.overrideMaterial:null)!==null)return;if(A.state.transmissionRenderTarget[Se.id]===void 0){let Nt=Ht.has("EXT_color_buffer_half_float")||Ht.has("EXT_color_buffer_float");A.state.transmissionRenderTarget[Se.id]=new ca(1,1,{generateMipmaps:!0,type:Nt?dl:Fs,minFilter:So,samples:Math.max(4,Di.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:fi.workingColorSpace})}let vt=A.state.transmissionRenderTarget[Se.id],xt=Se.viewport||q;vt.setSize(xt.z*C.transmissionResolutionScale,xt.w*C.transmissionResolutionScale);let ft=C.getRenderTarget(),Ct=C.getActiveCubeFace(),Pt=C.getActiveMipmapLevel();C.setRenderTarget(vt),C.getClearColor(H),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Ut&&Ze.render(xe);let ci=C.toneMapping;C.toneMapping=ws;let pi=Se.viewport;if(Se.viewport!==void 0&&(Se.viewport=void 0),A.setupLightsView(Se),be===!0&&At.setGlobalState(C.clippingPlanes,Se),Eh(G,xe,Se),U.updateMultisampleRenderTarget(vt),U.updateRenderTargetMipmap(vt),Ht.has("WEBGL_multisampled_render_to_texture")===!1){let Nt=!1;for(let ar=0,Br=le.length;ar0,Se.currentProgram=pi,Se.uniformsList=null,pi}function sf(G){if(G.uniformsList===null){let le=G.currentProgram.getUniforms();G.uniformsList=pm.seqWithValue(le.seq,G.uniforms)}return G.uniformsList}function WE(G,le){let xe=K.get(G);xe.outputColorSpace=le.outputColorSpace,xe.batching=le.batching,xe.batchingColor=le.batchingColor,xe.instancing=le.instancing,xe.instancingColor=le.instancingColor,xe.instancingMorph=le.instancingMorph,xe.skinning=le.skinning,xe.morphTargets=le.morphTargets,xe.morphNormals=le.morphNormals,xe.morphColors=le.morphColors,xe.morphTargetsCount=le.morphTargetsCount,xe.numClippingPlanes=le.numClippingPlanes,xe.numIntersection=le.numClipIntersection,xe.vertexAlphas=le.vertexAlphas,xe.vertexTangents=le.vertexTangents,xe.toneMapping=le.toneMapping}function zE(G,le){if(G.length===0)return null;if(G.length===1)return G[0].texture!==null?G[0]:null;T.setFromMatrixPosition(le.matrixWorld);for(let xe=0,Se=G.length;xe0),Nt=!!xe.morphAttributes.position,ar=!!xe.morphAttributes.normal,Br=!!xe.morphAttributes.color,Nr=ws;Se.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Nr=C.toneMapping);let dr=xe.morphAttributes.position||xe.morphAttributes.normal||xe.morphAttributes.color,Bn=dr!==void 0?dr.length:0,bt=K.get(Se),ra=A.state.lights;if(be===!0&&(Ge===!0||G!==V)){let gr=G===V&&Se.id===B;At.setState(Se,G,gr)}let zi=!1;Se.version===bt.__version?(bt.needsLights&&bt.lightsStateVersion!==ra.state.version||bt.outputColorSpace!==ft||Te.isBatchedMesh&&bt.batching===!1||!Te.isBatchedMesh&&bt.batching===!0||Te.isBatchedMesh&&bt.batchingColor===!0&&Te.colorTexture===null||Te.isBatchedMesh&&bt.batchingColor===!1&&Te.colorTexture!==null||Te.isInstancedMesh&&bt.instancing===!1||!Te.isInstancedMesh&&bt.instancing===!0||Te.isSkinnedMesh&&bt.skinning===!1||!Te.isSkinnedMesh&&bt.skinning===!0||Te.isInstancedMesh&&bt.instancingColor===!0&&Te.instanceColor===null||Te.isInstancedMesh&&bt.instancingColor===!1&&Te.instanceColor!==null||Te.isInstancedMesh&&bt.instancingMorph===!0&&Te.morphTexture===null||Te.isInstancedMesh&&bt.instancingMorph===!1&&Te.morphTexture!==null||bt.envMap!==Pt||Se.fog===!0&&bt.fog!==vt||bt.numClippingPlanes!==void 0&&(bt.numClippingPlanes!==At.numPlanes||bt.numIntersection!==At.numIntersection)||bt.vertexAlphas!==ci||bt.vertexTangents!==pi||bt.morphTargets!==Nt||bt.morphNormals!==ar||bt.morphColors!==Br||bt.toneMapping!==Nr||bt.morphTargetsCount!==Bn||!!bt.lightProbeGrid!=A.state.lightProbeGridArray.length>0)&&(zi=!0):(zi=!0,bt.__version=Se.version);let Da=bt.currentProgram;zi===!0&&(Da=nf(Se,le,Te),w&&Se.isNodeMaterial&&w.onUpdateProgram(Se,Da,bt));let $o=!1,af=!1,Sh=!1,ur=Da.getUniforms(),Ur=bt.uniforms;if(ot.useProgram(Da.program)&&($o=!0,af=!0,Sh=!0),Se.id!==B&&(B=Se.id,af=!0),bt.needsLights){let gr=zE(A.state.lightProbeGridArray,Te);bt.lightProbeGrid!==gr&&(bt.lightProbeGrid=gr,af=!0)}if($o||V!==G){ot.buffers.depth.getReversed()&&G.reversedDepth!==!0&&(G._reversedDepth=!0,G.updateProjectionMatrix()),ur.setValue(oe,"projectionMatrix",G.projectionMatrix),ur.setValue(oe,"viewMatrix",G.matrixWorldInverse);let lf=ur.map.cameraPosition;lf!==void 0&&lf.setValue(oe,Ye.setFromMatrixPosition(G.matrixWorld)),Di.logarithmicDepthBuffer&&ur.setValue(oe,"logDepthBufFC",2/(Math.log(G.far+1)/Math.LN2)),(Se.isMeshPhongMaterial||Se.isMeshToonMaterial||Se.isMeshLambertMaterial||Se.isMeshBasicMaterial||Se.isMeshStandardMaterial||Se.isShaderMaterial)&&ur.setValue(oe,"isOrthographic",G.isOrthographicCamera===!0),V!==G&&(V=G,af=!0,Sh=!0)}if(bt.needsLights&&(ra.state.directionalShadowMap.length>0&&ur.setValue(oe,"directionalShadowMap",ra.state.directionalShadowMap,U),ra.state.spotShadowMap.length>0&&ur.setValue(oe,"spotShadowMap",ra.state.spotShadowMap,U),ra.state.pointShadowMap.length>0&&ur.setValue(oe,"pointShadowMap",ra.state.pointShadowMap,U)),Te.isSkinnedMesh){ur.setOptional(oe,Te,"bindMatrix"),ur.setOptional(oe,Te,"bindMatrixInverse");let gr=Te.skeleton;gr&&(gr.boneTexture===null&&gr.computeBoneTexture(),ur.setValue(oe,"boneTexture",gr.boneTexture,U))}Te.isBatchedMesh&&(ur.setOptional(oe,Te,"batchingTexture"),ur.setValue(oe,"batchingTexture",Te._matricesTexture,U),ur.setOptional(oe,Te,"batchingIdTexture"),ur.setValue(oe,"batchingIdTexture",Te._indirectTexture,U),ur.setOptional(oe,Te,"batchingColorTexture"),Te._colorsTexture!==null&&ur.setValue(oe,"batchingColorTexture",Te._colorsTexture,U));let of=xe.morphAttributes;if((of.position!==void 0||of.normal!==void 0||of.color!==void 0)&&Vt.update(Te,xe,Da),(af||bt.receiveShadow!==Te.receiveShadow)&&(bt.receiveShadow=Te.receiveShadow,ur.setValue(oe,"receiveShadow",Te.receiveShadow)),(Se.isMeshStandardMaterial||Se.isMeshLambertMaterial||Se.isMeshPhongMaterial)&&Se.envMap===null&&le.environment!==null&&(Ur.envMapIntensity.value=le.environmentIntensity),Ur.dfgLUT!==void 0&&(Ur.dfgLUT.value=roe()),af){if(ur.setValue(oe,"toneMappingExposure",C.toneMappingExposure),bt.needsLights&&te(Ur,Sh),vt&&Se.fog===!0&&ye.refreshFogUniforms(Ur,vt),ye.refreshMaterialUniforms(Ur,Se,Ue,me,A.state.transmissionRenderTarget[G.id]),bt.needsLights&&bt.lightProbeGrid){let gr=bt.lightProbeGrid;Ur.probesSH.value=gr.texture,Ur.probesMin.value.copy(gr.boundingBox.min),Ur.probesMax.value.copy(gr.boundingBox.max),Ur.probesResolution.value.copy(gr.resolution)}pm.upload(oe,sf(bt),Ur,U)}if(Se.isShaderMaterial&&Se.uniformsNeedUpdate===!0&&(pm.upload(oe,sf(bt),Ur,U),Se.uniformsNeedUpdate=!1),Se.isSpriteMaterial&&ur.setValue(oe,"center",Te.center),ur.setValue(oe,"modelViewMatrix",Te.modelViewMatrix),ur.setValue(oe,"normalMatrix",Te.normalMatrix),ur.setValue(oe,"modelMatrix",Te.matrixWorld),Se.uniformsGroups!==void 0){let gr=Se.uniformsGroups;for(let lf=0,Th=gr.length;lf0&&U.useMultisampledRTT(G)===!1?Se=K.get(G).__webglMultisampledFramebuffer:Array.isArray(Pt)?Se=Pt[xe]:Se=Pt,q.copy(G.viewport),j.copy(G.scissor),J=G.scissorTest}else q.copy(ne).multiplyScalar(Ue).floor(),j.copy(ve).multiplyScalar(Ue).floor(),J=Ce;if(xe!==0&&(Se=Ot),ot.bindFramebuffer(oe.FRAMEBUFFER,Se)&&ot.drawBuffers(G,Se),ot.viewport(q),ot.scissor(j),ot.setScissorTest(J),Te){let ft=K.get(G.texture);oe.framebufferTexture2D(oe.FRAMEBUFFER,oe.COLOR_ATTACHMENT0,oe.TEXTURE_CUBE_MAP_POSITIVE_X+le,ft.__webglTexture,xe)}else if(vt){let ft=le;for(let Ct=0;Ct1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+ft),!Di.textureFormatReadable(ci)){kt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Di.textureTypeReadable(pi)){kt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}le>=0&&le<=G.width-Se&&xe>=0&&xe<=G.height-Te&&oe.readPixels(le,xe,Se,Te,se.convert(ci),se.convert(pi),vt)}finally{let Pt=N!==null?K.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,Pt)}}},this.readRenderTargetPixelsAsync=async function(G,le,xe,Se,Te,vt,xt,ft=0){if(!(G&&G.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ct=K.get(G).__webglFramebuffer;if(G.isWebGLCubeRenderTarget&&xt!==void 0&&(Ct=Ct[xt]),Ct)if(le>=0&&le<=G.width-Se&&xe>=0&&xe<=G.height-Te){ot.bindFramebuffer(oe.FRAMEBUFFER,Ct);let Pt=G.textures[ft],ci=Pt.format,pi=Pt.type;if(G.textures.length>1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+ft),!Di.textureFormatReadable(ci))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Di.textureTypeReadable(pi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Nt=oe.createBuffer();oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Nt),oe.bufferData(oe.PIXEL_PACK_BUFFER,vt.byteLength,oe.STREAM_READ),oe.readPixels(le,xe,Se,Te,se.convert(ci),se.convert(pi),0);let ar=N!==null?K.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,ar);let Br=oe.fenceSync(oe.SYNC_GPU_COMMANDS_COMPLETE,0);return oe.flush(),await $B(oe,Br,4),oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Nt),oe.getBufferSubData(oe.PIXEL_PACK_BUFFER,0,vt),oe.deleteBuffer(Nt),oe.deleteSync(Br),vt}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(G,le=null,xe=0){let Se=Math.pow(2,-xe),Te=Math.floor(G.image.width*Se),vt=Math.floor(G.image.height*Se),xt=le!==null?le.x:0,ft=le!==null?le.y:0;U.setTexture2D(G,0),oe.copyTexSubImage2D(oe.TEXTURE_2D,xe,0,0,xt,ft,Te,vt),ot.unbindTexture()};let bi=oe.createFramebuffer(),mi=oe.createFramebuffer();this.copyTextureToTexture=function(G,le,xe=null,Se=null,Te=0,vt=0){let xt,ft,Ct,Pt,ci,pi,Nt,ar,Br,Nr=G.isCompressedTexture?G.mipmaps[vt]:G.image;if(xe!==null)xt=xe.max.x-xe.min.x,ft=xe.max.y-xe.min.y,Ct=xe.isBox3?xe.max.z-xe.min.z:1,Pt=xe.min.x,ci=xe.min.y,pi=xe.isBox3?xe.min.z:0;else{let Ur=Math.pow(2,-Te);xt=Math.floor(Nr.width*Ur),ft=Math.floor(Nr.height*Ur),G.isDataArrayTexture?Ct=Nr.depth:G.isData3DTexture?Ct=Math.floor(Nr.depth*Ur):Ct=1,Pt=0,ci=0,pi=0}Se!==null?(Nt=Se.x,ar=Se.y,Br=Se.z):(Nt=0,ar=0,Br=0);let dr=se.convert(le.format),Bn=se.convert(le.type),bt;le.isData3DTexture?(U.setTexture3D(le,0),bt=oe.TEXTURE_3D):le.isDataArrayTexture||le.isCompressedArrayTexture?(U.setTexture2DArray(le,0),bt=oe.TEXTURE_2D_ARRAY):(U.setTexture2D(le,0),bt=oe.TEXTURE_2D),ot.activeTexture(oe.TEXTURE0),ot.pixelStorei(oe.UNPACK_FLIP_Y_WEBGL,le.flipY),ot.pixelStorei(oe.UNPACK_PREMULTIPLY_ALPHA_WEBGL,le.premultiplyAlpha),ot.pixelStorei(oe.UNPACK_ALIGNMENT,le.unpackAlignment);let ra=ot.getParameter(oe.UNPACK_ROW_LENGTH),zi=ot.getParameter(oe.UNPACK_IMAGE_HEIGHT),Da=ot.getParameter(oe.UNPACK_SKIP_PIXELS),$o=ot.getParameter(oe.UNPACK_SKIP_ROWS),af=ot.getParameter(oe.UNPACK_SKIP_IMAGES);ot.pixelStorei(oe.UNPACK_ROW_LENGTH,Nr.width),ot.pixelStorei(oe.UNPACK_IMAGE_HEIGHT,Nr.height),ot.pixelStorei(oe.UNPACK_SKIP_PIXELS,Pt),ot.pixelStorei(oe.UNPACK_SKIP_ROWS,ci),ot.pixelStorei(oe.UNPACK_SKIP_IMAGES,pi);let Sh=G.isDataArrayTexture||G.isData3DTexture,ur=le.isDataArrayTexture||le.isData3DTexture;if(G.isDepthTexture){let Ur=K.get(G),of=K.get(le),gr=K.get(Ur.__renderTarget),lf=K.get(of.__renderTarget);ot.bindFramebuffer(oe.READ_FRAMEBUFFER,gr.__webglFramebuffer),ot.bindFramebuffer(oe.DRAW_FRAMEBUFFER,lf.__webglFramebuffer);for(let Th=0;Th{us();O2={type:"change"},WI={type:"start"},w2={type:"end"},rA=new rl,N2=new Na,noe=Math.cos(70*C_.DEG2RAD),fn=new re,Bs=2*Math.PI,cr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},kI=1e-6,nA=class extends v_{constructor(e,t=null){super(e,t),this.state=cr.NONE,this.target=new re,this.cursor=new re,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:xf.ROTATE,MIDDLE:xf.DOLLY,RIGHT:xf.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 re,this._lastQuaternion=new on,this._lastTargetPosition=new re,this._quat=new on().setFromUnitVectors(e.up,new re(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new am,this._sphericalDelta=new am,this._scale=1,this._panOffset=new re,this._rotateStart=new yt,this._rotateEnd=new yt,this._rotateDelta=new yt,this._panStart=new yt,this._panEnd=new yt,this._panDelta=new yt,this._dollyStart=new yt,this._dollyEnd=new yt,this._dollyDelta=new yt,this._dollyDirection=new re,this._mouse=new yt,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=aoe.bind(this),this._onPointerDown=soe.bind(this),this._onPointerUp=ooe.bind(this),this._onContextMenu=moe.bind(this),this._onMouseWheel=foe.bind(this),this._onKeyDown=doe.bind(this),this._onTouchStart=uoe.bind(this),this._onTouchMove=hoe.bind(this),this._onMouseDown=loe.bind(this),this._onMouseMove=coe.bind(this),this._interceptControlDown=poe.bind(this),this._interceptControlUp=goe.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(O2),this.update(),this.state=cr.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;fn.copy(t).sub(this.target),fn.applyQuaternion(this._quat),this._spherical.setFromVector3(fn),this.autoRotate&&this.state===cr.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+=Bs:i>Math.PI&&(i-=Bs),r<-Math.PI?r+=Bs:r>Math.PI&&(r-=Bs),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(fn.setFromSpherical(this._spherical),fn.applyQuaternion(this._quatInverse),t.copy(this.target).add(fn),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=fn.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 re(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 re(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=fn.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):(rA.origin.copy(this.object.position),rA.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(rA.direction))kI||8*(1-this._lastQuaternion.dot(this.object.quaternion))>kI||this._lastTargetPosition.distanceToSquared(this.target)>kI?(this.dispatchEvent(O2),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Bs/60*this.autoRotateSpeed*e:Bs/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){fn.setFromMatrixColumn(t,0),fn.multiplyScalar(-e),this._panOffset.add(fn)}_panUp(e,t){this.screenSpacePanning===!0?fn.setFromMatrixColumn(t,1):(fn.setFromMatrixColumn(t,0),fn.crossVectors(this.object.up,fn)),fn.multiplyScalar(e),this._panOffset.add(fn)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;fn.copy(r).sub(this.target);let s=fn.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(Bs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Bs*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(Bs*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(-Bs*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(Bs*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(-Bs*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(Bs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Bs*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{us();sA=class extends $d{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new Sf;e.deleteAttribute("uv");let t=new Mn({side:yn}),i=new Mn,r=new vo(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new ui(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new eu(e,i,6),o=new ir;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 ui(e,vm(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new ui(e,vm(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new ui(e,vm(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new ui(e,vm(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let u=new ui(e,vm(20));u.position.set(3.235,11.486,-12.541),u.scale.set(2.5,2,.1),this.add(u);let h=new ui(e,vm(100));h.position.set(0,20,0),h.scale.set(1,.1,1),this.add(h)}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 aA,zI,U2=y(()=>{us();aA=class extends Tn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?Eo.extractUrlBase(e):this.path,o=new Ns(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 u=f>=0?c.substring(f+1):"";if(u=u.trim(),d==="newmtl")r={name:u},a[u]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let h=u.split(s,3);r[d]=[parseFloat(h[0]),parseFloat(h[1]),parseFloat(h[2])]}else r[d]=u}let o=new zI(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},zI=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:la,this.wrap=this.options.wrap!==void 0?this.options.wrap:tl}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=Li),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=fi.colorSpaceToWorking(new ht().fromArray(l),Li);break;case"ks":r.specular=fi.colorSpaceToWorking(new ht().fromArray(l),Li);break;case"ke":r.emissive=fi.colorSpaceToWorking(new ht().fromArray(l),Li);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 ru(r),this.materials[e]}getTextureParams(e,t){let i={scale:new yt(1,1),offset:new yt(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:ZT,o=a.getHandler(e);o===null&&(o=new su(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function Toe(){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;G2.fromArray(r,e),HI.fromArray(r,t),k2.fromArray(r,i),Ua.subVectors(k2,HI),W2.subVectors(G2,HI),Ua.cross(W2),Ua.normalize(),s.push(Ua.x,Ua.y,Ua.z),s.push(Ua.x,Ua.y,Ua.z),s.push(Ua.x,Ua.y,Ua.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),u=this.parseVertexIndex(t,f),h=this.parseVertexIndex(i,f);if(this.addVertex(d,u,h),this.addColor(d,u,h),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),u=this.parseNormalIndex(l,m),h=this.parseNormalIndex(c,m),this.addNormal(d,u,h)}else this.addFaceNormal(d,u,h);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),u=this.parseUVIndex(s,m),h=this.parseUVIndex(a,m),this.addUV(d,u,h),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{us();_oe=/^[og]\s*(.+)?/,voe=/^mtllib /,Eoe=/^usemtl /,Soe=/^usemap /,V2=/\s+/,G2=new re,HI=new re,k2=new re,W2=new re,Ua=new re,oA=new ht;lA=class extends Tn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new Ns(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 Toe;e.indexOf(`\r +}`,kI=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new l_(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 da({vertexShader:$ae,fragmentShader:Jae,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new ui(new iu(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},WI=class extends Ba{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,u=null,h=null,m=null,g=typeof XRWebGLBinding!="undefined",p=new kI,_={},v=t.getContextAttributes(),E=null,T=null,S=[],A=[],R=new yt,M=null,I=new _r;I.viewport=new lr;let C=new _r;C.viewport=new lr;let D=[I,C],w=new iT,k=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getTargetRaySpace()},this.getControllerGrip=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getGripSpace()},this.getHand=function(ae){let _e=S[ae];return _e===void 0&&(_e=new Qh,S[ae]=_e),_e.getHandSpace()};function N(ae){let _e=A.indexOf(ae.inputSource);if(_e===-1)return;let ne=S[_e];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&&(A[ve]=null,S[ve].disconnect(ne))}for(let _e=0;_e=A.length){A.push(ne),ve=ue;break}else if(A[ue]===null){A[ue]=ne,ve=ue;break}if(ve===-1)break}let Ce=S[ve];Ce&&Ce.connect(ne)}}let q=new re,j=new re;function J(ae,_e,ne){q.setFromMatrixPosition(_e.matrixWorld),j.setFromMatrixPosition(ne.matrixWorld);let ve=q.distanceTo(j),Ce=_e.projectionMatrix.elements,ue=ne.projectionMatrix.elements,be=Ce[14]/(Ce[10]-1),Ge=Ce[14]/(Ce[10]+1),qe=(Ce[9]+1)/Ce[5],Ye=(Ce[9]-1)/Ce[5],Ke=(Ce[8]-1)/Ce[0],Zt=(ue[8]+1)/ue[0],Ut=be*Ke,Wi=be*Zt,oe=ve/(-Ke+Zt),Qi=oe*-Ke;if(_e.matrixWorld.decompose(ae.position,ae.quaternion,ae.scale),ae.translateX(Qi),ae.translateZ(oe),ae.matrixWorld.compose(ae.position,ae.quaternion,ae.scale),ae.matrixWorldInverse.copy(ae.matrixWorld).invert(),Ce[10]===-1)ae.projectionMatrix.copy(_e.projectionMatrix),ae.projectionMatrixInverse.copy(_e.projectionMatrixInverse);else{let Ht=be+oe,Di=Ge+oe,ot=Ut-Qi,ji=Wi+(ve-Qi),K=qe*Ge/Di*Ht,U=Ye*Ge/Di*Ht;ae.projectionMatrix.makePerspective(ot,ji,K,U,Ht,Di),ae.projectionMatrixInverse.copy(ae.projectionMatrix).invert()}}function H(ae,_e){_e===null?ae.matrixWorld.copy(ae.matrix):ae.matrixWorld.multiplyMatrices(_e.matrixWorld,ae.matrix),ae.matrixWorldInverse.copy(ae.matrixWorld).invert()}this.updateCamera=function(ae){if(r===null)return;let _e=ae.near,ne=ae.far;p.texture!==null&&(p.depthNear>0&&(_e=p.depthNear),p.depthFar>0&&(ne=p.depthFar)),w.near=C.near=I.near=_e,w.far=C.far=I.far=ne,(k!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),k=w.near,O=w.far),w.layers.mask=ae.layers.mask|6,I.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let ve=ae.parent,Ce=w.cameras;H(w,ve);for(let ue=0;ue{function vt(){if(Se.forEach(function(xt){K.get(xt).currentProgram.isReady()&&Se.delete(xt)}),Se.size===0){Te(G);return}setTimeout(vt,10)}Ht.get("KHR_parallel_shader_compile")!==null?vt():setTimeout(vt,10)})};let Da=null;function UE(G){Da&&Da(G)}function _h(){Zr.stop()}function Ig(){Zr.start()}let Zr=new y2;Zr.setAnimationLoop(UE),typeof self!="undefined"&&Zr.setContext(self),this.setAnimationLoop=function(G){Da=G,it.setAnimationLoop(G),G===null?Zr.stop():Zr.start()},it.addEventListener("sessionstart",_h),it.addEventListener("sessionend",Ig),this.render=function(G,le){if(le!==void 0&&le.isCamera!==!0){kt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;w!==null&&w.renderStart(G,le);let xe=it.enabled===!0&&it.isPresenting===!0,Se=I!==null&&(N===null||xe)&&I.begin(C,N);if(G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),le.parent===null&&le.matrixWorldAutoUpdate===!0&&le.updateMatrixWorld(),it.enabled===!0&&it.isPresenting===!0&&(I===null||I.isCompositing()===!1)&&(it.cameraAutoUpdate===!0&&it.updateCamera(le),le=it.getCamera()),G.isScene===!0&&G.onBeforeRender(C,G,le,N),A=ct.get(G,M.length),A.init(le),A.state.textureUnits=U.getTextureUnits(),M.push(A),qe.multiplyMatrices(le.projectionMatrix,le.matrixWorldInverse),ue.setFromProjectionMatrix(qe,po,le.reversedDepth),Ge=this.localClippingEnabled,be=At.init(this.clippingPlanes,Ge),S=De.get(G,R.length),S.init(),R.push(S),it.enabled===!0&&it.isPresenting===!0){let xt=C.xr.getDepthSensingMesh();xt!==null&&vh(xt,le,-1/0,C.sortObjects)}vh(G,le,0,C.sortObjects),S.finish(),C.sortObjects===!0&&S.sort(ae,_e),Ut=it.enabled===!1||it.isPresenting===!1||it.hasDepthSensing()===!1,Ut&&Ze.addToRenderList(S,G),this.info.render.frame++,be===!0&&At.beginShadows();let Te=A.state.shadowsArray;if(nt.render(Te,G,le),be===!0&&At.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Se&&I.hasRenderPass())===!1){let xt=S.opaque,ft=S.transmissive;if(A.setupLights(),le.isArrayCamera){let Ct=le.cameras;if(ft.length>0)for(let Pt=0,ci=Ct.length;Pt0&&GE(xt,ft,G,le),Ut&&Ze.render(G),VE(S,G,le)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Se&&I.end(C),G.isScene===!0&&G.onAfterRender(C,G,le),Qe.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(A=M[M.length-1],U.setTextureUnits(A.state.textureUnits),be===!0&&At.setGlobalState(C.clippingPlanes,A.state.camera)):A=null,R.pop(),R.length>0?S=R[R.length-1]:S=null,w!==null&&w.renderEnd()};function vh(G,le,xe,Se){if(G.visible===!1)return;if(G.layers.test(le.layers)){if(G.isGroup)xe=G.renderOrder;else if(G.isLOD)G.autoUpdate===!0&&G.update(le);else if(G.isLightProbeGrid)A.pushLightProbeGrid(G);else if(G.isLight)A.pushLight(G),G.castShadow&&A.pushShadow(G);else if(G.isSprite){if(!G.frustumCulled||ue.intersectsSprite(G)){Se&&Ke.setFromMatrixPosition(G.matrixWorld).applyMatrix4(qe);let xt=et.update(G),ft=G.material;ft.visible&&S.push(G,xt,ft,xe,Ke.z,null)}}else if((G.isMesh||G.isLine||G.isPoints)&&(!G.frustumCulled||ue.intersectsObject(G))){let xt=et.update(G),ft=G.material;if(Se&&(G.boundingSphere!==void 0?(G.boundingSphere===null&&G.computeBoundingSphere(),Ke.copy(G.boundingSphere.center)):(xt.boundingSphere===null&&xt.computeBoundingSphere(),Ke.copy(xt.boundingSphere.center)),Ke.applyMatrix4(G.matrixWorld).applyMatrix4(qe)),Array.isArray(ft)){let Ct=xt.groups;for(let Pt=0,ci=Ct.length;Pt0&&Eh(Te,le,xe),vt.length>0&&Eh(vt,le,xe),xt.length>0&&Eh(xt,le,xe),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function GE(G,le,xe,Se){if((xe.isScene===!0?xe.overrideMaterial:null)!==null)return;if(A.state.transmissionRenderTarget[Se.id]===void 0){let Nt=Ht.has("EXT_color_buffer_half_float")||Ht.has("EXT_color_buffer_float");A.state.transmissionRenderTarget[Se.id]=new fa(1,1,{generateMipmaps:!0,type:Nt?dl:Fs,minFilter:So,samples:Math.max(4,Di.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:fi.workingColorSpace})}let vt=A.state.transmissionRenderTarget[Se.id],xt=Se.viewport||q;vt.setSize(xt.z*C.transmissionResolutionScale,xt.w*C.transmissionResolutionScale);let ft=C.getRenderTarget(),Ct=C.getActiveCubeFace(),Pt=C.getActiveMipmapLevel();C.setRenderTarget(vt),C.getClearColor(H),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Ut&&Ze.render(xe);let ci=C.toneMapping;C.toneMapping=ws;let pi=Se.viewport;if(Se.viewport!==void 0&&(Se.viewport=void 0),A.setupLightsView(Se),be===!0&&At.setGlobalState(C.clippingPlanes,Se),Eh(G,xe,Se),U.updateMultisampleRenderTarget(vt),U.updateRenderTargetMipmap(vt),Ht.has("WEBGL_multisampled_render_to_texture")===!1){let Nt=!1;for(let ar=0,Br=le.length;ar0,Se.currentProgram=pi,Se.uniformsList=null,pi}function sf(G){if(G.uniformsList===null){let le=G.currentProgram.getUniforms();G.uniformsList=pm.seqWithValue(le.seq,G.uniforms)}return G.uniformsList}function WE(G,le){let xe=K.get(G);xe.outputColorSpace=le.outputColorSpace,xe.batching=le.batching,xe.batchingColor=le.batchingColor,xe.instancing=le.instancing,xe.instancingColor=le.instancingColor,xe.instancingMorph=le.instancingMorph,xe.skinning=le.skinning,xe.morphTargets=le.morphTargets,xe.morphNormals=le.morphNormals,xe.morphColors=le.morphColors,xe.morphTargetsCount=le.morphTargetsCount,xe.numClippingPlanes=le.numClippingPlanes,xe.numIntersection=le.numClipIntersection,xe.vertexAlphas=le.vertexAlphas,xe.vertexTangents=le.vertexTangents,xe.toneMapping=le.toneMapping}function zE(G,le){if(G.length===0)return null;if(G.length===1)return G[0].texture!==null?G[0]:null;T.setFromMatrixPosition(le.matrixWorld);for(let xe=0,Se=G.length;xe0),Nt=!!xe.morphAttributes.position,ar=!!xe.morphAttributes.normal,Br=!!xe.morphAttributes.color,Nr=ws;Se.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Nr=C.toneMapping);let dr=xe.morphAttributes.position||xe.morphAttributes.normal||xe.morphAttributes.color,Bn=dr!==void 0?dr.length:0,bt=K.get(Se),na=A.state.lights;if(be===!0&&(Ge===!0||G!==V)){let gr=G===V&&Se.id===B;At.setState(Se,G,gr)}let zi=!1;Se.version===bt.__version?(bt.needsLights&&bt.lightsStateVersion!==na.state.version||bt.outputColorSpace!==ft||Te.isBatchedMesh&&bt.batching===!1||!Te.isBatchedMesh&&bt.batching===!0||Te.isBatchedMesh&&bt.batchingColor===!0&&Te.colorTexture===null||Te.isBatchedMesh&&bt.batchingColor===!1&&Te.colorTexture!==null||Te.isInstancedMesh&&bt.instancing===!1||!Te.isInstancedMesh&&bt.instancing===!0||Te.isSkinnedMesh&&bt.skinning===!1||!Te.isSkinnedMesh&&bt.skinning===!0||Te.isInstancedMesh&&bt.instancingColor===!0&&Te.instanceColor===null||Te.isInstancedMesh&&bt.instancingColor===!1&&Te.instanceColor!==null||Te.isInstancedMesh&&bt.instancingMorph===!0&&Te.morphTexture===null||Te.isInstancedMesh&&bt.instancingMorph===!1&&Te.morphTexture!==null||bt.envMap!==Pt||Se.fog===!0&&bt.fog!==vt||bt.numClippingPlanes!==void 0&&(bt.numClippingPlanes!==At.numPlanes||bt.numIntersection!==At.numIntersection)||bt.vertexAlphas!==ci||bt.vertexTangents!==pi||bt.morphTargets!==Nt||bt.morphNormals!==ar||bt.morphColors!==Br||bt.toneMapping!==Nr||bt.morphTargetsCount!==Bn||!!bt.lightProbeGrid!=A.state.lightProbeGridArray.length>0)&&(zi=!0):(zi=!0,bt.__version=Se.version);let La=bt.currentProgram;zi===!0&&(La=nf(Se,le,Te),w&&Se.isNodeMaterial&&w.onUpdateProgram(Se,La,bt));let $o=!1,af=!1,Sh=!1,ur=La.getUniforms(),Ur=bt.uniforms;if(ot.useProgram(La.program)&&($o=!0,af=!0,Sh=!0),Se.id!==B&&(B=Se.id,af=!0),bt.needsLights){let gr=zE(A.state.lightProbeGridArray,Te);bt.lightProbeGrid!==gr&&(bt.lightProbeGrid=gr,af=!0)}if($o||V!==G){ot.buffers.depth.getReversed()&&G.reversedDepth!==!0&&(G._reversedDepth=!0,G.updateProjectionMatrix()),ur.setValue(oe,"projectionMatrix",G.projectionMatrix),ur.setValue(oe,"viewMatrix",G.matrixWorldInverse);let lf=ur.map.cameraPosition;lf!==void 0&&lf.setValue(oe,Ye.setFromMatrixPosition(G.matrixWorld)),Di.logarithmicDepthBuffer&&ur.setValue(oe,"logDepthBufFC",2/(Math.log(G.far+1)/Math.LN2)),(Se.isMeshPhongMaterial||Se.isMeshToonMaterial||Se.isMeshLambertMaterial||Se.isMeshBasicMaterial||Se.isMeshStandardMaterial||Se.isShaderMaterial)&&ur.setValue(oe,"isOrthographic",G.isOrthographicCamera===!0),V!==G&&(V=G,af=!0,Sh=!0)}if(bt.needsLights&&(na.state.directionalShadowMap.length>0&&ur.setValue(oe,"directionalShadowMap",na.state.directionalShadowMap,U),na.state.spotShadowMap.length>0&&ur.setValue(oe,"spotShadowMap",na.state.spotShadowMap,U),na.state.pointShadowMap.length>0&&ur.setValue(oe,"pointShadowMap",na.state.pointShadowMap,U)),Te.isSkinnedMesh){ur.setOptional(oe,Te,"bindMatrix"),ur.setOptional(oe,Te,"bindMatrixInverse");let gr=Te.skeleton;gr&&(gr.boneTexture===null&&gr.computeBoneTexture(),ur.setValue(oe,"boneTexture",gr.boneTexture,U))}Te.isBatchedMesh&&(ur.setOptional(oe,Te,"batchingTexture"),ur.setValue(oe,"batchingTexture",Te._matricesTexture,U),ur.setOptional(oe,Te,"batchingIdTexture"),ur.setValue(oe,"batchingIdTexture",Te._indirectTexture,U),ur.setOptional(oe,Te,"batchingColorTexture"),Te._colorsTexture!==null&&ur.setValue(oe,"batchingColorTexture",Te._colorsTexture,U));let of=xe.morphAttributes;if((of.position!==void 0||of.normal!==void 0||of.color!==void 0)&&Vt.update(Te,xe,La),(af||bt.receiveShadow!==Te.receiveShadow)&&(bt.receiveShadow=Te.receiveShadow,ur.setValue(oe,"receiveShadow",Te.receiveShadow)),(Se.isMeshStandardMaterial||Se.isMeshLambertMaterial||Se.isMeshPhongMaterial)&&Se.envMap===null&&le.environment!==null&&(Ur.envMapIntensity.value=le.environmentIntensity),Ur.dfgLUT!==void 0&&(Ur.dfgLUT.value=noe()),af){if(ur.setValue(oe,"toneMappingExposure",C.toneMappingExposure),bt.needsLights&&te(Ur,Sh),vt&&Se.fog===!0&&ye.refreshFogUniforms(Ur,vt),ye.refreshMaterialUniforms(Ur,Se,Ue,me,A.state.transmissionRenderTarget[G.id]),bt.needsLights&&bt.lightProbeGrid){let gr=bt.lightProbeGrid;Ur.probesSH.value=gr.texture,Ur.probesMin.value.copy(gr.boundingBox.min),Ur.probesMax.value.copy(gr.boundingBox.max),Ur.probesResolution.value.copy(gr.resolution)}pm.upload(oe,sf(bt),Ur,U)}if(Se.isShaderMaterial&&Se.uniformsNeedUpdate===!0&&(pm.upload(oe,sf(bt),Ur,U),Se.uniformsNeedUpdate=!1),Se.isSpriteMaterial&&ur.setValue(oe,"center",Te.center),ur.setValue(oe,"modelViewMatrix",Te.modelViewMatrix),ur.setValue(oe,"normalMatrix",Te.normalMatrix),ur.setValue(oe,"modelMatrix",Te.matrixWorld),Se.uniformsGroups!==void 0){let gr=Se.uniformsGroups;for(let lf=0,Th=gr.length;lf0&&U.useMultisampledRTT(G)===!1?Se=K.get(G).__webglMultisampledFramebuffer:Array.isArray(Pt)?Se=Pt[xe]:Se=Pt,q.copy(G.viewport),j.copy(G.scissor),J=G.scissorTest}else q.copy(ne).multiplyScalar(Ue).floor(),j.copy(ve).multiplyScalar(Ue).floor(),J=Ce;if(xe!==0&&(Se=Ot),ot.bindFramebuffer(oe.FRAMEBUFFER,Se)&&ot.drawBuffers(G,Se),ot.viewport(q),ot.scissor(j),ot.setScissorTest(J),Te){let ft=K.get(G.texture);oe.framebufferTexture2D(oe.FRAMEBUFFER,oe.COLOR_ATTACHMENT0,oe.TEXTURE_CUBE_MAP_POSITIVE_X+le,ft.__webglTexture,xe)}else if(vt){let ft=le;for(let Ct=0;Ct1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+ft),!Di.textureFormatReadable(ci)){kt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Di.textureTypeReadable(pi)){kt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}le>=0&&le<=G.width-Se&&xe>=0&&xe<=G.height-Te&&oe.readPixels(le,xe,Se,Te,se.convert(ci),se.convert(pi),vt)}finally{let Pt=N!==null?K.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,Pt)}}},this.readRenderTargetPixelsAsync=async function(G,le,xe,Se,Te,vt,xt,ft=0){if(!(G&&G.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ct=K.get(G).__webglFramebuffer;if(G.isWebGLCubeRenderTarget&&xt!==void 0&&(Ct=Ct[xt]),Ct)if(le>=0&&le<=G.width-Se&&xe>=0&&xe<=G.height-Te){ot.bindFramebuffer(oe.FRAMEBUFFER,Ct);let Pt=G.textures[ft],ci=Pt.format,pi=Pt.type;if(G.textures.length>1&&oe.readBuffer(oe.COLOR_ATTACHMENT0+ft),!Di.textureFormatReadable(ci))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Di.textureTypeReadable(pi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Nt=oe.createBuffer();oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Nt),oe.bufferData(oe.PIXEL_PACK_BUFFER,vt.byteLength,oe.STREAM_READ),oe.readPixels(le,xe,Se,Te,se.convert(ci),se.convert(pi),0);let ar=N!==null?K.get(N).__webglFramebuffer:null;ot.bindFramebuffer(oe.FRAMEBUFFER,ar);let Br=oe.fenceSync(oe.SYNC_GPU_COMMANDS_COMPLETE,0);return oe.flush(),await JB(oe,Br,4),oe.bindBuffer(oe.PIXEL_PACK_BUFFER,Nt),oe.getBufferSubData(oe.PIXEL_PACK_BUFFER,0,vt),oe.deleteBuffer(Nt),oe.deleteSync(Br),vt}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(G,le=null,xe=0){let Se=Math.pow(2,-xe),Te=Math.floor(G.image.width*Se),vt=Math.floor(G.image.height*Se),xt=le!==null?le.x:0,ft=le!==null?le.y:0;U.setTexture2D(G,0),oe.copyTexSubImage2D(oe.TEXTURE_2D,xe,0,0,xt,ft,Te,vt),ot.unbindTexture()};let bi=oe.createFramebuffer(),mi=oe.createFramebuffer();this.copyTextureToTexture=function(G,le,xe=null,Se=null,Te=0,vt=0){let xt,ft,Ct,Pt,ci,pi,Nt,ar,Br,Nr=G.isCompressedTexture?G.mipmaps[vt]:G.image;if(xe!==null)xt=xe.max.x-xe.min.x,ft=xe.max.y-xe.min.y,Ct=xe.isBox3?xe.max.z-xe.min.z:1,Pt=xe.min.x,ci=xe.min.y,pi=xe.isBox3?xe.min.z:0;else{let Ur=Math.pow(2,-Te);xt=Math.floor(Nr.width*Ur),ft=Math.floor(Nr.height*Ur),G.isDataArrayTexture?Ct=Nr.depth:G.isData3DTexture?Ct=Math.floor(Nr.depth*Ur):Ct=1,Pt=0,ci=0,pi=0}Se!==null?(Nt=Se.x,ar=Se.y,Br=Se.z):(Nt=0,ar=0,Br=0);let dr=se.convert(le.format),Bn=se.convert(le.type),bt;le.isData3DTexture?(U.setTexture3D(le,0),bt=oe.TEXTURE_3D):le.isDataArrayTexture||le.isCompressedArrayTexture?(U.setTexture2DArray(le,0),bt=oe.TEXTURE_2D_ARRAY):(U.setTexture2D(le,0),bt=oe.TEXTURE_2D),ot.activeTexture(oe.TEXTURE0),ot.pixelStorei(oe.UNPACK_FLIP_Y_WEBGL,le.flipY),ot.pixelStorei(oe.UNPACK_PREMULTIPLY_ALPHA_WEBGL,le.premultiplyAlpha),ot.pixelStorei(oe.UNPACK_ALIGNMENT,le.unpackAlignment);let na=ot.getParameter(oe.UNPACK_ROW_LENGTH),zi=ot.getParameter(oe.UNPACK_IMAGE_HEIGHT),La=ot.getParameter(oe.UNPACK_SKIP_PIXELS),$o=ot.getParameter(oe.UNPACK_SKIP_ROWS),af=ot.getParameter(oe.UNPACK_SKIP_IMAGES);ot.pixelStorei(oe.UNPACK_ROW_LENGTH,Nr.width),ot.pixelStorei(oe.UNPACK_IMAGE_HEIGHT,Nr.height),ot.pixelStorei(oe.UNPACK_SKIP_PIXELS,Pt),ot.pixelStorei(oe.UNPACK_SKIP_ROWS,ci),ot.pixelStorei(oe.UNPACK_SKIP_IMAGES,pi);let Sh=G.isDataArrayTexture||G.isData3DTexture,ur=le.isDataArrayTexture||le.isData3DTexture;if(G.isDepthTexture){let Ur=K.get(G),of=K.get(le),gr=K.get(Ur.__renderTarget),lf=K.get(of.__renderTarget);ot.bindFramebuffer(oe.READ_FRAMEBUFFER,gr.__webglFramebuffer),ot.bindFramebuffer(oe.DRAW_FRAMEBUFFER,lf.__webglFramebuffer);for(let Th=0;Th{us();N2={type:"change"},HI={type:"start"},F2={type:"end"},rA=new rl,w2=new wa,soe=Math.cos(70*C_.DEG2RAD),fn=new re,Bs=2*Math.PI,cr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},zI=1e-6,nA=class extends v_{constructor(e,t=null){super(e,t),this.state=cr.NONE,this.target=new re,this.cursor=new re,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:xf.ROTATE,MIDDLE:xf.DOLLY,RIGHT:xf.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 re,this._lastQuaternion=new on,this._lastTargetPosition=new re,this._quat=new on().setFromUnitVectors(e.up,new re(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new am,this._sphericalDelta=new am,this._scale=1,this._panOffset=new re,this._rotateStart=new yt,this._rotateEnd=new yt,this._rotateDelta=new yt,this._panStart=new yt,this._panEnd=new yt,this._panDelta=new yt,this._dollyStart=new yt,this._dollyEnd=new yt,this._dollyDelta=new yt,this._dollyDirection=new re,this._mouse=new yt,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=ooe.bind(this),this._onPointerDown=aoe.bind(this),this._onPointerUp=loe.bind(this),this._onContextMenu=poe.bind(this),this._onMouseWheel=doe.bind(this),this._onKeyDown=uoe.bind(this),this._onTouchStart=hoe.bind(this),this._onTouchMove=moe.bind(this),this._onMouseDown=coe.bind(this),this._onMouseMove=foe.bind(this),this._interceptControlDown=goe.bind(this),this._interceptControlUp=_oe.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(N2),this.update(),this.state=cr.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;fn.copy(t).sub(this.target),fn.applyQuaternion(this._quat),this._spherical.setFromVector3(fn),this.autoRotate&&this.state===cr.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+=Bs:i>Math.PI&&(i-=Bs),r<-Math.PI?r+=Bs:r>Math.PI&&(r-=Bs),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(fn.setFromSpherical(this._spherical),fn.applyQuaternion(this._quatInverse),t.copy(this.target).add(fn),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=fn.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 re(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 re(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=fn.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):(rA.origin.copy(this.object.position),rA.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(rA.direction))zI||8*(1-this._lastQuaternion.dot(this.object.quaternion))>zI||this._lastTargetPosition.distanceToSquared(this.target)>zI?(this.dispatchEvent(N2),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Bs/60*this.autoRotateSpeed*e:Bs/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){fn.setFromMatrixColumn(t,0),fn.multiplyScalar(-e),this._panOffset.add(fn)}_panUp(e,t){this.screenSpacePanning===!0?fn.setFromMatrixColumn(t,1):(fn.setFromMatrixColumn(t,0),fn.crossVectors(this.object.up,fn)),fn.multiplyScalar(e),this._panOffset.add(fn)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;fn.copy(r).sub(this.target);let s=fn.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(Bs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Bs*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(Bs*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(-Bs*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(Bs*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(-Bs*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(Bs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Bs*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{us();sA=class extends $d{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new Sf;e.deleteAttribute("uv");let t=new Mn({side:yn}),i=new Mn,r=new vo(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new ui(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new eu(e,i,6),o=new ir;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 ui(e,vm(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new ui(e,vm(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new ui(e,vm(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new ui(e,vm(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let u=new ui(e,vm(20));u.position.set(3.235,11.486,-12.541),u.scale.set(2.5,2,.1),this.add(u);let h=new ui(e,vm(100));h.position.set(0,20,0),h.scale.set(1,.1,1),this.add(h)}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 aA,XI,V2=y(()=>{us();aA=class extends Tn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?Eo.extractUrlBase(e):this.path,o=new Ns(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 u=f>=0?c.substring(f+1):"";if(u=u.trim(),d==="newmtl")r={name:u},a[u]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let h=u.split(s,3);r[d]=[parseFloat(h[0]),parseFloat(h[1]),parseFloat(h[2])]}else r[d]=u}let o=new XI(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},XI=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:ca,this.wrap=this.options.wrap!==void 0?this.options.wrap:tl}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=Li),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=fi.colorSpaceToWorking(new ht().fromArray(l),Li);break;case"ks":r.specular=fi.colorSpaceToWorking(new ht().fromArray(l),Li);break;case"ke":r.emissive=fi.colorSpaceToWorking(new ht().fromArray(l),Li);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 ru(r),this.materials[e]}getTextureParams(e,t){let i={scale:new yt(1,1),offset:new yt(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:ZT,o=a.getHandler(e);o===null&&(o=new su(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function Aoe(){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;k2.fromArray(r,e),YI.fromArray(r,t),W2.fromArray(r,i),Va.subVectors(W2,YI),z2.subVectors(k2,YI),Va.cross(z2),Va.normalize(),s.push(Va.x,Va.y,Va.z),s.push(Va.x,Va.y,Va.z),s.push(Va.x,Va.y,Va.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),u=this.parseVertexIndex(t,f),h=this.parseVertexIndex(i,f);if(this.addVertex(d,u,h),this.addColor(d,u,h),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),u=this.parseNormalIndex(l,m),h=this.parseNormalIndex(c,m),this.addNormal(d,u,h)}else this.addFaceNormal(d,u,h);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),u=this.parseUVIndex(s,m),h=this.parseUVIndex(a,m),this.addUV(d,u,h),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{us();voe=/^[og]\s*(.+)?/,Eoe=/^mtllib /,Soe=/^usemtl /,Toe=/^usemap /,G2=/\s+/,k2=new re,YI=new re,W2=new re,z2=new re,Va=new re,oA=new ht;lA=class extends Tn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new Ns(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 Aoe;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?(oA.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Li),t.colors.push(oA.r,oA.g,oA.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 u=c.slice(1).trim().split(V2),h=[];for(let g=0,p=u.length;g0){let v=_.split("/");h.push(v)}}let m=h[0];for(let g=1,p=h.length-1;g1){let u=r[1].trim().toLowerCase();t.object.smooth=u!=="0"&&u!=="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 oa;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&&g.setAttribute("normal",new gi(f.normals,3)),f.colors.length>0&&(m=!0,g.setAttribute("color",new gi(f.colors,3))),f.hasUVIndices===!0&&g.setAttribute("uv",new gi(f.uvs,2));let p=[];for(let v=0,E=d.length;v1){for(let v=0,E=d.length;v0){let o=new Ps({size:1,sizeAttenuation:!1}),l=new Hi;l.setAttribute("position",new gi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new gi(t.colors,3)),o.vertexColors=!0);let c=new Ds(l,o);s.add(c)}return s}}});var Us,cA,XI,H2=y(()=>{us();Us=new ht,cA=class extends Tn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new Ns(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,_=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,E="",T=v.exec(p);T!==null&&(E=T[1]);let S={comments:[],elements:[],headerLength:_,objInfo:""},A=E.split(/\r\n|\r|\n/),R;function M(I,C){let D={type:I[0]};return D.type==="list"?(D.name=I[3],D.countType=I[1],D.itemType=I[2]):D.name=I[1],D.name in C&&(D.name=C[D.name]),D}for(let I=0;IE.name);function v(E){for(let T=0,S=E.length;T0&&_.setIndex(p.indices),_.setAttribute("position",new gi(p.vertices,3)),p.normals.length>0&&_.setAttribute("normal",new gi(p.normals,3)),p.uvs.length>0&&_.setAttribute("uv",new gi(p.uvs,2)),p.colors.length>0&&_.setAttribute("color",new gi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(_=_.toNonIndexed(),p.faceVertexUvs.length>0&&_.setAttribute("uv",new gi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&_.setAttribute("color",new gi(p.faceVertexColors,3)));for(let v of Object.keys(g.customPropertyMapping))p[v].length>0&&_.setAttribute(v,new gi(p[v],g.customPropertyMapping[v].length));return _.computeBoundingSphere(),_}function c(p,_,v,E){if(_==="vertex"){p.vertices.push(v[E.attrX],v[E.attrY],v[E.attrZ]),E.attrNX!==null&&E.attrNY!==null&&E.attrNZ!==null&&p.normals.push(v[E.attrNX],v[E.attrNY],v[E.attrNZ]),E.attrS!==null&&E.attrT!==null&&p.uvs.push(v[E.attrS],v[E.attrT]),E.attrR!==null&&E.attrG!==null&&E.attrB!==null&&(Us.setRGB(v[E.attrR]/255,v[E.attrG]/255,v[E.attrB]/255,Li),p.colors.push(Us.r,Us.g,Us.b));for(let T of Object.keys(g.customPropertyMapping))for(let S of g.customPropertyMapping[T])p[T].push(v[S])}else if(_==="face"){let T=v.vertex_indices||v.vertex_index,S=v.texcoord;T.length===3?(p.indices.push(T[0],T[1],T[2]),S&&S.length===6&&(p.faceVertexUvs.push(S[0],S[1]),p.faceVertexUvs.push(S[2],S[3]),p.faceVertexUvs.push(S[4],S[5]))):T.length===4&&(p.indices.push(T[0],T[1],T[3]),p.indices.push(T[1],T[2],T[3])),E.attrR!==null&&E.attrG!==null&&E.attrB!==null&&(Us.setRGB(v[E.attrR]/255,v[E.attrG]/255,v[E.attrB]/255,Li),p.faceVertexColors.push(Us.r,Us.g,Us.b),p.faceVertexColors.push(Us.r,Us.g,Us.b),p.faceVertexColors.push(Us.r,Us.g,Us.b))}}function f(p,_){let v={},E=0;for(let T=0;T<_.length;T++){let S=_[T],A=S.valueReader;if(S.type==="list"){let R=[],M=S.countReader.read(p+E);E+=S.countReader.size;for(let I=0;IT.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>T.getUint8(R),size:1};case"int16":case"short":return{read:R=>T.getInt16(R,A),size:2};case"uint16":case"ushort":return{read:R=>T.getUint16(R,A),size:2};case"int32":case"int":return{read:R=>T.getInt32(R,A),size:4};case"uint32":case"uint":return{read:R=>T.getUint32(R,A),size:4};case"float32":case"float":return{read:R=>T.getFloat32(R,A),size:4};case"float64":case"double":return{read:R=>T.getFloat64(R,A),size:8}}}for(let T=0,S=p.length;T=this.arr.length}next(){return this.arr[this.i++]}}});var fA,X2=y(()=>{us();fA=class extends Tn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new Ns(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,u=f.getUint32(80,!0);if(80+32/8+u*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let g=0;g<5;g++)if(i(m,f,g))return!1;return!0}function i(c,f,d){for(let u=0,h=c.length;u>5&31)/31,m=(B>>10&31)/31):(u=_,h=v,m=E)}for(let B=1;B<=3;B++){let V=w+B*12,q=D*3*3+(B-1)*3;M[q]=f.getFloat32(V,!0),M[q+1]=f.getFloat32(V+4,!0),M[q+2]=f.getFloat32(V+8,!0),I[q]=k,I[q+1]=O,I[q+2]=N,g&&(C.setRGB(u,h,m,Li),p[q]=C.r,p[q+1]=C.g,p[q+2]=C.b)}}return R.setAttribute("position",new vr(M,3)),R.setAttribute("normal",new vr(I,3)),g&&(R.setAttribute("color",new vr(p,3)),R.hasColors=!0,R.alpha=T),R}function s(c){let f=new Hi,d=/solid([\s\S]*?)endsolid/g,u=/facet([\s\S]*?)endfacet/g,h=/solid\s(.+)/,m=0,g=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+g+g+g,"g"),_=new RegExp("normal"+g+g+g,"g"),v=[],E=[],T=[],S=new re,A,R=0,M=0,I=0;for(;(A=d.exec(c))!==null;){M=I;let C=A[0],D=(A=h.exec(C))!==null?A[1]:"";for(T.push(D);(A=u.exec(C))!==null;){let O=0,N=0,B=A[0];for(;(A=_.exec(B))!==null;)S.x=parseFloat(A[1]),S.y=parseFloat(A[2]),S.z=parseFloat(A[3]),N++;for(;(A=p.exec(B))!==null;)v.push(parseFloat(A[1]),parseFloat(A[2]),parseFloat(A[3])),E.push(S.x,S.y,S.z),O++,I++;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,k=I-M;f.userData.groupNames=T,f.addGroup(w,k,R),R++}return f.setAttribute("position",new gi(v,3)),f.setAttribute("normal",new gi(E,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{us()});function K2(n){let e=new Map,t=new Map,i=n.clone();return j2(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 j2(n,e,t){t(n,e);for(let i=0;i{});function Aoe(){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 zr(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function boe(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Mn({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:la})),n.DefaultMaterial}function fu(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 ml(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 Moe(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 Doe(n,e,t){let i=e.attributes,r=new kr;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 re(l[0],l[1],l[2]),new re(c[0],c[1],c[2])),o.normalized){let f=EC(Em[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 re,l=new re;for(let c=0,f=s.length;c{us();Y2();q2();N_=class extends Tn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new JI(t)}),this.register(function(t){return new eC(t)}),this.register(function(t){return new cC(t)}),this.register(function(t){return new fC(t)}),this.register(function(t){return new dC(t)}),this.register(function(t){return new iC(t)}),this.register(function(t){return new rC(t)}),this.register(function(t){return new nC(t)}),this.register(function(t){return new sC(t)}),this.register(function(t){return new $I(t)}),this.register(function(t){return new aC(t)}),this.register(function(t){return new tC(t)}),this.register(function(t){return new lC(t)}),this.register(function(t){return new oC(t)}),this.register(function(t){return new ZI(t)}),this.register(function(t){return new dA(t,Mi.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new dA(t,Mi.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new uC(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=Eo.extractUrlBase(e);a=Eo.resolveURL(c,this.path)}else a=Eo.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 Ns(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))===eU){try{a[Mi.KHR_BINARY_GLTF]=new hC(e)}catch(d){r&&r(d);return}s=JSON.parse(a[Mi.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 SC(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)})}};Mi={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=Mi.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)}},fC=class{constructor(e){this.parser=e,this.name=Mi.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)}},dC=class{constructor(e){this.parser=e,this.name=Mi.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)}},dA=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,u=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,u,r.mode,r.filter).then(function(h){return h.buffer}):a.ready.then(function(){let h=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(h),f,d,u,r.mode,r.filter),h})})}else return null}},uC=class{constructor(e){this.name=Mi.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!==Va.TRIANGLES&&c.mode!==Va.TRIANGLE_STRIP&&c.mode!==Va.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],u=c[0].count,h=[];for(let m of d){let g=new di,p=new re,_=new on,v=new re(1,1,1),E=new eu(m.geometry,m.material,u);for(let T=0;T-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new su(this.options.manager):this.textureLoader=new p_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Ns(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 fu(s,o,r),ml(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(I,A[R*l+1]),l>=3&&p.setZ(I,A[R*l+2]),l>=4&&p.setW(I,A[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 u=(s.samplers||{})[a.sampler]||{};return f.magFilter=Q2[u.magFilter]||Gr,f.minFilter=Q2[u.minFilter]||So,f.wrapS=$2[u.wrapS]||tl,f.wrapT=$2[u.wrapT]||tl,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Vr&&f.minFilter!==Gr,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 u=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(u),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(u,h){let m=u;t.isImageBitmapLoader===!0&&(m=function(g){let p=new Pr(g);p.needsUpdate=!0,u(p)}),t.load(Eo.resolveURL(d,s.path),m,void 0,h)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),ml(d,a),d.userData.mimeType=a.mimeType||Coe(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[Mi.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[Mi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[Mi.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 Ps,Wr.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 Gn,Wr.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 Mn}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[Mi.KHR_MATERIALS_UNLIT]){let d=r[Mi.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ht(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let u=d.baseColorFactor;o.color.setRGB(u[0],u[1],u[2],cs),o.opacity=u[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Li)),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(u){return u.getMaterialType&&u.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(u){return u.extendMaterialParams&&u.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ba);let f=s.alphaMode||jI.OPAQUE;if(f===jI.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===jI.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==fs&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new yt(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==fs&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==fs){let d=s.emissiveFactor;o.emissive=new ht().setRGB(d[0],d[1],d[2],cs)}return s.emissiveTexture!==void 0&&a!==fs&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Li)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),ml(d,s),t.associations.set(d,{materials:e}),s.extensions&&fu(r,d,s),d})}createUniqueName(e){let t=or.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[Mi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return J2(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&yoe(_,s),_.name=t.createUniqueName(s.name||"mesh_"+e),ml(_,s),p.extensions&&fu(r,_,p),t.assignFinalMaterial(_),d.push(_)}for(let h=0,m=d.length;h0){let h=f.userData.pivot,m=d[0];f.pivot=new re().fromArray(h),f.position.x-=h[0],f.position.y-=h[1],f.position.z-=h[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 Jh:c.length>1?f=new oa:c.length===1?f=c[0]:f=new ir,f!==c[0])for(let d=0,u=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 oa;i.name&&(s.name=r.createUniqueName(i.name)),ml(s,i),i.extensions&&fu(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[u,h]of r.associations)(u instanceof Wr||u instanceof Pr)&&d.set(u,h);return f.traverse(u=>{let h=r.associations.get(u);h!=null&&d.set(u,h)}),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(h){h.morphTargetInfluences&&l.push(h.name?h.name:h.uuid)}Cf[s.path]===Cf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(Cf[s.path]){case Cf.weights:f=sl;break;case Cf.rotation:f=al;break;case Cf.translation:case Cf.scale:f=ol;break;default:i.itemSize===1?f=sl:f=ol;break}let d=r.interpolation!==void 0?Roe[r.interpolation]:Zd,u=this._getArrayFromAccessor(i);for(let h=0,m=l.length;hms,X_OK:()=>bC,access:()=>hs,execFile:()=>pa,getRuntimeProcess:()=>Sm,mkdir:()=>Wn,osTmpdir:()=>mu,pathBasename:()=>Hn,pathDelimiter:()=>MC,pathDirname:()=>zn,pathExtname:()=>Xn,pathIsAbsolute:()=>ma,pathJoin:()=>Ji,pathNormalize:()=>woe,readFile:()=>ha,rm:()=>uu,stat:()=>hu,writeFile:()=>du});function rU(){return typeof activeWindow=="undefined"?void 0:activeWindow}function Loe(){let n=rU();if(!(!n||!("require"in n)))return n.require}function Sm(){let n=rU();if(!(!n||!("process"in n)))return n.process}function hA(n){let e=Loe();if(!e)return null;try{return e(n)}catch(t){return null}}function Tm(){return TC===void 0&&(TC=hA("node:fs/promises")),TC}function Am(){return AC===void 0&&(AC=hA("node:path")),AC}function Ooe(){return xC===void 0&&(xC=hA("node:child_process")),xC}function Noe(){return RC===void 0&&(RC=hA("node:os")),RC}function Vs(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function hs(n,e){return Vs(Tm(),"node:fs/promises").access(n,e)}function ha(n,e){return Vs(Tm(),"node:fs/promises").readFile(n,e)}function du(n,e,t){return Vs(Tm(),"node:fs/promises").writeFile(n,e,{encoding:t})}function Wn(n,e){return Vs(Tm(),"node:fs/promises").mkdir(n,e)}function uu(n,e){return Vs(Tm(),"node:fs/promises").rm(n,e)}function hu(n){return Vs(Tm(),"node:fs/promises").stat(n)}function Ji(...n){return Vs(Am(),"node:path").join(...n)}function zn(n){return Vs(Am(),"node:path").dirname(n)}function Hn(n,e){return Vs(Am(),"node:path").basename(n,e)}function Xn(n){return Vs(Am(),"node:path").extname(n)}function woe(n){return Vs(Am(),"node:path").normalize(n)}function ma(n){return Vs(Am(),"node:path").isAbsolute(n)}function pa(n,e,t,i){Vs(Ooe(),"node:child_process").execFile(n,e,t,i)}function mu(){return Vs(Noe(),"node:os").tmpdir()}var TC,AC,xC,RC,ms,bC,iU,MC,fr=y(()=>{"use strict";ms=0,bC=1;MC=((iU=Sm())==null?void 0:iU.platform)==="win32"?";":":"});function nU(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function Foe(n,e){let t=n.includes("\\")?"\\":"/",i=n.replace(/[\\/]+$/,""),r=e.replace(/^[\\/]+/,"").replace(/[\\/]/g,t);return`${i}${t}${r}`}function yC(n){return n.replace(/\\/g,"/")}function gA(n){let e=yC(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function sU(n){try{return decodeURIComponent(n)}catch(e){return n}}function In(n,e){var i;let t=sU((i=e.split(/[?#]/,1)[0])!=null?i:e);return gA(n?`${n}/${t}`:t)}function aU(n,e){return In(n.vault.configDir,e)}function w_(n){let e=yC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Gs(n){let e=yC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function dn(n){return Gs(n).replace(/\.[^.]+$/,"")}async function Boe(n,e){let t=gA(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 xm.TFile)return r;if(!(l instanceof xm.TFolder))return null;s=l.children}return null}function Uoe(n){let e=n.buffer;if(e instanceof ArrayBuffer&&n.byteOffset===0&&n.byteLength===e.byteLength)return e;let t=new Uint8Array(n.byteLength);return t.set(n),t.buffer}function Voe(){let n=new Error("File read aborted");return n.name="AbortError",n}function pA(n){if(n!=null&&n.aborted)throw n.reason instanceof Error?n.reason:Voe()}function Goe(n){let e=n.vault.adapter;return e?typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null:null}function Pf(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 sc(n,e){if(nU(e))return e;let t=Goe(n);return t?Foe(t,e):null}async function Ao(n,e,t={}){if(pA(t.signal),nU(e)){let a=await ha(e,t.signal?{signal:t.signal}:void 0);return pA(t.signal),Uoe(a)}let i=gA(sU(e)),r=n.vault.getAbstractFileByPath(i);if(!(r instanceof xm.TFile)){let a=await Boe(n,i);if(a){let o=n.vault.getAbstractFileByPath(a);if(o instanceof xm.TFile){let l=await n.vault.readBinary(o);return pA(t.signal),l}}throw new Error(`File not found: ${i}`)}let s=await n.vault.readBinary(r);return pA(t.signal),s}var xm,ps=y(()=>{"use strict";xm=require("obsidian");fr()});function pu(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function Woe(n){return koe.has(n)}function oU(n,e){let t=Number.isFinite(n)&&n>0?Math.floor(n):1;return e==="low"?1:e==="medium"?Math.min(t,4):t}function vA(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Pr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),Woe(r)&&(i.colorTextureCount++,s.colorSpace=Li,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function IC(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new re),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 koe,CC=y(()=>{"use strict";us();koe=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function zoe(n){var e,t;return n?((e=n.signal)==null?void 0:e.aborted)===!0||((t=n.isCurrent)==null?void 0:t.call(n))===!1:!1}function Ti(n){if(zoe(n))throw new EA}function Df(n){return n instanceof EA||n instanceof Error&&n.name==="AbortError"}var EA,F_=y(()=>{"use strict";EA=class extends Error{constructor(e="Preview load interrupted"){super(e),this.name="PreviewLoadInterruptedError"}}});function cU(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=Hoe[e])!=null?r:`image/${e}`}function Koe(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function PC(n){return In("",n)}function SA(n,e,t){e&&n.set(PC(e),t)}function joe(n,e,t,i,r){let s=Koe(t);SA(n,s,r),SA(n,In("",s),r),SA(n,i,r),e&&SA(n,`${e}/${s}`,r)}function qoe(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=PC(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 Zoe(n,e,t,i){let r=0,s=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:s},async()=>{for(;r{var d;Ti(i);let c=await ele(n,e,l.uri);Ti(i);let f=URL.createObjectURL(new Blob([c.data],{type:(d=l.mimeType)!=null?d:cU(c.path)}));s.push(f);for(let u of l.aliases)joe(r,e,u,c.path,f)};try{await Zoe(qoe(t),Yoe,o,i)}catch(l){for(let c of s)URL.revokeObjectURL(c);throw l}return a.setURLModifier(l=>{var f,d;let c=PC(l);return(d=(f=r.get(c))!=null?f:r.get(In("",c)))!=null?d:l}),{manager:a,dispose:()=>{for(let l of s)URL.revokeObjectURL(l)}}}function $oe(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 Joe(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 ele(n,e,t){let i=In(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function tle(n,e,t){let i=Gs(e),r=i.replace(/\.[^.]+$/,""),s=dn(t),a=[In(n,e),In(n,i)];if(s)for(let o of lU)a.push(In(n,`${s}.${o}`));for(let o of lU){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}async function fU(n,e,t,i,r){var c,f;let s=[];if(Ti(r),e==="gltf"&&t&&i){let d=new TextDecoder().decode(new Uint8Array(n)),u=JSON.parse(d),h=w_(i),m=await Qoe(t,h,u,r);Ti(r);let g=new N_(m.manager);try{Ti(r);let p=await g.parseAsync(n,h?`${h}/`:""),_=p.scene||((c=p.scenes)==null?void 0:c[0]);if(!_)throw new Error("GLTF did not contain a scene");return{scene:_,animations:p.animations,warnings:s}}finally{m.dispose()}}Ti(r);let o=await new N_().parseAsync(n,""),l=o.scene||((f=o.scenes)==null?void 0:f[0]);if(!l)throw new Error("GLB did not contain a scene");return{scene:l,animations:o.animations,warnings:s}}async function dU(n){let t=new fA().parse(n),i=t.hasAttribute("color")?new Mn({color:16777215,vertexColors:!0}):new Mn({color:13421772}),r=new ui(t,i);return r.name=Gs("")||"stl-model",r}async function uU(n){let t=new cA().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new Mn({vertexColors:!0});return new ui(t,a)}let s=new Ps({size:IC(t),vertexColors:!0});return new Ds(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new Mn({color:13421772});return new ui(t,s)}let r=new Ps({size:IC(t),color:13421772});return new Ds(t,r)}function ile(n){return n?Array.isArray(n)?n:[n]:[]}function rle(n){n.traverse(e=>{if(!(e instanceof ui))return;let t=e;for(let i of ile(t.material))vA(i,1)})}async function hU(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=$oe(a[1]),f=w_(t),d=In(f,c);try{let u=await e(d),m=new TextDecoder().decode(new Uint8Array(u)).split(` -`),g=new Map;for(let T=0;TT!=="");if(!p.some(T=>/^\s*Kd\s+/i.test(T))){let T=p.findIndex(S=>/^\s*newmtl\s+/i.test(S));p.splice(T>=0?T+1:0,0,"Kd 0.80 0.80 0.80")}let E=new aA().parse(p.join(` -`),f?`${f}/`:"");E.preload(),s=E}catch(u){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 lA;s&&o.setMaterials(s);let l=o.parse(i);return rle(l),{object:l,warnings:r}}var Hoe,lU,Xoe,Yoe,mU=y(()=>{"use strict";U2();z2();H2();X2();tU();us();ps();_A();CC();F_();Hoe={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"},lU=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Xoe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Yoe=4});function Rr(){return pU.Platform.isMobile}var pU,ga=y(()=>{"use strict";pU=require("obsidian")});function sle(){return typeof activeDocument=="undefined"?window.document:activeDocument}function gU(n){return sle().createElementNS(nle,n)}function pl(n){let e=gU("div");return n&&(e.className=n),e}function gu(n,e){let t=gU(n);return e&&(t.className=e),t}var nle,Rm=y(()=>{"use strict";nle="http://www.w3.org/1999/xhtml"});function ei(n){return{x:n.x,y:n.y,z:n.z}}function un(n){return{x:n.x,y:n.y,z:n.z}}function bm(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function B_(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function EU(n,e){let t=bm(n,e);return Math.hypot(t.x,t.y,t.z)}function DC(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:B_(n,1/e)}function _u(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function _U(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function SU(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 TU(n){return Math.max(n*.01,.01)}function Lf(n,e,t=TU(e)){return n{"use strict"});function Ga(n,e){return{min:un(n),max:un(e)}}function vu(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)}}:Ga(e.min,e.max)}function Xi(n){return bm(n.max,n.min)}function Er(n){return _u(n.min,B_(Xi(n),.5))}function AU(n){return EU(n.min,n.max)}function U_(n){return AU(n)/2}function xU(n){let e=Xi(n);return Math.max(e.x,e.y,e.z)}function LC(n){let e=Xi(n),t=AU(n);return{center:_u(n.min,B_(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var gl=y(()=>{"use strict";ks()});function OC(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:un(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 V_(n,e={}){let t=LC(n);return OC(t.center,t.radius,e)}function RU(n,e={}){var o,l,c,f,d,u;let t=LC(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:un(t.center),position:_u(t.center,{x:r,y:r*((u=e.elevationFactor)!=null?u:.65),z:r}),near:s,far:a}}var bA=y(()=>{"use strict";gl();ks()});function Ui(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var MA=y(()=>{"use strict"});function yA(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=lle({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:cle(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:un(n.boundingSize),rootName:n.rootName}}function lle(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 cle(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 ac(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:un(n.boundingSize),center:un(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 bU(n){return n.splatCount!==void 0?"Splats":"Triangles"}function MU(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var IA=y(()=>{"use strict";ks()});function ym(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function fle(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function dle(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 ule(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 yU(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:bU(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${MU(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${NC(n.boundingSize,{decimals:i})} |`]}function xo(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function NC(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 IU(n,e={}){return["| Metric | Value |","|--------|-------|",...yU(n,e)]}function hle(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...yU(e,t)]}function CA(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...hle(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} | ${xo(ym(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${xo(ym(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>ym(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(`- ${Ui(o)}`);e.push("")}return e.join(` -`)}function PA(n,e={}){var o;let t=Ui(ym((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 | ${xo(ym(n.name))} |`);let r=fle(n.source);r&&i.push(`| Source | ${xo(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${xo(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${xo(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${xo(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${xo(n.componentPath)} |`);let s=dle(n);s&&i.push(`| Format Lineage | ${xo(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${xo(ym(n.materialName))} |`),i.push(`| Bounding Size | ${NC(n.boundingSize)} |`),i.push(`| Center | ${NC(n.center,{separator:", "})} |`);let a=ule(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${xo(a)} |`),i.push(""),i.join(` -`)}var DA=y(()=>{"use strict";MA();IA()});function LA(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function OA(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function CU(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function PU(n,e,t){return!CU(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 DU(n,e,t,i,r){return!CU(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 wC=y(()=>{"use strict"});function Eu(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function mle(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function ple(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function gle(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 _le(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 vle(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!gle(n.name))return!1;let t=mle(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Ele(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=vu(e,_le(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:Eu(r),boundingSize:Xi(a),center:Er(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function Sle(n,e,t){let i=ple(n),r=t.filter(o=>vle(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,Ele(r),...a]}function NA(n){var e;return{summary:n.summary,parts:Tle(n),materialNames:Ale(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Tle(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return Sle(n.summary,n.groupedPartCandidates.parts,e)}function Ale(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 G_=y(()=>{"use strict";gl()});function k_(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function _s(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 Ro(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return Pm(n,t)}function wU(n,e,t){if(!Number.isFinite(e)||e<=ka||!Number.isFinite(t)||t<=ka)return null;let i=_s(n),r=t/e;return _s({x:i.x*r,y:i.y*r,z:i.z*r})}function BA(n,e,t){let i=_s(t);return{x:e.x+(n.x-e.x)*i.x,y:e.y+(n.y-e.y)*i.y,z:e.z+(n.z-e.z)*i.z}}function UA(n,e,t){let i=_s(t);return{x:e.x+(n.x-e.x)/i.x,y:e.y+(n.y-e.y)/i.y,z:e.z+(n.z-e.z)/i.z}}function VA(n,e){var a,o,l,c;if(!_l(n))return null;let t=null;for(let f of e.vertices)_l(f.point)&&(t=OU(t,{point:f.point,kind:"vertex",distance:kC(n,f.point),targetId:(a=f.targetId)!=null?a:e.targetId}));let i=null;for(let f of e.edges){if(!_l(f.start)||!_l(f.end))continue;let d=Dle(n,f.start,f.end);d&&(i=OU(i,{point:d,kind:"edge",distance:kC(n,d),targetId:(o=f.targetId)!=null?o:e.targetId}))}let r=Math.max((l=e.vertexRadius)!=null?l:0,0),s=t&&t.distance<=r?t:i!=null?i:t;return!s||Number.isFinite(e.maxDistance)&&s.distance>((c=e.maxDistance)!=null?c:0)?null:{point:{...s.point},kind:s.kind,distance:s.distance,targetId:s.targetId}}function GA(n,e,t){let i=new Map;for(let[r,s,a]of e){let o=[n[r],n[s],n[a]];if(o.some(c=>!c||!_l(c)))continue;let l=Ile(o[0],o[1],o[2]);for(let[c,f]of[[r,s],[s,a],[a,r]]){let d=n[c],u=n[f];if(!d||!u||!_l(d)||!_l(u)||kC(d,u)<=ka)continue;let h=yle(d,u),m=i.get(h);m?l&&m.normals.push(l):i.set(h,{start:d,end:u,normals:l?[l]:[],targetId:t})}}return Array.from(i.values()).filter(r=>!Cle(r.normals)).map(r=>({start:r.start,end:r.end,targetId:r.targetId}))}function kA(n,e){let t=[];if(e&&e.length>=3){for(let i=0;i+2{var u;return Number.isFinite(e[d])&&((u=e[d])!=null?u:0)>ka&&n[d]>ka});if(!c)return null;let f=((l=e[c])!=null?l:0)/n[c];return _s({x:f,y:f,z:f})}let a=!1,o={...r};for(let c of s){let f=e[c];Number.isFinite(f)&&(f!=null?f:0)>ka&&n[c]>ka&&(o[c]=(f!=null?f:0)/n[c],a=!0)}return a?_s(o):null}function zA(n){var t,i;let e=n.active?n.pending?"picking-end":n.targetLocked?"ready":"select-target":n.records.length>0?"reviewing":"inactive";return{active:n.active,phase:e,records:n.records,unit:k_(n.unit),scale:_s(n.scale),bounds:n.bounds,targetLocked:!!n.targetLocked,targetName:(t=n.targetName)!=null?t:null,snapKind:(i=n.snapKind)!=null?i:null}}function HA(n){let e=n.getMeasurementState();return e.active?(e.phase==="picking-end"?n.cancelMeasurement():n.toggleMeasurement(),!0):!1}function wf(n,e){if(!n)return;if(n.classList.toggle(xle,e),!e){n.classList.remove(wA),delete n.dataset.ai3dMeasurementFocusToken;return}let t=`${Date.now()}-${Math.random().toString(36).slice(2)}`;n.dataset.ai3dMeasurementFocusToken=t,n.classList.remove(wA),n.getBoundingClientRect(),n.classList.add(wA),window.setTimeout(()=>{n.dataset.ai3dMeasurementFocusToken===t&&(n.classList.remove(wA),delete n.dataset.ai3dMeasurementFocusToken)},Rle)}function XA(n,e,t,i){let r=_s(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 Pm(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function _l(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function LU(n){return[Math.round(n.x*BC),Math.round(n.y*BC),Math.round(n.z*BC)].join(",")}function yle(n,e){let t=LU(n),i=LU(e);return t=0&&n=100?1:s>=10?2:3;return`${Pm(r,a)} ${VU(i)}`}function VC(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return Pm(e,t)}function Dm(n){return{primary:Nf(n.distance,n.unit),secondary:[`X ${VC(n.absDelta.x)}`,`Y ${VC(n.absDelta.y)}`,`Z ${VC(n.absDelta.z)}`,VU(n.unit)].join(" ")}}function YA(n,e,t=oc.width,i=oc.height){n.clearRect(0,0,t,i);let r=t/2,s=i/2,a=Math.min(t-120,Math.max(250,e.primary.length*24+92)),o=78,l=(t-a)/2,c=(i-o)/2,f=s;Ole(n,l,c,a,o,4),n.fillStyle=FC.labelPlate,n.fill(),n.lineWidth=2,n.strokeStyle=FC.labelPlateBorder,n.stroke(),n.textAlign="center",n.textBaseline="middle",n.lineJoin="round",n.fillStyle=FC.labelText,n.font="700 38px 'Segoe UI', Arial, sans-serif",n.fillText(e.primary,r,f,a-72)}function Ole(n,e,t,i,r,s){if(typeof n.roundRect=="function"){n.beginPath(),n.roundRect(e,t,i,r,s);return}let a=Math.min(s,i/2,r/2);n.beginPath(),n.moveTo(e+a,t),n.lineTo(e+i-a,t),n.quadraticCurveTo(e+i,t,e+i,t+a),n.lineTo(e+i,t+r-a),n.quadraticCurveTo(e+i,t+r,e+i-a,t+r),n.lineTo(e+a,t+r),n.quadraticCurveTo(e,t+r,e,t+r-a),n.lineTo(e,t+a),n.quadraticCurveTo(e,t,e+a,t),n.closePath()}function KA(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=NU(t.start),s=NU(t.end);e.push([t.index,Nf(t.reading.distance,i),Nf(t.reading.absDelta.x,i,!1),Nf(t.reading.absDelta.y,i,!1),Nf(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` -`)}function NU(n){return`${Pm(n.x,3)}, ${Pm(n.y,3)}, ${Pm(n.z,3)}`}var FC,oc,xle,wA,Rle,GC,ka,BC,ble,Mle,W_=y(()=>{"use strict";FC={line:"#f8fafc",marker:"#f8fafc",pending:"#f59e0b",hover:"#ffffff",preview:"#e5e7eb",labelPlate:"rgba(248, 250, 252, 0.94)",labelPlateBorder:"rgba(15, 23, 42, 0.58)",labelText:"#111827",labelSecondary:"rgba(51, 65, 85, 0.82)",labelOutline:"rgba(248, 250, 252, 0.22)"},oc={width:760,height:220},xle="ai3d-measurement-active",wA="ai3d-measurement-focus-aggregation",Rle=1100,GC={um:1e-6,mm:.001,cm:.01,m:1},ka=1e-9,BC=1e6,ble=.9995,Mle={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function Nle(n){let e=typeof activeWindow=="undefined"?window:activeWindow;return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(n):e.setTimeout(()=>n(e.performance.now()),16)}function wle(n){let e=typeof activeWindow=="undefined"?window:activeWindow;if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(n);return}e.clearTimeout(n)}function qA(n){return new WC(n)}var jA,WC,zC=y(()=>{"use strict";jA=class jA{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&&(wle(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)})}};jA.DRAG_START_DISTANCE=4;WC=jA});function Wle(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function ZA(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function zle(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 GU(n,e=0){if(!Wle(n)||e>2)return[];let t=[];for(let i of kle)for(let[r,s]of Object.entries(n))ZA(r)===ZA(i)&&t.push(...GU(s,e+1));return t.push(n),t}function z_(n,e){let t=new Set(e.map(ZA));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has(ZA(r)))continue;let a=zle(s);if(a)return a}}function va(n,e={}){var c,f;let t=GU(n),i=z_(t,Fle),r=z_(t,Ble),s=z_(t,Ule),a=(c=z_(t,Gle))!=null?c:e.path,o=(f=z_(t,Vle))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Fle,Ble,Ule,Vle,Gle,kle,HC=y(()=>{"use strict";Fle=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],Ble=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],Ule=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],Vle=["displayName","partName","componentName","cadName","name"],Gle=["componentPath","cadPath","assemblyPath","occurrencePath"],kle=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function Sa(n){return n instanceof ui}function H_(n){return n instanceof Ds}function Ff(n){return Sa(n)||H_(n)}function Ws(n){return n?Array.isArray(n)?n:[n]:[]}function X_(n){var r,s,a,o;if(H_(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 Om(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function Nm(n){return n?n.name||n.type||`material-${n.uuid}`:null}function Ea(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 Lm(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(Ea(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function $r(n){let e=new kr().setFromObject(n);return Ga(ei(e.min),ei(e.max))}function kU(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,$r(t));return e}function WU(n){return Ws(n.material).map(e=>Nm(e))}function zU(n){return{name:Ea(n,H_(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:H_(n)?null:X_(n),vertexCount:Om(n),materialName:Nm(Ws(n.material)[0])}}function Hle(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:$r(n),r=Ea(n,`mesh-${n.id}`),s=va(n.userData,{name:r,path:e?Lm(e,n):r});return ac({name:JA(s,r),triangleCount:X_(n),vertexCount:Om(n),materialName:Nm(Ws(n.material)[0]),boundingSize:Xi(i),center:Er(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function XC(n,e,t){var a;if(Sa(n))return Hle(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:$r(n),r=Ea(n,`points-${n.id}`),s=va(n.userData,{name:r,path:e?Lm(e,n):r});return ac({name:JA(s,r),triangleCount:0,vertexCount:Om(n),materialName:Nm(Ws(n.material)[0]),boundingSize:Xi(i),center:Er(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function Xle(n,e){let t=[];return n.traverse(i=>{Sa(i)&&e.has(i)&&t.push(i)}),t}function wm(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 HU(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:Xle(n,e)}function Yle(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function Kle(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function XU(n,e,t,i,r){var m;if(Ff(n))return XC(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(g=>{Sa(g)&&s.add(g)});let a=HU(n,s,i),o=null,l=new Set,c=0,f=0;for(let g of a){g.updateWorldMatrix(!0,!1),o=vu(o,(m=r==null?void 0:r.get(g))!=null?m:$r(g)),c+=X_(g),f+=Om(g);for(let p of Ws(g.material)){let _=Nm(p);_&&l.add(_)}}a.length===0&&(o=$r(n));let d=o!=null?o:Ga({x:0,y:0,z:0},{x:0,y:0,z:0}),u=Ea(n,`group-${n.id}`),h=va(n.userData,{name:u,path:e?Lm(e,n):u});return ac({name:JA(h,u),triangleCount:c,vertexCount:f,materialName:Eu(l),boundingSize:Xi(d),center:Er(d),source:h.hasExplicitIdentity?"component":"group",meshNames:a.map(g=>Ea(g,`mesh-${g.id}`)),childCount:a.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function QA(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=HU(o,r,i);if(f.length>0&&f.length1&&u.trim()&&!Yle(u)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function YU(n,e,t=wm(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||Sa(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=va(o.userData,{name:Ea(o,`component-${o.id}`),path:Lm(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=va(o.userData,{name:Ea(o,`group-${o.id}`),path:Lm(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(_=>!s.has(_));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let _ of f)s.add(_);let d=null;for(let _ of f)_.updateWorldMatrix(!0,!1),d=vu(d,(p=i==null?void 0:i.get(_))!=null?p:$r(_));let u=new Set,h=0,m=0;for(let _ of f){h+=X_(_),m+=Om(_);for(let v of Ws(_.material)){let E=Nm(v);E&&u.add(E)}}let g=d!=null?d:Ga({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(ac({name:JA(c,Ea(o,`group-${o.id}`)),triangleCount:h,vertexCount:m,materialName:Eu(u),boundingSize:Xi(g),center:Er(g),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(_=>Ea(_,`mesh-${_.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function $A(n,e,t=[],i){return yA({rootName:n.name||"__root__",boundingSize:Xi(i!=null?i:$r(n)),meshes:e.map(r=>({triangleCount:X_(r),vertexCount:Om(r),materialKeys:Ws(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function KU(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=Xi(t!=null?t:$r(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){H_(d)&&o++;let u=Xi((f=i==null?void 0:i.get(d))!=null?f:$r(d)),h=Math.max(u.x,u.y,u.z);Number.isFinite(h)&&h>0&&(c=Math.min(c,h),Sa(d)&&h<=a&&h0?Number(s.toPrecision(6)):null}}function JA(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var YC=y(()=>{"use strict";us();gl();HC();G_();ks();IA()});function jle(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function qle(n,e,t=wm(n,e)){let i=new Map;for(let r of e){let s=QA(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 Zle(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function qU(n,e,t,i,r,s,a,o){return qA(new KC(n,e,t,i,r,s,a,o))}var jU,Qle,KC,ZU=y(()=>{"use strict";us();ks();zC();YC();jU=new ht(4890367),Qle=new ht(1722990),KC=class{constructor(e,t,i,r,s,a,o,l=wm(r,s)){this.meshToPart=new Map;this.raycaster=new Af;this.pointer=new yt;this.tempBox=new kr;this.tempCenter=new re;this.tempDirection=new re;this.tempCameraForward=new re;this.tempCameraRight=new re;this.tempCameraUp=new re;this.tempDragOffset=new re;this.tempNextPosition=new re;this.tempHelperDelta=new re;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=qle(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 jle(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 cl(e.object,jU),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(),Zle(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=Mm(ei(r),ei(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=Of(ei(i),ei(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&&Lf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?Qle:jU),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=RA({startPosition:ei(e.startPosition),pivot:ei(e.pivot),startRotationQuaternion:xA(e.startQuaternion),yawAxis:ei(a),pitchAxis:ei(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 ui?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=Mm(ei(e),ei(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=AA({origin:ei(this.raycaster.ray.origin),direction:ei(this.raycaster.ray.direction)},t);return a?new re(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 tce(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var $le,ex,$U=y(()=>{"use strict";$le=.242;ex=class{constructor(){this.materials=new Map}get(e){let t=ece(e),i=this.materials.get(t);if(i)return i;let r=Jle(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())tce(e);this.materials.clear()}get size(){return this.materials.size}}});function JU(n){return un(n)}function ice(n,e){return{originalPosition:JU(n),originalCenter:JU(e)}}function tx(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=ice(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,SU(s.originalPosition,t,a))}}function ix(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var jC=y(()=>{"use strict";ks()});function rx(n){return un(n)}function rce(n){return n instanceof ui}function nce(n){let e=[];return n.traverse(t=>{rce(t)&&t.geometry&&e.push(t)}),e}function eV(n,e,t){tx(new nx(n),e,t)}function qC(n){ix(new nx(n))}var nx,tV=y(()=>{"use strict";us();ks();gl();jC();nx=class{constructor(e){this.root=e}getParts(){return nce(this.root)}getRootCenter(){let e=new kr().setFromObject(this.root);return Er({min:ei(e.min),max:ei(e.max)})}getPartPosition(e){return ei(e.position)}getPartCenter(e){let i=new kr().setFromObject(e).getCenter(new re);return ei(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:rx(t._previewExplodeState.originalPosition),originalCenter:rx(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:rx(t.originalPosition),originalCenter:rx(t.originalCenter)}}}});function iV(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var sx,rV=y(()=>{"use strict";sx=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 lV={};Be(lV,{ThreeModelPreview:()=>ox,createThreeModelPreview:()=>Mce});function aV(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function Rce(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function ZC(n){return n instanceof ll||n instanceof vo||n instanceof rc}function QC(n){return n instanceof ir}function oV(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function bce(n){return Number.isFinite(n)?n.toPrecision(10):String(n)}function Mce(n){return new ox(n)}var ax,sce,ace,oce,lce,cce,nV,fce,sV,dce,uce,hce,mce,pce,gce,_ce,vce,Ece,Sce,Y_,Tce,Ace,xce,ox,cV=y(()=>{"use strict";us();F2();B2();mU();ga();Rm();gl();bA();DA();F_();wC();ks();G_();W_();ZU();$U();tV();ps();CC();rV();YC();ax=new ht("#20242e"),sce=.28,ace=2.5,oce=1.5,lce=1.15,cce=260,nV=30,fce=8,sV=28,dce=18,uce=2,hce=28,mce=.86,pce=1.08,gce=.62,_ce=.86,vce=4,Ece=120,Sce=16317180,Y_=16317180,Tce=16096779,Ace=16777215,xce=15067115;ox=class{constructor(e){this.raycaster=new Af;this.occlusionRaycaster=new Af;this.renderObservers=new Set;this.cameraZoomObservers=new Set;this.pointer=new yt;this.annotationProjection=new re;this.annotationDirection=new re;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=aV();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 sx;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 re;this.initialPosition=new re(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.measurementBaseRootScale=new re(1,1,1);this.measurementBaseBounds=null;this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementMarkerPoints=[];this.measurementTargetObject=null;this.measurementTargetHelper=null;this.measurementSnapInputCache=null;this.measurementSnapInputCacheTarget=null;this.measurementSnapInputCacheSignature=null;this.measurementSnapKind=null;this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0,altKey:!1};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new ex;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.measurementSegments.length>0&&this.updateMeasurementOverlayPositions(),this.markDirty(),this.notifyCameraZoomChanged()};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,altKey:e.altKey},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 eA({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Li,this.renderer.toneMapping=ws,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=aT,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(ax,1),this.scene=new $d,this.camera=new _r(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new nA(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.65,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,s){var l;Ti(s),this.clearLoadedModel("model-switch"),Ti(s),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=aV();let a=null,o=[];try{if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let u=await fU(e,this.loadedExt,i,r,s);a=u.scene,o=u.animations,this.resourceWarnings=u.warnings}else if(this.loadedExt==="stl")a=await dU(e),this.stlMaterial=Sa(a)?a.material:null;else if(this.loadedExt==="ply")a=await uU(e);else if(this.loadedExt==="obj"){let u=await hU(e,i,r);a=u.object,this.resourceWarnings=u.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);Ti(s),this.rootObject=a,this.scene.add(a),this.invalidateMeshCache();let c=this.getRenderableObjects(a);this.prepareModelForQuality(c),Ti(s),this.syncShadowFeatures();let f=this.getRootPreviewBounds(a);if(this.captureMeasurementBaseState(a,f),this.updateShadowFraming(f),this.syncSceneHelpers(),this.markDirty(),o.length>0){this.mixer=new g_(a);for(let u of o)this.mixer.clipAction(u).play();this.animationPlaying=!0}let d=$A(a,c,this.resourceWarnings,f!=null?f:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(a,f!=null?f:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(l=this.disassembly)==null||l.dispose(),this.disassembly=null,d}catch(c){throw a&&(a.removeFromParent(),this.rootObject===a&&(this.rootObject=null),this.lastDisposalAudit=this.disposeObjectGraph(a,"model-switch"),this.invalidateMeshCache()),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(),this.cameraZoomObservers.clear(),this.measurementObservers.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 LA({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=$A(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Gs(e)||i.rootName;return CA({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(zU)})}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=YU(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return NA({summary:$A(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>XC(l,this.rootObject,r),getMeshMaterialNames:WU,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:QC(this._lastPickResult.mesh)?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 XU(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?PA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?ei(e.pickedPoint):QC(e.mesh)?Er($r(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(qC(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 _r&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now()),this.notifyCameraZoomChanged()}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),e&&this.deactivateMeasurementMode(),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof ir&&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=Ws(t.material).map(s=>{if(s instanceof Mn){let a=new fs({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 om(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(){var t;if(this.measurementActive)return this.deactivateMeasurementMode(),!1;(t=this.disassembly)!=null&&t.isEnabled()&&this.disassembly.setEnabled(!1);let e=this.getCurrentMeasurementTargetObject();return this.clearSelectionHighlight(),this.focusSelectionEnabled&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),this.measurementActive=!0,this.setMeasurementTargetObject(e,!1),wf(this.renderer.domElement,this.measurementActive),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}cancelMeasurement(){let e=!!this.pendingPoint;this.cancelPendingMeasurement(),e&&this.notifyMeasurementsChanged()}deactivateMeasurementMode(){return this.measurementActive?(this.measurementActive=!1,wf(this.renderer.domElement,!1),this.setMeasurementTargetObject(null,!1),this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),!0):!1}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,wf(this.renderer.domElement,!1),this.setMeasurementTargetObject(null,!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.measurementMarkerPoints=[],this.markDirty(),this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=_s(e),this.invalidateMeasurementSnapInputCache(),this.applyMeasurementModelScale(),this.updateMeasurementOverlayPositions(),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=k_(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){var i;if(!this.rootObject)return null;let e=(i=this.measurementBaseBounds)!=null?i:$r(this.rootObject);return Xi(e)}getMeasurementRecords(){return this.createMeasurementRecords()}getMeasurementState(){return zA({active:this.measurementActive,pending:!!this.pendingPoint,records:this.createMeasurementRecords(),unit:this.measurementUnit,scale:this.getMeasurementScale(),bounds:this.getMeasurementBounds(),targetLocked:!!this.measurementTargetObject,targetName:this.getMeasurementTargetName(),snapKind:this.measurementSnapKind})}exportMeasurements(){return KA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t,i;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*3.2;for(let r of this.measurementSegments){this.updateMeasurementLineGeometry(r);let s=Dm(this.createMeasurementReading(r.start,r.end));r.label.removeFromParent();let a=r.label.material;(t=a.map)==null||t.dispose(),a.dispose();let o=this.createThreeMeasurementDraftingLayout(r.start,r.end),l=(i=o==null?void 0:o.labelPosition)!=null?i:new re().addVectors(this.toMeasurementDisplayPoint(r.start),this.toMeasurementDisplayPoint(r.end)).multiplyScalar(.5);r.label=this.createMeasurementLabelSprite(s,l,e),this.scene.add(r.label)}this.markDirty()}captureMeasurementBaseState(e,t){this.measurementBaseRootScale.copy(e.scale),this.measurementBaseBounds=t?Ga(t.min,t.max):null,this.measurementScale={x:1,y:1,z:1}}resetMeasurementCalibrationState(){this.measurementScale={x:1,y:1,z:1},this.measurementBaseRootScale.set(1,1,1),this.measurementBaseBounds=null,this.measurementMarkerPoints=[],this.invalidateMeasurementSnapInputCache()}applyMeasurementModelScale(){var t;if(!this.rootObject)return;this.applyRootMeasurementScale(),this.invalidateRootBoundsCache();let e=(t=this.getRootPreviewBounds())!=null?t:$r(this.rootObject);this.updateShadowFraming(e),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.removeGroundShadow(),this.removeGrid(),this.syncSceneHelpers(),this.fitCameraToObject(this.rootObject,e),this.applyRootMeasurementScale(),this.invalidateRootBoundsCache()}applyRootMeasurementScale(){if(!this.rootObject)return;let e=_s(this.measurementScale);this.rootObject.scale.set(this.measurementBaseRootScale.x*e.x,this.measurementBaseRootScale.y*e.y,this.measurementBaseRootScale.z*e.z),this.rootObject.updateMatrixWorld(!0)}getMeasurementPivot(){return this.rootObject?this.rootObject.getWorldPosition(new re):new re}toMeasurementDisplayPoint(e){let t=BA(e,this.getMeasurementPivot(),this.measurementScale);return new re(t.x,t.y,t.z)}toMeasurementBasePoint(e){let t=UA(e,this.getMeasurementPivot(),this.measurementScale);return new re(t.x,t.y,t.z)}updateMeasurementOverlayPositions(){this.updateMeasurementTargetHelper();for(let e=0;e{this.cameraZoomObservers.delete(e)}}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===ws?"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||(eV(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(qC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new re(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(),this.deactivateMeasurementMode());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=qU(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,sV),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return iV({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+cce,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=sV?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=dce?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=uce){this.frameBudgetSlowStreak=0;let t=Math.max(gce,this.frameBudgetPixelRatioScale*mce);t=hce&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*pce),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=nV){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=_ce}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 ds?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}getCameraZoomRange(){if(!this.rootObject)return null;if(this.camera instanceof ds){let s=Math.max(this.initialZoom*.25,.05),a=Math.max(this.initialZoom*6,s*2),o=Number.isFinite(this.controls.minZoom)&&this.controls.minZoom>0?this.controls.minZoom:s,l=Number.isFinite(this.controls.maxZoom)&&this.controls.maxZoom>o?this.controls.maxZoom:a;return{mode:"zoom",current:Math.max(o,Math.min(this.camera.zoom,l)),min:o,max:l}}let e=this.camera.position.distanceTo(this.controls.target),t=Math.max(e*.08,1e-5),i=Number.isFinite(this.controls.minDistance)&&this.controls.minDistance>0?this.controls.minDistance:t,r=Number.isFinite(this.controls.maxDistance)&&this.controls.maxDistance>i?this.controls.maxDistance:Math.max(e*8,i*10);return{mode:"distance",current:Math.max(i,Math.min(e,r)),min:i,max:r}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:$r(this.rootObject),t=Xi(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof ds))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 _r||e==="orthographic"&&this.camera instanceof ds))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 u=new ds(-1,1,1,-1,f,d);u.position.copy(o),u.zoom=c,u.lookAt(l),this.updateOrthographicFrustumForCamera(u,s),this.camera=u}else{let u=new _r(this.initialFov,s,f,d);u.position.copy(o),u.zoom=c,u.lookAt(l),this.camera=u}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 _r&&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(),this.notifyCameraZoomChanged()}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(ax,0);else if(this.sceneConfig.background){let t=new ht(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=ax,this.renderer.setClearColor(ax,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 sm(16777215,.96);e.name="default-global-ambient";let t=new nm(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 gm(this.renderer),t=new sA;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())},Ece))}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 ht(e.color):new ht(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new sm(t,i);case"hemisphere":{let d=e.groundColor?new ht(e.groundColor):new ht(4473924);return new nm(t,d,i)}case"directional":{let d=new ll(t,i),u=(s=e.position)!=null?s:[-1,2,1],h=(a=e.target)!=null?a:[0,0,0];return d.position.set(...u),d.target.position.set(...h),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new vo(t,i),u=(o=e.position)!=null?o:[0,5,0];return d.position.set(...u),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new rc(t,i),u=(l=e.position)!=null?l:[0,5,0],h=(c=e.target)!=null?c:[0,0,0];return d.position.set(...u),d.target.position.set(...h),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 vo(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof ll||e instanceof rc)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=oU(this.renderer.capabilities.getMaxAnisotropy(),this.quality),i=new Set;for(let r of e)for(let s of Ws(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){Rce(this.textureAudit,vA(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!ZC(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=Er(e),i=Xi(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new re(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!ZC(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 ll){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 ds){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=>ZC(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))Sa(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 om(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:$r(this.rootObject),t=Er(e),i=Xi(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 ui(new iu(s,s),new c_({color:0,opacity:sce,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 Ws(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:$r(this.rootObject),t=Er(e),i=Xi(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new __(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 Ws(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 Ws(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=Ff(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?QA(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,modifiers:{altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey}};if(this._lastPickResult=l,this.measurementActive){if(e.altKey){if(!(i!=null&&i.point))return;this.setMeasurementSnapKind("free"),this.addMeasurementPoint(i.point.clone());return}if(!this.measurementTargetObject){o&&this.setMeasurementTargetObject(o);return}let u=this.getMeasurementTargetRaycastPoint(i);if(!u){this.setMeasurementSnapKind(null);return}this.addMeasurementPoint(this.resolveMeasurementPickPoint(u,!1));return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(u=>u(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.resetMeasurementCalibrationState(),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,this.notifyCameraZoomChanged(),(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=>{Sa(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let u of Ws(f.material))this.disposeMaterialWithTextures(u,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++,Ff(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 Pr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Pr&&!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:$r(e),r=RU(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=Xi(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.controls.minZoom=.25,this.controls.maxZoom=8,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(),this.notifyCameraZoomChanged()}getAnnotationCameraStateKey(){return OA([{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 _r?this.camera.fov:this.camera.zoom,digits:this.camera instanceof _r?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),PU(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=Of(ei(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&&Lf(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{Sa(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++,Ff(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=wm(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=kU(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=KU(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=$r(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new cl(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 cl(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=Sa(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!Ff(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new cl(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()}setMeasurementTargetObject(e,t=!0){this.clearMeasurementTargetHelper(!1),this.invalidateMeasurementSnapInputCache();let i=e&&this.isObjectInLoadedRoot(e)?e:null;this.measurementTargetObject=i,this.setMeasurementSnapKind(null,!1),i&&(this.measurementTargetHelper=new cl(i,6333946),this.scene.add(this.measurementTargetHelper)),this.markDirty(),t&&this.notifyMeasurementsChanged()}clearMeasurementTargetHelper(e=!0){var t;(t=this.measurementTargetHelper)==null||t.removeFromParent(),this.measurementTargetHelper=null,e&&this.markDirty()}updateMeasurementTargetHelper(){!this.measurementTargetHelper||!this.measurementTargetObject||this.measurementTargetHelper.update()}invalidateMeasurementSnapInputCache(){this.measurementSnapInputCache=null,this.measurementSnapInputCacheTarget=null,this.measurementSnapInputCacheSignature=null}setMeasurementSnapKind(e,t=!0){this.measurementSnapKind!==e&&(this.measurementSnapKind=e,t&&this.notifyMeasurementsChanged())}getCurrentMeasurementTargetObject(){var t,i;if(!this.rootObject)return null;let e=(i=(t=this.focusedObject)!=null?t:this.highlightedObject)!=null?i:QC(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||!this.isObjectInLoadedRoot(e)?null:e}isObjectInLoadedRoot(e){if(!this.rootObject)return!1;let t=e;for(;t;){if(t===this.rootObject)return!0;t=t.parent}return!1}getMeasurementTargetName(){let e=this.measurementTargetObject;return!e||!this.isObjectInLoadedRoot(e)?null:Ea(e,e.type||`object-${e.id}`)}getMeasurementTargetBounds(){let e=this.measurementTargetObject;return!e||!this.isObjectInLoadedRoot(e)?null:(e.updateWorldMatrix(!0,!0),$r(e))}resolveMeasurementPickPoint(e,t){if(t)return this.setMeasurementSnapKind("free"),e;let i=this.createMeasurementGeometrySnapInput();if(!i)return this.setMeasurementSnapKind("free"),e;let r=VA(this.toMeasurementPoint(e),i);return r?(this.setMeasurementSnapKind(r.kind),new re(r.point.x,r.point.y,r.point.z)):(this.setMeasurementSnapKind("free"),e)}createMeasurementGeometrySnapInput(){var f,d;let e=this.measurementTargetObject;if(!e||!this.isObjectInLoadedRoot(e))return null;let t=this.getMeasurementTargetRenderables();if(t.length===0)return null;let i=this.createMeasurementSnapInputSignature(t);if(this.measurementSnapInputCache&&this.measurementSnapInputCacheTarget===e&&this.measurementSnapInputCacheSignature===i)return this.measurementSnapInputCache;let r=[],s=[],a=`three:${e.id}`;for(let u of t){let h=u.geometry.getAttribute("position");if(!h||h.count<=0)continue;u.updateWorldMatrix(!0,!1);let m=[];for(let g=0;g{var o,l,c,f;let i=t.geometry,r=i.getAttribute("position"),s=i.getIndex(),a=r&&"version"in r&&(o=r.version)!=null?o:0;return t.updateWorldMatrix(!0,!1),[t.id,i.id,(l=r==null?void 0:r.count)!=null?l:0,a,(c=s==null?void 0:s.count)!=null?c:0,(f=s==null?void 0:s.version)!=null?f:0,t.matrixWorld.elements.map(bce).join(",")].join(":")}).join("|")}getMeasurementTargetRenderables(){let e=this.measurementTargetObject;if(!this.rootObject||!e||!this.isObjectInLoadedRoot(e))return[];let t=new Set(this.getRenderableObjects(this.rootObject));if(Ff(e)&&t.has(e))return[e];let i=[];return e.traverse(r=>{Ff(r)&&r.geometry&&t.has(r)&&i.push(r)}),i}getMeasurementTargetRaycastPoint(e){let t=this.getMeasurementTargetRenderables();if(t.length===0)return null;let i=e!=null?e:this.raycaster.intersectObjects(this.rootObject?this.getRenderableObjects(this.rootObject):[],!1)[0];return i!=null&&i.point&&t.includes(i.object)?i.point.clone():null}createThreeMeasurementDraftingLayout(e,t){let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.getMeasurementMarkerSize(),a=this.camera.getWorldPosition(new re),o=new re(0,1,0).applyQuaternion(this.camera.quaternion).normalize(),l=WA(this.toMeasurementPoint(i),this.toMeasurementPoint(r),{viewPosition:this.toMeasurementPoint(a),viewUp:this.toMeasurementPoint(o),offset:s*4.2,extensionGap:s*.55,extensionOvershoot:s*.8,arrowLength:s*2.35,arrowWidth:s*.78,labelGap:s*1.05});return l?{linePoints:l.lineSegments.flatMap(([f,d])=>[new re(f.x,f.y,f.z),new re(d.x,d.y,d.z)]),labelPosition:new re(l.labelPoint.x,l.labelPoint.y,l.labelPoint.z)}:null}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:$r(this.rootObject),t=Xi(e);return Math.max(t.x,t.y,t.z,.001)*.018}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,i&&this.setMeasurementSnapKind(null,!1),this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&(this.measurementMarkers.splice(a,1),this.measurementMarkerPoints.splice(a,1)),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(Y_));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,i=this.toMeasurementDisplayPoint(e);for(let r=0;r=0?this.measurementMarkerPoints[i].clone():t;if(this.pendingPoint){if(r.distanceTo(this.pendingPoint)<1e-4)return;if(i<0){let s=this.getMeasurementMarkerSize(),a=new im(s*.38,12,12),o=new fs({color:Y_,depthTest:!1,transparent:!0,opacity:.48}),l=new ui(a,o);l.position.copy(this.toMeasurementDisplayPoint(r)),l.renderOrder=999,this.scene.add(l),this.measurementMarkers.push(l),this.measurementMarkerPoints.push(r.clone())}this.createMeasurementSegment(this.pendingPoint,r),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(Y_)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(i<0){let s=this.getMeasurementMarkerSize(),a=new im(s*.38,12,12),o=new fs({color:Y_,depthTest:!1,transparent:!0,opacity:.48}),l=new ui(a,o);l.position.copy(this.toMeasurementDisplayPoint(r)),l.renderOrder=999,this.scene.add(l),this.measurementMarkers.push(l),this.measurementMarkerPoints.push(r.clone()),this.pendingMarker=l}else this.pendingMarker=this.measurementMarkers[i];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(Tce),this.pendingPoint=r,this.ensurePreviewLine()}this.markDirty(),this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){var u,h;let i=this.createThreeMeasurementDraftingLayout(e,t),r=this.toMeasurementDisplayPoint(e),s=this.toMeasurementDisplayPoint(t),a=(u=i==null?void 0:i.linePoints)!=null?u:[r,s],o=new Hi().setFromPoints(a),l=new Cs(o,new Gn({color:Sce,transparent:!0,opacity:1,depthTest:!1,depthWrite:!1}));l.renderOrder=998,this.scene.add(l);let c=Dm(this.createMeasurementReading(e,t)),f=(h=i==null?void 0:i.labelPosition)!=null?h:new re().addVectors(r,s).multiplyScalar(.5),d=this.createMeasurementLabelSprite(c,f,this.getMeasurementMarkerSize()*3.2);this.scene.add(d),this.measurementSegments.push({start:e.clone(),end:t.clone(),line:l,label:d})}createMeasurementLabelSprite(e,t,i){let r=gu("canvas"),s=r.getContext("2d");r.width=oc.width,r.height=oc.height,YA(s,e,r.width,r.height);let a=new o_(r),o=new $h({map:a,depthTest:!1,depthWrite:!1,transparent:!0}),l=new i_(o);return l.position.copy(t),l.scale.set(i*3.7,i*1.08,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Hi().setFromPoints(Array.from({length:14},()=>new re));this.previewLine=new Cs(e,new Gn({color:xce,transparent:!0,opacity:.82,depthTest:!1,depthWrite:!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.toMeasurementDisplayPoint(this.pendingPoint),t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-t.left)/t.width*2-1,this.pointer.y=-((this.lastPointerClient.y-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=null;if(this.lastPointerClient.altKey){this.setMeasurementSnapKind("free");let o=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];i=o!=null&&o.point?this.resolveMeasurementPickPoint(o.point.clone(),!0):e.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5))}else{let o=this.getMeasurementTargetRaycastPoint();o?i=this.resolveMeasurementPickPoint(o,!1):this.setMeasurementSnapKind(null)}let r=i?this.createThreeMeasurementDraftingLayout(this.pendingPoint,this.toMeasurementBasePoint(i)):null,s=i&&r?r.linePoints:[e,e],a=this.previewLine.geometry.getAttribute("position");if(a.count!==s.length)this.previewLine.geometry.dispose(),this.previewLine.geometry=new Hi().setFromPoints(s);else{for(let o=0;othis.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 XA(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}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}}});var yce,$C,JC,ie,vi=y(()=>{yce=typeof WeakRef!="undefined",$C=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}},JC=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 $C(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new JC(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=yce?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 lx,fV=y(()=>{lx=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 dV,Vi,zs=y(()=>{vi();fV();(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"})(dV||(dV={}));Vi=class n extends lx{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)}};Vi._Counter=0});var Oe,Gi=y(()=>{vi();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,Lt=y(()=>{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 x,W=y(()=>{x=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}};x.ShadersRepository="src/Shaders/";x.ShadersStore={};x.IncludesShadersStore={};x.ShadersRepositoryWGSL="src/ShadersWGSL/";x.ShadersStoreWGSL={};x.IncludesShadersStoreWGSL={}});function Sr(){return typeof window!="undefined"}function lc(){return typeof navigator!="undefined"}function Bf(){return typeof document!="undefined"}function cx(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var Wa=y(()=>{});var fx,uV=y(()=>{fx=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 u in t)e.bindUniformBlock(u,t[u]);this.engine.getUniforms(this,i).forEach((u,h)=>{r[i[h]]=u}),this._uniforms=r;let d;for(d=0;d{a[u]=h});for(let u of c.getAttributes(this,o))l.push(u)}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 $e(n,e=!1){if(!(e&&hV[n]))return hV[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var hV,An=y(()=>{hV={}});function dx(n,e,t=""){return t+(e?e+` -`:"")+n}function ux(n,e,t,i,r,s,a){let o=a||Fm.loadFile;if(o)return o(n,e,t,i,r,s);throw $e("FileTools")}function hx(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?(oA.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Li),t.colors.push(oA.r,oA.g,oA.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 u=c.slice(1).trim().split(G2),h=[];for(let g=0,p=u.length;g0){let v=_.split("/");h.push(v)}}let m=h[0];for(let g=1,p=h.length-1;g1){let u=r[1].trim().toLowerCase();t.object.smooth=u!=="0"&&u!=="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 la;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&&g.setAttribute("normal",new gi(f.normals,3)),f.colors.length>0&&(m=!0,g.setAttribute("color",new gi(f.colors,3))),f.hasUVIndices===!0&&g.setAttribute("uv",new gi(f.uvs,2));let p=[];for(let v=0,E=d.length;v1){for(let v=0,E=d.length;v0){let o=new Ps({size:1,sizeAttenuation:!1}),l=new Hi;l.setAttribute("position",new gi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new gi(t.colors,3)),o.vertexColors=!0);let c=new Ds(l,o);s.add(c)}return s}}});var Us,cA,KI,X2=y(()=>{us();Us=new ht,cA=class extends Tn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new Ns(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,_=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,E="",T=v.exec(p);T!==null&&(E=T[1]);let S={comments:[],elements:[],headerLength:_,objInfo:""},A=E.split(/\r\n|\r|\n/),R;function M(I,C){let D={type:I[0]};return D.type==="list"?(D.name=I[3],D.countType=I[1],D.itemType=I[2]):D.name=I[1],D.name in C&&(D.name=C[D.name]),D}for(let I=0;IE.name);function v(E){for(let T=0,S=E.length;T0&&_.setIndex(p.indices),_.setAttribute("position",new gi(p.vertices,3)),p.normals.length>0&&_.setAttribute("normal",new gi(p.normals,3)),p.uvs.length>0&&_.setAttribute("uv",new gi(p.uvs,2)),p.colors.length>0&&_.setAttribute("color",new gi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(_=_.toNonIndexed(),p.faceVertexUvs.length>0&&_.setAttribute("uv",new gi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&_.setAttribute("color",new gi(p.faceVertexColors,3)));for(let v of Object.keys(g.customPropertyMapping))p[v].length>0&&_.setAttribute(v,new gi(p[v],g.customPropertyMapping[v].length));return _.computeBoundingSphere(),_}function c(p,_,v,E){if(_==="vertex"){p.vertices.push(v[E.attrX],v[E.attrY],v[E.attrZ]),E.attrNX!==null&&E.attrNY!==null&&E.attrNZ!==null&&p.normals.push(v[E.attrNX],v[E.attrNY],v[E.attrNZ]),E.attrS!==null&&E.attrT!==null&&p.uvs.push(v[E.attrS],v[E.attrT]),E.attrR!==null&&E.attrG!==null&&E.attrB!==null&&(Us.setRGB(v[E.attrR]/255,v[E.attrG]/255,v[E.attrB]/255,Li),p.colors.push(Us.r,Us.g,Us.b));for(let T of Object.keys(g.customPropertyMapping))for(let S of g.customPropertyMapping[T])p[T].push(v[S])}else if(_==="face"){let T=v.vertex_indices||v.vertex_index,S=v.texcoord;T.length===3?(p.indices.push(T[0],T[1],T[2]),S&&S.length===6&&(p.faceVertexUvs.push(S[0],S[1]),p.faceVertexUvs.push(S[2],S[3]),p.faceVertexUvs.push(S[4],S[5]))):T.length===4&&(p.indices.push(T[0],T[1],T[3]),p.indices.push(T[1],T[2],T[3])),E.attrR!==null&&E.attrG!==null&&E.attrB!==null&&(Us.setRGB(v[E.attrR]/255,v[E.attrG]/255,v[E.attrB]/255,Li),p.faceVertexColors.push(Us.r,Us.g,Us.b),p.faceVertexColors.push(Us.r,Us.g,Us.b),p.faceVertexColors.push(Us.r,Us.g,Us.b))}}function f(p,_){let v={},E=0;for(let T=0;T<_.length;T++){let S=_[T],A=S.valueReader;if(S.type==="list"){let R=[],M=S.countReader.read(p+E);E+=S.countReader.size;for(let I=0;IT.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>T.getUint8(R),size:1};case"int16":case"short":return{read:R=>T.getInt16(R,A),size:2};case"uint16":case"ushort":return{read:R=>T.getUint16(R,A),size:2};case"int32":case"int":return{read:R=>T.getInt32(R,A),size:4};case"uint32":case"uint":return{read:R=>T.getUint32(R,A),size:4};case"float32":case"float":return{read:R=>T.getFloat32(R,A),size:4};case"float64":case"double":return{read:R=>T.getFloat64(R,A),size:8}}}for(let T=0,S=p.length;T=this.arr.length}next(){return this.arr[this.i++]}}});var fA,Y2=y(()=>{us();fA=class extends Tn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new Ns(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,u=f.getUint32(80,!0);if(80+32/8+u*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let g=0;g<5;g++)if(i(m,f,g))return!1;return!0}function i(c,f,d){for(let u=0,h=c.length;u>5&31)/31,m=(B>>10&31)/31):(u=_,h=v,m=E)}for(let B=1;B<=3;B++){let V=w+B*12,q=D*3*3+(B-1)*3;M[q]=f.getFloat32(V,!0),M[q+1]=f.getFloat32(V+4,!0),M[q+2]=f.getFloat32(V+8,!0),I[q]=k,I[q+1]=O,I[q+2]=N,g&&(C.setRGB(u,h,m,Li),p[q]=C.r,p[q+1]=C.g,p[q+2]=C.b)}}return R.setAttribute("position",new vr(M,3)),R.setAttribute("normal",new vr(I,3)),g&&(R.setAttribute("color",new vr(p,3)),R.hasColors=!0,R.alpha=T),R}function s(c){let f=new Hi,d=/solid([\s\S]*?)endsolid/g,u=/facet([\s\S]*?)endfacet/g,h=/solid\s(.+)/,m=0,g=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+g+g+g,"g"),_=new RegExp("normal"+g+g+g,"g"),v=[],E=[],T=[],S=new re,A,R=0,M=0,I=0;for(;(A=d.exec(c))!==null;){M=I;let C=A[0],D=(A=h.exec(C))!==null?A[1]:"";for(T.push(D);(A=u.exec(C))!==null;){let O=0,N=0,B=A[0];for(;(A=_.exec(B))!==null;)S.x=parseFloat(A[1]),S.y=parseFloat(A[2]),S.z=parseFloat(A[3]),N++;for(;(A=p.exec(B))!==null;)v.push(parseFloat(A[1]),parseFloat(A[2]),parseFloat(A[3])),E.push(S.x,S.y,S.z),O++,I++;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,k=I-M;f.userData.groupNames=T,f.addGroup(w,k,R),R++}return f.setAttribute("position",new gi(v,3)),f.setAttribute("normal",new gi(E,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{us()});function j2(n){let e=new Map,t=new Map,i=n.clone();return q2(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 q2(n,e,t){t(n,e);for(let i=0;i{});function xoe(){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 zr(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function Moe(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Mn({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:ca})),n.DefaultMaterial}function fu(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 ml(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 yoe(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 Loe(n,e,t){let i=e.attributes,r=new kr;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 re(l[0],l[1],l[2]),new re(c[0],c[1],c[2])),o.normalized){let f=TC(Em[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 re,l=new re;for(let c=0,f=s.length;c{us();K2();Z2();N_=class extends Tn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new tC(t)}),this.register(function(t){return new iC(t)}),this.register(function(t){return new dC(t)}),this.register(function(t){return new uC(t)}),this.register(function(t){return new hC(t)}),this.register(function(t){return new nC(t)}),this.register(function(t){return new sC(t)}),this.register(function(t){return new aC(t)}),this.register(function(t){return new oC(t)}),this.register(function(t){return new eC(t)}),this.register(function(t){return new lC(t)}),this.register(function(t){return new rC(t)}),this.register(function(t){return new fC(t)}),this.register(function(t){return new cC(t)}),this.register(function(t){return new $I(t)}),this.register(function(t){return new dA(t,Mi.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new dA(t,Mi.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new mC(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=Eo.extractUrlBase(e);a=Eo.resolveURL(c,this.path)}else a=Eo.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 Ns(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))===tU){try{a[Mi.KHR_BINARY_GLTF]=new pC(e)}catch(d){r&&r(d);return}s=JSON.parse(a[Mi.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 AC(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)})}};Mi={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"},$I=class{constructor(e){this.parser=e,this.name=Mi.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)}},uC=class{constructor(e){this.parser=e,this.name=Mi.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)}},hC=class{constructor(e){this.parser=e,this.name=Mi.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)}},dA=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,u=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,u,r.mode,r.filter).then(function(h){return h.buffer}):a.ready.then(function(){let h=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(h),f,d,u,r.mode,r.filter),h})})}else return null}},mC=class{constructor(e){this.name=Mi.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!==Ga.TRIANGLES&&c.mode!==Ga.TRIANGLE_STRIP&&c.mode!==Ga.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],u=c[0].count,h=[];for(let m of d){let g=new di,p=new re,_=new on,v=new re(1,1,1),E=new eu(m.geometry,m.material,u);for(let T=0;T-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new su(this.options.manager):this.textureLoader=new p_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Ns(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 fu(s,o,r),ml(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(I,A[R*l+1]),l>=3&&p.setZ(I,A[R*l+2]),l>=4&&p.setW(I,A[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 u=(s.samplers||{})[a.sampler]||{};return f.magFilter=$2[u.magFilter]||Gr,f.minFilter=$2[u.minFilter]||So,f.wrapS=J2[u.wrapS]||tl,f.wrapT=J2[u.wrapT]||tl,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Vr&&f.minFilter!==Gr,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 u=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(u),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(u,h){let m=u;t.isImageBitmapLoader===!0&&(m=function(g){let p=new Pr(g);p.needsUpdate=!0,u(p)}),t.load(Eo.resolveURL(d,s.path),m,void 0,h)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),ml(d,a),d.userData.mimeType=a.mimeType||Poe(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[Mi.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[Mi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[Mi.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 Ps,Wr.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 Gn,Wr.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 Mn}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[Mi.KHR_MATERIALS_UNLIT]){let d=r[Mi.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ht(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let u=d.baseColorFactor;o.color.setRGB(u[0],u[1],u[2],cs),o.opacity=u[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Li)),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(u){return u.getMaterialType&&u.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(u){return u.extendMaterialParams&&u.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ua);let f=s.alphaMode||ZI.OPAQUE;if(f===ZI.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===ZI.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==fs&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new yt(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==fs&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==fs){let d=s.emissiveFactor;o.emissive=new ht().setRGB(d[0],d[1],d[2],cs)}return s.emissiveTexture!==void 0&&a!==fs&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Li)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),ml(d,s),t.associations.set(d,{materials:e}),s.extensions&&fu(r,d,s),d})}createUniqueName(e){let t=or.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[Mi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return eU(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&Ioe(_,s),_.name=t.createUniqueName(s.name||"mesh_"+e),ml(_,s),p.extensions&&fu(r,_,p),t.assignFinalMaterial(_),d.push(_)}for(let h=0,m=d.length;h0){let h=f.userData.pivot,m=d[0];f.pivot=new re().fromArray(h),f.position.x-=h[0],f.position.y-=h[1],f.position.z-=h[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 Jh:c.length>1?f=new la:c.length===1?f=c[0]:f=new ir,f!==c[0])for(let d=0,u=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 la;i.name&&(s.name=r.createUniqueName(i.name)),ml(s,i),i.extensions&&fu(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[u,h]of r.associations)(u instanceof Wr||u instanceof Pr)&&d.set(u,h);return f.traverse(u=>{let h=r.associations.get(u);h!=null&&d.set(u,h)}),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(h){h.morphTargetInfluences&&l.push(h.name?h.name:h.uuid)}Cf[s.path]===Cf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(Cf[s.path]){case Cf.weights:f=sl;break;case Cf.rotation:f=al;break;case Cf.translation:case Cf.scale:f=ol;break;default:i.itemSize===1?f=sl:f=ol;break}let d=r.interpolation!==void 0?boe[r.interpolation]:Zd,u=this._getArrayFromAccessor(i);for(let h=0,m=l.length;hms,X_OK:()=>yC,access:()=>hs,execFile:()=>ga,getRuntimeProcess:()=>Sm,mkdir:()=>Wn,osTmpdir:()=>mu,pathBasename:()=>Hn,pathDelimiter:()=>IC,pathDirname:()=>zn,pathExtname:()=>Xn,pathIsAbsolute:()=>pa,pathJoin:()=>Ji,pathNormalize:()=>Foe,readFile:()=>ma,rm:()=>uu,stat:()=>hu,writeFile:()=>du});function nU(){return typeof activeWindow=="undefined"?void 0:activeWindow}function Ooe(){let n=nU();if(!(!n||!("require"in n)))return n.require}function Sm(){let n=nU();if(!(!n||!("process"in n)))return n.process}function hA(n){let e=Ooe();if(!e)return null;try{return e(n)}catch(t){return null}}function Tm(){return xC===void 0&&(xC=hA("node:fs/promises")),xC}function Am(){return RC===void 0&&(RC=hA("node:path")),RC}function Noe(){return bC===void 0&&(bC=hA("node:child_process")),bC}function woe(){return MC===void 0&&(MC=hA("node:os")),MC}function Vs(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function hs(n,e){return Vs(Tm(),"node:fs/promises").access(n,e)}function ma(n,e){return Vs(Tm(),"node:fs/promises").readFile(n,e)}function du(n,e,t){return Vs(Tm(),"node:fs/promises").writeFile(n,e,{encoding:t})}function Wn(n,e){return Vs(Tm(),"node:fs/promises").mkdir(n,e)}function uu(n,e){return Vs(Tm(),"node:fs/promises").rm(n,e)}function hu(n){return Vs(Tm(),"node:fs/promises").stat(n)}function Ji(...n){return Vs(Am(),"node:path").join(...n)}function zn(n){return Vs(Am(),"node:path").dirname(n)}function Hn(n,e){return Vs(Am(),"node:path").basename(n,e)}function Xn(n){return Vs(Am(),"node:path").extname(n)}function Foe(n){return Vs(Am(),"node:path").normalize(n)}function pa(n){return Vs(Am(),"node:path").isAbsolute(n)}function ga(n,e,t,i){Vs(Noe(),"node:child_process").execFile(n,e,t,i)}function mu(){return Vs(woe(),"node:os").tmpdir()}var xC,RC,bC,MC,ms,yC,rU,IC,fr=y(()=>{"use strict";ms=0,yC=1;IC=((rU=Sm())==null?void 0:rU.platform)==="win32"?";":":"});function sU(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function Boe(n,e){let t=n.includes("\\")?"\\":"/",i=n.replace(/[\\/]+$/,""),r=e.replace(/^[\\/]+/,"").replace(/[\\/]/g,t);return`${i}${t}${r}`}function CC(n){return n.replace(/\\/g,"/")}function gA(n){let e=CC(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function aU(n){try{return decodeURIComponent(n)}catch(e){return n}}function In(n,e){var i;let t=aU((i=e.split(/[?#]/,1)[0])!=null?i:e);return gA(n?`${n}/${t}`:t)}function oU(n,e){return In(n.vault.configDir,e)}function w_(n){let e=CC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Gs(n){let e=CC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function dn(n){return Gs(n).replace(/\.[^.]+$/,"")}async function Uoe(n,e){let t=gA(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 xm.TFile)return r;if(!(l instanceof xm.TFolder))return null;s=l.children}return null}function Voe(n){let e=n.buffer;if(e instanceof ArrayBuffer&&n.byteOffset===0&&n.byteLength===e.byteLength)return e;let t=new Uint8Array(n.byteLength);return t.set(n),t.buffer}function Goe(){let n=new Error("File read aborted");return n.name="AbortError",n}function pA(n){if(n!=null&&n.aborted)throw n.reason instanceof Error?n.reason:Goe()}function koe(n){let e=n.vault.adapter;return e?typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null:null}function Pf(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 sc(n,e){if(sU(e))return e;let t=koe(n);return t?Boe(t,e):null}async function Ao(n,e,t={}){if(pA(t.signal),sU(e)){let a=await ma(e,t.signal?{signal:t.signal}:void 0);return pA(t.signal),Voe(a)}let i=gA(aU(e)),r=n.vault.getAbstractFileByPath(i);if(!(r instanceof xm.TFile)){let a=await Uoe(n,i);if(a){let o=n.vault.getAbstractFileByPath(a);if(o instanceof xm.TFile){let l=await n.vault.readBinary(o);return pA(t.signal),l}}throw new Error(`File not found: ${i}`)}let s=await n.vault.readBinary(r);return pA(t.signal),s}var xm,ps=y(()=>{"use strict";xm=require("obsidian");fr()});function pu(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function zoe(n){return Woe.has(n)}function lU(n,e){let t=Number.isFinite(n)&&n>0?Math.floor(n):1;return e==="low"?1:e==="medium"?Math.min(t,4):t}function vA(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Pr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),zoe(r)&&(i.colorTextureCount++,s.colorSpace=Li,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function PC(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new re),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 Woe,DC=y(()=>{"use strict";us();Woe=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function Hoe(n){var e,t;return n?((e=n.signal)==null?void 0:e.aborted)===!0||((t=n.isCurrent)==null?void 0:t.call(n))===!1:!1}function Ti(n){if(Hoe(n))throw new EA}function Df(n){return n instanceof EA||n instanceof Error&&n.name==="AbortError"}var EA,F_=y(()=>{"use strict";EA=class extends Error{constructor(e="Preview load interrupted"){super(e),this.name="PreviewLoadInterruptedError"}}});function fU(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=Xoe[e])!=null?r:`image/${e}`}function joe(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function LC(n){return In("",n)}function SA(n,e,t){e&&n.set(LC(e),t)}function qoe(n,e,t,i,r){let s=joe(t);SA(n,s,r),SA(n,In("",s),r),SA(n,i,r),e&&SA(n,`${e}/${s}`,r)}function Zoe(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=LC(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 Qoe(n,e,t,i){let r=0,s=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:s},async()=>{for(;r{var d;Ti(i);let c=await tle(n,e,l.uri);Ti(i);let f=URL.createObjectURL(new Blob([c.data],{type:(d=l.mimeType)!=null?d:fU(c.path)}));s.push(f);for(let u of l.aliases)qoe(r,e,u,c.path,f)};try{await Qoe(Zoe(t),Koe,o,i)}catch(l){for(let c of s)URL.revokeObjectURL(c);throw l}return a.setURLModifier(l=>{var f,d;let c=LC(l);return(d=(f=r.get(c))!=null?f:r.get(In("",c)))!=null?d:l}),{manager:a,dispose:()=>{for(let l of s)URL.revokeObjectURL(l)}}}function Joe(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 ele(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 tle(n,e,t){let i=In(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function ile(n,e,t){let i=Gs(e),r=i.replace(/\.[^.]+$/,""),s=dn(t),a=[In(n,e),In(n,i)];if(s)for(let o of cU)a.push(In(n,`${s}.${o}`));for(let o of cU){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}async function dU(n,e,t,i,r){var c,f;let s=[];if(Ti(r),e==="gltf"&&t&&i){let d=new TextDecoder().decode(new Uint8Array(n)),u=JSON.parse(d),h=w_(i),m=await $oe(t,h,u,r);Ti(r);let g=new N_(m.manager);try{Ti(r);let p=await g.parseAsync(n,h?`${h}/`:""),_=p.scene||((c=p.scenes)==null?void 0:c[0]);if(!_)throw new Error("GLTF did not contain a scene");return{scene:_,animations:p.animations,warnings:s}}finally{m.dispose()}}Ti(r);let o=await new N_().parseAsync(n,""),l=o.scene||((f=o.scenes)==null?void 0:f[0]);if(!l)throw new Error("GLB did not contain a scene");return{scene:l,animations:o.animations,warnings:s}}async function uU(n){let t=new fA().parse(n),i=t.hasAttribute("color")?new Mn({color:16777215,vertexColors:!0}):new Mn({color:13421772}),r=new ui(t,i);return r.name=Gs("")||"stl-model",r}async function hU(n){let t=new cA().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new Mn({vertexColors:!0});return new ui(t,a)}let s=new Ps({size:PC(t),vertexColors:!0});return new Ds(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new Mn({color:13421772});return new ui(t,s)}let r=new Ps({size:PC(t),color:13421772});return new Ds(t,r)}function rle(n){return n?Array.isArray(n)?n:[n]:[]}function nle(n){n.traverse(e=>{if(!(e instanceof ui))return;let t=e;for(let i of rle(t.material))vA(i,1)})}async function mU(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=Joe(a[1]),f=w_(t),d=In(f,c);try{let u=await e(d),m=new TextDecoder().decode(new Uint8Array(u)).split(` +`),g=new Map;for(let T=0;TT!=="");if(!p.some(T=>/^\s*Kd\s+/i.test(T))){let T=p.findIndex(S=>/^\s*newmtl\s+/i.test(S));p.splice(T>=0?T+1:0,0,"Kd 0.80 0.80 0.80")}let E=new aA().parse(p.join(` +`),f?`${f}/`:"");E.preload(),s=E}catch(u){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 lA;s&&o.setMaterials(s);let l=o.parse(i);return nle(l),{object:l,warnings:r}}var Xoe,cU,Yoe,Koe,pU=y(()=>{"use strict";V2();H2();X2();Y2();iU();us();ps();_A();DC();F_();Xoe={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"},cU=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Yoe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Koe=4});function Rr(){return gU.Platform.isMobile}var gU,_a=y(()=>{"use strict";gU=require("obsidian")});function ale(){return typeof activeDocument=="undefined"?window.document:activeDocument}function _U(n){return ale().createElementNS(sle,n)}function pl(n){let e=_U("div");return n&&(e.className=n),e}function gu(n,e){let t=_U(n);return e&&(t.className=e),t}var sle,Rm=y(()=>{"use strict";sle="http://www.w3.org/1999/xhtml"});function ei(n){return{x:n.x,y:n.y,z:n.z}}function un(n){return{x:n.x,y:n.y,z:n.z}}function bm(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function B_(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function SU(n,e){let t=bm(n,e);return Math.hypot(t.x,t.y,t.z)}function OC(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:B_(n,1/e)}function _u(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function vU(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function TU(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 AU(n){return Math.max(n*.01,.01)}function Lf(n,e,t=AU(e)){return n{"use strict"});function ka(n,e){return{min:un(n),max:un(e)}}function vu(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)}}:ka(e.min,e.max)}function Xi(n){return bm(n.max,n.min)}function Er(n){return _u(n.min,B_(Xi(n),.5))}function xU(n){return SU(n.min,n.max)}function U_(n){return xU(n)/2}function RU(n){let e=Xi(n);return Math.max(e.x,e.y,e.z)}function NC(n){let e=Xi(n),t=xU(n);return{center:_u(n.min,B_(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var gl=y(()=>{"use strict";ks()});function wC(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:un(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 V_(n,e={}){let t=NC(n);return wC(t.center,t.radius,e)}function bU(n,e={}){var o,l,c,f,d,u;let t=NC(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:un(t.center),position:_u(t.center,{x:r,y:r*((u=e.elevationFactor)!=null?u:.65),z:r}),near:s,far:a}}var bA=y(()=>{"use strict";gl();ks()});function Ui(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var MA=y(()=>{"use strict"});function yA(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=cle({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:fle(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:un(n.boundingSize),rootName:n.rootName}}function cle(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 fle(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 ac(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:un(n.boundingSize),center:un(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 MU(n){return n.splatCount!==void 0?"Splats":"Triangles"}function yU(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var IA=y(()=>{"use strict";ks()});function ym(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function dle(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function ule(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 hle(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 IU(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:MU(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${yU(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${FC(n.boundingSize,{decimals:i})} |`]}function xo(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function FC(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 CU(n,e={}){return["| Metric | Value |","|--------|-------|",...IU(n,e)]}function mle(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...IU(e,t)]}function CA(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...mle(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} | ${xo(ym(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${xo(ym(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>ym(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(`- ${Ui(o)}`);e.push("")}return e.join(` +`)}function PA(n,e={}){var o;let t=Ui(ym((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 | ${xo(ym(n.name))} |`);let r=dle(n.source);r&&i.push(`| Source | ${xo(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${xo(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${xo(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${xo(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${xo(n.componentPath)} |`);let s=ule(n);s&&i.push(`| Format Lineage | ${xo(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${xo(ym(n.materialName))} |`),i.push(`| Bounding Size | ${FC(n.boundingSize)} |`),i.push(`| Center | ${FC(n.center,{separator:", "})} |`);let a=hle(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${xo(a)} |`),i.push(""),i.join(` +`)}var DA=y(()=>{"use strict";MA();IA()});function LA(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function OA(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function PU(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function DU(n,e,t){return!PU(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 LU(n,e,t,i,r){return!PU(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 BC=y(()=>{"use strict"});function Eu(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function ple(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function gle(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function _le(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 vle(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 Ele(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!_le(n.name))return!1;let t=ple(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Sle(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=vu(e,vle(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:Eu(r),boundingSize:Xi(a),center:Er(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function Tle(n,e,t){let i=gle(n),r=t.filter(o=>Ele(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,Sle(r),...a]}function NA(n){var e;return{summary:n.summary,parts:Ale(n),materialNames:xle(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Ale(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return Tle(n.summary,n.groupedPartCandidates.parts,e)}function xle(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 G_=y(()=>{"use strict";gl()});function k_(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function _s(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 Ro(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return Pm(n,t)}function FU(n,e,t){if(!Number.isFinite(e)||e<=Ws||!Number.isFinite(t)||t<=Ws)return null;let i=_s(n),r=t/e;return _s({x:i.x*r,y:i.y*r,z:i.z*r})}function UA(n,e,t){let i=_s(t);return{x:e.x+(n.x-e.x)*i.x,y:e.y+(n.y-e.y)*i.y,z:e.z+(n.z-e.z)*i.z}}function VA(n,e,t){let i=_s(t);return{x:e.x+(n.x-e.x)/i.x,y:e.y+(n.y-e.y)/i.y,z:e.z+(n.z-e.z)/i.z}}function GA(n,e){var a,o,l,c;if(!_l(n))return null;let t=null;for(let f of e.vertices)_l(f.point)&&(t=NU(t,{point:f.point,kind:"vertex",distance:FA(n,f.point),targetId:(a=f.targetId)!=null?a:e.targetId}));let i=null;for(let f of e.edges){if(!_l(f.start)||!_l(f.end))continue;let d=Nle(n,f.start,f.end);d&&(i=NU(i,{point:d,kind:"edge",distance:FA(n,d),targetId:(o=f.targetId)!=null?o:e.targetId}))}let r=Math.max((l=e.vertexRadius)!=null?l:0,0),s=t&&t.distance<=r?t:i!=null?i:t;return!s||Number.isFinite(e.maxDistance)&&s.distance>((c=e.maxDistance)!=null?c:0)?null:{point:{...s.point},kind:s.kind,distance:s.distance,targetId:s.targetId}}function kA(n,e){let i=Math.max(n.x,n.y,n.z,.001)*yle,r=e.map(a=>FA(a.start,a.end)).filter(a=>Number.isFinite(a)&&a>Ws).sort((a,o)=>a-o);if(r.length===0)return i;let s=r[Math.floor(r.length/2)];return Math.max(Math.min(i,s*Ile),Ws)}function WA(n,e,t){let i=new Map;for(let[r,s,a]of e){let o=[n[r],n[s],n[a]];if(o.some(c=>!c||!_l(c)))continue;let l=Dle(o[0],o[1],o[2]);for(let[c,f]of[[r,s],[s,a],[a,r]]){let d=n[c],u=n[f];if(!d||!u||!_l(d)||!_l(u)||FA(d,u)<=Ws)continue;let h=Ple(d,u),m=i.get(h);m?l&&m.normals.push(l):i.set(h,{start:d,end:u,normals:l?[l]:[],targetId:t})}}return Array.from(i.values()).filter(r=>!Lle(r.normals)).map(r=>({start:r.start,end:r.end,targetId:r.targetId}))}function zA(n,e){let t=[];if(e&&e.length>=3){for(let i=0;i+2{var u;return Number.isFinite(e[d])&&((u=e[d])!=null?u:0)>Ws&&n[d]>Ws});if(!c)return null;let f=((l=e[c])!=null?l:0)/n[c];return _s({x:f,y:f,z:f})}let a=!1,o={...r};for(let c of s){let f=e[c];Number.isFinite(f)&&(f!=null?f:0)>Ws&&n[c]>Ws&&(o[c]=(f!=null?f:0)/n[c],a=!0)}return a?_s(o):null}function XA(n){var t,i;let e=n.active?n.pending?"picking-end":n.targetLocked?"ready":"select-target":n.records.length>0?"reviewing":"inactive";return{active:n.active,phase:e,records:n.records,unit:k_(n.unit),scale:_s(n.scale),bounds:n.bounds,targetLocked:!!n.targetLocked,targetName:(t=n.targetName)!=null?t:null,snapKind:(i=n.snapKind)!=null?i:null}}function YA(n){let e=n.getMeasurementState();return e.active?(e.phase==="picking-end"?n.cancelMeasurement():n.toggleMeasurement(),!0):!1}function wf(n,e){if(!n)return;if(n.classList.toggle(Rle,e),!e){n.classList.remove(wA),delete n.dataset.ai3dMeasurementFocusToken;return}let t=`${Date.now()}-${Math.random().toString(36).slice(2)}`;n.dataset.ai3dMeasurementFocusToken=t,n.classList.remove(wA),n.getBoundingClientRect(),n.classList.add(wA),window.setTimeout(()=>{n.dataset.ai3dMeasurementFocusToken===t&&(n.classList.remove(wA),delete n.dataset.ai3dMeasurementFocusToken)},ble)}function KA(n,e,t,i){let r=_s(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 Pm(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function _l(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function OU(n){return[Math.round(n.x*VC),Math.round(n.y*VC),Math.round(n.z*VC)].join(",")}function Ple(n,e){let t=OU(n),i=OU(e);return t=0&&n=100?1:s>=10?2:3;return`${Pm(r,a)} ${GU(i)}`}function kC(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return Pm(e,t)}function Dm(n){return{primary:Nf(n.distance,n.unit),secondary:[`X ${kC(n.absDelta.x)}`,`Y ${kC(n.absDelta.y)}`,`Z ${kC(n.absDelta.z)}`,GU(n.unit)].join(" ")}}function jA(n,e,t=oc.width,i=oc.height){n.clearRect(0,0,t,i);let r=t/2,s=i/2,a=Math.min(t-120,Math.max(250,e.primary.length*24+92)),o=78,l=(t-a)/2,c=(i-o)/2,f=s;Fle(n,l,c,a,o,4),n.fillStyle=UC.labelPlate,n.fill(),n.lineWidth=2,n.strokeStyle=UC.labelPlateBorder,n.stroke(),n.textAlign="center",n.textBaseline="middle",n.lineJoin="round",n.fillStyle=UC.labelText,n.font="700 38px 'Segoe UI', Arial, sans-serif",n.fillText(e.primary,r,f,a-72)}function Fle(n,e,t,i,r,s){if(typeof n.roundRect=="function"){n.beginPath(),n.roundRect(e,t,i,r,s);return}let a=Math.min(s,i/2,r/2);n.beginPath(),n.moveTo(e+a,t),n.lineTo(e+i-a,t),n.quadraticCurveTo(e+i,t,e+i,t+a),n.lineTo(e+i,t+r-a),n.quadraticCurveTo(e+i,t+r,e+i-a,t+r),n.lineTo(e+a,t+r),n.quadraticCurveTo(e,t+r,e,t+r-a),n.lineTo(e,t+a),n.quadraticCurveTo(e,t,e+a,t),n.closePath()}function qA(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=wU(t.start),s=wU(t.end);e.push([t.index,Nf(t.reading.distance,i),Nf(t.reading.absDelta.x,i,!1),Nf(t.reading.absDelta.y,i,!1),Nf(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` +`)}function wU(n){return`${Pm(n.x,3)}, ${Pm(n.y,3)}, ${Pm(n.z,3)}`}var UC,oc,Rle,wA,ble,WC,Ws,VC,Mle,yle,Ile,Cle,W_=y(()=>{"use strict";UC={line:"#f8fafc",marker:"#f8fafc",pending:"#f59e0b",hover:"#ffffff",preview:"#e5e7eb",labelPlate:"rgba(248, 250, 252, 0.94)",labelPlateBorder:"rgba(15, 23, 42, 0.58)",labelText:"#111827",labelSecondary:"rgba(51, 65, 85, 0.82)",labelOutline:"rgba(248, 250, 252, 0.22)"},oc={width:760,height:220},Rle="ai3d-measurement-active",wA="ai3d-measurement-focus-aggregation",ble=1100,WC={um:1e-6,mm:.001,cm:.01,m:1},Ws=1e-9,VC=1e6,Mle=.9995,yle=.045,Ile=.1,Cle={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function Ble(n){let e=typeof activeWindow=="undefined"?window:activeWindow;return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(n):e.setTimeout(()=>n(e.performance.now()),16)}function Ule(n){let e=typeof activeWindow=="undefined"?window:activeWindow;if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(n);return}e.clearTimeout(n)}function QA(n){return new zC(n)}var ZA,zC,HC=y(()=>{"use strict";ZA=class ZA{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&&(Ule(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)})}};ZA.DRAG_START_DISTANCE=4;zC=ZA});function Xle(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function $A(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function Yle(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 kU(n,e=0){if(!Xle(n)||e>2)return[];let t=[];for(let i of Hle)for(let[r,s]of Object.entries(n))$A(r)===$A(i)&&t.push(...kU(s,e+1));return t.push(n),t}function z_(n,e){let t=new Set(e.map($A));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has($A(r)))continue;let a=Yle(s);if(a)return a}}function Ea(n,e={}){var c,f;let t=kU(n),i=z_(t,Vle),r=z_(t,Gle),s=z_(t,kle),a=(c=z_(t,zle))!=null?c:e.path,o=(f=z_(t,Wle))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Vle,Gle,kle,Wle,zle,Hle,XC=y(()=>{"use strict";Vle=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],Gle=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],kle=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],Wle=["displayName","partName","componentName","cadName","name"],zle=["componentPath","cadPath","assemblyPath","occurrencePath"],Hle=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function Ta(n){return n instanceof ui}function H_(n){return n instanceof Ds}function Ff(n){return Ta(n)||H_(n)}function zs(n){return n?Array.isArray(n)?n:[n]:[]}function X_(n){var r,s,a,o;if(H_(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 Om(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function Nm(n){return n?n.name||n.type||`material-${n.uuid}`:null}function Sa(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 Lm(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(Sa(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function $r(n){let e=new kr().setFromObject(n);return ka(ei(e.min),ei(e.max))}function WU(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,$r(t));return e}function zU(n){return zs(n.material).map(e=>Nm(e))}function HU(n){return{name:Sa(n,H_(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:H_(n)?null:X_(n),vertexCount:Om(n),materialName:Nm(zs(n.material)[0])}}function Kle(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:$r(n),r=Sa(n,`mesh-${n.id}`),s=Ea(n.userData,{name:r,path:e?Lm(e,n):r});return ac({name:tx(s,r),triangleCount:X_(n),vertexCount:Om(n),materialName:Nm(zs(n.material)[0]),boundingSize:Xi(i),center:Er(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function YC(n,e,t){var a;if(Ta(n))return Kle(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:$r(n),r=Sa(n,`points-${n.id}`),s=Ea(n.userData,{name:r,path:e?Lm(e,n):r});return ac({name:tx(s,r),triangleCount:0,vertexCount:Om(n),materialName:Nm(zs(n.material)[0]),boundingSize:Xi(i),center:Er(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function jle(n,e){let t=[];return n.traverse(i=>{Ta(i)&&e.has(i)&&t.push(i)}),t}function wm(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 XU(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:jle(n,e)}function qle(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function Zle(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function YU(n,e,t,i,r){var m;if(Ff(n))return YC(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(g=>{Ta(g)&&s.add(g)});let a=XU(n,s,i),o=null,l=new Set,c=0,f=0;for(let g of a){g.updateWorldMatrix(!0,!1),o=vu(o,(m=r==null?void 0:r.get(g))!=null?m:$r(g)),c+=X_(g),f+=Om(g);for(let p of zs(g.material)){let _=Nm(p);_&&l.add(_)}}a.length===0&&(o=$r(n));let d=o!=null?o:ka({x:0,y:0,z:0},{x:0,y:0,z:0}),u=Sa(n,`group-${n.id}`),h=Ea(n.userData,{name:u,path:e?Lm(e,n):u});return ac({name:tx(h,u),triangleCount:c,vertexCount:f,materialName:Eu(l),boundingSize:Xi(d),center:Er(d),source:h.hasExplicitIdentity?"component":"group",meshNames:a.map(g=>Sa(g,`mesh-${g.id}`)),childCount:a.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function JA(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=XU(o,r,i);if(f.length>0&&f.length1&&u.trim()&&!qle(u)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function KU(n,e,t=wm(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||Ta(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=Ea(o.userData,{name:Sa(o,`component-${o.id}`),path:Lm(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=Ea(o.userData,{name:Sa(o,`group-${o.id}`),path:Lm(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(_=>!s.has(_));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let _ of f)s.add(_);let d=null;for(let _ of f)_.updateWorldMatrix(!0,!1),d=vu(d,(p=i==null?void 0:i.get(_))!=null?p:$r(_));let u=new Set,h=0,m=0;for(let _ of f){h+=X_(_),m+=Om(_);for(let v of zs(_.material)){let E=Nm(v);E&&u.add(E)}}let g=d!=null?d:ka({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(ac({name:tx(c,Sa(o,`group-${o.id}`)),triangleCount:h,vertexCount:m,materialName:Eu(u),boundingSize:Xi(g),center:Er(g),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(_=>Sa(_,`mesh-${_.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function ex(n,e,t=[],i){return yA({rootName:n.name||"__root__",boundingSize:Xi(i!=null?i:$r(n)),meshes:e.map(r=>({triangleCount:X_(r),vertexCount:Om(r),materialKeys:zs(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function jU(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=Xi(t!=null?t:$r(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){H_(d)&&o++;let u=Xi((f=i==null?void 0:i.get(d))!=null?f:$r(d)),h=Math.max(u.x,u.y,u.z);Number.isFinite(h)&&h>0&&(c=Math.min(c,h),Ta(d)&&h<=a&&h0?Number(s.toPrecision(6)):null}}function tx(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var KC=y(()=>{"use strict";us();gl();XC();G_();ks();IA()});function Qle(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function $le(n,e,t=wm(n,e)){let i=new Map;for(let r of e){let s=JA(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 Jle(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function ZU(n,e,t,i,r,s,a,o){return QA(new jC(n,e,t,i,r,s,a,o))}var qU,ece,jC,QU=y(()=>{"use strict";us();ks();HC();KC();qU=new ht(4890367),ece=new ht(1722990),jC=class{constructor(e,t,i,r,s,a,o,l=wm(r,s)){this.meshToPart=new Map;this.raycaster=new Af;this.pointer=new yt;this.tempBox=new kr;this.tempCenter=new re;this.tempDirection=new re;this.tempCameraForward=new re;this.tempCameraRight=new re;this.tempCameraUp=new re;this.tempDragOffset=new re;this.tempNextPosition=new re;this.tempHelperDelta=new re;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=$le(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 Qle(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 cl(e.object,qU),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(),Jle(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=Mm(ei(r),ei(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=Of(ei(i),ei(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&&Lf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?ece:qU),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=RA({startPosition:ei(e.startPosition),pivot:ei(e.pivot),startRotationQuaternion:xA(e.startQuaternion),yawAxis:ei(a),pitchAxis:ei(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 ui?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=Mm(ei(e),ei(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=AA({origin:ei(this.raycaster.ray.origin),direction:ei(this.raycaster.ray.direction)},t);return a?new re(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 nce(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var tce,ix,JU=y(()=>{"use strict";tce=.242;ix=class{constructor(){this.materials=new Map}get(e){let t=rce(e),i=this.materials.get(t);if(i)return i;let r=ice(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())nce(e);this.materials.clear()}get size(){return this.materials.size}}});function eV(n){return un(n)}function sce(n,e){return{originalPosition:eV(n),originalCenter:eV(e)}}function rx(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=sce(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,TU(s.originalPosition,t,a))}}function nx(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var qC=y(()=>{"use strict";ks()});function sx(n){return un(n)}function ace(n){return n instanceof ui}function oce(n){let e=[];return n.traverse(t=>{ace(t)&&t.geometry&&e.push(t)}),e}function tV(n,e,t){rx(new ax(n),e,t)}function ZC(n){nx(new ax(n))}var ax,iV=y(()=>{"use strict";us();ks();gl();qC();ax=class{constructor(e){this.root=e}getParts(){return oce(this.root)}getRootCenter(){let e=new kr().setFromObject(this.root);return Er({min:ei(e.min),max:ei(e.max)})}getPartPosition(e){return ei(e.position)}getPartCenter(e){let i=new kr().setFromObject(e).getCenter(new re);return ei(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:sx(t._previewExplodeState.originalPosition),originalCenter:sx(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:sx(t.originalPosition),originalCenter:sx(t.originalCenter)}}}});function rV(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var ox,nV=y(()=>{"use strict";ox=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 cV={};Be(cV,{ThreeModelPreview:()=>cx,createThreeModelPreview:()=>Cce});function oV(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function yce(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function QC(n){return n instanceof ll||n instanceof vo||n instanceof rc}function $C(n){return n instanceof ir}function lV(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function Ice(n){return Number.isFinite(n)?n.toPrecision(10):String(n)}function Cce(n){return new cx(n)}var lx,lce,cce,fce,dce,uce,sV,hce,aV,mce,pce,gce,_ce,vce,Ece,Sce,Tce,Ace,xce,Y_,Rce,bce,Mce,cx,fV=y(()=>{"use strict";us();B2();U2();pU();_a();Rm();gl();bA();DA();F_();BC();ks();G_();W_();QU();JU();iV();ps();DC();nV();KC();lx=new ht("#20242e"),lce=.28,cce=2.5,fce=1.5,dce=1.15,uce=260,sV=30,hce=8,aV=28,mce=18,pce=2,gce=28,_ce=.86,vce=1.08,Ece=.62,Sce=.86,Tce=4,Ace=120,xce=16317180,Y_=16317180,Rce=16096779,bce=16777215,Mce=15067115;cx=class{constructor(e){this.raycaster=new Af;this.occlusionRaycaster=new Af;this.renderObservers=new Set;this.cameraZoomObservers=new Set;this.pointer=new yt;this.annotationProjection=new re;this.annotationDirection=new re;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=oV();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 ox;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 re;this.initialPosition=new re(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.measurementBaseRootScale=new re(1,1,1);this.measurementBaseBounds=null;this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementMarkerPoints=[];this.measurementTargetObject=null;this.measurementTargetHelper=null;this.measurementSnapInputCache=null;this.measurementSnapInputCacheTarget=null;this.measurementSnapInputCacheSignature=null;this.measurementSnapKind=null;this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0,altKey:!1};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new ix;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.measurementSegments.length>0&&this.updateMeasurementOverlayPositions(),this.markDirty(),this.notifyCameraZoomChanged()};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,altKey:e.altKey},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 eA({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Li,this.renderer.toneMapping=ws,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=aT,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(lx,1),this.scene=new $d,this.camera=new _r(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new nA(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.65,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,s){var l;Ti(s),this.clearLoadedModel("model-switch"),Ti(s),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=oV();let a=null,o=[];try{if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let u=await dU(e,this.loadedExt,i,r,s);a=u.scene,o=u.animations,this.resourceWarnings=u.warnings}else if(this.loadedExt==="stl")a=await uU(e),this.stlMaterial=Ta(a)?a.material:null;else if(this.loadedExt==="ply")a=await hU(e);else if(this.loadedExt==="obj"){let u=await mU(e,i,r);a=u.object,this.resourceWarnings=u.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);Ti(s),this.rootObject=a,this.scene.add(a),this.invalidateMeshCache();let c=this.getRenderableObjects(a);this.prepareModelForQuality(c),Ti(s),this.syncShadowFeatures();let f=this.getRootPreviewBounds(a);if(this.captureMeasurementBaseState(a,f),this.updateShadowFraming(f),this.syncSceneHelpers(),this.markDirty(),o.length>0){this.mixer=new g_(a);for(let u of o)this.mixer.clipAction(u).play();this.animationPlaying=!0}let d=ex(a,c,this.resourceWarnings,f!=null?f:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(a,f!=null?f:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(l=this.disassembly)==null||l.dispose(),this.disassembly=null,d}catch(c){throw a&&(a.removeFromParent(),this.rootObject===a&&(this.rootObject=null),this.lastDisposalAudit=this.disposeObjectGraph(a,"model-switch"),this.invalidateMeshCache()),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(),this.cameraZoomObservers.clear(),this.measurementObservers.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 LA({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=ex(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Gs(e)||i.rootName;return CA({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(HU)})}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=KU(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return NA({summary:ex(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>YC(l,this.rootObject,r),getMeshMaterialNames:zU,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:$C(this._lastPickResult.mesh)?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 YU(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?PA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?ei(e.pickedPoint):$C(e.mesh)?Er($r(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(ZC(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 _r&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now()),this.notifyCameraZoomChanged()}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),e&&this.deactivateMeasurementMode(),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof ir&&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=zs(t.material).map(s=>{if(s instanceof Mn){let a=new fs({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 om(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(){var t;if(this.measurementActive)return this.deactivateMeasurementMode(),!1;(t=this.disassembly)!=null&&t.isEnabled()&&this.disassembly.setEnabled(!1);let e=this.getCurrentMeasurementTargetObject();return this.clearSelectionHighlight(),this.focusSelectionEnabled&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),this.measurementActive=!0,this.setMeasurementTargetObject(e,!1),wf(this.renderer.domElement,this.measurementActive),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}cancelMeasurement(){let e=!!this.pendingPoint;this.cancelPendingMeasurement(),e&&this.notifyMeasurementsChanged()}deactivateMeasurementMode(){return this.measurementActive?(this.measurementActive=!1,wf(this.renderer.domElement,!1),this.setMeasurementTargetObject(null,!1),this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),!0):!1}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,wf(this.renderer.domElement,!1),this.setMeasurementTargetObject(null,!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.measurementMarkerPoints=[],this.markDirty(),this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=_s(e),this.invalidateMeasurementSnapInputCache(),this.applyMeasurementModelScale(),this.updateMeasurementOverlayPositions(),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=k_(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){var i;if(!this.rootObject)return null;let e=(i=this.measurementBaseBounds)!=null?i:$r(this.rootObject);return Xi(e)}getMeasurementRecords(){return this.createMeasurementRecords()}getMeasurementState(){return XA({active:this.measurementActive,pending:!!this.pendingPoint,records:this.createMeasurementRecords(),unit:this.measurementUnit,scale:this.getMeasurementScale(),bounds:this.getMeasurementBounds(),targetLocked:!!this.measurementTargetObject,targetName:this.getMeasurementTargetName(),snapKind:this.measurementSnapKind})}exportMeasurements(){return qA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t,i;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*3.2;for(let r of this.measurementSegments){this.updateMeasurementLineGeometry(r);let s=Dm(this.createMeasurementReading(r.start,r.end));r.label.removeFromParent();let a=r.label.material;(t=a.map)==null||t.dispose(),a.dispose();let o=this.createThreeMeasurementDraftingLayout(r.start,r.end),l=(i=o==null?void 0:o.labelPosition)!=null?i:new re().addVectors(this.toMeasurementDisplayPoint(r.start),this.toMeasurementDisplayPoint(r.end)).multiplyScalar(.5);r.label=this.createMeasurementLabelSprite(s,l,e),this.scene.add(r.label)}this.markDirty()}captureMeasurementBaseState(e,t){this.measurementBaseRootScale.copy(e.scale),this.measurementBaseBounds=t?ka(t.min,t.max):null,this.measurementScale={x:1,y:1,z:1}}resetMeasurementCalibrationState(){this.measurementScale={x:1,y:1,z:1},this.measurementBaseRootScale.set(1,1,1),this.measurementBaseBounds=null,this.measurementMarkerPoints=[],this.invalidateMeasurementSnapInputCache()}applyMeasurementModelScale(){var t;if(!this.rootObject)return;this.applyRootMeasurementScale(),this.invalidateRootBoundsCache();let e=(t=this.getRootPreviewBounds())!=null?t:$r(this.rootObject);this.updateShadowFraming(e),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.removeGroundShadow(),this.removeGrid(),this.syncSceneHelpers(),this.fitCameraToObject(this.rootObject,e),this.applyRootMeasurementScale(),this.invalidateRootBoundsCache()}applyRootMeasurementScale(){if(!this.rootObject)return;let e=_s(this.measurementScale);this.rootObject.scale.set(this.measurementBaseRootScale.x*e.x,this.measurementBaseRootScale.y*e.y,this.measurementBaseRootScale.z*e.z),this.rootObject.updateMatrixWorld(!0)}getMeasurementPivot(){return this.rootObject?this.rootObject.getWorldPosition(new re):new re}toMeasurementDisplayPoint(e){let t=UA(e,this.getMeasurementPivot(),this.measurementScale);return new re(t.x,t.y,t.z)}toMeasurementBasePoint(e){let t=VA(e,this.getMeasurementPivot(),this.measurementScale);return new re(t.x,t.y,t.z)}updateMeasurementOverlayPositions(){this.updateMeasurementTargetHelper();for(let e=0;e{this.cameraZoomObservers.delete(e)}}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===ws?"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||(tV(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(ZC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new re(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(),this.deactivateMeasurementMode());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=ZU(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,aV),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return rV({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+uce,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=aV?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=mce?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=pce){this.frameBudgetSlowStreak=0;let t=Math.max(Ece,this.frameBudgetPixelRatioScale*_ce);t=gce&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*vce),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=sV){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=Sce}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 ds?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}getCameraZoomRange(){if(!this.rootObject)return null;if(this.camera instanceof ds){let s=Math.max(this.initialZoom*.25,.05),a=Math.max(this.initialZoom*6,s*2),o=Number.isFinite(this.controls.minZoom)&&this.controls.minZoom>0?this.controls.minZoom:s,l=Number.isFinite(this.controls.maxZoom)&&this.controls.maxZoom>o?this.controls.maxZoom:a;return{mode:"zoom",current:Math.max(o,Math.min(this.camera.zoom,l)),min:o,max:l}}let e=this.camera.position.distanceTo(this.controls.target),t=Math.max(e*.08,1e-5),i=Number.isFinite(this.controls.minDistance)&&this.controls.minDistance>0?this.controls.minDistance:t,r=Number.isFinite(this.controls.maxDistance)&&this.controls.maxDistance>i?this.controls.maxDistance:Math.max(e*8,i*10);return{mode:"distance",current:Math.max(i,Math.min(e,r)),min:i,max:r}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:$r(this.rootObject),t=Xi(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof ds))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 _r||e==="orthographic"&&this.camera instanceof ds))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 u=new ds(-1,1,1,-1,f,d);u.position.copy(o),u.zoom=c,u.lookAt(l),this.updateOrthographicFrustumForCamera(u,s),this.camera=u}else{let u=new _r(this.initialFov,s,f,d);u.position.copy(o),u.zoom=c,u.lookAt(l),this.camera=u}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 _r&&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(),this.notifyCameraZoomChanged()}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(lx,0);else if(this.sceneConfig.background){let t=new ht(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=lx,this.renderer.setClearColor(lx,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 sm(16777215,.96);e.name="default-global-ambient";let t=new nm(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 gm(this.renderer),t=new sA;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())},Ace))}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 ht(e.color):new ht(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new sm(t,i);case"hemisphere":{let d=e.groundColor?new ht(e.groundColor):new ht(4473924);return new nm(t,d,i)}case"directional":{let d=new ll(t,i),u=(s=e.position)!=null?s:[-1,2,1],h=(a=e.target)!=null?a:[0,0,0];return d.position.set(...u),d.target.position.set(...h),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new vo(t,i),u=(o=e.position)!=null?o:[0,5,0];return d.position.set(...u),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new rc(t,i),u=(l=e.position)!=null?l:[0,5,0],h=(c=e.target)!=null?c:[0,0,0];return d.position.set(...u),d.target.position.set(...h),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 vo(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof ll||e instanceof rc)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=lU(this.renderer.capabilities.getMaxAnisotropy(),this.quality),i=new Set;for(let r of e)for(let s of zs(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){yce(this.textureAudit,vA(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!QC(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=Er(e),i=Xi(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new re(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!QC(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 ll){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 ds){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=>QC(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))Ta(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 om(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:$r(this.rootObject),t=Er(e),i=Xi(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 ui(new iu(s,s),new c_({color:0,opacity:lce,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 zs(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:$r(this.rootObject),t=Er(e),i=Xi(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new __(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 zs(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 zs(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=Ff(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?JA(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,modifiers:{altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey}};if(this._lastPickResult=l,this.measurementActive){if(e.altKey){if(!(i!=null&&i.point))return;this.setMeasurementSnapKind("free"),this.addMeasurementPoint(i.point.clone());return}if(!this.measurementTargetObject){o&&this.setMeasurementTargetObject(o);return}let u=this.getMeasurementTargetRaycastPoint(i);if(!u){this.setMeasurementSnapKind(null);return}this.addMeasurementPoint(this.resolveMeasurementPickPoint(u,!1));return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(u=>u(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.resetMeasurementCalibrationState(),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,this.notifyCameraZoomChanged(),(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=>{Ta(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let u of zs(f.material))this.disposeMaterialWithTextures(u,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++,Ff(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 Pr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Pr&&!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:$r(e),r=bU(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=Xi(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.controls.minZoom=.25,this.controls.maxZoom=8,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(),this.notifyCameraZoomChanged()}getAnnotationCameraStateKey(){return OA([{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 _r?this.camera.fov:this.camera.zoom,digits:this.camera instanceof _r?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),DU(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=Of(ei(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&&Lf(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{Ta(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++,Ff(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=wm(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=WU(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=jU(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=$r(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new cl(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 cl(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=Ta(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!Ff(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new cl(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()}setMeasurementTargetObject(e,t=!0){this.clearMeasurementTargetHelper(!1),this.invalidateMeasurementSnapInputCache();let i=e&&this.isObjectInLoadedRoot(e)?e:null;this.measurementTargetObject=i,this.setMeasurementSnapKind(null,!1),i&&(this.measurementTargetHelper=new cl(i,6333946),this.scene.add(this.measurementTargetHelper)),this.markDirty(),t&&this.notifyMeasurementsChanged()}clearMeasurementTargetHelper(e=!0){var t;(t=this.measurementTargetHelper)==null||t.removeFromParent(),this.measurementTargetHelper=null,e&&this.markDirty()}updateMeasurementTargetHelper(){!this.measurementTargetHelper||!this.measurementTargetObject||this.measurementTargetHelper.update()}invalidateMeasurementSnapInputCache(){this.measurementSnapInputCache=null,this.measurementSnapInputCacheTarget=null,this.measurementSnapInputCacheSignature=null}setMeasurementSnapKind(e,t=!0){this.measurementSnapKind!==e&&(this.measurementSnapKind=e,t&&this.notifyMeasurementsChanged())}getCurrentMeasurementTargetObject(){var t,i;if(!this.rootObject)return null;let e=(i=(t=this.focusedObject)!=null?t:this.highlightedObject)!=null?i:$C(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||!this.isObjectInLoadedRoot(e)?null:e}isObjectInLoadedRoot(e){if(!this.rootObject)return!1;let t=e;for(;t;){if(t===this.rootObject)return!0;t=t.parent}return!1}getMeasurementTargetName(){let e=this.measurementTargetObject;return!e||!this.isObjectInLoadedRoot(e)?null:Sa(e,e.type||`object-${e.id}`)}getMeasurementTargetBounds(){let e=this.measurementTargetObject;return!e||!this.isObjectInLoadedRoot(e)?null:(e.updateWorldMatrix(!0,!0),$r(e))}resolveMeasurementPickPoint(e,t){if(t)return this.setMeasurementSnapKind("free"),e;let i=this.createMeasurementGeometrySnapInput();if(!i)return this.setMeasurementSnapKind("free"),e;let r=GA(this.toMeasurementPoint(e),i);return r?(this.setMeasurementSnapKind(r.kind),new re(r.point.x,r.point.y,r.point.z)):(this.setMeasurementSnapKind("free"),e)}createMeasurementGeometrySnapInput(){var f,d;let e=this.measurementTargetObject;if(!e||!this.isObjectInLoadedRoot(e))return null;let t=this.getMeasurementTargetRenderables();if(t.length===0)return null;let i=this.createMeasurementSnapInputSignature(t);if(this.measurementSnapInputCache&&this.measurementSnapInputCacheTarget===e&&this.measurementSnapInputCacheSignature===i)return this.measurementSnapInputCache;let r=[],s=[],a=`three:${e.id}`;for(let u of t){let h=u.geometry.getAttribute("position");if(!h||h.count<=0)continue;u.updateWorldMatrix(!0,!1);let m=[];for(let g=0;g{var o,l,c,f;let i=t.geometry,r=i.getAttribute("position"),s=i.getIndex(),a=r&&"version"in r&&(o=r.version)!=null?o:0;return t.updateWorldMatrix(!0,!1),[t.id,i.id,(l=r==null?void 0:r.count)!=null?l:0,a,(c=s==null?void 0:s.count)!=null?c:0,(f=s==null?void 0:s.version)!=null?f:0,t.matrixWorld.elements.map(Ice).join(",")].join(":")}).join("|")}getMeasurementTargetRenderables(){let e=this.measurementTargetObject;if(!this.rootObject||!e||!this.isObjectInLoadedRoot(e))return[];let t=new Set(this.getRenderableObjects(this.rootObject));if(Ff(e)&&t.has(e))return[e];let i=[];return e.traverse(r=>{Ff(r)&&r.geometry&&t.has(r)&&i.push(r)}),i}getMeasurementTargetRaycastPoint(e){let t=this.getMeasurementTargetRenderables();if(t.length===0)return null;let i=e!=null?e:this.raycaster.intersectObjects(this.rootObject?this.getRenderableObjects(this.rootObject):[],!1)[0];return i!=null&&i.point&&t.includes(i.object)?i.point.clone():null}createThreeMeasurementDraftingLayout(e,t){let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.getMeasurementMarkerSize(),a=this.camera.getWorldPosition(new re),o=new re(0,1,0).applyQuaternion(this.camera.quaternion).normalize(),l=HA(this.toMeasurementPoint(i),this.toMeasurementPoint(r),{viewPosition:this.toMeasurementPoint(a),viewUp:this.toMeasurementPoint(o),offset:s*4.2,extensionGap:s*.55,extensionOvershoot:s*.8,arrowLength:s*2.35,arrowWidth:s*.78,labelGap:s*1.05});return l?{linePoints:l.lineSegments.flatMap(([f,d])=>[new re(f.x,f.y,f.z),new re(d.x,d.y,d.z)]),labelPosition:new re(l.labelPoint.x,l.labelPoint.y,l.labelPoint.z)}:null}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:$r(this.rootObject),t=Xi(e);return Math.max(t.x,t.y,t.z,.001)*.018}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,i&&this.setMeasurementSnapKind(null,!1),this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&(this.measurementMarkers.splice(a,1),this.measurementMarkerPoints.splice(a,1)),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(Y_));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,i=this.toMeasurementDisplayPoint(e);for(let r=0;r=0?this.measurementMarkerPoints[i].clone():t;if(this.pendingPoint){if(r.distanceTo(this.pendingPoint)<1e-4)return;if(i<0){let s=this.getMeasurementMarkerSize(),a=new im(s*.38,12,12),o=new fs({color:Y_,depthTest:!1,transparent:!0,opacity:.48}),l=new ui(a,o);l.position.copy(this.toMeasurementDisplayPoint(r)),l.renderOrder=999,this.scene.add(l),this.measurementMarkers.push(l),this.measurementMarkerPoints.push(r.clone())}this.createMeasurementSegment(this.pendingPoint,r),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(Y_)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(i<0){let s=this.getMeasurementMarkerSize(),a=new im(s*.38,12,12),o=new fs({color:Y_,depthTest:!1,transparent:!0,opacity:.48}),l=new ui(a,o);l.position.copy(this.toMeasurementDisplayPoint(r)),l.renderOrder=999,this.scene.add(l),this.measurementMarkers.push(l),this.measurementMarkerPoints.push(r.clone()),this.pendingMarker=l}else this.pendingMarker=this.measurementMarkers[i];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(Rce),this.pendingPoint=r,this.ensurePreviewLine()}this.markDirty(),this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){var u,h;let i=this.createThreeMeasurementDraftingLayout(e,t),r=this.toMeasurementDisplayPoint(e),s=this.toMeasurementDisplayPoint(t),a=(u=i==null?void 0:i.linePoints)!=null?u:[r,s],o=new Hi().setFromPoints(a),l=new Cs(o,new Gn({color:xce,transparent:!0,opacity:1,depthTest:!1,depthWrite:!1}));l.renderOrder=998,this.scene.add(l);let c=Dm(this.createMeasurementReading(e,t)),f=(h=i==null?void 0:i.labelPosition)!=null?h:new re().addVectors(r,s).multiplyScalar(.5),d=this.createMeasurementLabelSprite(c,f,this.getMeasurementMarkerSize()*3.2);this.scene.add(d),this.measurementSegments.push({start:e.clone(),end:t.clone(),line:l,label:d})}createMeasurementLabelSprite(e,t,i){let r=gu("canvas"),s=r.getContext("2d");r.width=oc.width,r.height=oc.height,jA(s,e,r.width,r.height);let a=new o_(r),o=new $h({map:a,depthTest:!1,depthWrite:!1,transparent:!0}),l=new i_(o);return l.position.copy(t),l.scale.set(i*3.7,i*1.08,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Hi().setFromPoints(Array.from({length:14},()=>new re));this.previewLine=new Cs(e,new Gn({color:Mce,transparent:!0,opacity:.82,depthTest:!1,depthWrite:!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.toMeasurementDisplayPoint(this.pendingPoint),t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-t.left)/t.width*2-1,this.pointer.y=-((this.lastPointerClient.y-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=null;if(this.lastPointerClient.altKey){this.setMeasurementSnapKind("free");let o=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];i=o!=null&&o.point?this.resolveMeasurementPickPoint(o.point.clone(),!0):e.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5))}else{let o=this.getMeasurementTargetRaycastPoint();o?i=this.resolveMeasurementPickPoint(o,!1):this.setMeasurementSnapKind(null)}let r=i?this.createThreeMeasurementDraftingLayout(this.pendingPoint,this.toMeasurementBasePoint(i)):null,s=i&&r?r.linePoints:[e,e],a=this.previewLine.geometry.getAttribute("position");if(a.count!==s.length)this.previewLine.geometry.dispose(),this.previewLine.geometry=new Hi().setFromPoints(s);else{for(let o=0;othis.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 KA(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}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}}});var Pce,JC,eP,ie,vi=y(()=>{Pce=typeof WeakRef!="undefined",JC=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}},eP=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 JC(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new eP(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=Pce?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 fx,dV=y(()=>{fx=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 uV,Vi,Hs=y(()=>{vi();dV();(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"})(uV||(uV={}));Vi=class n extends fx{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)}};Vi._Counter=0});var Oe,Gi=y(()=>{vi();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,Lt=y(()=>{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 x,W=y(()=>{x=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}};x.ShadersRepository="src/Shaders/";x.ShadersStore={};x.IncludesShadersStore={};x.ShadersRepositoryWGSL="src/ShadersWGSL/";x.ShadersStoreWGSL={};x.IncludesShadersStoreWGSL={}});function Sr(){return typeof window!="undefined"}function lc(){return typeof navigator!="undefined"}function Bf(){return typeof document!="undefined"}function dx(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var Wa=y(()=>{});var ux,hV=y(()=>{ux=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 u in t)e.bindUniformBlock(u,t[u]);this.engine.getUniforms(this,i).forEach((u,h)=>{r[i[h]]=u}),this._uniforms=r;let d;for(d=0;d{a[u]=h});for(let u of c.getAttributes(this,o))l.push(u)}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 $e(n,e=!1){if(!(e&&mV[n]))return mV[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var mV,An=y(()=>{mV={}});function hx(n,e,t=""){return t+(e?e+` +`:"")+n}function mx(n,e,t,i,r,s,a){let o=a||Fm.loadFile;if(o)return o(n,e,t,i,r,s);throw $e("FileTools")}function px(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 mV(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 Fm,Uf=y(()=>{An();Wa();Fm={}});function Yn(n){let e=eP.get(n);if(!e){if(!n)return Ice;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},eP.set(n,e)}return e}function mx(n){eP.delete(n)}function iP(n,e,t,i,r,s){var c;let a=Yn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:px);let o=tP(e,"vertex",i,a._contextWasLost),l=tP(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function rP(n,e,t,i,r,s=null,a){var d;let o=Yn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:px);let l=o._webGLVersion>1?`#version 300 es +`),r+="#define USE_EXACT_SRGB_CONVERSIONS"),r}}function pV(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 Fm,Uf=y(()=>{An();Wa();Fm={}});function Yn(n){let e=tP.get(n);if(!e){if(!n)return Dce;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},tP.set(n,e)}return e}function gx(n){tP.delete(n)}function rP(n,e,t,i,r,s){var c;let a=Yn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:_x);let o=iP(e,"vertex",i,a._contextWasLost),l=iP(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function nP(n,e,t,i,r,s=null,a){var d;let o=Yn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:_x);let l=o._webGLVersion>1?`#version 300 es #define WEBGL2 -`:"",c=pV(e,"vertex",i,l,r,o._contextWasLost),f=pV(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function gV(n,e){let t=new fx,i=Yn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function px(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||gx(n,i,s),a}function _V(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Yn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(gx(i,e,t),!0):!1}function gx(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 vV(n,e,t,i,r,s,a,o,l,c="",f,d,u){var g,p;let h=Yn(n.context);d||(d=(g=h.createRawShaderProgramInjection)!=null?g:iP),u||(u=(p=h.createShaderProgramInjection)!=null?p:rP);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=u(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function pV(n,e,t,i,r,s){return tP(dx(n,t,i),e,r,s)}function tP(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 EV(n,e){e.useProgram(n)}function SV(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var eP,Ice,nP=y(()=>{uV();Uf();eP=new WeakMap,Ice={_webGLVersion:2,cachedPipelines:{}}});var Cce,Pce,vl,_x=y(()=>{Cce="attribute",Pce="varying",vl=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 u=this.line,h=t.processor;if(h){h.lineProcessor&&(u=h.lineProcessor(u,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Cce,g=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:Pce;!t.isFragment&&h.attributeProcessor&&this.line.startsWith(m)?u=h.attributeProcessor(this.line,e,t.processingContext):h.varyingProcessor&&((d=h.varyingCheck)!=null&&d.call(h,this.line,t.isFragment)||!h.varyingCheck&&this.line.startsWith(g))?u=h.varyingProcessor(this.line,t.isFragment,e,t.processingContext):h.uniformProcessor&&h.uniformRegexp&&h.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(u=h.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):h.uniformBufferProcessor&&h.uniformBufferRegexp&&h.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(u=h.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):h.textureProcessor&&h.textureRegexp&&h.textureRegexp.test(this.line)?u=h.textureProcessor(this.line,t.isFragment,e,t.processingContext):(h.uniformProcessor||h.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?h.uniformProcessor&&(u=h.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):h.uniformBufferProcessor&&(u=h.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,h.endOfUniformBufferProcessor&&(u=h.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=u+` -`}for(let u of this.children)r+=u.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var vx,TV=y(()=>{vx=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{_x();Bm=class extends vl{process(e,t,i){for(let r=0;r{_x();Ex=class extends vl{isValid(e){return this.testExpression.isTrue(e)}}});var Cn,Um=y(()=>{Cn=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[u];)i.push(l());a(u),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{Um();Su=class extends Cn{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 Sx,bV=y(()=>{Um();Sx=class extends Cn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var Tx,MV=y(()=>{Um();Tx=class extends Cn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var Ax,yV=y(()=>{Um();Ax=class extends Cn{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 PV(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function cP(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),K_(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=Vce(s,e,i);t(a,s)})}function DV(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function wce(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=gV(e,"vertex",i,l,r,o._contextWasLost),f=gV(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function _V(n,e){let t=new ux,i=Yn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function _x(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||vx(n,i,s),a}function vV(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Yn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(vx(i,e,t),!0):!1}function vx(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 EV(n,e,t,i,r,s,a,o,l,c="",f,d,u){var g,p;let h=Yn(n.context);d||(d=(g=h.createRawShaderProgramInjection)!=null?g:rP),u||(u=(p=h.createShaderProgramInjection)!=null?p:nP);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=u(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function gV(n,e,t,i,r,s){return iP(hx(n,t,i),e,r,s)}function iP(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 SV(n,e){e.useProgram(n)}function TV(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var tP,Dce,sP=y(()=>{hV();Uf();tP=new WeakMap,Dce={_webGLVersion:2,cachedPipelines:{}}});var Lce,Oce,vl,Ex=y(()=>{Lce="attribute",Oce="varying",vl=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 u=this.line,h=t.processor;if(h){h.lineProcessor&&(u=h.lineProcessor(u,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Lce,g=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:Oce;!t.isFragment&&h.attributeProcessor&&this.line.startsWith(m)?u=h.attributeProcessor(this.line,e,t.processingContext):h.varyingProcessor&&((d=h.varyingCheck)!=null&&d.call(h,this.line,t.isFragment)||!h.varyingCheck&&this.line.startsWith(g))?u=h.varyingProcessor(this.line,t.isFragment,e,t.processingContext):h.uniformProcessor&&h.uniformRegexp&&h.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(u=h.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):h.uniformBufferProcessor&&h.uniformBufferRegexp&&h.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(u=h.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):h.textureProcessor&&h.textureRegexp&&h.textureRegexp.test(this.line)?u=h.textureProcessor(this.line,t.isFragment,e,t.processingContext):(h.uniformProcessor||h.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?h.uniformProcessor&&(u=h.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):h.uniformBufferProcessor&&(u=h.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,h.endOfUniformBufferProcessor&&(u=h.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=u+` +`}for(let u of this.children)r+=u.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var Sx,AV=y(()=>{Sx=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{Ex();Bm=class extends vl{process(e,t,i){for(let r=0;r{Ex();Tx=class extends vl{isValid(e){return this.testExpression.isTrue(e)}}});var Cn,Um=y(()=>{Cn=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[u];)i.push(l());a(u),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{Um();Su=class extends Cn{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 Ax,MV=y(()=>{Um();Ax=class extends Cn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var xx,yV=y(()=>{Um();xx=class extends Cn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var Rx,IV=y(()=>{Um();Rx=class extends Cn{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 DV(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function fP(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),K_(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=Wce(s,e,i);t(a,s)})}function LV(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function Uce(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 aP(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new Su(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 Su(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new Ax(a,r,o)}function Fce(n){n=n.replace(Dce,"defined[$1]");let e=Cn.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 Tx:new Sx;typeof s=="string"&&(s=s.replace(sP,"defined($1)")),typeof a=="string"&&(a=a.replace(sP,"defined($1)")),o.leftOperand=typeof a=="string"?aP(a):a,o.rightOperand=typeof s=="string"?aP(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace(sP,"defined($1)")),typeof i=="string"?aP(i):i}function Rx(n,e){let t=new Ex,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 Su(r):i==="#ifndef"?t.testExpression=new Su(r,!0):t.testExpression=Fce(r),t}function oP(n,e,t,i){let r;for(;lP(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new vl;e.children.push(a),lP(n,a,i);return}else if(s==="#elif"){let a=Rx(r,5);e.children.push(a),t=a}}}function lP(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=Nce.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new Bm;e.children.push(o);let l=Rx(i,6);o.children.push(l),oP(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new Bm;e.children.push(o);let l=Rx(i,7);o.children.push(l),oP(n,o,l,t);break}case"#if":{let o=new Bm,l=Rx(i,3);e.children.push(o),o.children.push(l),oP(n,o,l,t);break}}continue}}let r=new vl;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 Bce(n,e,t,i){let r=new vl,s=new vx;return s.lineIndex=-1,s.lines=n.split(` -`),lP(s,r,i),r.process(e,t,i)}function Uce(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",hx(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function Vce(n,e,t){let i=wce(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=Uce(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Bce(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 K_(n,e,t){xx.length=0;let i;for(;(i=Lce.exec(n))!==null;)xx.push(i);let r=[n],s=!1;for(let o of xx){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(Oce,""),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 u=0;uv+"{X}")),c+=g.replace(CV,p.toString())+` -`}else e.supportsUniformBuffers||(c=c.replace(IV,(u,h)=>h+"{X}")),c=c.replace(CV,d)}let f=[];for(let d of r){let u=d.split(o[0]);for(let h=0;h=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";fP.loadFile(c,f=>{e.includesShadersStore[l]=f,K_(r.join(""),e,t)});return}}xx.length=0;let a=r.join("");s?K_(a.toString(),e,t):t(a)}var Dce,sP,Lce,Oce,IV,CV,xx,Nce,fP,bx=y(()=>{_x();TV();AV();xV();RV();bV();MV();Um();yV();An();Uf();Dce=/defined\s*?\((.+?)\)/g,sP=/defined\s*?\[(.+?)\]/g,Lce=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,Oce=/__decl__/,IV=/light\{X\}.(\w*)/g,CV=/\{X\}/g,xx=[],Nce=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;fP={loadFile:(n,e,t,i,r,s)=>{throw $e("FileTools")}}});function OV(n,e){return Yn(e).cachedPipelines[n]}function Mx(n){let e=n._name,t=n.context;if(e&&t){let i=Yn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function NV(n,e,t,i,r,s,a){let o,l,c=Sr()?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[u,h]=f;PV(n),cP(u,n,(m,g)=>{a&&(a._vertexSourceCodeBeforeMigration=g),t&&(m=t("vertex",m)),n.isFragment=!0,cP(h,n,(p,_)=>{a&&(a._fragmentSourceCodeBeforeMigration=_),t&&(p=t("fragment",p));let v=DV(m,p,n);n=null;let E=Gce(v.vertexCode,v.fragmentCode,e,r);i==null||i(E.vertexSourceCode,E.fragmentSourceCode)},s)},s)}};LV(o,"Vertex","",u=>{a&&(a._rawVertexSourceCode=u),f[0]=u,d()},r),LV(l,"Fragment","Pixel",u=>{a&&(a._rawFragmentSourceCode=u),f[1]=u,d()},r)}function LV(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=cx(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=x.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=x.GetShadersRepository(r)+n,s=s||ux,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function Gce(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 oP(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new Su(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 Su(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new Rx(a,r,o)}function Vce(n){n=n.replace(Nce,"defined[$1]");let e=Cn.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 xx:new Ax;typeof s=="string"&&(s=s.replace(aP,"defined($1)")),typeof a=="string"&&(a=a.replace(aP,"defined($1)")),o.leftOperand=typeof a=="string"?oP(a):a,o.rightOperand=typeof s=="string"?oP(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace(aP,"defined($1)")),typeof i=="string"?oP(i):i}function Mx(n,e){let t=new Tx,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 Su(r):i==="#ifndef"?t.testExpression=new Su(r,!0):t.testExpression=Vce(r),t}function lP(n,e,t,i){let r;for(;cP(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new vl;e.children.push(a),cP(n,a,i);return}else if(s==="#elif"){let a=Mx(r,5);e.children.push(a),t=a}}}function cP(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=Bce.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new Bm;e.children.push(o);let l=Mx(i,6);o.children.push(l),lP(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new Bm;e.children.push(o);let l=Mx(i,7);o.children.push(l),lP(n,o,l,t);break}case"#if":{let o=new Bm,l=Mx(i,3);e.children.push(o),o.children.push(l),lP(n,o,l,t);break}}continue}}let r=new vl;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 Gce(n,e,t,i){let r=new vl,s=new Sx;return s.lineIndex=-1,s.lines=n.split(` +`),cP(s,r,i),r.process(e,t,i)}function kce(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",px(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function Wce(n,e,t){let i=Uce(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=kce(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Gce(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 K_(n,e,t){bx.length=0;let i;for(;(i=wce.exec(n))!==null;)bx.push(i);let r=[n],s=!1;for(let o of bx){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(Fce,""),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 u=0;uv+"{X}")),c+=g.replace(PV,p.toString())+` +`}else e.supportsUniformBuffers||(c=c.replace(CV,(u,h)=>h+"{X}")),c=c.replace(PV,d)}let f=[];for(let d of r){let u=d.split(o[0]);for(let h=0;h=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";dP.loadFile(c,f=>{e.includesShadersStore[l]=f,K_(r.join(""),e,t)});return}}bx.length=0;let a=r.join("");s?K_(a.toString(),e,t):t(a)}var Nce,aP,wce,Fce,CV,PV,bx,Bce,dP,yx=y(()=>{Ex();AV();xV();RV();bV();MV();yV();Um();IV();An();Uf();Nce=/defined\s*?\((.+?)\)/g,aP=/defined\s*?\[(.+?)\]/g,wce=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,Fce=/__decl__/,CV=/light\{X\}.(\w*)/g,PV=/\{X\}/g,bx=[],Bce=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;dP={loadFile:(n,e,t,i,r,s)=>{throw $e("FileTools")}}});function NV(n,e){return Yn(e).cachedPipelines[n]}function Ix(n){let e=n._name,t=n.context;if(e&&t){let i=Yn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function wV(n,e,t,i,r,s,a){let o,l,c=Sr()?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[u,h]=f;DV(n),fP(u,n,(m,g)=>{a&&(a._vertexSourceCodeBeforeMigration=g),t&&(m=t("vertex",m)),n.isFragment=!0,fP(h,n,(p,_)=>{a&&(a._fragmentSourceCodeBeforeMigration=_),t&&(p=t("fragment",p));let v=LV(m,p,n);n=null;let E=zce(v.vertexCode,v.fragmentCode,e,r);i==null||i(E.vertexSourceCode,E.fragmentSourceCode)},s)},s)}};OV(o,"Vertex","",u=>{a&&(a._rawVertexSourceCode=u),f[0]=u,d()},r),OV(l,"Fragment","Pixel",u=>{a&&(a._rawFragmentSourceCode=u),f[1]=u,d()},r)}function OV(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=dx(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=x.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=x.GetShadersRepository(r)+n,s=s||mx,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function zce(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 wV,dP=y(()=>{Wa();nP();W();Lt();bx();Uf();wV=(n,e,t,i)=>{try{let r=n.context?Yn(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 FV(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var yx,bo,El,Sl=y(()=>{yx=[],bo=class{static SetImmediate(e){yx.length===0&&setTimeout(()=>{let t=yx;yx=[];for(let i of t)i()},1),yx.push(e)}};El=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&FV(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!FV(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 hr,Tu=y(()=>{vi();Lt();W();dP();Sl();hr=class n{static get ShadersRepository(){return x.ShadersRepository}static set ShadersRepository(e){x.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="",u=0,h){var p,_,v,E;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,"|"),g;if(t.attributes){let T=t;if(this._engine=i,this._attributesNames=T.attributes,this._uniformsNames=T.uniformsNames.concat(T.samplers),this._samplerList=T.samplers.slice(),this.defines=T.defines,this.onError=T.onError,this.onCompiled=T.onCompiled,this._fallbacks=T.fallbacks,this._indexParameters=T.indexParameters,this._transformFeedbackVaryings=T.transformFeedbackVaryings||null,this._multiTarget=!!T.multiTarget,this._shaderLanguage=(p=T.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!T.disableParallelShaderCompilation,T.uniformBuffersNames){this._uniformBuffersNamesList=T.uniformBuffersNames.slice();for(let S=0;S{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:x.GetShadersRepository(this._shaderLanguage),includesShadersStore:x.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};NV(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){El(()=>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 FV,uP=y(()=>{Wa();sP();W();Lt();yx();Uf();FV=(n,e,t,i)=>{try{let r=n.context?Yn(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 BV(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var Cx,bo,El,Sl=y(()=>{Cx=[],bo=class{static SetImmediate(e){Cx.length===0&&setTimeout(()=>{let t=Cx;Cx=[];for(let i of t)i()},1),Cx.push(e)}};El=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&BV(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!BV(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 hr,Tu=y(()=>{vi();Lt();W();uP();Sl();hr=class n{static get ShadersRepository(){return x.ShadersRepository}static set ShadersRepository(e){x.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="",u=0,h){var p,_,v,E;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,"|"),g;if(t.attributes){let T=t;if(this._engine=i,this._attributesNames=T.attributes,this._uniformsNames=T.uniformsNames.concat(T.samplers),this._samplerList=T.samplers.slice(),this.defines=T.defines,this.onError=T.onError,this.onCompiled=T.onCompiled,this._fallbacks=T.fallbacks,this._indexParameters=T.indexParameters,this._transformFeedbackVaryings=T.transformFeedbackVaryings||null,this._multiTarget=!!T.multiTarget,this._shaderLanguage=(p=T.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!T.disableParallelShaderCompilation,T.uniformBuffersNames){this._uniformBuffersNamesList=T.uniformBuffersNames.slice();for(let S=0;S{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:x.GetShadersRepository(this._shaderLanguage),includesShadersStore:x.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};wV(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){El(()=>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&&Mx(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(x.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(x.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};hr.LogShaderCodeOnCompilationError=!0;hr.PersistentMode=!1;hr.AutomaticallyClearCodeCache=!1;hr._UniqueIdSeed=0;hr._BaseCache={};hr.ShadersStore=x.ShadersStore;hr.IncludesShadersStore=x.IncludesShadersStore});var vs,uP=y(()=>{vs=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{Wa();br=class{static get Now(){return Sr()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var Ix,BV=y(()=>{Ix=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 Cx,UV=y(()=>{Cx=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 Au,VV=y(()=>{Au=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}};Au.ALWAYS=519;Au.KEEP=7680;Au.REPLACE=7681});var Vm,hP=y(()=>{Vm=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{vi();Tu();Gi();Lt();uP();cc();BV();UV();VV();hP();An();zs();Wa();Uf();Re=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&&Ix(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(x.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(x.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};hr.LogShaderCodeOnCompilationError=!0;hr.PersistentMode=!1;hr.AutomaticallyClearCodeCache=!1;hr._UniqueIdSeed=0;hr._BaseCache={};hr.ShadersStore=x.ShadersStore;hr.IncludesShadersStore=x.IncludesShadersStore});var vs,hP=y(()=>{vs=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{Wa();br=class{static get Now(){return Sr()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var Px,UV=y(()=>{Px=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 Dx,VV=y(()=>{Dx=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 Au,GV=y(()=>{Au=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}};Au.ALWAYS=519;Au.KEEP=7680;Au.REPLACE=7681});var Vm,mP=y(()=>{Vm=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{vi();Tu();Gi();Lt();hP();cc();UV();VV();GV();mP();An();Hs();Wa();Uf();Re=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()}hr.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,Sr()){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(A).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let I=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(T),T.url=e,T.generateMipMaps=!t,T.samplingMode=s,T.invertY=i,T._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(T._buffer=f);let C=null;a&&!d&&(C=T.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(T);let D=(w,k)=>{r&&r.removePendingData(T),e===S?(C&&T.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,T.invertY,r,s,null,o,l,c,f,T),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),T.onErrorObservable.notifyObservers({message:w,exception:k}),o&&o(w,k)):(ee.Warn(`Failed to load ${e}, falling back to ${S}`),this._createTextureBase(S,t,T.invertY,r,s,a,o,l,c,f,T,u,h,m,g,p))};if(I){let w=async k=>{(await I).loadData(k,T,(N,B,V,q,j,J)=>{J?D("TextureLoader failed to load data"):l(T,R,r,{width:N,height:B},T.invertY,!V,q,()=>(j(),!1),s)},g)};if(!f)this._loadFile(e,async k=>{try{await w(new Uint8Array(k))}catch(O){D("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(k,O)=>{D("Unable to load "+(k&&k.responseURL,O))});else{let k=async O=>{try{await w(O)}catch(N){D("Failed to parse texture data",N)}};f instanceof ArrayBuffer?k(new Uint8Array(f)):ArrayBuffer.isView(f)?k(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=k=>{v&&!this._doNotHandleContextLost&&(T._buffer=k),l(T,R,r,k,T.invertY,t,!1,c,s)};!_||E?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,D,r?r.offlineProvider:null,m,T.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,D,r?r.offlineProvider:null,m,T.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return T}_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:Bf()?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,u,h,m,g;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new Ix,this._stencilStateComposer=new Cx,this._stencilState=new Au,this._alphaState=new Vm(!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=br.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,vs.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),lc()&&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=(h=(u=t.audioEngineOptions)==null?void 0:u.audioDestination)!=null?h:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(g=t.useExactSrgbConversions)!=null?g:!1;let r=Sr()&&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=Sr()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(Sr()&&Bf())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&&Bf()&&"ontouchend"in document},this._checkForMobile(),Sr()&&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 $e("FileTools")}_loadFile(e,t,i,r,s,a){let o=ux(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(Fm.loadFile)return Fm.loadFile(e,t,i,r,s,a);throw $e("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),hr.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(),Sr()&&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 $e("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var Dx,kV=y(()=>{Dx=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 kce,Lx,WV=y(()=>{kce=/(flat\s)?\s*varying\s*.*/,Lx=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return kce.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()}hr.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,Sr()){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(A).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let I=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(T),T.url=e,T.generateMipMaps=!t,T.samplingMode=s,T.invertY=i,T._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(T._buffer=f);let C=null;a&&!d&&(C=T.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(T);let D=(w,k)=>{r&&r.removePendingData(T),e===S?(C&&T.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,T.invertY,r,s,null,o,l,c,f,T),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),T.onErrorObservable.notifyObservers({message:w,exception:k}),o&&o(w,k)):(ee.Warn(`Failed to load ${e}, falling back to ${S}`),this._createTextureBase(S,t,T.invertY,r,s,a,o,l,c,f,T,u,h,m,g,p))};if(I){let w=async k=>{(await I).loadData(k,T,(N,B,V,q,j,J)=>{J?D("TextureLoader failed to load data"):l(T,R,r,{width:N,height:B},T.invertY,!V,q,()=>(j(),!1),s)},g)};if(!f)this._loadFile(e,async k=>{try{await w(new Uint8Array(k))}catch(O){D("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(k,O)=>{D("Unable to load "+(k&&k.responseURL,O))});else{let k=async O=>{try{await w(O)}catch(N){D("Failed to parse texture data",N)}};f instanceof ArrayBuffer?k(new Uint8Array(f)):ArrayBuffer.isView(f)?k(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=k=>{v&&!this._doNotHandleContextLost&&(T._buffer=k),l(T,R,r,k,T.invertY,t,!1,c,s)};!_||E?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,D,r?r.offlineProvider:null,m,T.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,D,r?r.offlineProvider:null,m,T.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return T}_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:Bf()?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,u,h,m,g;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new Px,this._stencilStateComposer=new Dx,this._stencilState=new Au,this._alphaState=new Vm(!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=br.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,vs.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),lc()&&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=(h=(u=t.audioEngineOptions)==null?void 0:u.audioDestination)!=null?h:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(g=t.useExactSrgbConversions)!=null?g:!1;let r=Sr()&&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=Sr()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(Sr()&&Bf())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&&Bf()&&"ontouchend"in document},this._checkForMobile(),Sr()&&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 $e("FileTools")}_loadFile(e,t,i,r,s,a){let o=mx(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(Fm.loadFile)return Fm.loadFile(e,t,i,r,s,a);throw $e("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),hr.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(),Sr()&&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 $e("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var Ox,WV=y(()=>{Ox=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 Hce,Nx,zV=y(()=>{Hce=/(flat\s)?\s*varying\s*.*/,Nx=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return Hce.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 xu,pP=y(()=>{xu=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};xu._Counter=0});var Tl,Ox=y(()=>{pP();Tl=class extends xu{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function Ru(n){let e=1;do e*=2;while(en-t?t:e}function zV(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function Nx(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 Pn(n,e,t=2){let i;switch(t){case 1:i=Nx(n);break;case 2:i=gP(n);break;default:i=zV(n);break}return Math.min(i,e)}var Mo=y(()=>{});var Gm,_P=y(()=>{Gm=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 vP(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function fc(n){return n===13||n===17||n===18||n===19}var q_=y(()=>{});var HV={};Be(HV,{ThinEngine:()=>Mt});var EP,Mt,Es=y(()=>{Tu();nP();Hr();mP();Lt();Wa();kV();WV();Ox();Mo();_P();zs();Uf();dP();q_();hP();EP=class{},Mt=class n extends Re{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return hr.ShadersRepository}static set ShadersRepository(e){hr.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 h=c.capture,m=c.captureConstraint,p=new RegExp(h).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let h of d)switch(h){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=()=>{mx(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,mx(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 Lx:new Dx;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=Yn(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 Vm(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=vP(c),_=fc(c),v=this._gl,E=new Vi(this,r),T=e.width||e,S=e.height||e,A=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),I=R!==0?v.TEXTURE_2D_ARRAY:A!==0?v.TEXTURE_3D:g?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,_):this._getRGBABufferInternalSizedFormat(o,c,f),D=p?_?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(I,E),R!==0)E.is2DArray=!0,v.texImage3D(I,0,C,T,S,R,0,D,w,null);else if(A!==0)E.is3D=!0,v.texImage3D(I,0,C,T,S,A,0,D,w,null);else if(g){E.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,T,S,0,D,w,null)}else v.texImage2D(I,0,C,T,S,0,D,w,null);if(v.texParameteri(I,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(I,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(I,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(I,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(I,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(I,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(I,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(I,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(I),this._bindTextureDirectly(I,null),E._useSRGBBuffer=f,E.baseWidth=T,E.baseHeight=S,E.width=T,E.height=S,E.depth=R||A,E.isReady=!0,E.samples=d,E.generateMipMaps=s,E.samplingMode=l,E.type=o,E.format=c,E.label=u,E.comparisonFunction=m,this._internalTexturesCache.push(E),h){let O;if(vP(E.format)?O=this._setupFramebufferDepthAttachments(fc(E.format),E.format!==19,E.width,E.height,d,E.format,!0):O=this._createRenderBuffer(E.width,E.height,d,-1,this._getRGBABufferInternalSizedFormat(E.type,E.format,E._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");E._autoMSAAManagement=!0;let N=E._hardwareTexture;N||(N=E._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return E}_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,u,h,m,g){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,_,v,E,T,S)=>{let A=this._gl,R=v.width===p&&v.height===_;T._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(T.format,T._useSRGBBuffer);if(R)return A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let I=this._caps.maxTextureSize;if(v.width>I||v.height>I||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=_,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,_),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),T.width=p,T.height=_),!1;{let C=new Vi(this,2);this._bindTextureDirectly(A.TEXTURE_2D,C,!0),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,T,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(A.TEXTURE_2D,T,!0),S()})}return!0},l,c,f,d,u,h,g)}_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 u=Math.round(Math.log(e.width)*Math.LOG2E),h=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(u-r,0)),g=a?e.height:Math.pow(2,Math.max(h-r,0));o.texImage2D(d,r,f,m,g,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),u=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let h=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,h=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(h,e,!0),f.texSubImage2D(m,l,i,r,s,a,u,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(h,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,u=Math.min(d,this.needPOTTextures?Pn(r.width,d):r.width),h=Math.min(d,this.needPOTTextures?Pn(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=u,e.height=h,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(u,h,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&&(EV(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;Sr()&&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()),mx(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{cc();wx=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new SP(e)}sampleFrame(e=br.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()}},SP=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 YV=y(()=>{Es();Mt.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 KV(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{zs();Lt();Es();Mo();Mt.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};Mt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Vi(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 u=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,u.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,u.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};Mt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Vi(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 u=e,h=u;if(c.width=u,c.height=h,c.invertY=s,c._compression=o,!this.needPOTTextures||Ru(c.width)&&Ru(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),_=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,_,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,_,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 g=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,g.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,g.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};Mt.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 h=0;h<6;h++){let m=e[h];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+h,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=KV(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+h,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||Ru(n.width)&&Ru(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};Mt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let u=this._gl,h=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(h),h.url=n,h.isReady=!1,this._internalTexturesCache.push(h);let m=(p,_)=>{e==null||e.removePendingData(h),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",_)},g=async p=>{if(!h._hardwareTexture)return;let _=a(p);if(!_)return;let v=_ instanceof Promise?await _:_,E=h.width;if(o){let T=this._getWebGLTextureType(r),S=this._getInternalFormat(i),A=this._getRGBABufferInternalSizedFormat(r),R=!1;S===u.RGB&&(S=u.RGBA,R=!0),this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,h,!0),this._unpackFlipY(!1);let M=o(v);for(let I=0;I>I;for(let D=0;D<6;D++){let w=M[I][D];R&&(w=KV(w,C,C,r)),u.texImage2D(D,I,A,C,C,0,S,T,w)}}this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(h,v,i,r,d);h.isReady=!0,e==null||e.removePendingData(h),h.onLoadedObservable.notifyObservers(h),h.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{g(p).catch(_=>{m(void 0,_)})},void 0,e==null?void 0:e.offlineProvider,!0,m),h};Mt.prototype.createRawTexture2DArray=jV(!1);Mt.prototype.createRawTexture3D=jV(!0);Mt.prototype.updateRawTexture2DArray=qV(!1);Mt.prototype.updateRawTexture3D=qV(!0)});var QV=y(()=>{Es();Uf();Mt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var u,h,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let g=f.createFramebuffer();if(!g)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=g}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(h=n._hardwareTexture)==null?void 0:h.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=mV(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};Mt.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 $V=y(()=>{Es();Mt.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()};Mt.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 JV=y(()=>{Es();zs();Lt();Mo();Mt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Vi(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};Mt.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)};Mt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,u,h=!1,m=null){let g=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(g.TEXTURE_CUBE_MAP,p,!0),(p,_)=>{let v=this.needPOTTextures?Pn(_[0].width,this._caps.maxCubemapTextureSize):_[0].width,E=v,T=[g.TEXTURE_CUBE_MAP_POSITIVE_X,g.TEXTURE_CUBE_MAP_POSITIVE_Y,g.TEXTURE_CUBE_MAP_POSITIVE_Z,g.TEXTURE_CUBE_MAP_NEGATIVE_X,g.TEXTURE_CUBE_MAP_NEGATIVE_Y,g.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(g.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let S=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:g.RGBA,A=a?this._getInternalFormat(a):g.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(A=S);for(let R=0;R{q_();Fx=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=fc(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,u=f.length,h=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,h=f[f.length-1].format,u--);let g=[],p=[],_=[],v=[],E=[],T=[],S=[],A={};for(let I=0;I1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{eG();q_();Bx=class extends Fx{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,fc(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,u,h;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=(h=i!=null?i:(u=this.faceIndices)==null?void 0:u[t])!=null?h: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 g=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,g,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{Hr();Re.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 iG=y(()=>{zs();Lt();Es();tG();q_();TP();Mt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new Bx(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};Mt.prototype.createRenderTargetTexture=function(n,e){var g,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=(g=e.generateDepthBuffer)!=null?g:!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,u=this._currentFramebuffer,h=this._gl,m=h.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(u),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 _=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=h.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),h.framebufferRenderbuffer(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.RENDERBUFFER,_),this._bindUnboundFramebuffer(null)}return t};Mt.prototype._createDepthStencilTexture=function(n,e,t){var h;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 Vi(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=fc(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,u=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,u,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,u,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,u,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((h=t._MSAAFramebuffer)!=null?h: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};Mt.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};Mt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var u,h;let s=(u=e.width)!=null?u:e,a=(h=e.height)!=null?h: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 rG=y(()=>{Es();Mt.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 nG=y(()=>{zs();Lt();Es();Mt.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 Vi(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 sG,km,Mr,wt,Kn=y(()=>{sG=.45454545454545453,km=2.2,Mr=(1+Math.sqrt(5))/2,wt=.001});function xn(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 Ux(n,e){let t=zce.map(i=>Wce(n,i,e));return()=>{for(let i of t)i==null||i()}}var zce,Al=y(()=>{zce=["push","splice","pop","shift","unshift"]});function Bt(n,e){aG[n]=e}function Dn(n){return aG[n]}var aG,er=y(()=>{aG={}});function yi(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function mr(n,e){return n===e?n:Math.random()*(e-n)+n}function yo(n,e,t){return n+(e-n)*t}function oG(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 Ft(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function lG(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function Io(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function cG(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 Vx(n,e){let t=n%e;return t===0?e:Vx(e,t)}var jn=y(()=>{});function fG(n){n.updateFlag=Wm._UpdateFlagSeed++}function AP(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],u=r[6],h=r[7],m=r[8],g=r[9],p=r[10],_=r[11],v=r[12],E=r[13],T=r[14],S=r[15],A=s[0],R=s[1],M=s[2],I=s[3],C=s[4],D=s[5],w=s[6],k=s[7],O=s[8],N=s[9],B=s[10],V=s[11],q=s[12],j=s[13],J=s[14],H=s[15];t[i]=a*A+o*C+l*O+c*q,t[i+1]=a*R+o*D+l*N+c*j,t[i+2]=a*M+o*w+l*B+c*J,t[i+3]=a*I+o*k+l*V+c*H,t[i+4]=f*A+d*C+u*O+h*q,t[i+5]=f*R+d*D+u*N+h*j,t[i+6]=f*M+d*w+u*B+h*J,t[i+7]=f*I+d*k+u*V+h*H,t[i+8]=m*A+g*C+p*O+_*q,t[i+9]=m*R+g*D+p*N+_*j,t[i+10]=m*M+g*w+p*B+_*J,t[i+11]=m*I+g*k+p*V+_*H,t[i+12]=v*A+E*C+T*O+S*q,t[i+13]=v*R+E*D+T*N+S*j,t[i+14]=v*M+E*w+T*B+S*J,t[i+15]=v*I+E*k+T*V+S*H}function bu(n,e,t,i=0){AP(n,e,t.asArray(),i),fG(t)}function dG(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 Z_(n,e){let t=xP(n,e.asArray());return t&&fG(e),t}function xP(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],u=t[9],h=t[10],m=t[11],g=t[12],p=t[13],_=t[14],v=t[15],E=h*v-_*m,T=u*v-p*m,S=u*_-p*h,A=d*v-g*m,R=d*_-h*g,M=d*p-g*u,I=+(l*E-c*T+f*S),C=-(o*E-c*A+f*R),D=+(o*T-l*A+f*M),w=-(o*S-l*R+c*M),k=i*I+r*C+s*D+a*w;if(k===0)return!1;let O=1/k,N=c*v-_*f,B=l*v-p*f,V=l*_-p*c,q=o*v-g*f,j=o*_-g*c,J=o*p-g*l,H=c*m-h*f,Y=l*m-u*f,de=l*h-u*c,me=o*m-d*f,Ue=o*h-d*c,ae=o*u-d*l,_e=-(r*E-s*T+a*S),ne=+(i*E-s*A+a*R),ve=-(i*T-r*A+a*M),Ce=+(i*S-r*R+s*M),ue=+(r*N-s*B+a*V),be=-(i*N-s*q+a*j),Ge=+(i*B-r*q+a*J),qe=-(i*V-r*j+s*J),Ye=-(r*H-s*Y+a*de),Ke=+(i*H-s*me+a*Ue),Zt=-(i*Y-r*me+a*ae),Ut=+(i*de-r*Ue+s*ae);return e[0]=I*O,e[1]=_e*O,e[2]=ue*O,e[3]=Ye*O,e[4]=C*O,e[5]=ne*O,e[6]=be*O,e[7]=Ke*O,e[8]=D*O,e[9]=ve*O,e[10]=Ge*O,e[11]=Zt*O,e[12]=w*O,e[13]=Ce*O,e[14]=qe*O,e[15]=Ut*O,!0}var Wm,RP=y(()=>{Wm=class{};Wm._UpdateFlagSeed=0});var Ss,Fe,b,Oi,je,Z,Xe,$,Mu,We=y(()=>{Kn();Al();er();uP();Gi();jn();RP();Ss=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=Ss(this.x),t=Ss(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=wt){return e&&yi(this.x,e.x,t)&&yi(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(mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(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=Ft(e.x,t.x,i.x),r.y=Ft(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=Ft(e.x,t.x,i.x),s=Ft(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,u=e.x*l+i.x*c+t.x*f+r.x*d,h=e.y*l+i.y*c+t.y*f+r.y*d;return new n(u,h)}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=Ss(this._x),t=Ss(this._y),i=Ss(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 je.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),u=2*(a*r-o*i);return t._x=i+c*f+o*u-l*d,t._y=r+c*d+l*f-a*u,t._z=s+c*u+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=Xe.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=wt){return e&&yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(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(!yi(t,i,e))return!0;let r=Math.abs(this._z);return!yi(t,r,e)||!yi(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=Xe.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(Xe.Matrix[0]),n.TransformCoordinatesToRef(this,Xe.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,Xe.Vector3[0]),Xe.Vector3[0].rotateByQuaternionToRef(e,Xe.Vector3[0]),t.addToRef(Xe.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(Xe.Vector3[1]),s=t.normalizeToRef(Xe.Vector3[2]),a=n.Dot(r,s);a=Ft(a,-1,1);let o=Math.acos(a),l=Xe.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){Xe.Vector3[0].copyFrom(e);let r=Xe.Vector3[0];Xe.Vector3[1].copyFrom(t);let s=Xe.Vector3[1];Xe.Vector3[2].copyFrom(i);let a=Xe.Vector3[2],o=Xe.Vector3[3],l=Xe.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 lG(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=Ft(i,0,1);let s=Xe.Vector3[0],a=Xe.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-wt){let u=Math.acos(c),h=1/Math.sin(u);f=Math.sin((1-i)*u)*h,d=Math.sin(i*u)*h}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(yo(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(mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(e,t),mr(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),k=t,O=i):C>0&&D<0?(w.copyFrom(l),k=i,O=r):(w.copyFrom(o).scaleInPlace(-1),k=r,O=t);let N=Xe.Vector3[9],B=Xe.Vector3[4];if(k.subtractToRef(v,A),O.subtractToRef(v,N),n.CrossToRef(A,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(g*p);let q=Xe.Vector3[5];n.CrossToRef(w,B,q),q.normalize();let j=Xe.Vector3[9];j.copyFrom(k).subtractInPlace(v);let J=j.length();if(Jthis._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(mr(e,t),mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.x=mr(e,t),i.y=mr(e,t),i.z=mr(e,t),i.w=mr(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=Ft(e.x,t.x,i.x),r.y=Ft(e.y,t.y,i.y),r.z=Ft(e.z,t.z,i.z),r.w=Ft(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}};Oi._V8PerformanceHack=new Oi(.5,.5,.5,.5);Oi._ZeroReadOnly=Oi.Zero();Object.defineProperties(Oi.prototype,{dimension:{value:[4]},rank:{value:1}});je=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=Ss(this._x),t=Ss(this._y),i=Ss(this._z),r=Ss(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=wt){return e&&yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(this._z,e._z,t)&&yi(this._w,e._w,t)}isApprox(e,t=wt){return e&&(yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(this._z,e._z,t)&&yi(this._w,e._w,t)||yi(this._x,-e._x,t)&&yi(this._y,-e._y,t)&&yi(this._z,-e._z,t)&&yi(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,u=(c-f)/2;return e.set(u,l,d),e}toRotationMatrix(e){return Z.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],u=i[10],h=r+l+u,m;return h>0?(m=.5/Math.sqrt(h+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>u?(m=2*Math.sqrt(1+r-l-u),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>u?(m=2*Math.sqrt(1+l-r-u),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+u-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=Ft(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=wt){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),u=Math.sin(o),h=Math.cos(o);return r._x=h*f*c+u*d*l,r._y=u*d*c-h*f*l,r._z=h*d*l-u*f*c,r._w=h*d*c+u*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=Xe.Matrix[0];return e=e.normalizeToRef(Xe.Vector3[0]),t=t.normalizeToRef(Xe.Vector3[1]),i=i.normalizeToRef(Xe.Vector3[2]),Z.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=Xe.Matrix[0];return Z.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=Xe.Matrix[0];return Z.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,u=e._x*l+i._x*c+t._x*f+r._x*d,h=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,g=e._w*l+i._w*c+t._w*f+r._w*d;return new n(u,h,m,g)}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(Ft(e.x,t.x,i.x),Ft(e.y,t.y,i.y),Ft(e.z,t.z,i.z),Ft(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(mr(e,t),mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(e,t),mr(e,t),mr(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)}};je._V8PerformanceHack=new je(.5,.5,.5,.5);Object.defineProperties(je.prototype,{dimension:{value:[4]},rank:{value:1}});Z=class n{static get Use64Bits(){return vs.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=Wm._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,vs.MatrixTrackPrecisionChange&&vs.MatrixTrackedMatrices.push(this),this._m=new vs.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],u=e[10],h=e[11],m=e[12],g=e[13],p=e[14],_=e[15],v=u*_-p*h,E=d*_-g*h,T=d*p-g*u,S=f*_-m*h,A=f*p-u*m,R=f*g-m*d,M=+(o*v-l*E+c*T),I=-(a*v-l*S+c*A),C=+(a*E-o*S+c*R),D=-(a*T-o*A+l*R);return t*M+i*I+r*C+s*D}toString(){return`{${this.m[0]}, ${this.m[1]}, ${this.m[2]}, ${this.m[3]} +`+e;return e}}});var xu,gP=y(()=>{xu=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};xu._Counter=0});var Tl,wx=y(()=>{gP();Tl=class extends xu{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function Ru(n){let e=1;do e*=2;while(en-t?t:e}function HV(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function Fx(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 Pn(n,e,t=2){let i;switch(t){case 1:i=Fx(n);break;case 2:i=_P(n);break;default:i=HV(n);break}return Math.min(i,e)}var Mo=y(()=>{});var Gm,vP=y(()=>{Gm=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 EP(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function fc(n){return n===13||n===17||n===18||n===19}var q_=y(()=>{});var XV={};Be(XV,{ThinEngine:()=>Mt});var SP,Mt,Es=y(()=>{Tu();sP();Hr();pP();Lt();Wa();WV();zV();wx();Mo();vP();Hs();Uf();uP();q_();mP();SP=class{},Mt=class n extends Re{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return hr.ShadersRepository}static set ShadersRepository(e){hr.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 h=c.capture,m=c.captureConstraint,p=new RegExp(h).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let h of d)switch(h){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=()=>{gx(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,gx(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 Nx:new Ox;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=Yn(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 Vm(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=EP(c),_=fc(c),v=this._gl,E=new Vi(this,r),T=e.width||e,S=e.height||e,A=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),I=R!==0?v.TEXTURE_2D_ARRAY:A!==0?v.TEXTURE_3D:g?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,_):this._getRGBABufferInternalSizedFormat(o,c,f),D=p?_?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(I,E),R!==0)E.is2DArray=!0,v.texImage3D(I,0,C,T,S,R,0,D,w,null);else if(A!==0)E.is3D=!0,v.texImage3D(I,0,C,T,S,A,0,D,w,null);else if(g){E.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,T,S,0,D,w,null)}else v.texImage2D(I,0,C,T,S,0,D,w,null);if(v.texParameteri(I,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(I,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(I,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(I,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(I,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(I,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(I,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(I,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(I),this._bindTextureDirectly(I,null),E._useSRGBBuffer=f,E.baseWidth=T,E.baseHeight=S,E.width=T,E.height=S,E.depth=R||A,E.isReady=!0,E.samples=d,E.generateMipMaps=s,E.samplingMode=l,E.type=o,E.format=c,E.label=u,E.comparisonFunction=m,this._internalTexturesCache.push(E),h){let O;if(EP(E.format)?O=this._setupFramebufferDepthAttachments(fc(E.format),E.format!==19,E.width,E.height,d,E.format,!0):O=this._createRenderBuffer(E.width,E.height,d,-1,this._getRGBABufferInternalSizedFormat(E.type,E.format,E._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");E._autoMSAAManagement=!0;let N=E._hardwareTexture;N||(N=E._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return E}_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,u,h,m,g){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,_,v,E,T,S)=>{let A=this._gl,R=v.width===p&&v.height===_;T._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(T.format,T._useSRGBBuffer);if(R)return A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let I=this._caps.maxTextureSize;if(v.width>I||v.height>I||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=_,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,_),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),T.width=p,T.height=_),!1;{let C=new Vi(this,2);this._bindTextureDirectly(A.TEXTURE_2D,C,!0),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,T,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(A.TEXTURE_2D,T,!0),S()})}return!0},l,c,f,d,u,h,g)}_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 u=Math.round(Math.log(e.width)*Math.LOG2E),h=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(u-r,0)),g=a?e.height:Math.pow(2,Math.max(h-r,0));o.texImage2D(d,r,f,m,g,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),u=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let h=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,h=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(h,e,!0),f.texSubImage2D(m,l,i,r,s,a,u,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(h,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,u=Math.min(d,this.needPOTTextures?Pn(r.width,d):r.width),h=Math.min(d,this.needPOTTextures?Pn(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=u,e.height=h,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(u,h,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&&(SV(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;Sr()&&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()),gx(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{cc();Bx=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new TP(e)}sampleFrame(e=br.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()}},TP=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 KV=y(()=>{Es();Mt.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 jV(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{Hs();Lt();Es();Mo();Mt.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};Mt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Vi(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 u=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,u.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,u.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};Mt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Vi(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 u=e,h=u;if(c.width=u,c.height=h,c.invertY=s,c._compression=o,!this.needPOTTextures||Ru(c.width)&&Ru(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),_=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,_,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,_,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 g=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,g.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,g.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};Mt.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 h=0;h<6;h++){let m=e[h];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+h,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=jV(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+h,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||Ru(n.width)&&Ru(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};Mt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let u=this._gl,h=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(h),h.url=n,h.isReady=!1,this._internalTexturesCache.push(h);let m=(p,_)=>{e==null||e.removePendingData(h),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",_)},g=async p=>{if(!h._hardwareTexture)return;let _=a(p);if(!_)return;let v=_ instanceof Promise?await _:_,E=h.width;if(o){let T=this._getWebGLTextureType(r),S=this._getInternalFormat(i),A=this._getRGBABufferInternalSizedFormat(r),R=!1;S===u.RGB&&(S=u.RGBA,R=!0),this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,h,!0),this._unpackFlipY(!1);let M=o(v);for(let I=0;I>I;for(let D=0;D<6;D++){let w=M[I][D];R&&(w=jV(w,C,C,r)),u.texImage2D(D,I,A,C,C,0,S,T,w)}}this._bindTextureDirectly(u.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(h,v,i,r,d);h.isReady=!0,e==null||e.removePendingData(h),h.onLoadedObservable.notifyObservers(h),h.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{g(p).catch(_=>{m(void 0,_)})},void 0,e==null?void 0:e.offlineProvider,!0,m),h};Mt.prototype.createRawTexture2DArray=qV(!1);Mt.prototype.createRawTexture3D=qV(!0);Mt.prototype.updateRawTexture2DArray=ZV(!1);Mt.prototype.updateRawTexture3D=ZV(!0)});var $V=y(()=>{Es();Uf();Mt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var u,h,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let g=f.createFramebuffer();if(!g)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=g}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(h=n._hardwareTexture)==null?void 0:h.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=pV(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};Mt.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 JV=y(()=>{Es();Mt.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()};Mt.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 eG=y(()=>{Es();Hs();Lt();Mo();Mt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Vi(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};Mt.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)};Mt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,u,h=!1,m=null){let g=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(g.TEXTURE_CUBE_MAP,p,!0),(p,_)=>{let v=this.needPOTTextures?Pn(_[0].width,this._caps.maxCubemapTextureSize):_[0].width,E=v,T=[g.TEXTURE_CUBE_MAP_POSITIVE_X,g.TEXTURE_CUBE_MAP_POSITIVE_Y,g.TEXTURE_CUBE_MAP_POSITIVE_Z,g.TEXTURE_CUBE_MAP_NEGATIVE_X,g.TEXTURE_CUBE_MAP_NEGATIVE_Y,g.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(g.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let S=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:g.RGBA,A=a?this._getInternalFormat(a):g.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(A=S);for(let R=0;R{q_();Ux=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=fc(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,u=f.length,h=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,h=f[f.length-1].format,u--);let g=[],p=[],_=[],v=[],E=[],T=[],S=[],A={};for(let I=0;I1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{tG();q_();Vx=class extends Ux{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,fc(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,u,h;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=(h=i!=null?i:(u=this.faceIndices)==null?void 0:u[t])!=null?h: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 g=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,g,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{Hr();Re.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 rG=y(()=>{Hs();Lt();Es();iG();q_();AP();Mt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new Vx(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};Mt.prototype.createRenderTargetTexture=function(n,e){var g,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=(g=e.generateDepthBuffer)!=null?g:!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,u=this._currentFramebuffer,h=this._gl,m=h.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(u),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 _=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=h.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),h.framebufferRenderbuffer(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.RENDERBUFFER,_),this._bindUnboundFramebuffer(null)}return t};Mt.prototype._createDepthStencilTexture=function(n,e,t){var h;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 Vi(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=fc(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,u=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,u,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,u,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,u,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((h=t._MSAAFramebuffer)!=null?h: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};Mt.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};Mt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var u,h;let s=(u=e.width)!=null?u:e,a=(h=e.height)!=null?h: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 nG=y(()=>{Es();Mt.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 sG=y(()=>{Hs();Lt();Es();Mt.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 Vi(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 aG,km,Mr,wt,Kn=y(()=>{aG=.45454545454545453,km=2.2,Mr=(1+Math.sqrt(5))/2,wt=.001});function xn(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 Gx(n,e){let t=Yce.map(i=>Xce(n,i,e));return()=>{for(let i of t)i==null||i()}}var Yce,Al=y(()=>{Yce=["push","splice","pop","shift","unshift"]});function Bt(n,e){oG[n]=e}function Dn(n){return oG[n]}var oG,er=y(()=>{oG={}});function yi(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function mr(n,e){return n===e?n:Math.random()*(e-n)+n}function yo(n,e,t){return n+(e-n)*t}function lG(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 Ft(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function cG(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function Io(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function fG(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 kx(n,e){let t=n%e;return t===0?e:kx(e,t)}var jn=y(()=>{});function dG(n){n.updateFlag=Wm._UpdateFlagSeed++}function xP(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],u=r[6],h=r[7],m=r[8],g=r[9],p=r[10],_=r[11],v=r[12],E=r[13],T=r[14],S=r[15],A=s[0],R=s[1],M=s[2],I=s[3],C=s[4],D=s[5],w=s[6],k=s[7],O=s[8],N=s[9],B=s[10],V=s[11],q=s[12],j=s[13],J=s[14],H=s[15];t[i]=a*A+o*C+l*O+c*q,t[i+1]=a*R+o*D+l*N+c*j,t[i+2]=a*M+o*w+l*B+c*J,t[i+3]=a*I+o*k+l*V+c*H,t[i+4]=f*A+d*C+u*O+h*q,t[i+5]=f*R+d*D+u*N+h*j,t[i+6]=f*M+d*w+u*B+h*J,t[i+7]=f*I+d*k+u*V+h*H,t[i+8]=m*A+g*C+p*O+_*q,t[i+9]=m*R+g*D+p*N+_*j,t[i+10]=m*M+g*w+p*B+_*J,t[i+11]=m*I+g*k+p*V+_*H,t[i+12]=v*A+E*C+T*O+S*q,t[i+13]=v*R+E*D+T*N+S*j,t[i+14]=v*M+E*w+T*B+S*J,t[i+15]=v*I+E*k+T*V+S*H}function bu(n,e,t,i=0){xP(n,e,t.asArray(),i),dG(t)}function uG(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 Z_(n,e){let t=RP(n,e.asArray());return t&&dG(e),t}function RP(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],u=t[9],h=t[10],m=t[11],g=t[12],p=t[13],_=t[14],v=t[15],E=h*v-_*m,T=u*v-p*m,S=u*_-p*h,A=d*v-g*m,R=d*_-h*g,M=d*p-g*u,I=+(l*E-c*T+f*S),C=-(o*E-c*A+f*R),D=+(o*T-l*A+f*M),w=-(o*S-l*R+c*M),k=i*I+r*C+s*D+a*w;if(k===0)return!1;let O=1/k,N=c*v-_*f,B=l*v-p*f,V=l*_-p*c,q=o*v-g*f,j=o*_-g*c,J=o*p-g*l,H=c*m-h*f,Y=l*m-u*f,de=l*h-u*c,me=o*m-d*f,Ue=o*h-d*c,ae=o*u-d*l,_e=-(r*E-s*T+a*S),ne=+(i*E-s*A+a*R),ve=-(i*T-r*A+a*M),Ce=+(i*S-r*R+s*M),ue=+(r*N-s*B+a*V),be=-(i*N-s*q+a*j),Ge=+(i*B-r*q+a*J),qe=-(i*V-r*j+s*J),Ye=-(r*H-s*Y+a*de),Ke=+(i*H-s*me+a*Ue),Zt=-(i*Y-r*me+a*ae),Ut=+(i*de-r*Ue+s*ae);return e[0]=I*O,e[1]=_e*O,e[2]=ue*O,e[3]=Ye*O,e[4]=C*O,e[5]=ne*O,e[6]=be*O,e[7]=Ke*O,e[8]=D*O,e[9]=ve*O,e[10]=Ge*O,e[11]=Zt*O,e[12]=w*O,e[13]=Ce*O,e[14]=qe*O,e[15]=Ut*O,!0}var Wm,bP=y(()=>{Wm=class{};Wm._UpdateFlagSeed=0});var Ss,Fe,b,Oi,je,Z,Xe,$,Mu,We=y(()=>{Kn();Al();er();hP();Gi();jn();bP();Ss=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=Ss(this.x),t=Ss(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=wt){return e&&yi(this.x,e.x,t)&&yi(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(mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(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=Ft(e.x,t.x,i.x),r.y=Ft(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=Ft(e.x,t.x,i.x),s=Ft(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,u=e.x*l+i.x*c+t.x*f+r.x*d,h=e.y*l+i.y*c+t.y*f+r.y*d;return new n(u,h)}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=Ss(this._x),t=Ss(this._y),i=Ss(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 je.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),u=2*(a*r-o*i);return t._x=i+c*f+o*u-l*d,t._y=r+c*d+l*f-a*u,t._z=s+c*u+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=Xe.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=wt){return e&&yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(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(!yi(t,i,e))return!0;let r=Math.abs(this._z);return!yi(t,r,e)||!yi(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=Xe.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(Xe.Matrix[0]),n.TransformCoordinatesToRef(this,Xe.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,Xe.Vector3[0]),Xe.Vector3[0].rotateByQuaternionToRef(e,Xe.Vector3[0]),t.addToRef(Xe.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(Xe.Vector3[1]),s=t.normalizeToRef(Xe.Vector3[2]),a=n.Dot(r,s);a=Ft(a,-1,1);let o=Math.acos(a),l=Xe.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){Xe.Vector3[0].copyFrom(e);let r=Xe.Vector3[0];Xe.Vector3[1].copyFrom(t);let s=Xe.Vector3[1];Xe.Vector3[2].copyFrom(i);let a=Xe.Vector3[2],o=Xe.Vector3[3],l=Xe.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 cG(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=Ft(i,0,1);let s=Xe.Vector3[0],a=Xe.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-wt){let u=Math.acos(c),h=1/Math.sin(u);f=Math.sin((1-i)*u)*h,d=Math.sin(i*u)*h}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(yo(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(mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(e,t),mr(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),k=t,O=i):C>0&&D<0?(w.copyFrom(l),k=i,O=r):(w.copyFrom(o).scaleInPlace(-1),k=r,O=t);let N=Xe.Vector3[9],B=Xe.Vector3[4];if(k.subtractToRef(v,A),O.subtractToRef(v,N),n.CrossToRef(A,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(g*p);let q=Xe.Vector3[5];n.CrossToRef(w,B,q),q.normalize();let j=Xe.Vector3[9];j.copyFrom(k).subtractInPlace(v);let J=j.length();if(Jthis._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(mr(e,t),mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.x=mr(e,t),i.y=mr(e,t),i.z=mr(e,t),i.w=mr(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=Ft(e.x,t.x,i.x),r.y=Ft(e.y,t.y,i.y),r.z=Ft(e.z,t.z,i.z),r.w=Ft(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}};Oi._V8PerformanceHack=new Oi(.5,.5,.5,.5);Oi._ZeroReadOnly=Oi.Zero();Object.defineProperties(Oi.prototype,{dimension:{value:[4]},rank:{value:1}});je=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=Ss(this._x),t=Ss(this._y),i=Ss(this._z),r=Ss(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=wt){return e&&yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(this._z,e._z,t)&&yi(this._w,e._w,t)}isApprox(e,t=wt){return e&&(yi(this._x,e._x,t)&&yi(this._y,e._y,t)&&yi(this._z,e._z,t)&&yi(this._w,e._w,t)||yi(this._x,-e._x,t)&&yi(this._y,-e._y,t)&&yi(this._z,-e._z,t)&&yi(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,u=(c-f)/2;return e.set(u,l,d),e}toRotationMatrix(e){return Z.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],u=i[10],h=r+l+u,m;return h>0?(m=.5/Math.sqrt(h+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>u?(m=2*Math.sqrt(1+r-l-u),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>u?(m=2*Math.sqrt(1+l-r-u),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+u-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=Ft(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=wt){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),u=Math.sin(o),h=Math.cos(o);return r._x=h*f*c+u*d*l,r._y=u*d*c-h*f*l,r._z=h*d*l-u*f*c,r._w=h*d*c+u*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=Xe.Matrix[0];return e=e.normalizeToRef(Xe.Vector3[0]),t=t.normalizeToRef(Xe.Vector3[1]),i=i.normalizeToRef(Xe.Vector3[2]),Z.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=Xe.Matrix[0];return Z.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=Xe.Matrix[0];return Z.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,u=e._x*l+i._x*c+t._x*f+r._x*d,h=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,g=e._w*l+i._w*c+t._w*f+r._w*d;return new n(u,h,m,g)}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(Ft(e.x,t.x,i.x),Ft(e.y,t.y,i.y),Ft(e.z,t.z,i.z),Ft(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(mr(e,t),mr(e,t),mr(e,t),mr(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(mr(e,t),mr(e,t),mr(e,t),mr(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)}};je._V8PerformanceHack=new je(.5,.5,.5,.5);Object.defineProperties(je.prototype,{dimension:{value:[4]},rank:{value:1}});Z=class n{static get Use64Bits(){return vs.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=Wm._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,vs.MatrixTrackPrecisionChange&&vs.MatrixTrackedMatrices.push(this),this._m=new vs.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],u=e[10],h=e[11],m=e[12],g=e[13],p=e[14],_=e[15],v=u*_-p*h,E=d*_-g*h,T=d*p-g*u,S=f*_-m*h,A=f*p-u*m,R=f*g-m*d,M=+(o*v-l*E+c*T),I=-(a*v-l*S+c*A),C=+(a*E-o*S+c*R),D=-(a*T-o*A+l*R);return t*M+i*I+r*C+s*D}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):(xP(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 dG(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 AP(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(!yi(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=Ss(this._m[0]);for(let t=1;t<16;t++)e=e*397^Ss(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new je,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||Xe.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,Xe.Matrix[0]),je.FromRotationMatrixToRef(Xe.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Oi(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=Xe.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=Xe.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,u,h,m,g,p,_){let v=_._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]=u,v[12]=h,v[13]=m,v[14]=g,v[15]=p,_.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p){let _=new n,v=_._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]=u,v[12]=h,v[13]=m,v[14]=g,v[15]=p,_.markAsUpdated(),_}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,u=l+l,h=a*f,m=a*d,g=a*u,p=o*d,_=o*u,v=l*u,E=c*f,T=c*d,S=c*u,A=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*A,s[1]=(m+S)*A,s[2]=(g-T)*A,s[3]=0,s[4]=(m-S)*R,s[5]=(1-(h+v))*R,s[6]=(_+E)*R,s[7]=0,s[8]=(g+T)*M,s[9]=(_-E)*M,s[10]=(1-(h+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(Xe.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+wt)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 je.RotationYawPitchRollToRef(e,t,i,Xe.Quaternion[0]),Xe.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=Xe.Vector3[0],a=Xe.Quaternion[0],o=Xe.Vector3[1];e.decompose(s,a,o);let l=Xe.Vector3[2],c=Xe.Quaternion[1],f=Xe.Vector3[3];t.decompose(l,c,f);let d=Xe.Vector3[4];b.LerpToRef(s,l,i,d);let u=Xe.Quaternion[2];je.SlerpToRef(a,c,i,u);let h=Xe.Vector3[5];return b.LerpToRef(o,f,i,h),n.ComposeToRef(d,u,h,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=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.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=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.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=Xe.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=Xe.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=Xe.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),u=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,u,1,s),a&&s.multiplyToRef(Mu,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&u===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),u=2/(r-i),h=2/(f-c),m=-(f+c)/(f-c),g=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,u,0,0,0,0,h,0,g,p,m,1,o),l&&o.multiplyToRef(Mu,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let u=-o*Math.cos(l),h=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,u,h,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),Xe.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 u=o*Math.cos(l),h=o*Math.sin(l);return n.TranslationToRef(0,0,c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,u,h,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,-c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),Xe.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,u=(c+l)/(c-l),h=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,u,1,0,0,h,0,o),s&&o.multiplyToRef(Mu,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,u=1/Math.tan(e*.5),h=a?u/t:u,m=a?u:u*t,g=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,_=Math.tan(l);return n.FromValuesToRef(h,0,0,0,0,m,0,_,0,0,g,1,0,0,p,0,s),o&&s.multiplyToRef(Mu,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,u=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,u,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(Mu,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,u=1/Math.tan(e*.5),h=a?u/t:u,m=a?u:u*t,g=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,_=Math.tan(l);return n.FromValuesToRef(h,0,0,0,0,m,0,_,0,0,g,-1,0,0,p,0,s),o&&s.multiplyToRef(Mu,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,u=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,u,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(Mu,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),u=new n;return t.multiplyToRef(i,u),u.multiplyToRef(r,u),u.multiplyToRef(d,u)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return vs.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 vs.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],u=i[2],h=i[6],m=i[10],g=i[14],p=i[3],_=i[7],v=i[11],E=i[15],T=t._m;return 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]=u,T[9]=h,T[10]=m,T[11]=g,T[12]=p,T[13]=_,T[14]=v,T[15]=E,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}};Z._IdentityReadOnly=Z.Identity();Object.defineProperties(Z.prototype,{dimension:{value:[4,4]},rank:{value:2}});Xe=class{};Xe.Vector3=dc(11,b.Zero);Xe.Matrix=dc(2,Z.Identity);Xe.Quaternion=dc(3,je.Zero);$=class{};$.Vector2=dc(3,Fe.Zero);$.Vector3=dc(13,b.Zero);$.Vector4=dc(3,Oi.Zero);$.Quaternion=dc(3,je.Zero);$.Matrix=dc(8,Z.Identity);Bt("BABYLON.Vector2",Fe);Bt("BABYLON.Vector3",b);Bt("BABYLON.Vector4",Oi);Bt("BABYLON.Matrix",Z);Mu=Z.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var uG,Hs,hG,zm=y(()=>{We();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(uG||(uG={}));Hs=class{};Hs.X=new b(1,0,0);Hs.Y=new b(0,1,0);Hs.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(hG||(hG={}))});function Hm(n){return Math.pow(n,km)}function Xm(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function Ym(n){return Math.pow(n,sG)}function Km(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var Ee,dt,Ln,Kt=y(()=>{Al();er();Kn();jn();Ee=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 dt(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=wt){return yi(this.r,e.r,t)&&yi(this.g,e.g,t)&&yi(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=Ft(this.r,e,t),i.g=Ft(this.g,e,t),i.b=Ft(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"#"+Io(e)+Io(t)+Io(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,u=e.r*l+i.r*c+t.r*f+r.r*d,h=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(u,h,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())}};Ee._V8PerformanceHack=new Ee(.5,.5,.5);Ee._BlackReadOnly=Ee.Black();Object.defineProperties(Ee.prototype,{dimension:{value:[3]},rank:{value:1}});dt=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=Ft(this.r,e,t),i.g=Ft(this.g,e,t),i.b=Ft(this.b,e,t),i.a=Ft(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=wt){return yi(this.r,e.r,t)&&yi(this.g,e.g,t)&&yi(this.b,e.b,t)&&yi(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"#"+Io(t)+Io(i)+Io(r);let s=Math.round(this.a*255);return"#"+Io(t)+Io(i)+Io(r)+Io(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=Xm(this.r),e.g=Xm(this.g),e.b=Xm(this.b)):(e.r=Hm(this.r),e.g=Hm(this.g),e.b=Hm(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=Km(this.r),e.g=Km(this.g),e.b=Km(this.b)):(e.r=Ym(this.r),e.g=Ym(this.g),e.b=Ym(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,u=e.r*l+i.r*c+t.r*f+r.r*d,h=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,g=e.a*l+i.a*c+t.a*f+r.a*d;return new n(u,h,m,g)}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 dt(0,0,0,0));Bt("BABYLON.Color3",Ee);Bt("BABYLON.Color4",dt)});var Co,jm=y(()=>{We();Co=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,u=r*l-s*o,h=Math.sqrt(f*f+d*d+u*u),m;return h!==0?m=1/h:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=u*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}};Co._TmpMatrix=Z.Identity()});var Vf,Gx=y(()=>{jm();Vf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new Co(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 mG,qm,bP,Zm,yu,Iu=y(()=>{jn();We();Kn();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(mG||(mG={}));qm=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=Ft(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)}},bP=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=qm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=qm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=qm.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=qm.FromDegrees(this.orientation===0?l-f:f-l)}},Zm=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 bP(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let u=0;u(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,u,h,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*u+3*f*f*(1-f)*h+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,u=l(d,c.x,e,i,s),h=l(d,c.y,t,r,a);this.addLineTo(u,h)}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)}},yu=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:Z.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;yi(Math.abs(e.y)/r,1,wt)?yi(Math.abs(e.x)/r,1,wt)?yi(Math.abs(e.z)/r,1,wt)?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,u=r.subtract(s),h=s.add(u.scaleInPlace(d));return this._setPointAtData(e,1-d,h,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=Z.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=je.RotationQuaternionFromAxis(r,s,i),f=je.RotationQuaternionFromAxis(o,l,a);je.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var uc,kx=y(()=>{uc=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 pG=y(()=>{We()});var Po,Qm=y(()=>{Po=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 gG=y(()=>{zm();Kt();Kn();Gx();Iu();jm();kx();We();pG();Qm()});var xl,Hce,hc,mc,Q_,Rl,$_=y(()=>{We();gG();xl=[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))],Hce=[()=>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],hc=(n,e)=>xl[n]*Hce[n](e),mc=[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],Q_=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(hc(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(hc(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(hc(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(hc(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(hc(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(hc(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(hc(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(hc(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(hc(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(mc[0]),this.l1_1.scaleInPlace(mc[1]),this.l10.scaleInPlace(mc[2]),this.l11.scaleInPlace(mc[3]),this.l2_2.scaleInPlace(mc[4]),this.l2_1.scaleInPlace(mc[5]),this.l20.scaleInPlace(mc[6]),this.l21.scaleInPlace(mc[7]),this.l22.scaleInPlace(mc[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(xl[0]),this.l1_1.scaleInPlace(xl[1]),this.l10.scaleInPlace(xl[2]),this.l11.scaleInPlace(xl[3]),this.l2_2.scaleInPlace(xl[4]),this.l2_1.scaleInPlace(xl[5]),this.l20.scaleInPlace(xl[6]),this.l21.scaleInPlace(xl[7]),this.l22.scaleInPlace(xl[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}},Rl=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=Q_.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 Xt=y(()=>{});function _G(n){let e=n.getClassName();return zx[e]||(zx[e]={}),zx[e]}function Hx(n){let e=n.getClassName();if(Wx[e])return Wx[e];Wx[e]={};let t=Wx[e],i=n,r=e;for(;r;){let s=zx[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 Wx,zx,MP=y(()=>{Wx={},zx={}});function za(n,e){return(t,i)=>{let r=_G(t);r[i]||(r[i]={type:n,sourceName:e})}}function Xce(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 ce(n,e=null){return Xce(n,e)}function F(n){return za(0,n)}function Wt(n){return za(1,n)}function yr(n){return za(2,n)}function $m(n){return za(3,n)}function Jm(n){return za(4,n)}function Jr(n){return za(5,n)}function Xx(n){return za(6,n)}function vG(n){return za(7,n)}function ep(n){return za(8,n)}function EG(n){return za(9,n)}function SG(n){return za(10,n)}function TG(n){return za(11,n)}function Xs(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 gt(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 zt=y(()=>{MP();Xs.filter=function(n){return(e,t,i)=>Xs(e,t,i,n)}});function Gf(){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 J_=y(()=>{});function Yce(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var wr,Cu=y(()=>{wr=class n{constructor(){this._xhr=Yce(),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,u=c.getResponseHeader("Content-Type");u&&d&&d.set("Content-Type",u),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:h=>c.getResponseHeader(h)},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)}};wr.CustomRequestHeaders={};wr.CustomRequestModifiers=new Array;wr.SkipRequestModificationForBabylonCDN=!0});var kf,AG=y(()=>{kf=class{};kf.FilesToLoad={}});var Yx,xG=y(()=>{Yx=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 pc,Ha,Ys,ev=y(()=>{pc=class extends Error{};pc._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));Ha={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Ys=class n extends pc{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",pc._setPrototypeOf(this,n.prototype)}}});function Kce(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 jce(n){let e=yP(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{RG=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():Kce(e)},yP=n=>atob(n),bG=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:jce(n)});function qce(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 Zce(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 bl(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 IP(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 Pu(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 u=0;u{for(let h=0;hn.length)throw new Error("Last accessed index is out of bounds.");if(g{for(let T=0;Tf.byteLength)throw new Error("Last accessed byte is out of bounds.");let h=e*o;if(r{for(let _=0;_{for(let u=0;u{Lt()});function zf(n){return bG(n.split(",")[1])}var CG,rp,jx,PP,Qce,qi,qx,IG,np,Du,Ml,Zx,PG,DG,Wf,LG,OG,$ce,iv,Jce,gc=y(()=>{Cu();Wa();vi();AG();xG();ev();tv();bx();Gi();Lt();Sl();Uf();Hr();ip();CG=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),rp=class n extends Ys{constructor(e,t){super(e,Ha.LoadFileError),this.name="LoadFileError",pc._setPrototypeOf(this,n.prototype),t instanceof wr?this.request=t:this.file=t}},jx=class n extends Ys{constructor(e,t){super(e,Ha.RequestFileError),this.request=t,this.name="RequestFileError",pc._setPrototypeOf(this,n.prototype)}},PP=class n extends Ys{constructor(e,t){super(e,Ha.ReadFileError),this.file=t,this.name="ReadFileError",pc._setPrototypeOf(this,n.prototype)}},Qce=n=>(n=n.replace(/#/gm,"%23"),n),qi={DefaultRetryStrategy:Yx.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:Qce},qx=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&qi.CorsBehavior)if(typeof qi.CorsBehavior=="string"||qi.CorsBehavior instanceof String)e.crossOrigin=qi.CorsBehavior;else{let t=qi.CorsBehavior(n);t&&(e.crossOrigin=t)}},IG={getRequiredSize:null},np=(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 S;n instanceof ArrayBuffer?S=n:S=Kx(n),o=URL.createObjectURL(new Blob([S],{type:r})),l=!0}else o=`data:${r};base64,`+tp(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=qi.CleanUrl(n),o=qi.PreprocessUrl(o));let c=S=>{if(t){let A=o||n.toString();t(`Error while trying to load image: ${A.indexOf("http")===0||A.length<=128?A:A.slice(0,128)+"..."}`,S)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return Ml(o,S=>{a.createImageBitmap(new Blob([S],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(A=>{e(A),l&&URL.revokeObjectURL(o)}).catch(A=>{t&&t("Error while trying to load image: "+n,A)})},void 0,i||void 0,!0,(S,A)=>{c(A)}),null;let f=new Image;if(IG.getRequiredSize){let S=IG.getRequiredSize(n);S.width&&(f.width=S.width),S.height&&(f.height=S.height)}qx(o,f);let d=[],u=()=>{for(let S of d)S.target.addEventListener(S.name,S.handler)},h=()=>{for(let S of d)S.target.removeEventListener(S.name,S.handler);d.length=0},m=()=>{h(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},g=S=>{h(),c(S),l&&f.src&&URL.revokeObjectURL(f.src)},p=S=>{if(S.blockedURI!==f.src||S.disposition==="report")return;h();let A=new Error(`CSP violation of policy ${S.effectiveDirective} ${S.blockedURI}. Current policy is ${S.originalPolicy}`);Oe.UseFallbackTexture=!1,c(A),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:g}),d.push({target:document,name:"securitypolicyviolation",handler:p}),u();let _=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",E=()=>{_||v||!wr.IsCustomRequestAvailable?f.src=o:Ml(o,(S,A,R)=>{let M=!r&&R?R:r,I=new Blob([S],{type:M}),C=URL.createObjectURL(I);l=!0,f.src=C},void 0,i||void 0,!0,(S,A)=>{c(A)})},T=()=>{i&&i.loadImage(o,f)};if(!_&&!v&&i&&i.enableTexturesOffline)i.open(T,E);else{if(o.indexOf("file:")!==-1){let S=decodeURIComponent(o.substring(5).toLowerCase());if(kf.FilesToLoad[S]&&typeof URL!="undefined"){try{let A;try{A=URL.createObjectURL(kf.FilesToLoad[S])}catch(R){A=URL.createObjectURL(kf.FilesToLoad[S])}f.src=A,l=!0}catch(A){f.src=""}return f}}E()}return f},Du=(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 PP(`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},Ml=(n,e,t,i,r,s,a)=>{if(n.name)return Du(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=kf.FilesToLoad[f];if(d)return Du(d,e,t,r,s?u=>s(void 0,new rp(u.message,u.file)):void 0)}let{match:l,type:c}=LG(o);if(l){let f={onCompleteObservable:new ie,abort:()=>()=>{}};try{let d=r?zf(o):OG(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return bo.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return Zx(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 rp(f.message,f.request))}:void 0,a)},Zx=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=qi.CleanUrl(n),n=qi.PreprocessUrl(n);let o=qi.BaseUrl+n,l=!1,c={onCompleteObservable:new ie,abort:()=>l=!0},f=()=>{let u=new wr,h=null,m,g=()=>{u&&(t&&u.removeEventListener("progress",t),m&&u.removeEventListener("readystatechange",m),u.removeEventListener("loadend",p))},p=()=>{g(),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(),u&&u.readyState!==(XMLHttpRequest.DONE||4)&&u.abort(),h!==null&&(clearTimeout(h),h=null),u=null};let _=E=>{let T=E.message||"Unknown error";s&&u?s(new jx(T,u)):ee.Error(T)},v=E=>{if(u){if(u.open("GET",o),a)try{a(u)}catch(T){_(T);return}r&&(u.responseType="arraybuffer"),t&&u.addEventListener("progress",t),p&&u.addEventListener("loadend",p),m=()=>{if(!(l||!u)&&u.readyState===(XMLHttpRequest.DONE||4)){if(m&&u.removeEventListener("readystatechange",m),u.status>=200&&u.status<300||u.status===0&&(!Sr()||DG())){let A=r?u.response:u.responseText;if(A!==null){try{e&&e(A,u)}catch(R){_(R)}return}}let T=qi.DefaultRetryStrategy;if(T){let A=T(o,u,E);if(A!==-1){g(),u=new wr,h=setTimeout(()=>v(E+1),A);return}}let S=new jx("Error status: "+u.status+" "+u.statusText+" - Unable to load "+o,u);s&&s(S)}},u.addEventListener("readystatechange",m),u.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let u=m=>{m&&m.status>400?s&&s(m):f()},h=()=>{i&&i.loadFile(qi.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,u,r)};i.open(h,u)}else f();return c},PG=n=>{let{match:e,type:t}=LG(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}},DG=()=>typeof location!="undefined"&&location.protocol==="file:",Wf=n=>CG.test(n),LG=n=>{let e=CG.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};OG=n=>yP(n.split(",")[1]),$ce=()=>{Re._FileToolsLoadImage=np,Fm.loadFile=Ml,fP.loadFile=Ml};$ce();Jce=(n,e,t,i,r,s,a,o,l,c)=>{iv={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(iv,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(iv,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(iv,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(iv,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};Jce(zf,OG,qi,Wf,DG,Ml,np,Du,Zx,qx)});var Qx,NG=y(()=>{kx();Qx=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=uc.Zero(),this._cachedBaseSize=uc.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 $x,wG=y(()=>{$x=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 ti,Hf=y(()=>{wG();ti=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):$x.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var FG,st,Dr=y(()=>{An();Hf();Kt();We();MP();FG=function(n,e,t,i={}){let r=n();ti&&ti.HasTags(e)&&ti.AddTagsTo(r,ti.GetTags(e,!0));let s=Hx(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||st.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},st=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw $e("ImageProcessingConfiguration")};st._FresnelParametersParser=n=>{throw $e("FresnelParameters")};st._ColorCurvesParser=n=>{throw $e("ColorCurves")};st._TextureParser=(n,e,t)=>{throw $e("Texture")}});var Ai,rv=y(()=>{Xt();zt();vi();We();Gi();J_();gc();NG();Dr();Ai=class n extends Qx{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=Gf()),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 Z.IdentityReadOnly}getReflectionTextureMatrix(){return Z.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=st.Serialize(this);return st.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"}};Ai.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],Ai.prototype,"uniqueId",void 0);P([F()],Ai.prototype,"name",void 0);P([F()],Ai.prototype,"displayName",void 0);P([F()],Ai.prototype,"metadata",void 0);P([F("hasAlpha")],Ai.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],Ai.prototype,"_getAlphaFromRGB",void 0);P([F()],Ai.prototype,"level",void 0);P([F("coordinatesIndex")],Ai.prototype,"_coordinatesIndex",void 0);P([F()],Ai.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],Ai.prototype,"_coordinatesMode",void 0);P([F()],Ai.prototype,"wrapU",null);P([F()],Ai.prototype,"wrapV",null);P([F()],Ai.prototype,"wrapR",void 0);P([F()],Ai.prototype,"anisotropicFilteringLevel",void 0);P([F()],Ai.prototype,"isCube",null);P([F()],Ai.prototype,"is3D",null);P([F()],Ai.prototype,"is2DArray",null);P([F()],Ai.prototype,"gammaSpace",null);P([F()],Ai.prototype,"invertZ",void 0);P([F()],Ai.prototype,"lodLevelInAlpha",void 0);P([F()],Ai.prototype,"lodGenerationOffset",null);P([F()],Ai.prototype,"lodGenerationScale",null);P([F()],Ai.prototype,"linearSpecularLOD",null);P([Wt()],Ai.prototype,"irradianceTexture",null);P([F()],Ai.prototype,"isRenderTarget",void 0)});var Xf,_c,DP=y(()=>{We();jn();$_();Kn();Kt();Xf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},_c=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((E=e._texture)==null?void 0:E.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,u,h,m]).then(([S,A,R,M,I,C])=>{let D=l;_&&(S=this._DownsampleFace(S,t,r,4),A=this._DownsampleFace(A,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),I=this._DownsampleFace(I,t,r,4),C=this._DownsampleFace(C,t,r,4),D=r);let w={size:D,right:A,left:S,up:R,down:M,front:I,back:C,format:p,type:S instanceof Float32Array?1:0,gammaSpace:g};T(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 u=0;u0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,g=["right","left","up","down","front","back"],p={};for(let _ of g)p[_]=this._DownsampleFace(e[_],e.size,i,m);e={...e,...p,size:i}}let r=new Q_,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let g=this._FileFaces[m],p=e[g.name],_=c,v=e.format===5?4:3;for(let E=0;ED){let O=D/k;M*=O,I*=O,C*=O}}else M=Ft(M,0,D),I=Ft(I,0,D),C=Ft(C,0,D);let w=new Ee(M,I,C);r.addLight(A,w,R),s+=R,T+=a}_+=o}}let h=4*Math.PI*6/6/s;return r.scaleInPlace(h),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),Rl.FromHarmonics(r)}};_c._FileFaces=[new Xf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Xf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Xf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Xf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Xf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Xf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];_c.MAX_HDRI_VALUE=4096;_c.PRESERVE_CLAMPED_COLORS=!1});var vc,LP=y(()=>{Lt();er();vc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=Dn(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 UG(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?BG(r,n.getSize(),i.invertY):null}async function VG(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?BG(r,n.getSize(),i.invertY):null}var GG=y(()=>{});var It,hn=y(()=>{It=!1});var ge,Xr=y(()=>{Xt();zt();vi();We();rv();er();An();Sl();LP();jm();tv();GG();hn();Dr();ge=class n extends Ai{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw $e("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,u,h,m){var R,M,I,C,D,w,k,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 g,p=!1,_=null,v=!0;typeof i=="object"&&i!==null?(g=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!It,s=(I=i.samplingMode)!=null?I:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(D=i.onError)!=null?D:null,l=(w=i.buffer)!=null?w:null,c=(k=i.deleteBuffer)!=null?k:!1,f=i.format,d=i.mimeType,u=i.loaderOptions,h=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,_=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):g=!!i,this._gammaSpace=v,this._noMipmap=g,this._invertY=r===void 0?!It:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=u,this._creationFlags=h,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let E=this.getScene(),T=this._getEngine();if(!T)return;T.onBeforeTextureInitObservable.notifyObservers(this);let S=()=>{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&&E&&E.resetCachedMaterial()},A=(q,j)=>{this._loadingError=!0,this._errorObject={message:q,exception:j},o&&o(q,j),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!_){this._delayedOnLoad=S,this._delayedOnError=A;return}if(this._texture=_!=null?_:this._getFromCache(this.url,g,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)bo.SetImmediate(()=>S());else{let q=this._texture.onLoadedObservable.add(S);this._texture.onErrorObservable.add(j=>{var J;A(j.message,j.exception),(J=this._texture)==null||J.onLoadedObservable.remove(q)})}else if(!E||!E.useDelayedTextureLoading){try{this._texture=T.createTexture(this.url,g,this._invertY,E,s,S,A,this._buffer,void 0,this._format,this._forcedExtension,d,u,h,p)}catch(q){throw A("error loading",q),q}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=S,this._delayedOnError=A}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?bo.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=Z.Zero(),this._rowGenerationMatrix=new Z,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),Z.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(Z.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),Z.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),Z.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),Z.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),Z.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=Z.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=Z.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:{Z.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:{Z.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:Z.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 st.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,${tp(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?UG(this):VG(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=vc.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,u,h;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=Co.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let g=0;g{a(m)}},p=e.base64String,_=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",_,t,g),m.name=e.name}else{let g;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?g=e.name:g=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(g=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(u=e._useSRGBBuffer)!=null?u:!1,creationFlags:(h=e._creationFlags)!=null?h:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(g,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,u){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,u)}};ge.SerializeBuffers=!0;ge.ForceSerializeBuffers=!1;ge.OnTextureLoadErrorObservable=new ie;ge._SerializeInternalTextureUniqueId=!1;ge._CubeTextureParser=(n,e,t)=>{throw $e("CubeTexture")};ge._CreateMirror=(n,e,t,i)=>{throw $e("MirrorTexture")};ge._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw $e("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);Bt("BABYLON.Texture",ge);st._TextureParser=ge.Parse});var Do,L,Yi=y(()=>{pP();Lt();ip();Do=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 xu?(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 L(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)}},L=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,u=!1,h=1,m=!1){var _,v,E,T,S;this._isDisposed=!1;let g;if(this.engine=e,typeof r=="object"&&r!==null?(g=(_=r.updatable)!=null?_:!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,u=(E=r.useBytes)!=null?E:!1,h=(T=r.divisor)!=null?T:1,m=(S=r.takeBufferOwnership)!=null?S:!1,this._label=r.label):g=!!r,t instanceof Do?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new Do(e,t,g,a,s,o,u,h,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let A=this.getData();this.type=A?n.GetDataType(A):n.FLOAT}else this.type=f;let p=bl(this.type);u?(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?h: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?CP(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/bl(this.type)}getOffset(){return this.byteOffset/bl(this.type)}getSize(e=!1){return e?this._size*bl(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){Pu(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{Yi();vi();Ec=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new ie,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[L.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[L.PositionKind]=new L(this._scene.getEngine(),e,L.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{Lt();kG=(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;yl=class{static DeepCopy(e,t,i,r,s=!1){let a=efe(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{vi();Wa();Lt();nv();cc();An();Cu();Gi();gc();Sl();LP();J_();Mo();pe=class{static get BaseUrl(){return qi.BaseUrl}static set BaseUrl(e){qi.BaseUrl=e}static get CleanUrl(){return qi.CleanUrl}static set CleanUrl(e){qi.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("://"){Ml(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(St.AssetBaseUrl&&e.startsWith(St._DefaultAssetsUrl)){let t=St.AssetBaseUrl.endsWith("/")?St.AssetBaseUrl.slice(0,-1):St.AssetBaseUrl;return e.replace(St._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(St._DefaultCdnUrl)){if(St.ScriptBaseUrl){let i=St.ScriptBaseUrl.endsWith("/")?St.ScriptBaseUrl.slice(0,-1):St.ScriptBaseUrl;e=e.replace(St._DefaultCdnUrl,i)}else if(St._CdnVersion){let i=`${St._DefaultCdnUrl}/v${St._CdnVersion}`;e.startsWith(i)||(e=e.replace(St._DefaultCdnUrl,i))}}return e=St.ScriptPreprocessUrl(e),t&&!St.IsAbsoluteUrl(e)&&(e=St.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=St.GetBabylonScriptURL(e),St.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=St.GetBabylonScriptURL(e),await St.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 Du(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){yl.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"}St.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&&St.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(St._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 $e("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw $e("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,u,h){throw $e("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,u){throw $e("ScreenshotTools")}static RandomId(){return Gf()}static IsBase64(e){return Wf(e)}static DecodeBase64(e){return zf(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&St.PerformanceUserMarkLogLevel)===St.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartUserMark,St.EndPerformanceCounter=St._EndUserMark);return}if((e&St.PerformanceConsoleLogLevel)===St.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartPerformanceConsole,St.EndPerformanceCounter=St._EndPerformanceConsole);return}St.StartPerformanceCounter=St._StartPerformanceCounterDisabled,St.EndPerformanceCounter=St._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(!St._Performance){if(!Sr())return;St._Performance=window.performance}!t||!St._Performance.mark||St._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!St._Performance.mark||(St._Performance.mark(e+"-End"),St._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(St._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(St._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(St._NativePerformanceCounterHandles.has(e))St.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);St._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=St._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),St._NativePerformanceCounterHandles.delete(e)):St.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return br.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 lc()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};St=pe;pe.AssetBaseUrl="";pe.UseCustomRequestHeaders=!1;pe.CustomRequestHeaders=wr.CustomRequestHeaders;pe.GetDOMTextContent=cx;pe._DefaultCdnUrl="https://cdn.babylonjs.com";pe._CdnVersion="9.6.0";pe._DefaultAssetsUrl="https://assets.babylonjs.com/core";pe.LoadScript=typeof _native=="undefined"?St._LoadScriptWeb:St._LoadScriptNative;pe.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.")};pe.NoneLogLevel=ee.NoneLogLevel;pe.MessageLogLevel=ee.MessageLogLevel;pe.WarningLogLevel=ee.WarningLogLevel;pe.ErrorLogLevel=ee.ErrorLogLevel;pe.AllLogLevel=ee.AllLogLevel;pe.IsWindowObjectExist=Sr;pe.PerformanceNoneLogLevel=0;pe.PerformanceUserMarkLogLevel=1;pe.PerformanceConsoleLogLevel=2;pe._NativePerformanceCounterHandles=new Map;pe.StartPerformanceCounter=St._StartPerformanceCounterDisabled;pe.EndPerformanceCounter=St._EndPerformanceCounterDisabled;eR=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)}};pe.Mix=j_;pe.IsExponentOfTwo=Ru;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 Tr,Yf=y(()=>{Lt();Ni();Tr=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{Ki=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}};Ki._GlobalId=0;Lo=class extends Ki{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{Oo();We();sv=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 Ki(256),this._transparentSubMeshes=new Ki(256),this._alphaTestSubMeshes=new Ki(256),this._depthOnlySubMeshes=new Ki(256),this._particleSystems=new Ki(256),this._spriteManagers=new Ki(256),this._empty=!0,this._edgesRenderers=new Lo(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 u=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);u.length&&this._renderTransparent(u)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let u=0;ut._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{WG();OP=class{},Xa=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 OP,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{Qt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};Qt.FALLOFF_DEFAULT=0;Qt.FALLOFF_PHYSICAL=1;Qt.FALLOFF_GLTF=2;Qt.FALLOFF_STANDARD=3;Qt.LIGHTMAP_DEFAULT=0;Qt.LIGHTMAP_SPECULAR=1;Qt.LIGHTMAP_SHADOWSONLY=2;Qt.INTENSITYMODE_AUTOMATIC=0;Qt.INTENSITYMODE_LUMINOUSPOWER=1;Qt.INTENSITYMODE_LUMINOUSINTENSITY=2;Qt.INTENSITYMODE_ILLUMINANCE=3;Qt.INTENSITYMODE_LUMINANCE=4;Qt.LIGHTTYPEID_POINTLIGHT=0;Qt.LIGHTTYPEID_DIRECTIONALLIGHT=1;Qt.LIGHTTYPEID_SPOTLIGHT=2;Qt.LIGHTTYPEID_HEMISPHERICLIGHT=3;Qt.LIGHTTYPEID_RECT_AREALIGHT=4;Qt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ya,NP=y(()=>{Yf();vi();tR();Al();Sl();Lt();Oo();av();Ya=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=Ux(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 Ki(256),this._activeBoundingBoxes=new Ki(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 Xa(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===Qt.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 u,h;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=(u=this.cameraForLOD)!=null?u:c,d=(h=i.getBoundingBoxRenderer)==null?void 0:h.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{Sl();Ts=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():bo.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var HG={};Be(HG,{postprocessVertexShader:()=>tfe});var wP,zG,tfe,FP=y(()=>{W();wP="postprocessVertexShader",zG=`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):(RP(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 uG(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 xP(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(!yi(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=Ss(this._m[0]);for(let t=1;t<16;t++)e=e*397^Ss(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new je,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||Xe.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,Xe.Matrix[0]),je.FromRotationMatrixToRef(Xe.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Oi(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=Xe.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=Xe.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,u,h,m,g,p,_){let v=_._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]=u,v[12]=h,v[13]=m,v[14]=g,v[15]=p,_.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p){let _=new n,v=_._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]=u,v[12]=h,v[13]=m,v[14]=g,v[15]=p,_.markAsUpdated(),_}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,u=l+l,h=a*f,m=a*d,g=a*u,p=o*d,_=o*u,v=l*u,E=c*f,T=c*d,S=c*u,A=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*A,s[1]=(m+S)*A,s[2]=(g-T)*A,s[3]=0,s[4]=(m-S)*R,s[5]=(1-(h+v))*R,s[6]=(_+E)*R,s[7]=0,s[8]=(g+T)*M,s[9]=(_-E)*M,s[10]=(1-(h+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(Xe.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+wt)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 je.RotationYawPitchRollToRef(e,t,i,Xe.Quaternion[0]),Xe.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=Xe.Vector3[0],a=Xe.Quaternion[0],o=Xe.Vector3[1];e.decompose(s,a,o);let l=Xe.Vector3[2],c=Xe.Quaternion[1],f=Xe.Vector3[3];t.decompose(l,c,f);let d=Xe.Vector3[4];b.LerpToRef(s,l,i,d);let u=Xe.Quaternion[2];je.SlerpToRef(a,c,i,u);let h=Xe.Vector3[5];return b.LerpToRef(o,f,i,h),n.ComposeToRef(d,u,h,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=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.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=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.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=Xe.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=Xe.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=Xe.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),u=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,u,1,s),a&&s.multiplyToRef(Mu,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&u===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),u=2/(r-i),h=2/(f-c),m=-(f+c)/(f-c),g=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,u,0,0,0,0,h,0,g,p,m,1,o),l&&o.multiplyToRef(Mu,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let u=-o*Math.cos(l),h=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,u,h,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),Xe.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 u=o*Math.cos(l),h=o*Math.sin(l);return n.TranslationToRef(0,0,c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,u,h,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,-c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),Xe.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,u=(c+l)/(c-l),h=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,u,1,0,0,h,0,o),s&&o.multiplyToRef(Mu,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,u=1/Math.tan(e*.5),h=a?u/t:u,m=a?u:u*t,g=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,_=Math.tan(l);return n.FromValuesToRef(h,0,0,0,0,m,0,_,0,0,g,1,0,0,p,0,s),o&&s.multiplyToRef(Mu,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,u=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,u,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(Mu,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,u=1/Math.tan(e*.5),h=a?u/t:u,m=a?u:u*t,g=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,_=Math.tan(l);return n.FromValuesToRef(h,0,0,0,0,m,0,_,0,0,g,-1,0,0,p,0,s),o&&s.multiplyToRef(Mu,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,u=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,u,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(Mu,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),u=new n;return t.multiplyToRef(i,u),u.multiplyToRef(r,u),u.multiplyToRef(d,u)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return vs.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 vs.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],u=i[2],h=i[6],m=i[10],g=i[14],p=i[3],_=i[7],v=i[11],E=i[15],T=t._m;return 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]=u,T[9]=h,T[10]=m,T[11]=g,T[12]=p,T[13]=_,T[14]=v,T[15]=E,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}};Z._IdentityReadOnly=Z.Identity();Object.defineProperties(Z.prototype,{dimension:{value:[4,4]},rank:{value:2}});Xe=class{};Xe.Vector3=dc(11,b.Zero);Xe.Matrix=dc(2,Z.Identity);Xe.Quaternion=dc(3,je.Zero);$=class{};$.Vector2=dc(3,Fe.Zero);$.Vector3=dc(13,b.Zero);$.Vector4=dc(3,Oi.Zero);$.Quaternion=dc(3,je.Zero);$.Matrix=dc(8,Z.Identity);Bt("BABYLON.Vector2",Fe);Bt("BABYLON.Vector3",b);Bt("BABYLON.Vector4",Oi);Bt("BABYLON.Matrix",Z);Mu=Z.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var hG,Xs,mG,zm=y(()=>{We();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(hG||(hG={}));Xs=class{};Xs.X=new b(1,0,0);Xs.Y=new b(0,1,0);Xs.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(mG||(mG={}))});function Hm(n){return Math.pow(n,km)}function Xm(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function Ym(n){return Math.pow(n,aG)}function Km(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var Ee,dt,Ln,Kt=y(()=>{Al();er();Kn();jn();Ee=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 dt(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=wt){return yi(this.r,e.r,t)&&yi(this.g,e.g,t)&&yi(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=Ft(this.r,e,t),i.g=Ft(this.g,e,t),i.b=Ft(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"#"+Io(e)+Io(t)+Io(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,u=e.r*l+i.r*c+t.r*f+r.r*d,h=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(u,h,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())}};Ee._V8PerformanceHack=new Ee(.5,.5,.5);Ee._BlackReadOnly=Ee.Black();Object.defineProperties(Ee.prototype,{dimension:{value:[3]},rank:{value:1}});dt=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=Ft(this.r,e,t),i.g=Ft(this.g,e,t),i.b=Ft(this.b,e,t),i.a=Ft(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=wt){return yi(this.r,e.r,t)&&yi(this.g,e.g,t)&&yi(this.b,e.b,t)&&yi(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"#"+Io(t)+Io(i)+Io(r);let s=Math.round(this.a*255);return"#"+Io(t)+Io(i)+Io(r)+Io(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=Xm(this.r),e.g=Xm(this.g),e.b=Xm(this.b)):(e.r=Hm(this.r),e.g=Hm(this.g),e.b=Hm(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=Km(this.r),e.g=Km(this.g),e.b=Km(this.b)):(e.r=Ym(this.r),e.g=Ym(this.g),e.b=Ym(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,u=e.r*l+i.r*c+t.r*f+r.r*d,h=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,g=e.a*l+i.a*c+t.a*f+r.a*d;return new n(u,h,m,g)}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 dt(0,0,0,0));Bt("BABYLON.Color3",Ee);Bt("BABYLON.Color4",dt)});var Co,jm=y(()=>{We();Co=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,u=r*l-s*o,h=Math.sqrt(f*f+d*d+u*u),m;return h!==0?m=1/h:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=u*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}};Co._TmpMatrix=Z.Identity()});var Vf,Wx=y(()=>{jm();Vf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new Co(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 pG,qm,MP,Zm,yu,Iu=y(()=>{jn();We();Kn();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(pG||(pG={}));qm=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=Ft(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)}},MP=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=qm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=qm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=qm.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=qm.FromDegrees(this.orientation===0?l-f:f-l)}},Zm=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 MP(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let u=0;u(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,u,h,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*u+3*f*f*(1-f)*h+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,u=l(d,c.x,e,i,s),h=l(d,c.y,t,r,a);this.addLineTo(u,h)}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)}},yu=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:Z.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;yi(Math.abs(e.y)/r,1,wt)?yi(Math.abs(e.x)/r,1,wt)?yi(Math.abs(e.z)/r,1,wt)?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,u=r.subtract(s),h=s.add(u.scaleInPlace(d));return this._setPointAtData(e,1-d,h,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=Z.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=je.RotationQuaternionFromAxis(r,s,i),f=je.RotationQuaternionFromAxis(o,l,a);je.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var uc,zx=y(()=>{uc=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 gG=y(()=>{We()});var Po,Qm=y(()=>{Po=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 _G=y(()=>{zm();Kt();Kn();Wx();Iu();jm();zx();We();gG();Qm()});var xl,Kce,hc,mc,Q_,Rl,$_=y(()=>{We();_G();xl=[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))],Kce=[()=>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],hc=(n,e)=>xl[n]*Kce[n](e),mc=[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],Q_=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(hc(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(hc(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(hc(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(hc(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(hc(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(hc(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(hc(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(hc(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(hc(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(mc[0]),this.l1_1.scaleInPlace(mc[1]),this.l10.scaleInPlace(mc[2]),this.l11.scaleInPlace(mc[3]),this.l2_2.scaleInPlace(mc[4]),this.l2_1.scaleInPlace(mc[5]),this.l20.scaleInPlace(mc[6]),this.l21.scaleInPlace(mc[7]),this.l22.scaleInPlace(mc[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(xl[0]),this.l1_1.scaleInPlace(xl[1]),this.l10.scaleInPlace(xl[2]),this.l11.scaleInPlace(xl[3]),this.l2_2.scaleInPlace(xl[4]),this.l2_1.scaleInPlace(xl[5]),this.l20.scaleInPlace(xl[6]),this.l21.scaleInPlace(xl[7]),this.l22.scaleInPlace(xl[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}},Rl=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=Q_.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 Xt=y(()=>{});function vG(n){let e=n.getClassName();return Xx[e]||(Xx[e]={}),Xx[e]}function Yx(n){let e=n.getClassName();if(Hx[e])return Hx[e];Hx[e]={};let t=Hx[e],i=n,r=e;for(;r;){let s=Xx[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 Hx,Xx,yP=y(()=>{Hx={},Xx={}});function za(n,e){return(t,i)=>{let r=vG(t);r[i]||(r[i]={type:n,sourceName:e})}}function jce(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 ce(n,e=null){return jce(n,e)}function F(n){return za(0,n)}function Wt(n){return za(1,n)}function yr(n){return za(2,n)}function $m(n){return za(3,n)}function Jm(n){return za(4,n)}function Jr(n){return za(5,n)}function Kx(n){return za(6,n)}function EG(n){return za(7,n)}function ep(n){return za(8,n)}function SG(n){return za(9,n)}function TG(n){return za(10,n)}function AG(n){return za(11,n)}function Ys(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 gt(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 zt=y(()=>{yP();Ys.filter=function(n){return(e,t,i)=>Ys(e,t,i,n)}});function Gf(){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 J_=y(()=>{});function qce(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var wr,Cu=y(()=>{wr=class n{constructor(){this._xhr=qce(),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,u=c.getResponseHeader("Content-Type");u&&d&&d.set("Content-Type",u),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:h=>c.getResponseHeader(h)},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)}};wr.CustomRequestHeaders={};wr.CustomRequestModifiers=new Array;wr.SkipRequestModificationForBabylonCDN=!0});var kf,xG=y(()=>{kf=class{};kf.FilesToLoad={}});var jx,RG=y(()=>{jx=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 pc,Ha,Ks,ev=y(()=>{pc=class extends Error{};pc._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));Ha={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Ks=class n extends pc{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",pc._setPrototypeOf(this,n.prototype)}}});function Zce(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 Qce(n){let e=IP(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{bG=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():Zce(e)},IP=n=>atob(n),MG=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:Qce(n)});function $ce(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 Jce(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 bl(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 CP(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 Pu(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 u=0;u{for(let h=0;hn.length)throw new Error("Last accessed index is out of bounds.");if(g{for(let T=0;Tf.byteLength)throw new Error("Last accessed byte is out of bounds.");let h=e*o;if(r{for(let _=0;_{for(let u=0;u{Lt()});function zf(n){return MG(n.split(",")[1])}var PG,rp,Zx,DP,efe,qi,Qx,CG,np,Du,Ml,$x,DG,LG,Wf,OG,NG,tfe,iv,ife,gc=y(()=>{Cu();Wa();vi();xG();RG();ev();tv();yx();Gi();Lt();Sl();Uf();Hr();ip();PG=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),rp=class n extends Ks{constructor(e,t){super(e,Ha.LoadFileError),this.name="LoadFileError",pc._setPrototypeOf(this,n.prototype),t instanceof wr?this.request=t:this.file=t}},Zx=class n extends Ks{constructor(e,t){super(e,Ha.RequestFileError),this.request=t,this.name="RequestFileError",pc._setPrototypeOf(this,n.prototype)}},DP=class n extends Ks{constructor(e,t){super(e,Ha.ReadFileError),this.file=t,this.name="ReadFileError",pc._setPrototypeOf(this,n.prototype)}},efe=n=>(n=n.replace(/#/gm,"%23"),n),qi={DefaultRetryStrategy:jx.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:efe},Qx=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&qi.CorsBehavior)if(typeof qi.CorsBehavior=="string"||qi.CorsBehavior instanceof String)e.crossOrigin=qi.CorsBehavior;else{let t=qi.CorsBehavior(n);t&&(e.crossOrigin=t)}},CG={getRequiredSize:null},np=(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 S;n instanceof ArrayBuffer?S=n:S=qx(n),o=URL.createObjectURL(new Blob([S],{type:r})),l=!0}else o=`data:${r};base64,`+tp(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=qi.CleanUrl(n),o=qi.PreprocessUrl(o));let c=S=>{if(t){let A=o||n.toString();t(`Error while trying to load image: ${A.indexOf("http")===0||A.length<=128?A:A.slice(0,128)+"..."}`,S)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return Ml(o,S=>{a.createImageBitmap(new Blob([S],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(A=>{e(A),l&&URL.revokeObjectURL(o)}).catch(A=>{t&&t("Error while trying to load image: "+n,A)})},void 0,i||void 0,!0,(S,A)=>{c(A)}),null;let f=new Image;if(CG.getRequiredSize){let S=CG.getRequiredSize(n);S.width&&(f.width=S.width),S.height&&(f.height=S.height)}Qx(o,f);let d=[],u=()=>{for(let S of d)S.target.addEventListener(S.name,S.handler)},h=()=>{for(let S of d)S.target.removeEventListener(S.name,S.handler);d.length=0},m=()=>{h(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},g=S=>{h(),c(S),l&&f.src&&URL.revokeObjectURL(f.src)},p=S=>{if(S.blockedURI!==f.src||S.disposition==="report")return;h();let A=new Error(`CSP violation of policy ${S.effectiveDirective} ${S.blockedURI}. Current policy is ${S.originalPolicy}`);Oe.UseFallbackTexture=!1,c(A),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:g}),d.push({target:document,name:"securitypolicyviolation",handler:p}),u();let _=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",E=()=>{_||v||!wr.IsCustomRequestAvailable?f.src=o:Ml(o,(S,A,R)=>{let M=!r&&R?R:r,I=new Blob([S],{type:M}),C=URL.createObjectURL(I);l=!0,f.src=C},void 0,i||void 0,!0,(S,A)=>{c(A)})},T=()=>{i&&i.loadImage(o,f)};if(!_&&!v&&i&&i.enableTexturesOffline)i.open(T,E);else{if(o.indexOf("file:")!==-1){let S=decodeURIComponent(o.substring(5).toLowerCase());if(kf.FilesToLoad[S]&&typeof URL!="undefined"){try{let A;try{A=URL.createObjectURL(kf.FilesToLoad[S])}catch(R){A=URL.createObjectURL(kf.FilesToLoad[S])}f.src=A,l=!0}catch(A){f.src=""}return f}}E()}return f},Du=(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 DP(`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},Ml=(n,e,t,i,r,s,a)=>{if(n.name)return Du(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=kf.FilesToLoad[f];if(d)return Du(d,e,t,r,s?u=>s(void 0,new rp(u.message,u.file)):void 0)}let{match:l,type:c}=OG(o);if(l){let f={onCompleteObservable:new ie,abort:()=>()=>{}};try{let d=r?zf(o):NG(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return bo.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return $x(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 rp(f.message,f.request))}:void 0,a)},$x=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=qi.CleanUrl(n),n=qi.PreprocessUrl(n);let o=qi.BaseUrl+n,l=!1,c={onCompleteObservable:new ie,abort:()=>l=!0},f=()=>{let u=new wr,h=null,m,g=()=>{u&&(t&&u.removeEventListener("progress",t),m&&u.removeEventListener("readystatechange",m),u.removeEventListener("loadend",p))},p=()=>{g(),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(),u&&u.readyState!==(XMLHttpRequest.DONE||4)&&u.abort(),h!==null&&(clearTimeout(h),h=null),u=null};let _=E=>{let T=E.message||"Unknown error";s&&u?s(new Zx(T,u)):ee.Error(T)},v=E=>{if(u){if(u.open("GET",o),a)try{a(u)}catch(T){_(T);return}r&&(u.responseType="arraybuffer"),t&&u.addEventListener("progress",t),p&&u.addEventListener("loadend",p),m=()=>{if(!(l||!u)&&u.readyState===(XMLHttpRequest.DONE||4)){if(m&&u.removeEventListener("readystatechange",m),u.status>=200&&u.status<300||u.status===0&&(!Sr()||LG())){let A=r?u.response:u.responseText;if(A!==null){try{e&&e(A,u)}catch(R){_(R)}return}}let T=qi.DefaultRetryStrategy;if(T){let A=T(o,u,E);if(A!==-1){g(),u=new wr,h=setTimeout(()=>v(E+1),A);return}}let S=new Zx("Error status: "+u.status+" "+u.statusText+" - Unable to load "+o,u);s&&s(S)}},u.addEventListener("readystatechange",m),u.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let u=m=>{m&&m.status>400?s&&s(m):f()},h=()=>{i&&i.loadFile(qi.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,u,r)};i.open(h,u)}else f();return c},DG=n=>{let{match:e,type:t}=OG(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}},LG=()=>typeof location!="undefined"&&location.protocol==="file:",Wf=n=>PG.test(n),OG=n=>{let e=PG.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};NG=n=>IP(n.split(",")[1]),tfe=()=>{Re._FileToolsLoadImage=np,Fm.loadFile=Ml,dP.loadFile=Ml};tfe();ife=(n,e,t,i,r,s,a,o,l,c)=>{iv={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(iv,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(iv,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(iv,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(iv,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};ife(zf,NG,qi,Wf,LG,Ml,np,Du,$x,Qx)});var Jx,wG=y(()=>{zx();Jx=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=uc.Zero(),this._cachedBaseSize=uc.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 eR,FG=y(()=>{eR=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 ti,Hf=y(()=>{FG();ti=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):eR.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var BG,st,Dr=y(()=>{An();Hf();Kt();We();yP();BG=function(n,e,t,i={}){let r=n();ti&&ti.HasTags(e)&&ti.AddTagsTo(r,ti.GetTags(e,!0));let s=Yx(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||st.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},st=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw $e("ImageProcessingConfiguration")};st._FresnelParametersParser=n=>{throw $e("FresnelParameters")};st._ColorCurvesParser=n=>{throw $e("ColorCurves")};st._TextureParser=(n,e,t)=>{throw $e("Texture")}});var Ai,rv=y(()=>{Xt();zt();vi();We();Gi();J_();gc();wG();Dr();Ai=class n extends Jx{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=Gf()),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 Z.IdentityReadOnly}getReflectionTextureMatrix(){return Z.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=st.Serialize(this);return st.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"}};Ai.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],Ai.prototype,"uniqueId",void 0);P([F()],Ai.prototype,"name",void 0);P([F()],Ai.prototype,"displayName",void 0);P([F()],Ai.prototype,"metadata",void 0);P([F("hasAlpha")],Ai.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],Ai.prototype,"_getAlphaFromRGB",void 0);P([F()],Ai.prototype,"level",void 0);P([F("coordinatesIndex")],Ai.prototype,"_coordinatesIndex",void 0);P([F()],Ai.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],Ai.prototype,"_coordinatesMode",void 0);P([F()],Ai.prototype,"wrapU",null);P([F()],Ai.prototype,"wrapV",null);P([F()],Ai.prototype,"wrapR",void 0);P([F()],Ai.prototype,"anisotropicFilteringLevel",void 0);P([F()],Ai.prototype,"isCube",null);P([F()],Ai.prototype,"is3D",null);P([F()],Ai.prototype,"is2DArray",null);P([F()],Ai.prototype,"gammaSpace",null);P([F()],Ai.prototype,"invertZ",void 0);P([F()],Ai.prototype,"lodLevelInAlpha",void 0);P([F()],Ai.prototype,"lodGenerationOffset",null);P([F()],Ai.prototype,"lodGenerationScale",null);P([F()],Ai.prototype,"linearSpecularLOD",null);P([Wt()],Ai.prototype,"irradianceTexture",null);P([F()],Ai.prototype,"isRenderTarget",void 0)});var Xf,_c,LP=y(()=>{We();jn();$_();Kn();Kt();Xf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},_c=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((E=e._texture)==null?void 0:E.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,u,h,m]).then(([S,A,R,M,I,C])=>{let D=l;_&&(S=this._DownsampleFace(S,t,r,4),A=this._DownsampleFace(A,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),I=this._DownsampleFace(I,t,r,4),C=this._DownsampleFace(C,t,r,4),D=r);let w={size:D,right:A,left:S,up:R,down:M,front:I,back:C,format:p,type:S instanceof Float32Array?1:0,gammaSpace:g};T(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 u=0;u0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,g=["right","left","up","down","front","back"],p={};for(let _ of g)p[_]=this._DownsampleFace(e[_],e.size,i,m);e={...e,...p,size:i}}let r=new Q_,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let g=this._FileFaces[m],p=e[g.name],_=c,v=e.format===5?4:3;for(let E=0;ED){let O=D/k;M*=O,I*=O,C*=O}}else M=Ft(M,0,D),I=Ft(I,0,D),C=Ft(C,0,D);let w=new Ee(M,I,C);r.addLight(A,w,R),s+=R,T+=a}_+=o}}let h=4*Math.PI*6/6/s;return r.scaleInPlace(h),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),Rl.FromHarmonics(r)}};_c._FileFaces=[new Xf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Xf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Xf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Xf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Xf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Xf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];_c.MAX_HDRI_VALUE=4096;_c.PRESERVE_CLAMPED_COLORS=!1});var vc,OP=y(()=>{Lt();er();vc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=Dn(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 VG(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?UG(r,n.getSize(),i.invertY):null}async function GG(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?UG(r,n.getSize(),i.invertY):null}var kG=y(()=>{});var It,hn=y(()=>{It=!1});var ge,Xr=y(()=>{Xt();zt();vi();We();rv();er();An();Sl();OP();jm();tv();kG();hn();Dr();ge=class n extends Ai{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw $e("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,u,h,m){var R,M,I,C,D,w,k,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 g,p=!1,_=null,v=!0;typeof i=="object"&&i!==null?(g=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!It,s=(I=i.samplingMode)!=null?I:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(D=i.onError)!=null?D:null,l=(w=i.buffer)!=null?w:null,c=(k=i.deleteBuffer)!=null?k:!1,f=i.format,d=i.mimeType,u=i.loaderOptions,h=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,_=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):g=!!i,this._gammaSpace=v,this._noMipmap=g,this._invertY=r===void 0?!It:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=u,this._creationFlags=h,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let E=this.getScene(),T=this._getEngine();if(!T)return;T.onBeforeTextureInitObservable.notifyObservers(this);let S=()=>{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&&E&&E.resetCachedMaterial()},A=(q,j)=>{this._loadingError=!0,this._errorObject={message:q,exception:j},o&&o(q,j),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!_){this._delayedOnLoad=S,this._delayedOnError=A;return}if(this._texture=_!=null?_:this._getFromCache(this.url,g,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)bo.SetImmediate(()=>S());else{let q=this._texture.onLoadedObservable.add(S);this._texture.onErrorObservable.add(j=>{var J;A(j.message,j.exception),(J=this._texture)==null||J.onLoadedObservable.remove(q)})}else if(!E||!E.useDelayedTextureLoading){try{this._texture=T.createTexture(this.url,g,this._invertY,E,s,S,A,this._buffer,void 0,this._format,this._forcedExtension,d,u,h,p)}catch(q){throw A("error loading",q),q}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=S,this._delayedOnError=A}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?bo.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=Z.Zero(),this._rowGenerationMatrix=new Z,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),Z.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(Z.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),Z.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),Z.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),Z.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),Z.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=Z.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=Z.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:{Z.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:{Z.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:Z.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 st.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,${tp(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?VG(this):GG(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=vc.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,u,h;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=Co.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let g=0;g{a(m)}},p=e.base64String,_=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",_,t,g),m.name=e.name}else{let g;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?g=e.name:g=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(g=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(u=e._useSRGBBuffer)!=null?u:!1,creationFlags:(h=e._creationFlags)!=null?h:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(g,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,u){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,u)}};ge.SerializeBuffers=!0;ge.ForceSerializeBuffers=!1;ge.OnTextureLoadErrorObservable=new ie;ge._SerializeInternalTextureUniqueId=!1;ge._CubeTextureParser=(n,e,t)=>{throw $e("CubeTexture")};ge._CreateMirror=(n,e,t,i)=>{throw $e("MirrorTexture")};ge._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw $e("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);Bt("BABYLON.Texture",ge);st._TextureParser=ge.Parse});var Do,L,Yi=y(()=>{gP();Lt();ip();Do=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 xu?(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 L(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)}},L=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,u=!1,h=1,m=!1){var _,v,E,T,S;this._isDisposed=!1;let g;if(this.engine=e,typeof r=="object"&&r!==null?(g=(_=r.updatable)!=null?_:!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,u=(E=r.useBytes)!=null?E:!1,h=(T=r.divisor)!=null?T:1,m=(S=r.takeBufferOwnership)!=null?S:!1,this._label=r.label):g=!!r,t instanceof Do?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new Do(e,t,g,a,s,o,u,h,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let A=this.getData();this.type=A?n.GetDataType(A):n.FLOAT}else this.type=f;let p=bl(this.type);u?(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?h: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?PP(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/bl(this.type)}getOffset(){return this.byteOffset/bl(this.type)}getSize(e=!1){return e?this._size*bl(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){Pu(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{Yi();vi();Ec=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new ie,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[L.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[L.PositionKind]=new L(this._scene.getEngine(),e,L.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{Lt();WG=(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;yl=class{static DeepCopy(e,t,i,r,s=!1){let a=rfe(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{vi();Wa();Lt();nv();cc();An();Cu();Gi();gc();Sl();OP();J_();Mo();pe=class{static get BaseUrl(){return qi.BaseUrl}static set BaseUrl(e){qi.BaseUrl=e}static get CleanUrl(){return qi.CleanUrl}static set CleanUrl(e){qi.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("://"){Ml(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(St.AssetBaseUrl&&e.startsWith(St._DefaultAssetsUrl)){let t=St.AssetBaseUrl.endsWith("/")?St.AssetBaseUrl.slice(0,-1):St.AssetBaseUrl;return e.replace(St._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(St._DefaultCdnUrl)){if(St.ScriptBaseUrl){let i=St.ScriptBaseUrl.endsWith("/")?St.ScriptBaseUrl.slice(0,-1):St.ScriptBaseUrl;e=e.replace(St._DefaultCdnUrl,i)}else if(St._CdnVersion){let i=`${St._DefaultCdnUrl}/v${St._CdnVersion}`;e.startsWith(i)||(e=e.replace(St._DefaultCdnUrl,i))}}return e=St.ScriptPreprocessUrl(e),t&&!St.IsAbsoluteUrl(e)&&(e=St.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=St.GetBabylonScriptURL(e),St.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=St.GetBabylonScriptURL(e),await St.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 Du(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){yl.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"}St.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&&St.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(St._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 $e("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw $e("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,u,h){throw $e("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,u){throw $e("ScreenshotTools")}static RandomId(){return Gf()}static IsBase64(e){return Wf(e)}static DecodeBase64(e){return zf(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&St.PerformanceUserMarkLogLevel)===St.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartUserMark,St.EndPerformanceCounter=St._EndUserMark);return}if((e&St.PerformanceConsoleLogLevel)===St.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartPerformanceConsole,St.EndPerformanceCounter=St._EndPerformanceConsole);return}St.StartPerformanceCounter=St._StartPerformanceCounterDisabled,St.EndPerformanceCounter=St._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(!St._Performance){if(!Sr())return;St._Performance=window.performance}!t||!St._Performance.mark||St._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!St._Performance.mark||(St._Performance.mark(e+"-End"),St._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(St._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(St._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(St._NativePerformanceCounterHandles.has(e))St.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);St._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=St._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),St._NativePerformanceCounterHandles.delete(e)):St.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return br.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 lc()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};St=pe;pe.AssetBaseUrl="";pe.UseCustomRequestHeaders=!1;pe.CustomRequestHeaders=wr.CustomRequestHeaders;pe.GetDOMTextContent=dx;pe._DefaultCdnUrl="https://cdn.babylonjs.com";pe._CdnVersion="9.6.0";pe._DefaultAssetsUrl="https://assets.babylonjs.com/core";pe.LoadScript=typeof _native=="undefined"?St._LoadScriptWeb:St._LoadScriptNative;pe.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.")};pe.NoneLogLevel=ee.NoneLogLevel;pe.MessageLogLevel=ee.MessageLogLevel;pe.WarningLogLevel=ee.WarningLogLevel;pe.ErrorLogLevel=ee.ErrorLogLevel;pe.AllLogLevel=ee.AllLogLevel;pe.IsWindowObjectExist=Sr;pe.PerformanceNoneLogLevel=0;pe.PerformanceUserMarkLogLevel=1;pe.PerformanceConsoleLogLevel=2;pe._NativePerformanceCounterHandles=new Map;pe.StartPerformanceCounter=St._StartPerformanceCounterDisabled;pe.EndPerformanceCounter=St._EndPerformanceCounterDisabled;iR=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)}};pe.Mix=j_;pe.IsExponentOfTwo=Ru;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 Tr,Yf=y(()=>{Lt();Ni();Tr=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{Ki=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}};Ki._GlobalId=0;Lo=class extends Ki{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{Oo();We();sv=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 Ki(256),this._transparentSubMeshes=new Ki(256),this._alphaTestSubMeshes=new Ki(256),this._depthOnlySubMeshes=new Ki(256),this._particleSystems=new Ki(256),this._spriteManagers=new Ki(256),this._empty=!0,this._edgesRenderers=new Lo(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 u=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);u.length&&this._renderTransparent(u)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let u=0;ut._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{zG();NP=class{},Xa=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 NP,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{Qt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};Qt.FALLOFF_DEFAULT=0;Qt.FALLOFF_PHYSICAL=1;Qt.FALLOFF_GLTF=2;Qt.FALLOFF_STANDARD=3;Qt.LIGHTMAP_DEFAULT=0;Qt.LIGHTMAP_SPECULAR=1;Qt.LIGHTMAP_SHADOWSONLY=2;Qt.INTENSITYMODE_AUTOMATIC=0;Qt.INTENSITYMODE_LUMINOUSPOWER=1;Qt.INTENSITYMODE_LUMINOUSINTENSITY=2;Qt.INTENSITYMODE_ILLUMINANCE=3;Qt.INTENSITYMODE_LUMINANCE=4;Qt.LIGHTTYPEID_POINTLIGHT=0;Qt.LIGHTTYPEID_DIRECTIONALLIGHT=1;Qt.LIGHTTYPEID_SPOTLIGHT=2;Qt.LIGHTTYPEID_HEMISPHERICLIGHT=3;Qt.LIGHTTYPEID_RECT_AREALIGHT=4;Qt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ya,wP=y(()=>{Yf();vi();rR();Al();Sl();Lt();Oo();av();Ya=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=Gx(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 Ki(256),this._activeBoundingBoxes=new Ki(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 Xa(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===Qt.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 u,h;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=(u=this.cameraForLOD)!=null?u:c,d=(h=i.getBoundingBoxRenderer)==null?void 0:h.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{Sl();Ts=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():bo.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var XG={};Be(XG,{postprocessVertexShader:()=>nfe});var FP,HG,nfe,BP=y(()=>{W();FP="postprocessVertexShader",HG=`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 -}`;x.ShadersStore[wP]||(x.ShadersStore[wP]=zG);tfe={name:wP,shader:zG}});var YG={};Be(YG,{postprocessVertexShaderWGSL:()=>ife});var BP,XG,ife,UP=y(()=>{W();BP="postprocessVertexShader",XG=`attribute position: vec2;uniform scale: vec2;varying vUV: vec2;const madd=vec2(0.5,0.5); +}`;x.ShadersStore[FP]||(x.ShadersStore[FP]=HG);nfe={name:FP,shader:HG}});var KG={};Be(KG,{postprocessVertexShaderWGSL:()=>sfe});var UP,YG,sfe,VP=y(()=>{W();UP="postprocessVertexShader",YG=`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 } -`;x.ShadersStoreWGSL[BP]||(x.ShadersStoreWGSL[BP]=XG);ife={name:BP,shader:XG}});var VP,iR,en,Ou=y(()=>{Yi();Qm();vi();Tu();Lu();FP();UP();VP={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},iR=class{constructor(e,t=VP){var s,a;this._fullscreenViewport=new Po(0,0,1,1);let i=(s=t.positions)!=null?s:VP.positions,r=(a=t.indices)!=null?a:VP.indices;this.engine=e,this._vertexBuffers={[L.PositionKind]:new L(e,i,L.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[L.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[L.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},en=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 Ts(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 u,h;let c=n._GetShaderCodeProcessing(this.name);if(c!=null&&c.defineCustomBindings){let m=(u=t==null?void 0:t.slice())!=null?u:[];m.push(...this.options.uniforms);let g=(h=i==null?void 0:i.slice())!=null?h:[];g.push(...this.options.samplers),e=c.defineCustomBindings(this.name,e,m,g),t=m,i=g}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,g)=>c.processCodeAfterIncludes(this.name,m,g):null,processFinalCode:c!=null&&c.processFinalCode?(m,g)=>c.processFinalCode(this.name,m,g):null,shaderLanguage:this.options.shaderLanguage,extraInitializationsAsync:d},this.options.engine):this._drawWrapper.effect=new hr(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)}};en.ForceGLSL=!1;en._CustomShaderCodeProcessing={}});var kP={};Be(kP,{passPixelShader:()=>rfe});var GP,KG,rfe,WP=y(()=>{W();GP="passPixelShader",KG=`varying vec2 vUV;uniform sampler2D textureSampler; +`;x.ShadersStoreWGSL[UP]||(x.ShadersStoreWGSL[UP]=YG);sfe={name:UP,shader:YG}});var GP,nR,en,Ou=y(()=>{Yi();Qm();vi();Tu();Lu();BP();VP();GP={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},nR=class{constructor(e,t=GP){var s,a;this._fullscreenViewport=new Po(0,0,1,1);let i=(s=t.positions)!=null?s:GP.positions,r=(a=t.indices)!=null?a:GP.indices;this.engine=e,this._vertexBuffers={[L.PositionKind]:new L(e,i,L.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[L.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[L.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},en=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 Ts(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 u,h;let c=n._GetShaderCodeProcessing(this.name);if(c!=null&&c.defineCustomBindings){let m=(u=t==null?void 0:t.slice())!=null?u:[];m.push(...this.options.uniforms);let g=(h=i==null?void 0:i.slice())!=null?h:[];g.push(...this.options.samplers),e=c.defineCustomBindings(this.name,e,m,g),t=m,i=g}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,g)=>c.processCodeAfterIncludes(this.name,m,g):null,processFinalCode:c!=null&&c.processFinalCode?(m,g)=>c.processFinalCode(this.name,m,g):null,shaderLanguage:this.options.shaderLanguage,extraInitializationsAsync:d},this.options.engine):this._drawWrapper.effect=new hr(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)}};en.ForceGLSL=!1;en._CustomShaderCodeProcessing={}});var WP={};Be(WP,{passPixelShader:()=>afe});var kP,jG,afe,zP=y(()=>{W();kP="passPixelShader",jG=`varying vec2 vUV;uniform sampler2D textureSampler; #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=texture2D(textureSampler,vUV);}`;x.ShadersStore[GP]||(x.ShadersStore[GP]=KG);rfe={name:GP,shader:KG}});var jG={};Be(jG,{Dispose:()=>HP,DumpData:()=>rR,DumpDataAsync:()=>lv,DumpFramebuffer:()=>zP,DumpTools:()=>ofe,EncodeImageAsync:()=>afe});async function nfe(){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(()=>(Es(),HV));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&&HP()}),i.getCaps().parallelShaderCompile=void 0;let r=new iR(i),{passPixelShader:s}=await Promise.resolve().then(()=>(WP(),kP)),a=new en({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function sfe(){return Kf||(Kf=nfe()),await Kf}async function zP(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);rR(n,e,l,i,r,s,!0,void 0,a)}async function lv(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 u=t[d];f[d]=Math.round(Ft(u)*255)}t=f}let l=await ov.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&pe.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,${tp(c)}`}function rR(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),lv(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function HP(){Kf&&(Kf==null||Kf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),Kf=null)}var Kf,ov,afe,ofe,lfe,XP=y(()=>{Xt();Ou();Ni();jn();Gi();Lt();tv();zt();Kf=null;ov=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await sfe(),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)=>{pe.ToBlob(o.canvas,u=>{u?f(u):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([Xs],ov,"EncodeImageAsync",null);afe=ov.EncodeImageAsync;ofe={DumpData:rR,DumpDataAsync:lv,DumpFramebuffer:zP,Dispose:HP},lfe=()=>{pe.DumpData=rR,pe.DumpDataAsync=lv,pe.DumpFramebuffer=zP};lfe()});var Yr,jf=y(()=>{vi();We();Xr();Jx();Mo();Tu();Lt();NP();hr.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};Yr=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,u=5,h=!1,m,g,p=!1,_=!1){var R,M,I,C,D,w,k;let v,E=!0,T,S=!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=(I=O.samplingMode)!=null?I:ge.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,u=(D=O.format)!=null?D:5,h=!!O.delayAllocation,m=O.samples,g=O.creationFlags,p=!!O.noColorAttachment,_=!!O.useSRGBBuffer,v=O.colorAttachment,E=(w=O.gammaSpace)!=null?w:E,T=O.existingObjectRenderer,S=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,u),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 A=this.getScene().getEngine();this._gammaSpace=E,this._coordinatesMode=ge.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!T,this._processSizeParameter(t),this._objectRenderer=T!=null?T:new Ya(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:S}),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(A):this.skipInitialClear||A.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);A._debugPushGroup&&A._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,q;if(A._debugPopGroup&&A._debugPopGroup(),!this._disableEngineStages)for(let j of this._scene._afterRenderTargetDrawStage)j.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,(q=this._renderTarget)!=null?q:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let j of this._scene._afterRenderTargetPostProcessStage)j.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(),A):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(A):this.skipInitialClear||A.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=A.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(k=this._format)!=null?k:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:g,noColorAttachment:p,useSRGBBuffer:_,colorAttachment:v,label:this.name},this.samplingMode===ge.NEAREST_SAMPLINGMODE&&(this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE),h||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=ge.INVCUBIC_MODE,this._textureMatrix=Z.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 Ec(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(()=>(XP(),jG)).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}};Yr.REFRESHRATE_RENDER_ONCE=Ya.REFRESHRATE_RENDER_ONCE;Yr.REFRESHRATE_RENDER_ONEVERYFRAME=Ya.REFRESHRATE_RENDER_ONEVERYFRAME;Yr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ya.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;ge._CreateRenderTargetTexture=(n,e,t,i,r)=>new Yr(n,e,t,i)});var Pi,Sc=y(()=>{Xt();Oo();vi();We();Tu();zt();Dr();er();Hr();Mo();Ou();Re.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)};Re.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)};hr.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};hr.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Pi=class n{static get ForceGLSL(){return en.ForceGLSL}static set ForceGLSL(e){en.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){en.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,u="postprocess",h,m=!1,g=5,p,_){var S,A,R,M,I,C,D,w,k,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 Ki(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,E=null,T;if(i&&!Array.isArray(i)){let V=i;i=(S=V.uniforms)!=null?S:null,r=(A=V.samplers)!=null?A:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(I=V.samplingMode)!=null?I:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` -`):(C=V.defines)!=null?C:null,d=(D=V.textureType)!=null?D:0,u=(w=V.vertexUrl)!=null?w:"postprocess",h=V.indexParameters,m=(k=V.blockCompilation)!=null?k:!1,g=(O=V.textureFormat)!=null?O:5,p=(N=V.shaderLanguage)!=null?N:0,E=(B=V.uniformBuffers)!=null?B:null,_=V.extraInitializations,T=V.effectWrapper}else s&&(typeof s=="number"?v=s:v={width:s.width,height:s.height});if(this._useExistingThinPostProcess=!!T,this._effectWrapper=T!=null?T:new en({name:e,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:t,engine:l||(a==null?void 0:a.getScene().getEngine()),uniforms:i,samplers:r,uniformBuffers:E,defines:f,vertexUrl:u,indexParameters:h,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=g,this._shaderLanguage=p||0,this._samplers=r||[],this._samplers.indexOf("textureSampler")===-1&&this._samplers.push("textureSampler"),this._fragmentUrl=t,this._vertexUrl=u,this._parameters=i||[],this._parameters.indexOf("scale")===-1&&this._parameters.push("scale"),this._uniformBuffers=E||[],this._indexParameters=h,!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,_,V)}}_gatherImports(e=!1,t){e&&this._webGPUReady?t.push(Promise.all([Promise.resolve().then(()=>(UP(),YG))])):t.push(Promise.all([Promise.resolve().then(()=>(FP(),HG))]))}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 Ki(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{_.samples!==this.samples&&this._engine.updateRenderTargetTextureSampleCount(_,this.samples)}),this._flushTextureCache(),this._renderId++}return h||(h=this._getTarget()),this.enablePixelPerfectMode?(this._scaleRatio.copyFromFloats(l/f,c/d),this._engine.bindFramebuffer(h,0,l,c,this.forceFullscreenViewport)):(this._scaleRatio.copyFromFloats(1,1),this._engine.bindFramebuffer(h,0,void 0,void 0,this.forceFullscreenViewport)),(p=(g=this._engine)._debugInsertMarker)==null||p.call(g,`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),h}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=st.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=Dn(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 st.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()],Pi.prototype,"uniqueId",void 0);P([F()],Pi.prototype,"name",null);P([F()],Pi.prototype,"width",void 0);P([F()],Pi.prototype,"height",void 0);P([F()],Pi.prototype,"renderTargetSamplingMode",void 0);P([ep()],Pi.prototype,"clearColor",void 0);P([F()],Pi.prototype,"autoClear",void 0);P([F()],Pi.prototype,"forceAutoClearInAlphaMode",void 0);P([F()],Pi.prototype,"alphaMode",null);P([F()],Pi.prototype,"alphaConstants",void 0);P([F()],Pi.prototype,"enablePixelPerfectMode",void 0);P([F()],Pi.prototype,"forceFullscreenViewport",void 0);P([F()],Pi.prototype,"scaleMode",void 0);P([F()],Pi.prototype,"alwaysForcePOT",void 0);P([F("samples")],Pi.prototype,"_samples",void 0);P([F()],Pi.prototype,"adaptScaleToCurrentViewport",void 0);Bt("BABYLON.PostProcess",Pi)});var ZG={};Be(ZG,{passPixelShaderWGSL:()=>cfe});var YP,qG,cfe,QG=y(()=>{W();YP="passPixelShader",qG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +{gl_FragColor=texture2D(textureSampler,vUV);}`;x.ShadersStore[kP]||(x.ShadersStore[kP]=jG);afe={name:kP,shader:jG}});var qG={};Be(qG,{Dispose:()=>XP,DumpData:()=>sR,DumpDataAsync:()=>lv,DumpFramebuffer:()=>HP,DumpTools:()=>ffe,EncodeImageAsync:()=>cfe});async function ofe(){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(()=>(Es(),XV));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&&XP()}),i.getCaps().parallelShaderCompile=void 0;let r=new nR(i),{passPixelShader:s}=await Promise.resolve().then(()=>(zP(),WP)),a=new en({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function lfe(){return Kf||(Kf=ofe()),await Kf}async function HP(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);sR(n,e,l,i,r,s,!0,void 0,a)}async function lv(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 u=t[d];f[d]=Math.round(Ft(u)*255)}t=f}let l=await ov.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&pe.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,${tp(c)}`}function sR(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),lv(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function XP(){Kf&&(Kf==null||Kf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),Kf=null)}var Kf,ov,cfe,ffe,dfe,YP=y(()=>{Xt();Ou();Ni();jn();Gi();Lt();tv();zt();Kf=null;ov=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await lfe(),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)=>{pe.ToBlob(o.canvas,u=>{u?f(u):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([Ys],ov,"EncodeImageAsync",null);cfe=ov.EncodeImageAsync;ffe={DumpData:sR,DumpDataAsync:lv,DumpFramebuffer:HP,Dispose:XP},dfe=()=>{pe.DumpData=sR,pe.DumpDataAsync=lv,pe.DumpFramebuffer=HP};dfe()});var Yr,jf=y(()=>{vi();We();Xr();tR();Mo();Tu();Lt();wP();hr.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};Yr=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,u=5,h=!1,m,g,p=!1,_=!1){var R,M,I,C,D,w,k;let v,E=!0,T,S=!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=(I=O.samplingMode)!=null?I:ge.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,u=(D=O.format)!=null?D:5,h=!!O.delayAllocation,m=O.samples,g=O.creationFlags,p=!!O.noColorAttachment,_=!!O.useSRGBBuffer,v=O.colorAttachment,E=(w=O.gammaSpace)!=null?w:E,T=O.existingObjectRenderer,S=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,u),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 A=this.getScene().getEngine();this._gammaSpace=E,this._coordinatesMode=ge.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!T,this._processSizeParameter(t),this._objectRenderer=T!=null?T:new Ya(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:S}),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(A):this.skipInitialClear||A.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);A._debugPushGroup&&A._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,q;if(A._debugPopGroup&&A._debugPopGroup(),!this._disableEngineStages)for(let j of this._scene._afterRenderTargetDrawStage)j.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,(q=this._renderTarget)!=null?q:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let j of this._scene._afterRenderTargetPostProcessStage)j.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(),A):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(A):this.skipInitialClear||A.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=A.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(k=this._format)!=null?k:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:g,noColorAttachment:p,useSRGBBuffer:_,colorAttachment:v,label:this.name},this.samplingMode===ge.NEAREST_SAMPLINGMODE&&(this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE),h||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=ge.INVCUBIC_MODE,this._textureMatrix=Z.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 Ec(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(()=>(YP(),qG)).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}};Yr.REFRESHRATE_RENDER_ONCE=Ya.REFRESHRATE_RENDER_ONCE;Yr.REFRESHRATE_RENDER_ONEVERYFRAME=Ya.REFRESHRATE_RENDER_ONEVERYFRAME;Yr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ya.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;ge._CreateRenderTargetTexture=(n,e,t,i,r)=>new Yr(n,e,t,i)});var Pi,Sc=y(()=>{Xt();Oo();vi();We();Tu();zt();Dr();er();Hr();Mo();Ou();Re.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)};Re.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)};hr.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};hr.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Pi=class n{static get ForceGLSL(){return en.ForceGLSL}static set ForceGLSL(e){en.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){en.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,u="postprocess",h,m=!1,g=5,p,_){var S,A,R,M,I,C,D,w,k,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 Ki(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,E=null,T;if(i&&!Array.isArray(i)){let V=i;i=(S=V.uniforms)!=null?S:null,r=(A=V.samplers)!=null?A:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(I=V.samplingMode)!=null?I:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` +`):(C=V.defines)!=null?C:null,d=(D=V.textureType)!=null?D:0,u=(w=V.vertexUrl)!=null?w:"postprocess",h=V.indexParameters,m=(k=V.blockCompilation)!=null?k:!1,g=(O=V.textureFormat)!=null?O:5,p=(N=V.shaderLanguage)!=null?N:0,E=(B=V.uniformBuffers)!=null?B:null,_=V.extraInitializations,T=V.effectWrapper}else s&&(typeof s=="number"?v=s:v={width:s.width,height:s.height});if(this._useExistingThinPostProcess=!!T,this._effectWrapper=T!=null?T:new en({name:e,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:t,engine:l||(a==null?void 0:a.getScene().getEngine()),uniforms:i,samplers:r,uniformBuffers:E,defines:f,vertexUrl:u,indexParameters:h,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=g,this._shaderLanguage=p||0,this._samplers=r||[],this._samplers.indexOf("textureSampler")===-1&&this._samplers.push("textureSampler"),this._fragmentUrl=t,this._vertexUrl=u,this._parameters=i||[],this._parameters.indexOf("scale")===-1&&this._parameters.push("scale"),this._uniformBuffers=E||[],this._indexParameters=h,!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,_,V)}}_gatherImports(e=!1,t){e&&this._webGPUReady?t.push(Promise.all([Promise.resolve().then(()=>(VP(),KG))])):t.push(Promise.all([Promise.resolve().then(()=>(BP(),XG))]))}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 Ki(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{_.samples!==this.samples&&this._engine.updateRenderTargetTextureSampleCount(_,this.samples)}),this._flushTextureCache(),this._renderId++}return h||(h=this._getTarget()),this.enablePixelPerfectMode?(this._scaleRatio.copyFromFloats(l/f,c/d),this._engine.bindFramebuffer(h,0,l,c,this.forceFullscreenViewport)):(this._scaleRatio.copyFromFloats(1,1),this._engine.bindFramebuffer(h,0,void 0,void 0,this.forceFullscreenViewport)),(p=(g=this._engine)._debugInsertMarker)==null||p.call(g,`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),h}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=st.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=Dn(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 st.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()],Pi.prototype,"uniqueId",void 0);P([F()],Pi.prototype,"name",null);P([F()],Pi.prototype,"width",void 0);P([F()],Pi.prototype,"height",void 0);P([F()],Pi.prototype,"renderTargetSamplingMode",void 0);P([ep()],Pi.prototype,"clearColor",void 0);P([F()],Pi.prototype,"autoClear",void 0);P([F()],Pi.prototype,"forceAutoClearInAlphaMode",void 0);P([F()],Pi.prototype,"alphaMode",null);P([F()],Pi.prototype,"alphaConstants",void 0);P([F()],Pi.prototype,"enablePixelPerfectMode",void 0);P([F()],Pi.prototype,"forceFullscreenViewport",void 0);P([F()],Pi.prototype,"scaleMode",void 0);P([F()],Pi.prototype,"alwaysForcePOT",void 0);P([F("samples")],Pi.prototype,"_samples",void 0);P([F()],Pi.prototype,"adaptScaleToCurrentViewport",void 0);Bt("BABYLON.PostProcess",Pi)});var QG={};Be(QG,{passPixelShaderWGSL:()=>ufe});var KP,ZG,ufe,$G=y(()=>{W();KP="passPixelShader",ZG=`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);}`;x.ShadersStoreWGSL[YP]||(x.ShadersStoreWGSL[YP]=qG);cfe={name:YP,shader:qG}});var JG={};Be(JG,{passCubePixelShaderWGSL:()=>ffe});var KP,$G,ffe,ek=y(()=>{W();KP="passCubePixelShader",$G=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_cube; +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,input.vUV);}`;x.ShadersStoreWGSL[KP]||(x.ShadersStoreWGSL[KP]=ZG);ufe={name:KP,shader:ZG}});var ek={};Be(ek,{passCubePixelShaderWGSL:()=>hfe});var jP,JG,hfe,tk=y(()=>{W();jP="passCubePixelShader",JG=`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 -}`;x.ShadersStoreWGSL[KP]||(x.ShadersStoreWGSL[KP]=$G);ffe={name:KP,shader:$G}});var ik={};Be(ik,{passCubePixelShader:()=>dfe});var jP,tk,dfe,rk=y(()=>{W();jP="passCubePixelShader",tk=`varying vec2 vUV;uniform samplerCube textureSampler; +}`;x.ShadersStoreWGSL[jP]||(x.ShadersStoreWGSL[jP]=JG);hfe={name:jP,shader:JG}});var rk={};Be(rk,{passCubePixelShader:()=>mfe});var qP,ik,mfe,nk=y(()=>{W();qP="passCubePixelShader",ik=`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 -}`;x.ShadersStore[jP]||(x.ShadersStore[jP]=tk);dfe={name:jP,shader:tk}});var Tc,cv,qP=y(()=>{Ou();Gi();Tc=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(QG(),ZG))]))):t.push(Promise.all([Promise.resolve().then(()=>(WP(),kP))])),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)}};Tc.FragmentUrl="pass";cv=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(ek(),JG))]))):t.push(Promise.all([Promise.resolve().then(()=>(rk(),ik))])),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}}};cv.FragmentUrl="passCube"});var Nu,ZP,QP=y(()=>{Xt();Sc();Hr();er();Dr();qP();zt();Nu=class n extends Pi{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,Tc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Tc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return st.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Bt("BABYLON.PassPostProcess",Nu);ZP=class n extends Pi{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,Tc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new cv(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return st.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],ZP.prototype,"face",null);Re._RescalePostProcessFactory=n=>new Nu("rescale",1,null,2,n,!1,0)});function sk(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 Pi("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(u=>{u.executeWhenCompiled(()=>{f.onApply=h=>{h._bindTexture("textureSampler",e),h.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 wu(n){nR||(nR=new Float32Array(1),nk=new Int32Array(nR.buffer)),nR[0]=n;let e=nk[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 Ac(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 nR,nk,$P=y(()=>{Xr();jf();QP();Sc();jn()});function eD(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function JP(n,e,t){for(;t.length!==e;){let i=eD(n.lines[n.index++]);t.push(...i)}}function ufe(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let _=0;_0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=eD(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=eD(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=h)&&(g%=h*2,g>h&&(g=h*2-g)),d[p+g*l]=ufe(r,p,g)}return{width:c/2,height:1,data:d}}var ok=y(()=>{jn()});var lk={};Be(lk,{_IESTextureLoader:()=>tD});var tD,ck=y(()=>{ok();tD=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=ak(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 fk={};Be(fk,{_DDSTextureLoader:()=>iD});var iD,dk=y(()=>{$_();rD();iD=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),No.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=No.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new Rl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),No.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=No.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,()=>{No.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function uk(){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),u=!1;d===null&&(u=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let h=!0;c.startTranscoding()||(h=!1);let m=[];for(let g=0;g>2&3],d[E++]=f[v>>4&3],d[E]=f[v>>6&3]}}return d}}async function hk(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?pe.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var mk=y(()=>{Ni()});var xc,qf,hfe,nD,Fu,mfe,pfe,gfe,aR,sR,oR,sD,pk=y(()=>{Ni();Xr();zs();mk();(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"})(xc||(xc={}));qf={JSModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},hfe=(n,e)=>{let t;switch(n){case xc.cTFETC1:t=36196;break;case xc.cTFBC1:t=33776;break;case xc.cTFBC4:t=33779;break;case xc.cTFASTC_4x4:t=37808;break;case xc.cTFETC2:t=37496;break;case xc.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},nD=null,Fu=null,mfe=0,pfe=!1,gfe=async()=>(nD||(nD=new Promise((n,e)=>{Fu?n(Fu):pe.LoadFileAsync(pe.GetBabylonScriptURL(qf.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${uk})()`],{type:"application/javascript"}));Fu=new Worker(i),hk(Fu,t,qf.JSModuleURL).then(n,e)}).catch(e)})),await nD),aR=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{gfe().then(()=>{let s=mfe++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(Fu.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};Fu.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),Fu.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:pfe},[o.buffer])},s=>{r(s)})})},sR=(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)},oR=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),sR(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,sR(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=sD.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,sR(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;oaD});var aD,_k=y(()=>{pk();Ni();aD=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}};aR(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;oR(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{pe.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}};aR(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,()=>{oR(t,a)})}).catch(a=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),pe.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var fv,vk=y(()=>{fv=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 lR(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var oD=y(()=>{});var mn,Ek=y(()=>{Xt();zt();Kt();Dr();oD();mn=class n{constructor(){this._dirty=!0,this._tempColor=new dt(0,0,0,0),this._globalCurve=new dt(0,0,0,0),this._highlightsCurve=new dt(0,0,0,0),this._midtonesCurve=new dt(0,0,0,0),this._shadowsCurve=new dt(0,0,0,0),this._positiveCurve=new dt(0,0,0,0),this._negativeCurve=new dt(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),u=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=u,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=u;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=u,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 st.Clone(()=>new n,this)}serialize(){return st.Serialize(this)}static Parse(e){return st.Parse(()=>new n,e,null,null)}};mn.PrepareUniforms=lR;P([F()],mn.prototype,"_globalHue",void 0);P([F()],mn.prototype,"_globalDensity",void 0);P([F()],mn.prototype,"_globalSaturation",void 0);P([F()],mn.prototype,"_globalExposure",void 0);P([F()],mn.prototype,"_highlightsHue",void 0);P([F()],mn.prototype,"_highlightsDensity",void 0);P([F()],mn.prototype,"_highlightsSaturation",void 0);P([F()],mn.prototype,"_highlightsExposure",void 0);P([F()],mn.prototype,"_midtonesHue",void 0);P([F()],mn.prototype,"_midtonesDensity",void 0);P([F()],mn.prototype,"_midtonesSaturation",void 0);P([F()],mn.prototype,"_midtonesExposure",void 0);st._ColorCurvesParser=mn.Parse});function Sk(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&&lR(n),e.DITHER&&n.push("ditherIntensity")}function Tk(n,e){e.COLORGRADING&&n.push("txColorTransform")}var Ak=y(()=>{oD()});var Yt,dv=y(()=>{Xt();zt();vi();Kt();Ek();Mo();Dr();Ak();er();Yt=class n{constructor(){this.colorCurves=new mn,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 dt(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&&mn.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=j_(o,l,this.vignetteStretch),a=j_(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 st.Clone(()=>new n,this)}serialize(){return st.Serialize(this)}static Parse(e){let t=st.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}};Yt.TONEMAPPING_STANDARD=0;Yt.TONEMAPPING_ACES=1;Yt.TONEMAPPING_KHR_PBR_NEUTRAL=2;Yt.PrepareUniforms=Sk;Yt.PrepareSamplers=Tk;Yt._VIGNETTEMODE_MULTIPLY=0;Yt._VIGNETTEMODE_OPAQUE=1;P([vG()],Yt.prototype,"colorCurves",void 0);P([F()],Yt.prototype,"_colorCurvesEnabled",void 0);P([Wt("colorGradingTexture")],Yt.prototype,"_colorGradingTexture",void 0);P([F()],Yt.prototype,"_colorGradingEnabled",void 0);P([F()],Yt.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],Yt.prototype,"_colorGradingBGR",void 0);P([F()],Yt.prototype,"_exposure",void 0);P([F()],Yt.prototype,"_toneMappingEnabled",void 0);P([F()],Yt.prototype,"_toneMappingType",void 0);P([F()],Yt.prototype,"_contrast",void 0);P([F()],Yt.prototype,"vignetteStretch",void 0);P([F()],Yt.prototype,"vignetteCenterX",void 0);P([F()],Yt.prototype,"vignetteCenterY",void 0);P([F()],Yt.prototype,"vignetteWeight",void 0);P([ep()],Yt.prototype,"vignetteColor",void 0);P([F()],Yt.prototype,"vignetteCameraFov",void 0);P([F()],Yt.prototype,"_vignetteBlendMode",void 0);P([F()],Yt.prototype,"_vignetteEnabled",void 0);P([F()],Yt.prototype,"_ditheringEnabled",void 0);P([F()],Yt.prototype,"_ditheringIntensity",void 0);P([F()],Yt.prototype,"_skipFinalColorClamp",void 0);P([F()],Yt.prototype,"_applyByPostProcess",void 0);P([F()],Yt.prototype,"_isEnabled",void 0);P([F()],Yt.prototype,"outputTextureWidth",void 0);P([F()],Yt.prototype,"outputTextureHeight",void 0);st._ImageProcessingConfigurationParser=Yt.Parse;Bt("BABYLON.ImageProcessingConfiguration",Yt)});var As,uv=y(()=>{We();Yi();As=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(L.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(L.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]),u=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),u=u.scale(1-this.bu-this.bv),r=new b(f.x+d.x+u.x,f.y+d.y+u.y,f.z+d.z+u.z)}else{let c=this.pickedMesh.getVerticesData(L.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]),u=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]),h=f.subtract(d),m=u.subtract(d);r=b.Cross(h,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let u=c._thinInstanceDataStorage.matrixData,h=this.thinInstanceIndex<<4;if(u&&u.length>h){let m=$.Matrix[0];Z.FromArrayToRef(u,h,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=L.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 pn,lD=y(()=>{pn=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 hv(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 Mk(n,e,t){return Z_(e,ja),hv(n,ja,qa),Z_(qa,t),t}function cR(n,e,t){if(!Za.eyeAtCamera)return Mk(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 cD(n,e,t,i){return bu(cR(n,e,i),t,i),i}function yk(n,e,t,i,r){for(let s=0;s{Tu();We();RP();Yf();Ka=new Z,ja=new Z,qa=new Z,Za={getScene:()=>{},eyeAtCamera:!0};mv=Tr,fD=hr,Ik=mv.prototype._updateMatrixForUniform,Ck=hr.prototype.setMatrix});var tt,pr,sp=y(()=>{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;pr=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{We();at=class{};at.POINTERDOWN=1;at.POINTERUP=2;at.POINTERMOVE=4;at.POINTERWHEEL=8;at.POINTERPICK=16;at.POINTERTAP=32;at.POINTERDOUBLETAP=64;fR=class{constructor(e,t){this.type=e,this.event=t}},dR=class extends fR{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new Fe(i,r)}},Qa=class extends fR{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 Rc,Lk=y(()=>{Rc=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}};Rc.Triggers={}});var Fo,ap,gv,uR=y(()=>{Fo=class{};Fo.KEYDOWN=1;Fo.KEYUP=2;ap=class{constructor(e,t){this.type=e,this.event=t}},gv=class extends ap{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,Tt,Ok,Nk,wk,Fk,Bk,Bu=y(()=>{(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"})(Tt||(Tt={}));(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"})(Ok||(Ok={}));(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"})(Nk||(Nk={}));(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"})(wk||(wk={}));(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"})(Fk||(Fk={}));(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"})(Bk||(Bk={}))});var Uk,Bo,hR=y(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})(Uk||(Uk={}));Bo=class{};Bo.DOM_DELTA_PIXEL=0;Bo.DOM_DELTA_LINE=1;Bo.DOM_DELTA_PAGE=2});var Uo,uD=y(()=>{hR();Bu();Uo=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===Tt.MouseWheelX||i===Tt.MouseWheelY||i===Tt.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,Tt.LeftClick),c+=s.pollInput(e,t,Tt.RightClick)*2,c+=s.pollInput(e,t,Tt.MiddleClick)*4,l.buttons=c,i===Tt.Move?l.type="pointermove":i>=Tt.LeftClick&&i<=Tt.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=Bo.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case Tt.MouseWheelX:o.deltaX=r;break;case Tt.MouseWheelY:o.deltaY=r;break;case Tt.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,Tt.Horizontal),c=s.pollInput(e,t,Tt.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 mR,Vk=y(()=>{uD();Bu();mR=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=Uo.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 Gk,kk,pR,Wk=y(()=>{Wa();Ni();uD();Bu();Gk=255,kk=Object.keys(Tt).length/2,pR=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=pe.IsSafari(),this._usingMacOs=lc()&&/(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=lc()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=lc()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=pe.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===Tt.Move&&pe.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,Gk));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,Gk));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=Uo.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{pe.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=Tt.Move,a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,r===Je.Touch&&a[Tt.LeftClick]===0&&(a[Tt.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{pe.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[Tt.Horizontal],l=a[Tt.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[Tt.Horizontal]=i.clientX,a[Tt.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=Tt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,u,h;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[Tt.Horizontal],g=a[Tt.Vertical];a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||g!==i.clientY)&&(p.inputIndex=Tt.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&&((h=(u=this._elementToAttachTo).hasPointerCapture)!=null&&h.call(u,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][Tt.LeftClick]=0;let s=Uo.CreateDeviceEvent(Je.Touch,r,Tt.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=Tt.LeftClick;o<=Tt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=Uo.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=Tt.LeftClick;c<=Tt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=Uo.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,kk));let a=this._inputs[r][s];if(a){a[Tt.MouseWheelX]=i.deltaX||0,a[Tt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[Tt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[Tt.MouseWheelX]!==0&&(o.inputIndex=Tt.MouseWheelX,this._onInputChanged(r,s,o)),a[Tt.MouseWheelY]!==0&&(o.inputIndex=Tt.MouseWheelY,this._onInputChanged(r,s,o)),a[Tt.MouseWheelZ]!==0&&(o.inputIndex=Tt.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[Tt.MouseWheelX]=0,i[Tt.MouseWheelY]=0,i[Tt.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 _v,zk=y(()=>{vi();_v=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 gR,Hk=y(()=>{Bu();Vk();Wk();zk();gR=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 _v(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 mR(i,r,s):this._deviceInputSystem=new pR(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var _R,Xk=y(()=>{Bu();vi();Hk();_R=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 gR(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{Uu=class{};Uu._IsPickingAvailable=!1});var vR,qn,Yk=y(()=>{wo();Lk();uv();We();lD();uR();Bu();Xk();Gi();hD();vR=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}},qn=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>=Tt.MouseWheelX&&t.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Qa(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Qa(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&Uu._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,Z.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 dR(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=Tt.Move,!this._checkPrePointerObservable(e,i,at.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,at.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 pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new pn(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,pn.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=at.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Qa(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Qa(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=Tt.Move;let s=new vR;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,at.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=at.POINTERPICK,o=new Qa(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,pn.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,pn.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,pn.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,pn.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Qa(at.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,at.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,at.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=at.POINTERTAP:i.doubleClick&&(a=at.POINTERDOUBLETAP),a){let o=new Qa(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 _R(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=at.POINTERTAP,u=new Qa(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(u,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var g,p;let d=new vR;this._currentPickResult=null;let u=null,h=o.hasSpecificMask(at.POINTERPICK)||l.hasSpecificMask(at.POINTERPICK)||o.hasSpecificMask(at.POINTERTAP)||l.hasSpecificMask(at.POINTERTAP)||o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!h&&Rc&&(u=this._initActionManager(u,d),u&&(h=u.hasPickTriggers));let m=!1;if(h=h&&!this._isMultiTouchGesture,h){let _=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(at.POINTERDOUBLETAP)&&!l.hasSpecificMask(at.POINTERDOUBLETAP),v&&!Rc.HasSpecificTrigger(6)&&(u=this._initActionManager(u,d),u&&(v=!u.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||_!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let T={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,_,d,f),n.DoubleClickDelay)};this._delayedClicks[_]=T}let E=o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!E&&Rc.HasSpecificTrigger(6)&&(u=this._initActionManager(u,d),u&&(E=u.hasSpecificTrigger(6))),E&&(_===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>=Tt.MouseWheelX&&o.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new As,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 As: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,at.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(at.POINTERTAP)&&this._checkPrePointerObservable(null,o,at.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,at.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&&(Rc&&Rc.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=Fo.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new gv(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new ap(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,pn.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=Fo.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new gv(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new ap(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,pn.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===Je.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===Tt.LeftClick||l.inputIndex===Tt.MiddleClick||l.inputIndex===Tt.RightClick||l.inputIndex===Tt.BrowserBack||l.inputIndex===Tt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===Tt.Move?this._onPointerMove(l):(l.inputIndex===Tt.MouseWheelX||l.inputIndex===Tt.MouseWheelY||l.inputIndex===Tt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===Je.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===Tt.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===Tt.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 pn(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 pn(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]}};qn.DragMovementThreshold=10;qn.LongPressDelay=500;qn.DoubleClickDelay=300;qn.ExclusiveDoubleClickMode=!1});var Il,mD=y(()=>{cc();Il=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=br.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=br.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=br.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};Il.Enabled=!0});var bc,ER=y(()=>{bc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};bc._UniqueIdCounter=1});var SR,Kk=y(()=>{SR=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var _fe,vfe,jk,ri,Ks=y(()=>{Ni();cc();vi();Oo();vk();Hf();We();dv();Yf();uv();lD();Jx();pv();tR();sp();Wa();Gi();An();Yk();mD();Kt();Gx();ER();gc();av();Al();Kk();Lt();er();Sl();_fe=new Oi,vfe=new Oi;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(jk||(jk={}));ri=class n{static DefaultMaterialFactory(e){throw $e("StandardMaterial")}static CollisionCoordinatorFactory(){throw $e("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 qn.DragMovementThreshold}static set DragMovementThreshold(e){qn.DragMovementThreshold=e}static get LongPressDelay(){return qn.LongPressDelay}static set LongPressDelay(e){qn.LongPressDelay=e}static get DoubleClickDelay(){return qn.DoubleClickDelay}static set DoubleClickDelay(e){qn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return qn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){qn.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=_fe.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,vfe);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=Ux(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 qn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new dt(.2,.2,.3,1),this.onClearColorChangedObservable=new ie,this.ambientColor=new Ee(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 Lo(256),this._pointerPickingConfiguration=new SR,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 Ee(.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 Lo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new Il,this._activeIndices=new Il,this._activeParticles=new Il,this._activeBones=new Il,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 Ki(256),this._processedMaterials=new Ki(256),this._renderTargets=new Lo(256),this._materialsRenderTargets=new Lo(256),this._activeParticleSystems=new Ki(256),this._activeSkeletons=new Lo(32),this._softwareSkinnedMeshes=new Lo(32),this._activeAnimatables=new Array,this._transformMatrix=Z.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=pr.Create(),this._beforeClearStage=pr.Create(),this._beforeRenderTargetClearStage=pr.Create(),this._gatherRenderTargetsStage=pr.Create(),this._gatherActiveCameraRenderTargetsStage=pr.Create(),this._isReadyForMeshStage=pr.Create(),this._beforeEvaluateActiveMeshStage=pr.Create(),this._evaluateSubMeshStage=pr.Create(),this._preActiveMeshStage=pr.Create(),this._cameraDrawRenderTargetStage=pr.Create(),this._beforeCameraDrawStage=pr.Create(),this._beforeRenderTargetDrawStage=pr.Create(),this._beforeRenderingGroupDrawStage=pr.Create(),this._beforeRenderingMeshStage=pr.Create(),this._afterRenderingMeshStage=pr.Create(),this._afterRenderingGroupDrawStage=pr.Create(),this._afterCameraDrawStage=pr.Create(),this._afterCameraPostProcessStage=pr.Create(),this._afterRenderTargetDrawStage=pr.Create(),this._afterRenderTargetPostProcessStage=pr.Create(),this._afterRenderStage=pr.Create(),this._pointerMoveStage=pr.Create(),this._pointerDownStage=pr.Create(),this._pointerUpStage=pr.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)&&(Dk(),this._floatingOriginScene=this,Za.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new Xa(this),Ec&&(this.postProcessManager=new Ec(this)),Sr()&&this.attachControl(),this._createUbo(),Yt&&(this._imageProcessingConfiguration=new Yt),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 u of this._isReadyForMeshStage)u.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let u of c.subMeshes){let h=u.getMaterial();h&&h.hasRenderTargetTextures&&h.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(h)===-1&&(this._processedMaterials.push(h),this._materialsRenderTargets.concatWithNoDuplicate(h.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=br.Now;else if(this.onReadyTimeoutDuration>0&&br.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=br.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 Z),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?Vf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Vf.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 Tr(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 bc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),pe.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(Qt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),pe.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),pe.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),pe.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),pe.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),pe.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),pe.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),pe.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),pe.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),pe.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),pe.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 u of this._gatherActiveCameraRenderTargetsStage)u.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let u;if(this._renderTargets.length>0){pe.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let h=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?h.renderList.data.slice():[],u.length=h.renderList.length),g.render(p,this.dumpNextRenderTargets),s=!0}}h&&u&&(h.renderList.data=u,h.renderList.length=u.length),pe.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let h=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);h&&!u&&(u=h.renderList.length>0?h.renderList.data.slice():[],u.length=h.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;h&&u&&(h.renderList.data=u,h.renderList.length=u.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 u of this._beforeCameraDrawStage)u.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 u of this._afterCameraDrawStage)u.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let u=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,u)}for(let u of this._afterCameraPostProcessStage)u.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(pn.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&&Pk(),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 $e("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw $e("Ray")}createPickingRayInCameraSpace(e,t,i){throw $e("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw $e("Ray")}pick(e,t,i,r,s,a){let o=$e("Ray",!0);return o&&ee.Warn(o),new As}pickWithBoundingInfo(e,t,i,r,s){let a=$e("Ray",!0);return a&&ee.Warn(a),new As}pickWithRay(e,t,i,r){throw $e("Ray")}multiPick(e,t,i,r,s){throw $e("Ray")}multiPickWithRay(e,t,i){throw $e("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];ti&&ti.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=Ml(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=Zx(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=Du(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 $e("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)}};ri.FOGMODE_NONE=0;ri.FOGMODE_EXP=1;ri.FOGMODE_EXP2=2;ri.FOGMODE_LINEAR=3;ri.MinDeltaTime=1;ri.MaxDeltaTime=1e3;ri._OriginalDefaultMaterialFactory=ri.DefaultMaterialFactory;Bt("BABYLON.Scene",ri)});var qk,Efe,$a=y(()=>{W();qk="helperFunctions",Efe=`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; +}`;x.ShadersStore[qP]||(x.ShadersStore[qP]=ik);mfe={name:qP,shader:ik}});var Tc,cv,ZP=y(()=>{Ou();Gi();Tc=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>($G(),QG))]))):t.push(Promise.all([Promise.resolve().then(()=>(zP(),WP))])),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)}};Tc.FragmentUrl="pass";cv=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(tk(),ek))]))):t.push(Promise.all([Promise.resolve().then(()=>(nk(),rk))])),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}}};cv.FragmentUrl="passCube"});var Nu,QP,$P=y(()=>{Xt();Sc();Hr();er();Dr();ZP();zt();Nu=class n extends Pi{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,Tc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Tc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return st.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Bt("BABYLON.PassPostProcess",Nu);QP=class n extends Pi{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,Tc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new cv(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return st.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],QP.prototype,"face",null);Re._RescalePostProcessFactory=n=>new Nu("rescale",1,null,2,n,!1,0)});function ak(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 Pi("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(u=>{u.executeWhenCompiled(()=>{f.onApply=h=>{h._bindTexture("textureSampler",e),h.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 wu(n){aR||(aR=new Float32Array(1),sk=new Int32Array(aR.buffer)),aR[0]=n;let e=sk[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 Ac(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 aR,sk,JP=y(()=>{Xr();jf();$P();Sc();jn()});function tD(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function eD(n,e,t){for(;t.length!==e;){let i=tD(n.lines[n.index++]);t.push(...i)}}function pfe(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let _=0;_0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=tD(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=tD(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=h)&&(g%=h*2,g>h&&(g=h*2-g)),d[p+g*l]=pfe(r,p,g)}return{width:c/2,height:1,data:d}}var lk=y(()=>{jn()});var ck={};Be(ck,{_IESTextureLoader:()=>iD});var iD,fk=y(()=>{lk();iD=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=ok(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 dk={};Be(dk,{_DDSTextureLoader:()=>rD});var rD,uk=y(()=>{$_();nD();rD=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),No.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=No.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new Rl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),No.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=No.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,()=>{No.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function hk(){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),u=!1;d===null&&(u=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let h=!0;c.startTranscoding()||(h=!1);let m=[];for(let g=0;g>2&3],d[E++]=f[v>>4&3],d[E]=f[v>>6&3]}}return d}}async function mk(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?pe.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var pk=y(()=>{Ni()});var xc,qf,gfe,sD,Fu,_fe,vfe,Efe,lR,oR,cR,aD,gk=y(()=>{Ni();Xr();Hs();pk();(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"})(xc||(xc={}));qf={JSModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},gfe=(n,e)=>{let t;switch(n){case xc.cTFETC1:t=36196;break;case xc.cTFBC1:t=33776;break;case xc.cTFBC4:t=33779;break;case xc.cTFASTC_4x4:t=37808;break;case xc.cTFETC2:t=37496;break;case xc.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},sD=null,Fu=null,_fe=0,vfe=!1,Efe=async()=>(sD||(sD=new Promise((n,e)=>{Fu?n(Fu):pe.LoadFileAsync(pe.GetBabylonScriptURL(qf.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${hk})()`],{type:"application/javascript"}));Fu=new Worker(i),mk(Fu,t,qf.JSModuleURL).then(n,e)}).catch(e)})),await sD),lR=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{Efe().then(()=>{let s=_fe++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(Fu.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};Fu.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),Fu.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:vfe},[o.buffer])},s=>{r(s)})})},oR=(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)},cR=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),oR(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,oR(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=aD.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,oR(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;ooD});var oD,vk=y(()=>{gk();Ni();oD=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}};lR(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;cR(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{pe.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}};lR(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,()=>{cR(t,a)})}).catch(a=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),pe.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var fv,Ek=y(()=>{fv=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 fR(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var lD=y(()=>{});var mn,Sk=y(()=>{Xt();zt();Kt();Dr();lD();mn=class n{constructor(){this._dirty=!0,this._tempColor=new dt(0,0,0,0),this._globalCurve=new dt(0,0,0,0),this._highlightsCurve=new dt(0,0,0,0),this._midtonesCurve=new dt(0,0,0,0),this._shadowsCurve=new dt(0,0,0,0),this._positiveCurve=new dt(0,0,0,0),this._negativeCurve=new dt(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),u=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=u,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=u;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=u,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 st.Clone(()=>new n,this)}serialize(){return st.Serialize(this)}static Parse(e){return st.Parse(()=>new n,e,null,null)}};mn.PrepareUniforms=fR;P([F()],mn.prototype,"_globalHue",void 0);P([F()],mn.prototype,"_globalDensity",void 0);P([F()],mn.prototype,"_globalSaturation",void 0);P([F()],mn.prototype,"_globalExposure",void 0);P([F()],mn.prototype,"_highlightsHue",void 0);P([F()],mn.prototype,"_highlightsDensity",void 0);P([F()],mn.prototype,"_highlightsSaturation",void 0);P([F()],mn.prototype,"_highlightsExposure",void 0);P([F()],mn.prototype,"_midtonesHue",void 0);P([F()],mn.prototype,"_midtonesDensity",void 0);P([F()],mn.prototype,"_midtonesSaturation",void 0);P([F()],mn.prototype,"_midtonesExposure",void 0);st._ColorCurvesParser=mn.Parse});function Tk(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&&fR(n),e.DITHER&&n.push("ditherIntensity")}function Ak(n,e){e.COLORGRADING&&n.push("txColorTransform")}var xk=y(()=>{lD()});var Yt,dv=y(()=>{Xt();zt();vi();Kt();Sk();Mo();Dr();xk();er();Yt=class n{constructor(){this.colorCurves=new mn,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 dt(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&&mn.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=j_(o,l,this.vignetteStretch),a=j_(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 st.Clone(()=>new n,this)}serialize(){return st.Serialize(this)}static Parse(e){let t=st.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}};Yt.TONEMAPPING_STANDARD=0;Yt.TONEMAPPING_ACES=1;Yt.TONEMAPPING_KHR_PBR_NEUTRAL=2;Yt.PrepareUniforms=Tk;Yt.PrepareSamplers=Ak;Yt._VIGNETTEMODE_MULTIPLY=0;Yt._VIGNETTEMODE_OPAQUE=1;P([EG()],Yt.prototype,"colorCurves",void 0);P([F()],Yt.prototype,"_colorCurvesEnabled",void 0);P([Wt("colorGradingTexture")],Yt.prototype,"_colorGradingTexture",void 0);P([F()],Yt.prototype,"_colorGradingEnabled",void 0);P([F()],Yt.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],Yt.prototype,"_colorGradingBGR",void 0);P([F()],Yt.prototype,"_exposure",void 0);P([F()],Yt.prototype,"_toneMappingEnabled",void 0);P([F()],Yt.prototype,"_toneMappingType",void 0);P([F()],Yt.prototype,"_contrast",void 0);P([F()],Yt.prototype,"vignetteStretch",void 0);P([F()],Yt.prototype,"vignetteCenterX",void 0);P([F()],Yt.prototype,"vignetteCenterY",void 0);P([F()],Yt.prototype,"vignetteWeight",void 0);P([ep()],Yt.prototype,"vignetteColor",void 0);P([F()],Yt.prototype,"vignetteCameraFov",void 0);P([F()],Yt.prototype,"_vignetteBlendMode",void 0);P([F()],Yt.prototype,"_vignetteEnabled",void 0);P([F()],Yt.prototype,"_ditheringEnabled",void 0);P([F()],Yt.prototype,"_ditheringIntensity",void 0);P([F()],Yt.prototype,"_skipFinalColorClamp",void 0);P([F()],Yt.prototype,"_applyByPostProcess",void 0);P([F()],Yt.prototype,"_isEnabled",void 0);P([F()],Yt.prototype,"outputTextureWidth",void 0);P([F()],Yt.prototype,"outputTextureHeight",void 0);st._ImageProcessingConfigurationParser=Yt.Parse;Bt("BABYLON.ImageProcessingConfiguration",Yt)});var As,uv=y(()=>{We();Yi();As=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(L.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(L.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]),u=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),u=u.scale(1-this.bu-this.bv),r=new b(f.x+d.x+u.x,f.y+d.y+u.y,f.z+d.z+u.z)}else{let c=this.pickedMesh.getVerticesData(L.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]),u=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]),h=f.subtract(d),m=u.subtract(d);r=b.Cross(h,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let u=c._thinInstanceDataStorage.matrixData,h=this.thinInstanceIndex<<4;if(u&&u.length>h){let m=$.Matrix[0];Z.FromArrayToRef(u,h,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=L.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 pn,cD=y(()=>{pn=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 hv(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 yk(n,e,t){return Z_(e,ja),hv(n,ja,qa),Z_(qa,t),t}function dR(n,e,t){if(!Za.eyeAtCamera)return yk(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 fD(n,e,t,i){return bu(dR(n,e,i),t,i),i}function Ik(n,e,t,i,r){for(let s=0;s{Tu();We();bP();Yf();Ka=new Z,ja=new Z,qa=new Z,Za={getScene:()=>{},eyeAtCamera:!0};mv=Tr,dD=hr,Ck=mv.prototype._updateMatrixForUniform,Pk=hr.prototype.setMatrix});var tt,pr,sp=y(()=>{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;pr=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{We();at=class{};at.POINTERDOWN=1;at.POINTERUP=2;at.POINTERMOVE=4;at.POINTERWHEEL=8;at.POINTERPICK=16;at.POINTERTAP=32;at.POINTERDOUBLETAP=64;uR=class{constructor(e,t){this.type=e,this.event=t}},hR=class extends uR{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new Fe(i,r)}},Qa=class extends uR{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 Rc,Ok=y(()=>{Rc=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}};Rc.Triggers={}});var Fo,ap,gv,mR=y(()=>{Fo=class{};Fo.KEYDOWN=1;Fo.KEYUP=2;ap=class{constructor(e,t){this.type=e,this.event=t}},gv=class extends ap{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,Tt,Nk,wk,Fk,Bk,Uk,Bu=y(()=>{(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"})(Tt||(Tt={}));(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"})(Nk||(Nk={}));(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"})(wk||(wk={}));(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"})(Fk||(Fk={}));(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"})(Bk||(Bk={}));(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"})(Uk||(Uk={}))});var Vk,Bo,pR=y(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})(Vk||(Vk={}));Bo=class{};Bo.DOM_DELTA_PIXEL=0;Bo.DOM_DELTA_LINE=1;Bo.DOM_DELTA_PAGE=2});var Uo,hD=y(()=>{pR();Bu();Uo=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===Tt.MouseWheelX||i===Tt.MouseWheelY||i===Tt.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,Tt.LeftClick),c+=s.pollInput(e,t,Tt.RightClick)*2,c+=s.pollInput(e,t,Tt.MiddleClick)*4,l.buttons=c,i===Tt.Move?l.type="pointermove":i>=Tt.LeftClick&&i<=Tt.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=Bo.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case Tt.MouseWheelX:o.deltaX=r;break;case Tt.MouseWheelY:o.deltaY=r;break;case Tt.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,Tt.Horizontal),c=s.pollInput(e,t,Tt.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 gR,Gk=y(()=>{hD();Bu();gR=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=Uo.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 kk,Wk,_R,zk=y(()=>{Wa();Ni();hD();Bu();kk=255,Wk=Object.keys(Tt).length/2,_R=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=pe.IsSafari(),this._usingMacOs=lc()&&/(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=lc()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=lc()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=pe.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===Tt.Move&&pe.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,kk));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,kk));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=Uo.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{pe.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=Tt.Move,a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,r===Je.Touch&&a[Tt.LeftClick]===0&&(a[Tt.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{pe.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[Tt.Horizontal],l=a[Tt.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[Tt.Horizontal]=i.clientX,a[Tt.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=Tt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,u,h;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[Tt.Horizontal],g=a[Tt.Vertical];a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||g!==i.clientY)&&(p.inputIndex=Tt.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&&((h=(u=this._elementToAttachTo).hasPointerCapture)!=null&&h.call(u,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][Tt.LeftClick]=0;let s=Uo.CreateDeviceEvent(Je.Touch,r,Tt.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=Tt.LeftClick;o<=Tt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=Uo.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=Tt.LeftClick;c<=Tt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=Uo.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,Wk));let a=this._inputs[r][s];if(a){a[Tt.MouseWheelX]=i.deltaX||0,a[Tt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[Tt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[Tt.MouseWheelX]!==0&&(o.inputIndex=Tt.MouseWheelX,this._onInputChanged(r,s,o)),a[Tt.MouseWheelY]!==0&&(o.inputIndex=Tt.MouseWheelY,this._onInputChanged(r,s,o)),a[Tt.MouseWheelZ]!==0&&(o.inputIndex=Tt.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[Tt.MouseWheelX]=0,i[Tt.MouseWheelY]=0,i[Tt.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 _v,Hk=y(()=>{vi();_v=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 vR,Xk=y(()=>{Bu();Gk();zk();Hk();vR=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 _v(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 gR(i,r,s):this._deviceInputSystem=new _R(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var ER,Yk=y(()=>{Bu();vi();Xk();ER=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 vR(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{Uu=class{};Uu._IsPickingAvailable=!1});var SR,qn,Kk=y(()=>{wo();Ok();uv();We();cD();mR();Bu();Yk();Gi();mD();SR=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}},qn=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>=Tt.MouseWheelX&&t.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Qa(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Qa(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&Uu._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,Z.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 hR(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=Tt.Move,!this._checkPrePointerObservable(e,i,at.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,at.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 pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new pn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new pn(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,pn.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=at.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Qa(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Qa(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=Tt.Move;let s=new SR;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,at.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=at.POINTERPICK,o=new Qa(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,pn.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,pn.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,pn.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,pn.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Qa(at.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,at.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,at.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=at.POINTERTAP:i.doubleClick&&(a=at.POINTERDOUBLETAP),a){let o=new Qa(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 ER(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=at.POINTERTAP,u=new Qa(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(u,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var g,p;let d=new SR;this._currentPickResult=null;let u=null,h=o.hasSpecificMask(at.POINTERPICK)||l.hasSpecificMask(at.POINTERPICK)||o.hasSpecificMask(at.POINTERTAP)||l.hasSpecificMask(at.POINTERTAP)||o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!h&&Rc&&(u=this._initActionManager(u,d),u&&(h=u.hasPickTriggers));let m=!1;if(h=h&&!this._isMultiTouchGesture,h){let _=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(at.POINTERDOUBLETAP)&&!l.hasSpecificMask(at.POINTERDOUBLETAP),v&&!Rc.HasSpecificTrigger(6)&&(u=this._initActionManager(u,d),u&&(v=!u.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||_!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let T={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,_,d,f),n.DoubleClickDelay)};this._delayedClicks[_]=T}let E=o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!E&&Rc.HasSpecificTrigger(6)&&(u=this._initActionManager(u,d),u&&(E=u.hasSpecificTrigger(6))),E&&(_===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>=Tt.MouseWheelX&&o.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new As,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 As: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,at.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(at.POINTERTAP)&&this._checkPrePointerObservable(null,o,at.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,at.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&&(Rc&&Rc.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=Fo.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new gv(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new ap(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,pn.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=Fo.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new gv(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new ap(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,pn.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===Je.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===Tt.LeftClick||l.inputIndex===Tt.MiddleClick||l.inputIndex===Tt.RightClick||l.inputIndex===Tt.BrowserBack||l.inputIndex===Tt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===Tt.Move?this._onPointerMove(l):(l.inputIndex===Tt.MouseWheelX||l.inputIndex===Tt.MouseWheelY||l.inputIndex===Tt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===Je.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===Tt.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===Tt.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 pn(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 pn(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]}};qn.DragMovementThreshold=10;qn.LongPressDelay=500;qn.DoubleClickDelay=300;qn.ExclusiveDoubleClickMode=!1});var Il,pD=y(()=>{cc();Il=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=br.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=br.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=br.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};Il.Enabled=!0});var bc,TR=y(()=>{bc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};bc._UniqueIdCounter=1});var AR,jk=y(()=>{AR=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var Sfe,Tfe,qk,ri,js=y(()=>{Ni();cc();vi();Oo();Ek();Hf();We();dv();Yf();uv();cD();tR();pv();rR();sp();Wa();Gi();An();Kk();pD();Kt();Wx();TR();gc();av();Al();jk();Lt();er();Sl();Sfe=new Oi,Tfe=new Oi;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(qk||(qk={}));ri=class n{static DefaultMaterialFactory(e){throw $e("StandardMaterial")}static CollisionCoordinatorFactory(){throw $e("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 qn.DragMovementThreshold}static set DragMovementThreshold(e){qn.DragMovementThreshold=e}static get LongPressDelay(){return qn.LongPressDelay}static set LongPressDelay(e){qn.LongPressDelay=e}static get DoubleClickDelay(){return qn.DoubleClickDelay}static set DoubleClickDelay(e){qn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return qn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){qn.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=Sfe.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,Tfe);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=Gx(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 qn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new dt(.2,.2,.3,1),this.onClearColorChangedObservable=new ie,this.ambientColor=new Ee(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 Lo(256),this._pointerPickingConfiguration=new AR,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 Ee(.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 Lo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new Il,this._activeIndices=new Il,this._activeParticles=new Il,this._activeBones=new Il,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 Ki(256),this._processedMaterials=new Ki(256),this._renderTargets=new Lo(256),this._materialsRenderTargets=new Lo(256),this._activeParticleSystems=new Ki(256),this._activeSkeletons=new Lo(32),this._softwareSkinnedMeshes=new Lo(32),this._activeAnimatables=new Array,this._transformMatrix=Z.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=pr.Create(),this._beforeClearStage=pr.Create(),this._beforeRenderTargetClearStage=pr.Create(),this._gatherRenderTargetsStage=pr.Create(),this._gatherActiveCameraRenderTargetsStage=pr.Create(),this._isReadyForMeshStage=pr.Create(),this._beforeEvaluateActiveMeshStage=pr.Create(),this._evaluateSubMeshStage=pr.Create(),this._preActiveMeshStage=pr.Create(),this._cameraDrawRenderTargetStage=pr.Create(),this._beforeCameraDrawStage=pr.Create(),this._beforeRenderTargetDrawStage=pr.Create(),this._beforeRenderingGroupDrawStage=pr.Create(),this._beforeRenderingMeshStage=pr.Create(),this._afterRenderingMeshStage=pr.Create(),this._afterRenderingGroupDrawStage=pr.Create(),this._afterCameraDrawStage=pr.Create(),this._afterCameraPostProcessStage=pr.Create(),this._afterRenderTargetDrawStage=pr.Create(),this._afterRenderTargetPostProcessStage=pr.Create(),this._afterRenderStage=pr.Create(),this._pointerMoveStage=pr.Create(),this._pointerDownStage=pr.Create(),this._pointerUpStage=pr.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)&&(Lk(),this._floatingOriginScene=this,Za.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new Xa(this),Ec&&(this.postProcessManager=new Ec(this)),Sr()&&this.attachControl(),this._createUbo(),Yt&&(this._imageProcessingConfiguration=new Yt),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 u of this._isReadyForMeshStage)u.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let u of c.subMeshes){let h=u.getMaterial();h&&h.hasRenderTargetTextures&&h.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(h)===-1&&(this._processedMaterials.push(h),this._materialsRenderTargets.concatWithNoDuplicate(h.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=br.Now;else if(this.onReadyTimeoutDuration>0&&br.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=br.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 Z),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?Vf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Vf.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 Tr(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 bc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),pe.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(Qt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),pe.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),pe.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),pe.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),pe.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),pe.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),pe.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),pe.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),pe.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),pe.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),pe.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 u of this._gatherActiveCameraRenderTargetsStage)u.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let u;if(this._renderTargets.length>0){pe.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let h=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?h.renderList.data.slice():[],u.length=h.renderList.length),g.render(p,this.dumpNextRenderTargets),s=!0}}h&&u&&(h.renderList.data=u,h.renderList.length=u.length),pe.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let h=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);h&&!u&&(u=h.renderList.length>0?h.renderList.data.slice():[],u.length=h.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;h&&u&&(h.renderList.data=u,h.renderList.length=u.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 u of this._beforeCameraDrawStage)u.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 u of this._afterCameraDrawStage)u.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let u=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,u)}for(let u of this._afterCameraPostProcessStage)u.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(pn.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&&Dk(),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 $e("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw $e("Ray")}createPickingRayInCameraSpace(e,t,i){throw $e("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw $e("Ray")}pick(e,t,i,r,s,a){let o=$e("Ray",!0);return o&&ee.Warn(o),new As}pickWithBoundingInfo(e,t,i,r,s){let a=$e("Ray",!0);return a&&ee.Warn(a),new As}pickWithRay(e,t,i,r){throw $e("Ray")}multiPick(e,t,i,r,s){throw $e("Ray")}multiPickWithRay(e,t,i){throw $e("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];ti&&ti.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=Ml(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=$x(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=Du(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 $e("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)}};ri.FOGMODE_NONE=0;ri.FOGMODE_EXP=1;ri.FOGMODE_EXP2=2;ri.FOGMODE_LINEAR=3;ri.MinDeltaTime=1;ri.MaxDeltaTime=1e3;ri._OriginalDefaultMaterialFactory=ri.DefaultMaterialFactory;Bt("BABYLON.Scene",ri)});var Zk,Afe,$a=y(()=>{W();Zk="helperFunctions",Afe=`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));} -`;x.IncludesShadersStoreWGSL[qk]||(x.IncludesShadersStoreWGSL[qk]=Efe)});var gD={};Be(gD,{rgbdDecodePixelShaderWGSL:()=>Sfe});var pD,Zk,Sfe,_D=y(()=>{W();$a();pD="rgbdDecodePixelShader",Zk=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +`;x.IncludesShadersStoreWGSL[Zk]||(x.IncludesShadersStoreWGSL[Zk]=Afe)});var _D={};Be(_D,{rgbdDecodePixelShaderWGSL:()=>xfe});var gD,Qk,xfe,vD=y(()=>{W();$a();gD="rgbdDecodePixelShader",Qk=`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);}`;x.ShadersStoreWGSL[pD]||(x.ShadersStoreWGSL[pD]=Zk);Sfe={name:pD,shader:Zk}});var Qk,Tfe,Ja=y(()=>{W();Qk="helperFunctions",Tfe=`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);}`;x.ShadersStoreWGSL[gD]||(x.ShadersStoreWGSL[gD]=Qk);xfe={name:gD,shader:Qk}});var $k,Rfe,Ja=y(()=>{W();$k="helperFunctions",Rfe=`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 -`;x.IncludesShadersStore[Qk]||(x.IncludesShadersStore[Qk]=Tfe)});var ED={};Be(ED,{rgbdDecodePixelShader:()=>Afe});var vD,$k,Afe,SD=y(()=>{W();Ja();vD="rgbdDecodePixelShader",$k=`varying vec2 vUV;uniform sampler2D textureSampler; +`;x.IncludesShadersStore[$k]||(x.IncludesShadersStore[$k]=Rfe)});var SD={};Be(SD,{rgbdDecodePixelShader:()=>bfe});var ED,Jk,bfe,TD=y(()=>{W();Ja();ED="rgbdDecodePixelShader",Jk=`varying vec2 vUV;uniform sampler2D textureSampler; #include #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=vec4(fromRGBD(texture2D(textureSampler,vUV)),1.0);}`;x.ShadersStore[vD]||(x.ShadersStore[vD]=$k);Afe={name:vD,shader:$k}});var eW={};Be(eW,{rgbdEncodePixelShader:()=>xfe});var TD,Jk,xfe,tW=y(()=>{W();Ja();TD="rgbdEncodePixelShader",Jk=`varying vec2 vUV;uniform sampler2D textureSampler; +{gl_FragColor=vec4(fromRGBD(texture2D(textureSampler,vUV)),1.0);}`;x.ShadersStore[ED]||(x.ShadersStore[ED]=Jk);bfe={name:ED,shader:Jk}});var tW={};Be(tW,{rgbdEncodePixelShader:()=>Mfe});var AD,eW,Mfe,iW=y(()=>{W();Ja();AD="rgbdEncodePixelShader",eW=`varying vec2 vUV;uniform sampler2D textureSampler; #include #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=toRGBD(texture2D(textureSampler,vUV).rgb);}`;x.ShadersStore[TD]||(x.ShadersStore[TD]=Jk);xfe={name:TD,shader:Jk}});var rW={};Be(rW,{rgbdEncodePixelShaderWGSL:()=>Rfe});var AD,iW,Rfe,nW=y(()=>{W();$a();AD="rgbdEncodePixelShader",iW=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +{gl_FragColor=toRGBD(texture2D(textureSampler,vUV).rgb);}`;x.ShadersStore[AD]||(x.ShadersStore[AD]=eW);Mfe={name:AD,shader:eW}});var nW={};Be(nW,{rgbdEncodePixelShaderWGSL:()=>yfe});var xD,rW,yfe,sW=y(()=>{W();$a();xD="rgbdEncodePixelShader",rW=`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);}`;x.ShadersStoreWGSL[AD]||(x.ShadersStoreWGSL[AD]=iW);Rfe={name:AD,shader:iW}});var op,xD=y(()=>{Sc();$P();op=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(()=>(_D(),gD)):await Promise.resolve().then(()=>(SD(),ED));let f=new Pi("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(u=>{u.executeWhenCompiled(()=>{f.onApply=h=>{h._bindTexture("textureSampler",t),h.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(()=>(nW(),rW)):await Promise.resolve().then(()=>(tW(),eW)),await sk("rgbdEncode",e,t,i,1,5)}}});var RD=y(()=>{DP();rv();Ai.prototype._sphericalPolynomialTargetSize=0;Ai.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(Ai.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=_c.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 lW(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;asW)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${sW}".`);return n.version===2||(n={...n,version:2,imageType:TR}),n}function bfe(n,e){e=vv(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 h=e.createTexture(null,!0,!0,null,1,null,m=>{u(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=g=>{g._bindTexture("textureSampler",h),g.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(),h.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let h=l[a];h&&e._uploadImageToTexture(h._texture,n,s,0)}d()}})}async function yfe(n,e,t=TR){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await fW(n,e,!0,t),n.isReady=!0}async function Ife(n,e,t,i=TR,r=null){let s=n.getEngine(),a=new Vi(s,5),o=new Ai(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 fW(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function fW(n,e,t,i=TR){if(!pe.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=cG(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 u=0;if(a)s.isWebGPU?(u=1,await Promise.resolve().then(()=>(_D(),gD))):await Promise.resolve().then(()=>(SD(),ED)),l=new Pi("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,u),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 g=n._lodGenerationScale,p=n._lodGenerationOffset;for(let _=0;_<3;_++){let E=1-_/2,T=p,S=(r-1)*g+p,A=T+(S-T)*E,R=Math.round(Math.min(Math.max(A,0),S)),M=new Vi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let I=new Ai(null);switch(I._isCube=!0,I._texture=M,f[R]=I,_){case 0:n._lodTextureLow=I;break;case 1:n._lodTextureMid=I;break;case 2:n._lodTextureHigh=I;break}}}let h=[];for(let m=0;mawait oW(S,s,a,l,E,g,m,o,f,c,n));else{let S=new Image;S.src=E,T=new Promise((A,R)=>{S.onload=()=>{oW(S,s,a,l,E,g,m,o,f,c,n).then(()=>A()).catch(M=>{R(M)})},S.onerror=M=>{R(M)}})}h.push(T)}if(await Promise.all(h),e.length{Ni();We();jn();$_();zs();rv();Ks();Sc();Lt();xD();XP();RD();ip();TR="image/png",sW=2,aW=[134,22,135,150,246,214,150,54]});var hW={};Be(hW,{_ENVTextureLoader:()=>bD});var bD,mW=y(()=>{uW();bD=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=lW(e);if(a){t.width=a.width,t.height=a.width;try{dW(t,a),cW(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 Mc,pW=y(()=>{We();Mc=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),u=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:u,down:h,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,u=1/d,h=u*u,m=t[1].subtract(t[0]).scale(u/e),g=t[3].subtract(t[2]).scale(u/e),p=1/e,_=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 u=Math.round(f*r);u<0?u=0:u>=r&&(u=r-1);let h=a?r-u-1:u,m=t[h*i*s+d*s+0],g=t[h*i*s+d*s+1],p=t[h*i*s+d*s+2];return{r:m,g,b:p}}};Mc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];Mc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];Mc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];Mc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];Mc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];Mc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Cfe(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 gW(n,e,t,i,r,s){r>0?(r=Cfe(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 MD(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 vW(n,e){return Pfe(n,e)}function Pfe(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,u,h=new ArrayBuffer(i*4),m=new Uint8Array(h),g=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(g);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 Dfe(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,u=0;u<4;u++)for(d=(u+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 _=0;_0;){for(l=0;l{pW()});var SW={};Be(SW,{_HDRTextureLoader:()=>yD});var yD,TW=y(()=>{EW();yD=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=_W(r),a=vW(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 Vo,AW=y(()=>{Lt();Vo=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}};Vo.HEADER_LEN=64;Vo.COMPRESSED_2D=0;Vo.COMPRESSED_3D=1;Vo.TEX_2D=2;Vo.TEX_3D=3});var ID,Ev,xW=y(()=>{ID=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})})}},Ev=class n extends ID{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))})})}};Ev.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var RW,lp,bW,MW=y(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(RW||(RW={}));(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"})(lp||(lp={}));(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"})(bW||(bW={}))});function Sv(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 yW(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),Sv(i)),t.data.wasmBinaries&&Sv(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 IW(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 CW=y(()=>{});var CD,yc,PW=y(()=>{xW();Ni();MW();CW();CD=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:[lp.BC1_RGB,lp.BC3_RGBA],yes:{transcodeFormat:lp.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},yc=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:pe.ScriptBaseUrl,jsDecoderModule:pe.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:pe.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${Sv}(${yW})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new Ev(e,async()=>await IW(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=pe.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,Sv(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",u),l(m),f()},u=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",u),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(g){l({message:g})}f()}};c.addEventListener("error",d),c.addEventListener("message",u),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let h=new Uint8Array(e.byteLength);h.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:h,caps:s,options:i},[h.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}};yc.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};yc.DefaultNumWorkers=yc.GetDefaultNumWorkers();yc.DefaultDecoderOptions=new CD});var DD={};Be(DD,{_KTXTextureLoader:()=>PD});function Lfe(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 PD,LD=y(()=>{AW();PW();Lt();PD=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 Vo(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(Vo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Vo(e,1),a=Lfe(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 yc.IsValid(e)?new yc(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 AR(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 OD(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=AR(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 Ffe:r=!0;case Ofe:s=!0;break;case Bfe:r=!0;case Nfe:break;case Ufe:r=!0;case wfe: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 T,S,A,R=0,M=new Uint8Array(l);for(;t>Gfe){default:case zfe:d=0,h=1,p=i.width,u=0,m=1,g=i.height;break;case kfe:d=0,h=1,p=i.width,u=i.height-1,m=-1,g=-1;break;case Hfe:d=i.width-1,h=-1,p=-1,u=0,m=1,g=i.height;break;case Wfe:d=i.width-1,h=-1,p=-1,u=i.height-1,m=-1,g=-1;break}let _="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=Qfe[_](i,f,o,u,m,g,d,h,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function Xfe(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,u=n.height,h,m=0,g,p,_=new Uint8Array(d*u*4);for(p=i;p!==s;p+=r)for(g=a;g!==l;g+=o,m++)h=c[m],_[(g+d*p)*4+3]=255,_[(g+d*p)*4+2]=f[h*3+0],_[(g+d*p)*4+1]=f[h*3+1],_[(g+d*p)*4+0]=f[h*3+2];return _}function Yfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u,h=0,m,g,p=new Uint8Array(f*d*4);for(g=i;g!==s;g+=r)for(m=a;m!==l;m+=o,h+=2){u=c[h+0]+(c[h+1]<<8);let _=((u&31744)>>10)*255/31|0,v=((u&992)>>5)*255/31|0,E=(u&31)*255/31|0;p[(m+f*g)*4+0]=_,p[(m+f*g)*4+1]=v,p[(m+f*g)*4+2]=E,p[(m+f*g)*4+3]=u&32768?0:255}return p}function Kfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=3)g[(h+f*m)*4+3]=255,g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+1]=c[u+1],g[(h+f*m)*4+0]=c[u+2];return g}function jfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=4)g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+1]=c[u+1],g[(h+f*m)*4+0]=c[u+2],g[(h+f*m)*4+3]=c[u+3];return g}function qfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u,h=0,m,g,p=new Uint8Array(f*d*4);for(g=i;g!==s;g+=r)for(m=a;m!==l;m+=o,h++)u=c[h],p[(m+f*g)*4+0]=u,p[(m+f*g)*4+1]=u,p[(m+f*g)*4+2]=u,p[(m+f*g)*4+3]=255;return p}function Zfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=2)g[(h+f*m)*4+0]=c[u+0],g[(h+f*m)*4+1]=c[u+0],g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+3]=c[u+1];return g}var Ofe,Nfe,wfe,Ffe,Bfe,Ufe,Vfe,Gfe,kfe,Wfe,zfe,Hfe,Qfe,DW=y(()=>{Lt();Ofe=1,Nfe=2,wfe=3,Ffe=9,Bfe=10,Ufe=11,Vfe=48,Gfe=4,kfe=0,Wfe=1,zfe=2,Hfe=3;Qfe={GetTGAHeader:AR,UploadContent:OD,_getImageData8bits:Xfe,_getImageData16bits:Yfe,_getImageData24bits:Kfe,_getImageData32bits:jfe,_getImageDataGrey8bits:qfe,_getImageDataGrey16bits:Zfe}});var LW={};Be(LW,{_TGATextureLoader:()=>ND});var ND,OW=y(()=>{DW();ND=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=AR(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{OD(t,r)})}}});var Tv=y(()=>{});function Jfe(){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 bR(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 Go(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function Ta(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function Av(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function cp(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function FD(n,e){let t=n[e.value];return e.value+=1,t}function FW(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 On(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function BW(n,e){return ede(cp(n,e))}function ede(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 tde(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=Ft(n,-65504,65504),xR.floatView[0]=n;let e=xR.uint32View[0],t=e>>23&511;return xR.baseTable[t]+((e&8388607)>>xR.shiftTable[t])}function UW(n,e){return tde(On(n,e))}function ide(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 rde(n,e){let t=Go(n,e),i=Ta(n,e);return[t,i]}function nde(n,e){let t=Ta(n,e),i=Ta(n,e);return[t,i]}function sde(n,e){let t=On(n,e),i=On(n,e);return[t,i]}function ade(n,e){let t=On(n,e),i=On(n,e),r=On(n,e);return[t,i,r]}function ode(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var Cl,wD,xR,xv=y(()=>{jn();Tv();(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"})(Cl||(Cl={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(wD||(wD={}));xR=Jfe()});function VD(n,e){if(n.getUint32(0,!0)!=ude)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=bR(n.buffer,e);if(!o)a=!1;else{let l=bR(n.buffer,e),c=Ta(n,e),f=VW(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 ude,GW=y(()=>{Lt();xv();ude=20000630});function jW(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 gde(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function HW(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+Rv[t]>>1;Rv[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|Rv[i]++<<6)}}function vde(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=HW(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=HW(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--}}_de(s)}function qW(n){return n&63}function ZW(n){return n>>6}function Ede(n,e,t,i){for(;e<=t;e++){let r=ZW(n[e]),s=qW(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 Sde(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,u=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let g=c>>f-14&16383,p=e[g];if(p.len){f-=p.len;let _=GD(p.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else{if(!p.p)throw new Error("hufDecode issues");let _;for(_=0;_=v&&ZW(n[p.p[_]])==(c>>f-v&(1<>=h,f-=h;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let g=GD(m.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else throw new Error("HufDecode issues")}return!0}function QW(n,e,t,i,r,s){let a={value:0},o=t.value,l=Ta(e,t),c=Ta(e,t);t.value+=4;let f=Ta(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),u=new Array(16384);gde(u);let h=i-(t.value-o);if(vde(n,t,h,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Ede(d,l,c,u),Sde(d,u,n,t,f,c,s,r,a)}function WD(n){return n&65535}function XW(n){let e=WD(n);return e>32767?e-65536:e}function fp(n,e){let t=XW(n),r=XW(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function dp(n,e){let t=WD(n),i=WD(e),r=t-(i>>1)&zW;return{a:i+r-pde&zW,b:r}}function $W(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 u=d+s*(r-f),h=s*c,m=s*f,g=i*c,p=i*f,_,v,E,T;for(;d<=u;d+=m){let S=d,A=d+i*(t-f);for(;S<=A;S+=p){let R=S+g,M=S+h,I=M+g;if(o){let C=fp(n[S+e],n[M+e]);_=C.a,E=C.b,C=fp(n[R+e],n[I+e]),v=C.a,T=C.b,C=fp(_,v),n[S+e]=C.a,n[R+e]=C.b,C=fp(E,T),n[M+e]=C.a,n[I+e]=C.b}else{let C=dp(n[S+e],n[M+e]);_=C.a,E=C.b,C=dp(n[R+e],n[I+e]),v=C.a,T=C.b,C=dp(_,v),n[S+e]=C.a,n[R+e]=C.b,C=dp(E,T),n[M+e]=C.a,n[I+e]=C.b}}if(t&c){let R=S+h,M;o?M=fp(n[S+e],n[R+e]):M=dp(n[S+e],n[R+e]),_=M.a,n[R+e]=M.b,n[S+e]=_}}if(r&c){let S=d,A=d+i*(t-f);for(;S<=A;S+=p){let R=S+g,M;o?M=fp(n[S+e],n[R+e]):M=dp(n[S+e],n[R+e]),_=M.a,n[R+e]=M.b,n[S+e]=_}}f=c,c>>=1}return d}function JW(n,e,t){for(let i=0;i{xv();Tv();KW=16,pde=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function zD(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function nz(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(tz(e)),i=new Uint8Array(t.length);return BD(t),UD(t,i),new DataView(i.buffer)}function HD(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return BD(t),UD(t,i),new DataView(i.buffer)}function sz(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{ez();iz();xv();Tv()});var eo,Pl,XD=y(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(eo||(eo={}));Pl=class{};Pl.DefaultOutputType=eo.HalfFloat;Pl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function YD(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 Cl.NO_COMPRESSION:r.lines=1,r.uncompress=zD;break;case Cl.RLE_COMPRESSION:r.lines=1,r.uncompress=nz;break;case Cl.ZIPS_COMPRESSION:r.lines=1,r.uncompress=HD,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;case Cl.ZIP_COMPRESSION:r.lines=16,r.uncompress=HD,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;case Cl.PIZ_COMPRESSION:r.lines=32,r.uncompress=az;break;case Cl.PXR24_COMPRESSION:r.lines=16,r.uncompress=sz,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;default:throw new Error(Cl[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 eo.Float:r.getter=BW,r.inputSize=2;break;case eo.HalfFloat:r.getter=cp,r.inputSize=2;break}else if(r.type===2)switch(i){case eo.Float:r.getter=On,r.inputSize=4;break;case eo.HalfFloat:r.getter=UW,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 KD(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 u=c*n.bytesPerLine,h=(n.height-1-d)*n.outLineWidth;for(let m=0;m{xv();oz();Tv();Ni();XD()});var cz={};Be(cz,{ReadExrDataAsync:()=>Tde,_ExrTextureLoader:()=>jD});async function Tde(n){let e=new DataView(n),t={value:0},i=VD(e,t);try{let r=await YD(i,e,t,eo.Float);return KD(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 jD,fz=y(()=>{GW();lz();XD();Lt();jD=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=VD(r,s);YD(a,r,s,Pl.DefaultOutputType).then(o=>{KD(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 Ic(n,e){Ade(n)&&ee.Warn(`Extension with the name '${n}' already exists`),yR.set(n,e)}function Ade(n){return yR.delete(n)}function IR(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),yR.has(n)||(n.endsWith(".ies")&&Ic(".ies",async()=>await Promise.resolve().then(()=>(ck(),lk)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&Ic(".dds",async()=>await Promise.resolve().then(()=>(dk(),fk)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&Ic(".basis",async()=>await Promise.resolve().then(()=>(_k(),gk)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&Ic(".env",async()=>await Promise.resolve().then(()=>(mW(),hW)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&Ic(".hdr",async()=>await Promise.resolve().then(()=>(TW(),SW)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(Ic(".ktx",async()=>await Promise.resolve().then(()=>(LD(),DD)).then(i=>new i._KTXTextureLoader)),Ic(".ktx2",async()=>await Promise.resolve().then(()=>(LD(),DD)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&Ic(".tga",async()=>await Promise.resolve().then(()=>(OW(),LW)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&Ic(".exr",async()=>await Promise.resolve().then(()=>(fz(),cz)).then(i=>new i._ExrTextureLoader)));let t=yR.get(n);return t?Promise.resolve(t(e)):null}var yR,qD=y(()=>{Lt();yR=new Map});function dz(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var uz=y(()=>{});var hz=y(()=>{zs();Lt();gc();J_();Hr();qD();uz();Re.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)};Re.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)};Re.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)};Re.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=Gf();np(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,u)=>{i&&i.removePendingData(l),a&&a(d,u)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Re.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,u=null,h=null,m=!1,g=null){let p=d||new Vi(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=g);let _=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:dz(n),E=IR(v),T=(A,R)=>{p.dispose(),s?s(A,R):A&&ee.Warn(A)},S=(A,R)=>{n===_?A&&T(A.status+" "+A.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${_}`),this.createCubeTextureBase(_,e,t,!!i,r,T,a,o,l,c,f,p,u,h,m,g))};if(E)E.then(A=>{let R=M=>{u&&u(p,M),A.loadCubeData(M,p,l,r,(I,C)=>{T(I,C)})};g?R(g):t&&t.length===6?A.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(I=>new Uint8Array(I))),t,T):T("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,S)});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,(A,R)=>{h&&h(A,R)},t,T)}return this._internalTexturesCache.push(p),p}});var Pz={};Be(Pz,{DDSTools:()=>No});function CR(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function Rde(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var xde,mz,pz,gz,_z,vz,Ez,Sz,Tz,ZD,Az,xz,Rz,bz,bde,QD,Mde,yde,Mz,yz,$D,Iz,JD,Cz,Ide,Cde,Pde,Dde,Lde,Ode,Nde,No,rD=y(()=>{jn();Lt();DP();$P();hz();xde=542327876,mz=131072,pz=512,gz=4,_z=64,vz=131072;Ez=CR("DXT1"),Sz=CR("DXT3"),Tz=CR("DXT5"),ZD=CR("DX10"),Az=113,xz=116,Rz=2,bz=10,bde=88,QD=31,Mde=0,yde=1,Mz=2,yz=3,$D=4,Iz=7,JD=20,Cz=21,Ide=22,Cde=23,Pde=24,Dde=25,Lde=26,Ode=28,Nde=32,No=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,QD),i=new Int32Array(e.buffer,e.byteOffset,QD+4),r=1;t[Mz]&mz&&(r=Math.max(1,t[Iz]));let s=t[Cz],a=s===ZD?i[Nde]:0,o=0;switch(s){case Az:o=2;break;case xz:o=1;break;case ZD:if(a===bz){o=2;break}if(a===Rz){o=1;break}}return{width:t[$D],height:t[yz],mipmapCount:r,isFourCC:(t[JD]&gz)===gz,isRGB:(t[JD]&_z)===_z,isLuminance:(t[JD]&vz)===vz,isCube:(t[Ode]&pz)===pz,isCompressed:s===Ez||s===Sz||s===Tz,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 u=0;u0?r.sphericalPolynomial=_c.ConvertCubeMapToSphericalPolynomial({size:u[$D],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}};No.StoreLODInAlphaChannel=!1});var Dz=y(()=>{Es();zs();Lt();$_();rv();Mt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var _;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(_=d._sphericalPolynomial)!=null?_:new Rl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let u=3,h=this._gl,m=f.width;if(!m)return;let{DDSTools:g}=await Promise.resolve().then(()=>(rD(),Pz)),p=[];for(let v=0;v{Es();Ox();Mt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new Tl(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};Mt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new Tl(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};Mt.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)};Mt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};Mt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};Mt.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 Oz=y(()=>{Wa();Hr();Re.prototype.displayLoadingUI=function(){if(!Sr())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Re.prototype.hideLoadingUI=function(){if(!Sr())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Re.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Re.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var Nz=y(()=>{Hr();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Re.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Re.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Re.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Re.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var eL=y(()=>{Hr();Re.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 wz=y(()=>{Hr();eL();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Re.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Re.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Re.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Re.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Re.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Re.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Re.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Re.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Re.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Re.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var Fz=y(()=>{Hr();eL();Re.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Re.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Re.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Re.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Re.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Re.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Re.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Re.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Re.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Re.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Re.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Re.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Re.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Re.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Re.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Re.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Re.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Re.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Re.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Re.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Re.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Re.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Re.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Re.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Re.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()};Re.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 Bz=y(()=>{Hr();Re.prototype.getRenderPassNames=function(){return this._renderPassNames};Re.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Re.prototype.createRenderPassId=function(n){let e=++Re._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Re.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{Hr();Re.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 Vz=y(()=>{qD();Hr();Re.GetCompatibleTextureLoader=IR});function wde(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function Gz(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||wde(e),!Re.audioEngine&&t.audioEngine&&Re.AudioEngineFactory&&(Re.audioEngine=Re.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),Bf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&tL(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=Re.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function kz(n,e){Oe.Instances.length===1&&Re.audioEngine&&(Re.audioEngine.dispose(),Re.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)),Bf()&&(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 Wz(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 zz(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 Hz(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 Xz(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function Yz(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function tL(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function Kz(){document.exitPointerLock&&document.exitPointerLock()}var jz=y(()=>{Wa();Hr();Gi()});var ke,iL=y(()=>{zs();Gi();Es();XV();Ox();Lt();_P();YV();ZV();QV();$V();JV();iG();rG();nG();Dz();Lz();Oz();Nz();wz();Fz();Bz();TP();Uz();Vz();Hr();jz();mD();Sl();ke=class n extends Mt{static get NpmPackage(){return Re.NpmPackage}static get Version(){return Re.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Re.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 wx,this._drawCalls=new Il,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),Gz(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return Hz(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await zz(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&Xz(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&Yz()}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 Wz(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&&tL(this._renderingCanvas)}exitPointerlock(){Kz()}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 Gm(e,this._gl),o=new Vi(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 Tl(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)=>{El(()=>{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(),kz(this,this._renderingCanvas),super.dispose()}};ke.ALPHA_DISABLE=0;ke.ALPHA_ADD=1;ke.ALPHA_COMBINE=2;ke.ALPHA_SUBTRACT=3;ke.ALPHA_MULTIPLY=4;ke.ALPHA_MAXIMIZED=5;ke.ALPHA_ONEONE=6;ke.ALPHA_PREMULTIPLIED=7;ke.ALPHA_PREMULTIPLIED_PORTERDUFF=8;ke.ALPHA_INTERPOLATE=9;ke.ALPHA_SCREENMODE=10;ke.DELAYLOADSTATE_NONE=0;ke.DELAYLOADSTATE_LOADED=1;ke.DELAYLOADSTATE_LOADING=2;ke.DELAYLOADSTATE_NOTLOADED=4;ke.NEVER=512;ke.ALWAYS=519;ke.LESS=513;ke.EQUAL=514;ke.LEQUAL=515;ke.GREATER=516;ke.GEQUAL=518;ke.NOTEQUAL=517;ke.KEEP=7680;ke.REPLACE=7681;ke.INCR=7682;ke.DECR=7683;ke.INVERT=5386;ke.INCR_WRAP=34055;ke.DECR_WRAP=34056;ke.TEXTURE_CLAMP_ADDRESSMODE=0;ke.TEXTURE_WRAP_ADDRESSMODE=1;ke.TEXTURE_MIRROR_ADDRESSMODE=2;ke.TEXTUREFORMAT_ALPHA=0;ke.TEXTUREFORMAT_LUMINANCE=1;ke.TEXTUREFORMAT_LUMINANCE_ALPHA=2;ke.TEXTUREFORMAT_RGB=4;ke.TEXTUREFORMAT_RGBA=5;ke.TEXTUREFORMAT_RED=6;ke.TEXTUREFORMAT_R=6;ke.TEXTUREFORMAT_R16_UNORM=33322;ke.TEXTUREFORMAT_RG16_UNORM=33324;ke.TEXTUREFORMAT_RGB16_UNORM=32852;ke.TEXTUREFORMAT_RGBA16_UNORM=32859;ke.TEXTUREFORMAT_R16_SNORM=36760;ke.TEXTUREFORMAT_RG16_SNORM=36761;ke.TEXTUREFORMAT_RGB16_SNORM=36762;ke.TEXTUREFORMAT_RGBA16_SNORM=36763;ke.TEXTUREFORMAT_RG=7;ke.TEXTUREFORMAT_RED_INTEGER=8;ke.TEXTUREFORMAT_R_INTEGER=8;ke.TEXTUREFORMAT_RG_INTEGER=9;ke.TEXTUREFORMAT_RGB_INTEGER=10;ke.TEXTUREFORMAT_RGBA_INTEGER=11;ke.TEXTURETYPE_UNSIGNED_BYTE=0;ke.TEXTURETYPE_UNSIGNED_INT=0;ke.TEXTURETYPE_FLOAT=1;ke.TEXTURETYPE_HALF_FLOAT=2;ke.TEXTURETYPE_BYTE=3;ke.TEXTURETYPE_SHORT=4;ke.TEXTURETYPE_UNSIGNED_SHORT=5;ke.TEXTURETYPE_INT=6;ke.TEXTURETYPE_UNSIGNED_INTEGER=7;ke.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;ke.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;ke.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;ke.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;ke.TEXTURETYPE_UNSIGNED_INT_24_8=12;ke.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;ke.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;ke.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;ke.TEXTURE_NEAREST_SAMPLINGMODE=1;ke.TEXTURE_BILINEAR_SAMPLINGMODE=2;ke.TEXTURE_TRILINEAR_SAMPLINGMODE=3;ke.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;ke.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;ke.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;ke.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;ke.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;ke.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;ke.TEXTURE_NEAREST_LINEAR=7;ke.TEXTURE_NEAREST_NEAREST=1;ke.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;ke.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;ke.TEXTURE_LINEAR_LINEAR=2;ke.TEXTURE_LINEAR_NEAREST=12;ke.TEXTURE_EXPLICIT_MODE=0;ke.TEXTURE_SPHERICAL_MODE=1;ke.TEXTURE_PLANAR_MODE=2;ke.TEXTURE_CUBIC_MODE=3;ke.TEXTURE_PROJECTION_MODE=4;ke.TEXTURE_SKYBOX_MODE=5;ke.TEXTURE_INVCUBIC_MODE=6;ke.TEXTURE_EQUIRECTANGULAR_MODE=7;ke.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;ke.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;ke.SCALEMODE_FLOOR=1;ke.SCALEMODE_NEAREST=2;ke.SCALEMODE_CEILING=3});var rL,xi,Aa=y(()=>{Xt();We();zt();vi();Gi();An();Dr();rL=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}},xi=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 rL,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=Z.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 $e("AnimationRange")};xi._NodeConstructors={};P([F()],xi.prototype,"name",void 0);P([F()],xi.prototype,"id",void 0);P([F()],xi.prototype,"uniqueId",void 0);P([F()],xi.prototype,"state",void 0);P([F()],xi.prototype,"metadata",void 0)});function nL(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 qz(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{nL(t,i,r)},0)):nL(t,i,r)}}function Zz(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 Mv(n,e){let t;return Zz(n,nL,i=>t=i,i=>{throw i},e),t}async function Qz(n,e,t){return await new Promise((i,r)=>{Zz(n,e,i,r,t)})}function $z(n,e){return(...t)=>Mv(n(...t),e)}var sL=y(()=>{});var _t,Dl=y(()=>{Xt();zt();Oo();Ni();vi();We();Aa();Lt();er();An();Qm();Gx();Dr();_t=class n extends xi{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 Po(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 Z,this._postProcesses=new Array,this._activeMeshes=new Ki(256),this._globalPosition=b.Zero(),this._computedViewMatrix=Z.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=Z.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=je.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 Z.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,u,h,m,g,p,_,v,E,T,S,A,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 I;r.useRightHandedSystem?I=Z.PerspectiveFovRHToRef:I=Z.PerspectiveFovLHToRef,I(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 I=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?Z.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-I,(o=this.orthoRight)!=null?o:I,(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):Z.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-I,(d=this.orthoRight)!=null?d:I,(u=this.orthoBottom)!=null?u:-C,(h=this.orthoTop)!=null?h:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?Z.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-I,(g=this.orthoRight)!=null?g:I,(p=this.orthoBottom)!=null?p:-C,(_=this.orthoTop)!=null?_:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-I,(E=this.orthoRight)!=null?E:I,(T=this.orthoBottom)!=null?T:-C,(S=this.orthoTop)!=null?S: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=(A=this.oblique)==null?void 0:A.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?Vf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Vf.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 $e("Ray")}getForwardRayToRef(e,t=100,i,r){throw $e("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=pe.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 Z.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=pe.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=st.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 $e("UniversalCamera")};_t.PERSPECTIVE_CAMERA=0;_t.ORTHOGRAPHIC_CAMERA=1;_t.FOVMODE_VERTICAL_FIXED=0;_t.FOVMODE_HORIZONTAL_FIXED=1;_t.RIG_MODE_NONE=0;_t.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;_t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;_t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;_t.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;_t.RIG_MODE_STEREOSCOPIC_INTERLACED=14;_t.RIG_MODE_VR=20;_t.RIG_MODE_CUSTOM=22;_t.ForceAttachControlToAlwaysPreventDefault=!1;P([Jr("position")],_t.prototype,"_position",void 0);P([Jr("upVector")],_t.prototype,"_upVector",void 0);P([F()],_t.prototype,"orthoLeft",null);P([F()],_t.prototype,"orthoRight",null);P([F()],_t.prototype,"orthoBottom",null);P([F()],_t.prototype,"orthoTop",null);P([F()],_t.prototype,"fov",void 0);P([F()],_t.prototype,"projectionPlaneTilt",void 0);P([F()],_t.prototype,"minZ",void 0);P([F()],_t.prototype,"maxZ",void 0);P([F()],_t.prototype,"inertia",void 0);P([F()],_t.prototype,"mode",null);P([F()],_t.prototype,"layerMask",void 0);P([F()],_t.prototype,"fovMode",void 0);P([F()],_t.prototype,"cameraRigMode",void 0);P([F()],_t.prototype,"interaxialDistance",void 0);P([F()],_t.prototype,"isStereoscopicSideBySide",void 0);P([F()],_t.prototype,"ignoreCameraMaxZ",void 0)});var Gu,aL=y(()=>{Gu=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var Qf,oL=y(()=>{Al();We();Kn();Qf=class n{constructor(e,t,i){this.vectors=xn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=xn(3,b.Zero),this.vectorsWorld=xn(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||Z.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,u=e.z,h=-wt;return!(o-ff-r||l-dd-s||c-uu-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,u=e.y,h=e.z,m=t.x,g=t.y,p=t.z;return!(lm||cg||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}};Qf._TmpVector3=xn(3,b.Zero)});var up,Jz=y(()=>{Al();We();up=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||Z.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{Al();We();oL();Jz();lL={min:0,max:0},cL={min:0,max:0},eH=(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},xs=(n,e,t)=>(eH(n,e,lL),eH(n,t,cL),!(lL.min>cL.max||cL.min>lL.max)),Rn=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new Qf(e,t,i),this.boundingSphere=new up(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(!up.Intersects(this.boundingSphere,e.boundingSphere)||!Qf.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!xs(i.directions[0],i,r)||!xs(i.directions[1],i,r)||!xs(i.directions[2],i,r)||!xs(r.directions[0],i,r)||!xs(r.directions[1],i,r)||!xs(r.directions[2],i,r)||!xs(b.Cross(i.directions[0],r.directions[0]),i,r)||!xs(b.Cross(i.directions[0],r.directions[1]),i,r)||!xs(b.Cross(i.directions[0],r.directions[2]),i,r)||!xs(b.Cross(i.directions[1],r.directions[0]),i,r)||!xs(b.Cross(i.directions[1],r.directions[1]),i,r)||!xs(b.Cross(i.directions[1],r.directions[2]),i,r)||!xs(b.Cross(i.directions[2],r.directions[0]),i,r)||!xs(b.Cross(i.directions[2],r.directions[1]),i,r)||!xs(b.Cross(i.directions[2],r.directions[2]),i,r))}};Rn._TmpVector3=xn(2,b.Zero)});function tH(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 mp.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 PR(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),mp.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 mp,DR=y(()=>{Xt();We();zt();mp=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],mp,"extractMinAndMaxIndexed",null);P([Xs.filter((...n)=>!Array.isArray(n[0]))],mp,"extractMinAndMax",null)});var js,yv=y(()=>{Yi();aL();hp();DR();Lu();js=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 Ts(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(L.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=tH(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new Rn(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=u)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var Iv,Me,Ar=y(()=>{Xt();We();Yi();An();Kt();Lt();zt();sL();ev();yv();Iv=class{},Me=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=$z(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 L.PositionKind:this.positions=e;break;case L.NormalKind:this.normals=e;break;case L.TangentKind:this.tangents=e;break;case L.UVKind:this.uvs=e;break;case L.UV2Kind:this.uvs2=e;break;case L.UV3Kind:this.uvs3=e;break;case L.UV4Kind:this.uvs4=e;break;case L.UV5Kind:this.uvs5=e;break;case L.UV6Kind:this.uvs6=e;break;case L.ColorKind:this.colors=e;break;case L.MatricesIndicesKind:this.matricesIndices=e;break;case L.MatricesWeightsKind:this.matricesWeights=e;break;case L.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case L.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(L.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(L.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(L.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(L.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(L.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(L.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(L.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(L.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(L.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(L.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(L.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(L.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(L.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 js(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(L.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(L.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(L.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(L.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(L.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(L.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(L.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(L.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(L.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(L.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(L.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(L.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(L.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 Mv(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var h,m,g,p;this._validate();let l=t.map(_=>_.vertexData),c=this;if(o)for(let _ of l)_&&(_._validate(),!this.normals&&_.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&_.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&_.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&_.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&_.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&_.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&_.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&_.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&_.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&_.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&_.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&_.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&_.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let _ of l)if(_){if(o)this.normals&&!_.normals&&(_.normals=new Float32Array(_.positions.length)),this.tangents&&!_.tangents&&(_.tangents=new Float32Array(_.positions.length/3*4)),this.uvs&&!_.uvs&&(_.uvs=new Float32Array(_.positions.length/3*2)),this.uvs2&&!_.uvs2&&(_.uvs2=new Float32Array(_.positions.length/3*2)),this.uvs3&&!_.uvs3&&(_.uvs3=new Float32Array(_.positions.length/3*2)),this.uvs4&&!_.uvs4&&(_.uvs4=new Float32Array(_.positions.length/3*2)),this.uvs5&&!_.uvs5&&(_.uvs5=new Float32Array(_.positions.length/3*2)),this.uvs6&&!_.uvs6&&(_.uvs6=new Float32Array(_.positions.length/3*2)),this.colors&&!_.colors&&(_.colors=new Float32Array(_.positions.length/3*4),_.colors.fill(1)),this.matricesIndices&&!_.matricesIndices&&(_.matricesIndices=new Float32Array(_.positions.length/3*4)),this.matricesWeights&&!_.matricesWeights&&(_.matricesWeights=new Float32Array(_.positions.length/3*4)),this.matricesIndicesExtra&&!_.matricesIndicesExtra&&(_.matricesIndicesExtra=new Float32Array(_.positions.length/3*4)),this.matricesWeightsExtra&&!_.matricesWeightsExtra&&(_.matricesWeightsExtra=new Float32Array(_.positions.length/3*4));else if(_._validate(),!this.normals!=!_.normals||!this.tangents!=!_.tangents||!this.uvs!=!_.uvs||!this.uvs2!=!_.uvs2||!this.uvs3!=!_.uvs3||!this.uvs4!=!_.uvs4||!this.uvs5!=!_.uvs5||!this.uvs6!=!_.uvs6||!this.colors!=!_.colors||!this.matricesIndices!=!_.matricesIndices||!this.matricesWeights!=!_.matricesWeights||!this.matricesIndicesExtra!=!_.matricesIndicesExtra||!this.matricesWeightsExtra!=!_.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let _,v=0,E=0,T=[],S=null,A=[];for(let M of this.splitBasedOnMaterialID())A.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let I of M.vertexData.splitBasedOnMaterialID())A.push({vertexData:I,transform:M.transform});A.sort((M,I)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,D=I.vertexData.materialInfos?I.vertexData.materialInfos[0].materialIndex:0;return C>D?1:C===D?0:-1});for(let M of A){let I=M.vertexData;if(I.materialInfos?_=I.materialInfos[0].materialIndex:_=0,S&&S.materialIndex===_)S.indexCount+=I.indices.length,S.verticesCount+=I.positions.length/3;else{let C=new Iv;C.materialIndex=_,C.indexStart=v,C.indexCount=I.indices.length,C.verticesStart=E,C.verticesCount=I.positions.length/3,T.push(C),S=C}v+=I.indices.length,E+=I.positions.length/3}let R=A.splice(0,1)[0];c=R.vertexData,e=R.transform,l=A.map(M=>M.vertexData),t=A,this.materialInfos=T}let f=l.reduce((_,v)=>{var E,T;return _+((T=(E=v.indices)==null?void 0:E.length)!=null?T:0)},(m=(h=c.indices)==null?void 0:h.length)!=null?m:0),u=s||l.some(_=>_.indices===c.indices)?(g=c.indices)==null?void 0:g.slice():c.indices;if(f>0){let _=(p=u==null?void 0:u.length)!=null?p:0;if(u||(u=new Array(f)),u.length!==f){if(Array.isArray(u))u.length=f;else{let E=i||u instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);E.set(u),u=E}e&&e.determinant()<0&&n._FlipFaces(u,0,_)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:E,transform:T}of t)if(E.indices){for(let S=0;S[_.vertexData.positions,_.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(L.NormalKind,c.normals,e,t.map(_=>[_.vertexData.normals,_.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(L.TangentKind,c.tangents,e,t.map(_=>[_.vertexData.tangents,_.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(L.UVKind,c.uvs,e,t.map(_=>[_.vertexData.uvs,_.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(L.UV2Kind,c.uvs2,e,t.map(_=>[_.vertexData.uvs2,_.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(L.UV3Kind,c.uvs3,e,t.map(_=>[_.vertexData.uvs3,_.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(L.UV4Kind,c.uvs4,e,t.map(_=>[_.vertexData.uvs4,_.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(L.UV5Kind,c.uvs5,e,t.map(_=>[_.vertexData.uvs5,_.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(L.UV6Kind,c.uvs6,e,t.map(_=>[_.vertexData.uvs6,_.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(L.ColorKind,c.colors,e,t.map(_=>[_.vertexData.colors,_.transform])),(c.hasVertexAlpha!==void 0||t.some(_=>_.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(_=>_.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(L.MatricesIndicesKind,c.matricesIndices,e,t.map(_=>[_.vertexData.matricesIndices,_.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(L.MatricesWeightsKind,c.matricesWeights,e,t.map(_=>[_.vertexData.matricesWeights,_.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(L.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(_=>[_.vertexData.matricesIndicesExtra,_.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(L.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(_=>[_.vertexData.matricesWeightsExtra,_.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===L.PositionKind?n._TransformVector3Coordinates:e===L.NormalKind?n._TransformVector3Normals:e===L.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=L.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(L.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(L.NormalKind,this.normals),this.tangents&&i(L.TangentKind,this.tangents),this.uvs&&i(L.UVKind,this.uvs),this.uvs2&&i(L.UV2Kind,this.uvs2),this.uvs3&&i(L.UV3Kind,this.uvs3),this.uvs4&&i(L.UV4Kind,this.uvs4),this.uvs5&&i(L.UV5Kind,this.uvs5),this.uvs6&&i(L.UV6Kind,this.uvs6),this.colors&&i(L.ColorKind,this.colors),this.matricesIndices&&i(L.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(L.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(L.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(L.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(L.PositionKind)&&(r.positions=e.getVerticesData(L.PositionKind,t,i)),e.isVerticesDataPresent(L.NormalKind)&&(r.normals=e.getVerticesData(L.NormalKind,t,i)),e.isVerticesDataPresent(L.TangentKind)&&(r.tangents=e.getVerticesData(L.TangentKind,t,i)),e.isVerticesDataPresent(L.UVKind)&&(r.uvs=e.getVerticesData(L.UVKind,t,i)),e.isVerticesDataPresent(L.UV2Kind)&&(r.uvs2=e.getVerticesData(L.UV2Kind,t,i)),e.isVerticesDataPresent(L.UV3Kind)&&(r.uvs3=e.getVerticesData(L.UV3Kind,t,i)),e.isVerticesDataPresent(L.UV4Kind)&&(r.uvs4=e.getVerticesData(L.UV4Kind,t,i)),e.isVerticesDataPresent(L.UV5Kind)&&(r.uvs5=e.getVerticesData(L.UV5Kind,t,i)),e.isVerticesDataPresent(L.UV6Kind)&&(r.uvs6=e.getVerticesData(L.UV6Kind,t,i)),e.isVerticesDataPresent(L.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(L.ColorKind),o=s.getVerticesData(L.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]))],Me,"_TransformVector3Coordinates",null);P([Xs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector3Normals",null);P([Xs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector4Normals",null);P([Xs.filter((...n)=>!Array.isArray(n[0]))],Me,"_FlipFaces",null)});var tn,LR=y(()=>{tn=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}};tn._ForceFullSceneLoadingForIncremental=!1;tn._ShowLoadingScreen=!0;tn._CleanBoneMatrixWeights=!1;tn._LoggingLevel=0});var bn,OR=y(()=>{We();Kt();Ar();Yi();yv();LR();hp();Ni();Hf();DR();Gi();hn();ip();bn=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 L(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===L.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(L.PositionKind),!e))return;this._extend=PR(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===L.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:u,normalized:h}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let _;o instanceof Array?_=o.length*4:_=o.byteLength,m=_/u}let g=MG(o,c,f,d,u,m,!0),p=new L(this._engine,g,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:h,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 Rn(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,ti&&ti.HasTags(this)&&(e.tags=ti.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(L.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(L.PositionKind)),this.isVertexBufferUpdatable(L.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(L.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(L.NormalKind)),this.isVertexBufferUpdatable(L.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(L.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(L.TangentKind)),this.isVertexBufferUpdatable(L.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(L.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(L.UVKind)),this.isVertexBufferUpdatable(L.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(L.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(L.UV2Kind)),this.isVertexBufferUpdatable(L.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(L.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(L.UV3Kind)),this.isVertexBufferUpdatable(L.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(L.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(L.UV4Kind)),this.isVertexBufferUpdatable(L.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(L.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(L.UV5Kind)),this.isVertexBufferUpdatable(L.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(L.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(L.UV6Kind)),this.isVertexBufferUpdatable(L.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(L.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(L.ColorKind)),this.isVertexBufferUpdatable(L.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(L.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(L.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(L.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(L.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(L.MatricesWeightsKind)),this.isVertexBufferUpdatable(L.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 pe.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(L.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(L.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(L.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(L.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(L.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(L.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(L.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(L.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(L.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(L.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(L.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(L.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(L.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(L.MatricesIndicesKind),a=t.getVerticesData(L.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(h=c-1),u>.001){let m=1/u;for(let g=0;g<4;g++)o[d+g]*=m;if(l)for(let g=0;g<4;g++)l[d+g]*=m}else h>=4?(l[d+h-4]=1-u,a[d+h-4]=r):(o[d+h]=1-u,s[d+h]=r)}t.setVerticesData(L.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,ti&&ti.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new Rn(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(L.UVKind),e.hasUVs2&&r._delayInfo.push(L.UV2Kind),e.hasUVs3&&r._delayInfo.push(L.UV3Kind),e.hasUVs4&&r._delayInfo.push(L.UV4Kind),e.hasUVs5&&r._delayInfo.push(L.UV5Kind),e.hasUVs6&&r._delayInfo.push(L.UV6Kind),e.hasColors&&r._delayInfo.push(L.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(L.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(L.MatricesWeightsKind),r._delayLoadingFunction=Me.ImportVertexData):Me.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var $t,$f=y(()=>{Xt();zt();Dr();vi();We();Aa();er();$t=class n extends xi{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=Z.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=je.Identity(),this._pivotMatrix=Z.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=Z.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=Z.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||je.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];je.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?je.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(Z.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];Z.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,je.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),Z.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(Z.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=je.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=je.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=je.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),Z.TranslationToRef(r.x,r.y,r.z,l),Z.TranslationToRef(-r.x,-r.y,-r.z,c),Z.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],je.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return je.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(je.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,je.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];Z.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 Z.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let u=this.parent;u.getSkeleton().prepare(),u.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),Z.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 u=-Math.atan2(d.z,d.x)+Math.PI/2,h=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,h);if(je.RotationYawPitchRollToRef(u,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let g=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(g),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(g.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(g.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(g.z=0),Z.RotationYawPitchRollToRef(g.y,g.x,g.z,$.Matrix[0])}else Z.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),Z.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=Z.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(Z.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(Z.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)}};$t.BILLBOARDMODE_NONE=0;$t.BILLBOARDMODE_X=1;$t.BILLBOARDMODE_Y=2;$t.BILLBOARDMODE_Z=4;$t.BILLBOARDMODE_ALL=7;$t.BILLBOARDMODE_USE_POSITION=128;$t.BillboardUseParentOrientation=!1;$t._TmpRotation=je.Zero();$t._TmpScaling=b.Zero();$t._TmpTranslation=b.Zero();$t._TmpRHRestore=Z.Scaling(1,1,-1);$t._LookAtVectorCache=new b(0,0,0);$t._RotationAxisCache=new je;P([Jr("position")],$t.prototype,"_position",void 0);P([Jr("rotation")],$t.prototype,"_rotation",void 0);P([SG("rotationQuaternion")],$t.prototype,"_rotationQuaternion",void 0);P([Jr("scaling")],$t.prototype,"_scaling",void 0);P([F("billboardMode")],$t.prototype,"_billboardMode",void 0);P([F()],$t.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],$t.prototype,"_infiniteDistance",void 0);P([F()],$t.prototype,"ignoreNonUniformScaling",void 0);P([F()],$t.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var NR,iH=y(()=>{We();NR=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 rH(n){return Math.floor(n/8)}function nH(n){return 1<{wR=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=rH(e),i=nH(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=rH(e),r=nH(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var aH={};Be(aH,{OptimizeIndices:()=>Fde});function Fde(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 u=i.get(d);if(!u)return;for(let h of u)r.get(h)||c.push(h)}}}};for(let l=0;l{sH()});function Bde(n,e,t){let i;switch(e){case L.PositionKind:i=r=>r.getPositions();break;case L.NormalKind:i=r=>r.getNormals();break;case L.TangentKind:i=r=>r.getTangents();break;case L.UVKind:i=r=>r.getUVs();break;case L.UV2Kind:i=r=>r.getUV2s();break;case L.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(i[u+h]*16),m,c),l.addToSelf(c));if(s&&a)for(h=0;h<4;h++)m=a[u+h],m>0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(s[u+h]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var fL,dL,Ir,pp=y(()=>{Xt();vi();We();Yi();Ar();$f();uv();hp();Yf();iH();An();DR();Kt();Kn();zm();er();zt();Hr();fL=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}},dL=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new fL,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 NR,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},Ir=class n extends $t{static get BILLBOARDMODE_NONE(){return $t.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return $t.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return $t.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return $t.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return $t.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return $t.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 dL,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=Ee.Red(),this.outlineWidth=.02,this.overlayColor=Ee.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 dt(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()>Re.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 Tr(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!==$t.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 Rn(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(L.MatricesIndicesKind)&&this.isVerticesDataPresent(L.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===$t.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 Z;(this.rotationQuaternion?this.rotationQuaternion:je.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=PR(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new Rn(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&&Bde(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(L.MatricesIndicesKind),o=s(L.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(L.MatricesIndicesExtraKind):null,f=l?s(L.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===L.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 Z.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 As,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,u=this._scene.getIntersectingSubMeshCandidates(this,e),h=u.length,m=!1;for(let g=0;g1&&!a&&!p.canIntersects(e))continue;let _=p.intersects(e,this._positions,this.getIndices(),t,i);if(_&&(t||!d||_.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;lwt?s.maximum.x-s.minimum.x:wt,e.bbSize.y=s.maximum.y-s.minimum.y>wt?s.maximum.y-s.minimum.y:wt,e.bbSize.z=s.maximum.z-s.minimum.z>wt?s.maximum.z-s.minimum.z:wt;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&&Me.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,u,h,m,g,p=this.getFacetLocalPositions(),_=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let E=Number.MAX_VALUE,T,S,A,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=A.x*R.x+A.y*R.y+A.z*R.z,u=-(A.x*e+A.y*t+A.z*i-d)/(A.x*A.x+A.y*A.y+A.z*A.z),h=e+A.x*u,m=t+A.y*u,g=i+A.z*u,l=h-e,c=m-t,f=g-i,T=l*l+c*c+f*f,T(oH(),aH));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Hs.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?je.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw $e("EdgesRenderer")}enableEdgesRendering(e,t,i){throw $e("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};Ir.OCCLUSION_TYPE_NONE=0;Ir.OCCLUSION_TYPE_OPTIMISTIC=1;Ir.OCCLUSION_TYPE_STRICT=2;Ir.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;Ir.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;Ir.CULLINGSTRATEGY_STANDARD=0;Ir.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;Ir.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;Ir.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;Ir.DefaultIsPickable=!0;P([Xs.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],Ir,"_ApplySkeleton",null);Bt("BABYLON.AbstractMesh",Ir)});var Zn,lH=y(()=>{Xt();Dr();zt();Zn=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){st.Clone(()=>e,this)}serialize(){return st.Serialize(this)}parse(e,t,i){st.Parse(()=>this,e,t,i)}};P([F()],Zn.prototype,"func",null);P([F()],Zn.prototype,"backFunc",null);P([F()],Zn.prototype,"funcRef",null);P([F()],Zn.prototype,"funcMask",null);P([F()],Zn.prototype,"opStencilFail",null);P([F()],Zn.prototype,"opDepthFail",null);P([F()],Zn.prototype,"opStencilDepthPass",null);P([F()],Zn.prototype,"backOpStencilFail",null);P([F()],Zn.prototype,"backOpDepthFail",null);P([F()],Zn.prototype,"backOpStencilDepthPass",null);P([F()],Zn.prototype,"mask",null);P([F()],Zn.prototype,"enabled",null)});function Qn(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 Ll(n,e,t){var c,f,d,u,h,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=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),o=!!((h=n.clipPlane5)!=null?h: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 cH(n,e,t){var f,d,u,h,m,g;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((u=n.clipPlane3)!=null?u:e.clipPlane3),o=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((g=n.clipPlane6)!=null?g: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 $n(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;gp(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,gp(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,gp(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,gp(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,gp(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,gp(n,"vClipPlane6",i)}function gp(n,e,t){var i;if(t){let r=((i=Za.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 Ol=y(()=>{pv();We()});var fe,to=y(()=>{Hr();fe=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Re.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}};fe._DiffuseTextureEnabled=!0;fe._BaseWeightTextureEnabled=!0;fe._BaseDiffuseRoughnessTextureEnabled=!0;fe._DetailTextureEnabled=!0;fe._DecalMapEnabled=!0;fe._AmbientTextureEnabled=!0;fe._OpacityTextureEnabled=!0;fe._ReflectionTextureEnabled=!0;fe._EmissiveTextureEnabled=!0;fe._SpecularTextureEnabled=!0;fe._BumpTextureEnabled=!0;fe._LightmapTextureEnabled=!0;fe._RefractionTextureEnabled=!0;fe._ColorGradingTextureEnabled=!0;fe._FresnelEnabled=!0;fe._ClearCoatTextureEnabled=!0;fe._ClearCoatBumpTextureEnabled=!0;fe._ClearCoatTintTextureEnabled=!0;fe._SheenTextureEnabled=!0;fe._AnisotropicTextureEnabled=!0;fe._ThicknessTextureEnabled=!0;fe._RefractionIntensityTextureEnabled=!0;fe._TranslucencyIntensityTextureEnabled=!0;fe._TranslucencyColorTextureEnabled=!0;fe._IridescenceTextureEnabled=!0});function Jf(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 fH=y(()=>{Lt()});function ed(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(dH,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",dH)):t.setColor3("vFogColor",n.fogColor))}function Nl(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"),ku.NUM_MORPH_INFLUENCERS=f,ku.NORMAL=s,ku.TANGENT=a,ku.UV=o,ku.UV2=l,ku.COLOR=c,Wu(t,i,ku,r),f)}function Wu(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,u=a&&a.supportsColors&&t.VERTEXCOLOR;for(let h=0;hs&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function ko(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 Jn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function td(n,e){e.bindToEffect(n,"Scene")}function _p(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&fe.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let u=r;t.updateVector3("vReflectionPosition",u.boundingBoxPosition),t.updateVector3("vReflectionSize",u.boundingBoxSize)}if(s){let u=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",u,Math.log2(u))}if(c&&!e.USEIRRADIANCEMAP){let u=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&u)if(e.SPHERICAL_HARMONICS){let h=u.preScaledHarmonics;t.updateVector3("vSphericalL00",h.l00),t.updateVector3("vSphericalL1_1",h.l1_1),t.updateVector3("vSphericalL10",h.l10),t.updateVector3("vSphericalL11",h.l11),t.updateVector3("vSphericalL2_2",h.l2_2),t.updateVector3("vSphericalL2_1",h.l2_1),t.updateVector3("vSphericalL20",h.l20),t.updateVector3("vSphericalL21",h.l21),t.updateVector3("vSphericalL22",h.l22)}else t.updateFloat3("vSphericalX",u.x.x,u.x.y,u.x.z),t.updateFloat3("vSphericalY",u.y.x,u.y.y,u.y.z),t.updateFloat3("vSphericalZ",u.z.x,u.z.y,u.z.z),t.updateFloat3("vSphericalXX_ZZ",u.xx.x-u.zz.x,u.xx.y-u.zz.y,u.xx.z-u.zz.z),t.updateFloat3("vSphericalYY_ZZ",u.yy.x-u.zz.x,u.yy.y-u.zz.y,u.yy.z-u.zz.z),t.updateFloat3("vSphericalZZ",u.zz.x,u.zz.y,u.zz.z),t.updateFloat3("vSphericalXY",u.xy.x,u.xy.y,u.xy.z),t.updateFloat3("vSphericalYZ",u.yz.x,u.yz.y,u.yz.z),t.updateFloat3("vSphericalZX",u.zx.x,u.zx.y,u.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 FR(n,e,t,i=null,r=!1){if(i&&fe.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 si(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 ai(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function vp(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function Vde(n,e){return e.set(n),e}function qs(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]),Vde(r,t.previousBones[n.uniqueId])))}}}function Gde(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function Ep(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 Tp(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&ko(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function Ap(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 kde(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function xp(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&&kde(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 u=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),h=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!u&&!h,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=u&&!h?u.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function Rp(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 Wde(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 Qt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case Qt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case Qt.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!=Qt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==Qt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function Mp(n,e,t,i,r,s=null,a=!1){let o=Yde(n,i);s!==!1&&(o=cH(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 zde(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 Hde(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 Xde(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function yp(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&&zde(n,e),r&&Hde(n,e),a&&Xde(n,e),!0}function Ip(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 Cp(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 Pp(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{Lt();Gi();av();Ol();to();Xr();fH();dH={r:0,g:0,b:0},ku={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Ae,ts=y(()=>{Xt();zt();Ni();vi();Gi();yv();Yf();Lt();jm();Lu();lH();es();Dr();mP();Ae=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 Zn,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||pe.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new Ts(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new Tr(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 Tr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new Tr(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 Px(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,td(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 Co(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let u=new js(0,0,0,0,0,e,void 0,!1,!1);u.materialDefines&&(u.materialDefines._renderId=-1),this.isReadyForSubMesh(e,u,s.useInstances)||(u.effect&&u.effect.getCompilationError()&&u.effect.allFallbacksProcessed()?d=u.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();Ae._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Ae._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Ae._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Ae._MiscDirtyCallBack=n=>n.markAsMiscDirty();Ae._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Ae._LightsDirtyCallBack=n=>n.markAsLightDirty();Ae._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Ae._FresnelAndMiscDirtyCallBack=n=>{Ae._FresnelDirtyCallBack(n),Ae._MiscDirtyCallBack(n)};Ae._TextureAndMiscDirtyCallBack=n=>{Ae._TextureDirtyCallBack(n),Ae._MiscDirtyCallBack(n)};Ae._DirtyCallbackArray=[];Ae._RunDirtyCallBacks=n=>{for(let e of Ae._DirtyCallbackArray)e(n)};P([F()],Ae.prototype,"id",void 0);P([F()],Ae.prototype,"uniqueId",void 0);P([F()],Ae.prototype,"name",void 0);P([F()],Ae.prototype,"metadata",void 0);P([F()],Ae.prototype,"checkReadyOnEveryCall",void 0);P([F()],Ae.prototype,"checkReadyOnlyOnce",void 0);P([F()],Ae.prototype,"state",void 0);P([F("alpha")],Ae.prototype,"_alpha",void 0);P([F("backFaceCulling")],Ae.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Ae.prototype,"_cullBackFaces",void 0);P([F()],Ae.prototype,"sideOrientation",void 0);P([F()],Ae.prototype,"_alphaMode",void 0);P([F()],Ae.prototype,"_needDepthPrePass",void 0);P([F()],Ae.prototype,"disableDepthWrite",void 0);P([F()],Ae.prototype,"disableColorWrite",void 0);P([F()],Ae.prototype,"forceDepthWrite",void 0);P([F()],Ae.prototype,"depthFunction",void 0);P([F()],Ae.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Ae.prototype,"_fogEnabled",void 0);P([F()],Ae.prototype,"pointSize",void 0);P([F()],Ae.prototype,"zOffset",void 0);P([F()],Ae.prototype,"zOffsetUnits",void 0);P([F()],Ae.prototype,"pointsCloud",null);P([F()],Ae.prototype,"fillMode",null);P([F()],Ae.prototype,"useLogarithmicDepth",null);P([F()],Ae.prototype,"_isVertexOutputInvariant",void 0);P([F()],Ae.prototype,"transparencyMode",null)});var Op,uH=y(()=>{ts();Hf();er();Op=class n extends Ae{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,ti&&ti.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}};Bt("BABYLON.MultiMaterial",Op)});var BR,hH=y(()=>{BR=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var Np,UR,uL,VR,hL,mL,wl,Q,wi=y(()=>{vi();Ni();nv();Hf();sL();Dl();We();Kt();Aa();Yi();Ar();OR();pp();yv();ts();uH();LR();Dr();Lt();er();An();sp();hH();Np=class{},UR=class{constructor(){this.batchCache=new VR(this),this.batchCacheReplacementModeInFrozenMode=new VR(this),this.instancesBufferSize=512*4}},uL=class{constructor(){this.renderPasses={}}},VR=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},hL=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},mL=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}},wl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},Q=class n extends Ir{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(L.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(L.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),yl.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,ti&&ti.HasTags(e)&&ti.AddTagsTo(this,ti.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(g):p.bindOnlyWorldMatrix(g))};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=(u=m.clonePhysicsImpostor)!=null?u:!0,l=(h=m.cloneThinInstances)!=null?h:!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 BR(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 g of this.subMeshes){let p=g.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,g,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 g of this.lightSources){let p=g.getShadowGenerators();if(!p)continue;let _=p.values();for(let v=_.next();v.done!==!0;v=_.next()){let E=v.value;if(E&&(!((l=E.getShadowMap())!=null&&l.renderList)||(c=E.getShadowMap())!=null&&c.renderList&&((d=(f=E.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let S=(u=E.getShadowMap().renderPassIds)!=null?u:[i.currentRenderPassId];for(let A=0;A0){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 js(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++)js.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 Me;s.set(t,e);let a=this.getScene();new bn(bn.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=bn.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(L.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(L.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(L.NormalKind);if(!s)return this;Me.ComputeNormals(i,r,s),this.updateVerticesData(L.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(bn.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new bn(bn.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 Me;s.indices=e;let a=this.getScene();new bn(bn.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)===Ae.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Ae.PointFillMode:a=null;break;case Ae.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Ae.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!==Ae.WireFrameFillMode||t==Ae.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Ae.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,u=c.instancesPreviousBuffer,h=0,m=0,g=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,_=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||_)){let E=this.getWorldMatrix();if(g){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,h),f.masterMeshPreviousWorldMatrix.copyFrom(E)):(f.masterMeshPreviousWorldMatrix=E.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,h))),E.copyToArray(c.instancesData,h);let T=E.asArray();c.instancesData[h+12]=T[12]-p.x,c.instancesData[h+13]=T[13]-p.y,c.instancesData[h+14]=T[14]-p.z,h+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let T=this._scene.activeCamera.globalPosition;for(let S=0;SS._distanceToCamera>A._distanceToCamera?-1:S._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 u=e.getRenderingMesh(),h=c.hardwareInstancedRendering[e._id]||u.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,g=e.getMaterial();if(!g)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==g){if(g._storeEffectOnSubMeshes){if(!g.isReadyForSubMesh(this,e,h))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!g.isReady(this,h))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=g}else if(g._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!g._storeEffectOnSubMeshes&&!g._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 k=0;k_&&r++,S!==0&&E++,v+=S,_=S}if(c[E]++,E>a&&(a=E),v===0)s++;else{let T=1/v,S=0;for(let A=0;Af&&o++}}let d=this.skeleton.bones.length,u=this.getVerticesData(L.MatricesIndicesKind),h=this.getVerticesData(L.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let g="Number of Weights = "+i/4+` +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=toRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb);}`;x.ShadersStoreWGSL[xD]||(x.ShadersStoreWGSL[xD]=rW);yfe={name:xD,shader:rW}});var op,RD=y(()=>{Sc();JP();op=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(()=>(vD(),_D)):await Promise.resolve().then(()=>(TD(),SD));let f=new Pi("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(u=>{u.executeWhenCompiled(()=>{f.onApply=h=>{h._bindTexture("textureSampler",t),h.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(()=>(sW(),nW)):await Promise.resolve().then(()=>(iW(),tW)),await ak("rgbdEncode",e,t,i,1,5)}}});var bD=y(()=>{LP();rv();Ai.prototype._sphericalPolynomialTargetSize=0;Ai.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(Ai.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=_c.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 cW(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;aaW)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${aW}".`);return n.version===2||(n={...n,version:2,imageType:xR}),n}function Ife(n,e){e=vv(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 h=e.createTexture(null,!0,!0,null,1,null,m=>{u(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=g=>{g._bindTexture("textureSampler",h),g.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(),h.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let h=l[a];h&&e._uploadImageToTexture(h._texture,n,s,0)}d()}})}async function Pfe(n,e,t=xR){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await dW(n,e,!0,t),n.isReady=!0}async function Dfe(n,e,t,i=xR,r=null){let s=n.getEngine(),a=new Vi(s,5),o=new Ai(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 dW(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function dW(n,e,t,i=xR){if(!pe.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=fG(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 u=0;if(a)s.isWebGPU?(u=1,await Promise.resolve().then(()=>(vD(),_D))):await Promise.resolve().then(()=>(TD(),SD)),l=new Pi("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,u),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 g=n._lodGenerationScale,p=n._lodGenerationOffset;for(let _=0;_<3;_++){let E=1-_/2,T=p,S=(r-1)*g+p,A=T+(S-T)*E,R=Math.round(Math.min(Math.max(A,0),S)),M=new Vi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let I=new Ai(null);switch(I._isCube=!0,I._texture=M,f[R]=I,_){case 0:n._lodTextureLow=I;break;case 1:n._lodTextureMid=I;break;case 2:n._lodTextureHigh=I;break}}}let h=[];for(let m=0;mawait lW(S,s,a,l,E,g,m,o,f,c,n));else{let S=new Image;S.src=E,T=new Promise((A,R)=>{S.onload=()=>{lW(S,s,a,l,E,g,m,o,f,c,n).then(()=>A()).catch(M=>{R(M)})},S.onerror=M=>{R(M)}})}h.push(T)}if(await Promise.all(h),e.length{Ni();We();jn();$_();Hs();rv();js();Sc();Lt();RD();YP();bD();ip();xR="image/png",aW=2,oW=[134,22,135,150,246,214,150,54]});var mW={};Be(mW,{_ENVTextureLoader:()=>MD});var MD,pW=y(()=>{hW();MD=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=cW(e);if(a){t.width=a.width,t.height=a.width;try{uW(t,a),fW(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 Mc,gW=y(()=>{We();Mc=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),u=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:u,down:h,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,u=1/d,h=u*u,m=t[1].subtract(t[0]).scale(u/e),g=t[3].subtract(t[2]).scale(u/e),p=1/e,_=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 u=Math.round(f*r);u<0?u=0:u>=r&&(u=r-1);let h=a?r-u-1:u,m=t[h*i*s+d*s+0],g=t[h*i*s+d*s+1],p=t[h*i*s+d*s+2];return{r:m,g,b:p}}};Mc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];Mc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];Mc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];Mc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];Mc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];Mc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Lfe(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 _W(n,e,t,i,r,s){r>0?(r=Lfe(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 yD(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 EW(n,e){return Ofe(n,e)}function Ofe(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,u,h=new ArrayBuffer(i*4),m=new Uint8Array(h),g=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(g);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 Nfe(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,u=0;u<4;u++)for(d=(u+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 _=0;_0;){for(l=0;l{gW()});var TW={};Be(TW,{_HDRTextureLoader:()=>ID});var ID,AW=y(()=>{SW();ID=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=vW(r),a=EW(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 Vo,xW=y(()=>{Lt();Vo=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}};Vo.HEADER_LEN=64;Vo.COMPRESSED_2D=0;Vo.COMPRESSED_3D=1;Vo.TEX_2D=2;Vo.TEX_3D=3});var CD,Ev,RW=y(()=>{CD=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})})}},Ev=class n extends CD{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))})})}};Ev.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var bW,lp,MW,yW=y(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(bW||(bW={}));(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"})(lp||(lp={}));(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"})(MW||(MW={}))});function Sv(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 IW(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),Sv(i)),t.data.wasmBinaries&&Sv(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 CW(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 PW=y(()=>{});var PD,yc,DW=y(()=>{RW();Ni();yW();PW();PD=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:[lp.BC1_RGB,lp.BC3_RGBA],yes:{transcodeFormat:lp.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},yc=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:pe.ScriptBaseUrl,jsDecoderModule:pe.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:pe.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${Sv}(${IW})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new Ev(e,async()=>await CW(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=pe.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,Sv(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",u),l(m),f()},u=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",u),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(g){l({message:g})}f()}};c.addEventListener("error",d),c.addEventListener("message",u),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let h=new Uint8Array(e.byteLength);h.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:h,caps:s,options:i},[h.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}};yc.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};yc.DefaultNumWorkers=yc.GetDefaultNumWorkers();yc.DefaultDecoderOptions=new PD});var LD={};Be(LD,{_KTXTextureLoader:()=>DD});function wfe(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 DD,OD=y(()=>{xW();DW();Lt();DD=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 Vo(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(Vo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Vo(e,1),a=wfe(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 yc.IsValid(e)?new yc(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 RR(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 ND(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=RR(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 Vfe:r=!0;case Ffe:s=!0;break;case Gfe:r=!0;case Bfe:break;case kfe:r=!0;case Ufe: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 T,S,A,R=0,M=new Uint8Array(l);for(;t>zfe){default:case Yfe:d=0,h=1,p=i.width,u=0,m=1,g=i.height;break;case Hfe:d=0,h=1,p=i.width,u=i.height-1,m=-1,g=-1;break;case Kfe:d=i.width-1,h=-1,p=-1,u=0,m=1,g=i.height;break;case Xfe:d=i.width-1,h=-1,p=-1,u=i.height-1,m=-1,g=-1;break}let _="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=ede[_](i,f,o,u,m,g,d,h,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function jfe(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,u=n.height,h,m=0,g,p,_=new Uint8Array(d*u*4);for(p=i;p!==s;p+=r)for(g=a;g!==l;g+=o,m++)h=c[m],_[(g+d*p)*4+3]=255,_[(g+d*p)*4+2]=f[h*3+0],_[(g+d*p)*4+1]=f[h*3+1],_[(g+d*p)*4+0]=f[h*3+2];return _}function qfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u,h=0,m,g,p=new Uint8Array(f*d*4);for(g=i;g!==s;g+=r)for(m=a;m!==l;m+=o,h+=2){u=c[h+0]+(c[h+1]<<8);let _=((u&31744)>>10)*255/31|0,v=((u&992)>>5)*255/31|0,E=(u&31)*255/31|0;p[(m+f*g)*4+0]=_,p[(m+f*g)*4+1]=v,p[(m+f*g)*4+2]=E,p[(m+f*g)*4+3]=u&32768?0:255}return p}function Zfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=3)g[(h+f*m)*4+3]=255,g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+1]=c[u+1],g[(h+f*m)*4+0]=c[u+2];return g}function Qfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=4)g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+1]=c[u+1],g[(h+f*m)*4+0]=c[u+2],g[(h+f*m)*4+3]=c[u+3];return g}function $fe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u,h=0,m,g,p=new Uint8Array(f*d*4);for(g=i;g!==s;g+=r)for(m=a;m!==l;m+=o,h++)u=c[h],p[(m+f*g)*4+0]=u,p[(m+f*g)*4+1]=u,p[(m+f*g)*4+2]=u,p[(m+f*g)*4+3]=255;return p}function Jfe(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,u=0,h,m,g=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(h=a;h!==l;h+=o,u+=2)g[(h+f*m)*4+0]=c[u+0],g[(h+f*m)*4+1]=c[u+0],g[(h+f*m)*4+2]=c[u+0],g[(h+f*m)*4+3]=c[u+1];return g}var Ffe,Bfe,Ufe,Vfe,Gfe,kfe,Wfe,zfe,Hfe,Xfe,Yfe,Kfe,ede,LW=y(()=>{Lt();Ffe=1,Bfe=2,Ufe=3,Vfe=9,Gfe=10,kfe=11,Wfe=48,zfe=4,Hfe=0,Xfe=1,Yfe=2,Kfe=3;ede={GetTGAHeader:RR,UploadContent:ND,_getImageData8bits:jfe,_getImageData16bits:qfe,_getImageData24bits:Zfe,_getImageData32bits:Qfe,_getImageDataGrey8bits:$fe,_getImageDataGrey16bits:Jfe}});var OW={};Be(OW,{_TGATextureLoader:()=>wD});var wD,NW=y(()=>{LW();wD=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=RR(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{ND(t,r)})}}});var Tv=y(()=>{});function ide(){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 yR(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 Go(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function Aa(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function Av(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function cp(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function BD(n,e){let t=n[e.value];return e.value+=1,t}function BW(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 On(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function UW(n,e){return rde(cp(n,e))}function rde(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 nde(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=Ft(n,-65504,65504),bR.floatView[0]=n;let e=bR.uint32View[0],t=e>>23&511;return bR.baseTable[t]+((e&8388607)>>bR.shiftTable[t])}function VW(n,e){return nde(On(n,e))}function sde(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 ade(n,e){let t=Go(n,e),i=Aa(n,e);return[t,i]}function ode(n,e){let t=Aa(n,e),i=Aa(n,e);return[t,i]}function lde(n,e){let t=On(n,e),i=On(n,e);return[t,i]}function cde(n,e){let t=On(n,e),i=On(n,e),r=On(n,e);return[t,i,r]}function fde(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var Cl,FD,bR,xv=y(()=>{jn();Tv();(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"})(Cl||(Cl={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(FD||(FD={}));bR=ide()});function GD(n,e){if(n.getUint32(0,!0)!=pde)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=yR(n.buffer,e);if(!o)a=!1;else{let l=yR(n.buffer,e),c=Aa(n,e),f=GW(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 pde,kW=y(()=>{Lt();xv();pde=20000630});function qW(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 Ede(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function XW(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+Rv[t]>>1;Rv[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|Rv[i]++<<6)}}function Tde(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=XW(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=XW(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--}}Sde(s)}function ZW(n){return n&63}function QW(n){return n>>6}function Ade(n,e,t,i){for(;e<=t;e++){let r=QW(n[e]),s=ZW(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 xde(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,u=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let g=c>>f-14&16383,p=e[g];if(p.len){f-=p.len;let _=kD(p.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else{if(!p.p)throw new Error("hufDecode issues");let _;for(_=0;_=v&&QW(n[p.p[_]])==(c>>f-v&(1<>=h,f-=h;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let g=kD(m.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else throw new Error("HufDecode issues")}return!0}function $W(n,e,t,i,r,s){let a={value:0},o=t.value,l=Aa(e,t),c=Aa(e,t);t.value+=4;let f=Aa(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),u=new Array(16384);Ede(u);let h=i-(t.value-o);if(Tde(n,t,h,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Ade(d,l,c,u),xde(d,u,n,t,f,c,s,r,a)}function zD(n){return n&65535}function YW(n){let e=zD(n);return e>32767?e-65536:e}function fp(n,e){let t=YW(n),r=YW(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function dp(n,e){let t=zD(n),i=zD(e),r=t-(i>>1)&HW;return{a:i+r-vde&HW,b:r}}function JW(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 u=d+s*(r-f),h=s*c,m=s*f,g=i*c,p=i*f,_,v,E,T;for(;d<=u;d+=m){let S=d,A=d+i*(t-f);for(;S<=A;S+=p){let R=S+g,M=S+h,I=M+g;if(o){let C=fp(n[S+e],n[M+e]);_=C.a,E=C.b,C=fp(n[R+e],n[I+e]),v=C.a,T=C.b,C=fp(_,v),n[S+e]=C.a,n[R+e]=C.b,C=fp(E,T),n[M+e]=C.a,n[I+e]=C.b}else{let C=dp(n[S+e],n[M+e]);_=C.a,E=C.b,C=dp(n[R+e],n[I+e]),v=C.a,T=C.b,C=dp(_,v),n[S+e]=C.a,n[R+e]=C.b,C=dp(E,T),n[M+e]=C.a,n[I+e]=C.b}}if(t&c){let R=S+h,M;o?M=fp(n[S+e],n[R+e]):M=dp(n[S+e],n[R+e]),_=M.a,n[R+e]=M.b,n[S+e]=_}}if(r&c){let S=d,A=d+i*(t-f);for(;S<=A;S+=p){let R=S+g,M;o?M=fp(n[S+e],n[R+e]):M=dp(n[S+e],n[R+e]),_=M.a,n[R+e]=M.b,n[S+e]=_}}f=c,c>>=1}return d}function ez(n,e,t){for(let i=0;i{xv();Tv();jW=16,vde=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function HD(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function sz(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(iz(e)),i=new Uint8Array(t.length);return UD(t),VD(t,i),new DataView(i.buffer)}function XD(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return UD(t),VD(t,i),new DataView(i.buffer)}function az(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{tz();rz();xv();Tv()});var eo,Pl,YD=y(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(eo||(eo={}));Pl=class{};Pl.DefaultOutputType=eo.HalfFloat;Pl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function KD(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 Cl.NO_COMPRESSION:r.lines=1,r.uncompress=HD;break;case Cl.RLE_COMPRESSION:r.lines=1,r.uncompress=sz;break;case Cl.ZIPS_COMPRESSION:r.lines=1,r.uncompress=XD,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;case Cl.ZIP_COMPRESSION:r.lines=16,r.uncompress=XD,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;case Cl.PIZ_COMPRESSION:r.lines=32,r.uncompress=oz;break;case Cl.PXR24_COMPRESSION:r.lines=16,r.uncompress=az,await pe.LoadScriptAsync(Pl.FFLATEUrl);break;default:throw new Error(Cl[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 eo.Float:r.getter=UW,r.inputSize=2;break;case eo.HalfFloat:r.getter=cp,r.inputSize=2;break}else if(r.type===2)switch(i){case eo.Float:r.getter=On,r.inputSize=4;break;case eo.HalfFloat:r.getter=VW,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 jD(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 u=c*n.bytesPerLine,h=(n.height-1-d)*n.outLineWidth;for(let m=0;m{xv();lz();Tv();Ni();YD()});var fz={};Be(fz,{ReadExrDataAsync:()=>Rde,_ExrTextureLoader:()=>qD});async function Rde(n){let e=new DataView(n),t={value:0},i=GD(e,t);try{let r=await KD(i,e,t,eo.Float);return jD(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 qD,dz=y(()=>{kW();cz();YD();Lt();qD=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=GD(r,s);KD(a,r,s,Pl.DefaultOutputType).then(o=>{jD(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 Ic(n,e){bde(n)&&ee.Warn(`Extension with the name '${n}' already exists`),CR.set(n,e)}function bde(n){return CR.delete(n)}function PR(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),CR.has(n)||(n.endsWith(".ies")&&Ic(".ies",async()=>await Promise.resolve().then(()=>(fk(),ck)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&Ic(".dds",async()=>await Promise.resolve().then(()=>(uk(),dk)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&Ic(".basis",async()=>await Promise.resolve().then(()=>(vk(),_k)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&Ic(".env",async()=>await Promise.resolve().then(()=>(pW(),mW)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&Ic(".hdr",async()=>await Promise.resolve().then(()=>(AW(),TW)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(Ic(".ktx",async()=>await Promise.resolve().then(()=>(OD(),LD)).then(i=>new i._KTXTextureLoader)),Ic(".ktx2",async()=>await Promise.resolve().then(()=>(OD(),LD)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&Ic(".tga",async()=>await Promise.resolve().then(()=>(NW(),OW)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&Ic(".exr",async()=>await Promise.resolve().then(()=>(dz(),fz)).then(i=>new i._ExrTextureLoader)));let t=CR.get(n);return t?Promise.resolve(t(e)):null}var CR,ZD=y(()=>{Lt();CR=new Map});function uz(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var hz=y(()=>{});var mz=y(()=>{Hs();Lt();gc();J_();Hr();ZD();hz();Re.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)};Re.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)};Re.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)};Re.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=Gf();np(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,u)=>{i&&i.removePendingData(l),a&&a(d,u)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Re.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,u=null,h=null,m=!1,g=null){let p=d||new Vi(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=g);let _=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:uz(n),E=PR(v),T=(A,R)=>{p.dispose(),s?s(A,R):A&&ee.Warn(A)},S=(A,R)=>{n===_?A&&T(A.status+" "+A.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${_}`),this.createCubeTextureBase(_,e,t,!!i,r,T,a,o,l,c,f,p,u,h,m,g))};if(E)E.then(A=>{let R=M=>{u&&u(p,M),A.loadCubeData(M,p,l,r,(I,C)=>{T(I,C)})};g?R(g):t&&t.length===6?A.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(I=>new Uint8Array(I))),t,T):T("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,S)});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,(A,R)=>{h&&h(A,R)},t,T)}return this._internalTexturesCache.push(p),p}});var Dz={};Be(Dz,{DDSTools:()=>No});function DR(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function yde(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var Mde,pz,gz,_z,vz,Ez,Sz,Tz,Az,QD,xz,Rz,bz,Mz,Ide,$D,Cde,Pde,yz,Iz,JD,Cz,eL,Pz,Dde,Lde,Ode,Nde,wde,Fde,Bde,No,nD=y(()=>{jn();Lt();LP();JP();mz();Mde=542327876,pz=131072,gz=512,_z=4,vz=64,Ez=131072;Sz=DR("DXT1"),Tz=DR("DXT3"),Az=DR("DXT5"),QD=DR("DX10"),xz=113,Rz=116,bz=2,Mz=10,Ide=88,$D=31,Cde=0,Pde=1,yz=2,Iz=3,JD=4,Cz=7,eL=20,Pz=21,Dde=22,Lde=23,Ode=24,Nde=25,wde=26,Fde=28,Bde=32,No=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,$D),i=new Int32Array(e.buffer,e.byteOffset,$D+4),r=1;t[yz]&pz&&(r=Math.max(1,t[Cz]));let s=t[Pz],a=s===QD?i[Bde]:0,o=0;switch(s){case xz:o=2;break;case Rz:o=1;break;case QD:if(a===Mz){o=2;break}if(a===bz){o=1;break}}return{width:t[JD],height:t[Iz],mipmapCount:r,isFourCC:(t[eL]&_z)===_z,isRGB:(t[eL]&vz)===vz,isLuminance:(t[eL]&Ez)===Ez,isCube:(t[Fde]&gz)===gz,isCompressed:s===Sz||s===Tz||s===Az,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 u=0;u0?r.sphericalPolynomial=_c.ConvertCubeMapToSphericalPolynomial({size:u[JD],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}};No.StoreLODInAlphaChannel=!1});var Lz=y(()=>{Es();Hs();Lt();$_();rv();Mt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var _;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(_=d._sphericalPolynomial)!=null?_:new Rl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let u=3,h=this._gl,m=f.width;if(!m)return;let{DDSTools:g}=await Promise.resolve().then(()=>(nD(),Dz)),p=[];for(let v=0;v{Es();wx();Mt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new Tl(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};Mt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new Tl(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};Mt.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)};Mt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};Mt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};Mt.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 Nz=y(()=>{Wa();Hr();Re.prototype.displayLoadingUI=function(){if(!Sr())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Re.prototype.hideLoadingUI=function(){if(!Sr())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Re.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Re.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var wz=y(()=>{Hr();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Re.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Re.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Re.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Re.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var tL=y(()=>{Hr();Re.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 Fz=y(()=>{Hr();tL();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Re.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Re.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Re.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Re.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Re.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Re.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Re.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Re.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Re.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Re.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var Bz=y(()=>{Hr();tL();Re.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Re.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Re.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Re.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Re.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Re.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Re.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Re.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Re.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Re.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Re.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Re.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Re.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Re.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Re.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Re.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Re.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Re.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Re.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Re.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Re.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Re.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Re.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Re.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Re.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()};Re.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 Uz=y(()=>{Hr();Re.prototype.getRenderPassNames=function(){return this._renderPassNames};Re.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Re.prototype.createRenderPassId=function(n){let e=++Re._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Re.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{Hr();Re.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 Gz=y(()=>{ZD();Hr();Re.GetCompatibleTextureLoader=PR});function Ude(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function kz(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||Ude(e),!Re.audioEngine&&t.audioEngine&&Re.AudioEngineFactory&&(Re.audioEngine=Re.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),Bf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&iL(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=Re.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function Wz(n,e){Oe.Instances.length===1&&Re.audioEngine&&(Re.audioEngine.dispose(),Re.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)),Bf()&&(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 zz(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 Hz(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 Xz(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 Yz(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function Kz(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function iL(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function jz(){document.exitPointerLock&&document.exitPointerLock()}var qz=y(()=>{Wa();Hr();Gi()});var ke,rL=y(()=>{Hs();Gi();Es();YV();wx();Lt();vP();KV();QV();$V();JV();eG();rG();nG();sG();Lz();Oz();Nz();wz();Fz();Bz();Uz();AP();Vz();Gz();Hr();qz();pD();Sl();ke=class n extends Mt{static get NpmPackage(){return Re.NpmPackage}static get Version(){return Re.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Re.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 Bx,this._drawCalls=new Il,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),kz(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return Xz(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await Hz(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&Yz(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&Kz()}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 zz(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&&iL(this._renderingCanvas)}exitPointerlock(){jz()}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 Gm(e,this._gl),o=new Vi(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 Tl(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)=>{El(()=>{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(),Wz(this,this._renderingCanvas),super.dispose()}};ke.ALPHA_DISABLE=0;ke.ALPHA_ADD=1;ke.ALPHA_COMBINE=2;ke.ALPHA_SUBTRACT=3;ke.ALPHA_MULTIPLY=4;ke.ALPHA_MAXIMIZED=5;ke.ALPHA_ONEONE=6;ke.ALPHA_PREMULTIPLIED=7;ke.ALPHA_PREMULTIPLIED_PORTERDUFF=8;ke.ALPHA_INTERPOLATE=9;ke.ALPHA_SCREENMODE=10;ke.DELAYLOADSTATE_NONE=0;ke.DELAYLOADSTATE_LOADED=1;ke.DELAYLOADSTATE_LOADING=2;ke.DELAYLOADSTATE_NOTLOADED=4;ke.NEVER=512;ke.ALWAYS=519;ke.LESS=513;ke.EQUAL=514;ke.LEQUAL=515;ke.GREATER=516;ke.GEQUAL=518;ke.NOTEQUAL=517;ke.KEEP=7680;ke.REPLACE=7681;ke.INCR=7682;ke.DECR=7683;ke.INVERT=5386;ke.INCR_WRAP=34055;ke.DECR_WRAP=34056;ke.TEXTURE_CLAMP_ADDRESSMODE=0;ke.TEXTURE_WRAP_ADDRESSMODE=1;ke.TEXTURE_MIRROR_ADDRESSMODE=2;ke.TEXTUREFORMAT_ALPHA=0;ke.TEXTUREFORMAT_LUMINANCE=1;ke.TEXTUREFORMAT_LUMINANCE_ALPHA=2;ke.TEXTUREFORMAT_RGB=4;ke.TEXTUREFORMAT_RGBA=5;ke.TEXTUREFORMAT_RED=6;ke.TEXTUREFORMAT_R=6;ke.TEXTUREFORMAT_R16_UNORM=33322;ke.TEXTUREFORMAT_RG16_UNORM=33324;ke.TEXTUREFORMAT_RGB16_UNORM=32852;ke.TEXTUREFORMAT_RGBA16_UNORM=32859;ke.TEXTUREFORMAT_R16_SNORM=36760;ke.TEXTUREFORMAT_RG16_SNORM=36761;ke.TEXTUREFORMAT_RGB16_SNORM=36762;ke.TEXTUREFORMAT_RGBA16_SNORM=36763;ke.TEXTUREFORMAT_RG=7;ke.TEXTUREFORMAT_RED_INTEGER=8;ke.TEXTUREFORMAT_R_INTEGER=8;ke.TEXTUREFORMAT_RG_INTEGER=9;ke.TEXTUREFORMAT_RGB_INTEGER=10;ke.TEXTUREFORMAT_RGBA_INTEGER=11;ke.TEXTURETYPE_UNSIGNED_BYTE=0;ke.TEXTURETYPE_UNSIGNED_INT=0;ke.TEXTURETYPE_FLOAT=1;ke.TEXTURETYPE_HALF_FLOAT=2;ke.TEXTURETYPE_BYTE=3;ke.TEXTURETYPE_SHORT=4;ke.TEXTURETYPE_UNSIGNED_SHORT=5;ke.TEXTURETYPE_INT=6;ke.TEXTURETYPE_UNSIGNED_INTEGER=7;ke.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;ke.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;ke.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;ke.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;ke.TEXTURETYPE_UNSIGNED_INT_24_8=12;ke.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;ke.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;ke.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;ke.TEXTURE_NEAREST_SAMPLINGMODE=1;ke.TEXTURE_BILINEAR_SAMPLINGMODE=2;ke.TEXTURE_TRILINEAR_SAMPLINGMODE=3;ke.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;ke.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;ke.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;ke.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;ke.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;ke.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;ke.TEXTURE_NEAREST_LINEAR=7;ke.TEXTURE_NEAREST_NEAREST=1;ke.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;ke.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;ke.TEXTURE_LINEAR_LINEAR=2;ke.TEXTURE_LINEAR_NEAREST=12;ke.TEXTURE_EXPLICIT_MODE=0;ke.TEXTURE_SPHERICAL_MODE=1;ke.TEXTURE_PLANAR_MODE=2;ke.TEXTURE_CUBIC_MODE=3;ke.TEXTURE_PROJECTION_MODE=4;ke.TEXTURE_SKYBOX_MODE=5;ke.TEXTURE_INVCUBIC_MODE=6;ke.TEXTURE_EQUIRECTANGULAR_MODE=7;ke.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;ke.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;ke.SCALEMODE_FLOOR=1;ke.SCALEMODE_NEAREST=2;ke.SCALEMODE_CEILING=3});var nL,xi,xa=y(()=>{Xt();We();zt();vi();Gi();An();Dr();nL=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}},xi=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 nL,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=Z.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 $e("AnimationRange")};xi._NodeConstructors={};P([F()],xi.prototype,"name",void 0);P([F()],xi.prototype,"id",void 0);P([F()],xi.prototype,"uniqueId",void 0);P([F()],xi.prototype,"state",void 0);P([F()],xi.prototype,"metadata",void 0)});function sL(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 Zz(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{sL(t,i,r)},0)):sL(t,i,r)}}function Qz(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 Mv(n,e){let t;return Qz(n,sL,i=>t=i,i=>{throw i},e),t}async function $z(n,e,t){return await new Promise((i,r)=>{Qz(n,e,i,r,t)})}function Jz(n,e){return(...t)=>Mv(n(...t),e)}var aL=y(()=>{});var _t,Dl=y(()=>{Xt();zt();Oo();Ni();vi();We();xa();Lt();er();An();Qm();Wx();Dr();_t=class n extends xi{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 Po(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 Z,this._postProcesses=new Array,this._activeMeshes=new Ki(256),this._globalPosition=b.Zero(),this._computedViewMatrix=Z.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=Z.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=je.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 Z.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,u,h,m,g,p,_,v,E,T,S,A,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 I;r.useRightHandedSystem?I=Z.PerspectiveFovRHToRef:I=Z.PerspectiveFovLHToRef,I(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 I=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?Z.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-I,(o=this.orthoRight)!=null?o:I,(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):Z.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-I,(d=this.orthoRight)!=null?d:I,(u=this.orthoBottom)!=null?u:-C,(h=this.orthoTop)!=null?h:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?Z.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-I,(g=this.orthoRight)!=null?g:I,(p=this.orthoBottom)!=null?p:-C,(_=this.orthoTop)!=null?_:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-I,(E=this.orthoRight)!=null?E:I,(T=this.orthoBottom)!=null?T:-C,(S=this.orthoTop)!=null?S: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=(A=this.oblique)==null?void 0:A.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?Vf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Vf.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 $e("Ray")}getForwardRayToRef(e,t=100,i,r){throw $e("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=pe.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 Z.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=pe.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=st.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 $e("UniversalCamera")};_t.PERSPECTIVE_CAMERA=0;_t.ORTHOGRAPHIC_CAMERA=1;_t.FOVMODE_VERTICAL_FIXED=0;_t.FOVMODE_HORIZONTAL_FIXED=1;_t.RIG_MODE_NONE=0;_t.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;_t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;_t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;_t.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;_t.RIG_MODE_STEREOSCOPIC_INTERLACED=14;_t.RIG_MODE_VR=20;_t.RIG_MODE_CUSTOM=22;_t.ForceAttachControlToAlwaysPreventDefault=!1;P([Jr("position")],_t.prototype,"_position",void 0);P([Jr("upVector")],_t.prototype,"_upVector",void 0);P([F()],_t.prototype,"orthoLeft",null);P([F()],_t.prototype,"orthoRight",null);P([F()],_t.prototype,"orthoBottom",null);P([F()],_t.prototype,"orthoTop",null);P([F()],_t.prototype,"fov",void 0);P([F()],_t.prototype,"projectionPlaneTilt",void 0);P([F()],_t.prototype,"minZ",void 0);P([F()],_t.prototype,"maxZ",void 0);P([F()],_t.prototype,"inertia",void 0);P([F()],_t.prototype,"mode",null);P([F()],_t.prototype,"layerMask",void 0);P([F()],_t.prototype,"fovMode",void 0);P([F()],_t.prototype,"cameraRigMode",void 0);P([F()],_t.prototype,"interaxialDistance",void 0);P([F()],_t.prototype,"isStereoscopicSideBySide",void 0);P([F()],_t.prototype,"ignoreCameraMaxZ",void 0)});var Gu,oL=y(()=>{Gu=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var Qf,lL=y(()=>{Al();We();Kn();Qf=class n{constructor(e,t,i){this.vectors=xn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=xn(3,b.Zero),this.vectorsWorld=xn(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||Z.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,u=e.z,h=-wt;return!(o-ff-r||l-dd-s||c-uu-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,u=e.y,h=e.z,m=t.x,g=t.y,p=t.z;return!(lm||cg||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}};Qf._TmpVector3=xn(3,b.Zero)});var up,eH=y(()=>{Al();We();up=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||Z.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{Al();We();lL();eH();cL={min:0,max:0},fL={min:0,max:0},tH=(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},xs=(n,e,t)=>(tH(n,e,cL),tH(n,t,fL),!(cL.min>fL.max||fL.min>cL.max)),Rn=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new Qf(e,t,i),this.boundingSphere=new up(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(!up.Intersects(this.boundingSphere,e.boundingSphere)||!Qf.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!xs(i.directions[0],i,r)||!xs(i.directions[1],i,r)||!xs(i.directions[2],i,r)||!xs(r.directions[0],i,r)||!xs(r.directions[1],i,r)||!xs(r.directions[2],i,r)||!xs(b.Cross(i.directions[0],r.directions[0]),i,r)||!xs(b.Cross(i.directions[0],r.directions[1]),i,r)||!xs(b.Cross(i.directions[0],r.directions[2]),i,r)||!xs(b.Cross(i.directions[1],r.directions[0]),i,r)||!xs(b.Cross(i.directions[1],r.directions[1]),i,r)||!xs(b.Cross(i.directions[1],r.directions[2]),i,r)||!xs(b.Cross(i.directions[2],r.directions[0]),i,r)||!xs(b.Cross(i.directions[2],r.directions[1]),i,r)||!xs(b.Cross(i.directions[2],r.directions[2]),i,r))}};Rn._TmpVector3=xn(2,b.Zero)});function iH(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 mp.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 LR(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),mp.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 mp,OR=y(()=>{Xt();We();zt();mp=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],mp,"extractMinAndMaxIndexed",null);P([Ys.filter((...n)=>!Array.isArray(n[0]))],mp,"extractMinAndMax",null)});var qs,yv=y(()=>{Yi();oL();hp();OR();Lu();qs=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 Ts(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(L.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=iH(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new Rn(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=u)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var Iv,Me,Ar=y(()=>{Xt();We();Yi();An();Kt();Lt();zt();aL();ev();yv();Iv=class{},Me=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=Jz(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 L.PositionKind:this.positions=e;break;case L.NormalKind:this.normals=e;break;case L.TangentKind:this.tangents=e;break;case L.UVKind:this.uvs=e;break;case L.UV2Kind:this.uvs2=e;break;case L.UV3Kind:this.uvs3=e;break;case L.UV4Kind:this.uvs4=e;break;case L.UV5Kind:this.uvs5=e;break;case L.UV6Kind:this.uvs6=e;break;case L.ColorKind:this.colors=e;break;case L.MatricesIndicesKind:this.matricesIndices=e;break;case L.MatricesWeightsKind:this.matricesWeights=e;break;case L.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case L.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(L.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(L.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(L.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(L.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(L.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(L.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(L.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(L.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(L.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(L.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(L.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(L.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(L.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 qs(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(L.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(L.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(L.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(L.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(L.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(L.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(L.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(L.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(L.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(L.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(L.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(L.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(L.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 Mv(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var h,m,g,p;this._validate();let l=t.map(_=>_.vertexData),c=this;if(o)for(let _ of l)_&&(_._validate(),!this.normals&&_.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&_.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&_.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&_.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&_.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&_.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&_.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&_.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&_.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&_.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&_.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&_.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&_.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let _ of l)if(_){if(o)this.normals&&!_.normals&&(_.normals=new Float32Array(_.positions.length)),this.tangents&&!_.tangents&&(_.tangents=new Float32Array(_.positions.length/3*4)),this.uvs&&!_.uvs&&(_.uvs=new Float32Array(_.positions.length/3*2)),this.uvs2&&!_.uvs2&&(_.uvs2=new Float32Array(_.positions.length/3*2)),this.uvs3&&!_.uvs3&&(_.uvs3=new Float32Array(_.positions.length/3*2)),this.uvs4&&!_.uvs4&&(_.uvs4=new Float32Array(_.positions.length/3*2)),this.uvs5&&!_.uvs5&&(_.uvs5=new Float32Array(_.positions.length/3*2)),this.uvs6&&!_.uvs6&&(_.uvs6=new Float32Array(_.positions.length/3*2)),this.colors&&!_.colors&&(_.colors=new Float32Array(_.positions.length/3*4),_.colors.fill(1)),this.matricesIndices&&!_.matricesIndices&&(_.matricesIndices=new Float32Array(_.positions.length/3*4)),this.matricesWeights&&!_.matricesWeights&&(_.matricesWeights=new Float32Array(_.positions.length/3*4)),this.matricesIndicesExtra&&!_.matricesIndicesExtra&&(_.matricesIndicesExtra=new Float32Array(_.positions.length/3*4)),this.matricesWeightsExtra&&!_.matricesWeightsExtra&&(_.matricesWeightsExtra=new Float32Array(_.positions.length/3*4));else if(_._validate(),!this.normals!=!_.normals||!this.tangents!=!_.tangents||!this.uvs!=!_.uvs||!this.uvs2!=!_.uvs2||!this.uvs3!=!_.uvs3||!this.uvs4!=!_.uvs4||!this.uvs5!=!_.uvs5||!this.uvs6!=!_.uvs6||!this.colors!=!_.colors||!this.matricesIndices!=!_.matricesIndices||!this.matricesWeights!=!_.matricesWeights||!this.matricesIndicesExtra!=!_.matricesIndicesExtra||!this.matricesWeightsExtra!=!_.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let _,v=0,E=0,T=[],S=null,A=[];for(let M of this.splitBasedOnMaterialID())A.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let I of M.vertexData.splitBasedOnMaterialID())A.push({vertexData:I,transform:M.transform});A.sort((M,I)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,D=I.vertexData.materialInfos?I.vertexData.materialInfos[0].materialIndex:0;return C>D?1:C===D?0:-1});for(let M of A){let I=M.vertexData;if(I.materialInfos?_=I.materialInfos[0].materialIndex:_=0,S&&S.materialIndex===_)S.indexCount+=I.indices.length,S.verticesCount+=I.positions.length/3;else{let C=new Iv;C.materialIndex=_,C.indexStart=v,C.indexCount=I.indices.length,C.verticesStart=E,C.verticesCount=I.positions.length/3,T.push(C),S=C}v+=I.indices.length,E+=I.positions.length/3}let R=A.splice(0,1)[0];c=R.vertexData,e=R.transform,l=A.map(M=>M.vertexData),t=A,this.materialInfos=T}let f=l.reduce((_,v)=>{var E,T;return _+((T=(E=v.indices)==null?void 0:E.length)!=null?T:0)},(m=(h=c.indices)==null?void 0:h.length)!=null?m:0),u=s||l.some(_=>_.indices===c.indices)?(g=c.indices)==null?void 0:g.slice():c.indices;if(f>0){let _=(p=u==null?void 0:u.length)!=null?p:0;if(u||(u=new Array(f)),u.length!==f){if(Array.isArray(u))u.length=f;else{let E=i||u instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);E.set(u),u=E}e&&e.determinant()<0&&n._FlipFaces(u,0,_)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:E,transform:T}of t)if(E.indices){for(let S=0;S[_.vertexData.positions,_.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(L.NormalKind,c.normals,e,t.map(_=>[_.vertexData.normals,_.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(L.TangentKind,c.tangents,e,t.map(_=>[_.vertexData.tangents,_.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(L.UVKind,c.uvs,e,t.map(_=>[_.vertexData.uvs,_.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(L.UV2Kind,c.uvs2,e,t.map(_=>[_.vertexData.uvs2,_.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(L.UV3Kind,c.uvs3,e,t.map(_=>[_.vertexData.uvs3,_.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(L.UV4Kind,c.uvs4,e,t.map(_=>[_.vertexData.uvs4,_.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(L.UV5Kind,c.uvs5,e,t.map(_=>[_.vertexData.uvs5,_.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(L.UV6Kind,c.uvs6,e,t.map(_=>[_.vertexData.uvs6,_.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(L.ColorKind,c.colors,e,t.map(_=>[_.vertexData.colors,_.transform])),(c.hasVertexAlpha!==void 0||t.some(_=>_.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(_=>_.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(L.MatricesIndicesKind,c.matricesIndices,e,t.map(_=>[_.vertexData.matricesIndices,_.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(L.MatricesWeightsKind,c.matricesWeights,e,t.map(_=>[_.vertexData.matricesWeights,_.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(L.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(_=>[_.vertexData.matricesIndicesExtra,_.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(L.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(_=>[_.vertexData.matricesWeightsExtra,_.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===L.PositionKind?n._TransformVector3Coordinates:e===L.NormalKind?n._TransformVector3Normals:e===L.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=L.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(L.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(L.NormalKind,this.normals),this.tangents&&i(L.TangentKind,this.tangents),this.uvs&&i(L.UVKind,this.uvs),this.uvs2&&i(L.UV2Kind,this.uvs2),this.uvs3&&i(L.UV3Kind,this.uvs3),this.uvs4&&i(L.UV4Kind,this.uvs4),this.uvs5&&i(L.UV5Kind,this.uvs5),this.uvs6&&i(L.UV6Kind,this.uvs6),this.colors&&i(L.ColorKind,this.colors),this.matricesIndices&&i(L.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(L.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(L.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(L.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(L.PositionKind)&&(r.positions=e.getVerticesData(L.PositionKind,t,i)),e.isVerticesDataPresent(L.NormalKind)&&(r.normals=e.getVerticesData(L.NormalKind,t,i)),e.isVerticesDataPresent(L.TangentKind)&&(r.tangents=e.getVerticesData(L.TangentKind,t,i)),e.isVerticesDataPresent(L.UVKind)&&(r.uvs=e.getVerticesData(L.UVKind,t,i)),e.isVerticesDataPresent(L.UV2Kind)&&(r.uvs2=e.getVerticesData(L.UV2Kind,t,i)),e.isVerticesDataPresent(L.UV3Kind)&&(r.uvs3=e.getVerticesData(L.UV3Kind,t,i)),e.isVerticesDataPresent(L.UV4Kind)&&(r.uvs4=e.getVerticesData(L.UV4Kind,t,i)),e.isVerticesDataPresent(L.UV5Kind)&&(r.uvs5=e.getVerticesData(L.UV5Kind,t,i)),e.isVerticesDataPresent(L.UV6Kind)&&(r.uvs6=e.getVerticesData(L.UV6Kind,t,i)),e.isVerticesDataPresent(L.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(L.ColorKind),o=s.getVerticesData(L.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]))],Me,"_TransformVector3Coordinates",null);P([Ys.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector3Normals",null);P([Ys.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector4Normals",null);P([Ys.filter((...n)=>!Array.isArray(n[0]))],Me,"_FlipFaces",null)});var tn,NR=y(()=>{tn=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}};tn._ForceFullSceneLoadingForIncremental=!1;tn._ShowLoadingScreen=!0;tn._CleanBoneMatrixWeights=!1;tn._LoggingLevel=0});var bn,wR=y(()=>{We();Kt();Ar();Yi();yv();NR();hp();Ni();Hf();OR();Gi();hn();ip();bn=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 L(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===L.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(L.PositionKind),!e))return;this._extend=LR(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===L.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:u,normalized:h}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let _;o instanceof Array?_=o.length*4:_=o.byteLength,m=_/u}let g=yG(o,c,f,d,u,m,!0),p=new L(this._engine,g,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:h,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 Rn(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,ti&&ti.HasTags(this)&&(e.tags=ti.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(L.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(L.PositionKind)),this.isVertexBufferUpdatable(L.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(L.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(L.NormalKind)),this.isVertexBufferUpdatable(L.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(L.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(L.TangentKind)),this.isVertexBufferUpdatable(L.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(L.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(L.UVKind)),this.isVertexBufferUpdatable(L.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(L.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(L.UV2Kind)),this.isVertexBufferUpdatable(L.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(L.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(L.UV3Kind)),this.isVertexBufferUpdatable(L.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(L.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(L.UV4Kind)),this.isVertexBufferUpdatable(L.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(L.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(L.UV5Kind)),this.isVertexBufferUpdatable(L.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(L.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(L.UV6Kind)),this.isVertexBufferUpdatable(L.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(L.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(L.ColorKind)),this.isVertexBufferUpdatable(L.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(L.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(L.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(L.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(L.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(L.MatricesWeightsKind)),this.isVertexBufferUpdatable(L.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 pe.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(L.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(L.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(L.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(L.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(L.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(L.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(L.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(L.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(L.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(L.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(L.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(L.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(L.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(L.MatricesIndicesKind),a=t.getVerticesData(L.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(h=c-1),u>.001){let m=1/u;for(let g=0;g<4;g++)o[d+g]*=m;if(l)for(let g=0;g<4;g++)l[d+g]*=m}else h>=4?(l[d+h-4]=1-u,a[d+h-4]=r):(o[d+h]=1-u,s[d+h]=r)}t.setVerticesData(L.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,ti&&ti.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new Rn(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(L.UVKind),e.hasUVs2&&r._delayInfo.push(L.UV2Kind),e.hasUVs3&&r._delayInfo.push(L.UV3Kind),e.hasUVs4&&r._delayInfo.push(L.UV4Kind),e.hasUVs5&&r._delayInfo.push(L.UV5Kind),e.hasUVs6&&r._delayInfo.push(L.UV6Kind),e.hasColors&&r._delayInfo.push(L.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(L.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(L.MatricesWeightsKind),r._delayLoadingFunction=Me.ImportVertexData):Me.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var $t,$f=y(()=>{Xt();zt();Dr();vi();We();xa();er();$t=class n extends xi{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=Z.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=je.Identity(),this._pivotMatrix=Z.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=Z.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=Z.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||je.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];je.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?je.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(Z.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];Z.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,je.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),Z.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(Z.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=je.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=je.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=je.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),Z.TranslationToRef(r.x,r.y,r.z,l),Z.TranslationToRef(-r.x,-r.y,-r.z,c),Z.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],je.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return je.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(je.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,je.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];Z.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 Z.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let u=this.parent;u.getSkeleton().prepare(),u.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),Z.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 u=-Math.atan2(d.z,d.x)+Math.PI/2,h=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,h);if(je.RotationYawPitchRollToRef(u,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let g=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(g),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(g.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(g.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(g.z=0),Z.RotationYawPitchRollToRef(g.y,g.x,g.z,$.Matrix[0])}else Z.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),Z.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=Z.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(Z.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(Z.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)}};$t.BILLBOARDMODE_NONE=0;$t.BILLBOARDMODE_X=1;$t.BILLBOARDMODE_Y=2;$t.BILLBOARDMODE_Z=4;$t.BILLBOARDMODE_ALL=7;$t.BILLBOARDMODE_USE_POSITION=128;$t.BillboardUseParentOrientation=!1;$t._TmpRotation=je.Zero();$t._TmpScaling=b.Zero();$t._TmpTranslation=b.Zero();$t._TmpRHRestore=Z.Scaling(1,1,-1);$t._LookAtVectorCache=new b(0,0,0);$t._RotationAxisCache=new je;P([Jr("position")],$t.prototype,"_position",void 0);P([Jr("rotation")],$t.prototype,"_rotation",void 0);P([TG("rotationQuaternion")],$t.prototype,"_rotationQuaternion",void 0);P([Jr("scaling")],$t.prototype,"_scaling",void 0);P([F("billboardMode")],$t.prototype,"_billboardMode",void 0);P([F()],$t.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],$t.prototype,"_infiniteDistance",void 0);P([F()],$t.prototype,"ignoreNonUniformScaling",void 0);P([F()],$t.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var FR,rH=y(()=>{We();FR=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 nH(n){return Math.floor(n/8)}function sH(n){return 1<{BR=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=nH(e),i=sH(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=nH(e),r=sH(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var oH={};Be(oH,{OptimizeIndices:()=>Vde});function Vde(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 u=i.get(d);if(!u)return;for(let h of u)r.get(h)||c.push(h)}}}};for(let l=0;l{aH()});function Gde(n,e,t){let i;switch(e){case L.PositionKind:i=r=>r.getPositions();break;case L.NormalKind:i=r=>r.getNormals();break;case L.TangentKind:i=r=>r.getTangents();break;case L.UVKind:i=r=>r.getUVs();break;case L.UV2Kind:i=r=>r.getUV2s();break;case L.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(i[u+h]*16),m,c),l.addToSelf(c));if(s&&a)for(h=0;h<4;h++)m=a[u+h],m>0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(s[u+h]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var dL,uL,Ir,pp=y(()=>{Xt();vi();We();Yi();Ar();$f();uv();hp();Yf();rH();An();OR();Kt();Kn();zm();er();zt();Hr();dL=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}},uL=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new dL,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 FR,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},Ir=class n extends $t{static get BILLBOARDMODE_NONE(){return $t.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return $t.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return $t.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return $t.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return $t.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return $t.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 uL,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=Ee.Red(),this.outlineWidth=.02,this.overlayColor=Ee.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 dt(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()>Re.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 Tr(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!==$t.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 Rn(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(L.MatricesIndicesKind)&&this.isVerticesDataPresent(L.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===$t.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 Z;(this.rotationQuaternion?this.rotationQuaternion:je.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=LR(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new Rn(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&&Gde(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(L.MatricesIndicesKind),o=s(L.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(L.MatricesIndicesExtraKind):null,f=l?s(L.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===L.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 Z.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 As,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,u=this._scene.getIntersectingSubMeshCandidates(this,e),h=u.length,m=!1;for(let g=0;g1&&!a&&!p.canIntersects(e))continue;let _=p.intersects(e,this._positions,this.getIndices(),t,i);if(_&&(t||!d||_.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;lwt?s.maximum.x-s.minimum.x:wt,e.bbSize.y=s.maximum.y-s.minimum.y>wt?s.maximum.y-s.minimum.y:wt,e.bbSize.z=s.maximum.z-s.minimum.z>wt?s.maximum.z-s.minimum.z:wt;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&&Me.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,u,h,m,g,p=this.getFacetLocalPositions(),_=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let E=Number.MAX_VALUE,T,S,A,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=A.x*R.x+A.y*R.y+A.z*R.z,u=-(A.x*e+A.y*t+A.z*i-d)/(A.x*A.x+A.y*A.y+A.z*A.z),h=e+A.x*u,m=t+A.y*u,g=i+A.z*u,l=h-e,c=m-t,f=g-i,T=l*l+c*c+f*f,T(lH(),oH));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Xs.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?je.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw $e("EdgesRenderer")}enableEdgesRendering(e,t,i){throw $e("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};Ir.OCCLUSION_TYPE_NONE=0;Ir.OCCLUSION_TYPE_OPTIMISTIC=1;Ir.OCCLUSION_TYPE_STRICT=2;Ir.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;Ir.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;Ir.CULLINGSTRATEGY_STANDARD=0;Ir.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;Ir.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;Ir.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;Ir.DefaultIsPickable=!0;P([Ys.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],Ir,"_ApplySkeleton",null);Bt("BABYLON.AbstractMesh",Ir)});var Zn,cH=y(()=>{Xt();Dr();zt();Zn=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){st.Clone(()=>e,this)}serialize(){return st.Serialize(this)}parse(e,t,i){st.Parse(()=>this,e,t,i)}};P([F()],Zn.prototype,"func",null);P([F()],Zn.prototype,"backFunc",null);P([F()],Zn.prototype,"funcRef",null);P([F()],Zn.prototype,"funcMask",null);P([F()],Zn.prototype,"opStencilFail",null);P([F()],Zn.prototype,"opDepthFail",null);P([F()],Zn.prototype,"opStencilDepthPass",null);P([F()],Zn.prototype,"backOpStencilFail",null);P([F()],Zn.prototype,"backOpDepthFail",null);P([F()],Zn.prototype,"backOpStencilDepthPass",null);P([F()],Zn.prototype,"mask",null);P([F()],Zn.prototype,"enabled",null)});function Qn(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 Ll(n,e,t){var c,f,d,u,h,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=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),o=!!((h=n.clipPlane5)!=null?h: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 fH(n,e,t){var f,d,u,h,m,g;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((u=n.clipPlane3)!=null?u:e.clipPlane3),o=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((g=n.clipPlane6)!=null?g: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 $n(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;gp(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,gp(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,gp(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,gp(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,gp(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,gp(n,"vClipPlane6",i)}function gp(n,e,t){var i;if(t){let r=((i=Za.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 Ol=y(()=>{pv();We()});var fe,to=y(()=>{Hr();fe=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Re.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}};fe._DiffuseTextureEnabled=!0;fe._BaseWeightTextureEnabled=!0;fe._BaseDiffuseRoughnessTextureEnabled=!0;fe._DetailTextureEnabled=!0;fe._DecalMapEnabled=!0;fe._AmbientTextureEnabled=!0;fe._OpacityTextureEnabled=!0;fe._ReflectionTextureEnabled=!0;fe._EmissiveTextureEnabled=!0;fe._SpecularTextureEnabled=!0;fe._BumpTextureEnabled=!0;fe._LightmapTextureEnabled=!0;fe._RefractionTextureEnabled=!0;fe._ColorGradingTextureEnabled=!0;fe._FresnelEnabled=!0;fe._ClearCoatTextureEnabled=!0;fe._ClearCoatBumpTextureEnabled=!0;fe._ClearCoatTintTextureEnabled=!0;fe._SheenTextureEnabled=!0;fe._AnisotropicTextureEnabled=!0;fe._ThicknessTextureEnabled=!0;fe._RefractionIntensityTextureEnabled=!0;fe._TranslucencyIntensityTextureEnabled=!0;fe._TranslucencyColorTextureEnabled=!0;fe._IridescenceTextureEnabled=!0});function Jf(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 dH=y(()=>{Lt()});function ed(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(uH,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",uH)):t.setColor3("vFogColor",n.fogColor))}function Nl(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"),ku.NUM_MORPH_INFLUENCERS=f,ku.NORMAL=s,ku.TANGENT=a,ku.UV=o,ku.UV2=l,ku.COLOR=c,Wu(t,i,ku,r),f)}function Wu(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,u=a&&a.supportsColors&&t.VERTEXCOLOR;for(let h=0;hs&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function ko(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 Jn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function td(n,e){e.bindToEffect(n,"Scene")}function _p(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&fe.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let u=r;t.updateVector3("vReflectionPosition",u.boundingBoxPosition),t.updateVector3("vReflectionSize",u.boundingBoxSize)}if(s){let u=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",u,Math.log2(u))}if(c&&!e.USEIRRADIANCEMAP){let u=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&u)if(e.SPHERICAL_HARMONICS){let h=u.preScaledHarmonics;t.updateVector3("vSphericalL00",h.l00),t.updateVector3("vSphericalL1_1",h.l1_1),t.updateVector3("vSphericalL10",h.l10),t.updateVector3("vSphericalL11",h.l11),t.updateVector3("vSphericalL2_2",h.l2_2),t.updateVector3("vSphericalL2_1",h.l2_1),t.updateVector3("vSphericalL20",h.l20),t.updateVector3("vSphericalL21",h.l21),t.updateVector3("vSphericalL22",h.l22)}else t.updateFloat3("vSphericalX",u.x.x,u.x.y,u.x.z),t.updateFloat3("vSphericalY",u.y.x,u.y.y,u.y.z),t.updateFloat3("vSphericalZ",u.z.x,u.z.y,u.z.z),t.updateFloat3("vSphericalXX_ZZ",u.xx.x-u.zz.x,u.xx.y-u.zz.y,u.xx.z-u.zz.z),t.updateFloat3("vSphericalYY_ZZ",u.yy.x-u.zz.x,u.yy.y-u.zz.y,u.yy.z-u.zz.z),t.updateFloat3("vSphericalZZ",u.zz.x,u.zz.y,u.zz.z),t.updateFloat3("vSphericalXY",u.xy.x,u.xy.y,u.xy.z),t.updateFloat3("vSphericalYZ",u.yz.x,u.yz.y,u.yz.z),t.updateFloat3("vSphericalZX",u.zx.x,u.zx.y,u.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 UR(n,e,t,i=null,r=!1){if(i&&fe.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 si(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 ai(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function vp(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function Wde(n,e){return e.set(n),e}function Zs(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]),Wde(r,t.previousBones[n.uniqueId])))}}}function zde(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function Ep(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 Tp(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&ko(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function Ap(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 Hde(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function xp(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&&Hde(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 u=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),h=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!u&&!h,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=u&&!h?u.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function Rp(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 Xde(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 Qt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case Qt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case Qt.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!=Qt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==Qt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function Mp(n,e,t,i,r,s=null,a=!1){let o=qde(n,i);s!==!1&&(o=fH(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 Yde(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 Kde(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 jde(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function yp(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&&Yde(n,e),r&&Kde(n,e),a&&jde(n,e),!0}function Ip(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 Cp(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 Pp(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{Lt();Gi();av();Ol();to();Xr();dH();uH={r:0,g:0,b:0},ku={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Ae,ts=y(()=>{Xt();zt();Ni();vi();Gi();yv();Yf();Lt();jm();Lu();cH();es();Dr();pP();Ae=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 Zn,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||pe.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new Ts(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new Tr(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 Tr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new Tr(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 Lx(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,td(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 Co(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let u=new qs(0,0,0,0,0,e,void 0,!1,!1);u.materialDefines&&(u.materialDefines._renderId=-1),this.isReadyForSubMesh(e,u,s.useInstances)||(u.effect&&u.effect.getCompilationError()&&u.effect.allFallbacksProcessed()?d=u.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();Ae._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Ae._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Ae._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Ae._MiscDirtyCallBack=n=>n.markAsMiscDirty();Ae._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Ae._LightsDirtyCallBack=n=>n.markAsLightDirty();Ae._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Ae._FresnelAndMiscDirtyCallBack=n=>{Ae._FresnelDirtyCallBack(n),Ae._MiscDirtyCallBack(n)};Ae._TextureAndMiscDirtyCallBack=n=>{Ae._TextureDirtyCallBack(n),Ae._MiscDirtyCallBack(n)};Ae._DirtyCallbackArray=[];Ae._RunDirtyCallBacks=n=>{for(let e of Ae._DirtyCallbackArray)e(n)};P([F()],Ae.prototype,"id",void 0);P([F()],Ae.prototype,"uniqueId",void 0);P([F()],Ae.prototype,"name",void 0);P([F()],Ae.prototype,"metadata",void 0);P([F()],Ae.prototype,"checkReadyOnEveryCall",void 0);P([F()],Ae.prototype,"checkReadyOnlyOnce",void 0);P([F()],Ae.prototype,"state",void 0);P([F("alpha")],Ae.prototype,"_alpha",void 0);P([F("backFaceCulling")],Ae.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Ae.prototype,"_cullBackFaces",void 0);P([F()],Ae.prototype,"sideOrientation",void 0);P([F()],Ae.prototype,"_alphaMode",void 0);P([F()],Ae.prototype,"_needDepthPrePass",void 0);P([F()],Ae.prototype,"disableDepthWrite",void 0);P([F()],Ae.prototype,"disableColorWrite",void 0);P([F()],Ae.prototype,"forceDepthWrite",void 0);P([F()],Ae.prototype,"depthFunction",void 0);P([F()],Ae.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Ae.prototype,"_fogEnabled",void 0);P([F()],Ae.prototype,"pointSize",void 0);P([F()],Ae.prototype,"zOffset",void 0);P([F()],Ae.prototype,"zOffsetUnits",void 0);P([F()],Ae.prototype,"pointsCloud",null);P([F()],Ae.prototype,"fillMode",null);P([F()],Ae.prototype,"useLogarithmicDepth",null);P([F()],Ae.prototype,"_isVertexOutputInvariant",void 0);P([F()],Ae.prototype,"transparencyMode",null)});var Op,hH=y(()=>{ts();Hf();er();Op=class n extends Ae{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,ti&&ti.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}};Bt("BABYLON.MultiMaterial",Op)});var VR,mH=y(()=>{VR=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var Np,GR,hL,kR,mL,pL,wl,Q,wi=y(()=>{vi();Ni();nv();Hf();aL();Dl();We();Kt();xa();Yi();Ar();wR();pp();yv();ts();hH();NR();Dr();Lt();er();An();sp();mH();Np=class{},GR=class{constructor(){this.batchCache=new kR(this),this.batchCacheReplacementModeInFrozenMode=new kR(this),this.instancesBufferSize=512*4}},hL=class{constructor(){this.renderPasses={}}},kR=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},mL=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},pL=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}},wl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},Q=class n extends Ir{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(L.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(L.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),yl.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,ti&&ti.HasTags(e)&&ti.AddTagsTo(this,ti.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(g):p.bindOnlyWorldMatrix(g))};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=(u=m.clonePhysicsImpostor)!=null?u:!0,l=(h=m.cloneThinInstances)!=null?h:!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 VR(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 g of this.subMeshes){let p=g.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,g,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 g of this.lightSources){let p=g.getShadowGenerators();if(!p)continue;let _=p.values();for(let v=_.next();v.done!==!0;v=_.next()){let E=v.value;if(E&&(!((l=E.getShadowMap())!=null&&l.renderList)||(c=E.getShadowMap())!=null&&c.renderList&&((d=(f=E.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let S=(u=E.getShadowMap().renderPassIds)!=null?u:[i.currentRenderPassId];for(let A=0;A0){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 qs(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++)qs.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 Me;s.set(t,e);let a=this.getScene();new bn(bn.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=bn.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(L.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(L.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(L.NormalKind);if(!s)return this;Me.ComputeNormals(i,r,s),this.updateVerticesData(L.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(bn.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new bn(bn.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 Me;s.indices=e;let a=this.getScene();new bn(bn.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)===Ae.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Ae.PointFillMode:a=null;break;case Ae.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Ae.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!==Ae.WireFrameFillMode||t==Ae.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Ae.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,u=c.instancesPreviousBuffer,h=0,m=0,g=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,_=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||_)){let E=this.getWorldMatrix();if(g){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,h),f.masterMeshPreviousWorldMatrix.copyFrom(E)):(f.masterMeshPreviousWorldMatrix=E.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,h))),E.copyToArray(c.instancesData,h);let T=E.asArray();c.instancesData[h+12]=T[12]-p.x,c.instancesData[h+13]=T[13]-p.y,c.instancesData[h+14]=T[14]-p.z,h+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let T=this._scene.activeCamera.globalPosition;for(let S=0;SS._distanceToCamera>A._distanceToCamera?-1:S._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 u=e.getRenderingMesh(),h=c.hardwareInstancedRendering[e._id]||u.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,g=e.getMaterial();if(!g)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==g){if(g._storeEffectOnSubMeshes){if(!g.isReadyForSubMesh(this,e,h))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!g.isReady(this,h))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=g}else if(g._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!g._storeEffectOnSubMeshes&&!g._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 k=0;k_&&r++,S!==0&&E++,v+=S,_=S}if(c[E]++,E>a&&(a=E),v===0)s++;else{let T=1/v,S=0;for(let A=0;Af&&o++}}let d=this.skeleton.bones.length,u=this.getVerticesData(L.MatricesIndicesKind),h=this.getVerticesData(L.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let g="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:g}}_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 pe.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(L.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(L.PositionKind),r=b.Zero(),s;for(s=0;s{let u=d.width,h=d.height,g=this.getEngine().createCanvas(u,h).getContext("2d");g.drawImage(d,0,0);let p=g.getImageData(0,0,u,h).data;this.applyDisplacementMapFromBuffer(p,u,h,t,i,s,a,o),r&&r(this)};return pe.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(L.PositionKind)||!this.isVerticesDataPresent(L.NormalKind)||!this.isVerticesDataPresent(L.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(L.PositionKind,!0,!0),f=this.getVerticesData(L.NormalKind),d=this.getVerticesData(L.UVKind),u=b.Zero(),h=b.Zero(),m=Fe.Zero();a=a||Fe.Zero(),o=o||new Fe(1,1);for(let g=0;g{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 u=0;u{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(L.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(L.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),u=b.Zero(),h=new Z,m=new Z,g=0,p;for(let _=0;_0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(a[g+p]*16),v,m),h.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[g+p],v>0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(c[g+p]*16),v,m),h.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[_],i._sourcePositions[_+1],i._sourcePositions[_+2],h,u),u.toArray(r,_),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[_],i._sourceNormals[_+1],i._sourceNormals[_+2],h,u),u.toArray(s,_)),h.reset()}return this.updateVerticesData(L.PositionKind,r),t&&this.updateVerticesData(L.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 Mv(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await Qz(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),qz())}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 I,C,D,w;return((C=(I=R.material)==null?void 0:I.uniqueId)!=null?C:-1)-((w=(D=M.material)==null?void 0:D.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,u=new Array,h=e[0].sideOrientation;for(l=0;lMath.max(I,C.start+C.count),0);if(a)if(R.material){let I=R.material;if(I instanceof Op){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:Me.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:g,transform:p}=m(e[0]);o&&(yield);let _=new Array(e.length-1);for(let R=1;R{throw $e("GroundMesh")};Q._GoldbergMeshParser=(n,e)=>{throw $e("GoldbergMesh")};Q._LinesMeshParser=(n,e)=>{throw $e("LinesMesh")};Q._GreasedLineMeshParser=(n,e)=>{throw $e("GreasedLineMesh")};Q._GreasedLineRibbonMeshParser=(n,e)=>{throw $e("GreasedLineRibbonMesh")};Q._TrailMeshParser=(n,e)=>{throw $e("TrailMesh")};Q._GaussianSplattingMeshParser=(n,e)=>{throw $e("GaussianSplattingMesh")};Q._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw $e("GaussianSplattingPartProxyMesh")};Q._GaussianSplattingCompoundMeshParser=(n,e)=>{throw $e("GaussianSplattingCompoundMesh")};Bt("BABYLON.Mesh",Q)});var wp,pL=y(()=>{wo();cc();Kn();wp=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===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=br.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:br.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){Iu();Wo=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}};Wo.EASINGMODE_EASEIN=0;Wo.EASINGMODE_EASEOUT=1;Wo.EASINGMODE_EASEINOUT=2;GR=class extends Wo{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)}},kR=class extends Wo{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 nd,_L=y(()=>{nd=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 vL,EL,SL,TL,AL,xL,zo,mt,sd=y(()=>{We();Kt();jn();er();_L();Aa();kx();Cu();Dr();vL=Object.freeze(new je(0,0,0,0)),EL=Object.freeze(b.Zero()),SL=Object.freeze(Fe.Zero()),TL=Object.freeze(uc.Zero()),AL=Object.freeze(Ee.Black()),xL=Object.freeze(new dt(0,0,0,0)),zo={key:0,repeatCount:0,loopMode:2},mt=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 je?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof Fe?c=n.ANIMATIONTYPE_VECTOR2:s instanceof Ee?c=n.ANIMATIONTYPE_COLOR3:s instanceof dt?c=n.ANIMATIONTYPE_COLOR4:s instanceof uc&&(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 u=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!u||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[u],0,s,u.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let u=n._PrepareAnimation(e,r,s,a,o,l,c,f);return u?t.getScene().beginDirectHierarchyAnimation(t,i,[u],0,a,u.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,E;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,u=o._keys[d],h={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,g=u.frame;if(a.range){let T=o.getRange(a.range);T&&(m=T.from,g=T.to)}else m=(v=a.fromFrame)!=null?v:m,g=(E=a.toFrame)!=null?E:g;if(m!==f.frame&&(c=o.createKeyForFrame(m)),g!==u.frame&&(d=o.createKeyForFrame(g)),o._keys.length===1){let T=o._getKeyValue(o._keys[0]);h.referenceValue=T.clone?T.clone():T}else if(l<=f.frame){let T=o._getKeyValue(f.value);h.referenceValue=T.clone?T.clone():T}else if(l>=u.frame){let T=o._getKeyValue(u.value);h.referenceValue=T.clone?T.clone():T}else{zo.key=0;let T=o._interpolate(l,zo);h.referenceValue=T.clone?T.clone():T}o.dataType===n.ANIMATIONTYPE_QUATERNION?h.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(h.referenceValue.decompose(h.referenceScaling,h.referenceQuaternion,h.referencePosition),h.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,_=a.clipKeys?[]:null;for(let T=c;T<=d;T++){let S=o._keys[T];if((_||a.cloneOriginalAnimation)&&(S={frame:S.frame,value:S.value.clone?S.value.clone():S.value,inTangent:S.inTangent,outTangent:S.outTangent,interpolation:S.interpolation,lockedTangent:S.lockedTangent,easingFunction:S.easingFunction},_&&(p===Number.MAX_VALUE&&(p=S.frame),S.frame-=p,_.push(S))),!(T&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&S.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:S.value.decompose(h.keyScaling,h.keyQuaternion,h.keyPosition),h.keyPosition.subtractInPlace(h.referencePosition),h.keyScaling.divideInPlace(h.referenceScaling),h.referenceQuaternion.multiplyToRef(h.keyQuaternion,h.keyQuaternion),Z.ComposeToRef(h.keyScaling,h.keyQuaternion,h.keyPosition,S.value);break;case n.ANIMATIONTYPE_QUATERNION:h.referenceValue.multiplyToRef(S.value,S.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:S.value.subtractToRef(h.referenceValue,S.value);break;case n.ANIMATIONTYPE_SIZE:S.value.width-=h.referenceValue.width,S.value.height-=h.referenceValue.height;break;default:S.value-=h.referenceValue}}return _&&o.setKeys(_,!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 g=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>g-1)return i?void 0:this._getKeyValue(r[g-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,u=(e-a.frame)/d,h=a.easingFunction||this.getEasingFunction();switch(h&&(u=h.ease(u)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let g=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,u):this.floatInterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+g}break}case n.ANIMATIONTYPE_QUATERNION:{let g=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.quaternionInterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.addInPlace((t.offsetValue||vL).scale(t.repeatCount))}return g}case n.ANIMATIONTYPE_VECTOR3:{let g=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.vector3InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||EL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let g=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.vector2InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||SL).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,u);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,u).add((t.offsetValue||TL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let g=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.color3InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||AL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let g=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.color4InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||xL).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,u,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?(Z.DecomposeLerpToRef(e,t,i,r),r):Z.DecomposeLerp(e,t,i):r?(Z.LerpToRef(e,t,i,r),r):Z.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=je.FromArray(o.values),o.values.length>=8){let u=je.FromArray(o.values.slice(4,8));u.equals(je.Zero())||(l=u)}if(o.values.length>=12){let u=je.FromArray(o.values.slice(8,12));u.equals(je.Zero())||(c=u)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=Z.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=Ee.FromArray(o.values),o.values[3]&&(l=Ee.FromArray(o.values[3])),o.values[4]&&(c=Ee.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=dt.FromArray(o.values),o.values[4]&&(l=dt.FromArray(o.values[4])),o.values[5]&&(c=dt.FromArray(o.values[5])),o.values[6]&&(f=dt.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 wr;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 wr;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()})}};mt._UniqueIdGenerator=0;mt.AllowMatricesInterpolation=!1;mt.AllowMatrixDecomposeForInterpolation=!0;mt.InheritOriginalValueFromActiveAnimations=!1;mt.SnippetUrl="https://snippet.babylonjs.com";mt.ANIMATIONTYPE_FLOAT=0;mt.ANIMATIONTYPE_VECTOR3=1;mt.ANIMATIONTYPE_QUATERNION=2;mt.ANIMATIONTYPE_MATRIX=3;mt.ANIMATIONTYPE_COLOR3=4;mt.ANIMATIONTYPE_COLOR4=7;mt.ANIMATIONTYPE_VECTOR2=5;mt.ANIMATIONTYPE_SIZE=6;mt.ANIMATIONLOOPMODE_RELATIVE=0;mt.ANIMATIONLOOPMODE_CYCLE=1;mt.ANIMATIONLOOPMODE_CONSTANT=2;mt.ANIMATIONLOOPMODE_YOYO=4;mt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;mt.CreateFromSnippetAsync=mt.ParseFromSnippetAsync;Bt("BABYLON.Animation",mt);xi._AnimationRangeFactory=(n,e,t)=>new nd(n,e,t)});var Fp,mH=y(()=>{gL();sd();Fp=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=mt.CreateAnimation("radius",mt.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=mt.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()}};Fp.EasingFunction=new GR(.3);Fp.EasingMode=Wo.EASINGMODE_EASEOUT});var ad,pH=y(()=>{gL();vi();wo();cc();We();sd();ad=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===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.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=br.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=mt.CreateAnimation("beta",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=mt.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=br.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}};ad.EasingFunction=new kR;ad.EasingMode=Wo.EASINGMODE_EASEINOUT;ad.IgnoreBoundsSizeMode=0;ad.FitFrustumSidesMode=1});var WR,RL,Zs,bL=y(()=>{Xt();zt();Dl();We();Kn();zm();Aa();xi.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Zs(n,b.Zero(),e));WR=Z.Zero(),RL=je.Identity(),Zs=class n extends _t{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=wt,this._rotationEpsilon=wt,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=Z.Zero(),this._cameraTransformMatrix=Z.Zero(),this._cameraRotationMatrix=Z.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new je,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 je(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+=wt),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?Z.LookAtRHToRef(this.position,e,b.UpReadOnly,WR):Z.LookAtLHToRef(this.position,e,b.UpReadOnly,WR),WR.invert();let t=this.rotationQuaternion||RL;je.FromRotationMatrixToRef(WR,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()&&(je.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){Lt();Dr();Dl();is={},Bp=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=_t.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=st.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=is[i];if(r){let s=t[i],a=st.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=is[this.attached[i].getClassName()];if(r){let s=st.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var Cv,gH=y(()=>{Xt();zt();Ni();wo();Cv=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=pe.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,u;let l=o.event,c=l.pointerType==="touch";if(o.type!==at.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 h=l.movementX,m=l.movementY;this.onTouch(null,h,m),this._pointA=null,this._pointB=null}else{if(o.type!==at.POINTERDOWN&&o.type!==at.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((u=this._pointB)==null?void 0:u.pointerId)!==l.pointerId)return;if(o.type===at.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(h){}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===at.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===at.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(h){}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===at.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let h=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,h,m)}else if(this._pointA&&this._pointB){let h=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;h.x=l.clientX,h.y=l.clientY;let m=this._pointA.x-this._pointB.x,g=this._pointA.y-this._pointB.y,p=m*m+g*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,_),s=_,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE|at.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&&pe.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&pe.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()],Cv.prototype,"buttons",void 0)});var zu,_H=y(()=>{Xt();zt();gH();zu=class extends Cv{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()],zu.prototype,"pinchZoom",void 0);P([F()],zu.prototype,"multiTouchPanning",void 0);P([F()],zu.prototype,"multiTouchPanAndZoom",void 0)});var xa,vH=y(()=>{Xt();zt();Fl();_H();xa=class n extends zu{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()}};xa.MinimumRadiusForPinch=.001;P([F()],xa.prototype,"buttons",void 0);P([F()],xa.prototype,"angularSensibilityX",void 0);P([F()],xa.prototype,"angularSensibilityY",void 0);P([F()],xa.prototype,"pinchPrecision",void 0);P([F()],xa.prototype,"pinchDeltaPercentage",void 0);P([F()],xa.prototype,"useNaturalPinchZoom",void 0);P([F()],xa.prototype,"panningSensibility",void 0);is.ArcRotateCameraPointersInput=xa});var Qs,EH=y(()=>{Xt();zt();Fl();uR();Ni();Qs=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=pe.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===Fo.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{Xt();zt();Fl();wo();jm();We();Kn();hR();jn();Ni();jde=40,od=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=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Bo.DOM_DELTA_LINE?jde: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=Ft(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,at.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=Co.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,Z.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){vH();EH();SH();Fl();zR=class extends Bp{constructor(e){super(e)}addMouseWheel(){return this.add(new od),this}addPointers(){return this.add(new xa),this}addKeyboard(){return this.add(new Qs),this}}});function qde(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 Zde(n,e){return Math.acos(n/e)}function rs(n,e){return isNaN(n)?e:n}var Ri,HR=y(()=>{Xt();zt();vi();We();jn();Aa();wi();pL();mH();pH();Dl();bL();TH();Kn();Ni();er();xi.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new Ri(n,0,0,1,b.Zero(),e));Ri=class n extends Zs{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 Z,this._upToYMatrix=new Z,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){Z.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),Z.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 Fp,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 ad,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 wp,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 Z,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),u=Math.sin(this.alpha),h=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let g=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*h,this.radius*u*m),g.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,g,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 zR(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>wt&&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,u,h;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=rs(e,this._goalAlpha),this._goalBeta=rs(t,this._goalBeta),this._goalRadius=rs(i,this._goalRadius),this._goalTarget.set(rs(r.x,this._goalTarget.x),rs(r.y,this._goalTarget.y),rs(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(rs(s.x,this._goalTargetScreenOffset.x),rs(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=Ft(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=Ft(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=Ft(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(u=this.upperRadiusLimit)!=null?u:1/0),this._goalTarget.y=Ft(this._goalTarget.y,(h=this.lowerTargetYLimit)!=null?h:-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=pe.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=qde(this._computationVector),this.beta=Zde(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=Q.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===_t.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=Q.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=Q.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case _t.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case _t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case _t.RIG_MODE_STEREOSCOPIC_OVERUNDER:case _t.RIG_MODE_STEREOSCOPIC_INTERLACED:case _t.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case _t.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 _t.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case _t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case _t.RIG_MODE_STEREOSCOPIC_OVERUNDER:case _t.RIG_MODE_STEREOSCOPIC_INTERLACED:case _t.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case _t.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)),u=f*Math.sqrt(1+1/(o*o));return Math.max(d,u)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],Ri.prototype,"alpha",void 0);P([F()],Ri.prototype,"beta",void 0);P([F()],Ri.prototype,"radius",void 0);P([F()],Ri.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Jr("target")],Ri.prototype,"_target",void 0);P([Xx("targetHost")],Ri.prototype,"_targetHost",void 0);P([F()],Ri.prototype,"inertialAlphaOffset",void 0);P([F()],Ri.prototype,"inertialBetaOffset",void 0);P([F()],Ri.prototype,"inertialRadiusOffset",void 0);P([F()],Ri.prototype,"lowerAlphaLimit",void 0);P([F()],Ri.prototype,"upperAlphaLimit",void 0);P([F()],Ri.prototype,"lowerBetaLimit",void 0);P([F()],Ri.prototype,"upperBetaLimit",void 0);P([F()],Ri.prototype,"lowerRadiusLimit",void 0);P([F()],Ri.prototype,"upperRadiusLimit",void 0);P([F()],Ri.prototype,"lowerTargetYLimit",void 0);P([F()],Ri.prototype,"inertialPanningX",void 0);P([F()],Ri.prototype,"inertialPanningY",void 0);P([F()],Ri.prototype,"pinchToPanMaxDistance",void 0);P([F()],Ri.prototype,"panningDistanceLimit",void 0);P([Jr()],Ri.prototype,"panningOriginTarget",void 0);P([F()],Ri.prototype,"panningInertia",void 0);P([F()],Ri.prototype,"zoomToMouseLocation",null);P([F()],Ri.prototype,"zoomOnFactor",void 0);P([Jm()],Ri.prototype,"targetScreenOffset",void 0);P([F()],Ri.prototype,"allowUpsideDown",void 0);P([F()],Ri.prototype,"useInputToRestoreState",void 0);P([F()],Ri.prototype,"restoreStateInterpolationFactor",void 0);Bt("BABYLON.ArcRotateCamera",Ri)});var jt,ld=y(()=>{Xt();zt();We();Kt();Aa();Yf();er();av();Dr();jt=class n extends xi{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 Ee(1,1,1),this.specular=new Ee(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 Tr(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,Ln.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Ln.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Ln.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Ln.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=st.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=st.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 st.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=xi.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=st.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}};jt.FALLOFF_DEFAULT=Qt.FALLOFF_DEFAULT;jt.FALLOFF_PHYSICAL=Qt.FALLOFF_PHYSICAL;jt.FALLOFF_GLTF=Qt.FALLOFF_GLTF;jt.FALLOFF_STANDARD=Qt.FALLOFF_STANDARD;jt.LIGHTMAP_DEFAULT=Qt.LIGHTMAP_DEFAULT;jt.LIGHTMAP_SPECULAR=Qt.LIGHTMAP_SPECULAR;jt.LIGHTMAP_SHADOWSONLY=Qt.LIGHTMAP_SHADOWSONLY;jt.INTENSITYMODE_AUTOMATIC=Qt.INTENSITYMODE_AUTOMATIC;jt.INTENSITYMODE_LUMINOUSPOWER=Qt.INTENSITYMODE_LUMINOUSPOWER;jt.INTENSITYMODE_LUMINOUSINTENSITY=Qt.INTENSITYMODE_LUMINOUSINTENSITY;jt.INTENSITYMODE_ILLUMINANCE=Qt.INTENSITYMODE_ILLUMINANCE;jt.INTENSITYMODE_LUMINANCE=Qt.INTENSITYMODE_LUMINANCE;jt.LIGHTTYPEID_POINTLIGHT=Qt.LIGHTTYPEID_POINTLIGHT;jt.LIGHTTYPEID_DIRECTIONALLIGHT=Qt.LIGHTTYPEID_DIRECTIONALLIGHT;jt.LIGHTTYPEID_SPOTLIGHT=Qt.LIGHTTYPEID_SPOTLIGHT;jt.LIGHTTYPEID_HEMISPHERICLIGHT=Qt.LIGHTTYPEID_HEMISPHERICLIGHT;jt.LIGHTTYPEID_RECT_AREALIGHT=Qt.LIGHTTYPEID_RECT_AREALIGHT;P([yr()],jt.prototype,"diffuse",void 0);P([yr()],jt.prototype,"specular",void 0);P([F()],jt.prototype,"falloffType",void 0);P([F()],jt.prototype,"intensity",void 0);P([F()],jt.prototype,"range",null);P([F()],jt.prototype,"intensityMode",null);P([F()],jt.prototype,"radius",null);P([F()],jt.prototype,"_renderPriority",void 0);P([ce("_reorderLightsInScene")],jt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],jt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],jt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],jt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],jt.prototype,"_lightmapMode",void 0)});var Ra,XR=y(()=>{Xt();zt();We();Kt();Aa();ld();er();xi.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new Ra(n,b.Zero(),e));Ra=class extends jt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new Ee(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=Z.Identity()),this._worldMatrix}getTypeID(){return jt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([yr()],Ra.prototype,"groundColor",void 0);P([Jr()],Ra.prototype,"direction",void 0);Bt("BABYLON.HemisphericLight",Ra)});var io,YR=y(()=>{Xt();zt();We();ld();zm();io=class extends jt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=Z.Identity(),this._projectionMatrix=Z.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,Hs.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=Z.Identity()),Z.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),Z.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([Jr()],io.prototype,"position",null);P([Jr()],io.prototype,"direction",null);P([F()],io.prototype,"shadowMinZ",null);P([F()],io.prototype,"shadowMaxZ",null)});var $s,AH=y(()=>{Xt();zt();We();Aa();ld();YR();er();xi.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new $s(n,b.Zero(),e));$s=class extends io{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 jt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;Z.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,u=-Number.MAX_VALUE;for(let h=0;hthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zu&&(u=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=u)}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;Z.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()],$s.prototype,"shadowFrustumSize",null);P([F()],$s.prototype,"shadowOrthoScale",null);P([F()],$s.prototype,"autoUpdateExtends",void 0);P([F()],$s.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],$s.prototype,"_orthoLeft",void 0);P([F("orthoRight")],$s.prototype,"_orthoRight",void 0);P([F("orthoTop")],$s.prototype,"_orthoTop",void 0);P([F("orthoBottom")],$s.prototype,"_orthoBottom",void 0);Bt("BABYLON.DirectionalLight",$s)});var cd,xH=y(()=>{Xt();zt();We();Aa();ld();YR();er();xi.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new cd(n,b.Zero(),e));cd=class extends io{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 jt.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;Z.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()],cd.prototype,"shadowAngle",null);Bt("BABYLON.PointLight",cd)});var Kr,ML=y(()=>{Xt();zt();We();Aa();ld();YR();Xr();er();xi.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Kr(n,b.Zero(),b.Zero(),0,0,e));Kr=class n extends io{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=Z.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=Z.Zero(),this._projectionTextureProjectionLightMatrix=Z.Zero(),this._projectionTextureScalingMatrix=Z.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 jt.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;Z.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),Z.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);Z.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;Z.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()],Kr.prototype,"angle",null);P([F()],Kr.prototype,"innerAngle",null);P([F()],Kr.prototype,"shadowAngleScale",null);P([F()],Kr.prototype,"exponent",void 0);P([F()],Kr.prototype,"projectionTextureLightNear",null);P([F()],Kr.prototype,"projectionTextureLightFar",null);P([F()],Kr.prototype,"projectionTextureUpDirection",null);P([Wt("projectedLightTexture")],Kr.prototype,"_projectionTexture",void 0);Bt("BABYLON.SpotLight",Kr)});function RH(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||Me.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],u=[],h=[],m=[],g=[],p=[],_=[],v,E=[],T=[],S,A,R;if(e.length<2){let be=[],Ge=[];for(A=0;A0&&(k=D[R].subtract(D[R-1]).length(),O=k+p[S],m[S].push(O),p[S]=O),R++;i&&(R--,f.push(D[0].x,D[0].y,D[0].z),k=D[R].subtract(D[0]).length(),O=k+p[S],m[S].push(O),p[S]=O),E[S]=w+I,T[S]=M,M+=w+I}let N,B,V,q;for(A=0;A{let m=i[0].length,g=o,p=0,_=g._originalBuilderSideOrientation===Q.DOUBLESIDE?2:1;for(let v=1;v<=_;++v)for(let E=0;E{We();wi();Yi();Ar();hn();Me.CreateRibbon=RH;Q.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Ho(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function bH(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||Me.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{wi();Ar();hn();Me.CreateDisc=bH;Q.CreateDisc=(n,e,t,i=null,r,s)=>yL(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var Up,yH=y(()=>{We();Yi();wi();Q._GroundMeshParser=(n,e)=>Up.Parse(n,e);Up=class n extends Q{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),u=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,h=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(u+h*n.bufferWidth)*4,g=n.buffer[m]/255,p=n.buffer[m+1]/255,_=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(g=1-g,p=1-p,_=1-_);let E=g*o.r+p*o.g+_*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*E:d.y=n.minHeight-wt,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[u*3+1]>=n.minHeight,_=t[h*3+1]>=n.minHeight;g&&p&&_&&(e.push(d),e.push(u),e.push(h)),t[m*3+1]>=n.minHeight&&g&&_&&(e.push(m),e.push(d),e.push(h))}Me.ComputeNormals(t,e,i);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function CL(n,e={},t){let i=new Up(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,IL(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function PL(n,e,t=null){let i=new Q(n,t);return IH(e).applyToMesh(i,e.updatable),i}function DL(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 Ee(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,u=t.onReady;i=i||Oe.LastCreatedScene;let h=new Up(n,i);h._subdivisionsX=a,h._subdivisionsY=a,h._width=r,h._height=s,h._maxX=h._width/2,h._maxZ=h._height/2,h._minX=-h._maxX,h._minZ=-h._maxZ,h._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let g=(p,_,v)=>{CH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:_,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(h,d),u&&u(h,m),h._setReady(!0)};if(typeof e=="string"){i.addPendingData(h);let p=v=>{let E=v.width,T=v.height;if(i.isDisposed){i.removePendingData(h);return}let S=i==null?void 0:i.getEngine().resizeImageBitmap(v,E,T);g(S,E,T),i.removePendingData(h)},_=(v,E)=>{i.removePendingData(h),t.onError&&t.onError(v,E)};pe.LoadImage(e,p,_,i.offlineProvider)}else g(e.data,e.width,e.height);return h}var LL=y(()=>{We();Kt();wi();Ar();yH();Ni();Gi();Kn();hn();Me.CreateGround=IL;Me.CreateTiledGround=IH;Me.CreateGroundFromHeightMap=CH;Q.CreateGround=(n,e,t,i,r,s)=>CL(n,{width:e,height:t,subdivisions:i,updatable:s},r);Q.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>PL(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);Q.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>DL(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function KR(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],u=[2,0,1,3],h=d[c],m=u[f],g=[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],g=[-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]],I=[17,18,19,16],C=[22,23,20,21];for(;h>0;)R.unshift(R.pop()),I.unshift(I.pop()),h--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),g=g.concat(R).concat(M),t.push(I[0],I[2],I[3],I[0],I[1],I[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,I)=>R.concat(M*p[I%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,E=n.faceUV||new Array(6),T=n.faceColors,S=[];for(let R=0;R<6;R++)E[R]===void 0&&(E[R]=new Oi(0,0,1,1)),T&&T[R]===void 0&&(T[R]=new dt(1,1,1,1));for(let R=0;R<6;R++)if(r.push(E[R].z,It?1-E[R].w:E[R].w),r.push(E[R].x,It?1-E[R].w:E[R].w),r.push(E[R].x,It?1-E[R].y:E[R].y),r.push(E[R].z,It?1-E[R].y:E[R].y),T)for(let M=0;M<4;M++)S.push(T[R].r,T[R].g,T[R].b,T[R].a);Me._ComputeSides(v,_,t,i,r,n.frontUVs,n.backUVs);let A=new Me;if(A.indices=t,A.positions=_,A.normals=i,A.uvs=r,T){let R=v===Me.DOUBLESIDE?S.concat(S):S;A.colors=R}return A}function OL(n,e={},t=null){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,KR(e).applyToMesh(i,e.updatable),i}var NL=y(()=>{We();Kt();wi();Ar();hn();LL();Me.CreateBox=KR;Q.CreateBox=(n,e,t=null,i,r)=>OL(n,{size:e,sideOrientation:r,updatable:i},t)});function Vp(n){let e=n.pattern||Q.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,u=t*o/2,h=i*f/2,m=0,g=0,p=0,_=0,v=0,E=0;if(l>0||d>0){switch(p=-u,_=-h,v=u,E=h,r){case Q.CENTER:l/=2,p-=l,v+=l;break;case Q.LEFT:v+=l,m=-l/2;break;case Q.RIGHT:p-=l,m=l/2;break}switch(s){case Q.CENTER:d/=2,_-=d,E+=d;break;case Q.BOTTOM:E+=d,g=-d/2;break;case Q.TOP:_-=d,g=d/2;break}}let T=[],S=[],A=[];A[0]=[0,0,1,0,1,1,0,1],A[1]=[0,0,1,0,1,1,0,1],(e===Q.ROTATE_TILE||e===Q.ROTATE_ROW)&&(A[1]=[1,1,0,1,0,0,1,0]),(e===Q.FLIP_TILE||e===Q.FLIP_ROW)&&(A[1]=[1,0,0,0,0,1,1,1]),(e===Q.FLIP_N_ROTATE_TILE||e===Q.FLIP_N_ROTATE_ROW)&&(A[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],I=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===Q.CENTER||s===Q.TOP),N=d>0&&(s===Q.CENTER||s===Q.BOTTOM),B=l>0&&(r===Q.CENTER||r===Q.RIGHT),V=l>0&&(r===Q.CENTER||r===Q.LEFT),q,j,J,H,Y;if(O&&B&&(T.push(p+m,_+g,0),T.push(-u+m,_+g,0),T.push(-u+m,_+d+g,0),T.push(p+m,_+d+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=1-l/t,J=1-d/i,H=1,Y=1,q=[j,J,H,J,H,Y,j,Y],e===Q.ROTATE_ROW&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),e===Q.FLIP_ROW&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),e===Q.FLIP_N_ROTATE_ROW&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(T.push(u+m,_+g,0),T.push(v+m,_+g,0),T.push(v+m,_+d+g,0),T.push(u+m,_+d+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=0,J=1-d/i,H=l/t,Y=1,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW||e===Q.ROTATE_TILE&&o%2===0)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW||e===Q.FLIP_TILE&&o%2===0)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW||e===Q.FLIP_N_ROTATE_TILE&&o%2===0)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(T.push(p+m,h+g,0),T.push(-u+m,h+g,0),T.push(-u+m,E+g,0),T.push(p+m,E+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=1-l/t,J=0,H=1,Y=d/i,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW&&f%2===1||e===Q.ROTATE_TILE&&f%1===0)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW&&f%2===1||e===Q.FLIP_TILE&&f%2===0)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW&&f%2===1||e===Q.FLIP_N_ROTATE_TILE&&f%2===0)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(T.push(u+m,h+g,0),T.push(v+m,h+g,0),T.push(v+m,E+g,0),T.push(u+m,E+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=0,J=0,H=l/t,Y=d/i,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW&&f%2===1||e===Q.ROTATE_TILE&&(f+o)%2===1)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW&&f%2===1||e===Q.FLIP_TILE&&(f+o)%2===1)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW&&f%2===1||e===Q.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let de=[];j=0,J=1-d/i,H=1,Y=1,de[0]=[j,J,H,J,H,Y,j,Y],de[1]=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_TILE||e===Q.ROTATE_ROW)&&(de[1]=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_TILE||e===Q.FLIP_ROW)&&(de[1]=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_TILE||e===Q.FLIP_N_ROTATE_ROW)&&(de[1]=[j,1-J,H,1-J,H,1-Y,j,1-Y]);for(let me=0;me{wi();Ar();Me.CreateTiledPlane=Vp});function DH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||Q.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,u=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Oi(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new dt(1,1,1,1));let h=s/2,m=a/2,g=o/2,p=[];for(let O=0;O<2;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:u});for(let O=2;O<4;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:u});let _=d;d===Q.BOTTOM?_=Q.TOP:d===Q.TOP&&(_=Q.BOTTOM);for(let O=4;O<6;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:_,alignHorizontal:f,sideOrientation:u});let v=[],E=[],T=[],S=[],A=[],R=[],M=[],I=[],C,D=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+D)),D+=R[O].length,i){let B=i[O];for(let V=0;V{We();Kt();wi();Ar();wL();hn();jR=1,FL=-1;Me.CreateTiledBox=DH});function NH(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||Me.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,u=[],h=[],m=[],g=[];for(let _=0;_<=f;_++){let v=_/f,E=v*Math.PI*a;for(let T=0;T<=d;T++){let S=T/d,A=S*Math.PI*2*s,R=Z.RotationZ(-E),M=Z.RotationY(A),I=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(I,M),D=C.multiply(c),w=C.divide(c).normalize();h.push(D.x,D.y,D.z),m.push(w.x,w.y,w.z),g.push(S,It?1-v:v)}if(_>0){let T=h.length/3;for(let S=T-2*(d+1);S+d+21&&(u.push(S),u.push(S+1),u.push(S+d+1)),(_{We();wi();Ar();hn();Me.CreateSphere=NH;Q.CreateSphere=(n,e,t,i,r,s)=>BL(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function FH(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||Q.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,d=n.faceUV||new Array(3),u=n.faceColors,h=c!==1&&o?2:0,m=a?s:1,g=2+(1+h)*m,p;for(p=0;p{let ne=_e?t/2:i/2;if(ne===0)return;let ve,Ce,ue,be=_e?d[g-1]:d[0],Ge=null;u&&(Ge=_e?u[g-1]:u[0]);let qe=v.length/3,Ye=_e?e/2:-e/2,Ke=new b(0,Ye,0);v.push(Ke.x,Ke.y,Ke.z),E.push(0,_e?1:-1,0);let Zt=be.y+(be.w-be.y)*.5;T.push(be.x+(be.z-be.x)*.5,It?1-Zt:Zt),Ge&&S.push(Ge.r,Ge.g,Ge.b,Ge.a);let Ut=new Fe(.5,.5);for(ue=0;ue<=r;ue++){ve=Math.PI*2*ue*c/r;let Wi=Math.cos(-ve),oe=Math.sin(-ve);Ce=new b(Wi*ne,Ye,oe*ne);let Qi=new Fe(Wi*Ut.x+.5,oe*Ut.y+.5);v.push(Ce.x,Ce.y,Ce.z),E.push(0,_e?1:-1,0);let Ht=be.y+(be.w-be.y)*Qi.y;T.push(be.x+(be.z-be.x)*Qi.x,It?1-Ht:Ht),Ge&&S.push(Ge.r,Ge.g,Ge.b,Ge.a)}for(ue=0;ue{We();Kt();wi();Ar();Ks();zm();hn();Me.CreateCylinder=FH;Q.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ri))&&(a!==void 0&&(l=o||Q.DEFAULTSIDE,o=a),a=s,s=1),UL(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function UH(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||Me.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let u=d/o,h=d*Math.PI*2/o-Math.PI/2,m=Z.Translation(s/2,0,0).multiply(Z.RotationY(h));for(let g=0;g<=o;g++){let p=1-g/o,_=g*Math.PI*2/o+Math.PI,v=Math.cos(_),E=Math.sin(_),T=new b(v,E,0),S=T.scale(a/2),A=new Fe(u,p);S=b.TransformCoordinates(S,m),T=b.TransformNormal(T,m),t.push(S.x,S.y,S.z),i.push(T.x,T.y,T.z),r.push(A.x,It?1-A.y:A.y);let R=(d+1)%c,M=(g+1)%c;e.push(d*c+g),e.push(d*c+M),e.push(R*c+g),e.push(d*c+M),e.push(R*c+M),e.push(R*c+g)}}Me._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function VL(n,e={},t){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,UH(e).applyToMesh(i,e.updatable),i}var VH=y(()=>{We();wi();Ar();hn();Me.CreateTorus=UH;Q.CreateTorus=(n,e,t,i,r,s,a)=>VL(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function GH(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||Me.DEFAULTSIDE,u=p=>{let _=Math.cos(p),v=Math.sin(p),E=f/c*p,T=Math.cos(E),S=s*(2+T)*.5*_,A=s*(2+T)*v*.5,R=s*Math.sin(E)*.5;return new b(S,A,R)},h,m;for(h=0;h<=o;h++){let _=h%o/o*2*c*Math.PI,v=u(_),E=u(_+.01),T=E.subtract(v),S=E.add(v),A=b.Cross(T,S);for(S=b.Cross(A,T),A.normalize(),S.normalize(),m=0;m{We();wi();Ar();hn();Me.CreateTorusKnot=GH;Q.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>GL(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var Cc,kL=y(()=>{We();Lt();pp();wi();nv();$f();Yi();Ni();er();Q._instancedMeshFactory=(n,e)=>{let t=new Cc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};Cc=class extends Ir{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&&pe.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&&pe.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&&pe.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&&pe.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,L.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!==$t.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new Z);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{ns=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{We();ts();Bl=class extends Ae{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new Z,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 dd(n){let e=n.getVertexBuffers();if(!e)return null;let t=WH.get(n);if(!t)t=new Map,WH.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 ud(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 WH,Lv=y(()=>{WH=new WeakMap});var WL,Xo,zL=y(()=>{Dr();Ks();We();Yi();Xr();er();fd();Cu();Dv();Gi();Ol();es();Lv();WL={effect:null,subMesh:null},Xo=class n extends Bl{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 Z,this._cachedWorldViewProjectionMatrix=new Z,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 A,R,M,I;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,u=this._options.uniformBuffers,h=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(L.MatricesIndicesExtraKind),l.push(L.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new ns,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,g=e?e.morphTargetManager:null;if(g){let C=o.indexOf("#define UV1")!==-1,D=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,k=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=Nl(g,o,l,e,!0,k,w,C,D,O),g.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&&(Qn(d),Ll(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ri.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=dd(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,k)=>{d.push(`vp_${k}_info`)})),o.push("#define USE_VERTEX_PULLING");let D=(A=p.geometry)==null?void 0:A.getIndexBuffer();D&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),D.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),u=u.slice(),h=h.slice(),f=this.customShaderNameResolve(this.name,d,u,h,o,l));let _=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=_==null?void 0:_.effect)!=null?R:null,E=(M=_==null?void 0:_.defines)!=null?M:null,T=o.join(` -`),S=v;return E!==T&&(S=a.createEffect(f,{attributes:l,uniformsNames:d,uniformBuffersNames:u,samplers:h,defines:T,fallbacks:c,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousMorphTargets:m},shaderLanguage:this._options.shaderLanguage,extraInitializationsAsync:this._options.extraInitializationsAsync},a),r?i.setEffect(S,T,this._materialContext):_&&_.setEffect(S,T),this._onEffectCreatedObservable&&(WL.effect=S,WL.subMesh=(I=i!=null?i:e==null?void 0:e.subMeshes[0])!=null?I:null,this._onEffectCreatedObservable.notifyObservers(WL))),_._wasPreviouslyUsingInstances=!!t,S!=null&&S.isReady()?(v!==S&&s.resetCachedMaterial(),_._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 u=0;unew 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,je.FromArray(e.quaternions[s]));for(s in e.matrices)r.setMatrix(s,Z.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 wr;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 wr;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()})}};Xo.SnippetUrl="https://snippet.babylonjs.com";Xo.CreateFromSnippetAsync=Xo.ParseFromSnippetAsync;Bt("BABYLON.ShaderMaterial",Xo)});var zH,Qde,Pc=y(()=>{W();zH="bonesDeclaration",Qde=`#if NUM_BONE_INFLUENCERS>0 +Bad Bone Indices = `+m;return{skinned:!0,valid:s===0&&o===0&&m===0,report:g}}_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 pe.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(L.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(L.PositionKind),r=b.Zero(),s;for(s=0;s{let u=d.width,h=d.height,g=this.getEngine().createCanvas(u,h).getContext("2d");g.drawImage(d,0,0);let p=g.getImageData(0,0,u,h).data;this.applyDisplacementMapFromBuffer(p,u,h,t,i,s,a,o),r&&r(this)};return pe.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(L.PositionKind)||!this.isVerticesDataPresent(L.NormalKind)||!this.isVerticesDataPresent(L.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(L.PositionKind,!0,!0),f=this.getVerticesData(L.NormalKind),d=this.getVerticesData(L.UVKind),u=b.Zero(),h=b.Zero(),m=Fe.Zero();a=a||Fe.Zero(),o=o||new Fe(1,1);for(let g=0;g{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 u=0;u{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(L.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(L.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),u=b.Zero(),h=new Z,m=new Z,g=0,p;for(let _=0;_0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(a[g+p]*16),v,m),h.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[g+p],v>0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(c[g+p]*16),v,m),h.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[_],i._sourcePositions[_+1],i._sourcePositions[_+2],h,u),u.toArray(r,_),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[_],i._sourceNormals[_+1],i._sourceNormals[_+2],h,u),u.toArray(s,_)),h.reset()}return this.updateVerticesData(L.PositionKind,r),t&&this.updateVerticesData(L.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 Mv(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await $z(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),Zz())}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 I,C,D,w;return((C=(I=R.material)==null?void 0:I.uniqueId)!=null?C:-1)-((w=(D=M.material)==null?void 0:D.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,u=new Array,h=e[0].sideOrientation;for(l=0;lMath.max(I,C.start+C.count),0);if(a)if(R.material){let I=R.material;if(I instanceof Op){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:Me.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:g,transform:p}=m(e[0]);o&&(yield);let _=new Array(e.length-1);for(let R=1;R{throw $e("GroundMesh")};Q._GoldbergMeshParser=(n,e)=>{throw $e("GoldbergMesh")};Q._LinesMeshParser=(n,e)=>{throw $e("LinesMesh")};Q._GreasedLineMeshParser=(n,e)=>{throw $e("GreasedLineMesh")};Q._GreasedLineRibbonMeshParser=(n,e)=>{throw $e("GreasedLineRibbonMesh")};Q._TrailMeshParser=(n,e)=>{throw $e("TrailMesh")};Q._GaussianSplattingMeshParser=(n,e)=>{throw $e("GaussianSplattingMesh")};Q._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw $e("GaussianSplattingPartProxyMesh")};Q._GaussianSplattingCompoundMeshParser=(n,e)=>{throw $e("GaussianSplattingCompoundMesh")};Bt("BABYLON.Mesh",Q)});var wp,gL=y(()=>{wo();cc();Kn();wp=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===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=br.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:br.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){Iu();Wo=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}};Wo.EASINGMODE_EASEIN=0;Wo.EASINGMODE_EASEOUT=1;Wo.EASINGMODE_EASEINOUT=2;WR=class extends Wo{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)}},zR=class extends Wo{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 nd,vL=y(()=>{nd=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 EL,SL,TL,AL,xL,RL,zo,mt,sd=y(()=>{We();Kt();jn();er();vL();xa();zx();Cu();Dr();EL=Object.freeze(new je(0,0,0,0)),SL=Object.freeze(b.Zero()),TL=Object.freeze(Fe.Zero()),AL=Object.freeze(uc.Zero()),xL=Object.freeze(Ee.Black()),RL=Object.freeze(new dt(0,0,0,0)),zo={key:0,repeatCount:0,loopMode:2},mt=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 je?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof Fe?c=n.ANIMATIONTYPE_VECTOR2:s instanceof Ee?c=n.ANIMATIONTYPE_COLOR3:s instanceof dt?c=n.ANIMATIONTYPE_COLOR4:s instanceof uc&&(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 u=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!u||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[u],0,s,u.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let u=n._PrepareAnimation(e,r,s,a,o,l,c,f);return u?t.getScene().beginDirectHierarchyAnimation(t,i,[u],0,a,u.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,E;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,u=o._keys[d],h={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,g=u.frame;if(a.range){let T=o.getRange(a.range);T&&(m=T.from,g=T.to)}else m=(v=a.fromFrame)!=null?v:m,g=(E=a.toFrame)!=null?E:g;if(m!==f.frame&&(c=o.createKeyForFrame(m)),g!==u.frame&&(d=o.createKeyForFrame(g)),o._keys.length===1){let T=o._getKeyValue(o._keys[0]);h.referenceValue=T.clone?T.clone():T}else if(l<=f.frame){let T=o._getKeyValue(f.value);h.referenceValue=T.clone?T.clone():T}else if(l>=u.frame){let T=o._getKeyValue(u.value);h.referenceValue=T.clone?T.clone():T}else{zo.key=0;let T=o._interpolate(l,zo);h.referenceValue=T.clone?T.clone():T}o.dataType===n.ANIMATIONTYPE_QUATERNION?h.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(h.referenceValue.decompose(h.referenceScaling,h.referenceQuaternion,h.referencePosition),h.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,_=a.clipKeys?[]:null;for(let T=c;T<=d;T++){let S=o._keys[T];if((_||a.cloneOriginalAnimation)&&(S={frame:S.frame,value:S.value.clone?S.value.clone():S.value,inTangent:S.inTangent,outTangent:S.outTangent,interpolation:S.interpolation,lockedTangent:S.lockedTangent,easingFunction:S.easingFunction},_&&(p===Number.MAX_VALUE&&(p=S.frame),S.frame-=p,_.push(S))),!(T&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&S.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:S.value.decompose(h.keyScaling,h.keyQuaternion,h.keyPosition),h.keyPosition.subtractInPlace(h.referencePosition),h.keyScaling.divideInPlace(h.referenceScaling),h.referenceQuaternion.multiplyToRef(h.keyQuaternion,h.keyQuaternion),Z.ComposeToRef(h.keyScaling,h.keyQuaternion,h.keyPosition,S.value);break;case n.ANIMATIONTYPE_QUATERNION:h.referenceValue.multiplyToRef(S.value,S.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:S.value.subtractToRef(h.referenceValue,S.value);break;case n.ANIMATIONTYPE_SIZE:S.value.width-=h.referenceValue.width,S.value.height-=h.referenceValue.height;break;default:S.value-=h.referenceValue}}return _&&o.setKeys(_,!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 g=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>g-1)return i?void 0:this._getKeyValue(r[g-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,u=(e-a.frame)/d,h=a.easingFunction||this.getEasingFunction();switch(h&&(u=h.ease(u)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let g=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,u):this.floatInterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+g}break}case n.ANIMATIONTYPE_QUATERNION:{let g=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.quaternionInterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.addInPlace((t.offsetValue||EL).scale(t.repeatCount))}return g}case n.ANIMATIONTYPE_VECTOR3:{let g=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.vector3InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||SL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let g=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.vector2InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||TL).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,u);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,u).add((t.offsetValue||AL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let g=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.color3InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||xL).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let g=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),u):this.color4InterpolateFunction(l,c,u);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return g;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return g.add((t.offsetValue||RL).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,u,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?(Z.DecomposeLerpToRef(e,t,i,r),r):Z.DecomposeLerp(e,t,i):r?(Z.LerpToRef(e,t,i,r),r):Z.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=je.FromArray(o.values),o.values.length>=8){let u=je.FromArray(o.values.slice(4,8));u.equals(je.Zero())||(l=u)}if(o.values.length>=12){let u=je.FromArray(o.values.slice(8,12));u.equals(je.Zero())||(c=u)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=Z.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=Ee.FromArray(o.values),o.values[3]&&(l=Ee.FromArray(o.values[3])),o.values[4]&&(c=Ee.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=dt.FromArray(o.values),o.values[4]&&(l=dt.FromArray(o.values[4])),o.values[5]&&(c=dt.FromArray(o.values[5])),o.values[6]&&(f=dt.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 wr;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 wr;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()})}};mt._UniqueIdGenerator=0;mt.AllowMatricesInterpolation=!1;mt.AllowMatrixDecomposeForInterpolation=!0;mt.InheritOriginalValueFromActiveAnimations=!1;mt.SnippetUrl="https://snippet.babylonjs.com";mt.ANIMATIONTYPE_FLOAT=0;mt.ANIMATIONTYPE_VECTOR3=1;mt.ANIMATIONTYPE_QUATERNION=2;mt.ANIMATIONTYPE_MATRIX=3;mt.ANIMATIONTYPE_COLOR3=4;mt.ANIMATIONTYPE_COLOR4=7;mt.ANIMATIONTYPE_VECTOR2=5;mt.ANIMATIONTYPE_SIZE=6;mt.ANIMATIONLOOPMODE_RELATIVE=0;mt.ANIMATIONLOOPMODE_CYCLE=1;mt.ANIMATIONLOOPMODE_CONSTANT=2;mt.ANIMATIONLOOPMODE_YOYO=4;mt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;mt.CreateFromSnippetAsync=mt.ParseFromSnippetAsync;Bt("BABYLON.Animation",mt);xi._AnimationRangeFactory=(n,e,t)=>new nd(n,e,t)});var Fp,pH=y(()=>{_L();sd();Fp=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=mt.CreateAnimation("radius",mt.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=mt.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()}};Fp.EasingFunction=new WR(.3);Fp.EasingMode=Wo.EASINGMODE_EASEOUT});var ad,gH=y(()=>{_L();vi();wo();cc();We();sd();ad=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===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.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=br.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=mt.CreateAnimation("beta",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=mt.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=br.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}};ad.EasingFunction=new zR;ad.EasingMode=Wo.EASINGMODE_EASEINOUT;ad.IgnoreBoundsSizeMode=0;ad.FitFrustumSidesMode=1});var HR,bL,Qs,ML=y(()=>{Xt();zt();Dl();We();Kn();zm();xa();xi.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Qs(n,b.Zero(),e));HR=Z.Zero(),bL=je.Identity(),Qs=class n extends _t{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=wt,this._rotationEpsilon=wt,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=Z.Zero(),this._cameraTransformMatrix=Z.Zero(),this._cameraRotationMatrix=Z.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new je,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 je(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+=wt),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?Z.LookAtRHToRef(this.position,e,b.UpReadOnly,HR):Z.LookAtLHToRef(this.position,e,b.UpReadOnly,HR),HR.invert();let t=this.rotationQuaternion||bL;je.FromRotationMatrixToRef(HR,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()&&(je.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){Lt();Dr();Dl();is={},Bp=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=_t.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=st.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=is[i];if(r){let s=t[i],a=st.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=is[this.attached[i].getClassName()];if(r){let s=st.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var Cv,_H=y(()=>{Xt();zt();Ni();wo();Cv=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=pe.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,u;let l=o.event,c=l.pointerType==="touch";if(o.type!==at.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 h=l.movementX,m=l.movementY;this.onTouch(null,h,m),this._pointA=null,this._pointB=null}else{if(o.type!==at.POINTERDOWN&&o.type!==at.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((u=this._pointB)==null?void 0:u.pointerId)!==l.pointerId)return;if(o.type===at.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(h){}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===at.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===at.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(h){}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===at.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let h=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,h,m)}else if(this._pointA&&this._pointB){let h=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;h.x=l.clientX,h.y=l.clientY;let m=this._pointA.x-this._pointB.x,g=this._pointA.y-this._pointB.y,p=m*m+g*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,_),s=_,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE|at.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&&pe.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&pe.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()],Cv.prototype,"buttons",void 0)});var zu,vH=y(()=>{Xt();zt();_H();zu=class extends Cv{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()],zu.prototype,"pinchZoom",void 0);P([F()],zu.prototype,"multiTouchPanning",void 0);P([F()],zu.prototype,"multiTouchPanAndZoom",void 0)});var Ra,EH=y(()=>{Xt();zt();Fl();vH();Ra=class n extends zu{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()}};Ra.MinimumRadiusForPinch=.001;P([F()],Ra.prototype,"buttons",void 0);P([F()],Ra.prototype,"angularSensibilityX",void 0);P([F()],Ra.prototype,"angularSensibilityY",void 0);P([F()],Ra.prototype,"pinchPrecision",void 0);P([F()],Ra.prototype,"pinchDeltaPercentage",void 0);P([F()],Ra.prototype,"useNaturalPinchZoom",void 0);P([F()],Ra.prototype,"panningSensibility",void 0);is.ArcRotateCameraPointersInput=Ra});var $s,SH=y(()=>{Xt();zt();Fl();mR();Ni();$s=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=pe.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===Fo.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{Xt();zt();Fl();wo();jm();We();Kn();pR();jn();Ni();Qde=40,od=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=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Bo.DOM_DELTA_LINE?Qde: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=Ft(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,at.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=Co.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,Z.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){EH();SH();TH();Fl();XR=class extends Bp{constructor(e){super(e)}addMouseWheel(){return this.add(new od),this}addPointers(){return this.add(new Ra),this}addKeyboard(){return this.add(new $s),this}}});function $de(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 Jde(n,e){return Math.acos(n/e)}function rs(n,e){return isNaN(n)?e:n}var Ri,YR=y(()=>{Xt();zt();vi();We();jn();xa();wi();gL();pH();gH();Dl();ML();AH();Kn();Ni();er();xi.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new Ri(n,0,0,1,b.Zero(),e));Ri=class n extends Qs{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 Z,this._upToYMatrix=new Z,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){Z.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),Z.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 Fp,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 ad,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 wp,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 Z,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),u=Math.sin(this.alpha),h=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let g=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*h,this.radius*u*m),g.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,g,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 XR(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>wt&&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,u,h;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=rs(e,this._goalAlpha),this._goalBeta=rs(t,this._goalBeta),this._goalRadius=rs(i,this._goalRadius),this._goalTarget.set(rs(r.x,this._goalTarget.x),rs(r.y,this._goalTarget.y),rs(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(rs(s.x,this._goalTargetScreenOffset.x),rs(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=Ft(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=Ft(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=Ft(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(u=this.upperRadiusLimit)!=null?u:1/0),this._goalTarget.y=Ft(this._goalTarget.y,(h=this.lowerTargetYLimit)!=null?h:-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=pe.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=$de(this._computationVector),this.beta=Jde(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=Q.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===_t.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=Q.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=Q.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case _t.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case _t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case _t.RIG_MODE_STEREOSCOPIC_OVERUNDER:case _t.RIG_MODE_STEREOSCOPIC_INTERLACED:case _t.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case _t.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 _t.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case _t.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case _t.RIG_MODE_STEREOSCOPIC_OVERUNDER:case _t.RIG_MODE_STEREOSCOPIC_INTERLACED:case _t.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case _t.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)),u=f*Math.sqrt(1+1/(o*o));return Math.max(d,u)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],Ri.prototype,"alpha",void 0);P([F()],Ri.prototype,"beta",void 0);P([F()],Ri.prototype,"radius",void 0);P([F()],Ri.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Jr("target")],Ri.prototype,"_target",void 0);P([Kx("targetHost")],Ri.prototype,"_targetHost",void 0);P([F()],Ri.prototype,"inertialAlphaOffset",void 0);P([F()],Ri.prototype,"inertialBetaOffset",void 0);P([F()],Ri.prototype,"inertialRadiusOffset",void 0);P([F()],Ri.prototype,"lowerAlphaLimit",void 0);P([F()],Ri.prototype,"upperAlphaLimit",void 0);P([F()],Ri.prototype,"lowerBetaLimit",void 0);P([F()],Ri.prototype,"upperBetaLimit",void 0);P([F()],Ri.prototype,"lowerRadiusLimit",void 0);P([F()],Ri.prototype,"upperRadiusLimit",void 0);P([F()],Ri.prototype,"lowerTargetYLimit",void 0);P([F()],Ri.prototype,"inertialPanningX",void 0);P([F()],Ri.prototype,"inertialPanningY",void 0);P([F()],Ri.prototype,"pinchToPanMaxDistance",void 0);P([F()],Ri.prototype,"panningDistanceLimit",void 0);P([Jr()],Ri.prototype,"panningOriginTarget",void 0);P([F()],Ri.prototype,"panningInertia",void 0);P([F()],Ri.prototype,"zoomToMouseLocation",null);P([F()],Ri.prototype,"zoomOnFactor",void 0);P([Jm()],Ri.prototype,"targetScreenOffset",void 0);P([F()],Ri.prototype,"allowUpsideDown",void 0);P([F()],Ri.prototype,"useInputToRestoreState",void 0);P([F()],Ri.prototype,"restoreStateInterpolationFactor",void 0);Bt("BABYLON.ArcRotateCamera",Ri)});var jt,ld=y(()=>{Xt();zt();We();Kt();xa();Yf();er();av();Dr();jt=class n extends xi{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 Ee(1,1,1),this.specular=new Ee(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 Tr(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,Ln.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Ln.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Ln.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Ln.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=st.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=st.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 st.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=xi.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=st.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}};jt.FALLOFF_DEFAULT=Qt.FALLOFF_DEFAULT;jt.FALLOFF_PHYSICAL=Qt.FALLOFF_PHYSICAL;jt.FALLOFF_GLTF=Qt.FALLOFF_GLTF;jt.FALLOFF_STANDARD=Qt.FALLOFF_STANDARD;jt.LIGHTMAP_DEFAULT=Qt.LIGHTMAP_DEFAULT;jt.LIGHTMAP_SPECULAR=Qt.LIGHTMAP_SPECULAR;jt.LIGHTMAP_SHADOWSONLY=Qt.LIGHTMAP_SHADOWSONLY;jt.INTENSITYMODE_AUTOMATIC=Qt.INTENSITYMODE_AUTOMATIC;jt.INTENSITYMODE_LUMINOUSPOWER=Qt.INTENSITYMODE_LUMINOUSPOWER;jt.INTENSITYMODE_LUMINOUSINTENSITY=Qt.INTENSITYMODE_LUMINOUSINTENSITY;jt.INTENSITYMODE_ILLUMINANCE=Qt.INTENSITYMODE_ILLUMINANCE;jt.INTENSITYMODE_LUMINANCE=Qt.INTENSITYMODE_LUMINANCE;jt.LIGHTTYPEID_POINTLIGHT=Qt.LIGHTTYPEID_POINTLIGHT;jt.LIGHTTYPEID_DIRECTIONALLIGHT=Qt.LIGHTTYPEID_DIRECTIONALLIGHT;jt.LIGHTTYPEID_SPOTLIGHT=Qt.LIGHTTYPEID_SPOTLIGHT;jt.LIGHTTYPEID_HEMISPHERICLIGHT=Qt.LIGHTTYPEID_HEMISPHERICLIGHT;jt.LIGHTTYPEID_RECT_AREALIGHT=Qt.LIGHTTYPEID_RECT_AREALIGHT;P([yr()],jt.prototype,"diffuse",void 0);P([yr()],jt.prototype,"specular",void 0);P([F()],jt.prototype,"falloffType",void 0);P([F()],jt.prototype,"intensity",void 0);P([F()],jt.prototype,"range",null);P([F()],jt.prototype,"intensityMode",null);P([F()],jt.prototype,"radius",null);P([F()],jt.prototype,"_renderPriority",void 0);P([ce("_reorderLightsInScene")],jt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],jt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],jt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],jt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],jt.prototype,"_lightmapMode",void 0)});var ba,KR=y(()=>{Xt();zt();We();Kt();xa();ld();er();xi.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new ba(n,b.Zero(),e));ba=class extends jt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new Ee(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=Z.Identity()),this._worldMatrix}getTypeID(){return jt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([yr()],ba.prototype,"groundColor",void 0);P([Jr()],ba.prototype,"direction",void 0);Bt("BABYLON.HemisphericLight",ba)});var io,jR=y(()=>{Xt();zt();We();ld();zm();io=class extends jt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=Z.Identity(),this._projectionMatrix=Z.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,Xs.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=Z.Identity()),Z.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),Z.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([Jr()],io.prototype,"position",null);P([Jr()],io.prototype,"direction",null);P([F()],io.prototype,"shadowMinZ",null);P([F()],io.prototype,"shadowMaxZ",null)});var Js,xH=y(()=>{Xt();zt();We();xa();ld();jR();er();xi.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new Js(n,b.Zero(),e));Js=class extends io{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 jt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;Z.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,u=-Number.MAX_VALUE;for(let h=0;hthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zu&&(u=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=u)}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;Z.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()],Js.prototype,"shadowFrustumSize",null);P([F()],Js.prototype,"shadowOrthoScale",null);P([F()],Js.prototype,"autoUpdateExtends",void 0);P([F()],Js.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],Js.prototype,"_orthoLeft",void 0);P([F("orthoRight")],Js.prototype,"_orthoRight",void 0);P([F("orthoTop")],Js.prototype,"_orthoTop",void 0);P([F("orthoBottom")],Js.prototype,"_orthoBottom",void 0);Bt("BABYLON.DirectionalLight",Js)});var cd,RH=y(()=>{Xt();zt();We();xa();ld();jR();er();xi.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new cd(n,b.Zero(),e));cd=class extends io{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 jt.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;Z.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()],cd.prototype,"shadowAngle",null);Bt("BABYLON.PointLight",cd)});var Kr,yL=y(()=>{Xt();zt();We();xa();ld();jR();Xr();er();xi.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Kr(n,b.Zero(),b.Zero(),0,0,e));Kr=class n extends io{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=Z.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=Z.Zero(),this._projectionTextureProjectionLightMatrix=Z.Zero(),this._projectionTextureScalingMatrix=Z.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 jt.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;Z.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),Z.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);Z.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;Z.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()],Kr.prototype,"angle",null);P([F()],Kr.prototype,"innerAngle",null);P([F()],Kr.prototype,"shadowAngleScale",null);P([F()],Kr.prototype,"exponent",void 0);P([F()],Kr.prototype,"projectionTextureLightNear",null);P([F()],Kr.prototype,"projectionTextureLightFar",null);P([F()],Kr.prototype,"projectionTextureUpDirection",null);P([Wt("projectedLightTexture")],Kr.prototype,"_projectionTexture",void 0);Bt("BABYLON.SpotLight",Kr)});function bH(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||Me.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],u=[],h=[],m=[],g=[],p=[],_=[],v,E=[],T=[],S,A,R;if(e.length<2){let be=[],Ge=[];for(A=0;A0&&(k=D[R].subtract(D[R-1]).length(),O=k+p[S],m[S].push(O),p[S]=O),R++;i&&(R--,f.push(D[0].x,D[0].y,D[0].z),k=D[R].subtract(D[0]).length(),O=k+p[S],m[S].push(O),p[S]=O),E[S]=w+I,T[S]=M,M+=w+I}let N,B,V,q;for(A=0;A{let m=i[0].length,g=o,p=0,_=g._originalBuilderSideOrientation===Q.DOUBLESIDE?2:1;for(let v=1;v<=_;++v)for(let E=0;E{We();wi();Yi();Ar();hn();Me.CreateRibbon=bH;Q.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Ho(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function MH(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||Me.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{wi();Ar();hn();Me.CreateDisc=MH;Q.CreateDisc=(n,e,t,i=null,r,s)=>IL(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var Up,IH=y(()=>{We();Yi();wi();Q._GroundMeshParser=(n,e)=>Up.Parse(n,e);Up=class n extends Q{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),u=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,h=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(u+h*n.bufferWidth)*4,g=n.buffer[m]/255,p=n.buffer[m+1]/255,_=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(g=1-g,p=1-p,_=1-_);let E=g*o.r+p*o.g+_*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*E:d.y=n.minHeight-wt,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[u*3+1]>=n.minHeight,_=t[h*3+1]>=n.minHeight;g&&p&&_&&(e.push(d),e.push(u),e.push(h)),t[m*3+1]>=n.minHeight&&g&&_&&(e.push(m),e.push(d),e.push(h))}Me.ComputeNormals(t,e,i);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function PL(n,e={},t){let i=new Up(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,CL(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function DL(n,e,t=null){let i=new Q(n,t);return CH(e).applyToMesh(i,e.updatable),i}function LL(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 Ee(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,u=t.onReady;i=i||Oe.LastCreatedScene;let h=new Up(n,i);h._subdivisionsX=a,h._subdivisionsY=a,h._width=r,h._height=s,h._maxX=h._width/2,h._maxZ=h._height/2,h._minX=-h._maxX,h._minZ=-h._maxZ,h._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let g=(p,_,v)=>{PH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:_,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(h,d),u&&u(h,m),h._setReady(!0)};if(typeof e=="string"){i.addPendingData(h);let p=v=>{let E=v.width,T=v.height;if(i.isDisposed){i.removePendingData(h);return}let S=i==null?void 0:i.getEngine().resizeImageBitmap(v,E,T);g(S,E,T),i.removePendingData(h)},_=(v,E)=>{i.removePendingData(h),t.onError&&t.onError(v,E)};pe.LoadImage(e,p,_,i.offlineProvider)}else g(e.data,e.width,e.height);return h}var OL=y(()=>{We();Kt();wi();Ar();IH();Ni();Gi();Kn();hn();Me.CreateGround=CL;Me.CreateTiledGround=CH;Me.CreateGroundFromHeightMap=PH;Q.CreateGround=(n,e,t,i,r,s)=>PL(n,{width:e,height:t,subdivisions:i,updatable:s},r);Q.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>DL(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);Q.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>LL(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function qR(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],u=[2,0,1,3],h=d[c],m=u[f],g=[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],g=[-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]],I=[17,18,19,16],C=[22,23,20,21];for(;h>0;)R.unshift(R.pop()),I.unshift(I.pop()),h--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),g=g.concat(R).concat(M),t.push(I[0],I[2],I[3],I[0],I[1],I[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,I)=>R.concat(M*p[I%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,E=n.faceUV||new Array(6),T=n.faceColors,S=[];for(let R=0;R<6;R++)E[R]===void 0&&(E[R]=new Oi(0,0,1,1)),T&&T[R]===void 0&&(T[R]=new dt(1,1,1,1));for(let R=0;R<6;R++)if(r.push(E[R].z,It?1-E[R].w:E[R].w),r.push(E[R].x,It?1-E[R].w:E[R].w),r.push(E[R].x,It?1-E[R].y:E[R].y),r.push(E[R].z,It?1-E[R].y:E[R].y),T)for(let M=0;M<4;M++)S.push(T[R].r,T[R].g,T[R].b,T[R].a);Me._ComputeSides(v,_,t,i,r,n.frontUVs,n.backUVs);let A=new Me;if(A.indices=t,A.positions=_,A.normals=i,A.uvs=r,T){let R=v===Me.DOUBLESIDE?S.concat(S):S;A.colors=R}return A}function NL(n,e={},t=null){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,qR(e).applyToMesh(i,e.updatable),i}var wL=y(()=>{We();Kt();wi();Ar();hn();OL();Me.CreateBox=qR;Q.CreateBox=(n,e,t=null,i,r)=>NL(n,{size:e,sideOrientation:r,updatable:i},t)});function Vp(n){let e=n.pattern||Q.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,u=t*o/2,h=i*f/2,m=0,g=0,p=0,_=0,v=0,E=0;if(l>0||d>0){switch(p=-u,_=-h,v=u,E=h,r){case Q.CENTER:l/=2,p-=l,v+=l;break;case Q.LEFT:v+=l,m=-l/2;break;case Q.RIGHT:p-=l,m=l/2;break}switch(s){case Q.CENTER:d/=2,_-=d,E+=d;break;case Q.BOTTOM:E+=d,g=-d/2;break;case Q.TOP:_-=d,g=d/2;break}}let T=[],S=[],A=[];A[0]=[0,0,1,0,1,1,0,1],A[1]=[0,0,1,0,1,1,0,1],(e===Q.ROTATE_TILE||e===Q.ROTATE_ROW)&&(A[1]=[1,1,0,1,0,0,1,0]),(e===Q.FLIP_TILE||e===Q.FLIP_ROW)&&(A[1]=[1,0,0,0,0,1,1,1]),(e===Q.FLIP_N_ROTATE_TILE||e===Q.FLIP_N_ROTATE_ROW)&&(A[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],I=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===Q.CENTER||s===Q.TOP),N=d>0&&(s===Q.CENTER||s===Q.BOTTOM),B=l>0&&(r===Q.CENTER||r===Q.RIGHT),V=l>0&&(r===Q.CENTER||r===Q.LEFT),q,j,J,H,Y;if(O&&B&&(T.push(p+m,_+g,0),T.push(-u+m,_+g,0),T.push(-u+m,_+d+g,0),T.push(p+m,_+d+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=1-l/t,J=1-d/i,H=1,Y=1,q=[j,J,H,J,H,Y,j,Y],e===Q.ROTATE_ROW&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),e===Q.FLIP_ROW&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),e===Q.FLIP_N_ROTATE_ROW&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(T.push(u+m,_+g,0),T.push(v+m,_+g,0),T.push(v+m,_+d+g,0),T.push(u+m,_+d+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=0,J=1-d/i,H=l/t,Y=1,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW||e===Q.ROTATE_TILE&&o%2===0)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW||e===Q.FLIP_TILE&&o%2===0)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW||e===Q.FLIP_N_ROTATE_TILE&&o%2===0)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(T.push(p+m,h+g,0),T.push(-u+m,h+g,0),T.push(-u+m,E+g,0),T.push(p+m,E+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=1-l/t,J=0,H=1,Y=d/i,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW&&f%2===1||e===Q.ROTATE_TILE&&f%1===0)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW&&f%2===1||e===Q.FLIP_TILE&&f%2===0)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW&&f%2===1||e===Q.FLIP_N_ROTATE_TILE&&f%2===0)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(T.push(u+m,h+g,0),T.push(v+m,h+g,0),T.push(v+m,E+g,0),T.push(u+m,E+g,0),I.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,j=0,J=0,H=l/t,Y=d/i,q=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_ROW&&f%2===1||e===Q.ROTATE_TILE&&(f+o)%2===1)&&(q=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_ROW&&f%2===1||e===Q.FLIP_TILE&&(f+o)%2===1)&&(q=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_ROW&&f%2===1||e===Q.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(q=[j,1-J,H,1-J,H,1-Y,j,1-Y]),R=R.concat(q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),S.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let de=[];j=0,J=1-d/i,H=1,Y=1,de[0]=[j,J,H,J,H,Y,j,Y],de[1]=[j,J,H,J,H,Y,j,Y],(e===Q.ROTATE_TILE||e===Q.ROTATE_ROW)&&(de[1]=[1-j,1-J,1-H,1-J,1-H,1-Y,1-j,1-Y]),(e===Q.FLIP_TILE||e===Q.FLIP_ROW)&&(de[1]=[1-j,J,1-H,J,1-H,Y,1-j,Y]),(e===Q.FLIP_N_ROTATE_TILE||e===Q.FLIP_N_ROTATE_ROW)&&(de[1]=[j,1-J,H,1-J,H,1-Y,j,1-Y]);for(let me=0;me{wi();Ar();Me.CreateTiledPlane=Vp});function LH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||Q.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,u=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Oi(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new dt(1,1,1,1));let h=s/2,m=a/2,g=o/2,p=[];for(let O=0;O<2;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:u});for(let O=2;O<4;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:u});let _=d;d===Q.BOTTOM?_=Q.TOP:d===Q.TOP&&(_=Q.BOTTOM);for(let O=4;O<6;O++)p[O]=Vp({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:_,alignHorizontal:f,sideOrientation:u});let v=[],E=[],T=[],S=[],A=[],R=[],M=[],I=[],C,D=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+D)),D+=R[O].length,i){let B=i[O];for(let V=0;V{We();Kt();wi();Ar();FL();hn();ZR=1,BL=-1;Me.CreateTiledBox=LH});function wH(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||Me.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,u=[],h=[],m=[],g=[];for(let _=0;_<=f;_++){let v=_/f,E=v*Math.PI*a;for(let T=0;T<=d;T++){let S=T/d,A=S*Math.PI*2*s,R=Z.RotationZ(-E),M=Z.RotationY(A),I=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(I,M),D=C.multiply(c),w=C.divide(c).normalize();h.push(D.x,D.y,D.z),m.push(w.x,w.y,w.z),g.push(S,It?1-v:v)}if(_>0){let T=h.length/3;for(let S=T-2*(d+1);S+d+21&&(u.push(S),u.push(S+1),u.push(S+d+1)),(_{We();wi();Ar();hn();Me.CreateSphere=wH;Q.CreateSphere=(n,e,t,i,r,s)=>UL(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function BH(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||Q.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,d=n.faceUV||new Array(3),u=n.faceColors,h=c!==1&&o?2:0,m=a?s:1,g=2+(1+h)*m,p;for(p=0;p{let ne=_e?t/2:i/2;if(ne===0)return;let ve,Ce,ue,be=_e?d[g-1]:d[0],Ge=null;u&&(Ge=_e?u[g-1]:u[0]);let qe=v.length/3,Ye=_e?e/2:-e/2,Ke=new b(0,Ye,0);v.push(Ke.x,Ke.y,Ke.z),E.push(0,_e?1:-1,0);let Zt=be.y+(be.w-be.y)*.5;T.push(be.x+(be.z-be.x)*.5,It?1-Zt:Zt),Ge&&S.push(Ge.r,Ge.g,Ge.b,Ge.a);let Ut=new Fe(.5,.5);for(ue=0;ue<=r;ue++){ve=Math.PI*2*ue*c/r;let Wi=Math.cos(-ve),oe=Math.sin(-ve);Ce=new b(Wi*ne,Ye,oe*ne);let Qi=new Fe(Wi*Ut.x+.5,oe*Ut.y+.5);v.push(Ce.x,Ce.y,Ce.z),E.push(0,_e?1:-1,0);let Ht=be.y+(be.w-be.y)*Qi.y;T.push(be.x+(be.z-be.x)*Qi.x,It?1-Ht:Ht),Ge&&S.push(Ge.r,Ge.g,Ge.b,Ge.a)}for(ue=0;ue{We();Kt();wi();Ar();js();zm();hn();Me.CreateCylinder=BH;Q.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ri))&&(a!==void 0&&(l=o||Q.DEFAULTSIDE,o=a),a=s,s=1),VL(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function VH(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||Me.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let u=d/o,h=d*Math.PI*2/o-Math.PI/2,m=Z.Translation(s/2,0,0).multiply(Z.RotationY(h));for(let g=0;g<=o;g++){let p=1-g/o,_=g*Math.PI*2/o+Math.PI,v=Math.cos(_),E=Math.sin(_),T=new b(v,E,0),S=T.scale(a/2),A=new Fe(u,p);S=b.TransformCoordinates(S,m),T=b.TransformNormal(T,m),t.push(S.x,S.y,S.z),i.push(T.x,T.y,T.z),r.push(A.x,It?1-A.y:A.y);let R=(d+1)%c,M=(g+1)%c;e.push(d*c+g),e.push(d*c+M),e.push(R*c+g),e.push(d*c+M),e.push(R*c+M),e.push(R*c+g)}}Me._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function GL(n,e={},t){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,VH(e).applyToMesh(i,e.updatable),i}var GH=y(()=>{We();wi();Ar();hn();Me.CreateTorus=VH;Q.CreateTorus=(n,e,t,i,r,s,a)=>GL(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function kH(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||Me.DEFAULTSIDE,u=p=>{let _=Math.cos(p),v=Math.sin(p),E=f/c*p,T=Math.cos(E),S=s*(2+T)*.5*_,A=s*(2+T)*v*.5,R=s*Math.sin(E)*.5;return new b(S,A,R)},h,m;for(h=0;h<=o;h++){let _=h%o/o*2*c*Math.PI,v=u(_),E=u(_+.01),T=E.subtract(v),S=E.add(v),A=b.Cross(T,S);for(S=b.Cross(A,T),A.normalize(),S.normalize(),m=0;m{We();wi();Ar();hn();Me.CreateTorusKnot=kH;Q.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>kL(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var Cc,WL=y(()=>{We();Lt();pp();wi();nv();$f();Yi();Ni();er();Q._instancedMeshFactory=(n,e)=>{let t=new Cc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};Cc=class extends Ir{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&&pe.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&&pe.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&&pe.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&&pe.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,L.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!==$t.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new Z);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{ns=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{We();ts();Bl=class extends Ae{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new Z,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 dd(n){let e=n.getVertexBuffers();if(!e)return null;let t=zH.get(n);if(!t)t=new Map,zH.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 ud(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 zH,Lv=y(()=>{zH=new WeakMap});var zL,Xo,HL=y(()=>{Dr();js();We();Yi();Xr();er();fd();Cu();Dv();Gi();Ol();es();Lv();zL={effect:null,subMesh:null},Xo=class n extends Bl{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 Z,this._cachedWorldViewProjectionMatrix=new Z,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 A,R,M,I;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,u=this._options.uniformBuffers,h=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(L.MatricesIndicesExtraKind),l.push(L.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new ns,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,g=e?e.morphTargetManager:null;if(g){let C=o.indexOf("#define UV1")!==-1,D=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,k=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=Nl(g,o,l,e,!0,k,w,C,D,O),g.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&&(Qn(d),Ll(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ri.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=dd(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,k)=>{d.push(`vp_${k}_info`)})),o.push("#define USE_VERTEX_PULLING");let D=(A=p.geometry)==null?void 0:A.getIndexBuffer();D&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),D.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),u=u.slice(),h=h.slice(),f=this.customShaderNameResolve(this.name,d,u,h,o,l));let _=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=_==null?void 0:_.effect)!=null?R:null,E=(M=_==null?void 0:_.defines)!=null?M:null,T=o.join(` +`),S=v;return E!==T&&(S=a.createEffect(f,{attributes:l,uniformsNames:d,uniformBuffersNames:u,samplers:h,defines:T,fallbacks:c,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousMorphTargets:m},shaderLanguage:this._options.shaderLanguage,extraInitializationsAsync:this._options.extraInitializationsAsync},a),r?i.setEffect(S,T,this._materialContext):_&&_.setEffect(S,T),this._onEffectCreatedObservable&&(zL.effect=S,zL.subMesh=(I=i!=null?i:e==null?void 0:e.subMeshes[0])!=null?I:null,this._onEffectCreatedObservable.notifyObservers(zL))),_._wasPreviouslyUsingInstances=!!t,S!=null&&S.isReady()?(v!==S&&s.resetCachedMaterial(),_._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 u=0;unew 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,je.FromArray(e.quaternions[s]));for(s in e.matrices)r.setMatrix(s,Z.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 wr;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 wr;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()})}};Xo.SnippetUrl="https://snippet.babylonjs.com";Xo.CreateFromSnippetAsync=Xo.ParseFromSnippetAsync;Bt("BABYLON.ShaderMaterial",Xo)});var HH,eue,Pc=y(()=>{W();HH="bonesDeclaration",eue=`#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 -`;x.IncludesShadersStoreWGSL[zH]||(x.IncludesShadersStoreWGSL[zH]=Qde)});var HH,$de,Dc=y(()=>{W();HH="bakedVertexAnimationDeclaration",$de=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStoreWGSL[HH]||(x.IncludesShadersStoreWGSL[HH]=eue)});var XH,tue,Dc=y(()=>{W();XH="bakedVertexAnimationDeclaration",tue=`#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 -`;x.IncludesShadersStoreWGSL[HH]||(x.IncludesShadersStoreWGSL[HH]=$de)});var XH,Jde,Lc=y(()=>{W();XH="clipPlaneVertexDeclaration",Jde=`#ifdef CLIPPLANE +`;x.IncludesShadersStoreWGSL[XH]||(x.IncludesShadersStoreWGSL[XH]=tue)});var YH,iue,Lc=y(()=>{W();YH="clipPlaneVertexDeclaration",iue=`#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 -`;x.IncludesShadersStoreWGSL[XH]||(x.IncludesShadersStoreWGSL[XH]=Jde)});var YH,eue,Ov=y(()=>{W();YH="fogVertexDeclaration",eue=`#ifdef FOG +`;x.IncludesShadersStoreWGSL[YH]||(x.IncludesShadersStoreWGSL[YH]=iue)});var KH,rue,Ov=y(()=>{W();KH="fogVertexDeclaration",rue=`#ifdef FOG varying vFogDistance: vec3f; #endif -`;x.IncludesShadersStoreWGSL[YH]||(x.IncludesShadersStoreWGSL[YH]=eue)});var KH,tue,hd=y(()=>{W();KH="instancesDeclaration",tue=`#ifdef INSTANCES +`;x.IncludesShadersStoreWGSL[KH]||(x.IncludesShadersStoreWGSL[KH]=rue)});var jH,nue,hd=y(()=>{W();jH="instancesDeclaration",nue=`#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 -`;x.IncludesShadersStoreWGSL[KH]||(x.IncludesShadersStoreWGSL[KH]=tue)});var jH,iue,Oc=y(()=>{W();jH="instancesVertex",iue=`#ifdef INSTANCES +`;x.IncludesShadersStoreWGSL[jH]||(x.IncludesShadersStoreWGSL[jH]=nue)});var qH,sue,Oc=y(()=>{W();qH="instancesVertex",sue=`#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 -`;x.IncludesShadersStoreWGSL[jH]||(x.IncludesShadersStoreWGSL[jH]=iue)});var qH,rue,Nc=y(()=>{W();qH="bonesVertex",rue=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStoreWGSL[qH]||(x.IncludesShadersStoreWGSL[qH]=sue)});var ZH,aue,Nc=y(()=>{W();ZH="bonesVertex",aue=`#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 -`;x.IncludesShadersStoreWGSL[qH]||(x.IncludesShadersStoreWGSL[qH]=rue)});var ZH,nue,wc=y(()=>{W();ZH="bakedVertexAnimation",nue=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStoreWGSL[ZH]||(x.IncludesShadersStoreWGSL[ZH]=aue)});var QH,oue,wc=y(()=>{W();QH="bakedVertexAnimation",oue=`#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 -`;x.IncludesShadersStoreWGSL[ZH]||(x.IncludesShadersStoreWGSL[ZH]=nue)});var QH,sue,Fc=y(()=>{W();QH="clipPlaneVertex",sue=`#ifdef CLIPPLANE +`;x.IncludesShadersStoreWGSL[QH]||(x.IncludesShadersStoreWGSL[QH]=oue)});var $H,lue,Fc=y(()=>{W();$H="clipPlaneVertex",lue=`#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 -`;x.IncludesShadersStoreWGSL[QH]||(x.IncludesShadersStoreWGSL[QH]=sue)});var $H,aue,Nv=y(()=>{W();$H="fogVertex",aue=`#ifdef FOG +`;x.IncludesShadersStoreWGSL[$H]||(x.IncludesShadersStoreWGSL[$H]=lue)});var JH,cue,Nv=y(()=>{W();JH="fogVertex",cue=`#ifdef FOG #ifdef SCENE_UBO vertexOutputs.vFogDistance=(scene.view*worldPos).xyz; #else vertexOutputs.vFogDistance=(uniforms.view*worldPos).xyz; #endif #endif -`;x.IncludesShadersStoreWGSL[$H]||(x.IncludesShadersStoreWGSL[$H]=aue)});var JH,oue,wv=y(()=>{W();JH="vertexColorMixing",oue=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;x.IncludesShadersStoreWGSL[JH]||(x.IncludesShadersStoreWGSL[JH]=cue)});var e4,fue,wv=y(()=>{W();e4="vertexColorMixing",fue=`#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 -`;x.IncludesShadersStoreWGSL[JH]||(x.IncludesShadersStoreWGSL[JH]=oue)});var t4={};Be(t4,{colorVertexShaderWGSL:()=>lue});var HL,e4,lue,i4=y(()=>{W();Pc();Dc();Lc();Ov();hd();Oc();Nc();wc();Fc();Nv();wv();HL="colorVertexShader",e4=`attribute position: vec3f; +`;x.IncludesShadersStoreWGSL[e4]||(x.IncludesShadersStoreWGSL[e4]=fue)});var i4={};Be(i4,{colorVertexShaderWGSL:()=>due});var XL,t4,due,r4=y(()=>{W();Pc();Dc();Lc();Ov();hd();Oc();Nc();wc();Fc();Nv();wv();XL="colorVertexShader",t4=`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 -}`;x.ShadersStoreWGSL[HL]||(x.ShadersStoreWGSL[HL]=e4);lue={name:HL,shader:e4}});var r4,cue,Bc=y(()=>{W();r4="clipPlaneFragmentDeclaration",cue=`#ifdef CLIPPLANE +}`;x.ShadersStoreWGSL[XL]||(x.ShadersStoreWGSL[XL]=t4);due={name:XL,shader:t4}});var n4,uue,Bc=y(()=>{W();n4="clipPlaneFragmentDeclaration",uue=`#ifdef CLIPPLANE varying fClipDistance: f32; #endif #ifdef CLIPPLANE2 @@ -4711,7 +4711,7 @@ varying fClipDistance5: f32; #ifdef CLIPPLANE6 varying fClipDistance6: f32; #endif -`;x.IncludesShadersStoreWGSL[r4]||(x.IncludesShadersStoreWGSL[r4]=cue)});var n4,fue,Fv=y(()=>{W();n4="fogFragmentDeclaration",fue=`#ifdef FOG +`;x.IncludesShadersStoreWGSL[n4]||(x.IncludesShadersStoreWGSL[n4]=uue)});var s4,hue,Fv=y(()=>{W();s4="fogFragmentDeclaration",hue=`#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 -`;x.IncludesShadersStoreWGSL[n4]||(x.IncludesShadersStoreWGSL[n4]=fue)});var s4,due,Uc=y(()=>{W();s4="clipPlaneFragment",due=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) +`;x.IncludesShadersStoreWGSL[s4]||(x.IncludesShadersStoreWGSL[s4]=hue)});var a4,mue,Uc=y(()=>{W();a4="clipPlaneFragment",mue=`#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 -`;x.IncludesShadersStoreWGSL[s4]||(x.IncludesShadersStoreWGSL[s4]=due)});var a4,uue,Bv=y(()=>{W();a4="fogFragment",uue=`#ifdef FOG +`;x.IncludesShadersStoreWGSL[a4]||(x.IncludesShadersStoreWGSL[a4]=mue)});var o4,pue,Bv=y(()=>{W();o4="fogFragment",pue=`#ifdef FOG var fog: f32=CalcFogFactor(); #ifdef PBR fog=toLinearSpace(fog); #endif color= vec4f(mix(uniforms.vFogColor,color.rgb,fog),color.a); #endif -`;x.IncludesShadersStoreWGSL[a4]||(x.IncludesShadersStoreWGSL[a4]=uue)});var l4={};Be(l4,{colorPixelShaderWGSL:()=>hue});var XL,o4,hue,c4=y(()=>{W();Bc();Fv();Uc();Bv();XL="colorPixelShader",o4=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;x.IncludesShadersStoreWGSL[o4]||(x.IncludesShadersStoreWGSL[o4]=pue)});var c4={};Be(c4,{colorPixelShaderWGSL:()=>gue});var YL,l4,gue,f4=y(()=>{W();Bc();Fv();Uc();Bv();YL="colorPixelShader",l4=`#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 -}`;x.ShadersStoreWGSL[XL]||(x.ShadersStoreWGSL[XL]=o4);hue={name:XL,shader:o4}});var f4,mue,Vc=y(()=>{W();f4="bonesDeclaration",mue=`#if NUM_BONE_INFLUENCERS>0 +}`;x.ShadersStoreWGSL[YL]||(x.ShadersStoreWGSL[YL]=l4);gue={name:YL,shader:l4}});var d4,_ue,Vc=y(()=>{W();d4="bonesDeclaration",_ue=`#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 -`;x.IncludesShadersStore[f4]||(x.IncludesShadersStore[f4]=mue)});var d4,pue,Gc=y(()=>{W();d4="bakedVertexAnimationDeclaration",pue=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStore[d4]||(x.IncludesShadersStore[d4]=_ue)});var u4,vue,Gc=y(()=>{W();u4="bakedVertexAnimationDeclaration",vue=`#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 -`;x.IncludesShadersStore[d4]||(x.IncludesShadersStore[d4]=pue)});var u4,gue,kc=y(()=>{W();u4="clipPlaneVertexDeclaration",gue=`#ifdef CLIPPLANE +`;x.IncludesShadersStore[u4]||(x.IncludesShadersStore[u4]=vue)});var h4,Eue,kc=y(()=>{W();h4="clipPlaneVertexDeclaration",Eue=`#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 -`;x.IncludesShadersStore[u4]||(x.IncludesShadersStore[u4]=gue)});var h4,_ue,Uv=y(()=>{W();h4="fogVertexDeclaration",_ue=`#ifdef FOG +`;x.IncludesShadersStore[h4]||(x.IncludesShadersStore[h4]=Eue)});var m4,Sue,Uv=y(()=>{W();m4="fogVertexDeclaration",Sue=`#ifdef FOG varying vec3 vFogDistance; #endif -`;x.IncludesShadersStore[h4]||(x.IncludesShadersStore[h4]=_ue)});var m4,vue,md=y(()=>{W();m4="instancesDeclaration",vue=`#ifdef INSTANCES +`;x.IncludesShadersStore[m4]||(x.IncludesShadersStore[m4]=Sue)});var p4,Tue,md=y(()=>{W();p4="instancesDeclaration",Tue=`#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 -`;x.IncludesShadersStore[m4]||(x.IncludesShadersStore[m4]=vue)});var p4,Eue,Wc=y(()=>{W();p4="instancesVertex",Eue=`#ifdef INSTANCES +`;x.IncludesShadersStore[p4]||(x.IncludesShadersStore[p4]=Tue)});var g4,Aue,Wc=y(()=>{W();g4="instancesVertex",Aue=`#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 -`;x.IncludesShadersStore[p4]||(x.IncludesShadersStore[p4]=Eue)});var g4,Sue,zc=y(()=>{W();g4="bonesVertex",Sue=`#ifndef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStore[g4]||(x.IncludesShadersStore[g4]=Aue)});var _4,xue,zc=y(()=>{W();_4="bonesVertex",xue=`#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 -`;x.IncludesShadersStore[g4]||(x.IncludesShadersStore[g4]=Sue)});var _4,Tue,Hc=y(()=>{W();_4="bakedVertexAnimation",Tue=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE +`;x.IncludesShadersStore[_4]||(x.IncludesShadersStore[_4]=xue)});var v4,Rue,Hc=y(()=>{W();v4="bakedVertexAnimation",Rue=`#ifdef BAKED_VERTEX_ANIMATION_TEXTURE { #ifdef INSTANCES #define BVASNAME bakedVertexAnimationSettingsInstanced @@ -4972,7 +4972,7 @@ VATInfluence+=readMatrixFromRawSamplerVAT(bakedVertexAnimationTexture,matricesIn #endif finalWorld=finalWorld*VATInfluence;} #endif -`;x.IncludesShadersStore[_4]||(x.IncludesShadersStore[_4]=Tue)});var v4,Aue,Xc=y(()=>{W();v4="clipPlaneVertex",Aue=`#ifdef CLIPPLANE +`;x.IncludesShadersStore[v4]||(x.IncludesShadersStore[v4]=Rue)});var E4,bue,Xc=y(()=>{W();E4="clipPlaneVertex",bue=`#ifdef CLIPPLANE fClipDistance=dot(worldPos,vClipPlane); #endif #ifdef CLIPPLANE2 @@ -4990,10 +4990,10 @@ fClipDistance5=dot(worldPos,vClipPlane5); #ifdef CLIPPLANE6 fClipDistance6=dot(worldPos,vClipPlane6); #endif -`;x.IncludesShadersStore[v4]||(x.IncludesShadersStore[v4]=Aue)});var E4,xue,Vv=y(()=>{W();E4="fogVertex",xue=`#ifdef FOG +`;x.IncludesShadersStore[E4]||(x.IncludesShadersStore[E4]=bue)});var S4,Mue,Vv=y(()=>{W();S4="fogVertex",Mue=`#ifdef FOG vFogDistance=(view*worldPos).xyz; #endif -`;x.IncludesShadersStore[E4]||(x.IncludesShadersStore[E4]=xue)});var S4,Rue,Gv=y(()=>{W();S4="vertexColorMixing",Rue=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;x.IncludesShadersStore[S4]||(x.IncludesShadersStore[S4]=Mue)});var T4,yue,Gv=y(()=>{W();T4="vertexColorMixing",yue=`#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 -`;x.IncludesShadersStore[S4]||(x.IncludesShadersStore[S4]=Rue)});var A4={};Be(A4,{colorVertexShader:()=>bue});var YL,T4,bue,x4=y(()=>{W();Vc();Gc();kc();Uv();md();Wc();zc();Hc();Xc();Vv();Gv();YL="colorVertexShader",T4=`attribute vec3 position; +`;x.IncludesShadersStore[T4]||(x.IncludesShadersStore[T4]=yue)});var x4={};Be(x4,{colorVertexShader:()=>Iue});var KL,A4,Iue,R4=y(()=>{W();Vc();Gc();kc();Uv();md();Wc();zc();Hc();Xc();Vv();Gv();KL="colorVertexShader",A4=`attribute vec3 position; #ifdef VERTEXCOLOR attribute vec4 color; #endif @@ -5044,7 +5044,7 @@ gl_Position=viewProjection*worldPos; #include #include #define CUSTOM_VERTEX_MAIN_END -}`;x.ShadersStore[YL]||(x.ShadersStore[YL]=T4);bue={name:YL,shader:T4}});var R4,Mue,Yc=y(()=>{W();R4="clipPlaneFragmentDeclaration",Mue=`#ifdef CLIPPLANE +}`;x.ShadersStore[KL]||(x.ShadersStore[KL]=A4);Iue={name:KL,shader:A4}});var b4,Cue,Yc=y(()=>{W();b4="clipPlaneFragmentDeclaration",Cue=`#ifdef CLIPPLANE varying float fClipDistance; #endif #ifdef CLIPPLANE2 @@ -5062,7 +5062,7 @@ varying float fClipDistance5; #ifdef CLIPPLANE6 varying float fClipDistance6; #endif -`;x.IncludesShadersStore[R4]||(x.IncludesShadersStore[R4]=Mue)});var b4,yue,kv=y(()=>{W();b4="fogFragmentDeclaration",yue=`#ifdef FOG +`;x.IncludesShadersStore[b4]||(x.IncludesShadersStore[b4]=Cue)});var M4,Pue,kv=y(()=>{W();M4="fogFragmentDeclaration",Pue=`#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 -`;x.IncludesShadersStore[b4]||(x.IncludesShadersStore[b4]=yue)});var M4,Iue,Kc=y(()=>{W();M4="clipPlaneFragment",Iue=`#if defined(CLIPPLANE) || defined(CLIPPLANE2) || defined(CLIPPLANE3) || defined(CLIPPLANE4) || defined(CLIPPLANE5) || defined(CLIPPLANE6) +`;x.IncludesShadersStore[M4]||(x.IncludesShadersStore[M4]=Pue)});var y4,Due,Kc=y(()=>{W();y4="clipPlaneFragment",Due=`#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 -`;x.IncludesShadersStore[M4]||(x.IncludesShadersStore[M4]=Iue)});var y4,Cue,Wv=y(()=>{W();y4="fogFragment",Cue=`#ifdef FOG +`;x.IncludesShadersStore[y4]||(x.IncludesShadersStore[y4]=Due)});var I4,Lue,Wv=y(()=>{W();I4="fogFragment",Lue=`#ifdef FOG float fog=CalcFogFactor(); #ifdef PBR fog=toLinearSpace(fog); #endif color.rgb=mix(vFogColor,color.rgb,fog); #endif -`;x.IncludesShadersStore[y4]||(x.IncludesShadersStore[y4]=Cue)});var C4={};Be(C4,{colorPixelShader:()=>Pue});var KL,I4,Pue,P4=y(()=>{W();Yc();kv();Kc();Wv();KL="colorPixelShader",I4=`#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) +`;x.IncludesShadersStore[I4]||(x.IncludesShadersStore[I4]=Lue)});var P4={};Be(P4,{colorPixelShader:()=>Oue});var jL,C4,Oue,D4=y(()=>{W();Yc();kv();Kc();Wv();jL="colorPixelShader",C4=`#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 -}`;x.ShadersStore[KL]||(x.ShadersStore[KL]=I4);Pue={name:KL,shader:I4}});var Hu,jL,D4=y(()=>{Kt();Yi();wi();kL();ts();zL();Q._LinesMeshParser=(n,e)=>Hu.Parse(n,e);Hu=class n extends Q{_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 Ee(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:[L.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(L.ColorKind)):(f.uniforms.push("color"),this._color4=new dt),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(()=>(i4(),t4)),Promise.resolve().then(()=>(c4(),l4))]):await Promise.all([Promise.resolve().then(()=>(x4(),A4)),Promise.resolve().then(()=>(P4(),C4))])};let u=new Xo("colorShader",this.getScene(),"color",f,!1);u.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(u)}}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=Ae.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(Ae.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Ae.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 jL(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=Ee.FromArray(e.color),i.alpha=e.alpha,i}};Hu.ForceGLSL=!1;jL=class extends Cc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function L4(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 Me;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function O4(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,u;for(u=0;u{let d=b.Zero(),u=f.length/6,h=0,m,g,p=0,_,v;for(_=0;_{We();wi();Ar();D4();Yi();Lt();Me.CreateLineSystem=L4;Me.CreateDashedLines=O4;Q.CreateLines=(n,e,t=null,i=!1,r=null)=>ZL(n,{points:e,updatable:i,instance:r},t);Q.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>QL(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var $L,zv,qR,w4=y(()=>{Lt();We();Yi();wi();Ar();Iu();Kn();Gi();$L=class extends Fe{constructor(e,t){super(e.x,e.y),this.index=t}},zv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new $L(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}}},qR=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new zv,this._outlinepoints=new zv,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 Zm?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 zv;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 Q(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(L.PositionKind,s.positions,e),r.setVerticesData(L.NormalKind,s.normals,e),r.setVerticesData(L.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new Me,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 u of this._points.elements)r.push(0,-1,0),s.push(u.x,-e,u.y),a.push(1-(u.x-o.min.x)/o.width,1-(u.y-o.min.y)/o.height);let d=l.length;for(let u=0;uc?Rc?M{We();Kt();wi();Ar();w4();Yi();Gi();hn();Me.CreatePolygon=F4;Q.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>ZR(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);Q.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>Hv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function eO(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||Q.NO_CAP,l=e.updatable,c=Q._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,u=e.closeShape||!1,h=e.closePath||!1,m=e.capFunction||null;return B4(n,r,i,s,a,null,null,h,u,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function tO(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(E,T)=>{var A,R;let S=(R=(A=e.scaleFunction)==null?void 0:A.call(e,E,T))!=null?R:1;return s.copyFromFloats(S,S,S)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||Q.NO_CAP,d=e.updatable,u=e.firstNormal||null,h=e.adjustFrame||!1,m=Q._GetDefaultSideOrientation(e.sideOrientation),g=e.instance,p=e.invertUV||!1,_=e.capFunction||null;return B4(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,g||null,p,e.frontUVs||null,e.backUVs||null,u,h,_||null)}function B4(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T){let S=(D,w,k,O,N,B,V,q,j,J,H)=>{let Y=k.getTangents(),de=k.getNormals(),me=k.getBinormals(),Ue=k.getDistances();if(H){for(let Ye=0;Ye0){let Ke=Y[Ye-1];b.Dot(Ke,Y[Ye])<0&&Y[Ye].scaleInPlace(-1),Ke=de[Ye-1],b.Dot(Ke,de[Ye])<0&&de[Ye].scaleInPlace(-1),Ke=me[Ye-1],b.Dot(Ke,me[Ye])<0&&me[Ye].scaleInPlace(-1)}}let ae=0,_e=()=>N!==null?N:b.OneReadOnly,ve=J&&q?q:()=>B!==null?B:0,Ce=J&&V?V:_e,ue=j===Q.NO_CAP||j===Q.CAP_END?0:2,be=$.Matrix[0];for(let Ye=0;Ye{let Ke=Array(),Zt=b.Zero(),Ut;for(Ut=0;Ut3?0:c,R=S(e,t,M,I,A,r,s,a,c,f,E);let C=Ho(n,{pathArray:R,closeArray:o,closePath:l,updatable:u,sideOrientation:h,invertUV:g,frontUVs:p||void 0,backUVs:_||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var U4=y(()=>{We();wi();Pv();Iu();Q.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||Q.NO_CAP,sideOrientation:l,instance:c,updatable:o};return eO(n,f,a)};Q.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let u={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||Q.NO_CAP,sideOrientation:f,instance:d,updatable:c};return tO(n,u,l)}});function iO(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=Q._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||Q.NO_CAP,u=Math.PI*2,h=[],m=e.invertUV||!1,g,p,_=u/o*i,v,E;for(g=0;g<=o-l;g++){for(E=[],(d==Q.CAP_START||d==Q.CAP_ALL)&&(E.push(new b(0,s[0].y,0)),E.push(new b(Math.cos(g*_)*s[0].x*a,s[0].y,Math.sin(g*_)*s[0].x*a))),p=0;p{We();wi();Pv();Q.CreateLathe=(n,e,t,i,r,s,a)=>iO(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function G4(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||Me.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),Me._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function rO(n,e={},t=null){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,G4(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var k4=y(()=>{wi();Ar();hn();Me.CreatePlane=G4;Q.CreatePlane=(n,e,t,i,r)=>rO(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function nO(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||Q.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=Q._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let u=(_,v,E,T,S,A,R,M)=>{let I=v.getTangents(),C=v.getNormals(),D=v.getDistances(),k=Math.PI*2/S*M,N=A||(()=>T),B,V,q,j,J=$.Matrix[0],H=R===Q.NO_CAP||R===Q.CAP_END?0:2;for(let de=0;de<_.length;de++){V=N(de,D[de]),B=Array(),q=C[de];for(let me=0;me{let Ue=Array();for(let ae=0;ae3?0:l,m=u(i,h,g,s,a,o,l,e.arc);let p=Ho(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=h,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var W4=y(()=>{We();wi();Pv();Iu();Q.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>nO(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function z4(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,u=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,h=[],m=[],g=[],p=[],_=[],v=0,E=0,T=[],S,A,R,M,I,C,D,w;if(d)for(A=0;A{We();Kt();wi();Ar();hn();Me.CreatePolyhedron=z4;Q.CreatePolyhedron=(n,e,t)=>Xv(n,e,t)});function H4(n){let e=n.sideOrientation||Me.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],u=[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],h=138/1024,m=239/1024,g=60/1024,p=26/1024,_=-40/1024,v=20/1024,E=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],T=[],S=[],A=[],R=[],M=0,I=new Array(3),C=new Array(3),D;for(D=0;D<3;D++)I[D]=b.Zero(),C[D]=Fe.Zero();for(let k=0;k<20;k++){for(D=0;D<3;D++){let N=f[3*k+D];I[D].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),I[D].normalize(),C[D].copyFromFloats(u[2*N]*h+g+E[k]*_,u[2*N+1]*m+p+E[k]*v)}let O=(N,B,V,q)=>{let j=b.Lerp(I[0],I[2],B/r),J=b.Lerp(I[1],I[2],B/r),H=r===B?I[2]:b.Lerp(j,J,N/(r-B));H.normalize();let Y;if(i){let ae=b.Lerp(I[0],I[2],q/r),_e=b.Lerp(I[1],I[2],q/r);Y=b.Lerp(ae,_e,V/(r-q))}else Y=new b(H.x,H.y,H.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let de=Fe.Lerp(C[0],C[2],B/r),me=Fe.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:Fe.Lerp(de,me,N/(r-B));S.push(H.x*s,H.y*a,H.z*o),A.push(Y.x,Y.y,Y.z),R.push(Ue.x,It?1-Ue.y:Ue.y),T.push(M),M++};for(let N=0;N{We();wi();Ar();hn();Me.CreateIcoSphere=H4;Q.CreateIcoSphere=(n,e,t)=>aO(n,e,t)});function oO(n,e,t){var V,q,j,J,H;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(L.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(L.NormalKind),c=s?i?e.getVerticesData(L.PositionKind):o:null,f=s?i?e.getVerticesData(L.NormalKind):l:null,d=e.getVerticesData(L.UVKind),u=i?e.getVerticesData(L.MatricesIndicesKind):null,h=i?e.getVerticesData(L.MatricesWeightsKind):null,m=i?e.getVerticesData(L.MatricesIndicesExtraKind):null,g=i?e.getVerticesData(L.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),_=t.normal||b.Up(),v=t.size||b.One(),E=t.angle||0;if(!_){let Y=new b(0,0,1),de=e.getScene().activeCamera,me=b.TransformCoordinates(Y,de.getWorldMatrix());_=de.globalPosition.subtract(me)}let T=-Math.atan2(_.z,_.x)-Math.PI/2,S=Math.sqrt(_.x*_.x+_.z*_.z),A=Math.atan2(_.y,S),R=new Me;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=g?[]:null;let M=0,I=(Y,de)=>{let me=new QR;if(!a||!o||!l)return me;let Ue=a[Y];if(me.vertexIdx=Ue*3,me.vertexIdxForBones=Ue*4,me.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(me.position,de,me.position),me.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(me.normal,de,me.normal),t.captureUVS&&d){let ae=d[Ue*2+1];me.uv=new Fe(d[Ue*2],It?1-ae:ae)}return me},C=[0,0,0,0],D=(Y,de)=>{if(Y.length===0)return Y;let me=.5*Math.abs(b.Dot(v,de)),Ue=(ne,ve,Ce,ue)=>{for(let be=0;be{var Pe,Ne,et,rt,ye,De,ct,At,nt,Ze,Vt,ii,hi,se,Qe,Ie;let Ce=b.GetClipFactor(ne.position,ve.position,de,me),ue=C,be=C;if(u&&h){let ut=ne.matrixIndicesOverride?0:ne.vertexIdxForBones,it=(Pe=ne.matrixIndicesOverride)!=null?Pe:u,Ve=(Ne=ne.matrixWeightsOverride)!=null?Ne:h,Rt=ve.matrixIndicesOverride?0:ve.vertexIdxForBones,Gt=(et=ve.matrixIndicesOverride)!=null?et:u,$i=(rt=ve.matrixWeightsOverride)!=null?rt:h;ue=[0,0,0,0],be=[0,0,0,0];let li=0;for(let xr=0;xr<4;++xr)if(Ve[ut+xr]>0){let Pa=Ue(Gt,it[ut+xr],Rt,4);ue[li]=it[ut+xr],be[li]=yo(Ve[ut+xr],Pa>=0?$i[Pa]:0,Ce),li++}for(let xr=0;xr<4&&li<4;++xr){let Pa=Gt[Rt+xr];Ue(it,Pa,ut,4)===-1&&(ue[li]=Pa,be[li]=yo(0,$i[Rt+xr],Ce),li++)}let os=be[0]+be[1]+be[2]+be[3];be[0]/=os,be[1]/=os,be[2]/=os,be[3]/=os}let Ge=ne.localPositionOverride?ne.localPositionOverride[0]:(ye=c==null?void 0:c[ne.vertexIdx])!=null?ye:0,qe=ne.localPositionOverride?ne.localPositionOverride[1]:(De=c==null?void 0:c[ne.vertexIdx+1])!=null?De:0,Ye=ne.localPositionOverride?ne.localPositionOverride[2]:(ct=c==null?void 0:c[ne.vertexIdx+2])!=null?ct:0,Ke=ve.localPositionOverride?ve.localPositionOverride[0]:(At=c==null?void 0:c[ve.vertexIdx])!=null?At:0,Zt=ve.localPositionOverride?ve.localPositionOverride[1]:(nt=c==null?void 0:c[ve.vertexIdx+1])!=null?nt:0,Ut=ve.localPositionOverride?ve.localPositionOverride[2]:(Ze=c==null?void 0:c[ve.vertexIdx+2])!=null?Ze:0,Wi=ne.localNormalOverride?ne.localNormalOverride[0]:(Vt=f==null?void 0:f[ne.vertexIdx])!=null?Vt:0,oe=ne.localNormalOverride?ne.localNormalOverride[1]:(ii=f==null?void 0:f[ne.vertexIdx+1])!=null?ii:0,Qi=ne.localNormalOverride?ne.localNormalOverride[2]:(hi=f==null?void 0:f[ne.vertexIdx+2])!=null?hi:0,Ht=ve.localNormalOverride?ve.localNormalOverride[0]:(se=f==null?void 0:f[ve.vertexIdx])!=null?se:0,Di=ve.localNormalOverride?ve.localNormalOverride[1]:(Qe=f==null?void 0:f[ve.vertexIdx+1])!=null?Qe:0,ot=ve.localNormalOverride?ve.localNormalOverride[2]:(Ie=f==null?void 0:f[ve.vertexIdx+2])!=null?Ie:0,ji=Wi+(Ht-Wi)*Ce,K=oe+(Di-oe)*Ce,U=Qi+(ot-Qi)*Ce,he=Math.sqrt(ji*ji+K*K+U*U);return new QR(b.Lerp(ne.position,ve.position,Ce),b.Lerp(ne.normal,ve.normal,Ce).normalize(),Fe.Lerp(ne.uv,ve.uv,Ce),-1,-1,c?[Ge+(Ke-Ge)*Ce,qe+(Zt-qe)*Ce,Ye+(Ut-Ye)*Ce]:null,f?[ji/he,K/he,U/he]:null,ue,be)},_e=null;Y.length>3&&(_e=[]);for(let ne=0;ne0,Zt=qe>0,Ut=Ye>0;switch((Ke?1:0)+(Zt?1:0)+(Ut?1:0)){case 0:Y.length>3?(_e.push(Y[ne]),_e.push(Y[ne+1]),_e.push(Y[ne+2])):_e=Y;break;case 1:if(_e=_e!=null?_e:new Array,Ke&&(ve=Y[ne+1],Ce=Y[ne+2],ue=ae(Y[ne],ve),be=ae(Y[ne],Ce)),Zt){ve=Y[ne],Ce=Y[ne+2],ue=ae(Y[ne+1],ve),be=ae(Y[ne+1],Ce),_e.push(ue),_e.push(Ce.clone()),_e.push(ve.clone()),_e.push(Ce.clone()),_e.push(ue.clone()),_e.push(be);break}Ut&&(ve=Y[ne],Ce=Y[ne+1],ue=ae(Y[ne+2],ve),be=ae(Y[ne+2],Ce)),ve&&Ce&&ue&&be&&(_e.push(ve.clone()),_e.push(Ce.clone()),_e.push(ue),_e.push(be),_e.push(ue.clone()),_e.push(Ce.clone()));break;case 2:_e=_e!=null?_e:new Array,Ke||(ve=Y[ne].clone(),Ce=ae(ve,Y[ne+1]),ue=ae(ve,Y[ne+2]),_e.push(ve),_e.push(Ce),_e.push(ue)),Zt||(ve=Y[ne+1].clone(),Ce=ae(ve,Y[ne+2]),ue=ae(ve,Y[ne]),_e.push(ve),_e.push(Ce),_e.push(ue)),Ut||(ve=Y[ne+2].clone(),Ce=ae(ve,Y[ne]),ue=ae(ve,Y[ne+1]),_e.push(ve),_e.push(Ce),_e.push(ue));break;case 3:break}}return _e},w=e instanceof Q?e:null,k=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(Z.IdentityReadOnly);for(let Y=0;Y{We();jn();wi();Yi();Ar();hn();Due=new b(1,0,0),Lue=new b(-1,0,0),Oue=new b(0,1,0),Nue=new b(0,-1,0),wue=new b(0,0,1),Fue=new b(0,0,-1),QR=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())}};Q.CreateDecal=(n,e,t,i,r,s)=>oO(n,e,{position:t,normal:i,size:r,angle:s})});function K4(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,u=2*Math.PI,h=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),g=Math.acos((c-l)/i),p=[],_=[],v=[],E=[],T=0,S=[],A=f*.5,R=Math.PI*.5,M,I,C=b.Zero(),D=b.Zero(),w=Math.cos(g),k=Math.sin(g),O=new Fe(l*k,A+l*w).subtract(new Fe(c*k,-A+c*w)).length(),N=l*g+O+c*(R-g),B=0;for(I=0;I<=h;I++){let J=[],H=R-g*(I/h);B+=l*g/h;let Y=Math.cos(H),de=Math.sin(H),me=Y*l;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*u+d,_e=Math.sin(ae),ne=Math.cos(ae);D.x=me*_e,D.y=A+de*l,D.z=me*ne,_.push(D.x,D.y,D.z),C.set(Y*_e,de,Y*ne),v.push(C.x,C.y,C.z),E.push(Ue,It?B/N:1-B/N),J.push(T),T++}S.push(J)}let V=i-l-c+w*l-w*c,q=k*(c-l)/V;for(I=1;I<=o;I++){let J=[];B+=O/o;let H=k*(I*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,de=Y*u+d,me=Math.sin(de),Ue=Math.cos(de);D.x=H*me,D.y=A+w*l-I*V/o,D.z=H*Ue,_.push(D.x,D.y,D.z),C.set(me,q,Ue).normalize(),v.push(C.x,C.y,C.z),E.push(Y,It?B/N:1-B/N),J.push(T),T++}S.push(J)}for(I=1;I<=m;I++){let J=[],H=R-g-(Math.PI-g)*(I/m);B+=c*g/m;let Y=Math.cos(H),de=Math.sin(H),me=Y*c;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*u+d,_e=Math.sin(ae),ne=Math.cos(ae);D.x=me*_e,D.y=-A+de*c,D.z=me*ne,_.push(D.x,D.y,D.z),C.set(Y*_e,de,Y*ne),v.push(C.x,C.y,C.z),E.push(Ue,It?B/N:1-B/N),J.push(T),T++}S.push(J)}for(M=0;M{Ar();We();wi();hn();Q.CreateCapsule=(n,e,t)=>lO(n,e,t);Me.CreateCapsule=K4});var sr,q4=y(()=>{Lt();We();sr=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 Gp,Yv,kp,cO=y(()=>{We();jn();Kn();q4();Gp=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 Yv("icosahedron","Regular",[[0,Mr,-1],[-Mr,1,0],[-1,0,-Mr],[1,0,-Mr],[Mr,1,0],[0,Mr,1],[-1,0,Mr],[-Mr,-1,0],[0,-Mr,-1],[Mr,-1,0],[1,0,Mr],[0,-Mr,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=Vx(i,r));let a=i/s,o=r/s,l,c,f,d,u,h=sr.Zero(),m=new sr(i,r),g=new sr(-r,i+r),p=sr.Zero(),_=sr.Zero(),v=sr.Zero(),E=[],T,S,A,R,M=[],I=this.vertByDist,C=(D,w,k,O)=>{T=D+"|"+k,S=w+"|"+O,T in t||S in t?T in t&&!(S in t)?t[S]=t[T]:S in t&&!(T in t)&&(t[T]=t[S]):(t[T]=e,t[S]=e,e++),I[k][0]>2?M[t[T]]=[-I[k][0],I[k][1],t[T]]:M[t[T]]=[E[I[k][0]],I[k][1],t[T]]};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 D=0;D<20;D++){if(E=this.IDATA.face[D],f=E[2],d=E[1],u=E[0],A=h.x+"|"+h.y,T=D+"|"+A,T in t||(t[T]=f,M[f]=[E[I[A][0]],I[A][1]]),A=m.x+"|"+m.y,T=D+"|"+A,T in t||(t[T]=d,M[d]=[E[I[A][0]],I[A][1]]),A=g.x+"|"+g.y,T=D+"|"+A,T in t||(t[T]=u,M[u]=[E[I[A][0]],I[A][1]]),l=this.IDATA.edgematch[D][0],c=this.IDATA.edgematch[D][1],c==="B")for(let w=1;w2?M[t[T]]=[-I[A][0],I[A][1],t[T]]:M[t[T]]=[E[I[A][0]],I[A][1],t[T]])}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 S=Vx(e,t),A=e/S,R=t/S;for(let I=1;IS.x-A.x),i.sort((S,A)=>S.y-A.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let S=0;S{let R=S.clone();return A==="A"&&R.rotateNeg120(e,t),A==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},h=[],m=[],g=[],p=[],_={},v=[],E=-1,T=-1;for(let S=0;SS[2]-A[2]),v.sort((S,A)=>S[3]-A[3]),v.sort((S,A)=>S[1]-A[1]),v.sort((S,A)=>S[0]-A[0]);for(let S=0;St.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 Yv("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 Gp;s.build(i,r);let o={custom:kp.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 Xv(n,o,t)}var Q4=y(()=>{sO();Lt();cO()});var Kv,$4=y(()=>{We();Yi();wi();Kt();Lt();Q._GoldbergMeshParser=(n,e)=>Kv.Parse(n,e);Kv=class n extends Q{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,u);for(let h=0;h<6;h++)d=a.x+o*Math.cos(l+h*Math.PI/3),u=a.y+o*Math.sin(l+h*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,u);for(let h=r;hdt.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 Bue(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||Me.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,u=-1/0,h=1/0,m=-1/0;for(let _=0;_o){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new Gp;c.build(o,l);let f=kp.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),u=new Kv(n,t);e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),u._originalBuilderSideOrientation=e.sideOrientation,Bue(e,d).applyToMesh(u,e.updatable),u.goldbergData.nbSharedFaces=f.sharedNodes,u.goldbergData.nbUnsharedFaces=f.poleNodes,u.goldbergData.adjacentFaces=f.adjacentFaces,u.goldbergData.nbFaces=u.goldbergData.nbSharedFaces+u.goldbergData.nbUnsharedFaces,u.goldbergData.nbFacesAtPole=(u.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{We();Kt();wi();Ar();Lt();cO();$4();hn()});function Uue(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new fO(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{Iu();We();wi();$f();JL();fO=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new Zm(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 Nn,dO=y(()=>{Pv();MH();NL();OH();wH();BH();VH();kH();N4();JL();U4();V4();k4();wL();LL();W4();sO();X4();Y4();j4();Q4();eX();iX();Nn={CreateBox:OL,CreateTiledBox:LH,CreateSphere:BL,CreateDisc:yL,CreateIcoSphere:aO,CreateRibbon:Ho,CreateCylinder:UL,CreateTorus:VL,CreateTorusKnot:GL,CreateLineSystem:qL,CreateLines:ZL,CreateDashedLines:QL,ExtrudeShape:eO,ExtrudeShapeCustom:tO,CreateLathe:iO,CreateTiledPlane:PH,CreatePlane:rO,CreateGround:CL,CreateTiledGround:PL,CreateGroundFromHeightMap:DL,CreatePolygon:ZR,ExtrudePolygon:Hv,CreateTube:nO,CreatePolyhedron:Xv,CreateGeodesic:Z4,CreateGoldberg:J4,CreateDecal:oO,CreateCapsule:lO,CreateText:tX}});var Js,$R=y(()=>{Js=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 Lr,ro=y(()=>{Lr=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{Kt();Yi();wi();WL();ts();HL();Q._LinesMeshParser=(n,e)=>Hu.Parse(n,e);Hu=class n extends Q{_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 Ee(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:[L.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(L.ColorKind)):(f.uniforms.push("color"),this._color4=new dt),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(()=>(r4(),i4)),Promise.resolve().then(()=>(f4(),c4))]):await Promise.all([Promise.resolve().then(()=>(R4(),x4)),Promise.resolve().then(()=>(D4(),P4))])};let u=new Xo("colorShader",this.getScene(),"color",f,!1);u.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(u)}}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=Ae.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(Ae.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Ae.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 qL(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=Ee.FromArray(e.color),i.alpha=e.alpha,i}};Hu.ForceGLSL=!1;qL=class extends Cc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function O4(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 Me;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function N4(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,u;for(u=0;u{let d=b.Zero(),u=f.length/6,h=0,m,g,p=0,_,v;for(_=0;_{We();wi();Ar();L4();Yi();Lt();Me.CreateLineSystem=O4;Me.CreateDashedLines=N4;Q.CreateLines=(n,e,t=null,i=!1,r=null)=>QL(n,{points:e,updatable:i,instance:r},t);Q.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>$L(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var JL,zv,QR,F4=y(()=>{Lt();We();Yi();wi();Ar();Iu();Kn();Gi();JL=class extends Fe{constructor(e,t){super(e.x,e.y),this.index=t}},zv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new JL(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}}},QR=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new zv,this._outlinepoints=new zv,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 Zm?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 zv;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 Q(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(L.PositionKind,s.positions,e),r.setVerticesData(L.NormalKind,s.normals,e),r.setVerticesData(L.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new Me,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 u of this._points.elements)r.push(0,-1,0),s.push(u.x,-e,u.y),a.push(1-(u.x-o.min.x)/o.width,1-(u.y-o.min.y)/o.height);let d=l.length;for(let u=0;uc?Rc?M{We();Kt();wi();Ar();F4();Yi();Gi();hn();Me.CreatePolygon=B4;Q.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>$R(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);Q.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>Hv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function tO(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||Q.NO_CAP,l=e.updatable,c=Q._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,u=e.closeShape||!1,h=e.closePath||!1,m=e.capFunction||null;return U4(n,r,i,s,a,null,null,h,u,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function iO(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(E,T)=>{var A,R;let S=(R=(A=e.scaleFunction)==null?void 0:A.call(e,E,T))!=null?R:1;return s.copyFromFloats(S,S,S)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||Q.NO_CAP,d=e.updatable,u=e.firstNormal||null,h=e.adjustFrame||!1,m=Q._GetDefaultSideOrientation(e.sideOrientation),g=e.instance,p=e.invertUV||!1,_=e.capFunction||null;return U4(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,g||null,p,e.frontUVs||null,e.backUVs||null,u,h,_||null)}function U4(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T){let S=(D,w,k,O,N,B,V,q,j,J,H)=>{let Y=k.getTangents(),de=k.getNormals(),me=k.getBinormals(),Ue=k.getDistances();if(H){for(let Ye=0;Ye0){let Ke=Y[Ye-1];b.Dot(Ke,Y[Ye])<0&&Y[Ye].scaleInPlace(-1),Ke=de[Ye-1],b.Dot(Ke,de[Ye])<0&&de[Ye].scaleInPlace(-1),Ke=me[Ye-1],b.Dot(Ke,me[Ye])<0&&me[Ye].scaleInPlace(-1)}}let ae=0,_e=()=>N!==null?N:b.OneReadOnly,ve=J&&q?q:()=>B!==null?B:0,Ce=J&&V?V:_e,ue=j===Q.NO_CAP||j===Q.CAP_END?0:2,be=$.Matrix[0];for(let Ye=0;Ye{let Ke=Array(),Zt=b.Zero(),Ut;for(Ut=0;Ut3?0:c,R=S(e,t,M,I,A,r,s,a,c,f,E);let C=Ho(n,{pathArray:R,closeArray:o,closePath:l,updatable:u,sideOrientation:h,invertUV:g,frontUVs:p||void 0,backUVs:_||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var V4=y(()=>{We();wi();Pv();Iu();Q.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||Q.NO_CAP,sideOrientation:l,instance:c,updatable:o};return tO(n,f,a)};Q.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let u={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||Q.NO_CAP,sideOrientation:f,instance:d,updatable:c};return iO(n,u,l)}});function rO(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=Q._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||Q.NO_CAP,u=Math.PI*2,h=[],m=e.invertUV||!1,g,p,_=u/o*i,v,E;for(g=0;g<=o-l;g++){for(E=[],(d==Q.CAP_START||d==Q.CAP_ALL)&&(E.push(new b(0,s[0].y,0)),E.push(new b(Math.cos(g*_)*s[0].x*a,s[0].y,Math.sin(g*_)*s[0].x*a))),p=0;p{We();wi();Pv();Q.CreateLathe=(n,e,t,i,r,s,a)=>rO(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function k4(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||Me.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),Me._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function nO(n,e={},t=null){let i=new Q(n,t);return e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,k4(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var W4=y(()=>{wi();Ar();hn();Me.CreatePlane=k4;Q.CreatePlane=(n,e,t,i,r)=>nO(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function sO(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||Q.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=Q._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let u=(_,v,E,T,S,A,R,M)=>{let I=v.getTangents(),C=v.getNormals(),D=v.getDistances(),k=Math.PI*2/S*M,N=A||(()=>T),B,V,q,j,J=$.Matrix[0],H=R===Q.NO_CAP||R===Q.CAP_END?0:2;for(let de=0;de<_.length;de++){V=N(de,D[de]),B=Array(),q=C[de];for(let me=0;me{let Ue=Array();for(let ae=0;ae3?0:l,m=u(i,h,g,s,a,o,l,e.arc);let p=Ho(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=h,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var z4=y(()=>{We();wi();Pv();Iu();Q.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>sO(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function H4(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,u=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,h=[],m=[],g=[],p=[],_=[],v=0,E=0,T=[],S,A,R,M,I,C,D,w;if(d)for(A=0;A{We();Kt();wi();Ar();hn();Me.CreatePolyhedron=H4;Q.CreatePolyhedron=(n,e,t)=>Xv(n,e,t)});function X4(n){let e=n.sideOrientation||Me.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],u=[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],h=138/1024,m=239/1024,g=60/1024,p=26/1024,_=-40/1024,v=20/1024,E=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],T=[],S=[],A=[],R=[],M=0,I=new Array(3),C=new Array(3),D;for(D=0;D<3;D++)I[D]=b.Zero(),C[D]=Fe.Zero();for(let k=0;k<20;k++){for(D=0;D<3;D++){let N=f[3*k+D];I[D].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),I[D].normalize(),C[D].copyFromFloats(u[2*N]*h+g+E[k]*_,u[2*N+1]*m+p+E[k]*v)}let O=(N,B,V,q)=>{let j=b.Lerp(I[0],I[2],B/r),J=b.Lerp(I[1],I[2],B/r),H=r===B?I[2]:b.Lerp(j,J,N/(r-B));H.normalize();let Y;if(i){let ae=b.Lerp(I[0],I[2],q/r),_e=b.Lerp(I[1],I[2],q/r);Y=b.Lerp(ae,_e,V/(r-q))}else Y=new b(H.x,H.y,H.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let de=Fe.Lerp(C[0],C[2],B/r),me=Fe.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:Fe.Lerp(de,me,N/(r-B));S.push(H.x*s,H.y*a,H.z*o),A.push(Y.x,Y.y,Y.z),R.push(Ue.x,It?1-Ue.y:Ue.y),T.push(M),M++};for(let N=0;N{We();wi();Ar();hn();Me.CreateIcoSphere=X4;Q.CreateIcoSphere=(n,e,t)=>oO(n,e,t)});function lO(n,e,t){var V,q,j,J,H;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(L.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(L.NormalKind),c=s?i?e.getVerticesData(L.PositionKind):o:null,f=s?i?e.getVerticesData(L.NormalKind):l:null,d=e.getVerticesData(L.UVKind),u=i?e.getVerticesData(L.MatricesIndicesKind):null,h=i?e.getVerticesData(L.MatricesWeightsKind):null,m=i?e.getVerticesData(L.MatricesIndicesExtraKind):null,g=i?e.getVerticesData(L.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),_=t.normal||b.Up(),v=t.size||b.One(),E=t.angle||0;if(!_){let Y=new b(0,0,1),de=e.getScene().activeCamera,me=b.TransformCoordinates(Y,de.getWorldMatrix());_=de.globalPosition.subtract(me)}let T=-Math.atan2(_.z,_.x)-Math.PI/2,S=Math.sqrt(_.x*_.x+_.z*_.z),A=Math.atan2(_.y,S),R=new Me;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=g?[]:null;let M=0,I=(Y,de)=>{let me=new JR;if(!a||!o||!l)return me;let Ue=a[Y];if(me.vertexIdx=Ue*3,me.vertexIdxForBones=Ue*4,me.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(me.position,de,me.position),me.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(me.normal,de,me.normal),t.captureUVS&&d){let ae=d[Ue*2+1];me.uv=new Fe(d[Ue*2],It?1-ae:ae)}return me},C=[0,0,0,0],D=(Y,de)=>{if(Y.length===0)return Y;let me=.5*Math.abs(b.Dot(v,de)),Ue=(ne,ve,Ce,ue)=>{for(let be=0;be{var Pe,Ne,et,rt,ye,De,ct,At,nt,Ze,Vt,ii,hi,se,Qe,Ie;let Ce=b.GetClipFactor(ne.position,ve.position,de,me),ue=C,be=C;if(u&&h){let ut=ne.matrixIndicesOverride?0:ne.vertexIdxForBones,it=(Pe=ne.matrixIndicesOverride)!=null?Pe:u,Ve=(Ne=ne.matrixWeightsOverride)!=null?Ne:h,Rt=ve.matrixIndicesOverride?0:ve.vertexIdxForBones,Gt=(et=ve.matrixIndicesOverride)!=null?et:u,$i=(rt=ve.matrixWeightsOverride)!=null?rt:h;ue=[0,0,0,0],be=[0,0,0,0];let li=0;for(let xr=0;xr<4;++xr)if(Ve[ut+xr]>0){let Da=Ue(Gt,it[ut+xr],Rt,4);ue[li]=it[ut+xr],be[li]=yo(Ve[ut+xr],Da>=0?$i[Da]:0,Ce),li++}for(let xr=0;xr<4&&li<4;++xr){let Da=Gt[Rt+xr];Ue(it,Da,ut,4)===-1&&(ue[li]=Da,be[li]=yo(0,$i[Rt+xr],Ce),li++)}let os=be[0]+be[1]+be[2]+be[3];be[0]/=os,be[1]/=os,be[2]/=os,be[3]/=os}let Ge=ne.localPositionOverride?ne.localPositionOverride[0]:(ye=c==null?void 0:c[ne.vertexIdx])!=null?ye:0,qe=ne.localPositionOverride?ne.localPositionOverride[1]:(De=c==null?void 0:c[ne.vertexIdx+1])!=null?De:0,Ye=ne.localPositionOverride?ne.localPositionOverride[2]:(ct=c==null?void 0:c[ne.vertexIdx+2])!=null?ct:0,Ke=ve.localPositionOverride?ve.localPositionOverride[0]:(At=c==null?void 0:c[ve.vertexIdx])!=null?At:0,Zt=ve.localPositionOverride?ve.localPositionOverride[1]:(nt=c==null?void 0:c[ve.vertexIdx+1])!=null?nt:0,Ut=ve.localPositionOverride?ve.localPositionOverride[2]:(Ze=c==null?void 0:c[ve.vertexIdx+2])!=null?Ze:0,Wi=ne.localNormalOverride?ne.localNormalOverride[0]:(Vt=f==null?void 0:f[ne.vertexIdx])!=null?Vt:0,oe=ne.localNormalOverride?ne.localNormalOverride[1]:(ii=f==null?void 0:f[ne.vertexIdx+1])!=null?ii:0,Qi=ne.localNormalOverride?ne.localNormalOverride[2]:(hi=f==null?void 0:f[ne.vertexIdx+2])!=null?hi:0,Ht=ve.localNormalOverride?ve.localNormalOverride[0]:(se=f==null?void 0:f[ve.vertexIdx])!=null?se:0,Di=ve.localNormalOverride?ve.localNormalOverride[1]:(Qe=f==null?void 0:f[ve.vertexIdx+1])!=null?Qe:0,ot=ve.localNormalOverride?ve.localNormalOverride[2]:(Ie=f==null?void 0:f[ve.vertexIdx+2])!=null?Ie:0,ji=Wi+(Ht-Wi)*Ce,K=oe+(Di-oe)*Ce,U=Qi+(ot-Qi)*Ce,he=Math.sqrt(ji*ji+K*K+U*U);return new JR(b.Lerp(ne.position,ve.position,Ce),b.Lerp(ne.normal,ve.normal,Ce).normalize(),Fe.Lerp(ne.uv,ve.uv,Ce),-1,-1,c?[Ge+(Ke-Ge)*Ce,qe+(Zt-qe)*Ce,Ye+(Ut-Ye)*Ce]:null,f?[ji/he,K/he,U/he]:null,ue,be)},_e=null;Y.length>3&&(_e=[]);for(let ne=0;ne0,Zt=qe>0,Ut=Ye>0;switch((Ke?1:0)+(Zt?1:0)+(Ut?1:0)){case 0:Y.length>3?(_e.push(Y[ne]),_e.push(Y[ne+1]),_e.push(Y[ne+2])):_e=Y;break;case 1:if(_e=_e!=null?_e:new Array,Ke&&(ve=Y[ne+1],Ce=Y[ne+2],ue=ae(Y[ne],ve),be=ae(Y[ne],Ce)),Zt){ve=Y[ne],Ce=Y[ne+2],ue=ae(Y[ne+1],ve),be=ae(Y[ne+1],Ce),_e.push(ue),_e.push(Ce.clone()),_e.push(ve.clone()),_e.push(Ce.clone()),_e.push(ue.clone()),_e.push(be);break}Ut&&(ve=Y[ne],Ce=Y[ne+1],ue=ae(Y[ne+2],ve),be=ae(Y[ne+2],Ce)),ve&&Ce&&ue&&be&&(_e.push(ve.clone()),_e.push(Ce.clone()),_e.push(ue),_e.push(be),_e.push(ue.clone()),_e.push(Ce.clone()));break;case 2:_e=_e!=null?_e:new Array,Ke||(ve=Y[ne].clone(),Ce=ae(ve,Y[ne+1]),ue=ae(ve,Y[ne+2]),_e.push(ve),_e.push(Ce),_e.push(ue)),Zt||(ve=Y[ne+1].clone(),Ce=ae(ve,Y[ne+2]),ue=ae(ve,Y[ne]),_e.push(ve),_e.push(Ce),_e.push(ue)),Ut||(ve=Y[ne+2].clone(),Ce=ae(ve,Y[ne]),ue=ae(ve,Y[ne+1]),_e.push(ve),_e.push(Ce),_e.push(ue));break;case 3:break}}return _e},w=e instanceof Q?e:null,k=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(Z.IdentityReadOnly);for(let Y=0;Y{We();jn();wi();Yi();Ar();hn();Nue=new b(1,0,0),wue=new b(-1,0,0),Fue=new b(0,1,0),Bue=new b(0,-1,0),Uue=new b(0,0,1),Vue=new b(0,0,-1),JR=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())}};Q.CreateDecal=(n,e,t,i,r,s)=>lO(n,e,{position:t,normal:i,size:r,angle:s})});function j4(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,u=2*Math.PI,h=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),g=Math.acos((c-l)/i),p=[],_=[],v=[],E=[],T=0,S=[],A=f*.5,R=Math.PI*.5,M,I,C=b.Zero(),D=b.Zero(),w=Math.cos(g),k=Math.sin(g),O=new Fe(l*k,A+l*w).subtract(new Fe(c*k,-A+c*w)).length(),N=l*g+O+c*(R-g),B=0;for(I=0;I<=h;I++){let J=[],H=R-g*(I/h);B+=l*g/h;let Y=Math.cos(H),de=Math.sin(H),me=Y*l;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*u+d,_e=Math.sin(ae),ne=Math.cos(ae);D.x=me*_e,D.y=A+de*l,D.z=me*ne,_.push(D.x,D.y,D.z),C.set(Y*_e,de,Y*ne),v.push(C.x,C.y,C.z),E.push(Ue,It?B/N:1-B/N),J.push(T),T++}S.push(J)}let V=i-l-c+w*l-w*c,q=k*(c-l)/V;for(I=1;I<=o;I++){let J=[];B+=O/o;let H=k*(I*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,de=Y*u+d,me=Math.sin(de),Ue=Math.cos(de);D.x=H*me,D.y=A+w*l-I*V/o,D.z=H*Ue,_.push(D.x,D.y,D.z),C.set(me,q,Ue).normalize(),v.push(C.x,C.y,C.z),E.push(Y,It?B/N:1-B/N),J.push(T),T++}S.push(J)}for(I=1;I<=m;I++){let J=[],H=R-g-(Math.PI-g)*(I/m);B+=c*g/m;let Y=Math.cos(H),de=Math.sin(H),me=Y*c;for(M=0;M<=a;M++){let Ue=M/a,ae=Ue*u+d,_e=Math.sin(ae),ne=Math.cos(ae);D.x=me*_e,D.y=-A+de*c,D.z=me*ne,_.push(D.x,D.y,D.z),C.set(Y*_e,de,Y*ne),v.push(C.x,C.y,C.z),E.push(Ue,It?B/N:1-B/N),J.push(T),T++}S.push(J)}for(M=0;M{Ar();We();wi();hn();Q.CreateCapsule=(n,e,t)=>cO(n,e,t);Me.CreateCapsule=j4});var sr,Z4=y(()=>{Lt();We();sr=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 Gp,Yv,kp,fO=y(()=>{We();jn();Kn();Z4();Gp=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 Yv("icosahedron","Regular",[[0,Mr,-1],[-Mr,1,0],[-1,0,-Mr],[1,0,-Mr],[Mr,1,0],[0,Mr,1],[-1,0,Mr],[-Mr,-1,0],[0,-Mr,-1],[Mr,-1,0],[1,0,Mr],[0,-Mr,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=kx(i,r));let a=i/s,o=r/s,l,c,f,d,u,h=sr.Zero(),m=new sr(i,r),g=new sr(-r,i+r),p=sr.Zero(),_=sr.Zero(),v=sr.Zero(),E=[],T,S,A,R,M=[],I=this.vertByDist,C=(D,w,k,O)=>{T=D+"|"+k,S=w+"|"+O,T in t||S in t?T in t&&!(S in t)?t[S]=t[T]:S in t&&!(T in t)&&(t[T]=t[S]):(t[T]=e,t[S]=e,e++),I[k][0]>2?M[t[T]]=[-I[k][0],I[k][1],t[T]]:M[t[T]]=[E[I[k][0]],I[k][1],t[T]]};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 D=0;D<20;D++){if(E=this.IDATA.face[D],f=E[2],d=E[1],u=E[0],A=h.x+"|"+h.y,T=D+"|"+A,T in t||(t[T]=f,M[f]=[E[I[A][0]],I[A][1]]),A=m.x+"|"+m.y,T=D+"|"+A,T in t||(t[T]=d,M[d]=[E[I[A][0]],I[A][1]]),A=g.x+"|"+g.y,T=D+"|"+A,T in t||(t[T]=u,M[u]=[E[I[A][0]],I[A][1]]),l=this.IDATA.edgematch[D][0],c=this.IDATA.edgematch[D][1],c==="B")for(let w=1;w2?M[t[T]]=[-I[A][0],I[A][1],t[T]]:M[t[T]]=[E[I[A][0]],I[A][1],t[T]])}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 S=kx(e,t),A=e/S,R=t/S;for(let I=1;IS.x-A.x),i.sort((S,A)=>S.y-A.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let S=0;S{let R=S.clone();return A==="A"&&R.rotateNeg120(e,t),A==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},h=[],m=[],g=[],p=[],_={},v=[],E=-1,T=-1;for(let S=0;SS[2]-A[2]),v.sort((S,A)=>S[3]-A[3]),v.sort((S,A)=>S[1]-A[1]),v.sort((S,A)=>S[0]-A[0]);for(let S=0;St.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 Yv("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 Gp;s.build(i,r);let o={custom:kp.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 Xv(n,o,t)}var $4=y(()=>{aO();Lt();fO()});var Kv,J4=y(()=>{We();Yi();wi();Kt();Lt();Q._GoldbergMeshParser=(n,e)=>Kv.Parse(n,e);Kv=class n extends Q{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,u);for(let h=0;h<6;h++)d=a.x+o*Math.cos(l+h*Math.PI/3),u=a.y+o*Math.sin(l+h*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,u);for(let h=r;hdt.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 Gue(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||Me.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,u=-1/0,h=1/0,m=-1/0;for(let _=0;_o){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new Gp;c.build(o,l);let f=kp.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),u=new Kv(n,t);e.sideOrientation=Q._GetDefaultSideOrientation(e.sideOrientation),u._originalBuilderSideOrientation=e.sideOrientation,Gue(e,d).applyToMesh(u,e.updatable),u.goldbergData.nbSharedFaces=f.sharedNodes,u.goldbergData.nbUnsharedFaces=f.poleNodes,u.goldbergData.adjacentFaces=f.adjacentFaces,u.goldbergData.nbFaces=u.goldbergData.nbSharedFaces+u.goldbergData.nbUnsharedFaces,u.goldbergData.nbFacesAtPole=(u.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{We();Kt();wi();Ar();Lt();fO();J4();hn()});function kue(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new dO(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{Iu();We();wi();$f();eO();dO=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new Zm(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 Nn,uO=y(()=>{Pv();yH();wL();NH();FH();UH();GH();WH();w4();eO();V4();G4();W4();FL();OL();z4();aO();Y4();K4();q4();$4();tX();rX();Nn={CreateBox:NL,CreateTiledBox:OH,CreateSphere:UL,CreateDisc:IL,CreateIcoSphere:oO,CreateRibbon:Ho,CreateCylinder:VL,CreateTorus:GL,CreateTorusKnot:kL,CreateLineSystem:ZL,CreateLines:QL,CreateDashedLines:$L,ExtrudeShape:tO,ExtrudeShapeCustom:iO,CreateLathe:rO,CreateTiledPlane:DH,CreatePlane:nO,CreateGround:PL,CreateTiledGround:DL,CreateGroundFromHeightMap:LL,CreatePolygon:$R,ExtrudePolygon:Hv,CreateTube:sO,CreatePolyhedron:Xv,CreateGeodesic:Q4,CreateGoldberg:eX,CreateDecal:lO,CreateCapsule:cO,CreateText:iX}});var ea,eb=y(()=>{ea=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 Lr,ro=y(()=>{Lr=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{ro()});function zue(){kue.length=0,Wue=!1,Ae.OnEventObservable.remove(rX),rX=null}var Gue,zp,kue,Wue,rX,nX=y(()=>{ts();Gi();bx();W();Gue=new RegExp("^([gimus]+)!"),zp=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 Wp(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 tb=y(()=>{ro()});function Yue(){Hue.length=0,Xue=!1,Ae.OnEventObservable.remove(nX),nX=null}var zue,zp,Hue,Xue,nX,sX=y(()=>{ts();Gi();yx();W();zue=new RegExp("^([gimus]+)!"),zp=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 u=this._material.shaderLanguage,h=(l=d.getCustomCode(i,u))==null?void 0:l[c];h&&(d.resolveIncludes&&(a===null&&(a={defines:[],indexParameters:e.indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:void 0,supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:x.GetShadersRepository(u),includesShadersStore:x.GetIncludesShadersStore(u),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",K_(h,a,m=>h=m)),f+=h+` -`)}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 g=Gue.exec(c);g&&g.length>=2&&(d=g[1],c=c.substring(d.length+1))}d.indexOf("g")<0&&(d+="g");let u=r,h=new RegExp(c,d),m=h.exec(u);for(;m!==null;){let g=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 g=zue.exec(c);g&&g.length>=2&&(d=g[1],c=c.substring(d.length+1))}d.indexOf("g")<0&&(d+="g");let u=r,h=new RegExp(c,d),m=h.exec(u);for(;m!==null;){let g=f;for(let p=0;p{zue()});kue=[],Wue=!1,rX=null});var jr,pd=y(()=>{Xt();zt();nX();Dr();er();jr=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 zp(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){st.Clone(()=>e,this)}serialize(){return st.Serialize(this)}parse(e,t,i){st.Parse(()=>this,e,t,i)}};P([F()],jr.prototype,"name",void 0);P([F()],jr.prototype,"priority",void 0);P([F()],jr.prototype,"resolveIncludes",void 0);P([F()],jr.prototype,"registerForExtraEvents",void 0);Bt("BABYLON.MaterialPluginBase",jr)});var uO,no,hO=y(()=>{Xt();ts();zt();to();ro();pd();es();uO=class extends Lr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},no=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new uO,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Ae.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&&fe.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&&fe.DetailTextureEnabled&&this._isEnabled?(si(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&&fe.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),ai(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&fe.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([Wt("detailTexture"),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"texture",void 0);P([F()],no.prototype,"diffuseBlendLevel",void 0);P([F()],no.prototype,"roughnessBlendLevel",void 0);P([F()],no.prototype,"bumpLevel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"normalBlendMethod",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"isEnabled",void 0)});var sX,ss,eb=y(()=>{We();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(sX||(sX={}));ss=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:Z.Zero(),currentViewProjection:Z.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 Xp(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 ib=y(()=>{});function Yp(n){return class extends n{constructor(...e){super(...e),EG()(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 rb=y(()=>{zt()});var aX,Hue,Xu=y(()=>{W();aX="sceneUboDeclaration",Hue=`struct Scene {viewProjection : mat4x4, +`+d)}}return r}}};zp._MaterialPluginClassToMainDefine={};zp._MaterialPluginCounter=0;Oe.OnEnginesDisposedObservable.add(()=>{Yue()});Hue=[],Xue=!1,nX=null});var jr,pd=y(()=>{Xt();zt();sX();Dr();er();jr=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 zp(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){st.Clone(()=>e,this)}serialize(){return st.Serialize(this)}parse(e,t,i){st.Parse(()=>this,e,t,i)}};P([F()],jr.prototype,"name",void 0);P([F()],jr.prototype,"priority",void 0);P([F()],jr.prototype,"resolveIncludes",void 0);P([F()],jr.prototype,"registerForExtraEvents",void 0);Bt("BABYLON.MaterialPluginBase",jr)});var hO,no,mO=y(()=>{Xt();ts();zt();to();ro();pd();es();hO=class extends Lr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},no=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new hO,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Ae.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&&fe.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&&fe.DetailTextureEnabled&&this._isEnabled?(si(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&&fe.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),ai(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&fe.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([Wt("detailTexture"),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"texture",void 0);P([F()],no.prototype,"diffuseBlendLevel",void 0);P([F()],no.prototype,"roughnessBlendLevel",void 0);P([F()],no.prototype,"bumpLevel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"normalBlendMethod",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],no.prototype,"isEnabled",void 0)});var aX,ss,ib=y(()=>{We();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(aX||(aX={}));ss=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:Z.Zero(),currentViewProjection:Z.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 Xp(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 nb=y(()=>{});function Yp(n){return class extends n{constructor(...e){super(...e),SG()(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 sb=y(()=>{zt()});var oX,Kue,Xu=y(()=>{W();oX="sceneUboDeclaration",Kue=`struct Scene {viewProjection : mat4x4, #ifdef MULTIVIEW viewProjectionR : mat4x4, #endif @@ -5151,17 +5151,17 @@ vEyePosition : vec4, inverseProjection : mat4x4,}; #define SCENE_UBO var scene : Scene; -`;x.IncludesShadersStoreWGSL[aX]||(x.IncludesShadersStoreWGSL[aX]=Hue)});var oX,Xue,jv=y(()=>{W();oX="meshUboDeclaration",Xue=`struct Mesh {world : mat4x4, +`;x.IncludesShadersStoreWGSL[oX]||(x.IncludesShadersStoreWGSL[oX]=Kue)});var lX,jue,jv=y(()=>{W();lX="meshUboDeclaration",jue=`struct Mesh {world : mat4x4, visibility : f32,};var mesh : Mesh; #define WORLD_UBO -`;x.IncludesShadersStoreWGSL[oX]||(x.IncludesShadersStoreWGSL[oX]=Xue)});var lX,Yue,mO=y(()=>{W();Xu();jv();lX="defaultUboDeclaration",Yue=`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; +`;x.IncludesShadersStoreWGSL[lX]||(x.IncludesShadersStoreWGSL[lX]=jue)});var cX,que,pO=y(()=>{W();Xu();jv();cX="defaultUboDeclaration",que=`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 -`;x.IncludesShadersStoreWGSL[lX]||(x.IncludesShadersStoreWGSL[lX]=Yue)});var cX,Kue,nb=y(()=>{W();cX="uvAttributeDeclaration",Kue=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) +`;x.IncludesShadersStoreWGSL[cX]||(x.IncludesShadersStoreWGSL[cX]=que)});var fX,Zue,ab=y(()=>{W();fX="uvAttributeDeclaration",Zue=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) attribute uv{X}: vec2f; #endif -`;x.IncludesShadersStoreWGSL[cX]||(x.IncludesShadersStoreWGSL[cX]=Kue)});var fX,jue,sb=y(()=>{W();fX="prePassVertexDeclaration",jue=`#ifdef PREPASS +`;x.IncludesShadersStoreWGSL[fX]||(x.IncludesShadersStoreWGSL[fX]=Zue)});var dX,Que,ob=y(()=>{W();dX="prePassVertexDeclaration",Que=`#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 -`;x.IncludesShadersStoreWGSL[fX]||(x.IncludesShadersStoreWGSL[fX]=jue)});var dX,que,Kp=y(()=>{W();dX="mainUVVaryingDeclaration",que=`#ifdef MAINUV{X} +`;x.IncludesShadersStoreWGSL[dX]||(x.IncludesShadersStoreWGSL[dX]=Que)});var uX,$ue,Kp=y(()=>{W();uX="mainUVVaryingDeclaration",$ue=`#ifdef MAINUV{X} varying vMainUV{X}: vec2f; #endif -`;x.IncludesShadersStoreWGSL[dX]||(x.IncludesShadersStoreWGSL[dX]=que)});var uX,Zue,ab=y(()=>{W();uX="samplerVertexDeclaration",Zue=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStoreWGSL[uX]||(x.IncludesShadersStoreWGSL[uX]=$ue)});var hX,Jue,lb=y(()=>{W();hX="samplerVertexDeclaration",Jue=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying v_VARYINGNAME_UV: vec2f; #endif -`;x.IncludesShadersStoreWGSL[uX]||(x.IncludesShadersStoreWGSL[uX]=Zue)});var hX,Que,pO=y(()=>{W();hX="bumpVertexDeclaration",Que=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStoreWGSL[hX]||(x.IncludesShadersStoreWGSL[hX]=Jue)});var mX,ehe,gO=y(()=>{W();mX="bumpVertexDeclaration",ehe=`#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 -`;x.IncludesShadersStoreWGSL[hX]||(x.IncludesShadersStoreWGSL[hX]=Que)});var mX,$ue,pX=y(()=>{W();mX="lightVxFragmentDeclaration",$ue=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[mX]||(x.IncludesShadersStoreWGSL[mX]=ehe)});var pX,the,gX=y(()=>{W();pX="lightVxFragmentDeclaration",the=`#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 -`;x.IncludesShadersStoreWGSL[mX]||(x.IncludesShadersStoreWGSL[mX]=$ue)});var gX,Jue,ob=y(()=>{W();gX="lightVxUboDeclaration",Jue=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[pX]||(x.IncludesShadersStoreWGSL[pX]=the)});var _X,ihe,cb=y(()=>{W();_X="lightVxUboDeclaration",ihe=`#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 -`;x.IncludesShadersStoreWGSL[gX]||(x.IncludesShadersStoreWGSL[gX]=Jue)});var _X,ehe,gd=y(()=>{W();_X="morphTargetsVertexGlobalDeclaration",ehe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStoreWGSL[_X]||(x.IncludesShadersStoreWGSL[_X]=ihe)});var vX,rhe,gd=y(()=>{W();vX="morphTargetsVertexGlobalDeclaration",rhe=`#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 -`;x.IncludesShadersStoreWGSL[_X]||(x.IncludesShadersStoreWGSL[_X]=ehe)});var vX,the,_d=y(()=>{W();vX="morphTargetsVertexDeclaration",the=`#ifdef MORPHTARGETS +`;x.IncludesShadersStoreWGSL[vX]||(x.IncludesShadersStoreWGSL[vX]=rhe)});var EX,nhe,_d=y(()=>{W();EX="morphTargetsVertexDeclaration",nhe=`#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 -`;x.IncludesShadersStoreWGSL[vX]||(x.IncludesShadersStoreWGSL[vX]=the)});var EX,ihe,Yu=y(()=>{W();EX="logDepthDeclaration",ihe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStoreWGSL[EX]||(x.IncludesShadersStoreWGSL[EX]=nhe)});var SX,she,Yu=y(()=>{W();SX="logDepthDeclaration",she=`#ifdef LOGARITHMICDEPTH uniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32; #endif -`;x.IncludesShadersStoreWGSL[EX]||(x.IncludesShadersStoreWGSL[EX]=ihe)});var SX,rhe,lb=y(()=>{W();SX="vertexPullingDeclaration",rhe=`#ifdef USE_VERTEX_PULLING +`;x.IncludesShadersStoreWGSL[SX]||(x.IncludesShadersStoreWGSL[SX]=she)});var TX,ahe,fb=y(()=>{W();TX="vertexPullingDeclaration",ahe=`#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 -`;x.IncludesShadersStoreWGSL[SX]||(x.IncludesShadersStoreWGSL[SX]=rhe)});var TX,nhe,cb=y(()=>{W();TX="vertexPullingVertex",nhe=`#ifdef USE_VERTEX_PULLING +`;x.IncludesShadersStoreWGSL[TX]||(x.IncludesShadersStoreWGSL[TX]=ahe)});var AX,ohe,db=y(()=>{W();AX="vertexPullingVertex",ohe=`#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 -`;x.IncludesShadersStoreWGSL[TX]||(x.IncludesShadersStoreWGSL[TX]=nhe)});var AX,she,vd=y(()=>{W();AX="morphTargetsVertexGlobal",she=`#ifdef MORPHTARGETS +`;x.IncludesShadersStoreWGSL[AX]||(x.IncludesShadersStoreWGSL[AX]=ohe)});var xX,lhe,vd=y(()=>{W();xX="morphTargetsVertexGlobal",lhe=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE var vertexID : f32; #endif #endif -`;x.IncludesShadersStoreWGSL[AX]||(x.IncludesShadersStoreWGSL[AX]=she)});var xX,ahe,Ed=y(()=>{W();xX="morphTargetsVertex",ahe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStoreWGSL[xX]||(x.IncludesShadersStoreWGSL[xX]=lhe)});var RX,che,Ed=y(()=>{W();RX="morphTargetsVertex",che=`#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 -`;x.IncludesShadersStoreWGSL[xX]||(x.IncludesShadersStoreWGSL[xX]=ahe)});var RX,ohe,fb=y(()=>{W();RX="prePassVertex",ohe=`#ifdef PREPASS_DEPTH +`;x.IncludesShadersStoreWGSL[RX]||(x.IncludesShadersStoreWGSL[RX]=che)});var bX,fhe,ub=y(()=>{W();bX="prePassVertex",fhe=`#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 -`;x.IncludesShadersStoreWGSL[RX]||(x.IncludesShadersStoreWGSL[RX]=ohe)});var bX,lhe,db=y(()=>{W();bX="uvVariableDeclaration",lhe=`#ifdef MAINUV{X} +`;x.IncludesShadersStoreWGSL[bX]||(x.IncludesShadersStoreWGSL[bX]=fhe)});var MX,dhe,hb=y(()=>{W();MX="uvVariableDeclaration",dhe=`#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 -`;x.IncludesShadersStoreWGSL[bX]||(x.IncludesShadersStoreWGSL[bX]=lhe)});var MX,che,ub=y(()=>{W();MX="samplerVertexImplementation",che=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStoreWGSL[MX]||(x.IncludesShadersStoreWGSL[MX]=dhe)});var yX,uhe,mb=y(()=>{W();yX="samplerVertexImplementation",uhe=`#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 -`;x.IncludesShadersStoreWGSL[MX]||(x.IncludesShadersStoreWGSL[MX]=che)});var yX,fhe,hb=y(()=>{W();yX="bumpVertex",fhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStoreWGSL[yX]||(x.IncludesShadersStoreWGSL[yX]=uhe)});var IX,hhe,pb=y(()=>{W();IX="bumpVertex",hhe=`#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 -`;x.IncludesShadersStoreWGSL[yX]||(x.IncludesShadersStoreWGSL[yX]=fhe)});var IX,dhe,mb=y(()=>{W();IX="shadowsVertex",dhe=`#ifdef SHADOWS +`;x.IncludesShadersStoreWGSL[IX]||(x.IncludesShadersStoreWGSL[IX]=hhe)});var CX,mhe,gb=y(()=>{W();CX="shadowsVertex",mhe=`#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 -`;x.IncludesShadersStoreWGSL[IX]||(x.IncludesShadersStoreWGSL[IX]=dhe)});var CX,uhe,pb=y(()=>{W();CX="logDepthVertex",uhe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStoreWGSL[CX]||(x.IncludesShadersStoreWGSL[CX]=mhe)});var PX,phe,_b=y(()=>{W();PX="logDepthVertex",phe=`#ifdef LOGARITHMICDEPTH vertexOutputs.vFragmentDepth=1.0+vertexOutputs.position.w;vertexOutputs.position.z=log2(max(0.000001,vertexOutputs.vFragmentDepth))*uniforms.logarithmicDepthConstant; #endif -`;x.IncludesShadersStoreWGSL[CX]||(x.IncludesShadersStoreWGSL[CX]=uhe)});var DX={};Be(DX,{defaultVertexShaderWGSL:()=>hhe});var gO,PX,hhe,LX=y(()=>{W();mO();nb();$a();Pc();Dc();hd();sb();Kp();ab();pO();Lc();Ov();pX();ob();gd();_d();Yu();lb();cb();vd();Ed();Oc();Nc();wc();fb();db();ub();hb();Fc();Nv();mb();wv();pb();gO="defaultVertexShader",PX=`#include +`;x.IncludesShadersStoreWGSL[PX]||(x.IncludesShadersStoreWGSL[PX]=phe)});var LX={};Be(LX,{defaultVertexShaderWGSL:()=>ghe});var _O,DX,ghe,OX=y(()=>{W();pO();ab();$a();Pc();Dc();hd();ob();Kp();lb();gO();Lc();Ov();gX();cb();gd();_d();Yu();fb();db();vd();Ed();Oc();Nc();wc();ub();hb();mb();pb();Fc();Nv();gb();wv();_b();_O="defaultVertexShader",DX=`#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 } -`;x.ShadersStoreWGSL[gO]||(x.ShadersStoreWGSL[gO]=PX);hhe={name:gO,shader:PX}});var OX,mhe,gb=y(()=>{W();OX="prePassDeclaration",mhe=`#ifdef PREPASS +`;x.ShadersStoreWGSL[_O]||(x.ShadersStoreWGSL[_O]=DX);ghe={name:_O,shader:DX}});var NX,_he,vb=y(()=>{W();NX="prePassDeclaration",_he=`#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 -`;x.IncludesShadersStoreWGSL[OX]||(x.IncludesShadersStoreWGSL[OX]=mhe)});var NX,phe,_b=y(()=>{W();NX="oitDeclaration",phe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStoreWGSL[NX]||(x.IncludesShadersStoreWGSL[NX]=_he)});var wX,vhe,Eb=y(()=>{W();wX="oitDeclaration",vhe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY #define MAX_DEPTH 99999.0 var oitDepthSamplerSampler: sampler;var oitDepthSampler: texture_2d;var oitFrontColorSamplerSampler: sampler;var oitFrontColorSampler: texture_2d; #endif -`;x.IncludesShadersStoreWGSL[NX]||(x.IncludesShadersStoreWGSL[NX]=phe)});var wX,ghe,vb=y(()=>{W();wX="lightUboDeclaration",ghe=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[wX]||(x.IncludesShadersStoreWGSL[wX]=vhe)});var FX,Ehe,Sb=y(()=>{W();FX="lightUboDeclaration",Ehe=`#ifdef LIGHT{X} struct Light{X} {vLightData: vec4f, vLightDiffuse: vec4f, @@ -6035,7 +6035,7 @@ uniform lightMatrix{X}: mat4x4f; #endif #endif #endif -`;x.IncludesShadersStoreWGSL[wX]||(x.IncludesShadersStoreWGSL[wX]=ghe)});var FX,_he,_O=y(()=>{W();FX="ltcHelperFunctions",_he=`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;} +`;x.IncludesShadersStoreWGSL[FX]||(x.IncludesShadersStoreWGSL[FX]=Ehe)});var BX,She,vO=y(()=>{W();BX="ltcHelperFunctions",She=`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;} -`;x.IncludesShadersStoreWGSL[FX]||(x.IncludesShadersStoreWGSL[FX]=_he)});var BX,vhe,vO=y(()=>{W();BX="clusteredLightingFunctions",vhe=`struct ClusteredLight {vLightData: vec4f, +`;x.IncludesShadersStoreWGSL[BX]||(x.IncludesShadersStoreWGSL[BX]=She)});var UX,The,EO=y(()=>{W();UX="clusteredLightingFunctions",The=`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);} -`;x.IncludesShadersStoreWGSL[BX]||(x.IncludesShadersStoreWGSL[BX]=vhe)});var UX,Ehe,VX=y(()=>{W();_O();vO();UX="lightsFragmentFunctions",Ehe=`struct lightingInfo +`;x.IncludesShadersStoreWGSL[UX]||(x.IncludesShadersStoreWGSL[UX]=The)});var VX,Ahe,GX=y(()=>{W();vO();EO();VX="lightsFragmentFunctions",Ahe=`struct lightingInfo {diffuse: vec3f, #ifdef SPECULARTERM specular: vec3f, @@ -6189,7 +6189,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;x.IncludesShadersStoreWGSL[UX]||(x.IncludesShadersStoreWGSL[UX]=Ehe)});var GX,She,Eb=y(()=>{W();GX="shadowsFragmentFunctions",She=`#ifdef SHADOWS +`;x.IncludesShadersStoreWGSL[VX]||(x.IncludesShadersStoreWGSL[VX]=Ahe)});var kX,xhe,Tb=y(()=>{W();kX="shadowsFragmentFunctions",xhe=`#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 -`;x.IncludesShadersStoreWGSL[GX]||(x.IncludesShadersStoreWGSL[GX]=She)});var kX,The,Ku=y(()=>{W();kX="samplerFragmentDeclaration",The=`#ifdef _DEFINENAME_ +`;x.IncludesShadersStoreWGSL[kX]||(x.IncludesShadersStoreWGSL[kX]=xhe)});var WX,Rhe,Ku=y(()=>{W();WX="samplerFragmentDeclaration",Rhe=`#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 -`;x.IncludesShadersStoreWGSL[kX]||(x.IncludesShadersStoreWGSL[kX]=The)});var WX,Ahe,zX=y(()=>{W();WX="fresnelFunction",Ahe=`#ifdef FRESNEL +`;x.IncludesShadersStoreWGSL[WX]||(x.IncludesShadersStoreWGSL[WX]=Rhe)});var zX,bhe,HX=y(()=>{W();zX="fresnelFunction",bhe=`#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 -`;x.IncludesShadersStoreWGSL[WX]||(x.IncludesShadersStoreWGSL[WX]=Ahe)});var HX,xhe,qv=y(()=>{W();HX="reflectionFunction",xhe=`fn computeFixedEquirectangularCoords(worldPos: vec4f,worldNormal: vec3f,direction: vec3f)->vec3f +`;x.IncludesShadersStoreWGSL[zX]||(x.IncludesShadersStoreWGSL[zX]=bhe)});var XX,Mhe,qv=y(()=>{W();XX="reflectionFunction",Mhe=`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 -`;x.IncludesShadersStoreWGSL[HX]||(x.IncludesShadersStoreWGSL[HX]=xhe)});var XX,Rhe,Sb=y(()=>{W();XX="imageProcessingDeclaration",Rhe=`#ifdef EXPOSURE +`;x.IncludesShadersStoreWGSL[XX]||(x.IncludesShadersStoreWGSL[XX]=Mhe)});var YX,yhe,Ab=y(()=>{W();YX="imageProcessingDeclaration",yhe=`#ifdef EXPOSURE uniform exposureLinear: f32; #endif #ifdef CONTRAST @@ -6593,7 +6593,7 @@ uniform colorTransformSettings: vec4f; #ifdef DITHER uniform ditherIntensity: f32; #endif -`;x.IncludesShadersStoreWGSL[XX]||(x.IncludesShadersStoreWGSL[XX]=Rhe)});var YX,bhe,Tb=y(()=>{W();YX="imageProcessingFunctions",bhe=`#if TONEMAPPING==3 +`;x.IncludesShadersStoreWGSL[YX]||(x.IncludesShadersStoreWGSL[YX]=yhe)});var KX,Ihe,xb=y(()=>{W();KX="imageProcessingFunctions",Ihe=`#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{W();KX="bumpFragmentMainFunctions",Mhe=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return vec4f(rgb,result.a);}`;x.IncludesShadersStoreWGSL[KX]||(x.IncludesShadersStoreWGSL[KX]=Ihe)});var jX,Che,Rb=y(()=>{W();jX="bumpFragmentMainFunctions",Che=`#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 -`;x.IncludesShadersStoreWGSL[KX]||(x.IncludesShadersStoreWGSL[KX]=Mhe)});var jX,yhe,xb=y(()=>{W();Ku();jX="bumpFragmentFunctions",yhe=`#if defined(BUMP) +`;x.IncludesShadersStoreWGSL[jX]||(x.IncludesShadersStoreWGSL[jX]=Che)});var qX,Phe,bb=y(()=>{W();Ku();qX="bumpFragmentFunctions",Phe=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -6725,7 +6725,7 @@ return -texCoordOffset; #endif } #endif -`;x.IncludesShadersStoreWGSL[jX]||(x.IncludesShadersStoreWGSL[jX]=yhe)});var qX,Ihe,Rb=y(()=>{W();qX="bumpFragment",Ihe=`var uvOffset: vec2f= vec2f(0.0,0.0); +`;x.IncludesShadersStoreWGSL[qX]||(x.IncludesShadersStoreWGSL[qX]=Phe)});var ZX,Dhe,Mb=y(()=>{W();ZX="bumpFragment",Dhe=`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 -`;x.IncludesShadersStoreWGSL[qX]||(x.IncludesShadersStoreWGSL[qX]=Ihe)});var ZX,Che,EO=y(()=>{W();ZX="decalFragment",Che=`#ifdef DECAL +`;x.IncludesShadersStoreWGSL[ZX]||(x.IncludesShadersStoreWGSL[ZX]=Dhe)});var QX,Lhe,SO=y(()=>{W();QX="decalFragment",Lhe=`#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 -`;x.IncludesShadersStoreWGSL[ZX]||(x.IncludesShadersStoreWGSL[ZX]=Che)});var QX,Phe,bb=y(()=>{W();QX="depthPrePass",Phe=`#ifdef DEPTHPREPASS +`;x.IncludesShadersStoreWGSL[QX]||(x.IncludesShadersStoreWGSL[QX]=Lhe)});var $X,Ohe,yb=y(()=>{W();$X="depthPrePass",Ohe=`#ifdef DEPTHPREPASS #if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY) fragmentOutputs.color= vec4f(0.,0.,0.,1.0); #endif return fragmentOutputs; #endif -`;x.IncludesShadersStoreWGSL[QX]||(x.IncludesShadersStoreWGSL[QX]=Phe)});var $X,Dhe,SO=y(()=>{W();$X="lightFragment",Dhe=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[$X]||(x.IncludesShadersStoreWGSL[$X]=Ohe)});var JX,Nhe,TO=y(()=>{W();JX="lightFragment",Nhe=`#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 -`;x.IncludesShadersStoreWGSL[$X]||(x.IncludesShadersStoreWGSL[$X]=Dhe)});var JX,Lhe,Mb=y(()=>{W();JX="logDepthFragment",Lhe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStoreWGSL[JX]||(x.IncludesShadersStoreWGSL[JX]=Nhe)});var e5,whe,Ib=y(()=>{W();e5="logDepthFragment",whe=`#ifdef LOGARITHMICDEPTH fragmentOutputs.fragDepth=log2(fragmentInputs.vFragmentDepth)*uniforms.logarithmicDepthConstant*0.5; #endif -`;x.IncludesShadersStoreWGSL[JX]||(x.IncludesShadersStoreWGSL[JX]=Lhe)});var e5,Ohe,yb=y(()=>{W();e5="oitFragment",Ohe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStoreWGSL[e5]||(x.IncludesShadersStoreWGSL[e5]=whe)});var t5,Fhe,Cb=y(()=>{W();t5="oitFragment",Fhe=`#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 && fragDepthNhe});var TO,t5,Nhe,r5=y(()=>{W();mO();gb();_b();Kp();$a();vb();VX();Eb();Ku();zX();qv();Sb();Tb();Ab();xb();Bc();Yu();Fv();Uc();Rb();EO();bb();SO();Mb();Bv();yb();TO="defaultPixelShader",t5=`#include +`;x.IncludesShadersStoreWGSL[t5]||(x.IncludesShadersStoreWGSL[t5]=Fhe)});var r5={};Be(r5,{defaultPixelShaderWGSL:()=>Bhe});var AO,i5,Bhe,n5=y(()=>{W();pO();vb();Eb();Kp();$a();Sb();GX();Tb();Ku();HX();qv();Ab();xb();Rb();bb();Bc();Yu();Fv();Uc();Mb();SO();yb();TO();Ib();Bv();Cb();AO="defaultPixelShader",i5=`#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 } -`;x.ShadersStoreWGSL[TO]||(x.ShadersStoreWGSL[TO]=t5);Nhe={name:TO,shader:t5}});var n5,whe,Ib=y(()=>{W();n5="decalVertexDeclaration",whe=`#ifdef DECAL +`;x.ShadersStoreWGSL[AO]||(x.ShadersStoreWGSL[AO]=i5);Bhe={name:AO,shader:i5}});var s5,Uhe,Pb=y(()=>{W();s5="decalVertexDeclaration",Uhe=`#ifdef DECAL uniform vec4 vDecalInfos;uniform mat4 decalMatrix; #endif -`;x.IncludesShadersStore[n5]||(x.IncludesShadersStore[n5]=whe)});var s5,Fhe,a5=y(()=>{W();Ib();s5="defaultVertexDeclaration",Fhe=`uniform mat4 viewProjection; +`;x.IncludesShadersStore[s5]||(x.IncludesShadersStore[s5]=Uhe)});var a5,Vhe,o5=y(()=>{W();Pb();a5="defaultVertexDeclaration",Vhe=`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 -`;x.IncludesShadersStore[s5]||(x.IncludesShadersStore[s5]=Fhe)});var o5,Bhe,ju=y(()=>{W();o5="sceneUboDeclaration",Bhe=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection; +`;x.IncludesShadersStore[a5]||(x.IncludesShadersStore[a5]=Vhe)});var l5,Ghe,ju=y(()=>{W();l5="sceneUboDeclaration",Ghe=`layout(std140,column_major) uniform;uniform Scene {mat4 viewProjection; #ifdef MULTIVIEW mat4 viewProjectionR; #endif mat4 view;mat4 projection;vec4 vEyePosition;mat4 inverseProjection;}; -`;x.IncludesShadersStore[o5]||(x.IncludesShadersStore[o5]=Bhe)});var l5,Uhe,Zv=y(()=>{W();l5="meshUboDeclaration",Uhe=`#ifdef WEBGL2 +`;x.IncludesShadersStore[l5]||(x.IncludesShadersStore[l5]=Ghe)});var c5,khe,Zv=y(()=>{W();c5="meshUboDeclaration",khe=`#ifdef WEBGL2 uniform mat4 world;uniform float visibility; #else layout(std140,column_major) uniform;uniform Mesh {mat4 world;float visibility;}; #endif #define WORLD_UBO -`;x.IncludesShadersStore[l5]||(x.IncludesShadersStore[l5]=Uhe)});var c5,Vhe,AO=y(()=>{W();ju();Zv();c5="defaultUboDeclaration",Vhe=`layout(std140,column_major) uniform;uniform Material +`;x.IncludesShadersStore[c5]||(x.IncludesShadersStore[c5]=khe)});var f5,Whe,xO=y(()=>{W();ju();Zv();f5="defaultUboDeclaration",Whe=`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 -`;x.IncludesShadersStore[c5]||(x.IncludesShadersStore[c5]=Vhe)});var f5,Ghe,Cb=y(()=>{W();f5="uvAttributeDeclaration",Ghe=`#ifdef UV{X} +`;x.IncludesShadersStore[f5]||(x.IncludesShadersStore[f5]=Whe)});var d5,zhe,Db=y(()=>{W();d5="uvAttributeDeclaration",zhe=`#ifdef UV{X} attribute vec2 uv{X}; #endif -`;x.IncludesShadersStore[f5]||(x.IncludesShadersStore[f5]=Ghe)});var d5,khe,Pb=y(()=>{W();d5="prePassVertexDeclaration",khe=`#ifdef PREPASS +`;x.IncludesShadersStore[d5]||(x.IncludesShadersStore[d5]=zhe)});var u5,Hhe,Lb=y(()=>{W();u5="prePassVertexDeclaration",Hhe=`#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 -`;x.IncludesShadersStore[d5]||(x.IncludesShadersStore[d5]=khe)});var u5,Whe,jp=y(()=>{W();u5="mainUVVaryingDeclaration",Whe=`#ifdef MAINUV{X} +`;x.IncludesShadersStore[u5]||(x.IncludesShadersStore[u5]=Hhe)});var h5,Xhe,jp=y(()=>{W();h5="mainUVVaryingDeclaration",Xhe=`#ifdef MAINUV{X} varying vec2 vMainUV{X}; #endif -`;x.IncludesShadersStore[u5]||(x.IncludesShadersStore[u5]=Whe)});var h5,zhe,Db=y(()=>{W();h5="samplerVertexDeclaration",zhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStore[h5]||(x.IncludesShadersStore[h5]=Xhe)});var m5,Yhe,Ob=y(()=>{W();m5="samplerVertexDeclaration",Yhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying vec2 v_VARYINGNAME_UV; #endif -`;x.IncludesShadersStore[h5]||(x.IncludesShadersStore[h5]=zhe)});var m5,Hhe,xO=y(()=>{W();m5="bumpVertexDeclaration",Hhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStore[m5]||(x.IncludesShadersStore[m5]=Yhe)});var p5,Khe,RO=y(()=>{W();p5="bumpVertexDeclaration",Khe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif #endif -`;x.IncludesShadersStore[m5]||(x.IncludesShadersStore[m5]=Hhe)});var p5,Xhe,Lb=y(()=>{W();p5="lightVxFragmentDeclaration",Xhe=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[p5]||(x.IncludesShadersStore[p5]=Khe)});var g5,jhe,Nb=y(()=>{W();g5="lightVxFragmentDeclaration",jhe=`#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 -`;x.IncludesShadersStore[p5]||(x.IncludesShadersStore[p5]=Xhe)});var g5,Yhe,Ob=y(()=>{W();g5="lightVxUboDeclaration",Yhe=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[g5]||(x.IncludesShadersStore[g5]=jhe)});var _5,qhe,wb=y(()=>{W();_5="lightVxUboDeclaration",qhe=`#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 -`;x.IncludesShadersStore[g5]||(x.IncludesShadersStore[g5]=Yhe)});var _5,Khe,Sd=y(()=>{W();_5="morphTargetsVertexGlobalDeclaration",Khe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStore[_5]||(x.IncludesShadersStore[_5]=qhe)});var v5,Zhe,Sd=y(()=>{W();v5="morphTargetsVertexGlobalDeclaration",Zhe=`#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 -`;x.IncludesShadersStore[_5]||(x.IncludesShadersStore[_5]=Khe)});var v5,jhe,Td=y(()=>{W();v5="morphTargetsVertexDeclaration",jhe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStore[v5]||(x.IncludesShadersStore[v5]=Zhe)});var E5,Qhe,Td=y(()=>{W();E5="morphTargetsVertexDeclaration",Qhe=`#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 -`;x.IncludesShadersStore[v5]||(x.IncludesShadersStore[v5]=jhe)});var E5,qhe,qu=y(()=>{W();E5="logDepthDeclaration",qhe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStore[E5]||(x.IncludesShadersStore[E5]=Qhe)});var S5,$he,qu=y(()=>{W();S5="logDepthDeclaration",$he=`#ifdef LOGARITHMICDEPTH uniform float logarithmicDepthConstant;varying float vFragmentDepth; #endif -`;x.IncludesShadersStore[E5]||(x.IncludesShadersStore[E5]=qhe)});var S5,Zhe,Ad=y(()=>{W();S5="morphTargetsVertexGlobal",Zhe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStore[S5]||(x.IncludesShadersStore[S5]=$he)});var T5,Jhe,Ad=y(()=>{W();T5="morphTargetsVertexGlobal",Jhe=`#ifdef MORPHTARGETS #ifdef MORPHTARGETS_TEXTURE float vertexID; #endif #endif -`;x.IncludesShadersStore[S5]||(x.IncludesShadersStore[S5]=Zhe)});var T5,Qhe,xd=y(()=>{W();T5="morphTargetsVertex",Qhe=`#ifdef MORPHTARGETS +`;x.IncludesShadersStore[T5]||(x.IncludesShadersStore[T5]=Jhe)});var A5,eme,xd=y(()=>{W();A5="morphTargetsVertex",eme=`#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 -`;x.IncludesShadersStore[T5]||(x.IncludesShadersStore[T5]=Qhe)});var A5,$he,Nb=y(()=>{W();A5="prePassVertex",$he=`#ifdef PREPASS_DEPTH +`;x.IncludesShadersStore[A5]||(x.IncludesShadersStore[A5]=eme)});var x5,tme,Fb=y(()=>{W();x5="prePassVertex",tme=`#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 -`;x.IncludesShadersStore[A5]||(x.IncludesShadersStore[A5]=$he)});var x5,Jhe,wb=y(()=>{W();x5="uvVariableDeclaration",Jhe=`#if !defined(UV{X}) && defined(MAINUV{X}) +`;x.IncludesShadersStore[x5]||(x.IncludesShadersStore[x5]=tme)});var R5,ime,Bb=y(()=>{W();R5="uvVariableDeclaration",ime=`#if !defined(UV{X}) && defined(MAINUV{X}) vec2 uv{X}=vec2(0.,0.); #endif #ifdef MAINUV{X} vMainUV{X}=uv{X}; #endif -`;x.IncludesShadersStore[x5]||(x.IncludesShadersStore[x5]=Jhe)});var R5,eme,Fb=y(()=>{W();R5="samplerVertexImplementation",eme=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStore[R5]||(x.IncludesShadersStore[R5]=ime)});var b5,rme,Ub=y(()=>{W();b5="samplerVertexImplementation",rme=`#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 -`;x.IncludesShadersStore[R5]||(x.IncludesShadersStore[R5]=eme)});var b5,tme,Bb=y(()=>{W();b5="bumpVertex",tme=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStore[b5]||(x.IncludesShadersStore[b5]=rme)});var M5,nme,Vb=y(()=>{W();M5="bumpVertex",nme=`#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 -`;x.IncludesShadersStore[b5]||(x.IncludesShadersStore[b5]=tme)});var M5,ime,Ub=y(()=>{W();M5="shadowsVertex",ime=`#ifdef SHADOWS +`;x.IncludesShadersStore[M5]||(x.IncludesShadersStore[M5]=nme)});var y5,sme,Gb=y(()=>{W();y5="shadowsVertex",sme=`#ifdef SHADOWS #if defined(SHADOWCSM{X}) vPositionFromCamera{X}=view*worldPos;for (int i=0; i{W();y5="pointCloudVertex",rme=`#if defined(POINTSIZE) && !defined(WEBGPU) +`;x.IncludesShadersStore[y5]||(x.IncludesShadersStore[y5]=sme)});var I5,ame,bO=y(()=>{W();I5="pointCloudVertex",ame=`#if defined(POINTSIZE) && !defined(WEBGPU) gl_PointSize=pointSize; #endif -`;x.IncludesShadersStore[y5]||(x.IncludesShadersStore[y5]=rme)});var I5,nme,Vb=y(()=>{W();I5="logDepthVertex",nme=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStore[I5]||(x.IncludesShadersStore[I5]=ame)});var C5,ome,kb=y(()=>{W();C5="logDepthVertex",ome=`#ifdef LOGARITHMICDEPTH vFragmentDepth=1.0+gl_Position.w;gl_Position.z=log2(max(0.000001,vFragmentDepth))*logarithmicDepthConstant; #endif -`;x.IncludesShadersStore[I5]||(x.IncludesShadersStore[I5]=nme)});var P5={};Be(P5,{defaultVertexShader:()=>sme});var bO,C5,sme,D5=y(()=>{W();a5();AO();Cb();Ja();Vc();Gc();md();Pb();jp();Db();xO();kc();Uv();Lb();Ob();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Nb();wb();Fb();Bb();Xc();Vv();Ub();Gv();RO();Vb();bO="defaultVertexShader",C5=`#define CUSTOM_VERTEX_EXTENSION +`;x.IncludesShadersStore[C5]||(x.IncludesShadersStore[C5]=ome)});var D5={};Be(D5,{defaultVertexShader:()=>lme});var MO,P5,lme,L5=y(()=>{W();o5();xO();Db();Ja();Vc();Gc();md();Lb();jp();Ob();RO();kc();Uv();Nb();wb();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Fb();Bb();Ub();Vb();Xc();Vv();Gb();Gv();bO();kb();MO="defaultVertexShader",P5=`#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 } -`;x.ShadersStore[bO]||(x.ShadersStore[bO]=C5);sme={name:bO,shader:C5}});var L5,ame,Gb=y(()=>{W();L5="decalFragmentDeclaration",ame=`#ifdef DECAL +`;x.ShadersStore[MO]||(x.ShadersStore[MO]=P5);lme={name:MO,shader:P5}});var O5,cme,Wb=y(()=>{W();O5="decalFragmentDeclaration",cme=`#ifdef DECAL uniform vec4 vDecalInfos; #endif -`;x.IncludesShadersStore[L5]||(x.IncludesShadersStore[L5]=ame)});var O5,ome,N5=y(()=>{W();Gb();O5="defaultFragmentDeclaration",ome=`uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;uniform vec4 vSpecularColor;uniform vec3 vEmissiveColor;uniform vec3 vAmbientColor;uniform float visibility; +`;x.IncludesShadersStore[O5]||(x.IncludesShadersStore[O5]=cme)});var N5,fme,w5=y(()=>{W();Wb();N5="defaultFragmentDeclaration",fme=`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 -`;x.IncludesShadersStore[O5]||(x.IncludesShadersStore[O5]=ome)});var w5,lme,kb=y(()=>{W();w5="prePassDeclaration",lme=`#ifdef PREPASS +`;x.IncludesShadersStore[N5]||(x.IncludesShadersStore[N5]=fme)});var F5,dme,zb=y(()=>{W();F5="prePassDeclaration",dme=`#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 -`;x.IncludesShadersStore[w5]||(x.IncludesShadersStore[w5]=lme)});var F5,cme,Wb=y(()=>{W();F5="oitDeclaration",cme=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStore[F5]||(x.IncludesShadersStore[F5]=dme)});var B5,ume,Hb=y(()=>{W();B5="oitDeclaration",ume=`#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 -`;x.IncludesShadersStore[F5]||(x.IncludesShadersStore[F5]=cme)});var B5,fme,zb=y(()=>{W();B5="lightFragmentDeclaration",fme=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[B5]||(x.IncludesShadersStore[B5]=ume)});var U5,hme,Xb=y(()=>{W();U5="lightFragmentDeclaration",hme=`#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 -`;x.IncludesShadersStore[B5]||(x.IncludesShadersStore[B5]=fme)});var U5,dme,Hb=y(()=>{W();U5="lightUboDeclaration",dme=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[U5]||(x.IncludesShadersStore[U5]=hme)});var V5,mme,Yb=y(()=>{W();V5="lightUboDeclaration",mme=`#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 -`;x.IncludesShadersStore[U5]||(x.IncludesShadersStore[U5]=dme)});var V5,ume,MO=y(()=>{W();V5="ltcHelperFunctions",ume=`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;} +`;x.IncludesShadersStore[V5]||(x.IncludesShadersStore[V5]=mme)});var G5,pme,yO=y(()=>{W();G5="ltcHelperFunctions",pme=`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;}`;x.IncludesShadersStore[V5]||(x.IncludesShadersStore[V5]=ume)});var G5,hme,yO=y(()=>{W();G5="clusteredLightingFunctions",hme=`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;}`;x.IncludesShadersStore[G5]||(x.IncludesShadersStore[G5]=pme)});var k5,gme,IO=y(()=>{W();k5="clusteredLightingFunctions",gme=`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);} -`;x.IncludesShadersStore[G5]||(x.IncludesShadersStore[G5]=hme)});var k5,mme,W5=y(()=>{W();MO();yO();k5="lightsFragmentFunctions",mme=`struct lightingInfo +`;x.IncludesShadersStore[k5]||(x.IncludesShadersStore[k5]=gme)});var W5,_me,z5=y(()=>{W();yO();IO();W5="lightsFragmentFunctions",_me=`struct lightingInfo {vec3 diffuse; #ifdef SPECULARTERM vec3 specular; @@ -8470,7 +8470,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;x.IncludesShadersStore[k5]||(x.IncludesShadersStore[k5]=mme)});var z5,pme,Xb=y(()=>{W();z5="shadowsFragmentFunctions",pme=`#ifdef SHADOWS +`;x.IncludesShadersStore[W5]||(x.IncludesShadersStore[W5]=_me)});var H5,vme,Kb=y(()=>{W();H5="shadowsFragmentFunctions",vme=`#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 -`;x.IncludesShadersStore[z5]||(x.IncludesShadersStore[z5]=pme)});var H5,gme,Zu=y(()=>{W();H5="samplerFragmentDeclaration",gme=`#ifdef _DEFINENAME_ +`;x.IncludesShadersStore[H5]||(x.IncludesShadersStore[H5]=vme)});var X5,Eme,Zu=y(()=>{W();X5="samplerFragmentDeclaration",Eme=`#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 -`;x.IncludesShadersStore[H5]||(x.IncludesShadersStore[H5]=gme)});var X5,_me,Y5=y(()=>{W();X5="fresnelFunction",_me=`#ifdef FRESNEL +`;x.IncludesShadersStore[X5]||(x.IncludesShadersStore[X5]=Eme)});var Y5,Sme,K5=y(()=>{W();Y5="fresnelFunction",Sme=`#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 -`;x.IncludesShadersStore[X5]||(x.IncludesShadersStore[X5]=_me)});var K5,vme,Qv=y(()=>{W();K5="reflectionFunction",vme=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) +`;x.IncludesShadersStore[Y5]||(x.IncludesShadersStore[Y5]=Sme)});var j5,Tme,Qv=y(()=>{W();j5="reflectionFunction",Tme=`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 -`;x.IncludesShadersStore[K5]||(x.IncludesShadersStore[K5]=vme)});var j5,Eme,Yb=y(()=>{W();j5="imageProcessingDeclaration",Eme=`#ifdef EXPOSURE +`;x.IncludesShadersStore[j5]||(x.IncludesShadersStore[j5]=Tme)});var q5,Ame,jb=y(()=>{W();q5="imageProcessingDeclaration",Ame=`#ifdef EXPOSURE uniform float exposureLinear; #endif #ifdef CONTRAST @@ -8923,7 +8923,7 @@ uniform vec4 colorTransformSettings; #ifdef DITHER uniform float ditherIntensity; #endif -`;x.IncludesShadersStore[j5]||(x.IncludesShadersStore[j5]=Eme)});var q5,Sme,Kb=y(()=>{W();q5="imageProcessingFunctions",Sme=`#if defined(COLORGRADING) && !defined(COLORGRADING3D) +`;x.IncludesShadersStore[q5]||(x.IncludesShadersStore[q5]=Ame)});var Z5,xme,qb=y(()=>{W();Z5="imageProcessingFunctions",xme=`#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;}`;x.IncludesShadersStore[q5]||(x.IncludesShadersStore[q5]=Sme)});var Z5,Tme,jb=y(()=>{W();Z5="bumpFragmentMainFunctions",Tme=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return result;}`;x.IncludesShadersStore[Z5]||(x.IncludesShadersStore[Z5]=xme)});var Q5,Rme,Zb=y(()=>{W();Q5="bumpFragmentMainFunctions",Rme=`#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 -`;x.IncludesShadersStore[Z5]||(x.IncludesShadersStore[Z5]=Tme)});var Q5,Ame,qb=y(()=>{W();Zu();Q5="bumpFragmentFunctions",Ame=`#if defined(BUMP) +`;x.IncludesShadersStore[Q5]||(x.IncludesShadersStore[Q5]=Rme)});var $5,bme,Qb=y(()=>{W();Zu();$5="bumpFragmentFunctions",bme=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -9102,7 +9102,7 @@ return -texCoordOffset; #endif } #endif -`;x.IncludesShadersStore[Q5]||(x.IncludesShadersStore[Q5]=Ame)});var $5,xme,Zb=y(()=>{W();$5="bumpFragment",xme=`vec2 uvOffset=vec2(0.0,0.0); +`;x.IncludesShadersStore[$5]||(x.IncludesShadersStore[$5]=bme)});var J5,Mme,$b=y(()=>{W();J5="bumpFragment",Mme=`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 -`;x.IncludesShadersStore[$5]||(x.IncludesShadersStore[$5]=xme)});var J5,Rme,IO=y(()=>{W();J5="decalFragment",Rme=`#ifdef DECAL +`;x.IncludesShadersStore[J5]||(x.IncludesShadersStore[J5]=Mme)});var eY,yme,CO=y(()=>{W();eY="decalFragment",yme=`#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 -`;x.IncludesShadersStore[J5]||(x.IncludesShadersStore[J5]=Rme)});var eY,bme,Qb=y(()=>{W();eY="depthPrePass",bme=`#ifdef DEPTHPREPASS +`;x.IncludesShadersStore[eY]||(x.IncludesShadersStore[eY]=yme)});var tY,Ime,Jb=y(()=>{W();tY="depthPrePass",Ime=`#ifdef DEPTHPREPASS gl_FragColor=vec4(0.,0.,0.,1.0);return; #endif -`;x.IncludesShadersStore[eY]||(x.IncludesShadersStore[eY]=bme)});var tY,Mme,CO=y(()=>{W();tY="lightFragment",Mme=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[tY]||(x.IncludesShadersStore[tY]=Ime)});var iY,Cme,PO=y(()=>{W();iY="lightFragment",Cme=`#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 -`;x.IncludesShadersStore[tY]||(x.IncludesShadersStore[tY]=Mme)});var iY,yme,$b=y(()=>{W();iY="logDepthFragment",yme=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStore[iY]||(x.IncludesShadersStore[iY]=Cme)});var rY,Pme,eM=y(()=>{W();rY="logDepthFragment",Pme=`#ifdef LOGARITHMICDEPTH gl_FragDepthEXT=log2(vFragmentDepth)*logarithmicDepthConstant*0.5; #endif -`;x.IncludesShadersStore[iY]||(x.IncludesShadersStore[iY]=yme)});var rY,Ime,Jb=y(()=>{W();rY="oitFragment",Ime=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStore[rY]||(x.IncludesShadersStore[rY]=Pme)});var nY,Dme,tM=y(()=>{W();nY="oitFragment",Dme=`#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 && fragDepthCme});var PO,nY,Cme,aY=y(()=>{W();N5();AO();kb();Wb();jp();Ja();zb();Hb();W5();Xb();Zu();Y5();Qv();Yb();Kb();jb();qb();Yc();qu();kv();Kc();Zb();IO();Qb();CO();$b();Wv();Jb();PO="defaultPixelShader",nY=`#define CUSTOM_FRAGMENT_EXTENSION +`;x.IncludesShadersStore[nY]||(x.IncludesShadersStore[nY]=Dme)});var aY={};Be(aY,{defaultPixelShader:()=>Lme});var DO,sY,Lme,oY=y(()=>{W();w5();xO();zb();Hb();jp();Ja();Xb();Yb();z5();Kb();Zu();K5();Qv();jb();qb();Zb();Qb();Yc();qu();kv();Kc();$b();CO();Jb();PO();eM();Wv();tM();DO="defaultPixelShader",sY=`#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 } -`;x.ShadersStore[PO]||(x.ShadersStore[PO]=nY);Cme={name:PO,shader:nY}});var DO,LO,OO,NO,ze,jc=y(()=>{Xt();zt();Oo();Ks();Kt();Yi();$R();JR();dv();ts();ro();Dv();er();to();fd();hO();Ol();Lv();es();Dr();eb();tb();ib();rb();DO={effect:null,subMesh:null},LO=class extends Xp(Hp(Lr)){},OO=class extends Wp(LO){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()}},NO=class extends Yp(Bl){},ze=class n extends NO{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 Ee(0,0,0),this.diffuseColor=new Ee(1,1,1),this.specularColor=new Ee(1,1,1),this.emissiveColor=new Ee(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 Ki(16),this._globalAmbientColor=new Ee(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new no(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new Js,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===Ae.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Ae.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 OO(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=bp(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!Rp(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;Ip(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(s,a,this.canRenderToMRT&&!l),Cp(s,a,l),ss.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())si(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())si(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())si(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),!id(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())si(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())si(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())si(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())si(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_${I}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,a,u,v));let E=a.toString(),T=t.effect,S=s.getEngine().createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:_,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(()=>(LX(),DX)),Promise.resolve().then(()=>(r5(),i5))]):await Promise.all([Promise.resolve().then(()=>(D5(),P5)),Promise.resolve().then(()=>(aY(),sY))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,S)if(this._onEffectCreatedObservable&&(DO.effect=S,DO.subMesh=t,this._onEffectCreatedObservable.notifyObservers(DO)),this.allowShaderHotSwapping&&T&&!S.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(S,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),Lp(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),ss.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);qs(t,a),this._vertexPullingMetadata&&ud(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=Ln.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),ai(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),ai(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ai(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),_p(r,s,c,Ee.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),ai(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ai(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),ai(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),ai(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 u=this._refractionTexture;c.updateVector3("vRefractionPosition",u.boundingBoxPosition),c.updateVector3("vRefractionSize",u.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:Ee.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),$n(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Ep(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ri.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),ed(r,t,a),s.NUM_MORPH_INFLUENCERS&&Jn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Jf(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=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return fe.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){fe.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return fe.DetailTextureEnabled}static set DetailTextureEnabled(e){fe.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return fe.AmbientTextureEnabled}static set AmbientTextureEnabled(e){fe.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return fe.OpacityTextureEnabled}static set OpacityTextureEnabled(e){fe.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return fe.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){fe.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return fe.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){fe.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return fe.SpecularTextureEnabled}static set SpecularTextureEnabled(e){fe.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return fe.BumpTextureEnabled}static set BumpTextureEnabled(e){fe.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return fe.LightmapTextureEnabled}static set LightmapTextureEnabled(e){fe.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return fe.RefractionTextureEnabled}static set RefractionTextureEnabled(e){fe.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return fe.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){fe.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return fe.FresnelEnabled}static set FresnelEnabled(e){fe.FresnelEnabled=e}};ze.ForceGLSL=!1;P([Wt("diffuseTexture")],ze.prototype,"_diffuseTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"diffuseTexture",void 0);P([Wt("ambientTexture")],ze.prototype,"_ambientTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"ambientTexture",void 0);P([Wt("opacityTexture")],ze.prototype,"_opacityTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"opacityTexture",void 0);P([Wt("reflectionTexture")],ze.prototype,"_reflectionTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"reflectionTexture",void 0);P([Wt("emissiveTexture")],ze.prototype,"_emissiveTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"emissiveTexture",void 0);P([Wt("specularTexture")],ze.prototype,"_specularTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"specularTexture",void 0);P([Wt("bumpTexture")],ze.prototype,"_bumpTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"bumpTexture",void 0);P([Wt("lightmapTexture")],ze.prototype,"_lightmapTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"lightmapTexture",void 0);P([Wt("refractionTexture")],ze.prototype,"_refractionTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"refractionTexture",void 0);P([yr("ambient")],ze.prototype,"ambientColor",void 0);P([yr("diffuse")],ze.prototype,"diffuseColor",void 0);P([yr("specular")],ze.prototype,"specularColor",void 0);P([yr("emissive")],ze.prototype,"emissiveColor",void 0);P([F()],ze.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],ze.prototype,"_useAlphaFromDiffuseTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],ze.prototype,"_useEmissiveAsIllumination",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],ze.prototype,"_linkEmissiveWithDiffuse",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],ze.prototype,"_useSpecularOverAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],ze.prototype,"_useReflectionOverAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],ze.prototype,"_disableLighting",void 0);P([ce("_markAllSubMeshesAsLightsDirty")],ze.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],ze.prototype,"_useObjectSpaceNormalMap",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],ze.prototype,"_useParallax",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],ze.prototype,"_useParallaxOcclusion",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useParallaxOcclusion",void 0);P([F()],ze.prototype,"parallaxScaleBias",void 0);P([F("roughness")],ze.prototype,"_roughness",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"roughness",void 0);P([F()],ze.prototype,"indexOfRefraction",void 0);P([F()],ze.prototype,"invertRefractionY",void 0);P([F()],ze.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],ze.prototype,"_useLightmapAsShadowmap",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useLightmapAsShadowmap",void 0);P([$m("diffuseFresnelParameters")],ze.prototype,"_diffuseFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"diffuseFresnelParameters",void 0);P([$m("opacityFresnelParameters")],ze.prototype,"_opacityFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelAndMiscDirty")],ze.prototype,"opacityFresnelParameters",void 0);P([$m("reflectionFresnelParameters")],ze.prototype,"_reflectionFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"reflectionFresnelParameters",void 0);P([$m("refractionFresnelParameters")],ze.prototype,"_refractionFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"refractionFresnelParameters",void 0);P([$m("emissiveFresnelParameters")],ze.prototype,"_emissiveFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],ze.prototype,"_useReflectionFresnelFromSpecular",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],ze.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],ze.prototype,"_maxSimultaneousLights",void 0);P([ce("_markAllSubMeshesAsLightsDirty")],ze.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],ze.prototype,"_invertNormalMapX",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],ze.prototype,"_invertNormalMapY",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],ze.prototype,"_twoSidedLighting",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],ze.prototype,"_applyDecalMapAfterDetailMap",void 0);P([ce("_markAllSubMeshesAsMiscDirty")],ze.prototype,"applyDecalMapAfterDetailMap",void 0);Bt("BABYLON.StandardMaterial",ze);ri.DefaultMaterialFactory=n=>new ze("default material",n)});var oY=y(()=>{Mo();Es();zs();Mt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Vi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?Pn(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?Pn(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};Mt.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),u=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,u,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 eM,lY=y(()=>{Lt();Xr();oY();eM=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 h=t;h.width||h.width===0?this._texture=d.createDynamicTexture(h.width,h.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let u=this.getSize();this._canvas.width!==u.width&&(this._canvas.width=u.width),this._canvas.height!==u.height&&(this._canvas.height=u.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 iM(n,e,t,i,r,s=!1){let a=rn.Zero();return $v(n,e,t,i,a,r,s),a}function $v(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:u,width:h,height:m}=c.toGlobal(l.getRenderWidth(),f),g=1/l.getHardwareScalingLevel();return e=e*g-d,t=t*g-(f-u-m),r.update(e,t,h,m,i||Z.IdentityReadOnly,a?Z.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function dY(n,e,t,i){let r=rn.Zero();return wO(n,e,t,r,i),r}function wO(n,e,t,i,r){if(!As)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),u=Z.Identity(),h=1/s.getHardwareScalingLevel();return e=e*h-l,t=t*h-(o-c-d),i.update(e,t,f,d,u,u,r.getProjectionMatrix()),n}function tM(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return FO(n,t,i,l,r,s,a,o)}function FO(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 Pme(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function uY(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?Pme(e,n):0}}function hY(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 BO(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=fY.internalPickerForMesh||tM,f=c===tM;for(let d=0;d>4);for(let A=0;A1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=fY.internalPickerForMesh||tM,l=o===tM;for(let c=0;c>4);for(let T=0;T(n._tempPickingRay||(n._tempPickingRay=rn.Zero()),$v(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=iM(n,e,t,Z.Identity(),s||null)),a}function gY(n,e,t,i,r,s,a,o=!1){let l=BO(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=rn.Zero()),$v(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=iM(n,e,t,Z.Identity(),s||null)),l}function _Y(n,e,t,i,r){let s=BO(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=rn.Zero()),rn.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function vY(n,e,t,i,r,s){return mY(n,a=>iM(n,e,t,a,r||null),i,s)}function EY(n,e,t,i){return mY(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=rn.Zero()),rn.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function cY(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 SY(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return cY(this,new rn(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return cY(this,t,i,r,s)}),n&&(Uu._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return iM(this,t,i,r,s,a)})}var fY,rn,UO=y(()=>{Kn();We();Al();aL();uv();Gi();hD();fY={internalPickerForMesh:void 0},rn=class n{constructor(e,t,i=Number.MAX_VALUE,r=wt){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 u=b.Dot(this.direction,l)*f;if(u<-this.epsilon||d+u>1+this.epsilon)return null;let h=b.Dot(s,l)*f;return h>this.length||h<0?null:new Gu(1-d-u,d,h)}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),u=b.Dot(s,l),h=b.Dot(o,l),m=c*d-f*f,g,p=m,_,v=m;mp&&(g=p,_=h+f,v=d)),_<0?(_=0,-u<0?g=0:-u>c?g=p:(g=-u,p=c)):_>v&&(_=v,-u+f<0?g=0:-u+f>c?g=p:(g=-u+f,p=c));let E=Math.abs(g)0&&T<=this.length&&R.lengthSquared(){Ks();Dl();UO();UO();SY(ri,_t);ri.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return $v(this,n,e,t,i,r,s,a)};ri.prototype.createPickingRayInCameraSpace=function(n,e,t){return dY(this,n,e,t)};ri.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return wO(this,n,e,t,i)};ri.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return pY(this,n,e,t,i,r)};ri.prototype.pick=function(n,e,t,i,r,s,a=!1){return gY(this,n,e,t,i,r,s,a)};ri.prototype.pickWithRay=function(n,e,t,i){return _Y(this,n,e,t,i)};ri.prototype.multiPick=function(n,e,t,i,r){return vY(this,n,e,t,i,r)};ri.prototype.multiPickWithRay=function(n,e,t){return EY(this,n,e,t)}});var TY,Dme,GO=y(()=>{W();TY="kernelBlurVaryingDeclaration",Dme="varying sampleCoord{X}: vec2f;";x.IncludesShadersStoreWGSL[TY]||(x.IncludesShadersStoreWGSL[TY]=Dme)});var AY,Lme,rM=y(()=>{W();AY="packingFunctions",Lme=`fn pack(depth: f32)->vec4f +`;x.ShadersStore[DO]||(x.ShadersStore[DO]=sY);Lme={name:DO,shader:sY}});var LO,OO,NO,wO,ze,jc=y(()=>{Xt();zt();Oo();js();Kt();Yi();eb();tb();dv();ts();ro();Dv();er();to();fd();mO();Ol();Lv();es();Dr();ib();rb();nb();sb();LO={effect:null,subMesh:null},OO=class extends Xp(Hp(Lr)){},NO=class extends Wp(OO){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()}},wO=class extends Yp(Bl){},ze=class n extends wO{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 Ee(0,0,0),this.diffuseColor=new Ee(1,1,1),this.specularColor=new Ee(1,1,1),this.emissiveColor=new Ee(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 Ki(16),this._globalAmbientColor=new Ee(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new no(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new ea,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===Ae.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Ae.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 NO(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=bp(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!Rp(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;Ip(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(s,a,this.canRenderToMRT&&!l),Cp(s,a,l),ss.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())si(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())si(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())si(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),!id(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())si(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())si(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())si(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())si(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_${I}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,a,u,v));let E=a.toString(),T=t.effect,S=s.getEngine().createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:_,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(()=>(OX(),LX)),Promise.resolve().then(()=>(n5(),r5))]):await Promise.all([Promise.resolve().then(()=>(L5(),D5)),Promise.resolve().then(()=>(oY(),aY))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,S)if(this._onEffectCreatedObservable&&(LO.effect=S,LO.subMesh=t,this._onEffectCreatedObservable.notifyObservers(LO)),this.allowShaderHotSwapping&&T&&!S.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(S,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),Lp(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),ss.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);Zs(t,a),this._vertexPullingMetadata&&ud(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=Ln.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),ai(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),ai(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ai(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),_p(r,s,c,Ee.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),ai(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ai(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),ai(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),ai(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 u=this._refractionTexture;c.updateVector3("vRefractionPosition",u.boundingBoxPosition),c.updateVector3("vRefractionSize",u.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:Ee.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),$n(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Ep(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ri.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),ed(r,t,a),s.NUM_MORPH_INFLUENCERS&&Jn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Jf(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=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return fe.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){fe.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return fe.DetailTextureEnabled}static set DetailTextureEnabled(e){fe.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return fe.AmbientTextureEnabled}static set AmbientTextureEnabled(e){fe.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return fe.OpacityTextureEnabled}static set OpacityTextureEnabled(e){fe.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return fe.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){fe.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return fe.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){fe.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return fe.SpecularTextureEnabled}static set SpecularTextureEnabled(e){fe.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return fe.BumpTextureEnabled}static set BumpTextureEnabled(e){fe.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return fe.LightmapTextureEnabled}static set LightmapTextureEnabled(e){fe.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return fe.RefractionTextureEnabled}static set RefractionTextureEnabled(e){fe.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return fe.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){fe.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return fe.FresnelEnabled}static set FresnelEnabled(e){fe.FresnelEnabled=e}};ze.ForceGLSL=!1;P([Wt("diffuseTexture")],ze.prototype,"_diffuseTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"diffuseTexture",void 0);P([Wt("ambientTexture")],ze.prototype,"_ambientTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"ambientTexture",void 0);P([Wt("opacityTexture")],ze.prototype,"_opacityTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"opacityTexture",void 0);P([Wt("reflectionTexture")],ze.prototype,"_reflectionTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"reflectionTexture",void 0);P([Wt("emissiveTexture")],ze.prototype,"_emissiveTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"emissiveTexture",void 0);P([Wt("specularTexture")],ze.prototype,"_specularTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"specularTexture",void 0);P([Wt("bumpTexture")],ze.prototype,"_bumpTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"bumpTexture",void 0);P([Wt("lightmapTexture")],ze.prototype,"_lightmapTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"lightmapTexture",void 0);P([Wt("refractionTexture")],ze.prototype,"_refractionTexture",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"refractionTexture",void 0);P([yr("ambient")],ze.prototype,"ambientColor",void 0);P([yr("diffuse")],ze.prototype,"diffuseColor",void 0);P([yr("specular")],ze.prototype,"specularColor",void 0);P([yr("emissive")],ze.prototype,"emissiveColor",void 0);P([F()],ze.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],ze.prototype,"_useAlphaFromDiffuseTexture",void 0);P([ce("_markAllSubMeshesAsTexturesAndMiscDirty")],ze.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],ze.prototype,"_useEmissiveAsIllumination",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],ze.prototype,"_linkEmissiveWithDiffuse",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],ze.prototype,"_useSpecularOverAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],ze.prototype,"_useReflectionOverAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],ze.prototype,"_disableLighting",void 0);P([ce("_markAllSubMeshesAsLightsDirty")],ze.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],ze.prototype,"_useObjectSpaceNormalMap",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],ze.prototype,"_useParallax",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],ze.prototype,"_useParallaxOcclusion",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useParallaxOcclusion",void 0);P([F()],ze.prototype,"parallaxScaleBias",void 0);P([F("roughness")],ze.prototype,"_roughness",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"roughness",void 0);P([F()],ze.prototype,"indexOfRefraction",void 0);P([F()],ze.prototype,"invertRefractionY",void 0);P([F()],ze.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],ze.prototype,"_useLightmapAsShadowmap",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useLightmapAsShadowmap",void 0);P([$m("diffuseFresnelParameters")],ze.prototype,"_diffuseFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"diffuseFresnelParameters",void 0);P([$m("opacityFresnelParameters")],ze.prototype,"_opacityFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelAndMiscDirty")],ze.prototype,"opacityFresnelParameters",void 0);P([$m("reflectionFresnelParameters")],ze.prototype,"_reflectionFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"reflectionFresnelParameters",void 0);P([$m("refractionFresnelParameters")],ze.prototype,"_refractionFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"refractionFresnelParameters",void 0);P([$m("emissiveFresnelParameters")],ze.prototype,"_emissiveFresnelParameters",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],ze.prototype,"_useReflectionFresnelFromSpecular",void 0);P([ce("_markAllSubMeshesAsFresnelDirty")],ze.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],ze.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],ze.prototype,"_maxSimultaneousLights",void 0);P([ce("_markAllSubMeshesAsLightsDirty")],ze.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],ze.prototype,"_invertNormalMapX",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],ze.prototype,"_invertNormalMapY",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],ze.prototype,"_twoSidedLighting",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],ze.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],ze.prototype,"_applyDecalMapAfterDetailMap",void 0);P([ce("_markAllSubMeshesAsMiscDirty")],ze.prototype,"applyDecalMapAfterDetailMap",void 0);Bt("BABYLON.StandardMaterial",ze);ri.DefaultMaterialFactory=n=>new ze("default material",n)});var lY=y(()=>{Mo();Es();Hs();Mt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Vi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?Pn(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?Pn(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};Mt.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),u=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,u,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 iM,cY=y(()=>{Lt();Xr();lY();iM=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 h=t;h.width||h.width===0?this._texture=d.createDynamicTexture(h.width,h.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let u=this.getSize();this._canvas.width!==u.width&&(this._canvas.width=u.width),this._canvas.height!==u.height&&(this._canvas.height=u.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 nM(n,e,t,i,r,s=!1){let a=rn.Zero();return $v(n,e,t,i,a,r,s),a}function $v(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:u,width:h,height:m}=c.toGlobal(l.getRenderWidth(),f),g=1/l.getHardwareScalingLevel();return e=e*g-d,t=t*g-(f-u-m),r.update(e,t,h,m,i||Z.IdentityReadOnly,a?Z.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function uY(n,e,t,i){let r=rn.Zero();return FO(n,e,t,r,i),r}function FO(n,e,t,i,r){if(!As)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),u=Z.Identity(),h=1/s.getHardwareScalingLevel();return e=e*h-l,t=t*h-(o-c-d),i.update(e,t,f,d,u,u,r.getProjectionMatrix()),n}function rM(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return BO(n,t,i,l,r,s,a,o)}function BO(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 Ome(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function hY(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?Ome(e,n):0}}function mY(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 UO(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=dY.internalPickerForMesh||rM,f=c===rM;for(let d=0;d>4);for(let A=0;A1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=dY.internalPickerForMesh||rM,l=o===rM;for(let c=0;c>4);for(let T=0;T(n._tempPickingRay||(n._tempPickingRay=rn.Zero()),$v(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=nM(n,e,t,Z.Identity(),s||null)),a}function _Y(n,e,t,i,r,s,a,o=!1){let l=UO(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=rn.Zero()),$v(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=nM(n,e,t,Z.Identity(),s||null)),l}function vY(n,e,t,i,r){let s=UO(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=rn.Zero()),rn.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function EY(n,e,t,i,r,s){return pY(n,a=>nM(n,e,t,a,r||null),i,s)}function SY(n,e,t,i){return pY(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=rn.Zero()),rn.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function fY(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 TY(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return fY(this,new rn(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return fY(this,t,i,r,s)}),n&&(Uu._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return nM(this,t,i,r,s,a)})}var dY,rn,VO=y(()=>{Kn();We();Al();oL();uv();Gi();mD();dY={internalPickerForMesh:void 0},rn=class n{constructor(e,t,i=Number.MAX_VALUE,r=wt){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 u=b.Dot(this.direction,l)*f;if(u<-this.epsilon||d+u>1+this.epsilon)return null;let h=b.Dot(s,l)*f;return h>this.length||h<0?null:new Gu(1-d-u,d,h)}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),u=b.Dot(s,l),h=b.Dot(o,l),m=c*d-f*f,g,p=m,_,v=m;mp&&(g=p,_=h+f,v=d)),_<0?(_=0,-u<0?g=0:-u>c?g=p:(g=-u,p=c)):_>v&&(_=v,-u+f<0?g=0:-u+f>c?g=p:(g=-u+f,p=c));let E=Math.abs(g)0&&T<=this.length&&R.lengthSquared(){js();Dl();VO();VO();TY(ri,_t);ri.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return $v(this,n,e,t,i,r,s,a)};ri.prototype.createPickingRayInCameraSpace=function(n,e,t){return uY(this,n,e,t)};ri.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return FO(this,n,e,t,i)};ri.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return gY(this,n,e,t,i,r)};ri.prototype.pick=function(n,e,t,i,r,s,a=!1){return _Y(this,n,e,t,i,r,s,a)};ri.prototype.pickWithRay=function(n,e,t,i){return vY(this,n,e,t,i)};ri.prototype.multiPick=function(n,e,t,i,r){return EY(this,n,e,t,i,r)};ri.prototype.multiPickWithRay=function(n,e,t){return SY(this,n,e,t)}});var AY,Nme,kO=y(()=>{W();AY="kernelBlurVaryingDeclaration",Nme="varying sampleCoord{X}: vec2f;";x.IncludesShadersStoreWGSL[AY]||(x.IncludesShadersStoreWGSL[AY]=Nme)});var xY,wme,sM=y(()=>{W();xY="packingFunctions",wme=`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);}`;x.IncludesShadersStoreWGSL[AY]||(x.IncludesShadersStoreWGSL[AY]=Lme)});var xY,Ome,RY=y(()=>{W();xY="kernelBlurFragment",Ome=`#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);}`;x.IncludesShadersStoreWGSL[xY]||(x.IncludesShadersStoreWGSL[xY]=wme)});var RY,Fme,bY=y(()=>{W();RY="kernelBlurFragment",Fme=`#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 -`;x.IncludesShadersStoreWGSL[xY]||(x.IncludesShadersStoreWGSL[xY]=Ome)});var bY,Nme,MY=y(()=>{W();bY="kernelBlurFragment2",Nme=`#ifdef DOF +`;x.IncludesShadersStoreWGSL[RY]||(x.IncludesShadersStoreWGSL[RY]=Fme)});var MY,Bme,yY=y(()=>{W();MY="kernelBlurFragment2",Bme=`#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 -`;x.IncludesShadersStoreWGSL[bY]||(x.IncludesShadersStoreWGSL[bY]=Nme)});var IY={};Be(IY,{kernelBlurPixelShaderWGSL:()=>wme});var kO,yY,wme,CY=y(()=>{W();GO();rM();RY();MY();kO="kernelBlurPixelShader",yY=`var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform delta: vec2f;varying sampleCenter: vec2f; +`;x.IncludesShadersStoreWGSL[MY]||(x.IncludesShadersStoreWGSL[MY]=Bme)});var CY={};Be(CY,{kernelBlurPixelShaderWGSL:()=>Ume});var WO,IY,Ume,PY=y(()=>{W();kO();sM();bY();yY();WO="kernelBlurPixelShader",IY=`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 -}`;x.ShadersStoreWGSL[kO]||(x.ShadersStoreWGSL[kO]=yY);wme={name:kO,shader:yY}});var PY,Fme,DY=y(()=>{W();PY="kernelBlurVertex",Fme="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";x.IncludesShadersStoreWGSL[PY]||(x.IncludesShadersStoreWGSL[PY]=Fme)});var OY={};Be(OY,{kernelBlurVertexShaderWGSL:()=>Bme});var WO,LY,Bme,NY=y(()=>{W();GO();DY();WO="kernelBlurVertexShader",LY=`attribute position: vec2f;uniform delta: vec2f;varying sampleCenter: vec2f; +}`;x.ShadersStoreWGSL[WO]||(x.ShadersStoreWGSL[WO]=IY);Ume={name:WO,shader:IY}});var DY,Vme,LY=y(()=>{W();DY="kernelBlurVertex",Vme="vertexOutputs.sampleCoord{X}=vertexOutputs.sampleCenter+uniforms.delta*KERNEL_OFFSET{X};";x.IncludesShadersStoreWGSL[DY]||(x.IncludesShadersStoreWGSL[DY]=Vme)});var NY={};Be(NY,{kernelBlurVertexShaderWGSL:()=>Gme});var zO,OY,Gme,wY=y(()=>{W();kO();LY();zO="kernelBlurVertexShader",OY=`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 -}`;x.ShadersStoreWGSL[WO]||(x.ShadersStoreWGSL[WO]=LY);Bme={name:WO,shader:LY}});var wY,Ume,zO=y(()=>{W();wY="kernelBlurVaryingDeclaration",Ume="varying vec2 sampleCoord{X};";x.IncludesShadersStore[wY]||(x.IncludesShadersStore[wY]=Ume)});var FY,Vme,nM=y(()=>{W();FY="packingFunctions",Vme=`vec4 pack(float depth) +}`;x.ShadersStoreWGSL[zO]||(x.ShadersStoreWGSL[zO]=OY);Gme={name:zO,shader:OY}});var FY,kme,HO=y(()=>{W();FY="kernelBlurVaryingDeclaration",kme="varying vec2 sampleCoord{X};";x.IncludesShadersStore[FY]||(x.IncludesShadersStore[FY]=kme)});var BY,Wme,aM=y(()=>{W();BY="packingFunctions",Wme=`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);}`;x.IncludesShadersStore[FY]||(x.IncludesShadersStore[FY]=Vme)});var BY,Gme,UY=y(()=>{W();BY="kernelBlurFragment",Gme=`#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);}`;x.IncludesShadersStore[BY]||(x.IncludesShadersStore[BY]=Wme)});var UY,zme,VY=y(()=>{W();UY="kernelBlurFragment",zme=`#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 -`;x.IncludesShadersStore[BY]||(x.IncludesShadersStore[BY]=Gme)});var VY,kme,GY=y(()=>{W();VY="kernelBlurFragment2",kme=`#ifdef DOF +`;x.IncludesShadersStore[UY]||(x.IncludesShadersStore[UY]=zme)});var GY,Hme,kY=y(()=>{W();GY="kernelBlurFragment2",Hme=`#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 -`;x.IncludesShadersStore[VY]||(x.IncludesShadersStore[VY]=kme)});var WY={};Be(WY,{kernelBlurPixelShader:()=>Wme});var HO,kY,Wme,zY=y(()=>{W();zO();nM();UY();GY();HO="kernelBlurPixelShader",kY=`uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter; +`;x.IncludesShadersStore[GY]||(x.IncludesShadersStore[GY]=Hme)});var zY={};Be(zY,{kernelBlurPixelShader:()=>Xme});var XO,WY,Xme,HY=y(()=>{W();HO();aM();VY();kY();XO="kernelBlurPixelShader",WY=`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 -}`;x.ShadersStore[HO]||(x.ShadersStore[HO]=kY);Wme={name:HO,shader:kY}});var HY,zme,XY=y(()=>{W();HY="kernelBlurVertex",zme="sampleCoord{X}=sampleCenter+delta*KERNEL_OFFSET{X};";x.IncludesShadersStore[HY]||(x.IncludesShadersStore[HY]=zme)});var KY={};Be(KY,{kernelBlurVertexShader:()=>Hme});var XO,YY,Hme,jY=y(()=>{W();zO();XY();XO="kernelBlurVertexShader",YY=`attribute vec2 position;uniform vec2 delta;varying vec2 sampleCenter; +}`;x.ShadersStore[XO]||(x.ShadersStore[XO]=WY);Xme={name:XO,shader:WY}});var XY,Yme,YY=y(()=>{W();XY="kernelBlurVertex",Yme="sampleCoord{X}=sampleCenter+delta*KERNEL_OFFSET{X};";x.IncludesShadersStore[XY]||(x.IncludesShadersStore[XY]=Yme)});var jY={};Be(jY,{kernelBlurVertexShader:()=>Kme});var YO,KY,Kme,qY=y(()=>{W();HO();YY();YO="kernelBlurVertexShader",KY=`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 -}`;x.ShadersStore[XO]||(x.ShadersStore[XO]=YY);Hme={name:XO,shader:YY}});var Rs,YO=y(()=>{Ou();Gi();Rs=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(CY(),IY)),Promise.resolve().then(()=>(NY(),OY))]))):t.push(Promise.all([Promise.resolve().then(()=>(zY(),WY)),Promise.resolve().then(()=>(jY(),KY))]))}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(` +}`;x.ShadersStore[YO]||(x.ShadersStore[YO]=KY);Kme={name:YO,shader:KY}});var Rs,KO=y(()=>{Ou();Gi();Rs=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(PY(),CY)),Promise.resolve().then(()=>(wY(),NY))]))):t.push(Promise.all([Promise.resolve().then(()=>(HY(),zY)),Promise.resolve().then(()=>(qY(),jY))]))}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+$/,"")}};Rs.VertexUrl="kernelBlur";Rs.FragmentUrl="kernelBlur";Rs.Uniforms=["delta","direction"];Rs.Samplers=["circleOfConfusionSampler"]});var so,KO=y(()=>{Xt();Sc();Xr();er();zt();Dr();YO();so=class n extends Pi{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,u=5){let h=typeof r=="number"?d:!!r.blockCompilation,m={uniforms:Rs.Uniforms,samplers:Rs.Samplers,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,textureType:c,vertexUrl:Rs.VertexUrl,indexParameters:{varyingCount:0,depCount:0},textureFormat:u,defines:f,...r,blockCompilation:!0};super(e,Rs.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new Rs(e,o,void 0,void 0,m):void 0,...m}),this._effectWrapper.options.blockCompilation=h,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 st.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([Jm()],so.prototype,"direction",null);P([F()],so.prototype,"kernel",null);P([F()],so.prototype,"packedFloat",null);Bt("BABYLON.BlurPostProcess",so)});var qY,Xme,ZY=y(()=>{W();qY="bayerDitherFunctions",Xme=`fn bayerDither2(_P: vec2f)->f32 {return ((2.0*_P.y+_P.x+1.0)%(4.0));} +`,g++;this.packedFloat&&(m+="#define PACKEDFLOAT 1"),this.options.blockCompilation=!1,this.updateEffect(m,null,null,{varyingCount:h,depCount:g},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+$/,"")}};Rs.VertexUrl="kernelBlur";Rs.FragmentUrl="kernelBlur";Rs.Uniforms=["delta","direction"];Rs.Samplers=["circleOfConfusionSampler"]});var so,jO=y(()=>{Xt();Sc();Xr();er();zt();Dr();KO();so=class n extends Pi{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,u=5){let h=typeof r=="number"?d:!!r.blockCompilation,m={uniforms:Rs.Uniforms,samplers:Rs.Samplers,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,textureType:c,vertexUrl:Rs.VertexUrl,indexParameters:{varyingCount:0,depCount:0},textureFormat:u,defines:f,...r,blockCompilation:!0};super(e,Rs.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new Rs(e,o,void 0,void 0,m):void 0,...m}),this._effectWrapper.options.blockCompilation=h,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 st.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([Jm()],so.prototype,"direction",null);P([F()],so.prototype,"kernel",null);P([F()],so.prototype,"packedFloat",null);Bt("BABYLON.BlurPostProcess",so)});var ZY,jme,QY=y(()=>{W();ZY="bayerDitherFunctions",jme=`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);} -`;x.IncludesShadersStoreWGSL[qY]||(x.IncludesShadersStoreWGSL[qY]=Xme)});var QY,Yme,$Y=y(()=>{W();rM();ZY();QY="shadowMapFragmentExtraDeclaration",Yme=`#if SM_FLOAT==0 +`;x.IncludesShadersStoreWGSL[ZY]||(x.IncludesShadersStoreWGSL[ZY]=jme)});var $Y,qme,JY=y(()=>{W();sM();QY();$Y="shadowMapFragmentExtraDeclaration",qme=`#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 -`;x.IncludesShadersStoreWGSL[QY]||(x.IncludesShadersStoreWGSL[QY]=Yme)});var JY,Kme,e8=y(()=>{W();JY="shadowMapFragment",Kme=`var depthSM: f32=fragmentInputs.vDepthMetricSM; +`;x.IncludesShadersStoreWGSL[$Y]||(x.IncludesShadersStoreWGSL[$Y]=qme)});var e8,Zme,t8=y(()=>{W();e8="shadowMapFragment",Zme=`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 -`;x.IncludesShadersStoreWGSL[JY]||(x.IncludesShadersStoreWGSL[JY]=Kme)});var i8={};Be(i8,{shadowMapPixelShaderWGSL:()=>jme});var jO,t8,jme,r8=y(()=>{W();$Y();Bc();Uc();e8();jO="shadowMapPixelShader",t8=`#include +`;x.IncludesShadersStoreWGSL[e8]||(x.IncludesShadersStoreWGSL[e8]=Zme)});var r8={};Be(r8,{shadowMapPixelShaderWGSL:()=>Qme});var qO,i8,Qme,n8=y(()=>{W();JY();Bc();Uc();t8();qO="shadowMapPixelShader",i8=`#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 -}`;x.ShadersStoreWGSL[jO]||(x.ShadersStoreWGSL[jO]=t8);jme={name:jO,shader:t8}});var n8,qme,s8=y(()=>{W();n8="shadowMapVertexExtraDeclaration",qme=`#if SM_NORMALBIAS==1 +}`;x.ShadersStoreWGSL[qO]||(x.ShadersStoreWGSL[qO]=i8);Qme={name:qO,shader:i8}});var s8,$me,a8=y(()=>{W();s8="shadowMapVertexExtraDeclaration",$me=`#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 -`;x.IncludesShadersStoreWGSL[n8]||(x.IncludesShadersStoreWGSL[n8]=qme)});var a8,Zme,o8=y(()=>{W();a8="shadowMapVertexNormalBias",Zme=`#if SM_NORMALBIAS==1 +`;x.IncludesShadersStoreWGSL[s8]||(x.IncludesShadersStoreWGSL[s8]=$me)});var o8,Jme,l8=y(()=>{W();o8="shadowMapVertexNormalBias",Jme=`#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 -`;x.IncludesShadersStoreWGSL[a8]||(x.IncludesShadersStoreWGSL[a8]=Zme)});var l8,Qme,c8=y(()=>{W();l8="shadowMapVertexMetric",Qme=`#if SM_USEDISTANCE==1 +`;x.IncludesShadersStoreWGSL[o8]||(x.IncludesShadersStoreWGSL[o8]=Jme)});var c8,epe,f8=y(()=>{W();c8="shadowMapVertexMetric",epe=`#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 -`;x.IncludesShadersStoreWGSL[l8]||(x.IncludesShadersStoreWGSL[l8]=Qme)});var d8={};Be(d8,{shadowMapVertexShaderWGSL:()=>$me});var qO,f8,$me,u8=y(()=>{W();Pc();Dc();gd();_d();$a();Xu();jv();s8();Lc();vd();Ed();Oc();Nc();wc();o8();c8();Fc();qO="shadowMapVertexShader",f8=`attribute position: vec3f; +`;x.IncludesShadersStoreWGSL[c8]||(x.IncludesShadersStoreWGSL[c8]=epe)});var u8={};Be(u8,{shadowMapVertexShaderWGSL:()=>tpe});var ZO,d8,tpe,h8=y(()=>{W();Pc();Dc();gd();_d();$a();Xu();jv();a8();Lc();vd();Ed();Oc();Nc();wc();l8();f8();Fc();ZO="shadowMapVertexShader",d8=`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 -}`;x.ShadersStoreWGSL[qO]||(x.ShadersStoreWGSL[qO]=f8);$me={name:qO,shader:f8}});var m8={};Be(m8,{depthBoxBlurPixelShaderWGSL:()=>Jme});var ZO,h8,Jme,p8=y(()=>{W();ZO="depthBoxBlurPixelShader",h8=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f; +}`;x.ShadersStoreWGSL[ZO]||(x.ShadersStoreWGSL[ZO]=d8);tpe={name:ZO,shader:d8}});var p8={};Be(p8,{depthBoxBlurPixelShaderWGSL:()=>ipe});var QO,m8,ipe,g8=y(()=>{W();QO="depthBoxBlurPixelShader",m8=`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)));}`;x.ShadersStoreWGSL[ZO]||(x.ShadersStoreWGSL[ZO]=h8);Jme={name:ZO,shader:h8}});var _8={};Be(_8,{shadowMapFragmentSoftTransparentShadowWGSL:()=>epe});var QO,g8,epe,v8=y(()=>{W();QO="shadowMapFragmentSoftTransparentShadow",g8=`#if SM_SOFTTRANSPARENTSHADOW==1 +fragmentOutputs.color=(colorDepth/ f32((OFFSET*2+1)*(OFFSET*2+1)));}`;x.ShadersStoreWGSL[QO]||(x.ShadersStoreWGSL[QO]=m8);ipe={name:QO,shader:m8}});var v8={};Be(v8,{shadowMapFragmentSoftTransparentShadowWGSL:()=>rpe});var $O,_8,rpe,E8=y(()=>{W();$O="shadowMapFragmentSoftTransparentShadow",_8=`#if SM_SOFTTRANSPARENTSHADOW==1 if ((bayerDither8(floor(((fragmentInputs.position.xy)%(8.0)))))/64.0>=uniforms.softTransparentShadowSM.x*alpha) {discard;} #endif -`;x.IncludesShadersStoreWGSL[QO]||(x.IncludesShadersStoreWGSL[QO]=g8);epe={name:QO,shader:g8}});var E8,tpe,S8=y(()=>{W();E8="bayerDitherFunctions",tpe=`float bayerDither2(vec2 _P) {return mod(2.0*_P.y+_P.x+1.0,4.0);} +`;x.IncludesShadersStoreWGSL[$O]||(x.IncludesShadersStoreWGSL[$O]=_8);rpe={name:$O,shader:_8}});var S8,npe,T8=y(()=>{W();S8="bayerDitherFunctions",npe=`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);} -`;x.IncludesShadersStore[E8]||(x.IncludesShadersStore[E8]=tpe)});var T8,ipe,A8=y(()=>{W();nM();S8();T8="shadowMapFragmentExtraDeclaration",ipe=`#if SM_FLOAT==0 +`;x.IncludesShadersStore[S8]||(x.IncludesShadersStore[S8]=npe)});var A8,spe,x8=y(()=>{W();aM();T8();A8="shadowMapFragmentExtraDeclaration",spe=`#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 -`;x.IncludesShadersStore[T8]||(x.IncludesShadersStore[T8]=ipe)});var x8,rpe,R8=y(()=>{W();x8="shadowMapFragment",rpe=`float depthSM=vDepthMetricSM; +`;x.IncludesShadersStore[A8]||(x.IncludesShadersStore[A8]=spe)});var R8,ape,b8=y(()=>{W();R8="shadowMapFragment",ape=`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;`;x.IncludesShadersStore[x8]||(x.IncludesShadersStore[x8]=rpe)});var M8={};Be(M8,{shadowMapPixelShader:()=>npe});var $O,b8,npe,y8=y(()=>{W();A8();Yc();Kc();R8();$O="shadowMapPixelShader",b8=`#include +return;`;x.IncludesShadersStore[R8]||(x.IncludesShadersStore[R8]=ape)});var y8={};Be(y8,{shadowMapPixelShader:()=>ope});var JO,M8,ope,I8=y(()=>{W();x8();Yc();Kc();b8();JO="shadowMapPixelShader",M8=`#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 -}`;x.ShadersStore[$O]||(x.ShadersStore[$O]=b8);npe={name:$O,shader:b8}});var I8,spe,JO=y(()=>{W();I8="sceneVertexDeclaration",spe=`uniform mat4 viewProjection; +}`;x.ShadersStore[JO]||(x.ShadersStore[JO]=M8);ope={name:JO,shader:M8}});var C8,lpe,eN=y(()=>{W();C8="sceneVertexDeclaration",lpe=`uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition; -`;x.IncludesShadersStore[I8]||(x.IncludesShadersStore[I8]=spe)});var C8,ape,P8=y(()=>{W();C8="meshVertexDeclaration",ape=`uniform mat4 world;uniform float visibility; -`;x.IncludesShadersStore[C8]||(x.IncludesShadersStore[C8]=ape)});var D8,ope,L8=y(()=>{W();JO();P8();D8="shadowMapVertexDeclaration",ope=`#include +`;x.IncludesShadersStore[C8]||(x.IncludesShadersStore[C8]=lpe)});var P8,cpe,D8=y(()=>{W();P8="meshVertexDeclaration",cpe=`uniform mat4 world;uniform float visibility; +`;x.IncludesShadersStore[P8]||(x.IncludesShadersStore[P8]=cpe)});var L8,fpe,O8=y(()=>{W();eN();D8();L8="shadowMapVertexDeclaration",fpe=`#include #include -`;x.IncludesShadersStore[D8]||(x.IncludesShadersStore[D8]=ope)});var O8,lpe,N8=y(()=>{W();ju();Zv();O8="shadowMapUboDeclaration",lpe=`layout(std140,column_major) uniform; +`;x.IncludesShadersStore[L8]||(x.IncludesShadersStore[L8]=fpe)});var N8,dpe,w8=y(()=>{W();ju();Zv();N8="shadowMapUboDeclaration",dpe=`layout(std140,column_major) uniform; #include #include -`;x.IncludesShadersStore[O8]||(x.IncludesShadersStore[O8]=lpe)});var w8,cpe,F8=y(()=>{W();w8="shadowMapVertexExtraDeclaration",cpe=`#if SM_NORMALBIAS==1 +`;x.IncludesShadersStore[N8]||(x.IncludesShadersStore[N8]=dpe)});var F8,upe,B8=y(()=>{W();F8="shadowMapVertexExtraDeclaration",upe=`#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 -`;x.IncludesShadersStore[w8]||(x.IncludesShadersStore[w8]=cpe)});var B8,fpe,U8=y(()=>{W();B8="shadowMapVertexNormalBias",fpe=`#if SM_NORMALBIAS==1 +`;x.IncludesShadersStore[F8]||(x.IncludesShadersStore[F8]=upe)});var U8,hpe,V8=y(()=>{W();U8="shadowMapVertexNormalBias",hpe=`#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 -`;x.IncludesShadersStore[B8]||(x.IncludesShadersStore[B8]=fpe)});var V8,dpe,G8=y(()=>{W();V8="shadowMapVertexMetric",dpe=`#if SM_USEDISTANCE==1 +`;x.IncludesShadersStore[U8]||(x.IncludesShadersStore[U8]=hpe)});var G8,mpe,k8=y(()=>{W();G8="shadowMapVertexMetric",mpe=`#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 -`;x.IncludesShadersStore[V8]||(x.IncludesShadersStore[V8]=dpe)});var W8={};Be(W8,{shadowMapVertexShader:()=>upe});var eN,k8,upe,z8=y(()=>{W();Vc();Gc();Sd();Td();Ja();L8();N8();F8();kc();Ad();xd();Wc();zc();Hc();U8();G8();Xc();eN="shadowMapVertexShader",k8=`attribute vec3 position; +`;x.IncludesShadersStore[G8]||(x.IncludesShadersStore[G8]=mpe)});var z8={};Be(z8,{shadowMapVertexShader:()=>ppe});var tN,W8,ppe,H8=y(()=>{W();Vc();Gc();Sd();Td();Ja();O8();w8();B8();kc();Ad();xd();Wc();zc();Hc();V8();k8();Xc();tN="shadowMapVertexShader",W8=`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 -}`;x.ShadersStore[eN]||(x.ShadersStore[eN]=k8);upe={name:eN,shader:k8}});var X8={};Be(X8,{depthBoxBlurPixelShader:()=>hpe});var tN,H8,hpe,Y8=y(()=>{W();tN="depthBoxBlurPixelShader",H8=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize; +}`;x.ShadersStore[tN]||(x.ShadersStore[tN]=W8);ppe={name:tN,shader:W8}});var Y8={};Be(Y8,{depthBoxBlurPixelShader:()=>gpe});var iN,X8,gpe,K8=y(()=>{W();iN="depthBoxBlurPixelShader",X8=`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)));}`;x.ShadersStore[tN]||(x.ShadersStore[tN]=H8);hpe={name:tN,shader:H8}});var j8={};Be(j8,{shadowMapFragmentSoftTransparentShadow:()=>mpe});var iN,K8,mpe,q8=y(()=>{W();iN="shadowMapFragmentSoftTransparentShadow",K8=`#if SM_SOFTTRANSPARENTSHADOW==1 +colorDepth+=texture2D(textureSampler,vUV+vec2(x,y)/screenSize);gl_FragColor=(colorDepth/float((OFFSET*2+1)*(OFFSET*2+1)));}`;x.ShadersStore[iN]||(x.ShadersStore[iN]=X8);gpe={name:iN,shader:X8}});var q8={};Be(q8,{shadowMapFragmentSoftTransparentShadow:()=>_pe});var rN,j8,_pe,Z8=y(()=>{W();rN="shadowMapFragmentSoftTransparentShadow",j8=`#if SM_SOFTTRANSPARENTSHADOW==1 if ((bayerDither8(floor(mod(gl_FragCoord.xy,8.0))))/64.0>=softTransparentShadowSM.x*alpha) discard; #endif -`;x.IncludesShadersStore[iN]||(x.IncludesShadersStore[iN]=K8);mpe={name:iN,shader:K8}});var Fi,sM=y(()=>{We();Kt();Yi();ld();Xr();jf();Sc();KO();vi();An();fd();tR();Lu();Ol();es();pv();Fi=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=Z.Zero(),this._projectionMatrix=Z.Zero(),this._transformMatrix=Z.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=Z.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 Yr(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 Yr(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(),u=l.getMaterial();if(!u||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let h=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(h.mustReturn)continue;let m=d.getCaps().instancedArrays&&(h.visibleInstances[l._id]!==null&&h.visibleInstances[l._id]!==void 0||c.hasThinInstances),g=u.needAlphaBlendingForMesh(c);o=this.isReady(l,m,g)&&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(),Za.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),Za.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 dt(0,0,0,0),i=new dt(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=Xa.MIN_RENDERINGGROUPS;r(r8(),i8)),Promise.resolve().then(()=>(u8(),d8)),Promise.resolve().then(()=>(p8(),m8)),Promise.resolve().then(()=>(v8(),_8))])):await Promise.all([Promise.resolve().then(()=>(y8(),M8)),Promise.resolve().then(()=>(z8(),W8)),Promise.resolve().then(()=>(Y8(),X8)),Promise.resolve().then(()=>(q8(),j8))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new Yr(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 so(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 so(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 Pi(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&&!S?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(A)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(S?A:T))}),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(L.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===jt.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=[L.PositionKind],u=e.getMesh(),h=!1,m=!1,g=!1,p=!1;this.normalBias&&u.isVerticesDataPresent(L.NormalKind)&&(d.push(L.NormalKind),a.push("#define NORMAL"),h=!0,u.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let _=r.needAlphaTestingForMesh(u);if((_||r.needAlphaBlendingForMesh(u))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let A=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),_&&a.push(`#define ALPHATESTVALUE ${A}${A%1===0?".":""}`),u.isVerticesDataPresent(L.UVKind)&&(d.push(L.UVKind),a.push("#define UV1"),m=!0),u.isVerticesDataPresent(L.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(L.UV2Kind),a.push("#define UV2"),g=!0)}let v=new ns;if(u.useBones&&u.computeBonesUsingShaders&&u.skeleton){d.push(L.MatricesIndicesKind),d.push(L.MatricesWeightsKind),u.numBoneInfluencers>4&&(d.push(L.MatricesIndicesExtraKind),d.push(L.MatricesWeightsExtraKind));let A=u.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+u.numBoneInfluencers),u.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,u),A.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(A.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let E=u.morphTargetManager?Nl(u.morphTargetManager,a,d,u,!0,h,!1,m,g,p):0;if(Ll(r,this._scene,a),t&&(a.push("#define INSTANCES"),ko(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let A of this.customShaderOptions.defines)a.indexOf(A)===-1&&a.push(A);let T=u.bakedVertexAnimationManager;T&&T.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let S=a.join(` -`);if(f!==S){f=S;let A="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],I=["Scene","Mesh"];if(Qn(R),this.customShaderOptions){if(A=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let D of this.customShaderOptions.attributes)d.indexOf(D)===-1&&d.push(D);if(this.customShaderOptions.uniforms)for(let D of this.customShaderOptions.uniforms)R.indexOf(D)===-1&&R.push(D);if(this.customShaderOptions.samplers)for(let D of this.customShaderOptions.samplers)M.indexOf(D)===-1&&M.push(D)}let C=this._scene.getEngine();c=C.createEffect(A,{attributes:d,uniformsNames:R,uniformBuffersNames:I,samplers:M,defines:S,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:E},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?dD(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),Z.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 $e("ShadowGeneratorSceneComponent")}});var Q8={};Be(Q8,{depthPixelShader:()=>ppe});var rN,Z8,ppe,nN=y(()=>{W();Yc();nM();Kc();rN="depthPixelShader",Z8=`#ifdef ALPHATEST +`;x.IncludesShadersStore[rN]||(x.IncludesShadersStore[rN]=j8);_pe={name:rN,shader:j8}});var Fi,oM=y(()=>{We();Kt();Yi();ld();Xr();jf();Sc();jO();vi();An();fd();rR();Lu();Ol();es();pv();Fi=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=Z.Zero(),this._projectionMatrix=Z.Zero(),this._transformMatrix=Z.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=Z.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 Yr(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 Yr(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(),u=l.getMaterial();if(!u||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let h=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(h.mustReturn)continue;let m=d.getCaps().instancedArrays&&(h.visibleInstances[l._id]!==null&&h.visibleInstances[l._id]!==void 0||c.hasThinInstances),g=u.needAlphaBlendingForMesh(c);o=this.isReady(l,m,g)&&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(),Za.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),Za.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 dt(0,0,0,0),i=new dt(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=Xa.MIN_RENDERINGGROUPS;r(n8(),r8)),Promise.resolve().then(()=>(h8(),u8)),Promise.resolve().then(()=>(g8(),p8)),Promise.resolve().then(()=>(E8(),v8))])):await Promise.all([Promise.resolve().then(()=>(I8(),y8)),Promise.resolve().then(()=>(H8(),z8)),Promise.resolve().then(()=>(K8(),Y8)),Promise.resolve().then(()=>(Z8(),q8))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new Yr(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 so(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 so(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 Pi(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&&!S?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(A)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(S?A:T))}),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(L.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===jt.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=[L.PositionKind],u=e.getMesh(),h=!1,m=!1,g=!1,p=!1;this.normalBias&&u.isVerticesDataPresent(L.NormalKind)&&(d.push(L.NormalKind),a.push("#define NORMAL"),h=!0,u.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let _=r.needAlphaTestingForMesh(u);if((_||r.needAlphaBlendingForMesh(u))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let A=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),_&&a.push(`#define ALPHATESTVALUE ${A}${A%1===0?".":""}`),u.isVerticesDataPresent(L.UVKind)&&(d.push(L.UVKind),a.push("#define UV1"),m=!0),u.isVerticesDataPresent(L.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(L.UV2Kind),a.push("#define UV2"),g=!0)}let v=new ns;if(u.useBones&&u.computeBonesUsingShaders&&u.skeleton){d.push(L.MatricesIndicesKind),d.push(L.MatricesWeightsKind),u.numBoneInfluencers>4&&(d.push(L.MatricesIndicesExtraKind),d.push(L.MatricesWeightsExtraKind));let A=u.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+u.numBoneInfluencers),u.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,u),A.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(A.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let E=u.morphTargetManager?Nl(u.morphTargetManager,a,d,u,!0,h,!1,m,g,p):0;if(Ll(r,this._scene,a),t&&(a.push("#define INSTANCES"),ko(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let A of this.customShaderOptions.defines)a.indexOf(A)===-1&&a.push(A);let T=u.bakedVertexAnimationManager;T&&T.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let S=a.join(` +`);if(f!==S){f=S;let A="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],I=["Scene","Mesh"];if(Qn(R),this.customShaderOptions){if(A=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let D of this.customShaderOptions.attributes)d.indexOf(D)===-1&&d.push(D);if(this.customShaderOptions.uniforms)for(let D of this.customShaderOptions.uniforms)R.indexOf(D)===-1&&R.push(D);if(this.customShaderOptions.samplers)for(let D of this.customShaderOptions.samplers)M.indexOf(D)===-1&&M.push(D)}let C=this._scene.getEngine();c=C.createEffect(A,{attributes:d,uniformsNames:R,uniformBuffersNames:I,samplers:M,defines:S,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:E},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?uD(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),Z.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 $e("ShadowGeneratorSceneComponent")}});var $8={};Be($8,{depthPixelShader:()=>vpe});var nN,Q8,vpe,sN=y(()=>{W();Yc();aM();Kc();nN="depthPixelShader",Q8=`#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 -}`;x.ShadersStore[rN]||(x.ShadersStore[rN]=Z8);ppe={name:rN,shader:Z8}});var $8,gpe,J8=y(()=>{W();$8="pointCloudVertexDeclaration",gpe=`#ifdef POINTSIZE +}`;x.ShadersStore[nN]||(x.ShadersStore[nN]=Q8);vpe={name:nN,shader:Q8}});var J8,Epe,e6=y(()=>{W();J8="pointCloudVertexDeclaration",Epe=`#ifdef POINTSIZE uniform float pointSize; #endif -`;x.IncludesShadersStore[$8]||(x.IncludesShadersStore[$8]=gpe)});var t6={};Be(t6,{depthVertexShader:()=>_pe});var sN,e6,_pe,aN=y(()=>{W();Vc();Gc();Sd();Td();kc();md();J8();Ad();xd();Wc();zc();Hc();Xc();RO();sN="depthVertexShader",e6=`attribute vec3 position; +`;x.IncludesShadersStore[J8]||(x.IncludesShadersStore[J8]=Epe)});var i6={};Be(i6,{depthVertexShader:()=>Spe});var aN,t6,Spe,oN=y(()=>{W();Vc();Gc();Sd();Td();kc();md();e6();Ad();xd();Wc();zc();Hc();Xc();bO();aN="depthVertexShader",t6=`attribute vec3 position; #include #include #include @@ -10563,7 +10563,7 @@ vUV=vec2(diffuseMatrix*vec4(uv2Updated,1.0,0.0)); #endif #include } -`;x.ShadersStore[sN]||(x.ShadersStore[sN]=e6);_pe={name:sN,shader:e6}});var r6={};Be(r6,{depthVertexShaderWGSL:()=>vpe});var oN,i6,vpe,n6=y(()=>{W();Pc();Dc();gd();_d();Lc();hd();vd();Ed();Oc();Nc();wc();Fc();oN="depthVertexShader",i6=`attribute position: vec3f; +`;x.ShadersStore[aN]||(x.ShadersStore[aN]=t6);Spe={name:aN,shader:t6}});var n6={};Be(n6,{depthVertexShaderWGSL:()=>Tpe});var lN,r6,Tpe,s6=y(()=>{W();Pc();Dc();gd();_d();Lc();hd();vd();Ed();Oc();Nc();wc();Fc();lN="depthVertexShader",r6=`attribute position: vec3f; #include #include #include @@ -10619,7 +10619,7 @@ vertexOutputs.vUV= (uniforms.diffuseMatrix* vec4f(uv2Updated,1.0,0.0)).xy; #endif #endif } -`;x.ShadersStoreWGSL[oN]||(x.ShadersStoreWGSL[oN]=i6);vpe={name:oN,shader:i6}});var a6={};Be(a6,{depthPixelShaderWGSL:()=>Epe});var lN,s6,Epe,o6=y(()=>{W();Bc();rM();Uc();lN="depthPixelShader",s6=`#ifdef ALPHATEST +`;x.ShadersStoreWGSL[lN]||(x.ShadersStoreWGSL[lN]=r6);Tpe={name:lN,shader:r6}});var o6={};Be(o6,{depthPixelShaderWGSL:()=>Ape});var cN,a6,Ape,l6=y(()=>{W();Bc();sM();Uc();cN="depthPixelShader",a6=`#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 -}`;x.ShadersStoreWGSL[lN]||(x.ShadersStoreWGSL[lN]=s6);Epe={name:lN,shader:s6}});var qp,l6=y(()=>{Kt();Yi();Xr();jf();Dl();nN();aN();An();Ol();es();fd();qp=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 dt(1,1,1,1):this.clearColor=new dt(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 Yr(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(u=>{u.clear(this.clearColor,!0,!0,!0)}),this._depthMap.customIsReadyFunction=(u,h,m)=>{if((m||h===0)&&u.subMeshes)for(let g=0;g{var M;let h=u.getRenderingMesh(),m=u.getEffectiveMesh(),g=this._scene,p=g.getEngine(),_=u.getMaterial();if(m._internalAbstractMeshDataInfo._isActiveIntermediate=!1,!_||m.infiniteDistance||_.disableDepthWrite||u.verticesCount===0||u._renderId===g.getRenderId())return;let v=m._getWorldMatrixDeterminant()<0,E=_._getEffectiveOrientation(h);v&&(E=E===0?1:0);let T=E===0;p.setState(_.backFaceCulling,0,!1,T,this.reverseCulling?!_.cullBackFaces:_.cullBackFaces);let S=h._getInstancesRenderList(u._id,!!u.getReplacementMesh());if(S.mustReturn)return;let A=p.getCaps().instancedArrays&&(S.visibleInstances[u._id]!==null&&S.visibleInstances[u._id]!==void 0||h.hasThinInstances),R=this._camera||g.activeCamera;if(this.isReady(u,A)&&R){if(u._renderId=g.getRenderId(),m.getClassName()==="GaussianSplattingMesh"){let B=this._ensureGaussianSplattingDepthMaterial(m,p.currentRenderPassId);if(B&&!B.isReadyForSubMesh(m,u,A))return;this.alphaBlendedDepth&&_.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),m.render(u,!1);return}let C=(M=m._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:M[p.currentRenderPassId],D=u._getDrawWrapper();!D&&C&&(D=C._getDrawWrapper());let w=R.mode===_t.ORTHOGRAPHIC_CAMERA;if(!D)return;let k=D.effect;p.enableEffect(D),A||h._bind(u,k,_.fillMode),C?C.bindForSubMesh(m.getWorldMatrix(),m,u):(k.setMatrix("viewProjection",g.getTransformMatrix()),k.setMatrix("world",m.getWorldMatrix()),this._storeCameraSpaceZ&&k.setMatrix("view",g.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),k.setFloat2("depthValues",O,O+N),!C){if(_.needAlphaTestingForMesh(m)){let V=_.getAlphaTestTexture();V&&(k.setTexture("diffuseSampler",V),k.setMatrix("diffuseMatrix",V.getTextureMatrix()))}qs(h,k),$n(k,_,g),Jn(h,k),h.morphTargetManager&&h.morphTargetManager.isUsingTextureForTargets&&h.morphTargetManager._bind(k);let B=u.getMesh().bakedVertexAnimationManager;B&&B.isEnabled&&B.bind(k,A),_.pointsCloud&&k.setFloat("pointSize",_.pointSize)}this.alphaBlendedDepth&&_.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),h._processRendering(m,u,k,_.fillMode,S,A,(B,V)=>k.setMatrix("world",V))}};this._depthMap.customRenderFunction=(u,h,m,g)=>{let p=this._scene.getEngine(),_=p.getAlphaMode(),v;if(g.length)for(v=0;v(n6(),r6)),Promise.resolve().then(()=>(o6(),a6))])):await Promise.all([Promise.resolve().then(()=>(aN(),t6)),Promise.resolve().then(()=>(nN(),Q8))]),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=[L.PositionKind],d=!1,u=!1,h=!1;l.needAlphaTestingForMesh(r)&&l.getAlphaTestTexture()&&(c.push("#define ALPHATEST"),r.isVerticesDataPresent(L.UVKind)&&(f.push(L.UVKind),c.push("#define UV1"),d=!0),r.isVerticesDataPresent(L.UV2Kind)&&(f.push(L.UV2Kind),c.push("#define UV2"),u=!0));let m=new ns;if(r.useBones&&r.computeBonesUsingShaders&&r.skeleton){f.push(L.MatricesIndicesKind),f.push(L.MatricesWeightsKind),r.numBoneInfluencers>4&&(f.push(L.MatricesIndicesExtraKind),f.push(L.MatricesWeightsExtraKind)),c.push("#define NUM_BONE_INFLUENCERS "+r.numBoneInfluencers),r.numBoneInfluencers>0&&m.addCPUSkinningFallback(0,r);let I=r.skeleton;I.isUsingTextureForMatrices?c.push("#define BONETEXTURE"):c.push("#define BonesPerMesh "+(I.bones.length+1))}else c.push("#define NUM_BONE_INFLUENCERS 0");let g=r.morphTargetManager?Nl(r.morphTargetManager,c,f,r,!0,!1,!1,d,u,h):0;l.pointsCloud&&c.push("#define POINTSIZE"),t&&(c.push("#define INSTANCES"),ko(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"),Ll(l,s,c);let _=i.currentRenderPassId,E=this._depthMap.renderPassIds.includes(_)?_:this._depthMap.renderPassId,T=e._getDrawWrapper(E,!0),S=T.defines,A=c.join(` -`);if(S!==A){let I=["world","mBones","boneTextureInfo","pointSize","viewProjection","view","diffuseMatrix","depthValues","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],C=["diffuseSampler","morphTargets","boneSampler","bakedVertexAnimationTexture"];Qn(I),T.setEffect(i.createEffect("depth",{attributes:f,uniformsNames:I,uniformBuffersNames:[],samplers:C,defines:A,fallbacks:m,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:g},shaderLanguage:this._shaderLanguage},i),A)}return T.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]}}};qp.ForceGLSL=!1;qp._SceneComponentInitialization=n=>{throw $e("DepthRendererSceneComponent")}});var f6={};Be(f6,{minmaxReduxPixelShaderWGSL:()=>Spe});var cN,c6,Spe,fN=y(()=>{W();cN="minmaxReduxPixelShader",c6=`varying vUV: vec2f;var textureSampler: texture_2d; +}`;x.ShadersStoreWGSL[cN]||(x.ShadersStoreWGSL[cN]=a6);Ape={name:cN,shader:a6}});var qp,c6=y(()=>{Kt();Yi();Xr();jf();Dl();sN();oN();An();Ol();es();fd();qp=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 dt(1,1,1,1):this.clearColor=new dt(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 Yr(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(u=>{u.clear(this.clearColor,!0,!0,!0)}),this._depthMap.customIsReadyFunction=(u,h,m)=>{if((m||h===0)&&u.subMeshes)for(let g=0;g{var M;let h=u.getRenderingMesh(),m=u.getEffectiveMesh(),g=this._scene,p=g.getEngine(),_=u.getMaterial();if(m._internalAbstractMeshDataInfo._isActiveIntermediate=!1,!_||m.infiniteDistance||_.disableDepthWrite||u.verticesCount===0||u._renderId===g.getRenderId())return;let v=m._getWorldMatrixDeterminant()<0,E=_._getEffectiveOrientation(h);v&&(E=E===0?1:0);let T=E===0;p.setState(_.backFaceCulling,0,!1,T,this.reverseCulling?!_.cullBackFaces:_.cullBackFaces);let S=h._getInstancesRenderList(u._id,!!u.getReplacementMesh());if(S.mustReturn)return;let A=p.getCaps().instancedArrays&&(S.visibleInstances[u._id]!==null&&S.visibleInstances[u._id]!==void 0||h.hasThinInstances),R=this._camera||g.activeCamera;if(this.isReady(u,A)&&R){if(u._renderId=g.getRenderId(),m.getClassName()==="GaussianSplattingMesh"){let B=this._ensureGaussianSplattingDepthMaterial(m,p.currentRenderPassId);if(B&&!B.isReadyForSubMesh(m,u,A))return;this.alphaBlendedDepth&&_.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),m.render(u,!1);return}let C=(M=m._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:M[p.currentRenderPassId],D=u._getDrawWrapper();!D&&C&&(D=C._getDrawWrapper());let w=R.mode===_t.ORTHOGRAPHIC_CAMERA;if(!D)return;let k=D.effect;p.enableEffect(D),A||h._bind(u,k,_.fillMode),C?C.bindForSubMesh(m.getWorldMatrix(),m,u):(k.setMatrix("viewProjection",g.getTransformMatrix()),k.setMatrix("world",m.getWorldMatrix()),this._storeCameraSpaceZ&&k.setMatrix("view",g.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),k.setFloat2("depthValues",O,O+N),!C){if(_.needAlphaTestingForMesh(m)){let V=_.getAlphaTestTexture();V&&(k.setTexture("diffuseSampler",V),k.setMatrix("diffuseMatrix",V.getTextureMatrix()))}Zs(h,k),$n(k,_,g),Jn(h,k),h.morphTargetManager&&h.morphTargetManager.isUsingTextureForTargets&&h.morphTargetManager._bind(k);let B=u.getMesh().bakedVertexAnimationManager;B&&B.isEnabled&&B.bind(k,A),_.pointsCloud&&k.setFloat("pointSize",_.pointSize)}this.alphaBlendedDepth&&_.needAlphaBlendingForMesh(m)?p.setAlphaMode(2):p.setAlphaMode(0),h._processRendering(m,u,k,_.fillMode,S,A,(B,V)=>k.setMatrix("world",V))}};this._depthMap.customRenderFunction=(u,h,m,g)=>{let p=this._scene.getEngine(),_=p.getAlphaMode(),v;if(g.length)for(v=0;v(s6(),n6)),Promise.resolve().then(()=>(l6(),o6))])):await Promise.all([Promise.resolve().then(()=>(oN(),i6)),Promise.resolve().then(()=>(sN(),$8))]),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=[L.PositionKind],d=!1,u=!1,h=!1;l.needAlphaTestingForMesh(r)&&l.getAlphaTestTexture()&&(c.push("#define ALPHATEST"),r.isVerticesDataPresent(L.UVKind)&&(f.push(L.UVKind),c.push("#define UV1"),d=!0),r.isVerticesDataPresent(L.UV2Kind)&&(f.push(L.UV2Kind),c.push("#define UV2"),u=!0));let m=new ns;if(r.useBones&&r.computeBonesUsingShaders&&r.skeleton){f.push(L.MatricesIndicesKind),f.push(L.MatricesWeightsKind),r.numBoneInfluencers>4&&(f.push(L.MatricesIndicesExtraKind),f.push(L.MatricesWeightsExtraKind)),c.push("#define NUM_BONE_INFLUENCERS "+r.numBoneInfluencers),r.numBoneInfluencers>0&&m.addCPUSkinningFallback(0,r);let I=r.skeleton;I.isUsingTextureForMatrices?c.push("#define BONETEXTURE"):c.push("#define BonesPerMesh "+(I.bones.length+1))}else c.push("#define NUM_BONE_INFLUENCERS 0");let g=r.morphTargetManager?Nl(r.morphTargetManager,c,f,r,!0,!1,!1,d,u,h):0;l.pointsCloud&&c.push("#define POINTSIZE"),t&&(c.push("#define INSTANCES"),ko(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"),Ll(l,s,c);let _=i.currentRenderPassId,E=this._depthMap.renderPassIds.includes(_)?_:this._depthMap.renderPassId,T=e._getDrawWrapper(E,!0),S=T.defines,A=c.join(` +`);if(S!==A){let I=["world","mBones","boneTextureInfo","pointSize","viewProjection","view","diffuseMatrix","depthValues","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],C=["diffuseSampler","morphTargets","boneSampler","bakedVertexAnimationTexture"];Qn(I),T.setEffect(i.createEffect("depth",{attributes:f,uniformsNames:I,uniformBuffersNames:[],samplers:C,defines:A,fallbacks:m,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:g},shaderLanguage:this._shaderLanguage},i),A)}return T.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]}}};qp.ForceGLSL=!1;qp._SceneComponentInitialization=n=>{throw $e("DepthRendererSceneComponent")}});var d6={};Be(d6,{minmaxReduxPixelShaderWGSL:()=>xpe});var fN,f6,xpe,dN=y(()=>{W();fN="minmaxReduxPixelShader",f6=`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 -`;x.ShadersStoreWGSL[cN]||(x.ShadersStoreWGSL[cN]=c6);Spe={name:cN,shader:c6}});var u6={};Be(u6,{minmaxReduxPixelShader:()=>Tpe});var dN,d6,Tpe,uN=y(()=>{W();dN="minmaxReduxPixelShader",d6=`varying vec2 vUV;uniform sampler2D textureSampler; +`;x.ShadersStoreWGSL[fN]||(x.ShadersStoreWGSL[fN]=f6);xpe={name:fN,shader:f6}});var h6={};Be(h6,{minmaxReduxPixelShader:()=>Rpe});var uN,u6,Rpe,hN=y(()=>{W();uN="minmaxReduxPixelShader",u6=`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 -`;x.ShadersStore[dN]||(x.ShadersStore[dN]=d6);Tpe={name:dN,shader:d6}});var h6,Rd,Ape,xpe,Yo,aM,m6=y(()=>{vi();Ou();Gi();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(h6||(h6={}));Rd=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(fN(),f6)))):t.push(Promise.resolve().then(()=>(uN(),u6)))}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)}};Rd.FragmentUrl="minmaxRedux";Rd.Uniforms=["texSize"];Ape=new Float32Array(4),xpe=new Uint8Array(4),Yo={min:0,max:0},aM=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?Ape:xpe;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Yo.min=i[0],Yo.max=i[1],t||(Yo.min=Yo.min/255,Yo.max=Yo.max/255),Yo.min>=Yo.max&&(Yo.min=0,Yo.max=1),this.onAfterReductionPerformed.notifyObservers(Yo)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._textureWidth=0,this._textureHeight=0);for(let t=0;t{vi();Ou();Gi();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(m6||(m6={}));Rd=class n extends en{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(dN(),d6)))):t.push(Promise.resolve().then(()=>(hN(),h6)))}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)}};Rd.FragmentUrl="minmaxRedux";Rd.Uniforms=["texSize"];bpe=new Float32Array(4),Mpe=new Uint8Array(4),Yo={min:0,max:0},lM=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?bpe:Mpe;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Yo.min=i[0],Yo.max=i[1],t||(Yo.min=Yo.min/255,Yo.max=Yo.max/255),Yo.min>=Yo.max&&(Yo.min=0,Yo.max=1),this.onAfterReductionPerformed.notifyObservers(Yo)}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 Rd("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 oM,p6=y(()=>{Sc();Jx();m6();uN();fN();oM=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new Ec(e.getScene()),this._thinMinMaxReducer=new aM(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{l6();p6();lM=class extends oM{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 qp(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 _6,Rpe,Or,Zp,cM,Ko,v6=y(()=>{We();jf();An();sM();hp();g6();Lt();Gi();pv();_6=b.Up(),Rpe=b.Zero(),Or=new b,Zp=new b,cM=new Z,Ko=class n extends Fi{_validateFilter(e){return e===Fi.FILTER_NONE||e===Fi.FILTER_PCF||e===Fi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Fi.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===Fi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Fi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),Z.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(Rpe,this._transformMatrices[r],Or),Or.scaleInPlace(this._mapSize/2),Zp.copyFromFloats(Math.round(Or.x),Math.round(Or.y),Math.round(Or.z)),Zp.subtractInPlace(Or).scaleInPlace(2/this._mapSize),Z.TranslationToRef(Zp.x,Zp.y,0,cM),this._projectionMatrices[r].multiplyToRef(cM,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=Z.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===Fi.FILTER_PCF&&e.setColorWrite(!1),Za.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!==Fi.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?yk(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===Fi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Fi.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}};Ko._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)];Ko.CLASSNAME="CascadedShadowGenerator";Ko.DEFAULT_CASCADES_COUNT=4;Ko.MIN_CASCADES_COUNT=2;Ko.MAX_CASCADES_COUNT=4;Ko._SceneComponentInitialization=n=>{throw $e("ShadowGeneratorSceneComponent")}});function fM(n,e){bpe[n]=e}var bpe,hN=y(()=>{bpe={}});var mN,E6=y(()=>{sM();v6();sp();hN();fM(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 mN(n),n._addComponent(e))}});async function S6(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new wr;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 T6=y(()=>{Cu()});function Mpe(n){return!!n.createPlugin}function ype(n){return!!n.name}function dM(){return Ul[".babylon"]}function Ipe(n){for(let e in Ul){let t=Ul[e];if(t.mimeType===n)return t}}function gN(n,e){let t=Ul[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?dM():void 0)}function Cpe(n){return!!Ul[n]}function Ppe(n){for(let e in Ul){let t=Ul[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return Ul[e]}return dM()}function Dpe(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function Lpe(n){return n.substring(0,5)==="data:"?n.substring(5):null}function _N(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 vN(n,e,t,i,r,s,a,o,l){var h;let c=Lpe(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?Dpe(n.url):"",d=a?gN(a,!0):c?Ppe(n.url):gN(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await S6(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),g=m.headerValues?m.headerValues["Content-Type"]:"";g&&(d=Ipe(g))}d||(d=dM())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((h=l==null?void 0:l[d.plugin.name])==null?void 0:h.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(Mpe(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(_=>{r("Error instantiating plugin.",_)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var A;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(x6.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!Wf(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 g=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},_=null,v=!1;(A=m.onDisposeObservable)==null||A.add(()=>{v=!0,_&&(_.abort(),_=null),s()});let E=()=>{if(v)return;let R=(M,I)=>{r(M==null?void 0:M.statusText,I)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";_=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,g,R,o):e._loadFile(n.file||n.url,p,i,!0,g,R)},T=e.getEngine(),S=T.enableOfflineSupport;if(S){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}S=!R}S&&Re.OfflineProviderFactory?e.offlineProvider=Re.OfflineProviderFactory(n.url,E,T.disableManifestCheck):E()})}function EN(n,e){let t,i,r=null,s=null;if(!e)t=n,i=pe.GetFilename(n),n=pe.GetFolderPath(n);else if(ype(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=Gf(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return pe.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=pe.GetFilename(e),n=pe.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function bd(n){if(typeof n.extensions=="string"){let e=n.extensions;Ul[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)Ul[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function Jv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await b6(i,r,n,e,s,a,o,l)}async function R6(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=EN(e,t);if(!f)return null;let d={};i.addPendingData(d);let u=()=>{i.removePendingData(d)},h=(p,_)=>{let v=_N(f,p,_);a?a(i,v,new Ys(v,Ha.SceneLoaderError,_)):ee.Error(v),u()},m=s?p=>{try{s(p)}catch(_){h("Error in onProgress callback: "+_,_)}}:void 0,g=(p,_,v,E,T,S,A,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,_,v,E,T,S,A,R)}catch(M){h("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await vN(f,i,(p,_,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let E=p,T=[],S=[],A=[];if(!E.importMesh(n,i,_,f.rootUrl,T,S,A,h))return;i.loadingPluginName=p.name,g(T,S,A,[],[],[],[],[])}else p.importMeshAsync(n,i,_,f.rootUrl,m,f.name).then(T=>{i.loadingPluginName=p.name,g(T.meshes,T.particleSystems,T.skeletons,T.animationGroups,T.transformNodes,T.geometries,T.lights,T.spriteManagers)}).catch(T=>{h(T.message,T)})},m,h,u,o,l,c)}async function b6(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{R6(n,e,t,i,(f,d,u,h,m,g,p,_)=>{l({meshes:f,particleSystems:d,skeletons:u,animationGroups:h,transformNodes:m,geometries:g,lights:p,spriteManagers:_})},r,(f,d,u)=>{c(u||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function M6(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){pe.Error("No engine available");return}await SN(n,e,new ri(t),i,r,s,a,o,l)}async function Ope(n,e,t,i,r,s,a){return await new Promise((o,l)=>{M6(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function SN(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=EN(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};tn.ShowLoadingScreen&&!pN&&(pN=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),pN=!1}));let u=(g,p)=>{let _=_N(c,g,p);s?s(t,_,new Ys(_,Ha.SceneLoaderError,p)):ee.Error(_),d()},h=r?g=>{try{r(g)}catch(p){u("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(g){u("Error in onSuccess callback",g)}t.removePendingData(f)};return await vN(c,t,(g,p)=>{if(g.load){if(!g.load(t,p,c.rootUrl,u))return;t.loadingPluginName=g.name,m()}else g.loadAsync(t,p,c.rootUrl,h,c.name).then(()=>{t.loadingPluginName=g.name,m()}).catch(v=>{u(v.message,v)})},h,u,d,a,o,l)}async function Npe(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{SN(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 TN(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=EN(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},u=(g,p)=>{let _=_N(c,g,p);s?s(t,_,new Ys(_,Ha.SceneLoaderError,p)):ee.Error(_),d()},h=r?g=>{try{r(g)}catch(p){u("Error in onProgress callback",p)}}:void 0,m=g=>{if(i)try{i(g)}catch(p){u("Error in onSuccess callback",p)}t.removePendingData(f)};return await vN(c,t,(g,p)=>{if(g.loadAssetContainer){let v=g.loadAssetContainer(t,p,c.rootUrl,u);if(!v)return;v.populateRootNodes(),t.loadingPluginName=g.name,m(v)}else g.loadAssetContainerAsync?g.loadAssetContainerAsync(t,p,c.rootUrl,h,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=g.name,m(v)}).catch(v=>{u(v.message,v)}):u("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},h,u,d,a,o,l)}async function wpe(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{TN(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 y6(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 g=t.getNodes();for(let p of g)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let g of m)g.dispose();break;case 1:for(let g of t.animationGroups)g.stop();break;case 2:for(let g of t.animationGroups)g.reset(),g.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let u=t.animatables.length;await TN(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(u),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function Fpe(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{y6(n,e,t,i,r,s,u=>{f(u)},a,(u,h,m)=>{d(m||new Error(h))},o,l,c).catch(d)}catch(u){d(u)}})}var A6,x6,Ul,pN,Qu,Qp=y(()=>{Ni();vi();Ks();Gi();Lt();LR();gc();ev();J_();Hr();T6();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(A6||(A6={}));x6=new ie,Ul={},pN=!1;Qu=class{static get ForceFullSceneLoadingForIncremental(){return tn.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){tn.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return tn.ShowLoadingScreen}static set ShowLoadingScreen(e){tn.ShowLoadingScreen=e}static get loggingLevel(){return tn.loggingLevel}static set loggingLevel(e){tn.loggingLevel=e}static get CleanBoneMatrixWeights(){return tn.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){tn.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return dM()}static GetPluginForExtension(e){var t;return(t=gN(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Cpe(e)}static RegisterPlugin(e){bd(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){R6(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 b6(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){M6(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 Ope(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){SN(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 Npe(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){TN(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 wpe(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){y6(e,t,i,r,s,a,o,l,c,f,d).catch(u=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,u==null?void 0:u.message,u))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await Fpe(e,t,i,r,s,a,l,f,d)}};Qu.NO_LOGGING=0;Qu.MINIMAL_LOGGING=1;Qu.SUMMARY_LOGGING=2;Qu.DETAILED_LOGGING=3;Qu.OnPluginActivatedObservable=x6});var uM,AN,xN,Vl,eE=y(()=>{wi();$f();pp();Lt();Gi();kL();ld();Dl();Ni();Hf();uM=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}},AN=class extends uM{},xN=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}},Vl=class extends uM{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 Cc){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 u=d.uniqueId;t.has(u)&&(f.add(u),i.dependsOn.get(u).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 Ir&&this.meshes.indexOf(e)!==-1||e instanceof $t&&this.transformNodes.indexOf(e)!==-1||e instanceof jt&&this.lights.indexOf(e)!==-1||e instanceof _t&&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()||pe.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new xN,o=[],l=[],c={doNotInstantiate:!0,...i},f=(g,p)=>{if(r[g.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(g.name)),p instanceof Q){let _=p;if(_.morphTargetManager){let v=g.morphTargetManager;_.morphTargetManager=v.clone();for(let E=0;E{if(f(g,p),g.parent){let _=r[g.parent.uniqueId],v=s[_];v?p.parent=v:p.parent=g.parent}if(p.position&&g.position&&p.position.copyFrom(g.position),p.rotationQuaternion&&g.rotationQuaternion&&p.rotationQuaternion.copyFrom(g.rotationQuaternion),p.rotation&&g.rotation&&p.rotation.copyFrom(g.rotation),p.scaling&&g.scaling&&p.scaling.copyFrom(g.scaling),p.material){let _=p;if(_.material)if(t){let v=g.material;if(l.indexOf(v)===-1){let E=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=E.uniqueId,s[E.uniqueId]=E,v.getClassName()==="MultiMaterial"){let T=v;for(let S of T.subMaterials)S&&(E=S.clone(e?e(S.name):"Clone of "+S.name),l.push(S),r[S.uniqueId]=E.uniqueId,s[E.uniqueId]=E);T.subMaterials=T.subMaterials.map(S=>S&&s[r[S.uniqueId]])}}_.getClassName()!=="InstancedMesh"&&(_.material=s[r[v.uniqueId]])}else _.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(_.material)===-1&&this.scene.addMultiMaterial(_.material):this.scene.materials.indexOf(_.material)===-1&&this.scene.addMaterial(_.material)}p.parent===null&&a.rootNodes.push(p)};for(let g of h)if(g.getClassName()==="InstancedMesh"){let p=g,_=p.sourceMesh,v=r[_.uniqueId],T=(typeof v=="number"?s[v]:_).createInstance(p.name);m(p,T)}else{let p=!0;g.getClassName()==="TransformNode"||g.getClassName()==="Node"||g.skeleton||!g.getTotalVertices||g.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(g):p=!c.doNotInstantiate);let _=p?g.createInstance(`instance of ${g.name}`):g.clone(`Clone of ${g.name}`,null,!0);if(!_)throw new Error(`Could not clone or instantiate node on Asset Container ${g.name}`);m(g,_)}for(let g of this.skeletons){if(c.predicate&&!c.predicate(g))continue;let p=g.clone(e?e(g.name):"Clone of "+g.name);for(let _ of this.meshes)if(_.skeleton===g&&!_.isAnInstance){let v=s[r[_.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let E of p.bones)E._linkedTransformNode&&(E._linkedTransformNode=s[r[E._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let g of this.animationGroups){if(c.predicate&&!c.predicate(g))continue;let p=g.clone(e?e(g.name):"Clone of "+g.name,_=>s[r[_.uniqueId]]||_);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||pe.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()||pe.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 g of e)g.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let g of t)g.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let g of i)g.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let g of r)g.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let g of s)g.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let g of a)g.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let g of o)g.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let g of l)g.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let g of c)g.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let g of f)g.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let g of d)g.dispose();this.textures.length=0;let u=this.reflectionProbes.slice(0);for(let g of u)g.dispose();this.reflectionProbes.length=0;let h=this.morphTargetManagers.slice(0);for(let g of h)g.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let g of m)g.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let g of this.scene._serializableComponents)g.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 AN);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 Q("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(u=>u.targetProperty===f.targetProperty);for(let u of d){let h=c.animations.indexOf(u,0);h>-1&&c.animations.splice(h,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 Q?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof Cc?this.meshes.push(r):r instanceof $t?this.transformNodes.push(r):r instanceof jt?this.lights.push(r):r instanceof _t&&this.cameras.push(r),r instanceof Ir){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];ti&&ti.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 $u,I6=y(()=>{tv();$u=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 RG(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function RN(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 Bpe(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{RN(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 $p,C6=y(()=>{Ni();$p=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${RN}(${Bpe})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=u=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(u)},d=u=>{let h=u.data;switch(h.id){case"getExternalResource":{r(h.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:h.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:h.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=h.value,s(h.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(h.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:pe.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let u=e.slice();c.postMessage({id:"validate",data:u,rootUrl:t,fileName:i},[u.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=pe.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>RN(e,t,i,r)))}};$p.Configuration={url:`${pe._DefaultCdnUrl}/gltf_validator.js`};$p._LastResults=null});var qc,tE,P6=y(()=>{qc="Z2xURg",tE={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,"+qc)||n.startsWith("data:;base64,"+qc)||n.startsWith("data:application/octet-stream;base64,"+qc)||n.startsWith("data:model/gltf-binary;base64,"+qc)}}});function D6(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function Upe(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 Jp,Ju,bs,hM,Vpe,bN,Md,MN=y(()=>{vi();Ni();Qp();eE();Lt();I6();C6();P6();gc();ev();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(Jp||(Jp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(Ju||(Ju={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(bs||(bs={}));hM=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=Ju.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=Jp.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}},Vpe=new hM,bN=class extends hM{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A,R,M,I,C,D;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=(u=e.loadMorphTargets)!=null?u:this.loadMorphTargets,this.loadNodeAnimations=(h=e.loadNodeAnimations)!=null?h:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(g=e.loadSkins)!=null?g: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=(_=e.preprocessUrlAsync)!=null?_:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(E=e.targetFps)!=null?E:this.targetFps,this.transparencyAsCoverage=(T=e.transparencyAsCoverage)!=null?T:this.transparencyAsCoverage,this.useClipPlane=(S=e.useClipPlane)!=null?S:this.useClipPlane,this.useGltfTextureNames=(A=e.useGltfTextureNames)!=null?A:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(I=e.useSRGBBuffers)!=null?I:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(D=e.dontUseTransmissionHelper)!=null?D:this.dontUseTransmissionHelper)}},Md=class n extends bN{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=tE.name,this.extensions=tE.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({...Vpe},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||pe.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:(u,h)=>new Promise((m,g)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{g(p)},p=>{p.setRequestHeader("Range",`bytes=${u}-${u+h-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new $u(d)).then(u=>{f.onCompleteObservable.notifyObservers(f),r(u)},o?u=>o(void 0,u):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new $u({readAsync:(d,u)=>D6(f,d,u),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 $u({readAsync:(o,l)=>Upe(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 Vl(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 tE.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+qc)||t.startsWith(";base64,"+qc)||t.startsWith("application/octet-stream;base64,"+qc)||t.startsWith("model/gltf-binary;base64,"+qc)){let i=zf(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new $u({readAsync:(r,s)=>D6(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[tE.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(bs[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"),$p.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"),pe.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 Ys("Unexpected magic: "+i,Ha.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,u)=>e.buffer.readAsync(f+d,u),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{mM=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 as,O6=y(()=>{Xt();zt();Fl();uR();We();Ni();as=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=pe.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===Fo.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{Xt();vi();zt();Fl();wo();Ni();eh=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=pe.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!==at.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===at.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===at.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===at.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,at.POINTERDOWN|at.POINTERUP|at.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()],eh.prototype,"buttons",void 0);P([F()],eh.prototype,"angularSensibility",void 0);is.FreeCameraMouseInput=eh});var th,w6=y(()=>{Xt();zt();vi();wo();hR();Ni();th=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=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Bo.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,at.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()],th.prototype,"wheelPrecisionX",void 0);P([F()],th.prototype,"wheelPrecisionY",void 0);P([F()],th.prototype,"wheelPrecisionZ",void 0)});var ki,ea,F6=y(()=>{Xt();zt();Fl();w6();We();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(ki||(ki={}));ea=class extends th{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==ki.MoveRelative||(this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==ki.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==ki.MoveRelative||(this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==ki.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==ki.MoveRelative||(this._wheelZAction=ki.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==ki.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==ki.RotateRelative||(this._wheelXAction=ki.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==ki.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==ki.RotateRelative||(this._wheelYAction=ki.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==ki.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==ki.RotateRelative||(this._wheelZAction=ki.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==ki.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==ki.MoveScene||(this._wheelXAction=ki.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==ki.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==ki.MoveScene||(this._wheelYAction=ki.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==ki.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==ki.MoveScene||(this._wheelZAction=ki.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==ki.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=Z.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 ki.MoveRelative:r=this._moveRelative;break;case ki.RotateRelative:r=this._rotateRelative;break;case ki.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()],ea.prototype,"wheelXMoveRelative",null);P([F()],ea.prototype,"wheelYMoveRelative",null);P([F()],ea.prototype,"wheelZMoveRelative",null);P([F()],ea.prototype,"wheelXRotateRelative",null);P([F()],ea.prototype,"wheelYRotateRelative",null);P([F()],ea.prototype,"wheelZRotateRelative",null);P([F()],ea.prototype,"wheelXMoveScene",null);P([F()],ea.prototype,"wheelYMoveScene",null);P([F()],ea.prototype,"wheelZMoveScene",null);is.FreeCameraMouseWheelInput=ea});var ih,B6=y(()=>{Xt();zt();Fl();wo();We();Ni();ih=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=pe.IsSafari()}attachControl(e){e=pe.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===at.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===at.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===at.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,at.POINTERDOWN|at.POINTERUP|at.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),Z.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()],ih.prototype,"touchAngularSensibility",void 0);P([F()],ih.prototype,"touchMoveSensibility",void 0);is.FreeCameraTouchInput=ih});var pM,U6=y(()=>{Fl();O6();N6();F6();B6();pM=class extends Bp{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new as),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new eh(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new ea,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new ih),this}clear(){super.clear(),this._mouseInput=null}}});var Zc,V6=y(()=>{Xt();zt();We();bL();U6();Ni();er();Hr();Zc=class extends Zs{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()>Re.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 pM(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=pe.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([Jr()],Zc.prototype,"ellipsoid",void 0);P([Jr()],Zc.prototype,"ellipsoidOffset",void 0);P([F()],Zc.prototype,"checkCollisions",void 0);P([F()],Zc.prototype,"applyGravity",void 0);Bt("BABYLON.FreeCamera",Zc)});var ao,gM=y(()=>{We();Al();Aa();ao=class n extends xi{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:Z.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new Z,this._absoluteBindMatrix=new Z,this._absoluteInverseBindMatrix=new Z,this._finalMatrix=new Z,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:je.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=je.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,Z.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{Xr();iE=class n extends ge{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,u,h){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,h),this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._waitingForData=!!u&&!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 _M,k6=y(()=>{gM();vi();We();G6();sd();_L();Gi();Lt();nv();_M=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=Z.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=iE.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=iE.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?Z.FromArray(s.rest):null,c=new ao(s.name,i,o,Z.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(mt.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{Xt();vi();Gi();Yi();zt();Dr();er();yd=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=st.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())),st.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{Xr();vM=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,u){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,u),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 rh,z6=y(()=>{Oo();Lt();Gi();yN();W6();rh=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 Ki(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(yd.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};rh.EnableTextureStorage=!0;rh.MaxActiveMorphTargetsInVertexAttributeMode=8;rh.ConstantTargetCountForTextureMode=0});function EM(n,e,t){rE(n)&&ee.Warn(`Extension with the name '${n}' already exists`),IN.set(n,{isGLTFExtension:e,factory:t})}function rE(n){return IN.delete(n)}var IN,H6,CN=y(()=>{Lt();IN=new Map,H6=IN});var z,PN=y(()=>{z=class{};z.AUTOSAMPLERSUFFIX="Sampler";z.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";z.ALPHA_DISABLE=0;z.ALPHA_ADD=1;z.ALPHA_COMBINE=2;z.ALPHA_SUBTRACT=3;z.ALPHA_MULTIPLY=4;z.ALPHA_MAXIMIZED=5;z.ALPHA_ONEONE=6;z.ALPHA_PREMULTIPLIED=7;z.ALPHA_PREMULTIPLIED_PORTERDUFF=8;z.ALPHA_INTERPOLATE=9;z.ALPHA_SCREENMODE=10;z.ALPHA_ONEONE_ONEONE=11;z.ALPHA_ALPHATOCOLOR=12;z.ALPHA_REVERSEONEMINUS=13;z.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;z.ALPHA_ONEONE_ONEZERO=15;z.ALPHA_EXCLUSION=16;z.ALPHA_LAYER_ACCUMULATE=17;z.ALPHA_MIN=18;z.ALPHA_MAX=19;z.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;z.ALPHA_EQUATION_ADD=0;z.ALPHA_EQUATION_SUBSTRACT=1;z.ALPHA_EQUATION_REVERSE_SUBTRACT=2;z.ALPHA_EQUATION_MAX=3;z.ALPHA_EQUATION_MIN=4;z.ALPHA_EQUATION_DARKEN=5;z.DELAYLOADSTATE_NONE=0;z.DELAYLOADSTATE_LOADED=1;z.DELAYLOADSTATE_LOADING=2;z.DELAYLOADSTATE_NOTLOADED=4;z.NEVER=512;z.ALWAYS=519;z.LESS=513;z.EQUAL=514;z.LEQUAL=515;z.GREATER=516;z.GEQUAL=518;z.NOTEQUAL=517;z.KEEP=7680;z.ZERO=0;z.REPLACE=7681;z.INCR=7682;z.DECR=7683;z.INVERT=5386;z.INCR_WRAP=34055;z.DECR_WRAP=34056;z.TEXTURE_CLAMP_ADDRESSMODE=0;z.TEXTURE_WRAP_ADDRESSMODE=1;z.TEXTURE_MIRROR_ADDRESSMODE=2;z.TEXTURE_CREATIONFLAG_STORAGE=1;z.TEXTUREFORMAT_ALPHA=0;z.TEXTUREFORMAT_LUMINANCE=1;z.TEXTUREFORMAT_LUMINANCE_ALPHA=2;z.TEXTUREFORMAT_RGB=4;z.TEXTUREFORMAT_RGBA=5;z.TEXTUREFORMAT_RED=6;z.TEXTUREFORMAT_R=6;z.TEXTUREFORMAT_R16_UNORM=33322;z.TEXTUREFORMAT_RG16_UNORM=33324;z.TEXTUREFORMAT_RGB16_UNORM=32852;z.TEXTUREFORMAT_RGBA16_UNORM=32859;z.TEXTUREFORMAT_R16_SNORM=36760;z.TEXTUREFORMAT_RG16_SNORM=36761;z.TEXTUREFORMAT_RGB16_SNORM=36762;z.TEXTUREFORMAT_RGBA16_SNORM=36763;z.TEXTUREFORMAT_RG=7;z.TEXTUREFORMAT_RED_INTEGER=8;z.TEXTUREFORMAT_R_INTEGER=8;z.TEXTUREFORMAT_RG_INTEGER=9;z.TEXTUREFORMAT_RGB_INTEGER=10;z.TEXTUREFORMAT_RGBA_INTEGER=11;z.TEXTUREFORMAT_BGRA=12;z.TEXTUREFORMAT_DEPTH24_STENCIL8=13;z.TEXTUREFORMAT_DEPTH32_FLOAT=14;z.TEXTUREFORMAT_DEPTH16=15;z.TEXTUREFORMAT_DEPTH24=16;z.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;z.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;z.TEXTUREFORMAT_STENCIL8=19;z.TEXTUREFORMAT_UNDEFINED=4294967295;z.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;z.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;z.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;z.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;z.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;z.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;z.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;z.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;z.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;z.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;z.TEXTURETYPE_UNSIGNED_BYTE=0;z.TEXTURETYPE_UNSIGNED_INT=0;z.TEXTURETYPE_FLOAT=1;z.TEXTURETYPE_HALF_FLOAT=2;z.TEXTURETYPE_BYTE=3;z.TEXTURETYPE_SHORT=4;z.TEXTURETYPE_UNSIGNED_SHORT=5;z.TEXTURETYPE_INT=6;z.TEXTURETYPE_UNSIGNED_INTEGER=7;z.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;z.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;z.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;z.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;z.TEXTURETYPE_UNSIGNED_INT_24_8=12;z.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;z.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;z.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;z.TEXTURETYPE_UNDEFINED=16;z.TEXTURE_2D=3553;z.TEXTURE_2D_ARRAY=35866;z.TEXTURE_CUBE_MAP=34067;z.TEXTURE_CUBE_MAP_ARRAY=3735928559;z.TEXTURE_3D=32879;z.TEXTURE_NEAREST_SAMPLINGMODE=1;z.TEXTURE_NEAREST_NEAREST=1;z.TEXTURE_BILINEAR_SAMPLINGMODE=2;z.TEXTURE_LINEAR_LINEAR=2;z.TEXTURE_TRILINEAR_SAMPLINGMODE=3;z.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;z.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;z.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;z.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;z.TEXTURE_NEAREST_LINEAR=7;z.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;z.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;z.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;z.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;z.TEXTURE_LINEAR_NEAREST=12;z.TEXTURE_EXPLICIT_MODE=0;z.TEXTURE_SPHERICAL_MODE=1;z.TEXTURE_PLANAR_MODE=2;z.TEXTURE_CUBIC_MODE=3;z.TEXTURE_PROJECTION_MODE=4;z.TEXTURE_SKYBOX_MODE=5;z.TEXTURE_INVCUBIC_MODE=6;z.TEXTURE_EQUIRECTANGULAR_MODE=7;z.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;z.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;z.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;z.TEXTURE_FILTERING_QUALITY_HIGH=64;z.TEXTURE_FILTERING_QUALITY_MEDIUM=16;z.TEXTURE_FILTERING_QUALITY_LOW=8;z.SCALEMODE_FLOOR=1;z.SCALEMODE_NEAREST=2;z.SCALEMODE_CEILING=3;z.MATERIAL_TextureDirtyFlag=1;z.MATERIAL_LightDirtyFlag=2;z.MATERIAL_FresnelDirtyFlag=4;z.MATERIAL_AttributesDirtyFlag=8;z.MATERIAL_MiscDirtyFlag=16;z.MATERIAL_PrePassDirtyFlag=32;z.MATERIAL_ImageProcessingDirtyFlag=64;z.MATERIAL_AllDirtyFlag=127;z.MATERIAL_TriangleFillMode=0;z.MATERIAL_WireFrameFillMode=1;z.MATERIAL_PointFillMode=2;z.MATERIAL_PointListDrawMode=3;z.MATERIAL_LineListDrawMode=4;z.MATERIAL_LineLoopDrawMode=5;z.MATERIAL_LineStripDrawMode=6;z.MATERIAL_TriangleStripDrawMode=7;z.MATERIAL_TriangleFanDrawMode=8;z.MATERIAL_ClockWiseSideOrientation=0;z.MATERIAL_CounterClockWiseSideOrientation=1;z.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;z.MATERIAL_DIFFUSE_MODEL_BURLEY=1;z.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;z.MATERIAL_DIFFUSE_MODEL_LEGACY=3;z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;z.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;z.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;z.ACTION_NothingTrigger=0;z.ACTION_OnPickTrigger=1;z.ACTION_OnLeftPickTrigger=2;z.ACTION_OnRightPickTrigger=3;z.ACTION_OnCenterPickTrigger=4;z.ACTION_OnPickDownTrigger=5;z.ACTION_OnDoublePickTrigger=6;z.ACTION_OnPickUpTrigger=7;z.ACTION_OnPickOutTrigger=16;z.ACTION_OnLongPressTrigger=8;z.ACTION_OnPointerOverTrigger=9;z.ACTION_OnPointerOutTrigger=10;z.ACTION_OnEveryFrameTrigger=11;z.ACTION_OnIntersectionEnterTrigger=12;z.ACTION_OnIntersectionExitTrigger=13;z.ACTION_OnKeyDownTrigger=14;z.ACTION_OnKeyUpTrigger=15;z.PARTICLES_BILLBOARDMODE_Y=2;z.PARTICLES_BILLBOARDMODE_ALL=7;z.PARTICLES_BILLBOARDMODE_STRETCHED=8;z.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;z.MESHES_CULLINGSTRATEGY_STANDARD=0;z.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;z.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;z.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;z.SCENELOADER_NO_LOGGING=0;z.SCENELOADER_MINIMAL_LOGGING=1;z.SCENELOADER_SUMMARY_LOGGING=2;z.SCENELOADER_DETAILED_LOGGING=3;z.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;z.PREPASS_POSITION_TEXTURE_TYPE=1;z.PREPASS_VELOCITY_TEXTURE_TYPE=2;z.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;z.PREPASS_COLOR_TEXTURE_TYPE=4;z.PREPASS_DEPTH_TEXTURE_TYPE=5;z.PREPASS_NORMAL_TEXTURE_TYPE=6;z.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;z.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;z.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;z.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;z.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;z.PREPASS_ALBEDO_TEXTURE_TYPE=12;z.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;z.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;z.BUFFER_CREATIONFLAG_READ=1;z.BUFFER_CREATIONFLAG_WRITE=2;z.BUFFER_CREATIONFLAG_READWRITE=3;z.BUFFER_CREATIONFLAG_UNIFORM=4;z.BUFFER_CREATIONFLAG_VERTEX=8;z.BUFFER_CREATIONFLAG_INDEX=16;z.BUFFER_CREATIONFLAG_STORAGE=32;z.BUFFER_CREATIONFLAG_INDIRECT=64;z.RENDERPASS_MAIN=0;z.INPUT_ALT_KEY=18;z.INPUT_CTRL_KEY=17;z.INPUT_META_KEY1=91;z.INPUT_META_KEY2=92;z.INPUT_META_KEY3=93;z.INPUT_SHIFT_KEY=16;z.SNAPSHOTRENDERING_STANDARD=0;z.SNAPSHOTRENDERING_FAST=1;z.PERSPECTIVE_CAMERA=0;z.ORTHOGRAPHIC_CAMERA=1;z.FOVMODE_VERTICAL_FIXED=0;z.FOVMODE_HORIZONTAL_FIXED=1;z.RIG_MODE_NONE=0;z.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;z.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;z.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;z.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;z.RIG_MODE_STEREOSCOPIC_INTERLACED=14;z.RIG_MODE_VR=20;z.RIG_MODE_CUSTOM=22;z.MAX_SUPPORTED_UV_SETS=6;z.GL_ALPHA_EQUATION_ADD=32774;z.GL_ALPHA_EQUATION_MIN=32775;z.GL_ALPHA_EQUATION_MAX=32776;z.GL_ALPHA_EQUATION_SUBTRACT=32778;z.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;z.GL_ALPHA_FUNCTION_SRC=768;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;z.GL_ALPHA_FUNCTION_SRC_ALPHA=770;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;z.GL_ALPHA_FUNCTION_DST_ALPHA=772;z.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;z.GL_ALPHA_FUNCTION_DST_COLOR=774;z.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;z.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;z.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;z.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;z.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;z.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;z.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;z.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;z.SnippetUrl="https://snippet.babylonjs.com";z.FOGMODE_NONE=0;z.FOGMODE_EXP=1;z.FOGMODE_EXP2=2;z.FOGMODE_LINEAR=3;z.BYTE=5120;z.UNSIGNED_BYTE=5121;z.SHORT=5122;z.UNSIGNED_SHORT=5123;z.INT=5124;z.UNSIGNED_INT=5125;z.FLOAT=5126;z.PositionKind="position";z.NormalKind="normal";z.TangentKind="tangent";z.UVKind="uv";z.UV2Kind="uv2";z.UV3Kind="uv3";z.UV4Kind="uv4";z.UV5Kind="uv5";z.UV6Kind="uv6";z.ColorKind="color";z.ColorInstanceKind="instanceColor";z.MatricesIndicesKind="matricesIndices";z.MatricesWeightsKind="matricesWeights";z.MatricesIndicesExtraKind="matricesIndicesExtra";z.MatricesWeightsExtraKind="matricesWeightsExtra";z.ANIMATIONTYPE_FLOAT=0;z.ANIMATIONTYPE_VECTOR3=1;z.ANIMATIONTYPE_QUATERNION=2;z.ANIMATIONTYPE_MATRIX=3;z.ANIMATIONTYPE_COLOR3=4;z.ANIMATIONTYPE_COLOR4=7;z.ANIMATIONTYPE_VECTOR2=5;z.ANIMATIONTYPE_SIZE=6;z.ShadowMinZ=0;z.ShadowMaxZ=1e4;z.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;z.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var _it,X6=y(()=>{_it=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function Id(n,e,t,i){let r=lt(n,e);return i?r[t][i]:r[t]}function lt(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:z.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function gn(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=Id(t,r,n,e);return new Fe(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:lt,set:(t,i,r,s)=>{let a=Id(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=Id(t,r,n,e))==null?void 0:s.wAng},getTarget:lt,set:(t,i,r,s)=>Id(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=Id(t,r,n,e);return new Fe(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:lt,set:(t,i,r,s)=>{let a=Id(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function nE(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=Y6;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function sE(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=Y6;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var Gpe,kpe,Wpe,zpe,Hpe,Xpe,Y6,DN=y(()=>{We();PN();Kt();ML();X6();Gpe={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 Z.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=Z.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 Kr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!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 Kr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!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)}}}}}},kpe={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},Wpe={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__:{}},zpe={__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"]}}}},Hpe={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).emissiveColor,set:(n,e,t,i)=>lt(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:gn("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=Id(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=Id(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:gn("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>lt(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:gn("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=lt(n,e,t);return dt.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=lt(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:gn("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).metallic,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).roughness,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:gn("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>lt(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{lt(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>lt(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{lt(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:gn("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{lt(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{lt(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:gn("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=lt(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:gn("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:gn("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.dispersion,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>lt(n,e,t).emissiveIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>lt(n,e,t).indexOfRefraction,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.intensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.indexOfRefraction,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:gn("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.maximumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.minimumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:gn("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).sheen.color,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:gn("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).sheen.intensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:gn("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).metallicF0Factor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).metallicReflectanceColor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:gn("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:gn("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.refractionIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:gn("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.translucencyIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:gn("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).subSurface.translucencyColor,getTarget:lt,set:(n,e,t,i)=>{var r;return n&&((r=lt(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:gn("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).subSurface.tintColor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.tintColorAtDistance,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.maximumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:gn("subSurface","thicknessTexture")}}}}}},Xpe={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&&je.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=je.Inverse(n)),Z.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};Y6={cameras:zpe,nodes:Gpe,materials:Hpe,extensions:Xpe,animations:kpe,meshes:Wpe}});function LN(...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]=LN(a,o):t[s]=o}return t},{})}var K6=y(()=>{});var aE,j6=y(()=>{aE=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var SM,q6=y(()=>{We();sd();SM=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===mt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=Z.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),u=i-t;let m,g=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,_=!1,v=r&&this._animationState.loopMode===mt.ANIMATIONLOOPMODE_YOYO;if(v){let E=(g-t)/u,T=Math.sin(E*Math.PI);g=Math.abs(T)*u+t;let A=T>=0?1:-1;this._yoyoDirection!==A&&(_=!0),this._yoyoDirection=A}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=g,!r&&i>=t&&(g>=u&&s>0||g<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(g<=u&&s<0||g>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==mt.ANIMATIONLOOPMODE_CYCLE){let E=i.toString()+t.toString();if(!this._offsetsCache[E]){this._animationState.repeatCount=0,this._animationState.loopMode=mt.ANIMATIONLOOPMODE_CYCLE;let T=o._interpolate(t,this._animationState),S=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case mt.ANIMATIONTYPE_FLOAT:this._offsetsCache[E]=S-T;break;case mt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_SIZE:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_COLOR3:this._offsetsCache[E]=S.subtract(T);break;default:break}this._highLimitsCache[E]=S}p=this._highLimitsCache[E],m=this._offsetsCache[E]}if(m===void 0)switch(o.dataType){case mt.ANIMATIONTYPE_FLOAT:m=0;break;case mt.ANIMATIONTYPE_QUATERNION:m=vL;break;case mt.ANIMATIONTYPE_VECTOR3:m=EL;break;case mt.ANIMATIONTYPE_VECTOR2:m=SL;break;case mt.ANIMATIONTYPE_SIZE:m=TL;break;case mt.ANIMATIONTYPE_COLOR3:m=AL;break;case mt.ANIMATIONTYPE_COLOR4:m=xL;break}if(this._host&&this._host.syncRoot){let E=this._host.syncRoot,T=(E.masterFrame-E.fromFrame)/(E.toFrame-E.fromFrame);f=t+u*T}else g>0&&t>i||g<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=u===0?0:g/u>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let h=o._interpolate(f,this._animationState);if(this.setValue(h,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||u<0&&f<=d[m].frame&&d[m].frame<=t){let g=d[m];g.isDone||(g.onlyOnce&&(d.splice(m,1),m--),g.isDone=!0,g.action(f))}}return c||(this._stopped=!0),c}}});function Ype(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),h.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(je.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&&(je.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?(T=v.value.clone(),m?(E=T.getTranslation(),T.setTranslation(E.scaleInPlace(g))):p&&a?(E=T.getTranslation(),T.setTranslation(E.multiplyInPlace(a))):T=v.value):T=v.value,_.push({frame:v.frame+r,value:T}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=br.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,u=!1){let h=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,u);return h.weight=s,h},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,u=!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 oE(this,t,i,r,s,a,o,void 0,d,u));let h=f?f(t):!0;if(t.animations&&h&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let g=0;gs&&(o=-o),new oE(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 u=t.getDescendants(i),h=[];h.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of u)h.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return h},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{vi();q6();sd();cc();We();oE=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{gM();ON();Ks();ON();Z6(ri,ao)});var $6={};Be($6,{AnimationGroup:()=>NN,TargetedAnimation:()=>TM});var TM,NN,J6=y(()=>{sd();vi();Gi();Hf();Q6();ER();TM=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=bc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},NN=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 TM(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;tg[0].frame&&(c=g[0].frame),f=t&&g<=i||s&&p.frame>=t&&p.frame<=i){let _={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=_.frame),_.frame-=m,h.push(_)}}if(h.length===0){l.splice(c,1),c--;continue}a>h[0].frame&&(a=h[0].frame),olE,TransformNodeAnimationPropertyInfo:()=>eg,WeightAnimationPropertyInfo:()=>AM,getQuaternion:()=>e7,getVector3:()=>wN,getWeights:()=>t7});function wN(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function e7(n,e,t,i){return je.FromArray(e,t).scaleInPlace(i)}function t7(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{sd();We();DN();lE=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 mt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},eg=class extends lE{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},AM=class extends lE{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}};sE("/nodes/{}/translation",[new eg(mt.ANIMATIONTYPE_VECTOR3,"position",wN,()=>3)]);sE("/nodes/{}/rotation",[new eg(mt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",e7,()=>4)]);sE("/nodes/{}/scale",[new eg(mt.ANIMATIONTYPE_VECTOR3,"scaling",wN,()=>3)]);sE("/nodes/{}/weights",[new AM(mt.ANIMATIONTYPE_FLOAT,"influence",t7,n=>n._numMorphTargets)])});var qpe,Zpe,Qpe,$pe,FN,xM,BN,n7,RM=y(()=>{Xr();xD();qpe="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==",Zpe="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==",Qpe="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",$pe=0,FN=(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+$pe++,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,op.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),op.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},xM=n=>FN(n,qpe,"environmentBRDFTexture","EnvironmentBRDFTexture"),BN=n=>FN(n,Zpe,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),n7=n=>FN(n,Qpe,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function s7(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 a7=y(()=>{});var UN=y(()=>{zs();Lt();Es();Mt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};Mt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};Mt.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,D=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let k=(H=n.width)!=null?H:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);I.label=(de=e==null?void 0:e.label)!=null?de:"MultiRenderTargetWrapper",I._framebuffer=w,I._generateDepthBuffer=a||r,I._generateStencilBuffer=a?V:s,I._depthStencilBuffer=this._setupFramebufferDepthAttachments(I._generateStencilBuffer,I._generateDepthBuffer,k,O,1,o),I._attachments=B;for(let ae=0;ae1||this.isWebGPU);let qe=this.webGLVersion>1,Ye=C[qe?"COLOR_ATTACHMENT"+ae:"COLOR_ATTACHMENT"+ae+"_WEBGL"];if(B.push(Ye),ue===-1||M)continue;let Ke=new Vi(this,6);N[ae]=Ke,C.activeTexture(C["TEXTURE"+ae]),C.bindTexture(ue,Ke._hardwareTexture.underlyingResource),C.texParameteri(ue,C.TEXTURE_MAG_FILTER,Ge.mag),C.texParameteri(ue,C.TEXTURE_MIN_FILTER,Ge.min),C.texParameteri(ue,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(ue,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Zt=this._getRGBABufferInternalSizedFormat(ne,Ce,ve),Ut=this._getInternalFormat(Ce),Wi=this._getWebGLTextureType(ne);if(qe&&(ue===35866||ue===32879))ue===35866?Ke.is2DArray=!0:Ke.is3D=!0,Ke.baseDepth=Ke.depth=be,C.texImage3D(ue,0,Zt,k,O,be,0,Ut,Wi,null);else if(ue===34067){for(let oe=0;oe<6;oe++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+oe,0,Zt,k,O,0,Ut,Wi,null);Ke.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Zt,k,O,0,Ut,Wi,null);i&&C.generateMipmap(ue),this._bindTextureDirectly(ue,null),Ke.baseWidth=k,Ke.baseHeight=O,Ke.width=k,Ke.height=O,Ke.isReady=!0,Ke.samples=1,Ke.generateMipMaps=i,Ke.samplingMode=_e,Ke.type=ne,Ke._useSRGBBuffer=ve,Ke.format=Ce,Ke.label=(Ue=R[ae])!=null?Ue:I.label+"-Texture"+ae,this._internalTexturesCache.push(Ke)}if(a&&this._caps.depthTextureExtension&&!M){let ae=new Vi(this,14),_e=5,ne=C.DEPTH_COMPONENT16,ve=C.DEPTH_COMPONENT,Ce=C.UNSIGNED_SHORT,ue=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ne=C.DEPTH_COMPONENT:o===14?(_e=1,Ce=C.FLOAT,ne=C.DEPTH_COMPONENT32F):o===18?(_e=0,Ce=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ne=C.DEPTH32F_STENCIL8,ve=C.DEPTH_STENCIL,ue=C.DEPTH_STENCIL_ATTACHMENT):o===16?(_e=0,Ce=C.UNSIGNED_INT,ne=C.DEPTH_COMPONENT24,ue=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(_e=12,Ce=C.UNSIGNED_INT_24_8,ne=C.DEPTH24_STENCIL8,ve=C.DEPTH_STENCIL,ue=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,k,O,0,ve,Ce,null),C.framebufferTexture2D(C.FRAMEBUFFER,ue,C.TEXTURE_2D,ae._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),I._depthStencilTexture=ae,I._depthStencilTextureWithStencil=V,ae.baseWidth=k,ae.baseHeight=O,ae.width=k,ae.height=O,ae.isReady=!0,ae.samples=1,ae.generateMipMaps=i,ae.samplingMode=1,ae.format=o,ae.type=_e,ae.label=I.label+"-DepthStencil",N[l]=ae,this._internalTexturesCache.push(ae)}if(I.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(D),I.setLayerAndFaceIndices(S,T),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(I,c,t);else if(c>1){let ae=C.createFramebuffer();if(!ae)throw new Error("Unable to create multi sampled framebuffer");I._samples=c,I._MSAAFramebuffer=ae,l>0&&t&&(this._bindUnboundFramebuffer(ae),C.drawBuffers(B),this._bindUnboundFramebuffer(D))}return I};Mt.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"],u=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!u)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(u),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};Mt.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 bM,o7=y(()=>{Xr();jf();UN();bM=class extends Yr{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 l7,Jpe,c7=y(()=>{W();l7="mrtFragmentDeclaration",Jpe=`#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 Rd("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 cM,g6=y(()=>{Sc();tR();p6();hN();dN();cM=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new Ec(e.getScene()),this._thinMinMaxReducer=new lM(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{c6();g6();fM=class extends cM{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 qp(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 v6,ype,Or,Zp,dM,Ko,E6=y(()=>{We();jf();An();oM();hp();_6();Lt();Gi();pv();v6=b.Up(),ype=b.Zero(),Or=new b,Zp=new b,dM=new Z,Ko=class n extends Fi{_validateFilter(e){return e===Fi.FILTER_NONE||e===Fi.FILTER_PCF||e===Fi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Fi.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===Fi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Fi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),Z.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(ype,this._transformMatrices[r],Or),Or.scaleInPlace(this._mapSize/2),Zp.copyFromFloats(Math.round(Or.x),Math.round(Or.y),Math.round(Or.z)),Zp.subtractInPlace(Or).scaleInPlace(2/this._mapSize),Z.TranslationToRef(Zp.x,Zp.y,0,dM),this._projectionMatrices[r].multiplyToRef(dM,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=Z.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===Fi.FILTER_PCF&&e.setColorWrite(!1),Za.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!==Fi.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?Ik(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===Fi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Fi.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}};Ko._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)];Ko.CLASSNAME="CascadedShadowGenerator";Ko.DEFAULT_CASCADES_COUNT=4;Ko.MIN_CASCADES_COUNT=2;Ko.MAX_CASCADES_COUNT=4;Ko._SceneComponentInitialization=n=>{throw $e("ShadowGeneratorSceneComponent")}});function uM(n,e){Ipe[n]=e}var Ipe,mN=y(()=>{Ipe={}});var pN,S6=y(()=>{oM();E6();sp();mN();uM(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 pN(n),n._addComponent(e))}});async function T6(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new wr;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 A6=y(()=>{Cu()});function Cpe(n){return!!n.createPlugin}function Ppe(n){return!!n.name}function hM(){return Ul[".babylon"]}function Dpe(n){for(let e in Ul){let t=Ul[e];if(t.mimeType===n)return t}}function _N(n,e){let t=Ul[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?hM():void 0)}function Lpe(n){return!!Ul[n]}function Ope(n){for(let e in Ul){let t=Ul[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return Ul[e]}return hM()}function Npe(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function wpe(n){return n.substring(0,5)==="data:"?n.substring(5):null}function vN(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 EN(n,e,t,i,r,s,a,o,l){var h;let c=wpe(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?Npe(n.url):"",d=a?_N(a,!0):c?Ope(n.url):_N(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await T6(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),g=m.headerValues?m.headerValues["Content-Type"]:"";g&&(d=Dpe(g))}d||(d=hM())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((h=l==null?void 0:l[d.plugin.name])==null?void 0:h.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(Cpe(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(_=>{r("Error instantiating plugin.",_)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var A;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(R6.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!Wf(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 g=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},_=null,v=!1;(A=m.onDisposeObservable)==null||A.add(()=>{v=!0,_&&(_.abort(),_=null),s()});let E=()=>{if(v)return;let R=(M,I)=>{r(M==null?void 0:M.statusText,I)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";_=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,g,R,o):e._loadFile(n.file||n.url,p,i,!0,g,R)},T=e.getEngine(),S=T.enableOfflineSupport;if(S){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}S=!R}S&&Re.OfflineProviderFactory?e.offlineProvider=Re.OfflineProviderFactory(n.url,E,T.disableManifestCheck):E()})}function SN(n,e){let t,i,r=null,s=null;if(!e)t=n,i=pe.GetFilename(n),n=pe.GetFolderPath(n);else if(Ppe(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=Gf(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return pe.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=pe.GetFilename(e),n=pe.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function bd(n){if(typeof n.extensions=="string"){let e=n.extensions;Ul[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)Ul[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function Jv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await M6(i,r,n,e,s,a,o,l)}async function b6(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=SN(e,t);if(!f)return null;let d={};i.addPendingData(d);let u=()=>{i.removePendingData(d)},h=(p,_)=>{let v=vN(f,p,_);a?a(i,v,new Ks(v,Ha.SceneLoaderError,_)):ee.Error(v),u()},m=s?p=>{try{s(p)}catch(_){h("Error in onProgress callback: "+_,_)}}:void 0,g=(p,_,v,E,T,S,A,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,_,v,E,T,S,A,R)}catch(M){h("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await EN(f,i,(p,_,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let E=p,T=[],S=[],A=[];if(!E.importMesh(n,i,_,f.rootUrl,T,S,A,h))return;i.loadingPluginName=p.name,g(T,S,A,[],[],[],[],[])}else p.importMeshAsync(n,i,_,f.rootUrl,m,f.name).then(T=>{i.loadingPluginName=p.name,g(T.meshes,T.particleSystems,T.skeletons,T.animationGroups,T.transformNodes,T.geometries,T.lights,T.spriteManagers)}).catch(T=>{h(T.message,T)})},m,h,u,o,l,c)}async function M6(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{b6(n,e,t,i,(f,d,u,h,m,g,p,_)=>{l({meshes:f,particleSystems:d,skeletons:u,animationGroups:h,transformNodes:m,geometries:g,lights:p,spriteManagers:_})},r,(f,d,u)=>{c(u||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function y6(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){pe.Error("No engine available");return}await TN(n,e,new ri(t),i,r,s,a,o,l)}async function Fpe(n,e,t,i,r,s,a){return await new Promise((o,l)=>{y6(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function TN(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=SN(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};tn.ShowLoadingScreen&&!gN&&(gN=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),gN=!1}));let u=(g,p)=>{let _=vN(c,g,p);s?s(t,_,new Ks(_,Ha.SceneLoaderError,p)):ee.Error(_),d()},h=r?g=>{try{r(g)}catch(p){u("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(g){u("Error in onSuccess callback",g)}t.removePendingData(f)};return await EN(c,t,(g,p)=>{if(g.load){if(!g.load(t,p,c.rootUrl,u))return;t.loadingPluginName=g.name,m()}else g.loadAsync(t,p,c.rootUrl,h,c.name).then(()=>{t.loadingPluginName=g.name,m()}).catch(v=>{u(v.message,v)})},h,u,d,a,o,l)}async function Bpe(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{TN(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 AN(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=SN(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},u=(g,p)=>{let _=vN(c,g,p);s?s(t,_,new Ks(_,Ha.SceneLoaderError,p)):ee.Error(_),d()},h=r?g=>{try{r(g)}catch(p){u("Error in onProgress callback",p)}}:void 0,m=g=>{if(i)try{i(g)}catch(p){u("Error in onSuccess callback",p)}t.removePendingData(f)};return await EN(c,t,(g,p)=>{if(g.loadAssetContainer){let v=g.loadAssetContainer(t,p,c.rootUrl,u);if(!v)return;v.populateRootNodes(),t.loadingPluginName=g.name,m(v)}else g.loadAssetContainerAsync?g.loadAssetContainerAsync(t,p,c.rootUrl,h,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=g.name,m(v)}).catch(v=>{u(v.message,v)}):u("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},h,u,d,a,o,l)}async function Upe(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{AN(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 I6(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 g=t.getNodes();for(let p of g)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let g of m)g.dispose();break;case 1:for(let g of t.animationGroups)g.stop();break;case 2:for(let g of t.animationGroups)g.reset(),g.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let u=t.animatables.length;await AN(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(u),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function Vpe(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{I6(n,e,t,i,r,s,u=>{f(u)},a,(u,h,m)=>{d(m||new Error(h))},o,l,c).catch(d)}catch(u){d(u)}})}var x6,R6,Ul,gN,Qu,Qp=y(()=>{Ni();vi();js();Gi();Lt();NR();gc();ev();J_();Hr();A6();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(x6||(x6={}));R6=new ie,Ul={},gN=!1;Qu=class{static get ForceFullSceneLoadingForIncremental(){return tn.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){tn.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return tn.ShowLoadingScreen}static set ShowLoadingScreen(e){tn.ShowLoadingScreen=e}static get loggingLevel(){return tn.loggingLevel}static set loggingLevel(e){tn.loggingLevel=e}static get CleanBoneMatrixWeights(){return tn.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){tn.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return hM()}static GetPluginForExtension(e){var t;return(t=_N(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Lpe(e)}static RegisterPlugin(e){bd(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){b6(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 M6(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){y6(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 Fpe(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){TN(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 Bpe(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){AN(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 Upe(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){I6(e,t,i,r,s,a,o,l,c,f,d).catch(u=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,u==null?void 0:u.message,u))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await Vpe(e,t,i,r,s,a,l,f,d)}};Qu.NO_LOGGING=0;Qu.MINIMAL_LOGGING=1;Qu.SUMMARY_LOGGING=2;Qu.DETAILED_LOGGING=3;Qu.OnPluginActivatedObservable=R6});var mM,xN,RN,Vl,eE=y(()=>{wi();$f();pp();Lt();Gi();WL();ld();Dl();Ni();Hf();mM=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}},xN=class extends mM{},RN=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}},Vl=class extends mM{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 Cc){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 u=d.uniqueId;t.has(u)&&(f.add(u),i.dependsOn.get(u).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 Ir&&this.meshes.indexOf(e)!==-1||e instanceof $t&&this.transformNodes.indexOf(e)!==-1||e instanceof jt&&this.lights.indexOf(e)!==-1||e instanceof _t&&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()||pe.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new RN,o=[],l=[],c={doNotInstantiate:!0,...i},f=(g,p)=>{if(r[g.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(g.name)),p instanceof Q){let _=p;if(_.morphTargetManager){let v=g.morphTargetManager;_.morphTargetManager=v.clone();for(let E=0;E{if(f(g,p),g.parent){let _=r[g.parent.uniqueId],v=s[_];v?p.parent=v:p.parent=g.parent}if(p.position&&g.position&&p.position.copyFrom(g.position),p.rotationQuaternion&&g.rotationQuaternion&&p.rotationQuaternion.copyFrom(g.rotationQuaternion),p.rotation&&g.rotation&&p.rotation.copyFrom(g.rotation),p.scaling&&g.scaling&&p.scaling.copyFrom(g.scaling),p.material){let _=p;if(_.material)if(t){let v=g.material;if(l.indexOf(v)===-1){let E=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=E.uniqueId,s[E.uniqueId]=E,v.getClassName()==="MultiMaterial"){let T=v;for(let S of T.subMaterials)S&&(E=S.clone(e?e(S.name):"Clone of "+S.name),l.push(S),r[S.uniqueId]=E.uniqueId,s[E.uniqueId]=E);T.subMaterials=T.subMaterials.map(S=>S&&s[r[S.uniqueId]])}}_.getClassName()!=="InstancedMesh"&&(_.material=s[r[v.uniqueId]])}else _.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(_.material)===-1&&this.scene.addMultiMaterial(_.material):this.scene.materials.indexOf(_.material)===-1&&this.scene.addMaterial(_.material)}p.parent===null&&a.rootNodes.push(p)};for(let g of h)if(g.getClassName()==="InstancedMesh"){let p=g,_=p.sourceMesh,v=r[_.uniqueId],T=(typeof v=="number"?s[v]:_).createInstance(p.name);m(p,T)}else{let p=!0;g.getClassName()==="TransformNode"||g.getClassName()==="Node"||g.skeleton||!g.getTotalVertices||g.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(g):p=!c.doNotInstantiate);let _=p?g.createInstance(`instance of ${g.name}`):g.clone(`Clone of ${g.name}`,null,!0);if(!_)throw new Error(`Could not clone or instantiate node on Asset Container ${g.name}`);m(g,_)}for(let g of this.skeletons){if(c.predicate&&!c.predicate(g))continue;let p=g.clone(e?e(g.name):"Clone of "+g.name);for(let _ of this.meshes)if(_.skeleton===g&&!_.isAnInstance){let v=s[r[_.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let E of p.bones)E._linkedTransformNode&&(E._linkedTransformNode=s[r[E._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let g of this.animationGroups){if(c.predicate&&!c.predicate(g))continue;let p=g.clone(e?e(g.name):"Clone of "+g.name,_=>s[r[_.uniqueId]]||_);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||pe.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()||pe.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 g of e)g.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let g of t)g.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let g of i)g.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let g of r)g.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let g of s)g.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let g of a)g.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let g of o)g.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let g of l)g.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let g of c)g.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let g of f)g.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let g of d)g.dispose();this.textures.length=0;let u=this.reflectionProbes.slice(0);for(let g of u)g.dispose();this.reflectionProbes.length=0;let h=this.morphTargetManagers.slice(0);for(let g of h)g.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let g of m)g.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let g of this.scene._serializableComponents)g.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 xN);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 Q("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(u=>u.targetProperty===f.targetProperty);for(let u of d){let h=c.animations.indexOf(u,0);h>-1&&c.animations.splice(h,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 Q?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof Cc?this.meshes.push(r):r instanceof $t?this.transformNodes.push(r):r instanceof jt?this.lights.push(r):r instanceof _t&&this.cameras.push(r),r instanceof Ir){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];ti&&ti.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 $u,C6=y(()=>{tv();$u=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 bG(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function bN(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 Gpe(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{bN(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 $p,P6=y(()=>{Ni();$p=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${bN}(${Gpe})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=u=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(u)},d=u=>{let h=u.data;switch(h.id){case"getExternalResource":{r(h.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:h.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:h.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=h.value,s(h.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(h.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:pe.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let u=e.slice();c.postMessage({id:"validate",data:u,rootUrl:t,fileName:i},[u.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=pe.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>bN(e,t,i,r)))}};$p.Configuration={url:`${pe._DefaultCdnUrl}/gltf_validator.js`};$p._LastResults=null});var qc,tE,D6=y(()=>{qc="Z2xURg",tE={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,"+qc)||n.startsWith("data:;base64,"+qc)||n.startsWith("data:application/octet-stream;base64,"+qc)||n.startsWith("data:model/gltf-binary;base64,"+qc)}}});function L6(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function kpe(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 Jp,Ju,bs,pM,Wpe,MN,Md,yN=y(()=>{vi();Ni();Qp();eE();Lt();C6();P6();D6();gc();ev();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(Jp||(Jp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(Ju||(Ju={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(bs||(bs={}));pM=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=Ju.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=Jp.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}},Wpe=new pM,MN=class extends pM{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A,R,M,I,C,D;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=(u=e.loadMorphTargets)!=null?u:this.loadMorphTargets,this.loadNodeAnimations=(h=e.loadNodeAnimations)!=null?h:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(g=e.loadSkins)!=null?g: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=(_=e.preprocessUrlAsync)!=null?_:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(E=e.targetFps)!=null?E:this.targetFps,this.transparencyAsCoverage=(T=e.transparencyAsCoverage)!=null?T:this.transparencyAsCoverage,this.useClipPlane=(S=e.useClipPlane)!=null?S:this.useClipPlane,this.useGltfTextureNames=(A=e.useGltfTextureNames)!=null?A:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(I=e.useSRGBBuffers)!=null?I:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(D=e.dontUseTransmissionHelper)!=null?D:this.dontUseTransmissionHelper)}},Md=class n extends MN{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=tE.name,this.extensions=tE.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({...Wpe},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||pe.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:(u,h)=>new Promise((m,g)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{g(p)},p=>{p.setRequestHeader("Range",`bytes=${u}-${u+h-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new $u(d)).then(u=>{f.onCompleteObservable.notifyObservers(f),r(u)},o?u=>o(void 0,u):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new $u({readAsync:(d,u)=>L6(f,d,u),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 $u({readAsync:(o,l)=>kpe(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 Vl(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 tE.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+qc)||t.startsWith(";base64,"+qc)||t.startsWith("application/octet-stream;base64,"+qc)||t.startsWith("model/gltf-binary;base64,"+qc)){let i=zf(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new $u({readAsync:(r,s)=>L6(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[tE.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(bs[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"),$p.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"),pe.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 Ks("Unexpected magic: "+i,Ha.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,u)=>e.buffer.readAsync(f+d,u),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{gM=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 as,N6=y(()=>{Xt();zt();Fl();mR();We();Ni();as=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=pe.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===Fo.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{Xt();vi();zt();Fl();wo();Ni();eh=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=pe.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!==at.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===at.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===at.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===at.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,at.POINTERDOWN|at.POINTERUP|at.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()],eh.prototype,"buttons",void 0);P([F()],eh.prototype,"angularSensibility",void 0);is.FreeCameraMouseInput=eh});var th,F6=y(()=>{Xt();zt();vi();wo();pR();Ni();th=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=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Bo.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,at.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()],th.prototype,"wheelPrecisionX",void 0);P([F()],th.prototype,"wheelPrecisionY",void 0);P([F()],th.prototype,"wheelPrecisionZ",void 0)});var ki,ta,B6=y(()=>{Xt();zt();Fl();F6();We();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(ki||(ki={}));ta=class extends th{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==ki.MoveRelative||(this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==ki.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==ki.MoveRelative||(this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==ki.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==ki.MoveRelative||(this._wheelZAction=ki.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==ki.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==ki.RotateRelative||(this._wheelXAction=ki.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==ki.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==ki.RotateRelative||(this._wheelYAction=ki.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==ki.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==ki.RotateRelative||(this._wheelZAction=ki.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==ki.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==ki.MoveScene||(this._wheelXAction=ki.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==ki.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==ki.MoveScene||(this._wheelYAction=ki.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==ki.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==ki.MoveScene||(this._wheelZAction=ki.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==ki.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=Z.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 ki.MoveRelative:r=this._moveRelative;break;case ki.RotateRelative:r=this._rotateRelative;break;case ki.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()],ta.prototype,"wheelXMoveRelative",null);P([F()],ta.prototype,"wheelYMoveRelative",null);P([F()],ta.prototype,"wheelZMoveRelative",null);P([F()],ta.prototype,"wheelXRotateRelative",null);P([F()],ta.prototype,"wheelYRotateRelative",null);P([F()],ta.prototype,"wheelZRotateRelative",null);P([F()],ta.prototype,"wheelXMoveScene",null);P([F()],ta.prototype,"wheelYMoveScene",null);P([F()],ta.prototype,"wheelZMoveScene",null);is.FreeCameraMouseWheelInput=ta});var ih,U6=y(()=>{Xt();zt();Fl();wo();We();Ni();ih=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=pe.IsSafari()}attachControl(e){e=pe.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===at.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===at.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===at.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,at.POINTERDOWN|at.POINTERUP|at.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),Z.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()],ih.prototype,"touchAngularSensibility",void 0);P([F()],ih.prototype,"touchMoveSensibility",void 0);is.FreeCameraTouchInput=ih});var _M,V6=y(()=>{Fl();N6();w6();B6();U6();_M=class extends Bp{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new as),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new eh(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new ta,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new ih),this}clear(){super.clear(),this._mouseInput=null}}});var Zc,G6=y(()=>{Xt();zt();We();ML();V6();Ni();er();Hr();Zc=class extends Qs{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()>Re.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 _M(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=pe.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([Jr()],Zc.prototype,"ellipsoid",void 0);P([Jr()],Zc.prototype,"ellipsoidOffset",void 0);P([F()],Zc.prototype,"checkCollisions",void 0);P([F()],Zc.prototype,"applyGravity",void 0);Bt("BABYLON.FreeCamera",Zc)});var ao,vM=y(()=>{We();Al();xa();ao=class n extends xi{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:Z.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new Z,this._absoluteBindMatrix=new Z,this._absoluteInverseBindMatrix=new Z,this._finalMatrix=new Z,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:je.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=je.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,Z.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{Xr();iE=class n extends ge{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,u,h){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,h),this.wrapU=ge.CLAMP_ADDRESSMODE,this.wrapV=ge.CLAMP_ADDRESSMODE,this._waitingForData=!!u&&!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 EM,W6=y(()=>{vM();vi();We();k6();sd();vL();Gi();Lt();nv();EM=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=Z.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=iE.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=iE.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?Z.FromArray(s.rest):null,c=new ao(s.name,i,o,Z.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(mt.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{Xt();vi();Gi();Yi();zt();Dr();er();yd=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=st.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())),st.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{Xr();SM=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,u){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,u),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 rh,H6=y(()=>{Oo();Lt();Gi();IN();z6();rh=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 Ki(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(yd.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};rh.EnableTextureStorage=!0;rh.MaxActiveMorphTargetsInVertexAttributeMode=8;rh.ConstantTargetCountForTextureMode=0});function TM(n,e,t){rE(n)&&ee.Warn(`Extension with the name '${n}' already exists`),CN.set(n,{isGLTFExtension:e,factory:t})}function rE(n){return CN.delete(n)}var CN,X6,PN=y(()=>{Lt();CN=new Map,X6=CN});var z,DN=y(()=>{z=class{};z.AUTOSAMPLERSUFFIX="Sampler";z.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";z.ALPHA_DISABLE=0;z.ALPHA_ADD=1;z.ALPHA_COMBINE=2;z.ALPHA_SUBTRACT=3;z.ALPHA_MULTIPLY=4;z.ALPHA_MAXIMIZED=5;z.ALPHA_ONEONE=6;z.ALPHA_PREMULTIPLIED=7;z.ALPHA_PREMULTIPLIED_PORTERDUFF=8;z.ALPHA_INTERPOLATE=9;z.ALPHA_SCREENMODE=10;z.ALPHA_ONEONE_ONEONE=11;z.ALPHA_ALPHATOCOLOR=12;z.ALPHA_REVERSEONEMINUS=13;z.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;z.ALPHA_ONEONE_ONEZERO=15;z.ALPHA_EXCLUSION=16;z.ALPHA_LAYER_ACCUMULATE=17;z.ALPHA_MIN=18;z.ALPHA_MAX=19;z.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;z.ALPHA_EQUATION_ADD=0;z.ALPHA_EQUATION_SUBSTRACT=1;z.ALPHA_EQUATION_REVERSE_SUBTRACT=2;z.ALPHA_EQUATION_MAX=3;z.ALPHA_EQUATION_MIN=4;z.ALPHA_EQUATION_DARKEN=5;z.DELAYLOADSTATE_NONE=0;z.DELAYLOADSTATE_LOADED=1;z.DELAYLOADSTATE_LOADING=2;z.DELAYLOADSTATE_NOTLOADED=4;z.NEVER=512;z.ALWAYS=519;z.LESS=513;z.EQUAL=514;z.LEQUAL=515;z.GREATER=516;z.GEQUAL=518;z.NOTEQUAL=517;z.KEEP=7680;z.ZERO=0;z.REPLACE=7681;z.INCR=7682;z.DECR=7683;z.INVERT=5386;z.INCR_WRAP=34055;z.DECR_WRAP=34056;z.TEXTURE_CLAMP_ADDRESSMODE=0;z.TEXTURE_WRAP_ADDRESSMODE=1;z.TEXTURE_MIRROR_ADDRESSMODE=2;z.TEXTURE_CREATIONFLAG_STORAGE=1;z.TEXTUREFORMAT_ALPHA=0;z.TEXTUREFORMAT_LUMINANCE=1;z.TEXTUREFORMAT_LUMINANCE_ALPHA=2;z.TEXTUREFORMAT_RGB=4;z.TEXTUREFORMAT_RGBA=5;z.TEXTUREFORMAT_RED=6;z.TEXTUREFORMAT_R=6;z.TEXTUREFORMAT_R16_UNORM=33322;z.TEXTUREFORMAT_RG16_UNORM=33324;z.TEXTUREFORMAT_RGB16_UNORM=32852;z.TEXTUREFORMAT_RGBA16_UNORM=32859;z.TEXTUREFORMAT_R16_SNORM=36760;z.TEXTUREFORMAT_RG16_SNORM=36761;z.TEXTUREFORMAT_RGB16_SNORM=36762;z.TEXTUREFORMAT_RGBA16_SNORM=36763;z.TEXTUREFORMAT_RG=7;z.TEXTUREFORMAT_RED_INTEGER=8;z.TEXTUREFORMAT_R_INTEGER=8;z.TEXTUREFORMAT_RG_INTEGER=9;z.TEXTUREFORMAT_RGB_INTEGER=10;z.TEXTUREFORMAT_RGBA_INTEGER=11;z.TEXTUREFORMAT_BGRA=12;z.TEXTUREFORMAT_DEPTH24_STENCIL8=13;z.TEXTUREFORMAT_DEPTH32_FLOAT=14;z.TEXTUREFORMAT_DEPTH16=15;z.TEXTUREFORMAT_DEPTH24=16;z.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;z.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;z.TEXTUREFORMAT_STENCIL8=19;z.TEXTUREFORMAT_UNDEFINED=4294967295;z.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;z.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;z.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;z.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;z.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;z.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;z.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;z.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;z.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;z.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;z.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;z.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;z.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;z.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;z.TEXTURETYPE_UNSIGNED_BYTE=0;z.TEXTURETYPE_UNSIGNED_INT=0;z.TEXTURETYPE_FLOAT=1;z.TEXTURETYPE_HALF_FLOAT=2;z.TEXTURETYPE_BYTE=3;z.TEXTURETYPE_SHORT=4;z.TEXTURETYPE_UNSIGNED_SHORT=5;z.TEXTURETYPE_INT=6;z.TEXTURETYPE_UNSIGNED_INTEGER=7;z.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;z.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;z.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;z.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;z.TEXTURETYPE_UNSIGNED_INT_24_8=12;z.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;z.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;z.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;z.TEXTURETYPE_UNDEFINED=16;z.TEXTURE_2D=3553;z.TEXTURE_2D_ARRAY=35866;z.TEXTURE_CUBE_MAP=34067;z.TEXTURE_CUBE_MAP_ARRAY=3735928559;z.TEXTURE_3D=32879;z.TEXTURE_NEAREST_SAMPLINGMODE=1;z.TEXTURE_NEAREST_NEAREST=1;z.TEXTURE_BILINEAR_SAMPLINGMODE=2;z.TEXTURE_LINEAR_LINEAR=2;z.TEXTURE_TRILINEAR_SAMPLINGMODE=3;z.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;z.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;z.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;z.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;z.TEXTURE_NEAREST_LINEAR=7;z.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;z.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;z.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;z.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;z.TEXTURE_LINEAR_NEAREST=12;z.TEXTURE_EXPLICIT_MODE=0;z.TEXTURE_SPHERICAL_MODE=1;z.TEXTURE_PLANAR_MODE=2;z.TEXTURE_CUBIC_MODE=3;z.TEXTURE_PROJECTION_MODE=4;z.TEXTURE_SKYBOX_MODE=5;z.TEXTURE_INVCUBIC_MODE=6;z.TEXTURE_EQUIRECTANGULAR_MODE=7;z.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;z.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;z.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;z.TEXTURE_FILTERING_QUALITY_HIGH=64;z.TEXTURE_FILTERING_QUALITY_MEDIUM=16;z.TEXTURE_FILTERING_QUALITY_LOW=8;z.SCALEMODE_FLOOR=1;z.SCALEMODE_NEAREST=2;z.SCALEMODE_CEILING=3;z.MATERIAL_TextureDirtyFlag=1;z.MATERIAL_LightDirtyFlag=2;z.MATERIAL_FresnelDirtyFlag=4;z.MATERIAL_AttributesDirtyFlag=8;z.MATERIAL_MiscDirtyFlag=16;z.MATERIAL_PrePassDirtyFlag=32;z.MATERIAL_ImageProcessingDirtyFlag=64;z.MATERIAL_AllDirtyFlag=127;z.MATERIAL_TriangleFillMode=0;z.MATERIAL_WireFrameFillMode=1;z.MATERIAL_PointFillMode=2;z.MATERIAL_PointListDrawMode=3;z.MATERIAL_LineListDrawMode=4;z.MATERIAL_LineLoopDrawMode=5;z.MATERIAL_LineStripDrawMode=6;z.MATERIAL_TriangleStripDrawMode=7;z.MATERIAL_TriangleFanDrawMode=8;z.MATERIAL_ClockWiseSideOrientation=0;z.MATERIAL_CounterClockWiseSideOrientation=1;z.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;z.MATERIAL_DIFFUSE_MODEL_BURLEY=1;z.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;z.MATERIAL_DIFFUSE_MODEL_LEGACY=3;z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;z.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;z.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;z.ACTION_NothingTrigger=0;z.ACTION_OnPickTrigger=1;z.ACTION_OnLeftPickTrigger=2;z.ACTION_OnRightPickTrigger=3;z.ACTION_OnCenterPickTrigger=4;z.ACTION_OnPickDownTrigger=5;z.ACTION_OnDoublePickTrigger=6;z.ACTION_OnPickUpTrigger=7;z.ACTION_OnPickOutTrigger=16;z.ACTION_OnLongPressTrigger=8;z.ACTION_OnPointerOverTrigger=9;z.ACTION_OnPointerOutTrigger=10;z.ACTION_OnEveryFrameTrigger=11;z.ACTION_OnIntersectionEnterTrigger=12;z.ACTION_OnIntersectionExitTrigger=13;z.ACTION_OnKeyDownTrigger=14;z.ACTION_OnKeyUpTrigger=15;z.PARTICLES_BILLBOARDMODE_Y=2;z.PARTICLES_BILLBOARDMODE_ALL=7;z.PARTICLES_BILLBOARDMODE_STRETCHED=8;z.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;z.MESHES_CULLINGSTRATEGY_STANDARD=0;z.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;z.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;z.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;z.SCENELOADER_NO_LOGGING=0;z.SCENELOADER_MINIMAL_LOGGING=1;z.SCENELOADER_SUMMARY_LOGGING=2;z.SCENELOADER_DETAILED_LOGGING=3;z.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;z.PREPASS_POSITION_TEXTURE_TYPE=1;z.PREPASS_VELOCITY_TEXTURE_TYPE=2;z.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;z.PREPASS_COLOR_TEXTURE_TYPE=4;z.PREPASS_DEPTH_TEXTURE_TYPE=5;z.PREPASS_NORMAL_TEXTURE_TYPE=6;z.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;z.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;z.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;z.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;z.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;z.PREPASS_ALBEDO_TEXTURE_TYPE=12;z.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;z.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;z.BUFFER_CREATIONFLAG_READ=1;z.BUFFER_CREATIONFLAG_WRITE=2;z.BUFFER_CREATIONFLAG_READWRITE=3;z.BUFFER_CREATIONFLAG_UNIFORM=4;z.BUFFER_CREATIONFLAG_VERTEX=8;z.BUFFER_CREATIONFLAG_INDEX=16;z.BUFFER_CREATIONFLAG_STORAGE=32;z.BUFFER_CREATIONFLAG_INDIRECT=64;z.RENDERPASS_MAIN=0;z.INPUT_ALT_KEY=18;z.INPUT_CTRL_KEY=17;z.INPUT_META_KEY1=91;z.INPUT_META_KEY2=92;z.INPUT_META_KEY3=93;z.INPUT_SHIFT_KEY=16;z.SNAPSHOTRENDERING_STANDARD=0;z.SNAPSHOTRENDERING_FAST=1;z.PERSPECTIVE_CAMERA=0;z.ORTHOGRAPHIC_CAMERA=1;z.FOVMODE_VERTICAL_FIXED=0;z.FOVMODE_HORIZONTAL_FIXED=1;z.RIG_MODE_NONE=0;z.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;z.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;z.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;z.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;z.RIG_MODE_STEREOSCOPIC_INTERLACED=14;z.RIG_MODE_VR=20;z.RIG_MODE_CUSTOM=22;z.MAX_SUPPORTED_UV_SETS=6;z.GL_ALPHA_EQUATION_ADD=32774;z.GL_ALPHA_EQUATION_MIN=32775;z.GL_ALPHA_EQUATION_MAX=32776;z.GL_ALPHA_EQUATION_SUBTRACT=32778;z.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;z.GL_ALPHA_FUNCTION_SRC=768;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;z.GL_ALPHA_FUNCTION_SRC_ALPHA=770;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;z.GL_ALPHA_FUNCTION_DST_ALPHA=772;z.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;z.GL_ALPHA_FUNCTION_DST_COLOR=774;z.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;z.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;z.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;z.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;z.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;z.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;z.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;z.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;z.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;z.SnippetUrl="https://snippet.babylonjs.com";z.FOGMODE_NONE=0;z.FOGMODE_EXP=1;z.FOGMODE_EXP2=2;z.FOGMODE_LINEAR=3;z.BYTE=5120;z.UNSIGNED_BYTE=5121;z.SHORT=5122;z.UNSIGNED_SHORT=5123;z.INT=5124;z.UNSIGNED_INT=5125;z.FLOAT=5126;z.PositionKind="position";z.NormalKind="normal";z.TangentKind="tangent";z.UVKind="uv";z.UV2Kind="uv2";z.UV3Kind="uv3";z.UV4Kind="uv4";z.UV5Kind="uv5";z.UV6Kind="uv6";z.ColorKind="color";z.ColorInstanceKind="instanceColor";z.MatricesIndicesKind="matricesIndices";z.MatricesWeightsKind="matricesWeights";z.MatricesIndicesExtraKind="matricesIndicesExtra";z.MatricesWeightsExtraKind="matricesWeightsExtra";z.ANIMATIONTYPE_FLOAT=0;z.ANIMATIONTYPE_VECTOR3=1;z.ANIMATIONTYPE_QUATERNION=2;z.ANIMATIONTYPE_MATRIX=3;z.ANIMATIONTYPE_COLOR3=4;z.ANIMATIONTYPE_COLOR4=7;z.ANIMATIONTYPE_VECTOR2=5;z.ANIMATIONTYPE_SIZE=6;z.ShadowMinZ=0;z.ShadowMaxZ=1e4;z.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;z.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var Sit,Y6=y(()=>{Sit=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function Id(n,e,t,i){let r=lt(n,e);return i?r[t][i]:r[t]}function lt(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:z.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function gn(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=Id(t,r,n,e);return new Fe(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:lt,set:(t,i,r,s)=>{let a=Id(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=Id(t,r,n,e))==null?void 0:s.wAng},getTarget:lt,set:(t,i,r,s)=>Id(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=Id(t,r,n,e);return new Fe(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:lt,set:(t,i,r,s)=>{let a=Id(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function nE(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=K6;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function sE(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=K6;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var zpe,Hpe,Xpe,Ype,Kpe,jpe,K6,LN=y(()=>{We();DN();Kt();yL();Y6();zpe={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 Z.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=Z.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 Kr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!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 Kr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!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)}}}}}},Hpe={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},Xpe={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__:{}},Ype={__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"]}}}},Kpe={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).emissiveColor,set:(n,e,t,i)=>lt(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:gn("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=Id(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=Id(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:gn("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>lt(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:gn("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=lt(n,e,t);return dt.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=lt(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:gn("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).metallic,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).roughness,set:(n,e,t,i)=>{let r=lt(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:gn("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>lt(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{lt(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>lt(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{lt(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:gn("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{lt(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{lt(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>lt(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:gn("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=lt(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:gn("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:gn("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.dispersion,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>lt(n,e,t).emissiveIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>lt(n,e,t).indexOfRefraction,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.intensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.indexOfRefraction,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:gn("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.maximumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>lt(n,e,t).iridescence.minimumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:gn("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).sheen.color,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:gn("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).sheen.intensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:gn("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).metallicF0Factor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).metallicReflectanceColor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:gn("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:gn("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.refractionIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:gn("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.translucencyIntensity,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:gn("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).subSurface.translucencyColor,getTarget:lt,set:(n,e,t,i)=>{var r;return n&&((r=lt(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:gn("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>lt(n,e,t).subSurface.tintColor,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.tintColorAtDistance,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>lt(n,e,t).subSurface.maximumThickness,getTarget:lt,set:(n,e,t,i)=>lt(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:gn("subSurface","thicknessTexture")}}}}}},jpe={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&&je.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=je.Inverse(n)),Z.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};K6={cameras:Ype,nodes:zpe,materials:Kpe,extensions:jpe,animations:Hpe,meshes:Xpe}});function ON(...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]=ON(a,o):t[s]=o}return t},{})}var j6=y(()=>{});var aE,q6=y(()=>{aE=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var AM,Z6=y(()=>{We();sd();AM=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===mt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=Z.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),u=i-t;let m,g=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,_=!1,v=r&&this._animationState.loopMode===mt.ANIMATIONLOOPMODE_YOYO;if(v){let E=(g-t)/u,T=Math.sin(E*Math.PI);g=Math.abs(T)*u+t;let A=T>=0?1:-1;this._yoyoDirection!==A&&(_=!0),this._yoyoDirection=A}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=g,!r&&i>=t&&(g>=u&&s>0||g<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(g<=u&&s<0||g>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==mt.ANIMATIONLOOPMODE_CYCLE){let E=i.toString()+t.toString();if(!this._offsetsCache[E]){this._animationState.repeatCount=0,this._animationState.loopMode=mt.ANIMATIONLOOPMODE_CYCLE;let T=o._interpolate(t,this._animationState),S=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case mt.ANIMATIONTYPE_FLOAT:this._offsetsCache[E]=S-T;break;case mt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_SIZE:this._offsetsCache[E]=S.subtract(T);break;case mt.ANIMATIONTYPE_COLOR3:this._offsetsCache[E]=S.subtract(T);break;default:break}this._highLimitsCache[E]=S}p=this._highLimitsCache[E],m=this._offsetsCache[E]}if(m===void 0)switch(o.dataType){case mt.ANIMATIONTYPE_FLOAT:m=0;break;case mt.ANIMATIONTYPE_QUATERNION:m=EL;break;case mt.ANIMATIONTYPE_VECTOR3:m=SL;break;case mt.ANIMATIONTYPE_VECTOR2:m=TL;break;case mt.ANIMATIONTYPE_SIZE:m=AL;break;case mt.ANIMATIONTYPE_COLOR3:m=xL;break;case mt.ANIMATIONTYPE_COLOR4:m=RL;break}if(this._host&&this._host.syncRoot){let E=this._host.syncRoot,T=(E.masterFrame-E.fromFrame)/(E.toFrame-E.fromFrame);f=t+u*T}else g>0&&t>i||g<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=u===0?0:g/u>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let h=o._interpolate(f,this._animationState);if(this.setValue(h,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||u<0&&f<=d[m].frame&&d[m].frame<=t){let g=d[m];g.isDone||(g.onlyOnce&&(d.splice(m,1),m--),g.isDone=!0,g.action(f))}}return c||(this._stopped=!0),c}}});function qpe(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),h.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(je.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&&(je.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?(T=v.value.clone(),m?(E=T.getTranslation(),T.setTranslation(E.scaleInPlace(g))):p&&a?(E=T.getTranslation(),T.setTranslation(E.multiplyInPlace(a))):T=v.value):T=v.value,_.push({frame:v.frame+r,value:T}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=br.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,u=!1){let h=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,u);return h.weight=s,h},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,u=!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 oE(this,t,i,r,s,a,o,void 0,d,u));let h=f?f(t):!0;if(t.animations&&h&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let g=0;gs&&(o=-o),new oE(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 u=t.getDescendants(i),h=[];h.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of u)h.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return h},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{vi();Z6();sd();cc();We();oE=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{vM();NN();js();NN();Q6(ri,ao)});var J6={};Be(J6,{AnimationGroup:()=>wN,TargetedAnimation:()=>xM});var xM,wN,e7=y(()=>{sd();vi();Gi();Hf();$6();TR();xM=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=bc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},wN=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 xM(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;tg[0].frame&&(c=g[0].frame),f=t&&g<=i||s&&p.frame>=t&&p.frame<=i){let _={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=_.frame),_.frame-=m,h.push(_)}}if(h.length===0){l.splice(c,1),c--;continue}a>h[0].frame&&(a=h[0].frame),olE,TransformNodeAnimationPropertyInfo:()=>eg,WeightAnimationPropertyInfo:()=>RM,getQuaternion:()=>t7,getVector3:()=>FN,getWeights:()=>i7});function FN(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function t7(n,e,t,i){return je.FromArray(e,t).scaleInPlace(i)}function i7(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{sd();We();LN();lE=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 mt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},eg=class extends lE{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},RM=class extends lE{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}};sE("/nodes/{}/translation",[new eg(mt.ANIMATIONTYPE_VECTOR3,"position",FN,()=>3)]);sE("/nodes/{}/rotation",[new eg(mt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",t7,()=>4)]);sE("/nodes/{}/scale",[new eg(mt.ANIMATIONTYPE_VECTOR3,"scaling",FN,()=>3)]);sE("/nodes/{}/weights",[new RM(mt.ANIMATIONTYPE_FLOAT,"influence",i7,n=>n._numMorphTargets)])});var $pe,Jpe,ege,tge,BN,bM,UN,s7,MM=y(()=>{Xr();RD();$pe="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==",Jpe="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==",ege="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",tge=0,BN=(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+tge++,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,op.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),op.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},bM=n=>BN(n,$pe,"environmentBRDFTexture","EnvironmentBRDFTexture"),UN=n=>BN(n,Jpe,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),s7=n=>BN(n,ege,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function a7(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 o7=y(()=>{});var VN=y(()=>{Hs();Lt();Es();Mt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};Mt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};Mt.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,D=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let k=(H=n.width)!=null?H:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);I.label=(de=e==null?void 0:e.label)!=null?de:"MultiRenderTargetWrapper",I._framebuffer=w,I._generateDepthBuffer=a||r,I._generateStencilBuffer=a?V:s,I._depthStencilBuffer=this._setupFramebufferDepthAttachments(I._generateStencilBuffer,I._generateDepthBuffer,k,O,1,o),I._attachments=B;for(let ae=0;ae1||this.isWebGPU);let qe=this.webGLVersion>1,Ye=C[qe?"COLOR_ATTACHMENT"+ae:"COLOR_ATTACHMENT"+ae+"_WEBGL"];if(B.push(Ye),ue===-1||M)continue;let Ke=new Vi(this,6);N[ae]=Ke,C.activeTexture(C["TEXTURE"+ae]),C.bindTexture(ue,Ke._hardwareTexture.underlyingResource),C.texParameteri(ue,C.TEXTURE_MAG_FILTER,Ge.mag),C.texParameteri(ue,C.TEXTURE_MIN_FILTER,Ge.min),C.texParameteri(ue,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(ue,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Zt=this._getRGBABufferInternalSizedFormat(ne,Ce,ve),Ut=this._getInternalFormat(Ce),Wi=this._getWebGLTextureType(ne);if(qe&&(ue===35866||ue===32879))ue===35866?Ke.is2DArray=!0:Ke.is3D=!0,Ke.baseDepth=Ke.depth=be,C.texImage3D(ue,0,Zt,k,O,be,0,Ut,Wi,null);else if(ue===34067){for(let oe=0;oe<6;oe++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+oe,0,Zt,k,O,0,Ut,Wi,null);Ke.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Zt,k,O,0,Ut,Wi,null);i&&C.generateMipmap(ue),this._bindTextureDirectly(ue,null),Ke.baseWidth=k,Ke.baseHeight=O,Ke.width=k,Ke.height=O,Ke.isReady=!0,Ke.samples=1,Ke.generateMipMaps=i,Ke.samplingMode=_e,Ke.type=ne,Ke._useSRGBBuffer=ve,Ke.format=Ce,Ke.label=(Ue=R[ae])!=null?Ue:I.label+"-Texture"+ae,this._internalTexturesCache.push(Ke)}if(a&&this._caps.depthTextureExtension&&!M){let ae=new Vi(this,14),_e=5,ne=C.DEPTH_COMPONENT16,ve=C.DEPTH_COMPONENT,Ce=C.UNSIGNED_SHORT,ue=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ne=C.DEPTH_COMPONENT:o===14?(_e=1,Ce=C.FLOAT,ne=C.DEPTH_COMPONENT32F):o===18?(_e=0,Ce=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ne=C.DEPTH32F_STENCIL8,ve=C.DEPTH_STENCIL,ue=C.DEPTH_STENCIL_ATTACHMENT):o===16?(_e=0,Ce=C.UNSIGNED_INT,ne=C.DEPTH_COMPONENT24,ue=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(_e=12,Ce=C.UNSIGNED_INT_24_8,ne=C.DEPTH24_STENCIL8,ve=C.DEPTH_STENCIL,ue=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,k,O,0,ve,Ce,null),C.framebufferTexture2D(C.FRAMEBUFFER,ue,C.TEXTURE_2D,ae._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),I._depthStencilTexture=ae,I._depthStencilTextureWithStencil=V,ae.baseWidth=k,ae.baseHeight=O,ae.width=k,ae.height=O,ae.isReady=!0,ae.samples=1,ae.generateMipMaps=i,ae.samplingMode=1,ae.format=o,ae.type=_e,ae.label=I.label+"-DepthStencil",N[l]=ae,this._internalTexturesCache.push(ae)}if(I.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(D),I.setLayerAndFaceIndices(S,T),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(I,c,t);else if(c>1){let ae=C.createFramebuffer();if(!ae)throw new Error("Unable to create multi sampled framebuffer");I._samples=c,I._MSAAFramebuffer=ae,l>0&&t&&(this._bindUnboundFramebuffer(ae),C.drawBuffers(B),this._bindUnboundFramebuffer(D))}return I};Mt.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"],u=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!u)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(u),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};Mt.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 yM,l7=y(()=>{Xr();jf();VN();yM=class extends Yr{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 c7,ige,f7=y(()=>{W();c7="mrtFragmentDeclaration",ige=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) layout(location=0) out vec4 glFragData[{X}]; #endif -`;x.IncludesShadersStore[l7]||(x.IncludesShadersStore[l7]=Jpe)});var f7,ege,MM=y(()=>{W();f7="pbrFragmentReflectionDeclaration",ege=`#ifdef REFLECTION +`;x.IncludesShadersStore[c7]||(x.IncludesShadersStore[c7]=ige)});var d7,rge,IM=y(()=>{W();d7="pbrFragmentReflectionDeclaration",rge=`#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 -`;x.IncludesShadersStore[f7]||(x.IncludesShadersStore[f7]=ege)});var d7,tge,VN=y(()=>{W();d7="sceneFragmentDeclaration",tge=`uniform mat4 viewProjection; +`;x.IncludesShadersStore[d7]||(x.IncludesShadersStore[d7]=rge)});var u7,nge,GN=y(()=>{W();u7="sceneFragmentDeclaration",nge=`uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif uniform mat4 view;uniform mat4 projection;uniform vec4 vEyePosition;uniform mat4 inverseProjection; -`;x.IncludesShadersStore[d7]||(x.IncludesShadersStore[d7]=tge)});var u7,ige,tg=y(()=>{W();u7="pbrBRDFFunctions",ige=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 +`;x.IncludesShadersStore[u7]||(x.IncludesShadersStore[u7]=nge)});var h7,sge,tg=y(()=>{W();h7="pbrBRDFFunctions",sge=`#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 -`;x.IncludesShadersStore[u7]||(x.IncludesShadersStore[u7]=ige)});var h7,rge,GN=y(()=>{W();h7="openpbrDielectricReflectance",rge=`struct ReflectanceParams +`;x.IncludesShadersStore[h7]||(x.IncludesShadersStore[h7]=sge)});var m7,age,kN=y(()=>{W();m7="openpbrDielectricReflectance",age=`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;} -`;x.IncludesShadersStore[h7]||(x.IncludesShadersStore[h7]=rge)});var m7,nge,yM=y(()=>{W();m7="pbrIBLFunctions",nge=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;x.IncludesShadersStore[m7]||(x.IncludesShadersStore[m7]=age)});var p7,oge,CM=y(()=>{W();p7="pbrIBLFunctions",oge=`#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 -`;x.IncludesShadersStore[m7]||(x.IncludesShadersStore[m7]=nge)});var p7,sge,kN=y(()=>{W();p7="openpbrGeometryInfo",sge=`struct geometryInfoOutParams +`;x.IncludesShadersStore[p7]||(x.IncludesShadersStore[p7]=oge)});var g7,lge,WN=y(()=>{W();g7="openpbrGeometryInfo",lge=`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;}`;x.IncludesShadersStore[p7]||(x.IncludesShadersStore[p7]=sge)});var g7,age,WN=y(()=>{W();g7="openpbrIblFunctions",age=`#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;}`;x.IncludesShadersStore[g7]||(x.IncludesShadersStore[g7]=lge)});var _7,cge,zN=y(()=>{W();_7="openpbrIblFunctions",cge=`#ifdef REFLECTION vec3 sampleIrradiance( in vec3 surfaceNormal #if defined(NORMAL) && defined(USESPHERICALINVERTEX) @@ -11215,7 +11215,7 @@ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90 #endif } #endif -`;x.IncludesShadersStore[g7]||(x.IncludesShadersStore[g7]=age)});var _7,oge,zN=y(()=>{W();_7="openpbrSubsurfaceLayerData",oge=`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); +`;x.IncludesShadersStore[_7]||(x.IncludesShadersStore[_7]=cge)});var v7,fge,HN=y(()=>{W();v7="openpbrSubsurfaceLayerData",fge=`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 -`;x.IncludesShadersStore[_7]||(x.IncludesShadersStore[_7]=oge)});var v7,lge,HN=y(()=>{W();v7="openpbrTransmissionLayerData",lge=`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; +`;x.IncludesShadersStore[v7]||(x.IncludesShadersStore[v7]=fge)});var E7,dge,XN=y(()=>{W();E7="openpbrTransmissionLayerData",dge=`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 -`;x.IncludesShadersStore[v7]||(x.IncludesShadersStore[v7]=lge)});var S7={};Be(S7,{geometryPixelShader:()=>cge});var XN,E7,cge,YN=y(()=>{W();Yc();c7();jb();qb();Ja();MM();VN();ju();tg();GN();yM();Qv();kN();WN();Zu();Kc();Zb();zN();HN();XN="geometryPixelShader",E7=`#extension GL_EXT_draw_buffers : require +`;x.IncludesShadersStore[E7]||(x.IncludesShadersStore[E7]=dge)});var T7={};Be(T7,{geometryPixelShader:()=>uge});var YN,S7,uge,KN=y(()=>{W();Yc();f7();Zb();Qb();Ja();IM();GN();ju();tg();kN();CM();Qv();WN();zN();Zu();Kc();$b();HN();XN();YN="geometryPixelShader",S7=`#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 } -`;x.ShadersStore[XN]||(x.ShadersStore[XN]=E7);cge={name:XN,shader:E7}});var T7,fge,A7=y(()=>{W();T7="geometryVertexDeclaration",fge="uniform mat4 viewProjection;uniform mat4 view;";x.IncludesShadersStore[T7]||(x.IncludesShadersStore[T7]=fge)});var x7,dge,R7=y(()=>{W();ju();x7="geometryUboDeclaration",dge=`#include -`;x.IncludesShadersStore[x7]||(x.IncludesShadersStore[x7]=dge)});var b7,uge,ig=y(()=>{W();b7="harmonicsFunctions",uge=`#ifdef USESPHERICALFROMREFLECTIONMAP +`;x.ShadersStore[YN]||(x.ShadersStore[YN]=S7);uge={name:YN,shader:S7}});var A7,hge,x7=y(()=>{W();A7="geometryVertexDeclaration",hge="uniform mat4 viewProjection;uniform mat4 view;";x.IncludesShadersStore[A7]||(x.IncludesShadersStore[A7]=hge)});var R7,mge,b7=y(()=>{W();ju();R7="geometryUboDeclaration",mge=`#include +`;x.IncludesShadersStore[R7]||(x.IncludesShadersStore[R7]=mge)});var M7,pge,ig=y(()=>{W();M7="harmonicsFunctions",pge=`#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 -`;x.IncludesShadersStore[b7]||(x.IncludesShadersStore[b7]=uge)});var y7={};Be(y7,{geometryVertexShader:()=>hge});var KN,M7,hge,jN=y(()=>{W();Vc();Gc();Sd();Td();md();A7();R7();kc();ig();Ad();xd();Wc();zc();Hc();Xc();Bb();KN="geometryVertexShader",M7=`precision highp float; +`;x.IncludesShadersStore[M7]||(x.IncludesShadersStore[M7]=pge)});var I7={};Be(I7,{geometryVertexShader:()=>gge});var jN,y7,gge,qN=y(()=>{W();Vc();Gc();Sd();Td();md();x7();b7();kc();ig();Ad();xd();Wc();zc();Hc();Xc();Vb();jN="geometryVertexShader",y7=`precision highp float; #include #include #include @@ -11741,7 +11741,7 @@ vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVector)*vReflectio #endif #endif } -`;x.ShadersStore[KN]||(x.ShadersStore[KN]=M7);hge={name:KN,shader:M7}});var I7,mge,rg=y(()=>{W();I7="harmonicsFunctions",mge=`#ifdef USESPHERICALFROMREFLECTIONMAP +`;x.ShadersStore[jN]||(x.ShadersStore[jN]=y7);gge={name:jN,shader:y7}});var C7,_ge,rg=y(()=>{W();C7="harmonicsFunctions",_ge=`#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 -`;x.IncludesShadersStoreWGSL[I7]||(x.IncludesShadersStoreWGSL[I7]=mge)});var P7={};Be(P7,{geometryVertexShaderWGSL:()=>pge});var qN,C7,pge,D7=y(()=>{W();Pc();Dc();gd();_d();hd();Xu();Lc();rg();vd();Ed();Oc();Nc();wc();Fc();hb();qN="geometryVertexShader",C7=`#include +`;x.IncludesShadersStoreWGSL[C7]||(x.IncludesShadersStoreWGSL[C7]=_ge)});var D7={};Be(D7,{geometryVertexShaderWGSL:()=>vge});var ZN,P7,vge,L7=y(()=>{W();Pc();Dc();gd();_d();hd();Xu();Lc();rg();vd();Ed();Oc();Nc();wc();Fc();pb();ZN="geometryVertexShader",P7=`#include #include #include #include[0..maxSimultaneousMorphTargets] @@ -11967,7 +11967,7 @@ vertexOutputs.vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVect #endif #endif } -`;x.ShadersStoreWGSL[qN]||(x.ShadersStoreWGSL[qN]=C7);pge={name:qN,shader:C7}});var L7,gge,IM=y(()=>{W();L7="pbrFragmentReflectionDeclaration",gge=`#ifdef REFLECTION +`;x.ShadersStoreWGSL[ZN]||(x.ShadersStoreWGSL[ZN]=P7);vge={name:ZN,shader:P7}});var O7,Ege,PM=y(()=>{W();O7="pbrFragmentReflectionDeclaration",Ege=`#ifdef REFLECTION #ifdef REFLECTIONMAP_3D var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube; #ifdef LODBASEDMICROSFURACE @@ -11995,7 +11995,7 @@ varying vDirectionW: vec3f; #endif #endif #endif -`;x.IncludesShadersStoreWGSL[L7]||(x.IncludesShadersStoreWGSL[L7]=gge)});var O7,_ge,ng=y(()=>{W();O7="pbrBRDFFunctions",_ge=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25 +`;x.IncludesShadersStoreWGSL[O7]||(x.IncludesShadersStoreWGSL[O7]=Ege)});var N7,Sge,ng=y(()=>{W();N7="pbrBRDFFunctions",Sge=`#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 -`;x.IncludesShadersStoreWGSL[O7]||(x.IncludesShadersStoreWGSL[O7]=_ge)});var N7,vge,ZN=y(()=>{W();N7="openpbrDielectricReflectance",vge=`struct ReflectanceParams +`;x.IncludesShadersStoreWGSL[N7]||(x.IncludesShadersStoreWGSL[N7]=Sge)});var w7,Tge,QN=y(()=>{W();w7="openpbrDielectricReflectance",Tge=`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;} -`;x.IncludesShadersStoreWGSL[N7]||(x.IncludesShadersStoreWGSL[N7]=vge)});var w7,Ege,CM=y(()=>{W();w7="pbrIBLFunctions",Ege=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;x.IncludesShadersStoreWGSL[w7]||(x.IncludesShadersStoreWGSL[w7]=Tge)});var F7,Age,DM=y(()=>{W();F7="pbrIBLFunctions",Age=`#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 -`;x.IncludesShadersStoreWGSL[w7]||(x.IncludesShadersStoreWGSL[w7]=Ege)});var F7,Sge,QN=y(()=>{W();F7="openpbrGeometryInfo",Sge=`struct geometryInfoOutParams +`;x.IncludesShadersStoreWGSL[F7]||(x.IncludesShadersStoreWGSL[F7]=Age)});var B7,xge,$N=y(()=>{W();B7="openpbrGeometryInfo",xge=`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;} -`;x.IncludesShadersStoreWGSL[F7]||(x.IncludesShadersStoreWGSL[F7]=Sge)});var B7,Tge,$N=y(()=>{W();B7="openpbrIblFunctions",Tge=`#ifdef REFLECTION +`;x.IncludesShadersStoreWGSL[B7]||(x.IncludesShadersStoreWGSL[B7]=xge)});var U7,Rge,JN=y(()=>{W();U7="openpbrIblFunctions",Rge=`#ifdef REFLECTION fn sampleIrradiance( surfaceNormal: vec3f #if defined(NORMAL) && defined(USESPHERICALINVERTEX) @@ -12458,7 +12458,7 @@ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90 #endif } #endif -`;x.IncludesShadersStoreWGSL[B7]||(x.IncludesShadersStoreWGSL[B7]=Tge)});var U7,Age,JN=y(()=>{W();U7="openpbrSubsurfaceLayerData",Age=`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); +`;x.IncludesShadersStoreWGSL[U7]||(x.IncludesShadersStoreWGSL[U7]=Rge)});var V7,bge,ew=y(()=>{W();V7="openpbrSubsurfaceLayerData",bge=`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 -`;x.IncludesShadersStoreWGSL[U7]||(x.IncludesShadersStoreWGSL[U7]=Age)});var V7,xge,ew=y(()=>{W();V7="openpbrTransmissionLayerData",xge=`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; +`;x.IncludesShadersStoreWGSL[V7]||(x.IncludesShadersStoreWGSL[V7]=bge)});var G7,Mge,tw=y(()=>{W();G7="openpbrTransmissionLayerData",Mge=`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 -`;x.IncludesShadersStoreWGSL[V7]||(x.IncludesShadersStoreWGSL[V7]=xge)});var k7={};Be(k7,{geometryPixelShaderWGSL:()=>Rge});var tw,G7,Rge,W7=y(()=>{W();Bc();Ab();xb();$a();IM();Xu();ng();ZN();CM();qv();QN();$N();Ku();Uc();Rb();JN();ew();tw="geometryPixelShader",G7=`#ifdef BUMP +`;x.IncludesShadersStoreWGSL[G7]||(x.IncludesShadersStoreWGSL[G7]=Mge)});var W7={};Be(W7,{geometryPixelShaderWGSL:()=>yge});var iw,k7,yge,z7=y(()=>{W();Bc();Rb();bb();$a();PM();Xu();ng();QN();DM();qv();$N();JN();Ku();Uc();Mb();ew();tw();iw="geometryPixelShader",k7=`#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 } -`;x.ShadersStoreWGSL[tw]||(x.ShadersStoreWGSL[tw]=G7);Rge={name:tw,shader:G7}});var z7,iw,Ms,H7=y(()=>{We();Yi();Xr();o7();Kt();An();ts();YN();jN();to();Ol();es();UN();z7=["diffuseSampler","bumpSampler","reflectivitySampler","albedoSampler","morphTargets","boneSampler","transmissionWeightSampler","subsurfaceWeightSampler","iblShadowSampler"],iw=["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"];rd(iw,z7,!0);Qn(iw);Ms=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 dt(0,0,0,0),this._clearDepthColor=new dt(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(()=>(D7(),P7)),Promise.resolve().then(()=>(W7(),k7))])):await Promise.all([Promise.resolve().then(()=>(jN(),y7)),Promise.resolve().then(()=>(YN(),S7))]),this._shadersLoaded=!0}isReady(e,t){if(!this._shadersLoaded)return!1;let i=e.getMaterial();if(i&&i.disableDepthWrite)return!1;let r=[],s=[L.PositionKind],a=e.getMesh();a.isVerticesDataPresent(L.NormalKind)&&(r.push("#define HAS_NORMAL_ATTRIBUTE"),s.push(L.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)&&fe.BumpTextureEnabled){let _=i.bumpTexture||i.normalTexture||i.geometryNormalTexture;r.push("#define BUMP"),r.push(`#define BUMP_UV${_.coordinatesIndex+1}`),p=!0}if(this._enableReflectivity){let _=!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,_=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),_=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),_=!0),_&&(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,_=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),_=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),_=!0),_?(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 _=i;_.subsurfaceWeight>0&&_.subsurfaceWeightTexture&&(r.push("#define SUBSURFACE_WEIGHT"),r.push(`#define SUBSURFACEWEIGHT_UV${_.subsurfaceWeightTexture.coordinatesIndex+1}`),p=!0),_.transmissionWeight>0&&_.transmissionWeightTexture&&(r.push("#define TRANSMISSION_WEIGHT"),r.push(`#define TRANSMISSIONWEIGHT_UV${_.transmissionWeightTexture.coordinatesIndex+1}`),p=!0)}p&&(r.push("#define NEED_UV"),a.isVerticesDataPresent(L.UVKind)&&(s.push(L.UVKind),r.push("#define UV1"),l=!0),a.isVerticesDataPresent(L.UV2Kind)&&(s.push(L.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 _={},v=!1,E=0;(i.getClassName()==="OpenPBRMaterial"||i.getClassName()==="StandardMaterial"||i.getClassName()==="PBRMetallicRoughnessMaterial"||i.getClassName()==="PBRSpecularGlossinessMaterial"||i.getClassName()==="PBRMaterial")&&(v=!!i.realtimeFiltering,E=i.realtimeFilteringQuality||0),id(p,p.environmentTexture,_,v,E,!0);for(let S in _)_[S]&&r.push("#define "+S);_.USEIRRADIANCEMAP||r.push("#define SPHERICAL_HARMONICS");let T=p.postProcessRenderPipelineManager.supportedPipelines.find(S=>S.getClassName()==="IBLShadowsRenderPipeline");if(T){let S=T;S._getAccumulatedTexture()&&(r.push("#define IBL_SHADOW_TEXTURE"),S.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(L.MatricesIndicesKind),s.push(L.MatricesWeightsKind),a.numBoneInfluencers>4&&(s.push(L.MatricesIndicesExtraKind),s.push(L.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?Nl(a.morphTargetManager,r,s,a,!0,!0,!1,l,c,f):0;t&&(r.push("#define INSTANCES"),ko(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),Ll(i,this._scene,r);let u=this._scene.getEngine(),h=e._getDrawWrapper(void 0,!0),m=h.defines,g=r.join(` -`);return m!==g&&h.setEffect(u.createEffect("geometry",{attributes:s,uniformsNames:iw,samplers:z7,defines:g,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},u),g),h.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 _;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((_=v.samplingMode)!=null?_: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 bM("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],u=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:h),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(g),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(h)}),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 E=v.getRenderingMesh(),T=v.getEffectiveMesh(),S=this._scene,A=S.getEngine(),R=v.getMaterial();if(!R)return;if(T._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[T.uniqueId]&&(this._previousTransformationMatrices[T.uniqueId]={world:Z.Identity(),viewProjection:S.getTransformMatrix()},E.skeleton)){let D=E.skeleton.getTransformMatrices(E);this._previousBonesTransformationMatrices[E.uniqueId]=this._copyBonesTransformationMatrices(D,new Float32Array(D.length))}let M=E._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let I=A.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||E.hasThinInstances),C=T.getWorldMatrix();if(this.isReady(v,I)){let D=v._getDrawWrapper();if(!D)return;let w=D.effect;A.enableEffect(D),I||E._bind(v,w,R.fillMode),this._useUbo?(td(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",S.getTransformMatrix()),w.setMatrix("view",S.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let k;if(!E._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=T._getWorldMatrixDeterminant();k=R._getEffectiveOrientation(E),N<0&&(k=k===Ae.ClockWiseSideOrientation?Ae.CounterClockWiseSideOrientation:Ae.ClockWiseSideOrientation)}else k=E._effectiveSideOrientation;if(R._preBind(D,k),R.needAlphaTestingForMesh(T)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&S.getEngine().getCaps().standardDerivatives&&fe.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&&S.environmentTexture){let N=S.environmentTexture,B=S.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let q=B._getAccumulatedTexture();q&&(w.setTexture("iblShadowSampler",q),w.setFloat2("shadowTextureSize",q.getSize().width,q.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*S.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 q=V.preScaledHarmonics;w.setVector3("vSphericalL00",q.l00),w.setVector3("vSphericalL1_1",q.l1_1),w.setVector3("vSphericalL10",q.l10),w.setVector3("vSphericalL11",q.l11),w.setVector3("vSphericalL2_2",q.l2_2),w.setVector3("vSphericalL2_1",q.l2_1),w.setVector3("vSphericalL20",q.l20),w.setVector3("vSphericalL21",q.l21),w.setVector3("vSphericalL22",q.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($n(w,R,this._scene),E.useBones&&E.computeBonesUsingShaders&&E.skeleton){let N=E.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(E);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",E.skeleton.getTransformMatrices(E));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[E.uniqueId])}Jn(E,w),E.morphTargetManager&&E.morphTargetManager.isUsingTextureForTargets&&E.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[T.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[T.uniqueId].viewProjection)),I&&E.hasThinInstances&&w.setMatrix("world",C),E._processRendering(T,v,w,R.fillMode,M,I,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[T.uniqueId].world=C.clone(),this._previousTransformationMatrices[T.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),E.skeleton&&this._copyBonesTransformationMatrices(E.skeleton.getTransformMatrices(E),this._previousBonesTransformationMatrices[T.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,E,T)=>{if((T||E===0)&&v.subMeshes)for(let S=0;S{let A;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(S.length){for(e.setColorWrite(!1),A=0;A{throw $e("GeometryBufferRendererSceneComponent")}});var X7,bge,rw=y(()=>{W();Xu();jv();X7="openpbrUboDeclaration",bge=`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; +`;x.ShadersStoreWGSL[iw]||(x.ShadersStoreWGSL[iw]=k7);yge={name:iw,shader:k7}});var H7,rw,Ms,X7=y(()=>{We();Yi();Xr();l7();Kt();An();ts();KN();qN();to();Ol();es();VN();H7=["diffuseSampler","bumpSampler","reflectivitySampler","albedoSampler","morphTargets","boneSampler","transmissionWeightSampler","subsurfaceWeightSampler","iblShadowSampler"],rw=["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"];rd(rw,H7,!0);Qn(rw);Ms=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 dt(0,0,0,0),this._clearDepthColor=new dt(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(()=>(L7(),D7)),Promise.resolve().then(()=>(z7(),W7))])):await Promise.all([Promise.resolve().then(()=>(qN(),I7)),Promise.resolve().then(()=>(KN(),T7))]),this._shadersLoaded=!0}isReady(e,t){if(!this._shadersLoaded)return!1;let i=e.getMaterial();if(i&&i.disableDepthWrite)return!1;let r=[],s=[L.PositionKind],a=e.getMesh();a.isVerticesDataPresent(L.NormalKind)&&(r.push("#define HAS_NORMAL_ATTRIBUTE"),s.push(L.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)&&fe.BumpTextureEnabled){let _=i.bumpTexture||i.normalTexture||i.geometryNormalTexture;r.push("#define BUMP"),r.push(`#define BUMP_UV${_.coordinatesIndex+1}`),p=!0}if(this._enableReflectivity){let _=!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,_=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),_=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),_=!0),_&&(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,_=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),_=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),_=!0),_?(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 _=i;_.subsurfaceWeight>0&&_.subsurfaceWeightTexture&&(r.push("#define SUBSURFACE_WEIGHT"),r.push(`#define SUBSURFACEWEIGHT_UV${_.subsurfaceWeightTexture.coordinatesIndex+1}`),p=!0),_.transmissionWeight>0&&_.transmissionWeightTexture&&(r.push("#define TRANSMISSION_WEIGHT"),r.push(`#define TRANSMISSIONWEIGHT_UV${_.transmissionWeightTexture.coordinatesIndex+1}`),p=!0)}p&&(r.push("#define NEED_UV"),a.isVerticesDataPresent(L.UVKind)&&(s.push(L.UVKind),r.push("#define UV1"),l=!0),a.isVerticesDataPresent(L.UV2Kind)&&(s.push(L.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 _={},v=!1,E=0;(i.getClassName()==="OpenPBRMaterial"||i.getClassName()==="StandardMaterial"||i.getClassName()==="PBRMetallicRoughnessMaterial"||i.getClassName()==="PBRSpecularGlossinessMaterial"||i.getClassName()==="PBRMaterial")&&(v=!!i.realtimeFiltering,E=i.realtimeFilteringQuality||0),id(p,p.environmentTexture,_,v,E,!0);for(let S in _)_[S]&&r.push("#define "+S);_.USEIRRADIANCEMAP||r.push("#define SPHERICAL_HARMONICS");let T=p.postProcessRenderPipelineManager.supportedPipelines.find(S=>S.getClassName()==="IBLShadowsRenderPipeline");if(T){let S=T;S._getAccumulatedTexture()&&(r.push("#define IBL_SHADOW_TEXTURE"),S.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(L.MatricesIndicesKind),s.push(L.MatricesWeightsKind),a.numBoneInfluencers>4&&(s.push(L.MatricesIndicesExtraKind),s.push(L.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?Nl(a.morphTargetManager,r,s,a,!0,!0,!1,l,c,f):0;t&&(r.push("#define INSTANCES"),ko(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),Ll(i,this._scene,r);let u=this._scene.getEngine(),h=e._getDrawWrapper(void 0,!0),m=h.defines,g=r.join(` +`);return m!==g&&h.setEffect(u.createEffect("geometry",{attributes:s,uniformsNames:rw,samplers:H7,defines:g,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},u),g),h.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 _;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((_=v.samplingMode)!=null?_: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 yM("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],u=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:h),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(g),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(h)}),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 E=v.getRenderingMesh(),T=v.getEffectiveMesh(),S=this._scene,A=S.getEngine(),R=v.getMaterial();if(!R)return;if(T._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[T.uniqueId]&&(this._previousTransformationMatrices[T.uniqueId]={world:Z.Identity(),viewProjection:S.getTransformMatrix()},E.skeleton)){let D=E.skeleton.getTransformMatrices(E);this._previousBonesTransformationMatrices[E.uniqueId]=this._copyBonesTransformationMatrices(D,new Float32Array(D.length))}let M=E._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let I=A.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||E.hasThinInstances),C=T.getWorldMatrix();if(this.isReady(v,I)){let D=v._getDrawWrapper();if(!D)return;let w=D.effect;A.enableEffect(D),I||E._bind(v,w,R.fillMode),this._useUbo?(td(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",S.getTransformMatrix()),w.setMatrix("view",S.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let k;if(!E._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=T._getWorldMatrixDeterminant();k=R._getEffectiveOrientation(E),N<0&&(k=k===Ae.ClockWiseSideOrientation?Ae.CounterClockWiseSideOrientation:Ae.ClockWiseSideOrientation)}else k=E._effectiveSideOrientation;if(R._preBind(D,k),R.needAlphaTestingForMesh(T)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&S.getEngine().getCaps().standardDerivatives&&fe.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&&S.environmentTexture){let N=S.environmentTexture,B=S.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let q=B._getAccumulatedTexture();q&&(w.setTexture("iblShadowSampler",q),w.setFloat2("shadowTextureSize",q.getSize().width,q.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*S.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 q=V.preScaledHarmonics;w.setVector3("vSphericalL00",q.l00),w.setVector3("vSphericalL1_1",q.l1_1),w.setVector3("vSphericalL10",q.l10),w.setVector3("vSphericalL11",q.l11),w.setVector3("vSphericalL2_2",q.l2_2),w.setVector3("vSphericalL2_1",q.l2_1),w.setVector3("vSphericalL20",q.l20),w.setVector3("vSphericalL21",q.l21),w.setVector3("vSphericalL22",q.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($n(w,R,this._scene),E.useBones&&E.computeBonesUsingShaders&&E.skeleton){let N=E.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(E);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",E.skeleton.getTransformMatrices(E));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[E.uniqueId])}Jn(E,w),E.morphTargetManager&&E.morphTargetManager.isUsingTextureForTargets&&E.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[T.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[T.uniqueId].viewProjection)),I&&E.hasThinInstances&&w.setMatrix("world",C),E._processRendering(T,v,w,R.fillMode,M,I,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[T.uniqueId].world=C.clone(),this._previousTransformationMatrices[T.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),E.skeleton&&this._copyBonesTransformationMatrices(E.skeleton.getTransformMatrices(E),this._previousBonesTransformationMatrices[T.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,E,T)=>{if((T||E===0)&&v.subMeshes)for(let S=0;S{let A;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(S.length){for(e.setColorWrite(!1),A=0;A{throw $e("GeometryBufferRendererSceneComponent")}});var Y7,Ige,nw=y(()=>{W();Xu();jv();Y7="openpbrUboDeclaration",Ige=`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 -`;x.IncludesShadersStoreWGSL[X7]||(x.IncludesShadersStoreWGSL[X7]=bge)});var Y7,Mge,K7=y(()=>{W();Y7="openpbrNormalMapVertexDeclaration",Mge=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) +`;x.IncludesShadersStoreWGSL[Y7]||(x.IncludesShadersStoreWGSL[Y7]=Ige)});var K7,Cge,j7=y(()=>{W();K7="openpbrNormalMapVertexDeclaration",Cge=`#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 -`;x.IncludesShadersStoreWGSL[Y7]||(x.IncludesShadersStoreWGSL[Y7]=Mge)});var j7,yge,q7=y(()=>{W();j7="openpbrNormalMapVertex",yge=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(FUZZ) +`;x.IncludesShadersStoreWGSL[K7]||(x.IncludesShadersStoreWGSL[K7]=Cge)});var q7,Pge,Z7=y(()=>{W();q7="openpbrNormalMapVertex",Pge=`#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 -`;x.IncludesShadersStoreWGSL[j7]||(x.IncludesShadersStoreWGSL[j7]=yge)});var Q7={};Be(Q7,{openpbrVertexShaderWGSL:()=>Ige});var nw,Z7,Ige,$7=y(()=>{W();rw();nb();Kp();$a();ng();Pc();Dc();hd();sb();ab();rg();K7();Lc();Ov();ob();gd();_d();Yu();lb();cb();vd();Ed();Oc();Nc();wc();fb();db();ub();q7();Fc();Nv();mb();wv();pb();nw="openpbrVertexShader",Z7=`#define OPENPBR_VERTEX_SHADER +`;x.IncludesShadersStoreWGSL[q7]||(x.IncludesShadersStoreWGSL[q7]=Pge)});var $7={};Be($7,{openpbrVertexShaderWGSL:()=>Dge});var sw,Q7,Dge,J7=y(()=>{W();nw();ab();Kp();$a();ng();Pc();Dc();hd();ob();lb();rg();j7();Lc();Ov();cb();gd();_d();Yu();fb();db();vd();Ed();Oc();Nc();wc();ub();hb();mb();Z7();Fc();Nv();gb();wv();_b();sw="openpbrVertexShader",Q7=`#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 -}`;x.ShadersStoreWGSL[nw]||(x.ShadersStoreWGSL[nw]=Z7);Ige={name:nw,shader:Z7}});var J7,Cge,sw=y(()=>{W();Kp();J7="pbrFragmentExtraDeclaration",Cge=`varying vPositionW: vec3f; +}`;x.ShadersStoreWGSL[sw]||(x.ShadersStoreWGSL[sw]=Q7);Dge={name:sw,shader:Q7}});var e9,Lge,aw=y(()=>{W();Kp();e9="pbrFragmentExtraDeclaration",Lge=`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 -`;x.IncludesShadersStoreWGSL[J7]||(x.IncludesShadersStoreWGSL[J7]=Cge)});var e9,Pge,t9=y(()=>{W();Ku();IM();e9="openpbrFragmentSamplersDeclaration",Pge=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;x.IncludesShadersStoreWGSL[e9]||(x.IncludesShadersStoreWGSL[e9]=Lge)});var t9,Oge,i9=y(()=>{W();Ku();PM();t9="openpbrFragmentSamplersDeclaration",Oge=`#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 -`;x.IncludesShadersStoreWGSL[e9]||(x.IncludesShadersStoreWGSL[e9]=Pge)});var i9,Dge,aw=y(()=>{W();i9="subSurfaceScatteringFunctions",Dge=`fn testLightingForSSS(diffusionProfile: f32)->bool -{return diffusionProfile<1.;}`;x.IncludesShadersStoreWGSL[i9]||(x.IncludesShadersStoreWGSL[i9]=Dge)});var r9,Lge,ow=y(()=>{W();r9="importanceSampling",Lge=`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);} +`;x.IncludesShadersStoreWGSL[t9]||(x.IncludesShadersStoreWGSL[t9]=Oge)});var r9,Nge,ow=y(()=>{W();r9="subSurfaceScatteringFunctions",Nge=`fn testLightingForSSS(diffusionProfile: f32)->bool +{return diffusionProfile<1.;}`;x.IncludesShadersStoreWGSL[r9]||(x.IncludesShadersStoreWGSL[r9]=Nge)});var n9,wge,lw=y(()=>{W();n9="importanceSampling",wge=`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);}`;x.IncludesShadersStoreWGSL[r9]||(x.IncludesShadersStoreWGSL[r9]=Lge)});var n9,Oge,lw=y(()=>{W();n9="pbrHelperFunctions",Oge=`#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);}`;x.IncludesShadersStoreWGSL[n9]||(x.IncludesShadersStoreWGSL[n9]=wge)});var s9,Fge,cw=y(()=>{W();s9="pbrHelperFunctions",Fge=`#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 -`;x.IncludesShadersStoreWGSL[n9]||(x.IncludesShadersStoreWGSL[n9]=Oge)});var s9,Nge,cw=y(()=>{W();_O();s9="pbrDirectLightingSetupFunctions",Nge=`struct preLightingInfo +`;x.IncludesShadersStoreWGSL[s9]||(x.IncludesShadersStoreWGSL[s9]=Fge)});var a9,Bge,fw=y(()=>{W();vO();a9="pbrDirectLightingSetupFunctions",Bge=`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 -`;x.IncludesShadersStoreWGSL[s9]||(x.IncludesShadersStoreWGSL[s9]=Nge)});var a9,wge,fw=y(()=>{W();a9="pbrDirectLightingFalloffFunctions",wge=`fn computeDistanceLightFalloff_Standard(lightOffset: vec3f,range: f32)->f32 +`;x.IncludesShadersStoreWGSL[a9]||(x.IncludesShadersStoreWGSL[a9]=Bge)});var o9,Uge,dw=y(()=>{W();o9="pbrDirectLightingFalloffFunctions",Uge=`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 -}`;x.IncludesShadersStoreWGSL[a9]||(x.IncludesShadersStoreWGSL[a9]=wge)});var o9,Fge,dw=y(()=>{W();o9="hdrFilteringFunctions",Fge=`#ifdef NUM_SAMPLES +}`;x.IncludesShadersStoreWGSL[o9]||(x.IncludesShadersStoreWGSL[o9]=Uge)});var l9,Vge,uw=y(()=>{W();l9="hdrFilteringFunctions",Vge=`#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 -`;x.IncludesShadersStoreWGSL[o9]||(x.IncludesShadersStoreWGSL[o9]=Fge)});var l9,Bge,uw=y(()=>{W();l9="pbrBlockReflectance0",Bge=`var reflectanceF0: f32=reflectivityOut.reflectanceF0;var specularEnvironmentR0: vec3f=reflectivityOut.colorReflectanceF0;var specularEnvironmentR90: vec3f= reflectivityOut.reflectanceF90; +`;x.IncludesShadersStoreWGSL[l9]||(x.IncludesShadersStoreWGSL[l9]=Vge)});var c9,Gge,hw=y(()=>{W();c9="pbrBlockReflectance0",Gge=`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 -`;x.IncludesShadersStoreWGSL[l9]||(x.IncludesShadersStoreWGSL[l9]=Bge)});var c9,Uge,hw=y(()=>{W();vO();uw();c9="pbrDirectLightingFunctions",Uge=`#define CLEARCOATREFLECTANCE90 1.0 +`;x.IncludesShadersStoreWGSL[c9]||(x.IncludesShadersStoreWGSL[c9]=Gge)});var f9,kge,mw=y(()=>{W();EO();hw();f9="pbrDirectLightingFunctions",kge=`#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 -`;x.IncludesShadersStoreWGSL[c9]||(x.IncludesShadersStoreWGSL[c9]=Uge)});var f9,Vge,d9=y(()=>{W();f9="openpbrNormalMapFragmentMainFunctions",Vge=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) +`;x.IncludesShadersStoreWGSL[f9]||(x.IncludesShadersStoreWGSL[f9]=kge)});var d9,Wge,u9=y(()=>{W();d9="openpbrNormalMapFragmentMainFunctions",Wge=`#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 -`;x.IncludesShadersStoreWGSL[f9]||(x.IncludesShadersStoreWGSL[f9]=Vge)});var u9,Gge,h9=y(()=>{W();Ku();u9="openpbrNormalMapFragmentFunctions",Gge=`#if defined(GEOMETRY_NORMAL) +`;x.IncludesShadersStoreWGSL[d9]||(x.IncludesShadersStoreWGSL[d9]=Wge)});var h9,zge,m9=y(()=>{W();Ku();h9="openpbrNormalMapFragmentFunctions",zge=`#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 -`;x.IncludesShadersStoreWGSL[u9]||(x.IncludesShadersStoreWGSL[u9]=Gge)});var m9,kge,p9=y(()=>{W();m9="openpbrConductorReflectance",kge=`#define pbr_inline +`;x.IncludesShadersStoreWGSL[h9]||(x.IncludesShadersStoreWGSL[h9]=zge)});var p9,Hge,g9=y(()=>{W();p9="openpbrConductorReflectance",Hge=`#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;}`;x.IncludesShadersStoreWGSL[m9]||(x.IncludesShadersStoreWGSL[m9]=kge)});var g9,Wge,_9=y(()=>{W();g9="openpbrAmbientOcclusionFunctions",Wge=`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;}`;x.IncludesShadersStoreWGSL[p9]||(x.IncludesShadersStoreWGSL[p9]=Hge)});var _9,Xge,v9=y(()=>{W();_9="openpbrAmbientOcclusionFunctions",Xge=`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));} -`;x.IncludesShadersStoreWGSL[g9]||(x.IncludesShadersStoreWGSL[g9]=Wge)});var v9,zge,E9=y(()=>{W();v9="openpbrVolumeFunctions",zge=`struct OpenPBRHomogeneousVolume {extinction_coeff: vec3f, +`;x.IncludesShadersStoreWGSL[_9]||(x.IncludesShadersStoreWGSL[_9]=Xge)});var E9,Yge,S9=y(()=>{W();E9="openpbrVolumeFunctions",Yge=`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));} -`;x.IncludesShadersStoreWGSL[v9]||(x.IncludesShadersStoreWGSL[v9]=zge)});var S9,Hge,mw=y(()=>{W();S9="pbrBlockNormalGeometric",Hge=`var viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW); +`;x.IncludesShadersStoreWGSL[E9]||(x.IncludesShadersStoreWGSL[E9]=Yge)});var T9,Kge,pw=y(()=>{W();T9="pbrBlockNormalGeometric",Kge=`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 -`;x.IncludesShadersStoreWGSL[S9]||(x.IncludesShadersStoreWGSL[S9]=Hge)});var T9,Xge,A9=y(()=>{W();T9="openpbrNormalMapFragment",Xge=`var uvOffset: vec2f= vec2f(0.0,0.0); +`;x.IncludesShadersStoreWGSL[T9]||(x.IncludesShadersStoreWGSL[T9]=Kge)});var A9,jge,x9=y(()=>{W();A9="openpbrNormalMapFragment",jge=`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 -`;x.IncludesShadersStoreWGSL[T9]||(x.IncludesShadersStoreWGSL[T9]=Xge)});var x9,Yge,R9=y(()=>{W();x9="openpbrBlockNormalFinal",Yge=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;x.IncludesShadersStoreWGSL[A9]||(x.IncludesShadersStoreWGSL[A9]=jge)});var R9,qge,b9=y(()=>{W();R9="openpbrBlockNormalFinal",qge=`#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 -`;x.IncludesShadersStoreWGSL[x9]||(x.IncludesShadersStoreWGSL[x9]=Yge)});var b9,Kge,M9=y(()=>{W();b9="openpbrBaseLayerData",Kge=`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; +`;x.IncludesShadersStoreWGSL[R9]||(x.IncludesShadersStoreWGSL[R9]=qge)});var M9,Zge,y9=y(()=>{W();M9="openpbrBaseLayerData",Zge=`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 -`;x.IncludesShadersStoreWGSL[b9]||(x.IncludesShadersStoreWGSL[b9]=Kge)});var y9,jge,I9=y(()=>{W();y9="openpbrCoatLayerData",jge=`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); +`;x.IncludesShadersStoreWGSL[M9]||(x.IncludesShadersStoreWGSL[M9]=Zge)});var I9,Qge,C9=y(()=>{W();I9="openpbrCoatLayerData",Qge=`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 -`;x.IncludesShadersStoreWGSL[y9]||(x.IncludesShadersStoreWGSL[y9]=jge)});var C9,qge,P9=y(()=>{W();C9="openpbrThinFilmLayerData",qge=`#ifdef THIN_FILM +`;x.IncludesShadersStoreWGSL[I9]||(x.IncludesShadersStoreWGSL[I9]=Qge)});var P9,$ge,D9=y(()=>{W();P9="openpbrThinFilmLayerData",$ge=`#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 -`;x.IncludesShadersStoreWGSL[C9]||(x.IncludesShadersStoreWGSL[C9]=qge)});var D9,Zge,L9=y(()=>{W();D9="openpbrFuzzLayerData",Zge=`var fuzz_weight: f32=0.0f;var fuzz_color: vec3f=vec3f(1.0f);var fuzz_roughness: f32=0.0f; +`;x.IncludesShadersStoreWGSL[P9]||(x.IncludesShadersStoreWGSL[P9]=$ge)});var L9,Jge,O9=y(()=>{W();L9="openpbrFuzzLayerData",Jge=`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 -`;x.IncludesShadersStoreWGSL[D9]||(x.IncludesShadersStoreWGSL[D9]=Zge)});var O9,Qge,N9=y(()=>{W();O9="openpbrAmbientOcclusionData",Qge=`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; +`;x.IncludesShadersStoreWGSL[L9]||(x.IncludesShadersStoreWGSL[L9]=Jge)});var N9,e_e,w9=y(()=>{W();N9="openpbrAmbientOcclusionData",e_e=`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 -`;x.IncludesShadersStoreWGSL[O9]||(x.IncludesShadersStoreWGSL[O9]=Qge)});var w9,$ge,F9=y(()=>{W();w9="openpbrBackgroundTransmission",$ge=`var slab_translucent_background: vec4f=vec4f(0.,0.,0.,1.); +`;x.IncludesShadersStoreWGSL[N9]||(x.IncludesShadersStoreWGSL[N9]=e_e)});var F9,t_e,B9=y(()=>{W();F9="openpbrBackgroundTransmission",t_e=`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 -`;x.IncludesShadersStoreWGSL[w9]||(x.IncludesShadersStoreWGSL[w9]=$ge)});var B9,Jge,U9=y(()=>{W();B9="openpbrEnvironmentLighting",Jge=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) +`;x.IncludesShadersStoreWGSL[F9]||(x.IncludesShadersStoreWGSL[F9]=t_e)});var U9,i_e,V9=y(()=>{W();U9="openpbrEnvironmentLighting",i_e=`#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 -`;x.IncludesShadersStoreWGSL[B9]||(x.IncludesShadersStoreWGSL[B9]=Jge)});var V9,e_e,G9=y(()=>{W();V9="openpbrDirectLightingInit",e_e=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[U9]||(x.IncludesShadersStoreWGSL[U9]=i_e)});var G9,r_e,k9=y(()=>{W();G9="openpbrDirectLightingInit",r_e=`#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 -`;x.IncludesShadersStoreWGSL[V9]||(x.IncludesShadersStoreWGSL[V9]=e_e)});var k9,t_e,W9=y(()=>{W();k9="openpbrDirectLighting",t_e=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[G9]||(x.IncludesShadersStoreWGSL[G9]=r_e)});var W9,n_e,z9=y(()=>{W();W9="openpbrDirectLighting",n_e=`#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 -`;x.IncludesShadersStoreWGSL[k9]||(x.IncludesShadersStoreWGSL[k9]=t_e)});var z9,i_e,pw=y(()=>{W();z9="pbrBlockImageProcessing",i_e=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) +`;x.IncludesShadersStoreWGSL[W9]||(x.IncludesShadersStoreWGSL[W9]=n_e)});var H9,s_e,gw=y(()=>{W();H9="pbrBlockImageProcessing",s_e=`#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 -`;x.IncludesShadersStoreWGSL[z9]||(x.IncludesShadersStoreWGSL[z9]=i_e)});var H9,r_e,X9=y(()=>{W();H9="openpbrBlockPrePass",r_e=`#if SCENE_MRT_COUNT>0 +`;x.IncludesShadersStoreWGSL[H9]||(x.IncludesShadersStoreWGSL[H9]=s_e)});var X9,a_e,Y9=y(()=>{W();X9="openpbrBlockPrePass",a_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); @@ -14665,7 +14665,7 @@ fragmentOutputs.fragData6=fragData[6]; fragmentOutputs.fragData7=fragData[7]; #endif #endif -`;x.IncludesShadersStoreWGSL[H9]||(x.IncludesShadersStoreWGSL[H9]=r_e)});var Y9,n_e,gw=y(()=>{W();Y9="pbrDebug",n_e=`#if DEBUGMODE>0 +`;x.IncludesShadersStoreWGSL[X9]||(x.IncludesShadersStoreWGSL[X9]=a_e)});var K9,o_e,_w=y(()=>{W();K9="pbrDebug",o_e=`#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 -`;x.IncludesShadersStoreWGSL[Y9]||(x.IncludesShadersStoreWGSL[Y9]=n_e)});var j9={};Be(j9,{openpbrPixelShaderWGSL:()=>s_e});var _w,K9,s_e,q9=y(()=>{W();gb();_b();rw();sw();vb();t9();Sb();Bc();Yu();Fv();$a();aw();ow();lw();Tb();Eb();rg();cw();fw();ng();dw();hw();CM();d9();h9();qv();ZN();p9();_9();QN();$N();E9();Uc();mw();A9();R9();M9();ew();JN();I9();P9();L9();N9();bb();F9();U9();G9();W9();Mb();Bv();pw();X9();yb();gw();_w="openpbrPixelShader",K9=`#define OPENPBR_FRAGMENT_SHADER +`;x.IncludesShadersStoreWGSL[K9]||(x.IncludesShadersStoreWGSL[K9]=o_e)});var q9={};Be(q9,{openpbrPixelShaderWGSL:()=>l_e});var vw,j9,l_e,Z9=y(()=>{W();vb();Eb();nw();aw();Sb();i9();Ab();Bc();Yu();Fv();$a();ow();lw();cw();xb();Tb();rg();fw();dw();ng();uw();mw();DM();u9();m9();qv();QN();g9();v9();$N();JN();S9();Uc();pw();x9();b9();y9();tw();ew();C9();D9();O9();w9();yb();B9();V9();k9();z9();Ib();Bv();gw();Y9();Cb();_w();vw="openpbrPixelShader",j9=`#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 } -`;x.ShadersStoreWGSL[_w]||(x.ShadersStoreWGSL[_w]=K9);s_e={name:_w,shader:K9}});var Z9,a_e,Q9=y(()=>{W();JO();Ib();Z9="openpbrVertexDeclaration",a_e=`#include +`;x.ShadersStoreWGSL[vw]||(x.ShadersStoreWGSL[vw]=j9);l_e={name:vw,shader:j9}});var Q9,c_e,$9=y(()=>{W();eN();Pb();Q9="openpbrVertexDeclaration",c_e=`#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 -`;x.IncludesShadersStore[Z9]||(x.IncludesShadersStore[Z9]=a_e)});var $9,o_e,vw=y(()=>{W();ju();Zv();$9="openpbrUboDeclaration",o_e=`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; +`;x.IncludesShadersStore[Q9]||(x.IncludesShadersStore[Q9]=c_e)});var J9,f_e,Ew=y(()=>{W();ju();Zv();J9="openpbrUboDeclaration",f_e=`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 -`;x.IncludesShadersStore[$9]||(x.IncludesShadersStore[$9]=o_e)});var J9,l_e,eK=y(()=>{W();J9="openpbrNormalMapVertexDeclaration",l_e=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) +`;x.IncludesShadersStore[J9]||(x.IncludesShadersStore[J9]=f_e)});var eK,d_e,tK=y(()=>{W();eK="openpbrNormalMapVertexDeclaration",d_e=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif #endif -`;x.IncludesShadersStore[J9]||(x.IncludesShadersStore[J9]=l_e)});var tK,c_e,iK=y(()=>{W();tK="openpbrNormalMapVertex",c_e=`#if defined(GEOMETRY_NORMAL) || defined(PARALLAX) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) +`;x.IncludesShadersStore[eK]||(x.IncludesShadersStore[eK]=d_e)});var iK,u_e,rK=y(()=>{W();iK="openpbrNormalMapVertex",u_e=`#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 -`;x.IncludesShadersStore[tK]||(x.IncludesShadersStore[tK]=c_e)});var nK={};Be(nK,{openpbrVertexShader:()=>f_e});var Ew,rK,f_e,sK=y(()=>{W();Q9();vw();Cb();jp();Ja();tg();Vc();Gc();md();Pb();Db();ig();eK();kc();Uv();Lb();Ob();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Nb();wb();Fb();iK();Xc();Vv();Ub();Gv();Vb();Ew="openpbrVertexShader",rK=`#define OPENPBR_VERTEX_SHADER +`;x.IncludesShadersStore[iK]||(x.IncludesShadersStore[iK]=u_e)});var sK={};Be(sK,{openpbrVertexShader:()=>h_e});var Sw,nK,h_e,aK=y(()=>{W();$9();Ew();Db();jp();Ja();tg();Vc();Gc();md();Lb();Ob();ig();tK();kc();Uv();Nb();wb();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Fb();Bb();Ub();rK();Xc();Vv();Gb();Gv();kb();Sw="openpbrVertexShader",nK=`#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 } -`;x.ShadersStore[Ew]||(x.ShadersStore[Ew]=rK);f_e={name:Ew,shader:rK}});var aK,d_e,oK=y(()=>{W();VN();Gb();aK="openpbrFragmentDeclaration",d_e=`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; +`;x.ShadersStore[Sw]||(x.ShadersStore[Sw]=nK);h_e={name:Sw,shader:nK}});var oK,m_e,lK=y(()=>{W();GN();Wb();oK="openpbrFragmentDeclaration",m_e=`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 -`;x.IncludesShadersStore[aK]||(x.IncludesShadersStore[aK]=d_e)});var lK,u_e,Sw=y(()=>{W();jp();lK="pbrFragmentExtraDeclaration",u_e=`varying vec3 vPositionW; +`;x.IncludesShadersStore[oK]||(x.IncludesShadersStore[oK]=m_e)});var cK,p_e,Tw=y(()=>{W();jp();cK="pbrFragmentExtraDeclaration",p_e=`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 -`;x.IncludesShadersStore[lK]||(x.IncludesShadersStore[lK]=u_e)});var cK,h_e,fK=y(()=>{W();Zu();MM();cK="openpbrFragmentSamplersDeclaration",h_e=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;x.IncludesShadersStore[cK]||(x.IncludesShadersStore[cK]=p_e)});var fK,g_e,dK=y(()=>{W();Zu();IM();fK="openpbrFragmentSamplersDeclaration",g_e=`#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 -`;x.IncludesShadersStore[cK]||(x.IncludesShadersStore[cK]=h_e)});var dK,m_e,Tw=y(()=>{W();dK="subSurfaceScatteringFunctions",m_e=`bool testLightingForSSS(float diffusionProfile) -{return diffusionProfile<1.;}`;x.IncludesShadersStore[dK]||(x.IncludesShadersStore[dK]=m_e)});var uK,p_e,Aw=y(()=>{W();uK="importanceSampling",p_e=`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);} +`;x.IncludesShadersStore[fK]||(x.IncludesShadersStore[fK]=g_e)});var uK,__e,Aw=y(()=>{W();uK="subSurfaceScatteringFunctions",__e=`bool testLightingForSSS(float diffusionProfile) +{return diffusionProfile<1.;}`;x.IncludesShadersStore[uK]||(x.IncludesShadersStore[uK]=__e)});var hK,v_e,xw=y(()=>{W();hK="importanceSampling",v_e=`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);}`;x.IncludesShadersStore[uK]||(x.IncludesShadersStore[uK]=p_e)});var hK,g_e,xw=y(()=>{W();hK="pbrHelperFunctions",g_e=`#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);}`;x.IncludesShadersStore[hK]||(x.IncludesShadersStore[hK]=v_e)});var mK,E_e,Rw=y(()=>{W();mK="pbrHelperFunctions",E_e=`#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 -`;x.IncludesShadersStore[hK]||(x.IncludesShadersStore[hK]=g_e)});var mK,__e,Rw=y(()=>{W();MO();mK="pbrDirectLightingSetupFunctions",__e=`struct preLightingInfo +`;x.IncludesShadersStore[mK]||(x.IncludesShadersStore[mK]=E_e)});var pK,S_e,bw=y(()=>{W();yO();pK="pbrDirectLightingSetupFunctions",S_e=`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 -`;x.IncludesShadersStore[mK]||(x.IncludesShadersStore[mK]=__e)});var pK,v_e,bw=y(()=>{W();pK="pbrDirectLightingFalloffFunctions",v_e=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range) +`;x.IncludesShadersStore[pK]||(x.IncludesShadersStore[pK]=S_e)});var gK,T_e,Mw=y(()=>{W();gK="pbrDirectLightingFalloffFunctions",T_e=`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 -}`;x.IncludesShadersStore[pK]||(x.IncludesShadersStore[pK]=v_e)});var gK,E_e,Mw=y(()=>{W();gK="hdrFilteringFunctions",E_e=`#if NUM_SAMPLES +}`;x.IncludesShadersStore[gK]||(x.IncludesShadersStore[gK]=T_e)});var _K,A_e,yw=y(()=>{W();_K="hdrFilteringFunctions",A_e=`#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 -`;x.IncludesShadersStore[gK]||(x.IncludesShadersStore[gK]=E_e)});var _K,S_e,yw=y(()=>{W();_K="pbrDirectLightingFunctions",S_e=`#define CLEARCOATREFLECTANCE90 1.0 +`;x.IncludesShadersStore[_K]||(x.IncludesShadersStore[_K]=A_e)});var vK,x_e,Iw=y(()=>{W();vK="pbrDirectLightingFunctions",x_e=`#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 -`;x.IncludesShadersStore[_K]||(x.IncludesShadersStore[_K]=S_e)});var vK,T_e,EK=y(()=>{W();vK="openpbrNormalMapFragmentMainFunctions",T_e=`#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(ANISOTROPIC) || defined(FUZZ) || defined(DETAIL) +`;x.IncludesShadersStore[vK]||(x.IncludesShadersStore[vK]=x_e)});var EK,R_e,SK=y(()=>{W();EK="openpbrNormalMapFragmentMainFunctions",R_e=`#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 -`;x.IncludesShadersStore[vK]||(x.IncludesShadersStore[vK]=T_e)});var SK,A_e,TK=y(()=>{W();Zu();SK="openpbrNormalMapFragmentFunctions",A_e=`#if defined(GEOMETRY_NORMAL) +`;x.IncludesShadersStore[EK]||(x.IncludesShadersStore[EK]=R_e)});var TK,b_e,AK=y(()=>{W();Zu();TK="openpbrNormalMapFragmentFunctions",b_e=`#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 -`;x.IncludesShadersStore[SK]||(x.IncludesShadersStore[SK]=A_e)});var AK,x_e,xK=y(()=>{W();AK="openpbrConductorReflectance",x_e=`#define pbr_inline +`;x.IncludesShadersStore[TK]||(x.IncludesShadersStore[TK]=b_e)});var xK,M_e,RK=y(()=>{W();xK="openpbrConductorReflectance",M_e=`#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;}`;x.IncludesShadersStore[AK]||(x.IncludesShadersStore[AK]=x_e)});var RK,R_e,bK=y(()=>{W();RK="openpbrAmbientOcclusionFunctions",R_e=`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;}`;x.IncludesShadersStore[xK]||(x.IncludesShadersStore[xK]=M_e)});var bK,y_e,MK=y(()=>{W();bK="openpbrAmbientOcclusionFunctions",y_e=`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));} -`;x.IncludesShadersStore[RK]||(x.IncludesShadersStore[RK]=R_e)});var MK,b_e,yK=y(()=>{W();MK="openpbrVolumeFunctions",b_e=`struct OpenPBRHomogeneousVolume {vec3 extinction_coeff; +`;x.IncludesShadersStore[bK]||(x.IncludesShadersStore[bK]=y_e)});var yK,I_e,IK=y(()=>{W();yK="openpbrVolumeFunctions",I_e=`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);}`;x.IncludesShadersStore[MK]||(x.IncludesShadersStore[MK]=b_e)});var IK,M_e,Iw=y(()=>{W();IK="pbrBlockNormalGeometric",M_e=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW); +weight_sum.b<1e-5f ? unconvolved_irradiance.b : irradiance_sum.b/weight_sum.b);}`;x.IncludesShadersStore[yK]||(x.IncludesShadersStore[yK]=I_e)});var CK,C_e,Cw=y(()=>{W();CK="pbrBlockNormalGeometric",C_e=`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 -`;x.IncludesShadersStore[IK]||(x.IncludesShadersStore[IK]=M_e)});var CK,y_e,PK=y(()=>{W();CK="openpbrNormalMapFragment",y_e=`vec2 uvOffset=vec2(0.0,0.0); +`;x.IncludesShadersStore[CK]||(x.IncludesShadersStore[CK]=C_e)});var PK,P_e,DK=y(()=>{W();PK="openpbrNormalMapFragment",P_e=`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 -`;x.IncludesShadersStore[CK]||(x.IncludesShadersStore[CK]=y_e)});var DK,I_e,LK=y(()=>{W();DK="openpbrBlockNormalFinal",I_e=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;x.IncludesShadersStore[PK]||(x.IncludesShadersStore[PK]=P_e)});var LK,D_e,OK=y(()=>{W();LK="openpbrBlockNormalFinal",D_e=`#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 -`;x.IncludesShadersStore[DK]||(x.IncludesShadersStore[DK]=I_e)});var OK,C_e,NK=y(()=>{W();OK="openpbrBaseLayerData",C_e=`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; +`;x.IncludesShadersStore[LK]||(x.IncludesShadersStore[LK]=D_e)});var NK,L_e,wK=y(()=>{W();NK="openpbrBaseLayerData",L_e=`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 -`;x.IncludesShadersStore[OK]||(x.IncludesShadersStore[OK]=C_e)});var wK,P_e,FK=y(()=>{W();wK="openpbrCoatLayerData",P_e=`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); +`;x.IncludesShadersStore[NK]||(x.IncludesShadersStore[NK]=L_e)});var FK,O_e,BK=y(()=>{W();FK="openpbrCoatLayerData",O_e=`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 -`;x.IncludesShadersStore[wK]||(x.IncludesShadersStore[wK]=P_e)});var BK,D_e,UK=y(()=>{W();BK="openpbrThinFilmLayerData",D_e=`#ifdef THIN_FILM +`;x.IncludesShadersStore[FK]||(x.IncludesShadersStore[FK]=O_e)});var UK,N_e,VK=y(()=>{W();UK="openpbrThinFilmLayerData",N_e=`#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 -`;x.IncludesShadersStore[BK]||(x.IncludesShadersStore[BK]=D_e)});var VK,L_e,GK=y(()=>{W();VK="openpbrFuzzLayerData",L_e=`float fuzz_weight=0.0;vec3 fuzz_color=vec3(1.0);float fuzz_roughness=0.0; +`;x.IncludesShadersStore[UK]||(x.IncludesShadersStore[UK]=N_e)});var GK,w_e,kK=y(()=>{W();GK="openpbrFuzzLayerData",w_e=`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 -`;x.IncludesShadersStore[VK]||(x.IncludesShadersStore[VK]=L_e)});var kK,O_e,WK=y(()=>{W();kK="openpbrAmbientOcclusionData",O_e=`vec3 ambient_occlusion=vec3(1.0);float specular_ambient_occlusion=1.0;float coat_specular_ambient_occlusion=1.0; +`;x.IncludesShadersStore[GK]||(x.IncludesShadersStore[GK]=w_e)});var WK,F_e,zK=y(()=>{W();WK="openpbrAmbientOcclusionData",F_e=`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 -`;x.IncludesShadersStore[kK]||(x.IncludesShadersStore[kK]=O_e)});var zK,N_e,HK=y(()=>{W();zK="openpbrBackgroundTransmission",N_e=`vec4 slab_translucent_background=vec4(0.,0.,0.,1.); +`;x.IncludesShadersStore[WK]||(x.IncludesShadersStore[WK]=F_e)});var HK,B_e,XK=y(()=>{W();HK="openpbrBackgroundTransmission",B_e=`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 -`;x.IncludesShadersStore[zK]||(x.IncludesShadersStore[zK]=N_e)});var XK,w_e,YK=y(()=>{W();XK="openpbrEnvironmentLighting",w_e=`#if defined(REFLECTION) || defined(REFRACTED_BACKGROUND) +`;x.IncludesShadersStore[HK]||(x.IncludesShadersStore[HK]=B_e)});var YK,U_e,KK=y(()=>{W();YK="openpbrEnvironmentLighting",U_e=`#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 -`;x.IncludesShadersStore[XK]||(x.IncludesShadersStore[XK]=w_e)});var KK,F_e,jK=y(()=>{W();KK="openpbrDirectLightingInit",F_e=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[YK]||(x.IncludesShadersStore[YK]=U_e)});var jK,V_e,qK=y(()=>{W();jK="openpbrDirectLightingInit",V_e=`#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 -`;x.IncludesShadersStore[KK]||(x.IncludesShadersStore[KK]=F_e)});var qK,B_e,ZK=y(()=>{W();qK="openpbrDirectLighting",B_e=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[jK]||(x.IncludesShadersStore[jK]=V_e)});var ZK,G_e,QK=y(()=>{W();ZK="openpbrDirectLighting",G_e=`#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 -`;x.IncludesShadersStore[qK]||(x.IncludesShadersStore[qK]=B_e)});var QK,U_e,Cw=y(()=>{W();QK="pbrBlockImageProcessing",U_e=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING) +`;x.IncludesShadersStore[ZK]||(x.IncludesShadersStore[ZK]=G_e)});var $K,k_e,Pw=y(()=>{W();$K="pbrBlockImageProcessing",k_e=`#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 -`;x.IncludesShadersStore[QK]||(x.IncludesShadersStore[QK]=U_e)});var $K,V_e,JK=y(()=>{W();$K="openpbrBlockPrePass",V_e=`#if SCENE_MRT_COUNT>0 +`;x.IncludesShadersStore[$K]||(x.IncludesShadersStore[$K]=k_e)});var JK,W_e,ej=y(()=>{W();JK="openpbrBlockPrePass",W_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); @@ -17097,7 +17097,7 @@ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4( 0.0,0.0,0.0,1.0 )*writeGeometryInf #endif #endif #endif -`;x.IncludesShadersStore[$K]||(x.IncludesShadersStore[$K]=V_e)});var ej,G_e,Pw=y(()=>{W();ej="pbrDebug",G_e=`#if DEBUGMODE>0 +`;x.IncludesShadersStore[JK]||(x.IncludesShadersStore[JK]=W_e)});var tj,z_e,Dw=y(()=>{W();tj="pbrDebug",z_e=`#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 -`;x.IncludesShadersStore[ej]||(x.IncludesShadersStore[ej]=G_e)});var ij={};Be(ij,{openpbrPixelShader:()=>k_e});var Dw,tj,k_e,rj=y(()=>{W();kb();Wb();oK();vw();Sw();zb();Hb();fK();Yb();Yc();qu();kv();Ja();Tw();Aw();xw();Kb();Xb();ig();Rw();bw();tg();Mw();yw();yM();EK();TK();Qv();GN();xK();bK();kN();WN();yK();Kc();Iw();PK();LK();NK();HN();zN();FK();UK();GK();WK();Qb();HK();YK();jK();ZK();$b();Wv();Cw();JK();Jb();Pw();Dw="openpbrPixelShader",tj=`#define OPENPBR_FRAGMENT_SHADER +`;x.IncludesShadersStore[tj]||(x.IncludesShadersStore[tj]=z_e)});var rj={};Be(rj,{openpbrPixelShader:()=>H_e});var Lw,ij,H_e,nj=y(()=>{W();zb();Hb();lK();Ew();Tw();Xb();Yb();dK();jb();Yc();qu();kv();Ja();Aw();xw();Rw();qb();Kb();ig();bw();Mw();tg();yw();Iw();CM();SK();AK();Qv();kN();RK();MK();WN();zN();IK();Kc();Cw();DK();OK();wK();XN();HN();BK();VK();kK();zK();Jb();XK();KK();qK();QK();eM();Wv();Pw();ej();tM();Dw();Lw="openpbrPixelShader",ij=`#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 } -`;x.ShadersStore[Dw]||(x.ShadersStore[Dw]=tj);k_e={name:Dw,shader:tj}});var nj={};Be(nj,{OpenPBRMaterial:()=>we,OpenPBRMaterialDefines:()=>cE});var sg,PM,oi,Ii,Lw,Ow,cE,Nw,we,sj=y(()=>{Xt();zt();RM();Kt();dv();Xr();er();ts();Dr();ro();JR();fd();Ol();Lv();es();Yi();eb();$R();to();Lt();tb();ib();a7();We();rb();Dv();Oo();Ni();H7();sg={effect:null,subMesh:null},PM=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}};PM._tmpArray=[0,0,0,0];oi=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]}},Ii=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}},Lw=class extends Xp(Hp(Lr)){},Ow=class extends s7(Lw){},cE=class extends Wp(Ow){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}},Nw=class extends Yp(Bl){},we=class n extends Nw{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(Ee.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Ae.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Ae.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Ae.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Ae.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Ae.LIGHTFALLOFF_GLTF:this._lightFalloff=Ae.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 oi("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Ii("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new oi("base_color",Ee.White(),"vBaseColor",4),this._baseColorTexture=new Ii("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new oi("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Ii("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new oi("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Ii("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new oi("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Ii("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new oi("specular_color",Ee.White(),"vSpecularColor",4),this._specularColorTexture=new Ii("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new oi("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Ii("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new oi("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Ii("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new oi("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new oi("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Ii("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new oi("transmission_color",Ee.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Ii("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new oi("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Ii("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new oi("transmission_scatter",Ee.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Ii("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new oi("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new oi("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Ii("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new oi("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new oi("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Ii("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new oi("subsurface_color",new Ee(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Ii("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new oi("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new oi("subsurface_radius_scale",new Ee(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Ii("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new oi("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new oi("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Ii("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new oi("coat_color",Ee.White(),"vCoatColor",3,0),this._coatColorTexture=new Ii("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new oi("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Ii("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new oi("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Ii("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new oi("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new oi("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Ii("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new oi("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Ii("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new oi("fuzz_color",Ee.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Ii("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new oi("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Ii("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new oi("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Ii("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new oi("geometry_tangent",new Fe(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Ii("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Ii("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new oi("geometry_coat_tangent",new Fe(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Ii("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new oi("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Ii("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new oi("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Ii("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new oi("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new oi("emission_color",Ee.Black(),"vEmissionColor",3),this._emissionColorTexture=new Ii("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new oi("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Ii("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new oi("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new oi("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Ii("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new oi("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Ii("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 Oi(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=Ae.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 Ki(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=Ae.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(pe.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(),fe.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),fe.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=n7(this.getScene()),this._environmentFuzzBRDFTexture=BN(this.getScene()),this.prePassConfiguration=new Js,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof oi&&(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 PM(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 Ii&&(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 fe.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||fe.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!==Ae.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._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 cE({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(sg.effect=o,sg.subMesh=null,this._onEffectCreatedObservable.notifyObservers(sg)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var u;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 cE({...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 g=this._samplersList[m];if(g.value&&!g.value.isReadyOrNotBlocking())return!1}let h=this._getRadianceTexture();if(h&&fe.ReflectionTextureEnabled){if(!h.isReadyOrNotBlocking())return!1;if(h.irradianceTexture){if(!h.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!h.sphericalPolynomial&&((u=h.getInternalTexture())!=null&&u._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&fe.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&fe.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&fe.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 h=0;h{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),ss.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);qs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&ud(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let u=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let g=this._samplersList[m];g.value&&(f.updateFloat2(g.samplerInfoName,g.value.coordinatesIndex,g.value.level),ai(g.value,f,g.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)),_p(r,s,f,Ee.White(),u,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let h=this._uniformsArray;for(let m=0,g=h.length;m0&&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 ns,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=Ap(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 u=[L.PositionKind];i.NORMAL&&u.push(L.NormalKind),i.TANGENT&&u.push(L.TangentKind);for(let S=1;S<=6;++S)i["UV"+S]&&u.push(`uv${S===1?"":S}`);i.VERTEXCOLOR&&u.push(L.ColorKind),Sp(u,e,i,f),Tp(u,i),Wu(u,e,i),vp(u,e,i);let h="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 S in this._uniformsList)m.push(S);let g=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&g.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&g.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&g.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(g.push("sceneIrradianceSampler"),g.push("sceneDepthSampler"));for(let S in this._samplersList){let A=this._samplersList[S];g.push(A.samplerName),m.push(A.samplerInfoName),m.push(A.samplerMatrixName)}rd(m,g,!0);let p=["Material","Scene","Mesh"],_={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=u,this._eventInfo.samplers=g,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=_,this._callbackPluginEventGeneric(128,this._eventInfo),ss.AddUniformsAndSamplers(m,g),Js.AddUniforms(m),Js.AddSamplers(g),Qn(m),this._useVertexPulling){let S=t==null?void 0:t.geometry;S&&(this._vertexPullingMetadata=dd(S),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((A,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Yt&&(Yt.PrepareUniforms(m,i),Yt.PrepareSamplers(g,i)),Dp({uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,i,u,v));let E=i.toString(),T=c.createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:f,onCompiled:r,onError:s,indexParameters:_,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(()=>($7(),Q7)),Promise.resolve().then(()=>(q9(),j9))]):await Promise.all([Promise.resolve().then(()=>(sK(),nK)),Promise.resolve().then(()=>(rj(),ij))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,T}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();bp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Ip(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(o,i,this.canRenderToMRT&&!c),Cp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let u=1;u<=6;++u)i["MAINUV"+u]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let g=this._samplersList[m];g.value?(si(g.value,i,g.textureDefine),i[g.textureDefine+"_GAMMA"]=g.value.gammaSpace):i[g.textureDefine]=!1}let u=this._getRadianceTexture(),h=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(id(o,u,i,this.realTimeFiltering,this.realTimeFilteringQuality,!h),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&&fe.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&&fe.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&&fe.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=fe.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===Ae.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Ae.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]&&fe.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(L.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 u=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let h=o.geometryBufferRenderer.getTextureIndex(Ms.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[h],u=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let h=o.geometryBufferRenderer.getTextureIndex(Ms.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[h],u=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,u&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&fe.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=BN(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(xp(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(L.NormalKind),i.DEBUGMODE=this._debugMode),Mp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),yp(e,i,!0,!0,!0,this._transparencyMode!==Ae.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};we.SSS_QUALITY_LOW=0;we.SSS_QUALITY_MEDIUM=1;we.SSS_QUALITY_HIGH=2;we._noiseTextures={};we.ForceGLSL=!1;P([gt("_markAllSubMeshesAsTexturesDirty","baseWeight")],we.prototype,"_baseWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],we.prototype,"_baseWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseColor")],we.prototype,"_baseColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],we.prototype,"_baseColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],we.prototype,"_baseDiffuseRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],we.prototype,"_baseDiffuseRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseMetalness")],we.prototype,"_baseMetalness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],we.prototype,"_baseMetalnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularWeight")],we.prototype,"_specularWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],we.prototype,"_specularWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularColor")],we.prototype,"_specularColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],we.prototype,"_specularColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughness")],we.prototype,"_specularRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],we.prototype,"_specularRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],we.prototype,"_specularRoughnessAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],we.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularIor")],we.prototype,"_specularIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],we.prototype,"_transmissionWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],we.prototype,"_transmissionWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionColor")],we.prototype,"_transmissionColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],we.prototype,"_transmissionColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],we.prototype,"_transmissionDepth",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],we.prototype,"_transmissionDepthTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],we.prototype,"_transmissionScatter",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],we.prototype,"_transmissionScatterTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],we.prototype,"_transmissionScatterAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],we.prototype,"_transmissionDispersionScale",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],we.prototype,"_transmissionDispersionScaleTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],we.prototype,"_transmissionDispersionAbbeNumber",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],we.prototype,"_subsurfaceWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],we.prototype,"_subsurfaceWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],we.prototype,"_subsurfaceColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],we.prototype,"_subsurfaceColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],we.prototype,"_subsurfaceRadius",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],we.prototype,"_subsurfaceRadiusScale",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],we.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],we.prototype,"_subsurfaceScatterAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatWeight")],we.prototype,"_coatWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],we.prototype,"_coatWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatColor")],we.prototype,"_coatColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],we.prototype,"_coatColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughness")],we.prototype,"_coatRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],we.prototype,"_coatRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],we.prototype,"_coatRoughnessAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],we.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatIor")],we.prototype,"_coatIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatDarkening")],we.prototype,"_coatDarkening",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],we.prototype,"_coatDarkeningTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],we.prototype,"_fuzzWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],we.prototype,"_fuzzWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzColor")],we.prototype,"_fuzzColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],we.prototype,"_fuzzColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],we.prototype,"_fuzzRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],we.prototype,"_fuzzRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],we.prototype,"_geometryThinWalled",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],we.prototype,"_geometryNormalTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryTangent")],we.prototype,"_geometryTangent",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],we.prototype,"_geometryTangentTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],we.prototype,"_geometryCoatNormalTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],we.prototype,"_geometryCoatTangent",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],we.prototype,"_geometryCoatTangentTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],we.prototype,"_geometryOpacity",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],we.prototype,"_geometryOpacityTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThickness")],we.prototype,"_geometryThickness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],we.prototype,"_geometryThicknessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],we.prototype,"_emissionLuminance",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionColor")],we.prototype,"_emissionColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],we.prototype,"_emissionColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],we.prototype,"_thinFilmWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],we.prototype,"_thinFilmWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],we.prototype,"_thinFilmThickness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],we.prototype,"_thinFilmThicknessMin",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],we.prototype,"_thinFilmThicknessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],we.prototype,"_thinFilmIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],we.prototype,"_ambientOcclusionTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"directIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"environmentIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],we.prototype,"forceAlphaTest",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],we.prototype,"alphaCutOff",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAmbientInGrayScale",void 0);P([F()],we.prototype,"usePhysicalLightFalloff",null);P([F()],we.prototype,"useGLTFLightFalloff",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useObjectSpaceNormalMap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useParallax",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useParallaxOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"parallaxScaleBias",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],we.prototype,"disableLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"forceIrradianceInFragment",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],we.prototype,"maxSimultaneousLights",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"invertNormalMapX",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"invertNormalMapY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"twoSidedLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAlphaFresnel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useLinearAlphaFresnel",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"environmentBRDFTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"forceNormalForward",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"enableSpecularAntiAliasing",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useHorizonOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useRadianceOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"unlit",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"applyDecalMapAfterDetailMap",void 0);P([ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"debugMode",void 0);P([F()],we.prototype,"transparencyMode",null);Bt("BABYLON.OpenPBRMaterial",we)});var aj={};Be(aj,{OpenPBRMaterialLoadingAdapter:()=>ww});var ww,oj=y(()=>{Kt();ww=class{constructor(e){this._diffuseTransmissionTint=Ee.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(Ee.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(Ee.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.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(Ee.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 Fw,Fr,lj=y(()=>{Xt();zt();ro();pd();Fw=class extends Lr{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}},Fr=class n extends jr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new Fw,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"}};Fr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Fr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Fr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Fr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Fr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Fr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Fr.DEFAULT_DIFFUSE_MODEL=0;Fr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Fr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useEnergyConservation",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSphericalHarmonics",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"conductorSpecularModel",void 0)});var Bw,_n,cj=y(()=>{Xt();zt();Kt();to();pd();ro();es();Bw=class extends Lr{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}},_n=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new Bw,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=Ee.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&&fe.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&fe.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&fe.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&fe.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&&fe.ClearCoatTextureEnabled?si(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&fe.ClearCoatTextureEnabled?si(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&fe.ClearCoatBumpTextureEnabled?si(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&fe.ClearCoatTintTextureEnabled?(si(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,u,h,m,g,p,_;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)&&fe.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(h=(u=this._texture)==null?void 0:u.level)!=null?h:0,(g=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?g:0,(_=(p=this._textureRoughness)==null?void 0:p.level)!=null?_:0),this._texture&&ai(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ai(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&fe.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),ai(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&&fe.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),ai(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,E=1+this._indexOfRefraction,T=Math.pow(-v/E,2),S=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",T,S,v,E),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&&fe.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&fe.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&fe.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&fe.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"}]}}};_n._DefaultIndexOfRefraction=1.5;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"isEnabled",void 0);P([F()],_n.prototype,"intensity",void 0);P([F()],_n.prototype,"roughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"indexOfRefraction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"useRoughnessFromMainTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"textureRoughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"remapF0OnInterfaceChange",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"bumpTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"isTintEnabled",void 0);P([yr()],_n.prototype,"tintColor",void 0);P([F()],_n.prototype,"tintColorAtDistance",void 0);P([F()],_n.prototype,"tintThickness",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"tintTexture",void 0)});var Uw,ta,fj=y(()=>{Xt();zt();to();pd();ro();es();Uw=class extends Lr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},ta=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new Uw,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&&fe.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&fe.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&fe.IridescenceTextureEnabled?si(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&fe.IridescenceTextureEnabled?si(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)&&fe.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&&ai(this._texture,e,"iridescence"),this._thicknessTexture&&ai(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&fe.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&fe.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"}]}}};ta._DefaultMinimumThickness=100;ta._DefaultMaximumThickness=400;ta._DefaultIndexOfRefraction=1.3;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ta.prototype,"isEnabled",void 0);P([F()],ta.prototype,"intensity",void 0);P([F()],ta.prototype,"minimumThickness",void 0);P([F()],ta.prototype,"maximumThickness",void 0);P([F()],ta.prototype,"indexOfRefraction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ta.prototype,"texture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ta.prototype,"thicknessTexture",void 0)});var Vw,Qc,dj=y(()=>{Xt();zt();Yi();We();to();pd();ro();es();Vw=class extends Lr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Qc=class extends jr{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 Vw,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&&fe.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(L.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&fe.AnisotropicTextureEnabled?si(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&&fe.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),ai(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&fe.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(),ce("_markAllSubMeshesAsTexturesDirty")],Qc.prototype,"isEnabled",void 0);P([F()],Qc.prototype,"intensity",void 0);P([Jm()],Qc.prototype,"direction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Qc.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Qc.prototype,"legacy",void 0)});var Gw,ba,uj=y(()=>{Xt();zt();Kt();to();pd();ro();es();Gw=class extends Lr{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}},ba=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new Gw,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=Ee.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&&fe.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&fe.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&&fe.SheenTextureEnabled?(si(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&fe.SheenTextureEnabled?si(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,u,h,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&fe.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,(u=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?u:0,(m=(h=this._textureRoughness)==null?void 0:h.level)!=null?m:0),this._texture&&ai(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ai(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&&fe.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&fe.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(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"isEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"linkSheenWithAlbedo",void 0);P([F()],ba.prototype,"intensity",void 0);P([yr()],ba.prototype,"color",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"useRoughnessFromMainTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"roughness",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"textureRoughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ba.prototype,"albedoScaling",void 0)});var kw,Ci,hj=y(()=>{Xt();zt();Kt();to();We();pd();ro();es();kw=class extends Lr{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}},Ci=class n extends jr{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 kw,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=Ee.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=Ee.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&&fe.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&fe.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&&fe.ThicknessTextureEnabled&&si(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&si(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&si(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&(si(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&&fe.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&&fe.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),ai(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),ai(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),ai(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),ai(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&fe.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let u=c.getSize().width,h=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/h,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",u,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",u,Math.log2(u)),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&&fe.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&fe.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){fe.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!!(fe.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"}]}}};Ci.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ci.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isRefractionEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isTranslucencyEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isDispersionEnabled",void 0);P([F(),ce("_markScenePrePassDirty")],Ci.prototype,"isScatteringEnabled",void 0);P([F()],Ci.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ci.prototype,"refractionIntensity",void 0);P([F()],Ci.prototype,"translucencyIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useAlbedoToTintRefraction",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useAlbedoToTintTranslucency",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"thicknessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"refractionTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"indexOfRefraction",void 0);P([F()],Ci.prototype,"_volumeIndexOfRefraction",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"volumeIndexOfRefraction",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"invertRefractionY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ci.prototype,"minimumThickness",void 0);P([F()],Ci.prototype,"maximumThickness",void 0);P([F()],Ci.prototype,"useThicknessAsDepth",void 0);P([yr()],Ci.prototype,"tintColor",void 0);P([F()],Ci.prototype,"tintColorAtDistance",void 0);P([F()],Ci.prototype,"dispersion",void 0);P([yr()],Ci.prototype,"diffusionDistance",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useMaskFromThicknessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"refractionIntensityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"translucencyIntensityTexture",void 0);P([yr()],Ci.prototype,"translucencyColor",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"translucencyColorTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useGltfStyleTextures",void 0);P([F()],Ci.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ci.prototype,"legacyTranslucency",void 0)});var mj,W_e,Ww=y(()=>{W();Xu();jv();mj="pbrUboDeclaration",W_e=`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; +`;x.ShadersStore[Lw]||(x.ShadersStore[Lw]=ij);H_e={name:Lw,shader:ij}});var sj={};Be(sj,{OpenPBRMaterial:()=>we,OpenPBRMaterialDefines:()=>cE});var sg,LM,oi,Ii,Ow,Nw,cE,ww,we,aj=y(()=>{Xt();zt();MM();Kt();dv();Xr();er();ts();Dr();ro();tb();fd();Ol();Lv();es();Yi();ib();eb();to();Lt();rb();nb();o7();We();sb();Dv();Oo();Ni();X7();sg={effect:null,subMesh:null},LM=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}};LM._tmpArray=[0,0,0,0];oi=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]}},Ii=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}},Ow=class extends Xp(Hp(Lr)){},Nw=class extends a7(Ow){},cE=class extends Wp(Nw){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}},ww=class extends Yp(Bl){},we=class n extends ww{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(Ee.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Ae.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Ae.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Ae.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Ae.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Ae.LIGHTFALLOFF_GLTF:this._lightFalloff=Ae.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 oi("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Ii("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new oi("base_color",Ee.White(),"vBaseColor",4),this._baseColorTexture=new Ii("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new oi("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Ii("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new oi("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Ii("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new oi("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Ii("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new oi("specular_color",Ee.White(),"vSpecularColor",4),this._specularColorTexture=new Ii("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new oi("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Ii("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new oi("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Ii("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new oi("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new oi("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Ii("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new oi("transmission_color",Ee.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Ii("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new oi("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Ii("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new oi("transmission_scatter",Ee.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Ii("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new oi("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new oi("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Ii("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new oi("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new oi("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Ii("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new oi("subsurface_color",new Ee(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Ii("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new oi("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new oi("subsurface_radius_scale",new Ee(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Ii("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new oi("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new oi("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Ii("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new oi("coat_color",Ee.White(),"vCoatColor",3,0),this._coatColorTexture=new Ii("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new oi("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Ii("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new oi("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Ii("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new oi("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new oi("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Ii("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new oi("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Ii("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new oi("fuzz_color",Ee.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Ii("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new oi("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Ii("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new oi("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Ii("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new oi("geometry_tangent",new Fe(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Ii("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Ii("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new oi("geometry_coat_tangent",new Fe(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Ii("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new oi("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Ii("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new oi("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Ii("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new oi("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new oi("emission_color",Ee.Black(),"vEmissionColor",3),this._emissionColorTexture=new Ii("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new oi("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Ii("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new oi("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new oi("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Ii("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new oi("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Ii("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 Oi(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=Ae.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 Ki(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=Ae.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(pe.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(),fe.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),fe.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=s7(this.getScene()),this._environmentFuzzBRDFTexture=UN(this.getScene()),this.prePassConfiguration=new ea,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof oi&&(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 LM(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 Ii&&(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 fe.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||fe.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!==Ae.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._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 cE({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(sg.effect=o,sg.subMesh=null,this._onEffectCreatedObservable.notifyObservers(sg)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var u;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 cE({...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 g=this._samplersList[m];if(g.value&&!g.value.isReadyOrNotBlocking())return!1}let h=this._getRadianceTexture();if(h&&fe.ReflectionTextureEnabled){if(!h.isReadyOrNotBlocking())return!1;if(h.irradianceTexture){if(!h.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!h.sphericalPolynomial&&((u=h.getInternalTexture())!=null&&u._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&fe.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&fe.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&fe.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 h=0;h{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),ss.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);Zs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&ud(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let u=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let g=this._samplersList[m];g.value&&(f.updateFloat2(g.samplerInfoName,g.value.coordinatesIndex,g.value.level),ai(g.value,f,g.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)),_p(r,s,f,Ee.White(),u,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let h=this._uniformsArray;for(let m=0,g=h.length;m0&&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 ns,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=Ap(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 u=[L.PositionKind];i.NORMAL&&u.push(L.NormalKind),i.TANGENT&&u.push(L.TangentKind);for(let S=1;S<=6;++S)i["UV"+S]&&u.push(`uv${S===1?"":S}`);i.VERTEXCOLOR&&u.push(L.ColorKind),Sp(u,e,i,f),Tp(u,i),Wu(u,e,i),vp(u,e,i);let h="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 S in this._uniformsList)m.push(S);let g=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&g.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&g.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&g.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(g.push("sceneIrradianceSampler"),g.push("sceneDepthSampler"));for(let S in this._samplersList){let A=this._samplersList[S];g.push(A.samplerName),m.push(A.samplerInfoName),m.push(A.samplerMatrixName)}rd(m,g,!0);let p=["Material","Scene","Mesh"],_={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=u,this._eventInfo.samplers=g,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=_,this._callbackPluginEventGeneric(128,this._eventInfo),ss.AddUniformsAndSamplers(m,g),ea.AddUniforms(m),ea.AddSamplers(g),Qn(m),this._useVertexPulling){let S=t==null?void 0:t.geometry;S&&(this._vertexPullingMetadata=dd(S),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((A,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Yt&&(Yt.PrepareUniforms(m,i),Yt.PrepareSamplers(g,i)),Dp({uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,i,u,v));let E=i.toString(),T=c.createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:f,onCompiled:r,onError:s,indexParameters:_,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(()=>(J7(),$7)),Promise.resolve().then(()=>(Z9(),q9))]):await Promise.all([Promise.resolve().then(()=>(aK(),sK)),Promise.resolve().then(()=>(nj(),rj))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,T}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();bp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Ip(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(o,i,this.canRenderToMRT&&!c),Cp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let u=1;u<=6;++u)i["MAINUV"+u]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let g=this._samplersList[m];g.value?(si(g.value,i,g.textureDefine),i[g.textureDefine+"_GAMMA"]=g.value.gammaSpace):i[g.textureDefine]=!1}let u=this._getRadianceTexture(),h=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(id(o,u,i,this.realTimeFiltering,this.realTimeFilteringQuality,!h),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&&fe.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&&fe.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&&fe.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=fe.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===Ae.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Ae.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]&&fe.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(L.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 u=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let h=o.geometryBufferRenderer.getTextureIndex(Ms.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[h],u=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let h=o.geometryBufferRenderer.getTextureIndex(Ms.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[h],u=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,u&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&fe.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=UN(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(xp(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(L.NormalKind),i.DEBUGMODE=this._debugMode),Mp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),yp(e,i,!0,!0,!0,this._transparencyMode!==Ae.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};we.SSS_QUALITY_LOW=0;we.SSS_QUALITY_MEDIUM=1;we.SSS_QUALITY_HIGH=2;we._noiseTextures={};we.ForceGLSL=!1;P([gt("_markAllSubMeshesAsTexturesDirty","baseWeight")],we.prototype,"_baseWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],we.prototype,"_baseWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseColor")],we.prototype,"_baseColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],we.prototype,"_baseColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],we.prototype,"_baseDiffuseRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],we.prototype,"_baseDiffuseRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseMetalness")],we.prototype,"_baseMetalness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],we.prototype,"_baseMetalnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularWeight")],we.prototype,"_specularWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],we.prototype,"_specularWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularColor")],we.prototype,"_specularColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],we.prototype,"_specularColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughness")],we.prototype,"_specularRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],we.prototype,"_specularRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],we.prototype,"_specularRoughnessAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],we.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","specularIor")],we.prototype,"_specularIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],we.prototype,"_transmissionWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],we.prototype,"_transmissionWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionColor")],we.prototype,"_transmissionColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],we.prototype,"_transmissionColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],we.prototype,"_transmissionDepth",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],we.prototype,"_transmissionDepthTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],we.prototype,"_transmissionScatter",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],we.prototype,"_transmissionScatterTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],we.prototype,"_transmissionScatterAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],we.prototype,"_transmissionDispersionScale",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],we.prototype,"_transmissionDispersionScaleTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],we.prototype,"_transmissionDispersionAbbeNumber",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],we.prototype,"_subsurfaceWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],we.prototype,"_subsurfaceWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],we.prototype,"_subsurfaceColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],we.prototype,"_subsurfaceColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],we.prototype,"_subsurfaceRadius",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],we.prototype,"_subsurfaceRadiusScale",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],we.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],we.prototype,"_subsurfaceScatterAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatWeight")],we.prototype,"_coatWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],we.prototype,"_coatWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatColor")],we.prototype,"_coatColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],we.prototype,"_coatColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughness")],we.prototype,"_coatRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],we.prototype,"_coatRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],we.prototype,"_coatRoughnessAnisotropy",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],we.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatIor")],we.prototype,"_coatIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatDarkening")],we.prototype,"_coatDarkening",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],we.prototype,"_coatDarkeningTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],we.prototype,"_fuzzWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],we.prototype,"_fuzzWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzColor")],we.prototype,"_fuzzColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],we.prototype,"_fuzzColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],we.prototype,"_fuzzRoughness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],we.prototype,"_fuzzRoughnessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],we.prototype,"_geometryThinWalled",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],we.prototype,"_geometryNormalTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryTangent")],we.prototype,"_geometryTangent",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],we.prototype,"_geometryTangentTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],we.prototype,"_geometryCoatNormalTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],we.prototype,"_geometryCoatTangent",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],we.prototype,"_geometryCoatTangentTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],we.prototype,"_geometryOpacity",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],we.prototype,"_geometryOpacityTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThickness")],we.prototype,"_geometryThickness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],we.prototype,"_geometryThicknessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],we.prototype,"_emissionLuminance",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionColor")],we.prototype,"_emissionColor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],we.prototype,"_emissionColorTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],we.prototype,"_thinFilmWeight",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],we.prototype,"_thinFilmWeightTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],we.prototype,"_thinFilmThickness",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],we.prototype,"_thinFilmThicknessMin",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],we.prototype,"_thinFilmThicknessTexture",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],we.prototype,"_thinFilmIor",void 0);P([gt("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],we.prototype,"_ambientOcclusionTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"directIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"environmentIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],we.prototype,"forceAlphaTest",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],we.prototype,"alphaCutOff",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAmbientInGrayScale",void 0);P([F()],we.prototype,"usePhysicalLightFalloff",null);P([F()],we.prototype,"useGLTFLightFalloff",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useObjectSpaceNormalMap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useParallax",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useParallaxOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"parallaxScaleBias",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],we.prototype,"disableLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"forceIrradianceInFragment",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],we.prototype,"maxSimultaneousLights",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"invertNormalMapX",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"invertNormalMapY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"twoSidedLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useAlphaFresnel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useLinearAlphaFresnel",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"environmentBRDFTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"forceNormalForward",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"enableSpecularAntiAliasing",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useHorizonOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],we.prototype,"useRadianceOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"unlit",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"applyDecalMapAfterDetailMap",void 0);P([ce("_markAllSubMeshesAsMiscDirty")],we.prototype,"debugMode",void 0);P([F()],we.prototype,"transparencyMode",null);Bt("BABYLON.OpenPBRMaterial",we)});var oj={};Be(oj,{OpenPBRMaterialLoadingAdapter:()=>Fw});var Fw,lj=y(()=>{Kt();Fw=class{constructor(e){this._diffuseTransmissionTint=Ee.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(Ee.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(Ee.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.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(Ee.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 Bw,Fr,cj=y(()=>{Xt();zt();ro();pd();Bw=class extends Lr{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}},Fr=class n extends jr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new Bw,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"}};Fr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Fr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Fr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Fr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Fr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Fr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Fr.DEFAULT_DIFFUSE_MODEL=0;Fr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Fr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useEnergyConservation",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSphericalHarmonics",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),ce("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"conductorSpecularModel",void 0)});var Uw,_n,fj=y(()=>{Xt();zt();Kt();to();pd();ro();es();Uw=class extends Lr{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}},_n=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new Uw,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=Ee.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&&fe.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&fe.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&fe.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&fe.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&&fe.ClearCoatTextureEnabled?si(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&fe.ClearCoatTextureEnabled?si(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&fe.ClearCoatBumpTextureEnabled?si(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&fe.ClearCoatTintTextureEnabled?(si(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,u,h,m,g,p,_;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)&&fe.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(h=(u=this._texture)==null?void 0:u.level)!=null?h:0,(g=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?g:0,(_=(p=this._textureRoughness)==null?void 0:p.level)!=null?_:0),this._texture&&ai(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ai(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&fe.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),ai(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&&fe.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),ai(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,E=1+this._indexOfRefraction,T=Math.pow(-v/E,2),S=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",T,S,v,E),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&&fe.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&fe.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&fe.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&fe.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"}]}}};_n._DefaultIndexOfRefraction=1.5;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"isEnabled",void 0);P([F()],_n.prototype,"intensity",void 0);P([F()],_n.prototype,"roughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"indexOfRefraction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"useRoughnessFromMainTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"textureRoughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"remapF0OnInterfaceChange",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"bumpTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"isTintEnabled",void 0);P([yr()],_n.prototype,"tintColor",void 0);P([F()],_n.prototype,"tintColorAtDistance",void 0);P([F()],_n.prototype,"tintThickness",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],_n.prototype,"tintTexture",void 0)});var Vw,ia,dj=y(()=>{Xt();zt();to();pd();ro();es();Vw=class extends Lr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},ia=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new Vw,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&&fe.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&fe.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&fe.IridescenceTextureEnabled?si(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&fe.IridescenceTextureEnabled?si(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)&&fe.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&&ai(this._texture,e,"iridescence"),this._thicknessTexture&&ai(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&fe.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&fe.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"}]}}};ia._DefaultMinimumThickness=100;ia._DefaultMaximumThickness=400;ia._DefaultIndexOfRefraction=1.3;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],ia.prototype,"isEnabled",void 0);P([F()],ia.prototype,"intensity",void 0);P([F()],ia.prototype,"minimumThickness",void 0);P([F()],ia.prototype,"maximumThickness",void 0);P([F()],ia.prototype,"indexOfRefraction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ia.prototype,"texture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],ia.prototype,"thicknessTexture",void 0)});var Gw,Qc,uj=y(()=>{Xt();zt();Yi();We();to();pd();ro();es();Gw=class extends Lr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Qc=class extends jr{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 Gw,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&&fe.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(L.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&fe.AnisotropicTextureEnabled?si(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&&fe.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),ai(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&fe.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(),ce("_markAllSubMeshesAsTexturesDirty")],Qc.prototype,"isEnabled",void 0);P([F()],Qc.prototype,"intensity",void 0);P([Jm()],Qc.prototype,"direction",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Qc.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],Qc.prototype,"legacy",void 0)});var kw,Ma,hj=y(()=>{Xt();zt();Kt();to();pd();ro();es();kw=class extends Lr{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}},Ma=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new kw,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=Ee.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&&fe.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&fe.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&&fe.SheenTextureEnabled?(si(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&fe.SheenTextureEnabled?si(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,u,h,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&fe.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,(u=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?u:0,(m=(h=this._textureRoughness)==null?void 0:h.level)!=null?m:0),this._texture&&ai(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ai(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&&fe.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&fe.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(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"isEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"linkSheenWithAlbedo",void 0);P([F()],Ma.prototype,"intensity",void 0);P([yr()],Ma.prototype,"color",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"texture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"useRoughnessFromMainTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"roughness",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"textureRoughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ma.prototype,"albedoScaling",void 0)});var Ww,Ci,mj=y(()=>{Xt();zt();Kt();to();We();pd();ro();es();Ww=class extends Lr{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}},Ci=class n extends jr{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 Ww,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=Ee.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=Ee.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&&fe.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&fe.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&&fe.ThicknessTextureEnabled&&si(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&si(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&si(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&(si(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&&fe.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&&fe.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),ai(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),ai(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),ai(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),ai(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&fe.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let u=c.getSize().width,h=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/h,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",u,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",u,Math.log2(u)),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&&fe.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&fe.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&fe.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&fe.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&fe.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){fe.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!!(fe.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"}]}}};Ci.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ci.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isRefractionEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isTranslucencyEnabled",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"isDispersionEnabled",void 0);P([F(),ce("_markScenePrePassDirty")],Ci.prototype,"isScatteringEnabled",void 0);P([F()],Ci.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ci.prototype,"refractionIntensity",void 0);P([F()],Ci.prototype,"translucencyIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useAlbedoToTintRefraction",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useAlbedoToTintTranslucency",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"thicknessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"refractionTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"indexOfRefraction",void 0);P([F()],Ci.prototype,"_volumeIndexOfRefraction",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"volumeIndexOfRefraction",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"invertRefractionY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ci.prototype,"minimumThickness",void 0);P([F()],Ci.prototype,"maximumThickness",void 0);P([F()],Ci.prototype,"useThicknessAsDepth",void 0);P([yr()],Ci.prototype,"tintColor",void 0);P([F()],Ci.prototype,"tintColorAtDistance",void 0);P([F()],Ci.prototype,"dispersion",void 0);P([yr()],Ci.prototype,"diffusionDistance",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useMaskFromThicknessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"refractionIntensityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"translucencyIntensityTexture",void 0);P([yr()],Ci.prototype,"translucencyColor",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"translucencyColorTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],Ci.prototype,"useGltfStyleTextures",void 0);P([F()],Ci.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ci.prototype,"legacyTranslucency",void 0)});var pj,X_e,zw=y(()=>{W();Xu();jv();pj="pbrUboDeclaration",X_e=`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 -`;x.IncludesShadersStoreWGSL[mj]||(x.IncludesShadersStoreWGSL[mj]=W_e)});var gj={};Be(gj,{pbrVertexShaderWGSL:()=>z_e});var zw,pj,z_e,_j=y(()=>{W();Ww();nb();Kp();$a();ng();Pc();Dc();hd();sb();ab();rg();pO();Lc();Ov();ob();gd();_d();Yu();lb();cb();vd();Ed();Oc();Nc();wc();fb();db();ub();hb();Fc();Nv();mb();wv();pb();zw="pbrVertexShader",pj=`#define PBR_VERTEX_SHADER +`;x.IncludesShadersStoreWGSL[pj]||(x.IncludesShadersStoreWGSL[pj]=X_e)});var _j={};Be(_j,{pbrVertexShaderWGSL:()=>Y_e});var Hw,gj,Y_e,vj=y(()=>{W();zw();ab();Kp();$a();ng();Pc();Dc();hd();ob();lb();rg();gO();Lc();Ov();cb();gd();_d();Yu();fb();db();vd();Ed();Oc();Nc();wc();ub();hb();mb();pb();Fc();Nv();gb();wv();_b();Hw="pbrVertexShader",gj=`#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 -}`;x.ShadersStoreWGSL[zw]||(x.ShadersStoreWGSL[zw]=pj);z_e={name:zw,shader:pj}});var vj,H_e,Ej=y(()=>{W();vj="samplerFragmentAlternateDeclaration",H_e=`#ifdef _DEFINENAME_ +}`;x.ShadersStoreWGSL[Hw]||(x.ShadersStoreWGSL[Hw]=gj);Y_e={name:Hw,shader:gj}});var Ej,K_e,Sj=y(()=>{W();Ej="samplerFragmentAlternateDeclaration",K_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 -`;x.IncludesShadersStoreWGSL[vj]||(x.IncludesShadersStoreWGSL[vj]=H_e)});var Sj,X_e,Tj=y(()=>{W();Ku();Ej();IM();Sj="pbrFragmentSamplersDeclaration",X_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;x.IncludesShadersStoreWGSL[Ej]||(x.IncludesShadersStoreWGSL[Ej]=K_e)});var Tj,j_e,Aj=y(()=>{W();Ku();Sj();PM();Tj="pbrFragmentSamplersDeclaration",j_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 -`;x.IncludesShadersStoreWGSL[Sj]||(x.IncludesShadersStoreWGSL[Sj]=X_e)});var Aj,Y_e,xj=y(()=>{W();EO();Aj="pbrBlockAlbedoOpacity",Y_e=`struct albedoOpacityOutParams +`;x.IncludesShadersStoreWGSL[Tj]||(x.IncludesShadersStoreWGSL[Tj]=j_e)});var xj,q_e,Rj=y(()=>{W();SO();xj="pbrBlockAlbedoOpacity",q_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;} -`;x.IncludesShadersStoreWGSL[Aj]||(x.IncludesShadersStoreWGSL[Aj]=Y_e)});var Rj,K_e,bj=y(()=>{W();Rj="pbrBlockReflectivity",K_e=`struct reflectivityOutParams +`;x.IncludesShadersStoreWGSL[xj]||(x.IncludesShadersStoreWGSL[xj]=q_e)});var bj,Z_e,Mj=y(()=>{W();bj="pbrBlockReflectivity",Z_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;} -`;x.IncludesShadersStoreWGSL[Rj]||(x.IncludesShadersStoreWGSL[Rj]=K_e)});var Mj,j_e,yj=y(()=>{W();Mj="pbrBlockAmbientOcclusion",j_e=`struct ambientOcclusionOutParams +`;x.IncludesShadersStoreWGSL[bj]||(x.IncludesShadersStoreWGSL[bj]=Z_e)});var yj,Q_e,Ij=y(()=>{W();yj="pbrBlockAmbientOcclusion",Q_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;} -`;x.IncludesShadersStoreWGSL[Mj]||(x.IncludesShadersStoreWGSL[Mj]=j_e)});var Ij,q_e,Cj=y(()=>{W();Ij="pbrBlockAlphaFresnel",q_e=`#ifdef ALPHAFRESNEL +`;x.IncludesShadersStoreWGSL[yj]||(x.IncludesShadersStoreWGSL[yj]=Q_e)});var Cj,$_e,Pj=y(()=>{W();Cj="pbrBlockAlphaFresnel",$_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 -`;x.IncludesShadersStoreWGSL[Ij]||(x.IncludesShadersStoreWGSL[Ij]=q_e)});var Pj,Z_e,Dj=y(()=>{W();Pj="pbrBlockAnisotropic",Z_e=`#ifdef ANISOTROPIC +`;x.IncludesShadersStoreWGSL[Cj]||(x.IncludesShadersStoreWGSL[Cj]=$_e)});var Dj,J_e,Lj=y(()=>{W();Dj="pbrBlockAnisotropic",J_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 -`;x.IncludesShadersStoreWGSL[Pj]||(x.IncludesShadersStoreWGSL[Pj]=Z_e)});var Lj,Q_e,Oj=y(()=>{W();Lj="pbrBlockReflection",Q_e=`#ifdef REFLECTION +`;x.IncludesShadersStoreWGSL[Dj]||(x.IncludesShadersStoreWGSL[Dj]=J_e)});var Oj,eve,Nj=y(()=>{W();Oj="pbrBlockReflection",eve=`#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 -`;x.IncludesShadersStoreWGSL[Lj]||(x.IncludesShadersStoreWGSL[Lj]=Q_e)});var Nj,$_e,wj=y(()=>{W();Nj="pbrBlockSheen",$_e=`#ifdef SHEEN +`;x.IncludesShadersStoreWGSL[Oj]||(x.IncludesShadersStoreWGSL[Oj]=eve)});var wj,tve,Fj=y(()=>{W();wj="pbrBlockSheen",tve=`#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 -`;x.IncludesShadersStoreWGSL[Nj]||(x.IncludesShadersStoreWGSL[Nj]=$_e)});var Fj,J_e,Bj=y(()=>{W();Fj="pbrBlockClearcoat",J_e=`struct clearcoatOutParams +`;x.IncludesShadersStoreWGSL[wj]||(x.IncludesShadersStoreWGSL[wj]=tve)});var Bj,ive,Uj=y(()=>{W();Bj="pbrBlockClearcoat",ive=`struct clearcoatOutParams {specularEnvironmentR0: vec3f, conservationFactor: f32, clearCoatNormalW: vec3f, @@ -18932,7 +18932,7 @@ outParams.energyConservationFactorClearCoat=getEnergyConservationFactor(outParam #endif return outParams;} #endif -`;x.IncludesShadersStoreWGSL[Fj]||(x.IncludesShadersStoreWGSL[Fj]=J_e)});var Uj,eve,Vj=y(()=>{W();Uj="pbrBlockIridescence",eve=`struct iridescenceOutParams +`;x.IncludesShadersStoreWGSL[Bj]||(x.IncludesShadersStoreWGSL[Bj]=ive)});var Vj,rve,Gj=y(()=>{W();Vj="pbrBlockIridescence",rve=`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 -`;x.IncludesShadersStoreWGSL[Uj]||(x.IncludesShadersStoreWGSL[Uj]=eve)});var Gj,tve,kj=y(()=>{W();Gj="pbrBlockSubSurface",tve=`struct subSurfaceOutParams +`;x.IncludesShadersStoreWGSL[Vj]||(x.IncludesShadersStoreWGSL[Vj]=rve)});var kj,nve,Wj=y(()=>{W();kj="pbrBlockSubSurface",nve=`struct subSurfaceOutParams {specularEnvironmentReflectance: vec3f, #ifdef SS_REFRACTION finalRefraction: vec3f, @@ -19395,7 +19395,7 @@ outParams.refractionIrradiance=refractionIrradiance; #endif return outParams;} #endif -`;x.IncludesShadersStoreWGSL[Gj]||(x.IncludesShadersStoreWGSL[Gj]=tve)});var Wj,ive,zj=y(()=>{W();Wj="pbrBlockNormalFinal",ive=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;x.IncludesShadersStoreWGSL[kj]||(x.IncludesShadersStoreWGSL[kj]=nve)});var zj,sve,Hj=y(()=>{W();zj="pbrBlockNormalFinal",sve=`#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 -`;x.IncludesShadersStoreWGSL[Wj]||(x.IncludesShadersStoreWGSL[Wj]=ive)});var Hj,rve,Xj=y(()=>{W();Hj="pbrBlockLightmapInit",rve=`#ifdef LIGHTMAP +`;x.IncludesShadersStoreWGSL[zj]||(x.IncludesShadersStoreWGSL[zj]=sve)});var Xj,ave,Yj=y(()=>{W();Xj="pbrBlockLightmapInit",ave=`#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 -`;x.IncludesShadersStoreWGSL[Hj]||(x.IncludesShadersStoreWGSL[Hj]=rve)});var Yj,nve,Kj=y(()=>{W();Yj="pbrBlockGeometryInfo",nve=`var NdotVUnclamped: f32=dot(normalW,viewDirectionW);var NdotV: f32=absEps(NdotVUnclamped);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var AARoughnessFactors: vec2f=getAARoughnessFactors(normalW.xyz); +`;x.IncludesShadersStoreWGSL[Xj]||(x.IncludesShadersStoreWGSL[Xj]=ave)});var Kj,ove,jj=y(()=>{W();Kj="pbrBlockGeometryInfo",ove=`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 -`;x.IncludesShadersStoreWGSL[Yj]||(x.IncludesShadersStoreWGSL[Yj]=nve)});var jj,sve,qj=y(()=>{W();jj="pbrBlockReflectance",sve=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) +`;x.IncludesShadersStoreWGSL[Kj]||(x.IncludesShadersStoreWGSL[Kj]=ove)});var qj,lve,Zj=y(()=>{W();qj="pbrBlockReflectance",lve=`#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 -`;x.IncludesShadersStoreWGSL[jj]||(x.IncludesShadersStoreWGSL[jj]=sve)});var Zj,ave,Qj=y(()=>{W();Zj="pbrBlockDirectLighting",ave=`var diffuseBase: vec3f=vec3f(0.,0.,0.); +`;x.IncludesShadersStoreWGSL[qj]||(x.IncludesShadersStoreWGSL[qj]=lve)});var Qj,cve,$j=y(()=>{W();Qj="pbrBlockDirectLighting",cve=`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 -`;x.IncludesShadersStoreWGSL[Zj]||(x.IncludesShadersStoreWGSL[Zj]=ave)});var $j,ove,Jj=y(()=>{W();$j="pbrBlockFinalLitComponents",ove=`aggShadow=aggShadow/numLights; +`;x.IncludesShadersStoreWGSL[Qj]||(x.IncludesShadersStoreWGSL[Qj]=cve)});var Jj,fve,eq=y(()=>{W();Jj="pbrBlockFinalLitComponents",fve=`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 -`;x.IncludesShadersStoreWGSL[$j]||(x.IncludesShadersStoreWGSL[$j]=ove)});var eq,lve,tq=y(()=>{W();eq="pbrBlockFinalUnlitComponents",lve=`var finalDiffuse: vec3f=diffuseBase;finalDiffuse*=surfaceAlbedo; +`;x.IncludesShadersStoreWGSL[Jj]||(x.IncludesShadersStoreWGSL[Jj]=fve)});var tq,dve,iq=y(()=>{W();tq="pbrBlockFinalUnlitComponents",dve=`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; -`;x.IncludesShadersStoreWGSL[eq]||(x.IncludesShadersStoreWGSL[eq]=lve)});var iq,cve,rq=y(()=>{W();iq="pbrBlockFinalColorComposition",cve=`var finalColor: vec4f= vec4f( +`;x.IncludesShadersStoreWGSL[tq]||(x.IncludesShadersStoreWGSL[tq]=dve)});var rq,uve,nq=y(()=>{W();rq="pbrBlockFinalColorComposition",uve=`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)); -`;x.IncludesShadersStoreWGSL[iq]||(x.IncludesShadersStoreWGSL[iq]=cve)});var nq,fve,sq=y(()=>{W();nq="pbrBlockPrePass",fve=`#if SCENE_MRT_COUNT>0 +`;x.IncludesShadersStoreWGSL[rq]||(x.IncludesShadersStoreWGSL[rq]=uve)});var sq,hve,aq=y(()=>{W();sq="pbrBlockPrePass",hve=`#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 -`;x.IncludesShadersStoreWGSL[nq]||(x.IncludesShadersStoreWGSL[nq]=fve)});var oq={};Be(oq,{pbrPixelShaderWGSL:()=>dve});var Hw,aq,dve,lq=y(()=>{W();gb();_b();Ww();sw();vb();Tj();Sb();Bc();Yu();Fv();$a();aw();ow();lw();Tb();Eb();rg();cw();fw();ng();dw();hw();CM();Ab();xb();qv();xj();bj();yj();Cj();Dj();Oj();wj();Bj();Vj();kj();Uc();mw();Rb();zj();bb();Xj();Kj();uw();qj();Qj();SO();Jj();tq();rq();Mb();Bv();pw();sq();yb();gw();Hw="pbrPixelShader",aq=`#define PBR_FRAGMENT_SHADER +`;x.IncludesShadersStoreWGSL[sq]||(x.IncludesShadersStoreWGSL[sq]=hve)});var lq={};Be(lq,{pbrPixelShaderWGSL:()=>mve});var Xw,oq,mve,cq=y(()=>{W();vb();Eb();zw();aw();Sb();Aj();Ab();Bc();Yu();Fv();$a();ow();lw();cw();xb();Tb();rg();fw();dw();ng();uw();mw();DM();Rb();bb();qv();Rj();Mj();Ij();Pj();Lj();Nj();Fj();Uj();Gj();Wj();Uc();pw();Mb();Hj();yb();Yj();jj();hw();Zj();$j();TO();eq();iq();nq();Ib();Bv();gw();aq();Cb();_w();Xw="pbrPixelShader",oq=`#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 } -`;x.ShadersStoreWGSL[Hw]||(x.ShadersStoreWGSL[Hw]=aq);dve={name:Hw,shader:aq}});var cq,uve,fq=y(()=>{W();Ib();cq="pbrVertexDeclaration",uve=`uniform mat4 view;uniform mat4 viewProjection;uniform vec4 vEyePosition; +`;x.ShadersStoreWGSL[Xw]||(x.ShadersStoreWGSL[Xw]=oq);mve={name:Xw,shader:oq}});var fq,pve,dq=y(()=>{W();Pb();fq="pbrVertexDeclaration",pve=`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 -`;x.IncludesShadersStore[cq]||(x.IncludesShadersStore[cq]=uve)});var dq,hve,Xw=y(()=>{W();ju();Zv();dq="pbrUboDeclaration",hve=`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; +`;x.IncludesShadersStore[fq]||(x.IncludesShadersStore[fq]=pve)});var uq,gve,Yw=y(()=>{W();ju();Zv();uq="pbrUboDeclaration",gve=`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 -`;x.IncludesShadersStore[dq]||(x.IncludesShadersStore[dq]=hve)});var hq={};Be(hq,{pbrVertexShader:()=>mve});var Yw,uq,mve,mq=y(()=>{W();fq();Xw();Cb();jp();Ja();tg();Vc();Gc();md();Pb();Db();ig();xO();kc();Uv();Lb();Ob();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Nb();wb();Fb();Bb();Xc();Vv();Ub();Gv();Vb();Yw="pbrVertexShader",uq=`#define PBR_VERTEX_SHADER +`;x.IncludesShadersStore[uq]||(x.IncludesShadersStore[uq]=gve)});var mq={};Be(mq,{pbrVertexShader:()=>_ve});var Kw,hq,_ve,pq=y(()=>{W();dq();Yw();Db();jp();Ja();tg();Vc();Gc();md();Lb();Ob();ig();RO();kc();Uv();Nb();wb();Sd();Td();qu();Ad();xd();Wc();zc();Hc();Fb();Bb();Ub();Vb();Xc();Vv();Gb();Gv();kb();Kw="pbrVertexShader",hq=`#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 } -`;x.ShadersStore[Yw]||(x.ShadersStore[Yw]=uq);mve={name:Yw,shader:uq}});var pq,pve,gq=y(()=>{W();Gb();pq="pbrFragmentDeclaration",pve=`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; +`;x.ShadersStore[Kw]||(x.ShadersStore[Kw]=hq);_ve={name:Kw,shader:hq}});var gq,vve,_q=y(()=>{W();Wb();gq="pbrFragmentDeclaration",vve=`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 -`;x.IncludesShadersStore[pq]||(x.IncludesShadersStore[pq]=pve)});var _q,gve,vq=y(()=>{W();_q="samplerFragmentAlternateDeclaration",gve=`#ifdef _DEFINENAME_ +`;x.IncludesShadersStore[gq]||(x.IncludesShadersStore[gq]=vve)});var vq,Eve,Eq=y(()=>{W();vq="samplerFragmentAlternateDeclaration",Eve=`#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 -`;x.IncludesShadersStore[_q]||(x.IncludesShadersStore[_q]=gve)});var Eq,_ve,Sq=y(()=>{W();Zu();vq();MM();Eq="pbrFragmentSamplersDeclaration",_ve=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;x.IncludesShadersStore[vq]||(x.IncludesShadersStore[vq]=Eve)});var Sq,Sve,Tq=y(()=>{W();Zu();Eq();IM();Sq="pbrFragmentSamplersDeclaration",Sve=`#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 -`;x.IncludesShadersStore[Eq]||(x.IncludesShadersStore[Eq]=_ve)});var Tq,vve,Aq=y(()=>{W();IO();Tq="pbrBlockAlbedoOpacity",vve=`struct albedoOpacityOutParams +`;x.IncludesShadersStore[Sq]||(x.IncludesShadersStore[Sq]=Sve)});var Aq,Tve,xq=y(()=>{W();CO();Aq="pbrBlockAlbedoOpacity",Tve=`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;} -`;x.IncludesShadersStore[Tq]||(x.IncludesShadersStore[Tq]=vve)});var xq,Eve,Rq=y(()=>{W();xq="pbrBlockReflectivity",Eve=`struct reflectivityOutParams +`;x.IncludesShadersStore[Aq]||(x.IncludesShadersStore[Aq]=Tve)});var Rq,Ave,bq=y(()=>{W();Rq="pbrBlockReflectivity",Ave=`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;} -`;x.IncludesShadersStore[xq]||(x.IncludesShadersStore[xq]=Eve)});var bq,Sve,Mq=y(()=>{W();bq="pbrBlockAmbientOcclusion",Sve=`struct ambientOcclusionOutParams +`;x.IncludesShadersStore[Rq]||(x.IncludesShadersStore[Rq]=Ave)});var Mq,xve,yq=y(()=>{W();Mq="pbrBlockAmbientOcclusion",xve=`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;} -`;x.IncludesShadersStore[bq]||(x.IncludesShadersStore[bq]=Sve)});var yq,Tve,Iq=y(()=>{W();yq="pbrBlockAlphaFresnel",Tve=`#ifdef ALPHAFRESNEL +`;x.IncludesShadersStore[Mq]||(x.IncludesShadersStore[Mq]=xve)});var Iq,Rve,Cq=y(()=>{W();Iq="pbrBlockAlphaFresnel",Rve=`#ifdef ALPHAFRESNEL #if defined(ALPHATEST) || defined(ALPHABLEND) struct alphaFresnelOutParams {float alpha;}; @@ -21202,7 +21202,7 @@ outParams.alpha=1.0; return outParams;} #endif #endif -`;x.IncludesShadersStore[yq]||(x.IncludesShadersStore[yq]=Tve)});var Cq,Ave,Pq=y(()=>{W();Cq="pbrBlockAnisotropic",Ave=`#ifdef ANISOTROPIC +`;x.IncludesShadersStore[Iq]||(x.IncludesShadersStore[Iq]=Rve)});var Pq,bve,Dq=y(()=>{W();Pq="pbrBlockAnisotropic",bve=`#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 -`;x.IncludesShadersStore[Cq]||(x.IncludesShadersStore[Cq]=Ave)});var Dq,xve,Lq=y(()=>{W();Dq="pbrBlockReflection",xve=`#ifdef REFLECTION +`;x.IncludesShadersStore[Pq]||(x.IncludesShadersStore[Pq]=bve)});var Lq,Mve,Oq=y(()=>{W();Lq="pbrBlockReflection",Mve=`#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 -`;x.IncludesShadersStore[Dq]||(x.IncludesShadersStore[Dq]=xve)});var Oq,Rve,Nq=y(()=>{W();Oq="pbrBlockSheen",Rve=`#ifdef SHEEN +`;x.IncludesShadersStore[Lq]||(x.IncludesShadersStore[Lq]=Mve)});var Nq,yve,wq=y(()=>{W();Nq="pbrBlockSheen",yve=`#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 -`;x.IncludesShadersStore[Oq]||(x.IncludesShadersStore[Oq]=Rve)});var wq,bve,Fq=y(()=>{W();wq="pbrBlockClearcoat",bve=`struct clearcoatOutParams +`;x.IncludesShadersStore[Nq]||(x.IncludesShadersStore[Nq]=yve)});var Fq,Ive,Bq=y(()=>{W();Fq="pbrBlockClearcoat",Ive=`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 -`;x.IncludesShadersStore[wq]||(x.IncludesShadersStore[wq]=bve)});var Bq,Mve,Uq=y(()=>{W();Bq="pbrBlockIridescence",Mve=`struct iridescenceOutParams +`;x.IncludesShadersStore[Fq]||(x.IncludesShadersStore[Fq]=Ive)});var Uq,Cve,Vq=y(()=>{W();Uq="pbrBlockIridescence",Cve=`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 -`;x.IncludesShadersStore[Bq]||(x.IncludesShadersStore[Bq]=Mve)});var Vq,yve,Gq=y(()=>{W();Vq="pbrBlockSubSurface",yve=`struct subSurfaceOutParams +`;x.IncludesShadersStore[Uq]||(x.IncludesShadersStore[Uq]=Cve)});var Gq,Pve,kq=y(()=>{W();Gq="pbrBlockSubSurface",Pve=`struct subSurfaceOutParams {vec3 specularEnvironmentReflectance; #ifdef SS_REFRACTION vec3 finalRefraction;vec3 surfaceAlbedo; @@ -22371,11 +22371,11 @@ outParams.refractionIrradiance=refractionIrradiance.rgb; #endif return outParams;} #endif -`;x.IncludesShadersStore[Vq]||(x.IncludesShadersStore[Vq]=yve)});var kq,Ive,Kw=y(()=>{W();kq="pbrBlockReflectance0",Ive=`float reflectanceF0=reflectivityOut.reflectanceF0;vec3 specularEnvironmentR0=reflectivityOut.colorReflectanceF0;vec3 specularEnvironmentR90=reflectivityOut.colorReflectanceF90; +`;x.IncludesShadersStore[Gq]||(x.IncludesShadersStore[Gq]=Pve)});var Wq,Dve,jw=y(()=>{W();Wq="pbrBlockReflectance0",Dve=`float reflectanceF0=reflectivityOut.reflectanceF0;vec3 specularEnvironmentR0=reflectivityOut.colorReflectanceF0;vec3 specularEnvironmentR90=reflectivityOut.colorReflectanceF90; #ifdef ALPHAFRESNEL float reflectance90=fresnelGrazingReflectance(reflectanceF0);specularEnvironmentR90=specularEnvironmentR90*reflectance90; #endif -`;x.IncludesShadersStore[kq]||(x.IncludesShadersStore[kq]=Ive)});var Wq,Cve,zq=y(()=>{W();yO();Kw();Wq="pbrClusteredLightingFunctions",Cve=`#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 +`;x.IncludesShadersStore[Wq]||(x.IncludesShadersStore[Wq]=Dve)});var zq,Lve,Hq=y(()=>{W();IO();jw();zq="pbrClusteredLightingFunctions",Lve=`#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 -`;x.IncludesShadersStore[Wq]||(x.IncludesShadersStore[Wq]=Cve)});var Hq,Pve,Xq=y(()=>{W();Hq="pbrBlockNormalFinal",Pve=`#if defined(FORCENORMALFORWARD) && defined(NORMAL) +`;x.IncludesShadersStore[zq]||(x.IncludesShadersStore[zq]=Lve)});var Xq,Ove,Yq=y(()=>{W();Xq="pbrBlockNormalFinal",Ove=`#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 -`;x.IncludesShadersStore[Hq]||(x.IncludesShadersStore[Hq]=Pve)});var Yq,Dve,Kq=y(()=>{W();Yq="pbrBlockLightmapInit",Dve=`#ifdef LIGHTMAP +`;x.IncludesShadersStore[Xq]||(x.IncludesShadersStore[Xq]=Ove)});var Kq,Nve,jq=y(()=>{W();Kq="pbrBlockLightmapInit",Nve=`#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 -`;x.IncludesShadersStore[Yq]||(x.IncludesShadersStore[Yq]=Dve)});var jq,Lve,qq=y(()=>{W();jq="pbrBlockGeometryInfo",Lve=`float NdotVUnclamped=dot(normalW,viewDirectionW);float NdotV=absEps(NdotVUnclamped);float alphaG=convertRoughnessToAverageSlope(roughness);vec2 AARoughnessFactors=getAARoughnessFactors(normalW.xyz); +`;x.IncludesShadersStore[Kq]||(x.IncludesShadersStore[Kq]=Nve)});var qq,wve,Zq=y(()=>{W();qq="pbrBlockGeometryInfo",wve=`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 -`;x.IncludesShadersStore[jq]||(x.IncludesShadersStore[jq]=Lve)});var Zq,Ove,Qq=y(()=>{W();Zq="pbrBlockReflectance",Ove=`#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX) +`;x.IncludesShadersStore[qq]||(x.IncludesShadersStore[qq]=wve)});var Qq,Fve,$q=y(()=>{W();Qq="pbrBlockReflectance",Fve=`#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 -`;x.IncludesShadersStore[Zq]||(x.IncludesShadersStore[Zq]=Ove)});var $q,Nve,Jq=y(()=>{W();$q="pbrBlockDirectLighting",Nve=`vec3 diffuseBase=vec3(0.,0.,0.); +`;x.IncludesShadersStore[Qq]||(x.IncludesShadersStore[Qq]=Fve)});var Jq,Bve,eZ=y(()=>{W();Jq="pbrBlockDirectLighting",Bve=`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 -`;x.IncludesShadersStore[$q]||(x.IncludesShadersStore[$q]=Nve)});var eZ,wve,tZ=y(()=>{W();eZ="pbrBlockFinalLitComponents",wve=`aggShadow=aggShadow/numLights; +`;x.IncludesShadersStore[Jq]||(x.IncludesShadersStore[Jq]=Bve)});var tZ,Uve,iZ=y(()=>{W();tZ="pbrBlockFinalLitComponents",Uve=`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 -`;x.IncludesShadersStore[eZ]||(x.IncludesShadersStore[eZ]=wve)});var iZ,Fve,rZ=y(()=>{W();iZ="pbrBlockFinalUnlitComponents",Fve=`vec3 finalDiffuse=diffuseBase;finalDiffuse*=surfaceAlbedo; +`;x.IncludesShadersStore[tZ]||(x.IncludesShadersStore[tZ]=Uve)});var rZ,Vve,nZ=y(()=>{W();rZ="pbrBlockFinalUnlitComponents",Vve=`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; -`;x.IncludesShadersStore[iZ]||(x.IncludesShadersStore[iZ]=Fve)});var nZ,Bve,sZ=y(()=>{W();nZ="pbrBlockFinalColorComposition",Bve=`vec4 finalColor=vec4( +`;x.IncludesShadersStore[rZ]||(x.IncludesShadersStore[rZ]=Vve)});var sZ,Gve,aZ=y(()=>{W();sZ="pbrBlockFinalColorComposition",Gve=`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); -`;x.IncludesShadersStore[nZ]||(x.IncludesShadersStore[nZ]=Bve)});var aZ,Uve,oZ=y(()=>{W();aZ="pbrBlockPrePass",Uve=`#if SCENE_MRT_COUNT>0 +`;x.IncludesShadersStore[sZ]||(x.IncludesShadersStore[sZ]=Gve)});var oZ,kve,lZ=y(()=>{W();oZ="pbrBlockPrePass",kve=`#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 -`;x.IncludesShadersStore[aZ]||(x.IncludesShadersStore[aZ]=Uve)});var cZ={};Be(cZ,{pbrPixelShader:()=>Vve});var jw,lZ,Vve,fZ=y(()=>{W();kb();Wb();gq();Xw();Sw();zb();Hb();Sq();Yb();Yc();qu();kv();Ja();Tw();Aw();xw();Kb();Xb();ig();Rw();bw();tg();Mw();yw();yM();jb();qb();Qv();Aq();Rq();Mq();Iq();Pq();Lq();Nq();Fq();Uq();Gq();zq();Kc();Iw();Zb();Xq();Qb();Kq();qq();Kw();Qq();Jq();CO();tZ();rZ();sZ();$b();Wv();Cw();oZ();Jb();Pw();jw="pbrPixelShader",lZ=`#define PBR_FRAGMENT_SHADER +`;x.IncludesShadersStore[oZ]||(x.IncludesShadersStore[oZ]=kve)});var fZ={};Be(fZ,{pbrPixelShader:()=>Wve});var qw,cZ,Wve,dZ=y(()=>{W();zb();Hb();_q();Yw();Tw();Xb();Yb();Tq();jb();Yc();qu();kv();Ja();Aw();xw();Rw();qb();Kb();ig();bw();Mw();tg();yw();Iw();CM();Zb();Qb();Qv();xq();bq();yq();Cq();Dq();Oq();wq();Bq();Vq();kq();Hq();Kc();Cw();$b();Yq();Jb();jq();Zq();jw();$q();eZ();PO();iZ();nZ();aZ();eM();Wv();Pw();lZ();tM();Dw();qw="pbrPixelShader",cZ=`#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 } -`;x.ShadersStore[jw]||(x.ShadersStore[jw]=lZ);Vve={name:jw,shader:lZ}});var ag,qw,DM,Zw,Cr,dZ=y(()=>{Xt();zt();Lt();Oo();RM();Ks();We();Yi();lj();$R();Kt();JR();dv();ts();ro();Dv();to();RD();fd();cj();fj();dj();uj();hj();hO();Ol();Lv();es();eb();tb();ib();rb();ag={effect:null,subMesh:null},qw=class extends Xp(Hp(Lr)){},DM=class extends Wp(qw){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}},Zw=class extends Yp(Bl){},Cr=class n extends Zw{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 Oi(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=Ee.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new Ee(0,0,0),this._albedoColor=new Ee(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new Ee(1,1,1),this._reflectionColor=new Ee(1,1,1),this._emissiveColor=new Ee(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 Ki(16),this._globalAmbientColor=new Ee(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 Fr(this),this.clearCoat=new _n(this),this.iridescence=new ta(this),this.anisotropy=new Qc(this),this.sheen=new ba(this),this.subSurface=new Ci(this),this.detailMap=new no(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),fe.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=xM(this.getScene()),this.prePassConfiguration=new Js}get hasRenderTargetTextures(){return fe.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 u;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 DM(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&&fe.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&fe.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&fe.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let h=this._getReflectionTexture();if(h&&fe.ReflectionTextureEnabled){if(!h.isReadyOrNotBlocking())return!1;if(h.irradianceTexture){if(!h.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!h.sphericalPolynomial&&((u=h.getInternalTexture())!=null&&u._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&fe.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&fe.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(fe.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&&fe.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&fe.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 h=0;h{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Yt&&(Yt.PrepareUniforms(m,i),Yt.PrepareSamplers(g,i)),Dp({uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,i,u,v));let E=i.toString(),T=c.createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:f,onCompiled:r,onError:s,indexParameters:_,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(()=>(_j(),gj)),Promise.resolve().then(()=>(lq(),oq))]):await Promise.all([Promise.resolve().then(()=>(mq(),hq)),Promise.resolve().then(()=>(fZ(),cZ))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,T}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();bp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Ip(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(o,i,this.canRenderToMRT&&!c),Cp(o,i,c),ss.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&&fe.DiffuseTextureEnabled?(si(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&fe.BaseWeightTextureEnabled?si(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled?si(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&fe.AmbientTextureEnabled?(si(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&fe.OpacityTextureEnabled?(si(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;id(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&fe.LightmapTextureEnabled?(si(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&fe.EmissiveTextureEnabled?(si(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,fe.SpecularTextureEnabled?(this._metallicTexture?(si(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?(si(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?(si(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(si(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?si(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&fe.BumpTextureEnabled&&!this._disableBumpMap?(si(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&fe.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&&fe.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&&(xp(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(L.NormalKind),i.DEBUGMODE=this._debugMode),Mp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),yp(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 DM(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(ag.effect=o,ag.subMesh=null,this._onEffectCreatedObservable.notifyObservers(ag)),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),Lp(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var u,h,m,g;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),ss.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);qs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&ud(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&&fe.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),ai(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),ai(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),ai(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&fe.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),ai(this._ambientTexture,d,"ambient")),this._opacityTexture&&fe.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ai(this._opacityTexture,d,"opacity")),this._emissiveTexture&&fe.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ai(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&fe.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ai(this._lightmapTexture,d,"lightmap")),fe.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),ai(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),ai(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),ai(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),ai(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),ai(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&fe.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),ai(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)),_p(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Ln.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Ln.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(h=(u=this.subSurface)==null?void 0:u._indexOfRefraction)!=null?h:1.5,_=1;Ln.Color4[0].b=p;let v=Math.pow((p-_)/(p+_),2);Ln.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Ln.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",fe.EmissiveTextureEnabled?this._emissiveColor:Ee.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&&fe.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&fe.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&fe.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),FR(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&fe.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&fe.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),fe.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&&fe.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),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Ep(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ri.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),ed(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((g=t.bakedVertexAnimationManager)==null||g.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Jf(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,u,h,m,g,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(),(u=this._bumpTexture)==null||u.dispose(),(h=this._lightmapTexture)==null||h.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(g=this._reflectanceTexture)==null||g.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};Cr.PBRMATERIAL_OPAQUE=Ae.MATERIAL_OPAQUE;Cr.PBRMATERIAL_ALPHATEST=Ae.MATERIAL_ALPHATEST;Cr.PBRMATERIAL_ALPHABLEND=Ae.MATERIAL_ALPHABLEND;Cr.PBRMATERIAL_ALPHATESTANDBLEND=Ae.MATERIAL_ALPHATESTANDBLEND;Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;Cr.LIGHTFALLOFF_PHYSICAL=0;Cr.LIGHTFALLOFF_GLTF=1;Cr.LIGHTFALLOFF_STANDARD=2;Cr.ForceGLSL=!1;P([ce("_markAllSubMeshesAsMiscDirty")],Cr.prototype,"debugMode",void 0)});var uZ={};Be(uZ,{PBRMaterial:()=>pt});var pt,hZ=y(()=>{Xt();zt();RM();Kt();dZ();er();ts();Dr();pt=class n extends Cr{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===Cr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_GLTF:this._lightFalloff=Cr.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=Ee.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new Ee(0,0,0),this.albedoColor=new Ee(1,1,1),this.baseWeight=1,this.reflectivityColor=new Ee(1,1,1),this.reflectionColor=new Ee(1,1,1),this.emissiveColor=new Ee(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=xM(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._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}};pt.PBRMATERIAL_OPAQUE=Cr.PBRMATERIAL_OPAQUE;pt.PBRMATERIAL_ALPHATEST=Cr.PBRMATERIAL_ALPHATEST;pt.PBRMATERIAL_ALPHABLEND=Cr.PBRMATERIAL_ALPHABLEND;pt.PBRMATERIAL_ALPHATESTANDBLEND=Cr.PBRMATERIAL_ALPHATESTANDBLEND;pt.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"directIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"specularIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"disableBumpMap",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeightTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughnessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureStrength",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"opacityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallic",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"roughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicF0Factor",void 0);P([yr(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceColor",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurfaceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"bumpTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty",null)],pt.prototype,"lightmapTexture",void 0);P([yr("ambient"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientColor",void 0);P([yr("albedo"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoColor",void 0);P([F("baseWeight"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughness",void 0);P([yr("reflectivity"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityColor",void 0);P([yr("reflection"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionColor",void 0);P([yr("emissive"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveColor",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurface",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLightmapAsShadowmap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"forceAlphaTest",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"alphaCutOff",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useSpecularOverAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientInGrayScale",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],pt.prototype,"usePhysicalLightFalloff",null);P([F()],pt.prototype,"useGLTFLightFalloff",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOverAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useObjectSpaceNormalMap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallax",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallaxOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"parallaxScaleBias",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],pt.prototype,"disableLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceIrradianceInFragment",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],pt.prototype,"maxSimultaneousLights",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapX",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"twoSidedLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAlphaFresnel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLinearAlphaFresnel",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentBRDFTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceNormalForward",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"enableSpecularAntiAliasing",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useHorizonOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],pt.prototype,"unlit",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],pt.prototype,"applyDecalMapAfterDetailMap",void 0);Bt("BABYLON.PBRMaterial",pt)});var mZ={};Be(mZ,{PBRMaterialLoadingAdapter:()=>Qw});var Qw,pZ=y(()=>{Kt();PN();We();Qw=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=z.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=z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=z.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!=Ee.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 Ee(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 Ee(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 Ee(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:Ee.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 Wve(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 Rn(i,r)}return null}var Gve,kve,Jt,LM,gZ=y(()=>{L6();We();Kt();Ni();Dl();V6();gM();k6();ts();Xr();$f();Yi();OR();pp();wi();yN();z6();MN();gc();Lt();hp();CN();DN();K6();ip();j6();Gve=new aE(()=>Promise.resolve().then(()=>(J6(),$6))),kve=new aE(()=>Promise.resolve().then(()=>(r7(),i7))),Jt=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 u=c[d];if(u===void 0)throw new Error(`Failed to find node '${d}'`);return u})}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(()=>(sj(),nj))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(oj(),aj))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(hZ(),uZ))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(pZ(),mZ))).PBRMaterialLoadingAdapter});let s=`${bs[bs.LOADING]} => ${bs[bs.READY]}`,a=`${bs[bs.LOADING]} => ${bs[bs.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(bs.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=Jt.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(bs.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),pe.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(bs.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(Jt.Assign(this._gltf.accessors),Jt.Assign(this._gltf.animations),Jt.Assign(this._gltf.buffers),Jt.Assign(this._gltf.bufferViews),Jt.Assign(this._gltf.cameras),Jt.Assign(this._gltf.images),Jt.Assign(this._gltf.materials),Jt.Assign(this._gltf.meshes),Jt.Assign(this._gltf.nodes),Jt.Assign(this._gltf.samplers),Jt.Assign(this._gltf.scenes),Jt.Assign(this._gltf.skins),Jt.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(H6.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 Q("__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 Jp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case Jp.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=Jt.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 Ir&&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 Ju.NONE:break;case Ju.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case Ju.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=Jt.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=Jt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,u=>{u.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 $t(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=Jt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=LN(d.metadata,f.metadata||{});let u=Jt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${u.index}`,t,u,h=>{this._forEachPrimitive(t,m=>{m.skeleton=h}),this._postSceneLoadActions.push(()=>{if(u.skeleton!=null){let m=Jt.Get(`/skins/${u.index}/skeleton`,this._gltf.nodes,u.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=Jt.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&&Jt.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 $t(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 u=new Q(t,this._babylonScene);if(u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,u.sideOrientation=this._babylonScene.useRightHandedSystem?Ae.CounterClockWiseSideOrientation:Ae.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,u),d.push(this._loadVertexDataAsync(e,s,u).then(async h=>await this._loadMorphTargetsAsync(e,s,u,h).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,h.applyToMesh(u),h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let h=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[h];m||(m=this._createDefaultMaterial("__GLTFLoader._default",h),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[h]=m),u.material=m}else{let m=Jt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,u,h,g=>{u.material=g}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:u,promise:f}),c=u}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 bn(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=Jt.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 u=Jt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${u.index}`,u,f).then(h=>{if(h.getKind()===L.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=Wve(u);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(h,u.count)})),f==L.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(u)};return l("POSITION",L.PositionKind),l("NORMAL",L.NormalKind),l("TANGENT",L.TangentKind),l("TEXCOORD_0",L.UVKind),l("TEXCOORD_1",L.UV2Kind),l("TEXCOORD_2",L.UV3Kind),l("TEXCOORD_3",L.UV4Kind),l("TEXCOORD_4",L.UV5Kind),l("TEXCOORD_5",L.UV6Kind),l("JOINTS_0",L.MatricesIndicesKind),l("WEIGHTS_0",L.MatricesWeightsKind),l("JOINTS_1",L.MatricesIndicesExtraKind),l("WEIGHTS_1",L.MatricesWeightsExtraKind),l("COLOR_0",L.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 rh(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=Jt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(u=>{c(f,u)}))};return a("POSITION",L.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",L.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",L.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,u)=>{(u+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",L.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",L.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",L.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,u)=>{let h=Math.floor(u/3),m=u%3;c[4*h+m]=l[3*h+m]+d});for(let d=0;d{c[u]=l[u]+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=je.Identity(),s=b.One();e.matrix?Z.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=je.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 _M(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=Jt.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=Jt.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=Jt.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 ao(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=Jt.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=Z.Identity(),s=i._index;t&&s!==-1&&(Z.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?Z.FromArray(e.matrix):Z.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?je.FromArray(e.rotation):je.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 Zc(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=_t.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||Gve.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;Jt.Assign(t.channels),Jt.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=Jt.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():kve.value.then(()=>{var u,h,m,g;let f;switch(l){case"translation":{f=(u=nE("/nodes/{}/translation"))==null?void 0:u.interpolation;break}case"rotation":{f=(h=nE("/nodes/{}/rotation"))==null?void 0:h.interpolation;break}case"scale":{f=(m=nE("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(g=nE("/nodes/{}/weights"))==null?void 0:g.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=Jt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,u=s.object,h=s.info;for(let m of h){let g=m.getStride(u),p=f.input,_=f.output,v=new Array(p.length),E=0;switch(f.interpolation){case"STEP":{for(let T=0;T0){let T=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,S=m.buildAnimations(u,T,o,v);for(let A of S)d++,a(A.babylonAnimatable,A.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=Jt.Get(`${e}/input`,this._gltf.accessors,t.input),s=Jt.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=Jt.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*L.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=Jt.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 L.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=Jt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=Jt.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(([u,h])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,u,o.indices.byteOffset,o.count),g=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,h,o.values.byteOffset,g);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,h,o.values.byteOffset,g);p=new i(g),L.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(E,T)=>{p[T]=E})}let _=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 Do(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 L(r,a,i,!1));else{let a=Jt.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 L(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=Ee.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=Ee.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?Ee.FromArray(t.emissiveFactor):new Ee(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=Jt.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:Jt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=Jt.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,g;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new mM;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,_)=>{this._disposed||c.reject(new Error(`${e}: ${_&&_.message?_.message:p||"Failed to load texture"}`))},mimeType:(g=i.mimeType)!=null?g:PG((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 u=i.uri&&!Wf(i.uri)?i.uri:void 0,h=u!=null?u:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let _=`data:${this._uniqueRootUrl}${h}`;d.updateURL(_,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||u||`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=Jt.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(Wf(i)){let s=new Uint8Array(zf(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 rp(`${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 IP(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=L.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 pe.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Ae.PointListDrawMode;case 1:return Ae.LineListDrawMode;case 2:return Ae.LineLoopDrawMode;case 3:return Ae.LineStripDrawMode;case 4:return Ae.TriangleFillMode;case 5:return Ae.TriangleStripDrawMode;case 6:return Ae.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)}};LM.DefaultSampler={index:-1};Md._CreateGLTF2Loader=n=>new LM(n)});var Jw,$w,_Z=y(()=>{CN();Jw="ExtrasAsMetadata",$w=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=Jw,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))}};rE(Jw);EM(Jw,!1,n=>new $w(n))});var OM,vZ=y(()=>{OM={name:"obj",extensions:".obj"}});var nh,EZ=y(()=>{Kt();Xr();jc();nh=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;u=u.toLowerCase();let h=d>=0?f.substring(d+1).trim():"";if(u==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new ze(h,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(u==="kd"&&l)o=h.split(a,3).map(parseFloat),l.diffuseColor=Ee.FromArray(o);else if(u==="ka"&&l)o=h.split(a,3).map(parseFloat),l.ambientColor=Ee.FromArray(o);else if(u==="ks"&&l)o=h.split(a,3).map(parseFloat),l.specularColor=Ee.FromArray(o);else if(u==="ke"&&l)o=h.split(a,3).map(parseFloat),l.emissiveColor=Ee.FromArray(o);else if(u==="ns"&&l)l.specularPower=parseFloat(h);else if(u==="d"&&l)l.alpha=parseFloat(h);else if(u==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,h,e);else if(u==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,h,e);else if(u==="map_ks"&&l)l.specularTexture=n._GetTexture(i,h,e);else if(u!=="map_ns")if(u==="map_bump"&&l){let m=h.split(a),g=m.indexOf("-bm"),p=null;g>=0&&(p=m[g+1],m.splice(g,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else u==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,h,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)}};nh.INVERT_TEXTURE_Y=!0});var nn,SZ=y(()=>{Yi();jc();Kt();We();OR();wi();Ar();Lt();nn=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 dt(.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(L.PositionKind),i=e.getVerticesData(L.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(u[0],u[h],u[h+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(u,h)=>this._triangles.push(u[0],u[h+1],u[h]),this._handednessSign=1):(this._pushTriangle=(u,h)=>this._triangles.push(u[0],u[h],u[h+1]),this._handednessSign=-1);let a=t.split(` -`),o=[],l=[];o.push(l);for(let u=0;u=7){let g=parseFloat(m[4]),p=parseFloat(m[5]),_=parseFloat(m[6]);this._colors.push(new dt(g>1?g/255:g,p>1?p/255:p,_>1?_/255:_,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(h))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(h))!==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(h))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(h))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(h))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(h))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(h))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(h))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(h))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(h,!this._loadingOptions.importVertexColors))for(let g of m)this._extColors.push(g);else if((m=n.LinePattern3.exec(h))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(h)||n.ObjectDescriptor.test(h)){let g={name:h.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(h)};this._addPreviousObjMesh(),this._meshesFromObj.push(g),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(h)){if(this._materialNameFromObj=h.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let g={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(g),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(h)?s(h.substring(7).trim()):n.SmoothDescriptor.test(h)||ee.Log("Unhandled expression at line : "+h)}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 u=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let h of this._positions)this._unwrappedPositionsForBabylon.push(h.x,h.y,h.z);if(this._normals.length)for(let h of this._normals)this._unwrappedNormalsForBabylon.push(h.x,h.y,h.z);if(this._uvs.length)for(let h of this._uvs)this._unwrappedUVForBabylon.push(h.x,h.y);if(this._extColors.length)for(let h of this._extColors)this._unwrappedColorsForBabylon.push(h.r,h.g,h.b,h.a);else if(this._colors.length)for(let h of this._colors)this._unwrappedColorsForBabylon.push(h.r,h.g,h.b,h.a);this._materialNameFromObj||(u=new ze(bn.RandomId(),i),u.pointsCloud=!0,this._materialNameFromObj=u.name,this._normals.length||(u.disableLighting=!0,u.emissiveColor=Ee.White()))}this._meshesFromObj.push({name:bn.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:u,isObject:!0,hasLines:this._hasLineData})}for(let u=0;u=0;--g)if(this._meshesFromObj[g].isObject&&this._meshesFromObj[g]._babylonMesh){h.parent=this._meshesFromObj[g]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[u].materialName),this._handledMesh.hasLines&&((f=h._internalMetadata)!=null||(h._internalMetadata={}),h._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(h);continue}let m=new Me;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let g=new Array;Me.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,g),m.normals=g}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(h),this._loadingOptions.invertY&&(h.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(h),this._babylonMeshesArray.push(h),this._handledMesh.directMaterial&&(h.material=this._handledMesh.directMaterial)}}};nn.ObjectDescriptor=/^o/;nn.GroupDescriptor=/^g/;nn.MtlLibGroupDescriptor=/^mtllib /;nn.UseMtlDescriptor=/^usemtl /;nn.SmoothDescriptor=/^s /;nn.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;nn.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;nn.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;nn.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;nn.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;nn.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;nn.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;nn.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var TZ={};Be(TZ,{OBJFileLoader:()=>Ma});var Ma,eF=y(()=>{We();Ni();Qp();eE();vZ();EZ();SZ();jc();Ma=class n{static get INVERT_TEXTURE_Y(){return nh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){nh.INVERT_TEXTURE_Y=e}constructor(e){this.name=OM.name,this.extensions=OM.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;pe.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[OM.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 Vl(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 nh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new nn(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,u)=>{this._loadMTL(s,r,h=>{try{a.parseMTL(t,h,r,this._assetContainer);for(let m=0;m-1;)p.push(_),g=_+1;if(_===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{pe.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():u(m)})})),Promise.all(f).then(()=>{let d=u=>{var h,m;return!!((m=(h=u._internalMetadata)==null?void 0:h._isLine)!=null&&m)};return l.forEach(u=>{var h,m;if(d(u)){let g=(h=u.material)!=null?h:new ze(u.name+"_line",t);g.getBindedMeshes().filter(_=>!d(_)).length>0&&(g=(m=g.clone(g.name+"_line"))!=null?m:g),g.wireframe=!0,u.material=g,u._internalMetadata&&(u._internalMetadata._isLine=void 0)}}),l})}};Ma.OPTIMIZE_WITH_UV=!0;Ma.INVERT_Y=!1;Ma.IMPORT_VERTEX_COLORS=!1;Ma.COMPUTE_NORMALS=!1;Ma.OPTIMIZE_NORMALS=!1;Ma.UV_SCALING=new Fe(1,1);Ma.SKIP_MATERIALS=!1;Ma.MATERIAL_LOADING_FAILS_SILENTLY=!0;Ma.USE_LEGACY_BEHAVIOR=!1;bd(new Ma)});function zve(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function tF(n,e){if(zve(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function NM(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function xZ(){if(AZ)return;let n=i=>tF(i,"asset loading"),e=i=>tF(i,"script loading"),t=()=>-1;pe.PreprocessUrl=n,pe.ScriptPreprocessUrl=e,pe.DefaultRetryStrategy=t,pe.LoadScript=(i,r,s)=>{try{e(i),NM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},pe.LoadScriptAsync=async i=>{e(i),NM(i)},pe.LoadBabylonScript=(i,r,s)=>{try{NM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},pe.LoadBabylonScriptAsync=async i=>{NM(i)},qi.PreprocessUrl=n,qi.ScriptPreprocessUrl=e,qi.DefaultRetryStrategy=t,wr.CustomRequestModifiers.push((i,r)=>tF(r,"request")),AZ=!0}var AZ,RZ=y(()=>{"use strict";gc();Ni();Cu();AZ=!1});function wM(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let g=new TextDecoder().decode(new Uint8Array(e,0,6));if(g==="solid "||g===`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=g*12;l[B+0]=k,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=k,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=k,l[B+9]=O,l[B+10]=N,l[B+11]=1}let E=a[p+3]-a[p+0],T=a[p+4]-a[p+1],S=a[p+5]-a[p+2],A=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],I=T*M-S*R,C=S*A-E*M,D=E*R-T*A,w=Math.sqrt(I*I+C*C+D*D);w>1e-8?(I/=w,C/=w,D/=w):(I=0,C=0,D=1,f++),o[p+0]=I,o[p+1]=C,o[p+2]=D,o[p+3]=I,o[p+4]=C,o[p+5]=D,o[p+6]=I,o[p+7]=C,o[p+8]=D,c[_+0]=p/3+0,c[_+1]=p/3+1,c[_+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let u=new Me;u.positions=a,u.normals=o,u.indices=c,l&&(u.colors=l);let h=new Q("stl-model",n);u.applyToMesh(h);let m=new ze("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new Ee(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new Ee(1,1,1),m.emissiveColor=new Ee(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new Ee(.85,.85,.85),m.emissiveColor=new Ee(.1,.1,.1)),h.material=m,h}function bZ(n,e){return wM(n,e)}function MZ(n){n(Hve)}var Hve,iF=y(()=>{"use strict";wi();eE();Ar();jc();Kt();Hve={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[wM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{wM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=wM(n,e),i=new Vl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function Xve(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 og(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 FM(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 Yve(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(h=>h.name==="x"),u=c.properties.some(h=>h.name==="red"||h.name==="r");for(let h=0;hu.name==="vertex"),c=e.elements.find(u=>u.name==="face"),f=0;if(l){let u=l.properties.some(g=>g.name==="x"),h=l.properties.some(g=>g.name==="red"||g.name==="r"),m=l.properties.filter(g=>!g.isList);for(let g=0;g0){c.indices=o.indices;let u=new Array(l.length).fill(0),h=o.indices,m=l.length-3;for(let g=0;gm||_>m||v>m)continue;let E=l[p],T=l[p+1],S=l[p+2],A=l[_]-E,R=l[_+1]-T,M=l[_+2]-S,I=l[v]-E,C=l[v+1]-T,D=l[v+2]-S,w=R*D-M*C,k=M*I-A*D,O=A*C-R*I;u[p]+=w,u[p+1]+=k,u[p+2]+=O,u[_]+=w,u[_+1]+=k,u[_+2]+=O,u[v]+=w,u[v+1]+=k,u[v+2]+=O}for(let g=0;g0&&(u[g]/=p,u[g+1]/=p,u[g+2]/=p)}c.normals=u}else{let u=o.positions.length/3,h=[];for(let m=0;m=3&&h.push(0,1,2),c.indices=h}let f=new Q("ply-model",n);c.applyToMesh(f);let d=new ze("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new Ee(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new Ee(.7,.7,.7),f.material=d,f}function yZ(n,e){return BM(n,e)}function IZ(n){n(jve)}var jve,rF=y(()=>{"use strict";wi();eE();Ar();jc();Kt();jve={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[BM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{BM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=BM(n,e),i=new Vl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function fE(){CZ||(xZ(),MZ(bd),IZ(bd),CZ=!0)}var CZ,dE=y(()=>{"use strict";MN();gZ();_Z();eF();Qp();RZ();iF();rF();CZ=!1});function uE(n){return Math.floor(n.getTotalIndices()/3)}function Pd(n){return n.getTotalVertices()}function sh(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),Pd(r)>0||r.getTotalIndices()>0))}function PZ(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function nF(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return Ga(ei(e.minimumWorld),ei(e.maximumWorld))}function Gl(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=vu(e,nF(t)));return e}function VM(n,e=[]){var t;return(t=Gl(sh(n,e)))!=null?t:nF(n)}function GM(n,e,t,i={}){return yA({rootName:n,boundingSize:Xi(e),meshes:t.map(r=>({triangleCount:uE(r),vertexCount:Pd(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function DZ(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:uE(n),vertexCount:Pd(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function sF(n,e=UM){var a,o,l;let t=nF(n),i=n.name||`mesh-${n.uniqueId}`,r=WM(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=va(r,{name:i,path:kM(n)});return ac({name:oF(s,i),triangleCount:uE(n),vertexCount:Pd(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:Xi(t),center:Er(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function LZ(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function qve(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function Zve(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function aF(n,e,t=UM){var h,m;if(e.includes(n))return sF(n,t);let i=new Set(e),r=LZ(n,i),s=ei(n.getAbsolutePosition()),a=(h=Gl(r))!=null?h:Ga(s,s),o=new Set,l=0,c=0;for(let g of r)l+=uE(g),c+=Pd(g),(m=g.material)!=null&&m.name&&o.add(g.material.name);let f=Cd(n,`component-${n.uniqueId}`),d=WM(n.metadata,t.get(`node:${f}`)),u=va(d,{name:f,path:kM(n)});return ac({name:oF(u,f),triangleCount:l,vertexCount:c,materialName:Eu(o),boundingSize:Xi(a),center:Er(a),source:u.hasExplicitIdentity?"component":"group",meshNames:r.map(g=>g.name||`mesh-${g.uniqueId}`),childCount:r.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function hE(n,e,t,i=UM){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=LZ(f,r);if(d.length>0&&d.length1&&h.trim()&&!qve(h)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function OZ(n,e,t=UM){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(u=>i.has(u)),c=Cd(o,`component-${o.uniqueId}`),f=WM(o.metadata,t.get(`node:${c}`)),d=va(f,{name:Cd(o,`component-${o.uniqueId}`),path:kM(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 g;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=Gl(f);if(!d)return;let u=new Set,h=0,m=0;for(let p of f)h+=uE(p),m+=Pd(p),(g=p.material)!=null&&g.name&&u.add(p.material.name);r.push(ac({name:oF(c,Cd(o,`component-${o.uniqueId}`)),triangleCount:h,vertexCount:m,materialName:Eu(u),boundingSize:Xi(d),center:Er(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 NZ(n,e){let t=Qve(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 Cd(n,e){var i;return((i=va(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function kM(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Cd(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function Qve(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 WM(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function oF(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var UM,mE=y(()=>{"use strict";gl();HC();G_();ks();IA();UM=new Map});function Dd(n){return un(n)}function wZ(n,e,t,i=[]){tx(new zM(n,i),e,t)}function lF(n,e=[]){ix(new zM(n,e))}var zM,FZ=y(()=>{"use strict";We();gl();ks();jC();mE();zM=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return sh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return Er(VM(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return ei(e.position)}getPartCenter(e){return ei(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:Dd(t._previewExplodeState.originalPosition),originalCenter:Dd(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:Dd(t._originalPos),originalCenter:Dd(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:Dd(t.originalPosition),originalCenter:Dd(t.originalCenter)},i._originalPos=Dd(t.originalPosition),i._originalCenter=Dd(t.originalCenter)}}});var HM={};Be(HM,{glowBlurPostProcessPixelShaderWGSL:()=>$ve});var cF,BZ,$ve,XM=y(()=>{W();cF="glowBlurPostProcessPixelShader",BZ=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f;uniform direction: vec2f;uniform blurWidth: f32;fn getLuminance(color: vec3f)->f32 +`;x.ShadersStore[qw]||(x.ShadersStore[qw]=cZ);Wve={name:qw,shader:cZ}});var ag,Zw,OM,Qw,Cr,uZ=y(()=>{Xt();zt();Lt();Oo();MM();js();We();Yi();cj();eb();Kt();tb();dv();ts();ro();Dv();to();bD();fd();fj();dj();uj();hj();mj();mO();Ol();Lv();es();ib();rb();nb();sb();ag={effect:null,subMesh:null},Zw=class extends Xp(Hp(Lr)){},OM=class extends Wp(Zw){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}},Qw=class extends Yp(Bl){},Cr=class n extends Qw{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 Oi(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=Ee.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new Ee(0,0,0),this._albedoColor=new Ee(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new Ee(1,1,1),this._reflectionColor=new Ee(1,1,1),this._emissiveColor=new Ee(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 Ki(16),this._globalAmbientColor=new Ee(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 Fr(this),this.clearCoat=new _n(this),this.iridescence=new ia(this),this.anisotropy=new Qc(this),this.sheen=new Ma(this),this.subSurface=new Ci(this),this.detailMap=new no(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),fe.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=bM(this.getScene()),this.prePassConfiguration=new ea}get hasRenderTargetTextures(){return fe.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 u;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 OM(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&&fe.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&fe.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&fe.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let h=this._getReflectionTexture();if(h&&fe.ReflectionTextureEnabled){if(!h.isReadyOrNotBlocking())return!1;if(h.irradianceTexture){if(!h.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!h.sphericalPolynomial&&((u=h.getInternalTexture())!=null&&u._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&fe.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&fe.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(fe.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&&fe.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&fe.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 h=0;h{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Yt&&(Yt.PrepareUniforms(m,i),Yt.PrepareSamplers(g,i)),Dp({uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(h=this.customShaderNameResolve(h,m,p,g,i,u,v));let E=i.toString(),T=c.createEffect(h,{attributes:u,uniformsNames:m,uniformBuffersNames:p,samplers:g,defines:E,fallbacks:f,onCompiled:r,onError:s,indexParameters:_,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(()=>(vj(),_j)),Promise.resolve().then(()=>(cq(),lq))]):await Promise.all([Promise.resolve().then(()=>(pq(),mq)),Promise.resolve().then(()=>(dZ(),fZ))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,T}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();bp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,Ip(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(Pp(o,i,this.canRenderToMRT&&!c),Cp(o,i,c),ss.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&&fe.DiffuseTextureEnabled?(si(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&fe.BaseWeightTextureEnabled?si(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled?si(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&fe.AmbientTextureEnabled?(si(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&fe.OpacityTextureEnabled?(si(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;id(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&fe.LightmapTextureEnabled?(si(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&fe.EmissiveTextureEnabled?(si(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,fe.SpecularTextureEnabled?(this._metallicTexture?(si(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?(si(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?(si(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(si(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?si(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&fe.BumpTextureEnabled&&!this._disableBumpMap?(si(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&fe.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&&fe.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&&(xp(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(L.NormalKind),i.DEBUGMODE=this._debugMode),Mp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),yp(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 OM(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(ag.effect=o,ag.subMesh=null,this._onEffectCreatedObservable.notifyObservers(ag)),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),Lp(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var u,h,m,g;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),ss.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);Zs(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&ud(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&&fe.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),ai(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),ai(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),ai(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&fe.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),ai(this._ambientTexture,d,"ambient")),this._opacityTexture&&fe.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),ai(this._opacityTexture,d,"opacity")),this._emissiveTexture&&fe.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),ai(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&fe.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),ai(this._lightmapTexture,d,"lightmap")),fe.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),ai(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),ai(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),ai(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),ai(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),ai(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&fe.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),ai(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)),_p(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Ln.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Ln.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(h=(u=this.subSurface)==null?void 0:u._indexOfRefraction)!=null?h:1.5,_=1;Ln.Color4[0].b=p;let v=Math.pow((p-_)/(p+_),2);Ln.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Ln.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",fe.EmissiveTextureEnabled?this._emissiveColor:Ee.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&&fe.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&fe.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&fe.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&fe.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&fe.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),UR(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&fe.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&fe.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),fe.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&&fe.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),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&Ep(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ri.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),ed(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((g=t.bakedVertexAnimationManager)==null||g.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Jf(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,u,h,m,g,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(),(u=this._bumpTexture)==null||u.dispose(),(h=this._lightmapTexture)==null||h.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(g=this._reflectanceTexture)==null||g.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};Cr.PBRMATERIAL_OPAQUE=Ae.MATERIAL_OPAQUE;Cr.PBRMATERIAL_ALPHATEST=Ae.MATERIAL_ALPHATEST;Cr.PBRMATERIAL_ALPHABLEND=Ae.MATERIAL_ALPHABLEND;Cr.PBRMATERIAL_ALPHATESTANDBLEND=Ae.MATERIAL_ALPHATESTANDBLEND;Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;Cr.LIGHTFALLOFF_PHYSICAL=0;Cr.LIGHTFALLOFF_GLTF=1;Cr.LIGHTFALLOFF_STANDARD=2;Cr.ForceGLSL=!1;P([ce("_markAllSubMeshesAsMiscDirty")],Cr.prototype,"debugMode",void 0)});var hZ={};Be(hZ,{PBRMaterial:()=>pt});var pt,mZ=y(()=>{Xt();zt();MM();Kt();uZ();er();ts();Dr();pt=class n extends Cr{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===Cr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_GLTF:this._lightFalloff=Cr.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=Ee.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new Ee(0,0,0),this.albedoColor=new Ee(1,1,1),this.baseWeight=1,this.reflectivityColor=new Ee(1,1,1),this.reflectionColor=new Ee(1,1,1),this.emissiveColor=new Ee(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=bM(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=st.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=st.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Ae._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}};pt.PBRMATERIAL_OPAQUE=Cr.PBRMATERIAL_OPAQUE;pt.PBRMATERIAL_ALPHATEST=Cr.PBRMATERIAL_ALPHATEST;pt.PBRMATERIAL_ALPHABLEND=Cr.PBRMATERIAL_ALPHABLEND;pt.PBRMATERIAL_ALPHATESTANDBLEND=Cr.PBRMATERIAL_ALPHATESTANDBLEND;pt.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"directIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"specularIntensity",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"disableBumpMap",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeightTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughnessTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureStrength",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"opacityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallic",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"roughness",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicF0Factor",void 0);P([yr(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceColor",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectanceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurfaceTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"bumpTexture",void 0);P([Wt(),ce("_markAllSubMeshesAsTexturesDirty",null)],pt.prototype,"lightmapTexture",void 0);P([yr("ambient"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientColor",void 0);P([yr("albedo"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoColor",void 0);P([F("baseWeight"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughness",void 0);P([yr("reflectivity"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityColor",void 0);P([yr("reflection"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionColor",void 0);P([yr("emissive"),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveColor",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurface",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLightmapAsShadowmap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"forceAlphaTest",void 0);P([F(),ce("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"alphaCutOff",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useSpecularOverAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientInGrayScale",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],pt.prototype,"usePhysicalLightFalloff",null);P([F()],pt.prototype,"useGLTFLightFalloff",null);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOverAlpha",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useObjectSpaceNormalMap",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallax",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallaxOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"parallaxScaleBias",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],pt.prototype,"disableLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceIrradianceInFragment",void 0);P([F(),ce("_markAllSubMeshesAsLightsDirty")],pt.prototype,"maxSimultaneousLights",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapX",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapY",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"twoSidedLighting",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAlphaFresnel",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLinearAlphaFresnel",void 0);P([ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentBRDFTexture",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceNormalForward",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"enableSpecularAntiAliasing",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useHorizonOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOcclusion",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],pt.prototype,"unlit",void 0);P([F(),ce("_markAllSubMeshesAsMiscDirty")],pt.prototype,"applyDecalMapAfterDetailMap",void 0);Bt("BABYLON.PBRMaterial",pt)});var pZ={};Be(pZ,{PBRMaterialLoadingAdapter:()=>$w});var $w,gZ=y(()=>{Kt();DN();We();$w=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=z.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=z.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=z.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!=Ee.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 Ee(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 Ee(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 Ee(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:Ee.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 Xve(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 Rn(i,r)}return null}var zve,Hve,Jt,NM,_Z=y(()=>{O6();We();Kt();Ni();Dl();G6();vM();W6();ts();Xr();$f();Yi();wR();pp();wi();IN();H6();yN();gc();Lt();hp();PN();LN();j6();ip();q6();zve=new aE(()=>Promise.resolve().then(()=>(e7(),J6))),Hve=new aE(()=>Promise.resolve().then(()=>(n7(),r7))),Jt=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 u=c[d];if(u===void 0)throw new Error(`Failed to find node '${d}'`);return u})}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(()=>(aj(),sj))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(lj(),oj))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(mZ(),hZ))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(gZ(),pZ))).PBRMaterialLoadingAdapter});let s=`${bs[bs.LOADING]} => ${bs[bs.READY]}`,a=`${bs[bs.LOADING]} => ${bs[bs.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(bs.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=Jt.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(bs.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),pe.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(bs.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(Jt.Assign(this._gltf.accessors),Jt.Assign(this._gltf.animations),Jt.Assign(this._gltf.buffers),Jt.Assign(this._gltf.bufferViews),Jt.Assign(this._gltf.cameras),Jt.Assign(this._gltf.images),Jt.Assign(this._gltf.materials),Jt.Assign(this._gltf.meshes),Jt.Assign(this._gltf.nodes),Jt.Assign(this._gltf.samplers),Jt.Assign(this._gltf.scenes),Jt.Assign(this._gltf.skins),Jt.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(X6.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 Q("__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 Jp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case Jp.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=Jt.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 Ir&&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 Ju.NONE:break;case Ju.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case Ju.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=Jt.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=Jt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,u=>{u.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 $t(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=Jt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=ON(d.metadata,f.metadata||{});let u=Jt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${u.index}`,t,u,h=>{this._forEachPrimitive(t,m=>{m.skeleton=h}),this._postSceneLoadActions.push(()=>{if(u.skeleton!=null){let m=Jt.Get(`/skins/${u.index}/skeleton`,this._gltf.nodes,u.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=Jt.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&&Jt.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 $t(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 u=new Q(t,this._babylonScene);if(u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,u.sideOrientation=this._babylonScene.useRightHandedSystem?Ae.CounterClockWiseSideOrientation:Ae.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,u),d.push(this._loadVertexDataAsync(e,s,u).then(async h=>await this._loadMorphTargetsAsync(e,s,u,h).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,h.applyToMesh(u),h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let h=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[h];m||(m=this._createDefaultMaterial("__GLTFLoader._default",h),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[h]=m),u.material=m}else{let m=Jt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,u,h,g=>{u.material=g}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:u,promise:f}),c=u}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 bn(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=Jt.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 u=Jt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${u.index}`,u,f).then(h=>{if(h.getKind()===L.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=Xve(u);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(h,u.count)})),f==L.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(u)};return l("POSITION",L.PositionKind),l("NORMAL",L.NormalKind),l("TANGENT",L.TangentKind),l("TEXCOORD_0",L.UVKind),l("TEXCOORD_1",L.UV2Kind),l("TEXCOORD_2",L.UV3Kind),l("TEXCOORD_3",L.UV4Kind),l("TEXCOORD_4",L.UV5Kind),l("TEXCOORD_5",L.UV6Kind),l("JOINTS_0",L.MatricesIndicesKind),l("WEIGHTS_0",L.MatricesWeightsKind),l("JOINTS_1",L.MatricesIndicesExtraKind),l("WEIGHTS_1",L.MatricesWeightsExtraKind),l("COLOR_0",L.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 rh(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=Jt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(u=>{c(f,u)}))};return a("POSITION",L.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",L.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",L.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,u)=>{(u+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",L.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",L.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",L.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,u)=>{let h=Math.floor(u/3),m=u%3;c[4*h+m]=l[3*h+m]+d});for(let d=0;d{c[u]=l[u]+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=je.Identity(),s=b.One();e.matrix?Z.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=je.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 EM(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=Jt.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=Jt.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=Jt.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 ao(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=Jt.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=Z.Identity(),s=i._index;t&&s!==-1&&(Z.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?Z.FromArray(e.matrix):Z.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?je.FromArray(e.rotation):je.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 Zc(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=_t.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||zve.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;Jt.Assign(t.channels),Jt.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=Jt.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():Hve.value.then(()=>{var u,h,m,g;let f;switch(l){case"translation":{f=(u=nE("/nodes/{}/translation"))==null?void 0:u.interpolation;break}case"rotation":{f=(h=nE("/nodes/{}/rotation"))==null?void 0:h.interpolation;break}case"scale":{f=(m=nE("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(g=nE("/nodes/{}/weights"))==null?void 0:g.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=Jt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,u=s.object,h=s.info;for(let m of h){let g=m.getStride(u),p=f.input,_=f.output,v=new Array(p.length),E=0;switch(f.interpolation){case"STEP":{for(let T=0;T0){let T=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,S=m.buildAnimations(u,T,o,v);for(let A of S)d++,a(A.babylonAnimatable,A.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=Jt.Get(`${e}/input`,this._gltf.accessors,t.input),s=Jt.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=Jt.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*L.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=Jt.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 L.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=Jt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=Jt.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(([u,h])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,u,o.indices.byteOffset,o.count),g=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,h,o.values.byteOffset,g);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,h,o.values.byteOffset,g);p=new i(g),L.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(E,T)=>{p[T]=E})}let _=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 Do(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 L(r,a,i,!1));else{let a=Jt.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 L(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=Ee.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=Ee.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?Ee.FromArray(t.emissiveFactor):new Ee(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=Jt.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:Jt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=Jt.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,g;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new gM;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,_)=>{this._disposed||c.reject(new Error(`${e}: ${_&&_.message?_.message:p||"Failed to load texture"}`))},mimeType:(g=i.mimeType)!=null?g:DG((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 u=i.uri&&!Wf(i.uri)?i.uri:void 0,h=u!=null?u:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let _=`data:${this._uniqueRootUrl}${h}`;d.updateURL(_,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||u||`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=Jt.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(Wf(i)){let s=new Uint8Array(zf(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 rp(`${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 CP(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=L.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 pe.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Ae.PointListDrawMode;case 1:return Ae.LineListDrawMode;case 2:return Ae.LineLoopDrawMode;case 3:return Ae.LineStripDrawMode;case 4:return Ae.TriangleFillMode;case 5:return Ae.TriangleStripDrawMode;case 6:return Ae.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)}};NM.DefaultSampler={index:-1};Md._CreateGLTF2Loader=n=>new NM(n)});var eF,Jw,vZ=y(()=>{PN();eF="ExtrasAsMetadata",Jw=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=eF,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))}};rE(eF);TM(eF,!1,n=>new Jw(n))});var wM,EZ=y(()=>{wM={name:"obj",extensions:".obj"}});var nh,SZ=y(()=>{Kt();Xr();jc();nh=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;u=u.toLowerCase();let h=d>=0?f.substring(d+1).trim():"";if(u==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new ze(h,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(u==="kd"&&l)o=h.split(a,3).map(parseFloat),l.diffuseColor=Ee.FromArray(o);else if(u==="ka"&&l)o=h.split(a,3).map(parseFloat),l.ambientColor=Ee.FromArray(o);else if(u==="ks"&&l)o=h.split(a,3).map(parseFloat),l.specularColor=Ee.FromArray(o);else if(u==="ke"&&l)o=h.split(a,3).map(parseFloat),l.emissiveColor=Ee.FromArray(o);else if(u==="ns"&&l)l.specularPower=parseFloat(h);else if(u==="d"&&l)l.alpha=parseFloat(h);else if(u==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,h,e);else if(u==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,h,e);else if(u==="map_ks"&&l)l.specularTexture=n._GetTexture(i,h,e);else if(u!=="map_ns")if(u==="map_bump"&&l){let m=h.split(a),g=m.indexOf("-bm"),p=null;g>=0&&(p=m[g+1],m.splice(g,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else u==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,h,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)}};nh.INVERT_TEXTURE_Y=!0});var nn,TZ=y(()=>{Yi();jc();Kt();We();wR();wi();Ar();Lt();nn=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 dt(.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(L.PositionKind),i=e.getVerticesData(L.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(u[0],u[h],u[h+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(u,h)=>this._triangles.push(u[0],u[h+1],u[h]),this._handednessSign=1):(this._pushTriangle=(u,h)=>this._triangles.push(u[0],u[h],u[h+1]),this._handednessSign=-1);let a=t.split(` +`),o=[],l=[];o.push(l);for(let u=0;u=7){let g=parseFloat(m[4]),p=parseFloat(m[5]),_=parseFloat(m[6]);this._colors.push(new dt(g>1?g/255:g,p>1?p/255:p,_>1?_/255:_,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(h))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(h))!==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(h))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(h))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(h))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(h))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(h))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(h))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(h))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(h,!this._loadingOptions.importVertexColors))for(let g of m)this._extColors.push(g);else if((m=n.LinePattern3.exec(h))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(h)||n.ObjectDescriptor.test(h)){let g={name:h.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(h)};this._addPreviousObjMesh(),this._meshesFromObj.push(g),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(h)){if(this._materialNameFromObj=h.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let g={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(g),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(h)?s(h.substring(7).trim()):n.SmoothDescriptor.test(h)||ee.Log("Unhandled expression at line : "+h)}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 u=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let h of this._positions)this._unwrappedPositionsForBabylon.push(h.x,h.y,h.z);if(this._normals.length)for(let h of this._normals)this._unwrappedNormalsForBabylon.push(h.x,h.y,h.z);if(this._uvs.length)for(let h of this._uvs)this._unwrappedUVForBabylon.push(h.x,h.y);if(this._extColors.length)for(let h of this._extColors)this._unwrappedColorsForBabylon.push(h.r,h.g,h.b,h.a);else if(this._colors.length)for(let h of this._colors)this._unwrappedColorsForBabylon.push(h.r,h.g,h.b,h.a);this._materialNameFromObj||(u=new ze(bn.RandomId(),i),u.pointsCloud=!0,this._materialNameFromObj=u.name,this._normals.length||(u.disableLighting=!0,u.emissiveColor=Ee.White()))}this._meshesFromObj.push({name:bn.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:u,isObject:!0,hasLines:this._hasLineData})}for(let u=0;u=0;--g)if(this._meshesFromObj[g].isObject&&this._meshesFromObj[g]._babylonMesh){h.parent=this._meshesFromObj[g]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[u].materialName),this._handledMesh.hasLines&&((f=h._internalMetadata)!=null||(h._internalMetadata={}),h._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(h);continue}let m=new Me;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let g=new Array;Me.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,g),m.normals=g}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(h),this._loadingOptions.invertY&&(h.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(h),this._babylonMeshesArray.push(h),this._handledMesh.directMaterial&&(h.material=this._handledMesh.directMaterial)}}};nn.ObjectDescriptor=/^o/;nn.GroupDescriptor=/^g/;nn.MtlLibGroupDescriptor=/^mtllib /;nn.UseMtlDescriptor=/^usemtl /;nn.SmoothDescriptor=/^s /;nn.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;nn.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;nn.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;nn.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;nn.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;nn.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;nn.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;nn.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;nn.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var AZ={};Be(AZ,{OBJFileLoader:()=>ya});var ya,tF=y(()=>{We();Ni();Qp();eE();EZ();SZ();TZ();jc();ya=class n{static get INVERT_TEXTURE_Y(){return nh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){nh.INVERT_TEXTURE_Y=e}constructor(e){this.name=wM.name,this.extensions=wM.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;pe.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[wM.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 Vl(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 nh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new nn(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,u)=>{this._loadMTL(s,r,h=>{try{a.parseMTL(t,h,r,this._assetContainer);for(let m=0;m-1;)p.push(_),g=_+1;if(_===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{pe.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():u(m)})})),Promise.all(f).then(()=>{let d=u=>{var h,m;return!!((m=(h=u._internalMetadata)==null?void 0:h._isLine)!=null&&m)};return l.forEach(u=>{var h,m;if(d(u)){let g=(h=u.material)!=null?h:new ze(u.name+"_line",t);g.getBindedMeshes().filter(_=>!d(_)).length>0&&(g=(m=g.clone(g.name+"_line"))!=null?m:g),g.wireframe=!0,u.material=g,u._internalMetadata&&(u._internalMetadata._isLine=void 0)}}),l})}};ya.OPTIMIZE_WITH_UV=!0;ya.INVERT_Y=!1;ya.IMPORT_VERTEX_COLORS=!1;ya.COMPUTE_NORMALS=!1;ya.OPTIMIZE_NORMALS=!1;ya.UV_SCALING=new Fe(1,1);ya.SKIP_MATERIALS=!1;ya.MATERIAL_LOADING_FAILS_SILENTLY=!0;ya.USE_LEGACY_BEHAVIOR=!1;bd(new ya)});function Yve(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function iF(n,e){if(Yve(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function FM(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function RZ(){if(xZ)return;let n=i=>iF(i,"asset loading"),e=i=>iF(i,"script loading"),t=()=>-1;pe.PreprocessUrl=n,pe.ScriptPreprocessUrl=e,pe.DefaultRetryStrategy=t,pe.LoadScript=(i,r,s)=>{try{e(i),FM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},pe.LoadScriptAsync=async i=>{e(i),FM(i)},pe.LoadBabylonScript=(i,r,s)=>{try{FM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},pe.LoadBabylonScriptAsync=async i=>{FM(i)},qi.PreprocessUrl=n,qi.ScriptPreprocessUrl=e,qi.DefaultRetryStrategy=t,wr.CustomRequestModifiers.push((i,r)=>iF(r,"request")),xZ=!0}var xZ,bZ=y(()=>{"use strict";gc();Ni();Cu();xZ=!1});function BM(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let g=new TextDecoder().decode(new Uint8Array(e,0,6));if(g==="solid "||g===`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=g*12;l[B+0]=k,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=k,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=k,l[B+9]=O,l[B+10]=N,l[B+11]=1}let E=a[p+3]-a[p+0],T=a[p+4]-a[p+1],S=a[p+5]-a[p+2],A=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],I=T*M-S*R,C=S*A-E*M,D=E*R-T*A,w=Math.sqrt(I*I+C*C+D*D);w>1e-8?(I/=w,C/=w,D/=w):(I=0,C=0,D=1,f++),o[p+0]=I,o[p+1]=C,o[p+2]=D,o[p+3]=I,o[p+4]=C,o[p+5]=D,o[p+6]=I,o[p+7]=C,o[p+8]=D,c[_+0]=p/3+0,c[_+1]=p/3+1,c[_+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let u=new Me;u.positions=a,u.normals=o,u.indices=c,l&&(u.colors=l);let h=new Q("stl-model",n);u.applyToMesh(h);let m=new ze("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new Ee(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new Ee(1,1,1),m.emissiveColor=new Ee(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new Ee(.85,.85,.85),m.emissiveColor=new Ee(.1,.1,.1)),h.material=m,h}function MZ(n,e){return BM(n,e)}function yZ(n){n(Kve)}var Kve,rF=y(()=>{"use strict";wi();eE();Ar();jc();Kt();Kve={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[BM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{BM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=BM(n,e),i=new Vl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function jve(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 og(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 UM(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 qve(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(h=>h.name==="x"),u=c.properties.some(h=>h.name==="red"||h.name==="r");for(let h=0;hu.name==="vertex"),c=e.elements.find(u=>u.name==="face"),f=0;if(l){let u=l.properties.some(g=>g.name==="x"),h=l.properties.some(g=>g.name==="red"||g.name==="r"),m=l.properties.filter(g=>!g.isList);for(let g=0;g0){c.indices=o.indices;let u=new Array(l.length).fill(0),h=o.indices,m=l.length-3;for(let g=0;gm||_>m||v>m)continue;let E=l[p],T=l[p+1],S=l[p+2],A=l[_]-E,R=l[_+1]-T,M=l[_+2]-S,I=l[v]-E,C=l[v+1]-T,D=l[v+2]-S,w=R*D-M*C,k=M*I-A*D,O=A*C-R*I;u[p]+=w,u[p+1]+=k,u[p+2]+=O,u[_]+=w,u[_+1]+=k,u[_+2]+=O,u[v]+=w,u[v+1]+=k,u[v+2]+=O}for(let g=0;g0&&(u[g]/=p,u[g+1]/=p,u[g+2]/=p)}c.normals=u}else{let u=o.positions.length/3,h=[];for(let m=0;m=3&&h.push(0,1,2),c.indices=h}let f=new Q("ply-model",n);c.applyToMesh(f);let d=new ze("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new Ee(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new Ee(.7,.7,.7),f.material=d,f}function IZ(n,e){return VM(n,e)}function CZ(n){n(Qve)}var Qve,nF=y(()=>{"use strict";wi();eE();Ar();jc();Kt();Qve={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[VM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{VM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=VM(n,e),i=new Vl(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function fE(){PZ||(RZ(),yZ(bd),CZ(bd),PZ=!0)}var PZ,dE=y(()=>{"use strict";yN();_Z();vZ();tF();Qp();bZ();rF();nF();PZ=!1});function uE(n){return Math.floor(n.getTotalIndices()/3)}function Pd(n){return n.getTotalVertices()}function sh(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),Pd(r)>0||r.getTotalIndices()>0))}function DZ(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function sF(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return ka(ei(e.minimumWorld),ei(e.maximumWorld))}function Gl(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=vu(e,sF(t)));return e}function kM(n,e=[]){var t;return(t=Gl(sh(n,e)))!=null?t:sF(n)}function WM(n,e,t,i={}){return yA({rootName:n,boundingSize:Xi(e),meshes:t.map(r=>({triangleCount:uE(r),vertexCount:Pd(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function LZ(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:uE(n),vertexCount:Pd(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function aF(n,e=GM){var a,o,l;let t=sF(n),i=n.name||`mesh-${n.uniqueId}`,r=HM(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=Ea(r,{name:i,path:zM(n)});return ac({name:lF(s,i),triangleCount:uE(n),vertexCount:Pd(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:Xi(t),center:Er(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function OZ(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function $ve(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function Jve(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function oF(n,e,t=GM){var h,m;if(e.includes(n))return aF(n,t);let i=new Set(e),r=OZ(n,i),s=ei(n.getAbsolutePosition()),a=(h=Gl(r))!=null?h:ka(s,s),o=new Set,l=0,c=0;for(let g of r)l+=uE(g),c+=Pd(g),(m=g.material)!=null&&m.name&&o.add(g.material.name);let f=Cd(n,`component-${n.uniqueId}`),d=HM(n.metadata,t.get(`node:${f}`)),u=Ea(d,{name:f,path:zM(n)});return ac({name:lF(u,f),triangleCount:l,vertexCount:c,materialName:Eu(o),boundingSize:Xi(a),center:Er(a),source:u.hasExplicitIdentity?"component":"group",meshNames:r.map(g=>g.name||`mesh-${g.uniqueId}`),childCount:r.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function hE(n,e,t,i=GM){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=OZ(f,r);if(d.length>0&&d.length1&&h.trim()&&!$ve(h)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function NZ(n,e,t=GM){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(u=>i.has(u)),c=Cd(o,`component-${o.uniqueId}`),f=HM(o.metadata,t.get(`node:${c}`)),d=Ea(f,{name:Cd(o,`component-${o.uniqueId}`),path:zM(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 g;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=Gl(f);if(!d)return;let u=new Set,h=0,m=0;for(let p of f)h+=uE(p),m+=Pd(p),(g=p.material)!=null&&g.name&&u.add(p.material.name);r.push(ac({name:lF(c,Cd(o,`component-${o.uniqueId}`)),triangleCount:h,vertexCount:m,materialName:Eu(u),boundingSize:Xi(d),center:Er(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 wZ(n,e){let t=eEe(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 Cd(n,e){var i;return((i=Ea(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function zM(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Cd(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function eEe(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 HM(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function lF(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var GM,mE=y(()=>{"use strict";gl();XC();G_();ks();IA();GM=new Map});function Dd(n){return un(n)}function FZ(n,e,t,i=[]){rx(new XM(n,i),e,t)}function cF(n,e=[]){nx(new XM(n,e))}var XM,BZ=y(()=>{"use strict";We();gl();ks();qC();mE();XM=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return sh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return Er(kM(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return ei(e.position)}getPartCenter(e){return ei(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:Dd(t._previewExplodeState.originalPosition),originalCenter:Dd(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:Dd(t._originalPos),originalCenter:Dd(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:Dd(t.originalPosition),originalCenter:Dd(t.originalCenter)},i._originalPos=Dd(t.originalPosition),i._originalCenter=Dd(t.originalCenter)}}});var YM={};Be(YM,{glowBlurPostProcessPixelShaderWGSL:()=>tEe});var fF,UZ,tEe,KM=y(()=>{W();fF="glowBlurPostProcessPixelShader",UZ=`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;}`;x.ShadersStoreWGSL[cF]||(x.ShadersStoreWGSL[cF]=BZ);$ve={name:cF,shader:BZ}});var YM={};Be(YM,{glowBlurPostProcessPixelShader:()=>Jve});var fF,UZ,Jve,KM=y(()=>{W();fF="glowBlurPostProcessPixelShader",UZ=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize;uniform vec2 direction;uniform float blurWidth;float getLuminance(vec3 color) +fragmentOutputs.color=baseColor;}`;x.ShadersStoreWGSL[fF]||(x.ShadersStoreWGSL[fF]=UZ);tEe={name:fF,shader:UZ}});var jM={};Be(jM,{glowBlurPostProcessPixelShader:()=>iEe});var dF,VZ,iEe,qM=y(()=>{W();dF="glowBlurPostProcessPixelShader",VZ=`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;}`;x.ShadersStore[fF]||(x.ShadersStore[fF]=UZ);Jve={name:fF,shader:UZ}});var GZ={};Be(GZ,{glowMapGenerationVertexShaderWGSL:()=>eEe});var dF,VZ,eEe,kZ=y(()=>{W();Pc();Dc();gd();_d();Lc();hd();vd();Ed();Oc();Nc();wc();Fc();dF="glowMapGenerationVertexShader",VZ=`attribute position: vec3f; +gl_FragColor=baseColor;}`;x.ShadersStore[dF]||(x.ShadersStore[dF]=VZ);iEe={name:dF,shader:VZ}});var kZ={};Be(kZ,{glowMapGenerationVertexShaderWGSL:()=>rEe});var uF,GZ,rEe,WZ=y(()=>{W();Pc();Dc();gd();_d();Lc();hd();vd();Ed();Oc();Nc();wc();Fc();uF="glowMapGenerationVertexShader",GZ=`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 -}`;x.ShadersStoreWGSL[dF]||(x.ShadersStoreWGSL[dF]=VZ);eEe={name:dF,shader:VZ}});var zZ={};Be(zZ,{glowMapGenerationPixelShaderWGSL:()=>tEe});var uF,WZ,tEe,HZ=y(()=>{W();$a();Bc();Uc();uF="glowMapGenerationPixelShader",WZ=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) +}`;x.ShadersStoreWGSL[uF]||(x.ShadersStoreWGSL[uF]=GZ);rEe={name:uF,shader:GZ}});var HZ={};Be(HZ,{glowMapGenerationPixelShaderWGSL:()=>nEe});var hF,zZ,nEe,XZ=y(()=>{W();$a();Bc();Uc();hF="glowMapGenerationPixelShader",zZ=`#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 } -`;x.ShadersStoreWGSL[uF]||(x.ShadersStoreWGSL[uF]=WZ);tEe={name:uF,shader:WZ}});var YZ={};Be(YZ,{glowMapGenerationVertexShader:()=>iEe});var hF,XZ,iEe,KZ=y(()=>{W();Vc();Gc();Sd();Td();kc();md();Ad();xd();Wc();zc();Hc();Xc();hF="glowMapGenerationVertexShader",XZ=`attribute vec3 position; +`;x.ShadersStoreWGSL[hF]||(x.ShadersStoreWGSL[hF]=zZ);nEe={name:hF,shader:zZ}});var KZ={};Be(KZ,{glowMapGenerationVertexShader:()=>sEe});var mF,YZ,sEe,jZ=y(()=>{W();Vc();Gc();Sd();Td();kc();md();Ad();xd();Wc();zc();Hc();Xc();mF="glowMapGenerationVertexShader",YZ=`attribute vec3 position; #include #include #include @@ -23626,7 +23626,7 @@ vUVEmissive=vec2(emissiveMatrix*vec4(uv2Updated,1.0,0.0)); vColor=color; #endif #include -}`;x.ShadersStore[hF]||(x.ShadersStore[hF]=XZ);iEe={name:hF,shader:XZ}});var qZ={};Be(qZ,{glowMapGenerationPixelShader:()=>rEe});var mF,jZ,rEe,ZZ=y(()=>{W();Ja();Yc();Kc();mF="glowMapGenerationPixelShader",jZ=`#if defined(DIFFUSE_ISLINEAR) || defined(EMISSIVE_ISLINEAR) +}`;x.ShadersStore[mF]||(x.ShadersStore[mF]=YZ);sEe={name:mF,shader:YZ}});var ZZ={};Be(ZZ,{glowMapGenerationPixelShader:()=>aEe});var pF,qZ,aEe,QZ=y(()=>{W();Ja();Yc();Kc();pF="glowMapGenerationPixelShader",qZ=`#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 -}`;x.ShadersStore[mF]||(x.ShadersStore[mF]=jZ);rEe={name:mF,shader:jZ}});var jo,$c,jM=y(()=>{vi();Kt();Gi();Yi();Ou();ts();fd();Lu();Ol();es();NP();jo=class n extends en{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(()=>(XM(),HM)))):t.push(Promise.resolve().then(()=>(KM(),YM))),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)}};jo.FragmentUrl="glowBlurPostProcess";jo.Uniforms=["screenSize","direction","blurWidth"];$c=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(L.MatricesIndicesExtraKind),c.push(L.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let S=s.skeleton;S&&S.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(S?S.bones.length+1:0)),s.numBoneInfluencers>0&&h.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?Nl(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,u):0;t&&(l.push("#define INSTANCES"),ko(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let g=s.bakedVertexAnimationManager;g&&g.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),Ll(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),_=p.defines,v=l.join(` -`);if(_!==v){let S=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Qn(S),p.setEffect(this._engine.createEffect("glowMapGeneration",c,S,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,h,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(()=>(kZ(),GZ)),Promise.resolve().then(()=>(HZ(),zZ))]):await Promise.all([Promise.resolve().then(()=>(KZ(),YZ)),Promise.resolve().then(()=>(ZZ(),qZ))]),(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(E),i.disableColorWrite&&c.setColorWrite(T),i.depthFunction!==0&&c.setDepthFunction(S)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),this._vertexBuffers[L.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()}};$c.ForceGLSL=!1});var ia,pF=y(()=>{Xt();zt();Ni();vi();Gi();Xr();jf();An();Mo();jM();ER();ia=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 $c.ForceGLSL}static set ForceGLSL(e){$c.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=bc.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 $c(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?Pn(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?Pn(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 Yr("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 $e("EffectLayerSceneComponent")};P([F()],ia.prototype,"name",null);P([ep()],ia.prototype,"neutralColor",null);P([F()],ia.prototype,"isEnabled",null);P([TG()],ia.prototype,"camera",null);P([F()],ia.prototype,"renderingGroupId",null);P([F()],ia.prototype,"disableBoundingBoxesFromEffectLayer",null)});var $Z={};Be($Z,{glowMapMergePixelShaderWGSL:()=>nEe});var gF,QZ,nEe,JZ=y(()=>{W();gF="glowMapMergePixelShader",QZ=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +}`;x.ShadersStore[pF]||(x.ShadersStore[pF]=qZ);aEe={name:pF,shader:qZ}});var jo,$c,ZM=y(()=>{vi();Kt();Gi();Yi();Ou();ts();fd();Lu();Ol();es();wP();jo=class n extends en{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(()=>(KM(),YM)))):t.push(Promise.resolve().then(()=>(qM(),jM))),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)}};jo.FragmentUrl="glowBlurPostProcess";jo.Uniforms=["screenSize","direction","blurWidth"];$c=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(L.MatricesIndicesExtraKind),c.push(L.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let S=s.skeleton;S&&S.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(S?S.bones.length+1:0)),s.numBoneInfluencers>0&&h.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?Nl(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,u):0;t&&(l.push("#define INSTANCES"),ko(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let g=s.bakedVertexAnimationManager;g&&g.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),Ll(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),_=p.defines,v=l.join(` +`);if(_!==v){let S=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Qn(S),p.setEffect(this._engine.createEffect("glowMapGeneration",c,S,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,h,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(()=>(WZ(),kZ)),Promise.resolve().then(()=>(XZ(),HZ))]):await Promise.all([Promise.resolve().then(()=>(jZ(),KZ)),Promise.resolve().then(()=>(QZ(),ZZ))]),(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(E),i.disableColorWrite&&c.setColorWrite(T),i.depthFunction!==0&&c.setDepthFunction(S)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),this._vertexBuffers[L.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()}};$c.ForceGLSL=!1});var ra,gF=y(()=>{Xt();zt();Ni();vi();Gi();Xr();jf();An();Mo();ZM();TR();ra=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 $c.ForceGLSL}static set ForceGLSL(e){$c.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=bc.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 $c(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?Pn(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?Pn(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 Yr("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 $e("EffectLayerSceneComponent")};P([F()],ra.prototype,"name",null);P([ep()],ra.prototype,"neutralColor",null);P([F()],ra.prototype,"isEnabled",null);P([AG()],ra.prototype,"camera",null);P([F()],ra.prototype,"renderingGroupId",null);P([F()],ra.prototype,"disableBoundingBoxesFromEffectLayer",null)});var JZ={};Be(JZ,{glowMapMergePixelShaderWGSL:()=>oEe});var _F,$Z,oEe,eQ=y(()=>{W();_F="glowMapMergePixelShader",$Z=`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 } -`;x.ShadersStoreWGSL[gF]||(x.ShadersStoreWGSL[gF]=QZ);nEe={name:gF,shader:QZ}});var tQ={};Be(tQ,{glowMapMergeVertexShaderWGSL:()=>sEe});var _F,eQ,sEe,iQ=y(()=>{W();_F="glowMapMergeVertexShader",eQ=`attribute position: vec2f;varying vUV: vec2f; +`;x.ShadersStoreWGSL[_F]||(x.ShadersStoreWGSL[_F]=$Z);oEe={name:_F,shader:$Z}});var iQ={};Be(iQ,{glowMapMergeVertexShaderWGSL:()=>lEe});var vF,tQ,lEe,rQ=y(()=>{W();vF="glowMapMergeVertexShader",tQ=`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 -}`;x.ShadersStoreWGSL[_F]||(x.ShadersStoreWGSL[_F]=eQ);sEe={name:_F,shader:eQ}});var nQ={};Be(nQ,{glowMapMergePixelShader:()=>aEe});var vF,rQ,aEe,sQ=y(()=>{W();vF="glowMapMergePixelShader",rQ=`varying vec2 vUV;uniform sampler2D textureSampler; +}`;x.ShadersStoreWGSL[vF]||(x.ShadersStoreWGSL[vF]=tQ);lEe={name:vF,shader:tQ}});var sQ={};Be(sQ,{glowMapMergePixelShader:()=>cEe});var EF,nQ,cEe,aQ=y(()=>{W();EF="glowMapMergePixelShader",nQ=`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 -}`;x.ShadersStore[vF]||(x.ShadersStore[vF]=rQ);aEe={name:vF,shader:rQ}});var oQ={};Be(oQ,{glowMapMergeVertexShader:()=>oEe});var EF,aQ,oEe,lQ=y(()=>{W();EF="glowMapMergeVertexShader",aQ=`attribute vec2 position;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); +}`;x.ShadersStore[EF]||(x.ShadersStore[EF]=nQ);cEe={name:EF,shader:nQ}});var lQ={};Be(lQ,{glowMapMergeVertexShader:()=>fEe});var SF,oQ,fEe,cQ=y(()=>{W();SF="glowMapMergeVertexShader",oQ=`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 -}`;x.ShadersStore[EF]||(x.ShadersStore[EF]=aQ);oEe={name:EF,shader:aQ}});var kl,cQ=y(()=>{We();Yi();ts();qP();jM();Kt();YO();kl=class n extends $c{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(()=>(JZ(),$Z)),Promise.resolve().then(()=>(iQ(),tQ)),Promise.resolve().then(()=>(XM(),HM))]):await Promise.all([Promise.resolve().then(()=>(sQ(),nQ)),Promise.resolve().then(()=>(lQ(),oQ)),Promise.resolve().then(()=>(KM(),YM))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[L.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 Tc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new jo("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new jo("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Rs("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new Rs("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(Ae.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Ae.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()}};kl.EffectName="HighlightLayer";kl.NeutralColor=new dt(0,0,0,0);kl.GlowingMeshStencilReference=2;kl.NormalMeshStencilReference=1});var qM,ya,fQ=y(()=>{Xt();zt();vi();Ks();We();Xr();jf();Sc();QP();KO();pF();Lt();er();Kt();cQ();Dr();Mo();jM();ri.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()===ya.EffectName)return this.effectLayers[t];return null};qM=class extends Pi{constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:jo.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,jo.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new jo(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(()=>(XM(),HM)))):t.push(Promise.resolve().then(()=>(KM(),YM))),super._gatherImports(e,t)}},ya=class n extends ia{static get NeutralColor(){return kl.NeutralColor}static set NeutralColor(e){kl.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 kl(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?Pn(e,this._maxSize):e,t=this._engine.needPOTTextures?Pn(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new Yr("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 Nu("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 qM("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 qM("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 so("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 so("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=st.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=st.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{Dl();sp();pF();Gi();hN();fM(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===_t.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==_t.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 SF(n),n._addComponent(e))}});function uQ(n,e,t=()=>!0,i=r=>[r]){let r=new ya("ai3d-pick-highlight",n),s=new Ee(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let d of a)d.isDisposed()||(d.renderOutline=!1,d.outlineWidth=0);a=[]}function l(d){a=d.filter(u=>!u.isDisposed());for(let u of a)r.addMesh(u,s),u.renderOutline=!0,u.outlineColor=s,u.outlineWidth=.045}let c=n.onPointerObservable.add(d=>{var _;if(d.type!==at.POINTERDOWN)return;let u=d.event,h=u.clientX,m=u.clientY,g={altKey:u.altKey,ctrlKey:u.ctrlKey,metaKey:u.metaKey,shiftKey:u.shiftKey},p=d.pickInfo;if(p!=null&&p.hit&&p.pickedMesh){if(t()){let v=i(p.pickedMesh).filter(T=>!T.isDisposed());a.length===v.length&&a.every((T,S)=>T===v[S])||(o(),l(v))}else o();e({mesh:p.pickedMesh,pickedPoint:(_=p.pickedPoint)!=null?_:null,screenX:h,screenY:m,modifiers:g})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:m,modifiers:g})}),f=(()=>{o(),r.dispose(),n.onPointerObservable.remove(c)});return f.clearHighlight=o,f}var hQ=y(()=>{"use strict";wo();Kt();fQ();dQ()});function mEe(n,e,t){let i=Ee.FromHexString(e),r=new ze(n,t);return r.emissiveColor=i,r.diffuseColor=Ee.Black(),r.specularColor=Ee.Black(),r.backFaceCulling=!1,r}function pEe(n){let e=new ze("gizmo-origin-mat",n);return e.emissiveColor=new Ee(.72,.78,.86),e.diffuseColor=Ee.Black(),e.specularColor=Ee.Black(),e}var lEe,ZM,cEe,AF,fEe,dEe,TF,uEe,hEe,QM,mQ=y(()=>{"use strict";Ks();HR();XR();We();Kt();Qm();dO();jc();lEe=.32,ZM=1.05,cEe=.075,AF=.28,fEe=.22,dEe=.16,TF=(ZM+AF)*.42,uEe=new b(TF,TF,TF),hEe=[{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)}];QM=class{constructor(e,t){this.engine=e,this.scene=new ri(e),this.scene.clearColor=new dt(0,0,0,0),this.scene.autoClear=!1,this.camera=new Ri("gizmo-cam",0,0,4.1,uEe,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new Ra("gizmo-light",new b(0,1,.5),this.scene);let i=Nn.CreateSphere("gizmo-origin",{diameter:dEe,segments:16},this.scene);i.material=pEe(this.scene);for(let{name:s,color:a,rot:o,dir:l}of hEe){let c=mEe(`gizmo-${s}-mat`,a,this.scene),f=Nn.CreateCylinder(`gizmo-${s}-shaft`,{height:ZM,diameter:cEe,tessellation:8},this.scene);f.material=c,f.position=l.scale(ZM/2),f.rotation=o;let d=Nn.CreateCylinder(`gizmo-${s}-head`,{height:AF,diameterTop:0,diameterBottom:fEe,tessellation:8},this.scene);d.material=c;let u=ZM+AF/2;d.position=l.scale(u),d.rotation=o}let r=lEe;this.viewport=new Po(.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 RF={};Be(RF,{boundingBoxRendererVertexShaderWGSL:()=>gEe});var xF,pQ,gEe,bF=y(()=>{W();xF="boundingBoxRendererVertexShader",pQ=`attribute position: vec3f;uniform world: mat4x4f;uniform viewProjection: mat4x4f; +}`;x.ShadersStore[SF]||(x.ShadersStore[SF]=oQ);fEe={name:SF,shader:oQ}});var kl,fQ=y(()=>{We();Yi();ts();ZP();ZM();Kt();KO();kl=class n extends $c{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(()=>(eQ(),JZ)),Promise.resolve().then(()=>(rQ(),iQ)),Promise.resolve().then(()=>(KM(),YM))]):await Promise.all([Promise.resolve().then(()=>(aQ(),sQ)),Promise.resolve().then(()=>(cQ(),lQ)),Promise.resolve().then(()=>(qM(),jM))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[L.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 Tc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new jo("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new jo("HighlightLayerVBP",this._scene.getEngine(),new Fe(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Rs("HighlightLayerHBP",this._scene.getEngine(),new Fe(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new Rs("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(Ae.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Ae.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()}};kl.EffectName="HighlightLayer";kl.NeutralColor=new dt(0,0,0,0);kl.GlowingMeshStencilReference=2;kl.NormalMeshStencilReference=1});var QM,Ia,dQ=y(()=>{Xt();zt();vi();js();We();Xr();jf();Sc();$P();jO();gF();Lt();er();Kt();fQ();Dr();Mo();ZM();ri.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()===Ia.EffectName)return this.effectLayers[t];return null};QM=class extends Pi{constructor(e,t,i,r,s=null,a=ge.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:jo.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,jo.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new jo(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(()=>(KM(),YM)))):t.push(Promise.resolve().then(()=>(qM(),jM))),super._gatherImports(e,t)}},Ia=class n extends ra{static get NeutralColor(){return kl.NeutralColor}static set NeutralColor(e){kl.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 kl(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?Pn(e,this._maxSize):e,t=this._engine.needPOTTextures?Pn(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new Yr("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 Nu("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 QM("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 QM("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 so("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 so("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=st.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=st.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{Dl();sp();gF();Gi();mN();uM(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===_t.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==_t.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 TF(n),n._addComponent(e))}});function hQ(n,e,t=()=>!0,i=r=>[r]){let r=new Ia("ai3d-pick-highlight",n),s=new Ee(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let d of a)d.isDisposed()||(d.renderOutline=!1,d.outlineWidth=0);a=[]}function l(d){a=d.filter(u=>!u.isDisposed());for(let u of a)r.addMesh(u,s),u.renderOutline=!0,u.outlineColor=s,u.outlineWidth=.045}let c=n.onPointerObservable.add(d=>{var _;if(d.type!==at.POINTERDOWN)return;let u=d.event,h=u.clientX,m=u.clientY,g={altKey:u.altKey,ctrlKey:u.ctrlKey,metaKey:u.metaKey,shiftKey:u.shiftKey},p=d.pickInfo;if(p!=null&&p.hit&&p.pickedMesh){if(t()){let v=i(p.pickedMesh).filter(T=>!T.isDisposed());a.length===v.length&&a.every((T,S)=>T===v[S])||(o(),l(v))}else o();e({mesh:p.pickedMesh,pickedPoint:(_=p.pickedPoint)!=null?_:null,screenX:h,screenY:m,modifiers:g})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:m,modifiers:g})}),f=(()=>{o(),r.dispose(),n.onPointerObservable.remove(c)});return f.clearHighlight=o,f}var mQ=y(()=>{"use strict";wo();Kt();dQ();uQ()});function _Ee(n,e,t){let i=Ee.FromHexString(e),r=new ze(n,t);return r.emissiveColor=i,r.diffuseColor=Ee.Black(),r.specularColor=Ee.Black(),r.backFaceCulling=!1,r}function vEe(n){let e=new ze("gizmo-origin-mat",n);return e.emissiveColor=new Ee(.72,.78,.86),e.diffuseColor=Ee.Black(),e.specularColor=Ee.Black(),e}var dEe,$M,uEe,xF,hEe,mEe,AF,pEe,gEe,JM,pQ=y(()=>{"use strict";js();YR();KR();We();Kt();Qm();uO();jc();dEe=.32,$M=1.05,uEe=.075,xF=.28,hEe=.22,mEe=.16,AF=($M+xF)*.42,pEe=new b(AF,AF,AF),gEe=[{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)}];JM=class{constructor(e,t){this.engine=e,this.scene=new ri(e),this.scene.clearColor=new dt(0,0,0,0),this.scene.autoClear=!1,this.camera=new Ri("gizmo-cam",0,0,4.1,pEe,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new ba("gizmo-light",new b(0,1,.5),this.scene);let i=Nn.CreateSphere("gizmo-origin",{diameter:mEe,segments:16},this.scene);i.material=vEe(this.scene);for(let{name:s,color:a,rot:o,dir:l}of gEe){let c=_Ee(`gizmo-${s}-mat`,a,this.scene),f=Nn.CreateCylinder(`gizmo-${s}-shaft`,{height:$M,diameter:uEe,tessellation:8},this.scene);f.material=c,f.position=l.scale($M/2),f.rotation=o;let d=Nn.CreateCylinder(`gizmo-${s}-head`,{height:xF,diameterTop:0,diameterBottom:hEe,tessellation:8},this.scene);d.material=c;let u=$M+xF/2;d.position=l.scale(u),d.rotation=o}let r=dEe;this.viewport=new Po(.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 bF={};Be(bF,{boundingBoxRendererVertexShaderWGSL:()=>EEe});var RF,gQ,EEe,MF=y(()=>{W();RF="boundingBoxRendererVertexShader",gQ=`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 } -`;x.ShadersStoreWGSL[xF]||(x.ShadersStoreWGSL[xF]=pQ);gEe={name:xF,shader:pQ}});var yF={};Be(yF,{boundingBoxRendererPixelShaderWGSL:()=>_Ee});var MF,gQ,_Ee,IF=y(()=>{W();MF="boundingBoxRendererPixelShader",gQ=`uniform color: vec4f; +`;x.ShadersStoreWGSL[RF]||(x.ShadersStoreWGSL[RF]=gQ);EEe={name:RF,shader:gQ}});var IF={};Be(IF,{boundingBoxRendererPixelShaderWGSL:()=>SEe});var yF,_Q,SEe,CF=y(()=>{W();yF="boundingBoxRendererPixelShader",_Q=`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 -}`;x.ShadersStoreWGSL[MF]||(x.ShadersStoreWGSL[MF]=gQ);_Ee={name:MF,shader:gQ}});var _Q,vEe,vQ=y(()=>{W();_Q="boundingBoxRendererVertexDeclaration",vEe=`uniform mat4 world;uniform mat4 viewProjection; +}`;x.ShadersStoreWGSL[yF]||(x.ShadersStoreWGSL[yF]=_Q);SEe={name:yF,shader:_Q}});var vQ,TEe,EQ=y(()=>{W();vQ="boundingBoxRendererVertexDeclaration",TEe=`uniform mat4 world;uniform mat4 viewProjection; #ifdef MULTIVIEW uniform mat4 viewProjectionR; #endif -`;x.IncludesShadersStore[_Q]||(x.IncludesShadersStore[_Q]=vEe)});var EQ,EEe,CF=y(()=>{W();EQ="boundingBoxRendererUboDeclaration",EEe=`#ifdef WEBGL2 +`;x.IncludesShadersStore[vQ]||(x.IncludesShadersStore[vQ]=TEe)});var SQ,AEe,PF=y(()=>{W();SQ="boundingBoxRendererUboDeclaration",AEe=`#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 -`;x.IncludesShadersStore[EQ]||(x.IncludesShadersStore[EQ]=EEe)});var DF={};Be(DF,{boundingBoxRendererVertexShader:()=>SEe});var PF,SQ,SEe,LF=y(()=>{W();vQ();CF();PF="boundingBoxRendererVertexShader",SQ=`attribute vec3 position; +`;x.IncludesShadersStore[SQ]||(x.IncludesShadersStore[SQ]=AEe)});var LF={};Be(LF,{boundingBoxRendererVertexShader:()=>xEe});var DF,TQ,xEe,OF=y(()=>{W();EQ();PF();DF="boundingBoxRendererVertexShader",TQ=`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 } -`;x.ShadersStore[PF]||(x.ShadersStore[PF]=SQ);SEe={name:PF,shader:SQ}});var TQ,TEe,AQ=y(()=>{W();TQ="boundingBoxRendererFragmentDeclaration",TEe=`uniform vec4 color; -`;x.IncludesShadersStore[TQ]||(x.IncludesShadersStore[TQ]=TEe)});var NF={};Be(NF,{boundingBoxRendererPixelShader:()=>AEe});var OF,xQ,AEe,wF=y(()=>{W();AQ();CF();OF="boundingBoxRendererPixelShader",xQ=`#include<__decl__boundingBoxRendererFragment> +`;x.ShadersStore[DF]||(x.ShadersStore[DF]=TQ);xEe={name:DF,shader:TQ}});var AQ,REe,xQ=y(()=>{W();AQ="boundingBoxRendererFragmentDeclaration",REe=`uniform vec4 color; +`;x.IncludesShadersStore[AQ]||(x.IncludesShadersStore[AQ]=REe)});var wF={};Be(wF,{boundingBoxRendererPixelShader:()=>bEe});var NF,RQ,bEe,FF=y(()=>{W();xQ();PF();NF="boundingBoxRendererPixelShader",RQ=`#include<__decl__boundingBoxRendererFragment> #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) { #define CUSTOM_FRAGMENT_MAIN_BEGIN gl_FragColor=color; #define CUSTOM_FRAGMENT_MAIN_END -}`;x.ShadersStore[OF]||(x.ShadersStore[OF]=xQ);AEe={name:OF,shader:xQ}});var MQ,RQ,$M,xEe,REe,bQ,FF,yQ=y(()=>{Ks();Yi();pp();We();Oo();sp();oL();ts();zL();Kt();vi();Lu();Yf();NL();Sl();Lt();Object.defineProperty(ri.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ri.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new FF(this)),this._boundingBoxRenderer};Object.defineProperty(Ir.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});MQ=Z.Identity(),RQ=new Z,$M=new b,xEe=new b,REe=MQ.asArray(),bQ=new Qf($M,$M),FF=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=tt.NAME_BOUNDINGBOXRENDERER,this.frontColor=new Ee(1,1,1),this.backColor=new Ee(.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 Ki(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 Tr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new Tr(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=>{El(()=>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 Xo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[L.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(()=>(bF(),RF)),Promise.resolve().then(()=>(IF(),yF))]):await Promise.all([Promise.resolve().then(()=>(LF(),DF)),Promise.resolve().then(()=>(wF(),NF))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Xo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(bF(),RF)),Promise.resolve().then(()=>(IF(),yF))]):await Promise.all([Promise.resolve().then(()=>(LF(),DF)),Promise.resolve().then(()=>(wF(),NF))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=KR({size:1});this._vertexBuffers[L.PositionKind]=new L(e,t.positions,L.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[L.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(bQ);let s=0,a=this.scene.floatingOriginOffset;for(let _=0;_{"use strict";We();VO();Kt();wo();yQ();ks();mE();zC();Ld=class Ld{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new rn(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=IEe(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 yEe(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===at.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(u){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===at.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===at.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 bEe(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=je.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=BF(e),s=Mm(ei(i),ei(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=BF(e),i=this.camera.position,r=Of(ei(i),ei(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)&&Lf(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=RA({startPosition:ei(e.startPosition),pivot:ei(e.pivot),startRotationQuaternion:xA(e.startRotationQuaternion),yawAxis:ei(this.camera.getDirection(b.Up()).normalize()),pitchAxis:ei(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 je(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=BF(e),r=Mm(ei(i),ei(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,Z.Identity(),this.camera),l=AA({origin:ei(o.origin),direction:ei(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};Ld.BBOX_VISIBLE=new Ee(.25,.7,1),Ld.BBOX_OCCLUDED=new Ee(.1,.25,.4);UF=Ld});var wQ={};Be(wQ,{BabylonModelPreview:()=>e0,createBabylonModelPreview:()=>kEe});function NEe(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function VF(n){return n.getClassName()==="GaussianSplattingMesh"}function wEe(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function GF(n){return n instanceof $t}function Jc(n){return typeof n.isDisposed=="function"?n.isDisposed():!1}function lg(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function kF(n,e=[]){for(let t of n)t.isDisposed()||t.dispose(!0,!0);for(let t of e)t.isDisposed()||t.dispose(!1,!0)}function oo(n){return new b(n.x,n.y,n.z)}function OQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function NQ(n){let e=new ze("measure-marker-mat",n);return e.diffuseColor=gE.clone(),e.emissiveColor=gE.clone(),e.specularColor=new Ee(0,0,0),e.disableLighting=!0,e.alpha=.48,e}function pE(n,e){let t=n.material;t&&(t.diffuseColor=e.clone(),t.emissiveColor=e.clone())}function FEe(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 BEe(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 UEe(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 VEe(n,e,t){let i=Gs(e),r=i.replace(/\.[^.]+$/,""),s=dn(t),a=[In(n,e),In(n,i)];if(s)for(let o of PQ)a.push(In(n,`${s}.${o}`));for(let o of PQ){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}function GEe(n){return Number.isFinite(n)?n.toPrecision(10):String(n)}function kEe(n){return new e0(n)}var JM,PQ,CEe,PEe,DEe,DQ,gE,LEe,OEe,LQ,Ia,e0,FQ=y(()=>{"use strict";iL();Ks();HR();XR();AH();xH();ML();We();Kt();wi();$f();dO();Yi();jc();lY();VO();sM();E6();pL();Qp();dE();dE();iF();rF();FZ();hQ();_A();ga();ps();mQ();CQ();mE();gl();bA();wC();G_();ks();DA();F_();W_();JM=null,PQ=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],CEe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,PEe=.242,DEe=320,DQ=new Ee(.97,.98,.99),gE=new Ee(.97,.98,.99),LEe=new Ee(.96,.62,.04),OEe=new Ee(1,1,1),LQ=new Ee(.9,.91,.92);Ia=class Ia{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.renderScale=1;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.measurementBaseRootScaling=new b(1,1,1);this.measurementBaseBounds=null;this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementMarkerPoints=[];this.measurementTargetNode=null;this.measurementTargetMeshes=[];this.measurementSnapInputCache=null;this.measurementSnapInputCacheTargetId=null;this.measurementSnapInputCacheSignature=null;this.measurementSnapKind=null;this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0,altKey:!1};this.previewLine=null;this.cameraZoomObservers=new Set;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY,altKey:e.altKey},!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 ke(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ri(this.engine),this.scene.clearColor=new dt(.12,.12,.14,1),this.scene.setRenderingAutoClearDepthStencil(2,!0,!0,!0),this.camera=new Ri("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=45,this.camera.onViewMatrixChangedObservable.add(()=>{this.measurementSegments.length>0&&this.updateMeasurementOverlayPositions(),this.notifyCameraZoomChanged()}),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 Ee(.3,.3,.3);let t=new Ra("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}getCameraZoomRange(){if(!this.rootMesh)return null;let e=this.camera.radius,t=this.camera.lowerRadiusLimit,i=this.camera.upperRadiusLimit,r=typeof t=="number"&&Number.isFinite(t)&&t>0?t:Math.max(e*.08,1e-5),s=typeof i=="number"&&Number.isFinite(i)&&i>r?i:Math.max(e*8,r*10);return{current:Math.max(r,Math.min(e,s)),min:r,max:s}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=IQ(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,s){var g,p,_;Ti(s),await fE(),Ti(s),this.rootMesh&&(kF(this.loadedMeshes,this.loadedTransformNodes),this.rootMesh=null,this.notifyCameraZoomChanged()),this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),this.resetMeasurementCalibrationState(),(g=this.disassembly)==null||g.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let a=t.toLowerCase().replace(".","");this.loadedExt=a,this.resourceWarnings=[],Ti(s),this.gltfComponentMetadata=NZ(e,a);let o=this.scene,c=(p={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[a])!=null?p:`.${a}`;Ti(s);let f=`data:application/octet-stream;base64,${pu(e)}`;Ti(s);let d=v=>{try{Ti(s)}catch(E){throw kF(v.meshes,v.transformNodes),E}this.loadedMeshes=v.meshes,this.loadedTransformNodes=v.transformNodes,v.meshes.length>0&&(this.rootMesh=v.meshes[0])},u=()=>{try{Ti(s)}catch(v){throw kF(this.loadedMeshes,this.loadedTransformNodes),this.loadedMeshes=[],this.loadedTransformNodes=[],this.rootMesh=null,this.invalidateMeshCache(),this.notifyCameraZoomChanged(),v}};if(a==="obj"&&i&&r){JM&&await JM,Ti(s);let v;JM=new Promise(E=>{v=E});try{let{OBJFileLoader:E}=await Promise.resolve().then(()=>(eF(),TZ)),T=E.prototype;typeof T._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let S=T._loadMTL,R=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),M=null;if(R&&i&&r){let C=FEe(R[1]),D=w_(r),w=In(D,C);try{let k=await i(w);Ti(s);let N=new TextDecoder().decode(new Uint8Array(k)).split(` -`);for(let q=0;qq!=="");if(!B.some(q=>/^\s*Kd\s+/i.test(q))){let q=B.findIndex(j=>/^\s*newmtl\s+/i.test(j));B.splice(q>=0?q+1:0,0,"Kd 0.80 0.80 0.80")}M=B.join(` -`)}catch(k){if(Df(k))throw k;this.resourceWarnings.push(`OBJ material library not found: ${w}`)}}T._loadMTL=function(C,D,w){let k=M!=null?M:"";w(k)};let I=await Jv(f,o,{meshNames:"",pluginExtension:c});d(I),T._loadMTL=S}catch(E){throw Df(E)||console.error("[AI3D] OBJ load error:",E),E}finally{v(),JM=null}}else if(a==="stl"){let v=bZ(o,e);try{Ti(s)}catch(E){throw v==null||v.dispose(!1,!0),E}this.rootMesh=v,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else if(a==="ply"){let v=yZ(o,e);try{Ti(s)}catch(E){throw v==null||v.dispose(!1,!0),E}this.rootMesh=v,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else{let v=await Jv(f,o,{meshNames:"",pluginExtension:c});d(v)}if(u(),!this.rootMesh)throw new Error("No mesh found in model file");let h=this.getRenderableBounds(this.rootMesh);this.captureMeasurementBaseState(this.rootMesh,h);for(let v of this.getRenderableMeshes(this.rootMesh))v.material&&(v.material.backFaceCulling=!1);let m=V_(h);return this.camera.target=oo(m.target),this.camera.radius=m.radius,this.camera.lowerRadiusLimit=m.lowerRadiusLimit,this.camera.upperRadiusLimit=m.upperRadiusLimit,this.camera.minZ=m.near,this.camera.maxZ=m.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged(),this.startRenderLoop(),this.engine.resize(),(_=this.cleanupPicking)==null||_.call(this),this.cleanupPicking=uQ(this.scene,v=>{var S;if(this.isDisassemblyActive())return;let E=v.mesh&&this.rootMesh?hE(this.rootMesh,v.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,T={mesh:E,pickedPoint:v.pickedPoint,screenX:v.screenX,screenY:v.screenY,modifiers:v.modifiers};if(this._lastPickResult=T,this.measurementActive){if(((S=v.modifiers)==null?void 0:S.altKey)===!0){if(!v.pickedPoint)return;this.setMeasurementSnapKind("free"),this.addMeasurementPoint(oo(v.pickedPoint));return}if(!this.measurementTargetNode){E&&this.setMeasurementTargetNode(E);return}let A=this.getMeasurementTargetPickPoint(v.mesh,v.pickedPoint);if(!A){this.setMeasurementSnapKind(null);return}this.addMeasurementPoint(this.resolveMeasurementPickPoint(A,!1));return}this.focusSelectionEnabled&&E&&this.setFocusedNode(E),this._onPickCallbacks.forEach(A=>A(T))},()=>!this.focusSelectionEnabled&&!this.measurementActive,v=>this.resolvePickHighlightMeshes(v)),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),this.notifyCameraZoomChanged()}}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?Ee.FromHexString(e.color):Ee.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?Ee.FromHexString(e.groundColor):new Ee(.2,.2,.2),o=new Ra("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 $s("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 cd("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 Kr("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 cd("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(!NEe(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Fi(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=dt.FromColor3(Ee.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 wp,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=Xi(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=Nn.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new ze("ground-mat",this.scene);s.diffuseColor=new Ee(.15,.15,.15),s.specularColor=Ee.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=Xi(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=Nn.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new ze("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new Ee(.3,.3,.3),s.emissiveColor=new Ee(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=xU(e)*1.5,i=oo(e.min),r=U_(e)*.01,s=[["x",Ee.Red(),new b(t,0,0)],["y",Ee.Green(),new b(0,t,0)],["z",Ee.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=Nn.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new ze(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=Ee.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=Ee.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&&(VF(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(){var t,i;if(this.measurementActive)return this.deactivateMeasurementMode(),!1;this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1));let e=this.getCurrentMeasurementTargetNode();return(i=this.cleanupPicking)==null||i.clearHighlight(),this.clearFocusedMesh(),this.focusSelectionEnabled&&(this.focusSelectionEnabled=!1),this.measurementActive=!0,this.setMeasurementTargetNode(e,!1),wf(this.engine.getRenderingCanvas(),this.measurementActive),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}cancelMeasurement(){let e=!!this.pendingPoint;this.cancelPendingMeasurement(),e&&this.notifyMeasurementsChanged()}deactivateMeasurementMode(){return this.measurementActive?(this.measurementActive=!1,wf(this.engine.getRenderingCanvas(),!1),this.setMeasurementTargetNode(null,!1),this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),!0):!1}disposeMeasurementOverlays(e){e&&(this.measurementActive=!1,wf(this.engine.getRenderingCanvas(),!1),this.setMeasurementTargetNode(null,!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=[],this.measurementMarkerPoints=[],this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=_s(e),this.invalidateMeasurementSnapInputCache(),this.applyMeasurementModelScale(),this.updateMeasurementOverlayPositions(),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=k_(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){var t;if(!this.rootMesh)return null;let e=(t=this.measurementBaseBounds)!=null?t: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()}getMeasurementState(){return zA({active:this.measurementActive,pending:!!this.pendingPoint,records:this.createMeasurementRecords(),unit:this.measurementUnit,scale:this.getMeasurementScale(),bounds:this.getMeasurementBounds(),targetLocked:!!this.measurementTargetNode,targetName:this.getMeasurementTargetName(),snapKind:this.measurementSnapKind})}exportMeasurements(){return KA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*3.2;for(let i of this.measurementSegments){this.updateMeasurementLineGeometry(i);let r=Dm(this.createMeasurementReading(i.start,i.end));i.label.dispose(!1,!0);let s=this.createBabylonMeasurementDraftingLayout(i.start,i.end),a=(t=s==null?void 0:s.labelPosition)!=null?t:b.Center(this.toMeasurementDisplayPoint(i.start),this.toMeasurementDisplayPoint(i.end));i.label=this.createMeasurementLabelMesh(r,a,e)}}captureMeasurementBaseState(e,t){this.measurementBaseRootScaling=e.scaling.clone(),this.measurementBaseBounds=t?Ga(t.min,t.max):null,this.measurementScale={x:1,y:1,z:1}}resetMeasurementCalibrationState(){this.measurementScale={x:1,y:1,z:1},this.measurementBaseRootScaling=new b(1,1,1),this.measurementBaseBounds=null,this.measurementMarkerPoints=[],this.invalidateMeasurementSnapInputCache()}applyMeasurementModelScale(){if(!this.rootMesh)return;let e=_s(this.measurementScale);this.rootMesh.scaling=new b(this.measurementBaseRootScaling.x*e.x,this.measurementBaseRootScaling.y*e.y,this.measurementBaseRootScaling.z*e.z),this.rootMesh.computeWorldMatrix(!0);for(let t of this.loadedMeshes)t.computeWorldMatrix(!0);this.invalidateMeshCache(),this.rebuildScaledSceneHelpers(),this.refitCameraToModel(),this.startRenderLoop()}rebuildScaledSceneHelpers(){var s,a,o;let e=!!this.bboxMesh,t=!!this.groundMesh,i=!!this.gridMesh,r=this.axisMeshes.length>0;(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,(a=this.groundMesh)==null||a.dispose(),this.groundMesh=null,(o=this.gridMesh)==null||o.dispose(),this.gridMesh=null;for(let l of this.axisMeshes)l.dispose();if(this.axisMeshes=[],e&&this.rootMesh){let l=this.getRenderableBounds(this.rootMesh),c=oo(Er(l)),f=oo(Xi(l));this.bboxMesh=Nn.CreateBox("bbox",{width:f.x,height:f.y,depth:f.z},this.scene),this.bboxMesh.position=c;let d=new ze("bbox-mat",this.scene);d.wireframe=!0,d.emissiveColor=new Ee(1,1,0),d.disableLighting=!0,d.alpha=.6,this.bboxMesh.material=d}t&&this.createGround(),i&&this.createGrid(),r&&this.createAxis()}refitCameraToModel(){if(!this.rootMesh)return;let e=V_(this.getRenderableBounds(this.rootMesh));this.camera.target=oo(e.target),this.camera.radius=e.radius,this.camera.lowerRadiusLimit=e.lowerRadiusLimit,this.camera.upperRadiusLimit=e.upperRadiusLimit,this.camera.minZ=e.near,this.camera.maxZ=e.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged()}getMeasurementPivot(){var e,t;return(t=(e=this.rootMesh)==null?void 0:e.getAbsolutePosition().clone())!=null?t:b.Zero()}toMeasurementDisplayPoint(e){let t=BA(e,this.getMeasurementPivot(),this.measurementScale);return new b(t.x,t.y,t.z)}toMeasurementBasePoint(e){let t=UA(e,this.getMeasurementPivot(),this.measurementScale);return new b(t.x,t.y,t.z)}updateMeasurementOverlayPositions(){for(let e=0;e{this.cameraZoomObservers.delete(e)}}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=oo(Er(t)),r=oo(Xi(t));this.bboxMesh=Nn.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new ze("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new Ee(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)),e&&this.deactivateMeasurementMode(),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(),this.deactivateMeasurementMode()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&wZ(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&lF(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&lF(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(),this.startRenderLoop(),this.notifyCameraZoomChanged()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=VF(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Gs(e)||r.rootName;return CA({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>DZ(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=OZ(e,this.loadedTransformNodes,this.gltfComponentMetadata);return NA({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>sF(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:GF(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Jc(e)?null:aF(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?PA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?ei(e.pickedPoint):this.rootMesh&&GF(e.mesh)?aF(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)/DEe)),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 OA([{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=Ia.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,Ia.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),Ia.annotationProjection),DU(Ia.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=Of(ei(this.camera.position),e);if(!t)return!1;let i=Ia.annotationDirection,r=Ia.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)&&Lf(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return LA({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=this.renderScale){this.currentQuality=e,this.renderScale=Math.max(.25,Math.min(t,2));let i={low:2,medium:1.33,high:1},r=Rr()?1.5:1,s=i[e]*r/this.renderScale;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=[],this.cameraZoomObservers.clear(),(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.measurementObservers.clear(),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=sh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return VM(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=hE(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>lg(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||Jc(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>lg(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:PEe,a.renderOutline=o,a.outlineColor=new Ee(.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,this.applyMeasurementTargetVisual(this.measurementTargetMeshes)}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>lg(r,e)))return e;if(!wEe(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>lg(s,r)))return r;i=i.parent}return null}getCurrentMeasurementTargetNode(){var t;let e=(t=this.focusedNode)!=null?t:GF(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Jc(e)?null:this.findSelectableNode(e)}setMeasurementTargetNode(e,t=!0){this.clearMeasurementTargetVisual(!1),this.invalidateMeasurementSnapInputCache();let i=e&&!Jc(e)?this.findSelectableNode(e):null;if(!i||Jc(i)){this.measurementTargetNode=null,this.measurementTargetMeshes=[],this.setMeasurementSnapKind(null,!1),t&&this.notifyMeasurementsChanged();return}let r=this.getMeasurementTargetMeshes(i);if(r.length===0){this.measurementTargetNode=null,this.measurementTargetMeshes=[],this.setMeasurementSnapKind(null,!1),t&&this.notifyMeasurementsChanged();return}this.measurementTargetNode=i,this.measurementTargetMeshes=r,this.setMeasurementSnapKind(null,!1),this.applyMeasurementTargetVisual(r),this.scene.render(),t&&this.notifyMeasurementsChanged()}clearMeasurementTargetVisual(e=!0){for(let t of this.measurementTargetMeshes)t.isDisposed()||(t.renderOutline=!1,t.outlineWidth=0);this.measurementTargetMeshes=[],e&&!this.scene.isDisposed&&this.scene.render()}applyMeasurementTargetVisual(e){if(!(!this.measurementActive||e.length===0))for(let t of e)t.isDisposed()||(t.renderOutline=!0,t.outlineColor=new Ee(.38,.65,.98),t.outlineWidth=.045)}setMeasurementSnapKind(e,t=!0){this.measurementSnapKind!==e&&(this.measurementSnapKind=e,t&&this.notifyMeasurementsChanged())}invalidateMeasurementSnapInputCache(){this.measurementSnapInputCache=null,this.measurementSnapInputCacheTargetId=null,this.measurementSnapInputCacheSignature=null}getMeasurementTargetName(){let e=this.measurementTargetNode;return!e||Jc(e)?null:Cd(e,e.name||`node-${e.uniqueId}`)}getMeasurementTargetBounds(){if(!this.rootMesh||!this.measurementTargetNode||Jc(this.measurementTargetNode))return null;let e=this.findSelectableNode(this.measurementTargetNode);if(!e)return null;this.measurementTargetNode=e;let t=this.getRenderableMeshes(this.rootMesh).filter(i=>lg(i,e));return Gl(t)}resolveMeasurementPickPoint(e,t){if(t)return this.setMeasurementSnapKind("free"),e;let i=this.createMeasurementGeometrySnapInput();if(!i)return this.setMeasurementSnapKind("free"),e;let r=VA(this.toMeasurementPoint(e),i);return r?(this.setMeasurementSnapKind(r.kind),oo(r.point)):(this.setMeasurementSnapKind("free"),e)}createMeasurementGeometrySnapInput(){var f;let e=this.measurementTargetNode;if(!this.rootMesh||!e||Jc(e))return null;let t=this.getMeasurementTargetMeshes(e);if(t.length===0)return null;let i=this.createMeasurementSnapInputSignature(t);if(this.measurementSnapInputCache&&this.measurementSnapInputCacheTargetId===e.uniqueId&&this.measurementSnapInputCacheSignature===i)return this.measurementSnapInputCache;let r=[],s=[],a=`babylon:${e.uniqueId}`;for(let d of t){if(d.isDisposed())continue;let u=d.getVerticesData(L.PositionKind);if(!u||u.length<3)continue;let h=d.computeWorldMatrix(!0),m=[],g=Math.floor(u.length/3);for(let _=0;_{var r;let i="geometry"in t&&t.geometry?(r=t.geometry.uniqueId)!=null?r:"geometry":"none";return[t.uniqueId,i,t.getTotalVertices(),t.getTotalIndices(),t.computeWorldMatrix(!0).asArray().map(GEe).join(",")].join(":")}).join("|")}getMeasurementTargetMeshes(e=this.measurementTargetNode){return!this.rootMesh||!e||Jc(e)?[]:this.getRenderableMeshes(this.rootMesh).filter(t=>!t.isDisposed()&&lg(t,e))}getMeasurementTargetPickPoint(e,t){return!e||e.isDisposed()||!t?null:this.measurementTargetMeshes.includes(e)?t.clone():null}pickFrontmostMeasurementTargetPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.measurementTargetMeshes.length===0)return null;let r=i.getBoundingClientRect(),s=e-r.left,a=t-r.top,o=this.scene.pick(s,a,l=>l!==this.previewLine&&!this.measurementMarkers.includes(l));return o!=null&&o.hit?this.getMeasurementTargetPickPoint(o.pickedMesh,o.pickedPoint):null}createBabylonMeasurementDraftingLayout(e,t){var l,c,f;let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.getMeasurementMarkerSize(),a=(f=(c=(l=this.camera.upVector)==null?void 0:l.clone)==null?void 0:c.call(l))!=null?f:new b(0,1,0);a.normalize();let o=WA(this.toMeasurementPoint(i),this.toMeasurementPoint(r),{viewPosition:this.toMeasurementPoint(this.camera.position),viewUp:this.toMeasurementPoint(a),offset:s*4.2,extensionGap:s*.55,extensionOvershoot:s*.8,arrowLength:s*2.35,arrowWidth:s*.78,labelGap:s*1.05});return o?{lineSegments:o.lineSegments.map(([d,u])=>[oo(d),oo(u)]),labelPosition:oo(o.labelPoint)}: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)*.018:.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,i&&this.setMeasurementSnapKind(null,!1),this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&(this.measurementMarkers.splice(a,1),this.measurementMarkerPoints.splice(a,1)),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),pE(t,gE));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,i=this.toMeasurementDisplayPoint(e);for(let r=0;r=0?this.measurementMarkerPoints[i].clone():t;if(this.pendingPoint){if(b.Distance(r,this.pendingPoint)<1e-4)return;if(i<0){let s=this.getMeasurementMarkerSize(),a=Nn.CreateSphere("measure-marker",{diameter:s*.76,segments:12},this.scene);a.position=this.toMeasurementDisplayPoint(r),a.isPickable=!1,a.material=NQ(this.scene),a.renderingGroupId=2,this.measurementMarkers.push(a),this.measurementMarkerPoints.push(r.clone())}this.createMeasurementSegment(this.pendingPoint,r),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),pE(this.pendingMarker,gE)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(i<0){let s=this.getMeasurementMarkerSize(),a=Nn.CreateSphere("measure-marker",{diameter:s*.76,segments:12},this.scene);a.position=this.toMeasurementDisplayPoint(r),a.isPickable=!1,a.material=NQ(this.scene),a.renderingGroupId=2,this.measurementMarkers.push(a),this.measurementMarkerPoints.push(r.clone()),this.pendingMarker=a}else this.pendingMarker=this.measurementMarkers[i];this.pendingMarker.scaling.setAll(1.6),pE(this.pendingMarker,LEe),this.pendingPoint=r,this.ensurePreviewLine()}this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){var f,d;let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.createBabylonMeasurementDraftingLayout(e,t),a=Nn.CreateLineSystem("measure-line",{lines:(f=s==null?void 0:s.lineSegments)!=null?f:[[i,r]]},this.scene);a.color=DQ.clone(),a.alpha=1,a.isPickable=!1,a.renderingGroupId=2;let o=Dm(this.createMeasurementReading(e,t)),l=(d=s==null?void 0:s.labelPosition)!=null?d:b.Center(i,r),c=this.createMeasurementLabelMesh(o,l,this.getMeasurementMarkerSize()*3.2);this.measurementSegments.push({start:e.clone(),end:t.clone(),line:a,label:c})}createMeasurementLabelMesh(e,t,i){let r=Nn.CreatePlane("measure-label",{width:i*3.7,height:i*1.08},this.scene);r.position=t,r.billboardMode=Q.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new eM("measure-label-tex",{...oc},this.scene);s.hasAlpha=!0;let a=s.getContext();YA(a,e,oc.width,oc.height),s.update();let o=new ze("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new Ee(1,1,1),o.disableLighting=!0,o.disableDepthWrite=!0,o.opacityTexture=s,o.useAlphaFromDiffuseTexture=!0,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=Nn.CreateLineSystem("measure-preview",{lines:Array.from({length:7},()=>[b.Zero(),b.Zero()]),updatable:!0},this.scene),this.previewLine.color=LQ.clone(),this.previewLine.alpha=.82,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){var l;if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.toMeasurementDisplayPoint(this.pendingPoint),t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=this.lastPointerClient.x-i.left,s=this.lastPointerClient.y-i.top,a=null;if(this.lastPointerClient.altKey){this.setMeasurementSnapKind("free");let c=this.scene.pick(r,s,f=>f!==this.previewLine&&!this.measurementMarkers.includes(f));a=c.hit&&c.pickedPoint?this.resolveMeasurementPickPoint(c.pickedPoint,!0):e.add(this.scene.createPickingRay(r,s,Z.Identity(),this.camera).direction.scale(5))}else{let c=this.pickFrontmostMeasurementTargetPoint(this.lastPointerClient.x,this.lastPointerClient.y);c?a=this.resolveMeasurementPickPoint(c,!1):this.setMeasurementSnapKind(null)}let o=a?this.createBabylonMeasurementDraftingLayout(this.pendingPoint,this.toMeasurementBasePoint(a)):null;this.previewLine=Nn.CreateLineSystem("measure-preview",{lines:(l=o==null?void 0:o.lineSegments)!=null?l:[[e,e]],instance:this.previewLine},this.scene),this.previewLine.color=LQ.clone(),this.previewLine.alpha=.82,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return XA(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=VF(e),r=t.reduce((s,a)=>s+Pd(a),0);return GM(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};Ia.annotationIdentity=Z.Identity(),Ia.annotationWorldPoint=b.Zero(),Ia.annotationProjection=b.Zero(),Ia.annotationDirection=b.Zero(),Ia.annotationRay=new rn(b.Zero(),b.Zero(),1);e0=Ia});async function BQ(n,e){if(bh(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(cV(),lV));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(FQ(),wQ));return i(n)}var UQ=y(()=>{"use strict";$E()});var GQ={};Be(GQ,{createBabylonGridRenderer:()=>zEe});function WEe(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function WF(n){return new b(n.x,n.y,n.z)}function VQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function zEe(n){return new zF(n)}var cg,zF,kQ=y(()=>{"use strict";iL();Ks();HR();XR();We();Kt();Qm();Qp();$f();jc();dE();dE();mE();_A();ga();gl();bA();cg=32;zF=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.warmupFrame=null;this.renderScale=1;this.cameraZoomObservers=new Set;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(),this.scheduleWarmupFrames()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new ke(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ri(this.engine),this.scene.clearColor=new dt(.12,.12,.14,1),this.scene.autoClear=!1,new Ra("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}getCameraZoomRange(e){let t=e.radius,i=e.lowerRadiusLimit,r=e.upperRadiusLimit,s=typeof i=="number"&&Number.isFinite(i)&&i>0?i:Math.max(t*.08,1e-5),a=typeof r=="number"&&Number.isFinite(r)&&r>s?r:Math.max(t*8,s*10);return{current:Math.max(s,Math.min(t,a)),min:s,max:a}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}scheduleWarmupFrames(e=8){this.warmupFrame!==null&&window.cancelAnimationFrame(this.warmupFrame),this.warmupFrame=window.requestAnimationFrame(()=>{this.warmupFrame=null,!(!this.canRender()||this.contextLost)&&(this.markDirty(),e>1&&this.scheduleWarmupFrames(e-1))})}getCellBounds(e){let t=Gl(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,u,h;await fE();let r=e.length>cg?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${cg} (layerMask limit)`),e.slice(0,cg)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(u=t.gapX)!=null?u:.02,o=(h=t.gapY)!=null?h:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;mcg?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${cg} (layerMask limit)`),e.placements.slice(0,cg)):e.placements,r=[];for(let f=0;f0&&(u.push(...r[g]),h|=1<{this.markDirty(),this.notifyCameraZoomChanged()})),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 u,h;let l=await t(e.path),c=(h=(u=e.path.split(".").pop())==null?void 0:u.replace(".","").toLowerCase())!=null?h:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=Ee.FromHexString(e.color);for(let g of f)g.material instanceof ze&&g.material.name==="stl-mat"&&(g.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof ze&&(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=V_(this.getCellBounds(e)),l=new Ri(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,WF(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=45,l.viewport=new Po(i,r,s,a),l.layerMask=1<{this.markDirty(),this.notifyCameraZoomChanged()})),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));this.renderScale=t;let i=Rr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),this.getRenderScale()}getRenderScale(){return Number(this.renderScale.toFixed(2))}getCameraZoomState(){var s;let e=(s=this.cells[0])==null?void 0:s.camera;if(!e)return null;let t=this.getCameraZoomRange(e),i=(t.max-t.current)/(t.max-t.min),r=VQ(i);return{value:r,percentage:Math.round(r*100)}}setCameraZoom(e){if(this.cells.length===0)return null;let t=VQ(e);for(let i of this.cells){let r=this.getCameraZoomRange(i.camera);i.camera.radius=r.max-t*(r.max-r.min)}return this.markDirty(),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}resetView(){for(let e=0;e(kQ(),GQ));return e(n)}var zQ=y(()=>{"use strict"});var YQ={};Be(YQ,{createLoggedGridRenderer:()=>HF,createLoggedModelPreview:()=>fg,logGridPreviewSelection:()=>XQ,logModelPreviewSelection:()=>HQ});function HQ(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 fg(n,e,t,i){let r=bh(i);return HQ(n,e,r),{preview:await BQ(t,i),route:r}}function XQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function HF(n,e,t){let i=I3();return XQ(n,e,i),{renderer:await WQ(t),route:i}}var t0=y(()=>{"use strict";UQ();zQ();$E()});function XF(n){jQ=n}function i0(n){return KQ[n]>=KQ[jQ]}function r0(){return new Date().toISOString()}function n0(n){return n&&Object.keys(n).length>0?n:void 0}function Zi(n){let e=`[AI3D][${n}]`;return{debug(t,i){i0("debug")&&console.debug(e,r0(),t,n0(i))},info(t,i){i0("info")&&console.debug(e,r0(),t,n0(i))},warn(t,i){i0("warn")&&console.warn(e,r0(),t,n0(i))},error(t,i){i0("error")&&console.error(e,r0(),t,n0(i))}}}var KQ,jQ,wn=y(()=>{"use strict";KQ={debug:10,info:20,warn:30,error:40},jQ="warn"});var ZQ={};Be(ZQ,{supportsAnimationPreview:()=>a0,supportsAnnotationPreview:()=>s0,supportsBoundingBoxPreview:()=>l0,supportsCameraZoomPreview:()=>c0,supportsDisassemblyPreview:()=>dg,supportsFocusSelectionPreview:()=>ug,supportsMeasurementPreview:()=>vn,supportsOrientationGizmoPreview:()=>_E,supportsRenderScalePreview:()=>vE,supportsWireframePreview:()=>o0,supportsWorkbenchPreview:()=>qQ});function rr(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function s0(n){return rr(n,"getAnnotationProvider")}function a0(n){return rr(n,"hasAnimations")&&rr(n,"toggleAnimation")}function vn(n){return rr(n,"toggleMeasurement")&&rr(n,"isMeasurementActive")&&rr(n,"cancelMeasurement")&&rr(n,"clearMeasurements")&&rr(n,"setMeasurementScale")&&rr(n,"getMeasurementScale")&&rr(n,"setMeasurementUnit")&&rr(n,"getMeasurementUnit")&&rr(n,"getMeasurementBounds")&&rr(n,"getMeasurementRecords")&&rr(n,"getMeasurementState")&&rr(n,"updateMeasurementLabels")&&rr(n,"exportMeasurements")}function dg(n){return rr(n,"toggleDisassembly")&&rr(n,"resetDisassembly")&&rr(n,"isDisassemblyEnabled")}function ug(n){return rr(n,"toggleFocusSelection")&&rr(n,"isFocusSelectionEnabled")}function o0(n){return rr(n,"toggleWireframe")}function _E(n){return rr(n,"toggleOrientationGizmo")}function l0(n){return rr(n,"toggleBoundingBox")}function vE(n){return rr(n,"setRenderScale")}function c0(n){return rr(n,"getCameraZoomState")&&rr(n,"setCameraZoom")}function qQ(n){return rr(n,"setExplode")&&rr(n,"resetExplode")&&rr(n,"focusWorldPoint")}var ah=y(()=>{"use strict"});function f0(n,e){return gu(n,e)}function QQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function d0(n,e){let t=f0("div","ai3d-zoom-control is-hidden"),i=f0("div","ai3d-zoom-track"),r=f0("div","ai3d-zoom-fill"),s=f0("input","ai3d-zoom-range");s.type="range",s.min="0",s.max="100",s.step="1",s.value="0",s.setAttribute("aria-label",X("helper.cameraZoomLabel")),s.setAttribute("aria-orientation","vertical"),i.appendChild(r),t.append(i,s),n.appendChild(t);let a=null,o=null,l=null,c=E=>{E.stopPropagation()};t.addEventListener("mousedown",c),t.addEventListener("click",c);function f(){let E=e();return c0(E)?E:null}function d(E){if(!E){t.classList.add("is-hidden"),s.disabled=!0;return}let T=QQ(E.value),S=Math.round(T*100);s.disabled=!1,s.value=String(S),t.style.setProperty("--ai3d-zoom-percent",`${S}%`);let A=Bi("helper.cameraZoomValue",{value:`${E.percentage}%`});s.setAttribute("aria-valuenow",String(S)),s.setAttribute("aria-valuetext",A),t.setAttribute("title",A),t.classList.remove("is-hidden")}function u(E){E!==a&&(o==null||o(),o=null,a=E,E!=null&&E.observeCameraZoom&&(o=E.observeCameraZoom(d)))}function h(){var T;let E=f();u(E),d((T=E==null?void 0:E.getCameraZoomState())!=null?T:null)}function m(){g(s.valueAsNumber/100)}function g(E){let T=a!=null?a:f();if(!T){h();return}u(T),d(T.setCameraZoom(QQ(E)))}function p(E){let T=i.getBoundingClientRect();return T.height<=0?s.valueAsNumber/100:1-(E-T.top)/T.height}function _(E){E.preventDefault(),E.stopPropagation(),s.focus({preventScroll:!0}),g(p(E.clientY))}function v(E){var T;l===E.pointerId&&(E.preventDefault(),E.stopPropagation(),(T=t.hasPointerCapture)!=null&&T.call(t,E.pointerId)&&t.releasePointerCapture(E.pointerId),l=null,t.classList.remove("is-dragging"))}return s.addEventListener("input",m),t.addEventListener("pointerdown",E=>{var T;if(E.button!==0||s.disabled){E.stopPropagation();return}l=E.pointerId,(T=t.setPointerCapture)==null||T.call(t,E.pointerId),t.classList.add("is-dragging"),_(E)}),t.addEventListener("pointermove",E=>{l===E.pointerId&&_(E)}),t.addEventListener("pointerup",v),t.addEventListener("pointercancel",v),t.addEventListener("wheel",E=>{E.preventDefault(),E.stopPropagation();let T=E.deltaY<0?6:-6;s.value=String(Math.max(0,Math.min(100,s.valueAsNumber+T))),m()},{passive:!1}),h(),{sync:h,destroy(){o==null||o(),o=null,a=null,t.remove()}}}var YF=y(()=>{"use strict";En();ah();Rm()});function qr(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 $Q(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{let s=Math.abs(i-e),a=Math.abs(hg[t]-e);s{te.stopPropagation()};u.addEventListener("pointerdown",p),u.addEventListener("mousedown",p),u.addEventListener("click",p);let _=te=>{if(te.key!=="Escape"||te.defaultPrevented)return;let Le=te.target;if(Le instanceof Node&&!u.contains(Le)&&!e.contains(Le))return;let Ot=Zt();!Ot||!HA(Ot)||(Ht(),te.preventDefault(),te.stopPropagation())};u.addEventListener("keydown",_),e.addEventListener("keydown",_),f&&(u.classList.add("is-mobile"),e$(e,!1));let v=d0(e,i),E=null,T=null,S=te=>(te.classList.add("is-secondary"),te),A=(te,Le)=>{te.classList.toggle("ai3d-btn-active",Le),te.setAttribute("aria-pressed",String(Le))},R=()=>{for(let te of[h,m,g]){let Le=Array.from(te.querySelectorAll(".ai3d-inline-btn")).filter(mi=>!mi.classList.contains("is-hidden")),Ot=Le.length>0,bi=Le.some(mi=>!mi.classList.contains("is-secondary"));te.classList.toggle("is-hidden",!Ot),te.classList.toggle("has-primary-visible",bi)}},M=!1,I=!1,C=f?h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":X("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;C==null||C.appendChild(qr(''));let D=(zE=C==null?void 0:C.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?zE:null,w=()=>{f&&C&&(e$(e,M),A(C,M),D==null||D.setText(M?X("helper.scrollAction"):X("helper.interactAction")),C.setAttribute("aria-label",M?X("helper.disableInteractionLabel"):X("helper.enableInteractionLabel"))),A(Pe,I),u.classList.toggle("show-secondary",I),R()},k=te=>{M=te,w()};C==null||C.addEventListener("click",()=>{let te=!M;l==null||l(te),k(te),Ei(C,te?X("helper.interactionOn"):X("helper.interactionOff"))});let O=(te,Le)=>{te.classList.toggle("is-hidden",!Le)},N=null,B=()=>{var mi;let te=i(),Le=te&&ug(te)?te:null,Ot=te&&dg(te)?te:null,bi=te&&vn(te)?te:null;A(me,!!(Le!=null&&Le.isFocusSelectionEnabled())),A(Ue,!!(Ot!=null&&Ot.isDisassemblyEnabled())),A(ue,!!(bi!=null&&bi.isMeasurementActive())),te&&_E(te)&&A(Y,!!((mi=te.isOrientationGizmoEnabled)!=null&&mi.call(te)))},V=()=>{let te=i(),Le=te&&ug(te)?te:null,Ot=te&&dg(te)?te:null,bi=te&&a0(te)?te:null,mi=te&&vE(te)?te:null;te!==N&&(N=te,A(H,!1),A(de,!1),A(Ce,!1),Ce.replaceChildren(qr('')),O(q,!!(te!=null&&te.resetView)),O(j,!!(te!=null&&te.exportModelInfo)),O(J,!!(te!=null&&te.exportSelectedPartInfo)),O(H,!!te&&o0(te)),O(Y,!!te&&_E(te)),O(de,!!te&&l0(te)),O(me,!!Le),O(Ue,!!Ot),O(ne,!!mi),O(Ce,!!(bi!=null&&bi.hasAnimations()))),ve(mi),O(ue,!!te&&vn(te)),B(),Ht(),R(),v.sync()},q=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.resetViewLabel")}});sn(q,"reset-view"),q.appendChild(qr('')),q.addEventListener("click",()=>{let te=i();te!=null&&te.resetView&&(te.resetView(),V(),Ei(q,X("helper.resetViewDone")))});let j=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copyModelInfoLabel")}}));sn(j,"copy-model-info"),j.appendChild(qr('')),j.addEventListener("click",()=>{let te=i();if(te!=null&&te.exportModelInfo)try{let Le=te.exportModelInfo(r());if(!Le)return;navigator.clipboard.writeText(Le).then(()=>{Ei(j,X("helper.copied"))}).catch(()=>{Ei(j,X("helper.failed"))})}catch(Le){console.error("[AI3D] Export model info failed:",Le),Ei(j,X("helper.failed"))}});let J=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copySelectedPartInfoLabel")}}));sn(J,"copy-selected-part-info"),J.appendChild(qr('')),J.addEventListener("click",()=>{let te=i();if(te!=null&&te.exportSelectedPartInfo)try{let Le=te.exportSelectedPartInfo();if(!Le){Ei(J,X("helper.noSelectedPart"));return}navigator.clipboard.writeText(Le).then(()=>{Ei(J,X("helper.copied"))}).catch(()=>{Ei(J,X("helper.failed"))})}catch(Le){console.error("[AI3D] Export selected part info failed:",Le),Ei(J,X("helper.failed"))}});let H=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleWireframeLabel"),"aria-pressed":"false"}});sn(H,"toggle-wireframe"),H.appendChild(qr('')),H.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleWireframe))return;let Le=te.toggleWireframe();A(H,Le),Ei(H,Le?X("helper.wireframeOn"):X("helper.wireframeOff"))});let Y=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleAxesLabel"),"aria-pressed":"false"}});sn(Y,"toggle-axes"),Y.appendChild(qr('')),Y.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleOrientationGizmo))return;let Le=te.toggleOrientationGizmo();A(Y,Le),Ei(Y,Le?X("helper.axesOn"):X("helper.axesOff"))});let de=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});sn(de,"toggle-bounding-box"),de.appendChild(qr('')),de.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleBoundingBox))return;let Le=te.toggleBoundingBox();A(de,Le),Ei(de,Le?X("helper.boundingBoxOn"):X("helper.boundingBoxOff"))});let me=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});sn(me,"toggle-focus"),me.appendChild(qr('')),me.addEventListener("click",()=>{let te=i();if(!te||!ug(te))return;let Le=te.toggleFocusSelection();V(),Ei(me,Le?X("helper.focusSelectionOn"):X("helper.focusSelectionOff"))});let Ue=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});sn(Ue,"toggle-disassembly"),Ue.appendChild(qr('')),Ue.addEventListener("click",()=>{let te=i();if(!te||!dg(te))return;let Le=te.toggleDisassembly();V(),Ei(Ue,Le?X("helper.disassemblyOn"):X("helper.disassemblyOff"))});let ae=u0((HE=a==null?void 0:a().renderScale)!=null?HE:1),_e=KF(ae),ne=S(h.createEl("button",{cls:"ai3d-inline-btn ai3d-res-btn",attr:{"aria-label":X("helper.changeResolutionLabel")}}));sn(ne,"change-resolution");function ve(te=null){var bi,mi;let Le=jF(te,(mi=(bi=a==null?void 0:a().renderScale)!=null?bi:hg[_e])!=null?mi:1);_e=KF(Le);let Ot=JQ(Le);ne.textContent=Ot,ne.setAttribute("title",Bi("helper.resolutionValue",{value:Ot}))}ve(),ne.addEventListener("click",()=>{let te=i();if(!te||!vE(te))return;_e=(KF(jF(te,hg[_e]))+1)%hg.length;let Ot=te.setRenderScale(hg[_e]),bi=jF(te,Ot);ve(te),Ei(ne,Bi("helper.resolutionValue",{value:JQ(bi)}))});let Ce=S(h.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":X("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));sn(Ce,"toggle-animation"),Ce.appendChild(qr('')),Ce.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleAnimation))return;let Le=te.toggleAnimation();Ce.replaceChildren(qr(Le?'':'')),A(Ce,Le),Ei(Ce,Le?X("helper.playing"):X("helper.paused"))});let ue=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":X("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:X("helper.toggleMeasurementLabel")}});sn(ue,"toggle-measurement"),ue.appendChild(qr('')),ue.addEventListener("click",()=>{let te=i();if(!te||!vn(te))return;let Le=te.toggleMeasurement();V(),Ei(ue,Le?X("helper.measurementOn"):X("helper.measurementOff")),Le||A(ct,!1)});function be(te){let Le=i();!Le||!vn(Le)||(Le.clearMeasurements(),A(ue,Le.isMeasurementActive()),Ht(),Ei(te,X("helper.measurementsCleared")))}function Ge(te){let Le=i();if(!Le||!vn(Le))return;let Ot=Le.exportMeasurements();if(!Ot){Ei(te,X("helper.noMeasurements"));return}navigator.clipboard.writeText(Ot).then(()=>{Ei(te,X("helper.measurementsCopied"))}).catch(()=>{Ei(te,X("helper.failed"))})}let qe=m.createEl("button",{cls:"ai3d-measurement-strip is-hidden",attr:{"aria-expanded":"false","aria-label":X("helper.calibrateLabel")}});sn(qe,"toggle-measurement-details"),qe.setAttribute("aria-live","polite");let Ye=qe.createSpan({cls:"ai3d-measurement-strip-value"}),Ke=qe.createSpan({cls:"ai3d-measurement-strip-meta"});function Zt(){let te=i();return te&&vn(te)?te:null}function Ut(te){te!==E&&(T==null||T(),T=null,E=te,te!=null&&te.observeMeasurements&&(T=te.observeMeasurements(()=>{B(),Ht()})))}function Wi(te){var Ot;if(te.phase==="select-target")return X("helper.measurementSelectTarget");if(te.phase==="picking-end"&&te.snapKind)return oe(te.snapKind);if(te.phase==="picking-end")return X("helper.measurementPickEnd");let Le=(Ot=te.records[te.records.length-1])!=null?Ot:null;return Le?Nf(Le.reading.distance,Le.reading.unit):te.snapKind?oe(te.snapKind):te.phase==="ready"?X("helper.measurementPickStart"):te.phase==="reviewing"?X("helper.measurementReviewing"):X("helper.measurementStripEmpty")}function oe(te){switch(te){case"vertex":return X("helper.measurementSnapVertex");case"edge":return X("helper.measurementSnapEdge");case"free":return X("helper.measurementSnapFree")}}function Qi(te){return te.records.length>0?Bi("helper.measurementStripSaved",{count:String(te.records.length)}):te.phase==="select-target"?X("helper.measurementTargetMissing"):te.targetName?Bi("helper.measurementTargetLabel",{target:te.targetName}):te.unit}function Ht(){let te=Zt();if(Ut(te),!te){qe.classList.add("is-hidden"),Ne.classList.add("is-hidden"),qe.classList.remove("is-expanded"),qe.setAttribute("aria-expanded","false"),De.disabled=!0,ct.disabled=!0;return}let Le=te.getMeasurementState(),Ot=Le.active,bi=Le.records,mi=bi.length>0;qe.classList.toggle("is-hidden",Le.phase==="inactive"),!Ot&&!mi&&(Ne.classList.add("is-hidden"),qe.classList.remove("is-expanded"),qe.setAttribute("aria-expanded","false")),qe.classList.toggle("is-active",Ot),qe.classList.toggle("is-pending",Le.phase==="picking-end"),qe.classList.toggle("is-targeting",Le.phase==="select-target"),qe.classList.toggle("is-reviewing",Le.phase==="reviewing"),qe.classList.toggle("has-records",mi),qe.dataset.ai3dMeasurementPhase=Le.phase,Ye.textContent=Wi(Le),Ke.textContent=Qi(Le),qe.setAttribute("aria-label",[X("helper.measurementStripTitle"),Ye.textContent,Ke.textContent,X("helper.calibrateLabel")].filter(Boolean).join(" ")),ye.textContent=mi?Bi("helper.measurementStripSaved",{count:String(bi.length)}):X("helper.measurementNoRecords");let G=mi;De.disabled=!G,ct.disabled=!G,A(ue,Ot)}let Di=g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copySnapshotLabel")}});sn(Di,"copy-snapshot"),Di.appendChild(qr('')),Di.addEventListener("click",()=>{let te=i();if(te)try{let Le=te.captureSnapshot();if(!Le)return;let Ot=$Q(Le);navigator.clipboard.write([new ClipboardItem({"image/png":Ot})]).then(()=>{Ei(Di,X("helper.copied"))}).catch(()=>{Ei(Di,X("helper.failed"))})}catch(Le){console.error("[AI3D] Copy snapshot failed:",Le),Ei(Di,X("helper.failed"))}});let ot=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.saveSnapshotLabel")}}));sn(ot,"save-snapshot"),ot.appendChild(qr('')),ot.addEventListener("click",()=>{var Le,Ot;let te=i();if(te)try{let bi=te.captureSnapshot();if(!bi)return;let mi=r(),G=dn(mi)||"model",le=a==null?void 0:a(),xe=(Le=le==null?void 0:le.snapshotFolder)!=null?Le:"Media/3D Previews",Se=(Ot=le==null?void 0:le.snapshotNaming)!=null?Ot:"model-name",Te=Date.now(),vt=Se==="timestamp"?`snapshot_${Te}.png`:`${G}_snapshot_${Te}.png`,xt=$Q(bi),ft=new FileReader;ft.onload=()=>{let Ct=ft.result;t.vault.adapter.exists(xe).then(Pt=>Pt?Promise.resolve():t.vault.createFolder(xe).catch(pi=>{HEe.warn("Failed to create vault folder",{path:xe,error:String(pi)})})).then(()=>t.vault.createBinary(`${xe}/${vt}`,Ct)).then(()=>{Ei(ot,X("helper.saved"))}).catch(Pt=>{console.error("[AI3D] Save snapshot failed:",Pt),Ei(ot,X("helper.failed"))})},ft.onerror=()=>{console.error("[AI3D] FileReader error"),Ei(ot,X("helper.failed"))},ft.onabort=()=>{console.error("[AI3D] FileReader aborted"),Ei(ot,X("helper.failed"))},ft.readAsArrayBuffer(xt)}catch(bi){console.error("[AI3D] Save snapshot failed:",bi),Ei(ot,X("helper.failed"))}});let ji=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.downloadSnapshotLabel")}}));sn(ji,"download-snapshot"),ji.appendChild(qr('')),ji.addEventListener("click",()=>{let te=i();if(te)try{let Le=te.captureSnapshot();if(!Le)return;let Ot=r(),mi=`${dn(Ot)||"model"}_snapshot_${Date.now()}.png`,G=createEl("a");G.href=Le,G.download=mi,activeDocument.body.appendChild(G),G.click(),G.remove(),Ei(ji,X("helper.downloaded"))}catch(Le){console.error("[AI3D] Download snapshot failed:",Le),Ei(ji,X("helper.failed"))}});let K=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.removePreviewLabel")}}));sn(K,"remove-preview"),K.appendChild(qr('')),K.addEventListener("click",s);let U=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":X(d.labelKey),"aria-pressed":"false"}});sn(U,"toggle-annotation"),U.appendChild(qr(''));let he=U.createSpan({cls:"ai3d-pin-badge is-hidden"});U.addEventListener("click",()=>{if(!o)return;let te=o();A(U,te),Ei(U,te?X(d.activeTooltipKey):X(d.inactiveTooltipKey))});let Pe=u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":X("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Pe.appendChild(qr('')),Pe.addEventListener("click",()=>{I=!I,Pe.setAttribute("aria-label",I?X("helper.hideMoreActionsLabel"):X("helper.showMoreActionsLabel")),w(),Ei(Pe,I?X("helper.moreActionsShown"):X("helper.moreActionsHidden"))}),n.insertBefore(u,e.nextSibling);let Ne=u.createDiv({cls:"ai3d-measurement-details is-hidden"});Ne.setAttribute("role","group"),Ne.setAttribute("aria-label",X("helper.calibrateTitle")),Ne.addEventListener("pointerdown",p),Ne.addEventListener("mousedown",p),Ne.addEventListener("click",p),Ne.createDiv({cls:"ai3d-measurement-details-title",text:X("helper.calibrateTitle")});let et=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-records-section"});et.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementRecordsTitle")});let rt=et.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-actions"}),ye=rt.createSpan({cls:"ai3d-measurement-record-summary"}),De=rt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":X("helper.copyMeasurementsLabel")}});sn(De,"copy-measurements"),De.appendChild(qr('')),De.addEventListener("click",()=>{Ge(De)});let ct=rt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":X("helper.clearMeasurementsLabel")}});sn(ct,"clear-measurements"),ct.appendChild(qr('')),ct.addEventListener("click",()=>{be(ct)});let At=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-calibration-section"});At.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementCalibrationTitle")});let nt=At.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-unit-row"});nt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.measurementUnitLabel")});let Ze=nt.createEl("select",{cls:"ai3d-measurement-detail-select"});for(let te of["um","mm","cm","m"]){let Le=Ze.createEl("option");Le.value=te,Le.textContent=te}Ze.value="mm";let Vt=At.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-reference-row"});Vt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateReference")});let ii=Vt.createSpan({cls:"ai3d-measurement-detail-readonly ai3d-measurement-reference-value"}),hi=Vt.createEl("input",{cls:"ai3d-measurement-detail-input ai3d-measurement-reference-input",attr:{type:"number",step:"any",min:"0",placeholder:X("helper.calibrateReferencePlaceholder")}}),se=Vt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-reference-apply",text:X("helper.calibrateReferenceApply"),attr:{type:"button"}});sn(se,"calibrate-reference");let Qe=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-size-section"});Qe.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementModelSizeTitle")});let Ie=Qe.createDiv({cls:"ai3d-measurement-detail-row"});Ie.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateCurrent")});let ut=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),it=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),Ve=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),Rt=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-size-row"});Rt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateReal")});let Gt=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"X"}}),$i=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Y"}}),li=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Z"}}),xr=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-size-options"}).createEl("label",{cls:"ai3d-measurement-detail-lock"}),Pa=xr.createEl("input",{attr:{type:"checkbox",checked:"true"}});xr.appendChild(activeDocument.createTextNode(" "+X("helper.calibrateLock")));let UE=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-scale-actions"}),_h=UE.createEl("button",{cls:"ai3d-inline-btn",text:X("helper.calibrateApply")}),Ig=UE.createEl("button",{cls:"ai3d-inline-btn",text:X("helper.calibrateReset")}),Zr=null;function vh(){var Ot;let te=i();if(!te||!vn(te))return null;let Le=te.getMeasurementState().records;return(Ot=Le[Le.length-1])!=null?Ot:null}function VE(){let te=i();if(!te||!vn(te))return;let Le=te.getMeasurementState(),Ot=Le.bounds,bi=Le.scale;if(Ze.value=Le.unit,Zr=Ot,Ot){let G=Le.unit;ut.textContent=`X: ${Ro(Ot.x*bi.x)} ${G}`,it.textContent=`Y: ${Ro(Ot.y*bi.y)} ${G}`,Ve.textContent=`Z: ${Ro(Ot.z*bi.z)} ${G}`}else ut.textContent="X: -",it.textContent="Y: -",Ve.textContent="Z: -";let mi=vh();ii.textContent=mi?Nf(mi.reading.distance,mi.reading.unit,!1):X("helper.calibrateReferenceEmpty"),hi.disabled=!mi,se.disabled=!mi,hi.placeholder=mi?Ro(mi.reading.distance):X("helper.calibrateReferencePlaceholder")}function GE(){var G,le;let te=i();if(!te||!vn(te)||!Zr)return;let Le=parseFloat(Gt.value),Ot=parseFloat($i.value),bi=parseFloat(li.value),mi=FU(Zr,{x:Number.isFinite(Le)?Le:void 0,y:Number.isFinite(Ot)?Ot:void 0,z:Number.isFinite(bi)?bi:void 0},te.getMeasurementScale(),Pa.checked);if(!mi){Ei(_h,X("helper.calibrateNeedsValue"));return}(G=te.setMeasurementUnit)==null||G.call(te,Ze.value),(le=te.setMeasurementScale)==null||le.call(te,mi),sf(),Ht(),Ei(_h,X("helper.calibrated"))}function Eh(){var mi,G;let te=i();if(!te||!vn(te))return;let Le=parseFloat(hi.value);(mi=te.setMeasurementUnit)==null||mi.call(te,Ze.value);let Ot=vh();if(!Ot||!Number.isFinite(Le)||Le<=0){Ei(se,X("helper.calibrateNeedsValue"));return}let bi=wU(te.getMeasurementScale(),Ot.reading.distance,Le);if(!bi){Ei(se,X("helper.calibrateNeedsValue"));return}(G=te.setMeasurementScale)==null||G.call(te,bi),hi.value="",sf(),Ht(),Ei(se,X("helper.calibrated"))}function kE(){var Le,Ot;let te=i();!te||!vn(te)||((Le=te.setMeasurementUnit)==null||Le.call(te,Ze.value),(Ot=te.setMeasurementScale)==null||Ot.call(te,{x:1,y:1,z:1}),hi.value="",sf(),Ht(),Ei(Ig,X("helper.calibrateResetDone")))}function nf(te){if(!Pa.checked||!Zr)return;let Ot=parseFloat((te==="x"?Gt:te==="y"?$i:li).value);if(!isFinite(Ot)||Ot===0)return;let bi=Zr[te];if(bi<=1e-4)return;let mi=Ot/bi;te!=="x"&&(Gt.value=Ro(Zr.x*mi)),te!=="y"&&($i.value=Ro(Zr.y*mi)),te!=="z"&&(li.value=Ro(Zr.z*mi))}Gt.addEventListener("input",()=>nf("x")),$i.addEventListener("input",()=>nf("y")),li.addEventListener("input",()=>nf("z")),Ze.addEventListener("change",()=>{let te=i();!te||!vn(te)||(te.setMeasurementUnit(Ze.value),sf(),Ht())}),se.addEventListener("click",Eh),_h.addEventListener("click",GE),Ig.addEventListener("click",kE);function sf(){if(VE(),Zr){let te=i(),Le=te&&vn(te)?te.getMeasurementScale():{x:1,y:1,z:1};Gt.value=Ro(Zr.x*Le.x),$i.value=Ro(Zr.y*Le.y),li.value=Ro(Zr.z*Le.z)}else Gt.value="",$i.value="",li.value=""}function WE(te,Le){te&&sf(),Ne.classList.toggle("is-hidden",!te),qe.classList.toggle("is-expanded",te),qe.setAttribute("aria-expanded",String(te)),Ht(),Ei(Le,te?X("helper.calibrateOpen"):X("helper.calibrateClose"))}return qe.addEventListener("click",()=>{qe.classList.contains("is-hidden")||WE(Ne.classList.contains("is-hidden"),qe)}),w(),V(),{showAnimButton(){Ce.classList.remove("is-hidden"),R()},showAnnotateButton(){U.classList.remove("is-hidden"),R()},updateAnnotationBadge(te){te>0?(he.textContent=String(te),he.classList.remove("is-hidden")):he.classList.add("is-hidden")},setMobileInteractionMode(te){f&&k(te)},syncCapabilities:V}}function Ei(n,e){var i;(i=qF.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,qF.set(n,t),window.setTimeout(()=>{t.remove(),qF.delete(n)},1500)}var HEe,hg,XEe,qF,ZF=y(()=>{"use strict";En();wn();ah();ga();ps();W_();YF();HEe=Zi("helper-buttons");hg=[.5,.75,1,1.25,1.5,2],XEe=2;qF=new WeakMap});function t$(n){let e=na(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),YEe.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var YEe,i$=y(()=>{"use strict";La();wn();YEe=Zi("direct-load-service")});var r$={};Be(r$,{MissingConverterError:()=>Od,MobileConversionUnavailableError:()=>oh,describeModelLoadFailure:()=>TE,formatModelLoadFailure:()=>h0,isMissingConverterError:()=>SE});function m0(n){return`.${n.trim().toLowerCase()}`}function SE(n){return n instanceof Od}function h0(n){var e;if(n instanceof Od){let t=(e=KEe[n.converterId])!=null?e:n.converterId;return Bi("modelLoad.warningMessage",{ext:m0(n.sourceExt),converterName:t})}return n instanceof oh?Bi("modelLoad.mobileWarningMessage",{ext:m0(n.sourceExt)}):Bi("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function TE(n){return n instanceof Od?{level:"warning",title:X("modelLoad.warningTitle"),message:h0(n),hint:X("modelLoad.warningHint")}:n instanceof oh?{level:"warning",title:X("modelLoad.warningTitle"),message:h0(n),hint:X("modelLoad.mobileWarningHint")}:{level:"error",title:X("modelLoad.errorTitle"),message:h0(n),hint:X("modelLoad.errorHint")}}var KEe,Od,oh,mg=y(()=>{"use strict";En();KEe={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};Od=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${m0(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},oh=class extends Error{constructor(t){super(`Format ${m0(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var o$={};Be(o$,{convertForPreview:()=>eSe});function s$(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 jEe(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function a$(n){let e=Xn(n);return Hn(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function n$(n){return Hn(n,Xn(n)).toLowerCase()}function qEe(n,e,t){if(!t)return s$(n,e);let i=a$(n),r=jEe(`${n}::${e}`);return Ji(t,`${i}-${r}.ai3d-converted.${e}`)}function ZEe(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function QEe(n){if(!n)return!1;try{return await hs(n,ms),!0}catch(e){return!1}}async function g0(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:hu(n),hu(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function $Ee(n){return typeof n=="function"?await n():n}async function JEe(n,e,t,i){var l,c;let r=(c=(l=n.convertedAssetCache)==null?void 0:l.entries())!=null?c:[];if(r.length===0)return;let s=n$(n.sourcePath),a=a$(n.sourcePath),o=r.filter(f=>f.sourcePath!==n.sourcePath&&f.sourceExt===n.sourceExt&&f.targetExt===e&&f.outputExt===e&&f.converterId===t&&n$(f.sourcePath)===s&&Hn(f.outputPath).startsWith(`${a}-`)&&Hn(f.outputPath).endsWith(`.ai3d-converted.${e}`)).sort((f,d)=>d.createdAt-f.createdAt);for(let f of o)if(await g0(n.sourcePath,f.outputPath,i))return f}async function eSe(n){var u,h,m,g,p,_,v,E,T,S;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(u=n.capability.outputFormat)!=null?u:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);ef.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=hu(n.sourcePath)),i),s=(h=n.convertedAssetCache)==null?void 0:h.get(n.sourcePath,n.sourceExt,t);if(s)if(!await QEe(s.outputPath))ef.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!ZEe(s,e))ef.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(g=n.convertedAssetCache)==null||g.delete(n.sourcePath,n.sourceExt,t);else if(!await g0(n.sourcePath,s.outputPath,r()))ef.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(p=n.convertedAssetCache)==null||p.delete(n.sourcePath,n.sourceExt,t);else return ef.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=qEe(n.sourcePath,t,n.outputRoot);if(await g0(n.sourcePath,a,r()))return ef.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(_=n.convertedAssetCache)==null||_.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=s$(n.sourcePath,t);if(o!==a&&await g0(n.sourcePath,o,r()))return ef.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(v=n.convertedAssetCache)==null||v.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 JEe(n,t,e,r());if(l)return ef.info("relocated conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,previousSourcePath:l.sourcePath,outputPath:l.outputPath}),(E=n.convertedAssetCache)==null||E.set({cacheVersion:2,converterId:l.converterId,converterCacheKey:l.converterCacheKey,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:l.outputPath,outputExt:t,warnings:[...l.warnings,"Using relocated conversion output."],createdAt:Date.now()}),{effectivePath:l.outputPath,effectiveExt:t,warnings:[...l.warnings,"Using relocated conversion output."]};let c=await $Ee(n.conversionManager);if(!c)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!c.canConvert(n.sourceExt))throw new Od(e,n.sourceExt);let f=await c.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await Wn(n.outputRoot,{recursive:!0});let d=await c.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(S=n.convertedAssetCache)==null||S.set({cacheVersion:2,converterId:e,converterCacheKey:(T=f==null?void 0:f.cacheKey)!=null?T:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:d.outputPath,outputExt:d.outputExt,warnings:d.warnings,createdAt:Date.now()}),ef.info("conversion route done",{sourcePath:n.sourcePath,outputPath:d.outputPath,warningCount:d.warnings.length}),{effectivePath:d.outputPath,effectiveExt:d.outputExt,warnings:d.warnings}}var ef,l$=y(()=>{"use strict";ty();wn();fr();mg();ef=Zi("conversion-service")});var c$={};Be(c$,{prepareModelInput:()=>pg});function tSe(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function pg(n){var a,o;let e=na((a=n.path.split(".").pop())!=null?a:""),t=Cg(e);if(Nd.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw Nd.warn("unsupported format",{sourceExt:e,path:n.path}),Pg(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=tSe(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(Rr())throw Nd.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new oh(e);if(!n.absolutePath)throw Nd.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 Nd.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"&&Nd.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(l$(),o$)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return Nd.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=t$({path:n.path,sourceExt:e});return Nd.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 Nd,_0=y(()=>{"use strict";La();i$();mg();wn();ga();Nd=Zi("model-pipeline")});function AE(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var QF=y(()=>{"use strict"});function lh(n,e){var r;let i=e.auxiliaryFileFolder.trim()||aU(n,iSe);return(r=sc(n,i))!=null?r:void 0}var iSe,v0=y(()=>{"use strict";ps();iSe="ai-model-workbench/converted-assets"});function ch(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?X(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=S3(()=>{!f&&s&&o()});return{el:e,setPhase(u){s=null,a=u,f||o()},setPhaseKey(u){s=u,f||o()},setProgress(u){f||(u<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,u))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var E0=y(()=>{"use strict";En()});var $F={};Be($F,{renderModelLoadFailure:()=>xE,renderModelPerformanceFeedback:()=>RE});function xE(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});Rr()&&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 RE(n,e){var o,l,c,f,d,u,h;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:(u=e.resourceWarnings)!=null&&u.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(h=e.resourceWarnings)!=null?h:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` -`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var bE=y(()=>{"use strict";ga()});function tf(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return rSe.has(e)?e:"glb"}function fh(n,e,t){return typeof n=="string"&&nSe.has(n)?n:e===t?"direct":"convert"}var rSe,nSe,S0=y(()=>{"use strict";rSe=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),nSe=new Set(["direct","convert"])});function gg(n,e,t){p$(n,{label:Bi(u$[e],{model:Gs(t)||X("workbench.modelTitle")}),shortcutKeys:sSe})}function h$(n){p$(n,{label:X(u$.grid),shortcutKeys:aSe})}function _g(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"?(vn(i)&&i.toggleMeasurement(),t.preventDefault()):r==="escape"&&vn(i)&&HA(i)&&t.preventDefault()})}function m$(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 p$(n,e){dSe(n),n.setAttribute("role","application"),lSe(n,e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),fSe(n),n.dataset.testid="ai3d-preview-canvas"}function lSe(n,e){let t=n.dataset.ai3dLabelId,i=t?n.ownerDocument.getElementById(t):null,r=i instanceof HTMLElement?i:cSe(n);if(!r){n.removeAttribute("aria-label"),n.removeAttribute("aria-labelledby"),delete n.dataset.ai3dLabelId;return}r.setText(e),n.dataset.ai3dLabelId=r.id,n.setAttribute("aria-labelledby",r.id),n.removeAttribute("aria-label")}function cSe(n){let e=n.parentElement;if(!e)return null;let t=e.createSpan({cls:"ai3d-visually-hidden"});return t.id=`ai3d-preview-canvas-label-${++oSe}`,t}function fSe(n){n.removeAttribute("title"),n.removeAttribute("data-tooltip"),n.removeAttribute("aria-description")}function dSe(n){if(d$(n),f$.has(n)||typeof MutationObserver=="undefined")return;f$.add(n),new MutationObserver(()=>d$(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function d$(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var sSe,aSe,f$,oSe,u$,T0=y(()=>{"use strict";En();W_();ah();ps();sSe=["R","W","G","B","M","Space"],aSe=["R","W"],f$=new WeakSet,oSe=0,u$={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function g$(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"}),u=f.createEl("canvas");u.className="ai3d-canvas-full",gg(u,"direct-view",t),_g(u,r),d.appendChild(u);let h=f.createDiv();h.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(h),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),g=m.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"}),p=m.createDiv({cls:"ai3d-sidebar-body"}),_=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:X("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:u,modeOverlay:h,sidebarContent:p,vHandle:_,workbenchPanel:g}}var _$=y(()=>{"use strict";En();T0()});function A0(n){return Math.round(n!=null?n:0).toLocaleString()}function uSe(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function hSe(n){return n==="three"?"Three.js":"Babylon.js"}function v$(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:X("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:hSe(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:X("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});vg(c,X("workbench.meshesLabel"),A0(t.meshCount)),vg(c,X("directWorkbench.partCandidatesLabel"),A0(r)),vg(c,t.splatCount!==void 0?X("workbench.splatsLabel"):X("workbench.trianglesLabel"),A0((f=t.splatCount)!=null?f:t.triangleCount)),vg(c,X("workbench.materialsLabel"),A0(t.materialCount)),vg(c,X("workbench.boundingSizeLabel"),uSe(t)),vg(c,X("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function vg(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 E$=y(()=>{"use strict";En()});function mSe(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&x0.has(e.ext)&&x0.has(e.sourceExt)}function pSe(n){return S$.has(n.ext)?n.strategy==="direct"?S$.has(n.sourceExt):n.strategy==="convert"&&x0.has(n.ext):!1}function gSe(n,e){return n.useThreeForConvertedDirectView&&e.strategy==="convert"&&x0.has(e.ext)}function T$(n,e){let t=mSe(n,e),i=pSe(e),r=gSe(n,e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!i,rendererRollout:r?"three-direct-glb":n.previewRendererRollout,useThreeRenderer:r?!0:n.useThreeRenderer}}var S$,x0,A$=y(()=>{"use strict";S$=new Set(["glb","gltf","stl","ply","obj"]),x0=new Set(["glb","gltf"])});function Eg(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function RSe(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?Eg(n):(e!=null?e:0)>=vSe?{renderQuality:n.renderQuality==="high"?"medium":n.renderQuality,renderScale:Math.min(n.renderScale,JF)}:(e!=null?e:0)>=_Se?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,b$)}:Eg(n)}function t1(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}function bSe(n){return n.splatCount!==void 0?n.splatCount>=R$:t1(n)>=SSe}function MSe(n){return n.splatCount!==void 0?n.splatCount>=ASe:t1(n)>=TSe}function ySe(n){return n.splatCount!==void 0?n.splatCount>=R$:t1(n)>=ESe}function M$(n,e){return e.performanceTier==="extreme"?MSe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,JF)}:Eg(n):e.performanceTier==="heavy"?bSe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,JF)}:Eg(n):e.performanceTier==="medium"&&ySe(e)?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,b$)}:Eg(n)}function Sg(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function R0(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function y$(n){try{return decodeURIComponent(n)}catch(e){return n}}function e1(n){let e=y$(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 I$(n,e){return e1(n?`${n}/${R0(e)}`:R0(e))}function C$(n){let e=n.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function ISe(n){return!n||n.startsWith("data:")?!0:xSe.test(n)&&!Sg(n)}function CSe(n,e){return Sg(n)?e1(R0(e)):I$(C$(n),e)}async function PSe(n,e){let t=await DSe(n,e);return t===null?null:e.toLowerCase().split(/[?#]/,1)[0].endsWith(".gltf")?NSe(n,e,t):t}async function DSe(n,e){if(Sg(e))try{let{stat:i}=await Promise.resolve().then(()=>(fr(),mA));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return P$(t)?t.stat.size:null}async function LSe(n,e){if(Sg(e))try{let{readFile:r}=await Promise.resolve().then(()=>(fr(),mA));return new TextDecoder().decode(await r(e))}catch(r){return null}let t=n.vault.getAbstractFileByPath(e),i=n.vault;if(!(t instanceof x$.TFile)||typeof i.read!="function")return null;try{return await i.read(t)}catch(r){return null}}async function OSe(n,e,t){if(Sg(e))try{let{pathJoin:a,pathNormalize:o,stat:l}=await Promise.resolve().then(()=>(fr(),mA)),c=R0(y$(t)),f=o(e.replace(/[\\/][^\\/]*$/,"")),d=Sg(c)?o(c):o(a(f,c));return(await l(d)).size}catch(a){return null}let i=C$(e),r=I$(i,t),s=n.vault.getAbstractFileByPath(r);return P$(s)?s.stat.size:null}async function NSe(n,e,t){var l,c;let i=await LSe(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 u=f==null?void 0:f.uri;if(!u||ISe(u))return;let h=CSe(e,u);if(!h||a.has(h))return;a.add(h);let m=await OSe(n,e,u);if(m!==null&&Number.isFinite(m)&&m>0){s+=m;return}let g=(p=f==null?void 0:f.byteLength)!=null?p:d;Number.isFinite(g)&&(g!=null?g:0)>0&&(s+=g!=null?g: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 P$(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function Tg(n,e,t){return RSe(t,await PSe(n,e))}var x$,_Se,vSe,ESe,SSe,TSe,R$,ASe,b$,JF,xSe,b0=y(()=>{"use strict";x$=require("obsidian"),_Se=64*1024*1024,vSe=192*1024*1024,ESe=18e4,SSe=45e4,TSe=12e5,R$=65e4,ASe=15e5,b$=1.25,JF=1,xSe=/^[a-z][a-z0-9+.-]*:/i});function FSe(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new i1(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var ME,wSe,i1,M0,D$=y(()=>{"use strict";La();wn();ME=Zi("conversion-manager"),wSe=3e5,i1=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};M0=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get(na(e))}registerConverter(e){ME.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set(na(t),e)}canConvert(e){let t=na(e),i=this.converters.has(t);return ME.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=na(e.sourceExt),i=this.getConverter(t);if(!i)throw ME.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 ME.info("joining in-flight conversion",{key:r}),s;ME.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=FSe(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:wSe,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var u1={};Be(u1,{describeConverterCommandSource:()=>l1,inspectAllConverterCommands:()=>tTe,inspectConverterCommand:()=>d1,listConverterCommandSpecs:()=>eTe,resolveConverterCommand:()=>iTe,resolveConverterInvocation:()=>Fn});function s1(...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 VSe(){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",...s1("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(Ji(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(Ji(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 GSe(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?Ji(e,"npm"):void 0,t?Ji(t,"npm"):void 0,r?Ji(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>Ji(f,n))))}function kSe(...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?Ji(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>Ji(l,c)))))}async function f1(n){try{return await hs(n,(He==null?void 0:He.platform)==="win32"?ms:bC),!0}catch(e){return!1}}function r1(n){let e=n==null?void 0:n.trim();if(e)return e}function O$(n){return WSe.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function zSe(n,e){for(let t of[n,...e]){let i=O$(t);if(!i.ok)return i}return{ok:!0}}async function HSe(n){try{return(await hu(n)).isFile()}catch(e){return!1}}function XSe(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:BSe}async function qSe(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(MC).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?jSe(n):[""];for(let s of t)for(let a of i){let o=Ji(s,a?`${n}${a}`:n);if(await f1(o))return o}}function a1(n,e,t=15e3){let i=O$(n);return i.ok?new Promise((r,s)=>{pa(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 o1(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 n1(n,e,t,i){let r="";for(let s of t)try{return await a1(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=o1(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function ZSe(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad"){let r=[];for(let s of USe)try{await a1(e,[...t,"-c",s.probe]),r.push({kind:"cad-python",label:s.label,ok:!0,detail:""})}catch(a){r.push({kind:"cad-python",label:s.label,ok:!1,detail:o1(a)})}return r}if(n.id==="assimp")try{return await a1(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:o1(r)}]}if(n.id==="freecadcmd"){let r=await n1(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 n1(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 n1(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function QSe(n){let e=c1.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function $Se(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)),u=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||u?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function L$(n,e,t){for(let i of e)if(await f1(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 JSe(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 y0(n,e,t,i){let r=YSe(e),s=zSe(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(KSe(r.executable)){let[o,l]=await Promise.all([f1(r.executable),HSe(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 ${l1(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await qSe(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 ${l1(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function eTe(){return c1}function l1(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 d1(n,e){var u,h,m;let t=QSe(n),{userCandidates:i,systemCandidates:r}=$Se(t),s=r1(e);if(s)return y0(t,s,"settings",s);let a=r1((u=He==null?void 0:He.env)==null?void 0:u[t.envVar]);if(a)return y0(t,a,"env");for(let g of(h=t.envVarAliases)!=null?h:[]){let p=r1((m=He==null?void 0:He.env)==null?void 0:m[g]);if(p)return y0(t,p,"env")}let o=await L$(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let g of t.fallbackCommands){let p=await y0(t,g,"path");if(l.push(p),p.available)return p}let c=await L$(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(g=>g.checkedCandidates),d=JSe(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 tTe(n){let e=await Promise.all(c1.map(t=>d1(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await ZSe(t)})))}async function iTe(n,e){return(await Fn(n,e)).command}async function Fn(n,e){var i;let t=await d1(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,BSe,USe,c1,WSe,wd=y(()=>{"use strict";fr();fr();fr();He=Sm(),BSe=[".exe",".cmd",".bat",".com"],USe=[{label:"CadQuery import",probe:"import cadquery; print('ok')"},{label:"trimesh import",probe:"import trimesh; print('ok')"},{label:"OCP STEP readers",probe:["from OCP.STEPCAFControl import STEPCAFControl_Reader","from OCP.STEPControl import STEPControl_Reader","from OCP.BRepMesh import BRepMesh_IncrementalMesh","print('ok')"].join("; ")},{label:"OCCT GLB writer",probe:"from OCP.RWGltf import RWGltf_CafWriter, RWGltf_WriterTrsfFormat; print('ok')"}];c1=[{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"?GSe("obj2gltf.cmd"):s1("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"?kSe(Ji("FBX2glTF","FBX2glTF-windows-x64.exe"),Ji("FBX2glTF","FBX2glTF.exe")):s1("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:VSe()}];WSe=/[;|&<>$`\r\n\t]/});var w$,N$=y(()=>{w$=`import cadquery as cq +}`;x.ShadersStore[NF]||(x.ShadersStore[NF]=RQ);bEe={name:NF,shader:RQ}});var yQ,bQ,e0,MEe,yEe,MQ,BF,IQ=y(()=>{js();Yi();pp();We();Oo();sp();lL();ts();HL();Kt();vi();Lu();Yf();wL();Sl();Lt();Object.defineProperty(ri.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ri.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new BF(this)),this._boundingBoxRenderer};Object.defineProperty(Ir.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});yQ=Z.Identity(),bQ=new Z,e0=new b,MEe=new b,yEe=yQ.asArray(),MQ=new Qf(e0,e0),BF=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=tt.NAME_BOUNDINGBOXRENDERER,this.frontColor=new Ee(1,1,1),this.backColor=new Ee(.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 Ki(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 Tr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new Tr(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=>{El(()=>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 Xo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[L.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(()=>(MF(),bF)),Promise.resolve().then(()=>(CF(),IF))]):await Promise.all([Promise.resolve().then(()=>(OF(),LF)),Promise.resolve().then(()=>(FF(),wF))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Xo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(MF(),bF)),Promise.resolve().then(()=>(CF(),IF))]):await Promise.all([Promise.resolve().then(()=>(OF(),LF)),Promise.resolve().then(()=>(FF(),wF))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=qR({size:1});this._vertexBuffers[L.PositionKind]=new L(e,t.positions,L.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[L.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(MQ);let s=0,a=this.scene.floatingOriginOffset;for(let _=0;_{"use strict";We();GO();Kt();wo();IQ();ks();mE();HC();Ld=class Ld{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new rn(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=DEe(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 PEe(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===at.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(u){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===at.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===at.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 IEe(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=je.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=UF(e),s=Mm(ei(i),ei(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=UF(e),i=this.camera.position,r=Of(ei(i),ei(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)&&Lf(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=RA({startPosition:ei(e.startPosition),pivot:ei(e.pivot),startRotationQuaternion:xA(e.startRotationQuaternion),yawAxis:ei(this.camera.getDirection(b.Up()).normalize()),pitchAxis:ei(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 je(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=UF(e),r=Mm(ei(i),ei(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,Z.Identity(),this.camera),l=AA({origin:ei(o.origin),direction:ei(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};Ld.BBOX_VISIBLE=new Ee(.25,.7,1),Ld.BBOX_OCCLUDED=new Ee(.1,.25,.4);VF=Ld});var FQ={};Be(FQ,{BabylonModelPreview:()=>i0,createBabylonModelPreview:()=>HEe});function BEe(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function GF(n){return n.getClassName()==="GaussianSplattingMesh"}function UEe(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function kF(n){return n instanceof $t}function Jc(n){return typeof n.isDisposed=="function"?n.isDisposed():!1}function lg(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function WF(n,e=[]){for(let t of n)t.isDisposed()||t.dispose(!0,!0);for(let t of e)t.isDisposed()||t.dispose(!1,!0)}function oo(n){return new b(n.x,n.y,n.z)}function NQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function wQ(n){let e=new ze("measure-marker-mat",n);return e.diffuseColor=gE.clone(),e.emissiveColor=gE.clone(),e.specularColor=new Ee(0,0,0),e.disableLighting=!0,e.alpha=.48,e}function pE(n,e){let t=n.material;t&&(t.diffuseColor=e.clone(),t.emissiveColor=e.clone())}function VEe(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 GEe(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 kEe(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 WEe(n,e,t){let i=Gs(e),r=i.replace(/\.[^.]+$/,""),s=dn(t),a=[In(n,e),In(n,i)];if(s)for(let o of DQ)a.push(In(n,`${s}.${o}`));for(let o of DQ){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}function zEe(n){return Number.isFinite(n)?n.toPrecision(10):String(n)}function HEe(n){return new i0(n)}var t0,DQ,LEe,OEe,NEe,LQ,gE,wEe,FEe,OQ,Ca,i0,BQ=y(()=>{"use strict";rL();js();YR();KR();xH();RH();yL();We();Kt();wi();$f();uO();Yi();jc();cY();GO();oM();S6();gL();Qp();dE();dE();rF();nF();BZ();mQ();_A();_a();ps();pQ();PQ();mE();gl();bA();BC();G_();ks();DA();F_();W_();t0=null,DQ=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],LEe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,OEe=.242,NEe=320,LQ=new Ee(.97,.98,.99),gE=new Ee(.97,.98,.99),wEe=new Ee(.96,.62,.04),FEe=new Ee(1,1,1),OQ=new Ee(.9,.91,.92);Ca=class Ca{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.renderScale=1;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.measurementBaseRootScaling=new b(1,1,1);this.measurementBaseBounds=null;this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementMarkerPoints=[];this.measurementTargetNode=null;this.measurementTargetMeshes=[];this.measurementSnapInputCache=null;this.measurementSnapInputCacheTargetId=null;this.measurementSnapInputCacheSignature=null;this.measurementSnapKind=null;this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0,altKey:!1};this.previewLine=null;this.cameraZoomObservers=new Set;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY,altKey:e.altKey},!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 ke(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ri(this.engine),this.scene.clearColor=new dt(.12,.12,.14,1),this.scene.setRenderingAutoClearDepthStencil(2,!0,!0,!0),this.camera=new Ri("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=45,this.camera.onViewMatrixChangedObservable.add(()=>{this.measurementSegments.length>0&&this.updateMeasurementOverlayPositions(),this.notifyCameraZoomChanged()}),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 Ee(.3,.3,.3);let t=new ba("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}getCameraZoomRange(){if(!this.rootMesh)return null;let e=this.camera.radius,t=this.camera.lowerRadiusLimit,i=this.camera.upperRadiusLimit,r=typeof t=="number"&&Number.isFinite(t)&&t>0?t:Math.max(e*.08,1e-5),s=typeof i=="number"&&Number.isFinite(i)&&i>r?i:Math.max(e*8,r*10);return{current:Math.max(r,Math.min(e,s)),min:r,max:s}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=CQ(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,s){var g,p,_;Ti(s),await fE(),Ti(s),this.rootMesh&&(WF(this.loadedMeshes,this.loadedTransformNodes),this.rootMesh=null,this.notifyCameraZoomChanged()),this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),this.resetMeasurementCalibrationState(),(g=this.disassembly)==null||g.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let a=t.toLowerCase().replace(".","");this.loadedExt=a,this.resourceWarnings=[],Ti(s),this.gltfComponentMetadata=wZ(e,a);let o=this.scene,c=(p={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[a])!=null?p:`.${a}`;Ti(s);let f=`data:application/octet-stream;base64,${pu(e)}`;Ti(s);let d=v=>{try{Ti(s)}catch(E){throw WF(v.meshes,v.transformNodes),E}this.loadedMeshes=v.meshes,this.loadedTransformNodes=v.transformNodes,v.meshes.length>0&&(this.rootMesh=v.meshes[0])},u=()=>{try{Ti(s)}catch(v){throw WF(this.loadedMeshes,this.loadedTransformNodes),this.loadedMeshes=[],this.loadedTransformNodes=[],this.rootMesh=null,this.invalidateMeshCache(),this.notifyCameraZoomChanged(),v}};if(a==="obj"&&i&&r){t0&&await t0,Ti(s);let v;t0=new Promise(E=>{v=E});try{let{OBJFileLoader:E}=await Promise.resolve().then(()=>(tF(),AZ)),T=E.prototype;typeof T._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let S=T._loadMTL,R=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),M=null;if(R&&i&&r){let C=VEe(R[1]),D=w_(r),w=In(D,C);try{let k=await i(w);Ti(s);let N=new TextDecoder().decode(new Uint8Array(k)).split(` +`);for(let q=0;qq!=="");if(!B.some(q=>/^\s*Kd\s+/i.test(q))){let q=B.findIndex(j=>/^\s*newmtl\s+/i.test(j));B.splice(q>=0?q+1:0,0,"Kd 0.80 0.80 0.80")}M=B.join(` +`)}catch(k){if(Df(k))throw k;this.resourceWarnings.push(`OBJ material library not found: ${w}`)}}T._loadMTL=function(C,D,w){let k=M!=null?M:"";w(k)};let I=await Jv(f,o,{meshNames:"",pluginExtension:c});d(I),T._loadMTL=S}catch(E){throw Df(E)||console.error("[AI3D] OBJ load error:",E),E}finally{v(),t0=null}}else if(a==="stl"){let v=MZ(o,e);try{Ti(s)}catch(E){throw v==null||v.dispose(!1,!0),E}this.rootMesh=v,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else if(a==="ply"){let v=IZ(o,e);try{Ti(s)}catch(E){throw v==null||v.dispose(!1,!0),E}this.rootMesh=v,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else{let v=await Jv(f,o,{meshNames:"",pluginExtension:c});d(v)}if(u(),!this.rootMesh)throw new Error("No mesh found in model file");let h=this.getRenderableBounds(this.rootMesh);this.captureMeasurementBaseState(this.rootMesh,h);for(let v of this.getRenderableMeshes(this.rootMesh))v.material&&(v.material.backFaceCulling=!1);let m=V_(h);return this.camera.target=oo(m.target),this.camera.radius=m.radius,this.camera.lowerRadiusLimit=m.lowerRadiusLimit,this.camera.upperRadiusLimit=m.upperRadiusLimit,this.camera.minZ=m.near,this.camera.maxZ=m.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged(),this.startRenderLoop(),this.engine.resize(),(_=this.cleanupPicking)==null||_.call(this),this.cleanupPicking=hQ(this.scene,v=>{var S;if(this.isDisassemblyActive())return;let E=v.mesh&&this.rootMesh?hE(this.rootMesh,v.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,T={mesh:E,pickedPoint:v.pickedPoint,screenX:v.screenX,screenY:v.screenY,modifiers:v.modifiers};if(this._lastPickResult=T,this.measurementActive){if(((S=v.modifiers)==null?void 0:S.altKey)===!0){if(!v.pickedPoint)return;this.setMeasurementSnapKind("free"),this.addMeasurementPoint(oo(v.pickedPoint));return}if(!this.measurementTargetNode){E&&this.setMeasurementTargetNode(E);return}let A=this.getMeasurementTargetPickPoint(v.mesh,v.pickedPoint);if(!A){this.setMeasurementSnapKind(null);return}this.addMeasurementPoint(this.resolveMeasurementPickPoint(A,!1));return}this.focusSelectionEnabled&&E&&this.setFocusedNode(E),this._onPickCallbacks.forEach(A=>A(T))},()=>!this.focusSelectionEnabled&&!this.measurementActive,v=>this.resolvePickHighlightMeshes(v)),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),this.notifyCameraZoomChanged()}}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?Ee.FromHexString(e.color):Ee.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?Ee.FromHexString(e.groundColor):new Ee(.2,.2,.2),o=new ba("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 Js("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 cd("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 Kr("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 cd("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(!BEe(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Fi(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=dt.FromColor3(Ee.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 wp,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=Xi(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=Nn.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new ze("ground-mat",this.scene);s.diffuseColor=new Ee(.15,.15,.15),s.specularColor=Ee.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=Xi(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=Nn.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new ze("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new Ee(.3,.3,.3),s.emissiveColor=new Ee(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=RU(e)*1.5,i=oo(e.min),r=U_(e)*.01,s=[["x",Ee.Red(),new b(t,0,0)],["y",Ee.Green(),new b(0,t,0)],["z",Ee.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=Nn.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new ze(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=Ee.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=Ee.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&&(GF(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(){var t,i;if(this.measurementActive)return this.deactivateMeasurementMode(),!1;this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1));let e=this.getCurrentMeasurementTargetNode();return(i=this.cleanupPicking)==null||i.clearHighlight(),this.clearFocusedMesh(),this.focusSelectionEnabled&&(this.focusSelectionEnabled=!1),this.measurementActive=!0,this.setMeasurementTargetNode(e,!1),wf(this.engine.getRenderingCanvas(),this.measurementActive),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}cancelMeasurement(){let e=!!this.pendingPoint;this.cancelPendingMeasurement(),e&&this.notifyMeasurementsChanged()}deactivateMeasurementMode(){return this.measurementActive?(this.measurementActive=!1,wf(this.engine.getRenderingCanvas(),!1),this.setMeasurementTargetNode(null,!1),this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),!0):!1}disposeMeasurementOverlays(e){e&&(this.measurementActive=!1,wf(this.engine.getRenderingCanvas(),!1),this.setMeasurementTargetNode(null,!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=[],this.measurementMarkerPoints=[],this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=_s(e),this.invalidateMeasurementSnapInputCache(),this.applyMeasurementModelScale(),this.updateMeasurementOverlayPositions(),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=k_(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){var t;if(!this.rootMesh)return null;let e=(t=this.measurementBaseBounds)!=null?t: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()}getMeasurementState(){return XA({active:this.measurementActive,pending:!!this.pendingPoint,records:this.createMeasurementRecords(),unit:this.measurementUnit,scale:this.getMeasurementScale(),bounds:this.getMeasurementBounds(),targetLocked:!!this.measurementTargetNode,targetName:this.getMeasurementTargetName(),snapKind:this.measurementSnapKind})}exportMeasurements(){return qA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*3.2;for(let i of this.measurementSegments){this.updateMeasurementLineGeometry(i);let r=Dm(this.createMeasurementReading(i.start,i.end));i.label.dispose(!1,!0);let s=this.createBabylonMeasurementDraftingLayout(i.start,i.end),a=(t=s==null?void 0:s.labelPosition)!=null?t:b.Center(this.toMeasurementDisplayPoint(i.start),this.toMeasurementDisplayPoint(i.end));i.label=this.createMeasurementLabelMesh(r,a,e)}}captureMeasurementBaseState(e,t){this.measurementBaseRootScaling=e.scaling.clone(),this.measurementBaseBounds=t?ka(t.min,t.max):null,this.measurementScale={x:1,y:1,z:1}}resetMeasurementCalibrationState(){this.measurementScale={x:1,y:1,z:1},this.measurementBaseRootScaling=new b(1,1,1),this.measurementBaseBounds=null,this.measurementMarkerPoints=[],this.invalidateMeasurementSnapInputCache()}applyMeasurementModelScale(){if(!this.rootMesh)return;let e=_s(this.measurementScale);this.rootMesh.scaling=new b(this.measurementBaseRootScaling.x*e.x,this.measurementBaseRootScaling.y*e.y,this.measurementBaseRootScaling.z*e.z),this.rootMesh.computeWorldMatrix(!0);for(let t of this.loadedMeshes)t.computeWorldMatrix(!0);this.invalidateMeshCache(),this.rebuildScaledSceneHelpers(),this.refitCameraToModel(),this.startRenderLoop()}rebuildScaledSceneHelpers(){var s,a,o;let e=!!this.bboxMesh,t=!!this.groundMesh,i=!!this.gridMesh,r=this.axisMeshes.length>0;(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,(a=this.groundMesh)==null||a.dispose(),this.groundMesh=null,(o=this.gridMesh)==null||o.dispose(),this.gridMesh=null;for(let l of this.axisMeshes)l.dispose();if(this.axisMeshes=[],e&&this.rootMesh){let l=this.getRenderableBounds(this.rootMesh),c=oo(Er(l)),f=oo(Xi(l));this.bboxMesh=Nn.CreateBox("bbox",{width:f.x,height:f.y,depth:f.z},this.scene),this.bboxMesh.position=c;let d=new ze("bbox-mat",this.scene);d.wireframe=!0,d.emissiveColor=new Ee(1,1,0),d.disableLighting=!0,d.alpha=.6,this.bboxMesh.material=d}t&&this.createGround(),i&&this.createGrid(),r&&this.createAxis()}refitCameraToModel(){if(!this.rootMesh)return;let e=V_(this.getRenderableBounds(this.rootMesh));this.camera.target=oo(e.target),this.camera.radius=e.radius,this.camera.lowerRadiusLimit=e.lowerRadiusLimit,this.camera.upperRadiusLimit=e.upperRadiusLimit,this.camera.minZ=e.near,this.camera.maxZ=e.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged()}getMeasurementPivot(){var e,t;return(t=(e=this.rootMesh)==null?void 0:e.getAbsolutePosition().clone())!=null?t:b.Zero()}toMeasurementDisplayPoint(e){let t=UA(e,this.getMeasurementPivot(),this.measurementScale);return new b(t.x,t.y,t.z)}toMeasurementBasePoint(e){let t=VA(e,this.getMeasurementPivot(),this.measurementScale);return new b(t.x,t.y,t.z)}updateMeasurementOverlayPositions(){for(let e=0;e{this.cameraZoomObservers.delete(e)}}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=oo(Er(t)),r=oo(Xi(t));this.bboxMesh=Nn.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new ze("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new Ee(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)),e&&this.deactivateMeasurementMode(),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(),this.deactivateMeasurementMode()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&FZ(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&cF(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&cF(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(),this.startRenderLoop(),this.notifyCameraZoomChanged()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=GF(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Gs(e)||r.rootName;return CA({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>LZ(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=NZ(e,this.loadedTransformNodes,this.gltfComponentMetadata);return NA({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>aF(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:kF(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Jc(e)?null:oF(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?PA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?ei(e.pickedPoint):this.rootMesh&&kF(e.mesh)?oF(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)/NEe)),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 OA([{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=Ca.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,Ca.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),Ca.annotationProjection),LU(Ca.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=Of(ei(this.camera.position),e);if(!t)return!1;let i=Ca.annotationDirection,r=Ca.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)&&Lf(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return LA({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=this.renderScale){this.currentQuality=e,this.renderScale=Math.max(.25,Math.min(t,2));let i={low:2,medium:1.33,high:1},r=Rr()?1.5:1,s=i[e]*r/this.renderScale;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=[],this.cameraZoomObservers.clear(),(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.measurementObservers.clear(),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=sh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return kM(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=hE(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>lg(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||Jc(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>lg(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:OEe,a.renderOutline=o,a.outlineColor=new Ee(.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,this.applyMeasurementTargetVisual(this.measurementTargetMeshes)}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>lg(r,e)))return e;if(!UEe(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>lg(s,r)))return r;i=i.parent}return null}getCurrentMeasurementTargetNode(){var t;let e=(t=this.focusedNode)!=null?t:kF(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Jc(e)?null:this.findSelectableNode(e)}setMeasurementTargetNode(e,t=!0){this.clearMeasurementTargetVisual(!1),this.invalidateMeasurementSnapInputCache();let i=e&&!Jc(e)?this.findSelectableNode(e):null;if(!i||Jc(i)){this.measurementTargetNode=null,this.measurementTargetMeshes=[],this.setMeasurementSnapKind(null,!1),t&&this.notifyMeasurementsChanged();return}let r=this.getMeasurementTargetMeshes(i);if(r.length===0){this.measurementTargetNode=null,this.measurementTargetMeshes=[],this.setMeasurementSnapKind(null,!1),t&&this.notifyMeasurementsChanged();return}this.measurementTargetNode=i,this.measurementTargetMeshes=r,this.setMeasurementSnapKind(null,!1),this.applyMeasurementTargetVisual(r),this.scene.render(),t&&this.notifyMeasurementsChanged()}clearMeasurementTargetVisual(e=!0){for(let t of this.measurementTargetMeshes)t.isDisposed()||(t.renderOutline=!1,t.outlineWidth=0);this.measurementTargetMeshes=[],e&&!this.scene.isDisposed&&this.scene.render()}applyMeasurementTargetVisual(e){if(!(!this.measurementActive||e.length===0))for(let t of e)t.isDisposed()||(t.renderOutline=!0,t.outlineColor=new Ee(.38,.65,.98),t.outlineWidth=.045)}setMeasurementSnapKind(e,t=!0){this.measurementSnapKind!==e&&(this.measurementSnapKind=e,t&&this.notifyMeasurementsChanged())}invalidateMeasurementSnapInputCache(){this.measurementSnapInputCache=null,this.measurementSnapInputCacheTargetId=null,this.measurementSnapInputCacheSignature=null}getMeasurementTargetName(){let e=this.measurementTargetNode;return!e||Jc(e)?null:Cd(e,e.name||`node-${e.uniqueId}`)}getMeasurementTargetBounds(){if(!this.rootMesh||!this.measurementTargetNode||Jc(this.measurementTargetNode))return null;let e=this.findSelectableNode(this.measurementTargetNode);if(!e)return null;this.measurementTargetNode=e;let t=this.getRenderableMeshes(this.rootMesh).filter(i=>lg(i,e));return Gl(t)}resolveMeasurementPickPoint(e,t){if(t)return this.setMeasurementSnapKind("free"),e;let i=this.createMeasurementGeometrySnapInput();if(!i)return this.setMeasurementSnapKind("free"),e;let r=GA(this.toMeasurementPoint(e),i);return r?(this.setMeasurementSnapKind(r.kind),oo(r.point)):(this.setMeasurementSnapKind("free"),e)}createMeasurementGeometrySnapInput(){var f;let e=this.measurementTargetNode;if(!this.rootMesh||!e||Jc(e))return null;let t=this.getMeasurementTargetMeshes(e);if(t.length===0)return null;let i=this.createMeasurementSnapInputSignature(t);if(this.measurementSnapInputCache&&this.measurementSnapInputCacheTargetId===e.uniqueId&&this.measurementSnapInputCacheSignature===i)return this.measurementSnapInputCache;let r=[],s=[],a=`babylon:${e.uniqueId}`;for(let d of t){if(d.isDisposed())continue;let u=d.getVerticesData(L.PositionKind);if(!u||u.length<3)continue;let h=d.computeWorldMatrix(!0),m=[],g=Math.floor(u.length/3);for(let _=0;_{var r;let i="geometry"in t&&t.geometry?(r=t.geometry.uniqueId)!=null?r:"geometry":"none";return[t.uniqueId,i,t.getTotalVertices(),t.getTotalIndices(),t.computeWorldMatrix(!0).asArray().map(zEe).join(",")].join(":")}).join("|")}getMeasurementTargetMeshes(e=this.measurementTargetNode){return!this.rootMesh||!e||Jc(e)?[]:this.getRenderableMeshes(this.rootMesh).filter(t=>!t.isDisposed()&&lg(t,e))}getMeasurementTargetPickPoint(e,t){return!e||e.isDisposed()||!t?null:this.measurementTargetMeshes.includes(e)?t.clone():null}pickFrontmostMeasurementTargetPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.measurementTargetMeshes.length===0)return null;let r=i.getBoundingClientRect(),s=e-r.left,a=t-r.top,o=this.scene.pick(s,a,l=>l!==this.previewLine&&!this.measurementMarkers.includes(l));return o!=null&&o.hit?this.getMeasurementTargetPickPoint(o.pickedMesh,o.pickedPoint):null}createBabylonMeasurementDraftingLayout(e,t){var l,c,f;let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.getMeasurementMarkerSize(),a=(f=(c=(l=this.camera.upVector)==null?void 0:l.clone)==null?void 0:c.call(l))!=null?f:new b(0,1,0);a.normalize();let o=HA(this.toMeasurementPoint(i),this.toMeasurementPoint(r),{viewPosition:this.toMeasurementPoint(this.camera.position),viewUp:this.toMeasurementPoint(a),offset:s*4.2,extensionGap:s*.55,extensionOvershoot:s*.8,arrowLength:s*2.35,arrowWidth:s*.78,labelGap:s*1.05});return o?{lineSegments:o.lineSegments.map(([d,u])=>[oo(d),oo(u)]),labelPosition:oo(o.labelPoint)}: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)*.018:.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,i&&this.setMeasurementSnapKind(null,!1),this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&(this.measurementMarkers.splice(a,1),this.measurementMarkerPoints.splice(a,1)),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),pE(t,gE));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,i=this.toMeasurementDisplayPoint(e);for(let r=0;r=0?this.measurementMarkerPoints[i].clone():t;if(this.pendingPoint){if(b.Distance(r,this.pendingPoint)<1e-4)return;if(i<0){let s=this.getMeasurementMarkerSize(),a=Nn.CreateSphere("measure-marker",{diameter:s*.76,segments:12},this.scene);a.position=this.toMeasurementDisplayPoint(r),a.isPickable=!1,a.material=wQ(this.scene),a.renderingGroupId=2,this.measurementMarkers.push(a),this.measurementMarkerPoints.push(r.clone())}this.createMeasurementSegment(this.pendingPoint,r),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),pE(this.pendingMarker,gE)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(i<0){let s=this.getMeasurementMarkerSize(),a=Nn.CreateSphere("measure-marker",{diameter:s*.76,segments:12},this.scene);a.position=this.toMeasurementDisplayPoint(r),a.isPickable=!1,a.material=wQ(this.scene),a.renderingGroupId=2,this.measurementMarkers.push(a),this.measurementMarkerPoints.push(r.clone()),this.pendingMarker=a}else this.pendingMarker=this.measurementMarkers[i];this.pendingMarker.scaling.setAll(1.6),pE(this.pendingMarker,wEe),this.pendingPoint=r,this.ensurePreviewLine()}this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){var f,d;let i=this.toMeasurementDisplayPoint(e),r=this.toMeasurementDisplayPoint(t),s=this.createBabylonMeasurementDraftingLayout(e,t),a=Nn.CreateLineSystem("measure-line",{lines:(f=s==null?void 0:s.lineSegments)!=null?f:[[i,r]]},this.scene);a.color=LQ.clone(),a.alpha=1,a.isPickable=!1,a.renderingGroupId=2;let o=Dm(this.createMeasurementReading(e,t)),l=(d=s==null?void 0:s.labelPosition)!=null?d:b.Center(i,r),c=this.createMeasurementLabelMesh(o,l,this.getMeasurementMarkerSize()*3.2);this.measurementSegments.push({start:e.clone(),end:t.clone(),line:a,label:c})}createMeasurementLabelMesh(e,t,i){let r=Nn.CreatePlane("measure-label",{width:i*3.7,height:i*1.08},this.scene);r.position=t,r.billboardMode=Q.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new iM("measure-label-tex",{...oc},this.scene);s.hasAlpha=!0;let a=s.getContext();jA(a,e,oc.width,oc.height),s.update();let o=new ze("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new Ee(1,1,1),o.disableLighting=!0,o.disableDepthWrite=!0,o.opacityTexture=s,o.useAlphaFromDiffuseTexture=!0,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=Nn.CreateLineSystem("measure-preview",{lines:Array.from({length:7},()=>[b.Zero(),b.Zero()]),updatable:!0},this.scene),this.previewLine.color=OQ.clone(),this.previewLine.alpha=.82,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){var l;if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.toMeasurementDisplayPoint(this.pendingPoint),t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=this.lastPointerClient.x-i.left,s=this.lastPointerClient.y-i.top,a=null;if(this.lastPointerClient.altKey){this.setMeasurementSnapKind("free");let c=this.scene.pick(r,s,f=>f!==this.previewLine&&!this.measurementMarkers.includes(f));a=c.hit&&c.pickedPoint?this.resolveMeasurementPickPoint(c.pickedPoint,!0):e.add(this.scene.createPickingRay(r,s,Z.Identity(),this.camera).direction.scale(5))}else{let c=this.pickFrontmostMeasurementTargetPoint(this.lastPointerClient.x,this.lastPointerClient.y);c?a=this.resolveMeasurementPickPoint(c,!1):this.setMeasurementSnapKind(null)}let o=a?this.createBabylonMeasurementDraftingLayout(this.pendingPoint,this.toMeasurementBasePoint(a)):null;this.previewLine=Nn.CreateLineSystem("measure-preview",{lines:(l=o==null?void 0:o.lineSegments)!=null?l:[[e,e]],instance:this.previewLine},this.scene),this.previewLine.color=OQ.clone(),this.previewLine.alpha=.82,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return KA(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=GF(e),r=t.reduce((s,a)=>s+Pd(a),0);return WM(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};Ca.annotationIdentity=Z.Identity(),Ca.annotationWorldPoint=b.Zero(),Ca.annotationProjection=b.Zero(),Ca.annotationDirection=b.Zero(),Ca.annotationRay=new rn(b.Zero(),b.Zero(),1);i0=Ca});async function UQ(n,e){if(bh(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(fV(),cV));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(BQ(),FQ));return i(n)}var VQ=y(()=>{"use strict";$E()});var kQ={};Be(kQ,{createBabylonGridRenderer:()=>YEe});function XEe(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function zF(n){return new b(n.x,n.y,n.z)}function GQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function YEe(n){return new HF(n)}var cg,HF,WQ=y(()=>{"use strict";rL();js();YR();KR();We();Kt();Qm();Qp();$f();jc();dE();dE();mE();_A();_a();gl();bA();cg=32;HF=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.warmupFrame=null;this.renderScale=1;this.cameraZoomObservers=new Set;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(),this.scheduleWarmupFrames()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new ke(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ri(this.engine),this.scene.clearColor=new dt(.12,.12,.14,1),this.scene.autoClear=!1,new ba("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}getCameraZoomRange(e){let t=e.radius,i=e.lowerRadiusLimit,r=e.upperRadiusLimit,s=typeof i=="number"&&Number.isFinite(i)&&i>0?i:Math.max(t*.08,1e-5),a=typeof r=="number"&&Number.isFinite(r)&&r>s?r:Math.max(t*8,s*10);return{current:Math.max(s,Math.min(t,a)),min:s,max:a}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}scheduleWarmupFrames(e=8){this.warmupFrame!==null&&window.cancelAnimationFrame(this.warmupFrame),this.warmupFrame=window.requestAnimationFrame(()=>{this.warmupFrame=null,!(!this.canRender()||this.contextLost)&&(this.markDirty(),e>1&&this.scheduleWarmupFrames(e-1))})}getCellBounds(e){let t=Gl(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,u,h;await fE();let r=e.length>cg?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${cg} (layerMask limit)`),e.slice(0,cg)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(u=t.gapX)!=null?u:.02,o=(h=t.gapY)!=null?h:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;mcg?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${cg} (layerMask limit)`),e.placements.slice(0,cg)):e.placements,r=[];for(let f=0;f0&&(u.push(...r[g]),h|=1<{this.markDirty(),this.notifyCameraZoomChanged()})),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 u,h;let l=await t(e.path),c=(h=(u=e.path.split(".").pop())==null?void 0:u.replace(".","").toLowerCase())!=null?h:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=Ee.FromHexString(e.color);for(let g of f)g.material instanceof ze&&g.material.name==="stl-mat"&&(g.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof ze&&(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=V_(this.getCellBounds(e)),l=new Ri(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,zF(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=45,l.viewport=new Po(i,r,s,a),l.layerMask=1<{this.markDirty(),this.notifyCameraZoomChanged()})),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));this.renderScale=t;let i=Rr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),this.getRenderScale()}getRenderScale(){return Number(this.renderScale.toFixed(2))}getCameraZoomState(){var s;let e=(s=this.cells[0])==null?void 0:s.camera;if(!e)return null;let t=this.getCameraZoomRange(e),i=(t.max-t.current)/(t.max-t.min),r=GQ(i);return{value:r,percentage:Math.round(r*100)}}setCameraZoom(e){if(this.cells.length===0)return null;let t=GQ(e);for(let i of this.cells){let r=this.getCameraZoomRange(i.camera);i.camera.radius=r.max-t*(r.max-r.min)}return this.markDirty(),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}resetView(){for(let e=0;e(WQ(),kQ));return e(n)}var HQ=y(()=>{"use strict"});var KQ={};Be(KQ,{createLoggedGridRenderer:()=>XF,createLoggedModelPreview:()=>fg,logGridPreviewSelection:()=>YQ,logModelPreviewSelection:()=>XQ});function XQ(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 fg(n,e,t,i){let r=bh(i);return XQ(n,e,r),{preview:await UQ(t,i),route:r}}function YQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function XF(n,e,t){let i=C3();return YQ(n,e,i),{renderer:await zQ(t),route:i}}var r0=y(()=>{"use strict";VQ();HQ();$E()});function YF(n){qQ=n}function n0(n){return jQ[n]>=jQ[qQ]}function s0(){return new Date().toISOString()}function a0(n){return n&&Object.keys(n).length>0?n:void 0}function Zi(n){let e=`[AI3D][${n}]`;return{debug(t,i){n0("debug")&&console.debug(e,s0(),t,a0(i))},info(t,i){n0("info")&&console.debug(e,s0(),t,a0(i))},warn(t,i){n0("warn")&&console.warn(e,s0(),t,a0(i))},error(t,i){n0("error")&&console.error(e,s0(),t,a0(i))}}}var jQ,qQ,wn=y(()=>{"use strict";jQ={debug:10,info:20,warn:30,error:40},qQ="warn"});var QQ={};Be(QQ,{supportsAnimationPreview:()=>l0,supportsAnnotationPreview:()=>o0,supportsBoundingBoxPreview:()=>f0,supportsCameraZoomPreview:()=>d0,supportsDisassemblyPreview:()=>dg,supportsFocusSelectionPreview:()=>ug,supportsMeasurementPreview:()=>vn,supportsOrientationGizmoPreview:()=>_E,supportsRenderScalePreview:()=>vE,supportsWireframePreview:()=>c0,supportsWorkbenchPreview:()=>ZQ});function rr(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function o0(n){return rr(n,"getAnnotationProvider")}function l0(n){return rr(n,"hasAnimations")&&rr(n,"toggleAnimation")}function vn(n){return rr(n,"toggleMeasurement")&&rr(n,"isMeasurementActive")&&rr(n,"cancelMeasurement")&&rr(n,"clearMeasurements")&&rr(n,"setMeasurementScale")&&rr(n,"getMeasurementScale")&&rr(n,"setMeasurementUnit")&&rr(n,"getMeasurementUnit")&&rr(n,"getMeasurementBounds")&&rr(n,"getMeasurementRecords")&&rr(n,"getMeasurementState")&&rr(n,"updateMeasurementLabels")&&rr(n,"exportMeasurements")}function dg(n){return rr(n,"toggleDisassembly")&&rr(n,"resetDisassembly")&&rr(n,"isDisassemblyEnabled")}function ug(n){return rr(n,"toggleFocusSelection")&&rr(n,"isFocusSelectionEnabled")}function c0(n){return rr(n,"toggleWireframe")}function _E(n){return rr(n,"toggleOrientationGizmo")}function f0(n){return rr(n,"toggleBoundingBox")}function vE(n){return rr(n,"setRenderScale")}function d0(n){return rr(n,"getCameraZoomState")&&rr(n,"setCameraZoom")}function ZQ(n){return rr(n,"setExplode")&&rr(n,"resetExplode")&&rr(n,"focusWorldPoint")}var ah=y(()=>{"use strict"});function u0(n,e){return gu(n,e)}function $Q(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function h0(n,e){let t=u0("div","ai3d-zoom-control is-hidden"),i=u0("div","ai3d-zoom-track"),r=u0("div","ai3d-zoom-fill"),s=u0("input","ai3d-zoom-range");s.type="range",s.min="0",s.max="100",s.step="1",s.value="0",s.setAttribute("aria-label",X("helper.cameraZoomLabel")),s.setAttribute("aria-orientation","vertical"),i.appendChild(r),t.append(i,s),n.appendChild(t);let a=null,o=null,l=null,c=E=>{E.stopPropagation()};t.addEventListener("mousedown",c),t.addEventListener("click",c);function f(){let E=e();return d0(E)?E:null}function d(E){if(!E){t.classList.add("is-hidden"),s.disabled=!0;return}let T=$Q(E.value),S=Math.round(T*100);s.disabled=!1,s.value=String(S),t.style.setProperty("--ai3d-zoom-percent",`${S}%`);let A=Bi("helper.cameraZoomValue",{value:`${E.percentage}%`});s.setAttribute("aria-valuenow",String(S)),s.setAttribute("aria-valuetext",A),t.setAttribute("title",A),t.classList.remove("is-hidden")}function u(E){E!==a&&(o==null||o(),o=null,a=E,E!=null&&E.observeCameraZoom&&(o=E.observeCameraZoom(d)))}function h(){var T;let E=f();u(E),d((T=E==null?void 0:E.getCameraZoomState())!=null?T:null)}function m(){g(s.valueAsNumber/100)}function g(E){let T=a!=null?a:f();if(!T){h();return}u(T),d(T.setCameraZoom($Q(E)))}function p(E){let T=i.getBoundingClientRect();return T.height<=0?s.valueAsNumber/100:1-(E-T.top)/T.height}function _(E){E.preventDefault(),E.stopPropagation(),s.focus({preventScroll:!0}),g(p(E.clientY))}function v(E){var T;l===E.pointerId&&(E.preventDefault(),E.stopPropagation(),(T=t.hasPointerCapture)!=null&&T.call(t,E.pointerId)&&t.releasePointerCapture(E.pointerId),l=null,t.classList.remove("is-dragging"))}return s.addEventListener("input",m),t.addEventListener("pointerdown",E=>{var T;if(E.button!==0||s.disabled){E.stopPropagation();return}l=E.pointerId,(T=t.setPointerCapture)==null||T.call(t,E.pointerId),t.classList.add("is-dragging"),_(E)}),t.addEventListener("pointermove",E=>{l===E.pointerId&&_(E)}),t.addEventListener("pointerup",v),t.addEventListener("pointercancel",v),t.addEventListener("wheel",E=>{E.preventDefault(),E.stopPropagation();let T=E.deltaY<0?6:-6;s.value=String(Math.max(0,Math.min(100,s.valueAsNumber+T))),m()},{passive:!1}),h(),{sync:h,destroy(){o==null||o(),o=null,a=null,t.remove()}}}var KF=y(()=>{"use strict";En();ah();Rm()});function qr(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 JQ(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{let s=Math.abs(i-e),a=Math.abs(hg[t]-e);s{te.stopPropagation()};u.addEventListener("pointerdown",p),u.addEventListener("mousedown",p),u.addEventListener("click",p);let _=te=>{if(te.key!=="Escape"||te.defaultPrevented)return;let Le=te.target;if(Le instanceof Node&&!u.contains(Le)&&!e.contains(Le))return;let Ot=Zt();!Ot||!YA(Ot)||(Ht(),te.preventDefault(),te.stopPropagation())};u.addEventListener("keydown",_),e.addEventListener("keydown",_),f&&(u.classList.add("is-mobile"),t$(e,!1));let v=h0(e,i),E=null,T=null,S=te=>(te.classList.add("is-secondary"),te),A=(te,Le)=>{te.classList.toggle("ai3d-btn-active",Le),te.setAttribute("aria-pressed",String(Le))},R=()=>{for(let te of[h,m,g]){let Le=Array.from(te.querySelectorAll(".ai3d-inline-btn")).filter(mi=>!mi.classList.contains("is-hidden")),Ot=Le.length>0,bi=Le.some(mi=>!mi.classList.contains("is-secondary"));te.classList.toggle("is-hidden",!Ot),te.classList.toggle("has-primary-visible",bi)}},M=!1,I=!1,C=f?h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":X("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;C==null||C.appendChild(qr(''));let D=(zE=C==null?void 0:C.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?zE:null,w=()=>{f&&C&&(t$(e,M),A(C,M),D==null||D.setText(M?X("helper.scrollAction"):X("helper.interactAction")),C.setAttribute("aria-label",M?X("helper.disableInteractionLabel"):X("helper.enableInteractionLabel"))),A(Pe,I),u.classList.toggle("show-secondary",I),R()},k=te=>{M=te,w()};C==null||C.addEventListener("click",()=>{let te=!M;l==null||l(te),k(te),Ei(C,te?X("helper.interactionOn"):X("helper.interactionOff"))});let O=(te,Le)=>{te.classList.toggle("is-hidden",!Le)},N=null,B=()=>{var mi;let te=i(),Le=te&&ug(te)?te:null,Ot=te&&dg(te)?te:null,bi=te&&vn(te)?te:null;A(me,!!(Le!=null&&Le.isFocusSelectionEnabled())),A(Ue,!!(Ot!=null&&Ot.isDisassemblyEnabled())),A(ue,!!(bi!=null&&bi.isMeasurementActive())),te&&_E(te)&&A(Y,!!((mi=te.isOrientationGizmoEnabled)!=null&&mi.call(te)))},V=()=>{let te=i(),Le=te&&ug(te)?te:null,Ot=te&&dg(te)?te:null,bi=te&&l0(te)?te:null,mi=te&&vE(te)?te:null;te!==N&&(N=te,A(H,!1),A(de,!1),A(Ce,!1),Ce.replaceChildren(qr('')),O(q,!!(te!=null&&te.resetView)),O(j,!!(te!=null&&te.exportModelInfo)),O(J,!!(te!=null&&te.exportSelectedPartInfo)),O(H,!!te&&c0(te)),O(Y,!!te&&_E(te)),O(de,!!te&&f0(te)),O(me,!!Le),O(Ue,!!Ot),O(ne,!!mi),O(Ce,!!(bi!=null&&bi.hasAnimations()))),ve(mi),O(ue,!!te&&vn(te)),B(),Ht(),R(),v.sync()},q=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.resetViewLabel")}});sn(q,"reset-view"),q.appendChild(qr('')),q.addEventListener("click",()=>{let te=i();te!=null&&te.resetView&&(te.resetView(),V(),Ei(q,X("helper.resetViewDone")))});let j=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copyModelInfoLabel")}}));sn(j,"copy-model-info"),j.appendChild(qr('')),j.addEventListener("click",()=>{let te=i();if(te!=null&&te.exportModelInfo)try{let Le=te.exportModelInfo(r());if(!Le)return;navigator.clipboard.writeText(Le).then(()=>{Ei(j,X("helper.copied"))}).catch(()=>{Ei(j,X("helper.failed"))})}catch(Le){console.error("[AI3D] Export model info failed:",Le),Ei(j,X("helper.failed"))}});let J=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copySelectedPartInfoLabel")}}));sn(J,"copy-selected-part-info"),J.appendChild(qr('')),J.addEventListener("click",()=>{let te=i();if(te!=null&&te.exportSelectedPartInfo)try{let Le=te.exportSelectedPartInfo();if(!Le){Ei(J,X("helper.noSelectedPart"));return}navigator.clipboard.writeText(Le).then(()=>{Ei(J,X("helper.copied"))}).catch(()=>{Ei(J,X("helper.failed"))})}catch(Le){console.error("[AI3D] Export selected part info failed:",Le),Ei(J,X("helper.failed"))}});let H=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleWireframeLabel"),"aria-pressed":"false"}});sn(H,"toggle-wireframe"),H.appendChild(qr('')),H.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleWireframe))return;let Le=te.toggleWireframe();A(H,Le),Ei(H,Le?X("helper.wireframeOn"):X("helper.wireframeOff"))});let Y=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleAxesLabel"),"aria-pressed":"false"}});sn(Y,"toggle-axes"),Y.appendChild(qr('')),Y.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleOrientationGizmo))return;let Le=te.toggleOrientationGizmo();A(Y,Le),Ei(Y,Le?X("helper.axesOn"):X("helper.axesOff"))});let de=h.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});sn(de,"toggle-bounding-box"),de.appendChild(qr('')),de.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleBoundingBox))return;let Le=te.toggleBoundingBox();A(de,Le),Ei(de,Le?X("helper.boundingBoxOn"):X("helper.boundingBoxOff"))});let me=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});sn(me,"toggle-focus"),me.appendChild(qr('')),me.addEventListener("click",()=>{let te=i();if(!te||!ug(te))return;let Le=te.toggleFocusSelection();V(),Ei(me,Le?X("helper.focusSelectionOn"):X("helper.focusSelectionOff"))});let Ue=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});sn(Ue,"toggle-disassembly"),Ue.appendChild(qr('')),Ue.addEventListener("click",()=>{let te=i();if(!te||!dg(te))return;let Le=te.toggleDisassembly();V(),Ei(Ue,Le?X("helper.disassemblyOn"):X("helper.disassemblyOff"))});let ae=m0((HE=a==null?void 0:a().renderScale)!=null?HE:1),_e=jF(ae),ne=S(h.createEl("button",{cls:"ai3d-inline-btn ai3d-res-btn",attr:{"aria-label":X("helper.changeResolutionLabel")}}));sn(ne,"change-resolution");function ve(te=null){var bi,mi;let Le=qF(te,(mi=(bi=a==null?void 0:a().renderScale)!=null?bi:hg[_e])!=null?mi:1);_e=jF(Le);let Ot=e$(Le);ne.textContent=Ot,ne.setAttribute("title",Bi("helper.resolutionValue",{value:Ot}))}ve(),ne.addEventListener("click",()=>{let te=i();if(!te||!vE(te))return;_e=(jF(qF(te,hg[_e]))+1)%hg.length;let Ot=te.setRenderScale(hg[_e]),bi=qF(te,Ot);ve(te),Ei(ne,Bi("helper.resolutionValue",{value:e$(bi)}))});let Ce=S(h.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":X("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));sn(Ce,"toggle-animation"),Ce.appendChild(qr('')),Ce.addEventListener("click",()=>{let te=i();if(!(te!=null&&te.toggleAnimation))return;let Le=te.toggleAnimation();Ce.replaceChildren(qr(Le?'':'')),A(Ce,Le),Ei(Ce,Le?X("helper.playing"):X("helper.paused"))});let ue=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":X("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:X("helper.toggleMeasurementLabel")}});sn(ue,"toggle-measurement"),ue.appendChild(qr('')),ue.addEventListener("click",()=>{let te=i();if(!te||!vn(te))return;let Le=te.toggleMeasurement();V(),Ei(ue,Le?X("helper.measurementOn"):X("helper.measurementOff")),Le||A(ct,!1)});function be(te){let Le=i();!Le||!vn(Le)||(Le.clearMeasurements(),A(ue,Le.isMeasurementActive()),Ht(),Ei(te,X("helper.measurementsCleared")))}function Ge(te){let Le=i();if(!Le||!vn(Le))return;let Ot=Le.exportMeasurements();if(!Ot){Ei(te,X("helper.noMeasurements"));return}navigator.clipboard.writeText(Ot).then(()=>{Ei(te,X("helper.measurementsCopied"))}).catch(()=>{Ei(te,X("helper.failed"))})}let qe=m.createEl("button",{cls:"ai3d-measurement-strip is-hidden",attr:{"aria-expanded":"false","aria-label":X("helper.calibrateLabel")}});sn(qe,"toggle-measurement-details"),qe.setAttribute("aria-live","polite");let Ye=qe.createSpan({cls:"ai3d-measurement-strip-value"}),Ke=qe.createSpan({cls:"ai3d-measurement-strip-meta"});function Zt(){let te=i();return te&&vn(te)?te:null}function Ut(te){te!==E&&(T==null||T(),T=null,E=te,te!=null&&te.observeMeasurements&&(T=te.observeMeasurements(()=>{B(),Ht()})))}function Wi(te){var Ot;if(te.phase==="select-target")return X("helper.measurementSelectTarget");if(te.phase==="picking-end"&&te.snapKind)return oe(te.snapKind);if(te.phase==="picking-end")return X("helper.measurementPickEnd");let Le=(Ot=te.records[te.records.length-1])!=null?Ot:null;return Le?Nf(Le.reading.distance,Le.reading.unit):te.snapKind?oe(te.snapKind):te.phase==="ready"?X("helper.measurementPickStart"):te.phase==="reviewing"?X("helper.measurementReviewing"):X("helper.measurementStripEmpty")}function oe(te){switch(te){case"vertex":return X("helper.measurementSnapVertex");case"edge":return X("helper.measurementSnapEdge");case"free":return X("helper.measurementSnapFree")}}function Qi(te){return te.records.length>0?Bi("helper.measurementStripSaved",{count:String(te.records.length)}):te.phase==="select-target"?X("helper.measurementTargetMissing"):te.targetName?Bi("helper.measurementTargetLabel",{target:te.targetName}):te.unit}function Ht(){let te=Zt();if(Ut(te),!te){qe.classList.add("is-hidden"),Ne.classList.add("is-hidden"),qe.classList.remove("is-expanded"),qe.setAttribute("aria-expanded","false"),De.disabled=!0,ct.disabled=!0;return}let Le=te.getMeasurementState(),Ot=Le.active,bi=Le.records,mi=bi.length>0;qe.classList.toggle("is-hidden",Le.phase==="inactive"),!Ot&&!mi&&(Ne.classList.add("is-hidden"),qe.classList.remove("is-expanded"),qe.setAttribute("aria-expanded","false")),qe.classList.toggle("is-active",Ot),qe.classList.toggle("is-pending",Le.phase==="picking-end"),qe.classList.toggle("is-targeting",Le.phase==="select-target"),qe.classList.toggle("is-reviewing",Le.phase==="reviewing"),qe.classList.toggle("has-records",mi),qe.dataset.ai3dMeasurementPhase=Le.phase,Ye.textContent=Wi(Le),Ke.textContent=Qi(Le),qe.setAttribute("aria-label",[X("helper.measurementStripTitle"),Ye.textContent,Ke.textContent,X("helper.calibrateLabel")].filter(Boolean).join(" ")),ye.textContent=mi?Bi("helper.measurementStripSaved",{count:String(bi.length)}):X("helper.measurementNoRecords");let G=mi;De.disabled=!G,ct.disabled=!G,A(ue,Ot)}let Di=g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.copySnapshotLabel")}});sn(Di,"copy-snapshot"),Di.appendChild(qr('')),Di.addEventListener("click",()=>{let te=i();if(te)try{let Le=te.captureSnapshot();if(!Le)return;let Ot=JQ(Le);navigator.clipboard.write([new ClipboardItem({"image/png":Ot})]).then(()=>{Ei(Di,X("helper.copied"))}).catch(()=>{Ei(Di,X("helper.failed"))})}catch(Le){console.error("[AI3D] Copy snapshot failed:",Le),Ei(Di,X("helper.failed"))}});let ot=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.saveSnapshotLabel")}}));sn(ot,"save-snapshot"),ot.appendChild(qr('')),ot.addEventListener("click",()=>{var Le,Ot;let te=i();if(te)try{let bi=te.captureSnapshot();if(!bi)return;let mi=r(),G=dn(mi)||"model",le=a==null?void 0:a(),xe=(Le=le==null?void 0:le.snapshotFolder)!=null?Le:"Media/3D Previews",Se=(Ot=le==null?void 0:le.snapshotNaming)!=null?Ot:"model-name",Te=Date.now(),vt=Se==="timestamp"?`snapshot_${Te}.png`:`${G}_snapshot_${Te}.png`,xt=JQ(bi),ft=new FileReader;ft.onload=()=>{let Ct=ft.result;t.vault.adapter.exists(xe).then(Pt=>Pt?Promise.resolve():t.vault.createFolder(xe).catch(pi=>{KEe.warn("Failed to create vault folder",{path:xe,error:String(pi)})})).then(()=>t.vault.createBinary(`${xe}/${vt}`,Ct)).then(()=>{Ei(ot,X("helper.saved"))}).catch(Pt=>{console.error("[AI3D] Save snapshot failed:",Pt),Ei(ot,X("helper.failed"))})},ft.onerror=()=>{console.error("[AI3D] FileReader error"),Ei(ot,X("helper.failed"))},ft.onabort=()=>{console.error("[AI3D] FileReader aborted"),Ei(ot,X("helper.failed"))},ft.readAsArrayBuffer(xt)}catch(bi){console.error("[AI3D] Save snapshot failed:",bi),Ei(ot,X("helper.failed"))}});let ji=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.downloadSnapshotLabel")}}));sn(ji,"download-snapshot"),ji.appendChild(qr('')),ji.addEventListener("click",()=>{let te=i();if(te)try{let Le=te.captureSnapshot();if(!Le)return;let Ot=r(),mi=`${dn(Ot)||"model"}_snapshot_${Date.now()}.png`,G=createEl("a");G.href=Le,G.download=mi,activeDocument.body.appendChild(G),G.click(),G.remove(),Ei(ji,X("helper.downloaded"))}catch(Le){console.error("[AI3D] Download snapshot failed:",Le),Ei(ji,X("helper.failed"))}});let K=S(g.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":X("helper.removePreviewLabel")}}));sn(K,"remove-preview"),K.appendChild(qr('')),K.addEventListener("click",s);let U=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":X(d.labelKey),"aria-pressed":"false"}});sn(U,"toggle-annotation"),U.appendChild(qr(''));let he=U.createSpan({cls:"ai3d-pin-badge is-hidden"});U.addEventListener("click",()=>{if(!o)return;let te=o();A(U,te),Ei(U,te?X(d.activeTooltipKey):X(d.inactiveTooltipKey))});let Pe=u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":X("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Pe.appendChild(qr('')),Pe.addEventListener("click",()=>{I=!I,Pe.setAttribute("aria-label",I?X("helper.hideMoreActionsLabel"):X("helper.showMoreActionsLabel")),w(),Ei(Pe,I?X("helper.moreActionsShown"):X("helper.moreActionsHidden"))}),n.insertBefore(u,e.nextSibling);let Ne=u.createDiv({cls:"ai3d-measurement-details is-hidden"});Ne.setAttribute("role","group"),Ne.setAttribute("aria-label",X("helper.calibrateTitle")),Ne.addEventListener("pointerdown",p),Ne.addEventListener("mousedown",p),Ne.addEventListener("click",p),Ne.createDiv({cls:"ai3d-measurement-details-title",text:X("helper.calibrateTitle")});let et=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-records-section"});et.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementRecordsTitle")});let rt=et.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-actions"}),ye=rt.createSpan({cls:"ai3d-measurement-record-summary"}),De=rt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":X("helper.copyMeasurementsLabel")}});sn(De,"copy-measurements"),De.appendChild(qr('')),De.addEventListener("click",()=>{Ge(De)});let ct=rt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":X("helper.clearMeasurementsLabel")}});sn(ct,"clear-measurements"),ct.appendChild(qr('')),ct.addEventListener("click",()=>{be(ct)});let At=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-calibration-section"});At.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementCalibrationTitle")});let nt=At.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-unit-row"});nt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.measurementUnitLabel")});let Ze=nt.createEl("select",{cls:"ai3d-measurement-detail-select"});for(let te of["um","mm","cm","m"]){let Le=Ze.createEl("option");Le.value=te,Le.textContent=te}Ze.value="mm";let Vt=At.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-reference-row"});Vt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateReference")});let ii=Vt.createSpan({cls:"ai3d-measurement-detail-readonly ai3d-measurement-reference-value"}),hi=Vt.createEl("input",{cls:"ai3d-measurement-detail-input ai3d-measurement-reference-input",attr:{type:"number",step:"any",min:"0",placeholder:X("helper.calibrateReferencePlaceholder")}}),se=Vt.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-reference-apply",text:X("helper.calibrateReferenceApply"),attr:{type:"button"}});sn(se,"calibrate-reference");let Qe=Ne.createDiv({cls:"ai3d-measurement-section ai3d-measurement-size-section"});Qe.createDiv({cls:"ai3d-measurement-section-title",text:X("helper.measurementModelSizeTitle")});let Ie=Qe.createDiv({cls:"ai3d-measurement-detail-row"});Ie.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateCurrent")});let ut=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),it=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),Ve=Ie.createSpan({cls:"ai3d-measurement-detail-readonly"}),Rt=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-size-row"});Rt.createSpan({cls:"ai3d-measurement-detail-label",text:X("helper.calibrateReal")});let Gt=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"X"}}),$i=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Y"}}),li=Rt.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Z"}}),xr=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-size-options"}).createEl("label",{cls:"ai3d-measurement-detail-lock"}),Da=xr.createEl("input",{attr:{type:"checkbox",checked:"true"}});xr.appendChild(activeDocument.createTextNode(" "+X("helper.calibrateLock")));let UE=Qe.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-scale-actions"}),_h=UE.createEl("button",{cls:"ai3d-inline-btn",text:X("helper.calibrateApply")}),Ig=UE.createEl("button",{cls:"ai3d-inline-btn",text:X("helper.calibrateReset")}),Zr=null;function vh(){var Ot;let te=i();if(!te||!vn(te))return null;let Le=te.getMeasurementState().records;return(Ot=Le[Le.length-1])!=null?Ot:null}function VE(){let te=i();if(!te||!vn(te))return;let Le=te.getMeasurementState(),Ot=Le.bounds,bi=Le.scale;if(Ze.value=Le.unit,Zr=Ot,Ot){let G=Le.unit;ut.textContent=`X: ${Ro(Ot.x*bi.x)} ${G}`,it.textContent=`Y: ${Ro(Ot.y*bi.y)} ${G}`,Ve.textContent=`Z: ${Ro(Ot.z*bi.z)} ${G}`}else ut.textContent="X: -",it.textContent="Y: -",Ve.textContent="Z: -";let mi=vh();ii.textContent=mi?Nf(mi.reading.distance,mi.reading.unit,!1):X("helper.calibrateReferenceEmpty"),hi.disabled=!mi,se.disabled=!mi,hi.placeholder=mi?Ro(mi.reading.distance):X("helper.calibrateReferencePlaceholder")}function GE(){var G,le;let te=i();if(!te||!vn(te)||!Zr)return;let Le=parseFloat(Gt.value),Ot=parseFloat($i.value),bi=parseFloat(li.value),mi=BU(Zr,{x:Number.isFinite(Le)?Le:void 0,y:Number.isFinite(Ot)?Ot:void 0,z:Number.isFinite(bi)?bi:void 0},te.getMeasurementScale(),Da.checked);if(!mi){Ei(_h,X("helper.calibrateNeedsValue"));return}(G=te.setMeasurementUnit)==null||G.call(te,Ze.value),(le=te.setMeasurementScale)==null||le.call(te,mi),sf(),Ht(),Ei(_h,X("helper.calibrated"))}function Eh(){var mi,G;let te=i();if(!te||!vn(te))return;let Le=parseFloat(hi.value);(mi=te.setMeasurementUnit)==null||mi.call(te,Ze.value);let Ot=vh();if(!Ot||!Number.isFinite(Le)||Le<=0){Ei(se,X("helper.calibrateNeedsValue"));return}let bi=FU(te.getMeasurementScale(),Ot.reading.distance,Le);if(!bi){Ei(se,X("helper.calibrateNeedsValue"));return}(G=te.setMeasurementScale)==null||G.call(te,bi),hi.value="",sf(),Ht(),Ei(se,X("helper.calibrated"))}function kE(){var Le,Ot;let te=i();!te||!vn(te)||((Le=te.setMeasurementUnit)==null||Le.call(te,Ze.value),(Ot=te.setMeasurementScale)==null||Ot.call(te,{x:1,y:1,z:1}),hi.value="",sf(),Ht(),Ei(Ig,X("helper.calibrateResetDone")))}function nf(te){if(!Da.checked||!Zr)return;let Ot=parseFloat((te==="x"?Gt:te==="y"?$i:li).value);if(!isFinite(Ot)||Ot===0)return;let bi=Zr[te];if(bi<=1e-4)return;let mi=Ot/bi;te!=="x"&&(Gt.value=Ro(Zr.x*mi)),te!=="y"&&($i.value=Ro(Zr.y*mi)),te!=="z"&&(li.value=Ro(Zr.z*mi))}Gt.addEventListener("input",()=>nf("x")),$i.addEventListener("input",()=>nf("y")),li.addEventListener("input",()=>nf("z")),Ze.addEventListener("change",()=>{let te=i();!te||!vn(te)||(te.setMeasurementUnit(Ze.value),sf(),Ht())}),se.addEventListener("click",Eh),_h.addEventListener("click",GE),Ig.addEventListener("click",kE);function sf(){if(VE(),Zr){let te=i(),Le=te&&vn(te)?te.getMeasurementScale():{x:1,y:1,z:1};Gt.value=Ro(Zr.x*Le.x),$i.value=Ro(Zr.y*Le.y),li.value=Ro(Zr.z*Le.z)}else Gt.value="",$i.value="",li.value=""}function WE(te,Le){te&&sf(),Ne.classList.toggle("is-hidden",!te),qe.classList.toggle("is-expanded",te),qe.setAttribute("aria-expanded",String(te)),Ht(),Ei(Le,te?X("helper.calibrateOpen"):X("helper.calibrateClose"))}return qe.addEventListener("click",()=>{qe.classList.contains("is-hidden")||WE(Ne.classList.contains("is-hidden"),qe)}),w(),V(),{showAnimButton(){Ce.classList.remove("is-hidden"),R()},showAnnotateButton(){U.classList.remove("is-hidden"),R()},updateAnnotationBadge(te){te>0?(he.textContent=String(te),he.classList.remove("is-hidden")):he.classList.add("is-hidden")},setMobileInteractionMode(te){f&&k(te)},syncCapabilities:V}}function Ei(n,e){var i;(i=ZF.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,ZF.set(n,t),window.setTimeout(()=>{t.remove(),ZF.delete(n)},1500)}var KEe,hg,jEe,ZF,QF=y(()=>{"use strict";En();wn();ah();_a();ps();W_();KF();KEe=Zi("helper-buttons");hg=[.5,.75,1,1.25,1.5,2],jEe=2;ZF=new WeakMap});function i$(n){let e=sa(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),qEe.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var qEe,r$=y(()=>{"use strict";Oa();wn();qEe=Zi("direct-load-service")});var n$={};Be(n$,{MissingConverterError:()=>Od,MobileConversionUnavailableError:()=>oh,describeModelLoadFailure:()=>TE,formatModelLoadFailure:()=>p0,isMissingConverterError:()=>SE});function g0(n){return`.${n.trim().toLowerCase()}`}function SE(n){return n instanceof Od}function p0(n){var e;if(n instanceof Od){let t=(e=ZEe[n.converterId])!=null?e:n.converterId;return Bi("modelLoad.warningMessage",{ext:g0(n.sourceExt),converterName:t})}return n instanceof oh?Bi("modelLoad.mobileWarningMessage",{ext:g0(n.sourceExt)}):Bi("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function TE(n){return n instanceof Od?{level:"warning",title:X("modelLoad.warningTitle"),message:p0(n),hint:X("modelLoad.warningHint")}:n instanceof oh?{level:"warning",title:X("modelLoad.warningTitle"),message:p0(n),hint:X("modelLoad.mobileWarningHint")}:{level:"error",title:X("modelLoad.errorTitle"),message:p0(n),hint:X("modelLoad.errorHint")}}var ZEe,Od,oh,mg=y(()=>{"use strict";En();ZEe={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};Od=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${g0(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},oh=class extends Error{constructor(t){super(`Format ${g0(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var l$={};Be(l$,{convertForPreview:()=>rSe});function a$(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 QEe(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function o$(n){let e=Xn(n);return Hn(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function s$(n){return Hn(n,Xn(n)).toLowerCase()}function $Ee(n,e,t){if(!t)return a$(n,e);let i=o$(n),r=QEe(`${n}::${e}`);return Ji(t,`${i}-${r}.ai3d-converted.${e}`)}function JEe(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function eSe(n){if(!n)return!1;try{return await hs(n,ms),!0}catch(e){return!1}}async function v0(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:hu(n),hu(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function tSe(n){return typeof n=="function"?await n():n}async function iSe(n,e,t,i){var l,c;let r=(c=(l=n.convertedAssetCache)==null?void 0:l.entries())!=null?c:[];if(r.length===0)return;let s=s$(n.sourcePath),a=o$(n.sourcePath),o=r.filter(f=>f.sourcePath!==n.sourcePath&&f.sourceExt===n.sourceExt&&f.targetExt===e&&f.outputExt===e&&f.converterId===t&&s$(f.sourcePath)===s&&Hn(f.outputPath).startsWith(`${a}-`)&&Hn(f.outputPath).endsWith(`.ai3d-converted.${e}`)).sort((f,d)=>d.createdAt-f.createdAt);for(let f of o)if(await v0(n.sourcePath,f.outputPath,i))return f}async function rSe(n){var u,h,m,g,p,_,v,E,T,S;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(u=n.capability.outputFormat)!=null?u:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);ef.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=hu(n.sourcePath)),i),s=(h=n.convertedAssetCache)==null?void 0:h.get(n.sourcePath,n.sourceExt,t);if(s)if(!await eSe(s.outputPath))ef.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!JEe(s,e))ef.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(g=n.convertedAssetCache)==null||g.delete(n.sourcePath,n.sourceExt,t);else if(!await v0(n.sourcePath,s.outputPath,r()))ef.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(p=n.convertedAssetCache)==null||p.delete(n.sourcePath,n.sourceExt,t);else return ef.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=$Ee(n.sourcePath,t,n.outputRoot);if(await v0(n.sourcePath,a,r()))return ef.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(_=n.convertedAssetCache)==null||_.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=a$(n.sourcePath,t);if(o!==a&&await v0(n.sourcePath,o,r()))return ef.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(v=n.convertedAssetCache)==null||v.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 iSe(n,t,e,r());if(l)return ef.info("relocated conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,previousSourcePath:l.sourcePath,outputPath:l.outputPath}),(E=n.convertedAssetCache)==null||E.set({cacheVersion:2,converterId:l.converterId,converterCacheKey:l.converterCacheKey,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:l.outputPath,outputExt:t,warnings:[...l.warnings,"Using relocated conversion output."],createdAt:Date.now()}),{effectivePath:l.outputPath,effectiveExt:t,warnings:[...l.warnings,"Using relocated conversion output."]};let c=await tSe(n.conversionManager);if(!c)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!c.canConvert(n.sourceExt))throw new Od(e,n.sourceExt);let f=await c.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await Wn(n.outputRoot,{recursive:!0});let d=await c.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(S=n.convertedAssetCache)==null||S.set({cacheVersion:2,converterId:e,converterCacheKey:(T=f==null?void 0:f.cacheKey)!=null?T:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:d.outputPath,outputExt:d.outputExt,warnings:d.warnings,createdAt:Date.now()}),ef.info("conversion route done",{sourcePath:n.sourcePath,outputPath:d.outputPath,warningCount:d.warnings.length}),{effectivePath:d.outputPath,effectiveExt:d.outputExt,warnings:d.warnings}}var ef,c$=y(()=>{"use strict";ry();wn();fr();mg();ef=Zi("conversion-service")});var f$={};Be(f$,{prepareModelInput:()=>pg});function nSe(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function pg(n){var a,o;let e=sa((a=n.path.split(".").pop())!=null?a:""),t=Cg(e);if(Nd.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw Nd.warn("unsupported format",{sourceExt:e,path:n.path}),Pg(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=nSe(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(Rr())throw Nd.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new oh(e);if(!n.absolutePath)throw Nd.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 Nd.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"&&Nd.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(c$(),l$)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return Nd.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=i$({path:n.path,sourceExt:e});return Nd.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 Nd,E0=y(()=>{"use strict";Oa();r$();mg();wn();_a();Nd=Zi("model-pipeline")});function AE(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var $F=y(()=>{"use strict"});function lh(n,e){var r;let i=e.auxiliaryFileFolder.trim()||oU(n,sSe);return(r=sc(n,i))!=null?r:void 0}var sSe,S0=y(()=>{"use strict";ps();sSe="ai-model-workbench/converted-assets"});function ch(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?X(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=T3(()=>{!f&&s&&o()});return{el:e,setPhase(u){s=null,a=u,f||o()},setPhaseKey(u){s=u,f||o()},setProgress(u){f||(u<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,u))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var T0=y(()=>{"use strict";En()});var JF={};Be(JF,{renderModelLoadFailure:()=>xE,renderModelPerformanceFeedback:()=>RE});function xE(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});Rr()&&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 RE(n,e){var o,l,c,f,d,u,h;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:(u=e.resourceWarnings)!=null&&u.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(h=e.resourceWarnings)!=null?h:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` +`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var bE=y(()=>{"use strict";_a()});function tf(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return aSe.has(e)?e:"glb"}function fh(n,e,t){return typeof n=="string"&&oSe.has(n)?n:e===t?"direct":"convert"}var aSe,oSe,A0=y(()=>{"use strict";aSe=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),oSe=new Set(["direct","convert"])});function gg(n,e,t){g$(n,{label:Bi(h$[e],{model:Gs(t)||X("workbench.modelTitle")}),shortcutKeys:lSe})}function m$(n){g$(n,{label:X(h$.grid),shortcutKeys:cSe})}function _g(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"?(vn(i)&&i.toggleMeasurement(),t.preventDefault()):r==="escape"&&vn(i)&&YA(i)&&t.preventDefault()})}function p$(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 g$(n,e){mSe(n),n.setAttribute("role","application"),dSe(n,e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),hSe(n),n.dataset.testid="ai3d-preview-canvas"}function dSe(n,e){let t=n.dataset.ai3dLabelId,i=t?n.ownerDocument.getElementById(t):null,r=i instanceof HTMLElement?i:uSe(n);if(!r){n.removeAttribute("aria-label"),n.removeAttribute("aria-labelledby"),delete n.dataset.ai3dLabelId;return}r.setText(e),n.dataset.ai3dLabelId=r.id,n.setAttribute("aria-labelledby",r.id),n.removeAttribute("aria-label")}function uSe(n){let e=n.parentElement;if(!e)return null;let t=e.createSpan({cls:"ai3d-visually-hidden"});return t.id=`ai3d-preview-canvas-label-${++fSe}`,t}function hSe(n){n.removeAttribute("title"),n.removeAttribute("data-tooltip"),n.removeAttribute("aria-description")}function mSe(n){if(u$(n),d$.has(n)||typeof MutationObserver=="undefined")return;d$.add(n),new MutationObserver(()=>u$(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function u$(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var lSe,cSe,d$,fSe,h$,x0=y(()=>{"use strict";En();W_();ah();ps();lSe=["R","W","G","B","M","Space"],cSe=["R","W"],d$=new WeakSet,fSe=0,h$={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function _$(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"}),u=f.createEl("canvas");u.className="ai3d-canvas-full",gg(u,"direct-view",t),_g(u,r),d.appendChild(u);let h=f.createDiv();h.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(h),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),g=m.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"}),p=m.createDiv({cls:"ai3d-sidebar-body"}),_=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:X("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:u,modeOverlay:h,sidebarContent:p,vHandle:_,workbenchPanel:g}}var v$=y(()=>{"use strict";En();x0()});function R0(n){return Math.round(n!=null?n:0).toLocaleString()}function pSe(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function gSe(n){return n==="three"?"Three.js":"Babylon.js"}function E$(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:X("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:gSe(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:X("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});vg(c,X("workbench.meshesLabel"),R0(t.meshCount)),vg(c,X("directWorkbench.partCandidatesLabel"),R0(r)),vg(c,t.splatCount!==void 0?X("workbench.splatsLabel"):X("workbench.trianglesLabel"),R0((f=t.splatCount)!=null?f:t.triangleCount)),vg(c,X("workbench.materialsLabel"),R0(t.materialCount)),vg(c,X("workbench.boundingSizeLabel"),pSe(t)),vg(c,X("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function vg(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 S$=y(()=>{"use strict";En()});function _Se(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&b0.has(e.ext)&&b0.has(e.sourceExt)}function vSe(n){return T$.has(n.ext)?n.strategy==="direct"?T$.has(n.sourceExt):n.strategy==="convert"&&b0.has(n.ext):!1}function ESe(n,e){return n.useThreeForConvertedDirectView&&e.strategy==="convert"&&b0.has(e.ext)}function A$(n,e){let t=_Se(n,e),i=vSe(e),r=ESe(n,e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!i,rendererRollout:r?"three-direct-glb":n.previewRendererRollout,useThreeRenderer:r?!0:n.useThreeRenderer}}var T$,b0,x$=y(()=>{"use strict";T$=new Set(["glb","gltf","stl","ply","obj"]),b0=new Set(["glb","gltf"])});function Eg(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function ySe(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?Eg(n):(e!=null?e:0)>=TSe?{renderQuality:n.renderQuality==="high"?"medium":n.renderQuality,renderScale:Math.min(n.renderScale,e1)}:(e!=null?e:0)>=SSe?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,M$)}:Eg(n)}function i1(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}function ISe(n){return n.splatCount!==void 0?n.splatCount>=b$:i1(n)>=xSe}function CSe(n){return n.splatCount!==void 0?n.splatCount>=bSe:i1(n)>=RSe}function PSe(n){return n.splatCount!==void 0?n.splatCount>=b$:i1(n)>=ASe}function y$(n,e){return e.performanceTier==="extreme"?CSe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,e1)}:Eg(n):e.performanceTier==="heavy"?ISe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,e1)}:Eg(n):e.performanceTier==="medium"&&PSe(e)?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,M$)}:Eg(n)}function Sg(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function M0(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function I$(n){try{return decodeURIComponent(n)}catch(e){return n}}function t1(n){let e=I$(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 C$(n,e){return t1(n?`${n}/${M0(e)}`:M0(e))}function P$(n){let e=n.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function DSe(n){return!n||n.startsWith("data:")?!0:MSe.test(n)&&!Sg(n)}function LSe(n,e){return Sg(n)?t1(M0(e)):C$(P$(n),e)}async function OSe(n,e){let t=await NSe(n,e);return t===null?null:e.toLowerCase().split(/[?#]/,1)[0].endsWith(".gltf")?BSe(n,e,t):t}async function NSe(n,e){if(Sg(e))try{let{stat:i}=await Promise.resolve().then(()=>(fr(),mA));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return D$(t)?t.stat.size:null}async function wSe(n,e){if(Sg(e))try{let{readFile:r}=await Promise.resolve().then(()=>(fr(),mA));return new TextDecoder().decode(await r(e))}catch(r){return null}let t=n.vault.getAbstractFileByPath(e),i=n.vault;if(!(t instanceof R$.TFile)||typeof i.read!="function")return null;try{return await i.read(t)}catch(r){return null}}async function FSe(n,e,t){if(Sg(e))try{let{pathJoin:a,pathNormalize:o,stat:l}=await Promise.resolve().then(()=>(fr(),mA)),c=M0(I$(t)),f=o(e.replace(/[\\/][^\\/]*$/,"")),d=Sg(c)?o(c):o(a(f,c));return(await l(d)).size}catch(a){return null}let i=P$(e),r=C$(i,t),s=n.vault.getAbstractFileByPath(r);return D$(s)?s.stat.size:null}async function BSe(n,e,t){var l,c;let i=await wSe(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 u=f==null?void 0:f.uri;if(!u||DSe(u))return;let h=LSe(e,u);if(!h||a.has(h))return;a.add(h);let m=await FSe(n,e,u);if(m!==null&&Number.isFinite(m)&&m>0){s+=m;return}let g=(p=f==null?void 0:f.byteLength)!=null?p:d;Number.isFinite(g)&&(g!=null?g:0)>0&&(s+=g!=null?g: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 D$(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function Tg(n,e,t){return ySe(t,await OSe(n,e))}var R$,SSe,TSe,ASe,xSe,RSe,b$,bSe,M$,e1,MSe,y0=y(()=>{"use strict";R$=require("obsidian"),SSe=64*1024*1024,TSe=192*1024*1024,ASe=18e4,xSe=45e4,RSe=12e5,b$=65e4,bSe=15e5,M$=1.25,e1=1,MSe=/^[a-z][a-z0-9+.-]*:/i});function VSe(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new r1(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var ME,USe,r1,I0,L$=y(()=>{"use strict";Oa();wn();ME=Zi("conversion-manager"),USe=3e5,r1=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};I0=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get(sa(e))}registerConverter(e){ME.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set(sa(t),e)}canConvert(e){let t=sa(e),i=this.converters.has(t);return ME.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=sa(e.sourceExt),i=this.getConverter(t);if(!i)throw ME.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 ME.info("joining in-flight conversion",{key:r}),s;ME.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=VSe(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:USe,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var h1={};Be(h1,{describeConverterCommandSource:()=>c1,inspectAllConverterCommands:()=>nTe,inspectConverterCommand:()=>u1,listConverterCommandSpecs:()=>rTe,resolveConverterCommand:()=>sTe,resolveConverterInvocation:()=>Fn});function a1(...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 WSe(){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",...a1("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(Ji(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(Ji(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 zSe(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?Ji(e,"npm"):void 0,t?Ji(t,"npm"):void 0,r?Ji(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>Ji(f,n))))}function HSe(...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?Ji(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>Ji(l,c)))))}async function d1(n){try{return await hs(n,(He==null?void 0:He.platform)==="win32"?ms:yC),!0}catch(e){return!1}}function n1(n){let e=n==null?void 0:n.trim();if(e)return e}function N$(n){return XSe.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function YSe(n,e){for(let t of[n,...e]){let i=N$(t);if(!i.ok)return i}return{ok:!0}}async function KSe(n){try{return(await hu(n)).isFile()}catch(e){return!1}}function jSe(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:GSe}async function $Se(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(IC).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?QSe(n):[""];for(let s of t)for(let a of i){let o=Ji(s,a?`${n}${a}`:n);if(await d1(o))return o}}function o1(n,e,t=15e3){let i=N$(n);return i.ok?new Promise((r,s)=>{ga(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 l1(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 s1(n,e,t,i){let r="";for(let s of t)try{return await o1(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=l1(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function JSe(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad"){let r=[];for(let s of kSe)try{await o1(e,[...t,"-c",s.probe]),r.push({kind:"cad-python",label:s.label,ok:!0,detail:""})}catch(a){r.push({kind:"cad-python",label:s.label,ok:!1,detail:l1(a)})}return r}if(n.id==="assimp")try{return await o1(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:l1(r)}]}if(n.id==="freecadcmd"){let r=await s1(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 s1(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 s1(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function eTe(n){let e=f1.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function tTe(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)),u=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||u?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function O$(n,e,t){for(let i of e)if(await d1(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 iTe(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 C0(n,e,t,i){let r=qSe(e),s=YSe(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(ZSe(r.executable)){let[o,l]=await Promise.all([d1(r.executable),KSe(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 ${c1(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await $Se(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 ${c1(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function rTe(){return f1}function c1(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 u1(n,e){var u,h,m;let t=eTe(n),{userCandidates:i,systemCandidates:r}=tTe(t),s=n1(e);if(s)return C0(t,s,"settings",s);let a=n1((u=He==null?void 0:He.env)==null?void 0:u[t.envVar]);if(a)return C0(t,a,"env");for(let g of(h=t.envVarAliases)!=null?h:[]){let p=n1((m=He==null?void 0:He.env)==null?void 0:m[g]);if(p)return C0(t,p,"env")}let o=await O$(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let g of t.fallbackCommands){let p=await C0(t,g,"path");if(l.push(p),p.available)return p}let c=await O$(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(g=>g.checkedCandidates),d=iTe(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 nTe(n){let e=await Promise.all(f1.map(t=>u1(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await JSe(t)})))}async function sTe(n,e){return(await Fn(n,e)).command}async function Fn(n,e){var i;let t=await u1(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,GSe,kSe,f1,XSe,wd=y(()=>{"use strict";fr();fr();fr();He=Sm(),GSe=[".exe",".cmd",".bat",".com"],kSe=[{label:"CadQuery import",probe:"import cadquery; print('ok')"},{label:"trimesh import",probe:"import trimesh; print('ok')"},{label:"OCP STEP readers",probe:["from OCP.STEPCAFControl import STEPCAFControl_Reader","from OCP.STEPControl import STEPControl_Reader","from OCP.BRepMesh import BRepMesh_IncrementalMesh","print('ok')"].join("; ")},{label:"OCCT GLB writer",probe:"from OCP.RWGltf import RWGltf_CafWriter, RWGltf_WriterTrsfFormat; print('ok')"}];f1=[{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"?zSe("obj2gltf.cmd"):a1("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"?HSe(Ji("FBX2glTF","FBX2glTF-windows-x64.exe"),Ji("FBX2glTF","FBX2glTF.exe")):a1("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:WSe()}];XSe=/[;|&<>$`\r\n\t]/});var F$,w$=y(()=>{F$=`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 B$,F$=y(()=>{B$=`import cadquery as cq +`});var U$,B$=y(()=>{U$=`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 V$,U$=y(()=>{V$=`import cadquery as cq +`});var G$,V$=y(()=>{G$=`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 rf(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var I0=y(()=>{"use strict"});function G$(n){return n.toLowerCase().replace(/^\./,"")}function cTe(n){let e=G$(n);return e==="step"||e==="stp"?V$:e==="iges"||e==="igs"?B$:w$}function h1(n,e,t){return n.split(e).join(t)}function k$(n,e,t){let i=G$(t),r=h1(cTe(i),aTe,rf(n)),s=h1(r,oTe,rf(e));return h1(s,lTe,i)}var aTe,oTe,lTe,W$=y(()=>{"use strict";N$();F$();U$();I0();aTe="__AI3D_SOURCE_PATH__",oTe="__AI3D_OUTPUT_PATH__",lTe="__AI3D_SOURCE_EXT__"});async function uTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function hTe(n,e,t){return new Promise((i,r)=>{pa(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 fTe,dTe,C0,z$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();W$();fTe=Zi("freecad-converter"),dTe=300*1e3;C0=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!ma(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-freecad"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,k$(e.sourcePath,s,e.sourceExt),"utf8"),fTe.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await hTe(t.command,[...t.args,o],dTe)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python can import CadQuery/OCP and trimesh. A dedicated conda/mamba environment from conda-forge is recommended; pip install cadquery trimesh can work when compatible wheels are available. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{uu(o,{force:!0})}if(!await uTe(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await ha(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 gTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function _Te(n,e,t){return new Promise((i,r)=>{pa(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 mTe,pTe,P0,H$=y(()=>{"use strict";fr();fr();fr();wn();wd();mTe=Zi("obj2gltf-converter"),pTe=180*1e3;P0=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!ma(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ji(i,`${r}.ai3d-converted.glb`);await Wn(zn(s),{recursive:!0}),mTe.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await _Te(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],pTe)}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 gTe(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await ha(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 STe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function TTe(n,e,t){return new Promise((i,r)=>{pa(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 vTe,ETe,D0,X$=y(()=>{"use strict";fr();fr();fr();wn();wd();vTe=Zi("fbx2gltf-converter"),ETe=180*1e3;D0=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!ma(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ji(i,`${r}.ai3d-converted.glb`);await Wn(zn(s),{recursive:!0}),vTe.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await TTe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],ETe)}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 STe(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await ha(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 RTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function bTe(n,e,t){return new Promise((i,r)=>{pa(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 MTe(n,e){let t=rf(n),i=rf(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 ATe,xTe,L0,Y$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();I0();ATe=Zi("assimp-converter"),xTe=300*1e3;L0=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!ma(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-mesh-convert"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,MTe(e.sourcePath,s),"utf8"),ATe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await bTe(t.command,[...t.args,o],xTe)}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{uu(o,{force:!0})}if(!await RTe(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await ha(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 ITe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function CTe(n,e,t){return new Promise((i,r)=>{pa(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 PTe(n,e){let t=rf(n),i=rf(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 m1,yTe,O0,K$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();I0();m1=Zi("sldprt-converter"),yTe=600*1e3;O0=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await Fn("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!ma(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 Fn("freecadcmd",this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-sldprt"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,PTe(e.sourcePath,s),"utf8"),m1.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await CTe(t.command,[...t.args,o],yTe);f&&m1.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&m1.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{uu(o,{force:!0})}if(!await ITe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await ha(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 N0={};Be(N0,{createConversionManager:()=>DTe});function DTe(n){var r;let e=new M0,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);p1.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new C0(n==null?void 0:n.freecadCommand),new P0(n==null?void 0:n.obj2gltfCommand),new D0(n==null?void 0:n.fbx2gltfCommand),new L0(n==null?void 0:n.assimpCommand),new O0(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),p1.info("enabled converter",{converterId:s.id})):p1.debug("converter disabled",{converterId:s.id});return e}var p1,w0=y(()=>{"use strict";D$();z$();H$();X$();Y$();K$();wn();p1=Zi("conversion-factory")});var F0={};Be(F0,{AnnotationManager:()=>_1});function FTe(){return`pin-${Date.now()}-${LTe++}`}function Q$(n){return un(n)}function BTe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var yE,Ag,LTe,g1,OTe,NTe,j$,q$,wTe,Z$,xg,_1,B0=y(()=>{"use strict";yE=require("obsidian");En();ps();ks();Ag=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],LTe=1,g1=4,OTe=2,NTe=6,j$=6,q$=72,wTe=80,Z$=200;xg=class xg{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 yE.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 u=d.detail,h=u==null?void 0:u.pinId;h&&this.pulsePin(h)},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>=Z$)return console.warn(`[AI3D] Pin limit (${Z$}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:FTe(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:Ag[this.annotations.length%Ag.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,k;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 u=-1,h=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),u=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=dn(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(),u=-1},_=O=>{if(d.replaceChildren(),u=-1,h=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{J.preventDefault(),J.stopPropagation(),g(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);_(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(u+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(u-1,0))):O.key==="Enter"?(O.preventDefault(),u>=0&&u{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),E=(w=r==null?void 0:r.color)==null?void 0:w.trim(),T=E||Ag[0],S=E&&!Ag.includes(E)?[E,...Ag]:Ag;for(let O of S){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",Bi("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===T&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),T=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let A=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=A.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=A.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:T};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,T);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let I=this.overlay.getBoundingClientRect(),C=e-I.left,D=t-I.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,I.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(D-10,I.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=dn(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:(k=r.headingLevel)!=null?k: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=X("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 yE.Component);this.previewRenderChildren.set(e,l);try{await yE.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>=xg.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%NTe===0:this.frameCount%OTe===0,a=this.cameraIdle||r.length<=g1,o=a?0:this.movingOcclusionCursor%r.length,l=o+g1,c=xg._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(u.el);else{let h=Math.round(c.screenX),m=Math.round(c.screenY);u.el.style.setProperty("--pin-left",`${h}px`),u.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(u.el,c.depth),f.push({el:u.el,screenX:h,screenY:m,depth:c.depth});let g=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+g1)%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>wTe){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(!BTe(c,f,j$))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-q$,Math.min(q$,l+d*(f.height+j$)));let u=c.width,h=c.height;c=new DOMRect(c.x,c.y+l,u,h)}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")}};xg.IDLE_THRESHOLD=15,xg._scratchProjection={screenX:0,screenY:0,depth:0};_1=xg});function Wl(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var IE=y(()=>{"use strict"});var U0={};Be(U0,{createHeadingSearch:()=>UTe,createNoteReader:()=>VTe,normalizeHeadingText:()=>Wl,readHeadingSection:()=>eJ,searchVaultHeadings:()=>J$});function J$(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 UTe(n){return e=>J$(n,e)}async function eJ(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof $$.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` +`});function rf(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var P0=y(()=>{"use strict"});function k$(n){return n.toLowerCase().replace(/^\./,"")}function uTe(n){let e=k$(n);return e==="step"||e==="stp"?G$:e==="iges"||e==="igs"?U$:F$}function m1(n,e,t){return n.split(e).join(t)}function W$(n,e,t){let i=k$(t),r=m1(uTe(i),cTe,rf(n)),s=m1(r,fTe,rf(e));return m1(s,dTe,i)}var cTe,fTe,dTe,z$=y(()=>{"use strict";w$();B$();V$();P0();cTe="__AI3D_SOURCE_PATH__",fTe="__AI3D_OUTPUT_PATH__",dTe="__AI3D_SOURCE_EXT__"});async function pTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function gTe(n,e,t){return new Promise((i,r)=>{ga(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 hTe,mTe,D0,H$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();z$();hTe=Zi("freecad-converter"),mTe=300*1e3;D0=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!pa(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-freecad"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,W$(e.sourcePath,s,e.sourceExt),"utf8"),hTe.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await gTe(t.command,[...t.args,o],mTe)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python can import CadQuery/OCP and trimesh. A dedicated conda/mamba environment from conda-forge is recommended; pip install cadquery trimesh can work when compatible wheels are available. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{uu(o,{force:!0})}if(!await pTe(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await ma(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 ETe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function STe(n,e,t){return new Promise((i,r)=>{ga(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 _Te,vTe,L0,X$=y(()=>{"use strict";fr();fr();fr();wn();wd();_Te=Zi("obj2gltf-converter"),vTe=180*1e3;L0=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!pa(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ji(i,`${r}.ai3d-converted.glb`);await Wn(zn(s),{recursive:!0}),_Te.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await STe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],vTe)}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 ETe(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await ma(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 xTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function RTe(n,e,t){return new Promise((i,r)=>{ga(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 TTe,ATe,O0,Y$=y(()=>{"use strict";fr();fr();fr();wn();wd();TTe=Zi("fbx2gltf-converter"),ATe=180*1e3;O0=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!pa(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(o=e.outputPath)!=null?o:Ji(i,`${r}.ai3d-converted.glb`);await Wn(zn(s),{recursive:!0}),TTe.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await RTe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],ATe)}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 xTe(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await ma(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 yTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function ITe(n,e,t){return new Promise((i,r)=>{ga(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 CTe(n,e){let t=rf(n),i=rf(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 bTe,MTe,N0,K$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();P0();bTe=Zi("assimp-converter"),MTe=300*1e3;N0=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await Fn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!pa(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 Fn(this.id,this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-mesh-convert"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,CTe(e.sourcePath,s),"utf8"),bTe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await ITe(t.command,[...t.args,o],MTe)}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{uu(o,{force:!0})}if(!await yTe(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await ma(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 DTe(n){try{return await hs(n,ms),!0}catch(e){return!1}}function LTe(n,e,t){return new Promise((i,r)=>{ga(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 OTe(n,e){let t=rf(n),i=rf(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 p1,PTe,w0,j$=y(()=>{"use strict";fr();fr();fr();fr();wn();wd();P0();p1=Zi("sldprt-converter"),PTe=600*1e3;w0=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await Fn("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!pa(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 Fn("freecadcmd",this.configuredCommand),i=zn(e.sourcePath),r=Hn(e.sourcePath,Xn(e.sourcePath)),s=(c=e.outputPath)!=null?c:Ji(i,`${r}.ai3d-converted.glb`),a=Ji(mu(),"ai3d-sldprt"),o=Ji(a,`${r}-${Date.now()}.py`);await Wn(zn(s),{recursive:!0}),await Wn(a,{recursive:!0}),await du(o,OTe(e.sourcePath,s),"utf8"),p1.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await LTe(t.command,[...t.args,o],PTe);f&&p1.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&p1.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{uu(o,{force:!0})}if(!await DTe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await ma(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 F0={};Be(F0,{createConversionManager:()=>NTe});function NTe(n){var r;let e=new I0,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);g1.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new D0(n==null?void 0:n.freecadCommand),new L0(n==null?void 0:n.obj2gltfCommand),new O0(n==null?void 0:n.fbx2gltfCommand),new N0(n==null?void 0:n.assimpCommand),new w0(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),g1.info("enabled converter",{converterId:s.id})):g1.debug("converter disabled",{converterId:s.id});return e}var g1,B0=y(()=>{"use strict";L$();H$();X$();Y$();K$();j$();wn();g1=Zi("conversion-factory")});var U0={};Be(U0,{AnnotationManager:()=>v1});function VTe(){return`pin-${Date.now()}-${wTe++}`}function $$(n){return un(n)}function GTe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var yE,Ag,wTe,_1,FTe,BTe,q$,Z$,UTe,Q$,xg,v1,V0=y(()=>{"use strict";yE=require("obsidian");En();ps();ks();Ag=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],wTe=1,_1=4,FTe=2,BTe=6,q$=6,Z$=72,UTe=80,Q$=200;xg=class xg{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 yE.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 u=d.detail,h=u==null?void 0:u.pinId;h&&this.pulsePin(h)},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>=Q$)return console.warn(`[AI3D] Pin limit (${Q$}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:VTe(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:Ag[this.annotations.length%Ag.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,$$(i.worldPos),t)}getPinPosition(e){let t=this.pinEls.get(e);return t?$$(t.worldPos):null}getAnnotations(){return this.annotations}showEditorInternal(e,t,i,r){var w,k;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 u=-1,h=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),u=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=dn(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(),u=-1},_=O=>{if(d.replaceChildren(),u=-1,h=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{J.preventDefault(),J.stopPropagation(),g(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);_(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(u+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(u-1,0))):O.key==="Enter"?(O.preventDefault(),u>=0&&u{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),E=(w=r==null?void 0:r.color)==null?void 0:w.trim(),T=E||Ag[0],S=E&&!Ag.includes(E)?[E,...Ag]:Ag;for(let O of S){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",Bi("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===T&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),T=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let A=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=A.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=A.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:T};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,T);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let I=this.overlay.getBoundingClientRect(),C=e-I.left,D=t-I.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,I.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(D-10,I.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=dn(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:(k=r.headingLevel)!=null?k: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=X("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 yE.Component);this.previewRenderChildren.set(e,l);try{await yE.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>=xg.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%BTe===0:this.frameCount%FTe===0,a=this.cameraIdle||r.length<=_1,o=a?0:this.movingOcclusionCursor%r.length,l=o+_1,c=xg._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(u.el);else{let h=Math.round(c.screenX),m=Math.round(c.screenY);u.el.style.setProperty("--pin-left",`${h}px`),u.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(u.el,c.depth),f.push({el:u.el,screenX:h,screenY:m,depth:c.depth});let g=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+_1)%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>UTe){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(!GTe(c,f,q$))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-Z$,Math.min(Z$,l+d*(f.height+q$)));let u=c.width,h=c.height;c=new DOMRect(c.x,c.y+l,u,h)}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")}};xg.IDLE_THRESHOLD=15,xg._scratchProjection={screenX:0,screenY:0,depth:0};v1=xg});function Wl(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var IE=y(()=>{"use strict"});var G0={};Be(G0,{createHeadingSearch:()=>kTe,createNoteReader:()=>WTe,normalizeHeadingText:()=>Wl,readHeadingSection:()=>tJ,searchVaultHeadings:()=>eJ});function eJ(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 kTe(n){return e=>eJ(n,e)}async function tJ(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof J$.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` `),a=-1,o=0,l=Wl(t);for(let f=0;feJ(n,e,t)}var $$,V0=y(()=>{"use strict";$$=require("obsidian");IE();IE()});var T1={};Be(T1,{LOCAL_ANALYSIS_VERSION:()=>dh,buildLocalAnalysisResult:()=>S1,buildPartRecordsFromEvidence:()=>sJ,inferModelAssetFormat:()=>tf,normalizeModelLoadStrategy:()=>fh});function nJ(){return typeof performance!="undefined"?performance.now():Date.now()}function Fd(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function HTe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(nJ()-n)),status:"success"}}function XTe(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 E1(n){return Ah([n.x,n.y,n.z])}function tJ(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function iJ(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function YTe(n,e,t,i){var c,f;let r=iJ(dn(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${iJ(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 CE(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function G0(n){return new Set(CE(n).split(" ").filter(e=>e.length>=2))}function rJ(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 KTe(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 jTe(n,e){let t=CE(n),i=CE(e);return!!t&&!!i&&t===i}function v1(n,e){let t=CE(n),i=CE(e);return!!t&&!!i&&t===i}function qTe(n){return n.map(e=>({part:e,nameTokens:G0(e.name),meshTokens:G0(e.meshRefs.join(" "))}))}function ZTe(n,e){let t=G0(n.name),i=G0(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=rJ(t,s.nameTokens),c=rJ(i,s.meshTokens),f=KTe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,u=jTe(n.materialName,a.materialName),h=v1(n.componentId,a.componentId),m=v1(n.partNumber,a.partNumber),g=v1(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return h&&(p+=.5),m&&(p+=.4),g&&(p+=.25),d&&(p+=.1),u&&(p+=.08),h&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),g&&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}`),u&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,GTe)}function QTe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=qTe(e);return n.map(i=>{let r=ZTe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function $Te(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 JTe(n){var t,i,r,s,a,o,l,c,f,d,u,h;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${Fd((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 ${Fd((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 ${Fd((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=(u=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?u:"glb",g=(h=n.effectiveFormat)!=null?h:m,p=fh(n.loadStrategy,m,g);e.push(`Format lineage: ${m.toUpperCase()}${g!==m?` -> ${g.toUpperCase()}`:""} (${p}).`)}return e.push(`${Fd(n.triangleCount,"triangle")} and ${Fd(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 eAe(n,e,t){var o,l,c,f,d;let i=tf(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=fh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function tAe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function sJ(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=eAe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:YTe(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:$Te(r),meshRefs:tJ((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],WTe),childCount:r.childCount,materialRefs:tJ(r.materialName?[r.materialName]:[],zTe),bbox:E1(r.boundingSize),center:E1(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:tAe(r),observations:JTe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function iAe(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:`${Fd(a.meshCount,"mesh")}, ${Fd(a.triangleCount,"triangle")}, ${Fd(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 rAe(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=XTe(s,c.center);f{var p;return{partId:g.partId,name:g.name,notePath:g.notePath,source:g.source,componentId:g.componentId,occurrenceId:g.occurrenceId,partNumber:g.partNumber,componentPath:g.componentPath,category:g.category,sourceFormat:g.sourceFormat,effectiveFormat:g.effectiveFormat,loadStrategy:g.loadStrategy,meshRefs:[...g.meshRefs],childCount:g.childCount,triangleCount:g.triangleCount,materialName:g.materialName,registeredMatches:(p=g.registeredMatches)==null?void 0:p.map(_=>({..._,reasons:[..._.reasons]})),observations:g.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function sAe(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 S1(n){var m,g,p,_,v,E,T,S,A,R,M,I,C;let e=(m=n.startedAt)!=null?m:nJ(),t=(p=(g=n.evidence)==null?void 0:g.summary)!=null?p:n.preview,i=tf(n.modelPath),r=(_=n.evidence)==null?void 0:_.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=fh(r==null?void 0:r.loadStrategy,(E=r==null?void 0:r.sourceFormat)!=null?E:i,s),o=QTe(sJ(n.modelPath,(S=(T=n.evidence)==null?void 0:T.parts)!=null?S:[],r),(A=n.registeredParts)!=null?A:[]),l=new Date().toISOString(),c=sAe(n.preview,n.evidence),f=rAe(n.profile,o),d=iAe(n.modelPath,n.profile,n.evidence,o,f),u=(R=n.previewImages)!=null?R:[],h=nAe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:u,warnings:c});return{asset:{assetId:n.modelPath,title:dn(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?E1(t.boundingSize):void 0,analysisVersion:dh},parts:o,knowledgeNodes:d,previewImages:u,annotationLinks:f,draftingInput:h,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=(I=n.evidence)==null?void 0:I.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},HTe(e)]}}var dh,GTe,kTe,WTe,zTe,k0=y(()=>{"use strict";ps();YE();S0();S0();dh="local-evidence-v1",GTe=3,kTe=.58,WTe=16,zTe=16});function uh(n){let e=n.trim();return e.length>aJ?Ui(e.slice(0,aJ))+"\u2026":Ui(e)}function oJ(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=uh(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=uh(c),u=uh(f);return d&&u?[{heading:d,body:u}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>uh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>uh(o)):void 0;return{title:typeof e.title=="string"?uh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?uh(e.model):void 0}}var aJ,lJ=y(()=>{"use strict";MA();aJ=8e3});function oAe(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 lAe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function cAe(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 fAe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=lAe(t)),n.sendGeometrySummaryToRemote||(t=cAe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function fJ(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=oAe(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:fAe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function dAe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):aAe}async function uAe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new A1(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function dJ(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=dAe(e.timeoutMs),i=await uAe((0,cJ.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 oJ(i.json)}var cJ,aAe,A1,uJ=y(()=>{"use strict";cJ=require("obsidian");lJ();aAe=15e3,A1=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var W0={};Be(W0,{buildKnowledgeIndexContent:()=>LJ,buildKnowledgeIndexManagedSection:()=>N1,buildKnowledgeNoteContent:()=>yJ,collectRegisteredPartsFromProfiles:()=>PJ,generateKnowledgeNote:()=>XAe,replaceManagedSection:()=>DJ,stripTransientRegisteredPartData:()=>O1});function x1(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 TJ(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function y1(n){return n.filter(e=>e.length>0).join(", ")}function R1(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function D1(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function I1(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function C1(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function pAe(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 AJ(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 P1(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 gAe(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 xJ(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Ui(n.headingRef)}`),n.notePath){let i=(t=Gs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function _Ae(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 RJ(n){let[e,t,i]=_Ae(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 bJ(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 vAe(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: ${y1(e)}.`}function hJ(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 EAe(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.",hJ(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.`,bJ(n),RJ(n),hJ(e)],i=vAe(e);return i&&t.push(i),t}function SAe(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=xJ(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Ui(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function TAe(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(`| ${Ca(s.label)} | ${Ca((r=s.nearestPartName)!=null?r:"-")} | ${Ca(a)} | ${s.distance===void 0?"-":s.distance.toFixed(3)} | ${Math.round(s.confidence*100)}% |`)}return t.push(""),t}function AAe(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,EJ)){let l=Ui((s=Gs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",qo(o.triangleCount,"triangle"),o.materialName?`material ${Ui(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Ui(o.name)} (${c})`)}return t.push(""),t}function qo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function xAe(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 ${Ui(e.materialName)}`:"";return`${t+1}. ${Ui(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${qo(e.triangleCount,"triangle")}${i})`}).join(` -`)}function RAe(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?`- ${Ui(t.name)}: possible reuse of ${Ui(i.sourcePartName)} from ${Ui(i.sourceAssetId)} (${Math.round(i.confidence*100)}% confidence).`:""}).filter(Boolean).join(` -`)}function MJ(n){var p,_,v,E,T,S,A,R,M;let e=TJ(n.sourcePath).toUpperCase(),t=n.preview,i=[...(_=(p=n.analysis)==null?void 0:p.parts)!=null?_:[]].sort((I,C)=>{var D,w;return((D=C.triangleCount)!=null?D:0)-((w=I.triangleCount)!=null?w:0)}),r=(E=(v=n.profile)==null?void 0:v.annotations)!=null?E:[],s=(S=(T=n.analysis)==null?void 0:T.annotationLinks)!=null?S:[],a=R1(i.map(I=>{var C;return(C=I.category)!=null?C:"unclassified"})).slice(0,6),o=R1(i.flatMap(I=>I.materialName?[Ui(I.materialName)]:[])).slice(0,6),l=xAe(i),c=RAe(i),f=t?RJ(t):"Geometry statistics are not available yet, so this draft should stay provisional.",d=t?bJ(t):"Reload the preview to capture mesh, triangle, vertex, and material evidence.",u=(A=n.profile)==null?void 0:A.notes.trim(),h=t?`${n.baseName} is a ${e} asset with ${qo(t.meshCount,"mesh")}, ${qo(t.triangleCount,"triangle")}, ${qo(t.vertexCount,"vertex")}, and ${qo(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(I=>{let C=s.find(k=>k.annotationId===I.id),D=C!=null&&C.nearestPartName?` Nearest captured part: ${Ui(C.nearestPartName)}.`:"",w=I.headingRef?` Linked heading: ${Ui(I.headingRef)}.`:"";return`- ${Ui(I.label||"Untitled pin")}.${D}${w}`}).join(` -`):"- No pins are saved yet. Add pins for the regions that should become standalone notes, questions, or review checkpoints.",g=[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:[h,f,u?`User notes add this context: ${u}`:"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: ${y1(a)}.`:"No part categories were inferred yet.",o.length>0?`Visible materials include ${y1(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:R1([...(M=(R=n.profile)==null?void 0:R.tags)!=null?M:[],`format/${e.toLowerCase()}`,...a.map(I=>`part/${I}`)]).slice(0,12),nextActions:g,generatedAt:new Date().toISOString()}}function bAe(n){var i,r;let e=(r=(i=n.analysis)==null?void 0:i.localDraft)!=null?r:MJ(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=>`- ${Ui(s)}`),""),e.nextActions.length>0&&t.push("Next actions:","",...e.nextActions.map(s=>`- ${Ui(s)}`),""),t}function an(n){return JSON.stringify(n)}function MAe(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 yAe(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 IAe(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 CAe(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 PAe(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=C1(l.center),f=l.observations.slice(0,2).join(" "),d=l.notePath?`[[${l.notePath}]]`:"-",u=P1(l),h=[AJ(l),u].filter(Boolean).join("; ");t.push(`| ${o+1} | ${Ca(l.name)} | ${Ca(d)} | ${Ca(h)} | ${Ca((r=l.category)!=null?r:"unclassified")} | ${((s=l.triangleCount)!=null?s:0).toLocaleString()} | ${Ca((a=l.materialName)!=null?a:"-")} | ${c} | ${Ca(f)} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more candidate parts omitted from this note | - | - | - | - | - | - | See sidecar JSON |`),t.push(""),t}function DAe(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(`| ${Ca(s.name)} | ${Ca(o)} | ${Ca(a.sourceAssetId)} | ${Math.round(a.confidence*100)}% | ${Ca(a.reasons.join(", "))} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more matched parts omitted | - | - | See sidecar JSON |`),t.push(""),t}function LAe(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(`- **${Ui(r.title)}** (${r.domain}, ${Math.round(r.confidence*100)}%, ${r.source}): ${Ui(r.summary)}`);return t.push(""),t}function OAe(n,e){var i,r;let t=["## Evidence Health","",`- Analysis version: ${dh}`,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 NAe(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=xJ(s),o=a.length>0?` (${a.join("; ")})`:"";i.push(`- **${Ui(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 yJ(n){var c,f,d,u;let e=n.profile,t=n.preview,i=n.analysis,r=TJ(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: ${an(n.sourcePath)}`,`format: ${r}`,"status: ready","analysis_mode: local",`analysis_version: ${dh}`,`report_note_path: ${an(n.notePath)}`,...n.analysisSidecarPath?[`analysis_sidecar_path: ${an(n.analysisSidecarPath)}`]:[],...n.knowledgeIndexPath?[`knowledge_index_path: ${an(n.knowledgeIndexPath)}`]:[],`annotation_count: ${a.length}`,`updated_at: ${new Date().toISOString()}`,...o.length>0?["preview_images:",...o.map(h=>` - ${an(h)}`)]:[],...s.length>0?["knowledge_tags:",...s.map(h=>` - ${an(h)}`)]:[],"---"].join(` -`),"",`# ${Ui(n.baseName)}`,"","## Summary","",...t?[...IU(t,{decimals:2}),""]:["(No preview data available)",""],...IAe(i),...bAe(n),...n.knowledgeIndexPath?["## Knowledge Index","",`- [[${n.knowledgeIndexPath}|Open model knowledge index]]`,""]:[],"## Local Observations","",...EAe(t,e).map(h=>`- ${h}`),"",...OAe(i,n.analysisSidecarPath),...CAe(i),...SAe(e),...TAe(i),...AAe(i),...PAe(i),...DAe(i),...LAe(i),...MAe(i),...yAe(i),...NAe(t,e),"## Review Notes","",(u=e==null?void 0:e.notes)!=null&&u.trim()?Ui(e.notes.trim()):"-",""].join(` -`)}function Ca(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function wAe(n){let[,e=""]=n.split(",",2),t=atob(e),i=new Uint8Array(t.length);for(let r=0;r{hAe.warn("Failed to create vault folder",{path:i,error:String(s)})})}async function IJ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof zl.TFile)return i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);return s instanceof zl.TFile?s:null}}async function mJ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof zl.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 zl.TFile)return await n.vault.modify(s,t),s}return null}async function FAe(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 L1(n,t);let a=`${t}/${i}_evidence_${Date.now()}.png`;return await n.vault.createBinary(a,wAe(r)),{paths:[a]}}catch(a){let o=a instanceof Error?a.message:String(a);return{paths:[],warning:`Evidence snapshot failed: ${o}`}}}function CJ(n){return!!n&&typeof n=="object"}function PE(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 pJ(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Ah(e):void 0}function BAe(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function gJ(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 UAe(n){return n==="direct"||n==="convert"?n:void 0}function VAe(n,e){if(!CJ(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:BAe(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:PE(n.meshRefs,16),childCount:Number.isFinite(n.childCount)?Number(n.childCount):void 0,materialRefs:PE(n.materialRefs,32),bbox:pJ(n.bbox),center:pJ(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:gJ(n.sourceFormat),effectiveFormat:gJ(n.effectiveFormat),loadStrategy:UAe(n.loadStrategy),confidence:Number.isFinite(n.confidence)?Number(n.confidence):.5,observations:PE(n.observations,16),inferredFunctions:PE(n.inferredFunctions),knowledgeTags:PE(n.knowledgeTags),notePath:typeof n.notePath=="string"?n.notePath:void 0,registeredMatches:void 0,reviewed:n.reviewed===!0}}function _J(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].sort((e,t)=>{var s,a,o,l;let i=_J(e)-_J(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 O1(n){return xh(n)}async function PJ(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:mAe,l=(u,h)=>{let m=VAe(u,h);if(!m)return;let g=`${m.assetId}:${m.partId}`;s.has(g)||(s.add(g),r.push(O1(m)))};for(let[u,h]of Object.entries(e)){if(u===t)continue;if(a&&h.analysisSidecarPath){let g=n.vault.getAbstractFileByPath(h.analysisSidecarPath);if(g instanceof zl.TFile)try{let p=await n.vault.read(g),_=JSON.parse(p);if(CJ(_)&&Array.isArray(_.parts))for(let v of _.parts)l(v,u)}catch(p){console.warn("[AI3D] Failed to read registered part sidecar:",h.analysisSidecarPath,p)}}let m=vJ((d=h.registeredParts)!=null?d:[]).slice(0,o);for(let g of m)l(g,u)}return typeof i.maxParts=="number"&&i.maxParts>0?vJ(r).slice(0,i.maxParts):r}function GAe(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,u;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)-((u=i.triangleCount)!=null?u:0)}).slice(0,EJ).map(i=>i.partId))}function kAe(n,e,t,i){let r=D1(n)||"Parts/3D Components",s=I1(e,"model"),a=I1(t.name,`Part ${i+1}`);return`${r}/${s}/${String(i+1).padStart(2,"0")} ${a}.md`}function WAe(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: ${an(n.sourcePath)}`,`parent_report: ${an(n.notePath)}`,`part_id: ${an(n.part.partId)}`,`asset_id: ${an(n.part.assetId)}`,...n.part.componentId?[`component_id: ${an(n.part.componentId)}`]:[],...n.part.occurrenceId?[`occurrence_id: ${an(n.part.occurrenceId)}`]:[],...n.part.partNumber?[`part_number: ${an(n.part.partNumber)}`]:[],...n.part.sourceFormat?[`source_format: ${an(n.part.sourceFormat)}`]:[],...n.part.effectiveFormat?[`effective_format: ${an(n.part.effectiveFormat)}`]:[],...n.part.loadStrategy?[`load_strategy: ${an(n.part.loadStrategy)}`]:[],`category: ${an((r=n.part.category)!=null?r:"unclassified")}`,"status: draft","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` -`),"",`# ${Ui(n.part.name)}`,"","## Evidence","",`- Source model: [[${n.sourcePath}|${n.baseName}]]`,`- Parent report: [[${n.notePath}|${n.baseName} Report]]`,`- Source: ${AJ(n.part)}`,...P1(n.part)?[`- Format lineage: ${P1(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: ${pAe(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?Ui(n.part.materialName):"-"}`,`- Bounding size: ${C1(n.part.bbox)}`,`- Center: ${C1(n.part.center)}`,...(l=n.part.registeredMatches)!=null&&l.length?[`- Possible registered match: ${gAe(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 zAe(n){var a;let e=GAe(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=`${D1(n.partFolder)||"Parts/3D Components"}/${I1(n.baseName,"model")}`;await L1(n.app,s);for(let[o,l]of n.analysis.parts.entries()){if(!e.has(l.partId))continue;let c=kAe(n.partFolder,n.baseName,l,o),f={...l,notePath:c},d=WAe({baseName:n.baseName,notePath:n.notePath,sourcePath:n.sourcePath,part:f,analysis:n.analysis}),u=await IJ(n.app,c,d);u&&(l.notePath=u.path,t.push(u.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 N1(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[SJ,"","## 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?`- ${qo(n.preview.meshCount,"mesh")}, ${qo(n.preview.triangleCount,"triangle")}, ${qo(n.preview.vertexCount,"vertex")}, ${qo(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 h,m;let d=(h=f.registeredMatches)==null?void 0:h[0],u=d?`, matches ${Ui(d.sourcePartName)} (${Math.round(d.confidence*100)}%)`:"";return`- [[${f.notePath}|${Ui(f.name)}]] - ${(m=f.category)!=null?m:"unclassified"}, ${qo(f.triangleCount,"triangle")}${u}`}):["- 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 h;let d=(h=n.analysis.annotationLinks)==null?void 0:h.find(m=>m.annotationId===f.id),u=d!=null&&d.notePath?` -> [[${d.notePath}|part note]]`:"";return`- ${f.label||"Untitled pin"}${u}`}):["- No saved annotation pins yet."],"","## Next Actions","",...i.length?i.map(f=>`- ${f}`):["- Review generated part drafts and promote confirmed components into stable notes."],"",M1,""].join(` -`)}function DJ(n,e){let t=n.indexOf(SJ),i=n.indexOf(M1);if(t>=0&&i>t){let r=n.slice(0,t).replace(/\s+$/,""),s=n.slice(i+M1.length).replace(/^\s+/,"");return[r,e.trim(),s].filter(Boolean).join(` +`).trim()||null}catch(i){return null}}function WTe(n){return(e,t)=>tJ(n,e,t)}var J$,k0=y(()=>{"use strict";J$=require("obsidian");IE();IE()});var A1={};Be(A1,{LOCAL_ANALYSIS_VERSION:()=>dh,buildLocalAnalysisResult:()=>T1,buildPartRecordsFromEvidence:()=>aJ,inferModelAssetFormat:()=>tf,normalizeModelLoadStrategy:()=>fh});function sJ(){return typeof performance!="undefined"?performance.now():Date.now()}function Fd(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function KTe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(sJ()-n)),status:"success"}}function jTe(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 S1(n){return Ah([n.x,n.y,n.z])}function iJ(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function rJ(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function qTe(n,e,t,i){var c,f;let r=rJ(dn(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${rJ(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 CE(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function W0(n){return new Set(CE(n).split(" ").filter(e=>e.length>=2))}function nJ(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 ZTe(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 QTe(n,e){let t=CE(n),i=CE(e);return!!t&&!!i&&t===i}function E1(n,e){let t=CE(n),i=CE(e);return!!t&&!!i&&t===i}function $Te(n){return n.map(e=>({part:e,nameTokens:W0(e.name),meshTokens:W0(e.meshRefs.join(" "))}))}function JTe(n,e){let t=W0(n.name),i=W0(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=nJ(t,s.nameTokens),c=nJ(i,s.meshTokens),f=ZTe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,u=QTe(n.materialName,a.materialName),h=E1(n.componentId,a.componentId),m=E1(n.partNumber,a.partNumber),g=E1(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return h&&(p+=.5),m&&(p+=.4),g&&(p+=.25),d&&(p+=.1),u&&(p+=.08),h&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),g&&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}`),u&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,zTe)}function eAe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=$Te(e);return n.map(i=>{let r=JTe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function tAe(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 iAe(n){var t,i,r,s,a,o,l,c,f,d,u,h;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${Fd((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 ${Fd((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 ${Fd((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=(u=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?u:"glb",g=(h=n.effectiveFormat)!=null?h:m,p=fh(n.loadStrategy,m,g);e.push(`Format lineage: ${m.toUpperCase()}${g!==m?` -> ${g.toUpperCase()}`:""} (${p}).`)}return e.push(`${Fd(n.triangleCount,"triangle")} and ${Fd(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 rAe(n,e,t){var o,l,c,f,d;let i=tf(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=fh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function nAe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function aJ(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=rAe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:qTe(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:tAe(r),meshRefs:iJ((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],XTe),childCount:r.childCount,materialRefs:iJ(r.materialName?[r.materialName]:[],YTe),bbox:S1(r.boundingSize),center:S1(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:nAe(r),observations:iAe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function sAe(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:`${Fd(a.meshCount,"mesh")}, ${Fd(a.triangleCount,"triangle")}, ${Fd(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 aAe(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=jTe(s,c.center);f{var p;return{partId:g.partId,name:g.name,notePath:g.notePath,source:g.source,componentId:g.componentId,occurrenceId:g.occurrenceId,partNumber:g.partNumber,componentPath:g.componentPath,category:g.category,sourceFormat:g.sourceFormat,effectiveFormat:g.effectiveFormat,loadStrategy:g.loadStrategy,meshRefs:[...g.meshRefs],childCount:g.childCount,triangleCount:g.triangleCount,materialName:g.materialName,registeredMatches:(p=g.registeredMatches)==null?void 0:p.map(_=>({..._,reasons:[..._.reasons]})),observations:g.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function lAe(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 T1(n){var m,g,p,_,v,E,T,S,A,R,M,I,C;let e=(m=n.startedAt)!=null?m:sJ(),t=(p=(g=n.evidence)==null?void 0:g.summary)!=null?p:n.preview,i=tf(n.modelPath),r=(_=n.evidence)==null?void 0:_.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=fh(r==null?void 0:r.loadStrategy,(E=r==null?void 0:r.sourceFormat)!=null?E:i,s),o=eAe(aJ(n.modelPath,(S=(T=n.evidence)==null?void 0:T.parts)!=null?S:[],r),(A=n.registeredParts)!=null?A:[]),l=new Date().toISOString(),c=lAe(n.preview,n.evidence),f=aAe(n.profile,o),d=sAe(n.modelPath,n.profile,n.evidence,o,f),u=(R=n.previewImages)!=null?R:[],h=oAe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:u,warnings:c});return{asset:{assetId:n.modelPath,title:dn(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?S1(t.boundingSize):void 0,analysisVersion:dh},parts:o,knowledgeNodes:d,previewImages:u,annotationLinks:f,draftingInput:h,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=(I=n.evidence)==null?void 0:I.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},KTe(e)]}}var dh,zTe,HTe,XTe,YTe,z0=y(()=>{"use strict";ps();YE();A0();A0();dh="local-evidence-v1",zTe=3,HTe=.58,XTe=16,YTe=16});function uh(n){let e=n.trim();return e.length>oJ?Ui(e.slice(0,oJ))+"\u2026":Ui(e)}function lJ(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=uh(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=uh(c),u=uh(f);return d&&u?[{heading:d,body:u}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>uh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>uh(o)):void 0;return{title:typeof e.title=="string"?uh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?uh(e.model):void 0}}var oJ,cJ=y(()=>{"use strict";MA();oJ=8e3});function fAe(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 dAe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function uAe(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 hAe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=dAe(t)),n.sendGeometrySummaryToRemote||(t=uAe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function dJ(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=fAe(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:hAe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function mAe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):cAe}async function pAe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new x1(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function uJ(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=mAe(e.timeoutMs),i=await pAe((0,fJ.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 lJ(i.json)}var fJ,cAe,x1,hJ=y(()=>{"use strict";fJ=require("obsidian");cJ();cAe=15e3,x1=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var H0={};Be(H0,{buildKnowledgeIndexContent:()=>OJ,buildKnowledgeIndexManagedSection:()=>w1,buildKnowledgeNoteContent:()=>IJ,collectRegisteredPartsFromProfiles:()=>DJ,generateKnowledgeNote:()=>jAe,replaceManagedSection:()=>LJ,stripTransientRegisteredPartData:()=>N1});function R1(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 AJ(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function I1(n){return n.filter(e=>e.length>0).join(", ")}function b1(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function L1(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function C1(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function P1(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function vAe(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 xJ(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 D1(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 EAe(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 RJ(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Ui(n.headingRef)}`),n.notePath){let i=(t=Gs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function SAe(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 bJ(n){let[e,t,i]=SAe(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 MJ(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 TAe(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: ${I1(e)}.`}function mJ(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 AAe(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.",mJ(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.`,MJ(n),bJ(n),mJ(e)],i=TAe(e);return i&&t.push(i),t}function xAe(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=RJ(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Ui(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function RAe(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 bAe(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,SJ)){let l=Ui((s=Gs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",qo(o.triangleCount,"triangle"),o.materialName?`material ${Ui(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Ui(o.name)} (${c})`)}return t.push(""),t}function qo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function MAe(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 ${Ui(e.materialName)}`:"";return`${t+1}. ${Ui(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${qo(e.triangleCount,"triangle")}${i})`}).join(` +`)}function yAe(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?`- ${Ui(t.name)}: possible reuse of ${Ui(i.sourcePartName)} from ${Ui(i.sourceAssetId)} (${Math.round(i.confidence*100)}% confidence).`:""}).filter(Boolean).join(` +`)}function yJ(n){var p,_,v,E,T,S,A,R,M;let e=AJ(n.sourcePath).toUpperCase(),t=n.preview,i=[...(_=(p=n.analysis)==null?void 0:p.parts)!=null?_:[]].sort((I,C)=>{var D,w;return((D=C.triangleCount)!=null?D:0)-((w=I.triangleCount)!=null?w:0)}),r=(E=(v=n.profile)==null?void 0:v.annotations)!=null?E:[],s=(S=(T=n.analysis)==null?void 0:T.annotationLinks)!=null?S:[],a=b1(i.map(I=>{var C;return(C=I.category)!=null?C:"unclassified"})).slice(0,6),o=b1(i.flatMap(I=>I.materialName?[Ui(I.materialName)]:[])).slice(0,6),l=MAe(i),c=yAe(i),f=t?bJ(t):"Geometry statistics are not available yet, so this draft should stay provisional.",d=t?MJ(t):"Reload the preview to capture mesh, triangle, vertex, and material evidence.",u=(A=n.profile)==null?void 0:A.notes.trim(),h=t?`${n.baseName} is a ${e} asset with ${qo(t.meshCount,"mesh")}, ${qo(t.triangleCount,"triangle")}, ${qo(t.vertexCount,"vertex")}, and ${qo(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(I=>{let C=s.find(k=>k.annotationId===I.id),D=C!=null&&C.nearestPartName?` Nearest captured part: ${Ui(C.nearestPartName)}.`:"",w=I.headingRef?` Linked heading: ${Ui(I.headingRef)}.`:"";return`- ${Ui(I.label||"Untitled pin")}.${D}${w}`}).join(` +`):"- No pins are saved yet. Add pins for the regions that should become standalone notes, questions, or review checkpoints.",g=[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:[h,f,u?`User notes add this context: ${u}`:"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: ${I1(a)}.`:"No part categories were inferred yet.",o.length>0?`Visible materials include ${I1(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:b1([...(M=(R=n.profile)==null?void 0:R.tags)!=null?M:[],`format/${e.toLowerCase()}`,...a.map(I=>`part/${I}`)]).slice(0,12),nextActions:g,generatedAt:new Date().toISOString()}}function IAe(n){var i,r;let e=(r=(i=n.analysis)==null?void 0:i.localDraft)!=null?r:yJ(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=>`- ${Ui(s)}`),""),e.nextActions.length>0&&t.push("Next actions:","",...e.nextActions.map(s=>`- ${Ui(s)}`),""),t}function an(n){return JSON.stringify(n)}function CAe(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 PAe(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 DAe(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 LAe(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 OAe(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=P1(l.center),f=l.observations.slice(0,2).join(" "),d=l.notePath?`[[${l.notePath}]]`:"-",u=D1(l),h=[xJ(l),u].filter(Boolean).join("; ");t.push(`| ${o+1} | ${Pa(l.name)} | ${Pa(d)} | ${Pa(h)} | ${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 NAe(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 wAe(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(`- **${Ui(r.title)}** (${r.domain}, ${Math.round(r.confidence*100)}%, ${r.source}): ${Ui(r.summary)}`);return t.push(""),t}function FAe(n,e){var i,r;let t=["## Evidence Health","",`- Analysis version: ${dh}`,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 BAe(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=RJ(s),o=a.length>0?` (${a.join("; ")})`:"";i.push(`- **${Ui(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 IJ(n){var c,f,d,u;let e=n.profile,t=n.preview,i=n.analysis,r=AJ(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: ${an(n.sourcePath)}`,`format: ${r}`,"status: ready","analysis_mode: local",`analysis_version: ${dh}`,`report_note_path: ${an(n.notePath)}`,...n.analysisSidecarPath?[`analysis_sidecar_path: ${an(n.analysisSidecarPath)}`]:[],...n.knowledgeIndexPath?[`knowledge_index_path: ${an(n.knowledgeIndexPath)}`]:[],`annotation_count: ${a.length}`,`updated_at: ${new Date().toISOString()}`,...o.length>0?["preview_images:",...o.map(h=>` - ${an(h)}`)]:[],...s.length>0?["knowledge_tags:",...s.map(h=>` - ${an(h)}`)]:[],"---"].join(` +`),"",`# ${Ui(n.baseName)}`,"","## Summary","",...t?[...CU(t,{decimals:2}),""]:["(No preview data available)",""],...DAe(i),...IAe(n),...n.knowledgeIndexPath?["## Knowledge Index","",`- [[${n.knowledgeIndexPath}|Open model knowledge index]]`,""]:[],"## Local Observations","",...AAe(t,e).map(h=>`- ${h}`),"",...FAe(i,n.analysisSidecarPath),...LAe(i),...xAe(e),...RAe(i),...bAe(i),...OAe(i),...NAe(i),...wAe(i),...CAe(i),...PAe(i),...BAe(t,e),"## Review Notes","",(u=e==null?void 0:e.notes)!=null&&u.trim()?Ui(e.notes.trim()):"-",""].join(` +`)}function Pa(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function UAe(n){let[,e=""]=n.split(",",2),t=atob(e),i=new Uint8Array(t.length);for(let r=0;r{gAe.warn("Failed to create vault folder",{path:i,error:String(s)})})}async function CJ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof zl.TFile)return i;try{return await n.vault.create(e,t)}catch(r){let s=n.vault.getAbstractFileByPath(e);return s instanceof zl.TFile?s:null}}async function pJ(n,e,t){let i=n.vault.getAbstractFileByPath(e);if(i instanceof zl.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 zl.TFile)return await n.vault.modify(s,t),s}return null}async function VAe(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 O1(n,t);let a=`${t}/${i}_evidence_${Date.now()}.png`;return await n.vault.createBinary(a,UAe(r)),{paths:[a]}}catch(a){let o=a instanceof Error?a.message:String(a);return{paths:[],warning:`Evidence snapshot failed: ${o}`}}}function PJ(n){return!!n&&typeof n=="object"}function PE(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 gJ(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?Ah(e):void 0}function GAe(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function _J(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 kAe(n){return n==="direct"||n==="convert"?n:void 0}function WAe(n,e){if(!PJ(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:GAe(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:PE(n.meshRefs,16),childCount:Number.isFinite(n.childCount)?Number(n.childCount):void 0,materialRefs:PE(n.materialRefs,32),bbox:gJ(n.bbox),center:gJ(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:_J(n.sourceFormat),effectiveFormat:_J(n.effectiveFormat),loadStrategy:kAe(n.loadStrategy),confidence:Number.isFinite(n.confidence)?Number(n.confidence):.5,observations:PE(n.observations,16),inferredFunctions:PE(n.inferredFunctions),knowledgeTags:PE(n.knowledgeTags),notePath:typeof n.notePath=="string"?n.notePath:void 0,registeredMatches:void 0,reviewed:n.reviewed===!0}}function vJ(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function EJ(n){return[...n].sort((e,t)=>{var s,a,o,l;let i=vJ(e)-vJ(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 N1(n){return xh(n)}async function DJ(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:_Ae,l=(u,h)=>{let m=WAe(u,h);if(!m)return;let g=`${m.assetId}:${m.partId}`;s.has(g)||(s.add(g),r.push(N1(m)))};for(let[u,h]of Object.entries(e)){if(u===t)continue;if(a&&h.analysisSidecarPath){let g=n.vault.getAbstractFileByPath(h.analysisSidecarPath);if(g instanceof zl.TFile)try{let p=await n.vault.read(g),_=JSON.parse(p);if(PJ(_)&&Array.isArray(_.parts))for(let v of _.parts)l(v,u)}catch(p){console.warn("[AI3D] Failed to read registered part sidecar:",h.analysisSidecarPath,p)}}let m=EJ((d=h.registeredParts)!=null?d:[]).slice(0,o);for(let g of m)l(g,u)}return typeof i.maxParts=="number"&&i.maxParts>0?EJ(r).slice(0,i.maxParts):r}function zAe(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,u;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)-((u=i.triangleCount)!=null?u:0)}).slice(0,SJ).map(i=>i.partId))}function HAe(n,e,t,i){let r=L1(n)||"Parts/3D Components",s=C1(e,"model"),a=C1(t.name,`Part ${i+1}`);return`${r}/${s}/${String(i+1).padStart(2,"0")} ${a}.md`}function XAe(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: ${an(n.sourcePath)}`,`parent_report: ${an(n.notePath)}`,`part_id: ${an(n.part.partId)}`,`asset_id: ${an(n.part.assetId)}`,...n.part.componentId?[`component_id: ${an(n.part.componentId)}`]:[],...n.part.occurrenceId?[`occurrence_id: ${an(n.part.occurrenceId)}`]:[],...n.part.partNumber?[`part_number: ${an(n.part.partNumber)}`]:[],...n.part.sourceFormat?[`source_format: ${an(n.part.sourceFormat)}`]:[],...n.part.effectiveFormat?[`effective_format: ${an(n.part.effectiveFormat)}`]:[],...n.part.loadStrategy?[`load_strategy: ${an(n.part.loadStrategy)}`]:[],`category: ${an((r=n.part.category)!=null?r:"unclassified")}`,"status: draft","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` +`),"",`# ${Ui(n.part.name)}`,"","## Evidence","",`- Source model: [[${n.sourcePath}|${n.baseName}]]`,`- Parent report: [[${n.notePath}|${n.baseName} Report]]`,`- Source: ${xJ(n.part)}`,...D1(n.part)?[`- Format lineage: ${D1(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: ${vAe(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?Ui(n.part.materialName):"-"}`,`- Bounding size: ${P1(n.part.bbox)}`,`- Center: ${P1(n.part.center)}`,...(l=n.part.registeredMatches)!=null&&l.length?[`- Possible registered match: ${EAe(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 YAe(n){var a;let e=zAe(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=`${L1(n.partFolder)||"Parts/3D Components"}/${C1(n.baseName,"model")}`;await O1(n.app,s);for(let[o,l]of n.analysis.parts.entries()){if(!e.has(l.partId))continue;let c=HAe(n.partFolder,n.baseName,l,o),f={...l,notePath:c},d=XAe({baseName:n.baseName,notePath:n.notePath,sourcePath:n.sourcePath,part:f,analysis:n.analysis}),u=await CJ(n.app,c,d);u&&(l.notePath=u.path,t.push(u.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 w1(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[TJ,"","## 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?`- ${qo(n.preview.meshCount,"mesh")}, ${qo(n.preview.triangleCount,"triangle")}, ${qo(n.preview.vertexCount,"vertex")}, ${qo(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 h,m;let d=(h=f.registeredMatches)==null?void 0:h[0],u=d?`, matches ${Ui(d.sourcePartName)} (${Math.round(d.confidence*100)}%)`:"";return`- [[${f.notePath}|${Ui(f.name)}]] - ${(m=f.category)!=null?m:"unclassified"}, ${qo(f.triangleCount,"triangle")}${u}`}):["- 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 h;let d=(h=n.analysis.annotationLinks)==null?void 0:h.find(m=>m.annotationId===f.id),u=d!=null&&d.notePath?` -> [[${d.notePath}|part note]]`:"";return`- ${f.label||"Untitled pin"}${u}`}):["- No saved annotation pins yet."],"","## Next Actions","",...i.length?i.map(f=>`- ${f}`):["- Review generated part drafts and promote confirmed components into stable notes."],"",y1,""].join(` +`)}function LJ(n,e){let t=n.indexOf(TJ),i=n.indexOf(y1);if(t>=0&&i>t){let r=n.slice(0,t).replace(/\s+$/,""),s=n.slice(i+y1.length).replace(/^\s+/,"");return[r,e.trim(),s].filter(Boolean).join(` `)+` `}return`${n.replace(/\s+$/,"")} ${e.trim()} -`}function LJ(n){var r;let e=N1(n),t=((r=n.analysis.parts)!=null?r:[]).filter(s=>s.notePath).length;return[["---",`source_model: ${an(n.sourcePath)}`,`report_note_path: ${an(n.notePath)}`,`analysis_sidecar_path: ${an(n.analysisSidecarPath)}`,`part_note_count: ${t}`,"status: index","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` +`}function OJ(n){var r;let e=w1(n),t=((r=n.analysis.parts)!=null?r:[]).filter(s=>s.notePath).length;return[["---",`source_model: ${an(n.sourcePath)}`,`report_note_path: ${an(n.notePath)}`,`analysis_sidecar_path: ${an(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 HAe(n){let e=typeof performance!="undefined"?performance.now():Date.now(),t=n.app.vault.getAbstractFileByPath(n.indexPath),i=null;if(t instanceof zl.TFile){let r=await n.app.vault.read(t),s=N1(n);await n.app.vault.modify(t,DJ(r,s)),i=t}else i=await IJ(n.app,n.indexPath,LJ(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 XAe(n,e,t={}){var o,l,c,f,d,u,h,m,g,p,_;if(b1!==null)return;let i;b1=new Promise(v=>{i=v});let r=null,s=null,a=0;try{let v=e.store.getState(),E=v.currentModelPath;if(!E)return;let T=v.modelAssetProfiles[E],S=v.modelPreview,A=dn(E)||"model",R=v.settings.reportFolder,M=`${R}/${A} Report.md`,I=`${R}/${A} Analysis.json`,C=`${R}/${A} Index.md`,D=((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;D&&new zl.Notice(D),r=x1({modelPath:E,reportNotePath:M,analysisSidecarPath:I,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,k=await FAe(n,t.preview,v.settings.previewFolder,A);a=k.paths.length;let O=await PJ(n,v.modelAssetProfiles,E);s=S1({modelPath:E,profile:T,preview:S,evidence:w,previewImages:k.paths,registeredParts:O}),D&&(s.warnings=[...s.warnings,D]);let N=s;k.warning&&(N.warnings=[...N.warnings,k.warning],N.draftingInput&&(N.draftingInput={...N.draftingInput,evidence:{...N.draftingInput.evidence,warnings:[...N.draftingInput.evidence.warnings,k.warning]}})),N.localDraft=MJ({baseName:A,sourcePath:E,profile:T,preview:S,analysis:N}),N.pipeline.push({stage:"draft",durationMs:0,status:"success"}),await zAe({app:n,partFolder:v.settings.partFolder,baseName:A,notePath:M,sourcePath:E,analysis:N}),N.draftingInput&&(N.draftingInput={...N.draftingInput,partCandidates:N.draftingInput.partCandidates.map(H=>{let Y=N.parts.find(de=>de.partId===H.partId);return Y!=null&&Y.notePath?{...H,notePath:Y.notePath}:H}),annotationLinks:[...(d=N.annotationLinks)!=null?d:[]]});let B=fJ(v.settings,N.draftingInput,dh);if(B.enabled)try{let H=await dJ(B);H?(N.remoteDraft=H,N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"success"})):N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"})}catch(H){let Y=H instanceof Error?H.message:String(H);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 L1(n,R),!await HAe({app:n,baseName:A,notePath:M,sourcePath:E,analysisSidecarPath:I,indexPath:C,analysis:N,preview:S,profile:T}))throw new Error(`Unable to write knowledge index: ${C}`);let q=yJ({baseName:A,notePath:M,sourcePath:E,profile:T,preview:S,analysis:N,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath});if(!await mJ(n,I,`${JSON.stringify(N,null,2)} -`))throw new Error(`Unable to write analysis sidecar: ${I}`);let J=await mJ(n,M,q);if(!J)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(E,H=>({analysisVersion:dh,registeredParts:N.parts.map(O1),reportNotePath:J.path,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:k.paths})),e.setLastKnowledgeGeneration(x1({modelPath:E,reportNotePath:J.path,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(h=(u=N.partNotePaths)==null?void 0:u.length)!=null?h:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(J,{active:!0}),new zl.Notice(`Knowledge note updated: ${J.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(x1({...r,partNoteCount:(g=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?g:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(_=s==null?void 0:s.warnings.length)!=null?_:0)})),v}finally{i(),b1=null}}var zl,hAe,EJ,mAe,SJ,M1,b1,z0=y(()=>{"use strict";zl=require("obsidian");DA();MA();wn();ps();YE();KE();k0();uJ();hAe=Zi("knowledge-note"),EJ=8,mAe=256,SJ="",M1="";b1=null});var OJ={};Be(OJ,{renderRegisteredPartMatchRow:()=>KAe});function YAe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function KAe(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:Bi("directWorkbench.registeredSourceModel",{model:YAe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?X("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?X("directWorkbench.registeredTargetSourceModel"):X("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?X("directWorkbench.registeredOpenNote"):X("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 NJ=y(()=>{"use strict";En()});var kJ={};Be(kJ,{DirectModelView:()=>w1});function ixe(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function BJ(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 rxe(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 UJ(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function nxe(n){return n.length<=wJ?n:[...n].sort((e,t)=>{var s,a,o,l;let i=UJ(e)-UJ(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,wJ)}function VJ(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 sxe(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(VJ))===JSON.stringify(e.map(VJ))}function F1(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function axe(n){let e=F1(n.performanceTier);return e>=2?ZAe:e===1?qAe:jAe}function oxe(n){return F1(n.performanceTier)<2&&n.meshCount<=QAe&&n.triangleCount<=$Ae}function lxe(n){let e=F1(n.performanceTier);return e>=2?null:e===1?txe:exe}function GJ(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function cxe(n){return n.parts.length<=FJ?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=GJ(e)-GJ(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,FJ)}}function fxe(n){return{sourcePath:n.sourcePath,sourceFormat:tf(n.sourceExt||n.sourcePath),effectiveFormat:tf(n.ext||n.path),loadStrategy:n.strategy}}function dxe(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 Rg,H0,jAe,qAe,ZAe,wJ,QAe,$Ae,FJ,JAe,exe,txe,w1,WJ=y(()=>{"use strict";Rg=require("obsidian");t0();F_();ZF();_0();QF();ps();Fg();v0();E0();mg();En();bE();ga();wn();KE();S0();_$();fy();E$();A$();ZE();b0();oy();H0=Zi("direct-view"),jAe=450,qAe=1200,ZAe=1500,wJ=256,QAe=500,$Ae=15e5,FJ=64,JAe=512,exe=250,txe=1e3;w1=class extends Rg.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.activeLoadController=null;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 Ud}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:X("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),Vd(this.contentEl),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),Vd(this.contentEl),await this.loadModel(t)}onClose(){var t,i,r;return QE(this.contentEl),this.loadGeneration++,(t=this.activeLoadController)==null||t.abort(),this.activeLoadController=null,this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(i=this.annotationMgr)==null||i.destroy(),this.annotationMgr=null,(r=this.preview)==null||r.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var T,S,A,R,M,I;Vd(this.contentEl),(T=this.activeLoadController)==null||T.abort();let i=new AbortController;this.activeLoadController=i;let r=++this.loadGeneration,s={signal:i.signal,isCurrent:()=>this.loadGeneration===r&&this.activeLoadController===i&&!i.signal.aborted},a=Rr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(S=this.annotationMgr)==null||S.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,(A=this.preview)==null||A.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:o,topTrack:l,mainArea:c,hHandle:f,host:d,canvas:u,modeOverlay:h,sidebarContent:m,vHandle:g,workbenchPanel:p}=g$({contentEl:this.contentEl,filePath:t.path,mobile:a,getPreview:()=>this.preview}),_=null,v=C=>{var D;this.annotationMode=C,a&&C&&(_==null||_.setMobileInteractionMode(!0)),(D=this.annotationMgr)==null||D.hideEditor(),h.classList.toggle("is-hidden",!C)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=C=>{C.key==="Escape"&&this.annotationMode&&v(!1)},activeDocument.addEventListener("keydown",this.escHandler),_=EE(c,d,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(v(!this.annotationMode),this.annotationMode),C=>{!C&&this.annotationMode&&v(!1)}),this.sidebarContent=m,this.workbenchPanel=p,this.setupResizeHandles(f,g,l,o);let E=ch(d);try{let C=this.getSettings(),D=(R=sc(this.app,t.path))!=null?R:void 0,w=lh(this.app,C);E.setPhaseKey("loading.preparingModel");let k=await pg({path:t.path,absolutePath:D,preferConversionExts:ff(C),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(w0(),N0));return J(C)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:w});Ti(s);let O=AE(k);this.workbenchEvidenceLineage=fxe(O),this.workbenchSourceWarnings=[...O.warnings];let N=T$(C,O);_==null||_.syncCapabilities(),E.setPhaseKey("loading.loadingModel");let B=Ao(this.app,O.path,{signal:i.signal}),V=Tg(this.app,O.path,C);B.catch(()=>{}),V.catch(()=>{});let q=await this.createPreviewWithFallback(u,B,V,O,N,t.path,s);Ti(s),this.preview=q.preview,d.dataset.ai3dBackend=q.route.backend,d.dataset.ai3dRouteReason=q.route.reason,_==null||_.syncCapabilities();let j=q.summary;this.applyLargeModelRenderBudget(q.preview,C,j),_==null||_.syncCapabilities(),RE(d,j),this.workbenchPanel=p,this.workbenchSummary=j,this.workbenchRoute=q.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(p,j,q.route,t.path),this.renderSidebarContent(t.path,j),this.ps.setCurrentModel(t.path,j),H0.info("direct view model loaded",{path:t.path,effectivePath:O.path,effectiveExt:O.ext,strategy:O.strategy,backend:q.route.backend,routeReason:q.route.reason,meshCount:j.meshCount,triangleCount:j.triangleCount}),E.setProgress(100),E.hide(),this.setupAnnotationManager(t.path,r,d,_),this.scheduleDeferredEvidenceRegistration(t.path,r,j)}catch(C){if(Df(C)||r!==this.loadGeneration)return;E.hide(),(M=this.preview)==null||M.destroy(),this.preview=null,d.replaceChildren(),(I=this.workbenchPanel)==null||I.addClass("is-hidden");let D=TE(C);SE(C)?console.warn("[AI3D] Direct view blocked by converter settings:",D.message):console.error("[AI3D] Direct view failed:",C),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),xE(d,D)}finally{this.activeLoadController===i&&(this.activeLoadController=null),E.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(()=>(B0(),F0)),Promise.resolve().then(()=>(V0(),U0))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let u=this.ps.store.getState().modelAssetProfiles[t],h=(l=u==null?void 0:u.annotations)!=null?l:[],m=d(this.app),g=f(this.app);this.annotationMgr=new c(o,r,"edit",h,p=>{this.ps.updateModelProfile(t,_=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,g,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(h.length),a.onPick(p=>{var T,S;if(!this.annotationMode||!this.annotationMgr)return;let _=p.screenX,v=p.screenY,E=(S=(T=this.preview)==null?void 0:T.getPickWorldPoint(p))!=null?S:null;E&&this.annotationMgr.showEditor(_,v,E)})}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(()=>(k0(),T1)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:ay(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(u=>[BJ(u),u])),c=nxe(s.map(u=>rxe(l.get(BJ(u)),u))).map(xh);sxe(o.registeredParts,c)||this.ps.updateModelProfile(t,u=>({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(),!oxe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),H0.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)})},axe(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?dxe(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;v$({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 u=0,h=0,m=p=>{f(p.clientX-u,p.clientY-h),u=p.clientX,h=p.clientY},g=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",g),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),u=p.clientX,h=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",g)})},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:X("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?X("workbench.indexReady"):r!=null&&r.reportNotePath?X("workbench.noteReady"):X("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:X("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(z0(),W0)).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:X("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var u;let f=(u=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:u.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Rg.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:X("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var u;let f=(u=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:u.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Rg.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:X("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:X("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:X(m)})},d=this.getCachedModelEvidence(i),u=d?cxe(d):null;if(!(u!=null&&u.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:X("directWorkbench.registeredLoading")});return}let h=lxe(r);if(h===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(()=>(z0(),W0)),Promise.resolve().then(()=>(k0(),T1)),Promise.resolve().then(()=>(NJ(),OJ))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:g},{renderRegisteredPartMatchRow:p}])=>{var R;let _=this.ps.store.getState(),v=await m(this.app,_.modelAssetProfiles,i,{includeSidecars:!1,maxParts:JAe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let E=this.ps.store.getState().modelAssetProfiles[i],S=g({modelPath:i,profile:E,preview:r,evidence:u,registeredParts:v}).parts.filter(M=>{var I;return(I=M.registeredMatches)==null?void 0:I.length}).sort((M,I)=>{var C,D,w,k,O,N;return((w=(D=(C=I.registeredMatches)==null?void 0:C[0])==null?void 0:D.matchScore)!=null?w:0)-((N=(O=(k=M.registeredMatches)==null?void 0:k[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(S.length===0){f("directWorkbench.registeredEmpty");return}l.setText(Bi("directWorkbench.registeredCount",{count:String(S.length)})),c.empty();let A=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of S){let I=(R=M.registeredMatches)==null?void 0:R[0];if(!I)continue;let D=p(A,M.name,I).querySelector("[data-ai3d-action='open-registered-part']");D instanceof HTMLButtonElement&&D.addEventListener("click",()=>{let w=D.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let k=this.app.vault.getAbstractFileByPath(w);k instanceof Rg.TFile&&this.app.workspace.getLeaf(!0).openFile(k,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},h)}async createPreviewWithFallback(t,i,r,s,a,o,l){Ti(l);let c=await fg(H0,{surface:"direct-view",modelPath:o},t,a);try{Ti(l)}catch(u){throw c.preview.destroy(),u}let f;try{f=await r,Ti(l)}catch(u){throw c.preview.destroy(),u}this.applyRenderBudget(c.preview,f);let d;try{d=await i,Ti(l)}catch(u){throw c.preview.destroy(),u}try{let u=await c.preview.loadModel(d,s.ext,h=>Ao(this.app,h,{signal:l.signal}),s.path,l);return Ti(l),{preview:c.preview,summary:u,route:c.route}}catch(u){if(c.preview.destroy(),Df(u)||c.route.backend!=="three")throw u;Ti(l),console.warn("[AI3D] Three direct view failed; falling back to Babylon:",u);let h={...a,allowWorkbenchFeaturesOnThree:!1,rendererRollout:"babylon-safe",useThreeRenderer:!1},m=await fg(H0,{surface:"direct-view-fallback",modelPath:o},t,h);this.applyRenderBudget(m.preview,f);try{Ti(l);let g=await m.preview.loadModel(d,s.ext,p=>Ao(this.app,p,{signal:l.signal}),s.path,l);return Ti(l),{preview:m.preview,summary:g,route:m.route}}catch(g){throw m.preview.destroy(),Df(g)?g:ixe(u)?u:g}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=M$(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var HJ={};Be(HJ,{AI3DSettingTab:()=>U1});function hxe(){switch(B1==null?void 0:B1.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 qt,B1,U1,XJ=y(()=>{"use strict";qt=require("obsidian");iy();En();ga();fr();B1=Sm();U1=class extends qt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),Rh(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 qt.Setting(t).setName(X("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:X("settings.diagnostics.idle")}))}buildLanguageSection(t){new qt.Setting(t).setName(X("settings.language")).setDesc(X("settings.language.desc")).addDropdown(i=>i.addOption("en",X("settings.language.englishName")).addOption("zh-CN",X("settings.language.chineseName")).setValue(this.plugin.getSettings().locale).onChange(r=>{let s=r;this.plugin.updateSettings({locale:s}),Rh(s),this.display()}))}buildFoldersSection(t){new qt.Setting(t).setName(X("settings.folders")).setHeading(),new qt.Setting(t).setName(X("settings.sourceModelFolder")).setDesc(X("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder(cf.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new qt.Setting(t).setName(X("settings.auxiliaryFileFolder")).setDesc(X("settings.auxiliaryFileFolder.desc")).addText(i=>i.setPlaceholder(X("settings.auxiliaryFileFolder.placeholder")).setValue(this.plugin.getSettings().auxiliaryFileFolder).onChange(r=>{this.plugin.updateSettings({auxiliaryFileFolder:r})})),new qt.Setting(t).setName(X("settings.reportFolder")).setDesc(X("settings.reportFolder.desc")).addText(i=>i.setPlaceholder(cf.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new qt.Setting(t).setName(X("settings.partFolder")).setDesc(X("settings.partFolder.desc")).addText(i=>i.setPlaceholder(cf.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new qt.Setting(t).setName(X("settings.snapshotFolder")).setDesc(X("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder(cf.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new qt.Setting(t).setName(X("settings.behavior")).setHeading(),new qt.Setting(t).setName(X("settings.autoGenerateKnowledgeNotes")).setDesc(X("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new qt.Setting(t).setName(X("settings.annotationPreviewMode")).setDesc(X("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",X("settings.annotationPreviewMode.plainText")).addOption("markdown",X("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new qt.Setting(t).setName(X("settings.annotationDisplayMode")).setDesc(X("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",X("settings.annotationDisplayMode.snippet")).addOption("surface",X("settings.annotationDisplayMode.surface")).addOption("dot",X("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new qt.Setting(t).setName(X("settings.previewRendererRollout")).setDesc(X("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",X("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",X("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",X("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new qt.Setting(t).setName(X("settings.useThreeRenderer")).setDesc(X("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new qt.Setting(t).setName(X("settings.useThreeForConvertedDirectView")).setDesc(X("settings.useThreeForConvertedDirectView.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeForConvertedDirectView).onChange(r=>{this.plugin.updateSettings({useThreeForConvertedDirectView:r})})),new qt.Setting(t).setName(X("settings.experimentalThreeWorkbench")).setDesc(X("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new qt.Setting(t).setName(X("settings.autoRotateDefault")).setDesc(X("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new qt.Setting(t).setName(X("settings.snapshotNaming")).setDesc(X("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",X("settings.snapshotNaming.modelName")).addOption("timestamp",X("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new qt.Setting(t).setName(X("settings.logLevel")).setDesc(X("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 qt.Setting(t).setName(X("settings.knowledgeGeneration")).setHeading(),new qt.Setting(t).setName(X("settings.analysisMode")).setDesc(X("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",X("settings.analysisMode.local")).addOption("hybrid",X("settings.analysisMode.hybrid")).addOption("remote",X("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new qt.Setting(t).setName(X("settings.serviceBaseUrl")).setDesc(X("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 qt.Setting(t).setName(X("settings.sendGeometrySummaryToRemote")).setDesc(X("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new qt.Setting(t).setName(X("settings.sendPreviewImagesToRemote")).setDesc(X("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new qt.Setting(t).setName(X("settings.sendRawModelToRemote")).setDesc(X("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new qt.Setting(t).setName(X("settings.converters")).setHeading(),Rr()){t.createEl("p",{cls:"setting-item-description",text:X("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,X("settings.converterMenu"),X("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,X("settings.environmentInspector"),X("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new qt.Setting(t).setName(X("settings.enableCad")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableObj2gltf")).setDesc(X("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 qt.Setting(t).setName(X("settings.preferObj2gltf")).setDesc(X("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new qt.Setting(t).setName(X("settings.enableFbx2gltf")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableMesh")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableSldprt")).setDesc(X("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=hxe();new qt.Setting(t).setName(X("settings.paths")).setHeading(),new qt.Setting(t).setName(X("settings.pythonCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.freecadCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.obj2gltfCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.fbx2gltfCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.assimpCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.diagnostics")).setDesc(X("settings.diagnostics.desc")).addButton(r=>r.setButtonText(X("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(X("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(X("settings.diagnostics.checkNow")),r.setDisabled(!1),new qt.Notice(X("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new qt.Setting(t).setName(X("settings.performance")).setHeading(),new qt.Setting(t).setName(X("settings.canvasHeight")).setDesc(X("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new qt.Setting(t).setName(X("settings.autoRotateSpeed")).setDesc(X("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new qt.Setting(t).setName(X("settings.renderQuality")).setDesc(X("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 qt.Setting(t).setName(X("settings.renderScale")).setDesc(X("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:X("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(wd(),u1)),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?X("settings.diagnostics.available"):X("settings.diagnostics.notFound")}`});let a=[`${X("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${X("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${X("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){var a;let r=(a=i.label)!=null?a:(()=>{switch(i.kind){case"cad-python":return X("settings.diagnostics.cadPythonCheck");case"mesh-python":return X("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return X("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return X("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return X("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?X("settings.diagnostics.selfCheckOk"):X("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${X("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function KJ(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=Wl(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 jJ(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Wl(t.headingRef))return!0;return!1}var V1=y(()=>{"use strict";IE()});function Zo(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=G1[n])!=null?i:G1.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function Hl(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 W1(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 G1,hh=y(()=>{"use strict";G1={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 qJ,ZJ=y(()=>{"use strict";hh();qJ={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=DE(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=Hl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Zo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var QJ,$J=y(()=>{"use strict";hh();QJ={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=Hl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Zo(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var JJ,eee=y(()=>{"use strict";hh();JJ={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=W1(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=Hl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Zo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var tee,iee=y(()=>{"use strict";hh();tee={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=DE(n,t),s=k1(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Zo(i),viewport:s[l]}));return{placements:r,cells:a}}}});function z1(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((u,h)=>{var m;return u+((m=h.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let u of n){let m=((f=u.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 u=0;u{"use strict";ree={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var nee,see=y(()=>{"use strict";hh();nee={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 u=d%s,h=Math.floor(d/s),m=(u-(s-1)/2)*t,g=(h-(a-1)/2)*t;return{path:f.path,position:[m,0,g],color:f.color,wireframe:f.wireframe}}),l=Hl(1,1,0),c=[{modelIndex:0,camera:Zo(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function bg(n){aee.set(n.name,n)}function X1(n){return aee.get(n)}var aee,oee=y(()=>{"use strict";ZJ();$J();eee();iee();H1();see();hh();H1();aee=new Map;bg(qJ);bg(QJ);bg(JJ);bg(tee);bg(ree);bg(nee)});function pxe(){return typeof activeWindow=="undefined"?window:activeWindow}function LE(n){return _xe.schedule(n)}var Y1,gxe,_xe,K1=y(()=>{"use strict";Y1=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=pxe().setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},gxe=75,_xe=new Y1(1,gxe)});var uee={};Be(uee,{registerCodeBlockProcessor:()=>Exe,registerGridCodeBlockProcessor:()=>Txe});async function cee(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(w0(),N0));return e(n)}async function fee(n,e,t,i){var d,u,h;let r=typeof e=="string"?{path:e}:e,s=Pf(n,r.path);if(!s)throw new Error(Bi("workbench.fileNotFound",{path:r.path}));let a=(u=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?u:"";if(!lo(a))throw Pg(a)?new Error(X("codeBlock.splatDisabled")):new Error(Bi("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Xl().join(", ")}));let o=(h=sc(n,s))!=null?h:void 0,l=lh(n,t),c=await pg({path:s,absolutePath:o,preferConversionExts:ff(t),conversionManager:()=>cee(t),convertedAssetCache:i,conversionOutputRoot:l}),f=AE(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function vxe(n,e,t,i){let r=[];for(let s of e.models){let a=await fee(n,s,t,i);r.push(a.model)}return{...e,models:r}}function dee(n){Rr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:X("codeBlock.mobileHint")})}function Exe(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var I,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let D=JSON.parse(o);l=Sxe(D)}catch(D){let w=s.createDiv({cls:"ai3d-json-error"}),k=String(D).match(/position\s+(\d+)/),O=Bi("codeBlock.jsonParseError",{error:String(D)});if(k){let N=parseInt(k[1],10),B=o.substring(0,N).split(` -`);O+=Bi("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:X("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=Pf(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:Bi("workbench.fileNotFound",{path:f.path})});return}let u=(C=(I=d.split(".").pop())==null?void 0:I.toLowerCase())!=null?C:"";if(!lo(u)){s.createDiv({cls:"ai3d-inline-empty",text:Pg(u)?X("codeBlock.splatDisabled"):Bi("codeBlock.unsupportedFormat",{ext:`.${u}`,formats:Xl().join(", ")})});return}let h=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 g=m.createEl("canvas",{cls:"ai3d-canvas-full"});gg(g,"inline",d),m.appendChild(g);let p=null,_=null,v=!0,E=!1,T=!1;_g(g,()=>E?null:p);let S=EE(s,m,n,()=>p,()=>d,()=>{E||(E=!0,A.disconnect(),M.disconnect(),_==null||_.destroy(),_=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,_){let D=m.querySelector(".ai3d-annotation-overlay");D&&D.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});dee(s);let A=new MutationObserver(()=>{E||s.contains(m)||(E=!0,A.disconnect(),M.disconnect(),_==null||_.destroy(),_=null,p==null||p.destroy(),p=null)});A.observe(s,{childList:!0});async function R(){if(T||E||!d)return;T=!0;let D=ch(m),w=async(k,O)=>{if(O.length===0||!s0(k))return;let N=k.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(B0(),F0)),Promise.resolve().then(()=>(V0(),U0))]);if(E||p!==k||!m.isConnected)return;_=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:h.annotationPreviewMode,displayMode:h.annotationDisplayMode}),S.showAnnotateButton(),S.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{D.setPhaseKey("loading.preparingModel"),await LE(async()=>{var ae,_e,ne,ve,Ce,ue,be;if(E||!m.isConnected){D.hide();return}let k=(ae=sc(n,d))!=null?ae:void 0,O=lh(n,h);D.setPhaseKey("loading.preparingModel");let N=await pg({path:d,absolutePath:k,preferConversionExts:ff(h),conversionManager:()=>cee(h),convertedAssetCache:t,conversionOutputRoot:O}),B=AE(N),V=Tg(n,B.path,h),q=Ao(n,B.path);V.catch(()=>{}),q.catch(()=>{});let j=(_e=i==null?void 0:i(d))!=null?_e:[],J={ext:B.ext,annotationMode:j.length>0?"readonly":"none",rendererRollout:h.previewRendererRollout,useThreeRenderer:h.useThreeRenderer},{preview:H}=await fg(lee,{surface:"code-block",modelPath:d},g,J);p=H;let Y=await V;(ne=p.setRenderQuality)==null||ne.call(p,Y.renderQuality,Y.renderScale),S.syncCapabilities(),D.setPhaseKey("loading.loadingModel");let de=await q,me=async Ge=>Ao(n,Ge);if(E){D.hide();return}let Ue=await p.loadModel(de,B.ext,me,B.path);if(D.setProgress(100),RE(m,Ue),E){D.hide();return}((ve=l.scene)==null?void 0:ve.autoRotate)===void 0&&h.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:h.autoRotateSpeed}),p.applyConfig(l),S.syncCapabilities(),u==="stl"&&f.color&&((Ce=p.setSTLColor)==null||Ce.call(p,f.color)),u==="stl"&&f.wireframe!==void 0&&((ue=p.setWireframe)==null||ue.call(p,f.wireframe)),(be=p.hasAnimations)!=null&&be.call(p)&&S.showAnimButton(),D.hide(),w(p,j)})}catch(k){E=!0,A.disconnect(),M.disconnect(),D.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=TE(k);SE(k)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",k),xE(m,O)}}let M=new IntersectionObserver(D=>{for(let w of D)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function Sxe(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 Txe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var R,M,I,C,D,w,k,O;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(N){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(N)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(M=(R=o.models)==null?void 0:R.length)!=null?M:1),c=(w=(I=o.models)==null?void 0:I[0])!=null?w:(D=(C=o.sections)==null?void 0:C[0])==null?void 0:D.models[0],f=typeof c=="string"?c:(k=c==null?void 0:c.path)!=null?k:"",d=r.createDiv({cls:"ai3d-grid-host"}),u=d.createEl("canvas");if(h$(u),d.appendChild(u),typeof o.rowHeight=="number"){let N=o.preset==="compose"?1:Math.ceil(l/((O=o.columns)!=null?O:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*N}px`)}let h=null,m=!1,g=!1,p=!1,_=0,v=null,E=null;m$(u,()=>m?null:h);let T=EE(r,d,n,()=>h,()=>f,()=>{m||(m=!0,v==null||v.disconnect(),E==null||E.disconnect(),S(),d.remove())},e);dee(r);function S(){_+=1,p=!1,g=!1,h==null||h.destroy(),h=null,T.syncCapabilities()}v=new MutationObserver(()=>{m||r.contains(d)||(m=!0,v==null||v.disconnect(),E==null||E.disconnect(),S())}),v.observe(r,{childList:!0});async function A(){if(g||p||m)return;p=!0;let N=++_,B=ch(d);B.setPhaseKey("codeBlock.renderingGrid"),B.setProgress(-1);try{await LE(async()=>{var de,me,Ue,ae,_e,ne,ve,Ce,ue,be;if(m||N!==_||!d.isConnected){B.hide();return}let V=e(),q=[];for(let Ge of(de=o.models)!=null?de:[]){let qe=await fee(n,Ge,V,t);q.push(qe)}let j=q.map(Ge=>Ge.model);f=(Ue=(me=q[0])==null?void 0:me.sourcePath)!=null?Ue:f;let{renderer:J}=await HF(lee,{surface:"3dgrid",preset:(ae=o.preset)!=null?ae:"compare",modelCount:(ne=(_e=o.models)==null?void 0:_e.length)!=null?ne:0},u);if(m||N!==_||!d.isConnected){J.destroy(),B.hide();return}h=J,h.setRenderScale(V.renderScale),T.syncCapabilities();let H=h,Y=async Ge=>Ao(n,Ge);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.composeRequiresSections")}),h.destroy(),h=null;return}let Ge=[];for(let Ye of o.sections)try{if(!f){let Zt=Ye.models[0];if(Zt){let Ut=typeof Zt=="string"?Zt:Zt.path;f=(ve=Pf(n,Ut))!=null?ve:Ut}}let Ke=await vxe(n,Ye,V,t);Ge.push(Ke)}catch(Ke){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ke instanceof Error?Ke.message:String(Ke)}),H.destroy(),h=null;return}let qe=z1(Ge,(Ce=o.direction)!=null?Ce:"horizontal",Number((ue=o.params)==null?void 0:ue.gap)||.02,Ye=>typeof Ye=="string"?null:Ye,X1);if(!qe){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.composeNoValidSections")}),H.destroy(),h=null;return}await H.loadWithPreset(qe,Y)}else if(o.preset){let Ge=X1(o.preset);if(!Ge){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Bi("codeBlock.unknownPreset",{preset:o.preset})}),H.destroy(),h=null;return}let qe=Ge.compute(j,(be=o.params)!=null?be:{});if(!qe){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Bi("codeBlock.presetRequiresModels",{preset:o.preset,min:String(Ge.minModels),max:String(Ge.maxModels),count:String(j.length)})}),H.destroy(),h=null;return}await H.loadWithPreset(qe,Y)}else await H.loadModels(j,o,Y);if(m||N!==_){B.hide();return}g=!0,B.hide()})}catch(V){if(N!==_||m){B.hide();return}m=!0,v==null||v.disconnect(),E==null||E.disconnect(),B.hide(),h==null||h.destroy(),h=null,console.error("[AI3D Grid] Failed:",V),d.createDiv({cls:"ai3d-inline-empty",text:V instanceof Error?V.message:Bi("codeBlock.gridFailed",{reason:String(V)})})}finally{N===_&&(p=!1)}}E=new IntersectionObserver(N=>{N.some(V=>V.isIntersecting||V.intersectionRatio>0)?A():(g||p)&&S()},{rootMargin:"200px"}),E.observe(d)}}}var lee,hee=y(()=>{"use strict";La();t0();ah();ps();oee();ZF();_0();QF();Fg();v0();E0();mg();En();bE();ga();wn();T0();K1();b0();lee=Zi("inline-code-block")});var gee={};Be(gee,{registerLazyCodeBlockProcessor:()=>xxe,registerLazyGridCodeBlockProcessor:()=>Rxe});function mee(){return K0!=null||(K0=Promise.resolve().then(()=>(hee(),uee))),K0}function pee(n){return(e,t,i)=>{let r=pl("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:pl();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:Axe});a.observe(r)}}function xxe(n,e,t,i){let r=null;return{id:"3d",handler:pee(async()=>(r!=null||(r=mee().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function Rxe(n,e,t){let i=null;return{id:"3dgrid",handler:pee(async()=>(i!=null||(i=mee().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var K0,Axe,_ee=y(()=>{"use strict";Rm();K0=null,Axe="240px"});var vee={};Be(vee,{setupHeadingPinObserver:()=>Mxe});function bxe(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 j1(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function j0(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${j1(t)}`).sort().join("||")}function Mxe(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[q,j]of Object.entries(O)){let J=(V=j.annotations)!=null?V:[];N.set(q,J),i.get(q)!==J&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>KJ(O),d=O=>Wl(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(" ")),u=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},h=(O,N)=>{if(N.length===0){u(O);return}let B=j1(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&u(O),O.dataset.pinBound=B;let q=O.createSpan({cls:"ai3d-heading-pin-badge"}),j=[...new Set(N.map(me=>me.color).filter(Boolean))],J=q.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(J.style.background=bxe(j),J.title=N.length>1?X("headingPin.showMultiple"):X("headingPin.showSingle"),J.setAttribute("role","button"),J.setAttribute("tabindex","0"),N.length>1){let me=q.createSpan({cls:"ai3d-heading-pin-badge-count"});me.textContent=`\xD7${N.length}`}let H=[...new Set(N.map(me=>dn(me.modelPath)))];q.title=Bi("headingPin.linkedTo",{models:H.join(", ")});let Y=me=>{me==null||me.stopPropagation(),me==null||me.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};J.addEventListener("click",me=>{Y(me)}),J.addEventListener("keydown",me=>{me.instanceOf(KeyboardEvent)&&(me.key!=="Enter"&&me.key!==" "||Y(me))}),q.addEventListener("click",me=>{me.stopPropagation()}),O.appendChild(q);let de=()=>{for(let me of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:me.pinId}}))};O.addEventListener("mouseover",de),e.set(O,{badge:q,handler:de,signature:B})},m=(O,N)=>{var V;let B=d(O);h(O,(V=N.get(B))!=null?V:[])},g=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){u(B);continue}let q=(N=O.get(d(B)))!=null?N:[],j=j1(q);(q.length===0||V.signature!==j)&&h(B,q)}},p=(O,N)=>{O.querySelectorAll(NE).forEach(B=>m(B,N))},_=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=j0(N),s=N.size>0,!s){g(N),D();return}C(),g(N),activeDocument.querySelectorAll(OE).forEach(V=>p(V,N))},v=0,E=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,_()},O)},T=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=j0(N);if(B!==r){if(r=B,s=N.size>0,!s){g(N),D();return}C(),E()}});n.onLayoutChange(()=>{!s&&f().size===0||E(200)});let S=O=>O.matches(OE)||O.matches(NE)?!0:!!O.querySelector(OE)||!!O.querySelector(NE),A=O=>O.isConnected&&S(O),R=O=>S(O),M=()=>{var B,V,q,j,J,H;let O=Array.from(o);o.clear(),l=0;let N=f();g(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,NE)&&m(Y,N),(q=(V=Y.querySelectorAll)==null?void 0:V.call(Y,NE))==null||q.forEach(de=>m(de,N)),(j=Y.matches)!=null&&j.call(Y,OE)&&p(Y,N),(H=(J=Y.querySelectorAll)==null?void 0:J.call(Y,OE))==null||H.forEach(de=>p(de,N)));r=j0(N),s=N.size>0,s||D()},I=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&A(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(I),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function D(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{T(),D(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))u(O)});let w=n.getModelAssetProfiles();c(w);let k=f(w);r=j0(k),s=k.size>0,s&&(C(),E(500))}var OE,NE,Eee=y(()=>{"use strict";En();IE();ps();V1();OE=".markdown-preview-view, .markdown-source-view",NE=[".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 yxe(n){return n.includes("![[")}function q0(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 See(n,e){return Math.max(0,Math.min(e,n.length))}function Tee(n,e,t){if(n.length===0)return!1;let i=n.lineAt(See(n,e)),r=n.lineAt(See(n,t));for(let s=i.number;s<=r.number;s++)if(yxe(n.line(s).text))return!0;return!1}function Z0(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=Tee(n.startState.doc,t,i)||Tee(n.state.doc,r,s))}),e}var q1=y(()=>{"use strict"});function Aee(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();o.done||i.delete(o.value)}return s},clear(){i.clear()}}}var xee=y(()=>{"use strict"});var Mee={};Be(Mee,{ModelEmbedWidget:()=>Q0,registerLivePreviewExtension:()=>Cxe});function Ree(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v){var A,R;let E="state"in n?n.state.doc:n.doc,T=[];if(!q0(E))return T;let S=0;for(let M of E.iterLines()){let I=S+M.length+1;if(!M.includes("![[")){S=I;continue}let C=0;for(;C0&&M[D-1]==="\\"){C=D+"![[".length;continue}let w=M.indexOf("]]",D+"![[".length);if(w===-1)break;let O=M.slice(D+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(A=N.split(".").pop())==null?void 0:A.toLowerCase())!=null?R:"";if(!lo(B)){C=w+2;continue}let V=400,q=300;if(O.length>1){let J=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);J&&(V=parseInt(J[1],10),q=parseInt(J[2],10))}let j=Pf(e,N);if(!j){C=w+2;continue}T.push(Mg.Decoration.replace({widget:new Q0(e,j,V,q,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v),block:!0}).range(S+D,S+w+2)),C=w+2}S=I}return T}function bee(n){return n.length===0?mh.RangeSet.empty:mh.RangeSet.of(n,!0)}function Cxe(n,e,t,i){let r=mh.StateField.define({create(s){let a=e(),o=Ree(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.auxiliaryFileFolder,a.renderQuality,a.renderScale,t,i);return bee(o)},update(s,a){if(a.docChanged){if(!Z0(a))return s.map(a.changes);let o=e(),l=Ree(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.auxiliaryFileFolder,o.renderQuality,o.renderScale,t,i);return bee(l)}return s.map(a.changes)},provide:s=>Mg.EditorView.decorations.from(s)});return[mh.Prec.highest(r)]}var Mg,mh,Ixe,Q0,yee=y(()=>{"use strict";Mg=require("@codemirror/view"),mh=require("@codemirror/state");La();ps();v0();E0();Rm();ga();En();wn();T0();YF();q1();K1();b0();Ixe=Zi("inline-live-preview"),Q0=class extends Mg.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A){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=u;this.preferFbx2gltfForFbx=h;this.annotationPreviewMode=m;this.annotationDisplayMode=g;this.previewRendererRollout=p;this.useThreeRenderer=_;this.auxiliaryFileFolder=v;this.renderQuality=E;this.renderScale=T;this.convertedAssetCache=S;this.getAnnotations=A;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;this.zoomControl=null}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.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=Rr(),i=pl("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=gu("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),gg(r,"live-preview",this.modelPath),_g(r,()=>this.destroyed?null:this.preview),i.appendChild(r),this.zoomControl=d0(i,()=>this.preview);let a=ch(i),o=pl("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=pl("ai3d-mobile-mode-bar"),u=pl("ai3d-mobile-mode-hint");u.textContent=X("livePreview.mobileHint");let h=gu("button","ai3d-mobile-mode-btn");h.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),h.textContent=f?X("helper.scrollAction"):X("helper.interactAction"),h.classList.toggle("ai3d-btn-active",f),h.setAttribute("aria-label",f?X("helper.disableInteractionLabel"):X("helper.enableInteractionLabel"))};h.addEventListener("click",()=>{f=!f,m()}),m(),d.append(u,h),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 LE(async()=>{var C,D,w,k,O,N,B,V,q,j;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:u},{createNoteReader:h},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(_0(),c$)),Promise.resolve().then(()=>(Fg(),b3)),Promise.resolve().then(()=>(t0(),YQ)),Promise.resolve().then(()=>(ah(),ZQ)),Promise.resolve().then(()=>(B0(),F0)),Promise.resolve().then(()=>(V0(),U0)),Promise.resolve().then(()=>(bE(),$F))]),g=(C=sc(this.app,this.modelPath))!=null?C:void 0;r.setPhaseKey("loading.preparingModel");let p=lh(this.app,{auxiliaryFileFolder:this.auxiliaryFileFolder}),_=await l({path:this.modelPath,absolutePath:g,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(w0(),N0));return J({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(w=(D=this.getAnnotations)==null?void 0:D.call(this,this.modelPath))!=null?w:[],E={ext:_.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},T=Tg(this.app,_.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),S=Ao(this.app,_.effectivePath);T.catch(()=>{}),S.catch(()=>{});let{preview:A}=await f(Ixe,{surface:"live-preview",modelPath:this.modelPath},i,E);if(this.destroyed||a!==this.initGeneration){A.destroy();return}this.preview=A,(k=this.zoomControl)==null||k.sync();let R=await T;(N=(O=this.preview).setRenderQuality)==null||N.call(O,R.renderQuality,R.renderScale),r.setPhaseKey("loading.loadingModel");let M=await S;if(this.destroyed||a!==this.initGeneration){(B=this.preview)==null||B.destroy(),this.preview=null;return}let I=await this.preview.loadModel(M,_.effectiveExt,J=>Ao(this.app,J),_.effectivePath);if(this.destroyed||a!==this.initGeneration){(V=this.preview)==null||V.destroy(),this.preview=null,(q=this.zoomControl)==null||q.sync();return}if(m(t,I),(j=this.zoomControl)==null||j.sync(),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let J=this.preview.getAnnotationProvider();J.canvas&&(this.annotationMgr=new u(J,t,"readonly",v,void 0,h(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(()=>(mg(),r$)),Promise.resolve().then(()=>(bE(),$F))]),u=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",u.message):console.error("[AI3D] Live Preview failed:",l),d(t,u)}finally{r.hide()}}destroy(){var t,i;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.zoomControl)==null||i.destroy(),this.zoomControl=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 Pee={};Be(Pee,{registerLazyLivePreviewExtension:()=>Dxe});function Pxe(){return $0!=null||($0=Promise.resolve().then(()=>(yee(),Mee))),$0}function Iee(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E){var R,M;let T="state"in n?n.state.doc:n.doc,S=[];if(!q0(T))return S;let A=0;for(let I of T.iterLines()){let C=A+I.length+1;if(!I.includes("![[")){A=C;continue}let D=0;for(;D0&&I[w-1]==="\\"){D=w+"![[".length;continue}let k=I.indexOf("]]",w+"![[".length);if(k===-1)break;let N=I.slice(w+"![[".length,k).split("|"),B=N[0].trim(),V=(M=(R=B.split(".").pop())==null?void 0:R.toLowerCase())!=null?M:"";if(!lo(V)){D=k+2;continue}let q=400,j=300;if(N.length>1){let H=N[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);H&&(q=parseInt(H[1],10),j=parseInt(H[2],10))}let J=v.resolve(B);if(!J){D=k+2;continue}S.push(yg.Decoration.replace({widget:new Z1(e,J,q,j,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,E),block:!0}).range(A+w,A+k+2)),D=k+2}A=C}return S}function Cee(n){return n.length===0?ph.RangeSet.empty:ph.RangeSet.of(n,!0)}function Dxe(n,e,t,i,r){let s=Aee(n,Pf),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=ph.StateField.define({create(c){let f=e(),d=Iee(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.auxiliaryFileFolder,f.renderQuality,f.renderScale,t,s,i);return Cee(d)},update(c,f){if(f.docChanged){if(!Z0(f))return c.map(f.changes);let d=e(),u=Iee(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.auxiliaryFileFolder,d.renderQuality,d.renderScale,t,s,i);return Cee(u)}return c.map(f.changes)},provide:c=>yg.EditorView.decorations.from(c)});return[ph.Prec.highest(l)]}var yg,ph,$0,Z1,Dee=y(()=>{"use strict";yg=require("@codemirror/view"),ph=require("@codemirror/state");La();ps();q1();xee();Rm();$0=null;Z1=class extends yg.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A){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=u;this.preferFbx2gltfForFbx=h;this.annotationPreviewMode=m;this.annotationDisplayMode=g;this.previewRendererRollout=p;this.useThreeRenderer=_;this.auxiliaryFileFolder=v;this.renderQuality=E;this.renderScale=T;this.convertedAssetCache=S;this.getAnnotations=A;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.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=pl("ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy");return 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 Pxe()}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.auxiliaryFileFolder,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 Oee={};Be(Oee,{ModelFileSuggestModal:()=>Q1});var Lee,Q1,Nee=y(()=>{"use strict";Lee=require("obsidian");La();En();Q1=class extends Lee.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(X("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return lo(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function wee(n,e){return n==="three"?{backend:n,supportedFormats:Lxe,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:Oxe,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 Fee(n){return n.backend==="three"?wee("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"]):wee("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"])}function Bee(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var Lxe,Oxe,Uee=y(()=>{"use strict";ah();Lxe=["glb","gltf","stl","ply","obj"],Oxe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var Gee={};Be(Gee,{buildDiagnosticsReport:()=>zxe});function FE(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 Nxe(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 gh(n,e,t){if(!n)return t;if(e)return n;let i=Nxe(n);return i?``:""}function wE(n,e){return n?`set (${gh(n,e,"not set")})`:"not set"}function wxe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${FE(e.sendGeometrySummaryToRemote)}`,`preview refs ${FE(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function Fxe(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function Bxe(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 kxe(n){let e=new Set(n.enabledConverterIds);return Uxe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":Vxe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function Wxe(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 zxe(n){var c,f,d,u,h,m,g,p,_;let{manifest:e,state:t}=n,i=t.settings,r=Fxe(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?bh({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?Fee(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: ${Vee.apiVersion}`,`- Platform: ${Rr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${FE(i.useThreeRenderer)}`,`- Converted GLB Three fast path: ${FE(i.useThreeForConvertedDirectView)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${FE(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?Bee(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: ${gh(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: ${(u=r==null?void 0:r.annotations.length)!=null?u:0}`,`- Registered part candidates: ${(m=(h=r==null?void 0:r.registeredParts)==null?void 0:h.length)!=null?m:0}`,`- Report note: ${wE(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${wE(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${wE(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${wxe(t)}`,`- Report folder: ${gh(i.reportFolder,s,"empty")}`,`- Part notes folder: ${gh(i.partFolder,s,"empty")}`,`- Snapshot folder: ${gh(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${Bxe(t)}`,`- Last generated model: ${gh(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${wE(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${wE(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(g=l==null?void 0:l.partNoteCount)!=null?g:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(_=l==null?void 0:l.warningCount)!=null?_:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Auxiliary file folder: ${i.auxiliaryFileFolder.trim()?gh(i.auxiliaryFileFolder,s,"empty"):"default config folder"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${kxe(i)}`,`- Conversion cache status: ${Wxe(t)}`,`- Conversion timeout: ${Gxe}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: ${Xl().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 Vee,Uxe,Vxe,Gxe,kee=y(()=>{"use strict";Vee=require("obsidian");La();Uee();$E();ga();Uxe=[{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"}],Vxe=/[;|&<>$`\r\n\t]/,Gxe=3e5});var Kxe={};Be(Kxe,{default:()=>J0});module.exports=Yee(Kxe);var ys=require("obsidian");ty();La();oy();var zJ=require("obsidian");En();ZE();fy();La();var dte=new Set(["glb","gltf","stl","ply","obj"]),ute=10*1024*1024;function R3(n,e){var s;let t=na(n.extension),i=Cg(t),r=((s=e.preferConversionExts)==null?void 0:s.includes(t))&&!!(i!=null&&i.converterId);return(i==null?void 0:i.strategy)==="convert"||r||!dte.has(t)?!0:e.restoredFromWorkspace?n.stat.size>=ute:!1}Fg();var X0=class extends zJ.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;this.manualLoadRequested=!1;this.initialFileLoadSeen=!1}getViewType(){return Ud}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:X("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&(this.initialFileLoadSeen=!0,await this.loadOrDeferFile(this.file,!0))}async onLoadFile(t){let i=!this.initialFileLoadSeen&&!this.manualLoadRequested&&!this.delegate;this.initialFileLoadSeen=!0,await this.loadOrDeferFile(t,i)}async loadOrDeferFile(t,i){this.closed=!1;let r=this.getSettings();if(!this.delegate&&!this.manualLoadRequested&&R3(t,{restoredFromWorkspace:i,preferConversionExts:ff(r)})){this.renderDeferredLoad(t);return}await this.loadFileNow(t)}async loadFileNow(t){let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0,this.initialFileLoadSeen=!1,QE(this.contentEl);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(),Vd(this.contentEl),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:X("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(WJ(),kJ)),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)}renderDeferredLoad(t){this.contentEl.empty(),Vd(this.contentEl);let i=this.contentEl.createDiv({cls:"ai3d-inline-empty ai3d-direct-load-gate"});i.createDiv({cls:"ai3d-direct-load-gate-title",text:X("directView.deferredLoadTitle")}),i.createDiv({cls:"ai3d-direct-load-gate-message",text:X("directView.deferredLoadMessage")});let r=i.createDiv({cls:"ai3d-direct-load-gate-meta"});r.createSpan({text:t.name}),r.createSpan({text:uxe(t.stat.size)}),i.createEl("button",{cls:"ai3d-direct-load-gate-button",text:X("directView.deferredLoadButton")}).addEventListener("click",()=>{this.manualLoadRequested=!0,this.loadFileNow(t).finally(()=>{this.manualLoadRequested=!1})})}};function uxe(n){if(!Number.isFinite(n)||n<=0)return"0 B";let e=["B","KB","MB","GB"],t=n,i=0;for(;t>=1024&&i=100||i===0?0:t>=10?1:2;return`${t.toFixed(r)} ${e[i]}`}ZE();var YJ=require("obsidian"),Y0=class extends YJ.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(()=>(XJ(),HJ)).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)}};wn();En();V1();ga();var $1=Zi("main"),Hxe=700,Xxe=2500;function BE(n,e){return()=>{n().catch(t=>{$1.error(`Command ${e} failed`,{error:String(t)}),new ys.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function Yxe(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:Xxe}):t=window.setTimeout(a,0)},Hxe),()=>{e=!0,s()}}var J0=class extends ys.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),XF(this.getSettings().logLevel),Rh(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=h3(this),await this.ps.load(),this.convertedAssetCache=i3(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),XF(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}Rh(this.getSettings().locale),this.addRibbonIcon("box",X("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:X("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:X("main.commandGenerateNote"),callback:BE(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:X("main.commandOpenKnowledgeIndex"),callback:BE(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:X("main.commandClearConversionCache"),callback:BE(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:X("main.commandCheckConverters"),callback:BE(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:X("main.commandCopyDiagnostics"),callback:BE(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new Y0(this.app,this)),this.registerView(Ud,l=>new X0(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Xl(),Ud);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(()=>(_ee(),gee)),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(Yxe(()=>{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(()=>(Eee(),vee));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=jJ(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>(Dee(),Pee));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=>{$1.error("Failed to open import modal",{error:String(t)}),new ys.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(Nee(),Oee));new t(this.app,i=>{let r=i.extension.toLowerCase();lo(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(()=>(z0(),W0));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new ys.Notice(X("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof ys.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new ys.Notice(Bi("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 ys.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(Rr()){new ys.Notice(X("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(wd(),u1)),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 ys.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new ys.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(kee(),Gee)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new ys.Notice(X("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 ys.Notice(X("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=>{$1.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; +`)}async function KAe(n){let e=typeof performance!="undefined"?performance.now():Date.now(),t=n.app.vault.getAbstractFileByPath(n.indexPath),i=null;if(t instanceof zl.TFile){let r=await n.app.vault.read(t),s=w1(n);await n.app.vault.modify(t,LJ(r,s)),i=t}else i=await CJ(n.app,n.indexPath,OJ(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 jAe(n,e,t={}){var o,l,c,f,d,u,h,m,g,p,_;if(M1!==null)return;let i;M1=new Promise(v=>{i=v});let r=null,s=null,a=0;try{let v=e.store.getState(),E=v.currentModelPath;if(!E)return;let T=v.modelAssetProfiles[E],S=v.modelPreview,A=dn(E)||"model",R=v.settings.reportFolder,M=`${R}/${A} Report.md`,I=`${R}/${A} Analysis.json`,C=`${R}/${A} Index.md`,D=((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;D&&new zl.Notice(D),r=R1({modelPath:E,reportNotePath:M,analysisSidecarPath:I,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,k=await VAe(n,t.preview,v.settings.previewFolder,A);a=k.paths.length;let O=await DJ(n,v.modelAssetProfiles,E);s=T1({modelPath:E,profile:T,preview:S,evidence:w,previewImages:k.paths,registeredParts:O}),D&&(s.warnings=[...s.warnings,D]);let N=s;k.warning&&(N.warnings=[...N.warnings,k.warning],N.draftingInput&&(N.draftingInput={...N.draftingInput,evidence:{...N.draftingInput.evidence,warnings:[...N.draftingInput.evidence.warnings,k.warning]}})),N.localDraft=yJ({baseName:A,sourcePath:E,profile:T,preview:S,analysis:N}),N.pipeline.push({stage:"draft",durationMs:0,status:"success"}),await YAe({app:n,partFolder:v.settings.partFolder,baseName:A,notePath:M,sourcePath:E,analysis:N}),N.draftingInput&&(N.draftingInput={...N.draftingInput,partCandidates:N.draftingInput.partCandidates.map(H=>{let Y=N.parts.find(de=>de.partId===H.partId);return Y!=null&&Y.notePath?{...H,notePath:Y.notePath}:H}),annotationLinks:[...(d=N.annotationLinks)!=null?d:[]]});let B=dJ(v.settings,N.draftingInput,dh);if(B.enabled)try{let H=await uJ(B);H?(N.remoteDraft=H,N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"success"})):N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"})}catch(H){let Y=H instanceof Error?H.message:String(H);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 O1(n,R),!await KAe({app:n,baseName:A,notePath:M,sourcePath:E,analysisSidecarPath:I,indexPath:C,analysis:N,preview:S,profile:T}))throw new Error(`Unable to write knowledge index: ${C}`);let q=IJ({baseName:A,notePath:M,sourcePath:E,profile:T,preview:S,analysis:N,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath});if(!await pJ(n,I,`${JSON.stringify(N,null,2)} +`))throw new Error(`Unable to write analysis sidecar: ${I}`);let J=await pJ(n,M,q);if(!J)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(E,H=>({analysisVersion:dh,registeredParts:N.parts.map(N1),reportNotePath:J.path,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:k.paths})),e.setLastKnowledgeGeneration(R1({modelPath:E,reportNotePath:J.path,analysisSidecarPath:I,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(h=(u=N.partNotePaths)==null?void 0:u.length)!=null?h:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(J,{active:!0}),new zl.Notice(`Knowledge note updated: ${J.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(R1({...r,partNoteCount:(g=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?g:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(_=s==null?void 0:s.warnings.length)!=null?_:0)})),v}finally{i(),M1=null}}var zl,gAe,SJ,_Ae,TJ,y1,M1,X0=y(()=>{"use strict";zl=require("obsidian");DA();MA();wn();ps();YE();KE();z0();hJ();gAe=Zi("knowledge-note"),SJ=8,_Ae=256,TJ="",y1="";M1=null});var NJ={};Be(NJ,{renderRegisteredPartMatchRow:()=>ZAe});function qAe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function ZAe(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:Bi("directWorkbench.registeredSourceModel",{model:qAe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?X("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?X("directWorkbench.registeredTargetSourceModel"):X("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?X("directWorkbench.registeredOpenNote"):X("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 wJ=y(()=>{"use strict";En()});var WJ={};Be(WJ,{DirectModelView:()=>F1});function sxe(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function UJ(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 axe(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 VJ(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function oxe(n){return n.length<=FJ?n:[...n].sort((e,t)=>{var s,a,o,l;let i=VJ(e)-VJ(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,FJ)}function GJ(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 lxe(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(GJ))===JSON.stringify(e.map(GJ))}function B1(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function cxe(n){let e=B1(n.performanceTier);return e>=2?JAe:e===1?$Ae:QAe}function fxe(n){return B1(n.performanceTier)<2&&n.meshCount<=exe&&n.triangleCount<=txe}function dxe(n){let e=B1(n.performanceTier);return e>=2?null:e===1?nxe:rxe}function kJ(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function uxe(n){return n.parts.length<=BJ?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=kJ(e)-kJ(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,BJ)}}function hxe(n){return{sourcePath:n.sourcePath,sourceFormat:tf(n.sourceExt||n.sourcePath),effectiveFormat:tf(n.ext||n.path),loadStrategy:n.strategy}}function mxe(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 Rg,Y0,QAe,$Ae,JAe,FJ,exe,txe,BJ,ixe,rxe,nxe,F1,zJ=y(()=>{"use strict";Rg=require("obsidian");r0();F_();QF();E0();$F();ps();Fg();S0();T0();mg();En();bE();_a();wn();KE();A0();v$();uy();S$();x$();ZE();y0();cy();Y0=Zi("direct-view"),QAe=450,$Ae=1200,JAe=1500,FJ=256,exe=500,txe=15e5,BJ=64,ixe=512,rxe=250,nxe=1e3;F1=class extends Rg.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.activeLoadController=null;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 Ud}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:X("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),Vd(this.contentEl),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),Vd(this.contentEl),await this.loadModel(t)}onClose(){var t,i,r;return QE(this.contentEl),this.loadGeneration++,(t=this.activeLoadController)==null||t.abort(),this.activeLoadController=null,this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(i=this.annotationMgr)==null||i.destroy(),this.annotationMgr=null,(r=this.preview)==null||r.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var T,S,A,R,M,I;Vd(this.contentEl),(T=this.activeLoadController)==null||T.abort();let i=new AbortController;this.activeLoadController=i;let r=++this.loadGeneration,s={signal:i.signal,isCurrent:()=>this.loadGeneration===r&&this.activeLoadController===i&&!i.signal.aborted},a=Rr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(S=this.annotationMgr)==null||S.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,(A=this.preview)==null||A.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:o,topTrack:l,mainArea:c,hHandle:f,host:d,canvas:u,modeOverlay:h,sidebarContent:m,vHandle:g,workbenchPanel:p}=_$({contentEl:this.contentEl,filePath:t.path,mobile:a,getPreview:()=>this.preview}),_=null,v=C=>{var D;this.annotationMode=C,a&&C&&(_==null||_.setMobileInteractionMode(!0)),(D=this.annotationMgr)==null||D.hideEditor(),h.classList.toggle("is-hidden",!C)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=C=>{C.key==="Escape"&&this.annotationMode&&v(!1)},activeDocument.addEventListener("keydown",this.escHandler),_=EE(c,d,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(v(!this.annotationMode),this.annotationMode),C=>{!C&&this.annotationMode&&v(!1)}),this.sidebarContent=m,this.workbenchPanel=p,this.setupResizeHandles(f,g,l,o);let E=ch(d);try{let C=this.getSettings(),D=(R=sc(this.app,t.path))!=null?R:void 0,w=lh(this.app,C);E.setPhaseKey("loading.preparingModel");let k=await pg({path:t.path,absolutePath:D,preferConversionExts:ff(C),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(B0(),F0));return J(C)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:w});Ti(s);let O=AE(k);this.workbenchEvidenceLineage=hxe(O),this.workbenchSourceWarnings=[...O.warnings];let N=A$(C,O);_==null||_.syncCapabilities(),E.setPhaseKey("loading.loadingModel");let B=Ao(this.app,O.path,{signal:i.signal}),V=Tg(this.app,O.path,C);B.catch(()=>{}),V.catch(()=>{});let q=await this.createPreviewWithFallback(u,B,V,O,N,t.path,s);Ti(s),this.preview=q.preview,d.dataset.ai3dBackend=q.route.backend,d.dataset.ai3dRouteReason=q.route.reason,_==null||_.syncCapabilities();let j=q.summary;this.applyLargeModelRenderBudget(q.preview,C,j),_==null||_.syncCapabilities(),RE(d,j),this.workbenchPanel=p,this.workbenchSummary=j,this.workbenchRoute=q.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(p,j,q.route,t.path),this.renderSidebarContent(t.path,j),this.ps.setCurrentModel(t.path,j),Y0.info("direct view model loaded",{path:t.path,effectivePath:O.path,effectiveExt:O.ext,strategy:O.strategy,backend:q.route.backend,routeReason:q.route.reason,meshCount:j.meshCount,triangleCount:j.triangleCount}),E.setProgress(100),E.hide(),this.setupAnnotationManager(t.path,r,d,_),this.scheduleDeferredEvidenceRegistration(t.path,r,j)}catch(C){if(Df(C)||r!==this.loadGeneration)return;E.hide(),(M=this.preview)==null||M.destroy(),this.preview=null,d.replaceChildren(),(I=this.workbenchPanel)==null||I.addClass("is-hidden");let D=TE(C);SE(C)?console.warn("[AI3D] Direct view blocked by converter settings:",D.message):console.error("[AI3D] Direct view failed:",C),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),xE(d,D)}finally{this.activeLoadController===i&&(this.activeLoadController=null),E.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(()=>(V0(),U0)),Promise.resolve().then(()=>(k0(),G0))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let u=this.ps.store.getState().modelAssetProfiles[t],h=(l=u==null?void 0:u.annotations)!=null?l:[],m=d(this.app),g=f(this.app);this.annotationMgr=new c(o,r,"edit",h,p=>{this.ps.updateModelProfile(t,_=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,g,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(h.length),a.onPick(p=>{var T,S;if(!this.annotationMode||!this.annotationMgr)return;let _=p.screenX,v=p.screenY,E=(S=(T=this.preview)==null?void 0:T.getPickWorldPoint(p))!=null?S:null;E&&this.annotationMgr.showEditor(_,v,E)})}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(()=>(z0(),A1)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:ly(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(u=>[UJ(u),u])),c=oxe(s.map(u=>axe(l.get(UJ(u)),u))).map(xh);lxe(o.registeredParts,c)||this.ps.updateModelProfile(t,u=>({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(),!fxe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),Y0.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)})},cxe(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?mxe(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;E$({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 u=0,h=0,m=p=>{f(p.clientX-u,p.clientY-h),u=p.clientX,h=p.clientY},g=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",g),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),u=p.clientX,h=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",g)})},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:X("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?X("workbench.indexReady"):r!=null&&r.reportNotePath?X("workbench.noteReady"):X("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:X("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(X0(),H0)).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:X("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var u;let f=(u=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:u.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Rg.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:X("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var u;let f=(u=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:u.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof Rg.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:X("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:X("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:X(m)})},d=this.getCachedModelEvidence(i),u=d?uxe(d):null;if(!(u!=null&&u.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:X("directWorkbench.registeredLoading")});return}let h=dxe(r);if(h===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(()=>(X0(),H0)),Promise.resolve().then(()=>(z0(),A1)),Promise.resolve().then(()=>(wJ(),NJ))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:g},{renderRegisteredPartMatchRow:p}])=>{var R;let _=this.ps.store.getState(),v=await m(this.app,_.modelAssetProfiles,i,{includeSidecars:!1,maxParts:ixe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let E=this.ps.store.getState().modelAssetProfiles[i],S=g({modelPath:i,profile:E,preview:r,evidence:u,registeredParts:v}).parts.filter(M=>{var I;return(I=M.registeredMatches)==null?void 0:I.length}).sort((M,I)=>{var C,D,w,k,O,N;return((w=(D=(C=I.registeredMatches)==null?void 0:C[0])==null?void 0:D.matchScore)!=null?w:0)-((N=(O=(k=M.registeredMatches)==null?void 0:k[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(S.length===0){f("directWorkbench.registeredEmpty");return}l.setText(Bi("directWorkbench.registeredCount",{count:String(S.length)})),c.empty();let A=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of S){let I=(R=M.registeredMatches)==null?void 0:R[0];if(!I)continue;let D=p(A,M.name,I).querySelector("[data-ai3d-action='open-registered-part']");D instanceof HTMLButtonElement&&D.addEventListener("click",()=>{let w=D.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let k=this.app.vault.getAbstractFileByPath(w);k instanceof Rg.TFile&&this.app.workspace.getLeaf(!0).openFile(k,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},h)}async createPreviewWithFallback(t,i,r,s,a,o,l){Ti(l);let c=await fg(Y0,{surface:"direct-view",modelPath:o},t,a);try{Ti(l)}catch(u){throw c.preview.destroy(),u}let f;try{f=await r,Ti(l)}catch(u){throw c.preview.destroy(),u}this.applyRenderBudget(c.preview,f);let d;try{d=await i,Ti(l)}catch(u){throw c.preview.destroy(),u}try{let u=await c.preview.loadModel(d,s.ext,h=>Ao(this.app,h,{signal:l.signal}),s.path,l);return Ti(l),{preview:c.preview,summary:u,route:c.route}}catch(u){if(c.preview.destroy(),Df(u)||c.route.backend!=="three")throw u;Ti(l),console.warn("[AI3D] Three direct view failed; falling back to Babylon:",u);let h={...a,allowWorkbenchFeaturesOnThree:!1,rendererRollout:"babylon-safe",useThreeRenderer:!1},m=await fg(Y0,{surface:"direct-view-fallback",modelPath:o},t,h);this.applyRenderBudget(m.preview,f);try{Ti(l);let g=await m.preview.loadModel(d,s.ext,p=>Ao(this.app,p,{signal:l.signal}),s.path,l);return Ti(l),{preview:m.preview,summary:g,route:m.route}}catch(g){throw m.preview.destroy(),Df(g)?g:sxe(u)?u:g}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=y$(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var XJ={};Be(XJ,{AI3DSettingTab:()=>V1});function gxe(){switch(U1==null?void 0:U1.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 qt,U1,V1,YJ=y(()=>{"use strict";qt=require("obsidian");ny();En();_a();fr();U1=Sm();V1=class extends qt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),Rh(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 qt.Setting(t).setName(X("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:X("settings.diagnostics.idle")}))}buildLanguageSection(t){new qt.Setting(t).setName(X("settings.language")).setDesc(X("settings.language.desc")).addDropdown(i=>i.addOption("en",X("settings.language.englishName")).addOption("zh-CN",X("settings.language.chineseName")).setValue(this.plugin.getSettings().locale).onChange(r=>{let s=r;this.plugin.updateSettings({locale:s}),Rh(s),this.display()}))}buildFoldersSection(t){new qt.Setting(t).setName(X("settings.folders")).setHeading(),new qt.Setting(t).setName(X("settings.sourceModelFolder")).setDesc(X("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder(cf.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new qt.Setting(t).setName(X("settings.auxiliaryFileFolder")).setDesc(X("settings.auxiliaryFileFolder.desc")).addText(i=>i.setPlaceholder(X("settings.auxiliaryFileFolder.placeholder")).setValue(this.plugin.getSettings().auxiliaryFileFolder).onChange(r=>{this.plugin.updateSettings({auxiliaryFileFolder:r})})),new qt.Setting(t).setName(X("settings.reportFolder")).setDesc(X("settings.reportFolder.desc")).addText(i=>i.setPlaceholder(cf.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new qt.Setting(t).setName(X("settings.partFolder")).setDesc(X("settings.partFolder.desc")).addText(i=>i.setPlaceholder(cf.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new qt.Setting(t).setName(X("settings.snapshotFolder")).setDesc(X("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder(cf.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new qt.Setting(t).setName(X("settings.behavior")).setHeading(),new qt.Setting(t).setName(X("settings.autoGenerateKnowledgeNotes")).setDesc(X("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new qt.Setting(t).setName(X("settings.annotationPreviewMode")).setDesc(X("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",X("settings.annotationPreviewMode.plainText")).addOption("markdown",X("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new qt.Setting(t).setName(X("settings.annotationDisplayMode")).setDesc(X("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",X("settings.annotationDisplayMode.snippet")).addOption("surface",X("settings.annotationDisplayMode.surface")).addOption("dot",X("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new qt.Setting(t).setName(X("settings.previewRendererRollout")).setDesc(X("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",X("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",X("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",X("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new qt.Setting(t).setName(X("settings.useThreeRenderer")).setDesc(X("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new qt.Setting(t).setName(X("settings.useThreeForConvertedDirectView")).setDesc(X("settings.useThreeForConvertedDirectView.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeForConvertedDirectView).onChange(r=>{this.plugin.updateSettings({useThreeForConvertedDirectView:r})})),new qt.Setting(t).setName(X("settings.experimentalThreeWorkbench")).setDesc(X("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new qt.Setting(t).setName(X("settings.autoRotateDefault")).setDesc(X("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new qt.Setting(t).setName(X("settings.snapshotNaming")).setDesc(X("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",X("settings.snapshotNaming.modelName")).addOption("timestamp",X("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new qt.Setting(t).setName(X("settings.logLevel")).setDesc(X("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 qt.Setting(t).setName(X("settings.knowledgeGeneration")).setHeading(),new qt.Setting(t).setName(X("settings.analysisMode")).setDesc(X("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",X("settings.analysisMode.local")).addOption("hybrid",X("settings.analysisMode.hybrid")).addOption("remote",X("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new qt.Setting(t).setName(X("settings.serviceBaseUrl")).setDesc(X("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 qt.Setting(t).setName(X("settings.sendGeometrySummaryToRemote")).setDesc(X("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new qt.Setting(t).setName(X("settings.sendPreviewImagesToRemote")).setDesc(X("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new qt.Setting(t).setName(X("settings.sendRawModelToRemote")).setDesc(X("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new qt.Setting(t).setName(X("settings.converters")).setHeading(),Rr()){t.createEl("p",{cls:"setting-item-description",text:X("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,X("settings.converterMenu"),X("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,X("settings.environmentInspector"),X("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new qt.Setting(t).setName(X("settings.enableCad")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableObj2gltf")).setDesc(X("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 qt.Setting(t).setName(X("settings.preferObj2gltf")).setDesc(X("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new qt.Setting(t).setName(X("settings.enableFbx2gltf")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableMesh")).setDesc(X("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 qt.Setting(t).setName(X("settings.enableSldprt")).setDesc(X("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=gxe();new qt.Setting(t).setName(X("settings.paths")).setHeading(),new qt.Setting(t).setName(X("settings.pythonCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.freecadCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.obj2gltfCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.fbx2gltfCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.assimpCmd")).setDesc(X("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 qt.Setting(t).setName(X("settings.diagnostics")).setDesc(X("settings.diagnostics.desc")).addButton(r=>r.setButtonText(X("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(X("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(X("settings.diagnostics.checkNow")),r.setDisabled(!1),new qt.Notice(X("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new qt.Setting(t).setName(X("settings.performance")).setHeading(),new qt.Setting(t).setName(X("settings.canvasHeight")).setDesc(X("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new qt.Setting(t).setName(X("settings.autoRotateSpeed")).setDesc(X("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new qt.Setting(t).setName(X("settings.renderQuality")).setDesc(X("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 qt.Setting(t).setName(X("settings.renderScale")).setDesc(X("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:X("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(wd(),h1)),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?X("settings.diagnostics.available"):X("settings.diagnostics.notFound")}`});let a=[`${X("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${X("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${X("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){var a;let r=(a=i.label)!=null?a:(()=>{switch(i.kind){case"cad-python":return X("settings.diagnostics.cadPythonCheck");case"mesh-python":return X("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return X("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return X("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return X("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?X("settings.diagnostics.selfCheckOk"):X("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${X("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function jJ(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=Wl(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 qJ(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Wl(t.headingRef))return!0;return!1}var G1=y(()=>{"use strict";IE()});function Zo(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=k1[n])!=null?i:k1.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function Hl(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 z1(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 k1,hh=y(()=>{"use strict";k1={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 ZJ,QJ=y(()=>{"use strict";hh();ZJ={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=DE(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=Hl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Zo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var $J,JJ=y(()=>{"use strict";hh();$J={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=Hl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Zo(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var eee,tee=y(()=>{"use strict";hh();eee={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=z1(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=Hl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Zo(i),viewport:o[f]}));return{placements:r,cells:l}}}});var iee,ree=y(()=>{"use strict";hh();iee={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=DE(n,t),s=W1(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Zo(i),viewport:s[l]}));return{placements:r,cells:a}}}});function H1(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((u,h)=>{var m;return u+((m=h.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let u of n){let m=((f=u.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 u=0;u{"use strict";nee={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var see,aee=y(()=>{"use strict";hh();see={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 u=d%s,h=Math.floor(d/s),m=(u-(s-1)/2)*t,g=(h-(a-1)/2)*t;return{path:f.path,position:[m,0,g],color:f.color,wireframe:f.wireframe}}),l=Hl(1,1,0),c=[{modelIndex:0,camera:Zo(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function bg(n){oee.set(n.name,n)}function Y1(n){return oee.get(n)}var oee,lee=y(()=>{"use strict";QJ();JJ();tee();ree();X1();aee();hh();X1();oee=new Map;bg(ZJ);bg($J);bg(eee);bg(iee);bg(nee);bg(see)});function vxe(){return typeof activeWindow=="undefined"?window:activeWindow}function LE(n){return Sxe.schedule(n)}var K1,Exe,Sxe,j1=y(()=>{"use strict";K1=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=vxe().setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},Exe=75,Sxe=new K1(1,Exe)});var hee={};Be(hee,{registerCodeBlockProcessor:()=>Axe,registerGridCodeBlockProcessor:()=>Rxe});async function fee(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(B0(),F0));return e(n)}async function dee(n,e,t,i){var d,u,h;let r=typeof e=="string"?{path:e}:e,s=Pf(n,r.path);if(!s)throw new Error(Bi("workbench.fileNotFound",{path:r.path}));let a=(u=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?u:"";if(!lo(a))throw Pg(a)?new Error(X("codeBlock.splatDisabled")):new Error(Bi("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Xl().join(", ")}));let o=(h=sc(n,s))!=null?h:void 0,l=lh(n,t),c=await pg({path:s,absolutePath:o,preferConversionExts:ff(t),conversionManager:()=>fee(t),convertedAssetCache:i,conversionOutputRoot:l}),f=AE(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function Txe(n,e,t,i){let r=[];for(let s of e.models){let a=await dee(n,s,t,i);r.push(a.model)}return{...e,models:r}}function uee(n){Rr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:X("codeBlock.mobileHint")})}function Axe(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var I,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let D=JSON.parse(o);l=xxe(D)}catch(D){let w=s.createDiv({cls:"ai3d-json-error"}),k=String(D).match(/position\s+(\d+)/),O=Bi("codeBlock.jsonParseError",{error:String(D)});if(k){let N=parseInt(k[1],10),B=o.substring(0,N).split(` +`);O+=Bi("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:X("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=Pf(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:Bi("workbench.fileNotFound",{path:f.path})});return}let u=(C=(I=d.split(".").pop())==null?void 0:I.toLowerCase())!=null?C:"";if(!lo(u)){s.createDiv({cls:"ai3d-inline-empty",text:Pg(u)?X("codeBlock.splatDisabled"):Bi("codeBlock.unsupportedFormat",{ext:`.${u}`,formats:Xl().join(", ")})});return}let h=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 g=m.createEl("canvas",{cls:"ai3d-canvas-full"});gg(g,"inline",d),m.appendChild(g);let p=null,_=null,v=!0,E=!1,T=!1;_g(g,()=>E?null:p);let S=EE(s,m,n,()=>p,()=>d,()=>{E||(E=!0,A.disconnect(),M.disconnect(),_==null||_.destroy(),_=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,_){let D=m.querySelector(".ai3d-annotation-overlay");D&&D.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});uee(s);let A=new MutationObserver(()=>{E||s.contains(m)||(E=!0,A.disconnect(),M.disconnect(),_==null||_.destroy(),_=null,p==null||p.destroy(),p=null)});A.observe(s,{childList:!0});async function R(){if(T||E||!d)return;T=!0;let D=ch(m),w=async(k,O)=>{if(O.length===0||!o0(k))return;let N=k.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(V0(),U0)),Promise.resolve().then(()=>(k0(),G0))]);if(E||p!==k||!m.isConnected)return;_=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:h.annotationPreviewMode,displayMode:h.annotationDisplayMode}),S.showAnnotateButton(),S.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{D.setPhaseKey("loading.preparingModel"),await LE(async()=>{var ae,_e,ne,ve,Ce,ue,be;if(E||!m.isConnected){D.hide();return}let k=(ae=sc(n,d))!=null?ae:void 0,O=lh(n,h);D.setPhaseKey("loading.preparingModel");let N=await pg({path:d,absolutePath:k,preferConversionExts:ff(h),conversionManager:()=>fee(h),convertedAssetCache:t,conversionOutputRoot:O}),B=AE(N),V=Tg(n,B.path,h),q=Ao(n,B.path);V.catch(()=>{}),q.catch(()=>{});let j=(_e=i==null?void 0:i(d))!=null?_e:[],J={ext:B.ext,annotationMode:j.length>0?"readonly":"none",rendererRollout:h.previewRendererRollout,useThreeRenderer:h.useThreeRenderer},{preview:H}=await fg(cee,{surface:"code-block",modelPath:d},g,J);p=H;let Y=await V;(ne=p.setRenderQuality)==null||ne.call(p,Y.renderQuality,Y.renderScale),S.syncCapabilities(),D.setPhaseKey("loading.loadingModel");let de=await q,me=async Ge=>Ao(n,Ge);if(E){D.hide();return}let Ue=await p.loadModel(de,B.ext,me,B.path);if(D.setProgress(100),RE(m,Ue),E){D.hide();return}((ve=l.scene)==null?void 0:ve.autoRotate)===void 0&&h.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:h.autoRotateSpeed}),p.applyConfig(l),S.syncCapabilities(),u==="stl"&&f.color&&((Ce=p.setSTLColor)==null||Ce.call(p,f.color)),u==="stl"&&f.wireframe!==void 0&&((ue=p.setWireframe)==null||ue.call(p,f.wireframe)),(be=p.hasAnimations)!=null&&be.call(p)&&S.showAnimButton(),D.hide(),w(p,j)})}catch(k){E=!0,A.disconnect(),M.disconnect(),D.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=TE(k);SE(k)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",k),xE(m,O)}}let M=new IntersectionObserver(D=>{for(let w of D)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function xxe(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 Rxe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var R,M,I,C,D,w,k,O;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(N){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(N)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(M=(R=o.models)==null?void 0:R.length)!=null?M:1),c=(w=(I=o.models)==null?void 0:I[0])!=null?w:(D=(C=o.sections)==null?void 0:C[0])==null?void 0:D.models[0],f=typeof c=="string"?c:(k=c==null?void 0:c.path)!=null?k:"",d=r.createDiv({cls:"ai3d-grid-host"}),u=d.createEl("canvas");if(m$(u),d.appendChild(u),typeof o.rowHeight=="number"){let N=o.preset==="compose"?1:Math.ceil(l/((O=o.columns)!=null?O:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*N}px`)}let h=null,m=!1,g=!1,p=!1,_=0,v=null,E=null;p$(u,()=>m?null:h);let T=EE(r,d,n,()=>h,()=>f,()=>{m||(m=!0,v==null||v.disconnect(),E==null||E.disconnect(),S(),d.remove())},e);uee(r);function S(){_+=1,p=!1,g=!1,h==null||h.destroy(),h=null,T.syncCapabilities()}v=new MutationObserver(()=>{m||r.contains(d)||(m=!0,v==null||v.disconnect(),E==null||E.disconnect(),S())}),v.observe(r,{childList:!0});async function A(){if(g||p||m)return;p=!0;let N=++_,B=ch(d);B.setPhaseKey("codeBlock.renderingGrid"),B.setProgress(-1);try{await LE(async()=>{var de,me,Ue,ae,_e,ne,ve,Ce,ue,be;if(m||N!==_||!d.isConnected){B.hide();return}let V=e(),q=[];for(let Ge of(de=o.models)!=null?de:[]){let qe=await dee(n,Ge,V,t);q.push(qe)}let j=q.map(Ge=>Ge.model);f=(Ue=(me=q[0])==null?void 0:me.sourcePath)!=null?Ue:f;let{renderer:J}=await XF(cee,{surface:"3dgrid",preset:(ae=o.preset)!=null?ae:"compare",modelCount:(ne=(_e=o.models)==null?void 0:_e.length)!=null?ne:0},u);if(m||N!==_||!d.isConnected){J.destroy(),B.hide();return}h=J,h.setRenderScale(V.renderScale),T.syncCapabilities();let H=h,Y=async Ge=>Ao(n,Ge);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.composeRequiresSections")}),h.destroy(),h=null;return}let Ge=[];for(let Ye of o.sections)try{if(!f){let Zt=Ye.models[0];if(Zt){let Ut=typeof Zt=="string"?Zt:Zt.path;f=(ve=Pf(n,Ut))!=null?ve:Ut}}let Ke=await Txe(n,Ye,V,t);Ge.push(Ke)}catch(Ke){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ke instanceof Error?Ke.message:String(Ke)}),H.destroy(),h=null;return}let qe=H1(Ge,(Ce=o.direction)!=null?Ce:"horizontal",Number((ue=o.params)==null?void 0:ue.gap)||.02,Ye=>typeof Ye=="string"?null:Ye,Y1);if(!qe){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:X("codeBlock.composeNoValidSections")}),H.destroy(),h=null;return}await H.loadWithPreset(qe,Y)}else if(o.preset){let Ge=Y1(o.preset);if(!Ge){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Bi("codeBlock.unknownPreset",{preset:o.preset})}),H.destroy(),h=null;return}let qe=Ge.compute(j,(be=o.params)!=null?be:{});if(!qe){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Bi("codeBlock.presetRequiresModels",{preset:o.preset,min:String(Ge.minModels),max:String(Ge.maxModels),count:String(j.length)})}),H.destroy(),h=null;return}await H.loadWithPreset(qe,Y)}else await H.loadModels(j,o,Y);if(m||N!==_){B.hide();return}g=!0,B.hide()})}catch(V){if(N!==_||m){B.hide();return}m=!0,v==null||v.disconnect(),E==null||E.disconnect(),B.hide(),h==null||h.destroy(),h=null,console.error("[AI3D Grid] Failed:",V),d.createDiv({cls:"ai3d-inline-empty",text:V instanceof Error?V.message:Bi("codeBlock.gridFailed",{reason:String(V)})})}finally{N===_&&(p=!1)}}E=new IntersectionObserver(N=>{N.some(V=>V.isIntersecting||V.intersectionRatio>0)?A():(g||p)&&S()},{rootMargin:"200px"}),E.observe(d)}}}var cee,mee=y(()=>{"use strict";Oa();r0();ah();ps();lee();QF();E0();$F();Fg();S0();T0();mg();En();bE();_a();wn();x0();j1();y0();cee=Zi("inline-code-block")});var _ee={};Be(_ee,{registerLazyCodeBlockProcessor:()=>Mxe,registerLazyGridCodeBlockProcessor:()=>yxe});function pee(){return q0!=null||(q0=Promise.resolve().then(()=>(mee(),hee))),q0}function gee(n){return(e,t,i)=>{let r=pl("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:pl();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:bxe});a.observe(r)}}function Mxe(n,e,t,i){let r=null;return{id:"3d",handler:gee(async()=>(r!=null||(r=pee().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function yxe(n,e,t){let i=null;return{id:"3dgrid",handler:gee(async()=>(i!=null||(i=pee().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var q0,bxe,vee=y(()=>{"use strict";Rm();q0=null,bxe="240px"});var Eee={};Be(Eee,{setupHeadingPinObserver:()=>Cxe});function Ixe(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 q1(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function Z0(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${q1(t)}`).sort().join("||")}function Cxe(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[q,j]of Object.entries(O)){let J=(V=j.annotations)!=null?V:[];N.set(q,J),i.get(q)!==J&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>jJ(O),d=O=>Wl(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(" ")),u=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},h=(O,N)=>{if(N.length===0){u(O);return}let B=q1(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&u(O),O.dataset.pinBound=B;let q=O.createSpan({cls:"ai3d-heading-pin-badge"}),j=[...new Set(N.map(me=>me.color).filter(Boolean))],J=q.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(J.style.background=Ixe(j),J.title=N.length>1?X("headingPin.showMultiple"):X("headingPin.showSingle"),J.setAttribute("role","button"),J.setAttribute("tabindex","0"),N.length>1){let me=q.createSpan({cls:"ai3d-heading-pin-badge-count"});me.textContent=`\xD7${N.length}`}let H=[...new Set(N.map(me=>dn(me.modelPath)))];q.title=Bi("headingPin.linkedTo",{models:H.join(", ")});let Y=me=>{me==null||me.stopPropagation(),me==null||me.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};J.addEventListener("click",me=>{Y(me)}),J.addEventListener("keydown",me=>{me.instanceOf(KeyboardEvent)&&(me.key!=="Enter"&&me.key!==" "||Y(me))}),q.addEventListener("click",me=>{me.stopPropagation()}),O.appendChild(q);let de=()=>{for(let me of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:me.pinId}}))};O.addEventListener("mouseover",de),e.set(O,{badge:q,handler:de,signature:B})},m=(O,N)=>{var V;let B=d(O);h(O,(V=N.get(B))!=null?V:[])},g=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){u(B);continue}let q=(N=O.get(d(B)))!=null?N:[],j=q1(q);(q.length===0||V.signature!==j)&&h(B,q)}},p=(O,N)=>{O.querySelectorAll(NE).forEach(B=>m(B,N))},_=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=Z0(N),s=N.size>0,!s){g(N),D();return}C(),g(N),activeDocument.querySelectorAll(OE).forEach(V=>p(V,N))},v=0,E=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,_()},O)},T=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=Z0(N);if(B!==r){if(r=B,s=N.size>0,!s){g(N),D();return}C(),E()}});n.onLayoutChange(()=>{!s&&f().size===0||E(200)});let S=O=>O.matches(OE)||O.matches(NE)?!0:!!O.querySelector(OE)||!!O.querySelector(NE),A=O=>O.isConnected&&S(O),R=O=>S(O),M=()=>{var B,V,q,j,J,H;let O=Array.from(o);o.clear(),l=0;let N=f();g(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,NE)&&m(Y,N),(q=(V=Y.querySelectorAll)==null?void 0:V.call(Y,NE))==null||q.forEach(de=>m(de,N)),(j=Y.matches)!=null&&j.call(Y,OE)&&p(Y,N),(H=(J=Y.querySelectorAll)==null?void 0:J.call(Y,OE))==null||H.forEach(de=>p(de,N)));r=Z0(N),s=N.size>0,s||D()},I=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&A(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(I),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function D(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{T(),D(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))u(O)});let w=n.getModelAssetProfiles();c(w);let k=f(w);r=Z0(k),s=k.size>0,s&&(C(),E(500))}var OE,NE,See=y(()=>{"use strict";En();IE();ps();G1();OE=".markdown-preview-view, .markdown-source-view",NE=[".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 Pxe(n){return n.includes("![[")}function Q0(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 Tee(n,e){return Math.max(0,Math.min(e,n.length))}function Aee(n,e,t){if(n.length===0)return!1;let i=n.lineAt(Tee(n,e)),r=n.lineAt(Tee(n,t));for(let s=i.number;s<=r.number;s++)if(Pxe(n.line(s).text))return!0;return!1}function $0(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=Aee(n.startState.doc,t,i)||Aee(n.state.doc,r,s))}),e}var Z1=y(()=>{"use strict"});function xee(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();o.done||i.delete(o.value)}return s},clear(){i.clear()}}}var Ree=y(()=>{"use strict"});var yee={};Be(yee,{ModelEmbedWidget:()=>J0,registerLivePreviewExtension:()=>Lxe});function bee(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v){var A,R;let E="state"in n?n.state.doc:n.doc,T=[];if(!Q0(E))return T;let S=0;for(let M of E.iterLines()){let I=S+M.length+1;if(!M.includes("![[")){S=I;continue}let C=0;for(;C0&&M[D-1]==="\\"){C=D+"![[".length;continue}let w=M.indexOf("]]",D+"![[".length);if(w===-1)break;let O=M.slice(D+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(A=N.split(".").pop())==null?void 0:A.toLowerCase())!=null?R:"";if(!lo(B)){C=w+2;continue}let V=400,q=300;if(O.length>1){let J=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);J&&(V=parseInt(J[1],10),q=parseInt(J[2],10))}let j=Pf(e,N);if(!j){C=w+2;continue}T.push(Mg.Decoration.replace({widget:new J0(e,j,V,q,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v),block:!0}).range(S+D,S+w+2)),C=w+2}S=I}return T}function Mee(n){return n.length===0?mh.RangeSet.empty:mh.RangeSet.of(n,!0)}function Lxe(n,e,t,i){let r=mh.StateField.define({create(s){let a=e(),o=bee(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.auxiliaryFileFolder,a.renderQuality,a.renderScale,t,i);return Mee(o)},update(s,a){if(a.docChanged){if(!$0(a))return s.map(a.changes);let o=e(),l=bee(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.auxiliaryFileFolder,o.renderQuality,o.renderScale,t,i);return Mee(l)}return s.map(a.changes)},provide:s=>Mg.EditorView.decorations.from(s)});return[mh.Prec.highest(r)]}var Mg,mh,Dxe,J0,Iee=y(()=>{"use strict";Mg=require("@codemirror/view"),mh=require("@codemirror/state");Oa();ps();S0();T0();Rm();_a();En();wn();x0();KF();Z1();j1();y0();Dxe=Zi("inline-live-preview"),J0=class extends Mg.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A){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=u;this.preferFbx2gltfForFbx=h;this.annotationPreviewMode=m;this.annotationDisplayMode=g;this.previewRendererRollout=p;this.useThreeRenderer=_;this.auxiliaryFileFolder=v;this.renderQuality=E;this.renderScale=T;this.convertedAssetCache=S;this.getAnnotations=A;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;this.zoomControl=null}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.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=Rr(),i=pl("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=gu("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),gg(r,"live-preview",this.modelPath),_g(r,()=>this.destroyed?null:this.preview),i.appendChild(r),this.zoomControl=h0(i,()=>this.preview);let a=ch(i),o=pl("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=pl("ai3d-mobile-mode-bar"),u=pl("ai3d-mobile-mode-hint");u.textContent=X("livePreview.mobileHint");let h=gu("button","ai3d-mobile-mode-btn");h.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),h.textContent=f?X("helper.scrollAction"):X("helper.interactAction"),h.classList.toggle("ai3d-btn-active",f),h.setAttribute("aria-label",f?X("helper.disableInteractionLabel"):X("helper.enableInteractionLabel"))};h.addEventListener("click",()=>{f=!f,m()}),m(),d.append(u,h),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 LE(async()=>{var C,D,w,k,O,N,B,V,q,j;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:u},{createNoteReader:h},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(E0(),f$)),Promise.resolve().then(()=>(Fg(),M3)),Promise.resolve().then(()=>(r0(),KQ)),Promise.resolve().then(()=>(ah(),QQ)),Promise.resolve().then(()=>(V0(),U0)),Promise.resolve().then(()=>(k0(),G0)),Promise.resolve().then(()=>(bE(),JF))]),g=(C=sc(this.app,this.modelPath))!=null?C:void 0;r.setPhaseKey("loading.preparingModel");let p=lh(this.app,{auxiliaryFileFolder:this.auxiliaryFileFolder}),_=await l({path:this.modelPath,absolutePath:g,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(B0(),F0));return J({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(w=(D=this.getAnnotations)==null?void 0:D.call(this,this.modelPath))!=null?w:[],E={ext:_.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},T=Tg(this.app,_.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),S=Ao(this.app,_.effectivePath);T.catch(()=>{}),S.catch(()=>{});let{preview:A}=await f(Dxe,{surface:"live-preview",modelPath:this.modelPath},i,E);if(this.destroyed||a!==this.initGeneration){A.destroy();return}this.preview=A,(k=this.zoomControl)==null||k.sync();let R=await T;(N=(O=this.preview).setRenderQuality)==null||N.call(O,R.renderQuality,R.renderScale),r.setPhaseKey("loading.loadingModel");let M=await S;if(this.destroyed||a!==this.initGeneration){(B=this.preview)==null||B.destroy(),this.preview=null;return}let I=await this.preview.loadModel(M,_.effectiveExt,J=>Ao(this.app,J),_.effectivePath);if(this.destroyed||a!==this.initGeneration){(V=this.preview)==null||V.destroy(),this.preview=null,(q=this.zoomControl)==null||q.sync();return}if(m(t,I),(j=this.zoomControl)==null||j.sync(),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let J=this.preview.getAnnotationProvider();J.canvas&&(this.annotationMgr=new u(J,t,"readonly",v,void 0,h(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(()=>(mg(),n$)),Promise.resolve().then(()=>(bE(),JF))]),u=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",u.message):console.error("[AI3D] Live Preview failed:",l),d(t,u)}finally{r.hide()}}destroy(){var t,i;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.zoomControl)==null||i.destroy(),this.zoomControl=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 Dee={};Be(Dee,{registerLazyLivePreviewExtension:()=>Nxe});function Oxe(){return ey!=null||(ey=Promise.resolve().then(()=>(Iee(),yee))),ey}function Cee(n,e,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E){var R,M;let T="state"in n?n.state.doc:n.doc,S=[];if(!Q0(T))return S;let A=0;for(let I of T.iterLines()){let C=A+I.length+1;if(!I.includes("![[")){A=C;continue}let D=0;for(;D0&&I[w-1]==="\\"){D=w+"![[".length;continue}let k=I.indexOf("]]",w+"![[".length);if(k===-1)break;let N=I.slice(w+"![[".length,k).split("|"),B=N[0].trim(),V=(M=(R=B.split(".").pop())==null?void 0:R.toLowerCase())!=null?M:"";if(!lo(V)){D=k+2;continue}let q=400,j=300;if(N.length>1){let H=N[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);H&&(q=parseInt(H[1],10),j=parseInt(H[2],10))}let J=v.resolve(B);if(!J){D=k+2;continue}S.push(yg.Decoration.replace({widget:new Q1(e,J,q,j,t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,E),block:!0}).range(A+w,A+k+2)),D=k+2}A=C}return S}function Pee(n){return n.length===0?ph.RangeSet.empty:ph.RangeSet.of(n,!0)}function Nxe(n,e,t,i,r){let s=xee(n,Pf),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=ph.StateField.define({create(c){let f=e(),d=Cee(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.auxiliaryFileFolder,f.renderQuality,f.renderScale,t,s,i);return Pee(d)},update(c,f){if(f.docChanged){if(!$0(f))return c.map(f.changes);let d=e(),u=Cee(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.auxiliaryFileFolder,d.renderQuality,d.renderScale,t,s,i);return Pee(u)}return c.map(f.changes)},provide:c=>yg.EditorView.decorations.from(c)});return[ph.Prec.highest(l)]}var yg,ph,ey,Q1,Lee=y(()=>{"use strict";yg=require("@codemirror/view"),ph=require("@codemirror/state");Oa();ps();Z1();Ree();Rm();ey=null;Q1=class extends yg.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,u,h,m,g,p,_,v,E,T,S,A){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=u;this.preferFbx2gltfForFbx=h;this.annotationPreviewMode=m;this.annotationDisplayMode=g;this.previewRendererRollout=p;this.useThreeRenderer=_;this.auxiliaryFileFolder=v;this.renderQuality=E;this.renderScale=T;this.convertedAssetCache=S;this.getAnnotations=A;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.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=pl("ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy");return 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 Oxe()}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.auxiliaryFileFolder,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 Nee={};Be(Nee,{ModelFileSuggestModal:()=>$1});var Oee,$1,wee=y(()=>{"use strict";Oee=require("obsidian");Oa();En();$1=class extends Oee.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(X("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return lo(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function Fee(n,e){return n==="three"?{backend:n,supportedFormats:wxe,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:Fxe,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 Bee(n){return n.backend==="three"?Fee("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"]):Fee("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"])}function Uee(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var wxe,Fxe,Vee=y(()=>{"use strict";ah();wxe=["glb","gltf","stl","ply","obj"],Fxe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var kee={};Be(kee,{buildDiagnosticsReport:()=>Yxe});function FE(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 Bxe(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 gh(n,e,t){if(!n)return t;if(e)return n;let i=Bxe(n);return i?``:""}function wE(n,e){return n?`set (${gh(n,e,"not set")})`:"not set"}function Uxe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${FE(e.sendGeometrySummaryToRemote)}`,`preview refs ${FE(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function Vxe(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function Gxe(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 Hxe(n){let e=new Set(n.enabledConverterIds);return kxe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":Wxe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function Xxe(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 Yxe(n){var c,f,d,u,h,m,g,p,_;let{manifest:e,state:t}=n,i=t.settings,r=Vxe(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?bh({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?Bee(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: ${Gee.apiVersion}`,`- Platform: ${Rr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${FE(i.useThreeRenderer)}`,`- Converted GLB Three fast path: ${FE(i.useThreeForConvertedDirectView)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${FE(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?Uee(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: ${gh(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: ${(u=r==null?void 0:r.annotations.length)!=null?u:0}`,`- Registered part candidates: ${(m=(h=r==null?void 0:r.registeredParts)==null?void 0:h.length)!=null?m:0}`,`- Report note: ${wE(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${wE(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${wE(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${Uxe(t)}`,`- Report folder: ${gh(i.reportFolder,s,"empty")}`,`- Part notes folder: ${gh(i.partFolder,s,"empty")}`,`- Snapshot folder: ${gh(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${Gxe(t)}`,`- Last generated model: ${gh(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${wE(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${wE(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(g=l==null?void 0:l.partNoteCount)!=null?g:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(_=l==null?void 0:l.warningCount)!=null?_:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Auxiliary file folder: ${i.auxiliaryFileFolder.trim()?gh(i.auxiliaryFileFolder,s,"empty"):"default config folder"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${Hxe(i)}`,`- Conversion cache status: ${Xxe(t)}`,`- Conversion timeout: ${zxe}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: ${Xl().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 Gee,kxe,Wxe,zxe,Wee=y(()=>{"use strict";Gee=require("obsidian");Oa();Vee();$E();_a();kxe=[{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"}],Wxe=/[;|&<>$`\r\n\t]/,zxe=3e5});var Zxe={};Be(Zxe,{default:()=>ty});module.exports=Kee(Zxe);var ys=require("obsidian");ry();Oa();cy();var HJ=require("obsidian");En();ZE();uy();Oa();var ute=new Set(["glb","gltf","stl","ply","obj"]),hte=10*1024*1024;function b3(n,e){var s;let t=sa(n.extension),i=Cg(t),r=((s=e.preferConversionExts)==null?void 0:s.includes(t))&&!!(i!=null&&i.converterId);return(i==null?void 0:i.strategy)==="convert"||r||!ute.has(t)?!0:e.restoredFromWorkspace?n.stat.size>=hte:!1}Fg();var K0=class extends HJ.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;this.manualLoadRequested=!1;this.initialFileLoadSeen=!1}getViewType(){return Ud}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:X("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&(this.initialFileLoadSeen=!0,await this.loadOrDeferFile(this.file,!0))}async onLoadFile(t){let i=!this.initialFileLoadSeen&&!this.manualLoadRequested&&!this.delegate;this.initialFileLoadSeen=!0,await this.loadOrDeferFile(t,i)}async loadOrDeferFile(t,i){this.closed=!1;let r=this.getSettings();if(!this.delegate&&!this.manualLoadRequested&&b3(t,{restoredFromWorkspace:i,preferConversionExts:ff(r)})){this.renderDeferredLoad(t);return}await this.loadFileNow(t)}async loadFileNow(t){let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0,this.initialFileLoadSeen=!1,QE(this.contentEl);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(),Vd(this.contentEl),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:X("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(zJ(),WJ)),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)}renderDeferredLoad(t){this.contentEl.empty(),Vd(this.contentEl);let i=this.contentEl.createDiv({cls:"ai3d-inline-empty ai3d-direct-load-gate"});i.createDiv({cls:"ai3d-direct-load-gate-title",text:X("directView.deferredLoadTitle")}),i.createDiv({cls:"ai3d-direct-load-gate-message",text:X("directView.deferredLoadMessage")});let r=i.createDiv({cls:"ai3d-direct-load-gate-meta"});r.createSpan({text:t.name}),r.createSpan({text:pxe(t.stat.size)}),i.createEl("button",{cls:"ai3d-direct-load-gate-button",text:X("directView.deferredLoadButton")}).addEventListener("click",()=>{this.manualLoadRequested=!0,this.loadFileNow(t).finally(()=>{this.manualLoadRequested=!1})})}};function pxe(n){if(!Number.isFinite(n)||n<=0)return"0 B";let e=["B","KB","MB","GB"],t=n,i=0;for(;t>=1024&&i=100||i===0?0:t>=10?1:2;return`${t.toFixed(r)} ${e[i]}`}ZE();var KJ=require("obsidian"),j0=class extends KJ.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(()=>(YJ(),XJ)).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)}};wn();En();G1();_a();var J1=Zi("main"),Kxe=700,jxe=2500;function BE(n,e){return()=>{n().catch(t=>{J1.error(`Command ${e} failed`,{error:String(t)}),new ys.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function qxe(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:jxe}):t=window.setTimeout(a,0)},Kxe),()=>{e=!0,s()}}var ty=class extends ys.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),YF(this.getSettings().logLevel),Rh(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=m3(this),await this.ps.load(),this.convertedAssetCache=r3(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),YF(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}Rh(this.getSettings().locale),this.addRibbonIcon("box",X("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:X("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:X("main.commandGenerateNote"),callback:BE(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:X("main.commandOpenKnowledgeIndex"),callback:BE(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:X("main.commandClearConversionCache"),callback:BE(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:X("main.commandCheckConverters"),callback:BE(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:X("main.commandCopyDiagnostics"),callback:BE(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new j0(this.app,this)),this.registerView(Ud,l=>new K0(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Xl(),Ud);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(()=>(vee(),_ee)),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(qxe(()=>{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(()=>(See(),Eee));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=qJ(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>(Lee(),Dee));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=>{J1.error("Failed to open import modal",{error:String(t)}),new ys.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(wee(),Nee));new t(this.app,i=>{let r=i.extension.toLowerCase();lo(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(()=>(X0(),H0));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new ys.Notice(X("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof ys.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new ys.Notice(Bi("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 ys.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(Rr()){new ys.Notice(X("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(wd(),h1)),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 ys.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new ys.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(Wee(),kee)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new ys.Notice(X("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 ys.Notice(X("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=>{J1.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; diff --git a/src/render/babylon/scene.ts b/src/render/babylon/scene.ts index 417897e..554cdee 100644 --- a/src/render/babylon/scene.ts +++ b/src/render/babylon/scene.ts @@ -108,6 +108,7 @@ import { createMeasurementReading as buildMeasurementReading, createMeasurementState, createMeasurementTrianglesFromIndices, + createMeasurementVertexSnapRadius, drawMeasurementLabelCanvas, MEASUREMENT_LABEL_CANVAS, normalizeMeasurementUnit, @@ -2039,7 +2040,7 @@ export class BabylonModelPreview implements WorkbenchPreview { vertices, edges, targetId, - vertexRadius: Math.max(size.x, size.y, size.z, 0.001) * 0.045, + vertexRadius: createMeasurementVertexSnapRadius(size, edges), }; this.measurementSnapInputCache = input; this.measurementSnapInputCacheTargetId = target.uniqueId; diff --git a/src/render/preview/measurement.test.ts b/src/render/preview/measurement.test.ts index bd4fa52..68c0756 100644 --- a/src/render/preview/measurement.test.ts +++ b/src/render/preview/measurement.test.ts @@ -9,6 +9,7 @@ import { createMeasurementReading, createMeasurementState, createMeasurementTrianglesFromIndices, + createMeasurementVertexSnapRadius, createReferenceMeasurementScale, drawMeasurementLabelCanvas, formatMeasurementNumber, @@ -176,6 +177,18 @@ describe("measurement helpers", () => { expect(snapped).toBeNull(); }); + it("caps the vertex snap radius by selected-target edge scale", () => { + expect(createMeasurementVertexSnapRadius( + { x: 10, y: 1, z: 1 }, + [{ start: { x: 0, y: 0, z: 0 }, end: { x: 1, y: 0, z: 0 } }], + )).toBeCloseTo(0.1); + expect(createMeasurementVertexSnapRadius( + { x: 1, y: 1, z: 1 }, + [{ start: { x: 0, y: 0, z: 0 }, end: { x: 1, y: 0, z: 0 } }], + )).toBeCloseTo(0.045); + expect(createMeasurementVertexSnapRadius({ x: 10, y: 1, z: 1 }, [])).toBeCloseTo(0.45); + }); + it("creates geometry snap edges from indexed and non-indexed triangles without face diagonals", () => { const squareVertices = [ { x: 0, y: 0, z: 0 }, diff --git a/src/render/preview/measurement.ts b/src/render/preview/measurement.ts index ec6568d..1794fd3 100644 --- a/src/render/preview/measurement.ts +++ b/src/render/preview/measurement.ts @@ -34,6 +34,8 @@ const UNIT_FACTORS_TO_METERS: Record = { const MIN_MEASUREMENT_SIZE = 1e-9; const MEASUREMENT_EDGE_KEY_SCALE = 1_000_000; const MEASUREMENT_COPLANAR_EDGE_DOT = 0.9995; +const MEASUREMENT_VERTEX_RADIUS_SPAN_FACTOR = 0.045; +const MEASUREMENT_VERTEX_RADIUS_EDGE_FACTOR = 0.1; export interface MeasurementSnapVertexCandidate { point: PreviewWorldPoint; @@ -211,6 +213,27 @@ export function snapMeasurementPointToGeometry( }; } +export function createMeasurementVertexSnapRadius( + boundsSize: PreviewWorldPoint, + edges: readonly MeasurementSnapEdgeCandidate[], +): number { + const span = Math.max(boundsSize.x, boundsSize.y, boundsSize.z, 0.001); + const spanRadius = span * MEASUREMENT_VERTEX_RADIUS_SPAN_FACTOR; + const edgeLengths = edges + .map((edge) => distanceMeasurementPoints(edge.start, edge.end)) + .filter((length) => Number.isFinite(length) && length > MIN_MEASUREMENT_SIZE) + .sort((left, right) => left - right); + if (edgeLengths.length === 0) { + return spanRadius; + } + + const referenceEdgeLength = edgeLengths[Math.floor(edgeLengths.length / 2)]; + return Math.max( + Math.min(spanRadius, referenceEdgeLength * MEASUREMENT_VERTEX_RADIUS_EDGE_FACTOR), + MIN_MEASUREMENT_SIZE, + ); +} + export function createMeasurementGeometryEdgesFromTriangles( vertices: readonly PreviewWorldPoint[], triangles: readonly [number, number, number][], diff --git a/src/render/three/scene.ts b/src/render/three/scene.ts index fdd7c4c..24ccd85 100644 --- a/src/render/three/scene.ts +++ b/src/render/three/scene.ts @@ -104,6 +104,7 @@ import { createMeasurementReading as buildMeasurementReading, createMeasurementState, createMeasurementTrianglesFromIndices, + createMeasurementVertexSnapRadius, drawMeasurementLabelCanvas, MEASUREMENT_LABEL_CANVAS, normalizeMeasurementUnit, @@ -2752,7 +2753,7 @@ export class ThreeModelPreview implements WorkbenchPreview { vertices, edges, targetId, - vertexRadius: Math.max(size.x, size.y, size.z, 0.001) * 0.045, + vertexRadius: createMeasurementVertexSnapRadius(size, edges), }; this.measurementSnapInputCache = input; this.measurementSnapInputCacheTarget = target;