@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.66 kB
JavaScript
import{isSome as e,isNone as r}from"../../../../core/maybe.js";import{D as t}from"../../../../chunks/mat4.js";import{c as s}from"../../../../chunks/vec2.js";import{f as o}from"../../../../chunks/vec2f64.js";import{b as i}from"../../../../chunks/vec3.js";import{c}from"../../../../chunks/vec3f64.js";import{g as a,c as l}from"../../../../chunks/vec4.js";import{f as h}from"../../../../chunks/vec4f64.js";import{Object3DVisualElement as n}from"./Object3DVisualElement.js";import{Attribute as d}from"../../webgl-engine/lib/Attribute.js";import{Geometry as m}from"../../webgl-engine/lib/Geometry.js";import{RenderOccludedFlag as _}from"../../webgl-engine/lib/Material.js";import{VertexAttribute as u}from"../../webgl-engine/lib/VertexAttribute.js";import{CheckerBoardMaterial as p}from"../../webgl-engine/materials/CheckerBoardMaterial.js";class g extends n{constructor(e){super(e),this._checkerBoardMaterial=null,this._renderOccluded=_.OccludeAndTransparent,this._geometry=null,this._size=o(1,1),this._color1=h(1,.5,0,.5),this._color2=h(1,1,1,.5),this.applyProps(e)}get renderOccluded(){return this._renderOccluded}set renderOccluded(e){e!==this._renderOccluded&&(this._renderOccluded=e,this._updateMaterial())}get geometry(){return this._geometry}set geometry(e){this._geometry=e,this._geometryChanged()}get size(){return this._size}set size(e){s(this._size,e),this._updateMaterial()}get color1(){return this._color1}set color1(e){a(e,this._color1)||(l(this._color1,e),this._updateMaterial())}get color2(){return this._color2}set color2(e){a(e,this._color2)||(l(this._color2,e),this._updateMaterial())}_updateMaterial(){e(this._checkerBoardMaterial)&&this._checkerBoardMaterial.setParameters({size:this._size,color1:this._color1,color2:this._color2,renderOccluded:this._renderOccluded})}createExternalResources(){this._checkerBoardMaterial=new p({size:this._size,color1:this._color1,color2:this._color2,transparent:!0,writeDepth:!1,polygonOffset:!0,renderOccluded:_.OccludeAndTransparent})}destroyExternalResources(){this._checkerBoardMaterial=null}forEachExternalMaterial(r){e(this._checkerBoardMaterial)&&r(this._checkerBoardMaterial)}createGeometries(e){if(r(this._geometry)||r(this._checkerBoardMaterial))return;const s=f;t(s,this.transform);const o=this._geometry,a=[],l=c();o.position.forEach((e=>{i(l,e,s),a.push(l[0],l[1],l[2])}));const h=[];o.uv.forEach((e=>{h.push(e[0],e[1])}));const n=new m(this._checkerBoardMaterial,[[u.POSITION,new d(a,3,!0)],[u.UV0,new d(h,2,!0)]],[[u.POSITION,o.triangleIndices],[u.UV0,o.triangleIndices]]);e.addGeometry(n)}_geometryChanged(){this.recreateGeometry()}}const f=c();export{g as MeasurementAreaVisualElement};