@kiberon-labs/behave-graph-scene 1.0.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/package.json +34 -0
- package/src/Abstractions/Drivers/DummyScene.ts +79 -0
- package/src/Abstractions/IScene.ts +18 -0
- package/src/GLTFJson.ts +34 -0
- package/src/Nodes/Actions/EaseSceneProperty.ts +162 -0
- package/src/Nodes/Actions/SetSceneProperty.ts +35 -0
- package/src/Nodes/Events/OnSceneNodeClick.ts +66 -0
- package/src/Nodes/Logic/ColorNodes.ts +121 -0
- package/src/Nodes/Logic/EulerNodes.ts +115 -0
- package/src/Nodes/Logic/Mat3Nodes.ts +202 -0
- package/src/Nodes/Logic/Mat4Nodes.ts +257 -0
- package/src/Nodes/Logic/QuatNodes.ts +178 -0
- package/src/Nodes/Logic/Vec2Nodes.ts +111 -0
- package/src/Nodes/Logic/Vec3Nodes.ts +121 -0
- package/src/Nodes/Logic/Vec4Nodes.ts +112 -0
- package/src/Nodes/Logic/VecElements.ts +34 -0
- package/src/Nodes/Queries/GetSceneProperty.ts +35 -0
- package/src/Values/ColorValue.ts +22 -0
- package/src/Values/EulerValue.ts +22 -0
- package/src/Values/Internal/Mat2.ts +214 -0
- package/src/Values/Internal/Mat3.ts +422 -0
- package/src/Values/Internal/Mat4.ts +831 -0
- package/src/Values/Internal/Vec2.ts +97 -0
- package/src/Values/Internal/Vec3.ts +244 -0
- package/src/Values/Internal/Vec4.ts +350 -0
- package/src/Values/Mat3Value.ts +20 -0
- package/src/Values/Mat4Value.ts +20 -0
- package/src/Values/QuatValue.ts +22 -0
- package/src/Values/Vec2Value.ts +14 -0
- package/src/Values/Vec3Value.ts +22 -0
- package/src/Values/Vec4Value.ts +21 -0
- package/src/buildScene.ts +479 -0
- package/src/index.ts +38 -0
- package/src/loadScene.ts +81 -0
- package/src/registerSceneProfile.ts +105 -0
- package/tests/graphs/logic/Color.json +53 -0
- package/tests/graphs/logic/Euler.json +53 -0
- package/tests/graphs/logic/Quaternion.json +56 -0
- package/tests/graphs/logic/Vector2.json +50 -0
- package/tests/graphs/logic/Vector3.json +53 -0
- package/tests/graphs/logic/Vector4.json +56 -0
- package/tests/readSceneGraphs.test.ts +57 -0
- package/tests/registerSceneProfile.test.ts +62 -0
- package/tests/tsconfig.json +11 -0
- package/tests/values/internal/Vec2.test.ts +74 -0
- package/tests/values/internal/Vec3.test.ts +83 -0
- package/tests/values/internal/Vec4.test.ts +91 -0
- package/tsconfig.json +55 -0
- package/tsdown.config.ts +13 -0
- package/vitest.config.ts +15 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Vec3,
|
|
3
|
+
vec3Add,
|
|
4
|
+
vec3Dot,
|
|
5
|
+
vec3FromArray,
|
|
6
|
+
vec3Length,
|
|
7
|
+
vec3MultiplyByScalar,
|
|
8
|
+
vec3Negate,
|
|
9
|
+
vec3Normalize,
|
|
10
|
+
vec3Parse,
|
|
11
|
+
vec3Subtract,
|
|
12
|
+
vec3ToArray,
|
|
13
|
+
vec3ToString
|
|
14
|
+
} from '@/Values/Internal/Vec3.js';
|
|
15
|
+
import { describe, test, expect } from 'vitest';
|
|
16
|
+
|
|
17
|
+
describe('vec3 value type', () => {
|
|
18
|
+
test('constructor', () => {
|
|
19
|
+
const value = new Vec3(1, 2, 3);
|
|
20
|
+
expect(value.x).toEqual(1);
|
|
21
|
+
expect(value.y).toEqual(2);
|
|
22
|
+
expect(value.z).toEqual(3);
|
|
23
|
+
});
|
|
24
|
+
test('add', () => {
|
|
25
|
+
const value = vec3Add(new Vec3(1, 2, 3), new Vec3(3, 4, 5));
|
|
26
|
+
expect(value.x).toEqual(4);
|
|
27
|
+
expect(value.y).toEqual(6);
|
|
28
|
+
expect(value.z).toEqual(8);
|
|
29
|
+
});
|
|
30
|
+
test('subtract', () => {
|
|
31
|
+
const value = vec3Subtract(new Vec3(1, 2, 3), new Vec3(3, 8, 13));
|
|
32
|
+
expect(value.x).toEqual(-2);
|
|
33
|
+
expect(value.y).toEqual(-6);
|
|
34
|
+
expect(value.z).toEqual(-10);
|
|
35
|
+
});
|
|
36
|
+
test('scale', () => {
|
|
37
|
+
const value = vec3MultiplyByScalar(new Vec3(1, 2, 3), 2);
|
|
38
|
+
expect(value.x).toEqual(2);
|
|
39
|
+
expect(value.y).toEqual(4);
|
|
40
|
+
expect(value.z).toEqual(6);
|
|
41
|
+
});
|
|
42
|
+
test('negate', () => {
|
|
43
|
+
const value = vec3Negate(new Vec3(1, 2, 3));
|
|
44
|
+
expect(value.x).toEqual(-1);
|
|
45
|
+
expect(value.y).toEqual(-2);
|
|
46
|
+
expect(value.z).toEqual(-3);
|
|
47
|
+
});
|
|
48
|
+
test('length', () => {
|
|
49
|
+
const value = vec3Length(new Vec3(1, 2, 3));
|
|
50
|
+
expect(value).toEqual(Math.sqrt(1 + 2 * 2 + 3 * 3));
|
|
51
|
+
});
|
|
52
|
+
test('normalize', () => {
|
|
53
|
+
const value = vec3Normalize(new Vec3(0, 0, 2));
|
|
54
|
+
expect(value.x).toEqual(0);
|
|
55
|
+
expect(value.y).toEqual(0);
|
|
56
|
+
expect(value.z).toEqual(1);
|
|
57
|
+
});
|
|
58
|
+
test('dot', () => {
|
|
59
|
+
const value = vec3Dot(new Vec3(0, 2, 1), new Vec3(3, 4, 1));
|
|
60
|
+
expect(value).toEqual(9);
|
|
61
|
+
});
|
|
62
|
+
test('fromArray', () => {
|
|
63
|
+
const value = vec3FromArray([1, 2, 3, 4], 1);
|
|
64
|
+
expect(value.x).toEqual(2);
|
|
65
|
+
expect(value.y).toEqual(3);
|
|
66
|
+
expect(value.z).toEqual(4);
|
|
67
|
+
});
|
|
68
|
+
test('fromArray', () => {
|
|
69
|
+
const array = [1, 2, 3];
|
|
70
|
+
vec3ToArray(new Vec3(6, 7, 8), array, 1);
|
|
71
|
+
expect(array[1]).toEqual(6);
|
|
72
|
+
expect(array[2]).toEqual(7);
|
|
73
|
+
expect(array[3]).toEqual(8);
|
|
74
|
+
});
|
|
75
|
+
test('toString/parser', () => {
|
|
76
|
+
const v = new Vec3(10, 5.5, -9);
|
|
77
|
+
const text = vec3ToString(v);
|
|
78
|
+
const v2 = vec3Parse(text);
|
|
79
|
+
expect(v.x).toEqual(v2.x);
|
|
80
|
+
expect(v.y).toEqual(v2.y);
|
|
81
|
+
expect(v.z).toEqual(v2.z);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Vec4,
|
|
3
|
+
vec4Add,
|
|
4
|
+
vec4Dot,
|
|
5
|
+
vec4FromArray,
|
|
6
|
+
vec4Length,
|
|
7
|
+
vec4MultiplyByScalar,
|
|
8
|
+
vec4Negate,
|
|
9
|
+
vec4Normalize,
|
|
10
|
+
vec4Parse,
|
|
11
|
+
vec4Subtract,
|
|
12
|
+
vec4ToArray,
|
|
13
|
+
vec4ToString
|
|
14
|
+
} from '@/Values/Internal/Vec4.js';
|
|
15
|
+
import { describe, test, expect } from 'vitest';
|
|
16
|
+
|
|
17
|
+
describe('vec4 value type', () => {
|
|
18
|
+
test('constructor', () => {
|
|
19
|
+
const value = new Vec4(1, 2, 3, 4);
|
|
20
|
+
expect(value.x).toEqual(1);
|
|
21
|
+
expect(value.y).toEqual(2);
|
|
22
|
+
expect(value.z).toEqual(3);
|
|
23
|
+
expect(value.w).toEqual(4);
|
|
24
|
+
});
|
|
25
|
+
test('add', () => {
|
|
26
|
+
const value = vec4Add(new Vec4(1, 2, 3, 4), new Vec4(3, 4, 5, 6));
|
|
27
|
+
expect(value.x).toEqual(4);
|
|
28
|
+
expect(value.y).toEqual(6);
|
|
29
|
+
expect(value.z).toEqual(8);
|
|
30
|
+
expect(value.w).toEqual(10);
|
|
31
|
+
});
|
|
32
|
+
test('subtract', () => {
|
|
33
|
+
const value = vec4Subtract(new Vec4(1, 2, 3, 4), new Vec4(3, 8, 13, 18));
|
|
34
|
+
expect(value.x).toEqual(-2);
|
|
35
|
+
expect(value.y).toEqual(-6);
|
|
36
|
+
expect(value.z).toEqual(-10);
|
|
37
|
+
expect(value.w).toEqual(-14);
|
|
38
|
+
});
|
|
39
|
+
test('scale', () => {
|
|
40
|
+
const value = vec4MultiplyByScalar(new Vec4(1, 2, 3, 4), 2);
|
|
41
|
+
expect(value.x).toEqual(2);
|
|
42
|
+
expect(value.y).toEqual(4);
|
|
43
|
+
expect(value.z).toEqual(6);
|
|
44
|
+
expect(value.w).toEqual(8);
|
|
45
|
+
});
|
|
46
|
+
test('negate', () => {
|
|
47
|
+
const value = vec4Negate(new Vec4(1, 2, 3, 4));
|
|
48
|
+
expect(value.x).toEqual(-1);
|
|
49
|
+
expect(value.y).toEqual(-2);
|
|
50
|
+
expect(value.z).toEqual(-3);
|
|
51
|
+
expect(value.w).toEqual(-4);
|
|
52
|
+
});
|
|
53
|
+
test('length', () => {
|
|
54
|
+
const value = vec4Length(new Vec4(1, 2, 3, 4));
|
|
55
|
+
expect(value).toEqual(Math.sqrt(1 + 2 * 2 + 3 * 3 + 4 * 4));
|
|
56
|
+
});
|
|
57
|
+
test('normalize', () => {
|
|
58
|
+
const value = vec4Normalize(new Vec4(0, 0, 0, 2));
|
|
59
|
+
expect(value.x).toEqual(0);
|
|
60
|
+
expect(value.y).toEqual(0);
|
|
61
|
+
expect(value.z).toEqual(0);
|
|
62
|
+
expect(value.w).toEqual(1);
|
|
63
|
+
});
|
|
64
|
+
test('dot', () => {
|
|
65
|
+
const value = vec4Dot(new Vec4(0, 2, 1, 3), new Vec4(3, 4, 1, 1));
|
|
66
|
+
expect(value).toEqual(12);
|
|
67
|
+
});
|
|
68
|
+
test('fromArray', () => {
|
|
69
|
+
const value = vec4FromArray([1, 2, 3, 4, 5], 1);
|
|
70
|
+
expect(value.x).toEqual(2);
|
|
71
|
+
expect(value.y).toEqual(3);
|
|
72
|
+
expect(value.z).toEqual(4);
|
|
73
|
+
expect(value.w).toEqual(5);
|
|
74
|
+
});
|
|
75
|
+
test('fromArray', () => {
|
|
76
|
+
const array = [1, 2, 3];
|
|
77
|
+
vec4ToArray(new Vec4(6, 7, 8, 9), array, 1);
|
|
78
|
+
expect(array[1]).toEqual(6);
|
|
79
|
+
expect(array[2]).toEqual(7);
|
|
80
|
+
expect(array[3]).toEqual(8);
|
|
81
|
+
expect(array[4]).toEqual(9);
|
|
82
|
+
});
|
|
83
|
+
test('toString/parser', () => {
|
|
84
|
+
const v = new Vec4(10, 5.5, -9, 99999);
|
|
85
|
+
const text = vec4ToString(v);
|
|
86
|
+
const v2 = vec4Parse(text);
|
|
87
|
+
expect(v.x).toEqual(v2.x);
|
|
88
|
+
expect(v.y).toEqual(v2.y);
|
|
89
|
+
expect(v.z).toEqual(v2.z);
|
|
90
|
+
});
|
|
91
|
+
});
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"display": "Monorepo shared library",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
/* Base Options: */
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"target": "esnext",
|
|
9
|
+
"lib": [
|
|
10
|
+
"esnext",
|
|
11
|
+
"ES6"
|
|
12
|
+
],
|
|
13
|
+
"allowJs": true,
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"moduleDetection": "force",
|
|
16
|
+
"isolatedModules": true,
|
|
17
|
+
"verbatimModuleSyntax": true,
|
|
18
|
+
/* Strictness */
|
|
19
|
+
"strict": true,
|
|
20
|
+
"noUncheckedIndexedAccess": true,
|
|
21
|
+
"noImplicitOverride": true,
|
|
22
|
+
"erasableSyntaxOnly": true,
|
|
23
|
+
/* Opinion */
|
|
24
|
+
"incremental": true,
|
|
25
|
+
"tsBuildInfoFile": "./tsconfig.tsbuildinfo",
|
|
26
|
+
"module": "preserve",
|
|
27
|
+
"outDir": "./dist",
|
|
28
|
+
"baseUrl": ".",
|
|
29
|
+
"rootDir": "./src",
|
|
30
|
+
"paths": {
|
|
31
|
+
"~/*": [
|
|
32
|
+
"./src/*"
|
|
33
|
+
],
|
|
34
|
+
"@/*": [
|
|
35
|
+
"./src/*"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
/* Required for project references, which provide go-to-definition in your
|
|
39
|
+
IDE without first having to build the module, which is essential during development. */
|
|
40
|
+
"composite": true,
|
|
41
|
+
/* Assuming your bundler will output everything, but we can not have noEmit
|
|
42
|
+
enabled because it is not compatible with composite / project references. Also declaration might be required for references to work fully. Not sure yet... */
|
|
43
|
+
"declaration": true,
|
|
44
|
+
"declarationMap": true,
|
|
45
|
+
},
|
|
46
|
+
"include": [
|
|
47
|
+
"./src",
|
|
48
|
+
"./src/**/*.json"
|
|
49
|
+
],
|
|
50
|
+
"references": [
|
|
51
|
+
{
|
|
52
|
+
"path": "../core"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
}
|
package/tsdown.config.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from 'tsdown';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
entry: ['./src/index.ts'],
|
|
5
|
+
outDir: 'dist',
|
|
6
|
+
target: 'es2022',
|
|
7
|
+
sourcemap: true,
|
|
8
|
+
format: ['esm'],
|
|
9
|
+
dts: true,
|
|
10
|
+
logLevel: 'warn',
|
|
11
|
+
unbundle: true,
|
|
12
|
+
platform: 'neutral'
|
|
13
|
+
});
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { configDefaults, defineConfig } from 'vitest/config';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
test: {
|
|
6
|
+
exclude: [...configDefaults.exclude],
|
|
7
|
+
watch: false
|
|
8
|
+
},
|
|
9
|
+
resolve: {
|
|
10
|
+
alias: {
|
|
11
|
+
'~': path.resolve(__dirname, './src'),
|
|
12
|
+
'@': path.resolve(__dirname, './src')
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|