mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-03-14 09:50:51 +00:00
1 line
No EOL
5.6 KiB
JavaScript
1 line
No EOL
5.6 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,60505,e=>{"use strict";var t=e.i(932),r=e.i(71645),n=e.i(71753),c=e.i(15080),i=e.i(90072),o=e.i(12631),a=e.i(25645),u=e.i(98755),l=e.i(58647),m=e.i(93784),s=e.i(205),d=e.i(79123),v=e.i(51475),p=e.i(89119);let y=(0,a.createLogger)("LiveObserver"),f=1/v.TICK_RATE,g=new i.Vector3,E=new i.Vector3;function h(){let e,i,a,h,M,P,L,_,O,R,I,A,C,k,K=(0,t.c)(27),N=(0,u.useLiveSelector)(T),z=(0,u.useLiveSelector)(b),X=(0,u.useLiveSelector)(w),Y=(0,l.useEngineStoreApi)(),{speedMultiplier:D}=(0,d.useControls)(),x=(0,r.useRef)(null),H=(0,c.useThree)(S),[,U]=(0,o.useKeyboardControls)(),V=(0,r.useRef)(0),W=(0,r.useRef)(0);K[0]===Symbol.for("react.memo_cache_sentinel")?(e={yaw:0,pitch:0,prevYaw:0,prevPitch:0,initialized:!1,lastSyncedCamera:null},K[0]=e):e=K[0];let q=(0,r.useRef)(e),B=(0,r.useRef)(0);return K[1]!==N||K[2]!==z||K[3]!==Y?(i=()=>{if(N&&("connected"===z||"authenticating"===z)){if(x.current===N)return;y.info("wiring adapter to engine store");let e=u.liveConnectionStore.getState(),t={source:"live",duration:1/0,missionName:e.mapName??null,gameType:null,serverDisplayName:e.serverName??null,recorderName:e.warriorName??null,recordingDate:null,streamingPlayback:N};Y.getState().setRecording(t),Y.getState().setPlaybackStatus("playing"),x.current=N,q.current.initialized=!1,q.current.lastSyncedCamera=null}else if(!N&&x.current){let e=Y.getState().playback.recording;e?.source==="live"&&Y.getState().setRecording(null),x.current=null,q.current.initialized=!1}},a=[N,z,Y],K[1]=N,K[2]=z,K[3]=Y,K[4]=i,K[5]=a):(i=K[4],a=K[5]),(0,r.useEffect)(i,a),K[6]!==H.domElement?(h=()=>{let e=!1,t=t=>{document.pointerLockElement?(V.current=V.current+.002*t.movementX,W.current=W.current+.002*t.movementY):e&&(V.current=V.current+t.movementX*s.MOUSE_SENSITIVITY,W.current=W.current+t.movementY*s.MOUSE_SENSITIVITY)},r=t=>{document.pointerLockElement||t.target!==H.domElement||(e=!0)},n=()=>{e=!1};return document.addEventListener("mousemove",t),document.addEventListener("mousedown",r),document.addEventListener("mouseup",n),()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mousedown",r),document.removeEventListener("mouseup",n)}},M=[H.domElement],K[6]=H.domElement,K[7]=h,K[8]=M):(h=K[7],M=K[8]),(0,r.useEffect)(h,M),K[9]===Symbol.for("react.memo_cache_sentinel")?(P=()=>{let e=e=>{document.pointerLockElement&&x.current&&"follow"===x.current.observerMode&&(e.stopImmediatePropagation(),x.current.cycleObserveNext())};return document.addEventListener("click",e,{capture:!0}),()=>{document.removeEventListener("click",e,{capture:!0})}},K[9]=P):P=K[9],K[10]!==H.domElement?(L=[H.domElement],K[10]=H.domElement,K[11]=L):L=K[11],(0,r.useEffect)(P,L),K[12]===Symbol.for("react.memo_cache_sentinel")?(_=()=>{let e=e=>{if("KeyO"!==e.code||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target;"INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable||x.current&&(x.current.toggleObserverMode(),y.info("observer mode: %s",x.current.observerMode))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},O=[],K[12]=_,K[13]=O):(_=K[12],O=K[13]),(0,r.useEffect)(_,O),K[14]!==z||K[15]!==U?(R=(e,t)=>{if(!x.current||"connected"!==z)return;let{lookUp:r,lookDown:n,lookLeft:c,lookRight:i}=U();i&&(V.current=V.current+s.ARROW_LOOK_SPEED*t),c&&(V.current=V.current-s.ARROW_LOOK_SPEED*t),n&&(W.current=W.current+s.ARROW_LOOK_SPEED*t),r&&(W.current=W.current-s.ARROW_LOOK_SPEED*t)},K[14]=z,K[15]=U,K[16]=R):R=K[16],(0,n.useFrame)(R),K[17]!==z||K[18]!==U||K[19]!==X||K[20]!==D?(I=()=>{if(!x.current||"connected"!==z)return;let{forward:e,backward:t,left:r,right:n,up:c,down:i}=U(),o=0,a=0,u=0;e&&(a=1),t&&(a-=1),r&&(o=-1),n&&(o+=1),c&&(u=1),i&&(u-=1);let l=V.current,m=W.current;V.current=0,W.current=0;let s=q.current;s.prevYaw=s.yaw,s.prevPitch=s.pitch,s.yaw=s.yaw+l,s.pitch=Math.max(-p.MAX_PITCH,Math.min(p.MAX_PITCH,s.pitch+m)),B.current=0;let d=Math.min(1,D);X({x:o*d,y:a*d,z:u*d,yaw:l,pitch:m,roll:0,trigger:[!1,!0,!1,!1,!1,!1],freeLook:!1})},K[17]=z,K[18]=U,K[19]=X,K[20]=D,K[21]=I):I=K[21],(0,v.useTick)(I),K[22]!==z?(A=(e,t)=>{if(!x.current||"connected"!==z)return;let r=q.current,n=x.current.getSnapshot(),c=n?.camera;if(c&&c!==r.lastSyncedCamera&&"number"==typeof c.yaw&&"number"==typeof c.pitch){let e=V.current,t=W.current;r.prevYaw=r.initialized?r.yaw:c.yaw,r.prevPitch=r.initialized?r.pitch:c.pitch,r.yaw=c.yaw+e,r.pitch=Math.max(-p.MAX_PITCH,Math.min(p.MAX_PITCH,c.pitch+t)),r.lastSyncedCamera=c,r.initialized=!0}if(!r.initialized)return;B.current=B.current+t;let i=Math.min(1,B.current/f),o=r.prevYaw+(r.yaw-r.prevYaw)*i+V.current,a=Math.max(-p.MAX_PITCH,Math.min(p.MAX_PITCH,r.prevPitch+(r.pitch-r.prevPitch)*i+W.current)),[u,l,s,d]=(0,p.yawPitchToQuaternion)(o,a);if(c?.mode==="third-person"&&c.orbitTargetId){let t=m.streamPlaybackStore.getState().root,r=t?.children.find(e=>e.name===c.orbitTargetId);if(r){E.copy(r.position);let t=m.streamPlaybackStore.getState().entities.get(c.orbitTargetId);t?.renderType==="Player"&&(E.y=E.y+1);let n=Math.sin(a),i=Math.cos(a),u=Math.sin(o),l=Math.cos(o);if(g.set(-l*i,-n,u*i),g.lengthSq()>1e-8){g.normalize();let t=Math.max(.1,c.orbitDistance??4);e.camera.position.copy(E).addScaledVector(g,t),e.camera.lookAt(E)}}}else e.camera.quaternion.set(u,l,s,d)},K[22]=z,K[23]=A):A=K[23],(0,n.useFrame)(A),K[24]!==Y?(C=()=>()=>{if(x.current){let e=Y.getState().playback.recording;e?.source==="live"&&Y.getState().setRecording(null),x.current=null}},k=[Y],K[24]=Y,K[25]=C,K[26]=k):(C=K[25],k=K[26]),(0,r.useEffect)(C,k),null}function S(e){return e.gl}function w(e){return e.sendMove}function b(e){return e.gameStatus}function T(e){return e.adapter}e.s(["LiveObserver",()=>h])}]); |