UNPKG

ocearo-ui

Version:

Ocean Robot UI: Sailing made smarter

1 lines 3.29 kB
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[197],{62197:function(t,e,i){i.r(e),i.d(e,{default:function(){return p}});var a=i(57437),n=i(2265),o=i(21276),s=i(68328),l=i(44725),r=i(85903),u=i(5550),h=i(72079),d=i(11909),c=i(53082);let g=(t,e,i,a)=>{let n=(i-t)*Math.PI/180,o=(a-e)*Math.PI/180,s=Math.sin(n/2)*Math.sin(n/2)+Math.cos(t*Math.PI/180)*Math.cos(i*Math.PI/180)*Math.sin(o/2)*Math.sin(o/2);return 2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s))*6371e3};var f=()=>{let t=(0,n.useRef)(),[e,i]=(0,n.useState)(null),{getSignalKValue:s}=(0,c.yC)();return(0,n.useEffect)(()=>{let t=s("navigation.position");t&&!e&&i({latitude:t.latitude,longitude:t.longitude})},[s,e]),(0,n.useEffect)(()=>{if(t.current){let e=new h.u9r,i=[];for(let t=0;t<=64;t++){let e=t/64*Math.PI*2;i.push(50*Math.cos(e),0,50*Math.sin(e))}e.setAttribute("position",new h.a$l(i,3)),t.current.geometry=e}},[]),(0,o.F)(()=>{if(t.current&&e){let i=s("navigation.position");if(i){let a=g(e.latitude,e.longitude,e.latitude,i.longitude),n=g(e.latitude,e.longitude,i.latitude,e.longitude),o=i.longitude>e.longitude?a:-a,s=i.latitude>e.latitude?n:-n;t.current.position.set(o,-6.9,s)}}}),(0,a.jsx)("line",{ref:t,children:(0,a.jsx)("lineBasicMaterial",{attach:"material",color:"green",linewidth:2})})},p=t=>{let{onUpdateInfoPanel:e}=t,i=(0,n.useRef)(),{size:c}=(0,o.D)(),g=c.width/c.height;return(0,a.jsxs)(n.Suspense,{fallback:(0,a.jsx)(s.V,{children:"Loading..."}),children:[(0,a.jsx)(l.c,{makeDefault:!0,fov:25,aspect:g,near:1,far:1e3,position:[32,10,-32]}),(0,a.jsx)(r.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,a.jsx)(u.qA,{files:"./assets/ocearo_env.hdr",background:!1}),(0,a.jsx)("ambientLight",{intensity:.6}),(0,a.jsx)("spotLight",{position:[15,30,20],intensity:2,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,a.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,a.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,a.jsx)(d.Z,{ref:i,scale:[1.3,1.3,1.3],position:[0,-6,0],onUpdateInfoPanel:e}),(0,a.jsx)(f,{}),(0,a.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,-7,0],receiveShadow:!0,children:[(0,a.jsx)("planeGeometry",{args:[100,100]}),(0,a.jsx)("shaderMaterial",{uniforms:{uColor:{value:new h.Ilk("#111111")},uBlurRadius:{value:.1}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform vec3 uColor;\n uniform float uBlurRadius;\n varying vec2 vUv;\n\n void main() {\n float distanceToCenter = length(vUv - vec2(0.5));\n float alpha = smoothstep(0.5 - uBlurRadius, 0.5 + uBlurRadius, distanceToCenter);\n gl_FragColor = vec4(uColor, 1.0 - alpha);\n }\n "})]})]})}}}]);