@splinetool/loader 1.12.96 → 1.12.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,7 @@ best distance: ${p.d}`);let g=[p.x,p.y];return g.distance=p.d,g.distance}functio
15
15
  }`}if(n){o=`${!1&&window.location.search.includes("api-dev")?"https://api-dev.spline.design/":"https://apis.spline.design/"}file/${i.proxy.fileId}/external-api/request?uuidexternalapi=${i.proxy.proxyId}`;let u;a!==void 0?u=a:i.method==="POST"&&i.body&&(u=ml(JSON.parse(i.body),t)),u!==void 0&&(o+=`&data=${encodeURIComponent(u.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else i.integration?.type==="OpenAI"?r=a:i.method==="POST"&&i.body&&(r=ml(JSON.parse(i.body),t));let s=await fetch(o,{method:n?"GET":i.method,headers:n?void 0:aE(i),signal:e.signal,body:r});if(!s.ok)throw new Error("status:"+s.status+"_:_"+s.statusText);if(i.integration?.type==="OpenAI"){let l=await s.json();return n&&(l=l.response),{content:l.choices[0].message.content}}else{let l=await s.json();return n&&(l=l.response),l}}var Db=(i,t)=>{if(typeof i=="string"){let e=t.getVariable(i);if(e)return Db(e,t)}return vi.isBoolean(i)?vi.getDisplayedValue(i).toLowerCase():vi.getDisplayedValue(i)},ml=(i,t)=>i.map((e,r)=>{if("text"in e)return e.text;if("type"in e){if(e.type==="paragraph")return(r>0?`
16
16
  `:"")+ml(e.children,t);if(e.type==="variable"){let o=t.getVariable(e.variableId);if(o!==void 0)return Db(o,t)}}return""}).join("");var pE=new pn,fE=new pn;function hE(i,t,e){let r=[new Lt,new Lt,new Lt],o=[new Lt,new Lt,new Lt];return i.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((n,a)=>{let s=o[a],l=ju.lerp(n.length(),s.length(),e);n.lerp(s,e).setLength(l)}),new pn().makeBasis(r[0],r[1],r[2])}var Lb=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),a=t?.shapeData??Ba.create({parameters:{...nn,width:typeof nn.width=="number"?nn.width:100,height:typeof nn.height=="number"?nn.height:100}}).userData.shape;return{path:i.path??ga.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:n,extrusion:{...Xc,...e.extrusion}}),shapeData:a}}static build(i){if(i.path.points.length>=2){let e=new Uf(i);return Object.assign(e,{userData:{...i,type:"PathGeometry"}})}else return Object.assign(new Rb,{userData:{...i,type:"PathGeometry"}})}},Uf=class extends Rb{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!Eb(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:n}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(n*a),l=this.inputs.path.isClosed?Math.ceil((o+n)*a):Math.ceil(Math.min(1,o+n)*a),c=Math.min(Math.max(2,l-s+1),a+2),u=[],d=[];for(let j=0;j<c;j++){let F=this.inputs.path.isClosed?(j+s)%e.length:Math.min(j+s,e.length-1);u.push(e[F].clone()),d.push(r[F].clone())}let p=(j,F,H)=>{u[j]=u[j].clone().lerp(u[F],H),d[j]=hE(d[j],d[F],H)},f=0,h=n*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||n===0)&&(f=h,p(0,1,f));let m=0,y=(n+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&n+o<1)&&y&&(m=y,p(u.length-1,u.length-2,1-m)),o===0){let j=u.length-1;u[j].copy(u[0]),d[j].copy(d[0])}this._applyPathModifiers(d,f,m);let{bevel:g,bevelSides:b}=this.inputs.parameters.extrusion,w=g>0?this.inputs.parameters.extrusion.capType:"flat",P=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(P=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:S,infos:T,vertices:A}=this._computeShapePoints(P),x=0,N;w==="round"&&(N=new Oi(this.inputs.shapeData,2*g,g,P,b,void 0,!0),x=N.getAttribute("position").count);let E=0,M=0;T.sort((j,F)=>j.start-F.start),T.forEach(j=>{j.verticesStart=E,j.verticesCount=j.continuous.reduce((F,H,W)=>F+(W===0||!H?2:1),0),M+=j.verticesCount,E=M});let D=M*c,_,R=0;if(this._isOpenEnded()&&w==="flat"){try{_=kr({windingRule:je.ODD,elementType:ct.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:S})}catch{_=Af}R=_.vertexCount}let V=D+2*R+x*2,U=D+2*R,B={positions:new Float32Array(V*3),normals:new Float32Array(V*3),uvs:new Float32Array(V*2)},q=[];if(T.forEach(j=>{this._extrudeRegion(j,A,d,u,B,q,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,D,q,B,d[0],u[0],!1),this._closeEnd(_,D+R,q,B,d[d.length-1],u[u.length-1],!0)),N){B.positions.set(N.getAttribute("position").array,U*3),B.normals.set(N.getAttribute("normal").array,U*3),B.uvs.set(N.getAttribute("uv").array,U*2);for(let W=U;W<U+x;W++)B.uvs[W*2+1]=1e-4;let j=q.length;q.push(...N.getIndex().array.map(W=>W+U)),U+=x,B.positions.set(N.getAttribute("position").array,U*3),B.normals.set(N.getAttribute("normal").array,U*3),B.uvs.set(N.getAttribute("uv").array,U*2);let F=q.length;q.push(...N.getIndex().array.map(W=>W+U)),this.setAttribute("position",new ja(B.positions,3)),this.setAttribute("normal",new ja(B.normals,3)),this.setAttribute("uv",new ja(B.uvs,2)),this.setIndex(q);let H=pE;H.copy(d[d.length-1]).setPosition(u[u.length-1]),this.applyMatrix4OnRange(H,U,V),H.copy(d[0]).setPosition(u[0]).multiply(fE.makeScale(1,1,-1)),this.applyMatrix4OnRange(H,U-x,U),this.reverseIndicesOnRange(j,F)}else this.setAttribute("position",new ja(B.positions,3)),this.setAttribute("normal",new ja(B.normals,3)),this.setAttribute("uv",new ja(B.uvs,2)),this.setIndex(q)}_extractPathPoints(){let e=bu(this.inputs.path),r=this.inputs.path.subdivisions,o=this.inputs.path.subdivisionMode==="uniform"?e.getSpacedPoints(r*4):e.getPoints(r);if(o.length<2)return[];let n=[o[0]];return o.forEach(s=>{n[n.length-1].distanceToSquared(s)>.001&&n.push(s)}),this.inputs.path.isClosed&&n[n.length-1].distanceTo(n[0])<.001&&n.pop(),n}_computeBasisMatrices(e){let r=[],o=e.length,n=this.inputs.path.isClosed,a=new Lt,s=new Lt,l=new Lt,c=new Lt,u=new Lt(0,1,0);for(let y=0;y<o;y++){let g=e[y],b;y===0?b=n?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):b=e[y-1];let w;y===o-1?w=n?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):w=e[y+1];let P=g.clone().sub(b).normalize(),S=w.clone().sub(g).normalize(),T=P.clone().add(S).normalize();l.copy(T),y===0&&(T.equals(u)||T.clone().negate().equals(u))&&u.set(0,0,1);let A=u.clone().cross(T).normalize(),x=T.clone().cross(A).normalize();u.copy(x),c.copy(A),y===0&&(a.copy(x),s.copy(T));let N=new pn().makeBasis(A,x,T);r.push(N)}let d=n?s:l,p=n?a:new Lt(0,1,0),f=d.clone().cross(c).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);d.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new pn().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let n=e.length,{angle:a,twist:s,startScale:l,endScale:c}=this.inputs.parameters.extrusion,u=new pn,d=new pn;return e.forEach((p,f)=>{let h=f===0?0:f===n-1?1:(f-r)/(n-(o===0?0:1)-(r+(1-o)));u.makeRotationZ(ju.lerp(a,a+s,h)*ju.DEG2RAD);let m=ju.lerp(l,c,h);d.makeScale(m,m,m),p.multiply(u).multiply(d)}),e}_computeShapePoints(e=12,r=je.ODD){let o=this.inputs.shapeData,n=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let b=y.length-1;b>=1;b-=2){let w=y[b-1],P=y[b-0];g.push(w,P)}return g}),s;try{s=kr({windingRule:r,elementType:ct.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[n]})}catch{s=ul}let l;try{l=kr({windingRule:je.ODD,elementType:ct.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Cf}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let u=1/0,d=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,b=s.vertices[g+0],w=s.vertices[g+1];b<u&&(u=b),b>d&&(d=b),w<p&&(p=w),w>f&&(f=w)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=c,g=m*2,b=s.elements[g+0],w=s.elements[g+1],P=b+w,S={start:b,count:w,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(S);let T=b,A=P-1,x=b+1,N=o.roundedCurves.length;do{let E=T-b,M=s.vertices[A*2+0],D=s.vertices[A*2+1],_=s.vertices[T*2+0],R=s.vertices[T*2+1],V=s.vertices[x*2+0],U=s.vertices[x*2+1],B=_-M,q=R-D,j=Math.sqrt(B*B+q*q);B/=j,q/=j;let F=_-V,H=R-U,W=Math.sqrt(F*F+H*H);F/=W,H/=W,S.normals[E*2+0]=-H,S.normals[E*2+1]=F;let ee=s.vertexIndices[T];if(Array.isArray(ee))S.continuous[E]=!1;else{let[te,Y]=o.getCurveIndexFromVertexId(ee-1,!0);if(Y>0&&Y<1)S.continuous[E]=!0;else{let re=Y===1?te+1:te-1;re=(re+N)%N;let K=Y===1?0:1,J=o.roundedCurves[te].getTangent(Y),Q=o.roundedCurves[re].getTangent(K);S.continuous[E]=J.dot(Q)>.95}}y&&(S.normals[E*2+0]*=-1,S.normals[E*2+1]*=-1),[A,T,x]=[T,x,x+1],x>=P&&(x-=w)}while(x!==b+1)}return{regions:[n,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,n,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=n.x,e.normals[l+1]=n.y,e.normals[l+2]=n.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,n,a,s,l){let c=new Lt,u=new Lt,d=new Lt,p=new Lt,f=new _b;o.forEach((m,y)=>{let g=n[y],b=e.verticesStart*o.length+e.verticesCount*y;for(let w=0;w<e.count;w++){let P=(e.start+w)*2;if(c.set(r[P+0],r[P+1],0),d.copy(c).applyMatrix4(m).add(g),e.continuous[w])p.set(e.normals[w*2+0],e.normals[w*2+1],0);else{let S=w===0?(e.start+e.count-1)*2:P-2;u.set(r[S+0],r[S+1],0),p.copy(c).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(w===0?1:w/e.count,y/(o.length-1)),this._insertVertex(a,b,d,p,f),b++,!e.continuous[w]||w===0){if(w===0)p.set(e.normals[w*2+0],e.normals[w*2+1],0),f.set(0,y/(o.length-1));else{let S=w===e.count-1?e.start*2:P+2;u.set(r[S+0],r[S+1],0),p.copy(u).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,b,d,p,f),b++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),b=0;for(let w=0;w<e.count;w++){(!e.continuous[w]||w===0)&&b++;let P=w===e.count-1?0:b+1,S=y+b,T=y+P,A=g+P,x=g+b;e.isHole?s.push(S,A,T,S,x,A):s.push(S,T,A,S,A,x),b++}}}_closeEnd(e,r,o,n,a,s,l){let c=e.vertexCount,u=new Lt(0,0,l?-1:1).applyMatrix4(a),d=new Lt,p=new _b;for(let h=0;h<c;h++){let m=2*h;d.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(n,r+h,d,u,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,b=f[m+(l?2:1)]+r;o.push(y,g,b)}}applyMatrix4OnRange(e,r,o){let n=e.elements,a=new dE().getNormalMatrix(e).elements,s,l,c,u,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,h=p.array,m=d.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],c=f[y+2],u=1/(n[3]*s+n[7]*l+n[11]*c+n[15]),f[y+0]=(n[0]*s+n[4]*l+n[8]*c+n[12])*u,f[y+1]=(n[1]*s+n[5]*l+n[9]*c+n[13])*u,f[y+2]=(n[2]*s+n[6]*l+n[10]*c+n[14])*u,s=h[y+0],l=h[y+1],c=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*c,h[y+1]=a[1]*s+a[4]*l+a[7]*c,h[y+2]=a[2]*s+a[5]*l+a[8]*c}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let n=e;n<r;n+=3){let a=o.getX(n),s=o.getX(n+1),l=o.getX(n+2);o.setXYZ(n,l,s,a)}o.needsUpdate=!0}}};import{BufferAttribute as Bb,BufferGeometry as kf}from"three";import{mergeBufferGeometries as yE}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Vb(){let i=new kf;return i.setAttribute("position",new Bb(new Float32Array([]),3)),i.setIndex(new Bb(new Uint16Array([]),1)),i}var gE=Vb().attributes,xE=12,bE=1,fn=class extends kf{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,gE),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e,r)):this.updateFont(e.font,r).then(()=>{this.update(e,r),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e,r){let o=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!o?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:n,height:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:d}=e,p=vi.getDisplayedValue(u),f=d===2?p.toUpperCase():d===3?p.toLowerCase():p,h=vE(e,o,f,r),{shapes:m,charWidths:y,charCoords:g}=o.generateShapes(h,e,r),b=(typeof n=="number"?n:Number(r.getVariable(n)))*.5,w=(typeof a=="number"?a:Number(r.getVariable(a)))*.5,P=m.map(A=>new Ue().fromShape(A,!0));this.vectorShapes=P;let S=P.map(A=>rr.create({shape:A,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?je.NONZERO:je.ODD,subdivisions:this.isLowResolution&&s>0?bE:xE}})),T=S.length?yE(S):Vb();T.translate(-b,w,0),this.dispose(),this.wrappedText=h,this.charCoords=g,this.charWidths=y,this.deleteAttribute("extrudeNormal"),Object.entries(T.attributes).forEach(([A,x])=>{this.setAttribute(A,x)}),this.setIndex(T.index),this.computeBoundingSphere()}clone(){let e=At(new kf,fn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,r){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},r)}get text(){return this.userData.parameters.text??""}};function vE(i,t,e,r){let o=typeof i.width=="string"?Number(r.getVariable(i.width)):i.width,n=[""],a="";for(let s of e)a+=s,s===" "||s===`
17
17
  `?(n[n.length-1]+=a,a="",s===`
18
- `&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as Wf,BufferAttribute as jb,Uint32BufferAttribute as qf,Float32BufferAttribute as $f,Matrix4 as TE,Vector3 as gl,Sphere as CE,Box3 as AE,BoxGeometry as ME}from"three";var Gb,ku=new Promise(i=>{Gb=i}),zb=!1;var Uu;function Fb(i){if(zb)return;if(Uu)return Uu;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.12.96/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Gb(c),zb=!0}return Uu=t(),Uu}import{BufferGeometryLoader as SE}from"three";var wE=["font"];function mo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let d of c)u=u[d];for(o in u){let d=u[o];Dp(d)&&!wE.includes(o)&&(u[o]=t.getVariable(d,[r.uuid,"geometry",...c,o]),Dp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=Ue.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new SE().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new St(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new fn(n,t);if(n.type==="InputGeometry")return new fn(n,t);if(n.type==="UIGeometry")return Fa.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Hf(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=Ue.createFromState(ya.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Hf(s)}return l}import{Matrix4 as PE}from"three";var OE=new PE;function yl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=OE.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,d=o.length;u<d;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Hu=new AE,Ua=new gl,we;ku.then(i=>{we=i});var Ub=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),kb=new Uint32Array([0,1,2,3]),Hb=new Uint8Array([4]),St=class extends Wf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked.map(l=>typeof l=="number"?l:1),n=hi.div(r.map(l=>typeof l=="number"?l:0),o);if(n.every(l=>l===1))return;this.subdividedGeometry&&yl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&yl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(Ua.fromArray(n));let s=Ua.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=St.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new ME(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(St.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new CE,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Hu.setFromBufferAttribute(r),Hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Hu.getSize(Ua);let n={width:Ua.x,height:Ua.y,depth:Ua.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=St.allocate(e,n)}catch(u){console.error(u,e),a=St.allocate({positionWASM:Ub,indexWASM:kb,verticesPerFaceWASM:Hb},n)}if(we.set_destination_refinement_level(a,0),s=St.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=St.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=St.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:mo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=Qf(n.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:c}=Zf(s,u,n,d),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Ub,n=kb,a=Hb);let c=o.length,u=n.length,d=a.length,p=o.length+s.length+l.length,f=n.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=we._malloc(h),g=new Float32Array(we.HEAPF32.buffer,y,p),b=new Uint32Array(we.HEAPU32.buffer,y+m,f);g.set(o,0),g.set(s,o.length),g.set(l,o.length+s.length),b.set(n,0),b.set(a,n.length);let w;e?.scaleBaked?.some(S=>S!==1)&&(w=new TE().makeScale(...e.scaleBaked.map(S=>typeof S=="number"?S:1))),r&&(w?w.premultiply(r):w=r);let P=w?we.alloc_subdivision_surface2(y,c,y+m,u,y+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):we.alloc_subdivision_surface(y,c,y+m,u,y+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d);return we._free(y),P}static buildLevel(e,r,o,n,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),d=0,p=we.HEAPU32[c[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+u[d]);d++;let h=we.HEAPU32[c[d]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[d]);d++;let y=we.HEAPU32[c[d]>>2],g=we.HEAPU32.subarray(y>>2,(y>>2)+u[d]);d++;let b=we.HEAPU32[c[d]>>2],w=we.HEAPU32.subarray(b>>2,(b>>2)+u[d]);if(d++,n===void 0){let P=new Wf;if(P.setIndex(new qf(w,1)),P.setAttribute("position",new $f(f,3)),P.setAttribute("normal",new $f(m,3)),r){P.setAttribute("faceMap",new qf(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new jb(S,4))}return we.free_mesh_data(s),P.userData.type="SubdivGeometry",P}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],d=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=we.HEAPU32[s[c]>>2],f=we.HEAPU32.subarray(p>>2,(p>>2)+l[c]);if(r===void 0){let h=new Wf;h.setAttribute("position",new $f(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new jb(m,3)),h.setIndex(new qf(f,1)),we.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,n?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,n?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,d=we.HEAPU32[l[u]>>2],p=new Float32Array(we.HEAPF32.subarray(d>>2,(d>>2)+c[u]));u++;let f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var Wb=["getX","getY","getZ"];function Qf(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,d="";for(let p=0;p<3;p++)d+=`${~~(i[Wb[p]](u)*s)},`;if(d in e)n.push(e[d]);else{for(let p=0;p<3;p++)a.push(i[Wb[p]](u));e[d]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var Wu=new gl,Xf=new gl,Yf=new gl,Kf=new gl;function Zf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let u=0;for(let p=0;p<l.length;p+=2)u+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);i.length=0;let d=0;if(u<0)for(let p=0;p<l.length;p+=2)i.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)i.push(l[p],l[p+1],0),o.push(d++);return n.push(d),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Wu.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Xf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Yf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),Kf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Xf.sub(Wu).normalize(),Yf.sub(Wu).normalize(),Kf.sub(Wu).normalize();let l=Xf.cross(Yf).dot(Kf),c=s;Math.abs(l)>.005||r&&r.some((u,d)=>d%2===1?!1:c>=r[d]&&c<r[d+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let d=0,p=0;d<i.length;d+=3,p++)i[d+2]===0&&(l.push(p),u++),i[d+2]===a&&c.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=c[0];c[0]=c[1],c[1]=d}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Or={};Cw(Or,{calcBoolean:()=>_E,calcBooleanTopological:()=>DE,freeMeshSet:()=>VE,getMeshSet:()=>RE,hasOpenEdges:()=>LE,transformMeshSet:()=>BE});var IE,qb=new Promise(i=>{IE=i});import{Float32BufferAttribute as $b,Sphere as EE}from"three";var Ve,ka;qb.then(i=>Ve=i);function NE(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=Qf(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Zf(n,a,i);s=c.length,r=[];for(let u=0,d=0;u<s;u++){r.push(c[u]);for(let p=0;p<c[u];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function Xb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Ve._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Ve.HEAPU32.buffer,n,t):new Float32Array(Ve.HEAPF32.buffer,n,t)).set(i,0),n}function Yb(i){switch(i){case 0:return Ve.OP.UNION;case 1:return Ve.OP.INTERSECTION;case 2:return Ve.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function DE(i,t){ka===void 0&&(ka=Ve.init_csg());let e=Xb(i),r=Ve.csg_calc_topological(ka,e,i.length,Yb(t));Ve._free(e);let o=6,n=Ve.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Ve.HEAPU32[n[s]>>2],c=new Float32Array(Ve.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ve.HEAPU32[n[s]>>2],d=new Uint32Array(Ve.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let p=Ve.HEAPU32[n[s]>>2],f=new Uint8Array(Ve.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ve.free_mesh_data(r),{positions:c,indices:d,verticesPerFace:f}}function _E(i,t,e,r){ka===void 0&&(ka=Ve.init_csg());let o=Xb(i),n=Ve.csg_calc(ka,o,i.length,r,Yb(t));Ve._free(o);let a=5,s=Ve.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Ve.HEAPU32[s[c]>>2],d=Ve.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Ve.HEAPU32[s[c]>>2],f=Ve.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new $b(d,3)),e.setAttribute("normal",new $b(f,3));let m=Ve.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new EE),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ve.free_mesh_data(n),h}function RE(i,t,e){if(Ve===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let g=i.userData;n=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,w)=>b+w,0)+n);for(let b=0,w=0,P=0;b<g.verticesPerFace.length;b++){o[P++]=g.verticesPerFace[b];for(let S=0;S<g.verticesPerFace[b];S++)o[P++]=g.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=NE(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=c*Uint32Array.BYTES_PER_ELEMENT,f=Ve._malloc(u),h=new Float32Array(Ve.HEAPF32.buffer,f,l),m=new Uint32Array(Ve.HEAPU32.buffer,f+d,c);h.set(r,0),m.set(o,0);let y=Ve.get_csg_mesh(f,a,f+d,s,n);return Ve._free(f),y}function LE(i){return Ve.has_open_edges(i)}function BE(i,t){Ve.transform_csg_mesh(i,t.elements)}function VE(i){Ve.free_csg_mesh(i)}var zE={ConeGeometry:Ex,CubeGeometry:Nx,CylinderGeometry:Ix,DodecahedronGeometry:Dx,EllipseGeometry:Ba,HelixGeometry:lb,IcosahedronGeometry:cb,LatheGeometry:ub,NonParametricGeometry:vb,PolygonGeometry:zu,PyramidGeometry:Sb,RectangleGeometry:Fa,SphereGeometry:Pb,PlaneGeometry:Ob,BackdropGeometry:Tb,StarGeometry:Gu,TextFrameGeometry:Cb,TorusGeometry:Ab,TorusKnotGeometry:Mb,TriangleGeometry:Ib,PathGeometry:Lb,VectorGeometry:rr},Hf=i=>zE[i.type].create(i);function Ha(i){return i!==null&&"booleanOp"in i}var Wa=class extends Ma(FE){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new GE}updateVisible(e){super.updateVisible(e),this.visible=!Ha(this.parent)&&this.visible,Ha(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ha(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Wa&&(e.freeBooleanPointer(),Ha(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var qu=new jE;function xl(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let d=t;d<e;d++){let p=i.getX(d),f=i.getY(d),h=i.getZ(d);p<n&&(n=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>c&&(c=f),h>u&&(u=h)}qu.min.set(n,a,s),qu.max.set(l,c,u),qu.getCenter(r),qu.getSize(o).multiplyScalar(.5)}var HE=new UE,WE=new kE,It=class extends Wa{constructor(t,e){super(HE,WE),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?xl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as mD,Matrix4 as yD,Sphere as Uv,Vector3 as gD}from"three";import{BufferAttribute as pD,Float32BufferAttribute as jv,MathUtils as Ah,Vector3 as Mh}from"three";import{ShaderMaterial as kN,Texture as HN}from"three";var Wo=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Wo.uuidContext===null)throw new Error("plz startContext");Wo.uuidContext===Wo.globalContext?this.uuid="_gid"+Wo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Wo.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Wo.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},Xe=Wo;Xe.globalContext={nodeContextUuid:0},Xe.uuidContext=Wo.globalContext;import{CubeReflectionMapping as rN,CubeRefractionMapping as oN,CubeUVReflectionMapping as iN,LinearEncoding as nv,sRGBEncoding as nN}from"three";var bl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Jf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Et=new Jf;import{Vector2 as Kb}from"three";import{MathUtils as qE}from"three";var ge=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=qE.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Ye=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var ut=class extends Ye{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Kb?e:new Kb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Qb}from"three";var jt=class extends Ye{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Qb?e:new Qb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};import{Color as $E}from"three";var Nt=class extends $E{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var or=class extends Ye{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Nt?e:new Nt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var XE=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Zb=/[a-z_0-9]+/gi,Z=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let u=[];for(;s=Zb.exec(this.src);)u.push(s);for(let d=0;d<u.length;d++){let p=u[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Et.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=Et.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||Et.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+m+c.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Et.contains(m)&&e.include(Et.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=XE.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Zb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let d=s[l++];this.inputs.push({name:d,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var YE=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,eh=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||eh.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=YE.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Fe=eh;Fe.PI="PI",Fe.PI2="PI2",Fe.RECIPROCAL_PI="RECIPROCAL_PI",Fe.RECIPROCAL_PI2="RECIPROCAL_PI2",Fe.LOG2="LOG2",Fe.EPSILON="EPSILON";var KE=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
18
+ `&&n.push("")):t.getTextWidth(n[n.length-1]+a,i)>o&&(n[n.length-1].length&&n.push(""),t.getTextWidth(n[n.length-1]+a,i)>o&&(a.length===1?(n[n.length-1]+=a,a=""):(n[n.length-1]+=a.slice(0,-1),a=a[a.length-1],n.push(""))));return n[n.length-1]+=a,n}import{BufferGeometry as Wf,BufferAttribute as jb,Uint32BufferAttribute as qf,Float32BufferAttribute as $f,Matrix4 as TE,Vector3 as gl,Sphere as CE,Box3 as AE,BoxGeometry as ME}from"three";var Gb,ku=new Promise(i=>{Gb=i}),zb=!1;var Uu;function Fb(i){if(zb)return;if(Uu)return Uu;async function t(){let r=i??(!1?".":"https://unpkg.com/@splinetool/modelling-wasm@1.12.98/build"),n=import("./process.js"),[a,s]=await Promise.all([n,fetch(`${r}/process.wasm`).then(u=>u.arrayBuffer())]),l=a.default,c=await l({wasmBinary:s});Gb(c),zb=!0}return Uu=t(),Uu}import{BufferGeometryLoader as SE}from"three";var wE=["font"];function mo(i,t,e,r){let o,n,a;i.type==="PathGeometry"?(n=JSON.parse(JSON.stringify(i)),a=[[],["extrusion"]]):(n={...i},a=[[]]);for(let c of a){let u=n;for(let d of c)u=u[d];for(o in u){let d=u[o];Dp(d)&&!wE.includes(o)&&(u[o]=t.getVariable(d,[r.uuid,"geometry",...c,o]),Dp(u[o])&&(u[o]=1))}}let s={parameters:n,type:n.type};if(n.type==="PathGeometry")s.path=n.path;else if(n.type==="VectorGeometry"){let c=Ue.createFromState(n.shape,n.width,n.height);s.shape=c}else if(n.type==="NonParametricGeometry"){if(n.data.groups&&n.data.groups?.forEach(c=>c.materialIndex=Math.max(c.materialIndex??0,0)),s.geometry=new SE().parse(n),s.geometry.groups.length===0){let c=s.geometry;c.addGroup(0,Math.max(c.getIndex()?.count??0,c.getAttribute("position").count),0)}}else if(n.type==="SubdivGeometry"){let c=new St(n,e);return c.data=i,c}else{if(n.type==="TextGeometry")return new fn(n,t);if(n.type==="InputGeometry")return new fn(n,t);if(n.type==="UIGeometry")return Fa.create({parameters:{width:n.width,height:n.height,cornerRadius:n.cornerRadius,cornerType:n.cornerType}})}let l;try{l=Hf(s)}catch(c){console.error(c),console.error(`Error generating geometry with inputs: ${s}`);let u=Ue.createFromState(ya.defaultData(),100,100);s.shape=u,s.type="VectorGeometry",l=Hf(s)}return l}import{Matrix4 as PE}from"three";var OE=new PE;function yl(i,t,e,r){let o=i.position.array,n=i.normal.array,a=OE.makeScale(t,e,r).invert().elements,s,l,c;for(var u=0,d=o.length;u<d;u+=3)o[u]*=t,o[u+1]*=e,o[u+2]*=r,s=n[u],l=n[u+1],c=n[u+2],n[u]=a[0]*s+a[4]*l+a[8]*c,n[u+1]=a[1]*s+a[5]*l+a[9]*c,n[u+2]=a[2]*s+a[6]*l+a[10]*c;i.position.needsUpdate=!0,i.normal.needsUpdate=!0}var Hu=new AE,Ua=new gl,we;ku.then(i=>{we=i});var Ub=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),kb=new Uint32Array([0,1,2,3]),Hb=new Uint8Array([4]),St=class extends Wf{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked.map(l=>typeof l=="number"?l:1),n=hi.div(r.map(l=>typeof l=="number"?l:0),o);if(n.every(l=>l===1))return;this.subdividedGeometry&&yl(this.subdividedGeometry.attributes,...n),this.originalGeometry&&yl(this.originalGeometry.attributes,...n),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*n[0],height:a.height*n[1],depth:a.depth*n[2]},this.originalGeometry.boundingSphere.center.multiply(Ua.fromArray(n));let s=Ua.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=St.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new ME(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let n=this.subdividedGeometry??this.originalGeometry;Object.assign(this,n),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(St.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new CE,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;Hu.setFromBufferAttribute(r),Hu.getCenter(o),e.boundingSphere.radius=o.distanceTo(Hu.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Hu.getSize(Ua);let n={width:Ua.x,height:Ua.y,depth:Ua.z};return this.userData.parameters=n,n}static build(e,r,o,n){let a,s,l,c=e?.phongAngle??35;o===!1&&(c=-1),r&&(we.free_bvh(r),we.free_subdivision_surface(r));try{a=St.allocate(e,n)}catch(u){console.error(u,e),a=St.allocate({positionWASM:Ub,indexWASM:kb,verticesPerFaceWASM:Hb},n)}if(we.set_destination_refinement_level(a,0),s=St.buildLevel(a,!0,c),e.subdivisions>0)try{we.set_destination_refinement_level(a,e.subdivisions),l=St.buildLevel(a,!1,c)}catch{try{we.set_destination_refinement_level(a,e.subdivisions-1),l=St.buildLevel(a,!1,c)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let n=e.shape!==void 0||e.path!==void 0?r.geometry:mo(e,o,!1,r),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=n.getClosedTorusIndicesForBooleanOrSubdiv():a=n.getIndex();let s,l,c,u;({positions:s,triIndices:u}=Qf(n.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:l,verticesPerFace:c}=Zf(s,u,n,d),{positions:s,indices:l,verticesPerFace:c}}static allocate(e,r){let o,n,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,n=e.indexWASM,a=e.verticesPerFaceWASM):(o=Ub,n=kb,a=Hb);let c=o.length,u=n.length,d=a.length,p=o.length+s.length+l.length,f=n.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=we._malloc(h),g=new Float32Array(we.HEAPF32.buffer,y,p),b=new Uint32Array(we.HEAPU32.buffer,y+m,f);g.set(o,0),g.set(s,o.length),g.set(l,o.length+s.length),b.set(n,0),b.set(a,n.length);let w;e?.scaleBaked?.some(S=>S!==1)&&(w=new TE().makeScale(...e.scaleBaked.map(S=>typeof S=="number"?S:1))),r&&(w?w.premultiply(r):w=r);let P=w?we.alloc_subdivision_surface2(y,c,y+m,u,y+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):we.alloc_subdivision_surface(y,c,y+m,u,y+m+n.length*Uint32Array.BYTES_PER_ELEMENT,d);return we._free(y),P}static buildLevel(e,r,o,n,a){let s=a?we.get_mesh_data2(e,r?we.Level.CONTROL:we.Level.REFINED,o,a.elements):we.get_mesh_data(e,r?we.Level.CONTROL:we.Level.REFINED,o),l=8,c=we.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(4,4+4),d=0,p=we.HEAPU32[c[d]>>2],f=we.HEAPF32.subarray(p>>2,(p>>2)+u[d]);d++;let h=we.HEAPU32[c[d]>>2],m=we.HEAPF32.subarray(h>>2,(h>>2)+u[d]);d++;let y=we.HEAPU32[c[d]>>2],g=we.HEAPU32.subarray(y>>2,(y>>2)+u[d]);d++;let b=we.HEAPU32[c[d]>>2],w=we.HEAPU32.subarray(b>>2,(b>>2)+u[d]);if(d++,n===void 0){let P=new Wf;if(P.setIndex(new qf(w,1)),P.setAttribute("position",new $f(f,3)),P.setAttribute("normal",new $f(m,3)),r){P.setAttribute("faceMap",new qf(g,1));let S=new Float32Array(m.length/3*4).fill(0);P.setAttribute("color",new jb(S,4))}return we.free_mesh_data(s),P.userData.type="SubdivGeometry",P}n.getAttribute("position").copyArray(f),n.getAttribute("normal").copyArray(m),n.attributes.position.needsUpdate=!0,n.attributes.normal.needsUpdate=!0,we.free_mesh_data(s)}static freeSubdivPointer(e){we.free_bvh(e),we.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let n=we.get_wireframe_data_for_base_level(e),a=4,s=we.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+2),c=0,u=we.HEAPU32[s[c]>>2],d=we.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=we.HEAPU32[s[c]>>2],f=we.HEAPU32.subarray(p>>2,(p>>2)+l[c]);if(r===void 0){let h=new Wf;h.setAttribute("position",new $f(d,3));let m=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new jb(m,3)),h.setIndex(new qf(f,1)),we.free_wireframe_data_for_base_level(n),h}r.getAttribute("position").copyArray(d),r.attributes.position.needsUpdate=!0,we.free_wireframe_data_for_base_level(n)}static updateCollabMesh(e,r,o){let n=r===0;n||we.set_destination_refinement_level(e,r);let a=o?we.get_topological_data2(e,n?we.Level.CONTROL:we.Level.REFINED,o.elements):we.get_topological_data(e,n?we.Level.CONTROL:we.Level.REFINED),s=6,l=we.HEAPU32.subarray(a>>2,(a>>2)+s),c=l.subarray(3,3+3),u=0,d=we.HEAPU32[l[u]>>2],p=new Float32Array(we.HEAPF32.subarray(d>>2,(d>>2)+c[u]));u++;let f=we.HEAPU32[l[u]>>2],h=new Uint32Array(we.HEAPU32.subarray(f>>2,(f>>2)+c[u]));u++;let m=we.HEAPU32[l[u]>>2],y=new Uint8Array(we.HEAPU32.subarray(m>>2,(m>>2)+c[u]));return we.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var Wb=["getX","getY","getZ"];function Qf(i,t){let e={},r=t?t.count:i.count,o=0,n=[],a=[],s=1e4;for(let c=0;c<r;c++){let u=t?t.getX(c):c,d="";for(let p=0;p<3;p++)d+=`${~~(i[Wb[p]](u)*s)},`;if(d in e)n.push(e[d]);else{for(let p=0;p<3;p++)a.push(i[Wb[p]](u));e[d]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:a,triIndices:l}}var Wu=new gl,Xf=new gl,Yf=new gl,Kf=new gl;function Zf(i,t,e,r){let o=[],n=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),c=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&c<=24&&c%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/c;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let u=0;for(let p=0;p<l.length;p+=2)u+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);i.length=0;let d=0;if(u<0)for(let p=0;p<l.length;p+=2)i.push(l[p],l[p+1],0),o.push(d++);else for(let p=l.length-2;p>=0;p-=2)i.push(l[p],l[p+1],0),o.push(d++);return n.push(d),{indices:o,verticesPerFace:n}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((i[t[s]*3+2]===a||i[t[s]*3+2]===0)&&l++,(i[t[s+1]*3+2]===a||i[t[s+1]*3+2]===0)&&l++,(i[t[s+2]*3+2]===a||i[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Wu.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),Xf.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),Yf.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),Kf.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),Xf.sub(Wu).normalize(),Yf.sub(Wu).normalize(),Kf.sub(Wu).normalize();let l=Xf.cross(Yf).dot(Kf),c=s;Math.abs(l)>.005||r&&r.some((u,d)=>d%2===1?!1:c>=r[d]&&c<r[d+1])?(o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),n.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),n.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],c=[],u=0;for(let d=0,p=0;d<i.length;d+=3,p++)i[d+2]===0&&(l.push(p),u++),i[d+2]===a&&c.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=c[0];c[0]=c[1],c[1]=d}l.reverse(),o.push(...l,...c),n.push(u,u)}return{indices:o,verticesPerFace:n}}var Or={};Cw(Or,{calcBoolean:()=>_E,calcBooleanTopological:()=>DE,freeMeshSet:()=>VE,getMeshSet:()=>RE,hasOpenEdges:()=>LE,transformMeshSet:()=>BE});var IE,qb=new Promise(i=>{IE=i});import{Float32BufferAttribute as $b,Sphere as EE}from"three";var Ve,ka;qb.then(i=>Ve=i);function NE(i,t,e){let r,o;i.userData.parameters.type==="TorusGeometry"&&i.userData.parameters.arc===Math.PI*2?o=i.getClosedTorusIndicesForBooleanOrSubdiv():o=i.getIndex();let{positions:n,triIndices:a}=Qf(i.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:c}=Zf(n,a,i);s=c.length,r=[];for(let u=0,d=0;u<s;u++){r.push(c[u]);for(let p=0;p<c[u];p++)r.push(l[d++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=a[c++],r[u++]=a[c++],r[u++]=a[c++]}return{positions:n,faceIndices:r,nFaces:s}}function Xb(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=Ve._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Ve.HEAPU32.buffer,n,t):new Float32Array(Ve.HEAPF32.buffer,n,t)).set(i,0),n}function Yb(i){switch(i){case 0:return Ve.OP.UNION;case 1:return Ve.OP.INTERSECTION;case 2:return Ve.OP.A_MINUS_B;default:throw new Error("Unknown boolean operation "+i)}}function DE(i,t){ka===void 0&&(ka=Ve.init_csg());let e=Xb(i),r=Ve.csg_calc_topological(ka,e,i.length,Yb(t));Ve._free(e);let o=6,n=Ve.HEAPU32.subarray(r>>2,(r>>2)+o),a=n.subarray(3,3+3),s=0,l=Ve.HEAPU32[n[s]>>2],c=new Float32Array(Ve.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let u=Ve.HEAPU32[n[s]>>2],d=new Uint32Array(Ve.HEAPU32.subarray(u>>2,(u>>2)+a[s]));s++;let p=Ve.HEAPU32[n[s]>>2],f=new Uint8Array(Ve.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ve.free_mesh_data(r),{positions:c,indices:d,verticesPerFace:f}}function _E(i,t,e,r){ka===void 0&&(ka=Ve.init_csg());let o=Xb(i),n=Ve.csg_calc(ka,o,i.length,r,Yb(t));Ve._free(o);let a=5,s=Ve.HEAPU32.subarray(n>>2,(n>>2)+a),l=s.subarray(2,2+3),c=0,u=Ve.HEAPU32[s[c]>>2],d=Ve.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=Ve.HEAPU32[s[c]>>2],f=Ve.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let h=l[c];e.setAttribute("position",new $b(d,3)),e.setAttribute("normal",new $b(f,3));let m=Ve.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new EE),e.boundingSphere.center.set(m[0],m[1],m[2]),e.boundingSphere.radius=(m[3]**2+m[4]**2+m[5]**2)**.5,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ve.free_mesh_data(n),h}function RE(i,t,e){if(Ve===void 0)return-1;let r,o,n;if(t&&i.userData.positions!==void 0){let g=i.userData;n=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,w)=>b+w,0)+n);for(let b=0,w=0,P=0;b<g.verticesPerFace.length;b++){o[P++]=g.verticesPerFace[b];for(let S=0;S<g.verticesPerFace[b];S++)o[P++]=g.indices[w++]}}else({positions:r,faceIndices:o,nFaces:n}=NE(i,t,e));let a=r.length,s=o.length,l=r.length,c=o.length,u=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,d=l*Float32Array.BYTES_PER_ELEMENT,p=c*Uint32Array.BYTES_PER_ELEMENT,f=Ve._malloc(u),h=new Float32Array(Ve.HEAPF32.buffer,f,l),m=new Uint32Array(Ve.HEAPU32.buffer,f+d,c);h.set(r,0),m.set(o,0);let y=Ve.get_csg_mesh(f,a,f+d,s,n);return Ve._free(f),y}function LE(i){return Ve.has_open_edges(i)}function BE(i,t){Ve.transform_csg_mesh(i,t.elements)}function VE(i){Ve.free_csg_mesh(i)}var zE={ConeGeometry:Ex,CubeGeometry:Nx,CylinderGeometry:Ix,DodecahedronGeometry:Dx,EllipseGeometry:Ba,HelixGeometry:lb,IcosahedronGeometry:cb,LatheGeometry:ub,NonParametricGeometry:vb,PolygonGeometry:zu,PyramidGeometry:Sb,RectangleGeometry:Fa,SphereGeometry:Pb,PlaneGeometry:Ob,BackdropGeometry:Tb,StarGeometry:Gu,TextFrameGeometry:Cb,TorusGeometry:Ab,TorusKnotGeometry:Mb,TriangleGeometry:Ib,PathGeometry:Lb,VectorGeometry:rr},Hf=i=>zE[i.type].create(i);function Ha(i){return i!==null&&"booleanOp"in i}var Wa=class extends Ma(FE){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new GE}updateVisible(e){super.updateVisible(e),this.visible=!Ha(this.parent)&&this.visible,Ha(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ha(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Wa&&(e.freeBooleanPointer(),Ha(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Ha(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var qu=new jE;function xl(i,t=0,e=i.count,r,o){let n=1/0,a=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let d=t;d<e;d++){let p=i.getX(d),f=i.getY(d),h=i.getZ(d);p<n&&(n=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>c&&(c=f),h>u&&(u=h)}qu.min.set(n,a,s),qu.max.set(l,c,u),qu.getCenter(r),qu.getSize(o).multiplyScalar(.5)}var HE=new UE,WE=new kE,It=class extends Wa{constructor(t,e){super(HE,WE),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?xl(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};import{Box3 as mD,Matrix4 as yD,Sphere as Uv,Vector3 as gD}from"three";import{BufferAttribute as pD,Float32BufferAttribute as jv,MathUtils as Ah,Vector3 as Mh}from"three";import{ShaderMaterial as kN,Texture as HN}from"three";var Wo=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};if(Wo.uuidContext===null)throw new Error("plz startContext");Wo.uuidContext===Wo.globalContext?this.uuid="_gid"+Wo.uuidContext.nodeContextUuid++:this.uuid="_uid"+Wo.uuidContext.nodeContextUuid++,this.type=t,this.name=""}static startContext(t){this.uuidContext===null||this.uuidContext===Wo.globalContext?this.uuidContext=t:console.error("Can't start context twice")}static endContext(t){this.uuidContext!==t&&console.error("Can't end context twice"),this.uuidContext=null}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,a){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}},Xe=Wo;Xe.globalContext={nodeContextUuid:0},Xe.uuidContext=Wo.globalContext;import{CubeReflectionMapping as rN,CubeRefractionMapping as oN,CubeUVReflectionMapping as iN,LinearEncoding as nv,sRGBEncoding as nN}from"three";var bl=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var Jf=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Et=new Jf;import{Vector2 as Kb}from"three";import{MathUtils as qE}from"three";var ge=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=qE.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,s.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),a,this.getLabel()).name}};var Ye=class extends ge{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,a,s){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,a,s,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,a,s,this.getLabel())),e.format(l.fragment.name,n,r))}};var ut=class extends Ye{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Kb?e:new Kb(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};import{Vector3 as Qb}from"three";var jt=class extends Ye{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Qb?e:new Qb(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};import{Color as $E}from"three";var Nt=class extends $E{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}equals(e){return super.equals(e)&&this.a===e.a}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let n,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(n=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(n[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(n=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(n[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var or=class extends Ye{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Nt?e:new Nt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var XE=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Zb=/[a-z_0-9]+/gi,Z=class extends ge{constructor(e,r,o,n,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,a){let s,l=0,c=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let u=[];for(;s=Zb.exec(this.src);)u.push(s);for(let d=0;d<u.length;d++){let p=u[d],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Et.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=Et.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||Et.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+m+c.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Et.contains(m)&&e.include(Et.get(m))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let a=XE.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Zb);if(s){let l=0;for(;l<s.length;){let c=s[l++],u;c==="in"||c==="out"||c==="inout"?u=s[l++]:(u=c,c="");let d=s[l++];this.inputs.push({name:d,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var YE=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,eh=class extends ge{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||eh.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,a){this.src=e||"";let s,l,c="",u=YE.exec(e);this.useDefine=a??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],s=u[2],c=u[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,a){return e.format(this.name,this.getType(e),r)}},Fe=eh;Fe.PI="PI",Fe.PI2="PI2",Fe.RECIPROCAL_PI="RECIPROCAL_PI",Fe.RECIPROCAL_PI2="RECIPROCAL_PI2",Fe.LOG2="LOG2",Fe.EPSILON="EPSILON";var KE=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
19
19
  )*?)}`,"gim"),QE=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),qa=class extends ge{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=KE.exec(e);if(r){let o=r[2],n;for(;n=QE.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var $a=class extends ge{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};Et.addKeyword("uv",function(){return new $a});Et.addKeyword("uv2",function(){return new $a(1)});import{LinearEncoding as ZE,sRGBEncoding as JE}from"three";var hn=class extends ge{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??hn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ZE:return["Linear"];case JE:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),a=hn.Nodes[this.method],s=e.include(a);if(s===hn.LINEAR_TO_LINEAR)return e.format(o,n,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",n,r)}else return e.format(s+"( "+o+" )",n,r)}fromEncoding(e){let r=hn.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=hn.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},Kt=hn;Kt.Nodes={LinearToLinear:new Z(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
20
20
  `)),sRGBToLinear:new Z(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
21
21
  `)),LinearTosRGB:new Z(["vec4 LinearTosRGB( 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.w );","}"].join(`
@@ -1873,7 +1873,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1873
1873
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1874
1874
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1875
1875
  return displaced_position;
1876
- }`,[e,r])}}();var Me={normalRenderTarget:new Qt,normalRenderTargetDepth:new Qt,transmissionRenderTarget:new Qt,aspectRatio:new ut,transmissionSize:new ut(2048,2048),transmissionRenderTargetDepth:new Qt,aoRenderTarget:new Qt,aoEnabled:new dt,pixelRatioNode:new se(1),resolution:new ut,penumbraSize:new Wr(5,.5),frameIndex:new Le(0),transmissionLod:new Le(2),taaEnabled:new dt(!0)};for(let i of Object.values(Me))i.isRenderGlobal=!0;var fv={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.12.96/build/ui.wasm"};var qo=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new qe(bt),this.shadingAlpha=new se(1),this.shadingBlend=new Le(0),this.previousModelViewMatrix=new Ut,this.previouseProjectionMatrix=new Ut}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(mN.merge([hN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1876
+ }`,[e,r])}}();var Me={normalRenderTarget:new Qt,normalRenderTargetDepth:new Qt,transmissionRenderTarget:new Qt,aspectRatio:new ut,transmissionSize:new ut(2048,2048),transmissionRenderTargetDepth:new Qt,aoRenderTarget:new Qt,aoEnabled:new dt,pixelRatioNode:new se(1),resolution:new ut,penumbraSize:new Wr(5,.5),frameIndex:new Le(0),transmissionLod:new Le(2),taaEnabled:new dt(!0)};for(let i of Object.values(Me))i.isRenderGlobal=!0;var fv={skiaWasmUrl:"https://unpkg.com/@splinetool/ui-wasm@1.12.98/build/ui.wasm"};var qo=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new qe(bt),this.shadingAlpha=new se(1),this.shadingBlend=new Le(0),this.previousModelViewMatrix=new Ut,this.previouseProjectionMatrix=new Ut}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Me.frameIndex}),e.mergeUniform({resolution:Me.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(mN.merge([hN.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
1877
1877
  `));let n=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
1878
1878
  #include <skinbase_vertex>
1879
1879
  #include <skinnormal_vertex>
@@ -2282,7 +2282,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
2282
2282
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
2283
2283
  }
2284
2284
  `),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d&&p.push(`gl_FragColor.a *= ${d.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
2285
- `)}return r}};import{VideoTexture as vN,Texture as SN}from"three";var Qu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.cleanupTimer=null;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev,e.next=null,e.prev=null,e.data=null)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,this.cleanupTimer=setTimeout(()=>{this.hasClean=!1,this.cleanupTimer=null,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;){this.dispose(e.src,e.data),this.cache.delete(e.src);let r=e;e=e.next,e.prev=this.head,this.head.next=e,r.next=null,r.prev=null,r.data=null}this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}disposeAll(){this.cleanupTimer!==null&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=null),this.hasClean=!1,this.cache.forEach((t,e)=>{this.dispose(e,t.data),t.next=null,t.prev=null,t.data=null}),this.cache.clear(),this.head.next=this.tail,this.tail.prev=this.head}destroy(){this.disposeAll(),this.head=null,this.tail=null}};var hh=class extends Qu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},fh;function gv(i){return typeof i=="string"?i:(fh||(fh=new hh),fh.load(i))}var Zu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Ju=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ds=class extends Zu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=gv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new vN(this.img,void 0,e,e):a=new SN(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var mr=class extends ds{};import{Vector2 as Xo,Vector3 as bo,Vector4 as ed}from"three";function kt(i,t){return t.color(i)}function xv(i,t){switch(i.type){case"fresnel":return ON(i,t);case"gradient":return TN(i,t);case"depth":return CN(i,t);case"normal":return AN(i,t);case"noise":return MN(i,t);case"rainbow":return IN(i,t);case"toon":return EN(i,t);case"outline":return NN(i,t);case"transmission":return DN(i,t);case"pattern":return _N(i,t);case"color":default:return PN(i,t)}}function wN(i){return{type:i.type}}function $r(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...wN(i),alpha:n,mode:r,isMask:o}}function PN(i,t){return{...$r(i,t),color:kt(i.color,t)}}function ON(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...$r(i,t),color:kt(a,t),bias:e,scale:r,intensity:o,factor:n}}function TN(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...$r(i,t),gradientType:e,smooth:r,colors:o.map(c=>new ed(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new Xo(...s.map(c=>typeof c=="number"?c:0)),morph:new Xo(...l.map(c=>typeof c=="number"?c:0)),angle:a}}function CN(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:d}=i;return{...$r(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new bo(...s),direction:l?new bo(...l):new bo(1,0,0),colors:c.map(p=>p!==void 0?new ed(p[0],p[1],p[2],p[3]):new ed(0,0,0,0)),steps:u.slice(0,c.length),smooth:d}}function AN(i,t){let{cnormal:e}=i;return{...$r(i,t),cnormal:new bo(e[0],e[1],e[2])}}function MN(i,t){return{...$r(i,t),scale:i.scale,move:i.move,fA:new Xo(...i.fA.map(e=>typeof e=="number"?e:0)),fB:new Xo(...i.fB.map(e=>typeof e=="number"?e:0)),size:new bo(...i.size),distortion:new Xo(...i.distortion.map(e=>typeof e=="number"?e:0)),colorA:kt(i.colorA,t),colorB:kt(i.colorB,t),colorC:kt(i.colorC,t),colorD:kt(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function IN(i,t){return{...$r(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new bo(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new bo(...i.offset)}}function EN(i,t){return{...$r(i,t),positioning:i.positioning,colors:i.colors.map(e=>new ed(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new bo(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:kt(i.shadowColor,t),offset:new bo(...i.offset)}}function NN(i,t){return{...$r(i,t),outlineColor:kt(i.outlineColor,t),contourColor:kt(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new bo(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function DN(i,t){return{...$r(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function _N(i,t){return{...$r(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new Xo(...i.offset.map(e=>typeof e=="number"?e:0)),colorA:kt(i.colorA,t),colorB:kt(i.colorB,t),frequency:new Xo(...i.frequency.map(e=>typeof e=="number"?e:0)),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new Xo(...i.vertical.map(e=>typeof e=="number"?e:0)),horizontal:new Xo(...i.horizontal.map(e=>typeof e=="number"?e:0)),sides:i.sides}}var Mi=class extends Nt{};import{MathUtils as RN,Vector4 as LN}from"three";var BN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},VN={depth:["colors"]};function zN(i,t,e){if(t==="isMask")return!0;let r=BN[i.type],o=VN[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function mh(i,t){if(Array.isArray(t)){if(!Array.isArray(i)||i.length!==t.length)return!1;for(let[o,n]of t.entries()){let a=i[o];if(typeof n=="string"||typeof n=="number"&&typeof a=="string")return!0}return!1}let e=typeof i=="string",r=typeof t=="string";return e!==r||e&&r}function Cl(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof mr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof mr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(Se(n.rotation??0,t)??0)*RN.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];if(!s)return o;if("repeat"in n){let l=n.repeat;mh(e.data.texture.repeat,l)&&(o=!0),s.repeat=ps(l,t).map((c,u)=>typeof l[u]=="string"?1/c:c)}if("offset"in n){let l=n.offset;mh(e.data.texture.offset,l)&&(o=!0),s.offset=ps(l,t).map((c,u)=>typeof l[u]=="string"?-c:c)}if("rotation"in n){let l=e.data.texture.rotation,c=n.rotation??0;(l===void 0||mh(l,c))&&(o=!0),s.rotation=Se(c,t)??0}s.updateMatrix()}return o}function bv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(yh(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Ci))switch(o=o||zN(e,n,a),s.constructor){case qe:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Mi?s.value=new Nt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case or:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Mi?s.value=new Nt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case ut:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case jt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Qt:{Cl(a,t,e);break}case qr:{s.value=a.map(l=>new LN(...l));break}default:{s.value=a;break}}}return o}var Ei=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Se=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Ii=(i,t)=>(i||(i=new vn),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i.z=Se(i.z,t)??0,i),Yo=(i,t)=>(i||(i=new Xr),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i),ps=(i,t)=>{let e=i.map(r=>Se(r,t)??0);return[e[0],e[1]]},Ni=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)yh(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Zt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new yn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Yu(n),l=new Ku(ps(r.texture.repeat,o),ps(r.texture.offset,o),Se(r.texture.rotation??0,o)),c=new se(r.crop?1:0),u=new Le(r.projection??0),d=new Le(["x","y","z"].indexOf(r.axis)??0),p=new Le(r.side??0),f=new ut(r.size?new Xr(...ps(r.size,o)):new Xr(100,100)),h=new se(r.blending??0),m=new se(Ei(r.alpha,o)),y=new Le(r.mode??0),g=new dt(r.isMask??!1),b=new Ai(a,s,c,u,d,p,f,h,l,m,y,g),w=new ke(b.calpha,"f");return new it(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,w,g,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new yn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ei(r.alpha,o)),l=new Le(r.mode??0),c=new dt(r.isMask??!1),u=new se((Se(r.texture.rotation??0,o)??0)*GN.DEG2RAD),d=new os(a,s,l,c,u),p=new ke(d.calpha,"f");return new it(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},d,l,p,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new jt(new vn(...r.offset.map(g=>Se(g,o)??0))),a=new se(Se(r.scale,o)??10),s=new se(Se(r.intensity,o)??8),l=new se(Se(r.movement,o)??1),c=new Le(r.noiseType??0),u=new Le(r.voronoiStyle??0),d=new se(Se(r.smoothness,o)??.5),p=new se(Se(r.seed,o)??0),f=new se(Se(r.highCut,o)??1),h=new se(Se(r.lowCut,o)??0),m=new Le(Se(r.quality,o)??1),y=new us(s,l,n,u,d,p,f,h,m,a,c);return new Al(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return UN(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let d=s[c];if(typeof u=="string"||typeof u=="number"&&typeof d=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):bv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Cl(o.props,r.shared,this)||n:!0;return n}dispose(){if(FN(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof mr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},it=class extends Ni{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Al=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Zt=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ei(o.alpha,n)),l=new Le(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ei(o.alphaOverride,n)),d;if(!o.visible)a=new qo,d={};else if(o.category==="lambert"){a=new wl;let p=new qe(n.color(o.emissive)??0),f=new dt(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Tl;let p=new se(o.shininess??30),f=new qe(n.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Ol;let p=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new dt(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Pl;let p=new se(o.shininess??30),f=new qe(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new dt(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Zt(e,r,o,a,d,n)}get category(){return this.node.category}};function FN(i){let t=i instanceof Ni?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Tr(i){return{alpha:new se(i.alpha??1),mode:new Le(i.mode??0),isMask:new dt(i.isMask??!1)}}function jN(i,t,e,r,o){switch(i.type){case"color":{let n=new qe(r.color??bt),a=Tr(r),s=new gn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new qe(r.color??16777215),a=new se(Se(r.bias,o)??.1),s=new se(Se(r.scale,o)??1),l=new se(Se(r.intensity,o)??2),c=new se(Se(r.factor,o)??1),u=Tr(r),d=new Sl(n,a,s,l,c,u.alpha,u.mode,u.isMask),p=new ke(d.calpha,"f");return new it(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},d,u.mode,p,u.isMask,o)}case"rainbow":{let n=new se(Se(r.filmThickness,o)??30),a=new se(Se(r.movement,o)??0),s=new jt(Ii(r.wavelengths,o)),l=new se(Se(r.noiseStrength,o)??0),c=new se(Se(r.noiseScale,o)??1),u=new jt(Ii(r.offset,o)),d=Tr(r),p=new ss(n,a,s,l,c,u,d.alpha,d.isMask),f=new ke(p.calpha,"f");return new it(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let n=new se(Se(r.thickness??10,o)),a=new se(Se(r.ior??1.5,o)),s=new se(Se(r.roughness??.5,o)),l=Me.transmissionSize,c=Me.transmissionRenderTarget,u=Me.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new ut(p/d,1):new ut(1,d/p),h=Tr(r),m=new cs(n,a,s,l,c,u,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Le(r.positioning??0),a;r.colors?a=new qr(r.colors.length,r.colors):(a=new qr(10,new fs(0,0,0,1)),a.value[1]=new fs(1,1,1,1));let s;r.steps?s=new Wr(r.steps.length,r.steps):(s=new Wr(10,1),s.value[0]=0);let l=new jt(Ii(r.source??new vn(0,0,0),o)),c=new dt(r.isWorldSpace??!0),u=new se(Se(r.noiseStrength??0,o)),d=new se(Se(r.noiseScale??1,o)),p=new or(r.shadowColor),f=new jt(Ii(r.offset??new vn(0,0,0),o)),h=Tr(r),m=new ls(n,a,s,l,c,u,d,p,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new qe(r.outlineColor??16777215),a=new qe(r.contourColor??16777215),s=new se(Se(r.outlineWidth??.1,o)),l=new se(Se(r.contourWidth??.1,o)),c=new se(Se(r.outlineThreshold??.1,o)),u=new se(Se(r.contourThreshold??.1,o)),d=new se(Se(r.outlineSmoothing??.1,o)),p=new se(Se(r.contourFrequency??.1,o)),f=new jt(Ii(r.contourDirection??new vn(0,1,0),o)),h=new dt(r.positionalLines??!1),m=new dt(r.compensation??!0),y=Me.normalRenderTarget,g=Me.normalRenderTargetDepth,b=Me.pixelRatioNode,w=Me.resolution,P=Tr(r),S=new ns(n,a,s,l,c,u,d,p,f,h,m,w,y,g,b,P.alpha),T=new ke(S.calpha,"f");return new it(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...P},S,P.mode,T,P.isMask,o)}case"depth":{let n=new Le(r.gradientType??0),a=new dt(r.smooth??!1),s=new se(Se(r.near,o)??50),l=new se(Se(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),d=new jt(Ii(r.origin,o)),p=new jt(Ii(r.direction,o)),f;r.colors?f=new qr(r.colors.length,r.colors):(f=new qr(2,new fs(0,0,0,1)),f.value[1]=new fs(1,1,1,1));let h;r.steps?h=new Wr(r.steps.length,r.steps):(h=new Wr(2,1),h.value[0]=0);let m=Tr(r),y=new ts(n,a,s,l,c,u,d,p,f,h,m.alpha,m.isMask),g=new ke(y.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let n=new se(Se(r.scale,o)??1),a=new jt(Ii(r.size??new vn(100,100,100),o)),s=new se(Se(r.move,o)??1),l=new ut(Yo(r.fA??new Xr(1.7,9.2),o)),c=new ut(Yo(r.fB??new Xr(8.3,2.8),o)),u=new ut(Yo(r.distortion??new Xr(1,1),o)),d=new or(r.colorA),p=new or(r.colorB),f=new or(r.colorC),h=new or(r.colorD),m=new Le(r.noiseType??0),y=new Le(r.voronoiStyle??0),g=new se(Se(r.highCut,o)??1),b=new se(Se(r.lowCut,o)??0),w=new se(Se(r.smoothness,o)??.5),P=new se(Se(r.seed,o)??.5),S=new Le(r.quality??1),T=Tr(r),A=new is(n,a,s,l,c,u,d,p,f,h,T.alpha,m,T.isMask,y,g,b,w,P,S),x=new ke(A.calpha,"f");return new it(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:b,smoothness:w,seed:P,quality:S},A,T.mode,x,T.isMask,o)}case"normal":{let n=new jt(r.cnormal??new vn(1,1,1)),a=Tr(r),s=new Ja(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Le(r.gradientType??0),a=new dt(r.smooth??!1),s;r.colors?s=new qr(r.colors.length,r.colors):(s=new qr(10,new fs(0,0,0,1)),s.value[1]=new fs(1,1,1,1));let l;r.steps?l=new Wr(r.steps.length,r.steps):(l=new Wr(10,1),l.value[0]=0);let c=new ut(Yo(r.offset??new Xr(0,0),o)),u=new ut(Yo(r.morph??new Xr(0,0),o)),d=new se(Se(r.angle??0,o)),p=Tr(r),f=new rs(n,a,s,l,c,u,d,p.alpha,p.isMask),h=new ke(f.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let n=new Le(r.style??0),a=new Le(r.projection??0),s=new Le(["x","y","z"].indexOf(r.axis)??0),l=new se(Se(r.blending??0,o)),c=new ut(Yo(r.offset,o)),u=new or(r.colorA),d=new or(r.colorB),p=new ut(Yo(r.frequency??new Xr(10,10),o)),f=new se(Se(r.size??.5,o)),h=new se(Se(r.variation??0,o)),m=new se(Se(r.smoothness??.5,o)),y=new se(Se(r.zigzag??0,o)),g=new se(Se(r.rotation??0,o)),b=new ut(Yo(r.vertical??new Xr(0,1),o)),w=new ut(Yo(r.horizontal??new Xr(0,1),o)),P=new Le(r.sides??6),S=Tr(r),T=new as(n,a,s,l,c,u,d,p,f,h,m,y,g,b,w,P,S.alpha,S.isMask),A=new ke(T.calpha,"f");return new it(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:w,sides:P,...S},T,S.mode,A,S.isMask,o)}default:{let n=new qe(1,0,0,1),a=Tr(r),s=new gn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function UN(i,t,e,r){let o=xv(e,r);return jN(e,i,t,o,r)}function yh(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Se(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ei(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function nr(i,t,e,r,o,n,a=[]){let s=e;for(let l of a)l in s&&(s=s[l]);for(let l of i)l in s&&o.getVariable(s[l],["material",n,"layer",r,...a,String(l)]);for(let l of t)l in s&&s[l].forEach((c,u)=>{o.getVariable(c,["material",n,"layer",r,...a,String(l),u===0?"x":u===1?"y":"z"])})}function td(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var ar=class extends kN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},rd=class extends ar{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Sn=class extends ar{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,Xe.startContext(this),this.reset0(e,r),Xe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new rd(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){Xe.startContext(this),(this.data!==e||o)&&this.reset0(e,r),Xe.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Ct.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ni.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=td(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=td(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.transparent=td(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3],u=e[4];if(l instanceof HN){let d=l[c],p;typeof d=="number"?p=Number(r):d.isVector2&&(p=d.toArray(),u==="x"?p[0]=Number(r):u==="y"&&(p[1]=Number(r))),Cl({[c]:p},o.shared,s);return}(c==="x"||c==="y"||c==="z")&&l.isVector3||(c==="x"||c==="y")&&l.isVector2?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"?o.data.displacementType==="noise"?nr(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],o.data,o.id,e.shared,this.uuid):nr(["intensity"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="depth"?nr(["near","far"],["origin","direction"],o.data,o.id,e.shared,this.uuid):o.data.type==="fresnel"?nr(["bias","scale","intensity","factor"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="rainbow"?nr(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],o.data,o.id,e.shared,this.uuid):o.data.type==="noise"?nr(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],o.data,o.id,e.shared,this.uuid):o.data.type==="pattern"?nr(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],o.data,o.id,e.shared,this.uuid):o.data.type==="outline"?nr(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],o.data,o.id,e.shared,this.uuid):o.data.type==="toon"?nr(["noiseStrength","noiseScale"],["offset","source"],o.data,o.id,e.shared,this.uuid):o.data.type==="transmission"?nr(["roughness","thickness","ior"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="texture"||o.data.type==="video"?(nr([],["size"],o.data,o.id,e.shared,this.uuid),nr(["rotation"],["repeat","offset"],o.data,o.id,e.shared,this.uuid,["texture"])):o.data.type==="gradient"?nr(["angle"],["offset","morph"],o.data,o.id,e.shared,this.uuid):o.data.type==="matcap"&&nr(["rotation"],[],o.data,o.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Zt),this.lightLayer===void 0&&(this.lightLayer=new Zt(0,"",{...gt.defaultData("light","phong"),visible:!1},new qo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Zt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof it&&s.color instanceof Ai&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(Xe.startContext(this),r!==void 0?this.data=r:r=this.data,this.transparent=td(r,o.shared),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ei(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ei(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);Xe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof it?r.color.mask=void 0:r instanceof Zt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof it&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Zt?n.node.mask=new Bt(r.color,r.alpha,Bt.MUL):n instanceof it&&(n.isMask.value||(n.color.mask=new Bt(r.color,r.alpha,Bt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof it),r=this.layers.findIndex(o=>o instanceof Zt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof it){if(a.isMask.value)continue;o=new Za(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ke("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Zt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof it){if(n.isMask.value)continue;e=new Za(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Al);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Bt(r,e[o].position,Bt.ADD),r=new Bt(r,new se(.5).setReadonly(!0),Bt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Ka;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof it){let r=e.params.texture;if(r instanceof yn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(ar.prototype,{properties:{get:function(){return this.fragment.properties}}});var wn=class extends Sn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var vv=new Map;function Sv(i){if(typeof i=="string")return i;let t=vv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},vv.set(i,t)),t.url}var WN,wv=new Promise(i=>{WN=i});var Pv;wv.then(i=>Pv=i);var Pn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:Sv(t),format:"wav"},this.sound=new Pv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as qN,Vector2 as On,Path as Ov,Shape as $N,ShapeUtils as XN,Color as YN}from"three";var od=class{constructor(){this.type="ShapePath";this.color=new YN;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new Ov,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let w=m.x,P=y.x,S=g.x,T=b.x,A=m.y,x=y.y,N=g.y,E=b.y,M=(T-S)*(A-N)-(E-N)*(w-S),D=(P-w)*(A-N)-(x-A)*(w-S),_=(E-N)*(P-w)-(T-S)*(x-A),R=M/_,V=D/_;if(_===0&&M!==0||R<=0||R>=1||V<0||V>1)return null;if(M===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?g:b,m,y),r.loc===e.ORIGIN){let B=U===0?g:b;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(P-w)).toPrecision(10),q=+(A+r.t*(x-A)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?g:b,m,y),r.loc===e.ORIGIN){let j=q===0?g:b;return{x:j.x,y:j.y,t:r.t}}let U=+(w+R*(P-w)).toPrecision(10),B=+(A+R*(x-A)).toPrecision(10);return{x:U,y:B,t:R}}}function n(m,y,g){let b=g.x-y.x,w=g.y-y.y,P=m.x-y.x,S=m.y-y.y,T=b*S-P*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(b*P<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+w*w)<Math.sqrt(P*P+S*S)){r.loc=e.BEYOND;return}let A;b!==0?A=P/b:A=S/w,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],b=[];for(let w=1;w<m.length;w++){let P=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let A=y[T-1],x=y[T],N=o(P,S,A,x);N!==null&&g.find(E=>E.t<=N.t+Number.EPSILON&&E.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),b.push(new On(N.x,N.y)))}}return b}function s(m,y,g){let b=new On;y.getCenter(b);let w=[];return g.forEach(P=>{P.boundingBox.containsPoint(b)&&a(m,P.points).forEach(T=>{w.push({identifier:P.identifier,isCW:P.isCW,point:T})})}),w.sort((P,S)=>P.point.x-S.point.x),w}function l(m,y,g,b,w){(w==null||w==="")&&(w="nonzero");let P=new On;m.boundingBox.getCenter(P);let S=[new On(g,P.y),new On(b,P.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];T.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let N=A[0].point.x,E=[],M=0;for(;M<x.length&&x[M].point.x<N;)E.length>0&&E[E.length-1]===x[M].identifier?E.pop():E.push(x[M].identifier),M++;if(E.push(m.identifier),w==="evenodd"){let D=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(w==="nonzero"){let D=!0,_=null,R=null;for(let V=0;V<E.length;V++){let U=E[V];y[U]&&(D?(R=y[U].isCW,D=!1,_=U):R!==y[U].isCW&&(R=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,w=-999999999,P=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<b&&(b=T.y),T.x>w&&(w=T.x),T.x<P&&(P=T.x)}d<=w&&(d=w+1),u>=P&&(u=P-1),y.length&&p.push({curves:m.curves,points:y,isCW:XN.isClockWise(y),identifier:c++,boundingBox:new qN(new On(P,b),new On(w,g))})});let f=p.map(m=>l(m,p,u,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new $N;g.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let P=p[w.identifier],S=new Ov;S.curves=P.curves,g.holes.push(S)}}),h.push(g)}}),h}};var gh=!1,Cv,xh=new Promise(i=>{Cv=i}),Tv=!1;var id;function Av(){if(gh=!0,Tv)return;if(id)return id;async function i(){let e=await import("./opentype.js");Cv(e),Tv=!0}return id=i(),id}var Ml=class{async load(t,e,r=()=>{}){let{load:o}=await xh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await xh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function KN(i){return await(await fetch(i)).arrayBuffer()}var QN=new Ml;async function bh(i){let t,e,r=!1;if(i.url?(t=await KN(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(gh){let o=await QN.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as ZN,LineCurve as JN,QuadraticBezierCurve as eD}from"three";function tD(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var nd=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=bh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=bh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,d=String.fromCharCode(r[c].unicode),p=n[s];if(tD(u,p)||l)a.push({char:d,index:u,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(b=>this.getTextWidth(b,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
2285
+ `)}return r}};import{VideoTexture as vN,Texture as SN}from"three";var Qu=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.cleanupTimer=null;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),e.prev.next=e.next,e.next.prev=e.prev,e.next=null,e.prev=null,e.data=null)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,this.cleanupTimer=setTimeout(()=>{this.hasClean=!1,this.cleanupTimer=null,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;){this.dispose(e.src,e.data),this.cache.delete(e.src);let r=e;e=e.next,e.prev=this.head,this.head.next=e,r.next=null,r.prev=null,r.data=null}this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}disposeAll(){this.cleanupTimer!==null&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=null),this.hasClean=!1,this.cache.forEach((t,e)=>{this.dispose(e,t.data),t.next=null,t.prev=null,t.data=null}),this.cache.clear(),this.head.next=this.tail,this.tail.prev=this.head}destroy(){this.disposeAll(),this.head=null,this.tail=null}};var hh=class extends Qu{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},fh;function gv(i){return typeof i=="string"?i:(fh||(fh=new hh),fh.load(i))}var Zu=class{constructor(t,e){this.data=t;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Ju=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var ds=class extends Zu{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;this.loaded=!1;this.isVideo=!1;this.isBuffer=!1;this._cache={[1e3]:{},[1001]:{},[1002]:{}};this.isVideo=e.type==="video",this.isBuffer=e.isWebGLRenderTarget===!0,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let r=()=>{this.loaded=!0;for(let n of Object.values(this._cache))for(let a of Object.values(n))for(let s of Object.values(a))s&&(s.image=this.img,s.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let n;await new Promise(a=>{o.onloadend=s=>{n=s.target?.result,a(null)}}),this.img.src=n}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=gv(e),this.img.onload=r,await new Promise(n=>{this.img.onload=()=>{r(),n(null)}})}getTexture(e,r=1008,o=1006){let n=this._cache[e]?.[r]?.[o];if(n)return n;{let a;return this.isBuffer?a=this.img.texture:this.isVideo?a=new vN(this.img,void 0,e,e):a=new SN(this.img,void 0,e,e,o,r),this.loaded&&(a.needsUpdate=!0),this._cache[e]===void 0&&(this._cache[e]={}),this._cache[e][r]===void 0&&(this._cache[e][r]={}),this._cache[e][r][o]=a,a}}setNeedsUpdate(e){for(let r of Object.values(this._cache))for(let o of Object.values(r))for(let n of Object.values(o))n&&(n.needsUpdate=e)}disposeTextures(){for(let[e,r]of Object.entries(this._cache))for(let[o,n]of Object.entries(r))for(let[a,s]of Object.entries(n))s?.dispose(),this._cache[e]!==void 0&&this._cache[e][o]!==void 0&&(this._cache[e][o][a]=void 0)}dispose(){super.dispose(),this.disposeTextures()}};var mr=class extends ds{};import{Vector2 as Xo,Vector3 as bo,Vector4 as ed}from"three";function kt(i,t){return t.color(i)}function xv(i,t){switch(i.type){case"fresnel":return ON(i,t);case"gradient":return TN(i,t);case"depth":return CN(i,t);case"normal":return AN(i,t);case"noise":return MN(i,t);case"rainbow":return IN(i,t);case"toon":return EN(i,t);case"outline":return NN(i,t);case"transmission":return DN(i,t);case"pattern":return _N(i,t);case"color":default:return PN(i,t)}}function wN(i){return{type:i.type}}function $r(i,t){let{alpha:e,mode:r,isMask:o}=i,n=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...wN(i),alpha:n,mode:r,isMask:o}}function PN(i,t){return{...$r(i,t),color:kt(i.color,t)}}function ON(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:a}=i;return{...$r(i,t),color:kt(a,t),bias:e,scale:r,intensity:o,factor:n}}function TN(i,t){let{gradientType:e,smooth:r,colors:o,steps:n,angle:a,offset:s,morph:l}=i;return{...$r(i,t),gradientType:e,smooth:r,colors:o.map(c=>new ed(c[0],c[1],c[2],c[3])),num:o.length,steps:n,offset:new Xo(...s.map(c=>typeof c=="number"?c:0)),morph:new Xo(...l.map(c=>typeof c=="number"?c:0)),angle:a}}function CN(i,t){let{gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:s,direction:l,colors:c,steps:u,smooth:d}=i;return{...$r(i,t),gradientType:e,near:r,far:o,isVector:n,isWorldSpace:a,origin:new bo(...s),direction:l?new bo(...l):new bo(1,0,0),colors:c.map(p=>p!==void 0?new ed(p[0],p[1],p[2],p[3]):new ed(0,0,0,0)),steps:u.slice(0,c.length),smooth:d}}function AN(i,t){let{cnormal:e}=i;return{...$r(i,t),cnormal:new bo(e[0],e[1],e[2])}}function MN(i,t){return{...$r(i,t),scale:i.scale,move:i.move,fA:new Xo(...i.fA.map(e=>typeof e=="number"?e:0)),fB:new Xo(...i.fB.map(e=>typeof e=="number"?e:0)),size:new bo(...i.size),distortion:new Xo(...i.distortion.map(e=>typeof e=="number"?e:0)),colorA:kt(i.colorA,t),colorB:kt(i.colorB,t),colorC:kt(i.colorC,t),colorD:kt(i.colorD,t),noiseType:i.noiseType,voronoiStyle:i.voronoiStyle,highCut:i.highCut,lowCut:i.lowCut,smoothness:i.smoothness,seed:i.seed,quality:i.quality}}function IN(i,t){return{...$r(i,t),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new bo(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new bo(...i.offset)}}function EN(i,t){return{...$r(i,t),positioning:i.positioning,colors:i.colors.map(e=>new ed(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new bo(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:kt(i.shadowColor,t),offset:new bo(...i.offset)}}function NN(i,t){return{...$r(i,t),outlineColor:kt(i.outlineColor,t),contourColor:kt(i.contourColor,t),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:new bo(...i.contourDirection),positionalLines:i.positionalLines,compensation:i.compensation}}function DN(i,t){return{...$r(i,t),thickness:i.thickness,ior:i.ior,roughness:i.roughness}}function _N(i,t){return{...$r(i,t),style:i.style,projection:i.projection,axis:i.axis,blending:i.blending,offset:new Xo(...i.offset.map(e=>typeof e=="number"?e:0)),colorA:kt(i.colorA,t),colorB:kt(i.colorB,t),frequency:new Xo(...i.frequency.map(e=>typeof e=="number"?e:0)),size:i.size,variation:i.variation,smoothness:i.smoothness,zigzag:i.zigzag,rotation:i.rotation,vertical:new Xo(...i.vertical.map(e=>typeof e=="number"?e:0)),horizontal:new Xo(...i.horizontal.map(e=>typeof e=="number"?e:0)),sides:i.sides}}var Mi=class extends Nt{};import{MathUtils as RN,Vector4 as LN}from"three";var BN={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},VN={depth:["colors"]};function zN(i,t,e){if(t==="isMask")return!0;let r=BN[i.type],o=VN[i.type];if(o!==void 0){let n=i.color;if(o.includes(t)){let a=n[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function mh(i,t){if(Array.isArray(t)){if(!Array.isArray(i)||i.length!==t.length)return!1;for(let[o,n]of t.entries()){let a=i[o];if(typeof n=="string"||typeof n=="number"&&typeof a=="string")return!0}return!1}let e=typeof i=="string",r=typeof t=="string";return e!==r||e&&r}function Cl(i,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,n=i;if("image"in n){let a=n.image,s=t.image(a),l=r;l.image instanceof mr||l.image.deref(),l.image=s}if("video"in n){let a=n.video,s=t.video(a),l=r;l.image instanceof mr||l.image.deref(),l.image=s}if("wrapping"in n){let a=r;a.wrap=n.wrapping}if("minFilter"in n){let a=r;a.minFilter=n.minFilter}if("magFilter"in n){let a=r;a.magFilter=n.magFilter}if("rotation"in n&&e.uniforms[`f${e.id}_rotation`])return e.uniforms[`f${e.id}_rotation`].value=(Se(n.rotation??0,t)??0)*RN.DEG2RAD,o;if("repeat"in n||"offset"in n||"rotation"in n){let a="mat",s=e.uniforms[`f${e.id}_${a}`];if(!s)return o;if("repeat"in n){let l=n.repeat;mh(e.data.texture.repeat,l)&&(o=!0),s.repeat=ps(l,t).map((c,u)=>typeof l[u]=="string"?1/c:c)}if("offset"in n){let l=n.offset;mh(e.data.texture.offset,l)&&(o=!0),s.offset=ps(l,t).map((c,u)=>typeof l[u]=="string"?-c:c)}if("rotation"in n){let l=e.data.texture.rotation,c=n.rotation??0;(l===void 0||mh(l,c))&&(o=!0),s.rotation=Se(c,t)??0}s.updateMatrix()}return o}function bv(i,t,e,r){let o=!1;for(let[n,a]of Object.entries(i)){if(n==="bumpMap"||n==="roughnessMap"){o=!0;continue}if(!n||a===void 0)continue;if(yh(n,e,r,t)){n==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${n}`];if(!!s&&!(s instanceof Ci))switch(o=o||zN(e,n,a),s.constructor){case qe:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Mi?s.value=new Nt(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case or:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Mi?s.value=new Nt(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case ut:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case jt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case Qt:{Cl(a,t,e);break}case qr:{s.value=a.map(l=>new LN(...l));break}default:{s.value=a;break}}}return o}var Ei=(i,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof i=="number"?i*100:i,e)??100)/100))??1,Se=(i,t,e)=>typeof i=="number"?i:t.getVariable(i,e),Ii=(i,t)=>(i||(i=new vn),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i.z=Se(i.z,t)??0,i),Yo=(i,t)=>(i||(i=new Xr),i.x=Se(i.x,t)??0,i.y=Se(i.y,t)??0,i),ps=(i,t)=>{let e=i.map(r=>Se(r,t)??0);return[e[0],e[1]]},Ni=class{constructor(t,e,r,o,n){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)yh(a,this,r,n)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Zt.createLightLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let n=r.type==="texture"?o.uiBuffer(r.texture.image)??o.image(r.texture.image):o.video(r.texture.video),a=new yn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new Yu(n),l=new Ku(ps(r.texture.repeat,o),ps(r.texture.offset,o),Se(r.texture.rotation??0,o)),c=new se(r.crop?1:0),u=new Le(r.projection??0),d=new Le(["x","y","z"].indexOf(r.axis)??0),p=new Le(r.side??0),f=new ut(r.size?new Xr(...ps(r.size,o)):new Xr(100,100)),h=new se(r.blending??0),m=new se(Ei(r.alpha,o)),y=new Le(r.mode??0),g=new dt(r.isMask??!1),b=new Ai(a,s,c,u,d,p,f,h,l,m,y,g),w=new ke(b.calpha,"f");return new it(t,e,r,{texture:a,textureSize:s,crop:c,projection:u,axis:d,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},b,y,w,g,o)}else if(r.type==="matcap"){let n=o.image(r.texture.image),a=new yn(n,r.texture.wrapping,r.texture.minFilter??1008,r.texture.magFilter??1006),s=new se(Ei(r.alpha,o)),l=new Le(r.mode??0),c=new dt(r.isMask??!1),u=new se((Se(r.texture.rotation??0,o)??0)*GN.DEG2RAD),d=new os(a,s,l,c,u),p=new ke(d.calpha,"f");return new it(t,e,r,{texture:a,alpha:s,mode:l,isMask:c,rotation:u},d,l,p,c,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new jt(new vn(...r.offset.map(g=>Se(g,o)??0))),a=new se(Se(r.scale,o)??10),s=new se(Se(r.intensity,o)??8),l=new se(Se(r.movement,o)??1),c=new Le(r.noiseType??0),u=new Le(r.voronoiStyle??0),d=new se(Se(r.smoothness,o)??.5),p=new se(Se(r.seed,o)??0),f=new se(Se(r.highCut,o)??1),h=new se(Se(r.lowCut,o)??0),m=new Le(Se(r.quality,o)??1),y=new us(s,l,n,u,d,p,f,h,m,a,c);return new Al(t,e,r,{offset:n,scale:a,intensity:s,movement:l,noiseType:c,voronoiStyle:u,smoothness:d,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return UN(t,e,r,o)}updateByOp(t,e,r){let o=t,n=!1;if(o.path[0]===void 0){for(let a of Object.keys(o.props))try{let s=this.data[a],l=e[a];if(Array.isArray(s)&&Array.isArray(l)){for(let[c,u]of l.entries()){let d=s[c];if(typeof u=="string"||typeof u=="number"&&typeof d=="string"){n=!0;break}}if(n)break}else if(typeof l=="string"&&typeof s=="number"||typeof l=="number"&&typeof s=="string"||typeof l=="string"&&typeof s=="string"&&l!==s){n=!0;break}}catch(s){console.error(s)}if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props||"noiseType"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):bv(o.props,r.shared,this,e)||n}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Cl(o.props,r.shared,this)||n:!0;return n}dispose(){if(FN(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof mr||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},it=class extends Ni{constructor(e,r,o,n,a,s,l,c,u){super(e,r,o,n,u);this.params=n;this.color=a;this.mode=s;this.alpha=l;this.isMask=c}},Al=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,n,s);this.position=a}},Zt=class extends Ni{constructor(e,r,o,n,a,s){super(e,r,o,a,s);this.node=n}static createLightLayer(e,r,o,n){let a,s=new se(Ei(o.alpha,n)),l=new Le(o.mode),c=new se(o.bumpMapIntensity),u=new se(Ei(o.alphaOverride,n)),d;if(!o.visible)a=new qo,d={};else if(o.category==="lambert"){a=new wl;let p=new qe(n.color(o.emissive)??0),f=new dt(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new Tl;let p=new se(o.shininess??30),f=new qe(n.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Ol;let p=new se(o.roughness??.3),f=new se(o.metalness??0),h=new se(o.reflectivity??.5),m=new dt(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Pl;let p=new se(o.shininess??30),f=new qe(o.specular!==void 0?n.color(o.specular)??1118481:1118481),h=new dt(o.occlusion??!0);d={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new se(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=c,a.alphaOverride=u,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new Zt(e,r,o,a,d,n)}get category(){return this.node.category}};function FN(i){let t=i instanceof Ni?i.type:i;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Tr(i){return{alpha:new se(i.alpha??1),mode:new Le(i.mode??0),isMask:new dt(i.isMask??!1)}}function jN(i,t,e,r,o){switch(i.type){case"color":{let n=new qe(r.color??bt),a=Tr(r),s=new gn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let n=new qe(r.color??16777215),a=new se(Se(r.bias,o)??.1),s=new se(Se(r.scale,o)??1),l=new se(Se(r.intensity,o)??2),c=new se(Se(r.factor,o)??1),u=Tr(r),d=new Sl(n,a,s,l,c,u.alpha,u.mode,u.isMask),p=new ke(d.calpha,"f");return new it(t,e,i,{color:n,bias:a,scale:s,intensity:l,factor:c,...u},d,u.mode,p,u.isMask,o)}case"rainbow":{let n=new se(Se(r.filmThickness,o)??30),a=new se(Se(r.movement,o)??0),s=new jt(Ii(r.wavelengths,o)),l=new se(Se(r.noiseStrength,o)??0),c=new se(Se(r.noiseScale,o)??1),u=new jt(Ii(r.offset,o)),d=Tr(r),p=new ss(n,a,s,l,c,u,d.alpha,d.isMask),f=new ke(p.calpha,"f");return new it(t,e,i,{filmThickness:n,movement:a,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let n=new se(Se(r.thickness??10,o)),a=new se(Se(r.ior??1.5,o)),s=new se(Se(r.roughness??.5,o)),l=Me.transmissionSize,c=Me.transmissionRenderTarget,u=Me.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new ut(p/d,1):new ut(1,d/p),h=Tr(r),m=new cs(n,a,s,l,c,u,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{thickness:n,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let n=new Le(r.positioning??0),a;r.colors?a=new qr(r.colors.length,r.colors):(a=new qr(10,new fs(0,0,0,1)),a.value[1]=new fs(1,1,1,1));let s;r.steps?s=new Wr(r.steps.length,r.steps):(s=new Wr(10,1),s.value[0]=0);let l=new jt(Ii(r.source??new vn(0,0,0),o)),c=new dt(r.isWorldSpace??!0),u=new se(Se(r.noiseStrength??0,o)),d=new se(Se(r.noiseScale??1,o)),p=new or(r.shadowColor),f=new jt(Ii(r.offset??new vn(0,0,0),o)),h=Tr(r),m=new ls(n,a,s,l,c,u,d,p,f,h.alpha),y=new ke(m.calpha,"f");return new it(t,e,i,{positioning:n,colors:a,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:d,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let n=new qe(r.outlineColor??16777215),a=new qe(r.contourColor??16777215),s=new se(Se(r.outlineWidth??.1,o)),l=new se(Se(r.contourWidth??.1,o)),c=new se(Se(r.outlineThreshold??.1,o)),u=new se(Se(r.contourThreshold??.1,o)),d=new se(Se(r.outlineSmoothing??.1,o)),p=new se(Se(r.contourFrequency??.1,o)),f=new jt(Ii(r.contourDirection??new vn(0,1,0),o)),h=new dt(r.positionalLines??!1),m=new dt(r.compensation??!0),y=Me.normalRenderTarget,g=Me.normalRenderTargetDepth,b=Me.pixelRatioNode,w=Me.resolution,P=Tr(r),S=new ns(n,a,s,l,c,u,d,p,f,h,m,w,y,g,b,P.alpha),T=new ke(S.calpha,"f");return new it(t,e,i,{outlineColor:n,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...P},S,P.mode,T,P.isMask,o)}case"depth":{let n=new Le(r.gradientType??0),a=new dt(r.smooth??!1),s=new se(Se(r.near,o)??50),l=new se(Se(r.far,o)??200),c=new se(r.isVector??1),u=new se(r.isWorldSpace??0),d=new jt(Ii(r.origin,o)),p=new jt(Ii(r.direction,o)),f;r.colors?f=new qr(r.colors.length,r.colors):(f=new qr(2,new fs(0,0,0,1)),f.value[1]=new fs(1,1,1,1));let h;r.steps?h=new Wr(r.steps.length,r.steps):(h=new Wr(2,1),h.value[0]=0);let m=Tr(r),y=new ts(n,a,s,l,c,u,d,p,f,h,m.alpha,m.isMask),g=new ke(y.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,near:s,far:l,isVector:c,isWorldSpace:u,origin:d,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let n=new se(Se(r.scale,o)??1),a=new jt(Ii(r.size??new vn(100,100,100),o)),s=new se(Se(r.move,o)??1),l=new ut(Yo(r.fA??new Xr(1.7,9.2),o)),c=new ut(Yo(r.fB??new Xr(8.3,2.8),o)),u=new ut(Yo(r.distortion??new Xr(1,1),o)),d=new or(r.colorA),p=new or(r.colorB),f=new or(r.colorC),h=new or(r.colorD),m=new Le(r.noiseType??0),y=new Le(r.voronoiStyle??0),g=new se(Se(r.highCut,o)??1),b=new se(Se(r.lowCut,o)??0),w=new se(Se(r.smoothness,o)??.5),P=new se(Se(r.seed,o)??.5),S=new Le(r.quality??1),T=Tr(r),A=new is(n,a,s,l,c,u,d,p,f,h,T.alpha,m,T.isMask,y,g,b,w,P,S),x=new ke(A.calpha,"f");return new it(t,e,i,{scale:n,size:a,move:s,fA:l,fB:c,distortion:u,colorA:d,colorB:p,colorC:f,colorD:h,noiseType:m,...T,voronoiStyle:y,highCut:g,lowCut:b,smoothness:w,seed:P,quality:S},A,T.mode,x,T.isMask,o)}case"normal":{let n=new jt(r.cnormal??new vn(1,1,1)),a=Tr(r),s=new Ja(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{cnormal:n,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let n=new Le(r.gradientType??0),a=new dt(r.smooth??!1),s;r.colors?s=new qr(r.colors.length,r.colors):(s=new qr(10,new fs(0,0,0,1)),s.value[1]=new fs(1,1,1,1));let l;r.steps?l=new Wr(r.steps.length,r.steps):(l=new Wr(10,1),l.value[0]=0);let c=new ut(Yo(r.offset??new Xr(0,0),o)),u=new ut(Yo(r.morph??new Xr(0,0),o)),d=new se(Se(r.angle??0,o)),p=Tr(r),f=new rs(n,a,s,l,c,u,d,p.alpha,p.isMask),h=new ke(f.calpha,"f");return new it(t,e,i,{gradientType:n,smooth:a,colors:s,steps:l,offset:c,morph:u,angle:d,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let n=new Le(r.style??0),a=new Le(r.projection??0),s=new Le(["x","y","z"].indexOf(r.axis)??0),l=new se(Se(r.blending??0,o)),c=new ut(Yo(r.offset,o)),u=new or(r.colorA),d=new or(r.colorB),p=new ut(Yo(r.frequency??new Xr(10,10),o)),f=new se(Se(r.size??.5,o)),h=new se(Se(r.variation??0,o)),m=new se(Se(r.smoothness??.5,o)),y=new se(Se(r.zigzag??0,o)),g=new se(Se(r.rotation??0,o)),b=new ut(Yo(r.vertical??new Xr(0,1),o)),w=new ut(Yo(r.horizontal??new Xr(0,1),o)),P=new Le(r.sides??6),S=Tr(r),T=new as(n,a,s,l,c,u,d,p,f,h,m,y,g,b,w,P,S.alpha,S.isMask),A=new ke(T.calpha,"f");return new it(t,e,i,{style:n,projection:a,axis:s,blending:l,offset:c,colorA:u,colorB:d,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:b,horizontal:w,sides:P,...S},T,S.mode,A,S.isMask,o)}default:{let n=new qe(1,0,0,1),a=Tr(r),s=new gn(n,a.alpha),l=new ke(s.calpha,"f");return new it(t,e,i,{color:n,...a},s,a.mode,l,a.isMask,o)}}}function UN(i,t,e,r){let o=xv(e,r);return jN(e,i,t,o,r)}function yh(i,t,e,r){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=(Se(e.intensity,r)??1)*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Ei(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&i==="visible"){let n=t.uniforms[`f${t.id}_compensation`];n&&(n.value=e.compensation&&e.visible)}return o}}function nr(i,t,e,r,o,n,a=[]){let s=e;for(let l of a)l in s&&(s=s[l]);for(let l of i)l in s&&o.getVariable(s[l],["material",n,"layer",r,...a,String(l)]);for(let l of t)l in s&&s[l].forEach((c,u)=>{o.getVariable(c,["material",n,"layer",r,...a,String(l),u===0?"x":u===1?"y":"z"])})}function td(i,t){let e=0,r=i.layers.find(o=>o.data.type==="light");if(r){let o=r.data,n=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?n/100:o.alphaOverride)<1)return!0}for(let o of i.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let n=o.data.visible?o.data.alpha:0;if(typeof n=="string"&&(n=Math.max(0,Math.min(1,Number(t.getVariable(n)??100)/100))),n===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){n=a[3];break}}else if(n===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,c=t.color(o.data.colorD).a,u=Math.min(a,Math.min(s,Math.min(l,c)));u<1&&(n=u)}e+=(1-e)*n}}return e<1}var ar=class extends kN{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.shadersPatchedForShapeBlend=!1;this.nodeContextUuid=0;this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.setTransparent(!0)}customProgramCacheKey(){return""}setTransparent(e){this.transparent=e;let r=!1;if(e)try{r=this.getLayersOfType("transmission").length>0}catch{r=!1}this.depthWrite=!e||r}},rd=class extends ar{constructor(e,r,o,n){super();this.flatShading=e;this.side=r;this.wireframe=o;this.root=n}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.setTransparent(e.transparent),this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o,n){return this.root.getFlavor(e,r,o,n)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Sn=class extends ar{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.needsJitter=r.shared.needsJitter,Xe.startContext(this),this.reset0(e,r),Xe.endContext(this)}get nodeMaterial(){return this}getFlavor(e,r,o,n){let a=o?6:(e?3:0)+r;if(a+=((n?.resolutionLevel??0)-(n?.useChildrenColors?4:0))*7,a===0)return this;this.flavors===void 0&&(this.flavors=[]),a-=1;let s=this.flavors[a];return s===void 0&&(s=new rd(e,r,o,this),s.needsJitter=this.needsJitter,this.flavors[a]=s,s.flatShading=e,s.side=r,s.updateAfterBuild(),n&&(s.defines.SHAPEBLEND=n.resolutionLevel,s.defines.SHAPEBLEND_C=n.useChildrenColors?1:0)),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r,o=!1){Xe.startContext(this),(this.data!==e||o)&&this.reset0(e,r),Xe.endContext(this)}reset0(e,r){this.data=e;let o=e.layers??Ct.defaultTwoLayerData("phong").layers;try{this.layers=o.map(n=>Ni.create(this.layerIdGen++,n.id,n.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.setTransparent(td(e,r.shared)),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.setTransparent(td(this.data,o.shared)),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let n=e[1],a=e[2];if(n&&a){let s=this.layers.find(l=>l.uuid===n);if(s?.hasValue(a))if(a==="alpha")this.setTransparent(td(this.data,o.shared)),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)));else{let l=s.getValue(a),c=e[3],u=e[4];if(l instanceof HN){let d=l[c],p;typeof d=="number"?p=Number(r):d.isVector2&&(p=d.toArray(),u==="x"?p[0]=Number(r):u==="y"&&(p[1]=Number(r))),Cl({[c]:p},o.shared,s);return}(c==="x"||c==="y"||c==="z")&&l.isVector3||(c==="x"||c==="y")&&l.isVector2?l[c]=Number(r):s.setValue(a,r)}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"]),o.data.type==="displace"?o.data.displacementType==="noise"?nr(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],o.data,o.id,e.shared,this.uuid):nr(["intensity"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="depth"?nr(["near","far"],["origin","direction"],o.data,o.id,e.shared,this.uuid):o.data.type==="fresnel"?nr(["bias","scale","intensity","factor"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="rainbow"?nr(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],o.data,o.id,e.shared,this.uuid):o.data.type==="noise"?nr(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],o.data,o.id,e.shared,this.uuid):o.data.type==="pattern"?nr(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],o.data,o.id,e.shared,this.uuid):o.data.type==="outline"?nr(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],o.data,o.id,e.shared,this.uuid):o.data.type==="toon"?nr(["noiseStrength","noiseScale"],["offset","source"],o.data,o.id,e.shared,this.uuid):o.data.type==="transmission"?nr(["roughness","thickness","ior"],[],o.data,o.id,e.shared,this.uuid):o.data.type==="texture"||o.data.type==="video"?(nr([],["size"],o.data,o.id,e.shared,this.uuid),nr(["rotation"],["repeat","offset"],o.data,o.id,e.shared,this.uuid,["texture"])):o.data.type==="gradient"?nr(["angle"],["offset","morph"],o.data,o.id,e.shared,this.uuid):o.data.type==="matcap"&&nr(["rotation"],[],o.data,o.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof Zt),this.lightLayer===void 0&&(this.lightLayer=new Zt(0,"",{...gt.defaultData("light","phong"),visible:!1},new qo,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Zt);if(!e)return;let r=e.data,o=r.bumpMap,n=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof it&&s.color instanceof Ai&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===n&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(Xe.startContext(this),r!==void 0?this.data=r:r=this.data,this.setTransparent(td(r,o.shared)),e.path[0]==="layers"){let n=o.shared,a=e.path[1];if(a===void 0)o.scene.markNeedsUpdateRendererDirty(),this.reset0(r,o);else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),c;e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?c={...e.props,alpha:Ei(e.props.alpha,n,["material",this.uuid,"layer",a,"alpha"])}:c={...e.props,alphaOverride:Ei(e.props.alphaOverride,n,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},l,o)&&this.reset0(r,o)}}}else this.reset0(r,o);Xe.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof it?r.color.mask=void 0:r instanceof Zt&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof it&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,n=this.layers[o];n instanceof Zt?n.node.mask=new Bt(r.color,r.alpha,Bt.MUL):n instanceof it&&(n.isMask.value||(n.color.mask=new Bt(r.color,r.alpha,Bt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof it),r=this.layers.findIndex(o=>o instanceof Zt);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let a=this.layers[n];if(a instanceof it){if(a.isMask.value)continue;o=new Za(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ke("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Zt);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];if(n instanceof it){if(n.isMask.value)continue;e=new Za(e,n.color,n.alpha,n.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Al);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Bt(r,e[o].position,Bt.ADD),r=new Bt(r,new se(.5).setReadonly(!0),Bt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(n,a,s)=>Math.min(Math.max(n,a),s);for(let n of this.layers)if(n.type==="displace"){let a=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=a}}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Ka;e.needsJitter=this.needsJitter,this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let r of this.flavors)r&&r.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof it){let r=e.params.texture;if(r instanceof yn&&!r.image.loaded)return!1}return!0}};Object.defineProperties(ar.prototype,{properties:{get:function(){return this.fragment.properties}}});var wn=class extends Sn{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var vv=new Map;function Sv(i){if(typeof i=="string")return i;let t=vv.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},vv.set(i,t)),t.url}var WN,wv=new Promise(i=>{WN=i});var Pv;wv.then(i=>Pv=i);var Pn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let n;typeof t=="string"?n={src:t}:n={src:Sv(t),format:"wav"},this.sound=new Pv.Howl(n),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as qN,Vector2 as On,Path as Ov,Shape as $N,ShapeUtils as XN,Color as YN}from"three";var od=class{constructor(){this.type="ShapePath";this.color=new YN;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new Ov,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,n,a){return this.currentPath?.bezierCurveTo(t,e,r,o,n,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,b){let w=m.x,P=y.x,S=g.x,T=b.x,A=m.y,x=y.y,N=g.y,E=b.y,M=(T-S)*(A-N)-(E-N)*(w-S),D=(P-w)*(A-N)-(x-A)*(w-S),_=(E-N)*(P-w)-(T-S)*(x-A),R=M/_,V=D/_;if(_===0&&M!==0||R<=0||R>=1||V<0||V>1)return null;if(M===0&&_===0){for(let U=0;U<2;U++)if(n(U===0?g:b,m,y),r.loc===e.ORIGIN){let B=U===0?g:b;return{x:B.x,y:B.y,t:r.t}}else if(r.loc===e.BETWEEN){let B=+(w+r.t*(P-w)).toPrecision(10),q=+(A+r.t*(x-A)).toPrecision(10);return{x:B,y:q,t:r.t}}return null}else{for(let q=0;q<2;q++)if(n(q===0?g:b,m,y),r.loc===e.ORIGIN){let j=q===0?g:b;return{x:j.x,y:j.y,t:r.t}}let U=+(w+R*(P-w)).toPrecision(10),B=+(A+R*(x-A)).toPrecision(10);return{x:U,y:B,t:R}}}function n(m,y,g){let b=g.x-y.x,w=g.y-y.y,P=m.x-y.x,S=m.y-y.y,T=b*S-P*w;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(T<-Number.EPSILON){r.loc=e.LEFT;return}if(T>Number.EPSILON){r.loc=e.RIGHT;return}if(b*P<0||w*S<0){r.loc=e.BEHIND;return}if(Math.sqrt(b*b+w*w)<Math.sqrt(P*P+S*S)){r.loc=e.BEYOND;return}let A;b!==0?A=P/b:A=S/w,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],b=[];for(let w=1;w<m.length;w++){let P=m[w-1],S=m[w];for(let T=1;T<y.length;T++){let A=y[T-1],x=y[T],N=o(P,S,A,x);N!==null&&g.find(E=>E.t<=N.t+Number.EPSILON&&E.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),b.push(new On(N.x,N.y)))}}return b}function s(m,y,g){let b=new On;y.getCenter(b);let w=[];return g.forEach(P=>{P.boundingBox.containsPoint(b)&&a(m,P.points).forEach(T=>{w.push({identifier:P.identifier,isCW:P.isCW,point:T})})}),w.sort((P,S)=>P.point.x-S.point.x),w}function l(m,y,g,b,w){(w==null||w==="")&&(w="nonzero");let P=new On;m.boundingBox.getCenter(P);let S=[new On(g,P.y),new On(b,P.y)],T=s(S,m.boundingBox,y);T.sort((D,_)=>D.point.x-_.point.x);let A=[],x=[];T.forEach(D=>{D.identifier===m.identifier?A.push(D):x.push(D)});let N=A[0].point.x,E=[],M=0;for(;M<x.length&&x[M].point.x<N;)E.length>0&&E[E.length-1]===x[M].identifier?E.pop():E.push(x[M].identifier),M++;if(E.push(m.identifier),w==="evenodd"){let D=E.length%2===0,_=E[E.length-2];return{identifier:m.identifier,isHole:D,for:_}}else if(w==="nonzero"){let D=!0,_=null,R=null;for(let V=0;V<E.length;V++){let U=E[V];y[U]&&(D?(R=y[U].isCW,D=!1,_=U):R!==y[U].isCW&&(R=y[U].isCW,D=!0))}return{identifier:m.identifier,isHole:D,for:_}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let c=0,u=999999999,d=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,b=999999999,w=-999999999,P=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<b&&(b=T.y),T.x>w&&(w=T.x),T.x<P&&(P=T.x)}d<=w&&(d=w+1),u>=P&&(u=P-1),y.length&&p.push({curves:m.curves,points:y,isCW:XN.isClockWise(y),identifier:c++,boundingBox:new qN(new On(P,b),new On(w,g))})});let f=p.map(m=>l(m,p,u,d,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new $N;g.curves=m.curves,f.filter(w=>w?.isHole&&w.for===m.identifier).forEach(w=>{if(w){let P=p[w.identifier],S=new Ov;S.curves=P.curves,g.holes.push(S)}}),h.push(g)}}),h}};var gh=!1,Cv,xh=new Promise(i=>{Cv=i}),Tv=!1;var id;function Av(){if(gh=!0,Tv)return;if(id)return id;async function i(){let e=await import("./opentype.js");Cv(e),Tv=!0}return id=i(),id}var Ml=class{async load(t,e,r=()=>{}){let{load:o}=await xh;o(t,(n,a)=>{n||!a?r(n??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await xh;try{let o=e(t),n=new r,a=s=>o.charToGlyphIndex(s.char);return n.registerModifier("glyphIndex",null,a),n.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:n}}catch(o){console.error(o)}}};async function KN(i){return await(await fetch(i)).arrayBuffer()}var QN=new Ml;async function bh(i){let t,e,r=!1;if(i.url?(t=await KN(i.url),e=i.url,r=i.url.startsWith("/")):i.data&&(t=i.data.buffer.slice(i.data.byteOffset,i.data.byteOffset+i.data.byteLength)),t)if(gh){let o=await QN.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}else return{font:void 0,url:e,intercepted:r,arr:t,bidi:null}}import{CubicBezierCurve as ZN,LineCurve as JN,QuadraticBezierCurve as eD}from"three";function tD(i,t){return t.state.glyphIndex===i||t.state.fina===i||t.state.medi===i||t.state.init===i}var nd=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=bh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=bh(t).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let n=o.tokenizer.tokens,a=[],s=0,l=r.length===n.length;for(let c=0;c<r.length;c++){let u=r[c].index,d=String.fromCharCode(r[c].unicode),p=n[s];if(tD(u,p)||l)a.push({char:d,index:u,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===u&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:u,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e,r){if(!this._isLoaded)return;let o=this.font,n=e.fontSize/this.unitsPerEm,a=e.fontSize*e.lineHeight,s=t.map(b=>this.getTextWidth(b,e)),l=typeof e.width=="string"?Number(r.getVariable(e.width)):e.width,c=typeof e.height=="string"?Number(r.getVariable(e.height)):e.height,u=this.getCharWidth(`
2286
2286
  `,e),d=e.horizontalAlign===1?u:0,p=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,t[0],u),f=this.getLineInitialOffsetY(a,t.length,c,n,e.verticalAlign),h=[],m=t.map(b=>[]),y=t.map(b=>[]);for(let b=0;b<t.length;b++){let w=t[b],P={features:{liga:!0},letterSpacing:e.letterSpacing},S=[];try{S=o.stringToGlyphs(w,P)}catch(E){console.warn(E)}p=this.getLineInitialOffsetX(s[b],l,e.horizontalAlign,w,u);let T=[];try{T=this.reverseLigaturesTable(o,w,S)}catch(E){console.warn(E)}let A=this.computeSpaceWidthForLine(t,b,e,r),x=0,N=S[0];N&&e.horizontalAlign===2&&N.leftSideBearing!==void 0&&(p-=N.leftSideBearing*n),this.font?.forEachGlyph(w,p,f,e.fontSize,P,(E,M,D,_,R)=>{let V=E.index===0?`
2287
2287
  `:E.unicode?String.fromCharCode(E.unicode):void 0,U=T[x],B=0;if(V===`
2288
2288
  `)B=d;else if(V===" ")B=A;else{let q=this.createPath(E,n,M,D,e);q&&(B=q.offsetX,h.push(q.path))}if(U.replacements.length===1)y[b].push([M,D]),m[b].push(B);else{let q=U.replacements.map(W=>(o.glyphs.get(W).advanceWidth??0)*n),j=q.reduce((W,ee)=>W+=ee,0),F=q.map(W=>W/j),H=M;for(let W=0;W<F.length;W++){let ee=B*F[W];y[b].push([H,D]),m[b].push(ee),H+=ee}}x++}),f-=a}let g=[];for(let b=0,w=h.length;b<w;b++)g.push(...h[b].toShapes());return{shapes:g,charWidths:m,lineWidths:s,charCoords:y}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,n){return(r===3||r===2)&&o.indexOf(`
@@ -3544,7 +3544,7 @@ void main() {
3544
3544
 
3545
3545
  }
3546
3546
  `;var sm=10,Vd=class extends fR{constructor(e,r){super();this.type="ParticleEmitter";this.debugMode=!1;this.worldSpace=!0;this.rootObject=null;this.gpuCompute=null;this.positionSimRT=null;this.velocitySimRT=null;this.emissionRateSimRT=null;this.emitterShape=void 0;this.isEmitting=!1;this.hasBeenReset=!1;this.emittedParticlesAmount=0;this.lastEmitTime=0;this.globalTime=0;this.targetFPS=60;this.previousRatio=1;this.lerpFactor=.4;this.particlesAmount=0;this.noiseStrength=0;this.noiseScale=0;this.isBillboardBased=!0;this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1};this.textureLoader=new gR;this.currentWorldPosition=new Nr;this.systemQuaternion=new yS;this.worldGravity=new Nr(0,0,0);this.directionAxis=new Nr(0,0,0);this.colliderV3=new Nr(0,0,0);this.colliderQuaternion=new yS(0,0,0,1);this.matrixAutoUpdate=!0,this.renderer=e,this.system=r,this.shared=r.context.shared;let o=r.data;this.material=new Bd(o.renderMaterial,r.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:o.renderMaterial.color},uColor2:{value:o.renderMaterial.color2},uPosition:{value:new Nr(0,0,0)},uEmissionData:{value:new Nr(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new Nr(0,0,0)},uWorldQuaternion:{value:new Hl(0,0,0,1)},uRandScaleFactor:{value:o.randomScale??0},uRandRotationFactor:{value:o.randomRotation??0},uRotation:{value:o.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:o.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,o.renderMaterial.texture),this.init(o)}setTexture(e,r){let o=r.data;if(typeof r=="string"){let n=this.shared.image(r),a=new gS(n.img);a.needsUpdate=!0,e.uTexture.value=a;return}if(typeof o!="string"){let n=new Image;n.onload=()=>{let l=new gS(n);l.needsUpdate=!0,e.uTexture.value=l};let a=new Blob([o],{type:"image/*"}),s=URL.createObjectURL(a);n.src=s}}updateGeometryAttributes(e,r){let o=Q1(r);!this.emitterShape?.positionsAttribute||e.geometry.setAttribute("ref",new mR(o,2))}applyWorldSpace(){if(!this.system.started||!this.worldSpace||!this.positionSimRT||!this.velocitySimRT)return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,r){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset){this.reset();return}this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let o=1e3/r,n=this.targetFPS/o,a=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=a,this.previousRatio=a;let s=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=s,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],r=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&r&&this.init(Fi({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),this.colliderV3.y===0&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let o=e.data.size;this.colliderV3.fromArray(o),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,r){if(!this.velocitySimRT||!this.positionSimRT)return;r[2]==="size"&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),r[2]==="sizeEnd"&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let o=(n,a)=>{let s=[...this.system.data.shape.size];s[n]=a,this.updateParticleState({shape:{...this.system.data.shape,size:s}})};r[2]==="shape_size_0"&&o(0,e),r[2]==="shape_size_1"&&o(1,e),r[2]==="shape_size_2"&&o(2,e),r[2]==="speed"&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/sm),r[2]==="gravity"&&this.worldGravity.set(0,e/100,0),r[2]==="noiseStrength"&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),r[2]==="noiseScale"&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),r[2]==="direction_x"&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),r[2]==="direction_y"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),r[2]==="direction_z"&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(!(!this.positionSimRT||!this.velocitySimRT)){if(this.shouldReInitGPUCompute(e)&&this.init(Fi(this.system.data)),e.life!==void 0&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),e.speed!==void 0&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/sm),e.collisionBounce!==void 0&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),e.noiseStrength!==void 0&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),e.noiseScale!==void 0&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),e.noiseSeed!==void 0&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),e.randomMass!==void 0&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let r=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(r)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),e.shape!==void 0){let r=e.shape.size??this.system.data.shape.size,o=[Number(this.shared.getVariable(r[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(r[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(r[2],[this.uuid,"particles","shape_size_2"]))],n={...Fi(this.system.data).shape,size:o};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(e.gravity!==void 0&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),e.direction!==void 0){let r=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(r),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}e.randomRotation!==void 0&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),e.randomScale!==void 0&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(e.forceIntensity!==void 0&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),e.forceDambing!==void 0&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let r=[Number(e[0])*am.DEG2RAD,Number(e[1])*am.DEG2RAD,Number(e[2])*am.DEG2RAD],o=new xR(r[0],r[1],r[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(o).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:r,rootObjectType:o,colliderEntityId:n,shape:a,emitTimeDuration:s,emitTimeCycle:l,life:c,directionMode:u,noiseType:d}=e;return r!==void 0||o!==void 0||(n||n===null)||l!==void 0||a!==void 0||c!==void 0||s!==void 0||u!==void 0||d!==void 0}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.birthRatePerSec,particleMaxLifeTime:e.life,loopDuration:e.emitTimeCycle==="infinity"?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn(`The maximum number of particles is limited to ${1e5}.`),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let r=setInterval(()=>{if(!!this.emitterShape)if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}else clearInterval(r)},100);if(!this.emitterShape)return;let o=new bR(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),n=this.updateSimulationDefinition(e),a=o.addVariable("uCurrentPosition",n+rS,this.emitterShape.positionsTexture),s=o.addVariable("uCurrentVelocity",n+sS,this.emitterShape.directionsTexture),l=o.addVariable("uCurrentEmissionRate",hS,tS(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,s,l]),o.setVariableDependencies(s,[a,s,l]),o.setVariableDependencies(l,[a,s,l]);let c=eS({size:this.emitterShape.textureSize}),u={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new Nr(0,0,0)},uWorldQuaternion:{value:new Hl(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new Nr(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=u;let d=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(d),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new Hl(0,0,0,1)},uColliderPos:{value:new Nr(0,0,0)},uColliderSize:{value:new Nr(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new Hl(0,0,0,1)},uColliderQuaternionInvert:{value:new Hl(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:e.noiseSeed},uRandomMassFactor:{value:e.randomMass},uBounce:{value:e.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/sm}};s.material.uniforms=f;let h={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};l.material.uniforms=h;let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],y={...Fi(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,y),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=s,this.emissionRateSimRT=l,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){let r=Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),o=Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),n=Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]));return[r,o,n]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let o=this.system.getColliderData(e.colliderEntityId);switch(o?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0;break}let n=o?.colliderType;n==="sphere"&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),n==="box"&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),o?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}e.directionMode==="normals"&&(this.simFeaturesDefinition.USE_NORMALS=!0),e.noiseType==="curl"&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),e.noiseType==="simplex"&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),e.noiseType==="fbm"&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let r="";for(let[o,n]of Object.entries(this.simFeaturesDefinition))n&&(r+=`#define ${o}
3547
- `);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Nr(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let n=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(n=a)}),n?new Ms(o,r,e.type,n):new Ms(o,r,"SphereEmitterShape")}else return new Ms(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new hR(new yR(1,1,1),this.material,o),this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,n=1/r;if(o>=n){let a=Math.max(1,Math.floor(o/n));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(Fi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as vR,Float32BufferAttribute as SR,MeshBasicMaterial as wR}from"three";var Is=class extends It{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new vR;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...Fi(r)},this.geometry.setAttribute("position",new SR([],3)),this.material=new wR({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Vd(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let n=this.actualTime/1e3;this.emitter.update(n,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...at.drop(e,1).props}}),Be(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...at.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function PR(){try{let i=window.location.href;if(i.includes("reducesubdiv=")){let t=i.indexOf("reducesubdiv=")+13;return parseInt(i.slice(t,t+1))}}catch{}}var lm=PR();function OR(i,t,e){lm!==void 0&&t?.geometry&&"subdivisions"in t.geometry&&(t.geometry.subdivisions??0)>lm&&Object.assign(t.geometry,{subdivisions:lm});let r;return t.geometry.type==="TextGeometry"?new Di(i,t,e):t.geometry.type==="InputGeometry"?new _d(i,t,e):(t.geometry.type==="SubdivGeometry"?r=new Cn(i,t,e):t.geometry.type==="PathGeometry"?r=new As(i,t,e):t.geometry.type==="VectorGeometry"?r=new Dd(i,t,e):t.geometry.type==="BooleanGeometry"?r=new lr(i,t,e):t.geometry.type==="ShapeBlendGeometry"?r=new ji(i,t,e):t.geometry.type==="UIGeometry"?r=new Dn(i,t,e):r=new tt(i,t,e),r)}function zd(i,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?OR(i,t,e):t.type==="Empty"?new Bi(i,t):t.type==="Particle"?new Is(i,t,e):t.type==="ParticleCollider"?new vs(i,t,e):t.type==="Splat"?new Bi(i,t):t.type==="Bone"?new Ld(i,t):t.type==="Page"?new Er(i,t,e):t.type==="PointLight"?new Nd(i,t,e):t.type==="SpotLight"?new Os(i,t,e):t.type==="DirectionalLight"?new Ps(i,t,e):t.type==="Component"||t.type==="Instance"?new ti(i,t,e):Rr.is(t.type)?new Zo(i,t):(console.error(t),new Bi(i,t))}Gr.createEntity=zd;function TR(i,t,e){let r=zd(i.identity,t,e),o=i.children,n=i.attachedPaths,a=i.parent,s=i.component,l=i.instances,c=i.overrideData,u=i.uuid,d=i.stateSelection;i.dispose();for(let p of Object.keys(i))delete i[p];Object.setPrototypeOf(i,Object.getPrototypeOf(r));for(let p of Object.keys(r))i[p]=r[p];i.children=[...i.children,...o],i.attachedPaths=n,i.parent=a,i.component=s,i.instances=l,i.uuid=u,i.overrideData=c,i.updateState(i.data,e),d&&i.changeSelectedState(d,e),i.resetBBoxNeedsUpdate()}Gr.changeEntityProptotype=TR;Gr.Cloner=Ri;function xS(i,t,e,r){i.updateByOp(t,e,r,!1)}import{BufferAttribute as vS,BufferGeometry as SS,DataTexture as fm,FloatType as oi,Matrix4 as PS,Mesh as cm,NearestFilter as To,PlaneGeometry as LR,Quaternion as OS,RedFormat as um,RGBAFormat as Ds,Scene as dm,ShaderMaterial as wS,Vector2 as pm,Vector3 as Ud,WebGLMultipleRenderTargets as BR,WebGLRenderTarget as Fd}from"three";import{Box2 as CR,BufferAttribute as AR,BufferGeometry as MR,Camera as IR,GLSL3 as ER,Mesh as NR,RawShaderMaterial as DR,Scene as _R,Vector4 as RR}from"three";var Ui=5,Es=new MR;Es.setAttribute("position",new AR(new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),3));var _n=class extends DR{constructor(t){super({...t,depthTest:!1,depthWrite:!1,glslVersion:ER,vertexShader:`
3547
+ `);return r}createShape(e,r){this.emitterShape&&this.emitterShape.dispose();let o=new Nr(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if(e.type==="MeshEmitterShape"){let n=null;return this.system.context.scene.traverseEntity(a=>{a.uuid===e.fromMeshId&&(n=a)}),n?new Ms(o,r,e.type,n):new Ms(o,r,"SphereEmitterShape")}else return new Ms(o,r,e.type)}createPrimaryEmitter(e){let r,o=e*e;return r=new hR(new yR(1,1,1),this.material,o),r.renderOrder=1,this.updateGeometryAttributes(r,e),this.material.needsUpdate=!0,r.onBeforeRender=()=>{this.applyWorldSpace()},r}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:r,loopDuration:o=0}){return Math.ceil(e*(r+o))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,r){let o=e-this.lastEmitTime,n=1/r;if(o>=n){let a=Math.max(1,Math.floor(o/n));return this.lastEmitTime=e,this.emittedParticlesAmount+a>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=a,a}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(Fi(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}};import{BufferGeometry as vR,Float32BufferAttribute as SR,MeshBasicMaterial as wR}from"three";var Is=class extends It{constructor(e,r,o){super(e,r);this.type="ParticleSystem";this.geometry=new vR;this.actualTime=0;this.currentLoopTime=0;this.started=!1;this.stopped=!1;this.timeoutId=void 0;this.isFrozen=!1;this.isIdle=!0;this.emitter=null;this.colliderEntities=[];this.renderer=null;this.isPreWarm=!1;this._hasOnAfterRenderBeenCalled=!1;this.onAfterRender=e=>{this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))};this.context=o,this.data={...r,...Fi(r)},this.geometry.setAttribute("position",new SR([],3)),this.material=new wR({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new Vd(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let r=this.data.emitTimeCycle==="one_time";if((this.data.emitTimeCycle==="loop"||r)&&this.currentLoopTime>this.data.emitTimeDuration*1e3&&(this.stopped||(this.stop(),r||this.start(this.data.emitTimeDelay*1e3))),this.emitter&&this.started){let n=this.actualTime/1e3;this.emitter.update(n,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(r=>r.identity===e)}getColliderData(e){let r=this.colliderEntities.find(o=>o.identity===e);return r?r.data:null}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Be(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...at.drop(e,1).props}}),Be(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...at.drop(e,1).props}})}updateState(e,r){super.updateState(e,r),this.updateParticleState(e)}updateParticleState(e){if(!!this.emitter){if(e.colliderEntityId!==void 0&&e.colliderEntityId!==null){let r=this.context.scene.find(e.colliderEntityId);this.colliderEntities=r?[r]:[]}e.colliderEntityId===null&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}};function PR(){try{let i=window.location.href;if(i.includes("reducesubdiv=")){let t=i.indexOf("reducesubdiv=")+13;return parseInt(i.slice(t,t+1))}}catch{}}var lm=PR();function OR(i,t,e){lm!==void 0&&t?.geometry&&"subdivisions"in t.geometry&&(t.geometry.subdivisions??0)>lm&&Object.assign(t.geometry,{subdivisions:lm});let r;return t.geometry.type==="TextGeometry"?new Di(i,t,e):t.geometry.type==="InputGeometry"?new _d(i,t,e):(t.geometry.type==="SubdivGeometry"?r=new Cn(i,t,e):t.geometry.type==="PathGeometry"?r=new As(i,t,e):t.geometry.type==="VectorGeometry"?r=new Dd(i,t,e):t.geometry.type==="BooleanGeometry"?r=new lr(i,t,e):t.geometry.type==="ShapeBlendGeometry"?r=new ji(i,t,e):t.geometry.type==="UIGeometry"?r=new Dn(i,t,e):r=new tt(i,t,e),r)}function zd(i,t,e){return console.assert(t.type!==void 0),t.type==="Mesh"?OR(i,t,e):t.type==="Empty"?new Bi(i,t):t.type==="Particle"?new Is(i,t,e):t.type==="ParticleCollider"?new vs(i,t,e):t.type==="Splat"?new Bi(i,t):t.type==="Bone"?new Ld(i,t):t.type==="Page"?new Er(i,t,e):t.type==="PointLight"?new Nd(i,t,e):t.type==="SpotLight"?new Os(i,t,e):t.type==="DirectionalLight"?new Ps(i,t,e):t.type==="Component"||t.type==="Instance"?new ti(i,t,e):Rr.is(t.type)?new Zo(i,t):(console.error(t),new Bi(i,t))}Gr.createEntity=zd;function TR(i,t,e){let r=zd(i.identity,t,e),o=i.children,n=i.attachedPaths,a=i.parent,s=i.component,l=i.instances,c=i.overrideData,u=i.uuid,d=i.stateSelection;i.dispose();for(let p of Object.keys(i))delete i[p];Object.setPrototypeOf(i,Object.getPrototypeOf(r));for(let p of Object.keys(r))i[p]=r[p];i.children=[...i.children,...o],i.attachedPaths=n,i.parent=a,i.component=s,i.instances=l,i.uuid=u,i.overrideData=c,i.updateState(i.data,e),d&&i.changeSelectedState(d,e),i.resetBBoxNeedsUpdate()}Gr.changeEntityProptotype=TR;Gr.Cloner=Ri;function xS(i,t,e,r){i.updateByOp(t,e,r,!1)}import{BufferAttribute as vS,BufferGeometry as SS,DataTexture as fm,FloatType as oi,Matrix4 as PS,Mesh as cm,NearestFilter as To,PlaneGeometry as LR,Quaternion as OS,RedFormat as um,RGBAFormat as Ds,Scene as dm,ShaderMaterial as wS,Vector2 as pm,Vector3 as Ud,WebGLMultipleRenderTargets as BR,WebGLRenderTarget as Fd}from"three";import{Box2 as CR,BufferAttribute as AR,BufferGeometry as MR,Camera as IR,GLSL3 as ER,Mesh as NR,RawShaderMaterial as DR,Scene as _R,Vector4 as RR}from"three";var Ui=5,Es=new MR;Es.setAttribute("position",new AR(new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),3));var _n=class extends DR{constructor(t){super({...t,depthTest:!1,depthWrite:!1,glslVersion:ER,vertexShader:`
3548
3548
  precision highp float;
3549
3549
  in vec3 position;
3550
3550
  void main() {
@@ -4222,7 +4222,7 @@ void main() {
4222
4222
  gl_FragColor = texture(inputTexture, vUv);
4223
4223
  gVelocity = vec4(0.0);
4224
4224
  }
4225
- `,r.pyramidTextureSize.value=new pm(this.pyramidRenderTarget[0].width,this.pyramidRenderTarget[0].height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},ji=hm;ji.streamCompaction=new Gd;var VR=new PS,zR=new PS,Ns=new OS,ki=new Ud,jd=new Ud,GR=new OS;function FR(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];jo.is(r)&&TS.call(r,i,t+1)}}function TS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];jo.is(o)&&TS.call(o,i,t+1)}}}function jR(){if(this.shapesDataTexture.value===void 0){let a=new fm(new Float32Array(4*Wt*Ui),Wt,Ui,Ds,oi);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=VR.copy(this.matrixWorld).invert(),n=0;FR.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof Ri)return;if(a instanceof vs||a instanceof Is)return;a instanceof zr?s=a.object:s=a;let l=a.data?.cloner;if(_e.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof tt))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(zR.multiplyMatrices(o,a.matrixWorld).decompose(jd,Ns,ki),c.type==="TorusGeometry"&&c.arc!==360){let b=c.arc*Math.PI/180;b=b/4,Ns.multiply(GR.set(0,0,Math.sin(b),Math.cos(b)))}let p=u.overrideGlobalBlend?u.blendRange:r;p=p/this.bboxSize*2,t[n*4]=(jd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(jd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(jd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[Wt*4+n*4]=-Ns.x,t[Wt*4+n*4+1]=-Ns.y,t[Wt*4+n*4+2]=-Ns.z,t[Wt*4+n*4+3]=Ns.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*ki.x+p,f[2]*ki.x+p,f[3]*ki.x+p);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let b=c.width,w=c.height,P=c.depth;f[0]=2,f[1]=(b-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(P-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(b**2+w**2+P**2)/this.bboxSize*ki.x+p)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let b=c.height,w=c.radiusBottom,P=c.radiusTop;if(P>=w){let S=Math.atan2(P-w,b),T=(Math.PI/2-S)/2;P-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>P){let S=Math.atan2(w-P,b),T=(Math.PI/2-S)/2;P-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===P?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=P/this.bboxSize*2),e=Math.max(e,f[1]*4*ki.x+p)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[Wt*12+n*4+3]=f[2];let b=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-b;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*ki.x/this.bboxSize+p)}t.set(f,Wt*8+n*4),t[Wt*12+n*4]=p,t[Wt*12+n*4+1]=h/this.bboxSize*2,t[Wt*12+n*4+2]=ki.x;let m=s.material,y=m.uniforms.nodeU0.node.value,g=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(g=-1),t[Wt*16+n*4]=y.r,t[Wt*16+n*4+1]=y.g,t[Wt*16+n*4+2]=y.b,t[Wt*16+n*4+3]=g,g<1&&this.material.defines.SHAPEBLEND_C===1&&(this.material.transparent=!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as HR,Ray as WR,Raycaster as qR}from"three";var MS=1<<9;function CS(i,t){let e=!1,r=i.layers.mask&MS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ms(i),hs(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof sr&&i.needsAO&&i.layers.enable(5),e}function AS(i,t){if(!t.layers)return!1;let e=i.layers.mask&MS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function IS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof sr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)CS(e,e.material[r])&&(t=!0);else CS(e,e.material)&&(t=!0)}),t}function ES(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof sr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)AS(e,e.material[r])&&(t=!0);else AS(e,e.material)&&(t=!0)}),t}var $R=new qR,XR=new HR,YR=new WR;function kl(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=XR.copy(n.matrixWorld).invert(),s=YR.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=$R;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var kd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var NS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var Ao=class{};Qi(Ao,"DepthMapRange",1<<16),Qi(Ao,"MemoryPageSize",65536),Qi(Ao,"BytesPerFloat",4),Qi(Ao,"BytesPerInt",4);function KR(i){let t,e,r,o,n,a,s,l,c,u,d,p,f,h,m,y;function g(M){let D=new Float64Array(u,a,16);for(let R=0;R<16;R++)D[R]=M[R];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,p.DepthMapRange,r);let R=new Uint32Array(r);_=R.buffer,R.set(new Uint32Array(u,l,r))}else if(r===1){let R=new Uint32Array(r);R[0]=new Uint32Array(u,o,e)[0],_=R.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function b(M,D,_){let R=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=D[U],q=M[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):N(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):N(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||P(W,ee,te,j))&&(F.length===0||!P(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);R[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,R[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,R[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(M,D){let _=[],R=D.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):N(B)),V=D.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):N(B)),U=M.length;for(let B=0;B<U;B+=3){let q=M[B],j=M[B+1],F=M[B+2];(R.length===0||P(q,j,F,R))&&(V.length===0||!P(q,j,F,V))||_.push(B/3)}return _}function P(M,D,_,R,V){return R[V==="Intersect"?"every":"some"](U=>{let B=S(M,D,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?x(B.x,B.y,B.z,U):E(B.x,B.y,B.z,U)})}function S(M,D,_,R,V){let U=M-V[0],B=D-V[1],q=_-V[2],j=1/(R[3]*U+R[7]*B+R[11]*q+R[15]);return{x:(R[0]*U+R[4]*B+R[8]*q+R[12])*j+V[0],y:(R[1]*U+R[5]*B+R[9]*q+R[13])*j+V[1],z:(R[2]*U+R[6]*B+R[10]*q+R[14])*j+V[2]}}function T(M){let D=M.cropSize[0]/2,_=M.cropSize[1]/2,R=M.cropSize[2]/2,V=[M.cropCenter[0]-D,M.cropCenter[1]-_,M.cropCenter[2]-R,M.cropCenter[0]+D,M.cropCenter[1]+_,M.cropCenter[2]+R],U=A(M.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:M.cropCenter})}function A(M){let D=[],_=M[0]*Math.PI/180,R=M[1]*Math.PI/180,V=M[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(R),j=Math.sin(R),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return D[0]=q*F,D[1]=-q*H,D[2]=j,D[4]=ee+te*j,D[5]=W-Y*j,D[6]=-B*q,D[8]=Y-W*j,D[9]=te+ee*j,D[10]=U*q,D[12]=0,D[13]=0,D[14]=0,D[3]=0,D[7]=0,D[11]=0,D[15]=1,D}function x(M,D,_,R){return M>=R[0]&&M<=R[3]&&D>=R[1]&&D<=R[4]&&_>=R[2]&&_<=R[5]}function N(M){let D=2/M.cropSize[0],_=2/M.cropSize[1],R=2/M.cropSize[2],V=A(M.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:R,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,D,_,R){let V=(M-R.cropCenter[0])*R.invRadiusX,U=(D-R.cropCenter[1])*R.invRadiusY,B=(_-R.cropCenter[2])*R.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=M=>{if(M.data.getCroppedIndexes){let D=new Uint32Array(w(new Float32Array(M.data.positions),M.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:D},[D])}else if(M.data.positions)d=M.data.positions,f=new Float32Array(d),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,h=M.data.meshIndexIntervals,b(m,y,h),i.postMessage({sortSetupComplete:!0});else if(M.data.sort||M.data.newMatrixWorlds||M.data.newCropsArray)(M.data.newMatrixWorlds||M.data.newCropsArray)&&(y=M.data.newCropsArray||y,m=M.data.newMatrixWorlds||m,b(m,y,h)),g(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){p=M.data.init.Constants,e=M.data.init.splatCount;let D=p.BytesPerInt,_=p.BytesPerFloat*3,R=new Uint8Array(M.data.init.sorterWasmBytes),V=D+_,U=e*V,B=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,q=p.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/p.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(R).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*D,a=n+e*_,c=a+16*p.BytesPerFloat*2,s=c+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function DS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",KR.toString(),")(self)"],{type:"application/javascript"}))),e=atob(NS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:Ao.BytesPerFloat,BytesPerInt:Ao.BytesPerInt,DepthMapRange:Ao.DepthMapRange,MemoryPageSize:Ao.MemoryPageSize}}}),t}import{Matrix4 as zS,Quaternion as GS,Vector2 as pL,Vector3 as _s}from"three";import{BufferAttribute as QR,BufferGeometry as ZR,Color as JR,DataTexture as Wd,DataUtils as eL,DoubleSide as tL,DynamicDrawUsage as rL,FloatType as RS,HalfFloatType as oL,InstancedBufferAttribute as iL,InstancedBufferGeometry as nL,Mesh as aL,NormalBlending as sL,RGBAFormat as lL,RGBAIntegerFormat as cL,RGFormat as LS,ShaderMaterial as uL,UnsignedIntType as dL,Vector2 as Hi}from"three";var Hd=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),_S=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var qd=new Hi;function $d(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var Wi=class extends aL{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=Wi.buildGeomtery(r),c=Wi.buildMaterial(a);return new Wi(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
4225
+ `,r.pyramidTextureSize.value=new pm(this.pyramidRenderTarget[0].width,this.pyramidRenderTarget[0].height),Object.assign(n.uniforms,r)};this.material.shapeBlendhack=o,this.material.root.shapeBlendhack=o}},ji=hm;ji.streamCompaction=new Gd;var VR=new PS,zR=new PS,Ns=new OS,ki=new Ud,jd=new Ud,GR=new OS;function FR(i,t=0){let e=this.children.length;for(;e--;){let r=this.children[e];jo.is(r)&&TS.call(r,i,t+1)}}function TS(i,t=0){if(i(this,t)!==!0){let r=this.children.length;for(;r--;){let o=this.children[r];jo.is(o)&&TS.call(o,i,t+1)}}}function jR(){if(this.shapesDataTexture.value===void 0){let a=new fm(new Float32Array(4*Wt*Ui),Wt,Ui,Ds,oi);this.shapesDataTexture.value=a}let i=this.shapesDataTexture.value,t=i.image.data;i.needsUpdate=!0;let e=0,r=this.data.geometry.blendRange,o=VR.copy(this.matrixWorld).invert(),n=0;FR.call(this,a=>{if(a.visible===!1)return!0;let s;if(a instanceof Ri)return;if(a instanceof vs||a instanceof Is)return;a instanceof zr?s=a.object:s=a;let l=a.data?.cloner;if(_e.is(a)&&l&&!l.hideBase&&l.type!=="radial"&&l.disabled!==!0||!(s instanceof tt))return;let c=s.geometry.userData.parameters,u=c.shapeBlendNode;if(u===void 0)return;if(zR.multiplyMatrices(o,a.matrixWorld).decompose(jd,Ns,ki),c.type==="TorusGeometry"&&c.arc!==360){let b=c.arc*Math.PI/180;b=b/4,Ns.multiply(GR.set(0,0,Math.sin(b),Math.cos(b)))}let p=u.overrideGlobalBlend?u.blendRange:r;p=p/this.bboxSize*2,t[n*4]=(jd.x-this.bboxOffset)/this.bboxSize*2,t[n*4+1]=(jd.y-this.bboxOffset)/this.bboxSize*2,t[n*4+2]=(jd.z-this.bboxOffset)/this.bboxSize*2,t[n*4+3]=u.operation===0?1:u.operation===2?-1:-2,t[Wt*4+n*4]=-Ns.x,t[Wt*4+n*4+1]=-Ns.y,t[Wt*4+n*4+2]=-Ns.z,t[Wt*4+n*4+3]=Ns.w;let f=new Float32Array(4),h=0;if(c.type==="SphereGeometry")c.width===c.height&&c.width===c.depth?f[0]=0:f[0]=1,f[1]=c.width/this.bboxSize,f[2]=c.height/this.bboxSize,f[3]=c.depth/this.bboxSize,e=Math.max(e,f[1]*ki.x+p,f[2]*ki.x+p,f[3]*ki.x+p);else if(c.type==="CubeGeometry"){h=c.cornerRadius;let b=c.width,w=c.height,P=c.depth;f[0]=2,f[1]=(b-2*h)/this.bboxSize,f[2]=(w-2*h)/this.bboxSize,f[3]=(P-2*h)/this.bboxSize,e=Math.max(e,Math.sqrt(b**2+w**2+P**2)/this.bboxSize*ki.x+p)}else if(c.type==="CylinderGeometry"){h=c.cornerRadius;let b=c.height,w=c.radiusBottom,P=c.radiusTop;if(P>=w){let S=Math.atan2(P-w,b),T=(Math.PI/2-S)/2;P-=h/Math.tan(T),w-=h*Math.tan(T)}else if(w>P){let S=Math.atan2(w-P,b),T=(Math.PI/2-S)/2;P-=h*Math.tan(T),w-=h/Math.tan(T)}f[1]=(c.height-2*h)/this.bboxSize,w===P?(f[0]=3,f[2]=w/this.bboxSize*2):(f[0]=4,f[2]=w/this.bboxSize*2,f[3]=P/this.bboxSize*2),e=Math.max(e,f[1]*4*ki.x+p)}else if(c.type==="TorusGeometry"){if(f[0]=5,f[1]=(c.width-c.depth)/this.bboxSize,f[2]=c.depth/this.bboxSize,c.arc!==360){f[0]=6,f[3]=f[1],t[Wt*12+n*4+3]=f[2];let b=2*Math.atan2(f[2]/2,f[1]),w=c.arc*Math.PI/180/2-b;f[1]=Math.sin(w),f[2]=Math.cos(w)}e=Math.max(e,c.width*ki.x/this.bboxSize+p)}t.set(f,Wt*8+n*4),t[Wt*12+n*4]=p,t[Wt*12+n*4+1]=h/this.bboxSize*2,t[Wt*12+n*4+2]=ki.x;let m=s.material,y=m.uniforms.nodeU0.node.value,g=m.uniforms.nodeU1.value;u.operation!==0&&!u.useColor&&(g=-1),t[Wt*16+n*4]=y.r,t[Wt*16+n*4+1]=y.g,t[Wt*16+n*4+2]=y.b,t[Wt*16+n*4+3]=g,g<1&&this.material.defines.SHAPEBLEND_C===1&&this.material.setTransparent(!0),n++}),this.npart=n,this.spatialPassUniforms.span.value=e*1.4}import{Matrix4 as HR,Ray as WR,Raycaster as qR}from"three";var MS=1<<9;function CS(i,t){let e=!1,r=i.layers.mask&MS,o=t.getLayersOfType("transmission"),n=t.getLayersOfType("outline");return n.length>0&&(i.layers.set(8),o.length>0&&i.layers.enable(3),e=!0,ms(i),hs(i)),o.length===0&&n.length===0&&i.layers.set(0),r&&i.layers.set(9),i instanceof sr&&i.needsAO&&i.layers.enable(5),e}function AS(i,t){if(!t.layers)return!1;let e=i.layers.mask&MS,r=!1,o=t.getLayersOfType("transmission").filter(a=>a.data.visible),n=t.getLayersOfType("outline").filter(a=>a.data.visible);return o.length>0&&(i.layers.set(3),n.length>0&&i.layers.enable(8),r=!0),o.length===0&&n.length===0&&i.layers.set(0),e&&i.layers.set(9),i.needsAO&&i.layers.enable(5),r}function IS(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof sr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)CS(e,e.material[r])&&(t=!0);else CS(e,e.material)&&(t=!0)}),t}function ES(i){let t=!1;return i.traverseEntity(e=>{if(e instanceof sr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)AS(e,e.material[r])&&(t=!0);else AS(e,e.material)&&(t=!0)}),t}var $R=new qR,XR=new HR,YR=new WR;function kl(i,t,e,r=!1){let o=i.cloner;if(o)for(let n of o.children){let a=XR.copy(n.matrixWorld).invert(),s=YR.copy(t.ray).applyMatrix4(a),l=i.matrixWorld;s.applyMatrix4(l);let c=$R;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far;let u=c.intersectObject(i,!1);u.length>0&&e.push({...u[0],object:r?n:i})}}var kd=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let n=[o,r],a=r;for(;this._constraints.has(a);){if(a=this._constraints.get(a),n.includes(a)){console.warn(`circular dependency detected: ${n.join(" -> ")}`);break}e.has(a)||n.push(a)}for(let s=n.length-2;s>=0;s--)if(!e.has(n[s])){let l=t.find(n[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${n[s]}`),e.add(n[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var NS="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL";var Ao=class{};Qi(Ao,"DepthMapRange",1<<16),Qi(Ao,"MemoryPageSize",65536),Qi(Ao,"BytesPerFloat",4),Qi(Ao,"BytesPerInt",4);function KR(i){let t,e,r,o,n,a,s,l,c,u,d,p,f,h,m,y;function g(M){let D=new Float64Array(u,a,16);for(let R=0;R<16;R++)D[R]=M[R];let _;if(r>1){t.exports.sortIndexes(o,n,c,a,s,l,p.DepthMapRange,r);let R=new Uint32Array(r);_=R.buffer,R.set(new Uint32Array(u,l,r))}else if(r===1){let R=new Uint32Array(r);R[0]=new Uint32Array(u,o,e)[0],_=R.buffer}else _=new ArrayBuffer(0);i.postMessage({sortDone:!0,indexesBuffer:_},[_])}function b(M,D,_){let R=new Float32Array(u,n,e*3);r=0;let V=new Uint32Array(u,o,e);for(let U=0;U<_.length-1;U++){let B=D[U],q=M[U].elements,j=B.filter(H=>H.enabled&&H.mode==="Include").map(H=>H.type==="Box"?T(H):N(H)),F=B.filter(H=>H.enabled&&H.mode==="Exclude").map(H=>H.type==="Box"?T(H):N(H));for(let H=_[U];H<_[U+1];H++){let W=f[H*3],ee=f[H*3+1],te=f[H*3+2];if((j.length===0||P(W,ee,te,j))&&(F.length===0||!P(W,ee,te,F))){let Y=1/(q[3]*W+q[7]*ee+q[11]*te+q[15]);R[r*3]=(q[0]*W+q[4]*ee+q[8]*te+q[12])*Y,R[r*3+1]=(q[1]*W+q[5]*ee+q[9]*te+q[13])*Y,R[r*3+2]=(q[2]*W+q[6]*ee+q[10]*te+q[14])*Y,V[r]=H,r++}}}}function w(M,D){let _=[],R=D.filter(B=>B.enabled&&B.mode==="Include").map(B=>B.type==="Box"?T(B):N(B)),V=D.filter(B=>B.enabled&&B.mode==="Exclude").map(B=>B.type==="Box"?T(B):N(B)),U=M.length;for(let B=0;B<U;B+=3){let q=M[B],j=M[B+1],F=M[B+2];(R.length===0||P(q,j,F,R))&&(V.length===0||!P(q,j,F,V))||_.push(B/3)}return _}function P(M,D,_,R,V){return R[V==="Intersect"?"every":"some"](U=>{let B=S(M,D,_,U.invRotationMatrix,U.cropCenter);return Array.isArray(U)?x(B.x,B.y,B.z,U):E(B.x,B.y,B.z,U)})}function S(M,D,_,R,V){let U=M-V[0],B=D-V[1],q=_-V[2],j=1/(R[3]*U+R[7]*B+R[11]*q+R[15]);return{x:(R[0]*U+R[4]*B+R[8]*q+R[12])*j+V[0],y:(R[1]*U+R[5]*B+R[9]*q+R[13])*j+V[1],z:(R[2]*U+R[6]*B+R[10]*q+R[14])*j+V[2]}}function T(M){let D=M.cropSize[0]/2,_=M.cropSize[1]/2,R=M.cropSize[2]/2,V=[M.cropCenter[0]-D,M.cropCenter[1]-_,M.cropCenter[2]-R,M.cropCenter[0]+D,M.cropCenter[1]+_,M.cropCenter[2]+R],U=A(M.cropRotation);return Object.assign(V,{invRotationMatrix:U,cropCenter:M.cropCenter})}function A(M){let D=[],_=M[0]*Math.PI/180,R=M[1]*Math.PI/180,V=M[2]*Math.PI/180,U=Math.cos(_),B=Math.sin(_),q=Math.cos(R),j=Math.sin(R),F=Math.cos(V),H=Math.sin(V),W=U*F,ee=U*H,te=B*F,Y=B*H;return D[0]=q*F,D[1]=-q*H,D[2]=j,D[4]=ee+te*j,D[5]=W-Y*j,D[6]=-B*q,D[8]=Y-W*j,D[9]=te+ee*j,D[10]=U*q,D[12]=0,D[13]=0,D[14]=0,D[3]=0,D[7]=0,D[11]=0,D[15]=1,D}function x(M,D,_,R){return M>=R[0]&&M<=R[3]&&D>=R[1]&&D<=R[4]&&_>=R[2]&&_<=R[5]}function N(M){let D=2/M.cropSize[0],_=2/M.cropSize[1],R=2/M.cropSize[2],V=A(M.cropRotation);return{invRadiusX:D,invRadiusY:_,invRadiusZ:R,cropCenter:M.cropCenter,invRotationMatrix:V}}function E(M,D,_,R){let V=(M-R.cropCenter[0])*R.invRadiusX,U=(D-R.cropCenter[1])*R.invRadiusY,B=(_-R.cropCenter[2])*R.invRadiusZ;return V*V+U*U+B*B<=1}i.onmessage=M=>{if(M.data.getCroppedIndexes){let D=new Uint32Array(w(new Float32Array(M.data.positions),M.data.crops)).buffer;i.postMessage({outOfBoundsIndexes:D},[D])}else if(M.data.positions)d=M.data.positions,f=new Float32Array(d),m=M.data.meshMatrixWorlds,y=M.data.cropsArray,h=M.data.meshIndexIntervals,b(m,y,h),i.postMessage({sortSetupComplete:!0});else if(M.data.sort||M.data.newMatrixWorlds||M.data.newCropsArray)(M.data.newMatrixWorlds||M.data.newCropsArray)&&(y=M.data.newCropsArray||y,m=M.data.newMatrixWorlds||m,b(m,y,h)),g(M.data.sort.view,M.data.sort.cameraPosition);else if(M.data.init){p=M.data.init.Constants,e=M.data.init.splatCount;let D=p.BytesPerInt,_=p.BytesPerFloat*3,R=new Uint8Array(M.data.init.sorterWasmBytes),V=D+_,U=e*V,B=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,q=p.MemoryPageSize*32,j=U+B+q,F=Math.floor(j/p.MemoryPageSize)+1,H={module:{},env:{memory:new WebAssembly.Memory({initial:F*2,maximum:F*3,shared:!0})}};WebAssembly.compile(R).then(W=>WebAssembly.instantiate(W,H)).then(W=>{t=W,o=0,n=e*D,a=n+e*_,c=a+16*p.BytesPerFloat*2,s=c+e*p.BytesPerInt,l=s+p.DepthMapRange*p.BytesPerInt,u=H.env.memory.buffer,i.postMessage({sortSetupPhase1Complete:!0})})}}}function DS(i){let t=new Worker(URL.createObjectURL(new Blob(["(",KR.toString(),")(self)"],{type:"application/javascript"}))),e=atob(NS),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:i,Constants:{BytesPerFloat:Ao.BytesPerFloat,BytesPerInt:Ao.BytesPerInt,DepthMapRange:Ao.DepthMapRange,MemoryPageSize:Ao.MemoryPageSize}}}),t}import{Matrix4 as zS,Quaternion as GS,Vector2 as pL,Vector3 as _s}from"three";import{BufferAttribute as QR,BufferGeometry as ZR,Color as JR,DataTexture as Wd,DataUtils as eL,DoubleSide as tL,DynamicDrawUsage as rL,FloatType as RS,HalfFloatType as oL,InstancedBufferAttribute as iL,InstancedBufferGeometry as nL,Mesh as aL,NormalBlending as sL,RGBAFormat as lL,RGBAIntegerFormat as cL,RGFormat as LS,ShaderMaterial as uL,UnsignedIntType as dL,Vector2 as Hi}from"three";var Hd=function(){let i=new Float32Array(1),t=new Int32Array(i.buffer);return function(e){return i[0]=e,t[0]}}(),_S=function(i,t,e,r){return i+(t<<8)+(e<<16)+(r<<24)};var qd=new Hi;function $d(i){let t=!1;return i.scene.objects.traverse((e,r)=>{if(r.visible===!1)return!0;r.type==="Splat"&&(t=!0)}),t}var Wi=class extends aL{constructor(e,r,o,n,a=!1,s=1,l,c){super(o,n);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=o,this.material=n,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,n=1,a,s){let l=Wi.buildGeomtery(r),c=Wi.buildMaterial(a);return new Wi(e,r,l,c,o,n,a,s)}static buildMaterial(e){let r=`
4226
4226
  precision highp float;
4227
4227
  #include <common>
4228
4228
 
@@ -4376,4 +4376,4 @@ void main() {
4376
4376
  A = exp(A) * vColor.a;
4377
4377
  gl_FragColor = vec4(color.rgb, A);
4378
4378
  gVelocity = vec4(0.0); // so it is ignored by TAA
4379
- }`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Hi},viewport:{type:"v2",value:new Hi},basisViewport:{type:"v2",value:new Hi},debugColor:{type:"v3",value:new JR},covariancesTextureSize:{type:"v2",value:new Hi(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Hi(1024,1024)},orthoZoom:{type:"f",value:-1}};return new uL({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:sL,depthTest:!0,depthWrite:!1,side:tL})}static buildGeomtery(e){let r=new ZR;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new QR(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new nL().copy(r),s=new Uint32Array(e),l=new iL(s,1,!1);return l.setUsage(rL),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new Hi(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new Hi(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=eL.toHalfFloat(this.covariances[h]);s=new Wd(l,n.x,n.y,LS,oL)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new Wd(l,n.x,n.y,LS,RS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;c[g]=_S(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=Hd(this.centers[y]),c[g+2]=Hd(this.centers[y+1]),c[g+3]=Hd(this.centers[y+2])}let u=new Wd(c,a.x,a.y,cL,dL);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Wd(p,d,1,lL,RS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(qd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(qd),this.material.uniforms.basisViewport.value.set(2/qd.x,2/qd.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var VS,mm=new Promise(i=>{VS=i}),BS=!1;var Xd;function ym(){if(BS)return;if(Xd)return Xd;async function i(){let e=await import("./gaussian-splat-compression.js");VS(e),BS=!0}return Xd=i(),Xd}var FS;mm.then(i=>FS=i);var ql=class{constructor(t={}){Qi(this,"updateView",function(){let t=new zS,e=[],r=new _s(0,0,-1),o=new _s(0,0,-1),n=new _s,a=new _s;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!p&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let d={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=d:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(d))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new zS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new pL;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new _s().fromArray(t.position)),t.orientation&&(t.orientation=new GS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new FS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new _s,o=new GS,n=!1,a=1,s,l){this.splatMesh=Wi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,d)=>this.update(c,d)}setupSortWorker(t){this.sortWorker=DS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var bL=new gL;bL.wireframe=!0;var jS=new hL,Yd=class extends fL{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new kd;this.invisibleObjects=new Bi("jflkdsafjasdifjaslk",{...ou.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Er("fdasfa",{...Lo.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=ES(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=IS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Er&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>Zc(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===yi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Er&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Er&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Dn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Er&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(e){this.toExpandCloner.forEach(r=>{r.expandCloner(e)}),this.toExpandCloner.clear()}doPendingUpdateCloner(e){this.toUpdateCloner.forEach(r=>{r.cloner?.update(e)}),this.toUpdateCloner.clear()}doPendingUpdates(e){this.doPendingExpandCloner(e),this.doPendingUpdateCloner(e),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Li(n)&&Ll(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof ji&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Ll(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Li(o)&&(o.freeBooleanPointer(),n instanceof lr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof As&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Li(o)&&(o.invalidateUpstreamBooleanData(),Ll(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof lr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Er&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{xS(a,r,o,{scene:this,shared:n}),a instanceof tt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Dn||l instanceof Er)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Zo&&n.updateUp()}),this.doPendingExpandCloner({scene:this,shared:r}),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_e.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{_e.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ui(u.data,d=>{let p=d.events.data(l.id),f=u.goUp(s);if(f){let h=[...Qc(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=Je.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ti&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ui(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of su.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof ti&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Rd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ti&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)_e.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(_e.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let d=s.matrixWorld.clone().invert();u.point.applyMatrix4(d),o.push(u)}}else(Li(s)||Bl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),kl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||Bl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),kl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)_e.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)_e.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)_e.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof tt&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Ll(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)jo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)_e.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=zd(e,r,l);return c instanceof ji&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof tt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let d=u.dataPatched;if(u instanceof tt&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new mL().fromArray(m)),h=new xL(p,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new yL;return o.setFromPoints(r),o.getCenter(jS),jS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof ar&&e(r.material[o]);else r.material instanceof ar&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Zo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new ql({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as vL}from"three/examples/jsm/loaders/DRACOLoader.js";var qi;function US(i){return qi||(qi=new vL,qi.setDecoderPath(i!==void 0?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qi.decoderPending}async function SL(i){if(qi){let t={attributeIDs:qi.defaultAttributeIDs,attributeTypes:qi.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await qi.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function kS(i,t){let[e,r]=bp(jc.deserialize(new Uint8Array(i)));return du(e),t&&t(e),r.result().data}function HS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function WS(i){for(let t of i){let e=await SL(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as rye}from"three";import{mergeBufferGeometries as nye}from"three/examples/jsm/utils/BufferGeometryUtils.js";function qS(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as $S,ShaderLib as wL}from"three";function XS(i){let t=new Set;return i.traverse(e=>{if(e instanceof sr)if(ht(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(PL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new $S,specularColor:new $S});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},wL.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=pv(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else OL(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function PL(i){return i.getLayersOfType("transmission").length>0}function OL(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function YS(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function KS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as TL}from"three/examples/jsm/utils/BufferGeometryUtils.js";function QS(i){let t=[];return i.traverse(e=>{e instanceof Ri&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&qS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=TL(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Lv})}),i}function ZS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function JS(i){Object.values(i.shared.materials).forEach(t=>{gm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?gm(e.material):"materials"in e&&e.materials.forEach(r=>{gm(r)})})}function gm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var ow=Bs(tw(),1);var rw="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xm=class extends AL{load(t,e,r,o=console.error){let n=new CL(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(rw+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(rw),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await kS(t,JS),r=HS(e);e.version&&(0,ow.default)(e.version,"1.12.96")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&US(),kv(e)&&Fb(),Jv(e)&&Av(),B1(e)&&_1(),$d(e)&&ym()].filter(Boolean)),r.length&&await WS(r);let o=!1,n=new Tn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Yd(e.scene,n);$d(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=QS(a),a=XS(a),a=YS(a),a=KS(a),a=ZS(a),a}};export{xm as default};
4379
+ }`,n={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new Hi},viewport:{type:"v2",value:new Hi},basisViewport:{type:"v2",value:new Hi},debugColor:{type:"v3",value:new JR},covariancesTextureSize:{type:"v2",value:new Hi(1024,1024)},centersColorsTextureSize:{type:"v2",value:new Hi(1024,1024)},orthoZoom:{type:"f",value:-1}};return new uL({uniforms:n,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:sL,depthTest:!0,depthWrite:!1,side:tL})}static buildGeomtery(e){let r=new ZR;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),n=new QR(o,3);r.setAttribute("position",n),n.setXYZ(0,-1,-1,0),n.setXYZ(1,-1,1,0),n.setXYZ(2,1,1,0),n.setXYZ(3,1,-1,0),n.needsUpdate=!0;let a=new nL().copy(r),s=new Uint32Array(e),l=new iL(s,1,!1);return l.setUsage(rL),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(n=>n.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let n of this.splatBuffers){let a=n.nsplats;this.colors.subarray(e,e+a*4).set(n.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(n.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(n.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,n=new Hi(4096,1024);for(;n.x*n.y*2<o*6;)n.y*=2;let a=new Hi(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(n.x*n.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=eL.toHalfFloat(this.covariances[h]);s=new Wd(l,n.x,n.y,LS,oL)}else l=new Float32Array(n.x*n.y*2),l.set(this.covariances),s=new Wd(l,n.x,n.y,LS,RS);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(n);let c=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;c[g]=_S(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),c[g+1]=Hd(this.centers[y]),c[g+2]=Hd(this.centers[y+1]),c[g+3]=Hd(this.centers[y+2])}let u=new Wd(c,a.x,a.y,cL,dL);u.internalFormat="RGBA32UI",u.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=u,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new Wd(p,d,1,lL,RS);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:n},centerColors:{data:c,texture:u,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e){let r=this.geometry;r.attributes.splatIndex.set(e),r.attributes.splatIndex.needsUpdate=!0,r.instanceCount=e.length}updateUniforms(e,r,o,n){this.splatCount>0&&(qd.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(qd),this.material.uniforms.basisViewport.value.set(2/qd.x,2/qd.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=n,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}dispose(){this.geometry.dispose(),this.material.dispose(),this.splatDataTextures&&(this.splatDataTextures.covariances.texture.dispose(),this.splatDataTextures.centerColors.texture.dispose(),this.splatDataTextures.meshMatrixWorlds.texture.dispose()),this.removeFromParent()}};var VS,mm=new Promise(i=>{VS=i}),BS=!1;var Xd;function ym(){if(BS)return;if(Xd)return Xd;async function i(){let e=await import("./gaussian-splat-compression.js");VS(e),BS=!0}return Xd=i(),Xd}var FS;mm.then(i=>FS=i);var ql=class{constructor(t={}){Qi(this,"updateView",function(){let t=new zS,e=[],r=new _s(0,0,-1),o=new _s(0,0,-1),n=new _s,a=new _s;return function(s=!1,l){let c=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(l.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(l.position).sub(n).length()>=1&&(f=!0),!p&&!f&&!c&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,n.copy(l.position),r.copy(o),t.copy(l.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),e[0]=l.position.x,e[1]=l.position.y,e[2]=l.position.z;let d={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...c?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=d:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(d))}}());this.scene=t.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new zS().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(t,e){let r=new pL;if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(t.getSize(r),this.cameraFocalLengthX=e.projectionMatrix.elements[0]*this.devicePixelRatio*r.x*.45,this.cameraFocalLengthY=e.projectionMatrix.elements[5]*this.devicePixelRatio*r.y*.45,this.splatMesh.updateUniforms(r,this.cameraFocalLengthX,this.cameraFocalLengthY,e.isPerspectiveCamera?-1:e.zoom*this.devicePixelRatio))}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new _s().fromArray(t.position)),t.orientation&&(t.orientation=new GS().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseVisibleEntity(a=>{a.data.type==="Splat"&&e.push(a)}),this.splatMesh&&this.splatMesh.dispose(),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new FS.GSplineBuffer(new Uint8Array(a.data.buffer).buffer)),o=0,n=[0];for(let a of r)o+=a.getSplatCount(),n.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,n,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,n)=>{this.cropsArray[r][n]===void 0?(t=!0,this.cropsArray[r][n]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,c)=>l!==this.cropsArray[r][n][a][c])?(t=!0,this.cropsArray[r][n][a]=s):s!==this.cropsArray[r][n]?.[a]&&(t=!0,this.cropsArray[r][n][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new _s,o=new GS,n=!1,a=1,s,l){this.splatMesh=Wi.buildMesh(t,e,n,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=e,this.splatMesh.onBeforeRender=(c,u,d)=>this.update(c,d)}setupSortWorker(t){this.sortWorker=DS(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer)),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(t,e){this.splatMesh!==null&&(this.updateSplatMeshUniforms(t,e),this.updateView(!1,e))}getSplatMesh(){return this.splatMesh}};var bL=new gL;bL.wireframe=!0;var jS=new hL,Yd=class extends fL{constructor(e,r){super();this.data=e;this.sharedAssets=r;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.shapeBlendIntances=[];this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new kd;this.invisibleObjects=new Bi("jflkdsafjasdifjaslk",{...ou.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1,this.errorPage=new Er("fdasfa",{...Lo.defaultData,name:""},{shared:r,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=ES(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=IS(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Er&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],n=r;for(;n!==this;){let a=n;n=n.parent;let s=n.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push(n)}return r.sort((o,n)=>Zc(o.sortKey,n.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===yi)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}find2D(e){for(let r of this.children)if(r instanceof Er&&r.uiScene){let o=r.uiScene.find(e);if(o)return o}}findScene2DfromObject2D(e){for(let r of this.children)if(r instanceof Er&&r.uiScene&&r.uiScene.find(e))return r.uiScene}find2DInUIObjects(e){let r;return this.traverseEntity(o=>{r===void 0&&o instanceof Dn&&(r=o.uiCanvas.find(e))}),r}traverse2D(e){for(let r of this.children)r instanceof Er&&r.uiScene&&r.uiScene.traverse(e)}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(r=>{this.toExpandCloner.add(r)})}doPendingExpandCloner(e){this.toExpandCloner.forEach(r=>{r.expandCloner(e)}),this.toExpandCloner.clear()}doPendingUpdateCloner(e){this.toUpdateCloner.forEach(r=>{r.cloner?.update(e)}),this.toUpdateCloner.clear()}doPendingUpdates(e){this.doPendingExpandCloner(e),this.doPendingUpdateCloner(e),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let n=this.createObject(e.id,e.data,e.children,o,e.localIndex,r);n.updateVisible(this),n.resetBBoxNeedsUpdate(),Li(n)&&Ll(n.parent)&&(n.invalidateUpstreamBooleanData(),n.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(n),this.markToExpandCloner(n),this.markPenumbraSizeDirty(),n.updatePathSnapping()}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");o.traverseEntity(a=>{a instanceof ji&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(s=>s!==a))}),this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),this.markNeedsRecomputeInstancesForChildren(o),this.markPenumbraSizeDirty(),o.parent.remove(o),Ll(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Li(o)&&(o.freeBooleanPointer(),n instanceof lr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof As&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let n=o.parent;this.markNeedsRecomputeInstancesForAncessors(n),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(this),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Li(o)&&(o.invalidateUpstreamBooleanData(),Ll(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():n instanceof lr&&n.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Er&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,n){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{xS(a,r,o,{scene:this,shared:n}),a instanceof tt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}updateEntity2DByOp(e,r,o,n,a,s=[]){e.updateEntityByOp(r,o,n,a),this.traverseEntity(l=>{(l instanceof Dn||l instanceof Er)&&(s.includes(l.frameId??"")||l.frameId===r)&&l.updateEntity2DByOp(r,o,n,a)})}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((n,a)=>({data:n[1].asset.data,children:n[1].asset.children,id:n[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(n=>{n instanceof Zo&&n.updateUp()}),this.doPendingExpandCloner({scene:this,shared:r}),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_e.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{_e.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,n,a,s,l){if(e){let c=n.find(e);c&&c!==n&&a.forInstancesRec(u=>{u.data=ui(u.data,d=>{let p=d.events.data(l.id),f=u.goUp(s);if(f){let h=[...Qc(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=Je.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,n,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Animation"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,n,a,s):l.data.type==="Conditional"&&(this.rewriteActions(l.data.ifActions,[...r,l.id,"ifActions"],o,n,a,s),this.rewriteActions(l.data.elseActions,[...r,l.id,"elseActions"],o,n,a,s))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof ti&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(n=>{if(n.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=ui(s.data,l=>{s.isInstanceRoot||(l.events.delete(n.id),a=!0)}).data}),a===!1)for(let s of su.list)this.rewriteActions(n.data.gameActions[s],["gameActions",s],e,r,o,n)}else n.data.type==="Conditional"?(n.data.condition.type==="Distance"?(this.relativeizeInner(n.data.condition.fromObject,["condition"],"fromObject",e,r,o,n),this.relativeizeInner(n.data.condition.toObject,["condition"],"toObject",e,r,o,n)):n.data.condition.type==="State"?this.relativeizeInner(n.data.condition.object,["condition"],"object",e,r,o,n):n.data.condition.type==="Comparison"&&(n.data.condition.lOperand.type==="Property"&&this.relativeizeInner(n.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,r,o,n),n.data.condition.rOperand.type==="Property"&&this.relativeizeInner(n.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,n)),this.rewriteActions(n.data.inActions,["inActions"],e,r,o,n),this.rewriteActions(n.data.outActions,["outActions"],e,r,o,n)):"actions"in n.data&&this.rewriteActions(n.data.actions,["actions"],e,r,o,n)})}),!0})}expandInstances(e,r,o){let n=new Set;this.traverseEntity(a=>{if(a instanceof ti&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:n}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of n)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Rd(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof ti&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)_e.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],n=a=>{for(let s of a.children){let l=s.cloner;if(_e.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let c=[];if(e.intersectObject(s,!0,c),c.length){let u=c[0];u.object=s,u.point.applyMatrix4(u.object.matrixWorld);let d=s.matrixWorld.clone().invert();u.point.applyMatrix4(d),o.push(u)}}else(Li(s)||Bl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),kl(s,e,o)),n(s)}};return n(this.activePage),o}raycastWithClones(e){let r=[],o=n=>{for(let a of n.children){let s=a.cloner;_e.is(a)&&(a.visible||s?.object.data.visible)&&((Li(a)||Bl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),kl(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)_e.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)_e.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)_e.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof tt&&o.data.type==="Mesh"&&(o.data.geometry.type==="TextGeometry"||o.data.geometry.type==="InputGeometry")&&o.data.geometry.font===e){let n=o.geometry,a=o.data.geometry;n.updateFont(e,r).then(()=>{n.update(a,r);let s=o.invalidateDownstreamBooleanData();Ll(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)jo.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)_e.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let n=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,n,o),n+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,n,a,s){let l={scene:this,shared:s},c=zd(e,r,l);return c instanceof ji&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,n.add(c),n.children.splice(a,0,n.children.pop()),o.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,c,s)),c.updateState(r,l),c instanceof tt&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&c.traverseEntity(u=>{let d=u.dataPatched;if(u instanceof tt&&d.bones&&d.boneInverses){let p=d.bones.map(m=>this.find(m)),f=d.boneInverses.map(m=>new mL().fromArray(m)),h=new xL(p,f);u.bind(h,u.bindMatrix)}else u.matrixAutoUpdate=!0}),c}getCenter(e){let r=[];for(let n=0,a=e.length;n<a;++n){let{id:s,recursive:l}=e[n],c=this.find(s),u=l?c.recursiveBBox:c.singleBBox;r.push(...u.vertices)}let o=new yL;return o.setFromPoints(r),o.getCenter(jS),jS}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof It)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof ar&&e(r.material[o]);else r.material instanceof ar&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(n=>{n instanceof Zo&&n.setViewplaneSize(e,r,o)})}initializeSplatViewer(){this.splatViewer=new ql({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}};import{DRACOLoader as vL}from"three/examples/jsm/loaders/DRACOLoader.js";var qi;function US(i){return qi||(qi=new vL,qi.setDecoderPath(i!==void 0?`${i}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qi.decoderPending}async function SL(i){if(qi){let t={attributeIDs:qi.defaultAttributeIDs,attributeTypes:qi.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await qi.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function kS(i,t){let[e,r]=bp(jc.deserialize(new Uint8Array(i)));return du(e),t&&t(e),r.result().data}function HS(i){let t=[];return i.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="NonParametricGeometry"&&r.geometry.data.draco!==void 0&&t.push(r)}),t}async function WS(i){for(let t of i){let e=await SL(t.geometry.data.draco);if(e){let r=t.geometry.data;e.index&&(r.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let o={};e.attributes.forEach(({name:n,array:a,itemSize:s})=>{o[n]={array:a,itemSize:s,type:"Float32Array",normalized:!1}}),r.attributes=o,r.draco=void 0}}}import{Mesh as rye}from"three";import{mergeBufferGeometries as nye}from"three/examples/jsm/utils/BufferGeometryUtils.js";function qS(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as $S,ShaderLib as wL}from"three";function XS(i){let t=new Set;return i.traverse(e=>{if(e instanceof sr)if(ht(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(PL(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new $S,specularColor:new $S});let o=0;e.onBeforeCompile=(n,a)=>{r&&r(n,a),n.uniforms=Object.assign({},wL.physical.uniforms,n.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(n.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=n.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=n.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=pv(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else OL(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function PL(i){return i.getLayersOfType("transmission").length>0}function OL(i){let t=0;for(let e of i.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function YS(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function KS(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,n)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as TL}from"three/examples/jsm/utils/BufferGeometryUtils.js";function QS(i){let t=[];return i.traverse(e=>{e instanceof Ri&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(c){console.error(c)}return l!==void 0&&s.matrix.determinant()<0&&qS(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof It&&a.unshift(r.geometry),a.length){let s=TL(a);r instanceof It&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:i,shared:Lv})}),i}function ZS(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function JS(i){Object.values(i.shared.materials).forEach(t=>{gm(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?gm(e.material):"materials"in e&&e.materials.forEach(r=>{gm(r)})})}function gm(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var ow=Bs(tw(),1);var rw="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xm=class extends AL{load(t,e,r,o=console.error){let n=new CL(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(rw+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(rw),n.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await kS(t,JS),r=HS(e);e.version&&(0,ow.default)(e.version,"1.12.98")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.allSettled([r.length&&US(),kv(e)&&Fb(),Jv(e)&&Av(),B1(e)&&_1(),$d(e)&&ym()].filter(Boolean)),r.length&&await WS(r);let o=!1,n=new Tn(e.shared,{},o);Object.values(n.getMaterials()).forEach(l=>Object.assign(l,{isAsset:!0}));let a=new Yd(e.scene,n);$d(e)&&a.initializeSplatViewer();let s=a.activeCamera;return s&&Object.assign(s,{makeDefault:!0}),a=QS(a),a=XS(a),a=YS(a),a=KS(a),a=ZS(a),a}};export{xm as default};