1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[292],{292:function(e,t,a){a.r(t),a.d(t,{CAMERA_RIG_DEFAULT:function(){return s},CameraRigController:function(){return m},CameraRigPanel:function(){return h}});var o=a(27573),n=a(7653),l=a(97551);let s={ox:1,oy:1,oz:1,lx:0,ly:0,lz:0,ux:0,uy:1,uz:0,zoom:1400},x={...s},c=new Set,r=()=>x,i=e=>{x=e,c.forEach(e=>e())},u=e=>(c.add(e),()=>{c.delete(e)});function m(e){let{center:t=[0,0,0]}=e,{camera:a}=(0,l.D)();return(0,l.F)(()=>{let e=r(),[o,n,l]=t;a.position.set(o+e.ox,n+e.oy,l+e.oz),a.up.set(e.ux,e.uy,e.uz),a.lookAt(o+e.lx,n+e.ly,l+e.lz),a.isOrthographicCamera&&a.zoom!==e.zoom&&(a.zoom=e.zoom,a.updateProjectionMatrix())}),null}function p(e){let{label:t,k:a,min:n,max:l,step:s,value:x,onSet:c}=e;return(0,o.jsxs)("label",{className:"flex items-center gap-2 text-[11px] text-white",children:[(0,o.jsx)("span",{className:"w-10 shrink-0 font-mono uppercase",children:t}),(0,o.jsx)("input",{type:"range",min:n,max:l,step:s,value:x[a],onChange:e=>c(a,parseFloat(e.target.value)),className:"h-1 flex-1 cursor-pointer"}),(0,o.jsx)("span",{className:"w-12 shrink-0 text-right font-mono tabular-nums",children:x[a].toFixed(2)})]})}function h(e){let{label:t="Camera rig"}=e,a=(0,n.useSyncExternalStore)(u,r,r),l=(e,t)=>i({...a,[e]:t});return(0,o.jsxs)("div",{className:"pointer-events-auto fixed bottom-4 left-4 z-[90] w-72 rounded-lg bg-black/80 p-3 backdrop-blur",children:[(0,o.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,o.jsx)("span",{className:"font-mono text-[11px] font-bold uppercase text-white",children:t}),(0,o.jsx)("button",{type:"button",onClick:()=>i({...s}),className:"rounded bg-white/20 px-2 py-0.5 font-mono text-[10px] uppercase text-white can-hover:hover:bg-white/30",children:"Reset"})]}),(0,o.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,o.jsx)(p,{label:"pos x",k:"ox",min:-2.5,max:2.5,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"pos y",k:"oy",min:-2.5,max:2.5,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"pos z",k:"oz",min:-2.5,max:2.5,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"aim x",k:"lx",min:-1,max:1,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"aim y",k:"ly",min:-1,max:1,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"aim z",k:"lz",min:-1,max:1,step:.01,value:a,onSet:l}),(0,o.jsx)(p,{label:"up x",k:"ux",min:-1,max:1,step:.02,value:a,onSet:l}),(0,o.jsx)(p,{label:"up y",k:"uy",min:-1,max:1,step:.02,value:a,onSet:l}),(0,o.jsx)(p,{label:"up z",k:"uz",min:-1,max:1,step:.02,value:a,onSet:l}),(0,o.jsx)(p,{label:"zoom",k:"zoom",min:400,max:3200,step:10,value:a,onSet:l})]}),(0,o.jsx)("pre",{className:"mt-2 select-all whitespace-pre-wrap break-all font-mono text-[9px] leading-tight text-emerald-300",children:"offset(".concat(a.ox,", ").concat(a.oy,", ").concat(a.oz,") aim(").concat(a.lx,", ").concat(a.ly,", ").concat(a.lz,") up(").concat(a.ux,", ").concat(a.uy,", ").concat(a.uz,") zoom ").concat(a.zoom)})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.