UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 3.05 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{i as t,n as e,d as r,e as s,j as o,t as i}from"../../../../chunks/vec32.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromValues as a}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{newLayout as c}from"../../support/buffer/InterleavedLayout.js";import{isColorOrColorEmission as l}from"../core/shaderLibrary/ShaderOutput.js";import u from"../lib/GLMaterial.js";import{Material as f,MaterialParameters as p}from"../lib/Material.js";import{RenderSlot as h}from"../lib/RenderSlot.js";import{VertexAttribute as m}from"../lib/VertexAttribute.js";import{vertexAttributeLocations as d,MeasurementArrowTechnique as g}from"../shaders/MeasurementArrowTechnique.js";import{MeasurementArrowTechniqueConfiguration as O}from"../shaders/MeasurementArrowTechniqueConfiguration.js";import{alphaCutoff as A}from"../../../../webscene/support/AlphaCutoff.js";class b extends f{constructor(t){super(t,T),this._configuration=new O,this.vertexAttributeLocations=d,this.produces=new Map([[h.OPAQUE_MATERIAL,t=>!this._transparent&&l(t)],[h.TRANSPARENT_MATERIAL_WITHOUT_DEPTH,t=>this._transparent&&l(t)]])}getConfiguration(t,e){return this._configuration.polygonOffsetEnabled=this.parameters.polygonOffset,this._configuration.transparent=this._transparent,this._configuration.oitPass=e.oitPass,this._configuration}get visible(){const{outlineColor:t,stripeEvenColor:e,stripeOddColor:r}=this.parameters;return t[3]>=A||e[3]>=A||r[3]>=A}intersect(){}createGLMaterial(t){return new v(t)}createBufferWriter(){return new E}get _transparent(){const{parameters:t}=this;return t.outlineColor[3]<1||t.stripeEvenColor[3]<1||t.stripeOddColor[3]<1}}class v extends u{beginSlot(t){return this.getTechnique(g,t)}}class T extends p{constructor(){super(...arguments),this.width=32,this.outlineSize=.2,this.outlineColor=a(1,.5,0,1),this.stripeEvenColor=a(1,1,1,1),this.stripeOddColor=a(1,.5,0,1),this.stripeLength=1,this.polygonOffset=!1}}const j=c().vec3f(m.POSITION).vec3f(m.NORMAL).vec2f(m.UV0).f32(m.LENGTH),C=n(),_=n(),L=n(),M=n(),w=n();class E{constructor(){this.vertexBufferLayout=j}elementCount(t){return 2*(t.get(m.POSITION).indices.length/2+1)}write(n,a,c,l,u,f){const{data:p,indices:h}=c.get(m.POSITION),d=c.get(m.NORMAL).data,g=p.length/3;h&&h.length!==2*(g-1)&&console.warn("MeasurementArrowMaterial does not support indices");const O=C,A=_,b=L,v=M,T=w,j=u.position,E=u.normal,I=u.uv0;let x=0;for(let m=0;m<g;++m){const c=3*m;if(t(O,p[c],p[c+1],p[c+2]),m<g-1){const o=3*(m+1);t(A,p[o],p[o+1],p[o+2]),t(T,d[o],d[o+1],d[o+2]),e(T,T),r(b,A,O),e(b,b),s(v,T,b),e(v,v)}const l=o(O,A);n&&a&&(i(O,O,n),i(A,A,n),i(v,v,a));const u=f+2*m,h=u+1;j.setVec(u,O),j.setVec(h,O),E.setVec(u,v),E.setVec(h,v),I.set(u,0,x),I.set(u,1,-1),I.set(h,0,x),I.set(h,1,1),m<g-1&&(x+=l)}const N=u.length;for(let t=0;t<2*g;++t)N.set(f+t,x)}}export{b as MeasurementArrowMaterial,T as Parameters};