@luma.gl/engine 9.0.0-alpha.24 → 9.0.0-alpha.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/animation/timeline.js.map +1 -1
  2. package/dist/animation-loop/animation-loop.js +7 -7
  3. package/dist/animation-loop/animation-loop.js.map +1 -1
  4. package/dist/animation-loop/make-animation-loop.js.map +1 -1
  5. package/dist/dist.dev.js +1557 -108
  6. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  7. package/dist/geometries/plane-geometry.js.map +1 -1
  8. package/dist/geometry/geometry.d.ts +1 -1
  9. package/dist/geometry/geometry.d.ts.map +1 -1
  10. package/dist/geometry/geometry.js +1 -1
  11. package/dist/geometry/geometry.js.map +1 -1
  12. package/dist/index.cjs +313 -47
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/clip-space.js +1 -1
  18. package/dist/lib/clip-space.js.map +1 -1
  19. package/dist/lib/pipeline-factory.js.map +1 -1
  20. package/dist/model/model-utils.js.map +1 -1
  21. package/dist/model/model.d.ts +3 -0
  22. package/dist/model/model.d.ts.map +1 -1
  23. package/dist/model/model.js +10 -0
  24. package/dist/model/model.js.map +1 -1
  25. package/dist/scenegraph/group-node.d.ts +21 -0
  26. package/dist/scenegraph/group-node.d.ts.map +1 -0
  27. package/dist/scenegraph/group-node.js +95 -0
  28. package/dist/scenegraph/group-node.js.map +1 -0
  29. package/dist/scenegraph/model-node.d.ts +18 -0
  30. package/dist/scenegraph/model-node.d.ts.map +1 -0
  31. package/dist/scenegraph/model-node.js +29 -0
  32. package/dist/scenegraph/model-node.js.map +1 -0
  33. package/dist/scenegraph/scenegraph-node.d.ts +56 -0
  34. package/dist/scenegraph/scenegraph-node.d.ts.map +1 -0
  35. package/dist/scenegraph/scenegraph-node.js +142 -0
  36. package/dist/scenegraph/scenegraph-node.js.map +1 -0
  37. package/dist/transform/transform.js +1 -1
  38. package/dist/transform/transform.js.map +1 -1
  39. package/dist.min.js +77 -76
  40. package/package.json +6 -6
  41. package/src/geometry/geometry.ts +1 -1
  42. package/src/index.ts +5 -0
  43. package/src/lib/clip-space.ts +1 -1
  44. package/src/model/model.ts +10 -0
  45. package/src/scenegraph/group-node.ts +103 -0
  46. package/src/scenegraph/model-node.ts +50 -0
  47. package/src/scenegraph/scenegraph-node.ts +204 -0
  48. package/src/transform/transform.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ico-sphere-geometry.js","names":["uid","Vector3","Geometry","ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","constructor","props","arguments","length","undefined","id","indices","attributes","tesselateIcosaHedron","iterations","PI","Math","PI2","positions","push","getMiddlePoint","pointMemo","i1","i2","mini","maxi","key","concat","x1","y1","z1","x2","y2","z2","xm","ym","zm","len","sqrt","i","indices2","j","a","b","c","normals","Array","texCoords","l","i3","in1","in2","in3","iu1","iu2","iu3","theta1","acos","phi1","atan2","v1","u1","theta2","phi2","v2","u2","x3","y3","z3","theta3","phi3","v3","u3","vec1","vec2","normal","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"sources":["../../src/geometries/ico-sphere-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport {Vector3} from '@math.gl/core';\nimport {Geometry} from '../geometry/geometry';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport type IcoSphereGeometryProps = {\n id?: string;\n radius?: number;\n iterations?: number;\n attributes?: any\n};\n\nexport class IcoSphereGeometry extends Geometry {\n constructor(props: IcoSphereGeometryProps = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props: IcoSphereGeometryProps) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo: Record<string, number> = {};\n\n return (i1: number, i2: number) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2: number[] = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ico-sphere-geometry.js","names":["uid","Vector3","Geometry","ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","constructor","props","arguments","length","undefined","id","indices","attributes","tesselateIcosaHedron","iterations","PI","Math","PI2","positions","push","getMiddlePoint","pointMemo","i1","i2","mini","maxi","key","concat","x1","y1","z1","x2","y2","z2","xm","ym","zm","len","sqrt","i","indices2","j","a","b","c","normals","Array","texCoords","l","i3","in1","in2","in3","iu1","iu2","iu3","theta1","acos","phi1","atan2","v1","u1","theta2","phi2","v2","u2","x3","y3","z3","theta3","phi3","v3","u3","vec1","vec2","normal","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"sources":["../../src/geometries/ico-sphere-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport {Vector3} from '@math.gl/core';\nimport {Geometry} from '../geometry/geometry';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport type IcoSphereGeometryProps = {\n id?: string;\n radius?: number;\n iterations?: number;\n attributes?: any\n};\n\nexport class IcoSphereGeometry extends Geometry {\n constructor(props: IcoSphereGeometryProps = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props: IcoSphereGeometryProps) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo: Record<string, number> = {};\n\n return (i1: number, i2: number) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2: number[] = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plane-geometry.js","names":["uid","Geometry","unpackIndexedGeometry","PlaneGeometry","constructor","props","arguments","length","undefined","id","indices","attributes","tesselatePlane","type","offset","flipCull","unpack","coords","split","c1len","concat","c2len","subdivisions1","subdivisions2","numVertices","positions","Float32Array","normals","texCoords","i2","i3","z","x","u","v","Error","numVertsAcross","Uint16Array","index","geometry","size","value","POSITION","NORMAL","TEXCOORD_0"],"sources":["../../src/geometries/plane-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport {Geometry} from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\n\nexport type PlaneGeometryProps = {\n id?: string;\n radius?: number;\n attributes?: any\n};\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\nexport class PlaneGeometry extends Geometry {\n constructor(props: PlaneGeometryProps = {}) {\n const {id = uid('plane-geometry')} = props;\n\n const {indices, attributes} = tesselatePlane(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props: any) {\n const {type = 'x,y', offset = 0, flipCull = false, unpack = false} = props;\n\n const coords = type.split(',');\n // width, height\n let c1len = props[`${coords[0]}len`] || 1;\n const c2len = props[`${coords[1]}len`] || 1;\n // subdivisionsWidth, subdivisionsDepth\n const subdivisions1 = props[`n${coords[0]}`] || 1;\n const subdivisions2 = props[`n${coords[1]}`] || 1;\n const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n if (flipCull) {\n c1len = -c1len;\n }\n\n let i2 = 0;\n let i3 = 0;\n for (let z = 0; z <= subdivisions2; z++) {\n for (let x = 0; x <= subdivisions1; x++) {\n const u = x / subdivisions1;\n const v = z / subdivisions2;\n texCoords[i2 + 0] = flipCull ? 1 - u : u;\n texCoords[i2 + 1] = v;\n\n switch (type) {\n case 'x,y':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = c2len * v - c2len * 0.5;\n positions[i3 + 2] = offset;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = flipCull ? 1 : -1;\n break;\n\n case 'x,z':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = offset;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = flipCull ? 1 : -1;\n normals[i3 + 2] = 0;\n break;\n\n case 'y,z':\n positions[i3 + 0] = offset;\n positions[i3 + 1] = c1len * u - c1len * 0.5;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = flipCull ? 1 : -1;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = 0;\n break;\n\n default:\n throw new Error('PlaneGeometry: unknown type');\n }\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n const numVertsAcross = subdivisions1 + 1;\n const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n for (let z = 0; z < subdivisions2; z++) {\n for (let x = 0; x < subdivisions1; x++) {\n const index = (z * subdivisions1 + x) * 6;\n // Make triangle 1 of quad.\n indices[index + 0] = (z + 0) * numVertsAcross + x;\n indices[index + 1] = (z + 1) * numVertsAcross + x;\n indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n\n // Make triangle 2 of quad.\n indices[index + 3] = (z + 1) * numVertsAcross + x;\n indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n }\n }\n\n const geometry = {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n\n // Optionally, unpack indexed geometry\n return unpack ? unpackIndexedGeometry(geometry) : geometry;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"plane-geometry.js","names":["uid","Geometry","unpackIndexedGeometry","PlaneGeometry","constructor","props","arguments","length","undefined","id","indices","attributes","tesselatePlane","type","offset","flipCull","unpack","coords","split","c1len","concat","c2len","subdivisions1","subdivisions2","numVertices","positions","Float32Array","normals","texCoords","i2","i3","z","x","u","v","Error","numVertsAcross","Uint16Array","index","geometry","size","value","POSITION","NORMAL","TEXCOORD_0"],"sources":["../../src/geometries/plane-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport {Geometry} from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\n\nexport type PlaneGeometryProps = {\n id?: string;\n radius?: number;\n attributes?: any\n};\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\nexport class PlaneGeometry extends Geometry {\n constructor(props: PlaneGeometryProps = {}) {\n const {id = uid('plane-geometry')} = props;\n\n const {indices, attributes} = tesselatePlane(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props: any) {\n const {type = 'x,y', offset = 0, flipCull = false, unpack = false} = props;\n\n const coords = type.split(',');\n // width, height\n let c1len = props[`${coords[0]}len`] || 1;\n const c2len = props[`${coords[1]}len`] || 1;\n // subdivisionsWidth, subdivisionsDepth\n const subdivisions1 = props[`n${coords[0]}`] || 1;\n const subdivisions2 = props[`n${coords[1]}`] || 1;\n const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n if (flipCull) {\n c1len = -c1len;\n }\n\n let i2 = 0;\n let i3 = 0;\n for (let z = 0; z <= subdivisions2; z++) {\n for (let x = 0; x <= subdivisions1; x++) {\n const u = x / subdivisions1;\n const v = z / subdivisions2;\n texCoords[i2 + 0] = flipCull ? 1 - u : u;\n texCoords[i2 + 1] = v;\n\n switch (type) {\n case 'x,y':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = c2len * v - c2len * 0.5;\n positions[i3 + 2] = offset;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = flipCull ? 1 : -1;\n break;\n\n case 'x,z':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = offset;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = flipCull ? 1 : -1;\n normals[i3 + 2] = 0;\n break;\n\n case 'y,z':\n positions[i3 + 0] = offset;\n positions[i3 + 1] = c1len * u - c1len * 0.5;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = flipCull ? 1 : -1;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = 0;\n break;\n\n default:\n throw new Error('PlaneGeometry: unknown type');\n }\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n const numVertsAcross = subdivisions1 + 1;\n const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n for (let z = 0; z < subdivisions2; z++) {\n for (let x = 0; x < subdivisions1; x++) {\n const index = (z * subdivisions1 + x) * 6;\n // Make triangle 1 of quad.\n indices[index + 0] = (z + 0) * numVertsAcross + x;\n indices[index + 1] = (z + 1) * numVertsAcross + x;\n indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n\n // Make triangle 2 of quad.\n indices[index + 3] = (z + 1) * numVertsAcross + x;\n indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n }\n }\n\n const geometry = {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n\n // Optionally, unpack indexed geometry\n return unpack ? unpackIndexedGeometry(geometry) : geometry;\n}\n"],"mappings":"AAAA,SAAQA,GAAG,QAAO,cAAc;AAAC,SACzBC,QAAQ;AAAA,SACRC,qBAAqB;AAW7B,OAAO,MAAMC,aAAa,SAASF,QAAQ,CAAC;EAC1CG,WAAWA,CAAA,EAAiC;IAAA,IAAhCC,KAAyB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACxC,MAAM;MAACG,EAAE,GAAGT,GAAG,CAAC,gBAAgB;IAAC,CAAC,GAAGK,KAAK;IAE1C,MAAM;MAACK,OAAO;MAAEC;IAAU,CAAC,GAAGC,cAAc,CAACP,KAAK,CAAC;IACnD,KAAK,CAAC;MACJ,GAAGA,KAAK;MACRI,EAAE;MACFC,OAAO;MACPC,UAAU,EAAE;QAAC,GAAGA,UAAU;QAAE,GAAGN,KAAK,CAACM;MAAU;IACjD,CAAC,CAAC;EACJ;AACF;AAGA,SAASC,cAAcA,CAACP,KAAU,EAAE;EAClC,MAAM;IAACQ,IAAI,GAAG,KAAK;IAAEC,MAAM,GAAG,CAAC;IAAEC,QAAQ,GAAG,KAAK;IAAEC,MAAM,GAAG;EAAK,CAAC,GAAGX,KAAK;EAE1E,MAAMY,MAAM,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;EAE9B,IAAIC,KAAK,GAAGd,KAAK,IAAAe,MAAA,CAAIH,MAAM,CAAC,CAAC,CAAC,SAAM,IAAI,CAAC;EACzC,MAAMI,KAAK,GAAGhB,KAAK,IAAAe,MAAA,CAAIH,MAAM,CAAC,CAAC,CAAC,SAAM,IAAI,CAAC;EAE3C,MAAMK,aAAa,GAAGjB,KAAK,KAAAe,MAAA,CAAKH,MAAM,CAAC,CAAC,CAAC,EAAG,IAAI,CAAC;EACjD,MAAMM,aAAa,GAAGlB,KAAK,KAAAe,MAAA,CAAKH,MAAM,CAAC,CAAC,CAAC,EAAG,IAAI,CAAC;EACjD,MAAMO,WAAW,GAAG,CAACF,aAAa,GAAG,CAAC,KAAKC,aAAa,GAAG,CAAC,CAAC;EAE7D,MAAME,SAAS,GAAG,IAAIC,YAAY,CAACF,WAAW,GAAG,CAAC,CAAC;EACnD,MAAMG,OAAO,GAAG,IAAID,YAAY,CAACF,WAAW,GAAG,CAAC,CAAC;EACjD,MAAMI,SAAS,GAAG,IAAIF,YAAY,CAACF,WAAW,GAAG,CAAC,CAAC;EAEnD,IAAIT,QAAQ,EAAE;IACZI,KAAK,GAAG,CAACA,KAAK;EAChB;EAEA,IAAIU,EAAE,GAAG,CAAC;EACV,IAAIC,EAAE,GAAG,CAAC;EACV,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIR,aAAa,EAAEQ,CAAC,EAAE,EAAE;IACvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIV,aAAa,EAAEU,CAAC,EAAE,EAAE;MACvC,MAAMC,CAAC,GAAGD,CAAC,GAAGV,aAAa;MAC3B,MAAMY,CAAC,GAAGH,CAAC,GAAGR,aAAa;MAC3BK,SAAS,CAACC,EAAE,GAAG,CAAC,CAAC,GAAGd,QAAQ,GAAG,CAAC,GAAGkB,CAAC,GAAGA,CAAC;MACxCL,SAAS,CAACC,EAAE,GAAG,CAAC,CAAC,GAAGK,CAAC;MAErB,QAAQrB,IAAI;QACV,KAAK,KAAK;UACRY,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGX,KAAK,GAAGc,CAAC,GAAGd,KAAK,GAAG,GAAG;UAC3CM,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGT,KAAK,GAAGa,CAAC,GAAGb,KAAK,GAAG,GAAG;UAC3CI,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGhB,MAAM;UAE1Ba,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnBH,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnBH,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAGf,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;UACnC;QAEF,KAAK,KAAK;UACRU,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGX,KAAK,GAAGc,CAAC,GAAGd,KAAK,GAAG,GAAG;UAC3CM,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGhB,MAAM;UAC1BW,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGT,KAAK,GAAGa,CAAC,GAAGb,KAAK,GAAG,GAAG;UAE3CM,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnBH,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAGf,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;UACnCY,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnB;QAEF,KAAK,KAAK;UACRL,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGhB,MAAM;UAC1BW,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGX,KAAK,GAAGc,CAAC,GAAGd,KAAK,GAAG,GAAG;UAC3CM,SAAS,CAACK,EAAE,GAAG,CAAC,CAAC,GAAGT,KAAK,GAAGa,CAAC,GAAGb,KAAK,GAAG,GAAG;UAE3CM,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAGf,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;UACnCY,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnBH,OAAO,CAACG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;UACnB;QAEF;UACE,MAAM,IAAIK,KAAK,CAAC,6BAA6B,CAAC;MAClD;MAEAN,EAAE,IAAI,CAAC;MACPC,EAAE,IAAI,CAAC;IACT;EACF;EAEA,MAAMM,cAAc,GAAGd,aAAa,GAAG,CAAC;EACxC,MAAMZ,OAAO,GAAG,IAAI2B,WAAW,CAACf,aAAa,GAAGC,aAAa,GAAG,CAAC,CAAC;EAElE,KAAK,IAAIQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,aAAa,EAAEQ,CAAC,EAAE,EAAE;IACtC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,aAAa,EAAEU,CAAC,EAAE,EAAE;MACtC,MAAMM,KAAK,GAAG,CAACP,CAAC,GAAGT,aAAa,GAAGU,CAAC,IAAI,CAAC;MAEzCtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC;MACjDtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC;MACjDtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC,GAAG,CAAC;MAGrDtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC;MACjDtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC,GAAG,CAAC;MACrDtB,OAAO,CAAC4B,KAAK,GAAG,CAAC,CAAC,GAAG,CAACP,CAAC,GAAG,CAAC,IAAIK,cAAc,GAAGJ,CAAC,GAAG,CAAC;IACvD;EACF;EAEA,MAAMO,QAAQ,GAAG;IACf7B,OAAO,EAAE;MAAC8B,IAAI,EAAE,CAAC;MAAEC,KAAK,EAAE/B;IAAO,CAAC;IAClCC,UAAU,EAAE;MACV+B,QAAQ,EAAE;QAACF,IAAI,EAAE,CAAC;QAAEC,KAAK,EAAEhB;MAAS,CAAC;MACrCkB,MAAM,EAAE;QAACH,IAAI,EAAE,CAAC;QAAEC,KAAK,EAAEd;MAAO,CAAC;MACjCiB,UAAU,EAAE;QAACJ,IAAI,EAAE,CAAC;QAAEC,KAAK,EAAEb;MAAS;IACxC;EACF,CAAC;EAGD,OAAOZ,MAAM,GAAGd,qBAAqB,CAACqC,QAAQ,CAAC,GAAGA,QAAQ;AAC5D"}
@@ -1,5 +1,5 @@
1
1
  import type { PrimitiveTopology, TypedArray } from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
2
+ import { GL } from '@luma.gl/constants';
3
3
  /**
4
4
  * Rendering primitives - "topology" specifies how to extract primitives from vertices.
5
5
  * @deprecated - use string constants instead
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpC;;;GAGG;AACH,MAAM,MAAM,UAAU,GACpB,EAAE,CAAC,MAAM,GAAI,sBAAsB;AACnC,EAAE,CAAC,KAAK,GAAI,wDAAwD;AACpE,EAAE,CAAC,SAAS,GAAI,8EAA8E;AAC9F,EAAE,CAAC,UAAU,GAAI,4EAA4E;AAC7F,EAAE,CAAC,SAAS,GAAI,0EAA0E;AAC1F,EAAE,CAAC,cAAc,GAAI,uCAAuC;AAC5D,EAAE,CAAC,YAAY,CACd;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAC1F,kBAAkB;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAA;KAAC,CAAC;CAC7D,CAAC;AAEF,qBAAa,QAAQ;IACnB,kBAAkB;IAClB,MAAM,CAAC,SAAS;;;;;;;;MAQd;IAEF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAEvC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAgB;IAE7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,iBAAiB,CAAC;QAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAA;KAC7C,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;gBAEjC,KAAK,GAAE,aAAkB;IAuDrC,wDAAwD;IACxD,IAAI,IAAI,eAEP;IAED,cAAc,IAAI,MAAM;IAKxB,aAAa,IAAI,kBAAkB;IAOnC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IASrC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAKjF,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;CAgB7D"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,UAAU,GACpB,EAAE,CAAC,MAAM,GAAI,sBAAsB;AACnC,EAAE,CAAC,KAAK,GAAI,wDAAwD;AACpE,EAAE,CAAC,SAAS,GAAI,8EAA8E;AAC9F,EAAE,CAAC,UAAU,GAAI,4EAA4E;AAC7F,EAAE,CAAC,SAAS,GAAI,0EAA0E;AAC1F,EAAE,CAAC,cAAc,GAAI,uCAAuC;AAC5D,EAAE,CAAC,YAAY,CACd;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAC1F,kBAAkB;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAA;KAAC,CAAC;CAC7D,CAAC;AAEF,qBAAa,QAAQ;IACnB,kBAAkB;IAClB,MAAM,CAAC,SAAS;;;;;;;;MAQd;IAEF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAEvC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAgB;IAE7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,iBAAiB,CAAC;QAC9B,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAA;KAC7C,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;gBAEjC,KAAK,GAAE,aAAkB;IAuDrC,wDAAwD;IACxD,IAAI,IAAI,eAEP;IAED,cAAc,IAAI,MAAM;IAKxB,aAAa,IAAI,kBAAkB;IAOnC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IASrC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAKjF,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;CAgB7D"}
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { uid, assert } from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
3
+ import { GL } from '@luma.gl/constants';
4
4
  export class Geometry {
5
5
  constructor() {
6
6
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.js","names":["uid","assert","GL","Geometry","constructor","props","arguments","length","undefined","_defineProperty","TRIANGLES","id","drawMode","attributes","indices","vertexCount","topology","convertToTopology","ArrayBuffer","isView","value","size","attributeName","attributeValue","Object","entries","attribute","concat","_print","isIndexed","assign","_calculateVertexCount","mode","getVertexCount","getAttributes","_setAttributes","Infinity","constant","Math","min","Number","isFinite","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLE_STRIP","TRIANGLE_FAN","Error","String"],"sources":["../../src/geometry/geometry.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {PrimitiveTopology, TypedArray} from '@luma.gl/api';\nimport {uid, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\n/**\n * Rendering primitives - \"topology\" specifies how to extract primitives from vertices.\n * @deprecated - use string constants instead\n */\nexport type GLTopology =\n GL.POINTS | // draw single points.\n GL.LINES | // draw lines. Each vertex connects to the one after it.\n GL.LINE_LOOP | // draw lines. Each set of two vertices is treated as a separate line segment.\n GL.LINE_STRIP | // draw a connected group of line segments from the first vertex to the last\n GL.TRIANGLES | // draw triangles. Each set of three vertices creates a separate triangle.\n GL.TRIANGLE_STRIP | // draw a connected group of triangles.\n GL.TRIANGLE_FAN // draw a connected group of triangles.\n ;\n\nexport type GeometryAttribute = {\n size?: number;\n value: TypedArray;\n [key: string]: any\n}\n\nexport type GeometryProps = {\n id?: string;\n attributes?: Record<string, GeometryAttribute | TypedArray>,\n indices?: GeometryAttribute | TypedArray;\n vertexCount?: number;\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: 'point-list' | 'line-list' | 'line-strip' | 'triangle-list' | 'triangle-strip';\n /** @deprecated */\n drawMode?: GLTopology;\n};\n\ntype GeometryAttributes = {\n POSITION: GeometryAttribute,\n NORMAL: GeometryAttribute,\n TEXCOORD_0: GeometryAttribute,\n COLOR_0?: GeometryAttribute,\n indices?: {size?: number, value: Uint32Array | Uint16Array};\n};\n\nexport class Geometry {\n /** @deprecated */\n static DRAW_MODE = {\n POINTS: GL.POINTS, // draw single points.\n LINES: GL.LINES, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: GL.LINE_LOOP, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: GL.LINE_STRIP, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: GL.TRIANGLES, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: GL.TRIANGLE_STRIP, // draw a connected group of triangles.\n TRIANGLE_FAN: GL.TRIANGLE_FAN // draw a connected group of triangles.\n };\n\n readonly id: string;\n userData: Record<string, unknown> = {};\n\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: PrimitiveTopology;\n /** @deprecated */\n readonly drawMode: GLTopology = GL.TRIANGLES;\n\n readonly vertexCount: number;\n readonly attributes: {\n POSITION: GeometryAttribute,\n NORMAL: GeometryAttribute,\n TEXCOORD_0: GeometryAttribute,\n COLOR_0?: GeometryAttribute,\n [key: string]: GeometryAttribute | undefined\n };\n readonly indices?: Uint16Array | Uint32Array;\n\n constructor(props: GeometryProps = {}) {\n const {\n id = uid('geometry'),\n drawMode = GL.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode;\n this.topology = props.topology || convertToTopology(drawMode);\n\n if (indices) {\n // @ts-expect-error\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n // @ts-expect-error\n this.attributes = {};\n\n for (const [attributeName, attributeValue] of Object.entries(attributes)) {\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n const attribute: GeometryAttribute = ArrayBuffer.isView(attributeValue) ? {value: attributeValue} : attributeValue;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n // @ts-expect-error\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n // @ts-expect-error\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n // @ts-expect-error\n delete this.indices.isIndexed;\n }\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n }\n\n /** @deprecated Use string topology constants instead */\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount(): number {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes(): GeometryAttributes {\n // @ts-expect-error Geometry types are a mess\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName: string): string {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // GeometryAttribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes: Record<string, GeometryAttribute>, indices: any): this {\n\n return this;\n }\n\n _calculateVertexCount(attributes: any, indices: any): number {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n\nfunction convertToTopology(drawMode: GLTopology): PrimitiveTopology {\n switch (drawMode) {\n case GL.POINTS: return 'point-list'; // draw single points.\n case GL.LINES: return 'line-list'; // draw lines. Each vertex connects to the one after it.\n case GL.LINE_STRIP: return 'line-strip'; // draw a connected group of line segments from the first vertex to the last\n case GL.TRIANGLES: return 'triangle-list'; // draw triangles. Each set of three vertices creates a separate triangle.\n case GL.TRIANGLE_STRIP: return 'triangle-strip'; // draw a connected group of triangles.\n\n case GL.TRIANGLE_FAN: return 'triangle-fan'; // draw a connected group of triangles.\n case GL.LINE_LOOP: return 'line-loop'; // draw lines. Each set of two vertices is treated as a separate line segment.\n default:\n throw new Error(String(drawMode));\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"geometry.js","names":["uid","assert","GL","Geometry","constructor","props","arguments","length","undefined","_defineProperty","TRIANGLES","id","drawMode","attributes","indices","vertexCount","topology","convertToTopology","ArrayBuffer","isView","value","size","attributeName","attributeValue","Object","entries","attribute","concat","_print","isIndexed","assign","_calculateVertexCount","mode","getVertexCount","getAttributes","_setAttributes","Infinity","constant","Math","min","Number","isFinite","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLE_STRIP","TRIANGLE_FAN","Error","String"],"sources":["../../src/geometry/geometry.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {PrimitiveTopology, TypedArray} from '@luma.gl/api';\nimport {uid, assert} from '@luma.gl/api';\nimport {GL} from '@luma.gl/constants';\n\n/**\n * Rendering primitives - \"topology\" specifies how to extract primitives from vertices.\n * @deprecated - use string constants instead\n */\nexport type GLTopology =\n GL.POINTS | // draw single points.\n GL.LINES | // draw lines. Each vertex connects to the one after it.\n GL.LINE_LOOP | // draw lines. Each set of two vertices is treated as a separate line segment.\n GL.LINE_STRIP | // draw a connected group of line segments from the first vertex to the last\n GL.TRIANGLES | // draw triangles. Each set of three vertices creates a separate triangle.\n GL.TRIANGLE_STRIP | // draw a connected group of triangles.\n GL.TRIANGLE_FAN // draw a connected group of triangles.\n ;\n\nexport type GeometryAttribute = {\n size?: number;\n value: TypedArray;\n [key: string]: any\n}\n\nexport type GeometryProps = {\n id?: string;\n attributes?: Record<string, GeometryAttribute | TypedArray>,\n indices?: GeometryAttribute | TypedArray;\n vertexCount?: number;\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: 'point-list' | 'line-list' | 'line-strip' | 'triangle-list' | 'triangle-strip';\n /** @deprecated */\n drawMode?: GLTopology;\n};\n\ntype GeometryAttributes = {\n POSITION: GeometryAttribute,\n NORMAL: GeometryAttribute,\n TEXCOORD_0: GeometryAttribute,\n COLOR_0?: GeometryAttribute,\n indices?: {size?: number, value: Uint32Array | Uint16Array};\n};\n\nexport class Geometry {\n /** @deprecated */\n static DRAW_MODE = {\n POINTS: GL.POINTS, // draw single points.\n LINES: GL.LINES, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: GL.LINE_LOOP, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: GL.LINE_STRIP, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: GL.TRIANGLES, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: GL.TRIANGLE_STRIP, // draw a connected group of triangles.\n TRIANGLE_FAN: GL.TRIANGLE_FAN // draw a connected group of triangles.\n };\n\n readonly id: string;\n userData: Record<string, unknown> = {};\n\n /** Determines how vertices are read from the 'vertex' attributes */\n topology?: PrimitiveTopology;\n /** @deprecated */\n readonly drawMode: GLTopology = GL.TRIANGLES;\n\n readonly vertexCount: number;\n readonly attributes: {\n POSITION: GeometryAttribute,\n NORMAL: GeometryAttribute,\n TEXCOORD_0: GeometryAttribute,\n COLOR_0?: GeometryAttribute,\n [key: string]: GeometryAttribute | undefined\n };\n readonly indices?: Uint16Array | Uint32Array;\n\n constructor(props: GeometryProps = {}) {\n const {\n id = uid('geometry'),\n drawMode = GL.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode;\n this.topology = props.topology || convertToTopology(drawMode);\n\n if (indices) {\n // @ts-expect-error\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n // @ts-expect-error\n this.attributes = {};\n\n for (const [attributeName, attributeValue] of Object.entries(attributes)) {\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n const attribute: GeometryAttribute = ArrayBuffer.isView(attributeValue) ? {value: attributeValue} : attributeValue;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n // @ts-expect-error\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n // @ts-expect-error\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n // @ts-expect-error\n delete this.indices.isIndexed;\n }\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n }\n\n /** @deprecated Use string topology constants instead */\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount(): number {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes(): GeometryAttributes {\n // @ts-expect-error Geometry types are a mess\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName: string): string {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // GeometryAttribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes: Record<string, GeometryAttribute>, indices: any): this {\n\n return this;\n }\n\n _calculateVertexCount(attributes: any, indices: any): number {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n\nfunction convertToTopology(drawMode: GLTopology): PrimitiveTopology {\n switch (drawMode) {\n case GL.POINTS: return 'point-list'; // draw single points.\n case GL.LINES: return 'line-list'; // draw lines. Each vertex connects to the one after it.\n case GL.LINE_STRIP: return 'line-strip'; // draw a connected group of line segments from the first vertex to the last\n case GL.TRIANGLES: return 'triangle-list'; // draw triangles. Each set of three vertices creates a separate triangle.\n case GL.TRIANGLE_STRIP: return 'triangle-strip'; // draw a connected group of triangles.\n\n case GL.TRIANGLE_FAN: return 'triangle-fan'; // draw a connected group of triangles.\n case GL.LINE_LOOP: return 'line-loop'; // draw lines. Each set of two vertices is treated as a separate line segment.\n default:\n throw new Error(String(drawMode));\n }\n}\n"],"mappings":";AAEA,SAAQA,GAAG,EAAEC,MAAM,QAAO,cAAc;AACxC,SAAQC,EAAE,QAAO,oBAAoB;AAyCrC,OAAO,MAAMC,QAAQ,CAAC;EA8BpBC,WAAWA,CAAA,EAA4B;IAAA,IAA3BC,KAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAAG,eAAA;IAAAA,eAAA,mBAjBD,CAAC,CAAC;IAAAA,eAAA;IAAAA,eAAA,mBAKNP,EAAE,CAACQ,SAAS;IAAAD,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAa1C,MAAM;MACJE,EAAE,GAAGX,GAAG,CAAC,UAAU,CAAC;MACpBY,QAAQ,GAAGV,EAAE,CAACQ,SAAS;MACvBG,UAAU,GAAG,CAAC,CAAC;MACfC,OAAO,GAAG,IAAI;MACdC,WAAW,GAAG;IAChB,CAAC,GAAGV,KAAK;IAET,IAAI,CAACM,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAIC,iBAAiB,CAACL,QAAQ,CAAC;IAE7D,IAAIE,OAAO,EAAE;MAEX,IAAI,CAACA,OAAO,GAAGI,WAAW,CAACC,MAAM,CAACL,OAAO,CAAC,GAAG;QAACM,KAAK,EAAEN,OAAO;QAAEO,IAAI,EAAE;MAAC,CAAC,GAAGP,OAAO;IAClF;IAGA,IAAI,CAACD,UAAU,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,CAACS,aAAa,EAAEC,cAAc,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACZ,UAAU,CAAC,EAAE;MAGxE,MAAMa,SAA4B,GAAGR,WAAW,CAACC,MAAM,CAACI,cAAc,CAAC,GAAG;QAACH,KAAK,EAAEG;MAAc,CAAC,GAAGA,cAAc;MAElHtB,MAAM,CACJiB,WAAW,CAACC,MAAM,CAACO,SAAS,CAACN,KAAK,CAAC,KAAAO,MAAA,CAChC,IAAI,CAACC,MAAM,CAACN,aAAa,CAAC,8DAC/B,CAAC;MAED,IAAI,CAACA,aAAa,KAAK,UAAU,IAAIA,aAAa,KAAK,WAAW,KAAK,CAACI,SAAS,CAACL,IAAI,EAAE;QACtFK,SAAS,CAACL,IAAI,GAAG,CAAC;MACpB;MAGA,IAAIC,aAAa,KAAK,SAAS,EAAE;QAC/BrB,MAAM,CAAC,CAAC,IAAI,CAACa,OAAO,CAAC;QAErB,IAAI,CAACA,OAAO,GAAGY,SAAS;MAC1B,CAAC,MAAM;QACL,IAAI,CAACb,UAAU,CAACS,aAAa,CAAC,GAAGI,SAAS;MAC5C;IACF;IAGA,IAAI,IAAI,CAACZ,OAAO,IAAI,IAAI,CAACA,OAAO,CAACe,SAAS,KAAKrB,SAAS,EAAE;MACxD,IAAI,CAACM,OAAO,GAAGU,MAAM,CAACM,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAChB,OAAO,CAAC;MAE9C,OAAO,IAAI,CAACA,OAAO,CAACe,SAAS;IAC/B;IAEA,IAAI,CAACd,WAAW,GAAGA,WAAW,IAAI,IAAI,CAACgB,qBAAqB,CAAC,IAAI,CAAClB,UAAU,EAAE,IAAI,CAACC,OAAO,CAAC;EAC7F;EAGA,IAAIkB,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACpB,QAAQ;EACtB;EAEAqB,cAAcA,CAAA,EAAW;IACvB,OAAO,IAAI,CAAClB,WAAW;EACzB;EAGAmB,aAAaA,CAAA,EAAuB;IAElC,OAAO,IAAI,CAACpB,OAAO,GAAG;MAACA,OAAO,EAAE,IAAI,CAACA,OAAO;MAAE,GAAG,IAAI,CAACD;IAAU,CAAC,GAAG,IAAI,CAACA,UAAU;EACrF;EAIAe,MAAMA,CAACN,aAAqB,EAAU;IACpC,mBAAAK,MAAA,CAAmB,IAAI,CAAChB,EAAE,iBAAAgB,MAAA,CAAcL,aAAa;EACvD;EAOAa,cAAcA,CAACtB,UAA6C,EAAEC,OAAY,EAAQ;IAEhF,OAAO,IAAI;EACb;EAEAiB,qBAAqBA,CAAClB,UAAe,EAAEC,OAAY,EAAU;IAC3D,IAAIA,OAAO,EAAE;MACX,OAAOA,OAAO,CAACM,KAAK,CAACb,MAAM;IAC7B;IACA,IAAIQ,WAAW,GAAGqB,QAAQ;IAC1B,KAAK,MAAMd,aAAa,IAAIT,UAAU,EAAE;MACtC,MAAMa,SAAS,GAAGb,UAAU,CAACS,aAAa,CAAC;MAC3C,MAAM;QAACF,KAAK;QAAEC,IAAI;QAAEgB;MAAQ,CAAC,GAAGX,SAAS;MACzC,IAAI,CAACW,QAAQ,IAAIjB,KAAK,IAAIC,IAAI,IAAI,CAAC,EAAE;QACnCN,WAAW,GAAGuB,IAAI,CAACC,GAAG,CAACxB,WAAW,EAAEK,KAAK,CAACb,MAAM,GAAGc,IAAI,CAAC;MAC1D;IACF;IAEApB,MAAM,CAACuC,MAAM,CAACC,QAAQ,CAAC1B,WAAW,CAAC,CAAC;IACpC,OAAOA,WAAW;EACpB;AACF;AAACN,eAAA,CApIYN,QAAQ,eAEA;EACjBuC,MAAM,EAAExC,EAAE,CAACwC,MAAM;EACjBC,KAAK,EAAEzC,EAAE,CAACyC,KAAK;EACfC,SAAS,EAAE1C,EAAE,CAAC0C,SAAS;EACvBC,UAAU,EAAE3C,EAAE,CAAC2C,UAAU;EACzBnC,SAAS,EAAER,EAAE,CAACQ,SAAS;EACvBoC,cAAc,EAAE5C,EAAE,CAAC4C,cAAc;EACjCC,YAAY,EAAE7C,EAAE,CAAC6C;AACnB,CAAC;AA4HH,SAAS9B,iBAAiBA,CAACL,QAAoB,EAAqB;EAClE,QAAQA,QAAQ;IACd,KAAKV,EAAE,CAACwC,MAAM;MAAE,OAAO,YAAY;IACnC,KAAKxC,EAAE,CAACyC,KAAK;MAAE,OAAO,WAAW;IACjC,KAAKzC,EAAE,CAAC2C,UAAU;MAAE,OAAO,YAAY;IACvC,KAAK3C,EAAE,CAACQ,SAAS;MAAE,OAAO,eAAe;IACzC,KAAKR,EAAE,CAAC4C,cAAc;MAAE,OAAO,gBAAgB;IAE/C,KAAK5C,EAAE,CAAC6C,YAAY;MAAE,OAAO,cAAc;IAC3C,KAAK7C,EAAE,CAAC0C,SAAS;MAAE,OAAO,WAAW;IACrC;MACE,MAAM,IAAII,KAAK,CAACC,MAAM,CAACrC,QAAQ,CAAC,CAAC;EACrC;AACF"}