mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-07-11 06:24:47 +00:00
1 line
No EOL
7.4 KiB
JavaScript
1 line
No EOL
7.4 KiB
JavaScript
import{r as e}from"./chunk-DECur_0Z.js";import{n as t,r as n,t as r}from"./jsx-runtime-BpGWiA-R.js";import{a as i,s as a}from"./react-three-fiber.esm-El6vNTZj.js";import{t as o}from"./Html-CXAi5FD_.js";import{a as s,c,i as l,o as u}from"./SettingsProvider-BdqQ2Cm4.js";import{Wt as d,c as f,l as p,u as m,xt as h}from"./three.module-DKAirPAO.js";import{r as g}from"./loaders-5n1D4iOD.js";import{t as _}from"./logger-B058WGzf.js";import{r as v}from"./engineStore-B1KAgiiF.js";import{r as y}from"./cameraTourStore-CtH3IrnD.js";import{n as b}from"./DebugBounds-CZKrvsAw.js";var x={Label:`_Label_12q7d_1`},S=t(),C=e(n(),1),w=r(),T=[0,0,0],E=new d;function D(e,t,n,r){let i=e.matrixWorld.elements;return(t-i[12])*-i[8]+(n-i[13])*-i[9]+(r-i[14])*-i[10]<0}var O=200;function k(e){let t=(0,S.c)(9),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let{opacity:r,fadeDistance:a}=n,o=r===void 0?`fadeWithDistance`:r,s=a===void 0?O:a,c=o===`fadeWithDistance`,l=(0,C.useRef)(null),[u,d]=(0,C.useState)(o!==0),f=(0,C.useRef)(`0`),p;t[2]!==s||t[3]!==c||t[4]!==u||t[5]!==o?(p=e=>{let{camera:t}=e,n=l.current;if(!n)return;n.getWorldPosition(E);let r=D(t,E.x,E.y,E.z);if(c){let e=r?1/0:t.position.distanceTo(E),n=e<s;u!==n&&d(n),f.current=n?Math.max(0,Math.min(1,1-e/s)).toString():`0`}else{let e=!r&&o!==0;u!==e&&d(e),f.current=o.toString()}},t[2]=s,t[3]=c,t[4]=u,t[5]=o,t[6]=p):p=t[6],i(p);let m;return t[7]===u?m=t[8]:(m={groupRef:l,isVisible:u,opacityRef:f},t[7]=u,t[8]=m),m}var A=(0,C.memo)(function(e){let t=(0,S.c)(13),{children:n,color:r,position:a,opacity:s,fadeDistance:c}=e,l=r===void 0?`white`:r,u=a===void 0?T:a,d=s===void 0?`fadeWithDistance`:s,f;t[0]!==c||t[1]!==d?(f={opacity:d,fadeDistance:c},t[0]=c,t[1]=d,t[2]=f):f=t[2];let{groupRef:p,isVisible:m,opacityRef:h}=k(f),g=(0,C.useRef)(null),_;t[3]===h?_=t[4]:(_=()=>{g.current&&(g.current.style.opacity=h.current)},t[3]=h,t[4]=_),i(_);let v;t[5]!==n||t[6]!==l||t[7]!==m||t[8]!==u?(v=m?(0,w.jsx)(o,{position:u,center:!0,children:(0,w.jsx)(`div`,{ref:g,className:x.Label,style:{color:l},children:n})}):null,t[5]=n,t[6]=l,t[7]=m,t[8]=u,t[9]=v):v=t[9];let y;return t[10]!==p||t[11]!==v?(y=(0,w.jsx)(`group`,{ref:p,children:v}),t[10]=p,t[11]=v,t[12]=y):y=t[12],y}),j=(0,C.createContext)(void 0);function M(e){let t=(0,S.c)(11),{children:n}=e,r=a(F),{audioVolume:i}=s(),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o={audioLoader:null,audioListener:null},t[0]=o):o=t[0];let[c,l]=(0,C.useState)(o),u,d;t[1]===r?(u=t[2],d=t[3]):(u=()=>{let e=new m,t=r.children.find(P);t||(t=new p,r.add(t)),l({audioLoader:e,audioListener:t});let n=()=>{let e=t.context;!e||e.state!==`suspended`||e.resume().finally(()=>{document.removeEventListener(`click`,n),document.removeEventListener(`keydown`,n),document.removeEventListener(`touchend`,n)})};document.addEventListener(`click`,n),document.addEventListener(`keydown`,n),document.addEventListener(`touchend`,n);let i=v.subscribe(N,e=>{let n=t.context;n&&(e===`paused`?n.suspend():n.state===`suspended`&&n.resume())});return()=>{document.removeEventListener(`click`,n),document.removeEventListener(`keydown`,n),document.removeEventListener(`touchend`,n),i(),t&&r.remove(t)}},d=[r],t[1]=r,t[2]=u,t[3]=d),(0,C.useEffect)(u,d);let f,h;t[4]!==c.audioListener||t[5]!==i?(f=()=>{c.audioListener?.setMasterVolume(i)},h=[i,c.audioListener],t[4]=c.audioListener,t[5]=i,t[6]=f,t[7]=h):(f=t[6],h=t[7]),(0,C.useEffect)(f,h);let g;return t[8]!==c||t[9]!==n?(g=(0,w.jsx)(j.Provider,{value:c,children:n}),t[8]=c,t[9]=n,t[10]=g):g=t[10],g}function N(e){return e.playback.status}function P(e){return e instanceof p}function F(e){return e.camera}function I(){let e=(0,C.useContext)(j);if(e===void 0)throw Error(`useAudio must be used within AudioProvider`);return e}var L=_(`AudioEmitter`),R=new Map,z=new Map;c(e=>{let t=v.getState().playback.rate;for(let[n,r]of z)try{n.setPlaybackRate(r*(e?t:1))}catch{}});function B(e,t=1){z.set(e,t)}function V(e){z.delete(e)}var H=0;function U(){return H}function W(){H++;for(let[e]of z){try{e.stop()}catch{}try{e.disconnect()}catch{}}z.clear()}v.subscribe(e=>e.playback.rate,e=>{for(let[t,n]of z)try{t.setPlaybackRate(n*(u()?e:1))}catch{}});function G(e,t){let n=t(e),r=n?.filename;if(!r)return null;let i=r.endsWith(`.wav`)?r:`${r}.wav`,a=n.description,o=a==null?void 0:t(a);return{filename:i,is3D:o?.is3D??!0,isLooping:o?.isLooping??!1,refDist:o?.referenceDistance??20,maxDist:o?.maxDistance??100,volume:o?.volume??1}}function K(e,t,n,r,i){let a;try{a=g(e.filename)}catch{return}let o=v.getState().playback.rate,s=H;q(a,n,n=>{if(s===H)try{if(e.is3D&&i){let a=new h(t);a.setBuffer(n),a.setDistanceModel(`inverse`),a.setRefDistance(e.refDist),a.setMaxDistance(e.maxDist),a.setRolloffFactor(1),a.setVolume(e.volume),a.setPlaybackRate(u()?o:1),r&&a.position.copy(r),i.add(a),z.set(a,1),a.play(),a.source.onended=()=>{z.delete(a);try{a.disconnect()}catch{}i.remove(a)}}else{let r=new f(t);r.setBuffer(n),r.setVolume(e.volume),r.setPlaybackRate(u()?o:1),z.set(r,1),r.play(),r.source.onended=()=>{z.delete(r);try{r.disconnect()}catch{}}}}catch{}})}function q(e,t,n){R.has(e)?n(R.get(e)):t.load(e,t=>{R.set(e,t),n(t)},void 0,t=>{L.error(`Audio load error %s: %o`,e,t)})}var J=(0,C.memo)(function({entity:e}){let{debugMode:t}=l(),n=e.audioFileName??``,r=e.audioVolume??1,o=e.audioMinDistance??1,c=e.audioMaxDistance??1,u=e.audioMinLoopGap??0,p=e.audioMaxLoopGap??0,m=e.audioIs3D??!0?1:0,_=e.audioIsLooping??!0,[v,x,S]=e.position??[0,0,0],T=a(e=>e.scene),E=a(e=>e.camera),{audioLoader:D,audioListener:O}=I(),{audioEnabled:k}=s(),j=(0,C.useRef)(null),M=(0,C.useRef)(null),N=(0,C.useRef)(null),P=(0,C.useRef)(!1),F=(0,C.useRef)(!1),L=(0,C.useRef)(new d(v,x,S)),R=(0,C.useRef)(0),z=()=>{M.current!=null&&(clearTimeout(M.current),M.current=null),N.current!=null&&(clearTimeout(N.current),N.current=null)},[B]=(0,C.useState)(()=>Math.random());(0,C.useEffect)(()=>{if(!D||!O)return;R.current++;let e;if(m){let t=new h(O);t.position.copy(L.current),t.setDistanceModel(`inverse`),t.setRefDistance(o),t.setMaxDistance(c),t.setRolloffFactor(1),t.setVolume(r),e=t,T.add(e)}else e=new f(O),e.setVolume(r);return j.current=e,()=>{z();try{e.stop()}catch{}try{e.disconnect()}catch{}m&&T.remove(e),j.current=null,P.current=!1,F.current=!1}},[D,O,m,o,c,r,T]);let V=(e,t)=>{if(_)if(u>0||p>0){let n=Math.max(0,u),r=Math.max(n,p),i=n===r?n:B*(r-n)+n;e.loop=!1;let a=()=>{t===R.current&&(e.isPlaying===!1?M.current=setTimeout(()=>{if(t===R.current)try{e.play(),V(e,t)}catch{}},i):N.current=setTimeout(a,100))};N.current=setTimeout(a,100)}else e.setLoop(!0)},H=(0,C.useEffectEvent)(e=>{if(!D)return;let t=R.current;if(P.current)try{e.isPlaying||(e.play(),V(e,t))}catch{}else{let r;try{r=g(n)}catch{return}q(r,D,n=>{if(t===R.current&&!e.buffer){e.setBuffer(n),P.current=!0;try{e.play(),V(e,t)}catch{}}})}});(0,C.useEffect)(()=>{let e=j.current;!e||m||!k||!n||H(e)},[k,m,n,D,O]),i(()=>{let e=j.current;if(!e||!m||!k||!n)return;let t=E.position.distanceTo(L.current),r=F.current,i=t<=c;if(i&&!r)F.current=!0,H(e);else if(!i&&r){F.current=!1,z();try{e.stop()}catch{}}}),(0,C.useEffect)(()=>{let e=j.current;if(e&&!k){z();try{e.stop()}catch{}F.current=!1}},[k]);let U=y(e.id);return(0,w.jsxs)(w.Fragment,{children:[t&&(0,w.jsxs)(`mesh`,{position:L.current,children:[(0,w.jsx)(`sphereGeometry`,{args:[o,12,12]}),(0,w.jsx)(`meshBasicMaterial`,{color:`#00ff00`,wireframe:!0,opacity:.05,transparent:!0,toneMapped:!1}),(0,w.jsx)(A,{color:`#00ff00`,position:[0,o+1,0],children:n})]}),U&&(0,w.jsx)(b,{radius:1.5})]})});export{K as a,B as c,I as d,A as f,U as i,V as l,R as n,G as o,k as p,q as r,W as s,J as t,M as u}; |