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{i}from"./react-three-fiber.esm-CgPHUpXo.js";import{a}from"./SettingsProvider-CCHVZuSg.js";import{S as o,a as s,d as c,f as l,i as u,l as d,p as f,r as p,t as m}from"./GenericShape-PntybIni.js";import"./logger-z_EpIdIa.js";import"./traditional-BTL5qX2E.js";import{$ as h,Q as g,bt as _,i as v,o as y,s as b}from"./three.module-07hRbor4.js";import"./mission-D8vr00S1.js";import{a as x,i as S,o as C}from"./engineStore-Dkm20jvr.js";import{r as ee}from"./loaders-VxR5Bl13.js";import{n as te}from"./AudioContext-CMp1T7r9.js";import"./FloatingLabel-C7nyg5oz.js";import{getCachedAudioBuffer as ne,getSoundGeneration as w,playOneShotSound as T,resolveAudioProfile as re,trackSound as ie,untrackSound as E}from"./AudioEmitter-awEqEuEC.js";import{t as D}from"./DebugSuspense-Dk4MzcWf.js";import{n as O}from"./streamPlaybackStore-DhJekvnx.js";import{c as k}from"./globalFogUniforms-CtxQvsRj.js";import{t as A}from"./ShapeErrorBoundary-CJ_4YTMy.js";var j=t(),M=e(n(),1),N=.1,P=20;function F(e){return-2*Math.atan2(e[1],e[3])}function ae(e,t,n,r){if(n)return{animation:`fall`,timeScale:1};if(!e)return{animation:`root`,timeScale:1};let[i,a,o]=e,s=i*i+a*a;if(Math.abs(o)>2||s>P*P)return r?{animation:`jet`,timeScale:1}:{animation:`root`,timeScale:1};let c=F(t),l=Math.cos(c),u=Math.sin(c),d=i*l+a*u,f=-i*u+a*l,p=f,m=-f,h=-d,g=d,_=Math.max(p,m,h,g);return _0&&(this.delayTime=e[0].timeoutValue??0)}get stateIndex(){return this.currentStateIndex}reset(){this.currentStateIndex=0,this.delayTime=this.states.length>0?this.states[0].timeoutValue??0:0,this.lastFireCount=-1}tick(e,t){if(this.states.length===0)return{sequenceName:null,isFiring:!1,spinTimeScale:0,reverse:!1,scaleAnimation:!1,timeoutValue:0,transitioned:!1,soundDataBlockIds:[],stateIndex:-1};let n=this.lastFireCount>=0&&t.fireCount!==this.lastFireCount;this.lastFireCount=t.fireCount;let r=[];if(n){let e=this.states.findIndex(e=>e.fire);if(e>=0&&e!==this.currentStateIndex){this.currentStateIndex=e,this.delayTime=this.states[e].timeoutValue??0;let t=this.states[e].soundDataBlockId;t>=0&&r.push(t)}}this.delayTime-=e;let i=n,a=this.evaluateTickTransitions(t),o=0;for(;a>=0&&o=0&&r.push(c),this.states[a].spin){case R:this.spinTimeScale=0;break;case V:this.spinTimeScale=1;break;case z:e===B&&s>0&&(this.delayTime*=1-n/s);break;case B:e===z&&s>0&&(this.delayTime*=1-n/s);break}a=this.evaluateEntryTransitions(t)}let s=this.states[this.currentStateIndex],c=s.timeoutValue??0;switch(s.spin){case R:this.spinTimeScale=0;break;case z:this.spinTimeScale=c>0?Math.max(0,1-this.delayTime/c):1;break;case V:this.spinTimeScale=1;break;case B:this.spinTimeScale=c>0?Math.max(0,this.delayTime/c):0;break}return{sequenceName:this.resolveSequenceName(s),isFiring:s.fire,spinTimeScale:this.spinTimeScale,reverse:!s.direction,scaleAnimation:s.scaleAnimation,timeoutValue:s.timeoutValue??0,transitioned:i,soundDataBlockIds:r,stateIndex:this.currentStateIndex}}evaluateTickTransitions(e){let t=this.states[this.currentStateIndex],n=this.delayTime<=0;if(!(n||!t.waitForTimeout))return-1;let r=this.evaluateConditions(t,e);if(r!==-1)return r;if(n){let e=t.transitionOnTimeout;if(e!==I)return e}return-1}evaluateEntryTransitions(e){let t=this.states[this.currentStateIndex];return this.evaluateConditions(t,e)}evaluateConditions(e,t){let n=t.loaded?e.transitionOnLoaded:e.transitionOnNotLoaded;if(n!==I)return n;let r=t.ammo?e.transitionOnAmmo:e.transitionOnNoAmmo;if(r!==I)return r;let i=t.target?e.transitionOnTarget:e.transitionOnNoTarget;if(i!==I)return i;let a=t.wet?e.transitionOnWet:e.transitionOnNotWet;if(a!==I)return a;let o=t.triggerDown?e.transitionOnTriggerDown:e.transitionOnTriggerUp;return o===I?-1:o}resolveSequenceName(e){return e.sequence==null||e.sequence<0?null:this.seqIndexToName[e.sequence]??null}},U=r();function oe(e){if(!e)return`lookde`;let t=e.toLowerCase();return t.includes(`missile`)?`lookms`:t.includes(`sniper`)?`looksn`:`lookde`}var W=8,G=[`root`,`run`,`back`,`side`,`fall`,`jet`,`jump`,`land`];function K(e,t,n=0){let r=new Map,i=[];for(let n of e){let e=n.indexOf(` `);if(e===-1)continue;let r=n.slice(0,e).toLowerCase(),a=n.slice(e+1).trim().toLowerCase();if(!a||!r.startsWith(t)||!r.endsWith(`.dsq`))continue;let o=r.slice(t.length,-4);o&&i.push({clipName:o,alias:a})}let a=new Set;for(let e=0;e{let t=n?.toLowerCase();return t?e.runtime.sequenceAliases.get(t):void 0}),l=k(),{clonedScene:w,mixer:T,mount0:j,mount1:N,mount2:P,iflInitializers:F}=(0,M.useMemo)(()=>{let e=o(r.scene),t=f(e,void 0,{anisotropy:l});e.traverse(e=>{if(e.isMesh&&e.material){let t=Array.isArray(e.material)?e.material:[e.material];for(let e of t)e.side=0}});let n=new y(e),i=null,a=null,s=null;return e.traverse(e=>{!i&&e.name===`Mount0`&&(i=e),!a&&e.name===`Mount1`&&(a=e),!s&&e.name===`Mount2`&&(s=e)}),{clonedScene:e,mixer:n,mount0:i,mount1:a,mount2:s,iflInitializers:t}},[r,l]);(0,M.useEffect)(()=>()=>{d(w),T.uncacheRoot(w)},[w,T]);let I=(0,M.useRef)(new Map),L=(0,M.useRef)({head:null,headside:null}),R=(0,M.useRef)(new Map),z=(0,M.useRef)(null),B=(0,M.useRef)({name:`root`,timeScale:1}),V=(0,M.useRef)(!1),H=(0,M.useRef)(void 0),G=(0,M.useMemo)(()=>{let e=t.getState().playback.recording?.streamingPlayback,i=n?.toLowerCase();if(!e||!i)return new Map;let a=e.getShapeConstructorSequences(i);if(!a)return new Map;let o=i.replace(/\.dts$/i,``)+`_`;return K(a,o,se(r.scene,a,o))},[t,n,r.scene]),q=(0,M.useMemo)(()=>{let e=new Map,t=r.scene.userData?.dts_sequence_names,n=r.scene.userData?.dts_sequence_cyclic;if(typeof t==`string`&&typeof n==`string`)try{let r=JSON.parse(t),i=JSON.parse(n),a=new Map;for(let e=0;e{let e=C(r.animations,T,s);I.current=e;let t=e.get(`root`);t&&t.play(),B.current={name:`root`,timeScale:1};let n={head:null,headside:null};for(let{key:e,names:t}of[{key:`head`,names:[`head`]},{key:`headside`,names:[`headside`]}]){let i=r.animations.find(e=>t.includes(e.name.toLowerCase()));if(!i)continue;let a=i.clone(),o=Math.round(i.duration*30/2);b.makeClipAdditive(a,o,i,30);let s=T.clipAction(a);s.blendMode=v,s.timeScale=0,s.weight=1,s.play(),n[e]=s}L.current=n;let i=new Map,a=r.animations.find(e=>e.name.toLowerCase()===`lookde`),o=a?Math.round(a.duration*30/2):0;for(let e of[`lookde`,`lookms`,`looksn`]){let t=r.animations.find(t=>t.name.toLowerCase()===e);if(!t)continue;let n=t.clone(),s=a??t;b.makeClipAdditive(n,o,s,30);let c=T.clipAction(n);c.blendMode=v,c.timeScale=0,c.weight=0,c.play(),i.set(e,c)}R.current=i;let c=i.get(`lookde`);return c&&(c.weight=1,z.current=`lookde`),T.update(0),()=>{T.stopAllAction(),I.current=new Map,L.current={head:null,headside:null},R.current=new Map,z.current=null}},[T,r.animations,s]),(0,M.useEffect)(()=>{let e=[];for(let{mesh:t,initialize:n}of F)n(t,()=>O.getState().time).then(t=>e.push(t)).catch(()=>{});return()=>e.forEach(e=>e())},[F]);let ce=(0,M.useRef)(e.weaponShape),[J,le]=(0,M.useState)(e.weaponShape),de=(0,M.useRef)(e.packShape),[Y,fe]=(0,M.useState)(e.packShape),pe=(0,M.useRef)(e.flagShape),[X,Z]=(0,M.useState)(e.flagShape),{audioLoader:Q,audioListener:$}=te(),he=a()?.audioEnabled??!1,ge=(0,M.useRef)(null),_e=(0,M.useRef)(null),ve=(0,M.useRef)(null);return(0,M.useEffect)(()=>{if(!Q)return;let n=t.getState().playback.recording?.streamingPlayback;if(!n||!e.dataBlockId)return;let r=n.getDataBlockData.bind(n),i=r(e.dataBlockId)?.sounds?.[0];if(i==null)return;let a=re(i,r);if(a){ve.current=a;try{ne(ee(a.filename),Q,e=>{_e.current=e})}catch{}}},[Q,t,e.dataBlockId]),(0,M.useEffect)(()=>()=>{let e=ge.current;if(e){E(e);try{e.stop()}catch{}try{e.disconnect()}catch{}e.parent?.remove(e),ge.current=null}},[]),i((n,r)=>{e.weaponShape!==ce.current&&(ce.current=e.weaponShape,le(e.weaponShape)),e.packShape!==de.current&&(de.current=e.packShape,fe(e.packShape)),e.flagShape!==pe.current&&(pe.current=e.flagShape,Z(e.flagShape));let i=t.getState().playback,a=i.status===`playing`,o=O.getState().time,s=c(e.keyframes??[],o),l=s?.damageState!=null&&s.damageState>=1,d=I.current;if(l&&!V.current){V.current=!0;let e=s.actionAnim==null?void 0:G.get(s.actionAnim);if(e){let t=d.get(e.clipName);if(t){let n=d.get(B.current.name.toLowerCase());n&&n.fadeOut(u),t.setLoop(g,1),t.clampWhenFinished=!0,t.reset().fadeIn(u).play(),B.current={name:e.clipName,timeScale:1},H.current=s.actionAnim}}}if(!l&&V.current){V.current=!1,H.current=void 0;let e=d.get(B.current.name.toLowerCase());e&&(e.stop(),e.setLoop(h,1/0),e.clampWhenFinished=!1),B.current={name:`root`,timeScale:1};let t=d.get(`root`);t&&t.reset().play()}let f=s?.actionAnim,p=H.current;if(!V.current&&f!==p){H.current=f;let e=f!=null&&f>=W,t=p!=null&&p>=W;if(e){let e=G.get(f);if(e){let t=d.get(e.clipName);if(t){let n=d.get(B.current.name.toLowerCase());n&&n.fadeOut(u),t.setLoop(g,1),t.clampWhenFinished=!0,t.reset().fadeIn(u).play(),B.current={name:e.clipName,timeScale:1}}}}else if(t){let e=G.get(p);if(e){let t=d.get(e.clipName);t&&(t.fadeOut(u),t.setLoop(h,1/0),t.clampWhenFinished=!1)}B.current={name:`root`,timeScale:1};let t=d.get(`root`);t&&t.reset().fadeIn(u).play()}}if(f!=null&&f>=W&&s?.actionAtEnd){let e=G.get(f);if(e){let t=d.get(e.clipName);t&&(t.paused=!0)}}let m=H.current!=null&&H.current>=W;if(!V.current&&!m){let t=ae(s?.velocity,s?.rotation??[0,0,0,1],e.falling,e.jetting),n=B.current;if(t.animation!==n.name||t.timeScale!==n.timeScale){let e=d.get(n.name.toLowerCase()),r=d.get(t.animation.toLowerCase());r&&(q.get(t.animation)??!0?(r.setLoop(h,1/0),r.clampWhenFinished=!1):(r.setLoop(g,1),r.clampWhenFinished=!0),a&&e&&e!==r?(e.fadeOut(u),r.reset().fadeIn(u).play()):(e&&e!==r&&e.stop(),r.reset().play()),r.timeScale=t.timeScale,B.current={name:t.animation,timeScale:t.timeScale})}}let v=oe(e.weaponShape);if(v!==z.current){let e=R.current,t=z.current?e.get(z.current):null,n=e.get(v);n&&(t&&(t.weight=0),n.weight=l?0:1,z.current=v)}let{head:y,headside:b}=L.current,x=z.current?R.current.get(z.current):null,S=l?0:1,C=e.headPitch??0,ee=e.headYaw??0,te=(C+1)/2,ne=(ee+1)/2;x&&(x.time=te*x.getClip().duration,x.weight=S),y&&(y.time=te*y.getClip().duration,y.weight=S),b&&(b.time=ne*b.getClip().duration,b.weight=S);let re=!!e.jetting&&!l,D=ve.current,k=ge.current,A=k?.isPlaying??!1;if(re&&!A){if(he&&$&&_e.current&&D){let e=k;e||(e=new _($),e.setDistanceModel(`inverse`),e.setRefDistance(D.refDist),e.setMaxDistance(D.maxDist),e.setRolloffFactor(1),e.setVolume(D.volume),w.add(e),ge.current=e);try{e.setBuffer(_e.current),e.setLoop(!0),e.setPlaybackRate(i.rate),e.play(),ie(e,1)}catch{}}}else if(!re&&A&&k){E(k);try{k.stop()}catch{}}a?T.update(r*i.rate):T.update(0)}),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`group`,{rotation:[0,Math.PI/2,0],children:(0,U.jsx)(`primitive`,{object:w})}),J&&j&&(0,U.jsx)(A,{fallback:(0,U.jsx)(m,{color:`red`,label:J}),children:(0,U.jsx)(D,{name:`Weapon:${e.id}/${J}`,fallback:(0,U.jsx)(m,{color:`cyan`,label:J}),children:(0,U.jsx)(ue,{entity:e,weaponShape:J,mount0:j})})},J),Y&&N&&(0,U.jsx)(A,{fallback:(0,U.jsx)(m,{color:`red`,label:Y}),children:(0,U.jsx)(D,{name:`Pack:${e.id}/${Y}`,fallback:(0,U.jsx)(m,{color:`cyan`,label:Y}),children:(0,U.jsx)(me,{packShape:Y,mountBone:N})})},Y),X&&P&&(0,U.jsx)(A,{fallback:(0,U.jsx)(m,{color:`red`,label:X}),children:(0,U.jsx)(D,{name:`Flag:${e.id}/${X}`,fallback:(0,U.jsx)(m,{color:`cyan`,label:X}),children:(0,U.jsx)(me,{packShape:X,mountBone:P})})},X)]})}function le(e,t){let n=e.userData?.dts_sequence_names;if(typeof n==`string`)try{return JSON.parse(n).map(e=>e.toLowerCase())}catch{}return t.map(e=>e.name.toLowerCase())}function ue(e){let t=(0,j.c)(43),{entity:n,weaponShape:r,mount0:s}=e,c=x(),u=p(r),m=k(),g,v,b,S;if(t[0]!==m||t[1]!==u.animations||t[2]!==u.scene){g=o(u.scene),v=f(g,void 0,{anisotropy:m});let e=l(u.scene,u.animations,`Mountpoint`);if(e){let t=e.quaternion.clone().invert(),n=e.position.clone().negate().applyQuaternion(t);g.position.copy(n),g.quaternion.copy(t)}S=new Map,g.traverse(e=>{if(!e.isMesh)return;let t=(e.userData?.vis_sequence??``).toLowerCase();if(!t)return;let n=S.get(t);n||(n=[],S.set(t,n)),n.push(e)}),b=new y(g),t[0]=m,t[1]=u.animations,t[2]=u.scene,t[3]=g,t[4]=v,t[5]=b,t[6]=S}else g=t[3],v=t[4],b=t[5],S=t[6];let C=b,E=u.scene,D;t[7]!==E||t[8]!==u.animations?(D=le(E,u.animations),t[7]=E,t[8]=u.animations,t[9]=D):D=t[9];let O=D,A;t[10]!==g||t[11]!==v||t[12]!==C||t[13]!==O||t[14]!==S?(A={weaponClone:g,weaponMixer:C,seqIndexToName:O,visNodesBySequence:S,weaponIflInitializers:v},t[10]=g,t[11]=v,t[12]=C,t[13]=O,t[14]=S,t[15]=A):A=t[15];let{weaponClone:N,weaponMixer:P,seqIndexToName:F,visNodesBySequence:ae,weaponIflInitializers:I}=A,L,R;t[16]!==N||t[17]!==P?(L=()=>()=>{d(N),P.uncacheRoot(N)},R=[N,P],t[16]=N,t[17]=P,t[18]=L,t[19]=R):(L=t[18],R=t[19]),(0,M.useEffect)(L,R);let z;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(z=new Map,t[20]=z):z=t[20];let B=(0,M.useRef)(z),V=(0,M.useRef)(null),U,oe;t[21]!==u.animations||t[22]!==P?(U=()=>{let e=new Map;for(let t of u.animations)e.set(t.name.toLowerCase(),P.clipAction(t));B.current=e;let t=e.get(`spin`);return t&&(t.setLoop(h,1/0),t.timeScale=0,t.play()),V.current=t??null,P.update(0),()=>{P.stopAllAction(),B.current=new Map,V.current=null,ce(X,Z)}},oe=[P,u.animations],t[21]=u.animations,t[22]=P,t[23]=U,t[24]=oe):(U=t[23],oe=t[24]),(0,M.useEffect)(U,oe);let W,G;t[25]===I?(W=t[26],G=t[27]):(W=()=>{let e=[];for(let{mesh:t,initialize:n}of I)n(t,fe).then(t=>e.push(t)).catch(Y);return()=>e.forEach(de)},G=[I],t[25]=I,t[26]=W,t[27]=G),(0,M.useEffect)(W,G);let{audioLoader:K,audioListener:q}=te(),se=a()?.audioEnabled??!1,J=(0,M.useRef)(null),ue=(0,M.useRef)(null),me=(0,M.useRef)(n.weaponImageStates),X=(0,M.useRef)(null),Z=(0,M.useRef)(-1),Q,$;t[28]!==s||t[29]!==N?(Q=()=>(s.add(N),()=>{s.remove(N)}),$=[N,s],t[28]=s,t[29]=N,t[30]=Q,t[31]=$):(Q=t[30],$=t[31]),(0,M.useEffect)(Q,$);let he;return t[32]!==se||t[33]!==q||t[34]!==K||t[35]!==c||t[36]!==n.weaponImageState||t[37]!==n.weaponImageStates||t[38]!==F||t[39]!==ae||t[40]!==N||t[41]!==P?(he=(e,t)=>{let r=c.getState().playback,i=r.status===`playing`,a=B.current,o=n.weaponImageState,s=n.weaponImageStates;s!==me.current&&(me.current=s,s&&s.length>0?J.current=new H(s,F):J.current=null,ue.current=null,ce(X,Z,N)),!J.current&&s&&s.length>0&&(J.current=new H(s,F));let l=J.current;if(l&&o&&i){let e=t*r.rate,n=l.tick(e,o);if(pe(n,a,ue,ae),X.current&&n.stateIndex!==Z.current&&ce(X,Z,N),se&&K&&q&&n.soundDataBlockIds.length>0){let e=r.recording?.streamingPlayback.getDataBlockData.bind(r.recording.streamingPlayback);if(e)for(let t of n.soundDataBlockIds){let n=re(t,e);if(n)if(n.isLooping){if(!X.current)try{let e=ee(n.filename),t=w();ne(e,K,e=>{if(t!==w()||X.current)return;let i=l.stateIndex,a=new _(q);a.setBuffer(e),a.setDistanceModel(`inverse`),a.setRefDistance(n.refDist),a.setMaxDistance(n.maxDist),a.setRolloffFactor(1),a.setVolume(n.volume),a.setPlaybackRate(r.rate),a.setLoop(!0),N.add(a),ie(a),a.play(),X.current=a,Z.current=i})}catch{}}else T(n,q,K,void 0,N)}}V.current&&(V.current.timeScale=n.spinTimeScale)}i?P.update(t*r.rate):P.update(0)},t[32]=se,t[33]=q,t[34]=K,t[35]=c,t[36]=n.weaponImageState,t[37]=n.weaponImageStates,t[38]=F,t[39]=ae,t[40]=N,t[41]=P,t[42]=he):he=t[42],i(he),null}function de(e){return e()}function Y(){}function fe(){return O.getState().time}function pe(e,t,n,r){let i=e.sequenceName,a=n.current;if(i===a&&!e.transitioned)return;if(i!==a){if(a){let e=r.get(a);if(e)for(let t of e)t.visible=!1}if(i){let e=r.get(i);if(e)for(let t of e)t.visible=!0}}if(!i){if(a){let e=t.get(a);e&&e.fadeOut(u),n.current=null}return}let o=t.get(i);if(o&&(e.transitioned||i!==a)){let r=a?t.get(a):null;if(e.isFiring||e.timeoutValue>0?(o.setLoop(g,1),o.clampWhenFinished=!0):(o.setLoop(h,1/0),o.clampWhenFinished=!1),e.scaleAnimation&&e.timeoutValue>0){let t=o.getClip().duration;o.timeScale=t>0?t/e.timeoutValue:1}else o.timeScale=e.reverse?-1:1;r&&r!==o?(r.fadeOut(u),o.reset().fadeIn(u).play()):o.reset().play(),n.current=i}}function me(e){let t=(0,j.c)(15),{packShape:n,mountBone:r}=e,i=p(n),a=k(),s,c;if(t[0]!==a||t[1]!==i.animations||t[2]!==i.scene){s=o(i.scene),c=f(s,void 0,{anisotropy:a});let e=l(i.scene,i.animations,`Mountpoint`);if(e){let t=e.quaternion.clone().invert(),n=e.position.clone().negate().applyQuaternion(t);s.position.copy(n),s.quaternion.copy(t)}t[0]=a,t[1]=i.animations,t[2]=i.scene,t[3]=s,t[4]=c}else s=t[3],c=t[4];let u;t[5]!==s||t[6]!==c?(u={packClone:s,packIflInitializers:c},t[5]=s,t[6]=c,t[7]=u):u=t[7];let{packClone:m,packIflInitializers:h}=u,g,_;t[8]!==r||t[9]!==m?(g=()=>(r.add(m),()=>{r.remove(m),d(m)}),_=[m,r],t[8]=r,t[9]=m,t[10]=g,t[11]=_):(g=t[10],_=t[11]),(0,M.useEffect)(g,_);let v,y;return t[12]===h?(v=t[13],y=t[14]):(v=()=>{let e=[];for(let{mesh:t,initialize:n}of h)n(t,Q).then(t=>e.push(t)).catch(Z);return()=>e.forEach(X)},y=[h],t[12]=h,t[13]=v,t[14]=y),(0,M.useEffect)(v,y),null}function X(e){return e()}function Z(){}function Q(){return O.getState().time}function $(e){let t=(0,j.c)(7),{shapeName:n,eyeOffsetRef:r}=e,i=p(n),a;t[0]!==r||t[1]!==i.animations||t[2]!==i.scene?(a=()=>{let e=l(i.scene,i.animations,`Eye`);e?r.current.set(e.position.z,e.position.y,-e.position.x):r.current.set(0,s,0)},t[0]=r,t[1]=i.animations,t[2]=i.scene,t[3]=a):a=t[3];let o;return t[4]!==r||t[5]!==i?(o=[i,r],t[4]=r,t[5]=i,t[6]=o):o=t[6],(0,M.useEffect)(a,o),null}export{$ as PlayerEyeOffset,J as PlayerModel};