@kiberon-labs/behave-graph-scene 1.0.0 → 2.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 (282) hide show
  1. package/.storybook/main.ts +18 -0
  2. package/.storybook/preview.ts +16 -0
  3. package/.storybook/vscode.css +822 -0
  4. package/.turbo/turbo-build.log +8 -0
  5. package/CHANGELOG.md +84 -0
  6. package/LICENSE +6 -0
  7. package/README.md +13 -0
  8. package/dist/Abstractions/Drivers/DummyScene.d.ts +64 -0
  9. package/dist/Abstractions/Drivers/DummyScene.d.ts.map +1 -0
  10. package/dist/Abstractions/Drivers/DummyScene.js +115 -0
  11. package/dist/Abstractions/Drivers/DummyScene.js.map +1 -0
  12. package/dist/Abstractions/IScene.d.ts +75 -0
  13. package/dist/Abstractions/IScene.d.ts.map +1 -0
  14. package/dist/Abstractions/IScene.js +19 -0
  15. package/dist/Abstractions/IScene.js.map +1 -0
  16. package/dist/GLTFJson.d.ts +33 -0
  17. package/dist/GLTFJson.d.ts.map +1 -0
  18. package/dist/Nodes/Actions/AddLight.d.ts +21 -0
  19. package/dist/Nodes/Actions/AddLight.d.ts.map +1 -0
  20. package/dist/Nodes/Actions/AddLight.js +38 -0
  21. package/dist/Nodes/Actions/AddLight.js.map +1 -0
  22. package/dist/Nodes/Actions/CloneMesh.d.ts +16 -0
  23. package/dist/Nodes/Actions/CloneMesh.d.ts.map +1 -0
  24. package/dist/Nodes/Actions/CloneMesh.js +28 -0
  25. package/dist/Nodes/Actions/CloneMesh.js.map +1 -0
  26. package/dist/Nodes/Actions/CreateMesh.d.ts +22 -0
  27. package/dist/Nodes/Actions/CreateMesh.d.ts.map +1 -0
  28. package/dist/Nodes/Actions/CreateMesh.js +44 -0
  29. package/dist/Nodes/Actions/CreateMesh.js.map +1 -0
  30. package/dist/Nodes/Actions/DeleteMesh.d.ts +15 -0
  31. package/dist/Nodes/Actions/DeleteMesh.d.ts.map +1 -0
  32. package/dist/Nodes/Actions/DeleteMesh.js +27 -0
  33. package/dist/Nodes/Actions/DeleteMesh.js.map +1 -0
  34. package/dist/Nodes/Actions/EaseSceneProperty.d.ts +23 -0
  35. package/dist/Nodes/Actions/EaseSceneProperty.d.ts.map +1 -0
  36. package/dist/Nodes/Actions/EaseSceneProperty.js +73 -0
  37. package/dist/Nodes/Actions/EaseSceneProperty.js.map +1 -0
  38. package/dist/Nodes/Actions/LookAt.d.ts +16 -0
  39. package/dist/Nodes/Actions/LookAt.d.ts.map +1 -0
  40. package/dist/Nodes/Actions/LookAt.js +35 -0
  41. package/dist/Nodes/Actions/LookAt.js.map +1 -0
  42. package/dist/Nodes/Actions/MoveTowards.d.ts +21 -0
  43. package/dist/Nodes/Actions/MoveTowards.d.ts.map +1 -0
  44. package/dist/Nodes/Actions/MoveTowards.js +46 -0
  45. package/dist/Nodes/Actions/MoveTowards.js.map +1 -0
  46. package/dist/Nodes/Actions/RemoveLight.d.ts +15 -0
  47. package/dist/Nodes/Actions/RemoveLight.d.ts.map +1 -0
  48. package/dist/Nodes/Actions/RemoveLight.js +27 -0
  49. package/dist/Nodes/Actions/RemoveLight.js.map +1 -0
  50. package/dist/Nodes/Actions/SetLightProperty.d.ts +25 -0
  51. package/dist/Nodes/Actions/SetLightProperty.d.ts.map +1 -0
  52. package/dist/Nodes/Actions/SetLightProperty.js +64 -0
  53. package/dist/Nodes/Actions/SetLightProperty.js.map +1 -0
  54. package/dist/Nodes/Actions/SetMaterialProperty.d.ts +25 -0
  55. package/dist/Nodes/Actions/SetMaterialProperty.d.ts.map +1 -0
  56. package/dist/Nodes/Actions/SetMaterialProperty.js +69 -0
  57. package/dist/Nodes/Actions/SetMaterialProperty.js.map +1 -0
  58. package/dist/Nodes/Actions/SetMeshPosition.d.ts +18 -0
  59. package/dist/Nodes/Actions/SetMeshPosition.d.ts.map +1 -0
  60. package/dist/Nodes/Actions/SetMeshPosition.js +34 -0
  61. package/dist/Nodes/Actions/SetMeshPosition.js.map +1 -0
  62. package/dist/Nodes/Actions/SetMeshVisible.d.ts +16 -0
  63. package/dist/Nodes/Actions/SetMeshVisible.d.ts.map +1 -0
  64. package/dist/Nodes/Actions/SetMeshVisible.js +28 -0
  65. package/dist/Nodes/Actions/SetMeshVisible.js.map +1 -0
  66. package/dist/Nodes/Actions/SetSceneProperty.d.ts +16 -0
  67. package/dist/Nodes/Actions/SetSceneProperty.d.ts.map +1 -0
  68. package/dist/Nodes/Actions/SetSceneProperty.js +28 -0
  69. package/dist/Nodes/Actions/SetSceneProperty.js.map +1 -0
  70. package/dist/Nodes/Events/OnAnyMeshClicked.d.ts +13 -0
  71. package/dist/Nodes/Events/OnAnyMeshClicked.d.ts.map +1 -0
  72. package/dist/Nodes/Events/OnAnyMeshClicked.js +34 -0
  73. package/dist/Nodes/Events/OnAnyMeshClicked.js.map +1 -0
  74. package/dist/Nodes/Events/OnSceneChanged.d.ts +12 -0
  75. package/dist/Nodes/Events/OnSceneChanged.d.ts.map +1 -0
  76. package/dist/Nodes/Events/OnSceneChanged.js +28 -0
  77. package/dist/Nodes/Events/OnSceneChanged.js.map +1 -0
  78. package/dist/Nodes/Events/OnSceneNodeClick.d.ts +18 -0
  79. package/dist/Nodes/Events/OnSceneNodeClick.d.ts.map +1 -0
  80. package/dist/Nodes/Events/OnSceneNodeClick.js +39 -0
  81. package/dist/Nodes/Events/OnSceneNodeClick.js.map +1 -0
  82. package/dist/Nodes/Logic/ColorNodes.d.ts +23 -0
  83. package/dist/Nodes/Logic/ColorNodes.d.ts.map +1 -0
  84. package/dist/Nodes/Logic/ColorNodes.js +137 -0
  85. package/dist/Nodes/Logic/ColorNodes.js.map +1 -0
  86. package/dist/Nodes/Logic/EulerNodes.d.ts +22 -0
  87. package/dist/Nodes/Logic/EulerNodes.d.ts.map +1 -0
  88. package/dist/Nodes/Logic/EulerNodes.js +132 -0
  89. package/dist/Nodes/Logic/EulerNodes.js.map +1 -0
  90. package/dist/Nodes/Logic/Mat3Nodes.d.ts +31 -0
  91. package/dist/Nodes/Logic/Mat3Nodes.d.ts.map +1 -0
  92. package/dist/Nodes/Logic/Mat3Nodes.js +199 -0
  93. package/dist/Nodes/Logic/Mat3Nodes.js.map +1 -0
  94. package/dist/Nodes/Logic/Mat4Nodes.d.ts +38 -0
  95. package/dist/Nodes/Logic/Mat4Nodes.d.ts.map +1 -0
  96. package/dist/Nodes/Logic/Mat4Nodes.js +267 -0
  97. package/dist/Nodes/Logic/Mat4Nodes.js.map +1 -0
  98. package/dist/Nodes/Logic/QuatNodes.d.ts +28 -0
  99. package/dist/Nodes/Logic/QuatNodes.d.ts.map +1 -0
  100. package/dist/Nodes/Logic/QuatNodes.js +173 -0
  101. package/dist/Nodes/Logic/QuatNodes.js.map +1 -0
  102. package/dist/Nodes/Logic/Vec2Nodes.d.ts +22 -0
  103. package/dist/Nodes/Logic/Vec2Nodes.d.ts.map +1 -0
  104. package/dist/Nodes/Logic/Vec2Nodes.js +115 -0
  105. package/dist/Nodes/Logic/Vec2Nodes.js.map +1 -0
  106. package/dist/Nodes/Logic/Vec3Nodes.d.ts +23 -0
  107. package/dist/Nodes/Logic/Vec3Nodes.d.ts.map +1 -0
  108. package/dist/Nodes/Logic/Vec3Nodes.js +137 -0
  109. package/dist/Nodes/Logic/Vec3Nodes.js.map +1 -0
  110. package/dist/Nodes/Logic/Vec4Nodes.d.ts +22 -0
  111. package/dist/Nodes/Logic/Vec4Nodes.d.ts.map +1 -0
  112. package/dist/Nodes/Logic/Vec4Nodes.js +132 -0
  113. package/dist/Nodes/Logic/Vec4Nodes.js.map +1 -0
  114. package/dist/Nodes/Logic/VecElements.d.ts +9 -0
  115. package/dist/Nodes/Logic/VecElements.d.ts.map +1 -0
  116. package/dist/Nodes/Logic/VecElements.js +22 -0
  117. package/dist/Nodes/Logic/VecElements.js.map +1 -0
  118. package/dist/Nodes/Queries/GetDistanceBetween.d.ts +18 -0
  119. package/dist/Nodes/Queries/GetDistanceBetween.d.ts.map +1 -0
  120. package/dist/Nodes/Queries/GetDistanceBetween.js +30 -0
  121. package/dist/Nodes/Queries/GetDistanceBetween.js.map +1 -0
  122. package/dist/Nodes/Queries/GetLightProperty.d.ts +23 -0
  123. package/dist/Nodes/Queries/GetLightProperty.d.ts.map +1 -0
  124. package/dist/Nodes/Queries/GetLightProperty.js +68 -0
  125. package/dist/Nodes/Queries/GetLightProperty.js.map +1 -0
  126. package/dist/Nodes/Queries/GetMaterialProperty.d.ts +23 -0
  127. package/dist/Nodes/Queries/GetMaterialProperty.d.ts.map +1 -0
  128. package/dist/Nodes/Queries/GetMaterialProperty.js +69 -0
  129. package/dist/Nodes/Queries/GetMaterialProperty.js.map +1 -0
  130. package/dist/Nodes/Queries/GetMeshPosition.d.ts +16 -0
  131. package/dist/Nodes/Queries/GetMeshPosition.d.ts.map +1 -0
  132. package/dist/Nodes/Queries/GetMeshPosition.js +29 -0
  133. package/dist/Nodes/Queries/GetMeshPosition.js.map +1 -0
  134. package/dist/Nodes/Queries/GetSceneProperty.d.ts +14 -0
  135. package/dist/Nodes/Queries/GetSceneProperty.d.ts.map +1 -0
  136. package/dist/Nodes/Queries/GetSceneProperty.js +23 -0
  137. package/dist/Nodes/Queries/GetSceneProperty.js.map +1 -0
  138. package/dist/Values/ColorValue.d.ts +7 -0
  139. package/dist/Values/ColorValue.d.ts.map +1 -0
  140. package/dist/Values/ColorValue.js +20 -0
  141. package/dist/Values/ColorValue.js.map +1 -0
  142. package/dist/Values/EulerValue.d.ts +7 -0
  143. package/dist/Values/EulerValue.d.ts.map +1 -0
  144. package/dist/Values/EulerValue.js +20 -0
  145. package/dist/Values/EulerValue.js.map +1 -0
  146. package/dist/Values/Internal/Mat3.d.ts +43 -0
  147. package/dist/Values/Internal/Mat3.d.ts.map +1 -0
  148. package/dist/Values/Internal/Mat3.js +276 -0
  149. package/dist/Values/Internal/Mat3.js.map +1 -0
  150. package/dist/Values/Internal/Mat4.d.ts +53 -0
  151. package/dist/Values/Internal/Mat4.d.ts.map +1 -0
  152. package/dist/Values/Internal/Mat4.js +443 -0
  153. package/dist/Values/Internal/Mat4.js.map +1 -0
  154. package/dist/Values/Internal/Vec2.d.ts +25 -0
  155. package/dist/Values/Internal/Vec2.d.ts.map +1 -0
  156. package/dist/Values/Internal/Vec2.js +64 -0
  157. package/dist/Values/Internal/Vec2.js.map +1 -0
  158. package/dist/Values/Internal/Vec3.d.ts +38 -0
  159. package/dist/Values/Internal/Vec3.d.ts.map +1 -0
  160. package/dist/Values/Internal/Vec3.js +157 -0
  161. package/dist/Values/Internal/Vec3.js.map +1 -0
  162. package/dist/Values/Internal/Vec4.d.ts +49 -0
  163. package/dist/Values/Internal/Vec4.d.ts.map +1 -0
  164. package/dist/Values/Internal/Vec4.js +190 -0
  165. package/dist/Values/Internal/Vec4.js.map +1 -0
  166. package/dist/Values/Mat3Value.d.ts +7 -0
  167. package/dist/Values/Mat3Value.d.ts.map +1 -0
  168. package/dist/Values/Mat3Value.js +16 -0
  169. package/dist/Values/Mat3Value.js.map +1 -0
  170. package/dist/Values/Mat4Value.d.ts +7 -0
  171. package/dist/Values/Mat4Value.d.ts.map +1 -0
  172. package/dist/Values/Mat4Value.js +16 -0
  173. package/dist/Values/Mat4Value.js.map +1 -0
  174. package/dist/Values/QuatValue.d.ts +7 -0
  175. package/dist/Values/QuatValue.d.ts.map +1 -0
  176. package/dist/Values/QuatValue.js +21 -0
  177. package/dist/Values/QuatValue.js.map +1 -0
  178. package/dist/Values/Vec2Value.d.ts +7 -0
  179. package/dist/Values/Vec2Value.d.ts.map +1 -0
  180. package/dist/Values/Vec2Value.js +16 -0
  181. package/dist/Values/Vec2Value.js.map +1 -0
  182. package/dist/Values/Vec3Value.d.ts +7 -0
  183. package/dist/Values/Vec3Value.d.ts.map +1 -0
  184. package/dist/Values/Vec3Value.js +20 -0
  185. package/dist/Values/Vec3Value.js.map +1 -0
  186. package/dist/Values/Vec4Value.d.ts +7 -0
  187. package/dist/Values/Vec4Value.d.ts.map +1 -0
  188. package/dist/Values/Vec4Value.js +21 -0
  189. package/dist/Values/Vec4Value.js.map +1 -0
  190. package/dist/_virtual/rolldown_runtime.js +35 -0
  191. package/dist/behave-graph.manifest.json +6082 -0
  192. package/dist/buildScene.d.ts +74 -0
  193. package/dist/buildScene.d.ts.map +1 -0
  194. package/dist/buildScene.js +304 -0
  195. package/dist/buildScene.js.map +1 -0
  196. package/dist/index.d.ts +57 -0
  197. package/dist/index.d.ts.map +1 -0
  198. package/dist/index.js +49 -0
  199. package/dist/manifest.source.d.ts +7 -0
  200. package/dist/manifest.source.d.ts.map +1 -0
  201. package/dist/manifest.source.js +54 -0
  202. package/dist/manifest.source.js.map +1 -0
  203. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.development.js +207 -0
  204. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  205. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js +40 -0
  206. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -0
  207. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.development.js +766 -0
  208. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.development.js.map +1 -0
  209. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.production.js +367 -0
  210. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.production.js.map +1 -0
  211. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/index.js +15 -0
  212. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/index.js.map +1 -0
  213. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js +15 -0
  214. package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js.map +1 -0
  215. package/dist/packages/nodes/scene/package.js +7 -0
  216. package/dist/packages/nodes/scene/package.js.map +1 -0
  217. package/dist/registerSceneProfile.d.ts +10 -0
  218. package/dist/registerSceneProfile.d.ts.map +1 -0
  219. package/dist/registerSceneProfile.js +112 -0
  220. package/dist/registerSceneProfile.js.map +1 -0
  221. package/dist/ui/controls/vec3.d.ts +9 -0
  222. package/dist/ui/controls/vec3.d.ts.map +1 -0
  223. package/dist/ui/controls/vec3.js +99 -0
  224. package/dist/ui/controls/vec3.js.map +1 -0
  225. package/package.json +42 -13
  226. package/src/Abstractions/Drivers/DummyScene.ts +110 -2
  227. package/src/Abstractions/IScene.ts +74 -3
  228. package/src/Nodes/Actions/AddLight.ts +46 -0
  229. package/src/Nodes/Actions/CloneMesh.ts +31 -0
  230. package/src/Nodes/Actions/CreateMesh.ts +47 -0
  231. package/src/Nodes/Actions/DeleteMesh.ts +29 -0
  232. package/src/Nodes/Actions/EaseSceneProperty.ts +6 -2
  233. package/src/Nodes/Actions/LookAt.ts +34 -0
  234. package/src/Nodes/Actions/MoveTowards.ts +55 -0
  235. package/src/Nodes/Actions/RemoveLight.ts +29 -0
  236. package/src/Nodes/Actions/SetLightProperty.ts +60 -0
  237. package/src/Nodes/Actions/SetMaterialProperty.ts +62 -0
  238. package/src/Nodes/Actions/SetMeshPosition.ts +37 -0
  239. package/src/Nodes/Actions/SetMeshVisible.ts +31 -0
  240. package/src/Nodes/Actions/SetSceneProperty.ts +3 -5
  241. package/src/Nodes/Events/OnAnyMeshClicked.ts +48 -0
  242. package/src/Nodes/Events/OnSceneChanged.ts +43 -0
  243. package/src/Nodes/Events/OnSceneNodeClick.ts +3 -3
  244. package/src/Nodes/Logic/Mat3Nodes.ts +0 -10
  245. package/src/Nodes/Logic/QuatNodes.ts +11 -11
  246. package/src/Nodes/Queries/GetDistanceBetween.ts +37 -0
  247. package/src/Nodes/Queries/GetLightProperty.ts +53 -0
  248. package/src/Nodes/Queries/GetMaterialProperty.ts +55 -0
  249. package/src/Nodes/Queries/GetMeshPosition.ts +32 -0
  250. package/src/Nodes/Queries/GetSceneProperty.ts +4 -5
  251. package/src/Values/Internal/Mat3.ts +3 -3
  252. package/src/Values/Internal/Mat4.ts +5 -4
  253. package/src/Values/Internal/Vec3.ts +5 -4
  254. package/src/Values/Internal/Vec4.ts +3 -2
  255. package/src/buildScene.ts +36 -2
  256. package/src/index.ts +26 -2
  257. package/src/manifest.source.ts +61 -0
  258. package/src/registerSceneProfile.ts +41 -4
  259. package/src/ui/controls/vec3.tsx +69 -0
  260. package/stories/click.stories.tsx +112 -0
  261. package/stories/components/DemoScene.ts +610 -0
  262. package/stories/components/SceneViewer.tsx +204 -0
  263. package/stories/components/SceneViewerPanel.tsx +41 -0
  264. package/stories/data/clickDemo.json +94 -0
  265. package/stories/data/rotate.json +402 -0
  266. package/stories/index.stories.tsx +90 -0
  267. package/stories/plugin/sceneViewerPlugin.tsx +88 -0
  268. package/tests/graphs/logic/Color.json +53 -53
  269. package/tests/graphs/logic/Euler.json +53 -53
  270. package/tests/graphs/logic/Quaternion.json +56 -56
  271. package/tests/graphs/logic/Vector2.json +50 -50
  272. package/tests/graphs/logic/Vector3.json +53 -53
  273. package/tests/graphs/logic/Vector4.json +56 -56
  274. package/tests/manifest.test.ts +65 -0
  275. package/tests/readSceneGraphs.test.ts +8 -1
  276. package/tests/registerSceneProfile.test.ts +6 -5
  277. package/tests/tsconfig.json +10 -10
  278. package/tsconfig.json +61 -54
  279. package/tsdown.config.ts +5 -1
  280. package/vite.config.js +7 -0
  281. package/src/Values/Internal/Mat2.ts +0 -214
  282. package/src/loadScene.ts +0 -81
@@ -0,0 +1,69 @@
1
+ import { NodeCategory, makeFunctionNodeDefinition } from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Nodes/Queries/GetMaterialProperty.ts
4
+ const materialPropertyChoices = [
5
+ {
6
+ text: "color",
7
+ value: "color"
8
+ },
9
+ {
10
+ text: "opacity",
11
+ value: "opacity"
12
+ },
13
+ {
14
+ text: "visible",
15
+ value: "visible"
16
+ },
17
+ {
18
+ text: "wireframe",
19
+ value: "wireframe"
20
+ }
21
+ ];
22
+ const GetMaterialProperty = makeFunctionNodeDefinition({
23
+ typeName: "scene/getMaterialProperty",
24
+ category: NodeCategory.Query,
25
+ label: "Get Material Property",
26
+ in: {
27
+ meshName: (_, graphApi) => {
28
+ return {
29
+ valueType: "string",
30
+ choices: graphApi.getDependency("IScene")?.getMeshNames()
31
+ };
32
+ },
33
+ property: (_) => ({
34
+ valueType: "string",
35
+ choices: materialPropertyChoices
36
+ })
37
+ },
38
+ out: {
39
+ floatValue: "float",
40
+ booleanValue: "boolean",
41
+ colorValue: "color"
42
+ },
43
+ exec: ({ graph, read, write }) => {
44
+ const scene = graph.getDependency("IScene");
45
+ const meshName = read("meshName");
46
+ const property = read("property");
47
+ const value = scene?.getMaterialProperty(meshName, property);
48
+ switch (property) {
49
+ case "color":
50
+ write("colorValue", value ?? {
51
+ r: 0,
52
+ g: 0,
53
+ b: 0
54
+ });
55
+ break;
56
+ case "opacity":
57
+ write("floatValue", value ?? 1);
58
+ break;
59
+ case "visible":
60
+ case "wireframe":
61
+ write("booleanValue", value ?? false);
62
+ break;
63
+ }
64
+ }
65
+ });
66
+
67
+ //#endregion
68
+ export { GetMaterialProperty };
69
+ //# sourceMappingURL=GetMaterialProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMaterialProperty.js","names":[],"sources":["../../../src/Nodes/Queries/GetMaterialProperty.ts"],"sourcesContent":["import {\n makeFunctionNodeDefinition,\n NodeCategory\n} from '@kiberon-labs/behave-graph';\n\nconst materialPropertyChoices = [\n { text: 'color', value: 'color' },\n { text: 'opacity', value: 'opacity' },\n { text: 'visible', value: 'visible' },\n { text: 'wireframe', value: 'wireframe' }\n];\n\nexport const GetMaterialProperty = makeFunctionNodeDefinition({\n typeName: 'scene/getMaterialProperty',\n category: NodeCategory.Query,\n label: 'Get Material Property',\n in: {\n meshName: (_, graphApi) => {\n const scene = graphApi.getDependency('IScene');\n return {\n valueType: 'string',\n choices: scene?.getMeshNames()\n };\n },\n property: (_) => ({\n valueType: 'string',\n choices: materialPropertyChoices\n })\n },\n out: {\n floatValue: 'float',\n booleanValue: 'boolean',\n colorValue: 'color'\n },\n exec: ({ graph, read, write }) => {\n const scene = graph.getDependency('IScene');\n const meshName = read<string>('meshName');\n const property = read<string>('property');\n\n const value = scene?.getMaterialProperty(meshName, property);\n\n switch (property) {\n case 'color':\n write('colorValue', value ?? { r: 0, g: 0, b: 0 });\n break;\n case 'opacity':\n write('floatValue', (value as number) ?? 1);\n break;\n case 'visible':\n case 'wireframe':\n write('booleanValue', (value as boolean) ?? false);\n break;\n }\n }\n});\n"],"mappings":";;;AAKA,MAAM,0BAA0B;CAC9B;EAAE,MAAM;EAAS,OAAO;EAAS;CACjC;EAAE,MAAM;EAAW,OAAO;EAAW;CACrC;EAAE,MAAM;EAAW,OAAO;EAAW;CACrC;EAAE,MAAM;EAAa,OAAO;EAAa;CAC1C;AAED,MAAa,sBAAsB,2BAA2B;CAC5D,UAAU;CACV,UAAU,aAAa;CACvB,OAAO;CACP,IAAI;EACF,WAAW,GAAG,aAAa;AAEzB,UAAO;IACL,WAAW;IACX,SAHY,SAAS,cAAc,SAAS,EAG5B,cAAc;IAC/B;;EAEH,WAAW,OAAO;GAChB,WAAW;GACX,SAAS;GACV;EACF;CACD,KAAK;EACH,YAAY;EACZ,cAAc;EACd,YAAY;EACb;CACD,OAAO,EAAE,OAAO,MAAM,YAAY;EAChC,MAAM,QAAQ,MAAM,cAAc,SAAS;EAC3C,MAAM,WAAW,KAAa,WAAW;EACzC,MAAM,WAAW,KAAa,WAAW;EAEzC,MAAM,QAAQ,OAAO,oBAAoB,UAAU,SAAS;AAE5D,UAAQ,UAAR;GACE,KAAK;AACH,UAAM,cAAc,SAAS;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG,CAAC;AAClD;GACF,KAAK;AACH,UAAM,cAAe,SAAoB,EAAE;AAC3C;GACF,KAAK;GACL,KAAK;AACH,UAAM,gBAAiB,SAAqB,MAAM;AAClD;;;CAGP,CAAC"}
@@ -0,0 +1,16 @@
1
+ import * as _kiberon_labs_behave_graph345 from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Nodes/Queries/GetMeshPosition.d.ts
4
+ declare const GetMeshPosition: _kiberon_labs_behave_graph345.IFunctionNodeDefinition<{
5
+ meshName: (_: _kiberon_labs_behave_graph345.NodeConfiguration, graphApi: _kiberon_labs_behave_graph345.IGraph) => {
6
+ valueType: string;
7
+ choices: _kiberon_labs_behave_graph345.Choices | undefined;
8
+ };
9
+ }, {
10
+ x: string;
11
+ y: string;
12
+ z: string;
13
+ }, _kiberon_labs_behave_graph345.NodeConfigurationDescription>;
14
+ //#endregion
15
+ export { GetMeshPosition };
16
+ //# sourceMappingURL=GetMeshPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMeshPosition.d.ts","names":[],"sources":["../../../src/Nodes/Queries/GetMeshPosition.ts"],"sourcesContent":[],"mappings":";;;cAMa,+CAAe;gBAyB1B,6BAAA,CAAA;;IAzBW,OAAA,0CAyBX,SAAA;EAAA,CAAA;;;;;CAzB0B,6DAAA"}
@@ -0,0 +1,29 @@
1
+ import { NodeCategory, makeFunctionNodeDefinition } from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Nodes/Queries/GetMeshPosition.ts
4
+ const GetMeshPosition = makeFunctionNodeDefinition({
5
+ typeName: "scene/getMeshPosition",
6
+ category: NodeCategory.Query,
7
+ label: "Get Mesh Position",
8
+ in: { meshName: (_, graphApi) => {
9
+ return {
10
+ valueType: "string",
11
+ choices: graphApi.getDependency("IScene")?.getMeshNames()
12
+ };
13
+ } },
14
+ out: {
15
+ x: "float",
16
+ y: "float",
17
+ z: "float"
18
+ },
19
+ exec: ({ graph, read, write }) => {
20
+ const pos = graph.getDependency("IScene")?.getMeshPosition(read("meshName"));
21
+ write("x", pos?.x ?? 0);
22
+ write("y", pos?.y ?? 0);
23
+ write("z", pos?.z ?? 0);
24
+ }
25
+ });
26
+
27
+ //#endregion
28
+ export { GetMeshPosition };
29
+ //# sourceMappingURL=GetMeshPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMeshPosition.js","names":[],"sources":["../../../src/Nodes/Queries/GetMeshPosition.ts"],"sourcesContent":["import {\n makeFunctionNodeDefinition,\n NodeCategory\n} from '@kiberon-labs/behave-graph';\n\n// Get the world-space position of a mesh.\nexport const GetMeshPosition = makeFunctionNodeDefinition({\n typeName: 'scene/getMeshPosition',\n category: NodeCategory.Query,\n label: 'Get Mesh Position',\n in: {\n meshName: (_, graphApi) => {\n const scene = graphApi.getDependency('IScene');\n return {\n valueType: 'string',\n choices: scene?.getMeshNames()\n };\n }\n },\n out: {\n x: 'float',\n y: 'float',\n z: 'float'\n },\n exec: ({ graph, read, write }) => {\n const scene = graph.getDependency('IScene');\n const pos = scene?.getMeshPosition(read<string>('meshName'));\n write('x', pos?.x ?? 0);\n write('y', pos?.y ?? 0);\n write('z', pos?.z ?? 0);\n }\n});\n"],"mappings":";;;AAMA,MAAa,kBAAkB,2BAA2B;CACxD,UAAU;CACV,UAAU,aAAa;CACvB,OAAO;CACP,IAAI,EACF,WAAW,GAAG,aAAa;AAEzB,SAAO;GACL,WAAW;GACX,SAHY,SAAS,cAAc,SAAS,EAG5B,cAAc;GAC/B;IAEJ;CACD,KAAK;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACJ;CACD,OAAO,EAAE,OAAO,MAAM,YAAY;EAEhC,MAAM,MADQ,MAAM,cAAc,SAAS,EACxB,gBAAgB,KAAa,WAAW,CAAC;AAC5D,QAAM,KAAK,KAAK,KAAK,EAAE;AACvB,QAAM,KAAK,KAAK,KAAK,EAAE;AACvB,QAAM,KAAK,KAAK,KAAK,EAAE;;CAE1B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as _kiberon_labs_behave_graph350 from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Nodes/Queries/GetSceneProperty.d.ts
4
+ declare const GetSceneProperty: (valueTypeNames: string[]) => _kiberon_labs_behave_graph350.IFunctionNodeDefinition<{
5
+ jsonPath: (_: _kiberon_labs_behave_graph350.NodeConfiguration, graphApi: _kiberon_labs_behave_graph350.IGraph) => {
6
+ valueType: string;
7
+ choices: _kiberon_labs_behave_graph350.Choices | undefined;
8
+ };
9
+ }, {
10
+ value: string;
11
+ }, _kiberon_labs_behave_graph350.NodeConfigurationDescription>[];
12
+ //#endregion
13
+ export { GetSceneProperty };
14
+ //# sourceMappingURL=GetSceneProperty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetSceneProperty.d.ts","names":[],"sources":["../../../src/Nodes/Queries/GetSceneProperty.ts"],"sourcesContent":[],"mappings":";;;cAKa,8EAA4C;gBA4BtD,6BAAA,CAAA;;IA5BU,OAAA,0CA4BV,SAAA;EAAA,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { NodeCategory, makeFunctionNodeDefinition } from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Nodes/Queries/GetSceneProperty.ts
4
+ const GetSceneProperty = (valueTypeNames) => valueTypeNames.map((valueTypeName) => makeFunctionNodeDefinition({
5
+ typeName: `scene/get/${valueTypeName}`,
6
+ category: NodeCategory.Query,
7
+ label: `Scene get ${valueTypeName}`,
8
+ in: { jsonPath: (_, graphApi) => {
9
+ return {
10
+ valueType: "string",
11
+ choices: graphApi.getDependency("IScene")?.getProperties(valueTypeName)
12
+ };
13
+ } },
14
+ out: { value: valueTypeName },
15
+ exec: ({ graph, read, write }) => {
16
+ const propertyValue = graph.getDependency("IScene")?.getProperty(read("jsonPath"), valueTypeName);
17
+ write("value", propertyValue);
18
+ }
19
+ }));
20
+
21
+ //#endregion
22
+ export { GetSceneProperty };
23
+ //# sourceMappingURL=GetSceneProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetSceneProperty.js","names":[],"sources":["../../../src/Nodes/Queries/GetSceneProperty.ts"],"sourcesContent":["import {\n makeFunctionNodeDefinition,\n NodeCategory\n} from '@kiberon-labs/behave-graph';\n\nexport const GetSceneProperty = (valueTypeNames: string[]) =>\n valueTypeNames.map((valueTypeName) =>\n makeFunctionNodeDefinition({\n typeName: `scene/get/${valueTypeName}`,\n category: NodeCategory.Query,\n label: `Scene get ${valueTypeName}`,\n in: {\n jsonPath: (_, graphApi) => {\n const scene = graphApi.getDependency('IScene');\n\n return {\n valueType: 'string',\n choices: scene?.getProperties(valueTypeName)\n };\n }\n },\n out: {\n value: valueTypeName\n },\n exec: ({ graph, read, write }) => {\n const scene = graph.getDependency('IScene');\n const propertyValue = scene?.getProperty(\n read('jsonPath'),\n valueTypeName\n );\n write('value', propertyValue);\n }\n })\n );\n"],"mappings":";;;AAKA,MAAa,oBAAoB,mBAC/B,eAAe,KAAK,kBAClB,2BAA2B;CACzB,UAAU,aAAa;CACvB,UAAU,aAAa;CACvB,OAAO,aAAa;CACpB,IAAI,EACF,WAAW,GAAG,aAAa;AAGzB,SAAO;GACL,WAAW;GACX,SAJY,SAAS,cAAc,SAAS,EAI5B,cAAc,cAAc;GAC7C;IAEJ;CACD,KAAK,EACH,OAAO,eACR;CACD,OAAO,EAAE,OAAO,MAAM,YAAY;EAEhC,MAAM,gBADQ,MAAM,cAAc,SAAS,EACd,YAC3B,KAAK,WAAW,EAChB,cACD;AACD,QAAM,SAAS,cAAc;;CAEhC,CAAC,CACH"}
@@ -0,0 +1,7 @@
1
+ import { ValueType } from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Values/ColorValue.d.ts
4
+ declare const ColorValue: ValueType;
5
+ //#endregion
6
+ export { ColorValue };
7
+ //# sourceMappingURL=ColorValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorValue.d.ts","names":[],"sources":["../../src/Values/ColorValue.ts"],"sourcesContent":[],"mappings":";;;cAUa,YAAY"}
@@ -0,0 +1,20 @@
1
+ import { Vec3, vec3Equals, vec3Mix, vec3Parse } from "./Internal/Vec3.js";
2
+
3
+ //#region src/Values/ColorValue.ts
4
+ const ColorValue = {
5
+ name: "color",
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 { ColorValue };
20
+ //# sourceMappingURL=ColorValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorValue.js","names":["ColorValue: ValueType"],"sources":["../../src/Values/ColorValue.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 ColorValue: ValueType = {\n name: 'color',\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,aAAwB;CACnC,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"}
@@ -0,0 +1,7 @@
1
+ import { ValueType } from "@kiberon-labs/behave-graph";
2
+
3
+ //#region src/Values/EulerValue.d.ts
4
+ declare const EulerValue: ValueType;
5
+ //#endregion
6
+ export { EulerValue };
7
+ //# sourceMappingURL=EulerValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EulerValue.d.ts","names":[],"sources":["../../src/Values/EulerValue.ts"],"sourcesContent":[],"mappings":";;;cAUa,YAAY"}
@@ -0,0 +1,20 @@
1
+ import { Vec3, vec3Equals, vec3Mix, vec3Parse } from "./Internal/Vec3.js";
2
+
3
+ //#region src/Values/EulerValue.ts
4
+ const EulerValue = {
5
+ name: "euler",
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 { EulerValue };
20
+ //# sourceMappingURL=EulerValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EulerValue.js","names":["EulerValue: ValueType"],"sources":["../../src/Values/EulerValue.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 EulerValue: ValueType = {\n name: 'euler',\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,aAAwB;CACnC,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"}
@@ -0,0 +1,43 @@
1
+ import { Vec2 } from "./Vec2.js";
2
+ import { Vec4 } from "./Vec4.js";
3
+ import { Vec3 } from "./Vec3.js";
4
+ import { Mat4 } from "./Mat4.js";
5
+
6
+ //#region src/Values/Internal/Mat3.d.ts
7
+ type Mat3Elements = [number, number, number, number, number, number, number, number, number];
8
+ type Mat3JSON = Mat3Elements;
9
+ declare class Mat3 {
10
+ elements: Mat3Elements;
11
+ constructor(elements?: Mat3Elements);
12
+ clone(result?: Mat3): Mat3;
13
+ set(elements: Mat3Elements): this;
14
+ }
15
+ declare function mat3SetColumn3(m: Mat3, columnIndex: number, column: Vec3, result?: Mat3): Mat3;
16
+ declare function mat3SetRow3(m: Mat3, rowIndex: number, row: Vec3, result?: Mat3): Mat3;
17
+ declare function column3ToMat3(a: Vec3, b: Vec3, c: Vec3, result?: Mat3): Mat3;
18
+ declare function mat3Equals(a: Mat3, b: Mat3, tolerance?: number): boolean;
19
+ declare function mat3Add(a: Mat3, b: Mat3, result?: Mat3): Mat3;
20
+ declare function mat3Subtract(a: Mat3, b: Mat3, result?: Mat3): Mat3;
21
+ declare function mat3MultiplyByScalar(a: Mat3, b: number, result?: Mat3): Mat3;
22
+ declare function mat3Negate(a: Mat3, result?: Mat3): Mat3;
23
+ declare function mat3Multiply(a: Mat3, b: Mat3, result?: Mat3): Mat3;
24
+ declare function mat3Determinant(m: Mat3): number;
25
+ declare function mat3Transpose(m: Mat3, result?: Mat3): Mat3;
26
+ declare function mat3Inverse(m: Mat3, result?: Mat3): Mat3;
27
+ declare function mat3Mix(a: Mat3, b: Mat3, t: number, result?: Mat3): Mat3;
28
+ declare function mat3FromArray(array: Float32Array | number[], offset?: number, result?: Mat3): Mat3;
29
+ declare function mat3ToArray(a: Mat3, array: Float32Array | number[], offset?: number): void;
30
+ declare function mat3ToString(a: Mat3): string;
31
+ declare function mat3Parse(text: string, result?: Mat3): Mat3;
32
+ declare function eulerToMat3(euler: Vec3, result?: Mat3): Mat3;
33
+ declare function quatToMat3(q: Vec4, result?: Mat3): Mat3;
34
+ declare function scale2ToMat3(s: Vec2, result?: Mat3): Mat3;
35
+ declare function mat3ToScale2(m: Mat4, result?: Vec2): Vec2;
36
+ declare function translation2ToMat3(t: Vec2, result?: Mat3): Mat3;
37
+ declare function mat3ToTranslation2(m: Mat3, result?: Vec2): Vec2;
38
+ declare function scale3ToMat3(s: Vec3, result?: Mat3): Mat3;
39
+ declare function mat3ToScale3(m: Mat4, result?: Vec3): Vec3;
40
+ declare function mat4ToMat3(a: Mat4, result?: Mat3): Mat3;
41
+ //#endregion
42
+ export { Mat3, Mat3JSON, column3ToMat3, eulerToMat3, mat3Add, mat3Determinant, mat3Equals, mat3FromArray, mat3Inverse, mat3Mix, mat3Multiply, mat3MultiplyByScalar, mat3Negate, mat3Parse, mat3SetColumn3, mat3SetRow3, mat3Subtract, mat3ToArray, mat3ToScale2, mat3ToScale3, mat3ToString, mat3ToTranslation2, mat3Transpose, mat4ToMat3, quatToMat3, scale2ToMat3, scale3ToMat3, translation2ToMat3 };
43
+ //# sourceMappingURL=Mat3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mat3.d.ts","names":[],"sources":["../../../src/Values/Internal/Mat3.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ import { Vec2 } from "./Vec2.js";
2
+ import { Vec3 } from "./Vec3.js";
3
+ import { EPSILON, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
4
+
5
+ //#region src/Values/Internal/Mat3.ts
6
+ const NUM_ROWS = 3;
7
+ const NUM_COLUMNS = 3;
8
+ const NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;
9
+ var Mat3 = class Mat3 {
10
+ elements;
11
+ constructor(elements = [
12
+ 1,
13
+ 0,
14
+ 0,
15
+ 0,
16
+ 1,
17
+ 0,
18
+ 0,
19
+ 0,
20
+ 1
21
+ ]) {
22
+ if (elements.length !== NUM_ELEMENTS) throw new Error(`elements must have length ${NUM_ELEMENTS}, got ${elements.length}`);
23
+ this.elements = elements;
24
+ }
25
+ clone(result = new Mat3()) {
26
+ return result.set(this.elements);
27
+ }
28
+ set(elements) {
29
+ if (elements.length !== NUM_ELEMENTS) throw new Error(`elements must have length ${NUM_ELEMENTS}, got ${elements.length}`);
30
+ this.elements = [...elements];
31
+ return this;
32
+ }
33
+ };
34
+ function mat3SetColumn3(m, columnIndex, column, result = new Mat3()) {
35
+ const re = result.set(m.elements).elements;
36
+ const base = columnIndex * NUM_ROWS;
37
+ re[base + 0] = column.x;
38
+ re[base + 1] = column.y;
39
+ re[base + 2] = column.z;
40
+ return result;
41
+ }
42
+ function mat3SetRow3(m, rowIndex, row, result = new Mat3()) {
43
+ const re = result.set(m.elements).elements;
44
+ re[rowIndex] = row.x;
45
+ re[rowIndex + NUM_COLUMNS * 1] = row.y;
46
+ re[rowIndex + NUM_COLUMNS * 2] = row.z;
47
+ return result;
48
+ }
49
+ function column3ToMat3(a, b, c, result = new Mat3()) {
50
+ const re = result.elements;
51
+ const columns = [
52
+ a,
53
+ b,
54
+ c
55
+ ];
56
+ for (let c$1 = 0; c$1 < columns.length; c$1++) {
57
+ const base = c$1 * NUM_ROWS;
58
+ const column = columns[c$1];
59
+ re[base + 0] = column.x;
60
+ re[base + 1] = column.y;
61
+ re[base + 2] = column.z;
62
+ }
63
+ return result;
64
+ }
65
+ function mat3Equals(a, b, tolerance = EPSILON) {
66
+ for (let i = 0; i < NUM_ELEMENTS; i++) if (!equalsTolerance(a.elements[i], b.elements[i], tolerance)) return false;
67
+ return true;
68
+ }
69
+ function mat3Add(a, b, result = new Mat3()) {
70
+ for (let i = 0; i < NUM_ELEMENTS; i++) result.elements[i] = a.elements[i] + b.elements[i];
71
+ return result;
72
+ }
73
+ function mat3Subtract(a, b, result = new Mat3()) {
74
+ result.elements = a.elements.map((a$1, i) => a$1 - b.elements[i]);
75
+ return result;
76
+ }
77
+ function mat3MultiplyByScalar(a, b, result = new Mat3()) {
78
+ result.elements = a.elements.map((x) => x * b);
79
+ return result;
80
+ }
81
+ function mat3Negate(a, result = new Mat3()) {
82
+ result.elements = a.elements.map((x) => -x);
83
+ return result;
84
+ }
85
+ function mat3Multiply(a, b, result = new Mat3()) {
86
+ const ae = a.elements;
87
+ const be = b.elements;
88
+ const te = result.elements;
89
+ const a11 = ae[0], a12 = ae[3], a13 = ae[6];
90
+ const a21 = ae[1], a22 = ae[4], a23 = ae[7];
91
+ const a31 = ae[2], a32 = ae[5], a33 = ae[8];
92
+ const b11 = be[0], b12 = be[3], b13 = be[6];
93
+ const b21 = be[1], b22 = be[4], b23 = be[7];
94
+ const b31 = be[2], b32 = be[5], b33 = be[8];
95
+ te[0] = a11 * b11 + a12 * b21 + a13 * b31;
96
+ te[3] = a11 * b12 + a12 * b22 + a13 * b32;
97
+ te[6] = a11 * b13 + a12 * b23 + a13 * b33;
98
+ te[1] = a21 * b11 + a22 * b21 + a23 * b31;
99
+ te[4] = a21 * b12 + a22 * b22 + a23 * b32;
100
+ te[7] = a21 * b13 + a22 * b23 + a23 * b33;
101
+ te[2] = a31 * b11 + a32 * b21 + a33 * b31;
102
+ te[5] = a31 * b12 + a32 * b22 + a33 * b32;
103
+ te[8] = a31 * b13 + a32 * b23 + a33 * b33;
104
+ return result;
105
+ }
106
+ function mat3Determinant(m) {
107
+ const me = m.elements;
108
+ const a = me[0], b = me[1], c = me[2], d = me[3], e = me[4], f = me[5], g = me[6], h = me[7], i = me[8];
109
+ return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;
110
+ }
111
+ function mat3Transpose(m, result = new Mat3()) {
112
+ const me = m.elements;
113
+ const te = result.elements;
114
+ te[0] = me[0];
115
+ te[4] = me[4];
116
+ te[8] = me[8];
117
+ te[1] = me[3];
118
+ te[3] = me[1];
119
+ te[2] = me[6];
120
+ te[6] = me[2];
121
+ te[5] = me[7];
122
+ te[7] = me[5];
123
+ return result;
124
+ }
125
+ function mat3Inverse(m, result = new Mat3()) {
126
+ const e = m.elements;
127
+ const n11 = e[0], n21 = e[1], n31 = e[2], n12 = e[3], n22 = e[4], n32 = e[5], n13 = e[6], n23 = e[7], n33 = e[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;
128
+ if (det === 0) throw new Error("can not invert degenerate matrix");
129
+ const detInv = 1 / det;
130
+ const re = result.elements;
131
+ re[0] = t11 * detInv;
132
+ re[1] = (n31 * n23 - n33 * n21) * detInv;
133
+ re[2] = (n32 * n21 - n31 * n22) * detInv;
134
+ re[3] = t12 * detInv;
135
+ re[4] = (n33 * n11 - n31 * n13) * detInv;
136
+ re[5] = (n31 * n12 - n32 * n11) * detInv;
137
+ re[6] = t13 * detInv;
138
+ re[7] = (n21 * n13 - n23 * n11) * detInv;
139
+ re[8] = (n22 * n11 - n21 * n12) * detInv;
140
+ return result;
141
+ }
142
+ function mat3Mix(a, b, t, result = new Mat3()) {
143
+ const s = 1 - t;
144
+ for (let i = 0; i < NUM_ELEMENTS; i++) result.elements[i] = a.elements[i] * s + b.elements[i] * t;
145
+ return result;
146
+ }
147
+ function mat3FromArray(array, offset = 0, result = new Mat3()) {
148
+ for (let i = 0; i < NUM_ELEMENTS; i++) result.elements[i] = array[offset + i];
149
+ return result;
150
+ }
151
+ function mat3ToArray(a, array, offset = 0) {
152
+ for (let i = 0; i < NUM_ELEMENTS; i++) array[offset + i] = a.elements[i];
153
+ }
154
+ function mat3ToString(a) {
155
+ return toSafeString(a.elements);
156
+ }
157
+ function mat3Parse(text, result = new Mat3()) {
158
+ return mat3FromArray(parseSafeFloats(text), 0, result);
159
+ }
160
+ function eulerToMat3(euler, result = new Mat3()) {
161
+ const te = result.elements;
162
+ const x = euler.x, y = euler.y, z = euler.z;
163
+ const a = Math.cos(x), b = Math.sin(x);
164
+ const c = Math.cos(y), d = Math.sin(y);
165
+ const e = Math.cos(z), f = Math.sin(z);
166
+ const ae = a * e, af = a * f, be = b * e, bf = b * f;
167
+ te[0] = c * e;
168
+ te[3] = -c * f;
169
+ te[6] = d;
170
+ te[1] = af + be * d;
171
+ te[4] = ae - bf * d;
172
+ te[7] = -b * c;
173
+ te[2] = bf - ae * d;
174
+ te[5] = be + af * d;
175
+ te[8] = a * c;
176
+ return result;
177
+ }
178
+ function quatToMat3(q, result = new Mat3()) {
179
+ const x = q.x, y = q.y, z = q.z, w = q.w;
180
+ const x2 = x + x, y2 = y + y, z2 = z + z;
181
+ const xx = x * x2, xy = x * y2, xz = x * z2;
182
+ const yy = y * y2, yz = y * z2, zz = z * z2;
183
+ const wx = w * x2, wy = w * y2, wz = w * z2;
184
+ return result.set([
185
+ 1 - (yy + zz),
186
+ xy - wz,
187
+ xz + wy,
188
+ xy + wz,
189
+ 1 - (xx + zz),
190
+ yz - wx,
191
+ xz - wy,
192
+ yz + wx,
193
+ 1 - (xx + yy)
194
+ ]);
195
+ }
196
+ function scale2ToMat3(s, result = new Mat3()) {
197
+ return result.set([
198
+ s.x,
199
+ 0,
200
+ 0,
201
+ 0,
202
+ s.y,
203
+ 0,
204
+ 0,
205
+ 0,
206
+ 1
207
+ ]);
208
+ }
209
+ function mat3ToScale2(m, result = new Vec2()) {
210
+ const mat = m.elements;
211
+ const m11 = mat[0];
212
+ const m12 = mat[1];
213
+ const m21 = mat[3];
214
+ const m22 = mat[4];
215
+ return result.set(Math.sqrt(m11 * m11 + m12 * m12), Math.sqrt(m21 * m21 + m22 * m22));
216
+ }
217
+ function translation2ToMat3(t, result = new Mat3()) {
218
+ return result.set([
219
+ 1,
220
+ 0,
221
+ t.x,
222
+ 0,
223
+ 1,
224
+ t.y,
225
+ 0,
226
+ 0,
227
+ 1
228
+ ]);
229
+ }
230
+ function mat3ToTranslation2(m, result = new Vec2()) {
231
+ return result.set(m.elements[2], m.elements[5]);
232
+ }
233
+ function scale3ToMat3(s, result = new Mat3()) {
234
+ return result.set([
235
+ s.x,
236
+ 0,
237
+ 0,
238
+ 0,
239
+ s.y,
240
+ 0,
241
+ 0,
242
+ 0,
243
+ s.z
244
+ ]);
245
+ }
246
+ function mat3ToScale3(m, result = new Vec3()) {
247
+ const me = m.elements;
248
+ const m11 = me[0];
249
+ const m12 = me[1];
250
+ const m13 = me[2];
251
+ const m21 = me[3];
252
+ const m22 = me[4];
253
+ const m23 = me[5];
254
+ const m31 = me[6];
255
+ const m32 = me[7];
256
+ const m33 = me[8];
257
+ return result.set(Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13), Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23), Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33));
258
+ }
259
+ function mat4ToMat3(a, result = new Mat3()) {
260
+ const ae = a.elements;
261
+ return result.set([
262
+ ae[0],
263
+ ae[1],
264
+ ae[2],
265
+ ae[4],
266
+ ae[5],
267
+ ae[6],
268
+ ae[8],
269
+ ae[9],
270
+ ae[10]
271
+ ]);
272
+ }
273
+
274
+ //#endregion
275
+ export { Mat3, column3ToMat3, eulerToMat3, mat3Add, mat3Determinant, mat3Equals, mat3FromArray, mat3Inverse, mat3Mix, mat3Multiply, mat3MultiplyByScalar, mat3Negate, mat3Parse, mat3SetColumn3, mat3SetRow3, mat3Subtract, mat3ToArray, mat3ToScale2, mat3ToScale3, mat3ToString, mat3ToTranslation2, mat3Transpose, mat4ToMat3, quatToMat3, scale2ToMat3, scale3ToMat3, translation2ToMat3 };
276
+ //# sourceMappingURL=Mat3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mat3.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat3.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport type { Mat4 } from './Mat4.js';\nimport { Vec2 } from './Vec2.js';\nimport { Vec3 } from './Vec3.js';\nimport type { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, 1 ) x [ 0 3 6 ] = ( x', y', 1 )\n// [ 1 4 7 ]\n// [ 2 5 8 ]\n// where elements 2 and 5 would be translation in 2D, as they would multiplied\n// by the last virtual element of the 2D vector.\n\nconst NUM_ROWS = 3;\nconst NUM_COLUMNS = 3;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat3Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat3JSON = Mat3Elements;\n\nexport class Mat3 {\n public elements: Mat3Elements;\n constructor(elements: Mat3Elements = [1, 0, 0, 0, 1, 0, 0, 0, 1]) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat3()): Mat3 {\n return result.set(this.elements);\n }\n set(elements: Mat3Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat3SetColumn3(\n m: Mat3,\n columnIndex: number,\n column: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n const base = columnIndex * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n return result;\n}\n\nexport function mat3SetRow3(\n m: Mat3,\n rowIndex: number,\n row: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n re[rowIndex] = row.x;\n re[rowIndex + NUM_COLUMNS * 1] = row.y;\n re[rowIndex + NUM_COLUMNS * 2] = row.z;\n return result;\n}\n\nexport function column3ToMat3(\n a: Vec3,\n b: Vec3,\n c: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.elements;\n const columns = [a, b, c];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n }\n return result;\n}\n\nexport function mat3Equals(a: Mat3, b: Mat3, tolerance = EPSILON): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\nexport function mat3Add(a: Mat3, b: Mat3, result: Mat3 = new Mat3()): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! + b.elements[i]!;\n }\n return result;\n}\nexport function mat3Subtract(\n a: Mat3,\n b: Mat3,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat3Elements;\n return result;\n}\nexport function mat3MultiplyByScalar(\n a: Mat3,\n b: number,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map((x) => x * b) as Mat3Elements;\n return result;\n}\nexport function mat3Negate(a: Mat3, result: Mat3 = new Mat3()): Mat3 {\n result.elements = a.elements.map((x) => -x) as Mat3Elements;\n return result;\n}\n\nexport function mat3Multiply(a: Mat3, b: Mat3, result = new Mat3()): Mat3 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[3],\n a13 = ae[6];\n const a21 = ae[1],\n a22 = ae[4],\n a23 = ae[7];\n const a31 = ae[2],\n a32 = ae[5],\n a33 = ae[8];\n\n const b11 = be[0],\n b12 = be[3],\n b13 = be[6];\n const b21 = be[1],\n b22 = be[4],\n b23 = be[7];\n const b31 = be[2],\n b32 = be[5],\n b33 = be[8];\n\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return result;\n}\n\nexport function mat3Determinant(m: Mat3): number {\n const me = m.elements;\n\n const a = me[0],\n b = me[1],\n c = me[2],\n d = me[3],\n e = me[4],\n f = me[5],\n g = me[6],\n h = me[7],\n i = me[8];\n\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n}\n\nexport function mat3Transpose(m: Mat3, result = new Mat3()): Mat3 {\n const me = m.elements;\n const te = result.elements;\n\n te[0] = me[0];\n te[4] = me[4];\n te[8] = me[8];\n\n te[1] = me[3];\n te[3] = me[1];\n\n te[2] = me[6];\n te[6] = me[2];\n\n te[5] = me[7];\n te[7] = me[5];\n\n return result;\n}\n\nexport function mat3Inverse(m: Mat3, result = new Mat3()): Mat3 {\n const e = m.elements;\n\n const n11 = e[0],\n n21 = e[1],\n n31 = e[2],\n n12 = e[3],\n n22 = e[4],\n n32 = e[5],\n n13 = e[6],\n n23 = e[7],\n n33 = e[8],\n t11 = n33 * n22 - n32 * n23,\n t12 = n32 * n13 - n33 * n12,\n t13 = n23 * n12 - n22 * n13,\n det = n11 * t11 + n21 * t12 + n31 * t13;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n const re = result.elements;\n\n // TODO: replace with a set\n re[0] = t11 * detInv;\n re[1] = (n31 * n23 - n33 * n21) * detInv;\n re[2] = (n32 * n21 - n31 * n22) * detInv;\n\n re[3] = t12 * detInv;\n re[4] = (n33 * n11 - n31 * n13) * detInv;\n re[5] = (n31 * n12 - n32 * n11) * detInv;\n\n re[6] = t13 * detInv;\n re[7] = (n21 * n13 - n23 * n11) * detInv;\n re[8] = (n22 * n11 - n21 * n12) * detInv;\n\n return result;\n}\n\nexport function mat3Mix(\n a: Mat3,\n b: Mat3,\n t: number,\n result = new Mat3()\n): Mat3 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\nexport function mat3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat3 = new Mat3()\n): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\nexport function mat3ToArray(\n a: Mat3,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat3ToString(a: Mat3): string {\n return toSafeString(a.elements);\n}\nexport function mat3Parse(text: string, result = new Mat3()): Mat3 {\n return mat3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function eulerToMat3(euler: Vec3, result = new Mat3()): Mat3 {\n const te = result.elements;\n\n const x = euler.x,\n y = euler.y,\n z = euler.z;\n const a = Math.cos(x),\n b = Math.sin(x);\n const c = Math.cos(y),\n d = Math.sin(y);\n const e = Math.cos(z),\n f = Math.sin(z);\n\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[3] = -c * f;\n te[6] = d;\n\n te[1] = af + be * d;\n te[4] = ae - bf * d;\n te[7] = -b * c;\n\n te[2] = bf - ae * d;\n te[5] = be + af * d;\n te[8] = a * c;\n\n return result;\n}\n\nexport function quatToMat3(q: Vec4, result = new Mat3()): Mat3 {\n const x = q.x,\n y = q.y,\n z = q.z,\n w = q.w;\n const x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n const xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n const yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n const wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n return result.set([\n 1 - (yy + zz),\n xy - wz,\n xz + wy,\n xy + wz,\n 1 - (xx + zz),\n yz - wx,\n xz - wy,\n yz + wx,\n 1 - (xx + yy)\n ]);\n}\n\nexport function scale2ToMat3(s: Vec2, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat3ToScale2(m: Mat4, result = new Vec2()): Vec2 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m21 = mat[3];\n const m22 = mat[4];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12),\n Math.sqrt(m21 * m21 + m22 * m22)\n );\n}\n\nexport function translation2ToMat3(t: Vec2, result = new Mat3()): Mat3 {\n return result.set([1, 0, t.x, 0, 1, t.y, 0, 0, 1]);\n}\nexport function mat3ToTranslation2(m: Mat3, result = new Vec2()): Vec2 {\n return result.set(m.elements[2], m.elements[5]);\n}\n\nexport function scale3ToMat3(s: Vec3, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, s.z]);\n}\n// from gl-matrix\nexport function mat3ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n const m11 = me[0];\n const m12 = me[1];\n const m13 = me[2];\n const m21 = me[3];\n const m22 = me[4];\n const m23 = me[5];\n const m31 = me[6];\n const m32 = me[7];\n const m33 = me[8];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\nexport function mat4ToMat3(a: Mat4, result = new Mat3()): Mat3 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n ae[4],\n ae[5],\n ae[6],\n ae[8],\n ae[9],\n ae[10]\n ]);\n}\n"],"mappings":"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"}