@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 4.89 kB
JavaScript
import{isSome as e,isNone as t,unwrap as r}from"../../../../core/maybe.js";import{f as s}from"../../../../chunks/mat4.js";import{c as i}from"../../../../chunks/mat4f64.js";import{s as o,m as a}from"../../../../chunks/vec3.js";import{Z as n,c as l}from"../../../../chunks/vec3f64.js";import{f as m,d as p}from"../../../../chunks/vec4f64.js";import{Object3DVisualElement as h}from"./Object3DVisualElement.js";import{lineStripsToParameters as d,createGeometry as f}from"../../support/engineContent/line.js";import{RenderOccludedFlag as u}from"../../webgl-engine/lib/Material.js";import{RibbonLineMaterial as c}from"../../webgl-engine/materials/RibbonLineMaterial.js";class g extends h{constructor(t,r){super(t),this._hasExternalMaterial=!1,this._hasExternalMaterial=e(r),this._material=e(r)?r:new c({width:1,color:m(1,0,1,1),stippleOffColor:null,stipplePattern:null,stipplePreferContinuous:!0,isClosed:!1,falloff:0,innerColor:null,innerWidth:1,hasPolygonOffset:!1,renderOccluded:u.OccludeAndTransparent,writeDepth:!0}),this.applyProps(t)}setGeometryFromRenderSpacePoint(e,t=1e3){this.geometry=[[[e[0]-t,e[1]+0,e[2]+0],[e[0]+t,e[1]+0,e[2]+0]],[[e[0]-0,e[1]-t,e[2]+0],[e[0]+0,e[1]+t,e[2]+0]],[[e[0]-0,e[1]+0,e[2]-t],[e[0]+0,e[1]+0,e[2]+t]]]}setGeometryFromExtent(e){const t=this.view.spatialReference,r=l(),s=l(),i=100,a=[];o(r,e[0],e[1],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),o(r,e[2],e[1],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),o(r,e[2],e[3],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),o(r,e[0],e[3],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),o(r,e[0],e[1],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),o(r,e[0],e[1],i),this.view.renderCoordsHelper.toRenderCoords(r,t,s),a.push([s[0],s[1],s[2]]),this.geometry=[a]}setGeometryFromFrustum(e){const t=[];e.lines.forEach((e=>{t.push([e.origin[0],e.origin[1],e.origin[2]]),t.push([e.endpoint[0],e.endpoint[1],e.endpoint[2]])})),this.geometry=[t]}setGeometryFromBoundedPlane(e){const t=[],r=e.origin,s=e.basis1,i=e.basis2,o=.5,a=l(),n=l(),m=l(),p=l();a[0]=r[0]-s[0]*o-i[0]*o,a[1]=r[1]-s[1]*o-i[1]*o,a[2]=r[2]-s[2]*o-i[2]*o,n[0]=r[0]-s[0]*o+i[0]*o,n[1]=r[1]-s[1]*o+i[1]*o,n[2]=r[2]-s[2]*o+i[2]*o,m[0]=r[0]+s[0]*o+i[0]*o,m[1]=r[1]+s[1]*o+i[1]*o,m[2]=r[2]+s[2]*o+i[2]*o,p[0]=r[0]+s[0]*o-i[0]*o,p[1]=r[1]+s[1]*o-i[1]*o,p[2]=r[2]+s[2]*o-i[2]*o,t.push([a[0],a[1],a[2]]),t.push([n[0],n[1],n[2]]),t.push([m[0],m[1],m[2]]),t.push([p[0],p[1],p[2]]),t.push([a[0],a[1],a[2]]),this.geometry=[t]}setGeometryFromSegment(e){const t=e.endRenderSpace;this.transform=s(_,t);const{points:r}=e.createRenderGeometry(t,this.view.renderCoordsHelper);this.geometry=[r]}setGeometryFromSegments(e,t=n){this.transform=s(_,t),this.geometry=e.map((e=>e.createRenderGeometry(t,this.view.renderCoordsHelper).points))}getTransformedGeometry(){return t(this._geometry)?null:this._geometry.map((e=>e.map((e=>a(l(),e,this.transform)))))}get renderOccluded(){return this._material.parameters.renderOccluded}set renderOccluded(e){this._material.setParameters({renderOccluded:e})}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this.recreateGeometry()}get width(){return this._material.parameters.width}set width(e){this._material.setParameters({width:e})}get color(){return this._material.parameters.color}set color(e){this._material.setParameters({color:p(e)})}get innerWidth(){return this._material.parameters.innerWidth}set innerWidth(e){this._material.setParameters({innerWidth:e})}get innerColor(){return this._material.parameters.innerColor}set innerColor(t){this._material.setParameters({innerColor:e(t)?p(t):null})}get stipplePattern(){return this._material.parameters.stipplePattern}set stipplePattern(t){e(this._material)&&this._material.setParameters({stipplePattern:t})}get stippleOffColor(){return this._material.parameters.stippleOffColor}set stippleOffColor(t){this._material.setParameters({stippleOffColor:e(t)?p(t):null})}get stipplePreferContinuous(){return this._material.parameters.stipplePreferContinuous}set stipplePreferContinuous(e){this._material.setParameters({stipplePreferContinuous:e})}get writeDepthEnabled(){return this._material.parameters.writeDepth}set writeDepthEnabled(e){this._material.setParameters({writeDepth:e})}get falloff(){return this._material.parameters.falloff}set falloff(e){this._material.setParameters({falloff:e})}get polygonOffset(){return this._material.parameters.hasPolygonOffset}set polygonOffset(e){this._material.setParameters({hasPolygonOffset:e})}createExternalResources(){}destroyExternalResources(){}createGeometries(e){for(const t of d(this.geometry)){const s=f(r(this._material),t);e.addGeometry(s)}}forEachExternalMaterial(e){this._hasExternalMaterial||e(r(this._material))}}const _=i();export{g as LineVisualElement};