mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-03-18 11:51:03 +00:00
1 line
No EOL
4.1 KiB
JavaScript
1 line
No EOL
4.1 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,29055,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(15080),o=e.i(71753),i=e.i(90072),u=e.i(12979),c=e.i(51434),a=e.i(79123),s=e.i(89887);e.i(13876);var l=e.i(58647);let f=new Map,d=new Map;function p(e,t=1){d.set(e,t)}function m(e){d.delete(e)}let y=0;function h(){return y}function D(){for(let[e]of(y++,d)){try{e.stop()}catch{}try{e.disconnect()}catch{}}d.clear()}function g(e,t){let r=t(e),n=r?.filename;if(!n)return null;let o=n.endsWith(".wav")?n:`${n}.wav`,i=r.description,u=null!=i?t(i):void 0,c=u?.is3D??!0,a=u?.isLooping??!1,s=u?.referenceDistance??20;return{filename:o,is3D:c,isLooping:a,refDist:s,maxDist:u?.maxDistance??100,volume:u?.volume??1}}function v(e,t,r,n,o){let c;try{c=(0,u.audioToUrl)(e.filename)}catch{return}let a=l.engineStore.getState().playback.rate,s=y;R(c,r,r=>{if(s===y)try{if(e.is3D&&o){let u=new i.PositionalAudio(t);u.setBuffer(r),u.setDistanceModel("inverse"),u.setRefDistance(e.refDist),u.setMaxDistance(e.maxDist),u.setRolloffFactor(1),u.setVolume(e.volume),u.setPlaybackRate(a),n&&u.position.copy(n),o.add(u),d.set(u,1),u.play(),u.source.onended=()=>{d.delete(u);try{u.disconnect()}catch{}o.remove(u)}}else{let n=new i.Audio(t);n.setBuffer(r),n.setVolume(e.volume),n.setPlaybackRate(a),d.set(n,1),n.play(),n.source.onended=()=>{d.delete(n);try{n.disconnect()}catch{}}}}catch{}})}function R(e,t,r){f.has(e)?r(f.get(e)):t.load(e,t=>{f.set(e,t),r(t)},void 0,t=>{console.error("Audio load error",e,t)})}l.engineStore.subscribe(e=>e.playback.rate,e=>{for(let[t,r]of d)try{t.setPlaybackRate(r*e)}catch{}});let M=(0,r.memo)(function({entity:e}){let{debugMode:l}=(0,a.useDebug)(),f=e.audioFileName??"",d=e.audioVolume??1,p=e.audioMinDistance??1,m=e.audioMaxDistance??1,y=e.audioMinLoopGap??0,h=e.audioMaxLoopGap??0,D=e.audioIs3D??!0?1:0,g=e.audioIsLooping??!0,[v,M,T]=e.position??[0,0,0],{scene:b,camera:x}=(0,n.useThree)(),{audioLoader:A,audioListener:S}=(0,c.useAudio)(),{audioEnabled:w}=(0,a.useSettings)(),P=(0,r.useRef)(null),k=(0,r.useRef)(null),B=(0,r.useRef)(null),L=(0,r.useRef)(!1),V=(0,r.useRef)(!1),j=(0,r.useRef)(new i.Vector3(v,M,T)),F=(0,r.useRef)(0),C=()=>{null!=k.current&&(clearTimeout(k.current),k.current=null),null!=B.current&&(clearTimeout(B.current),B.current=null)};(0,r.useEffect)(()=>{let e;if(A&&S){if(F.current++,D){let t=new i.PositionalAudio(S);t.position.copy(j.current),t.setDistanceModel("inverse"),t.setRefDistance(p),t.setMaxDistance(m),t.setRolloffFactor(1),t.setVolume(d),e=t,b.add(e)}else(e=new i.Audio(S)).setVolume(d);return P.current=e,()=>{C();try{e.stop()}catch{}try{e.disconnect()}catch{}D&&b.remove(e),P.current=null,L.current=!1,V.current=!1}}},[A,S,D,p,m,d,b]);let E=(e,t)=>{if(g)if(y>0||h>0){let r=Math.max(0,y),n=Math.max(r,h),o=r===n?r:Math.random()*(n-r)+r;e.loop=!1;let i=()=>{t===F.current&&(!1===e.isPlaying?k.current=setTimeout(()=>{if(t===F.current)try{e.play(),E(e,t)}catch{}},o):B.current=setTimeout(i,100))};B.current=setTimeout(i,100)}else e.setLoop(!0)},G=e=>{if(!A)return;let t=F.current;if(L.current)try{e.isPlaying||(e.play(),E(e,t))}catch{}else{let r;try{r=(0,u.audioToUrl)(f)}catch{return}R(r,A,r=>{if(t===F.current&&!e.buffer){e.setBuffer(r),L.current=!0;try{e.play(),E(e,t)}catch{}}})}};return(0,r.useEffect)(()=>{let e=P.current;e&&!D&&w&&f&&G(e)},[w,D,f,A,S]),(0,o.useFrame)(()=>{let e=P.current;if(!e||!D||!w||!f)return;let t=x.position.distanceTo(j.current),r=V.current,n=t<=m;if(n&&!r)V.current=!0,G(e);else if(!n&&r){V.current=!1,C();try{e.stop()}catch{}}}),(0,r.useEffect)(()=>{let e=P.current;if(e&&!w){C();try{e.stop()}catch{}V.current=!1}},[w]),l?(0,t.jsxs)("mesh",{position:j.current,children:[(0,t.jsx)("sphereGeometry",{args:[p,12,12]}),(0,t.jsx)("meshBasicMaterial",{color:"#00ff00",wireframe:!0,opacity:.05,transparent:!0,toneMapped:!1}),(0,t.jsx)(s.FloatingLabel,{color:"#00ff00",position:[0,p+1,0],children:f})]}):null});e.s(["AudioEmitter",0,M,"audioBufferCache",0,f,"getCachedAudioBuffer",()=>R,"getSoundGeneration",()=>h,"playOneShotSound",()=>v,"resolveAudioProfile",()=>g,"stopAllTrackedSounds",()=>D,"trackSound",()=>p,"untrackSound",()=>m])}]); |