t2-mapper/docs/_next/static/chunks/aed6ada67562a5fc.js
2026-03-09 12:38:40 -07:00

1 line
No EOL
5.2 KiB
JavaScript

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66789,e=>{"use strict";var t=e.i(43476),i=e.i(71645),r=e.i(71753),a=e.i(90072);e.i(13876);var n=e.i(58647),o=e.i(82816),l=e.i(85557),s=e.i(71505),u=e.i(91907),c=e.i(25947);function m({shapeName:e,playerShapeName:r}){let a=(0,u.useStaticShape)(r),n=(0,u.useStaticShape)(e),o=(0,i.useMemo)(()=>{let t,i,r=function(e){if(!e)return"lookde";let t=e.toLowerCase();return t.includes("missile")?"lookms":t.includes("sniper")?"looksn":"lookde"}(e),o=(0,l.getPosedNodeTransform)(a.scene,a.animations,"Mount0",[r]);if(!o)return{position:void 0,quaternion:void 0};let s=(0,l.getPosedNodeTransform)(n.scene,n.animations,"Mountpoint");if(s){let e=s.quaternion.clone().invert(),r=s.position.clone().negate().applyQuaternion(e);i=o.quaternion.clone().multiply(e),t=r.clone().applyQuaternion(o.quaternion).add(o.position)}else t=o.position.clone(),i=o.quaternion.clone();return{position:t.applyQuaternion(l._r90),quaternion:l._r90.clone().multiply(i).multiply(l._r90inv)}},[a,n]),s=(0,i.useMemo)(()=>({_class:"weapon",_className:"Weapon",_id:0}),[]);return(0,t.jsx)(c.ShapeInfoProvider,{object:s,shapeName:e,type:"Item",children:(0,t.jsx)("group",{position:o.position,quaternion:o.quaternion,children:(0,t.jsx)(u.ShapeRenderer,{loadingColor:"#4488ff"})})})}function f({entity:e,playback:c}){let m=(0,u.useStaticShape)(e.dataBlock),f=(0,i.useRef)(null),p=(0,i.useRef)((0,n.effectNow)()),h=(0,i.useRef)(Math.random()*Math.PI*2),d=(0,i.useRef)([]),y=(0,i.useMemo)(()=>{if(e.explosionDataBlockId)return c.getDataBlockData(e.explosionDataBlockId)},[e.explosionDataBlockId,c]),g=(0,i.useMemo)(()=>y?function(e){let t=e.sizes,i=e.times;if(!Array.isArray(t)||0===t.length)return{times:[0,1],sizes:[[1,1,1],[1,1,1]]};let r=t.map(e=>[e.x/100,e.y/100,e.z/100]);return{times:Array.isArray(i)?i:r.map((e,t)=>t/Math.max(r.length-1,1)),sizes:r}}(y):void 0,[y]),v=(0,i.useMemo)(()=>{let e=y?.explosionScale;return e?[e.x/100,e.y/100,e.z/100]:[1,1,1]},[y]),M=32*(y?.lifetimeMS??31),A=!1!==e.faceViewer,{scene:_,mixer:S,visNodes:x,iflInfos:q,materials:b}=(0,i.useMemo)(()=>{let t=o.clone(m.scene),i=[];t.traverse(e=>{if(!e.isMesh||!e.material)return;let t=Array.isArray(e.material)?e.material[0]:e.material;if(!t?.userData)return;let r=new Set(t.userData.flag_names??[]),a=t.userData.resource_path;if(r.has("IflMaterial")&&a){let t=e.userData;i.push({mesh:e,iflPath:`textures/${a}.ifl`,sequenceName:t?.ifl_sequence?String(t.ifl_sequence).toLowerCase():void 0,duration:t?.ifl_duration?Number(t.ifl_duration):void 0,cyclic:t?.ifl_sequence?!!t.ifl_cyclic:void 0,toolBegin:t?.ifl_tool_begin!=null?Number(t.ifl_tool_begin):void 0})}}),(0,l.processShapeScene)(t,e.dataBlock);let r=[];for(let e of(t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let i=t.vis_keyframes,a=t.vis_duration,n=(t.vis_sequence??"").toLowerCase();n&&Array.isArray(i)&&!(i.length<=1)&&a&&!(a<=0)&&"ambient"===n&&r.push({mesh:e,keyframes:i,duration:a,cyclic:!!t.vis_cyclic})}),r))e.mesh.visible=!0,e.mesh.material&&!Array.isArray(e.mesh.material)&&(e.mesh.material.transparent=!0,e.mesh.material.depthWrite=!1);for(let e of i)e.mesh.userData?.vis_sequence||(e.mesh.visible=!0);let n=new Map;for(let e of m.animations)n.set(e.name.toLowerCase(),e);let s=n.get("ambient"),u=null;if(s){let e=(u=new a.AnimationMixer(t)).clipAction(s);e.setLoop(a.LoopOnce,1),e.clampWhenFinished=!0,e.timeScale=(y?.playSpeed??20)/20,e.play()}let c=[];return t.traverse(e=>{e.isMesh&&(Array.isArray(e.material)?c.push(...e.material):e.material&&c.push(e.material))}),t.traverse(e=>{e.frustumCulled=!1}),{scene:t,mixer:u,visNodes:r,iflInfos:i,materials:c}},[m,y]);return(0,i.useEffect)(()=>{for(let e of(d.current=[],q))(0,s.loadIflAtlas)(e.iflPath).then(t=>{let i=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;i&&(i.map=t.texture,i.needsUpdate=!0),d.current.push({atlas:t,info:e})}).catch(()=>{})},[q]),(0,r.useFrame)((e,t)=>{let i=f.current;if(!i)return;let r=n.engineStore.getState().playback,a="playing"===r.status?t*r.rate:0,o=(0,n.effectNow)()-p.current,l=Math.min(o/M,1),u=o/1e3;S&&S.update(a);let c=l>.8?1-(l-.8)/.2:1;for(let{mesh:e,keyframes:t,duration:i,cyclic:r}of x){let a=e.material;if(!a||Array.isArray(a))continue;let n=u/i,o=r?n%1:Math.min(n,1),l=t.length,s=o*l,m=Math.floor(s)%l,f=(m+1)%l,p=s-Math.floor(s);a.opacity=(t[m]+(t[f]-t[m])*p)*c}if(c<1)for(let e of b)"opacity"in e&&(e.transparent=!0,e.opacity*=c);for(let{atlas:e,info:t}of d.current){let i;i=t.sequenceName&&t.duration?(t.cyclic?u/t.duration%1:Math.min(u/t.duration,1))*t.duration+(t.toolBegin??0):u,(0,s.updateAtlasFrame)(e,(0,s.getFrameIndexForTime)(e,i))}if(g){let e=function(e,t){let{times:i,sizes:r}=e;if(0===i.length)return[1,1,1];if(t<=i[0])return r[0];if(t>=i[i.length-1])return r[r.length-1];for(let e=0;e<i.length-1;e++)if(t>=i[e]&&t<=i[e+1]){let a=(t-i[e])/(i[e+1]-i[e]);return[r[e][0]+(r[e+1][0]-r[e][0])*a,r[e][1]+(r[e+1][1]-r[e][1])*a,r[e][2]+(r[e+1][2]-r[e][2])*a]}return r[r.length-1]}(g,l);i.scale.set(e[0]*v[0],e[1]*v[1],e[2]*v[2])}A&&(i.lookAt(e.camera.position),i.rotateZ(h.current))}),(0,t.jsx)("group",{ref:f,children:(0,t.jsx)("group",{rotation:[0,Math.PI,0],children:(0,t.jsx)("primitive",{object:_})})})}e.s(["ExplosionShape",()=>f,"WeaponModel",()=>m])}]);