@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.
Files changed (50) hide show
  1. package/package.json +34 -0
  2. package/src/Abstractions/Drivers/DummyScene.ts +79 -0
  3. package/src/Abstractions/IScene.ts +18 -0
  4. package/src/GLTFJson.ts +34 -0
  5. package/src/Nodes/Actions/EaseSceneProperty.ts +162 -0
  6. package/src/Nodes/Actions/SetSceneProperty.ts +35 -0
  7. package/src/Nodes/Events/OnSceneNodeClick.ts +66 -0
  8. package/src/Nodes/Logic/ColorNodes.ts +121 -0
  9. package/src/Nodes/Logic/EulerNodes.ts +115 -0
  10. package/src/Nodes/Logic/Mat3Nodes.ts +202 -0
  11. package/src/Nodes/Logic/Mat4Nodes.ts +257 -0
  12. package/src/Nodes/Logic/QuatNodes.ts +178 -0
  13. package/src/Nodes/Logic/Vec2Nodes.ts +111 -0
  14. package/src/Nodes/Logic/Vec3Nodes.ts +121 -0
  15. package/src/Nodes/Logic/Vec4Nodes.ts +112 -0
  16. package/src/Nodes/Logic/VecElements.ts +34 -0
  17. package/src/Nodes/Queries/GetSceneProperty.ts +35 -0
  18. package/src/Values/ColorValue.ts +22 -0
  19. package/src/Values/EulerValue.ts +22 -0
  20. package/src/Values/Internal/Mat2.ts +214 -0
  21. package/src/Values/Internal/Mat3.ts +422 -0
  22. package/src/Values/Internal/Mat4.ts +831 -0
  23. package/src/Values/Internal/Vec2.ts +97 -0
  24. package/src/Values/Internal/Vec3.ts +244 -0
  25. package/src/Values/Internal/Vec4.ts +350 -0
  26. package/src/Values/Mat3Value.ts +20 -0
  27. package/src/Values/Mat4Value.ts +20 -0
  28. package/src/Values/QuatValue.ts +22 -0
  29. package/src/Values/Vec2Value.ts +14 -0
  30. package/src/Values/Vec3Value.ts +22 -0
  31. package/src/Values/Vec4Value.ts +21 -0
  32. package/src/buildScene.ts +479 -0
  33. package/src/index.ts +38 -0
  34. package/src/loadScene.ts +81 -0
  35. package/src/registerSceneProfile.ts +105 -0
  36. package/tests/graphs/logic/Color.json +53 -0
  37. package/tests/graphs/logic/Euler.json +53 -0
  38. package/tests/graphs/logic/Quaternion.json +56 -0
  39. package/tests/graphs/logic/Vector2.json +50 -0
  40. package/tests/graphs/logic/Vector3.json +53 -0
  41. package/tests/graphs/logic/Vector4.json +56 -0
  42. package/tests/readSceneGraphs.test.ts +57 -0
  43. package/tests/registerSceneProfile.test.ts +62 -0
  44. package/tests/tsconfig.json +11 -0
  45. package/tests/values/internal/Vec2.test.ts +74 -0
  46. package/tests/values/internal/Vec3.test.ts +83 -0
  47. package/tests/values/internal/Vec4.test.ts +91 -0
  48. package/tsconfig.json +55 -0
  49. package/tsdown.config.ts +13 -0
  50. 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
+ }
@@ -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
+ });
@@ -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
+ });