@needle-tools/engine 2.33.0-pre → 2.35.0-pre

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 (266) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/needle-engine.d.ts +3045 -2855
  3. package/dist/needle-engine.js +457 -407
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +117 -67
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/api.d.ts +3 -0
  8. package/lib/engine/api.js +4 -0
  9. package/lib/engine/api.js.map +1 -0
  10. package/lib/engine/engine.d.ts +4 -3
  11. package/lib/engine/engine_addressables.d.ts +5 -4
  12. package/lib/engine/engine_addressables.js +8 -7
  13. package/lib/engine/engine_addressables.js.map +1 -1
  14. package/lib/engine/engine_components.d.ts +16 -0
  15. package/lib/engine/engine_components.js +223 -0
  16. package/lib/engine/engine_components.js.map +1 -0
  17. package/lib/engine/engine_create_objects.d.ts +11 -0
  18. package/lib/engine/engine_create_objects.js +20 -0
  19. package/lib/engine/engine_create_objects.js.map +1 -0
  20. package/lib/engine/engine_element.js +2 -2
  21. package/lib/engine/engine_element.js.map +1 -1
  22. package/lib/engine/engine_gameobject.d.ts +33 -0
  23. package/lib/engine/engine_gameobject.js +449 -0
  24. package/lib/engine/engine_gameobject.js.map +1 -0
  25. package/lib/engine/engine_gltf.d.ts +13 -2
  26. package/lib/engine/engine_gltf.js +7 -1
  27. package/lib/engine/engine_gltf.js.map +1 -1
  28. package/lib/engine/engine_gltf_builtin_components.d.ts +3 -3
  29. package/lib/engine/engine_gltf_builtin_components.js +2 -3
  30. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  31. package/lib/engine/engine_instancing.d.ts +5 -0
  32. package/lib/engine/engine_instancing.js +22 -0
  33. package/lib/engine/engine_instancing.js.map +1 -0
  34. package/lib/engine/engine_lightdata.d.ts +1 -1
  35. package/lib/engine/engine_lightdata.js.map +1 -1
  36. package/lib/engine/engine_mainloop_utils.d.ts +2 -2
  37. package/lib/engine/engine_mainloop_utils.js +7 -6
  38. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  39. package/lib/engine/engine_networking.d.ts +2 -11
  40. package/lib/engine/engine_networking.js +1 -7
  41. package/lib/engine/engine_networking.js.map +1 -1
  42. package/lib/engine/engine_networking_files.d.ts +1 -1
  43. package/lib/engine/engine_networking_files.js +8 -7
  44. package/lib/engine/engine_networking_files.js.map +1 -1
  45. package/lib/engine/engine_networking_files_default_components.d.ts +2 -2
  46. package/lib/engine/engine_networking_files_default_components.js +38 -43
  47. package/lib/engine/engine_networking_files_default_components.js.map +1 -1
  48. package/lib/engine/engine_networking_instantiate.d.ts +8 -6
  49. package/lib/engine/engine_networking_instantiate.js +12 -9
  50. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  51. package/lib/engine/engine_networking_types.d.ts +14 -0
  52. package/lib/engine/engine_networking_types.js +8 -0
  53. package/lib/engine/engine_networking_types.js.map +1 -0
  54. package/lib/engine/engine_physics.d.ts +1 -23
  55. package/lib/engine/engine_physics.js +18 -56
  56. package/lib/engine/engine_physics.js.map +1 -1
  57. package/lib/engine/engine_rendererdata.d.ts +1 -1
  58. package/lib/engine/engine_rendererdata.js.map +1 -1
  59. package/lib/engine/engine_scenetools.d.ts +2 -2
  60. package/lib/engine/engine_scenetools.js +22 -5
  61. package/lib/engine/engine_scenetools.js.map +1 -1
  62. package/lib/engine/engine_serialization_builtin_serializer.d.ts +1 -1
  63. package/lib/engine/engine_serialization_core.d.ts +1 -1
  64. package/lib/engine/engine_serialization_decorator.d.ts +1 -1
  65. package/lib/engine/engine_setup.d.ts +14 -15
  66. package/lib/engine/engine_setup.js +34 -23
  67. package/lib/engine/engine_setup.js.map +1 -1
  68. package/lib/engine/engine_three_utils.js +0 -6
  69. package/lib/engine/engine_three_utils.js.map +1 -1
  70. package/lib/engine/engine_types.d.ts +103 -0
  71. package/lib/engine/engine_types.js +49 -0
  72. package/lib/engine/engine_types.js.map +1 -0
  73. package/lib/engine/engine_utils.d.ts +1 -1
  74. package/lib/engine/engine_utils.js.map +1 -1
  75. package/lib/engine/extensions/NEEDLE_components.js +2 -2
  76. package/lib/engine/extensions/NEEDLE_components.js.map +1 -1
  77. package/lib/engine/extensions/NEEDLE_deferred_texture.d.ts +1 -1
  78. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +1 -1
  79. package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +1 -1
  80. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +2 -2
  81. package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +1 -1
  82. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +3 -2
  83. package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
  84. package/lib/engine/extensions/extensions.d.ts +1 -1
  85. package/lib/engine-components/Animation.js +1 -1
  86. package/lib/engine-components/Animation.js.map +1 -1
  87. package/lib/engine-components/Animator.js.map +1 -1
  88. package/lib/engine-components/AvatarLoader.js +6 -5
  89. package/lib/engine-components/AvatarLoader.js.map +1 -1
  90. package/lib/engine-components/Camera.d.ts +2 -2
  91. package/lib/engine-components/Camera.js +6 -12
  92. package/lib/engine-components/Camera.js.map +1 -1
  93. package/lib/engine-components/CameraUtils.d.ts +3 -0
  94. package/lib/engine-components/CameraUtils.js +15 -0
  95. package/lib/engine-components/CameraUtils.js.map +1 -0
  96. package/lib/engine-components/Collider.d.ts +1 -0
  97. package/lib/engine-components/Collider.js +4 -0
  98. package/lib/engine-components/Collider.js.map +1 -1
  99. package/lib/engine-components/Component.d.ts +16 -50
  100. package/lib/engine-components/Component.js +67 -465
  101. package/lib/engine-components/Component.js.map +1 -1
  102. package/lib/engine-components/DragControls.js +1 -1
  103. package/lib/engine-components/DragControls.js.map +1 -1
  104. package/lib/engine-components/Duplicatable.js +2 -1
  105. package/lib/engine-components/Duplicatable.js.map +1 -1
  106. package/lib/engine-components/LODGroup.js.map +1 -1
  107. package/lib/engine-components/Light.d.ts +2 -1
  108. package/lib/engine-components/Light.js +2 -2
  109. package/lib/engine-components/Light.js.map +1 -1
  110. package/lib/engine-components/NestedGltf.js +2 -1
  111. package/lib/engine-components/NestedGltf.js.map +1 -1
  112. package/lib/engine-components/OrbitControls.js +4 -2
  113. package/lib/engine-components/OrbitControls.js.map +1 -1
  114. package/lib/engine-components/Renderer.d.ts +3 -5
  115. package/lib/engine-components/Renderer.js +3 -20
  116. package/lib/engine-components/Renderer.js.map +1 -1
  117. package/lib/engine-components/{Rigidbody.d.ts → RigidBody.d.ts} +2 -1
  118. package/lib/engine-components/{Rigidbody.js → RigidBody.js} +1 -1
  119. package/lib/engine-components/{Rigidbody.js.map → RigidBody.js.map} +1 -1
  120. package/lib/engine-components/ScreenCapture.d.ts +0 -10
  121. package/lib/engine-components/ScreenCapture.js +8 -75
  122. package/lib/engine-components/ScreenCapture.js.map +1 -1
  123. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  124. package/lib/engine-components/SyncedCamera.js +3 -2
  125. package/lib/engine-components/SyncedCamera.js.map +1 -1
  126. package/lib/engine-components/SyncedTransform.js +1 -1
  127. package/lib/engine-components/SyncedTransform.js.map +1 -1
  128. package/lib/engine-components/TestRunner.js.map +1 -1
  129. package/lib/engine-components/VideoPlayer.d.ts +14 -3
  130. package/lib/engine-components/VideoPlayer.js +390 -47
  131. package/lib/engine-components/VideoPlayer.js.map +1 -1
  132. package/lib/engine-components/Voip.js +2 -1
  133. package/lib/engine-components/Voip.js.map +1 -1
  134. package/lib/engine-components/WebARSessionRoot.js +1 -1
  135. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  136. package/lib/engine-components/WebXR.js.map +1 -1
  137. package/lib/engine-components/WebXRAvatar.js +1 -1
  138. package/lib/engine-components/WebXRAvatar.js.map +1 -1
  139. package/lib/engine-components/WebXRController.d.ts +1 -0
  140. package/lib/engine-components/WebXRController.js +40 -9
  141. package/lib/engine-components/WebXRController.js.map +1 -1
  142. package/lib/engine-components/WebXRGrabRendering.d.ts +1 -1
  143. package/lib/engine-components/WebXRGrabRendering.js +1 -1
  144. package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
  145. package/lib/engine-components/WebXRSync.js +1 -1
  146. package/lib/engine-components/WebXRSync.js.map +1 -1
  147. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +1 -1
  148. package/lib/engine-components/codegen/components.d.ts +1 -2
  149. package/lib/engine-components/codegen/components.js +1 -2
  150. package/lib/engine-components/codegen/components.js.map +1 -1
  151. package/lib/engine-components/js-extensions/ExtensionUtils.d.ts +4 -0
  152. package/lib/engine-components/js-extensions/ExtensionUtils.js +56 -0
  153. package/lib/engine-components/js-extensions/ExtensionUtils.js.map +1 -0
  154. package/lib/engine-components/js-extensions/Object3D.js +16 -41
  155. package/lib/engine-components/js-extensions/Object3D.js.map +1 -1
  156. package/lib/engine-components/js-extensions/Vector.d.ts +2 -0
  157. package/lib/engine-components/js-extensions/Vector.js +16 -0
  158. package/lib/engine-components/js-extensions/Vector.js.map +1 -0
  159. package/lib/engine-components/timeline/PlayableDirector.d.ts +2 -1
  160. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  161. package/lib/engine-components/ui/BaseUIComponent.d.ts +1 -0
  162. package/lib/engine-components/ui/BaseUIComponent.js +11 -5
  163. package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
  164. package/lib/engine-components/ui/Canvas.d.ts +3 -0
  165. package/lib/engine-components/ui/Canvas.js +12 -1
  166. package/lib/engine-components/ui/Canvas.js.map +1 -1
  167. package/lib/engine-components/ui/CanvasScaler.d.ts +0 -0
  168. package/lib/engine-components/ui/CanvasScaler.js +17 -0
  169. package/lib/engine-components/ui/CanvasScaler.js.map +1 -0
  170. package/lib/engine-components/ui/EventSystem.d.ts +4 -1
  171. package/lib/engine-components/ui/EventSystem.js +28 -39
  172. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  173. package/lib/engine-components/ui/Graphic.js +2 -1
  174. package/lib/engine-components/ui/Graphic.js.map +1 -1
  175. package/lib/engine-components/ui/Keyboard.js +2 -1
  176. package/lib/engine-components/ui/Keyboard.js.map +1 -1
  177. package/lib/engine-components/ui/RaycastUtils.d.ts +11 -0
  178. package/lib/engine-components/ui/RaycastUtils.js +62 -0
  179. package/lib/engine-components/ui/RaycastUtils.js.map +1 -0
  180. package/lib/engine-components/ui/Raycaster.js.map +1 -1
  181. package/lib/engine-components/ui/Text.js +8 -3
  182. package/lib/engine-components/ui/Text.js.map +1 -1
  183. package/lib/engine-components/ui/Utils.js +3 -2
  184. package/lib/engine-components/ui/Utils.js.map +1 -1
  185. package/lib/needle-engine.d.ts +3 -1
  186. package/lib/needle-engine.js +4 -2
  187. package/lib/needle-engine.js.map +1 -1
  188. package/package.json +13 -2
  189. package/src/engine/api.ts +3 -0
  190. package/src/engine/codegen/register_types.js +4 -6
  191. package/src/engine/engine_addressables.ts +12 -10
  192. package/src/engine/{engine_components.js → engine_components.ts} +37 -47
  193. package/src/engine/engine_create_objects.ts +27 -0
  194. package/src/engine/engine_element.ts +2 -2
  195. package/src/engine/engine_gameobject.ts +506 -0
  196. package/src/engine/engine_gltf.ts +21 -2
  197. package/src/engine/engine_gltf_builtin_components.ts +8 -7
  198. package/src/engine/engine_instancing.ts +25 -0
  199. package/src/engine/engine_lightdata.ts +1 -1
  200. package/src/engine/engine_mainloop_utils.ts +13 -11
  201. package/src/engine/engine_networking.ts +3 -14
  202. package/src/engine/engine_networking_files.ts +14 -11
  203. package/src/engine/engine_networking_files_default_components.ts +53 -52
  204. package/src/engine/engine_networking_instantiate.ts +24 -14
  205. package/src/engine/engine_networking_types.ts +19 -0
  206. package/src/engine/engine_physics.ts +21 -75
  207. package/src/engine/engine_rendererdata.ts +1 -1
  208. package/src/engine/engine_scenetools.ts +30 -6
  209. package/src/engine/engine_serialization_core.ts +1 -1
  210. package/src/engine/engine_serialization_decorator.ts +1 -1
  211. package/src/engine/engine_setup.ts +51 -37
  212. package/src/engine/engine_three_utils.ts +0 -8
  213. package/src/engine/engine_types.ts +180 -0
  214. package/src/engine/engine_utils.ts +1 -3
  215. package/src/engine/extensions/NEEDLE_components.ts +2 -2
  216. package/src/engine/extensions/NEEDLE_deferred_texture.ts +1 -1
  217. package/src/engine/extensions/NEEDLE_lighting_settings.ts +1 -1
  218. package/src/engine/extensions/NEEDLE_lightmaps.ts +1 -1
  219. package/src/engine/extensions/NEEDLE_render_objects.ts +4 -4
  220. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +5 -4
  221. package/src/engine/extensions/extensions.ts +1 -1
  222. package/src/engine-components/Animation.ts +1 -1
  223. package/src/engine-components/Animator.ts +3 -3
  224. package/src/engine-components/AvatarLoader.ts +6 -5
  225. package/src/engine-components/Camera.ts +10 -13
  226. package/src/engine-components/CameraUtils.ts +15 -0
  227. package/src/engine-components/Collider.ts +5 -0
  228. package/src/engine-components/Component.ts +83 -535
  229. package/src/engine-components/DragControls.ts +1 -1
  230. package/src/engine-components/Duplicatable.ts +4 -3
  231. package/src/engine-components/LODGroup.ts +1 -1
  232. package/src/engine-components/Light.ts +3 -2
  233. package/src/engine-components/NestedGltf.ts +2 -1
  234. package/src/engine-components/OrbitControls.ts +5 -5
  235. package/src/engine-components/Renderer.ts +7 -21
  236. package/src/engine-components/RigidBody.ts +2 -1
  237. package/src/engine-components/ScreenCapture.ts +11 -77
  238. package/src/engine-components/SpectatorCamera.ts +7 -5
  239. package/src/engine-components/SyncedCamera.ts +3 -2
  240. package/src/engine-components/SyncedTransform.ts +2 -2
  241. package/src/engine-components/TestRunner.ts +1 -2
  242. package/src/engine-components/VideoPlayer.ts +401 -48
  243. package/src/engine-components/Voip.ts +2 -1
  244. package/src/engine-components/WebARSessionRoot.ts +1 -1
  245. package/src/engine-components/WebXR.ts +2 -2
  246. package/src/engine-components/WebXRAvatar.ts +1 -1
  247. package/src/engine-components/WebXRController.ts +40 -10
  248. package/src/engine-components/WebXRGrabRendering.ts +1 -1
  249. package/src/engine-components/WebXRSync.ts +1 -1
  250. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +2 -1
  251. package/src/engine-components/codegen/components.ts +1 -2
  252. package/src/engine-components/js-extensions/ExtensionUtils.ts +66 -0
  253. package/src/engine-components/js-extensions/Object3D.ts +22 -48
  254. package/src/engine-components/js-extensions/Vector.ts +17 -0
  255. package/src/engine-components/timeline/PlayableDirector.ts +2 -1
  256. package/src/engine-components/ui/BaseUIComponent.ts +17 -6
  257. package/src/engine-components/ui/Canvas.ts +14 -2
  258. package/src/engine-components/ui/CanvasScaler.ts +21 -0
  259. package/src/engine-components/ui/EventSystem.ts +30 -35
  260. package/src/engine-components/ui/Graphic.ts +2 -1
  261. package/src/engine-components/ui/Keyboard.ts +2 -1
  262. package/src/engine-components/ui/RaycastUtils.ts +64 -0
  263. package/src/engine-components/ui/Raycaster.ts +2 -0
  264. package/src/engine-components/ui/Text.ts +8 -4
  265. package/src/engine-components/ui/Utils.ts +3 -2
  266. package/src/needle-engine.ts +7 -2
@@ -1,55 +1,59 @@
1
- import { activeInHierarchyFieldName } from './engine_constants';
2
- import { removeScriptFromContext } from './engine_mainloop_utils';
3
- import { Context } from './engine_setup';
4
- import * as main from "../engine/engine_mainloop_utils";
5
- import { getParam } from './engine_utils';
1
+ import { Object3D } from "three";
2
+ import { Constructor, ConstructorConcrete, IComponent as Component, IComponent, IGameObject } from "./engine_types";
3
+ import { Context, registerComponent } from "./engine_setup";
4
+ import { getParam } from "./engine_utils";
5
+ import { removeScriptFromContext, updateActiveInHierarchyWithoutEventCall } from "./engine_mainloop_utils";
6
+ import { activeInHierarchyFieldName } from "./engine_constants";
6
7
 
7
8
  const debug = getParam("debuggetcomponent");
8
9
 
10
+
9
11
  function tryGetObject(obj) {
10
- if(obj === null || obj === undefined) return obj;
11
- if(obj.isObject3D) return obj;
12
+ if (obj === null || obj === undefined) return obj;
13
+ if (obj.isObject3D) return obj;
12
14
  // handle threejs intersection object
13
15
  if (obj.object && obj.object.isObject3D) return obj.object;
14
16
  return obj;
15
17
  }
16
18
 
17
- export function registerComponent(script, context) {
18
- if (!script) return;
19
- const new_scripts = context?.new_scripts ?? Context.Current.new_scripts;
20
- if (!new_scripts.includes(script)) {
21
- new_scripts.push(script);
22
- }
23
- }
24
19
 
25
- export const removeComponent = function (go, componentInstance) {
20
+ export function removeComponent(go: Object3D, componentInstance: IComponent) {
26
21
  if (!go) return;
27
22
  if (!go.userData.components) return;
28
23
  const index = go.userData.components.indexOf(componentInstance);
29
24
  if (index < 0) return;
25
+ //@ts-ignore
30
26
  componentInstance.gameObject = null;
31
27
  go.userData.components.splice(index, 1);
32
28
  }
33
29
 
34
- const addNewComponentInstance = function (componentInstance, obj, callAwake = true) {
30
+ export function getOrAddComponent<T extends IComponent>(go: Object3D, typeName: ConstructorConcrete<T>): T {
31
+ const comp = getComponent(typeName, go);
32
+ if (comp) return comp;
33
+ const newInstance = new typeName();
34
+ return addNewComponentInstance(go, newInstance) as unknown as T;
35
+ }
36
+
37
+ export function addNewComponentInstance<T extends IComponent>(obj: Object3D, componentInstance: T, callAwake = true): IComponent {
35
38
  if (!obj.userData) obj.userData = {};
36
39
  if (!obj.userData.components) obj.userData.components = [];
37
40
  obj.userData.components.push(componentInstance);
38
- componentInstance.gameObject = obj;
41
+ componentInstance.gameObject = obj as IGameObject;
39
42
  // componentInstance.transform = obj;
40
43
  registerComponent(componentInstance);
41
44
  try {
42
45
  if (componentInstance.__internalAwake && callAwake) {
43
- main.updateActiveInHierarchyWithoutEventCall(obj);
46
+ updateActiveInHierarchyWithoutEventCall(obj);
44
47
  componentInstance.__internalAwake();
45
48
  }
46
49
  }
47
50
  catch (err) {
48
51
  console.error(err);
49
52
  }
53
+ return componentInstance;
50
54
  }
51
55
 
52
- const moveComponentInstance = function (componentInstance, obj) {
56
+ export function moveComponentInstance(componentInstance: IComponent, obj: Object3D) {
53
57
  if (componentInstance.gameObject === obj) return;
54
58
  // TODO: update raycast array
55
59
  if (componentInstance.gameObject && componentInstance.gameObject.userData.components) {
@@ -59,12 +63,12 @@ const moveComponentInstance = function (componentInstance, obj) {
59
63
  if (!obj.userData.components) obj.userData.components = [];
60
64
  else if (obj.userData.components.includes(componentInstance)) return;
61
65
  obj.userData.components.push(componentInstance);
62
- componentInstance.gameObject = obj;
66
+ componentInstance.gameObject = obj as IGameObject;
63
67
  // componentInstance.transform = obj;
64
68
  }
65
69
 
66
70
 
67
- const destroyComponentInstance = function (componentInstance) {
71
+ export function destroyComponentInstance(componentInstance: IComponent) {
68
72
  // console.log("destroy", componentInstance, componentInstance.onDestroy);
69
73
  // TODO: update raycast array
70
74
  if (componentInstance.gameObject && componentInstance.gameObject.userData.components) {
@@ -75,12 +79,13 @@ const destroyComponentInstance = function (componentInstance) {
75
79
  if (componentInstance.__internalDisable) componentInstance.__internalDisable();
76
80
  if (componentInstance.onDestroy) componentInstance.onDestroy();
77
81
  removeScriptFromContext(componentInstance, componentInstance.context ?? Context.Current);
78
- componentInstance.__destroyed = true;
82
+ componentInstance.__internalDestroy();
83
+ //@ts-ignore
79
84
  componentInstance.gameObject = null;
80
85
  // console.log("destroyed", index, componentInstance);
81
86
  }
82
87
 
83
- const onGetComponent = function (componentType, obj, arr) {
88
+ export function onGetComponent<T>(componentType: Constructor<T>, obj: Object3D, arr?: IComponent[]) {
84
89
  if (!(obj?.userData?.components)) return null;
85
90
  if (debug)
86
91
  console.log("FIND", componentType);
@@ -111,16 +116,16 @@ const onGetComponent = function (componentType, obj, arr) {
111
116
  return arr;
112
117
  }
113
118
 
114
- const getComponent = function (componentType, obj) {
115
- return onGetComponent(componentType, obj, null);
119
+ export function getComponent<T>(componentType: Constructor<T>, obj) {
120
+ return onGetComponent(componentType, obj);
116
121
  }
117
122
 
118
- const getComponents = function (componentType, obj, arr) {
123
+ export function getComponents(componentType, obj, arr) {
119
124
  if (!arr) arr = [];
120
125
  return onGetComponent(componentType, obj, arr);
121
126
  }
122
127
 
123
- const getComponentInChildren = function (componentType, obj, includeInactive) {
128
+ export function getComponentInChildren(componentType, obj, includeInactive?: boolean) {
124
129
  const res = getComponent(componentType, obj);
125
130
  if (includeInactive === false && res.enabled === false) return null;
126
131
  if (res) return res;
@@ -131,7 +136,7 @@ const getComponentInChildren = function (componentType, obj, includeInactive) {
131
136
  return null;
132
137
  }
133
138
 
134
- const getComponentsInChildren = function (componentType, obj, arr) {
139
+ export function getComponentsInChildren<T extends IComponent>(componentType : Constructor<T>, obj : Object3D, arr?: T[]) {
135
140
  if (!arr) arr = [];
136
141
  getComponents(componentType, obj, arr);
137
142
  for (let i = 0; i < obj?.children?.length; i++) {
@@ -140,7 +145,7 @@ const getComponentsInChildren = function (componentType, obj, arr) {
140
145
  return arr;
141
146
  }
142
147
 
143
- const getComponentInParent = function (componentType, obj) {
148
+ export function getComponentInParent(componentType, obj) {
144
149
  if (!obj) return null;
145
150
  if (Array.isArray(obj)) {
146
151
  for (let i = 0; i < obj.length; i++) {
@@ -156,14 +161,14 @@ const getComponentInParent = function (componentType, obj) {
156
161
  return getComponentInParent(componentType, obj.parent);
157
162
  }
158
163
 
159
- const getComponentsInParent = function (componentType, obj, arr) {
164
+ export function getComponentsInParent(componentType, obj, arr) {
160
165
  if (!arr) arr = [];
161
166
  if (!obj) return arr;
162
167
  getComponents(componentType, obj, arr);
163
168
  return getComponentsInParent(componentType, obj.parent, arr);
164
169
  }
165
170
 
166
- const findObjectOfType = function (type, contextOrScene, includeInactive) {
171
+ export function findObjectOfType(type, contextOrScene, includeInactive) {
167
172
  if (!type) return null;
168
173
  if (!contextOrScene) {
169
174
  contextOrScene = Context.Current;
@@ -183,7 +188,7 @@ const findObjectOfType = function (type, contextOrScene, includeInactive) {
183
188
  return null;
184
189
  }
185
190
 
186
- const findObjectsOfType = function (type, array, contextOrScene) {
191
+ export function findObjectsOfType(type, array, contextOrScene) {
187
192
  if (!type) return array;
188
193
  if (!contextOrScene) {
189
194
  contextOrScene = Context.Current;
@@ -200,19 +205,4 @@ const findObjectsOfType = function (type, array, contextOrScene) {
200
205
  getComponentsInChildren(type, child, array);
201
206
  }
202
207
  return array;
203
- }
204
-
205
-
206
- export {
207
- addNewComponentInstance,
208
- moveComponentInstance,
209
- destroyComponentInstance,
210
- getComponent,
211
- getComponents,
212
- getComponentInChildren,
213
- getComponentsInChildren,
214
- getComponentInParent,
215
- getComponentsInParent,
216
- findObjectOfType,
217
- findObjectsOfType,
218
208
  }
@@ -0,0 +1,27 @@
1
+ import { PlaneGeometry, MeshBasicMaterial, DoubleSide, Mesh, Material } from "three"
2
+
3
+
4
+ export enum PrimitiveType {
5
+ Quad = 0
6
+ }
7
+
8
+ export type ObjectOptions = {
9
+ name?: string,
10
+ material?: Material,
11
+ }
12
+
13
+ export class ObjectUtils {
14
+
15
+ static createPrimitive(type: PrimitiveType, opts?: ObjectOptions): Mesh {
16
+ let obj: Mesh;
17
+ switch (type) {
18
+ case PrimitiveType.Quad:
19
+ const geometry = new PlaneGeometry(1, 1, 1, 1);
20
+ const material = opts?.material ?? new MeshBasicMaterial({ color: 0xffffff });
21
+ obj = new Mesh(geometry, material);
22
+ }
23
+ if (opts?.name)
24
+ obj.name = opts.name;
25
+ return obj;
26
+ }
27
+ }
@@ -1,11 +1,11 @@
1
1
  import { Context, build_scene_functions, LoadingOptions, LoadingProgressArgs } from "./engine_setup";
2
2
  import { AROverlayHandler, arContainerClassName } from "./engine_element_overlay";
3
3
  import { GameObject } from "../engine-components/Component";
4
- import { loadSync } from "./engine_scenetools";
5
4
  import { processNewScripts } from "./engine_mainloop_utils";
6
5
  import { calculateProgress01, EngineLoadingView, ILoadingViewHandler } from "./engine_element_loading";
7
6
  import { delay, getParam } from "./engine_utils";
8
7
  import { setDracoDecoderPath, setDracoDecoderType, setKtx2TranscoderPath } from "./engine_loaders";
8
+ import { getLoader } from "../engine/engine_gltf";
9
9
 
10
10
  const debug = getParam("debugwebcomponent");
11
11
 
@@ -42,7 +42,7 @@ class EngineElementSourceFileWatcher {
42
42
 
43
43
  this.previousSource = newSource;
44
44
  Context.Current = this.context;
45
- const res = await loadSync(this.context, newSource, this.getHashFromString(newSource));
45
+ const res = await getLoader().loadSync(this.context, newSource, this.getHashFromString(newSource), false);
46
46
  if (!isStartup)
47
47
  processNewScripts(this.context);
48
48
  const obj = res?.scene;