t2-mapper/docs/_next/static/chunks/96ae05ebba99dcff.js
2026-03-12 16:34:43 -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),a=e.i(71645),i=e.i(71753),r=e.i(90072),n=e.i(58647),o=e.i(82816),l=e.i(85557),s=e.i(71505),u=e.i(91907),c=e.i(25947),m=e.i(93784);function f({entity:e}){let i=e.weaponShape,r=e.shapeName,n=(0,u.useStaticShape)(r),o=(0,u.useStaticShape)(i),s=(0,a.useMemo)(()=>{let e,t,a=function(e){if(!e)return"lookde";let t=e.toLowerCase();return t.includes("missile")?"lookms":t.includes("sniper")?"looksn":"lookde"}(i),r=(0,l.getPosedNodeTransform)(n.scene,n.animations,"Mount0",[a]);if(!r)return{position:void 0,quaternion:void 0};let s=(0,l.getPosedNodeTransform)(o.scene,o.animations,"Mountpoint");if(s){let a=s.quaternion.clone().invert(),i=s.position.clone().negate().applyQuaternion(a);t=r.quaternion.clone().multiply(a),e=i.clone().applyQuaternion(r.quaternion).add(r.position)}else e=r.position.clone(),t=r.quaternion.clone();return{position:e.applyQuaternion(l._r90),quaternion:l._r90.clone().multiply(t).multiply(l._r90inv)}},[n,o]),m=(0,a.useMemo)(()=>({_class:"weapon",_className:"Weapon",_id:0}),[]);return(0,t.jsx)(c.ShapeInfoProvider,{object:m,shapeName:i,type:"Item",children:(0,t.jsx)("group",{position:s.position,quaternion:s.quaternion,children:(0,t.jsx)(u.ShapeRenderer,{loadingColor:"#4488ff"})})})}function p({entity:e}){let c=m.streamPlaybackStore.getState().playback,f=(0,u.useStaticShape)(e.shapeName),p=(0,a.useRef)(null),h=(0,a.useRef)((0,n.effectNow)()),d=(0,a.useRef)(Math.random()*Math.PI*2),y=(0,a.useRef)([]),g=(0,a.useMemo)(()=>{if(e.explosionDataBlockId)return c.getDataBlockData(e.explosionDataBlockId)},[e.explosionDataBlockId,c]),v=(0,a.useMemo)(()=>g?function(e){let t=e.sizes,a=e.times;if(!Array.isArray(t)||0===t.length)return{times:[0,1],sizes:[[1,1,1],[1,1,1]]};let i=t.map(e=>[e.x/100,e.y/100,e.z/100]);return{times:Array.isArray(a)?a:i.map((e,t)=>t/Math.max(i.length-1,1)),sizes:i}}(g):void 0,[g]),M=(0,a.useMemo)(()=>{let e=g?.explosionScale;return e?[e.x/100,e.y/100,e.z/100]:[1,1,1]},[g]),A=32*(g?.lifetimeMS??31),S=!1!==e.faceViewer,{scene:_,mixer:x,visNodes:b,iflInfos:q,materials:k}=(0,a.useMemo)(()=>{let t=o.clone(f.scene),a=[];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 i=new Set(t.userData.flag_names??[]),r=t.userData.resource_path;if(i.has("IflMaterial")&&r){let t=e.userData;a.push({mesh:e,iflPath:`textures/${r}.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.shapeName);let i=[];for(let e of(t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let a=t.vis_keyframes,r=t.vis_duration,n=(t.vis_sequence??"").toLowerCase();n&&Array.isArray(a)&&!(a.length<=1)&&r&&!(r<=0)&&"ambient"===n&&i.push({mesh:e,keyframes:a,duration:r,cyclic:!!t.vis_cyclic})}),i))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 a)e.mesh.userData?.vis_sequence||(e.mesh.visible=!0);let n=new Map;for(let e of f.animations)n.set(e.name.toLowerCase(),e);let s=n.get("ambient"),u=null;if(s){let e=(u=new r.AnimationMixer(t)).clipAction(s);e.setLoop(r.LoopOnce,1),e.clampWhenFinished=!0,e.timeScale=(g?.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:i,iflInfos:a,materials:c}},[f,g]);return(0,a.useEffect)(()=>{for(let e of(y.current=[],q))(0,s.loadIflAtlas)(e.iflPath).then(t=>{let a=Array.isArray(e.mesh.material)?e.mesh.material[0]:e.mesh.material;a&&(a.map=t.texture,a.needsUpdate=!0),y.current.push({atlas:t,info:e})}).catch(()=>{})},[q]),(0,i.useFrame)((e,t)=>{let a=p.current;if(!a)return;let i=n.engineStore.getState().playback,r="playing"===i.status?t*i.rate:0,o=(0,n.effectNow)()-h.current,l=Math.min(o/A,1),u=o/1e3;x&&x.update(r);let c=l>.8?1-(l-.8)/.2:1;for(let{mesh:e,keyframes:t,duration:a,cyclic:i}of b){let r=e.material;if(!r||Array.isArray(r))continue;let n=u/a,o=i?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);r.opacity=(t[m]+(t[f]-t[m])*p)*c}if(c<1)for(let e of k)"opacity"in e&&(e.transparent=!0,e.opacity*=c);for(let{atlas:e,info:t}of y.current){let a;a=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,a))}if(v){let e=function(e,t){let{times:a,sizes:i}=e;if(0===a.length)return[1,1,1];if(t<=a[0])return i[0];if(t>=a[a.length-1])return i[i.length-1];for(let e=0;e<a.length-1;e++)if(t>=a[e]&&t<=a[e+1]){let r=(t-a[e])/(a[e+1]-a[e]);return[i[e][0]+(i[e+1][0]-i[e][0])*r,i[e][1]+(i[e+1][1]-i[e][1])*r,i[e][2]+(i[e+1][2]-i[e][2])*r]}return i[i.length-1]}(v,l);a.scale.set(e[0]*M[0],e[1]*M[1],e[2]*M[2])}S&&(a.lookAt(e.camera.position),a.rotateZ(d.current))}),(0,t.jsx)("group",{ref:p,children:(0,t.jsx)("group",{rotation:[0,Math.PI,0],children:(0,t.jsx)("primitive",{object:_})})})}e.s(["ExplosionShape",()=>p,"WeaponModel",()=>f])}]);