@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.5 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import"../../../../../../core/has.js";import{inputAttributesToAttributesMap as e}from"./symbolizationUtils.js";import{cloneAttributeData as t}from"../../../../webgl-engine/lib/AttributeArray.js";import{createConeGeometryData as n}from"../../../../webgl-engine/lib/GeometryUtil.js";import{VertexAttribute as i}from"../../../../webgl-engine/lib/VertexAttribute.js";function r(t,i){const r=(t,n,r=!1)=>({levels:t.map((t=>{const o=e(n(t.tesselation));r&&a(o);return{components:[{attributes:o,objectAndLayerIdColor:void 0,transformation:null,materialId:i}],minScreenSpaceRadius:t.minScreenSpaceRadius}}))});switch(t){case"cone":return r(s,(e=>n(1,.5,e,!1)),!0);case"sphere":case"cube":case"inverted-cone":case"cylinder":case"tetrahedron":case"diamond":throw new Error("not implemented");default:return}}function a(e){const t=e,n=t.get(i.POSITION).data,r=t.get(i.NORMAL).data;if(r){const t=o(e,i.NORMAL).data;for(let e=0;e<r.length;e+=3){const n=r[e+1];t[e+1]=-r[e+2],t[e+2]=n}}if(n){const t=o(e,i.POSITION).data;for(let e=0;e<n.length;e+=3){const i=n[e+1];t[e+1]=-n[e+2],t[e+2]=i}}}function o(e,n){let i=e.get(n);return i&&!i.exclusive&&(i={...i,exclusive:!0,data:t(i.data)},e.set(n,i)),i}const s=[{tesselation:6,minScreenSpaceRadius:0},{tesselation:18,minScreenSpaceRadius:7},{tesselation:64,minScreenSpaceRadius:65}];export{r as createPrimitiveGeometry};