UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 4.66 kB
import{clamp as a}from"../../../core/mathUtils.js";import{e}from"../../../chunks/mat4.js";import{l as t,F as r,n as o,g as s,c as n,b as d}from"../../../chunks/vec3.js";import{f as i,c}from"../../../chunks/vec3f64.js";import{I as f}from"../../../chunks/mat4f64.js";import{create as I,fromPoints as g,axis as N}from"../../../geometry/support/axisAngleDegrees.js";import{earth as E}from"../../../geometry/support/Ellipsoid.js";import{FadeInStages as l,FadeInOutStages as F,FadeHeightStages as u}from"./CloudsCompositionParameters.js";import{CloudsRenderingStages as H,ensureClouds as S}from"./CloudsData.js";import{weatherHeightLimit as m}from"./weather.js";import{RenderState as C}from"../../support/RenderState.js";function h(e,t,r){const o=e.parallax.anchorPointClouds;e.fadeIn.stage===l.FINISHED&&(e.fadeIn.factor=0,n(o,R),e.fadeIn.stage=l.CHANGE_ANCHOR,e.crossFade.enabled=!1,e.fadeInOut.stage=F.FINISHED),e.fadeIn.stage===l.CHANGE_ANCHOR&&e.isCameraPositionFinal&&(S(e.data)&&e.renderingStage!==H.RENDERING||e.renderingStage===H.FADING_TEXTURE_CHANNELS)&&(n(o,R),e.fadeIn.stage=l.FADE_IN,e.startTime=t,e.renderingStage===H.FADING_TEXTURE_CHANNELS&&(e.renderingStage=H.SWITCH_CHANNELS)),e.fadeIn.factor<1&&e.fadeIn.stage===l.FADE_IN?e.fadeIn.factor=r?a((t-e.startTime)/(G*r),0,1):1:e.fadeIn.factor>=1&&e.fadeIn.stage===l.FADE_IN&&(e.fadeIn.stage=l.FINISHED,e.fadeIn.factor=1)}function D(e,t,r){const{fadeInOut:o,crossFade:s}=e;o.stage===F.FINISHED&&(e.startTime=t,o.factor=1,o.stage=F.FADE_OUT),o.factor>0&&o.stage===F.FADE_OUT?o.factor=r?1-a((t-e.startTime)/(U*r),0,1):0:(o.factor<=0&&o.stage===F.FADE_OUT&&(o.factor=0,n(e.parallax.anchorPointClouds,R)),o.factor<=0&&o.stage===F.FADE_OUT&&e.isCameraPositionFinal&&(o.factor=0,o.stage=F.SWITCH,e.crossFade.enabled=!1,s.factor=1),o.stage===F.SWITCH&&(S(e.data)&&e.renderingStage!==H.RENDERING||e.renderingStage===H.FADING_TEXTURE_CHANNELS)&&(e.startTime=t,o.factor=0,o.stage=F.FADE_IN,n(e.parallax.anchorPointClouds,R),e.crossFade.enabled=!1,s.factor=1,e.renderingStage===H.FADING_TEXTURE_CHANNELS&&(e.renderingStage=H.SWITCH_CHANNELS)),o.factor<1&&o.stage===F.FADE_IN?o.factor=r?a((t-e.startTime)/(G*r),0,1):1:o.factor>=1&&o.stage===F.FADE_IN&&(o.stage=F.FINISHED,o.factor=1))}function T(e,t,r,o){const{crossFade:s}=e,d=e.parallax.anchorPointClouds;e.crossFade.enabled&&!o||(n(e.parallaxNew.anchorPointClouds,R),e.startTime=t,s.factor=0,e.crossFade.enabled=!0),s.factor<1&&e.crossFade.enabled?s.factor=r?a((t-e.startTime)/(b*r),0,1):1:s.factor>=1&&e.crossFade.enabled&&(e.crossFade.enabled=!1,s.factor=1,n(d,e.parallaxNew.anchorPointClouds),e.renderingStage===H.FADING_TEXTURE_CHANNELS&&(e.renderingStage=H.SWITCH_CHANNELS))}function A(e,t,r,o){const s=e.fadeInOutHeight,n=s.stage===u.FINISHED?r:e.startTimeHeightFade;if(0!==o){const a=(r-n)/(j*o);s.factor+=t?-a:a}else s.factor=t?0:1;e.startTimeHeightFade=r,s.factor=a(s.factor,0,1),s.stage=u.HEIGHT_FADE}function _(a,i,c,I,_){a.renderingStage===H.FINISHED_RENDERING&&(a.renderingStage=H.FADING_TEXTURE_CHANNELS);const p=t(i.eye);a.fadeInOutHeight.factor<0&&(a.fadeInOutHeight.factor=p-E.radius>m?1:0),a.isCameraPositionFinal=r(a.cameraPositionLastFrame,i.eye),o(R,i.eye),s(R,R,E.radius);const G=a.parallax;0===G.anchorPointClouds[0]&&0===G.anchorPointClouds[1]&&0===G.anchorPointClouds[2]&&n(G.anchorPointClouds,R);const U=t(d(L,G.anchorPointClouds,R));let b=!0;if(U>a.fadeIn.distanceThresholdFactor*G.cloudsHeight||a.fadeIn.stage!==l.FINISHED)h(a,I,_);else if(U>a.fadeInOut.distanceThresholdFactor*G.cloudsHeight||a.fadeInOut.stage!==F.FINISHED)D(a,I,_);else if(U>a.crossFade.distanceThresholdFactor*G.cloudsHeight||a.crossFade.enabled||a.renderingStage===H.FADING_TEXTURE_CHANNELS){T(a,I,_,(c!==C.IDLE||!S(a.data))&&a.renderingStage!==H.FADING_TEXTURE_CHANNELS)}else b=!1;const j=p-E.radius;if((j>1.7*m||j<-m)&&a.fadeInOutHeight.factor<1?a.fadeInOutHeight.factor=1:(j>m||j<-.35*m)&&a.fadeInOutHeight.factor<1?A(a,!1,I,_):j<m&&j>-.35*m&&a.fadeInOutHeight.factor>0?A(a,!0,I,_):a.fadeInOutHeight.stage=u.FINISHED,a.renderingStage===H.SWITCH_CHANNELS&&(a.readChannels=1-a.readChannels,a.renderingStage=H.FINISHED),G.radiusCurvatureCorrectionFactor=.84*Math.sqrt(Math.max(p*p-E.radius*E.radius,0))/p,g(O,G.anchorPointClouds,P),e(G.transform,f,P[3],N(P)),b){const{parallaxNew:t}=a;g(O,t.anchorPointClouds,P),e(t.transform,f,P[3],N(P))}n(a.cameraPositionLastFrame,i.eye)}function p(a){return a.crossFade.enabled||a.fadeInOut.stage!==F.FINISHED||a.fadeIn.stage!==l.FINISHED||a.fadeInOutHeight.stage!==u.FINISHED||a.renderingStage!==H.FINISHED}const O=i(0,0,1),P=I(),R=c(),L=c(),G=1,U=.5,b=1.3,j=1;export{_ as updateWeatherFading,p as weatherFadingNeedsRender};