@tresjs/cientos 2.1.2 → 2.1.3

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @tresjs/cientos
3
- * version: v2.1.2
3
+ * version: v2.1.3
4
4
  * (c) 2023
5
5
  * description: Collection of useful helpers and fully functional, ready-made abstractions for Tres
6
6
  * author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
@@ -76,9 +76,9 @@
76
76
  `;Y=x(N),Y!==!1;){if(X.string+=Y+`
77
77
  `,Y.charAt(0)==="#"){X.comments+=Y+`
78
78
  `;continue}if((Z=Y.match(Q))&&(X.gamma=parseFloat(Z[1])),(Z=Y.match($))&&(X.exposure=parseFloat(Z[1])),(Z=Y.match(U))&&(X.valid|=2,X.format=Z[1]),(Z=Y.match(j))&&(X.valid|=4,X.height=parseInt(Z[1],10),X.width=parseInt(Z[2],10)),X.valid&2&&X.valid&4)break}return X.valid&2?X.valid&4?X:h(3,"missing image size specifier"):h(3,"missing format specifier")},O=function(N,E,Q){const $=E;if($<8||$>32767||N[0]!==2||N[1]!==2||N[2]&128)return new Uint8Array(N);if($!==(N[2]<<8|N[3]))return h(3,"wrong scanline width");const U=new Uint8Array(4*E*Q);if(!U.length)return h(4,"unable to allocate buffer space");let j=0,X=0;const Y=4*$,Z=new Uint8Array(4),ue=new Uint8Array(Y);let ge=Q;for(;ge>0&&X<N.byteLength;){if(X+4>N.byteLength)return h(1);if(Z[0]=N[X++],Z[1]=N[X++],Z[2]=N[X++],Z[3]=N[X++],Z[0]!=2||Z[1]!=2||(Z[2]<<8|Z[3])!=$)return h(3,"bad rgbe scanline format");let pe=0,me;for(;pe<Y&&X<N.byteLength;){me=N[X++];const te=me>128;if(te&&(me-=128),me===0||pe+me>Y)return h(3,"bad scanline data");if(te){const q=N[X++];for(let Ce=0;Ce<me;Ce++)ue[pe++]=q}else ue.set(N.subarray(X,X+me),pe),pe+=me,X+=me}const he=$;for(let te=0;te<he;te++){let q=0;U[j]=ue[te+q],q+=$,U[j+1]=ue[te+q],q+=$,U[j+2]=ue[te+q],q+=$,U[j+3]=ue[te+q],j+=4}ge--}return U},I=function(N,E,Q,$){const U=N[E+3],j=Math.pow(2,U-128)/255;Q[$+0]=N[E+0]*j,Q[$+1]=N[E+1]*j,Q[$+2]=N[E+2]*j,Q[$+3]=1},T=function(N,E,Q,$){const U=N[E+3],j=Math.pow(2,U-128)/255;Q[$+0]=f.DataUtils.toHalfFloat(Math.min(N[E+0]*j,65504)),Q[$+1]=f.DataUtils.toHalfFloat(Math.min(N[E+1]*j,65504)),Q[$+2]=f.DataUtils.toHalfFloat(Math.min(N[E+2]*j,65504)),Q[$+3]=f.DataUtils.toHalfFloat(1)},F=new Uint8Array(i);F.pos=0;const z=M(F);if(z!==-1){const N=z.width,E=z.height,Q=O(F.subarray(F.pos),N,E);if(Q!==-1){let $,U,j;switch(this.type){case f.FloatType:j=Q.length/4;const X=new Float32Array(j*4);for(let Z=0;Z<j;Z++)I(Q,Z*4,X,Z*4);$=X,U=f.FloatType;break;case f.HalfFloatType:j=Q.length/4;const Y=new Uint16Array(j*4);for(let Z=0;Z<j;Z++)T(Q,Z*4,Y,Z*4);$=Y,U=f.HalfFloatType;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:N,height:E,data:$,header:z.string,gamma:z.gamma,exposure:z.exposure,type:U}}}return null}setDataType(i){return this.type=i,this}load(i,r,s,o){function l(u,h){switch(u.type){case f.FloatType:case f.HalfFloatType:"colorSpace"in u?u.colorSpace="srgb-linear":u.encoding=3e3,u.minFilter=f.LinearFilter,u.magFilter=f.LinearFilter,u.generateMipmaps=!1,u.flipY=!0;break}r&&r(u,h)}return super.load(i,l,s,o)}}const ds=new WeakMap;class vl extends f.Loader{constructor(i){super(i),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(i){return this.decoderPath=i,this}setDecoderConfig(i){return this.decoderConfig=i,this}setWorkerLimit(i){return this.workerLimit=i,this}load(i,r,s,o){const l=new f.FileLoader(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(i,u=>{const h={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(u,h).then(r).catch(o)},s,o)}decodeDracoFile(i,r,s,o){const l={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:o||this.defaultAttributeTypes,useUniqueIDs:!!s};this.decodeGeometry(i,l).then(r)}decodeGeometry(i,r){for(const d in r.attributeTypes){const w=r.attributeTypes[d];w.BYTES_PER_ELEMENT!==void 0&&(r.attributeTypes[d]=w.name)}const s=JSON.stringify(r);if(ds.has(i)){const d=ds.get(i);if(d.key===s)return d.promise;if(i.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let o;const l=this.workerNextTaskID++,u=i.byteLength,h=this._getWorker(l,u).then(d=>(o=d,new Promise((w,_)=>{o._callbacks[l]={resolve:w,reject:_},o.postMessage({type:"decode",id:l,taskConfig:r,buffer:i},[i])}))).then(d=>this._createGeometry(d.geometry));return h.catch(()=>!0).then(()=>{o&&l&&this._releaseTask(o,l)}),ds.set(i,{key:s,promise:h}),h}_createGeometry(i){const r=new f.BufferGeometry;i.index&&r.setIndex(new f.BufferAttribute(i.index.array,1));for(let s=0;s<i.attributes.length;s++){const o=i.attributes[s],l=o.name,u=o.array,h=o.itemSize;r.setAttribute(l,new f.BufferAttribute(u,h))}return r}_loadLibrary(i,r){const s=new f.FileLoader(this.manager);return s.setPath(this.decoderPath),s.setResponseType(r),s.setWithCredentials(this.withCredentials),new Promise((o,l)=>{s.load(i,o,void 0,l)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const i=typeof WebAssembly!="object"||this.decoderConfig.type==="js",r=[];return i?r.push(this._loadLibrary("draco_decoder.js","text")):(r.push(this._loadLibrary("draco_wasm_wrapper.js","text")),r.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(r).then(s=>{const o=s[0];i||(this.decoderConfig.wasmBinary=s[1]);const l=bl.toString(),u=["/* draco decoder */",o,"","/* worker */",l.substring(l.indexOf("{")+1,l.lastIndexOf("}"))].join(`
79
- `);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const o=new Worker(this.workerSourceURL);o._callbacks={},o._taskCosts={},o._taskLoad=0,o.postMessage({type:"init",decoderConfig:this.decoderConfig}),o.onmessage=function(l){const u=l.data;switch(u.type){case"decode":o._callbacks[u.id].resolve(u);break;case"error":o._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(o)}else this.workerPool.sort(function(o,l){return o._taskLoad>l._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[i]=r,s._taskLoad+=r,s})}_releaseTask(i,r){i._taskLoad-=i._taskCosts[r],delete i._callbacks[r],delete i._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function bl(){let g,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":g=h.decoderConfig,i=new Promise(function(_){g.onModuleLoaded=function(y){_({draco:y})},DracoDecoderModule(g)});break;case"decode":const d=h.buffer,w=h.taskConfig;i.then(_=>{const y=_.draco,x=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const O=r(y,x,M,w),I=O.attributes.map(T=>T.array.buffer);O.index&&I.push(O.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:O},I)}catch(O){console.error(O),self.postMessage({type:"error",id:h.id,error:O.message})}finally{y.destroy(M),y.destroy(x)}});break}};function r(u,h,d,w){const _=w.attributeIDs,y=w.attributeTypes;let x,M;const O=h.GetEncodedGeometryType(d);if(O===u.TRIANGULAR_MESH)x=new u.Mesh,M=h.DecodeBufferToMesh(d,x);else if(O===u.POINT_CLOUD)x=new u.PointCloud,M=h.DecodeBufferToPointCloud(d,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!M.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+M.error_msg());const I={index:null,attributes:[]};for(const T in _){const F=self[y[T]];let z,N;if(w.useUniqueIDs)N=_[T],z=h.GetAttributeByUniqueId(x,N);else{if(N=h.GetAttributeId(x,u[_[T]]),N===-1)continue;z=h.GetAttribute(x,N)}I.attributes.push(o(u,h,x,T,F,z))}return O===u.TRIANGULAR_MESH&&(I.index=s(u,h,x)),u.destroy(x),I}function s(u,h,d){const _=d.num_faces()*3,y=_*4,x=u._malloc(y);h.GetTrianglesUInt32Array(d,y,x);const M=new Uint32Array(u.HEAPF32.buffer,x,_).slice();return u._free(x),{array:M,itemSize:1}}function o(u,h,d,w,_,y){const x=y.num_components(),O=d.num_points()*x,I=O*_.BYTES_PER_ELEMENT,T=l(u,_),F=u._malloc(I);h.GetAttributeDataArrayForAllPoints(d,y,T,I,F);const z=new _(u.HEAPF32.buffer,F,O).slice();return u._free(F),{name:w,array:z,itemSize:x}}function l(u,h){switch(h){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}}function rt(){const{state:g,setState:i}=C.inject("useTres",Me.useTres()),r=C.inject("extend")||(()=>{});return{state:g,setState:i,extend:r}}const gl=["args","center"],wl=C.defineComponent({__name:"Text3D",props:{font:{},text:{},size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1},needUpdates:{type:Boolean,default:!1}},async setup(g,{expose:i}){let r,s;const o=g,{extend:l}=rt();l({TextGeometry:Nr});const u=new ul,h=C.useSlots(),d=C.computed(()=>{var x;return o.text?o.text:h.default?(x=h.default()[0].children)==null?void 0:x.trim():o.needUpdates?"":"TresJS"}),w=C.shallowRef();i({value:w});const _=([r,s]=C.withAsyncContext(()=>new Promise((x,M)=>{try{typeof o.font=="string"?u.load(o.font,O=>{x(O)}):x(o.font)}catch(O){M(console.error("cientos",O))}})),r=await r,s(),r),y=C.computed(()=>({font:_,size:o.size,height:o.height,curveSegments:o.curveSegments,bevelEnabled:o.bevelEnabled,bevelThickness:o.bevelThickness,bevelSize:o.bevelSize,bevelOffset:o.bevelOffset,bevelSegments:o.bevelSegments}));return C.watchEffect(()=>{w.value&&o.needUpdates&&(w.value.geometry.dispose(),w.value.geometry=new Nr(d.value,y.value),o.center&&w.value.geometry.center())}),(x,M)=>C.unref(_)?(C.openBlock(),C.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:w},[d.value?(C.openBlock(),C.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:x.center},null,8,gl)):C.createCommentVNode("",!0),C.renderSlot(x.$slots,"default")],512)):C.createCommentVNode("",!0)}});function _l(g,i){const r=C.ref(i),s=new f.AnimationMixer(r.value),o=C.shallowReactive({});g.forEach(u=>{const h=s.clipAction(u,r.value);o[u.name]=h});const{onLoop:l}=Me.useRenderLoop();return l(({delta:u})=>{s.update(u)}),{actions:o,mixer:s}}const ms={sunset:"venice/venice_sunset_4k.hdr"};async function qr({files:g=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:r=!1,path:s="/",preset:o=void 0}){const{state:l}=rt();if(o){if(!(o in ms))throw new Error("Preset must be one of: "+Object.keys(ms).join(", "));g=ms[o],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const u=Array.isArray(g),h=u?f.CubeTextureLoader:fl,d=await Me.useLoader(h,u?[g]:g,_=>{s&&_.setPath(s)}),w=u?d[0]:d;return w&&(w.mapping=u?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,w.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=w,r!==void 0&&(l.scene.background=w),i&&(l.scene.backgroundBlurriness=i|0)),w}const yl=C.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(g,{expose:i}){let r=null;return i({getTexture:()=>r}),r=await qr(g),()=>{}}});function Qr(g){return C.getCurrentScope()?(C.onScopeDispose(g),!0):!1}function Zr(g){return typeof g=="function"?g():C.unref(g)}const xl=typeof window<"u",Wr=()=>{};function Cl(...g){if(g.length!==1)return C.toRef(...g);const i=g[0];return typeof i=="function"?C.readonly(C.customRef(()=>({get:i,set:Wr}))):C.ref(i)}function Pl(g,i=!0){C.getCurrentInstance()?C.onMounted(g):i?g():C.nextTick(g)}function kl(g){var i;const r=Zr(g);return(i=r==null?void 0:r.$el)!=null?i:r}const Ci=xl?window:void 0;function Oe(...g){let i,r,s,o;if(typeof g[0]=="string"||Array.isArray(g[0])?([r,s,o]=g,i=Ci):[i,r,s,o]=g,!i)return Wr;Array.isArray(r)||(r=[r]),Array.isArray(s)||(s=[s]);const l=[],u=()=>{l.forEach(_=>_()),l.length=0},h=(_,y,x,M)=>(_.addEventListener(y,x,M),()=>_.removeEventListener(y,x,M)),d=C.watch(()=>[kl(i),Zr(o)],([_,y])=>{u(),_&&l.push(...r.flatMap(x=>s.map(M=>h(_,x,M,y))))},{immediate:!0,flush:"post"}),w=()=>{d(),u()};return Qr(w),w}function Ml(){const g=C.ref(!1);return C.getCurrentInstance()&&C.onMounted(()=>{g.value=!0}),g}function Al(g){const i=Ml();return C.computed(()=>(i.value,!!g()))}function Sl(g,i={}){const{window:r=Ci}=i,s=Al(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let o;const l=C.ref(!1),u=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",h):o.removeListener(h))},h=()=>{s.value&&(u(),o=r.matchMedia(Cl(g).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",h):o.addListener(h)))};return C.watchEffect(h),Qr(()=>u()),l}const Ll={page:g=>[g.pageX,g.pageY],client:g=>[g.clientX,g.clientY],screen:g=>[g.screenX,g.screenY],movement:g=>g instanceof Touch?null:[g.movementX,g.movementY]};function Vl(g={}){const{type:i="page",touch:r=!0,resetOnTouchEnds:s=!1,initialValue:o={x:0,y:0},window:l=Ci,target:u=l,eventFilter:h}=g,d=C.ref(o.x),w=C.ref(o.y),_=C.ref(null),y=typeof i=="function"?i:Ll[i],x=F=>{const z=y(F);z&&([d.value,w.value]=z,_.value="mouse")},M=F=>{if(F.touches.length>0){const z=y(F.touches[0]);z&&([d.value,w.value]=z,_.value="touch")}},O=()=>{d.value=o.x,w.value=o.y},I=h?F=>h(()=>x(F),{}):F=>x(F),T=h?F=>h(()=>M(F),{}):F=>M(F);return u&&(Oe(u,"mousemove",I,{passive:!0}),Oe(u,"dragover",I,{passive:!0}),r&&i!=="movement"&&(Oe(u,"touchstart",T,{passive:!0}),Oe(u,"touchmove",T,{passive:!0}),s&&Oe(u,"touchend",O,{passive:!0}))),{x:d,y:w,sourceType:_}}function Dl(g={}){const{window:i=Ci,initialWidth:r=1/0,initialHeight:s=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=g,u=C.ref(r),h=C.ref(s),d=()=>{i&&(l?(u.value=i.innerWidth,h.value=i.innerHeight):(u.value=i.document.documentElement.clientWidth,h.value=i.document.documentElement.clientHeight))};if(d(),Pl(d),Oe("resize",d,{passive:!0}),o){const w=Sl("(orientation: portrait)");C.watch(w,()=>d())}return{width:u,height:h}}function Jr(g=!1,i=2.5,r=!0,s){var I;const{x:o,y:l}=Vl(),{logWarning:u}=Me.useLogger(),{state:h}=rt(),{width:d,height:w}=Dl(),{onLoop:_}=Me.useRenderLoop(),y=new f.Group;console.log("jaime ~ useParallax ~ ease:",r);const x=r?2.5:30,M=C.computed(()=>(o.value/d.value-.5)*i),O=C.computed(()=>-(l.value/w.value-.5)*i);s&&h.scene?(y.add(s),(I=h.scene)==null||I.add(y),_(({delta:T})=>{g||(y.position.x+=(M.value-y.position.x)*x*T,y.position.y+=(O.value-y.position.y)*x*T)})):u("Scene must contain a Camera component to use this composable")}const Il=C.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(g){const{state:i}=rt();return C.watchEffect(()=>{if(i!=null&&i.camera){const r=i==null?void 0:i.camera;Jr(g.disabled,g.factor,g.ease,r)}}),()=>{}}}),Tl=["position","a-scale"],El=C.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},factor:{default:4},alphaMap:{default:null}},setup(g,{expose:i}){const r=g;let s=r.radius+r.depth;const o=r.depth/r.count,l=[],u=Array.from({length:r.count},()=>(.5+.5*Math.random())*r.factor),h=x=>new f.Vector3().setFromSpherical(new f.Spherical(x,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI));for(let x=0;x<r.count;x++)s-=o*Math.random(),l.push(...h(s).toArray());const d=new Float32Array(l),w=new Float32Array(u),_=C.computed(()=>({size:r.size,sizeAttenuation:r.sizeAttenuation,transparent:r.transparent,alphaTest:r.alphaTest,alphaMap:r.alphaMap})),y=C.shallowRef();return i({value:y}),(x,M)=>(C.openBlock(),C.createElementBlock("TresPoints",{ref_key:"starsRef",ref:y},[C.createElementVNode("TresBufferGeometry",{position:[C.unref(d),3],"a-scale":[C.unref(w),1]},null,8,Tl),C.createElementVNode("TresPointsMaterial",C.normalizeProps(C.guardReactiveProps(_.value)),null,16)],512))}}),Ol=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Bl=["position","velocity"],Nl=C.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{default:null},alphaMap:{default:null},alphaTest:{default:.01},opacity:{default:.8},count:{default:5e3},speed:{default:.1},randomness:{default:.5},depthWrite:{type:Boolean,default:!1},transparent:{type:Boolean,default:!0},sizeAttenuation:{type:Boolean,default:!0}},setup(g){const i=C.shallowRef();let r=[],s=[];const o=()=>{r=new Float32Array(g.count*3);for(let h=0;h<g.count;h++){const d=h*3;r[d]=(Math.random()-.5)*g.area[0],r[d+1]=(Math.random()-.5)*g.area[1],r[d+2]=(Math.random()-.5)*g.area[2]}},l=()=>{s=new Float32Array(g.count*2);for(let h=0;h<g.count*2;h+=2)s[h]=(Math.random()-.5)/5*g.speed*g.randomness,s[h+1]=Math.random()/5*g.speed+.01};l(),o(),C.watchEffect(()=>{var h;l(),o(),(h=i.value)!=null&&h.attributes.position&&(i.value.attributes.position=r)});const{onLoop:u}=Me.useRenderLoop();return u(()=>{if(i.value){const h=i.value.attributes.position.array;for(let d=0;d<i.value.attributes.position.count;d++){const w=s[d*2],_=s[d*2+1];h[d*3]+=w,h[d*3+1]-=_,(h[d*3]<=-g.area[0]/2||h[d*3]>=g.area[0]/2)&&(h[d*3]=h[d*3]*-1),(h[d*3+1]<=-g.area[1]/2||h[d*3+1]>=g.area[1]/2)&&(h[d*3+1]=h[d*3+1]*-1)}i.value.attributes.position.needsUpdate=!0}}),(h,d)=>(C.openBlock(),C.createElementBlock("TresPoints",null,[C.createElementVNode("TresPointsMaterial",{size:h.size,color:h.color,"alpha-map":h.alphaMap,map:h.map,opacity:h.opacity,"alpha-test":h.alphaTest,"depth-write":h.depthWrite,transparent:h.transparent,"size-attenuation":h.sizeAttenuation},null,8,Ol),C.createElementVNode("TresBufferGeometry",{ref_key:"precipitationGeoRef",ref:i,position:[C.unref(r),3],velocity:[C.unref(s)]},null,8,Bl)]))}}),Fl=["position"],zl=["position"],jl=["scale"],Ul=["map","depth-test","color-space","color","opacity"],Rl=C.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(g,{expose:i}){let r,s;const o=C.shallowRef(),l=C.shallowRef();i({value:o});const u=[...new Array(g.segments)].map((x,M)=>({x:g.width/2-Math.random()*g.width,y:g.width/2-Math.random()*g.width,scale:.4+Math.sin((M+1)/g.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*g.speed})),h=(x,M)=>x/6*M*g.opacity,{map:d}=([r,s]=C.withAsyncContext(()=>Me.useTexture({map:g.texture})),r=await r,s(),r),{state:w}=rt(),_=C.computed(()=>{var x;return(x=w.renderer)==null?void 0:x.outputColorSpace}),{onLoop:y}=Me.useRenderLoop();return y(()=>{var x,M;o.value&&w.camera&&l.value&&((x=l.value)==null||x.children.forEach((O,I)=>{O.rotation.z+=u[I].rotation}),o.value.lookAt((M=w.camera)==null?void 0:M.position))}),(x,M)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"smokeRef",ref:o},x.$attrs),[C.createElementVNode("TresGroup",{ref_key:"groupRef",ref:l,position:[0,0,x.segments/2*x.depth]},[(C.openBlock(!0),C.createElementBlock(C.Fragment,null,C.renderList(C.unref(u),({scale:O,x:I,y:T,density:F},z)=>(C.openBlock(),C.createElementBlock("TresMesh",{key:`${z}`,position:[I,T,-z*x.depth]},[C.createElementVNode("TresPlaneGeometry",{scale:[O,O,O],rotation:[0,0,0]},null,8,jl),C.createElementVNode("TresMeshStandardMaterial",{map:C.unref(d),"depth-test":x.depthTest,"color-space":_.value,color:x.color,"depth-write":!1,transparent:"",opacity:h(O,F)},null,8,Ul)],8,zl))),128))],8,Fl)],16))}}),Gl=C.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(g,{expose:i}){const r=g,s=C.shallowRef();i({value:s});const{onLoop:o}=Me.useRenderLoop(),l=C.ref(Math.random()*1e4);return o(({elapsed:u})=>{var w,_;if(!s.value)return;const h=l.value+u;s.value.rotation.x=Math.cos(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.y=Math.sin(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.z=Math.sin(h/4*r.speed)/20*r.rotationFactor;let d=Math.sin(h/4*r.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((w=r.range)==null?void 0:w[0])??-.1,((_=r.range)==null?void 0:_[1])??.1),s.value.position.y=d*r.floatFactor}),(u,h)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps(u.$attrs,{ref_key:"groupRef",ref:s}),[C.renderSlot(u.$slots,"default")],16))}}),Kl=["geometry"],$l=["map","opacity","depth-write"],Xl=["args"],Yl=["rotation-x","args"],ql=C.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(g,{expose:i}){const r=g,s=C.shallowRef(),o=C.shallowRef();i(s);let l,u,h,d,w;const{state:_}=rt(),y=C.computed(()=>r.width*(Array.isArray(r.scale)?r.scale[0]:r.scale||1)),x=C.computed(()=>r.height*(Array.isArray(r.scale)?r.scale[1]:r.scale||1));C.watchEffect(()=>{l&&l.dispose(),u&&u.dispose(),h&&h.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(r.resolution,r.resolution),u=new f.WebGLRenderTarget(r.resolution,r.resolution),u.texture.generateMipmaps=l.texture.generateMipmaps=!1,h=new f.PlaneGeometry(y.value,x.value).rotateX(Math.PI/2),d=new f.Mesh(h),d.visible=!1}),C.watchEffect(()=>{r.color&&(w&&w.dispose(),w=new f.MeshDepthMaterial,w.depthTest=w.depthWrite=!1,w.onBeforeCompile=E=>{E.uniforms={...E.uniforms,ucolor:{value:r.color?new f.Color(r.color):new f.Color}},E.fragmentShader=E.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
79
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([u]))}),this.decoderPending}_getWorker(i,r){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const o=new Worker(this.workerSourceURL);o._callbacks={},o._taskCosts={},o._taskLoad=0,o.postMessage({type:"init",decoderConfig:this.decoderConfig}),o.onmessage=function(l){const u=l.data;switch(u.type){case"decode":o._callbacks[u.id].resolve(u);break;case"error":o._callbacks[u.id].reject(u);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+u.type+'"')}},this.workerPool.push(o)}else this.workerPool.sort(function(o,l){return o._taskLoad>l._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[i]=r,s._taskLoad+=r,s})}_releaseTask(i,r){i._taskLoad-=i._taskCosts[r],delete i._callbacks[r],delete i._taskCosts[r]}debug(){console.log("Task load: ",this.workerPool.map(i=>i._taskLoad))}dispose(){for(let i=0;i<this.workerPool.length;++i)this.workerPool[i].terminate();return this.workerPool.length=0,this}}function bl(){let g,i;onmessage=function(u){const h=u.data;switch(h.type){case"init":g=h.decoderConfig,i=new Promise(function(_){g.onModuleLoaded=function(y){_({draco:y})},DracoDecoderModule(g)});break;case"decode":const d=h.buffer,w=h.taskConfig;i.then(_=>{const y=_.draco,x=new y.Decoder,M=new y.DecoderBuffer;M.Init(new Int8Array(d),d.byteLength);try{const O=r(y,x,M,w),I=O.attributes.map(T=>T.array.buffer);O.index&&I.push(O.index.array.buffer),self.postMessage({type:"decode",id:h.id,geometry:O},I)}catch(O){console.error(O),self.postMessage({type:"error",id:h.id,error:O.message})}finally{y.destroy(M),y.destroy(x)}});break}};function r(u,h,d,w){const _=w.attributeIDs,y=w.attributeTypes;let x,M;const O=h.GetEncodedGeometryType(d);if(O===u.TRIANGULAR_MESH)x=new u.Mesh,M=h.DecodeBufferToMesh(d,x);else if(O===u.POINT_CLOUD)x=new u.PointCloud,M=h.DecodeBufferToPointCloud(d,x);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!M.ok()||x.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+M.error_msg());const I={index:null,attributes:[]};for(const T in _){const F=self[y[T]];let z,N;if(w.useUniqueIDs)N=_[T],z=h.GetAttributeByUniqueId(x,N);else{if(N=h.GetAttributeId(x,u[_[T]]),N===-1)continue;z=h.GetAttribute(x,N)}I.attributes.push(o(u,h,x,T,F,z))}return O===u.TRIANGULAR_MESH&&(I.index=s(u,h,x)),u.destroy(x),I}function s(u,h,d){const _=d.num_faces()*3,y=_*4,x=u._malloc(y);h.GetTrianglesUInt32Array(d,y,x);const M=new Uint32Array(u.HEAPF32.buffer,x,_).slice();return u._free(x),{array:M,itemSize:1}}function o(u,h,d,w,_,y){const x=y.num_components(),O=d.num_points()*x,I=O*_.BYTES_PER_ELEMENT,T=l(u,_),F=u._malloc(I);h.GetAttributeDataArrayForAllPoints(d,y,T,I,F);const z=new _(u.HEAPF32.buffer,F,O).slice();return u._free(F),{name:w,array:z,itemSize:x}}function l(u,h){switch(h){case Float32Array:return u.DT_FLOAT32;case Int8Array:return u.DT_INT8;case Int16Array:return u.DT_INT16;case Int32Array:return u.DT_INT32;case Uint8Array:return u.DT_UINT8;case Uint16Array:return u.DT_UINT16;case Uint32Array:return u.DT_UINT32}}}function rt(){const{state:g,setState:i}=C.inject("useTres",Me.useTres()),r=C.inject("extend")||(()=>{});return{state:g,setState:i,extend:r}}const gl=["args","center"],wl=C.defineComponent({__name:"Text3D",props:{font:{},text:{},size:{default:.5},height:{default:.2},curveSegments:{default:5},bevelEnabled:{type:Boolean,default:!0},bevelThickness:{default:.05},bevelSize:{default:.02},bevelOffset:{default:0},bevelSegments:{default:4},center:{type:Boolean,default:!1},needUpdates:{type:Boolean,default:!1}},async setup(g,{expose:i}){let r,s;const o=g,{extend:l}=rt();l({TextGeometry:Nr});const u=new ul,h=C.useSlots(),d=C.computed(()=>{var x;return o.text?o.text:h.default?(x=h.default()[0].children)==null?void 0:x.trim():o.needUpdates?"":"TresJS"}),w=C.shallowRef();i({value:w});const _=([r,s]=C.withAsyncContext(()=>new Promise((x,M)=>{try{typeof o.font=="string"?u.load(o.font,O=>{x(O)}):x(o.font)}catch(O){M(console.error("cientos",O))}})),r=await r,s(),r),y=C.computed(()=>({font:_,size:o.size,height:o.height,curveSegments:o.curveSegments,bevelEnabled:o.bevelEnabled,bevelThickness:o.bevelThickness,bevelSize:o.bevelSize,bevelOffset:o.bevelOffset,bevelSegments:o.bevelSegments}));return C.watchEffect(()=>{w.value&&o.needUpdates&&(w.value.geometry.dispose(),w.value.geometry=new Nr(d.value,y.value),o.center&&w.value.geometry.center())}),(x,M)=>C.unref(_)?(C.openBlock(),C.createElementBlock("TresMesh",{key:0,ref_key:"text3DRef",ref:w},[d.value?(C.openBlock(),C.createElementBlock("TresTextGeometry",{key:0,args:[d.value,y.value],center:x.center},null,8,gl)):C.createCommentVNode("",!0),C.renderSlot(x.$slots,"default")],512)):C.createCommentVNode("",!0)}});function _l(g,i){const r=C.ref(i),s=new f.AnimationMixer(r.value),o=C.shallowReactive({});g.forEach(u=>{const h=s.clipAction(u,r.value);o[u.name]=h});const{onLoop:l}=Me.useRenderLoop();return l(({delta:u})=>{s.update(u)}),{actions:o,mixer:s}}const ms={sunset:"venice/venice_sunset_4k.hdr"};async function qr({files:g=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],blur:i=0,background:r=!1,path:s="/",preset:o=void 0}){const{state:l}=rt();if(o){if(!(o in ms))throw new Error("Preset must be one of: "+Object.keys(ms).join(", "));g=ms[o],s="https://raw.githubusercontent.com/Tresjs/assets/main/textures/hdr/"}const u=Array.isArray(g),h=u?f.CubeTextureLoader:fl,d=await Me.useLoader(h,u?[g]:g,_=>{s&&_.setPath(s)}),w=u?d[0]:d;return w&&(w.mapping=u?f.CubeReflectionMapping:f.EquirectangularReflectionMapping,w.colorSpace=f.SRGBColorSpace),l.scene&&(l.scene.environment=w,r!==void 0&&(l.scene.background=w),i&&(l.scene.backgroundBlurriness=i|0)),w}const yl=C.defineComponent({name:"Environment",props:["background","blur","files","encoding","path","preset"],async setup(g,{expose:i}){let r=null;return i({getTexture:()=>r}),r=await qr(g),()=>{}}});function Qr(g){return C.getCurrentScope()?(C.onScopeDispose(g),!0):!1}function Zr(g){return typeof g=="function"?g():C.unref(g)}const xl=typeof window<"u",Wr=()=>{};function Cl(...g){if(g.length!==1)return C.toRef(...g);const i=g[0];return typeof i=="function"?C.readonly(C.customRef(()=>({get:i,set:Wr}))):C.ref(i)}function Pl(g,i=!0){C.getCurrentInstance()?C.onMounted(g):i?g():C.nextTick(g)}function kl(g){var i;const r=Zr(g);return(i=r==null?void 0:r.$el)!=null?i:r}const Ci=xl?window:void 0;function Oe(...g){let i,r,s,o;if(typeof g[0]=="string"||Array.isArray(g[0])?([r,s,o]=g,i=Ci):[i,r,s,o]=g,!i)return Wr;Array.isArray(r)||(r=[r]),Array.isArray(s)||(s=[s]);const l=[],u=()=>{l.forEach(_=>_()),l.length=0},h=(_,y,x,M)=>(_.addEventListener(y,x,M),()=>_.removeEventListener(y,x,M)),d=C.watch(()=>[kl(i),Zr(o)],([_,y])=>{u(),_&&l.push(...r.flatMap(x=>s.map(M=>h(_,x,M,y))))},{immediate:!0,flush:"post"}),w=()=>{d(),u()};return Qr(w),w}function Ml(){const g=C.ref(!1);return C.getCurrentInstance()&&C.onMounted(()=>{g.value=!0}),g}function Al(g){const i=Ml();return C.computed(()=>(i.value,!!g()))}function Sl(g,i={}){const{window:r=Ci}=i,s=Al(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let o;const l=C.ref(!1),u=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",h):o.removeListener(h))},h=()=>{s.value&&(u(),o=r.matchMedia(Cl(g).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",h):o.addListener(h)))};return C.watchEffect(h),Qr(()=>u()),l}const Ll={page:g=>[g.pageX,g.pageY],client:g=>[g.clientX,g.clientY],screen:g=>[g.screenX,g.screenY],movement:g=>g instanceof Touch?null:[g.movementX,g.movementY]};function Vl(g={}){const{type:i="page",touch:r=!0,resetOnTouchEnds:s=!1,initialValue:o={x:0,y:0},window:l=Ci,target:u=l,eventFilter:h}=g,d=C.ref(o.x),w=C.ref(o.y),_=C.ref(null),y=typeof i=="function"?i:Ll[i],x=F=>{const z=y(F);z&&([d.value,w.value]=z,_.value="mouse")},M=F=>{if(F.touches.length>0){const z=y(F.touches[0]);z&&([d.value,w.value]=z,_.value="touch")}},O=()=>{d.value=o.x,w.value=o.y},I=h?F=>h(()=>x(F),{}):F=>x(F),T=h?F=>h(()=>M(F),{}):F=>M(F);return u&&(Oe(u,"mousemove",I,{passive:!0}),Oe(u,"dragover",I,{passive:!0}),r&&i!=="movement"&&(Oe(u,"touchstart",T,{passive:!0}),Oe(u,"touchmove",T,{passive:!0}),s&&Oe(u,"touchend",O,{passive:!0}))),{x:d,y:w,sourceType:_}}function Dl(g={}){const{window:i=Ci,initialWidth:r=1/0,initialHeight:s=1/0,listenOrientation:o=!0,includeScrollbar:l=!0}=g,u=C.ref(r),h=C.ref(s),d=()=>{i&&(l?(u.value=i.innerWidth,h.value=i.innerHeight):(u.value=i.document.documentElement.clientWidth,h.value=i.document.documentElement.clientHeight))};if(d(),Pl(d),Oe("resize",d,{passive:!0}),o){const w=Sl("(orientation: portrait)");C.watch(w,()=>d())}return{width:u,height:h}}function Jr(g=!1,i=2.5,r=!0,s){var I;const{x:o,y:l}=Vl(),{logWarning:u}=Me.useLogger(),{state:h}=rt(),{width:d,height:w}=Dl(),{onLoop:_}=Me.useRenderLoop(),y=new f.Group,x=r?2.5:30,M=C.computed(()=>(o.value/d.value-.5)*i),O=C.computed(()=>-(l.value/w.value-.5)*i);s&&h.scene?(y.add(s),(I=h.scene)==null||I.add(y),_(({delta:T})=>{g||(y.position.x+=(M.value-y.position.x)*x*T,y.position.y+=(O.value-y.position.y)*x*T)})):u("Scene must contain a Camera component to use this composable")}const Il=C.defineComponent({name:"PamCameraMouse",props:["disabled","factor","ease"],setup(g){const{state:i}=rt();return C.watchEffect(()=>{if(i!=null&&i.camera){const r=i==null?void 0:i.camera;Jr(g.disabled,g.factor,g.ease,r)}}),()=>{}}}),Tl=["position","a-scale"],El=C.defineComponent({__name:"Stars",props:{size:{default:.1},sizeAttenuation:{type:Boolean,default:!0},transparent:{type:Boolean,default:!0},alphaTest:{default:.01},count:{default:5e3},depth:{default:50},radius:{default:100},factor:{default:4},alphaMap:{default:null}},setup(g,{expose:i}){const r=g;let s=r.radius+r.depth;const o=r.depth/r.count,l=[],u=Array.from({length:r.count},()=>(.5+.5*Math.random())*r.factor),h=x=>new f.Vector3().setFromSpherical(new f.Spherical(x,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI));for(let x=0;x<r.count;x++)s-=o*Math.random(),l.push(...h(s).toArray());const d=new Float32Array(l),w=new Float32Array(u),_=C.computed(()=>({size:r.size,sizeAttenuation:r.sizeAttenuation,transparent:r.transparent,alphaTest:r.alphaTest,alphaMap:r.alphaMap})),y=C.shallowRef();return i({value:y}),(x,M)=>(C.openBlock(),C.createElementBlock("TresPoints",{ref_key:"starsRef",ref:y},[C.createElementVNode("TresBufferGeometry",{position:[C.unref(d),3],"a-scale":[C.unref(w),1]},null,8,Tl),C.createElementVNode("TresPointsMaterial",C.normalizeProps(C.guardReactiveProps(_.value)),null,16)],512))}}),Ol=["size","color","alpha-map","map","opacity","alpha-test","depth-write","transparent","size-attenuation"],Bl=["position","velocity"],Nl=C.defineComponent({__name:"Precipitation",props:{size:{default:.1},area:{default:()=>[10,10,20]},color:{default:16777215},map:{default:null},alphaMap:{default:null},alphaTest:{default:.01},opacity:{default:.8},count:{default:5e3},speed:{default:.1},randomness:{default:.5},depthWrite:{type:Boolean,default:!1},transparent:{type:Boolean,default:!0},sizeAttenuation:{type:Boolean,default:!0}},setup(g){const i=C.shallowRef();let r=[],s=[];const o=()=>{r=new Float32Array(g.count*3);for(let h=0;h<g.count;h++){const d=h*3;r[d]=(Math.random()-.5)*g.area[0],r[d+1]=(Math.random()-.5)*g.area[1],r[d+2]=(Math.random()-.5)*g.area[2]}},l=()=>{s=new Float32Array(g.count*2);for(let h=0;h<g.count*2;h+=2)s[h]=(Math.random()-.5)/5*g.speed*g.randomness,s[h+1]=Math.random()/5*g.speed+.01};l(),o(),C.watchEffect(()=>{l(),o()});const{onLoop:u}=Me.useRenderLoop();return u(()=>{var h,d;if((h=i.value)!=null&&h.attributes.position.array&&((d=i.value)!=null&&d.attributes.position.count)){const w=i.value.attributes.position.array;for(let _=0;_<i.value.attributes.position.count;_++){const y=s[_*2],x=s[_*2+1];w[_*3]+=y,w[_*3+1]-=x,(w[_*3]<=-g.area[0]/2||w[_*3]>=g.area[0]/2)&&(w[_*3]=w[_*3]*-1),(w[_*3+1]<=-g.area[1]/2||w[_*3+1]>=g.area[1]/2)&&(w[_*3+1]=w[_*3+1]*-1)}i.value.attributes.position.needsUpdate=!0}}),(h,d)=>(C.openBlock(),C.createElementBlock("TresPoints",null,[C.createElementVNode("TresPointsMaterial",{size:h.size,color:h.color,"alpha-map":h.alphaMap,map:h.map,opacity:h.opacity,"alpha-test":h.alphaTest,"depth-write":h.depthWrite,transparent:h.transparent,"size-attenuation":h.sizeAttenuation},null,8,Ol),C.createElementVNode("TresBufferGeometry",{ref_key:"geometryRef",ref:i,position:[C.unref(r),3],velocity:[C.unref(s)]},null,8,Bl)]))}}),Fl=["position"],zl=["position"],jl=["scale"],Ul=["map","depth-test","color-space","color","opacity"],Rl=C.defineComponent({__name:"Smoke",props:{color:{default:"#ffffff"},opacity:{default:.5},speed:{default:.4},width:{default:10},depth:{default:1.5},segments:{default:20},texture:{default:"https://raw.githubusercontent.com/Tresjs/assets/main/textures/clouds/defaultCloud.png"},depthTest:{type:Boolean,default:!0}},async setup(g,{expose:i}){let r,s;const o=C.shallowRef(),l=C.shallowRef();i({value:o});const u=[...new Array(g.segments)].map((x,M)=>({x:g.width/2-Math.random()*g.width,y:g.width/2-Math.random()*g.width,scale:.4+Math.sin((M+1)/g.segments*Math.PI)*((.2+Math.random())*10),density:Math.max(.2,Math.random()),rotation:Math.max(.002,.005*Math.random())*g.speed})),h=(x,M)=>x/6*M*g.opacity,{map:d}=([r,s]=C.withAsyncContext(()=>Me.useTexture({map:g.texture})),r=await r,s(),r),{state:w}=rt(),_=C.computed(()=>{var x;return(x=w.renderer)==null?void 0:x.outputColorSpace}),{onLoop:y}=Me.useRenderLoop();return y(()=>{var x,M;o.value&&w.camera&&l.value&&((x=l.value)==null||x.children.forEach((O,I)=>{O.rotation.z+=u[I].rotation}),o.value.lookAt((M=w.camera)==null?void 0:M.position))}),(x,M)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"smokeRef",ref:o},x.$attrs),[C.createElementVNode("TresGroup",{ref_key:"groupRef",ref:l,position:[0,0,x.segments/2*x.depth]},[(C.openBlock(!0),C.createElementBlock(C.Fragment,null,C.renderList(C.unref(u),({scale:O,x:I,y:T,density:F},z)=>(C.openBlock(),C.createElementBlock("TresMesh",{key:`${z}`,position:[I,T,-z*x.depth]},[C.createElementVNode("TresPlaneGeometry",{scale:[O,O,O],rotation:[0,0,0]},null,8,jl),C.createElementVNode("TresMeshStandardMaterial",{map:C.unref(d),"depth-test":x.depthTest,"color-space":_.value,color:x.color,"depth-write":!1,transparent:"",opacity:h(O,F)},null,8,Ul)],8,zl))),128))],8,Fl)],16))}}),Gl=C.defineComponent({__name:"Levioso",props:{speed:{default:1},rotationFactor:{default:1},floatFactor:{default:1},range:{default:()=>[-.1,.1]}},setup(g,{expose:i}){const r=g,s=C.shallowRef();i({value:s});const{onLoop:o}=Me.useRenderLoop(),l=C.ref(Math.random()*1e4);return o(({elapsed:u})=>{var w,_;if(!s.value)return;const h=l.value+u;s.value.rotation.x=Math.cos(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.y=Math.sin(h/4*r.speed)/8*r.rotationFactor,s.value.rotation.z=Math.sin(h/4*r.speed)/20*r.rotationFactor;let d=Math.sin(h/4*r.speed)/10;d=f.MathUtils.mapLinear(d,-.1,.1,((w=r.range)==null?void 0:w[0])??-.1,((_=r.range)==null?void 0:_[1])??.1),s.value.position.y=d*r.floatFactor}),(u,h)=>(C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps(u.$attrs,{ref_key:"groupRef",ref:s}),[C.renderSlot(u.$slots,"default")],16))}}),Kl=["geometry"],$l=["map","opacity","depth-write"],Xl=["args"],Yl=["rotation-x","args"],ql=C.defineComponent({__name:"ContactShadows",props:{opacity:{default:1},width:{default:1},height:{default:1},blur:{default:1},far:{default:10},smooth:{type:Boolean,default:!0},resolution:{default:512},frames:{default:1/0},scale:{default:10},color:{default:"#000000"},depthWrite:{type:Boolean,default:!1},helper:{type:Boolean,default:!1}},setup(g,{expose:i}){const r=g,s=C.shallowRef(),o=C.shallowRef();i(s);let l,u,h,d,w;const{state:_}=rt(),y=C.computed(()=>r.width*(Array.isArray(r.scale)?r.scale[0]:r.scale||1)),x=C.computed(()=>r.height*(Array.isArray(r.scale)?r.scale[1]:r.scale||1));C.watchEffect(()=>{l&&l.dispose(),u&&u.dispose(),h&&h.dispose(),d&&d.geometry.dispose(),l=new f.WebGLRenderTarget(r.resolution,r.resolution),u=new f.WebGLRenderTarget(r.resolution,r.resolution),u.texture.generateMipmaps=l.texture.generateMipmaps=!1,h=new f.PlaneGeometry(y.value,x.value).rotateX(Math.PI/2),d=new f.Mesh(h),d.visible=!1}),C.watchEffect(()=>{r.color&&(w&&w.dispose(),w=new f.MeshDepthMaterial,w.depthTest=w.depthWrite=!1,w.onBeforeCompile=E=>{E.uniforms={...E.uniforms,ucolor:{value:r.color?new f.Color(r.color):new f.Color}},E.fragmentShader=E.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
80
80
  void main() {
81
- `),E.fragmentShader=E.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(Ka),O=new f.ShaderMaterial($a);O.depthTest=M.depthTest=!1;function I(E){!_.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=E/256,_.renderer.setRenderTarget(u),_.renderer.render(d,o.value),d.material=O,O.uniforms.tDiffuse.value=u.texture,O.uniforms.v.value=E/256,_.renderer.setRenderTarget(l),_.renderer.render(d,o.value),d.visible=!1)}const{onLoop:T}=Me.useRenderLoop();let F=0,z,N;return T(()=>{!o.value||_.scene===void 0||_.renderer===void 0||(r.frames===1/0||F<r.frames)&&(F++,z=_.scene.background,N=_.scene.overrideMaterial,s.value.visible=!1,_.scene.background=null,_.scene.overrideMaterial=w,_.renderer.setRenderTarget(l),_.renderer.render(_.scene,o.value),I(r.blur),r.smooth&&I(r.blur*.4),_.renderer.setRenderTarget(null),s.value.visible=!0,_.scene.background=z,_.scene.overrideMaterial=N)}),(E,Q)=>{const $=C.resolveComponent("primitive");return C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"groupRef",ref:s},E.$attrs),[C.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:C.unref(h)},[C.createElementVNode("TresMeshBasicMaterial",{map:C.unref(l).texture,opacity:E.opacity,"depth-write":E.depthWrite,transparent:!0},null,8,$l)],8,Kl),C.createVNode($,{object:C.unref(d)},null,8,["object"]),o.value&&E.helper?(C.openBlock(),C.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,Xl)):C.createCommentVNode("",!0),C.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-y.value/2,y.value/2,x.value/2,-x.value/2,0,E.far]},null,8,Yl)],16)}}});let Pi=null;function Ql(g,i){return r=>{i&&i(r),g.draco&&(Pi||(Pi=new vl),Pi.setDecoderPath(g.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(Pi))}}async function Hr(g,i={draco:!1},r){return await Me.useLoader(ha,g,Ql(i,r))}const Zl=C.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const{scene:u}=([r,s]=C.withAsyncContext(()=>Hr(o.path,{draco:o.draco,decoderPath:o.decoderPath})),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}});async function eo(g){return await Me.useLoader(Ha,g)}const Wl=C.defineComponent({__name:"component",props:{path:{}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const u=([r,s]=C.withAsyncContext(()=>eo(o.path)),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}}),Jl=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],Hl=C.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:()=>1/0},minAzimuthAngle:{default:()=>-1/0},maxPolarAngle:{default:()=>Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:()=>1/0},minZoom:{default:0},maxZoom:{default:()=>1/0},touches:{},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(g,{emit:i}){const{state:r,setState:s,extend:o}=rt(),l=C.ref(null);o({OrbitControls:Lr}),C.watch(l,d=>{u(),d&&g.makeDefault?s("controls",d):s("controls",null)});function u(){Oe(l.value,"change",()=>i("change")),Oe(l.value,"start",()=>i("start")),Oe(l.value,"end",()=>i("end"))}const{onLoop:h}=Me.useRenderLoop();return h(()=>{l.value&&(g.enableDamping||g.autoRotate)&&l.value.update()}),C.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,w)=>{var _;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresOrbitControls",{key:0,ref_key:"controls",ref:l,target:d.target,"auto-rotate":d.autoRotate,"auto-rotate-speed":d.autoRotateSpeed,"enable-damping":d.enableDamping,"damping-factor":d.dampingFactor,"enable-pan":d.enablePan,"key-pan-speed":d.keyPanSpeed,keys:d.keys,"max-azimuth-angle":d.maxAzimuthAngle,"min-azimuth-angle":d.minAzimuthAngle,"max-polar-angle":d.maxPolarAngle,"min-polar-angle":d.minPolarAngle,"min-distance":d.minDistance,"max-distance":d.maxDistance,"min-zoom":d.minZoom,"max-zoom":d.maxZoom,touches:d.touches,"enable-zoom":d.enableZoom,"zoom-speed":d.zoomSpeed,"enable-rotate":d.enableRotate,"rotate-speed":d.rotateSpeed,args:[C.unref(r).camera||d.camera,((_=C.unref(r).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,Jl)):C.createCommentVNode("",!0)}}}),ec=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],tc=C.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{default:null},rotationSnap:{default:null},scaleSnap:{default:null},space:{default:"world"},size:{default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(g,{emit:i}){const r=C.shallowRef(),{state:s,extend:o}=rt();o({TransformControls:sa});const l=h=>{s.controls&&(s.controls.enabled=!h.value),i("dragging",h.value)};function u(){Oe(r.value,"change",()=>i("change")),Oe(r.value,"dragging-changed",l),Oe(r.value,"mouseDown",()=>i("mouseDown")),Oe(r.value,"mouseUp",()=>i("mouseUp")),Oe(r.value,"objectChange",()=>i("objectChange"))}return C.watchEffect(()=>{r.value&&u()}),C.onUnmounted(()=>{r.value&&r.value.dispose()}),(h,d)=>C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:r,object:h.object,args:[C.unref(s).camera,C.unref(s).renderer.domElement],mode:h.mode,enabled:h.enabled,axis:h.axis,"translation-snap":h.translationSnap,"rotation-snap":h.rotationSnap,"scale-snap":h.scaleSnap,space:h.space,size:h.size,"show-x":h.showX,"show-y":h.showY,"show-z":h.showZ,visible:!0},null,8,ec)):C.createCommentVNode("",!0)}}),nc=["args"],ic=C.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(g,{expose:i}){const r=g,{state:s,setState:o,extend:l}=rt(),u=C.ref(null);let h;return l({PointerLockControls:pa}),C.watch(u,d=>{var _;d&&r.makeDefault?o("controls",d):o("controls",null);const w=document.getElementById(r.selector||"");h=w||((_=s.renderer)==null?void 0:_.domElement),Oe(h,"click",()=>{var y;(y=u.value)==null||y.lock()})}),i({value:u}),(d,w)=>{var _;return C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:u,args:[C.unref(s).camera||d.camera,((_=C.unref(s).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,nc)):C.createCommentVNode("",!0)}}}),sc=["args"],rc=C.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(g){const i=g,{state:r,setState:s,extend:o}=rt(),l=C.ref(null);return o({MapControls:ua}),C.watch(l,u=>{u&&i.makeDefault?s("controls",u):s("controls",null)}),(u,h)=>{var d;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[C.unref(r).camera||u.camera,((d=C.unref(r).renderer)==null?void 0:d.domElement)||u.domElement]},null,8,sc)):C.createCommentVNode("",!0)}}});class oc extends f.MeshStandardMaterial{constructor(r={}){super(r);wr(this,"_time");wr(this,"_factor");this.setValues(r),this._time={value:0},this._factor={value:1}}onBeforeCompile(r){r.uniforms||(r.uniforms={}),r.uniforms.time=this._time,r.uniforms.factor=this._factor,r.vertexShader=`
81
+ `),E.fragmentShader=E.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")})});const M=new f.ShaderMaterial(Ka),O=new f.ShaderMaterial($a);O.depthTest=M.depthTest=!1;function I(E){!_.renderer||!o.value||(d.visible=!0,d.material=M,M.uniforms.tDiffuse.value=l.texture,M.uniforms.h.value=E/256,_.renderer.setRenderTarget(u),_.renderer.render(d,o.value),d.material=O,O.uniforms.tDiffuse.value=u.texture,O.uniforms.v.value=E/256,_.renderer.setRenderTarget(l),_.renderer.render(d,o.value),d.visible=!1)}const{onLoop:T}=Me.useRenderLoop();let F=0,z,N;return T(()=>{!o.value||_.scene===void 0||_.renderer===void 0||(r.frames===1/0||F<r.frames)&&(F++,z=_.scene.background,N=_.scene.overrideMaterial,s.value.visible=!1,_.scene.background=null,_.scene.overrideMaterial=w,_.renderer.setRenderTarget(l),_.renderer.render(_.scene,o.value),I(r.blur),r.smooth&&I(r.blur*.4),_.renderer.setRenderTarget(null),s.value.visible=!0,_.scene.background=z,_.scene.overrideMaterial=N)}),(E,Q)=>{const $=C.resolveComponent("primitive");return C.openBlock(),C.createElementBlock("TresGroup",C.mergeProps({ref_key:"groupRef",ref:s},E.$attrs),[C.createElementVNode("TresMesh",{scale:[1,-1,1],geometry:C.unref(h)},[C.createElementVNode("TresMeshBasicMaterial",{map:C.unref(l).texture,opacity:E.opacity,"depth-write":E.depthWrite,transparent:!0},null,8,$l)],8,Kl),C.createVNode($,{object:C.unref(d)},null,8,["object"]),o.value&&E.helper?(C.openBlock(),C.createElementBlock("TresCameraHelper",{key:0,args:[o.value]},null,8,Xl)):C.createCommentVNode("",!0),C.createElementVNode("TresOrthographicCamera",{ref_key:"shadowCamera",ref:o,"rotation-x":Math.PI/2,args:[-y.value/2,y.value/2,x.value/2,-x.value/2,0,E.far]},null,8,Yl)],16)}}});let Pi=null;function Ql(g,i){return r=>{i&&i(r),g.draco&&(Pi||(Pi=new vl),Pi.setDecoderPath(g.decoderPath||"https://www.gstatic.com/draco/versioned/decoders/1.4.3/"),r.setDRACOLoader(Pi))}}async function Hr(g,i={draco:!1},r){return await Me.useLoader(ha,g,Ql(i,r))}const Zl=C.defineComponent({__name:"component",props:{path:{},draco:{type:Boolean,default:!1},decoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.4.1/"}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const{scene:u}=([r,s]=C.withAsyncContext(()=>Hr(o.path,{draco:o.draco,decoderPath:o.decoderPath})),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}});async function eo(g){return await Me.useLoader(Ha,g)}const Wl=C.defineComponent({__name:"component",props:{path:{}},async setup(g,{expose:i}){let r,s;const o=g,l=C.ref();i({value:l});const u=([r,s]=C.withAsyncContext(()=>eo(o.path)),r=await r,s(),r);return(h,d)=>{const w=C.resolveComponent("primitive");return C.openBlock(),C.createBlock(w,C.mergeProps({ref_key:"modelRef",ref:l,object:C.unref(u)},h.$attrs),null,16,["object"])}}}),Jl=["target","auto-rotate","auto-rotate-speed","enable-damping","damping-factor","enable-pan","key-pan-speed","keys","max-azimuth-angle","min-azimuth-angle","max-polar-angle","min-polar-angle","min-distance","max-distance","min-zoom","max-zoom","touches","enable-zoom","zoom-speed","enable-rotate","rotate-speed","args"],Hl=C.defineComponent({__name:"OrbitControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},target:{default:()=>[0,0,0]},enableDamping:{type:Boolean,default:!1},dampingFactor:{default:.05},autoRotate:{type:Boolean,default:!1},autoRotateSpeed:{default:2},enablePan:{type:Boolean,default:!0},keyPanSpeed:{default:7},keys:{},maxAzimuthAngle:{default:()=>1/0},minAzimuthAngle:{default:()=>-1/0},maxPolarAngle:{default:()=>Math.PI},minPolarAngle:{default:0},minDistance:{default:0},maxDistance:{default:()=>1/0},minZoom:{default:0},maxZoom:{default:()=>1/0},touches:{},enableZoom:{type:Boolean,default:!0},zoomSpeed:{default:1},enableRotate:{type:Boolean,default:!0},rotateSpeed:{default:1}},emits:["change","start","end"],setup(g,{emit:i}){const{state:r,setState:s,extend:o}=rt(),l=C.ref(null);o({OrbitControls:Lr}),C.watch(l,d=>{u(),d&&g.makeDefault?s("controls",d):s("controls",null)});function u(){Oe(l.value,"change",()=>i("change",l.value)),Oe(l.value,"start",()=>i("start",l.value)),Oe(l.value,"end",()=>i("end",l.value))}const{onLoop:h}=Me.useRenderLoop();return h(()=>{l.value&&(g.enableDamping||g.autoRotate)&&l.value.update()}),C.onUnmounted(()=>{l.value&&l.value.dispose()}),(d,w)=>{var _;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresOrbitControls",{key:0,ref_key:"controls",ref:l,target:d.target,"auto-rotate":d.autoRotate,"auto-rotate-speed":d.autoRotateSpeed,"enable-damping":d.enableDamping,"damping-factor":d.dampingFactor,"enable-pan":d.enablePan,"key-pan-speed":d.keyPanSpeed,keys:d.keys,"max-azimuth-angle":d.maxAzimuthAngle,"min-azimuth-angle":d.minAzimuthAngle,"max-polar-angle":d.maxPolarAngle,"min-polar-angle":d.minPolarAngle,"min-distance":d.minDistance,"max-distance":d.maxDistance,"min-zoom":d.minZoom,"max-zoom":d.maxZoom,touches:d.touches,"enable-zoom":d.enableZoom,"zoom-speed":d.zoomSpeed,"enable-rotate":d.enableRotate,"rotate-speed":d.rotateSpeed,args:[C.unref(r).camera||d.camera,((_=C.unref(r).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,Jl)):C.createCommentVNode("",!0)}}}),ec=["object","args","mode","enabled","axis","translation-snap","rotation-snap","scale-snap","space","size","show-x","show-y","show-z"],tc=C.defineComponent({__name:"TransformControls",props:{object:{},mode:{default:"translate"},enabled:{type:Boolean,default:!0},axis:{default:"XYZ"},translationSnap:{default:null},rotationSnap:{default:null},scaleSnap:{default:null},space:{default:"world"},size:{default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0}},emits:["dragging","change","mouseDown","mouseUp","objectChange"],setup(g,{emit:i}){const r=C.shallowRef(),{state:s,extend:o}=rt();o({TransformControls:sa});const l=h=>{s.controls&&(s.controls.enabled=!h.value),i("dragging",h.value)};function u(){Oe(r.value,"change",()=>i("change")),Oe(r.value,"dragging-changed",l),Oe(r.value,"mouseDown",()=>i("mouseDown")),Oe(r.value,"mouseUp",()=>i("mouseUp")),Oe(r.value,"objectChange",()=>i("objectChange"))}return C.watchEffect(()=>{r.value&&u()}),C.onUnmounted(()=>{r.value&&r.value.dispose()}),(h,d)=>C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresTransformControls",{key:0,ref_key:"controls",ref:r,object:h.object,args:[C.unref(s).camera,C.unref(s).renderer.domElement],mode:h.mode,enabled:h.enabled,axis:h.axis,"translation-snap":h.translationSnap,"rotation-snap":h.rotationSnap,"scale-snap":h.scaleSnap,space:h.space,size:h.size,"show-x":h.showX,"show-y":h.showY,"show-z":h.showZ,visible:!0},null,8,ec)):C.createCommentVNode("",!0)}}),nc=["args"],ic=C.defineComponent({__name:"PointerLockControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{},selector:{}},setup(g,{expose:i}){const r=g,{state:s,setState:o,extend:l}=rt(),u=C.ref(null);let h;return l({PointerLockControls:pa}),C.watch(u,d=>{var _;d&&r.makeDefault?o("controls",d):o("controls",null);const w=document.getElementById(r.selector||"");h=w||((_=s.renderer)==null?void 0:_.domElement),Oe(h,"click",()=>{var y;(y=u.value)==null||y.lock()})}),i({value:u}),(d,w)=>{var _;return C.unref(s).camera&&C.unref(s).renderer?(C.openBlock(),C.createElementBlock("TresPointerLockControls",{key:0,ref_key:"controls",ref:u,args:[C.unref(s).camera||d.camera,((_=C.unref(s).renderer)==null?void 0:_.domElement)||d.domElement]},null,8,nc)):C.createCommentVNode("",!0)}}}),sc=["args"],rc=C.defineComponent({__name:"MapControls",props:{makeDefault:{type:Boolean,default:!1},camera:{},domElement:{}},setup(g){const i=g,{state:r,setState:s,extend:o}=rt(),l=C.ref(null);return o({MapControls:ua}),C.watch(l,u=>{u&&i.makeDefault?s("controls",u):s("controls",null)}),(u,h)=>{var d;return C.unref(r).camera&&C.unref(r).renderer?(C.openBlock(),C.createElementBlock("TresMapControls",{key:0,ref_key:"controls",ref:l,args:[C.unref(r).camera||u.camera,((d=C.unref(r).renderer)==null?void 0:d.domElement)||u.domElement]},null,8,sc)):C.createCommentVNode("",!0)}}});class oc extends f.MeshStandardMaterial{constructor(r={}){super(r);wr(this,"_time");wr(this,"_factor");this.setValues(r),this._time={value:0},this._factor={value:1}}onBeforeCompile(r){r.uniforms||(r.uniforms={}),r.uniforms.time=this._time,r.uniforms.factor=this._factor,r.vertexShader=`
82
82
  uniform float time;
83
83
  uniform float factor;
84
84
  ${r.vertexShader}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tresjs/cientos",
3
3
  "description": "Collection of useful helpers and fully functional, ready-made abstractions for Tres",
4
- "version": "2.1.2",
4
+ "version": "2.1.3",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@8.4.0",
7
7
  "author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
@@ -45,7 +45,7 @@
45
45
  "docs:preview": "vitepress preview docs"
46
46
  },
47
47
  "peerDependencies": {
48
- "@tresjs/core": "2.1.1",
48
+ "@tresjs/core": "2.1.2",
49
49
  "three": "latest",
50
50
  "vue": "^3.3.4"
51
51
  },