@kiberon-labs/behave-graph-scene 1.0.0 → 1.0.1
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/.turbo/turbo-build.log +7 -0
- package/LICENSE +6 -0
- package/README.md +13 -0
- package/dist/Abstractions/Drivers/DummyScene.d.ts +20 -0
- package/dist/Abstractions/Drivers/DummyScene.d.ts.map +1 -0
- package/dist/Abstractions/Drivers/DummyScene.js +58 -0
- package/dist/Abstractions/Drivers/DummyScene.js.map +1 -0
- package/dist/Abstractions/IScene.d.ts +16 -0
- package/dist/Abstractions/IScene.d.ts.map +1 -0
- package/dist/GLTFJson.d.ts +33 -0
- package/dist/GLTFJson.d.ts.map +1 -0
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts +23 -0
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/EaseSceneProperty.js +73 -0
- package/dist/Nodes/Actions/EaseSceneProperty.js.map +1 -0
- package/dist/Nodes/Actions/SetSceneProperty.d.ts +5 -0
- package/dist/Nodes/Actions/SetSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetSceneProperty.js +28 -0
- package/dist/Nodes/Actions/SetSceneProperty.js.map +1 -0
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts +5 -0
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts.map +1 -0
- package/dist/Nodes/Events/OnSceneNodeClick.js +39 -0
- package/dist/Nodes/Events/OnSceneNodeClick.js.map +1 -0
- package/dist/Nodes/Logic/ColorNodes.d.ts +19 -0
- package/dist/Nodes/Logic/ColorNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/ColorNodes.js +137 -0
- package/dist/Nodes/Logic/ColorNodes.js.map +1 -0
- package/dist/Nodes/Logic/EulerNodes.d.ts +18 -0
- package/dist/Nodes/Logic/EulerNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/EulerNodes.js +132 -0
- package/dist/Nodes/Logic/EulerNodes.js.map +1 -0
- package/dist/Nodes/Logic/Mat3Nodes.d.ts +28 -0
- package/dist/Nodes/Logic/Mat3Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Mat3Nodes.js +213 -0
- package/dist/Nodes/Logic/Mat3Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Mat4Nodes.d.ts +34 -0
- package/dist/Nodes/Logic/Mat4Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Mat4Nodes.js +267 -0
- package/dist/Nodes/Logic/Mat4Nodes.js.map +1 -0
- package/dist/Nodes/Logic/QuatNodes.d.ts +24 -0
- package/dist/Nodes/Logic/QuatNodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/QuatNodes.js +173 -0
- package/dist/Nodes/Logic/QuatNodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec2Nodes.d.ts +18 -0
- package/dist/Nodes/Logic/Vec2Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec2Nodes.js +115 -0
- package/dist/Nodes/Logic/Vec2Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec3Nodes.d.ts +19 -0
- package/dist/Nodes/Logic/Vec3Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec3Nodes.js +137 -0
- package/dist/Nodes/Logic/Vec3Nodes.js.map +1 -0
- package/dist/Nodes/Logic/Vec4Nodes.d.ts +18 -0
- package/dist/Nodes/Logic/Vec4Nodes.d.ts.map +1 -0
- package/dist/Nodes/Logic/Vec4Nodes.js +132 -0
- package/dist/Nodes/Logic/Vec4Nodes.js.map +1 -0
- package/dist/Nodes/Logic/VecElements.d.ts +9 -0
- package/dist/Nodes/Logic/VecElements.d.ts.map +1 -0
- package/dist/Nodes/Logic/VecElements.js +22 -0
- package/dist/Nodes/Logic/VecElements.js.map +1 -0
- package/dist/Nodes/Queries/GetSceneProperty.d.ts +5 -0
- package/dist/Nodes/Queries/GetSceneProperty.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetSceneProperty.js +23 -0
- package/dist/Nodes/Queries/GetSceneProperty.js.map +1 -0
- package/dist/Values/ColorValue.d.ts +7 -0
- package/dist/Values/ColorValue.d.ts.map +1 -0
- package/dist/Values/ColorValue.js +20 -0
- package/dist/Values/ColorValue.js.map +1 -0
- package/dist/Values/EulerValue.d.ts +7 -0
- package/dist/Values/EulerValue.d.ts.map +1 -0
- package/dist/Values/EulerValue.js +20 -0
- package/dist/Values/EulerValue.js.map +1 -0
- package/dist/Values/Internal/Mat3.d.ts +43 -0
- package/dist/Values/Internal/Mat3.d.ts.map +1 -0
- package/dist/Values/Internal/Mat3.js +278 -0
- package/dist/Values/Internal/Mat3.js.map +1 -0
- package/dist/Values/Internal/Mat4.d.ts +53 -0
- package/dist/Values/Internal/Mat4.d.ts.map +1 -0
- package/dist/Values/Internal/Mat4.js +445 -0
- package/dist/Values/Internal/Mat4.js.map +1 -0
- package/dist/Values/Internal/Vec2.d.ts +25 -0
- package/dist/Values/Internal/Vec2.d.ts.map +1 -0
- package/dist/Values/Internal/Vec2.js +64 -0
- package/dist/Values/Internal/Vec2.js.map +1 -0
- package/dist/Values/Internal/Vec3.d.ts +38 -0
- package/dist/Values/Internal/Vec3.d.ts.map +1 -0
- package/dist/Values/Internal/Vec3.js +159 -0
- package/dist/Values/Internal/Vec3.js.map +1 -0
- package/dist/Values/Internal/Vec4.d.ts +49 -0
- package/dist/Values/Internal/Vec4.d.ts.map +1 -0
- package/dist/Values/Internal/Vec4.js +191 -0
- package/dist/Values/Internal/Vec4.js.map +1 -0
- package/dist/Values/Mat3Value.d.ts +7 -0
- package/dist/Values/Mat3Value.d.ts.map +1 -0
- package/dist/Values/Mat3Value.js +16 -0
- package/dist/Values/Mat3Value.js.map +1 -0
- package/dist/Values/Mat4Value.d.ts +7 -0
- package/dist/Values/Mat4Value.d.ts.map +1 -0
- package/dist/Values/Mat4Value.js +16 -0
- package/dist/Values/Mat4Value.js.map +1 -0
- package/dist/Values/QuatValue.d.ts +7 -0
- package/dist/Values/QuatValue.d.ts.map +1 -0
- package/dist/Values/QuatValue.js +21 -0
- package/dist/Values/QuatValue.js.map +1 -0
- package/dist/Values/Vec2Value.d.ts +7 -0
- package/dist/Values/Vec2Value.d.ts.map +1 -0
- package/dist/Values/Vec2Value.js +16 -0
- package/dist/Values/Vec2Value.js.map +1 -0
- package/dist/Values/Vec3Value.d.ts +7 -0
- package/dist/Values/Vec3Value.d.ts.map +1 -0
- package/dist/Values/Vec3Value.js +20 -0
- package/dist/Values/Vec3Value.js.map +1 -0
- package/dist/Values/Vec4Value.d.ts +7 -0
- package/dist/Values/Vec4Value.d.ts.map +1 -0
- package/dist/Values/Vec4Value.js +21 -0
- package/dist/Values/Vec4Value.js.map +1 -0
- package/dist/_virtual/rolldown_runtime.js +13 -0
- package/dist/buildScene.d.ts +74 -0
- package/dist/buildScene.d.ts.map +1 -0
- package/dist/buildScene.js +283 -0
- package/dist/buildScene.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +31 -0
- package/dist/registerSceneProfile.d.ts +10 -0
- package/dist/registerSceneProfile.d.ts.map +1 -0
- package/dist/registerSceneProfile.js +78 -0
- package/dist/registerSceneProfile.js.map +1 -0
- package/package.json +19 -9
- package/src/Nodes/Logic/QuatNodes.ts +11 -11
- package/tests/graphs/logic/Color.json +53 -53
- package/tests/graphs/logic/Euler.json +53 -53
- package/tests/graphs/logic/Quaternion.json +56 -56
- package/tests/graphs/logic/Vector2.json +50 -50
- package/tests/graphs/logic/Vector3.json +53 -53
- package/tests/graphs/logic/Vector4.json +56 -56
- package/tests/tsconfig.json +10 -10
- package/tsconfig.json +54 -54
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import "./Vec4.js";
|
|
2
|
+
import "./Mat4.js";
|
|
3
|
+
import { mat4ToMat3, quatToMat3 } from "./Mat3.js";
|
|
4
|
+
import { EPSILON, clamp, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
|
|
5
|
+
|
|
6
|
+
//#region src/Values/Internal/Vec3.ts
|
|
7
|
+
var Vec3 = class Vec3 {
|
|
8
|
+
x;
|
|
9
|
+
y;
|
|
10
|
+
z;
|
|
11
|
+
constructor(x = 0, y = 0, z = 0) {
|
|
12
|
+
this.x = x;
|
|
13
|
+
this.y = y;
|
|
14
|
+
this.z = z;
|
|
15
|
+
}
|
|
16
|
+
clone(result = new Vec3()) {
|
|
17
|
+
return result.set(this.x, this.y, this.z);
|
|
18
|
+
}
|
|
19
|
+
set(x, y, z) {
|
|
20
|
+
this.x = x;
|
|
21
|
+
this.y = y;
|
|
22
|
+
this.z = z;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function vec3Equals(a, b, tolerance = EPSILON) {
|
|
27
|
+
return equalsTolerance(a.x, b.x, tolerance) && equalsTolerance(a.y, b.y, tolerance) && equalsTolerance(a.z, b.z, tolerance);
|
|
28
|
+
}
|
|
29
|
+
function vec3Add(a, b, result = new Vec3()) {
|
|
30
|
+
return result.set(a.x + b.x, a.y + b.y, a.z + b.z);
|
|
31
|
+
}
|
|
32
|
+
function vec3Subtract(a, b, result = new Vec3()) {
|
|
33
|
+
return result.set(a.x - b.x, a.y - b.y, a.z - b.z);
|
|
34
|
+
}
|
|
35
|
+
function vec3MultiplyByScalar(a, b, result = new Vec3()) {
|
|
36
|
+
return result.set(a.x * b, a.y * b, a.z * b);
|
|
37
|
+
}
|
|
38
|
+
function vec3Negate(a, result = new Vec3()) {
|
|
39
|
+
return result.set(-a.x, -a.y, -a.z);
|
|
40
|
+
}
|
|
41
|
+
function vec3Length(a) {
|
|
42
|
+
return Math.sqrt(vec3Dot(a, a));
|
|
43
|
+
}
|
|
44
|
+
function vec3Normalize(a, result = new Vec3()) {
|
|
45
|
+
return vec3MultiplyByScalar(a, 1 / vec3Length(a), result);
|
|
46
|
+
}
|
|
47
|
+
function vec3Dot(a, b) {
|
|
48
|
+
return a.x * b.x + a.y * b.y + a.z * b.z;
|
|
49
|
+
}
|
|
50
|
+
function vec3Cross(a, b, result = new Vec3()) {
|
|
51
|
+
const ax = a.x;
|
|
52
|
+
const ay = a.y;
|
|
53
|
+
const az = a.z;
|
|
54
|
+
const bx = b.x;
|
|
55
|
+
const by = b.y;
|
|
56
|
+
const bz = b.z;
|
|
57
|
+
return result.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);
|
|
58
|
+
}
|
|
59
|
+
function vec3Mix(a, b, t, result = new Vec3()) {
|
|
60
|
+
const s = 1 - t;
|
|
61
|
+
return result.set(a.x * s + b.x * t, a.y * s + b.y * t, a.z * s + b.z * t);
|
|
62
|
+
}
|
|
63
|
+
function vec3FromArray(array, offset = 0, result = new Vec3()) {
|
|
64
|
+
return result.set(array[offset + 0], array[offset + 1], array[offset + 2]);
|
|
65
|
+
}
|
|
66
|
+
function vec3ToArray(a, array, offset = 0) {
|
|
67
|
+
array[offset + 0] = a.x;
|
|
68
|
+
array[offset + 1] = a.y;
|
|
69
|
+
array[offset + 2] = a.z;
|
|
70
|
+
}
|
|
71
|
+
function vec3ToString(a) {
|
|
72
|
+
return toSafeString([
|
|
73
|
+
a.x,
|
|
74
|
+
a.y,
|
|
75
|
+
a.z
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
function vec3Parse(text, result = new Vec3()) {
|
|
79
|
+
return vec3FromArray(parseSafeFloats(text), 0, result);
|
|
80
|
+
}
|
|
81
|
+
function hslToRGB(hsl, result = new Vec3()) {
|
|
82
|
+
function hue2rgb(p$1, q$1, t) {
|
|
83
|
+
if (t < 0) t += 1;
|
|
84
|
+
if (t > 1) t -= 1;
|
|
85
|
+
if (t < 1 / 6) return p$1 + (q$1 - p$1) * 6 * t;
|
|
86
|
+
if (t < 1 / 2) return q$1;
|
|
87
|
+
if (t < 2 / 3) return p$1 + (q$1 - p$1) * 6 * (2 / 3 - t);
|
|
88
|
+
return p$1;
|
|
89
|
+
}
|
|
90
|
+
const h = (hsl.x % 1 + 1) % 1;
|
|
91
|
+
const s = Math.min(Math.max(hsl.y, 0), 1);
|
|
92
|
+
const l = Math.min(Math.max(hsl.z, 0), 1);
|
|
93
|
+
if (s === 0) return result.set(1, 1, 1);
|
|
94
|
+
const p = l <= .5 ? l * (1 + s) : l + s - l * s;
|
|
95
|
+
const q = 2 * l - p;
|
|
96
|
+
return result.set(hue2rgb(q, p, h + 1 / 3), hue2rgb(q, p, h), hue2rgb(q, p, h - 1 / 3));
|
|
97
|
+
}
|
|
98
|
+
function rgbToHSL(rgb, result = new Vec3()) {
|
|
99
|
+
const r = rgb.x, g = rgb.y, b = rgb.z;
|
|
100
|
+
const max = Math.max(r, g, b);
|
|
101
|
+
const min = Math.min(r, g, b);
|
|
102
|
+
let hue = 0;
|
|
103
|
+
let saturation = 0;
|
|
104
|
+
const lightness = (min + max) / 2;
|
|
105
|
+
if (min === max) {
|
|
106
|
+
hue = 0;
|
|
107
|
+
saturation = 0;
|
|
108
|
+
} else {
|
|
109
|
+
const delta = max - min;
|
|
110
|
+
saturation = lightness <= .5 ? delta / (max + min) : delta / (2 - max - min);
|
|
111
|
+
switch (max) {
|
|
112
|
+
case r:
|
|
113
|
+
hue = (g - b) / delta + (g < b ? 6 : 0);
|
|
114
|
+
break;
|
|
115
|
+
case g:
|
|
116
|
+
hue = (b - r) / delta + 2;
|
|
117
|
+
break;
|
|
118
|
+
case b:
|
|
119
|
+
hue = (r - g) / delta + 4;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
hue /= 6;
|
|
123
|
+
}
|
|
124
|
+
return result.set(hue, saturation, lightness);
|
|
125
|
+
}
|
|
126
|
+
function hexToRGB(hex, result = new Vec3()) {
|
|
127
|
+
hex = Math.floor(hex);
|
|
128
|
+
return result.set((hex >> 16 & 255) / 255, (hex >> 8 & 255) / 255, (hex & 255) / 255);
|
|
129
|
+
}
|
|
130
|
+
function rgbToHex(rgb) {
|
|
131
|
+
return rgb.x * 255 << 16 ^ rgb.y * 255 << 8 ^ rgb.z * 255 << 0;
|
|
132
|
+
}
|
|
133
|
+
function mat3ToEuler(m, result = new Vec3()) {
|
|
134
|
+
const te = m.elements;
|
|
135
|
+
const m11 = te[0], m12 = te[3], m13 = te[6];
|
|
136
|
+
te[1];
|
|
137
|
+
const m22 = te[4], m23 = te[7];
|
|
138
|
+
te[2];
|
|
139
|
+
const m32 = te[5], m33 = te[8];
|
|
140
|
+
result.y = Math.asin(clamp(m13, -1, 1));
|
|
141
|
+
if (Math.abs(m13) < .9999999) {
|
|
142
|
+
result.x = Math.atan2(-m23, m33);
|
|
143
|
+
result.z = Math.atan2(-m12, m11);
|
|
144
|
+
} else {
|
|
145
|
+
result.x = Math.atan2(m32, m22);
|
|
146
|
+
result.z = 0;
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
function mat4ToEuler(m, result = new Vec3()) {
|
|
151
|
+
return mat3ToEuler(mat4ToMat3(m), result);
|
|
152
|
+
}
|
|
153
|
+
function quatToEuler(q, result = new Vec3()) {
|
|
154
|
+
return mat3ToEuler(quatToMat3(q), result);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
//#endregion
|
|
158
|
+
export { Vec3, hexToRGB, hslToRGB, mat3ToEuler, mat4ToEuler, quatToEuler, rgbToHSL, rgbToHex, vec3Add, vec3Cross, vec3Dot, vec3Equals, vec3FromArray, vec3Length, vec3Mix, vec3MultiplyByScalar, vec3Negate, vec3Normalize, vec3Parse, vec3Subtract, vec3ToArray, vec3ToString };
|
|
159
|
+
//# sourceMappingURL=Vec3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec3.js","names":["p","q"],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":["import {\n clamp,\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { Mat3, mat4ToMat3, quatToMat3 } from './Mat3.js';\nimport { Mat4 } from './Mat4.js';\nimport { Vec4 } from './Vec4.js';\n\nexport type Vec3JSON = number[];\n\nexport class Vec3 {\n public x: number;\n public y: number;\n public z: number;\n constructor(x: number = 0, y: number = 0, z: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n clone(result = new Vec3()): Vec3 {\n return result.set(this.x, this.y, this.z);\n }\n\n set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n}\n\nexport function vec3Equals(\n a: Vec3,\n b: Vec3,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance)\n );\n}\nexport function vec3Add(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z);\n}\nexport function vec3Subtract(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z);\n}\nexport function vec3MultiplyByScalar(\n a: Vec3,\n b: number,\n result = new Vec3()\n): Vec3 {\n return result.set(a.x * b, a.y * b, a.z * b);\n}\nexport function vec3Negate(a: Vec3, result = new Vec3()): Vec3 {\n return result.set(-a.x, -a.y, -a.z);\n}\nexport function vec3Length(a: Vec3): number {\n return Math.sqrt(vec3Dot(a, a));\n}\nexport function vec3Normalize(a: Vec3, result = new Vec3()): Vec3 {\n const invLength = 1 / vec3Length(a);\n return vec3MultiplyByScalar(a, invLength, result);\n}\nexport function vec3Dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\nexport function vec3Cross(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n const ax = a.x;\n const ay = a.y;\n const az = a.z;\n const bx = b.x;\n const by = b.y;\n const bz = b.z;\n\n return result.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);\n}\nexport function vec3Mix(\n a: Vec3,\n b: Vec3,\n t: number,\n result = new Vec3()\n): Vec3 {\n const s = 1 - t;\n return result.set(a.x * s + b.x * t, a.y * s + b.y * t, a.z * s + b.z * t);\n}\nexport function vec3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec3()\n): Vec3 {\n return result.set(array[offset + 0]!, array[offset + 1]!, array[offset + 2]!);\n}\nexport function vec3ToArray(\n a: Vec3,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n}\nexport function vec3ToString(a: Vec3): string {\n return toSafeString([a.x, a.y, a.z]);\n}\nexport function vec3Parse(text: string, result = new Vec3()): Vec3 {\n return vec3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function hslToRGB(hsl: Vec3, result = new Vec3()): Vec3 {\n function hue2rgb(p: number, q: number, t: number): number {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * 6 * (2 / 3 - t);\n }\n\n return p;\n }\n\n // h,s,l ranges are in 0.0 - 1.0\n const h = ((hsl.x % 1) + 1) % 1; // euclidean modulo\n const s = Math.min(Math.max(hsl.y, 0), 1);\n const l = Math.min(Math.max(hsl.z, 0), 1);\n\n if (s === 0) {\n return result.set(1, 1, 1);\n }\n\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n\n return result.set(\n hue2rgb(q, p, h + 1 / 3),\n hue2rgb(q, p, h),\n hue2rgb(q, p, h - 1 / 3)\n );\n}\n\nexport function rgbToHSL(rgb: Vec3, result = new Vec3()): Vec3 {\n // h,s,l ranges are in 0.0 - 1.0\n const r = rgb.x,\n g = rgb.y,\n b = rgb.z;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let hue = 0;\n let saturation = 0;\n const lightness = (min + max) / 2;\n\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n\n saturation =\n lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n hue /= 6;\n }\n\n return result.set(hue, saturation, lightness);\n}\n\nexport function hexToRGB(hex: number, result = new Vec3()): Vec3 {\n hex = Math.floor(hex);\n return result.set(\n ((hex >> 16) & 255) / 255,\n ((hex >> 8) & 255) / 255,\n (hex & 255) / 255\n );\n}\n\nexport function rgbToHex(rgb: Vec3): number {\n return ((rgb.x * 255) << 16) ^ ((rgb.y * 255) << 8) ^ ((rgb.z * 255) << 0);\n}\n\n// from three.js\nexport function mat3ToEuler(m: Mat3, result = new Vec3()): Vec3 {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const te = m.elements;\n const m11 = te[0],\n m12 = te[3],\n m13 = te[6];\n const m21 = te[1],\n m22 = te[4],\n m23 = te[7];\n const m31 = te[2],\n m32 = te[5],\n m33 = te[8];\n\n result.y = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.9999999) {\n result.x = Math.atan2(-m23, m33);\n result.z = Math.atan2(-m12, m11);\n } else {\n result.x = Math.atan2(m32, m22);\n result.z = 0;\n }\n\n return result;\n}\n\n// from three.js\nexport function mat4ToEuler(m: Mat4, result = new Vec3()): Vec3 {\n return mat3ToEuler(mat4ToMat3(m), result);\n}\n\nexport function quatToEuler(q: Vec4, result = new Vec3()): Vec3 {\n return mat3ToEuler(quatToMat3(q), result);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Vec3 } from "./Vec3.js";
|
|
2
|
+
import { Mat4 } from "./Mat4.js";
|
|
3
|
+
import { Mat3 } from "./Mat3.js";
|
|
4
|
+
|
|
5
|
+
//#region src/Values/Internal/Vec4.d.ts
|
|
6
|
+
type Vec4JSON = number[];
|
|
7
|
+
declare class Vec4 {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
z: number;
|
|
11
|
+
w: number;
|
|
12
|
+
constructor(x?: number, y?: number, z?: number, w?: number);
|
|
13
|
+
clone(result?: Vec4): Vec4;
|
|
14
|
+
set(x: number, y: number, z: number, w: number): this;
|
|
15
|
+
}
|
|
16
|
+
declare function vec4Equals(a: Vec4, b: Vec4, tolerance?: number): boolean;
|
|
17
|
+
declare function vec4Add(a: Vec4, b: Vec4, result?: Vec4): Vec4;
|
|
18
|
+
declare function vec4Subtract(a: Vec4, b: Vec4, result?: Vec4): Vec4;
|
|
19
|
+
declare function vec4MultiplyByScalar(a: Vec4, b: number, result?: Vec4): Vec4;
|
|
20
|
+
declare function vec4Negate(a: Vec4, result?: Vec4): Vec4;
|
|
21
|
+
declare function vec4Length(a: Vec4): number;
|
|
22
|
+
declare function vec4Normalize(a: Vec4, result?: Vec4): Vec4;
|
|
23
|
+
declare function vec4Dot(a: Vec4, b: Vec4): number;
|
|
24
|
+
declare function vec4Mix(a: Vec4, b: Vec4, t: number, result?: Vec4): Vec4;
|
|
25
|
+
declare function vec4FromArray(array: Float32Array | number[], offset?: number, result?: Vec4): Vec4;
|
|
26
|
+
declare function vec4ToArray(a: Vec4, array: Float32Array | number[], offset?: number): void;
|
|
27
|
+
declare function vec4ToString(a: Vec4): string;
|
|
28
|
+
declare function vec4Parse(text: string, result?: Vec4): Vec4;
|
|
29
|
+
declare function quatConjugate(a: Vec4, result?: Vec4): Vec4;
|
|
30
|
+
declare function quatMultiply(a: Vec4, b: Vec4, result?: Vec4): Vec4;
|
|
31
|
+
declare function quatSlerp(a: Vec4, b: Vec4, t: number, result?: Vec4): Vec4;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate the exponential of a unit quaternion.
|
|
34
|
+
*
|
|
35
|
+
* @param {quat} out the receiving quaternion
|
|
36
|
+
* @param {ReadonlyQuat} a quat to calculate the exponential of
|
|
37
|
+
* @returns {quat} out
|
|
38
|
+
*/
|
|
39
|
+
declare function quatExp(a: Vec4, result?: Vec4): Vec4;
|
|
40
|
+
declare function quatLn(a: Vec4, result?: Vec4): Vec4;
|
|
41
|
+
declare function quatPow(a: Vec4, b: number, result?: Vec4): Vec4;
|
|
42
|
+
declare function eulerToQuat(euler: Vec3, result?: Vec4): Vec4;
|
|
43
|
+
declare function angleAxisToQuat(angle: number, axis: Vec3, result?: Vec4): Vec4;
|
|
44
|
+
declare function quatToAngleAxis(q: Vec4, result?: Vec3): [angle: number, axis: Vec3];
|
|
45
|
+
declare function mat4ToQuat(m: Mat4, result?: Vec4): Vec4;
|
|
46
|
+
declare function mat3ToQuat(m: Mat3, result?: Vec4): Vec4;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { Vec4, Vec4JSON, angleAxisToQuat, eulerToQuat, mat3ToQuat, mat4ToQuat, quatConjugate, quatExp, quatLn, quatMultiply, quatPow, quatSlerp, quatToAngleAxis, vec4Add, vec4Dot, vec4Equals, vec4FromArray, vec4Length, vec4Mix, vec4MultiplyByScalar, vec4Negate, vec4Normalize, vec4Parse, vec4Subtract, vec4ToArray, vec4ToString };
|
|
49
|
+
//# sourceMappingURL=Vec4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec4.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import "./Mat4.js";
|
|
2
|
+
import { mat4ToMat3 } from "./Mat3.js";
|
|
3
|
+
import { Vec3 } from "./Vec3.js";
|
|
4
|
+
import { EPSILON, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
|
|
5
|
+
|
|
6
|
+
//#region src/Values/Internal/Vec4.ts
|
|
7
|
+
var Vec4 = class Vec4 {
|
|
8
|
+
x;
|
|
9
|
+
y;
|
|
10
|
+
z;
|
|
11
|
+
w;
|
|
12
|
+
constructor(x = 0, y = 0, z = 0, w = 0) {
|
|
13
|
+
this.x = x;
|
|
14
|
+
this.y = y;
|
|
15
|
+
this.z = z;
|
|
16
|
+
this.w = w;
|
|
17
|
+
}
|
|
18
|
+
clone(result = new Vec4()) {
|
|
19
|
+
return result.set(this.x, this.y, this.z, this.w);
|
|
20
|
+
}
|
|
21
|
+
set(x, y, z, w) {
|
|
22
|
+
this.x = x;
|
|
23
|
+
this.y = y;
|
|
24
|
+
this.z = z;
|
|
25
|
+
this.w = w;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
function vec4Equals(a, b, tolerance = EPSILON) {
|
|
30
|
+
return equalsTolerance(a.x, b.x, tolerance) && equalsTolerance(a.y, b.y, tolerance) && equalsTolerance(a.z, b.z, tolerance) && equalsTolerance(a.w, b.w, tolerance);
|
|
31
|
+
}
|
|
32
|
+
function vec4Add(a, b, result = new Vec4()) {
|
|
33
|
+
return result.set(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);
|
|
34
|
+
}
|
|
35
|
+
function vec4Subtract(a, b, result = new Vec4()) {
|
|
36
|
+
return result.set(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);
|
|
37
|
+
}
|
|
38
|
+
function vec4MultiplyByScalar(a, b, result = new Vec4()) {
|
|
39
|
+
return result.set(a.x * b, a.y * b, a.z * b, a.w * b);
|
|
40
|
+
}
|
|
41
|
+
function vec4Negate(a, result = new Vec4()) {
|
|
42
|
+
return result.set(-a.x, -a.y, -a.z, -a.w);
|
|
43
|
+
}
|
|
44
|
+
function vec4Length(a) {
|
|
45
|
+
return Math.sqrt(vec4Dot(a, a));
|
|
46
|
+
}
|
|
47
|
+
function vec4Normalize(a, result = new Vec4()) {
|
|
48
|
+
return vec4MultiplyByScalar(a, 1 / vec4Length(a), result);
|
|
49
|
+
}
|
|
50
|
+
function vec4Dot(a, b) {
|
|
51
|
+
return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
|
|
52
|
+
}
|
|
53
|
+
function vec4Mix(a, b, t, result = new Vec4()) {
|
|
54
|
+
const s = 1 - t;
|
|
55
|
+
return result.set(a.x * s + b.x * t, a.y * s + b.y * t, a.z * s + b.z * t, a.w * s + b.w * t);
|
|
56
|
+
}
|
|
57
|
+
function vec4FromArray(array, offset = 0, result = new Vec4()) {
|
|
58
|
+
return result.set(array[offset + 0], array[offset + 1], array[offset + 2], array[offset + 3]);
|
|
59
|
+
}
|
|
60
|
+
function vec4ToArray(a, array, offset = 0) {
|
|
61
|
+
array[offset + 0] = a.x;
|
|
62
|
+
array[offset + 1] = a.y;
|
|
63
|
+
array[offset + 2] = a.z;
|
|
64
|
+
array[offset + 3] = a.w;
|
|
65
|
+
}
|
|
66
|
+
function vec4ToString(a) {
|
|
67
|
+
return toSafeString([
|
|
68
|
+
a.x,
|
|
69
|
+
a.y,
|
|
70
|
+
a.z,
|
|
71
|
+
a.w
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
function vec4Parse(text, result = new Vec4()) {
|
|
75
|
+
return vec4FromArray(parseSafeFloats(text), 0, result);
|
|
76
|
+
}
|
|
77
|
+
function quatConjugate(a, result = new Vec4()) {
|
|
78
|
+
return result.set(-a.x, -a.y, -a.z, a.w);
|
|
79
|
+
}
|
|
80
|
+
function quatMultiply(a, b, result = new Vec4()) {
|
|
81
|
+
const qax = a.x;
|
|
82
|
+
const qay = a.y;
|
|
83
|
+
const qaz = a.z;
|
|
84
|
+
const qaw = a.w;
|
|
85
|
+
const qbx = b.x;
|
|
86
|
+
const qby = b.y;
|
|
87
|
+
const qbz = b.z;
|
|
88
|
+
const qbw = b.w;
|
|
89
|
+
return result.set(qax * qbw + qaw * qbx + qay * qbz - qaz * qby, qay * qbw + qaw * qby + qaz * qbx - qax * qbz, qaz * qbw + qaw * qbz + qax * qby - qay * qbx, qaw * qbw - qax * qbx - qay * qby - qaz * qbz);
|
|
90
|
+
}
|
|
91
|
+
function quatSlerp(a, b, t, result = new Vec4()) {
|
|
92
|
+
if (t <= 0) return a.clone(result);
|
|
93
|
+
if (t >= 1) return b.clone(result);
|
|
94
|
+
let cosHalfTheta = vec4Dot(a, b);
|
|
95
|
+
if (cosHalfTheta < 0) {
|
|
96
|
+
vec4Negate(b, result);
|
|
97
|
+
cosHalfTheta = -cosHalfTheta;
|
|
98
|
+
} else b.clone(result);
|
|
99
|
+
if (cosHalfTheta >= 1) return result;
|
|
100
|
+
const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;
|
|
101
|
+
if (sqrSinHalfTheta <= Number.EPSILON) {
|
|
102
|
+
vec4Mix(a, result, t);
|
|
103
|
+
vec4Normalize(result, result);
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);
|
|
107
|
+
const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);
|
|
108
|
+
const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;
|
|
109
|
+
const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;
|
|
110
|
+
result.w = a.w * ratioA + result.w * ratioB;
|
|
111
|
+
result.x = a.x * ratioA + result.x * ratioB;
|
|
112
|
+
result.y = a.y * ratioA + result.y * ratioB;
|
|
113
|
+
result.z = a.z * ratioA + result.z * ratioB;
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Calculate the exponential of a unit quaternion.
|
|
118
|
+
*
|
|
119
|
+
* @param {quat} out the receiving quaternion
|
|
120
|
+
* @param {ReadonlyQuat} a quat to calculate the exponential of
|
|
121
|
+
* @returns {quat} out
|
|
122
|
+
*/
|
|
123
|
+
function quatExp(a, result = new Vec4()) {
|
|
124
|
+
const x = a.x, y = a.y, z = a.z, w = a.w;
|
|
125
|
+
const r = Math.sqrt(x * x + y * y + z * z);
|
|
126
|
+
const et = Math.exp(w);
|
|
127
|
+
const s = r > 0 ? et * Math.sin(r) / r : 0;
|
|
128
|
+
return result.set(x * s, y * s, z * s, et * Math.cos(r));
|
|
129
|
+
}
|
|
130
|
+
function quatLn(a, result = new Vec4()) {
|
|
131
|
+
const x = a.x, y = a.y, z = a.z, w = a.w;
|
|
132
|
+
const r = Math.sqrt(x * x + y * y + z * z);
|
|
133
|
+
const t = r > 0 ? Math.atan2(r, w) / r : 0;
|
|
134
|
+
return result.set(x * t, y * t, z * t, .5 * Math.log(x * x + y * y + z * z + w * w));
|
|
135
|
+
}
|
|
136
|
+
function quatPow(a, b, result = new Vec4()) {
|
|
137
|
+
quatExp(vec4MultiplyByScalar(quatLn(a), b), result);
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
function eulerToQuat(euler, result = new Vec4()) {
|
|
141
|
+
const c1 = Math.cos(euler.x / 2);
|
|
142
|
+
const c2 = Math.cos(euler.y / 2);
|
|
143
|
+
const c3 = Math.cos(euler.z / 2);
|
|
144
|
+
const s1 = Math.sin(euler.x / 2);
|
|
145
|
+
const s2 = Math.sin(euler.y / 2);
|
|
146
|
+
const s3 = Math.sin(euler.z / 2);
|
|
147
|
+
return result.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);
|
|
148
|
+
}
|
|
149
|
+
function angleAxisToQuat(angle, axis, result = new Vec4()) {
|
|
150
|
+
const halfAngle = angle / 2;
|
|
151
|
+
const s = Math.sin(halfAngle);
|
|
152
|
+
return result.set(axis.x * s, axis.y * s, axis.z * s, Math.cos(halfAngle));
|
|
153
|
+
}
|
|
154
|
+
function quatToAngleAxis(q, result = new Vec3()) {
|
|
155
|
+
const rad = Math.acos(q.w) * 2;
|
|
156
|
+
const s = Math.sin(rad / 2);
|
|
157
|
+
if (s > EPSILON) {
|
|
158
|
+
result.x = q.x / s;
|
|
159
|
+
result.y = q.y / s;
|
|
160
|
+
result.z = q.z / s;
|
|
161
|
+
} else {
|
|
162
|
+
result.x = 1;
|
|
163
|
+
result.y = 0;
|
|
164
|
+
result.z = 0;
|
|
165
|
+
}
|
|
166
|
+
return [rad, result];
|
|
167
|
+
}
|
|
168
|
+
function mat4ToQuat(m, result = new Vec4()) {
|
|
169
|
+
return mat3ToQuat(mat4ToMat3(m), result);
|
|
170
|
+
}
|
|
171
|
+
function mat3ToQuat(m, result = new Vec4()) {
|
|
172
|
+
const te = m.elements, m11 = te[0], m12 = te[3], m13 = te[6], m21 = te[1], m22 = te[4], m23 = te[7], m31 = te[2], m32 = te[5], m33 = te[8], trace = m11 + m22 + m33;
|
|
173
|
+
if (trace > 0) {
|
|
174
|
+
const s$1 = .5 / Math.sqrt(trace + 1);
|
|
175
|
+
return result.set((m32 - m23) * s$1, (m13 - m31) * s$1, (m21 - m12) * s$1, .25 / s$1);
|
|
176
|
+
}
|
|
177
|
+
if (m11 > m22 && m11 > m33) {
|
|
178
|
+
const s$1 = 2 * Math.sqrt(1 + m11 - m22 - m33);
|
|
179
|
+
return result.set(.25 * s$1, (m12 + m21) / s$1, (m13 + m31) / s$1, (m32 - m23) / s$1);
|
|
180
|
+
}
|
|
181
|
+
if (m22 > m33) {
|
|
182
|
+
const s$1 = 2 * Math.sqrt(1 + m22 - m11 - m33);
|
|
183
|
+
return result.set((m12 + m21) / s$1, .25 * s$1, (m23 + m32) / s$1, (m13 - m31) / s$1);
|
|
184
|
+
}
|
|
185
|
+
const s = 2 * Math.sqrt(1 + m33 - m11 - m22);
|
|
186
|
+
return result.set((m13 + m31) / s, (m23 + m32) / s, .25 * s, (m21 - m12) / s);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
//#endregion
|
|
190
|
+
export { Vec4, angleAxisToQuat, eulerToQuat, mat3ToQuat, mat4ToQuat, quatConjugate, quatExp, quatLn, quatMultiply, quatPow, quatSlerp, quatToAngleAxis, vec4Add, vec4Dot, vec4Equals, vec4FromArray, vec4Length, vec4Mix, vec4MultiplyByScalar, vec4Negate, vec4Normalize, vec4Parse, vec4Subtract, vec4ToArray, vec4ToString };
|
|
191
|
+
//# sourceMappingURL=Vec4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec4.js","names":["s"],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { Mat3, mat4ToMat3 } from './Mat3.js';\nimport { Mat4 } from './Mat4.js';\nimport { Vec3 } from './Vec3.js';\n\nexport type Vec4JSON = number[];\n\nexport class Vec4 {\n public x: number;\n public y: number;\n public z: number;\n public w: number;\n constructor(x: number = 0, y: number = 0, z: number = 0, w: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n clone(result = new Vec4()): Vec4 {\n return result.set(this.x, this.y, this.z, this.w);\n }\n set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n}\nexport function vec4Equals(\n a: Vec4,\n b: Vec4,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance) &&\n equalsTolerance(a.w, b.w, tolerance)\n );\n}\nexport function vec4Add(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);\n}\nexport function vec4Subtract(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);\n}\nexport function vec4MultiplyByScalar(\n a: Vec4,\n b: number,\n result = new Vec4()\n): Vec4 {\n return result.set(a.x * b, a.y * b, a.z * b, a.w * b);\n}\nexport function vec4Negate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, -a.w);\n}\nexport function vec4Length(a: Vec4): number {\n return Math.sqrt(vec4Dot(a, a));\n}\nexport function vec4Normalize(a: Vec4, result = new Vec4()): Vec4 {\n const invLength = 1 / vec4Length(a);\n return vec4MultiplyByScalar(a, invLength, result);\n}\nexport function vec4Dot(a: Vec4, b: Vec4): number {\n return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n}\nexport function vec4Mix(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n const s = 1 - t;\n return result.set(\n a.x * s + b.x * t,\n a.y * s + b.y * t,\n a.z * s + b.z * t,\n a.w * s + b.w * t\n );\n}\nexport function vec4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec4()\n): Vec4 {\n return result.set(\n array[offset + 0]!,\n array[offset + 1]!,\n array[offset + 2]!,\n array[offset + 3]!\n );\n}\nexport function vec4ToArray(\n a: Vec4,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n array[offset + 3] = a.w;\n}\nexport function vec4ToString(a: Vec4): string {\n return toSafeString([a.x, a.y, a.z, a.w]);\n}\nexport function vec4Parse(text: string, result = new Vec4()): Vec4 {\n return vec4FromArray(parseSafeFloats(text), 0, result);\n}\nexport function quatConjugate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, a.w);\n}\nexport function quatMultiply(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n const qax = a.x;\n const qay = a.y;\n const qaz = a.z;\n const qaw = a.w;\n const qbx = b.x;\n const qby = b.y;\n const qbz = b.z;\n const qbw = b.w;\n\n return result.set(\n qax * qbw + qaw * qbx + qay * qbz - qaz * qby,\n qay * qbw + qaw * qby + qaz * qbx - qax * qbz,\n qaz * qbw + qaw * qbz + qax * qby - qay * qbx,\n qaw * qbw - qax * qbx - qay * qby - qaz * qbz\n );\n}\n\nexport function quatSlerp(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n if (t <= 0) return a.clone(result);\n if (t >= 1) return b.clone(result);\n\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n let cosHalfTheta = vec4Dot(a, b);\n\n if (cosHalfTheta < 0) {\n vec4Negate(b, result);\n\n cosHalfTheta = -cosHalfTheta;\n } else {\n b.clone(result);\n }\n\n if (cosHalfTheta >= 1) {\n return result;\n }\n\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n\n if (sqrSinHalfTheta <= Number.EPSILON) {\n vec4Mix(a, result, t);\n vec4Normalize(result, result);\n\n return result;\n }\n\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n\n result.w = a.w * ratioA + result.w * ratioB;\n result.x = a.x * ratioA + result.x * ratioB;\n result.y = a.y * ratioA + result.y * ratioB;\n result.z = a.z * ratioA + result.z * ratioB;\n\n return result;\n}\n\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nexport function quatExp(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const et = Math.exp(w);\n const s = r > 0 ? (et * Math.sin(r)) / r : 0;\n\n return result.set(x * s, y * s, z * s, et * Math.cos(r));\n}\n\n// from gl-matrix\nexport function quatLn(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const t = r > 0 ? Math.atan2(r, w) / r : 0;\n\n return result.set(\n x * t,\n y * t,\n z * t,\n 0.5 * Math.log(x * x + y * y + z * z + w * w)\n );\n}\n\n// from gl-matrix\nexport function quatPow(a: Vec4, b: number, result = new Vec4()): Vec4 {\n const ln = quatLn(a);\n const lnScaled = vec4MultiplyByScalar(ln, b);\n quatExp(lnScaled, result);\n return result;\n}\n\nexport function eulerToQuat(euler: Vec3, result: Vec4 = new Vec4()): Vec4 {\n // eslint-disable-next-line max-len\n // http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m\n\n const c1 = Math.cos(euler.x / 2);\n const c2 = Math.cos(euler.y / 2);\n const c3 = Math.cos(euler.z / 2);\n\n const s1 = Math.sin(euler.x / 2);\n const s2 = Math.sin(euler.y / 2);\n const s3 = Math.sin(euler.z / 2);\n\n // XYZ order only\n return result.set(\n s1 * c2 * c3 + c1 * s2 * s3,\n c1 * s2 * c3 - s1 * c2 * s3,\n c1 * c2 * s3 + s1 * s2 * c3,\n c1 * c2 * c3 - s1 * s2 * s3\n );\n}\n\nexport function angleAxisToQuat(\n angle: number,\n axis: Vec3,\n result = new Vec4()\n): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n // assumes axis is normalized\n\n const halfAngle = angle / 2;\n const s = Math.sin(halfAngle);\n\n return result.set(axis.x * s, axis.y * s, axis.z * s, Math.cos(halfAngle));\n}\n\n// from gl-matrix\nexport function quatToAngleAxis(\n q: Vec4,\n result = new Vec3()\n): [angle: number, axis: Vec3] {\n const rad = Math.acos(q.w) * 2;\n const s = Math.sin(rad / 2);\n if (s > EPSILON) {\n result.x = q.x / s;\n result.y = q.y / s;\n result.z = q.z / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n result.x = 1;\n result.y = 0;\n result.z = 0;\n }\n return [rad, result];\n}\n\nexport function mat4ToQuat(m: Mat4, result = new Vec4()): Vec4 {\n return mat3ToQuat(mat4ToMat3(m), result);\n}\n\nexport function mat3ToQuat(m: Mat3, result = new Vec4()): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n // TODO, allocate x, y, z, w and only set q.* at the end.\n\n const te = m.elements,\n m11 = te[0],\n m12 = te[3],\n m13 = te[6],\n m21 = te[1],\n m22 = te[4],\n m23 = te[7],\n m31 = te[2],\n m32 = te[5],\n m33 = te[8],\n trace = m11 + m22 + m33;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n\n return result.set(\n (m32 - m23) * s,\n (m13 - m31) * s,\n (m21 - m12) * s,\n 0.25 / s\n );\n }\n if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n\n return result.set(\n 0.25 * s,\n (m12 + m21) / s,\n (m13 + m31) / s,\n (m32 - m23) / s\n );\n }\n if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n\n return result.set(\n (m12 + m21) / s,\n 0.25 * s,\n (m23 + m32) / s,\n (m13 - m31) / s\n );\n }\n\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n\n return result.set(\n (m13 + m31) / s,\n (m23 + m32) / s,\n 0.25 * s,\n (m21 - m12) / s\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mat3Value.d.ts","names":[],"sources":["../../src/Values/Mat3Value.ts"],"sourcesContent":[],"mappings":";;;cAUa,WAAW"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Mat3, mat3Equals, mat3Mix, mat3Parse } from "./Internal/Mat3.js";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/Mat3Value.ts
|
|
4
|
+
const Mat3Value = {
|
|
5
|
+
name: "mat3",
|
|
6
|
+
creator: () => new Mat3(),
|
|
7
|
+
deserialize: (value) => typeof value === "string" ? mat3Parse(value) : new Mat3(value),
|
|
8
|
+
serialize: (value) => value.elements,
|
|
9
|
+
lerp: (start, end, t) => mat3Mix(start, end, t),
|
|
10
|
+
equals: (a, b) => mat3Equals(a, b),
|
|
11
|
+
clone: (value) => value.clone()
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Mat3Value };
|
|
16
|
+
//# sourceMappingURL=Mat3Value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mat3Value.js","names":["Mat3Value: ValueType"],"sources":["../../src/Values/Mat3Value.ts"],"sourcesContent":["import type { ValueType } from '@kiberon-labs/behave-graph';\n\nimport {\n Mat3,\n mat3Equals,\n type Mat3JSON,\n mat3Mix,\n mat3Parse\n} from './Internal/Mat3.js';\n\nexport const Mat3Value: ValueType = {\n name: 'mat3',\n creator: () => new Mat3(),\n deserialize: (value: string | Mat3JSON) =>\n typeof value === 'string' ? mat3Parse(value) : new Mat3(value),\n serialize: (value) => value.elements as Mat3JSON,\n lerp: (start: Mat3, end: Mat3, t: number) => mat3Mix(start, end, t),\n equals: (a: Mat3, b: Mat3) => mat3Equals(a, b),\n clone: (value: Mat3) => value.clone()\n};\n"],"mappings":";;;AAUA,MAAaA,YAAuB;CAClC,MAAM;CACN,eAAe,IAAI,MAAM;CACzB,cAAc,UACZ,OAAO,UAAU,WAAW,UAAU,MAAM,GAAG,IAAI,KAAK,MAAM;CAChE,YAAY,UAAU,MAAM;CAC5B,OAAO,OAAa,KAAW,MAAc,QAAQ,OAAO,KAAK,EAAE;CACnE,SAAS,GAAS,MAAY,WAAW,GAAG,EAAE;CAC9C,QAAQ,UAAgB,MAAM,OAAO;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mat4Value.d.ts","names":[],"sources":["../../src/Values/Mat4Value.ts"],"sourcesContent":[],"mappings":";;;cAUa,WAAW"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Mat4, mat4Equals, mat4Mix, mat4Parse } from "./Internal/Mat4.js";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/Mat4Value.ts
|
|
4
|
+
const Mat4Value = {
|
|
5
|
+
name: "mat4",
|
|
6
|
+
creator: () => new Mat4(),
|
|
7
|
+
deserialize: (value) => typeof value === "string" ? mat4Parse(value) : new Mat4(value),
|
|
8
|
+
serialize: (value) => value.elements,
|
|
9
|
+
lerp: (start, end, t) => mat4Mix(start, end, t),
|
|
10
|
+
equals: (a, b) => mat4Equals(a, b),
|
|
11
|
+
clone: (value) => value.clone()
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Mat4Value };
|
|
16
|
+
//# sourceMappingURL=Mat4Value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mat4Value.js","names":["Mat4Value: ValueType"],"sources":["../../src/Values/Mat4Value.ts"],"sourcesContent":["import type { ValueType } from '@kiberon-labs/behave-graph';\n\nimport {\n Mat4,\n mat4Equals,\n type Mat4JSON,\n mat4Mix,\n mat4Parse\n} from './Internal/Mat4.js';\n\nexport const Mat4Value: ValueType = {\n name: 'mat4',\n creator: () => new Mat4(),\n deserialize: (value: string | Mat4JSON) =>\n typeof value === 'string' ? mat4Parse(value) : new Mat4(value),\n serialize: (value) => value.elements as Mat4JSON,\n lerp: (start: Mat4, end: Mat4, t: number) => mat4Mix(start, end, t),\n equals: (a: Mat4, b: Mat4) => mat4Equals(a, b),\n clone: (value: Mat4) => value.clone()\n};\n"],"mappings":";;;AAUA,MAAaA,YAAuB;CAClC,MAAM;CACN,eAAe,IAAI,MAAM;CACzB,cAAc,UACZ,OAAO,UAAU,WAAW,UAAU,MAAM,GAAG,IAAI,KAAK,MAAM;CAChE,YAAY,UAAU,MAAM;CAC5B,OAAO,OAAa,KAAW,MAAc,QAAQ,OAAO,KAAK,EAAE;CACnE,SAAS,GAAS,MAAY,WAAW,GAAG,EAAE;CAC9C,QAAQ,UAAgB,MAAM,OAAO;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuatValue.d.ts","names":[],"sources":["../../src/Values/QuatValue.ts"],"sourcesContent":[],"mappings":";;;cAUa,WAAW"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Vec4, quatSlerp, vec4Equals, vec4Parse } from "./Internal/Vec4.js";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/QuatValue.ts
|
|
4
|
+
const QuatValue = {
|
|
5
|
+
name: "quat",
|
|
6
|
+
creator: () => new Vec4(),
|
|
7
|
+
deserialize: (value) => typeof value === "string" ? vec4Parse(value) : new Vec4(value[0], value[1], value[2], value[3]),
|
|
8
|
+
serialize: (value) => [
|
|
9
|
+
value.x,
|
|
10
|
+
value.y,
|
|
11
|
+
value.z,
|
|
12
|
+
value.w
|
|
13
|
+
],
|
|
14
|
+
lerp: (start, end, t) => quatSlerp(start, end, t),
|
|
15
|
+
equals: (a, b) => vec4Equals(a, b),
|
|
16
|
+
clone: (value) => value.clone()
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { QuatValue };
|
|
21
|
+
//# sourceMappingURL=QuatValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuatValue.js","names":["QuatValue: ValueType"],"sources":["../../src/Values/QuatValue.ts"],"sourcesContent":["import type { ValueType } from '@kiberon-labs/behave-graph';\n\nimport {\n quatSlerp,\n Vec4,\n vec4Equals,\n type Vec4JSON,\n vec4Parse\n} from './Internal/Vec4.js';\n\nexport const QuatValue: ValueType = {\n name: 'quat',\n creator: () => new Vec4(),\n deserialize: (value: string | Vec4JSON) =>\n typeof value === 'string'\n ? vec4Parse(value)\n : new Vec4(value[0], value[1], value[2], value[3]),\n serialize: (value) => [value.x, value.y, value.z, value.w] as Vec4JSON,\n lerp: (start: Vec4, end: Vec4, t: number) => quatSlerp(start, end, t),\n equals: (a: Vec4, b: Vec4) => vec4Equals(a, b),\n clone: (value: Vec4) => value.clone()\n};\n"],"mappings":";;;AAUA,MAAaA,YAAuB;CAClC,MAAM;CACN,eAAe,IAAI,MAAM;CACzB,cAAc,UACZ,OAAO,UAAU,WACb,UAAU,MAAM,GAChB,IAAI,KAAK,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG;CACtD,YAAY,UAAU;EAAC,MAAM;EAAG,MAAM;EAAG,MAAM;EAAG,MAAM;EAAE;CAC1D,OAAO,OAAa,KAAW,MAAc,UAAU,OAAO,KAAK,EAAE;CACrE,SAAS,GAAS,MAAY,WAAW,GAAG,EAAE;CAC9C,QAAQ,UAAgB,MAAM,OAAO;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec2Value.d.ts","names":[],"sources":["../../src/Values/Vec2Value.ts"],"sourcesContent":[],"mappings":";;;cAIa,WAAW"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Vec2, vec2Mix, vec2Parse } from "./Internal/Vec2.js";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/Vec2Value.ts
|
|
4
|
+
const Vec2Value = {
|
|
5
|
+
name: "vec2",
|
|
6
|
+
creator: () => new Vec2(),
|
|
7
|
+
deserialize: (value) => typeof value === "string" ? vec2Parse(value) : new Vec2(value[0], value[1]),
|
|
8
|
+
serialize: (value) => [value.x, value.y],
|
|
9
|
+
lerp: (start, end, t) => vec2Mix(start, end, t),
|
|
10
|
+
equals: (a, b) => a.x === b.x && a.y === b.y,
|
|
11
|
+
clone: (value) => value.clone()
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Vec2Value };
|
|
16
|
+
//# sourceMappingURL=Vec2Value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec2Value.js","names":["Vec2Value: ValueType"],"sources":["../../src/Values/Vec2Value.ts"],"sourcesContent":["import type { ValueType } from '@kiberon-labs/behave-graph';\n\nimport { Vec2, type Vec2JSON, vec2Mix, vec2Parse } from './Internal/Vec2.js';\n\nexport const Vec2Value: ValueType = {\n name: 'vec2',\n creator: () => new Vec2(),\n deserialize: (value: string | Vec2JSON) =>\n typeof value === 'string' ? vec2Parse(value) : new Vec2(value[0], value[1]),\n serialize: (value) => [value.x, value.y] as Vec2JSON,\n lerp: (start: Vec2, end: Vec2, t: number) => vec2Mix(start, end, t),\n equals: (a: Vec2, b: Vec2) => a.x === b.x && a.y === b.y,\n clone: (value: Vec2) => value.clone()\n};\n"],"mappings":";;;AAIA,MAAaA,YAAuB;CAClC,MAAM;CACN,eAAe,IAAI,MAAM;CACzB,cAAc,UACZ,OAAO,UAAU,WAAW,UAAU,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,MAAM,GAAG;CAC7E,YAAY,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE;CACxC,OAAO,OAAa,KAAW,MAAc,QAAQ,OAAO,KAAK,EAAE;CACnE,SAAS,GAAS,MAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACvD,QAAQ,UAAgB,MAAM,OAAO;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec3Value.d.ts","names":[],"sources":["../../src/Values/Vec3Value.ts"],"sourcesContent":[],"mappings":";;;cAUa,WAAW"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Vec3, vec3Equals, vec3Mix, vec3Parse } from "./Internal/Vec3.js";
|
|
2
|
+
|
|
3
|
+
//#region src/Values/Vec3Value.ts
|
|
4
|
+
const Vec3Value = {
|
|
5
|
+
name: "vec3",
|
|
6
|
+
creator: () => new Vec3(),
|
|
7
|
+
deserialize: (value) => typeof value === "string" ? vec3Parse(value) : new Vec3(value[0], value[1], value[2]),
|
|
8
|
+
serialize: (value) => [
|
|
9
|
+
value.x,
|
|
10
|
+
value.y,
|
|
11
|
+
value.z
|
|
12
|
+
],
|
|
13
|
+
lerp: (start, end, t) => vec3Mix(start, end, t),
|
|
14
|
+
equals: (a, b) => vec3Equals(a, b),
|
|
15
|
+
clone: (value) => value.clone()
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Vec3Value };
|
|
20
|
+
//# sourceMappingURL=Vec3Value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Vec3Value.js","names":["Vec3Value: ValueType"],"sources":["../../src/Values/Vec3Value.ts"],"sourcesContent":["import type { ValueType } from '@kiberon-labs/behave-graph';\n\nimport {\n Vec3,\n vec3Equals,\n type Vec3JSON,\n vec3Mix,\n vec3Parse\n} from './Internal/Vec3.js';\n\nexport const Vec3Value: ValueType = {\n name: 'vec3',\n creator: () => new Vec3(),\n deserialize: (value: string | Vec3JSON) =>\n typeof value === 'string'\n ? vec3Parse(value)\n : new Vec3(value[0], value[1], value[2]),\n serialize: (value) => [value.x, value.y, value.z] as Vec3JSON,\n lerp: (start: Vec3, end: Vec3, t: number) => vec3Mix(start, end, t),\n equals: (a: Vec3, b: Vec3) => vec3Equals(a, b),\n clone: (value: Vec3) => value.clone()\n};\n"],"mappings":";;;AAUA,MAAaA,YAAuB;CAClC,MAAM;CACN,eAAe,IAAI,MAAM;CACzB,cAAc,UACZ,OAAO,UAAU,WACb,UAAU,MAAM,GAChB,IAAI,KAAK,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG;CAC5C,YAAY,UAAU;EAAC,MAAM;EAAG,MAAM;EAAG,MAAM;EAAE;CACjD,OAAO,OAAa,KAAW,MAAc,QAAQ,OAAO,KAAK,EAAE;CACnE,SAAS,GAAS,MAAY,WAAW,GAAG,EAAE;CAC9C,QAAQ,UAAgB,MAAM,OAAO;CACtC"}
|