@carbonenginejs/runtime-utils 0.1.0
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.
- package/LICENSE +21 -0
- package/NOTICE +23 -0
- package/README.md +56 -0
- package/THIRD-PARTY-NOTICES.md +38 -0
- package/docs/README.md +81 -0
- package/docs/architecture.md +101 -0
- package/docs/concepts/foundation-consolidation.md +86 -0
- package/docs/const-kb.md +92 -0
- package/docs/core-types/DECORATOR-TODOS.md +25 -0
- package/docs/core-types/README.md +203 -0
- package/docs/reference/api.md +70 -0
- package/docs/reference/classes/README.md +115 -0
- package/package.json +132 -0
- package/src/arrays.js +5 -0
- package/src/audio/audioFormats.js +34 -0
- package/src/audio/index.js +1 -0
- package/src/box3.js +1385 -0
- package/src/bytes.js +56 -0
- package/src/compression.js +56 -0
- package/src/constants/index.js +6 -0
- package/src/constants.js +15 -0
- package/src/curve.js +419 -0
- package/src/d3d/dxgiFormats.js +46 -0
- package/src/d3d/index.js +2 -0
- package/src/d3d/primitiveTopology.js +11 -0
- package/src/document/CjsCarbonDocument.js +212 -0
- package/src/document/CjsClassRegistry.js +373 -0
- package/src/document/CjsDocumentDehydrator.js +142 -0
- package/src/document/CjsDocumentHydrator.js +156 -0
- package/src/document/CjsStructRegistry.js +348 -0
- package/src/document/hydrationAdapter.js +129 -0
- package/src/document/index.js +6 -0
- package/src/geometry/box.js +137 -0
- package/src/geometry/cylinder.js +244 -0
- package/src/geometry/helpers/LICENSE +15 -0
- package/src/geometry/helpers/earcut.js +766 -0
- package/src/geometry/helpers/misc.js +103 -0
- package/src/geometry/index.js +8 -0
- package/src/geometry/json.js +165 -0
- package/src/geometry/lathe.js +172 -0
- package/src/geometry/octahedron.js +0 -0
- package/src/geometry/plane.js +81 -0
- package/src/geometry/shape.js +95 -0
- package/src/geometry/sphere.js +123 -0
- package/src/geometry/torus.js +96 -0
- package/src/graphics/colorSpaces.js +22 -0
- package/src/graphics/index.js +4 -0
- package/src/graphics/pixelFormats.js +158 -0
- package/src/graphics/textureDimensions.js +22 -0
- package/src/graphics/trinityEnums.js +87 -0
- package/src/index.js +58 -0
- package/src/is.js +524 -0
- package/src/json.js +23 -0
- package/src/lifecycle/CjsLifecycleState.js +77 -0
- package/src/lifecycle/index.js +1 -0
- package/src/lne3.js +497 -0
- package/src/lookup.js +48 -0
- package/src/mat3.js +131 -0
- package/src/mat4.js +699 -0
- package/src/math/index.js +25 -0
- package/src/math/scalar.js +63 -0
- package/src/media/index.js +1 -0
- package/src/media/mediaTypes.js +50 -0
- package/src/mesh.js +394 -0
- package/src/model/CjsEventEmitter.js +333 -0
- package/src/model/CjsModel.js +1544 -0
- package/src/model/CjsModelState.js +72 -0
- package/src/model/index.js +4 -0
- package/src/model/sourceRecordUtils.js +54 -0
- package/src/noise.js +310 -0
- package/src/num.js +827 -0
- package/src/path.js +21 -0
- package/src/pln.js +762 -0
- package/src/pool.js +160 -0
- package/src/quat.js +144 -0
- package/src/ray3.js +1085 -0
- package/src/renderContext/formats.js +145 -0
- package/src/renderContext/index.js +5 -0
- package/src/renderContext/presentation.js +125 -0
- package/src/renderContext/resources.js +27 -0
- package/src/renderContext/upscaling.js +22 -0
- package/src/renderContext/window.js +20 -0
- package/src/runtime/CjsRuntimeState.js +50 -0
- package/src/schema/CjsSchema.js +1009 -0
- package/src/schema/index.js +17 -0
- package/src/shader/index.js +1 -0
- package/src/shader/shaderStages.js +37 -0
- package/src/sph3.js +754 -0
- package/src/tangent.js +288 -0
- package/src/text.js +40 -0
- package/src/tri3.js +650 -0
- package/src/types/carbonTypes.js +635 -0
- package/src/types/index.js +2 -0
- package/src/utils.js +58 -0
- package/src/validation.js +46 -0
- package/src/vec2.js +229 -0
- package/src/vec3.js +1172 -0
- package/src/vec4.js +347 -0
- package/src/vertex.js +108 -0
- package/src/webgpu/index.js +1 -0
- package/src/webgpu/textureFormats.js +121 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isPlainObject } from "./is.js";
|
|
2
|
+
|
|
3
|
+
export { isPlainObject } from "./is.js";
|
|
4
|
+
|
|
5
|
+
/** Returns a plain object or throws a labelled TypeError. */
|
|
6
|
+
export function assertPlainObject(value, label = "value")
|
|
7
|
+
{
|
|
8
|
+
if (!isPlainObject(value))
|
|
9
|
+
{
|
|
10
|
+
throw new TypeError(`${label} must be a plain object.`);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Returns a trimmed non-empty string or throws a labelled TypeError. */
|
|
17
|
+
export function assertNonEmptyString(value, label = "value")
|
|
18
|
+
{
|
|
19
|
+
if (typeof value !== "string" || value.trim() === "")
|
|
20
|
+
{
|
|
21
|
+
throw new TypeError(`${label} must be a non-empty string.`);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return value.trim();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Normalizes and validates a non-negative safe-integer version. */
|
|
28
|
+
export function assertSupportedVersion(value, supportedVersions, label = "version")
|
|
29
|
+
{
|
|
30
|
+
const version = Number(value);
|
|
31
|
+
const supported = Array.from(supportedVersions, Number);
|
|
32
|
+
|
|
33
|
+
if (!Number.isSafeInteger(version) || version < 0)
|
|
34
|
+
{
|
|
35
|
+
throw new TypeError(`${label} must be a non-negative safe integer.`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (!supported.includes(version))
|
|
39
|
+
{
|
|
40
|
+
throw new RangeError(
|
|
41
|
+
`Unsupported ${label} ${JSON.stringify(value)}; expected one of ${supported.join(", ")}.`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return version;
|
|
46
|
+
}
|
package/src/vec2.js
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import * as glVec2 from "gl-matrix/esm/vec2.js";
|
|
2
|
+
import { pool } from "./pool.js";
|
|
3
|
+
|
|
4
|
+
const vec2 = { ...glVec2 };
|
|
5
|
+
|
|
6
|
+
export { vec2 };
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @returns {Float32Array}
|
|
11
|
+
*/
|
|
12
|
+
vec2.alloc = function()
|
|
13
|
+
{
|
|
14
|
+
return pool.allocF32(2);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
* @param a
|
|
20
|
+
*/
|
|
21
|
+
vec2.unalloc = function(a)
|
|
22
|
+
{
|
|
23
|
+
pool.freeType(a);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Adds a scalar to a vec2
|
|
28
|
+
*
|
|
29
|
+
* @param {vec2} out
|
|
30
|
+
* @param {vec2} a
|
|
31
|
+
* @param {Number} s
|
|
32
|
+
* @returns {vec2} out
|
|
33
|
+
*/
|
|
34
|
+
vec2.addScalar = function(out, a, s)
|
|
35
|
+
{
|
|
36
|
+
out[0] = a[0] + s;
|
|
37
|
+
out[1] = a[1] + s;
|
|
38
|
+
return out;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Checks if a vector2 is empty
|
|
43
|
+
* @param {vec2} a
|
|
44
|
+
* @returns {boolean}
|
|
45
|
+
*/
|
|
46
|
+
vec2.isEmpty = function(a)
|
|
47
|
+
{
|
|
48
|
+
return a[0] === 0 && a[1] === 0;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Divides a vec2 by a scalar
|
|
53
|
+
*
|
|
54
|
+
* @param {vec2} out
|
|
55
|
+
* @param {vec2} a
|
|
56
|
+
* @param {Number} s
|
|
57
|
+
* @returns {vec2} out
|
|
58
|
+
*/
|
|
59
|
+
vec2.divideScalar = function(out, a, s)
|
|
60
|
+
{
|
|
61
|
+
return vec2.multiplyScalar(out, a, 1 / s);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Multiplies a vec2 by a scalar
|
|
67
|
+
*
|
|
68
|
+
* @param {vec2} out
|
|
69
|
+
* @param {vec2} a
|
|
70
|
+
* @param {Number} s
|
|
71
|
+
* @returns {vec2} out
|
|
72
|
+
*/
|
|
73
|
+
vec2.multiplyScalar = function(out, a, s)
|
|
74
|
+
{
|
|
75
|
+
out[0] = a[0] * s;
|
|
76
|
+
out[1] = a[1] * s;
|
|
77
|
+
return out;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Sets a vec2 from a scalar
|
|
82
|
+
*
|
|
83
|
+
* @param {vec2} out
|
|
84
|
+
* @param {Number} s
|
|
85
|
+
* @returns {vec2} out
|
|
86
|
+
*/
|
|
87
|
+
vec2.setScalar = function(out, s)
|
|
88
|
+
{
|
|
89
|
+
out[0] = s;
|
|
90
|
+
out[1] = s;
|
|
91
|
+
return out;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Subtracts a scalar from a vec2
|
|
96
|
+
*
|
|
97
|
+
* @param {vec2} out
|
|
98
|
+
* @param {vec2} a
|
|
99
|
+
* @param {Number} s
|
|
100
|
+
* @returns {vec2} out
|
|
101
|
+
*/
|
|
102
|
+
vec2.subtractScalar = function(out, a, s)
|
|
103
|
+
{
|
|
104
|
+
out[0] = a[0] - s;
|
|
105
|
+
out[1] = a[1] - s;
|
|
106
|
+
return out;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Sets a vec2 from an array with an optional offset
|
|
111
|
+
* @param {vec3} out
|
|
112
|
+
* @param {TypedArray|Array} array
|
|
113
|
+
* @param {Number} [offset=0]
|
|
114
|
+
* @returns {vec3} out
|
|
115
|
+
*/
|
|
116
|
+
vec2.fromArray = function(out, array, offset=0)
|
|
117
|
+
{
|
|
118
|
+
out[0] = array[offset];
|
|
119
|
+
out[1] = array[offset + 1];
|
|
120
|
+
return out;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Gets mouse position from a mouse event
|
|
125
|
+
* @param {vec2} out
|
|
126
|
+
* @param {MouseEvent} event
|
|
127
|
+
* @returns {vec2} out - mouse coordinates
|
|
128
|
+
*/
|
|
129
|
+
vec2.mousePositionFromEvent = function(out, event)
|
|
130
|
+
{
|
|
131
|
+
out[0] = event.clientX;
|
|
132
|
+
out[1] = event.clientY;
|
|
133
|
+
return out;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Gets CSS position from an event
|
|
138
|
+
* @param {vec2} out
|
|
139
|
+
* @param {MouseEvent} event
|
|
140
|
+
* @param {HTMLElement} [element=element.target]
|
|
141
|
+
* @returns {vec2} out - css coordinates
|
|
142
|
+
*/
|
|
143
|
+
vec2.cssPositionFromEvent = function(out, event, element=event.target)
|
|
144
|
+
{
|
|
145
|
+
const rect = element.getBoundingClientRect();
|
|
146
|
+
out[0] = event.clientX - rect.left;
|
|
147
|
+
out[1] = event.clientY - rect.top;
|
|
148
|
+
return out;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Gets the pixel coordinates from an element event
|
|
153
|
+
* @param {vec2} out
|
|
154
|
+
* @param {MouseEvent} event
|
|
155
|
+
* @param {HTMLElement} [element=element.target]
|
|
156
|
+
* @returns {vec2} out - the pixel coordinates
|
|
157
|
+
*/
|
|
158
|
+
vec2.pixelPositionFromEvent = function(out, event, element=event.target)
|
|
159
|
+
{
|
|
160
|
+
const
|
|
161
|
+
rect = element.getBoundingClientRect(),
|
|
162
|
+
cssX = event.clientX - rect.left,
|
|
163
|
+
cssY = event.clientY - rect.top;
|
|
164
|
+
|
|
165
|
+
out[0] = cssX * element.width / element.clientWidth;
|
|
166
|
+
out[1] = element.height - cssY * element.height / element.clientHeight - 1;
|
|
167
|
+
return out;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
export const {
|
|
171
|
+
add,
|
|
172
|
+
angle,
|
|
173
|
+
ceil,
|
|
174
|
+
clone,
|
|
175
|
+
copy,
|
|
176
|
+
create,
|
|
177
|
+
cross,
|
|
178
|
+
dist,
|
|
179
|
+
distance,
|
|
180
|
+
div,
|
|
181
|
+
divide,
|
|
182
|
+
dot,
|
|
183
|
+
equals,
|
|
184
|
+
exactEquals,
|
|
185
|
+
floor,
|
|
186
|
+
forEach,
|
|
187
|
+
fromValues,
|
|
188
|
+
inverse,
|
|
189
|
+
len,
|
|
190
|
+
length,
|
|
191
|
+
lerp,
|
|
192
|
+
max,
|
|
193
|
+
min,
|
|
194
|
+
mul,
|
|
195
|
+
multiply,
|
|
196
|
+
negate,
|
|
197
|
+
normalize,
|
|
198
|
+
random,
|
|
199
|
+
rotate,
|
|
200
|
+
round,
|
|
201
|
+
scale,
|
|
202
|
+
scaleAndAdd,
|
|
203
|
+
set,
|
|
204
|
+
signedAngle,
|
|
205
|
+
sqrDist,
|
|
206
|
+
sqrLen,
|
|
207
|
+
squaredDistance,
|
|
208
|
+
squaredLength,
|
|
209
|
+
str,
|
|
210
|
+
sub,
|
|
211
|
+
subtract,
|
|
212
|
+
transformMat2,
|
|
213
|
+
transformMat2d,
|
|
214
|
+
transformMat3,
|
|
215
|
+
transformMat4,
|
|
216
|
+
zero,
|
|
217
|
+
alloc,
|
|
218
|
+
unalloc,
|
|
219
|
+
addScalar,
|
|
220
|
+
isEmpty,
|
|
221
|
+
divideScalar,
|
|
222
|
+
multiplyScalar,
|
|
223
|
+
setScalar,
|
|
224
|
+
subtractScalar,
|
|
225
|
+
fromArray,
|
|
226
|
+
mousePositionFromEvent,
|
|
227
|
+
cssPositionFromEvent,
|
|
228
|
+
pixelPositionFromEvent
|
|
229
|
+
} = vec2;
|