@loaders.gl/math 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (160) hide show
  1. package/dist/es5/geometry/attributes/compute-bounding-box.js +46 -0
  2. package/dist/es5/geometry/attributes/compute-bounding-box.js.map +1 -0
  3. package/dist/es5/geometry/attributes/compute-bounding-sphere.js +2 -0
  4. package/dist/es5/geometry/attributes/compute-bounding-sphere.js.map +1 -0
  5. package/dist/es5/geometry/attributes/compute-tangents.js +2 -0
  6. package/dist/es5/geometry/attributes/compute-tangents.js.map +1 -0
  7. package/dist/es5/geometry/attributes/compute-vertex-normals.js +56 -0
  8. package/dist/es5/geometry/attributes/compute-vertex-normals.js.map +1 -0
  9. package/dist/es5/geometry/attributes/convert-to-non-indexed.js +43 -0
  10. package/dist/es5/geometry/attributes/convert-to-non-indexed.js.map +1 -0
  11. package/dist/es5/geometry/attributes/get-attribute-from-geometry.js +29 -0
  12. package/dist/es5/geometry/attributes/get-attribute-from-geometry.js.map +1 -0
  13. package/dist/es5/geometry/attributes/normalize.js +19 -0
  14. package/dist/es5/geometry/attributes/normalize.js.map +1 -0
  15. package/dist/es5/geometry/colors/rgb565.js +24 -0
  16. package/dist/es5/geometry/colors/rgb565.js.map +1 -0
  17. package/dist/es5/geometry/compression/attribute-compression.js +178 -0
  18. package/dist/es5/geometry/compression/attribute-compression.js.map +1 -0
  19. package/dist/es5/geometry/constants.js +40 -0
  20. package/dist/es5/geometry/constants.js.map +1 -0
  21. package/dist/es5/geometry/gl/gl-type.js +92 -0
  22. package/dist/es5/geometry/gl/gl-type.js.map +1 -0
  23. package/dist/es5/geometry/is-geometry.js +12 -0
  24. package/dist/es5/geometry/is-geometry.js.map +1 -0
  25. package/dist/es5/geometry/iterators/attribute-iterator.js +38 -0
  26. package/dist/es5/geometry/iterators/attribute-iterator.js.map +1 -0
  27. package/dist/es5/geometry/iterators/primitive-iterator.js +102 -0
  28. package/dist/es5/geometry/iterators/primitive-iterator.js.map +1 -0
  29. package/dist/es5/geometry/primitives/modes.js +56 -0
  30. package/dist/es5/geometry/primitives/modes.js.map +1 -0
  31. package/dist/es5/geometry/typed-arrays/typed-array-utils.js +24 -0
  32. package/dist/es5/geometry/typed-arrays/typed-array-utils.js.map +1 -0
  33. package/dist/es5/geometry/utils/assert.js +12 -0
  34. package/dist/es5/geometry/utils/assert.js.map +1 -0
  35. package/dist/es5/index.js +160 -0
  36. package/dist/es5/index.js.map +1 -0
  37. package/dist/es5/utils/assert.js +12 -0
  38. package/dist/es5/utils/assert.js.map +1 -0
  39. package/dist/esm/geometry/attributes/compute-bounding-box.js +28 -0
  40. package/dist/esm/geometry/attributes/compute-bounding-box.js.map +1 -0
  41. package/dist/esm/geometry/attributes/compute-bounding-sphere.js +2 -0
  42. package/dist/esm/geometry/attributes/compute-bounding-sphere.js.map +1 -0
  43. package/dist/esm/geometry/attributes/compute-tangents.js +2 -0
  44. package/dist/esm/geometry/attributes/compute-tangents.js.map +1 -0
  45. package/dist/esm/geometry/attributes/compute-vertex-normals.js +41 -0
  46. package/dist/esm/geometry/attributes/compute-vertex-normals.js.map +1 -0
  47. package/dist/esm/geometry/attributes/convert-to-non-indexed.js +27 -0
  48. package/dist/esm/geometry/attributes/convert-to-non-indexed.js.map +1 -0
  49. package/dist/esm/geometry/attributes/get-attribute-from-geometry.js +24 -0
  50. package/dist/esm/geometry/attributes/get-attribute-from-geometry.js.map +1 -0
  51. package/dist/esm/geometry/attributes/normalize.js +13 -0
  52. package/dist/esm/geometry/attributes/normalize.js.map +1 -0
  53. package/dist/esm/geometry/colors/rgb565.js +17 -0
  54. package/dist/esm/geometry/colors/rgb565.js.map +1 -0
  55. package/dist/esm/geometry/compression/attribute-compression.js +159 -0
  56. package/dist/esm/geometry/compression/attribute-compression.js.map +1 -0
  57. package/dist/esm/geometry/constants.js +29 -0
  58. package/dist/esm/geometry/constants.js.map +1 -0
  59. package/dist/esm/geometry/gl/gl-type.js +72 -0
  60. package/dist/esm/geometry/gl/gl-type.js.map +1 -0
  61. package/dist/esm/geometry/is-geometry.js +4 -0
  62. package/dist/esm/geometry/is-geometry.js.map +1 -0
  63. package/dist/esm/geometry/iterators/attribute-iterator.js +11 -0
  64. package/dist/esm/geometry/iterators/attribute-iterator.js.map +1 -0
  65. package/dist/esm/geometry/iterators/primitive-iterator.js +76 -0
  66. package/dist/esm/geometry/iterators/primitive-iterator.js.map +1 -0
  67. package/dist/esm/geometry/primitives/modes.js +48 -0
  68. package/dist/esm/geometry/primitives/modes.js.map +1 -0
  69. package/dist/esm/geometry/typed-arrays/typed-array-utils.js +18 -0
  70. package/dist/esm/geometry/typed-arrays/typed-array-utils.js.map +1 -0
  71. package/dist/esm/geometry/utils/assert.js +6 -0
  72. package/dist/esm/geometry/utils/assert.js.map +1 -0
  73. package/dist/esm/index.js +11 -0
  74. package/dist/esm/index.js.map +1 -0
  75. package/dist/esm/utils/assert.js +6 -0
  76. package/dist/esm/utils/assert.js.map +1 -0
  77. package/dist/geometry/attributes/compute-bounding-box.d.ts +10 -0
  78. package/dist/geometry/attributes/compute-bounding-box.d.ts.map +1 -0
  79. package/dist/geometry/attributes/compute-bounding-box.js +41 -27
  80. package/dist/geometry/attributes/compute-bounding-sphere.d.ts +29 -0
  81. package/dist/geometry/attributes/compute-bounding-sphere.d.ts.map +1 -0
  82. package/dist/geometry/attributes/compute-bounding-sphere.js +29 -1
  83. package/dist/geometry/attributes/compute-tangents.d.ts +1 -0
  84. package/dist/geometry/attributes/compute-tangents.d.ts.map +1 -0
  85. package/dist/geometry/attributes/compute-tangents.js +145 -1
  86. package/dist/geometry/attributes/compute-vertex-normals.d.ts +17 -0
  87. package/dist/geometry/attributes/compute-vertex-normals.d.ts.map +1 -0
  88. package/dist/geometry/attributes/compute-vertex-normals.js +47 -42
  89. package/dist/geometry/attributes/convert-to-non-indexed.d.ts +11 -0
  90. package/dist/geometry/attributes/convert-to-non-indexed.d.ts.map +1 -0
  91. package/dist/geometry/attributes/convert-to-non-indexed.js +31 -30
  92. package/dist/geometry/attributes/get-attribute-from-geometry.d.ts +8 -0
  93. package/dist/geometry/attributes/get-attribute-from-geometry.d.ts.map +1 -0
  94. package/dist/geometry/attributes/get-attribute-from-geometry.js +33 -26
  95. package/dist/geometry/attributes/normalize.d.ts +8 -0
  96. package/dist/geometry/attributes/normalize.d.ts.map +1 -0
  97. package/dist/geometry/attributes/normalize.js +19 -11
  98. package/dist/geometry/colors/rgb565.d.ts +14 -0
  99. package/dist/geometry/colors/rgb565.d.ts.map +1 -0
  100. package/dist/geometry/colors/rgb565.js +29 -14
  101. package/dist/geometry/compression/attribute-compression.d.ts +166 -0
  102. package/dist/geometry/compression/attribute-compression.d.ts.map +1 -0
  103. package/dist/geometry/compression/attribute-compression.js +339 -162
  104. package/dist/geometry/constants.d.ts +44 -0
  105. package/dist/geometry/constants.d.ts.map +1 -0
  106. package/dist/geometry/constants.js +30 -24
  107. package/dist/geometry/gl/gl-type.d.ts +38 -0
  108. package/dist/geometry/gl/gl-type.d.ts.map +1 -0
  109. package/dist/geometry/gl/gl-type.js +101 -74
  110. package/dist/geometry/is-geometry.d.ts +6 -0
  111. package/dist/geometry/is-geometry.d.ts.map +1 -0
  112. package/dist/geometry/is-geometry.js +13 -3
  113. package/dist/geometry/iterators/attribute-iterator.d.ts +7 -0
  114. package/dist/geometry/iterators/attribute-iterator.d.ts.map +1 -0
  115. package/dist/geometry/iterators/attribute-iterator.js +17 -11
  116. package/dist/geometry/iterators/primitive-iterator.d.ts +16 -0
  117. package/dist/geometry/iterators/primitive-iterator.d.ts.map +1 -0
  118. package/dist/geometry/iterators/primitive-iterator.js +85 -79
  119. package/dist/geometry/primitives/modes.d.ts +22 -0
  120. package/dist/geometry/primitives/modes.d.ts.map +1 -0
  121. package/dist/geometry/primitives/modes.js +67 -54
  122. package/dist/geometry/typed-arrays/typed-array-utils.d.ts +7 -0
  123. package/dist/geometry/typed-arrays/typed-array-utils.d.ts.map +1 -0
  124. package/dist/geometry/typed-arrays/typed-array-utils.js +23 -20
  125. package/dist/geometry/utils/assert.d.ts +7 -0
  126. package/dist/geometry/utils/assert.d.ts.map +1 -0
  127. package/dist/geometry/utils/assert.js +13 -5
  128. package/dist/index.d.ts +12 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +46 -11
  131. package/dist/utils/assert.d.ts +2 -0
  132. package/dist/utils/assert.d.ts.map +1 -0
  133. package/dist/utils/assert.js +11 -5
  134. package/package.json +7 -7
  135. package/src/geometry/attributes/compute-vertex-normals.ts +1 -1
  136. package/src/geometry/compression/attribute-compression.ts +7 -1
  137. package/src/geometry/gl/gl-type.ts +1 -1
  138. package/src/index.ts +12 -0
  139. package/dist/geometry/attributes/compute-bounding-box.js.map +0 -1
  140. package/dist/geometry/attributes/compute-bounding-sphere.js.map +0 -1
  141. package/dist/geometry/attributes/compute-tangents.js.map +0 -1
  142. package/dist/geometry/attributes/compute-vertex-normals.js.map +0 -1
  143. package/dist/geometry/attributes/convert-to-non-indexed.js.map +0 -1
  144. package/dist/geometry/attributes/get-attribute-from-geometry.js.map +0 -1
  145. package/dist/geometry/attributes/normalize.js.map +0 -1
  146. package/dist/geometry/colors/rgb565.js.map +0 -1
  147. package/dist/geometry/compression/attribute-compression.js.map +0 -1
  148. package/dist/geometry/constants.js.map +0 -1
  149. package/dist/geometry/gl/gl-type.js.map +0 -1
  150. package/dist/geometry/is-geometry.js.map +0 -1
  151. package/dist/geometry/iterators/attribute-iterator.js.map +0 -1
  152. package/dist/geometry/iterators/primitive-iterator.js.map +0 -1
  153. package/dist/geometry/primitives/modes.js.map +0 -1
  154. package/dist/geometry/typed-arrays/typed-array-utils.js.map +0 -1
  155. package/dist/geometry/types.js +0 -2
  156. package/dist/geometry/types.js.map +0 -1
  157. package/dist/geometry/utils/assert.js.map +0 -1
  158. package/dist/index.js.map +0 -1
  159. package/dist/utils/assert.js.map +0 -1
  160. package/src/geometry/types.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gl-type.d.ts","sourceRoot":"","sources":["../../../src/geometry/gl/gl-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AA6B9C,MAAM,CAAC,OAAO,OAAO,MAAM;IAGzB;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM;IAWjE;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASrC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;IAmBlC;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAGxC;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,UAAU,GAAE,MAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU;CAOd"}
@@ -1,85 +1,112 @@
1
- import { GL_TYPE as GL } from '../constants';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../constants");
2
4
  const GL_TYPE_TO_ARRAY_TYPE = {
3
- [GL.DOUBLE]: Float64Array,
4
- [GL.FLOAT]: Float32Array,
5
- [GL.UNSIGNED_SHORT]: Uint16Array,
6
- [GL.UNSIGNED_INT]: Uint32Array,
7
- [GL.UNSIGNED_BYTE]: Uint8Array,
8
- [GL.BYTE]: Int8Array,
9
- [GL.SHORT]: Int16Array,
10
- [GL.INT]: Int32Array
5
+ [constants_1.GL_TYPE.DOUBLE]: Float64Array,
6
+ [constants_1.GL_TYPE.FLOAT]: Float32Array,
7
+ [constants_1.GL_TYPE.UNSIGNED_SHORT]: Uint16Array,
8
+ [constants_1.GL_TYPE.UNSIGNED_INT]: Uint32Array,
9
+ [constants_1.GL_TYPE.UNSIGNED_BYTE]: Uint8Array,
10
+ [constants_1.GL_TYPE.BYTE]: Int8Array,
11
+ [constants_1.GL_TYPE.SHORT]: Int16Array,
12
+ [constants_1.GL_TYPE.INT]: Int32Array
11
13
  };
12
14
  const NAME_TO_GL_TYPE = {
13
- DOUBLE: GL.DOUBLE,
14
- FLOAT: GL.FLOAT,
15
- UNSIGNED_SHORT: GL.UNSIGNED_SHORT,
16
- UNSIGNED_INT: GL.UNSIGNED_INT,
17
- UNSIGNED_BYTE: GL.UNSIGNED_BYTE,
18
- BYTE: GL.BYTE,
19
- SHORT: GL.SHORT,
20
- INT: GL.INT
15
+ DOUBLE: constants_1.GL_TYPE.DOUBLE,
16
+ FLOAT: constants_1.GL_TYPE.FLOAT,
17
+ UNSIGNED_SHORT: constants_1.GL_TYPE.UNSIGNED_SHORT,
18
+ UNSIGNED_INT: constants_1.GL_TYPE.UNSIGNED_INT,
19
+ UNSIGNED_BYTE: constants_1.GL_TYPE.UNSIGNED_BYTE,
20
+ BYTE: constants_1.GL_TYPE.BYTE,
21
+ SHORT: constants_1.GL_TYPE.SHORT,
22
+ INT: constants_1.GL_TYPE.INT
21
23
  };
22
24
  const ERR_TYPE_CONVERSION = 'Failed to convert GL type';
23
- export default class GLType {
24
- static fromTypedArray(arrayOrType) {
25
- arrayOrType = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;
26
-
27
- for (const glType in GL_TYPE_TO_ARRAY_TYPE) {
28
- const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];
29
-
30
- if (ArrayType === arrayOrType) {
31
- return glType;
32
- }
25
+ // Converts TYPED ARRAYS to corresponding GL constant
26
+ // Used to auto deduce gl parameter types
27
+ class GLType {
28
+ // Signature: fromTypedArray(new Uint8Array())
29
+ // Signature: fromTypedArray(Uint8Array)
30
+ /**
31
+ * Returns the size, in bytes, of the corresponding datatype
32
+ * @param arrayOrType
33
+ * @returns glType a a string
34
+ */
35
+ static fromTypedArray(arrayOrType) {
36
+ // If typed array, look up constructor
37
+ arrayOrType = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;
38
+ for (const glType in GL_TYPE_TO_ARRAY_TYPE) {
39
+ const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];
40
+ if (ArrayType === arrayOrType) {
41
+ return glType;
42
+ }
43
+ }
44
+ throw new Error(ERR_TYPE_CONVERSION);
33
45
  }
34
-
35
- throw new Error(ERR_TYPE_CONVERSION);
36
- }
37
-
38
- static fromName(name) {
39
- const glType = NAME_TO_GL_TYPE[name];
40
-
41
- if (!glType) {
42
- throw new Error(ERR_TYPE_CONVERSION);
46
+ /**
47
+ * Extracts name for glType from array NAME_TO_GL_TYPE
48
+ * @param name
49
+ * @returns glType as a number
50
+ */
51
+ static fromName(name) {
52
+ const glType = NAME_TO_GL_TYPE[name];
53
+ if (!glType) {
54
+ throw new Error(ERR_TYPE_CONVERSION);
55
+ }
56
+ return glType;
43
57
  }
44
-
45
- return glType;
46
- }
47
-
48
- static getArrayType(glType) {
49
- switch (glType) {
50
- case GL.UNSIGNED_SHORT_5_6_5:
51
- case GL.UNSIGNED_SHORT_4_4_4_4:
52
- case GL.UNSIGNED_SHORT_5_5_5_1:
53
- return Uint16Array;
54
-
55
- default:
56
- const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];
57
-
58
- if (!ArrayType) {
59
- throw new Error(ERR_TYPE_CONVERSION);
58
+ // Converts GL constant to corresponding typed array type
59
+ // eslint-disable-next-line complexity
60
+ static getArrayType(glType) {
61
+ switch (glType) {
62
+ /*eslint-disable*/
63
+ // @ts-ignore
64
+ case constants_1.GL_TYPE.UNSIGNED_SHORT_5_6_5:
65
+ // @ts-ignore
66
+ case constants_1.GL_TYPE.UNSIGNED_SHORT_4_4_4_4:
67
+ // @ts-ignore
68
+ case constants_1.GL_TYPE.UNSIGNED_SHORT_5_5_5_1:
69
+ /* eslint-enable*/
70
+ return Uint16Array;
71
+ default:
72
+ const ArrayType = GL_TYPE_TO_ARRAY_TYPE[glType];
73
+ if (!ArrayType) {
74
+ throw new Error(ERR_TYPE_CONVERSION);
75
+ }
76
+ return ArrayType;
60
77
  }
61
-
62
- return ArrayType;
63
78
  }
64
- }
65
-
66
- static getByteSize(glType) {
67
- const ArrayType = GLType.getArrayType(glType);
68
- return ArrayType.BYTES_PER_ELEMENT;
69
- }
70
-
71
- static validate(glType) {
72
- return Boolean(GLType.getArrayType(glType));
73
- }
74
-
75
- static createTypedArray(glType, buffer, byteOffset = 0, length) {
76
- if (length === undefined) {
77
- length = (buffer.byteLength - byteOffset) / GLType.getByteSize(glType);
79
+ /**
80
+ * Returns the size in bytes of one element of the provided WebGL type
81
+ * @param glType
82
+ * @returns size of glType
83
+ */
84
+ static getByteSize(glType) {
85
+ const ArrayType = GLType.getArrayType(glType);
86
+ return ArrayType.BYTES_PER_ELEMENT;
87
+ }
88
+ /**
89
+ * Returns `true` if `glType` is a valid WebGL data type.
90
+ * @param glType
91
+ * @returns boolean
92
+ */
93
+ static validate(glType) {
94
+ return Boolean(GLType.getArrayType(glType));
95
+ }
96
+ /**
97
+ * Creates a typed view of an array of bytes
98
+ * @param glType The type of typed array (ArrayBuffer view) to create
99
+ * @param buffer The buffer storage to use for the view.
100
+ * @param byteOffset The offset, in bytes, to the first element in the view
101
+ * @param length The number of elements in the view. Defaults to buffer length
102
+ * @returns A typed array view of the buffer
103
+ */
104
+ static createTypedArray(glType, buffer, byteOffset = 0, length) {
105
+ if (length === undefined) {
106
+ length = (buffer.byteLength - byteOffset) / GLType.getByteSize(glType);
107
+ }
108
+ const ArrayType = GLType.getArrayType(glType);
109
+ return new ArrayType(buffer, byteOffset, length);
78
110
  }
79
-
80
- const ArrayType = GLType.getArrayType(glType);
81
- return new ArrayType(buffer, byteOffset, length);
82
- }
83
-
84
111
  }
85
- //# sourceMappingURL=gl-type.js.map
112
+ exports.default = GLType;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Checking if it is geometry
3
+ * @param geometry
4
+ */
5
+ export default function isGeometry(geometry: any): boolean;
6
+ //# sourceMappingURL=is-geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/is-geometry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAQzD"}
@@ -1,4 +1,14 @@
1
- export default function isGeometry(geometry) {
2
- return geometry && typeof geometry === 'object' && geometry.mode && geometry.attributes && typeof geometry.attributes === 'object';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Checking if it is geometry
5
+ * @param geometry
6
+ */
7
+ function isGeometry(geometry) {
8
+ return (geometry &&
9
+ typeof geometry === 'object' &&
10
+ geometry.mode &&
11
+ geometry.attributes &&
12
+ typeof geometry.attributes === 'object');
3
13
  }
4
- //# sourceMappingURL=is-geometry.js.map
14
+ exports.default = isGeometry;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Iterates over a single attribute
3
+ * NOTE: For performance, re-yields the same modified element
4
+ * @param param0
5
+ */
6
+ export declare function makeAttributeIterator(values: any, size: number): Iterable<any>;
7
+ //# sourceMappingURL=attribute-iterator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-iterator.d.ts","sourceRoot":"","sources":["../../../src/geometry/iterators/attribute-iterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAiB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAS/E"}
@@ -1,13 +1,19 @@
1
- export function* makeAttributeIterator(values, size) {
2
- const ArrayType = values.constructor;
3
- const element = new ArrayType(size);
4
-
5
- for (let i = 0; i < values.length; i += size) {
6
- for (let j = 0; j < size; j++) {
7
- element[j] = element[i + j];
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeAttributeIterator = void 0;
4
+ /**
5
+ * Iterates over a single attribute
6
+ * NOTE: For performance, re-yields the same modified element
7
+ * @param param0
8
+ */
9
+ function* makeAttributeIterator(values, size) {
10
+ const ArrayType = values.constructor;
11
+ const element = new ArrayType(size);
12
+ for (let i = 0; i < values.length; i += size) {
13
+ for (let j = 0; j < size; j++) {
14
+ element[j] = element[i + j];
15
+ }
16
+ yield element;
8
17
  }
9
-
10
- yield element;
11
- }
12
18
  }
13
- //# sourceMappingURL=attribute-iterator.js.map
19
+ exports.makeAttributeIterator = makeAttributeIterator;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Will iterate over each primitive, expanding (dereferencing) indices
3
+ * @param indices
4
+ * @param attributes
5
+ * @param mode
6
+ * @param start
7
+ * @param end
8
+ */
9
+ export declare function makePrimitiveIterator(indices?: any, attributes?: object, mode?: number, start?: number, end?: number): Iterable<{
10
+ attributes: object;
11
+ type: number;
12
+ i1: number;
13
+ i2: number;
14
+ i3: number;
15
+ }>;
16
+ //# sourceMappingURL=primitive-iterator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-iterator.d.ts","sourceRoot":"","sources":["../../../src/geometry/iterators/primitive-iterator.ts"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AAEH,wBAAiB,qBAAqB,CACpC,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,GAAE,MAAW,EACvB,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,SAAI,EACT,GAAG,CAAC,EAAE,MAAM,GACX,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,CAAC,CA4ElF"}
@@ -1,82 +1,88 @@
1
- import { GL } from '../constants';
2
- import { getPrimitiveModeType } from '../primitives/modes';
3
- import { assert } from '@loaders.gl/loader-utils';
4
- export function* makePrimitiveIterator(indices, attributes = {}, mode, start = 0, end) {
5
- if (indices) {
6
- indices = indices.values || indices.value || indices;
7
- }
8
-
9
- if (end === undefined) {
10
- end = indices ? indices.length : start;
11
- }
12
-
13
- const info = {
14
- attributes,
15
- type: getPrimitiveModeType(mode),
16
- i1: 0,
17
- i2: 0,
18
- i3: 0
19
- };
20
- let i = start;
21
-
22
- while (i < end) {
23
- switch (mode) {
24
- case GL.POINTS:
25
- info.i1 = i;
26
- i += 1;
27
- break;
28
-
29
- case GL.LINES:
30
- info.i1 = i;
31
- info.i2 = i + 1;
32
- i += 2;
33
- break;
34
-
35
- case GL.LINE_STRIP:
36
- info.i1 = i;
37
- info.i2 = i + 1;
38
- i += 1;
39
- break;
40
-
41
- case GL.LINE_LOOP:
42
- info.i1 = i;
43
- info.i2 = i + 1;
44
- i += 1;
45
- break;
46
-
47
- case GL.TRIANGLES:
48
- info.i1 = i;
49
- info.i2 = i + 1;
50
- info.i3 = i + 2;
51
- i += 3;
52
- break;
53
-
54
- case GL.TRIANGLE_STRIP:
55
- info.i1 = i;
56
- info.i2 = i + 1;
57
- i += 1;
58
- break;
59
-
60
- case GL.TRIANGLE_FAN:
61
- info.i1 = 1;
62
- info.i2 = i;
63
- info.i3 = i + 1;
64
- i += 1;
65
- break;
66
-
67
- default:
68
- assert(false);
69
- }
70
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makePrimitiveIterator = void 0;
4
+ const constants_1 = require("../constants");
5
+ const modes_1 = require("../primitives/modes");
6
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
7
+ /**
8
+ * Will iterate over each primitive, expanding (dereferencing) indices
9
+ * @param indices
10
+ * @param attributes
11
+ * @param mode
12
+ * @param start
13
+ * @param end
14
+ */
15
+ // eslint-disable-next-line complexity
16
+ function* makePrimitiveIterator(indices, attributes = {}, mode, start = 0, end) {
17
+ // support indices being an object with a values array
71
18
  if (indices) {
72
- if ('i1' in info) {
73
- info.i1 = indices[info.i1];
74
- info.i2 = indices[info.i2];
75
- info.i3 = indices[info.i3];
76
- }
19
+ indices = indices.values || indices.value || indices;
20
+ }
21
+ // Autodeduce length from indices
22
+ if (end === undefined) {
23
+ end = indices ? indices.length : start;
24
+ }
25
+ // iteration info
26
+ const info = {
27
+ attributes,
28
+ type: (0, modes_1.getPrimitiveModeType)(mode),
29
+ i1: 0,
30
+ i2: 0,
31
+ i3: 0
32
+ };
33
+ let i = start;
34
+ // @ts-ignore
35
+ while (i < end) {
36
+ switch (mode) {
37
+ case constants_1.GL.POINTS: // draw single points.
38
+ info.i1 = i;
39
+ i += 1;
40
+ break;
41
+ case constants_1.GL.LINES: // draw lines. Each set of two vertices is treated as a separate line segment.
42
+ info.i1 = i;
43
+ info.i2 = i + 1;
44
+ i += 2;
45
+ break;
46
+ case constants_1.GL.LINE_STRIP: // draw lines. Each vertex connects to the one after it.
47
+ info.i1 = i;
48
+ info.i2 = i + 1;
49
+ i += 1;
50
+ break;
51
+ case constants_1.GL.LINE_LOOP: // draw a connected group of line segments from the first vertex to the last
52
+ info.i1 = i;
53
+ info.i2 = i + 1;
54
+ i += 1;
55
+ break;
56
+ case constants_1.GL.TRIANGLES: // draw triangles. Each set of three vertices creates a separate triangle.
57
+ info.i1 = i;
58
+ info.i2 = i + 1;
59
+ info.i3 = i + 2;
60
+ i += 3;
61
+ break;
62
+ case constants_1.GL.TRIANGLE_STRIP: // draw a connected group of triangles.
63
+ info.i1 = i;
64
+ info.i2 = i + 1;
65
+ i += 1;
66
+ break;
67
+ case constants_1.GL.TRIANGLE_FAN: // draw a connected group of triangles.
68
+ info.i1 = 1;
69
+ info.i2 = i;
70
+ info.i3 = i + 1;
71
+ i += 1;
72
+ break;
73
+ default:
74
+ (0, loader_utils_1.assert)(false);
75
+ }
76
+ // if indices are present, lookup actual vertices in indices
77
+ if (indices) {
78
+ if ('i1' in info) {
79
+ info.i1 = indices[info.i1];
80
+ info.i2 = indices[info.i2];
81
+ info.i3 = indices[info.i3];
82
+ }
83
+ }
84
+ // @ts-ignore
85
+ yield info;
77
86
  }
78
-
79
- yield info;
80
- }
81
87
  }
82
- //# sourceMappingURL=primitive-iterator.js.map
88
+ exports.makePrimitiveIterator = makePrimitiveIterator;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Different methods of working with geometries depending on glType
3
+ /**
4
+
5
+ /**
6
+ * @param mode
7
+ * @returns draw points | lines | triangles
8
+ */
9
+ export declare function getPrimitiveModeType(mode?: number): number;
10
+ /**
11
+ * @param mode
12
+ * @returns true | false
13
+ */
14
+ export declare function isPrimitiveModeExpandable(mode: number): boolean;
15
+ /**
16
+ * Returns new length depends on glType
17
+ * @param mode
18
+ * @param length
19
+ * @returns new length
20
+ */
21
+ export declare function getPrimitiveModeExpandedLength(mode: number, length: number): number;
22
+ //# sourceMappingURL=modes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../../src/geometry/primitives/modes.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAe1D;AACD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU/D;AACD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBnF"}
@@ -1,58 +1,71 @@
1
- import { GL } from '../constants';
2
- export function getPrimitiveModeType(mode) {
3
- switch (mode) {
4
- case GL.POINTS:
5
- return GL.POINTS;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPrimitiveModeExpandedLength = exports.isPrimitiveModeExpandable = exports.getPrimitiveModeType = void 0;
4
+ const constants_1 = require("../constants");
5
+ /**
6
+ * Different methods of working with geometries depending on glType
7
+ /**
6
8
 
7
- case GL.LINES:
8
- case GL.LINE_STRIP:
9
- case GL.LINE_LOOP:
10
- return GL.LINES;
11
-
12
- case GL.TRIANGLES:
13
- case GL.TRIANGLE_STRIP:
14
- case GL.TRIANGLE_FAN:
15
- return GL.TRIANGLES;
16
-
17
- default:
18
- throw new Error('Unknown primitive mode');
19
- }
9
+ /**
10
+ * @param mode
11
+ * @returns draw points | lines | triangles
12
+ */
13
+ function getPrimitiveModeType(mode) {
14
+ switch (mode) {
15
+ case constants_1.GL.POINTS: // draw single points.
16
+ return constants_1.GL.POINTS;
17
+ case constants_1.GL.LINES: // draw lines. Each set of two vertices is treated as a separate line segment.
18
+ case constants_1.GL.LINE_STRIP: // draw lines. Each vertex connects to the one after it.
19
+ case constants_1.GL.LINE_LOOP: // draw a connected group of line segments from the first vertex to the last
20
+ return constants_1.GL.LINES;
21
+ case constants_1.GL.TRIANGLES:
22
+ case constants_1.GL.TRIANGLE_STRIP:
23
+ case constants_1.GL.TRIANGLE_FAN: // draw a connected group of triangles.
24
+ return constants_1.GL.TRIANGLES;
25
+ default:
26
+ throw new Error('Unknown primitive mode');
27
+ }
20
28
  }
21
- export function isPrimitiveModeExpandable(mode) {
22
- switch (mode) {
23
- case GL.LINE_STRIP:
24
- case GL.LINE_LOOP:
25
- case GL.TRIANGLE_STRIP:
26
- case GL.TRIANGLE_FAN:
27
- return true;
28
-
29
- default:
30
- return false;
31
- }
29
+ exports.getPrimitiveModeType = getPrimitiveModeType;
30
+ /**
31
+ * @param mode
32
+ * @returns true | false
33
+ */
34
+ function isPrimitiveModeExpandable(mode) {
35
+ switch (mode) {
36
+ case constants_1.GL.LINE_STRIP: // draw lines. Each vertex connects to the one after it.
37
+ case constants_1.GL.LINE_LOOP: // draw a connected group of line segments from the first vertex to the last
38
+ case constants_1.GL.TRIANGLE_STRIP: // draw a connected group of triangles.
39
+ case constants_1.GL.TRIANGLE_FAN: // draw a connected group of triangles.
40
+ return true;
41
+ default:
42
+ return false;
43
+ }
32
44
  }
33
- export function getPrimitiveModeExpandedLength(mode, length) {
34
- switch (mode) {
35
- case GL.POINTS:
36
- return length;
37
-
38
- case GL.LINES:
39
- return length;
40
-
41
- case GL.LINE_STRIP:
42
- return length;
43
-
44
- case GL.LINE_LOOP:
45
- return length + 1;
46
-
47
- case GL.TRIANGLES:
48
- return length;
49
-
50
- case GL.TRIANGLE_STRIP:
51
- case GL.TRIANGLE_FAN:
52
- return (length - 2) * 3;
53
-
54
- default:
55
- throw new Error('Unknown length');
56
- }
45
+ exports.isPrimitiveModeExpandable = isPrimitiveModeExpandable;
46
+ /**
47
+ * Returns new length depends on glType
48
+ * @param mode
49
+ * @param length
50
+ * @returns new length
51
+ */
52
+ function getPrimitiveModeExpandedLength(mode, length) {
53
+ switch (mode) {
54
+ case constants_1.GL.POINTS: // draw single points.
55
+ return length;
56
+ case constants_1.GL.LINES: // draw lines. Each set of two vertices is treated as a separate line segment.
57
+ return length;
58
+ case constants_1.GL.LINE_STRIP: // draw lines. Each vertex connects to the one after it.
59
+ return length;
60
+ case constants_1.GL.LINE_LOOP: // draw a connected group of line segments from the first vertex to the last
61
+ return length + 1;
62
+ case constants_1.GL.TRIANGLES: // draw triangles. Each set of three vertices creates a separate triangle.
63
+ return length;
64
+ case constants_1.GL.TRIANGLE_STRIP: // draw a connected group of triangles.
65
+ case constants_1.GL.TRIANGLE_FAN: // draw a connected group of triangles.
66
+ return (length - 2) * 3;
67
+ default:
68
+ throw new Error('Unknown length');
69
+ }
57
70
  }
58
- //# sourceMappingURL=modes.js.map
71
+ exports.getPrimitiveModeExpandedLength = getPrimitiveModeExpandedLength;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Concats typed arrays
3
+ * @param arrays
4
+ * @returns new Uint8Array
5
+ */
6
+ export declare function concatTypedArrays(arrays?: any): Uint8Array;
7
+ //# sourceMappingURL=typed-array-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../../src/geometry/typed-arrays/typed-array-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,GAAQ,GAAG,UAAU,CAgB9D"}