@carbonenginejs/runtime-utils 0.1.1 → 0.1.3

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 (104) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +23 -23
  3. package/README.md +69 -69
  4. package/THIRD-PARTY-NOTICES.md +64 -64
  5. package/docs/README.md +74 -73
  6. package/docs/architecture.md +101 -101
  7. package/docs/concepts/foundation-consolidation.md +85 -85
  8. package/docs/concepts/model-lifecycle.md +111 -0
  9. package/docs/const-kb.md +85 -87
  10. package/docs/core-types/DECORATOR-TODOS.md +25 -25
  11. package/docs/core-types/README.md +229 -168
  12. package/docs/reference/api.md +105 -102
  13. package/docs/reference/classes/README.md +135 -135
  14. package/package.json +139 -139
  15. package/src/arrays.js +5 -5
  16. package/src/audio/audioFormats.js +34 -34
  17. package/src/audio/index.js +1 -1
  18. package/src/box3.js +331 -331
  19. package/src/bytes.js +56 -56
  20. package/src/compression.js +56 -56
  21. package/src/constants/index.js +7 -7
  22. package/src/constants/trinity.js +13 -13
  23. package/src/constants.js +15 -15
  24. package/src/curve.js +79 -79
  25. package/src/d3d/dxgiFormats.js +46 -46
  26. package/src/d3d/index.js +2 -2
  27. package/src/d3d/primitiveTopology.js +11 -11
  28. package/src/document/CjsCarbonDocument.js +212 -212
  29. package/src/document/CjsClassRegistry.js +373 -373
  30. package/src/document/CjsDocumentDehydrator.js +142 -142
  31. package/src/document/CjsDocumentHydrator.js +156 -156
  32. package/src/document/CjsStructRegistry.js +348 -348
  33. package/src/document/hydrationAdapter.js +129 -129
  34. package/src/document/index.js +6 -6
  35. package/src/errors/CjsError.js +286 -286
  36. package/src/errors/index.js +5 -5
  37. package/src/geometry/box.js +22 -22
  38. package/src/geometry/cylinder.js +22 -22
  39. package/src/geometry/helpers/earcut.js +1 -1
  40. package/src/geometry/helpers/misc.js +3 -3
  41. package/src/geometry/index.js +8 -8
  42. package/src/geometry/json.js +67 -67
  43. package/src/geometry/lathe.js +44 -44
  44. package/src/geometry/plane.js +14 -14
  45. package/src/geometry/shape.js +4 -4
  46. package/src/geometry/sphere.js +24 -24
  47. package/src/geometry/torus.js +14 -14
  48. package/src/graphics/colorSpaces.js +22 -22
  49. package/src/graphics/index.js +4 -4
  50. package/src/graphics/pixelFormats.js +158 -158
  51. package/src/graphics/textureDimensions.js +22 -22
  52. package/src/graphics/trinityEnums.js +87 -87
  53. package/src/index.js +62 -62
  54. package/src/is.js +108 -46
  55. package/src/json.js +23 -23
  56. package/src/lifecycle/CjsLifecycleState.js +77 -77
  57. package/src/lifecycle/index.js +1 -1
  58. package/src/lne3.js +70 -70
  59. package/src/lookup.js +48 -48
  60. package/src/mat3.js +51 -51
  61. package/src/mat4.js +699 -699
  62. package/src/math/index.js +25 -25
  63. package/src/math/scalar.js +63 -63
  64. package/src/media/index.js +1 -1
  65. package/src/media/mediaTypes.js +50 -50
  66. package/src/mesh.js +424 -424
  67. package/src/model/CjsEventEmitter.js +333 -333
  68. package/src/model/CjsModel.js +1589 -1544
  69. package/src/model/CjsModelState.js +72 -72
  70. package/src/model/index.js +4 -4
  71. package/src/model/sourceRecordUtils.js +54 -54
  72. package/src/noise.js +310 -310
  73. package/src/num.js +827 -827
  74. package/src/object.js +39 -39
  75. package/src/path.js +53 -53
  76. package/src/pln.js +125 -125
  77. package/src/pool.js +9 -9
  78. package/src/quat.js +144 -144
  79. package/src/ray3.js +188 -188
  80. package/src/renderContext/formats.js +145 -145
  81. package/src/renderContext/index.js +5 -5
  82. package/src/renderContext/presentation.js +125 -125
  83. package/src/renderContext/resources.js +27 -27
  84. package/src/renderContext/upscaling.js +22 -22
  85. package/src/renderContext/window.js +20 -20
  86. package/src/runtime/CjsRuntimeState.js +50 -50
  87. package/src/schema/CjsSchema.js +555 -318
  88. package/src/schema/index.js +4 -4
  89. package/src/shader/index.js +1 -1
  90. package/src/shader/shaderStages.js +37 -37
  91. package/src/sph3.js +181 -181
  92. package/src/tangent.js +288 -288
  93. package/src/text.js +40 -40
  94. package/src/tri3.js +98 -98
  95. package/src/types/carbonTypes.js +635 -635
  96. package/src/types/index.js +2 -2
  97. package/src/utils.js +58 -58
  98. package/src/validation.js +46 -46
  99. package/src/vec2.js +229 -229
  100. package/src/vec3.js +1188 -1172
  101. package/src/vec4.js +347 -347
  102. package/src/vertex.js +108 -108
  103. package/src/webgpu/index.js +1 -1
  104. package/src/webgpu/textureFormats.js +121 -121
package/src/vec4.js CHANGED
@@ -1,347 +1,347 @@
1
- import * as glVec4 from "gl-matrix/esm/vec4.js";
2
- import { num } from "./num.js";
3
- import { pool } from "./pool.js";
4
-
5
- const vec4 = { ...glVec4 };
6
-
7
- /**
8
- * Vector 4
9
- * @typedef {Float32Array} vec4
10
- */
11
-
12
-
13
- /**
14
- * Allocates a pooled vec4
15
- * @returns {Float32Array|vec4}
16
- */
17
- vec4.alloc = function()
18
- {
19
- return pool.allocF32(4);
20
- };
21
-
22
- /**
23
- * Unallocates a pooled vec4
24
- * @param {vec4|Float32Array} a
25
- */
26
- vec4.unalloc = function(a)
27
- {
28
- pool.freeType(a);
29
- };
30
-
31
- vec4.ZERO = vec4.fromValues(0, 0, 0, 0);
32
-
33
- /**
34
- * Creates a linear color vec4 with opaque alpha
35
- * @returns {vec4}
36
- */
37
- vec4.createLinear = function()
38
- {
39
- const out = vec4.create();
40
- out[3] = 1;
41
- return out;
42
- };
43
-
44
- /**
45
- * Adds a scalar to a vec4
46
- *
47
- * @param {vec4} out
48
- * @param {vec4} a
49
- * @param {Number} s
50
- * @returns {vec4} out
51
- */
52
- vec4.addScalar = function(out, a, s)
53
- {
54
- out[0] = a[0] + s;
55
- out[1] = a[1] + s;
56
- out[2] = a[2] + s;
57
- out[3] = a[3] + s;
58
- return out;
59
- };
60
-
61
- /**
62
- * Checks if all elements are 0
63
- * @param {vec4} a
64
- * @returns {boolean}
65
- */
66
- vec4.isEmpty = function(a)
67
- {
68
- return a[0] === 0 && a[1] === 0 && a[2] === 0 && a[3] === 0;
69
- };
70
-
71
- /**
72
- * Divides a vec4 by a scalar
73
- *
74
- * @param {vec4} out
75
- * @param {vec4} a
76
- * @param {Number} s
77
- * @returns {vec4} out
78
- */
79
- vec4.divideScalar = function(out, a, s)
80
- {
81
- return vec4.multiplyScalar(out, a, 1 / s);
82
- };
83
-
84
-
85
- /**
86
- * Multiplies a vec4 by a scalar
87
- *
88
- * @param {vec4} out
89
- * @param {vec4} a
90
- * @param {Number} s
91
- * @returns {vec4} out
92
- */
93
- vec4.multiplyScalar = function(out, a, s)
94
- {
95
- out[0] = a[0] * s;
96
- out[1] = a[1] * s;
97
- out[2] = a[2] * s;
98
- out[3] = a[3] * s;
99
- return out;
100
- };
101
-
102
- /**
103
- * Sets a vec4 from a scalar
104
- *
105
- * @param {vec4} out
106
- * @param {Number} s
107
- * @returns {vec4} out
108
- */
109
- vec4.setScalar = function(out, s)
110
- {
111
- out[0] = s;
112
- out[1] = s;
113
- out[2] = s;
114
- out[3] = s;
115
- return out;
116
- };
117
-
118
- /**
119
- * Subtracts a scalar from a vec4
120
- *
121
- * @param {vec4} out
122
- * @param {vec4} a
123
- * @param {Number} s
124
- * @returns {vec4} out
125
- */
126
- vec4.subtractScalar = function(out, a, s)
127
- {
128
- out[0] = a[0] - s;
129
- out[1] = a[1] - s;
130
- out[2] = a[2] - s;
131
- out[3] = a[3] - s;
132
- return out;
133
- };
134
-
135
- /**
136
- * Converts from linear color to rgba
137
- * @param {vec4} out
138
- * @param {vec4} linear
139
- * @param {boolean} [denormalizeAlpha]
140
- * @returns {vec4}
141
- */
142
- vec4.toRGBA = function(out, linear, denormalizeAlpha)
143
- {
144
- out[0] = num.colorFromLinear(linear[0]);
145
- out[1] = num.colorFromLinear(linear[1]);
146
- out[2] = num.colorFromLinear(linear[2]);
147
- out[3] = denormalizeAlpha ? num.colorFromLinear(linear[3]) : linear[3];
148
- return out;
149
- };
150
-
151
- /**
152
- * Converts to linear color from rgba
153
- * @param {vec4} out
154
- * @param {vec4} rgba
155
- * @param {boolean} [denormalizedAlpha]
156
- * @returns {vec4} out
157
- */
158
- vec4.fromRGBA = function(out, rgba, denormalizedAlpha)
159
- {
160
- out[0] = num.linearFromColor(rgba[0]);
161
- out[1] = num.linearFromColor(rgba[1]);
162
- out[2] = num.linearFromColor(rgba[2]);
163
- out[3] = denormalizedAlpha ? num.linearFromColor(rgba[3]) : rgba[3];
164
- return out;
165
- };
166
-
167
- /**
168
- * Converts to linear color from rgb
169
- * @param {vec4} out
170
- * @param {vec3} rgb
171
- * @param {Number} [linearAlpha=1]
172
- * @returns {vec4} out
173
- */
174
- vec4.fromRGB = function(out, rgb, linearAlpha = 1)
175
- {
176
- out[0] = num.linearFromColor(rgb[0]);
177
- out[1] = num.linearFromColor(rgb[1]);
178
- out[2] = num.linearFromColor(rgb[2]);
179
- out[3] = linearAlpha;
180
- return out;
181
- };
182
-
183
- /**
184
- * Gets hex value with alpha from linear color
185
- * @param {vec4} linear
186
- * @returns {string} hex value
187
- */
188
- vec4.toHexA = function(linear)
189
- {
190
- return "#" +
191
- num.hexFromLinear(linear[0]) +
192
- num.hexFromLinear(linear[1]) +
193
- num.hexFromLinear(linear[2]) +
194
- num.hexFromLinear(linear[3]);
195
- };
196
-
197
- /**
198
- * Gets hex value from linear color
199
- * @param {vec4} linear
200
- * @returns {string} hex value
201
- */
202
- vec4.toHex = function(linear)
203
- {
204
- return "#" +
205
- num.hexFromLinear(linear[0]) +
206
- num.hexFromLinear(linear[1]) +
207
- num.hexFromLinear(linear[2]);
208
- };
209
-
210
- /**
211
- * Gets linear color from hex or hex with alpha
212
- * @param {vec4} out
213
- * @param {String} hex
214
- * @param {Number} [defaultAlpha=1]
215
- * @return {vec4}
216
- */
217
- vec4.fromHex = function(out, hex, defaultAlpha = 1)
218
- {
219
- // Set empty color in case of error
220
- out[0] = 0;
221
- out[1] = 0;
222
- out[2] = 0;
223
- out[3] = defaultAlpha;
224
-
225
- if (typeof hex !== "string" || !/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.test(hex))
226
- {
227
- throw new TypeError("Invalid hex");
228
- }
229
-
230
- // RGB hex
231
- if (hex.length === 4 || hex.length === 5)
232
- {
233
- out[0] = ("0x" + hex[1] + hex[1]) / 255;
234
- out[1] = ("0x" + hex[2] + hex[2]) / 255;
235
- out[2] = ("0x" + hex[3] + hex[3]) / 255;
236
- if (hex.length === 5) out[3] = ("0x" + hex[4] + hex[4]) / 255;
237
- }
238
- // RGB hex
239
- else if (hex.length === 7 || hex.length === 9)
240
- {
241
- out[0] = ("0x" + hex[1] + hex[2]) / 255;
242
- out[1] = ("0x" + hex[3] + hex[4]) / 255;
243
- out[2] = ("0x" + hex[5] + hex[6]) / 255;
244
- if (hex.length === 9) out[3] = ("0x" + hex[7] + hex[8]) / 255;
245
- }
246
- return out;
247
- };
248
-
249
- /**
250
- * Sets a vec4 from an array with an optional offset
251
- * @param {vec3} out
252
- * @param {TypedArray|Array} array
253
- * @param {Number} [offset=0]
254
- * @returns {vec3} out
255
- */
256
- vec4.fromArray = function(out, array, offset=0)
257
- {
258
- out[0] = array[offset];
259
- out[1] = array[offset + 1];
260
- out[2] = array[offset + 2];
261
- out[3] = array[offset + 3];
262
- return out;
263
- };
264
-
265
- vec4.setArray = vec4.fromArray;
266
-
267
- /**
268
- * Writes a vec4 to an array at an optional offset.
269
- * @param {vec4} a
270
- * @param {TypedArray|Array} array
271
- * @param {Number} [offset=0]
272
- * @returns {vec4} a
273
- */
274
- vec4.toArray = function(a, array, offset=0)
275
- {
276
- array[offset] = a[0];
277
- array[offset + 1] = a[1];
278
- array[offset + 2] = a[2];
279
- array[offset + 3] = a[3];
280
- return a;
281
- };
282
-
283
-
284
- export { vec4 };
285
-
286
- export const {
287
- add,
288
- ceil,
289
- clone,
290
- copy,
291
- create,
292
- cross,
293
- dist,
294
- distance,
295
- div,
296
- divide,
297
- dot,
298
- equals,
299
- exactEquals,
300
- floor,
301
- forEach,
302
- fromValues,
303
- inverse,
304
- len,
305
- length,
306
- lerp,
307
- max,
308
- min,
309
- mul,
310
- multiply,
311
- negate,
312
- normalize,
313
- random,
314
- round,
315
- scale,
316
- scaleAndAdd,
317
- set,
318
- sqrDist,
319
- sqrLen,
320
- squaredDistance,
321
- squaredLength,
322
- str,
323
- sub,
324
- subtract,
325
- transformMat4,
326
- transformQuat,
327
- zero,
328
- createLinear,
329
- alloc,
330
- unalloc,
331
- ZERO,
332
- addScalar,
333
- isEmpty,
334
- divideScalar,
335
- multiplyScalar,
336
- setScalar,
337
- subtractScalar,
338
- toRGBA,
339
- fromRGBA,
340
- fromRGB,
341
- toHexA,
342
- toHex,
343
- fromHex,
344
- fromArray,
345
- setArray,
346
- toArray
347
- } = vec4;
1
+ import * as glVec4 from "gl-matrix/esm/vec4.js";
2
+ import { num } from "./num.js";
3
+ import { pool } from "./pool.js";
4
+
5
+ const vec4 = { ...glVec4 };
6
+
7
+ /**
8
+ * Vector 4
9
+ * @typedef {Float32Array} vec4
10
+ */
11
+
12
+
13
+ /**
14
+ * Allocates a pooled vec4
15
+ * @returns {Float32Array|vec4}
16
+ */
17
+ vec4.alloc = function()
18
+ {
19
+ return pool.allocF32(4);
20
+ };
21
+
22
+ /**
23
+ * Unallocates a pooled vec4
24
+ * @param {vec4|Float32Array} a
25
+ */
26
+ vec4.unalloc = function(a)
27
+ {
28
+ pool.freeType(a);
29
+ };
30
+
31
+ vec4.ZERO = vec4.fromValues(0, 0, 0, 0);
32
+
33
+ /**
34
+ * Creates a linear color vec4 with opaque alpha
35
+ * @returns {vec4}
36
+ */
37
+ vec4.createLinear = function()
38
+ {
39
+ const out = vec4.create();
40
+ out[3] = 1;
41
+ return out;
42
+ };
43
+
44
+ /**
45
+ * Adds a scalar to a vec4
46
+ *
47
+ * @param {vec4} out
48
+ * @param {vec4} a
49
+ * @param {Number} s
50
+ * @returns {vec4} out
51
+ */
52
+ vec4.addScalar = function(out, a, s)
53
+ {
54
+ out[0] = a[0] + s;
55
+ out[1] = a[1] + s;
56
+ out[2] = a[2] + s;
57
+ out[3] = a[3] + s;
58
+ return out;
59
+ };
60
+
61
+ /**
62
+ * Checks if all elements are 0
63
+ * @param {vec4} a
64
+ * @returns {boolean}
65
+ */
66
+ vec4.isEmpty = function(a)
67
+ {
68
+ return a[0] === 0 && a[1] === 0 && a[2] === 0 && a[3] === 0;
69
+ };
70
+
71
+ /**
72
+ * Divides a vec4 by a scalar
73
+ *
74
+ * @param {vec4} out
75
+ * @param {vec4} a
76
+ * @param {Number} s
77
+ * @returns {vec4} out
78
+ */
79
+ vec4.divideScalar = function(out, a, s)
80
+ {
81
+ return vec4.multiplyScalar(out, a, 1 / s);
82
+ };
83
+
84
+
85
+ /**
86
+ * Multiplies a vec4 by a scalar
87
+ *
88
+ * @param {vec4} out
89
+ * @param {vec4} a
90
+ * @param {Number} s
91
+ * @returns {vec4} out
92
+ */
93
+ vec4.multiplyScalar = function(out, a, s)
94
+ {
95
+ out[0] = a[0] * s;
96
+ out[1] = a[1] * s;
97
+ out[2] = a[2] * s;
98
+ out[3] = a[3] * s;
99
+ return out;
100
+ };
101
+
102
+ /**
103
+ * Sets a vec4 from a scalar
104
+ *
105
+ * @param {vec4} out
106
+ * @param {Number} s
107
+ * @returns {vec4} out
108
+ */
109
+ vec4.setScalar = function(out, s)
110
+ {
111
+ out[0] = s;
112
+ out[1] = s;
113
+ out[2] = s;
114
+ out[3] = s;
115
+ return out;
116
+ };
117
+
118
+ /**
119
+ * Subtracts a scalar from a vec4
120
+ *
121
+ * @param {vec4} out
122
+ * @param {vec4} a
123
+ * @param {Number} s
124
+ * @returns {vec4} out
125
+ */
126
+ vec4.subtractScalar = function(out, a, s)
127
+ {
128
+ out[0] = a[0] - s;
129
+ out[1] = a[1] - s;
130
+ out[2] = a[2] - s;
131
+ out[3] = a[3] - s;
132
+ return out;
133
+ };
134
+
135
+ /**
136
+ * Converts from linear color to rgba
137
+ * @param {vec4} out
138
+ * @param {vec4} linear
139
+ * @param {boolean} [denormalizeAlpha]
140
+ * @returns {vec4}
141
+ */
142
+ vec4.toRGBA = function(out, linear, denormalizeAlpha)
143
+ {
144
+ out[0] = num.colorFromLinear(linear[0]);
145
+ out[1] = num.colorFromLinear(linear[1]);
146
+ out[2] = num.colorFromLinear(linear[2]);
147
+ out[3] = denormalizeAlpha ? num.colorFromLinear(linear[3]) : linear[3];
148
+ return out;
149
+ };
150
+
151
+ /**
152
+ * Converts to linear color from rgba
153
+ * @param {vec4} out
154
+ * @param {vec4} rgba
155
+ * @param {boolean} [denormalizedAlpha]
156
+ * @returns {vec4} out
157
+ */
158
+ vec4.fromRGBA = function(out, rgba, denormalizedAlpha)
159
+ {
160
+ out[0] = num.linearFromColor(rgba[0]);
161
+ out[1] = num.linearFromColor(rgba[1]);
162
+ out[2] = num.linearFromColor(rgba[2]);
163
+ out[3] = denormalizedAlpha ? num.linearFromColor(rgba[3]) : rgba[3];
164
+ return out;
165
+ };
166
+
167
+ /**
168
+ * Converts to linear color from rgb
169
+ * @param {vec4} out
170
+ * @param {vec3} rgb
171
+ * @param {Number} [linearAlpha=1]
172
+ * @returns {vec4} out
173
+ */
174
+ vec4.fromRGB = function(out, rgb, linearAlpha = 1)
175
+ {
176
+ out[0] = num.linearFromColor(rgb[0]);
177
+ out[1] = num.linearFromColor(rgb[1]);
178
+ out[2] = num.linearFromColor(rgb[2]);
179
+ out[3] = linearAlpha;
180
+ return out;
181
+ };
182
+
183
+ /**
184
+ * Gets hex value with alpha from linear color
185
+ * @param {vec4} linear
186
+ * @returns {string} hex value
187
+ */
188
+ vec4.toHexA = function(linear)
189
+ {
190
+ return "#" +
191
+ num.hexFromLinear(linear[0]) +
192
+ num.hexFromLinear(linear[1]) +
193
+ num.hexFromLinear(linear[2]) +
194
+ num.hexFromLinear(linear[3]);
195
+ };
196
+
197
+ /**
198
+ * Gets hex value from linear color
199
+ * @param {vec4} linear
200
+ * @returns {string} hex value
201
+ */
202
+ vec4.toHex = function(linear)
203
+ {
204
+ return "#" +
205
+ num.hexFromLinear(linear[0]) +
206
+ num.hexFromLinear(linear[1]) +
207
+ num.hexFromLinear(linear[2]);
208
+ };
209
+
210
+ /**
211
+ * Gets linear color from hex or hex with alpha
212
+ * @param {vec4} out
213
+ * @param {String} hex
214
+ * @param {Number} [defaultAlpha=1]
215
+ * @return {vec4}
216
+ */
217
+ vec4.fromHex = function(out, hex, defaultAlpha = 1)
218
+ {
219
+ // Set empty color in case of error
220
+ out[0] = 0;
221
+ out[1] = 0;
222
+ out[2] = 0;
223
+ out[3] = defaultAlpha;
224
+
225
+ if (typeof hex !== "string" || !/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.test(hex))
226
+ {
227
+ throw new TypeError("Invalid hex");
228
+ }
229
+
230
+ // RGB hex
231
+ if (hex.length === 4 || hex.length === 5)
232
+ {
233
+ out[0] = ("0x" + hex[1] + hex[1]) / 255;
234
+ out[1] = ("0x" + hex[2] + hex[2]) / 255;
235
+ out[2] = ("0x" + hex[3] + hex[3]) / 255;
236
+ if (hex.length === 5) out[3] = ("0x" + hex[4] + hex[4]) / 255;
237
+ }
238
+ // RGB hex
239
+ else if (hex.length === 7 || hex.length === 9)
240
+ {
241
+ out[0] = ("0x" + hex[1] + hex[2]) / 255;
242
+ out[1] = ("0x" + hex[3] + hex[4]) / 255;
243
+ out[2] = ("0x" + hex[5] + hex[6]) / 255;
244
+ if (hex.length === 9) out[3] = ("0x" + hex[7] + hex[8]) / 255;
245
+ }
246
+ return out;
247
+ };
248
+
249
+ /**
250
+ * Sets a vec4 from an array with an optional offset
251
+ * @param {vec3} out
252
+ * @param {TypedArray|Array} array
253
+ * @param {Number} [offset=0]
254
+ * @returns {vec3} out
255
+ */
256
+ vec4.fromArray = function(out, array, offset=0)
257
+ {
258
+ out[0] = array[offset];
259
+ out[1] = array[offset + 1];
260
+ out[2] = array[offset + 2];
261
+ out[3] = array[offset + 3];
262
+ return out;
263
+ };
264
+
265
+ vec4.setArray = vec4.fromArray;
266
+
267
+ /**
268
+ * Writes a vec4 to an array at an optional offset.
269
+ * @param {vec4} a
270
+ * @param {TypedArray|Array} array
271
+ * @param {Number} [offset=0]
272
+ * @returns {vec4} a
273
+ */
274
+ vec4.toArray = function(a, array, offset=0)
275
+ {
276
+ array[offset] = a[0];
277
+ array[offset + 1] = a[1];
278
+ array[offset + 2] = a[2];
279
+ array[offset + 3] = a[3];
280
+ return a;
281
+ };
282
+
283
+
284
+ export { vec4 };
285
+
286
+ export const {
287
+ add,
288
+ ceil,
289
+ clone,
290
+ copy,
291
+ create,
292
+ cross,
293
+ dist,
294
+ distance,
295
+ div,
296
+ divide,
297
+ dot,
298
+ equals,
299
+ exactEquals,
300
+ floor,
301
+ forEach,
302
+ fromValues,
303
+ inverse,
304
+ len,
305
+ length,
306
+ lerp,
307
+ max,
308
+ min,
309
+ mul,
310
+ multiply,
311
+ negate,
312
+ normalize,
313
+ random,
314
+ round,
315
+ scale,
316
+ scaleAndAdd,
317
+ set,
318
+ sqrDist,
319
+ sqrLen,
320
+ squaredDistance,
321
+ squaredLength,
322
+ str,
323
+ sub,
324
+ subtract,
325
+ transformMat4,
326
+ transformQuat,
327
+ zero,
328
+ createLinear,
329
+ alloc,
330
+ unalloc,
331
+ ZERO,
332
+ addScalar,
333
+ isEmpty,
334
+ divideScalar,
335
+ multiplyScalar,
336
+ setScalar,
337
+ subtractScalar,
338
+ toRGBA,
339
+ fromRGBA,
340
+ fromRGB,
341
+ toHexA,
342
+ toHex,
343
+ fromHex,
344
+ fromArray,
345
+ setArray,
346
+ toArray
347
+ } = vec4;