t2-mapper/docs/_next/static/chunks/c5f946098461b297.js

1 line
No EOL
6 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(932),a=e.i(71645),r=e.i(71753),n=e.i(90072),o=e.i(58647),l=e.i(82816),s=e.i(85557),u=e.i(71505),c=e.i(91907),m=e.i(56893),f=e.i(25947),p=e.i(93784);function h(e){let a,r,n,o,l,u=(0,i.c)(18),{entity:m}=e,p=m.weaponShape,h=m.shapeName,d=(0,c.useStaticShape)(h),y=(0,c.useStaticShape)(p);if(u[0]!==d.animations||u[1]!==d.scene||u[2]!==p||u[3]!==y.animations||u[4]!==y.scene){e:{let e,t,i,r=function(e){if(!e)return"lookde";let t=e.toLowerCase();return t.includes("missile")?"lookms":t.includes("sniper")?"looksn":"lookde"}(p),n=(0,s.getPosedNodeTransform)(d.scene,d.animations,"Mount0",[r]);if(!n){let e;u[6]===Symbol.for("react.memo_cache_sentinel")?(e={position:void 0,quaternion:void 0},u[6]=e):e=u[6],a=e;break e}let o=(0,s.getPosedNodeTransform)(y.scene,y.animations,"Mountpoint");if(o){let i=o.quaternion.clone().invert(),a=o.position.clone().negate().applyQuaternion(i);t=n.quaternion.clone().multiply(i),e=a.clone().applyQuaternion(n.quaternion).add(n.position)}else e=n.position.clone(),t=n.quaternion.clone();let l=e.applyQuaternion(s._r90),c=s._r90.clone().multiply(t).multiply(s._r90inv);u[7]!==l||u[8]!==c?(i={position:l,quaternion:c},u[7]=l,u[8]=c,u[9]=i):i=u[9],a=i}u[0]=d.animations,u[1]=d.scene,u[2]=p,u[3]=y.animations,u[4]=y.scene,u[5]=a}else a=u[5];let g=a;u[10]===Symbol.for("react.memo_cache_sentinel")?(r={_class:"weapon",_className:"Weapon",_id:0},u[10]=r):r=u[10];let _=r;return u[11]===Symbol.for("react.memo_cache_sentinel")?(n=(0,t.jsx)(c.ShapeRenderer,{loadingColor:"#4488ff"}),u[11]=n):n=u[11],u[12]!==g.position||u[13]!==g.quaternion?(o=(0,t.jsx)("group",{position:g.position,quaternion:g.quaternion,children:n}),u[12]=g.position,u[13]=g.quaternion,u[14]=o):o=u[14],u[15]!==p||u[16]!==o?(l=(0,t.jsx)(f.ShapeInfoProvider,{object:_,shapeName:p,type:"Item",children:o}),u[15]=p,u[16]=o,u[17]=l):l=u[17],l}function d({entity:e}){let i=p.streamPlaybackStore.getState().playback,f=(0,c.useStaticShape)(e.shapeName),h=(0,m.useAnisotropy)(),d=(0,a.useRef)(null),y=(0,a.useRef)((0,o.effectNow)()),g=(0,a.useRef)(Math.random()*Math.PI*2),_=(0,a.useRef)([]),S=(0,a.useMemo)(()=>{if(e.explosionDataBlockId)return i.getDataBlockData(e.explosionDataBlockId)},[e.explosionDataBlockId,i]),v=(0,a.useMemo)(()=>S?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 a=t.map(e=>[e.x/100,e.y/100,e.z/100]);return{times:Array.isArray(i)?i:a.map((e,t)=>t/Math.max(a.length-1,1)),sizes:a}}(S):void 0,[S]),A=(0,a.useMemo)(()=>{let e=S?.explosionScale;return e?[e.x/100,e.y/100,e.z/100]:[1,1,1]},[S]),M=32*(S?.lifetimeMS??31),b=!1!==e.faceViewer,{scene:x,mixer:q,visNodes:k,iflInfos:N,materials:w}=(0,a.useMemo)(()=>{let t=l.clone(f.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 a=new Set(t.userData.flag_names??[]),r=t.userData.resource_path;if(a.has("IflMaterial")&&r){let t=e.userData;i.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,s.processShapeScene)(t,e.shapeName,{anisotropy:h});let a=[];for(let e of(t.traverse(e=>{if(!e.isMesh)return;let t=e.userData;if(!t)return;let i=t.vis_keyframes,r=t.vis_duration,n=(t.vis_sequence??"").toLowerCase();n&&Array.isArray(i)&&!(i.length<=1)&&r&&!(r<=0)&&"ambient"===n&&a.push({mesh:e,keyframes:i,duration:r,cyclic:!!t.vis_cyclic})}),a))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 r=new Map;for(let e of f.animations)r.set(e.name.toLowerCase(),e);let o=r.get("ambient"),u=null;if(o){let e=(u=new n.AnimationMixer(t)).clipAction(o);e.setLoop(n.LoopOnce,1),e.clampWhenFinished=!0,e.timeScale=(S?.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:a,iflInfos:i,materials:c}},[f,S,h]);return(0,a.useEffect)(()=>()=>{(0,s.disposeClonedScene)(x),q?.uncacheRoot(x)},[x,q]),(0,a.useEffect)(()=>{for(let e of(_.current=[],N))(0,u.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),_.current.push({atlas:t,info:e})}).catch(()=>{})},[N]),(0,r.useFrame)((e,t)=>{let i=d.current;if(!i)return;let a=o.engineStore.getState().playback,r="playing"===a.status?t*a.rate:0,n=(0,o.effectNow)()-y.current,l=Math.min(n/M,1),s=n/1e3;q&&q.update(r);let c=l>.8?1-(l-.8)/.2:1;for(let{mesh:e,keyframes:t,duration:i,cyclic:a}of k){let r=e.material;if(!r||Array.isArray(r))continue;let n=s/i,o=a?n%1:Math.min(n,1),l=t.length,u=o*l,m=Math.floor(u)%l,f=(m+1)%l,p=u-Math.floor(u);r.opacity=(t[m]+(t[f]-t[m])*p)*c}if(c<1)for(let e of w)"opacity"in e&&(e.transparent=!0,e.opacity*=c);for(let{atlas:e,info:t}of _.current){let i;i=t.sequenceName&&t.duration?(t.cyclic?s/t.duration%1:Math.min(s/t.duration,1))*t.duration+(t.toolBegin??0):s,(0,u.updateAtlasFrame)(e,(0,u.getFrameIndexForTime)(e,i))}if(v){let e=function(e,t){let{times:i,sizes:a}=e;if(0===i.length)return[1,1,1];if(t<=i[0])return a[0];if(t>=i[i.length-1])return a[a.length-1];for(let e=0;e<i.length-1;e++)if(t>=i[e]&&t<=i[e+1]){let r=(t-i[e])/(i[e+1]-i[e]);return[a[e][0]+(a[e+1][0]-a[e][0])*r,a[e][1]+(a[e+1][1]-a[e][1])*r,a[e][2]+(a[e+1][2]-a[e][2])*r]}return a[a.length-1]}(v,l);i.scale.set(e[0]*A[0],e[1]*A[1],e[2]*A[2])}b&&(i.lookAt(e.camera.position),i.rotateZ(g.current))}),(0,t.jsx)("group",{ref:d,children:(0,t.jsx)("group",{rotation:[0,Math.PI,0],children:(0,t.jsx)("primitive",{object:x})})})}e.s(["ExplosionShape",()=>d,"WeaponModel",()=>h])}]);