@needle-tools/engine 4.11.5-next.aa5e3b8 → 4.11.5-next.b35161f

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 (380) hide show
  1. package/components.needle.json +1 -1
  2. package/custom-elements.json +364 -0
  3. package/dist/{generateMeshBVH.worker-D1Vr8UHG.js → generateMeshBVH.worker-mO20N_b8.js} +4 -4
  4. package/dist/{needle-engine.bundle-DC-_T-N6.min.js → needle-engine.bundle-BsJvSPgy.min.js} +111 -111
  5. package/dist/{needle-engine.bundle-De0bbaDg.js → needle-engine.bundle-CjTSG0lx.js} +2460 -2415
  6. package/dist/{needle-engine.bundle-DCQk5ghP.umd.cjs → needle-engine.bundle-Xc_PaDid.umd.cjs} +100 -100
  7. package/dist/needle-engine.d.ts +18189 -1
  8. package/dist/needle-engine.js +2 -2
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/{vendor-DtTGRuXh.min.js → vendor-BKGa4GE0.min.js} +34 -34
  12. package/dist/{vendor-Dkpn1a8s.js → vendor-D0zoswDa.js} +1626 -1599
  13. package/dist/{vendor-DhTcel4c.umd.cjs → vendor-UCpFAwt1.umd.cjs} +30 -30
  14. package/lib/engine/engine_gltf_builtin_components.js +1 -1
  15. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  16. package/lib/engine/engine_texture.d.ts +1 -1
  17. package/lib/engine/engine_tonemapping.d.ts +1 -1
  18. package/lib/engine/engine_typestore.d.ts +1 -0
  19. package/lib/engine/engine_typestore.js +5 -6
  20. package/lib/engine/engine_typestore.js.map +1 -1
  21. package/lib/engine/webcomponents/logo-element.d.ts +11 -0
  22. package/lib/engine/webcomponents/logo-element.js +6 -0
  23. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  24. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +24 -3
  25. package/lib/engine/webcomponents/needle menu/needle-menu.js +18 -3
  26. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  27. package/lib/engine/webcomponents/needle-button.d.ts +5 -0
  28. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  29. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +11 -2
  30. package/lib/engine/webcomponents/needle-engine.d.ts +162 -8
  31. package/lib/engine/webcomponents/needle-engine.js +45 -7
  32. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  33. package/lib/engine-components/AlignmentConstraint.d.ts +9 -0
  34. package/lib/engine-components/AlignmentConstraint.js +9 -0
  35. package/lib/engine-components/AlignmentConstraint.js.map +1 -1
  36. package/lib/engine-components/Animator.d.ts +1 -0
  37. package/lib/engine-components/Animator.js.map +1 -1
  38. package/lib/engine-components/AudioListener.d.ts +2 -0
  39. package/lib/engine-components/AudioListener.js +2 -0
  40. package/lib/engine-components/AudioListener.js.map +1 -1
  41. package/lib/engine-components/AudioSource.d.ts +1 -0
  42. package/lib/engine-components/AudioSource.js +1 -0
  43. package/lib/engine-components/AudioSource.js.map +1 -1
  44. package/lib/engine-components/AxesHelper.d.ts +2 -0
  45. package/lib/engine-components/AxesHelper.js +2 -0
  46. package/lib/engine-components/AxesHelper.js.map +1 -1
  47. package/lib/engine-components/Camera.d.ts +1 -0
  48. package/lib/engine-components/Camera.js +1 -0
  49. package/lib/engine-components/Camera.js.map +1 -1
  50. package/lib/engine-components/CharacterController.d.ts +4 -1
  51. package/lib/engine-components/CharacterController.js +4 -1
  52. package/lib/engine-components/CharacterController.js.map +1 -1
  53. package/lib/engine-components/Component.d.ts +5 -0
  54. package/lib/engine-components/Component.js +7 -0
  55. package/lib/engine-components/Component.js.map +1 -1
  56. package/lib/engine-components/DeleteBox.d.ts +2 -0
  57. package/lib/engine-components/DeleteBox.js +2 -0
  58. package/lib/engine-components/DeleteBox.js.map +1 -1
  59. package/lib/engine-components/DeviceFlag.d.ts +4 -0
  60. package/lib/engine-components/DeviceFlag.js +4 -0
  61. package/lib/engine-components/DeviceFlag.js.map +1 -1
  62. package/lib/engine-components/DragControls.d.ts +1 -0
  63. package/lib/engine-components/DragControls.js +1 -0
  64. package/lib/engine-components/DragControls.js.map +1 -1
  65. package/lib/engine-components/DropListener.d.ts +1 -0
  66. package/lib/engine-components/DropListener.js +1 -0
  67. package/lib/engine-components/DropListener.js.map +1 -1
  68. package/lib/engine-components/Duplicatable.d.ts +1 -0
  69. package/lib/engine-components/Duplicatable.js +1 -0
  70. package/lib/engine-components/Duplicatable.js.map +1 -1
  71. package/lib/engine-components/EventTrigger.d.ts +2 -0
  72. package/lib/engine-components/EventTrigger.js +2 -0
  73. package/lib/engine-components/EventTrigger.js.map +1 -1
  74. package/lib/engine-components/GridHelper.d.ts +2 -0
  75. package/lib/engine-components/GridHelper.js +2 -0
  76. package/lib/engine-components/GridHelper.js.map +1 -1
  77. package/lib/engine-components/GroundProjection.d.ts +1 -0
  78. package/lib/engine-components/GroundProjection.js +1 -0
  79. package/lib/engine-components/GroundProjection.js.map +1 -1
  80. package/lib/engine-components/LODGroup.d.ts +2 -0
  81. package/lib/engine-components/LODGroup.js +2 -0
  82. package/lib/engine-components/LODGroup.js.map +1 -1
  83. package/lib/engine-components/Light.d.ts +1 -0
  84. package/lib/engine-components/Light.js +1 -0
  85. package/lib/engine-components/Light.js.map +1 -1
  86. package/lib/engine-components/LookAtConstraint.d.ts +1 -0
  87. package/lib/engine-components/LookAtConstraint.js +1 -0
  88. package/lib/engine-components/LookAtConstraint.js.map +1 -1
  89. package/lib/engine-components/NeedleMenu.d.ts +1 -0
  90. package/lib/engine-components/NeedleMenu.js +1 -0
  91. package/lib/engine-components/NeedleMenu.js.map +1 -1
  92. package/lib/engine-components/NestedGltf.d.ts +1 -0
  93. package/lib/engine-components/NestedGltf.js +1 -0
  94. package/lib/engine-components/NestedGltf.js.map +1 -1
  95. package/lib/engine-components/Networking.d.ts +1 -0
  96. package/lib/engine-components/Networking.js +1 -0
  97. package/lib/engine-components/Networking.js.map +1 -1
  98. package/lib/engine-components/OffsetConstraint.d.ts +7 -0
  99. package/lib/engine-components/OffsetConstraint.js +7 -0
  100. package/lib/engine-components/OffsetConstraint.js.map +1 -1
  101. package/lib/engine-components/OrbitControls.d.ts +1 -0
  102. package/lib/engine-components/OrbitControls.js +1 -0
  103. package/lib/engine-components/OrbitControls.js.map +1 -1
  104. package/lib/engine-components/PlayerColor.d.ts +2 -0
  105. package/lib/engine-components/PlayerColor.js +2 -0
  106. package/lib/engine-components/PlayerColor.js.map +1 -1
  107. package/lib/engine-components/ReflectionProbe.d.ts +1 -0
  108. package/lib/engine-components/ReflectionProbe.js +1 -0
  109. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  110. package/lib/engine-components/RigidBody.d.ts +1 -0
  111. package/lib/engine-components/RigidBody.js +1 -0
  112. package/lib/engine-components/RigidBody.js.map +1 -1
  113. package/lib/engine-components/SceneSwitcher.d.ts +1 -0
  114. package/lib/engine-components/SceneSwitcher.js +1 -0
  115. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  116. package/lib/engine-components/ScreenCapture.d.ts +1 -0
  117. package/lib/engine-components/ScreenCapture.js +1 -0
  118. package/lib/engine-components/ScreenCapture.js.map +1 -1
  119. package/lib/engine-components/SeeThrough.d.ts +1 -0
  120. package/lib/engine-components/SeeThrough.js +1 -0
  121. package/lib/engine-components/SeeThrough.js.map +1 -1
  122. package/lib/engine-components/ShadowCatcher.d.ts +2 -0
  123. package/lib/engine-components/ShadowCatcher.js +2 -0
  124. package/lib/engine-components/ShadowCatcher.js.map +1 -1
  125. package/lib/engine-components/Skybox.d.ts +1 -0
  126. package/lib/engine-components/Skybox.js +1 -0
  127. package/lib/engine-components/Skybox.js.map +1 -1
  128. package/lib/engine-components/SmoothFollow.d.ts +1 -0
  129. package/lib/engine-components/SmoothFollow.js +1 -0
  130. package/lib/engine-components/SmoothFollow.js.map +1 -1
  131. package/lib/engine-components/SpatialTrigger.d.ts +1 -0
  132. package/lib/engine-components/SpatialTrigger.js +1 -0
  133. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  134. package/lib/engine-components/SpectatorCamera.d.ts +1 -0
  135. package/lib/engine-components/SpectatorCamera.js +1 -0
  136. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  137. package/lib/engine-components/SpriteRenderer.d.ts +1 -0
  138. package/lib/engine-components/SpriteRenderer.js +1 -0
  139. package/lib/engine-components/SpriteRenderer.js.map +1 -1
  140. package/lib/engine-components/SyncedCamera.d.ts +2 -0
  141. package/lib/engine-components/SyncedCamera.js +2 -0
  142. package/lib/engine-components/SyncedCamera.js.map +1 -1
  143. package/lib/engine-components/SyncedRoom.d.ts +1 -0
  144. package/lib/engine-components/SyncedRoom.js +1 -0
  145. package/lib/engine-components/SyncedRoom.js.map +1 -1
  146. package/lib/engine-components/SyncedTransform.d.ts +2 -0
  147. package/lib/engine-components/SyncedTransform.js +2 -0
  148. package/lib/engine-components/SyncedTransform.js.map +1 -1
  149. package/lib/engine-components/TransformGizmo.d.ts +2 -0
  150. package/lib/engine-components/TransformGizmo.js +2 -0
  151. package/lib/engine-components/TransformGizmo.js.map +1 -1
  152. package/lib/engine-components/VideoPlayer.d.ts +1 -0
  153. package/lib/engine-components/VideoPlayer.js +1 -0
  154. package/lib/engine-components/VideoPlayer.js.map +1 -1
  155. package/lib/engine-components/Voip.d.ts +1 -0
  156. package/lib/engine-components/Voip.js +1 -0
  157. package/lib/engine-components/Voip.js.map +1 -1
  158. package/lib/engine-components/export/usdz/USDZExporter.d.ts +24 -3
  159. package/lib/engine-components/export/usdz/USDZExporter.js +36 -2
  160. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  161. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +18 -0
  162. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +18 -0
  163. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -1
  164. package/lib/engine-components/particlesystem/ParticleSystem.d.ts +1 -0
  165. package/lib/engine-components/particlesystem/ParticleSystem.js +1 -0
  166. package/lib/engine-components/particlesystem/ParticleSystem.js.map +1 -1
  167. package/lib/engine-components/physics/Attractor.d.ts +3 -0
  168. package/lib/engine-components/physics/Attractor.js +3 -0
  169. package/lib/engine-components/physics/Attractor.js.map +1 -1
  170. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +1 -0
  171. package/lib/engine-components/postprocessing/Effects/BloomEffect.js +1 -0
  172. package/lib/engine-components/postprocessing/Effects/BloomEffect.js.map +1 -1
  173. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +4 -0
  174. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +4 -0
  175. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js.map +1 -1
  176. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +3 -0
  177. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +3 -0
  178. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js.map +1 -1
  179. package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +4 -0
  180. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +4 -0
  181. package/lib/engine-components/postprocessing/Effects/DepthOfField.js.map +1 -1
  182. package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +1 -0
  183. package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +1 -0
  184. package/lib/engine-components/postprocessing/Effects/EffectWrapper.js.map +1 -1
  185. package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +3 -0
  186. package/lib/engine-components/postprocessing/Effects/Pixelation.js +3 -0
  187. package/lib/engine-components/postprocessing/Effects/Pixelation.js.map +1 -1
  188. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +4 -0
  189. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +4 -0
  190. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js.map +1 -1
  191. package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +4 -0
  192. package/lib/engine-components/postprocessing/Effects/Sharpening.js +4 -0
  193. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  194. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +4 -0
  195. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +4 -0
  196. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js.map +1 -1
  197. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +4 -0
  198. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +4 -0
  199. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  200. package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +4 -0
  201. package/lib/engine-components/postprocessing/Effects/Vignette.js +4 -0
  202. package/lib/engine-components/postprocessing/Effects/Vignette.js.map +1 -1
  203. package/lib/engine-components/postprocessing/Volume.d.ts +1 -0
  204. package/lib/engine-components/postprocessing/Volume.js +1 -0
  205. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  206. package/lib/engine-components/splines/Spline.d.ts +1 -0
  207. package/lib/engine-components/splines/Spline.js +1 -0
  208. package/lib/engine-components/splines/Spline.js.map +1 -1
  209. package/lib/engine-components/splines/SplineWalker.d.ts +1 -0
  210. package/lib/engine-components/splines/SplineWalker.js +1 -0
  211. package/lib/engine-components/splines/SplineWalker.js.map +1 -1
  212. package/lib/engine-components/timeline/PlayableDirector.d.ts +1 -0
  213. package/lib/engine-components/timeline/PlayableDirector.js +1 -0
  214. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  215. package/lib/engine-components/timeline/SignalAsset.d.ts +1 -0
  216. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  217. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  218. package/lib/engine-components/ui/Button.d.ts +4 -0
  219. package/lib/engine-components/ui/Button.js +4 -0
  220. package/lib/engine-components/ui/Button.js.map +1 -1
  221. package/lib/engine-components/ui/Canvas.d.ts +5 -0
  222. package/lib/engine-components/ui/Canvas.js +5 -0
  223. package/lib/engine-components/ui/Canvas.js.map +1 -1
  224. package/lib/engine-components/ui/CanvasGroup.d.ts +4 -0
  225. package/lib/engine-components/ui/CanvasGroup.js +4 -0
  226. package/lib/engine-components/ui/CanvasGroup.js.map +1 -1
  227. package/lib/engine-components/ui/EventSystem.d.ts +2 -0
  228. package/lib/engine-components/ui/EventSystem.js +2 -0
  229. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  230. package/lib/engine-components/ui/Image.d.ts +4 -0
  231. package/lib/engine-components/ui/Image.js +4 -0
  232. package/lib/engine-components/ui/Image.js.map +1 -1
  233. package/lib/engine-components/ui/InputField.d.ts +4 -0
  234. package/lib/engine-components/ui/InputField.js +4 -0
  235. package/lib/engine-components/ui/InputField.js.map +1 -1
  236. package/lib/engine-components/ui/Outline.d.ts +7 -0
  237. package/lib/engine-components/ui/Outline.js +7 -0
  238. package/lib/engine-components/ui/Outline.js.map +1 -1
  239. package/lib/engine-components/ui/Text.d.ts +1 -0
  240. package/lib/engine-components/ui/Text.js +1 -0
  241. package/lib/engine-components/ui/Text.js.map +1 -1
  242. package/lib/engine-components/utils/LookAt.d.ts +1 -0
  243. package/lib/engine-components/utils/LookAt.js +1 -0
  244. package/lib/engine-components/utils/LookAt.js.map +1 -1
  245. package/lib/engine-components/web/Clickthrough.d.ts +1 -1
  246. package/lib/engine-components/web/Clickthrough.js +1 -1
  247. package/lib/engine-components/web/CursorFollow.d.ts +2 -0
  248. package/lib/engine-components/web/CursorFollow.js +3 -0
  249. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  250. package/lib/engine-components/web/HoverAnimation.d.ts +1 -0
  251. package/lib/engine-components/web/HoverAnimation.js +1 -0
  252. package/lib/engine-components/web/HoverAnimation.js.map +1 -1
  253. package/lib/engine-components/web/ScrollFollow.d.ts +2 -0
  254. package/lib/engine-components/web/ScrollFollow.js +2 -0
  255. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  256. package/lib/engine-components/web/ViewBox.d.ts +1 -0
  257. package/lib/engine-components/web/ViewBox.js +1 -0
  258. package/lib/engine-components/web/ViewBox.js.map +1 -1
  259. package/lib/engine-components/webxr/Avatar.d.ts +5 -0
  260. package/lib/engine-components/webxr/Avatar.js +5 -0
  261. package/lib/engine-components/webxr/Avatar.js.map +1 -1
  262. package/lib/engine-components/webxr/WebARCameraBackground.d.ts +1 -0
  263. package/lib/engine-components/webxr/WebARCameraBackground.js +1 -0
  264. package/lib/engine-components/webxr/WebARCameraBackground.js.map +1 -1
  265. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +1 -0
  266. package/lib/engine-components/webxr/WebARSessionRoot.js +1 -0
  267. package/lib/engine-components/webxr/WebARSessionRoot.js.map +1 -1
  268. package/lib/engine-components/webxr/WebXR.d.ts +1 -1
  269. package/lib/engine-components/webxr/WebXR.js +1 -1
  270. package/lib/engine-components/webxr/controllers/XRControllerFollow.d.ts +1 -0
  271. package/lib/engine-components/webxr/controllers/XRControllerFollow.js +1 -0
  272. package/lib/engine-components/webxr/controllers/XRControllerFollow.js.map +1 -1
  273. package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +4 -0
  274. package/lib/engine-components/webxr/controllers/XRControllerModel.js +4 -0
  275. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  276. package/lib/engine-components/webxr/controllers/XRControllerMovement.d.ts +1 -0
  277. package/lib/engine-components/webxr/controllers/XRControllerMovement.js +1 -0
  278. package/lib/engine-components/webxr/controllers/XRControllerMovement.js.map +1 -1
  279. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +2 -0
  280. package/lib/engine-components-experimental/networking/PlayerSync.js +2 -0
  281. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  282. package/package.json +19 -12
  283. package/plugins/types/needleConfig.d.ts +1 -1
  284. package/plugins/types/next.d.ts +1 -1
  285. package/plugins/types/userconfig.d.ts +4 -1
  286. package/plugins/vite/custom-element-data.js +80 -0
  287. package/plugins/vite/index.js +4 -0
  288. package/src/engine/engine_gltf_builtin_components.ts +1 -1
  289. package/src/engine/engine_texture.ts +1 -1
  290. package/src/engine/engine_tonemapping.ts +1 -1
  291. package/src/engine/engine_typestore.ts +5 -6
  292. package/src/engine/webcomponents/logo-element.ts +12 -0
  293. package/src/engine/webcomponents/needle menu/needle-menu.ts +24 -3
  294. package/src/engine/webcomponents/needle-button.ts +6 -0
  295. package/src/engine/webcomponents/needle-engine.attributes.ts +12 -3
  296. package/src/engine/webcomponents/needle-engine.ts +172 -11
  297. package/src/engine-components/AlignmentConstraint.ts +9 -0
  298. package/src/engine-components/Animator.ts +1 -0
  299. package/src/engine-components/AudioListener.ts +2 -0
  300. package/src/engine-components/AudioSource.ts +1 -0
  301. package/src/engine-components/AxesHelper.ts +2 -0
  302. package/src/engine-components/Camera.ts +1 -0
  303. package/src/engine-components/CharacterController.ts +4 -1
  304. package/src/engine-components/Component.ts +9 -1
  305. package/src/engine-components/DeleteBox.ts +2 -0
  306. package/src/engine-components/DeviceFlag.ts +4 -0
  307. package/src/engine-components/DragControls.ts +1 -0
  308. package/src/engine-components/DropListener.ts +1 -0
  309. package/src/engine-components/Duplicatable.ts +1 -0
  310. package/src/engine-components/EventTrigger.ts +2 -0
  311. package/src/engine-components/GridHelper.ts +2 -0
  312. package/src/engine-components/GroundProjection.ts +1 -0
  313. package/src/engine-components/LODGroup.ts +2 -0
  314. package/src/engine-components/Light.ts +1 -0
  315. package/src/engine-components/LookAtConstraint.ts +1 -0
  316. package/src/engine-components/NeedleMenu.ts +1 -0
  317. package/src/engine-components/NestedGltf.ts +1 -0
  318. package/src/engine-components/Networking.ts +1 -0
  319. package/src/engine-components/OffsetConstraint.ts +7 -0
  320. package/src/engine-components/OrbitControls.ts +1 -0
  321. package/src/engine-components/PlayerColor.ts +2 -0
  322. package/src/engine-components/ReflectionProbe.ts +1 -0
  323. package/src/engine-components/RigidBody.ts +1 -0
  324. package/src/engine-components/SceneSwitcher.ts +1 -0
  325. package/src/engine-components/ScreenCapture.ts +1 -0
  326. package/src/engine-components/SeeThrough.ts +1 -0
  327. package/src/engine-components/ShadowCatcher.ts +2 -0
  328. package/src/engine-components/Skybox.ts +1 -0
  329. package/src/engine-components/SmoothFollow.ts +1 -0
  330. package/src/engine-components/SpatialTrigger.ts +1 -0
  331. package/src/engine-components/SpectatorCamera.ts +1 -0
  332. package/src/engine-components/SpriteRenderer.ts +1 -0
  333. package/src/engine-components/SyncedCamera.ts +2 -0
  334. package/src/engine-components/SyncedRoom.ts +1 -0
  335. package/src/engine-components/SyncedTransform.ts +2 -0
  336. package/src/engine-components/TransformGizmo.ts +2 -0
  337. package/src/engine-components/VideoPlayer.ts +1 -0
  338. package/src/engine-components/Voip.ts +1 -0
  339. package/src/engine-components/export/usdz/USDZExporter.ts +52 -5
  340. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +18 -0
  341. package/src/engine-components/particlesystem/ParticleSystem.ts +1 -0
  342. package/src/engine-components/physics/Attractor.ts +3 -0
  343. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +1 -0
  344. package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +4 -0
  345. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +3 -0
  346. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +4 -0
  347. package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +1 -0
  348. package/src/engine-components/postprocessing/Effects/Pixelation.ts +3 -0
  349. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +4 -0
  350. package/src/engine-components/postprocessing/Effects/Sharpening.ts +4 -0
  351. package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +4 -0
  352. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +4 -0
  353. package/src/engine-components/postprocessing/Effects/Vignette.ts +4 -0
  354. package/src/engine-components/postprocessing/Volume.ts +1 -0
  355. package/src/engine-components/splines/Spline.ts +1 -0
  356. package/src/engine-components/splines/SplineWalker.ts +1 -0
  357. package/src/engine-components/timeline/PlayableDirector.ts +1 -0
  358. package/src/engine-components/timeline/SignalAsset.ts +1 -0
  359. package/src/engine-components/ui/Button.ts +4 -0
  360. package/src/engine-components/ui/Canvas.ts +5 -0
  361. package/src/engine-components/ui/CanvasGroup.ts +4 -0
  362. package/src/engine-components/ui/EventSystem.ts +2 -0
  363. package/src/engine-components/ui/Image.ts +4 -0
  364. package/src/engine-components/ui/InputField.ts +4 -0
  365. package/src/engine-components/ui/Outline.ts +7 -0
  366. package/src/engine-components/ui/Text.ts +1 -0
  367. package/src/engine-components/utils/LookAt.ts +1 -0
  368. package/src/engine-components/web/Clickthrough.ts +1 -1
  369. package/src/engine-components/web/CursorFollow.ts +4 -0
  370. package/src/engine-components/web/HoverAnimation.ts +1 -0
  371. package/src/engine-components/web/ScrollFollow.ts +2 -0
  372. package/src/engine-components/web/ViewBox.ts +1 -0
  373. package/src/engine-components/webxr/Avatar.ts +5 -0
  374. package/src/engine-components/webxr/WebARCameraBackground.ts +1 -0
  375. package/src/engine-components/webxr/WebARSessionRoot.ts +1 -0
  376. package/src/engine-components/webxr/WebXR.ts +1 -1
  377. package/src/engine-components/webxr/controllers/XRControllerFollow.ts +1 -0
  378. package/src/engine-components/webxr/controllers/XRControllerModel.ts +4 -0
  379. package/src/engine-components/webxr/controllers/XRControllerMovement.ts +1 -0
  380. package/src/engine-components-experimental/networking/PlayerSync.ts +2 -0
@@ -16,6 +16,12 @@ import { arContainerClassName, AROverlayHandler } from "./needle-engine.ar-overl
16
16
  import { NeedleEngineAttributes, TonemappingAttributeOptions } from "./needle-engine.attributes.js";
17
17
  import { calculateProgress01, EngineLoadingView, type ILoadingViewHandler } from "./needle-engine.loading.js";
18
18
 
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ "needle-engine": NeedleEngineWebComponent;
22
+ }
23
+ }
24
+
19
25
  // registering loader here too to make sure it's imported when using engine via vanilla js
20
26
  registerLoader(NeedleLoader);
21
27
 
@@ -55,17 +61,17 @@ const observedAttributes = [
55
61
  // https://developers.google.com/web/fundamentals/web-components/customelements
56
62
 
57
63
  /**
58
- * <needle-engine> web component. See {@link NeedleEngineAttributes} attributes for supported attributes
59
- * The needle engine web component creates and manages a needle engine context which is responsible for rendering a 3D scene using threejs.
60
- * The needle engine context is created when the src attribute is set and disposed when the needle engine is removed from the document (you can prevent this by setting the keep-alive attribute to true).
61
- * The needle engine context is accessible via the context property on the needle engine element (e.g. document.querySelector("needle-engine").context).
64
+ * The `<needle-engine>` web component. See {@link NeedleEngineAttributes} attributes for supported attributes
65
+ * The web component creates and manages a Needle Engine context, which is responsible for rendering a 3D scene using threejs.
66
+ * The context is created when the `src` attribute is set, and disposed when the element is removed from the DOM. You can prevent cleanup by setting the `keep-alive` attribute to `true`.
67
+ * The context is accessible from the `<needle-engine>` element: `document.querySelector("needle-engine").context`.
62
68
  * See {@link https://engine.needle.tools/docs/reference/needle-engine-attributes}
63
69
  *
64
70
  * @example
65
71
  * <needle-engine src="https://example.com/scene.glb"></needle-engine>
66
72
  * @example
67
73
  * <needle-engine src="https://example.com/scene.glb" camera-controls="false"></needle-engine>
68
- */
74
+ */
69
75
  export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngineComponent {
70
76
 
71
77
  static get observedAttributes() {
@@ -100,7 +106,6 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
100
106
  else this.setAttribute("camera-controls", value ? "true" : "false");
101
107
  }
102
108
 
103
-
104
109
  /**
105
110
  * Get the current context for this web component instance. The context is created when the src attribute is set and the loading has finished.
106
111
  * The context is disposed when the needle engine is removed from the document (you can prevent this by setting the keep-alive attribute to true).
@@ -133,7 +138,7 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
133
138
  private _loadingProgress01: number = 0;
134
139
  private _loadingView?: ILoadingViewHandler;
135
140
  private _previousSrc: string | null | string[] = null;
136
- /** set to true after <needle-engine> did load completely at least once. Set to false when <needle-engine> is removed from the document */
141
+ /** @private set to true after <needle-engine> did load completely at least once. Set to false when < to false when <needle-engine> is removed from the document removed from the document */
137
142
  private _didFullyLoad: boolean = false;
138
143
 
139
144
  constructor() {
@@ -296,6 +301,10 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
296
301
  }
297
302
  }
298
303
 
304
+ connectedMoveCallback() {
305
+ // we dont want needle-engine to cleanup JUST because the element is moved in the DOM. See https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks
306
+ }
307
+
299
308
  /**
300
309
  * @internal
301
310
  */
@@ -317,7 +326,7 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
317
326
  case "loadfinished":
318
327
  if (typeof newValue === "string" && newValue.length > 0) {
319
328
  if (debug) console.log(name + " attribute changed", newValue);
320
- this.registerEventFromAttribute(name, newValue);
329
+ this.registerEventFromAttribute("loadfinished", newValue);
321
330
  }
322
331
  break;
323
332
  case "dracoDecoderPath":
@@ -441,7 +450,7 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
441
450
  if (allowOverridingDefaultLoading) {
442
451
  // Handle the <needle-engine hide-loading-overlay> attribute
443
452
  const hideOverlay = this.getAttribute("hide-loading-overlay");
444
- if (hideOverlay !== null && hideOverlay !== undefined && hideOverlay !== "0") {
453
+ if (hideOverlay !== null && hideOverlay !== undefined && (hideOverlay as any) !== "0") {
445
454
  useDefaultLoading = false;
446
455
  }
447
456
  }
@@ -668,7 +677,7 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
668
677
  if (attributeValue)
669
678
  this.registerEventFromAttribute("loadstart", attributeValue);
670
679
  }
671
- private registerEventFromAttribute(eventName: string, code: string) {
680
+ private registerEventFromAttribute(eventName: 'loadfinished' | 'loadstart', code: string) {
672
681
  const prev = this._previouslyRegisteredMap.get(eventName);
673
682
  if (prev) {
674
683
  this._previouslyRegisteredMap.delete(eventName);
@@ -681,6 +690,7 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
681
690
  // const fn = new Function(newValue);
682
691
  if (typeof fn === "function") {
683
692
  this._previouslyRegisteredMap.set(eventName, fn);
693
+ // @ts-ignore // not sure how to type this properly
684
694
  this.addEventListener(eventName, evt => fn?.call(globalThis, this._context, evt));
685
695
  }
686
696
  }
@@ -828,15 +838,166 @@ export class NeedleEngineWebComponent extends HTMLElement implements INeedleEngi
828
838
  setKtx2TranscoderPath(customKtx2DecoderPath);
829
839
  }
830
840
  }
841
+
842
+ /** Change which model gets loaded. This will trigger a reload of the model. */
843
+ setAttribute(name: 'src', value: string | string[]): void;
844
+ /** Optional string that will be applied to the context as a hash and can influence caching/identification. */
845
+ setAttribute(name: 'hash', value: string): void;
846
+ /** Public key used for licensing and feature gating (read-only on runtime if compiled-in). */
847
+ setAttribute(name: 'public-key', value: string): void;
848
+ /** Engine version string — usually set by the build/runtime. */
849
+ setAttribute(name: 'version', value: string): void;
850
+ /** If set to false the camera controls are disabled. Accepted values: true/false/none. Default behaviour is enabled. */
851
+ setAttribute(name: 'camera-controls', value: string): void;
852
+ /** Override path for the Draco decoder files. */
853
+ setAttribute(name: 'dracoDecoderPath', value: string): void;
854
+ /** Choose Draco decoder type: 'wasm' or 'js'. */
855
+ setAttribute(name: 'dracoDecoderType', value: 'wasm' | 'js'): void;
856
+ /** Override path for the KTX2 transcoder/decoder files. */
857
+ setAttribute(name: 'ktx2DecoderPath', value: string): void;
858
+ /** Tonemapping mode. Accepted values: 'none' | 'linear' | 'agx' | 'neutral'. */
859
+ setAttribute(name: 'tone-mapping', value: 'none' | 'linear' | 'agx' | 'neutral'): void;
860
+ /** Numeric exposure multiplier for tonemapping; accepts number or stringified number. */
861
+ setAttribute(name: 'tone-mapping-exposure', value: string | number): void;
862
+ /** Background image blur strength (0..1). Accepts number or string value. */
863
+ setAttribute(name: 'background-blurriness', value: string | number): void;
864
+ /** CSS color for the background; string color value expected (e.g. '#fff', 'rgba()' etc). */
865
+ setAttribute(name: 'background-color', value: string): void;
866
+ /** Intensity multiplier for environment lighting; accepts numeric value or string. */
867
+ setAttribute(name: 'environment-intensity', value: string | number): void;
868
+ /** When true the engine context is kept alive after the element is removed from DOM. Use 'true' or 'false'. */
869
+ setAttribute(name: 'keep-alive', value: 'true' | 'false'): void;
870
+ /** Generic typed setter for known Needle Engine attributes (useful from TS):
871
+ * setAttribute<T extends keyof NeedleEngineAttributes>(name, value) will type-check against the declared attribute shape.
872
+ */
873
+ setAttribute<T extends keyof NeedleEngineAttributes>(qualifiedName: T, value: NeedleEngineAttributes[T]): void;
874
+ setAttribute(qualifiedName: ({} & string), value: string): void;
875
+ setAttribute(qualifiedName: string, value: string): void {
876
+ super.setAttribute(qualifiedName, value);
877
+ }
878
+
879
+ /** Read the `src` attribute. Returns string, string[] (if codegen provided an array) or null if unset. */
880
+ getAttribute(name: 'src'): string | string[] | null;
881
+ /** Read the `hash` attribute — an optional string attached to the context for caching/identification. */
882
+ getAttribute(name: 'hash'): string | null;
883
+ /** Read the `public-key` attribute used for licensing/feature gating. */
884
+ getAttribute(name: 'public-key'): string | null;
885
+ /** Read the `version` attribute — the engine build/version string. */
886
+ getAttribute(name: 'version'): string | null;
887
+ /** Read the `camera-controls` attribute; string values include 'true'|'false'|'none' or null if unset. */
888
+ getAttribute(name: 'camera-controls'): string | null;
889
+ /** Read custom Draco decoder path if configured. */
890
+ getAttribute(name: 'dracoDecoderPath'): string | null;
891
+ /** Read Draco decoder type ('wasm'|'js') if configured. */
892
+ getAttribute(name: 'dracoDecoderType'): string | null;
893
+ /** Read custom KTX2 decoder/transcoder path if configured. */
894
+ getAttribute(name: 'ktx2DecoderPath'): string | null;
895
+ /** Read configured tone-mapping value, as a string matching accepted modes (none, linear, neutral, agx). */
896
+ getAttribute(name: 'tone-mapping'): string | null;
897
+ /** Read tone-mapping exposure multiplier (string or numeric string). */
898
+ getAttribute(name: 'tone-mapping-exposure'): string | null;
899
+ /** Read background-blurriness value (0..1) as string or null. */
900
+ getAttribute(name: 'background-blurriness'): string | null;
901
+ /** Read CSS background-color string value (e.g. '#fff', 'rgba()'). */
902
+ getAttribute(name: 'background-color'): string | null;
903
+ /** Read environment-intensity (numeric) as string or null. */
904
+ getAttribute(name: 'environment-intensity'): string | null;
905
+ /** Read keep-alive attribute; presence ("true") prevents the context from being disposed on disconnect. */
906
+ getAttribute(name: 'keep-alive'): string | null;
907
+ /** Defines a CSS selector or HTMLElement used to define the camera focus rectangle. */
908
+ getAttribute(name: 'focus-rect'): string | null;
909
+ /** @private */
910
+ getAttribute(name: 'loading-blur'): string | null;
911
+ /** @private */
912
+ getAttribute(name: 'alias'): string | null;
913
+ /** Typed getter for known NeedleEngine attribute names; returns the typed shape declared in NeedleEngineAttributes or null. */
914
+ getAttribute<T extends keyof NeedleEngineAttributes>(qualifiedName: T): NeedleEngineAttributes[T] | null;
915
+ // getAttribute(qualifiedName: ({} & string)): string | null
916
+ getAttribute(qualifiedName: ({} & string)): string | null;
917
+ getAttribute(qualifiedName: string): string | null {
918
+ return super.getAttribute(qualifiedName);
919
+ }
920
+
921
+ /**
922
+ * Emitted when loading begins for the engine/scene. The event is cancelable — calling preventDefault()
923
+ * will stop the default loading UI behavior (apps can implement custom loading flows).
924
+ * Event contains a small detail object with context and optional alias.
925
+ */
926
+ addEventListener(type: 'loadstart', listener: (ev: CustomEvent<{ context: Context; alias: string | null }>) => void, options?: boolean | AddEventListenerOptions): void;
927
+ /**
928
+ * Emitted repeatedly while loading resources. Use the event detail to show progress:
929
+ * Event contains progress metadata to report loader state.
930
+ */
931
+ addEventListener(type: 'progress', listener: (ev: CustomEvent<{ context: Context; name: string; progress: ProgressEvent<EventTarget>; index: number; count: number; totalProgress01: number }>) => void, options?: boolean | AddEventListenerOptions): void;
932
+ /**
933
+ * Emitted when the initial loading has finished. detail contains the context, the source alias (if available) and a list of loaded models.
934
+ * Emitted when the initial load completes; contains helpful summary data.
935
+ */
936
+ addEventListener(type: 'loadfinished', listener: (ev: CustomEvent<{ context: Context; src: string | null; loadedFiles: LoadedModel[] }>) => void, options?: boolean | AddEventListenerOptions): void;
937
+ /**
938
+ * Emitted when an XR session ends.
939
+ */
940
+ addEventListener(type: 'xr-session-ended', listener: (ev: CustomEvent<{ session: XRSession | null; context: Context; sessionMode: XRSessionMode | undefined }>) => void, options?: boolean | AddEventListenerOptions): void;
941
+ /**
942
+ * Emitted when entering AR.
943
+ */
944
+ addEventListener(type: 'enter-ar', listener: (ev: CustomEvent<{ session: XRSession; context: Context; htmlContainer: HTMLElement | null }>) => void, options?: boolean | AddEventListenerOptions): void;
945
+ /**
946
+ * Emitted when exiting AR.
947
+ */
948
+ addEventListener(type: 'exit-ar', listener: (ev: CustomEvent<{ session: XRSession; context: Context; htmlContainer: HTMLElement | null }>) => void, options?: boolean | AddEventListenerOptions): void;
949
+ /**
950
+ * Emitted when entering VR.
951
+ */
952
+ addEventListener(type: 'enter-vr', listener: (ev: CustomEvent<{ session: XRSession; context: Context }>) => void, options?: boolean | AddEventListenerOptions): void;
953
+ /**
954
+ * Emitted when exiting VR.
955
+ */
956
+ addEventListener(type: 'exit-vr', listener: (ev: CustomEvent<{ session: XRSession; context: Context }>) => void, options?: boolean | AddEventListenerOptions): void;
957
+ /** Emitted when the engine has rendered its first frame and is ready. */
958
+ addEventListener(type: 'ready', listener: (ev: Event) => void, options?: boolean | AddEventListenerOptions): void;
959
+ /** Emitted when an XR session is started — useful to prepare AR/VR UI. */
960
+ addEventListener(type: 'xr-session-started', listener: (ev: CustomEvent<{ session: XRSession; context: Context }>) => void, options?: boolean | AddEventListenerOptions): void;
961
+
962
+ // Sadly not enough to make types work (see comment below)
963
+ addEventListener<K extends keyof HTMLElementEventMap>(type: ({} & K), listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
964
+ // These are from the super type. Not sure how we can remove intellisense for the "regular" events while still making the types work...
965
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
966
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
967
+ // This would be better but doesn't completely solve it
968
+ // addEventListener(type: ({} & string), listener: any, options?: boolean | AddEventListenerOptions): void;
969
+ addEventListener(type: string, listener: any, options?: boolean | AddEventListenerOptions): void
970
+ {
971
+ return super.addEventListener(type, listener as EventListenerOrEventListenerObject, options);
972
+ }
831
973
  }
832
974
 
833
975
  if (typeof window !== "undefined" && !window.customElements.get(htmlTagName))
834
976
  window.customElements.define(htmlTagName, NeedleEngineWebComponent);
835
977
 
978
+ /** Quick testing for the types as declared above */
979
+ /*
980
+ const elem = document.querySelector("needle-engine")!;
981
+ elem.setAttribute("src", "model.glb");
982
+ elem.addEventListener("loadfinished", (ev) => {
983
+ const context = ev.detail.context;
984
+ });
985
+ elem.setAttribute("dracoDecoderType", "wasm");
986
+ elem.addEventListener("enter-ar", (ev) => {
987
+ const session = ev.detail.session;
988
+ });
836
989
 
990
+ elem.addEventListener("mousedown", (ev) => {
991
+ console.log("regular mousedown event", ev);
992
+ });
837
993
 
994
+ const onDragOverEvent = (e: DragEvent) => {
838
995
 
996
+ };
839
997
 
998
+ elem.addEventListener("dragover", onDragOverEvent);
999
+ */
1000
+ /* END Type testing */
840
1001
 
841
1002
  function getDisplayName(str: string) {
842
1003
  if (str.startsWith("blob:")) {
@@ -956,4 +1117,4 @@ function handleLoadingBlur(needleEngineElement: NeedleEngineWebComponent) {
956
1117
  }
957
1118
  }
958
1119
  }, { once: true });
959
- }
1120
+ }
@@ -4,6 +4,15 @@ import { serializable } from "../engine/engine_serialization_decorator.js";
4
4
  import * as utils from "./../engine/engine_three_utils.js";
5
5
  import { Behaviour, GameObject } from "./Component.js";
6
6
 
7
+ /**
8
+ * Aligns this GameObject between two other GameObjects, scaling it to fit the distance.
9
+ * You can use this to create dynamic beams or connectors between objects.
10
+ *
11
+ * @summary Aligns and scales the object between two target GameObjects
12
+ * @category Utility
13
+ * @group Components
14
+
15
+ **/
7
16
  export class AlignmentConstraint extends Behaviour {
8
17
 
9
18
  @serializable(GameObject)
@@ -14,6 +14,7 @@ const debug = getParam("debuganimator");
14
14
  /**
15
15
  * Represents an event emitted by an animation mixer
16
16
  * @category Animation and Sequencing
17
+ * @group Components
17
18
  */
18
19
  export declare class MixerEvent {
19
20
  /** The type of event that occurred */
@@ -8,6 +8,8 @@ import { Behaviour, GameObject } from "./Component.js";
8
8
  * AudioListener represents a listener that can hear audio sources in the scene.
9
9
  * This component creates and manages a Three.js {@link three#AudioListener}, automatically connecting it
10
10
  * to the main camera or a Camera in the parent hierarchy.
11
+ *
12
+ * @summary Audio listener for 3D audio capture
11
13
  * @category Multimedia
12
14
  * @group Components
13
15
  */
@@ -52,6 +52,7 @@ export enum AudioRolloffMode {
52
52
  * is muted, the volume is set to 0. When unmuted, the volume
53
53
  * returns to its previous value.
54
54
  *
55
+ * @summary 3D audio source with spatial positioning and playback controls
55
56
  * @category Multimedia
56
57
  * @group Components
57
58
  */
@@ -7,6 +7,8 @@ import { Behaviour } from "./Component.js";
7
7
  /**
8
8
  * Component that visualizes the axes of an object in the scene.
9
9
  * Renders colored lines representing the X (red), Y (green) and Z (blue) axes.
10
+ *
11
+ * @summary Visualizes object axes in the scene
10
12
  * @category Helpers
11
13
  * @group Components
12
14
  */
@@ -36,6 +36,7 @@ const debugscreenpointtoray = getParam("debugscreenpointtoray");
36
36
  * Supports both perspective and orthographic cameras with various rendering options.
37
37
  * Internally, this component uses {@link PerspectiveCamera} and {@link OrthographicCamera} three.js objects.
38
38
  *
39
+ * @summary Camera rendering scenes from a specific viewpoint
39
40
  * @category Camera
40
41
  * @group Components
41
42
  */
@@ -14,7 +14,10 @@ import { Rigidbody } from "./RigidBody.js";
14
14
  const debug = getParam("debugcharactercontroller");
15
15
 
16
16
  /**
17
- * @category Camera
17
+ * CharacterController adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.
18
+ * It is designed for typical character movement in 3D environments.
19
+ * @summary Character Movement Controller
20
+ * @category Character
18
21
  * @group Components
19
22
  */
20
23
  export class CharacterController extends Behaviour {
@@ -11,6 +11,7 @@ import { syncDestroy, syncInstantiate, SyncInstantiateOptions } from "../engine/
11
11
  import { Context, FrameEvent } from "../engine/engine_setup.js";
12
12
  import * as threeutils from "../engine/engine_three_utils.js";
13
13
  import type { Collision, ComponentInit, Constructor, ConstructorConcrete, GuidsMap, ICollider, IComponent, IGameObject, SourceIdentifier } from "../engine/engine_types.js";
14
+ import { TypeStore } from "../engine/engine_typestore.js";
14
15
  import type { INeedleXRSessionEventReceiver, NeedleXRControllerEventArgs, NeedleXREventArgs } from "../engine/engine_xr.js";
15
16
  import { type IPointerEventHandler, PointerEventData } from "./ui/PointerEvents.js";
16
17
 
@@ -540,7 +541,8 @@ export abstract class GameObject extends Object3D implements Object3D, IGameObje
540
541
  }
541
542
  }
542
543
 
543
-
544
+ // DO NOT CHANGE THE SYMBOL NAME
545
+ const $componentName = Symbol("component-name");
544
546
 
545
547
  /**
546
548
  * Needle Engine component's are the main building blocks of the Needle Engine.
@@ -581,6 +583,12 @@ export abstract class Component implements IComponent, EventTarget,
581
583
  */
582
584
  get isComponent(): boolean { return true; }
583
585
 
586
+ /**
587
+ * Get the original component type name before minification (available if the component is registered in the TypeStore)
588
+ */
589
+ get [$componentName]() { return TypeStore.getKey(this.constructor as any) || undefined; }
590
+
591
+
584
592
  private __context: Context | undefined;
585
593
 
586
594
  /**
@@ -11,6 +11,8 @@ import { UsageMarker } from "./Interactable.js";
11
11
  const debug = getParam("debugdeletable");
12
12
  /**
13
13
  * A box-shaped area that can be used to delete objects that get into it. Useful for sandbox-style builders or physics simulations.
14
+ *
15
+ * @summary Box area that deletes objects entering it
14
16
  * @category Interactivity
15
17
  * @group Components
16
18
  */
@@ -11,6 +11,10 @@ export enum DeviceType {
11
11
  }
12
12
 
13
13
  /**
14
+ * Enables or disables the GameObject based on the device type (mobile or desktop).
15
+ * You can use this to show or hide objects depending on whether the user is on a mobile device or a desktop.
16
+ *
17
+ * @summary Show or hide GameObject based on device type
14
18
  * @category Utilities
15
19
  * @group Components
16
20
  */
@@ -46,6 +46,7 @@ export enum DragMode {
46
46
  * DragControls allows you to drag objects around in the scene. It can be used to move objects in 2D (screen space) or 3D (world space).
47
47
  * Debug mode can be enabled with the URL parameter `?debugdrag`, which shows visual helpers and logs drag operations.
48
48
  *
49
+ * @summary Enables dragging of objects in 2D or 3D space
49
50
  * @category Interactivity
50
51
  * @group Components
51
52
  */
@@ -139,6 +139,7 @@ const blobKeyName = "blob";
139
139
  * });
140
140
  * ```
141
141
  *
142
+ * @summary Component to handle drag and drop of files into the scene
142
143
  * @category Asset Management
143
144
  * @group Components
144
145
  */
@@ -14,6 +14,7 @@ import { ObjectRaycaster } from "./ui/Raycaster.js";
14
14
  /**
15
15
  * The Duplicatable component is used to duplicate a assigned {@link GameObject} when a pointer event occurs on the object.
16
16
  *
17
+ * @summary Duplicates a GameObject on pointer events
17
18
  * @category Interactivity
18
19
  * @group Components
19
20
  */
@@ -14,6 +14,8 @@ class TriggerEvent {
14
14
  /**
15
15
  * The EventTrigger component is used to trigger events when certain pointer events occur on the GameObject.
16
16
  * It implements the {@link IPointerEventHandler} interface and can be used to expose events to the user in the editor without writing code.
17
+ *
18
+ * @summary Triggers events on pointer interactions
17
19
  * @category Interactivity
18
20
  * @group Components
19
21
  */
@@ -6,6 +6,8 @@ import { Behaviour } from "./Component.js";
6
6
 
7
7
  /**
8
8
  * GridHelper is a component that allows to display a grid in the scene.
9
+ *
10
+ * @example Display a grid in the scene
9
11
  * @category Helpers
10
12
  * @group Components
11
13
  */
@@ -14,6 +14,7 @@ const debug = getParam("debuggroundprojection");
14
14
  *
15
15
  * - Example https://engine.needle.tools/samples/ground-projection
16
16
  *
17
+ * @summary Projects the environment map onto the ground
17
18
  * @category Rendering
18
19
  * @group Components
19
20
  */
@@ -40,6 +40,8 @@ declare class LODSetting {
40
40
 
41
41
  /**
42
42
  * LODGroup allows to create a group of LOD levels for an object.
43
+ *
44
+ * @summary Level of Detail (LOD) Group Component
43
45
  * @category Rendering
44
46
  * @group Components
45
47
  */
@@ -75,6 +75,7 @@ enum LightShadows {
75
75
  * Debug mode can be enabled with the URL parameter `?debuglights`, which shows
76
76
  * additional console output and visual helpers for lights.
77
77
  *
78
+ * @summary Light component for various light types and shadow settings
78
79
  * @category Rendering
79
80
  * @group Components
80
81
  */
@@ -8,6 +8,7 @@ import type { OrbitControls } from "./OrbitControls.js";
8
8
  * A LookAtConstraint is used by OrbitControls to make the camera look at a target.
9
9
  * This component is used by {@link OrbitControls} internally.
10
10
  *
11
+ * @summary Look At Constraint for OrbitControls
11
12
  * @category Camera Controls
12
13
  * @group Components
13
14
  */
@@ -10,6 +10,7 @@ import { Behaviour } from './Component.js';
10
10
  * Controls display options, button visibility, and menu positioning.
11
11
  * From code, you can access the menu via {@link Context.menu}.
12
12
  *
13
+ * @summary Configuration component for the Needle Menu
13
14
  * @category User Interface
14
15
  * @group Components
15
16
  **/
@@ -11,6 +11,7 @@ const debug = getParam("debugnestedgltf");
11
11
  /** The nested gltf is a component that is used to load a gltf file when the component becomes active (start)
12
12
  * It will load the gltf file and instantiate it as a child of the parent of the GameObject that has this component
13
13
  *
14
+ * @summary Loads and instantiates a nested glTF file
14
15
  * @category Asset Management
15
16
  * @group Components
16
17
  */
@@ -11,6 +11,7 @@ const debug = getParam("debugnet");
11
11
  * This component supplies websocket URLs for establishing connections.
12
12
  * It implements the {@link INetworkingWebsocketUrlProvider} interface.
13
13
  *
14
+ * @summary Networking configuration component
14
15
  * @category Networking
15
16
  * @group Components
16
17
  */
@@ -4,6 +4,13 @@ import { serializable } from "../engine/engine_serialization_decorator.js";
4
4
  import * as utils from "./../engine/engine_three_utils.js";
5
5
  import { Behaviour, GameObject } from "./Component.js";
6
6
 
7
+ /**
8
+ * OffsetConstraint component allows an object to maintain a specified positional and rotational offset
9
+ * relative to another object, with options for alignment and leveling.
10
+ * @summary Maintains positional and rotational offset relative to another object
11
+ * @category Constraints
12
+ * @group Components
13
+ */
7
14
  export class OffsetConstraint extends Behaviour {
8
15
 
9
16
  @serializable(GameObject)
@@ -63,6 +63,7 @@ declare module 'three/examples/jsm/controls/OrbitControls.js' {
63
63
  /** The OrbitControls component is used to control a camera using the [OrbitControls from three.js](https://threejs.org/docs/#examples/en/controls/OrbitControls) library.
64
64
  * The three OrbitControls object can be accessed via the `controls` property.
65
65
  * The object being controlled by the OrbitControls (usually the camera) can be accessed via the `controllerObject` property.
66
+ * @summary Camera controller using three.js OrbitControls
66
67
  * @category Camera
67
68
  * @group Components
68
69
  */
@@ -9,6 +9,8 @@ import { AvatarMarker } from "./webxr/WebXRAvatar.js";
9
9
  /**
10
10
  * PlayerColor assigns a unique color for each user in the room to the object it is attached to.
11
11
  * The color is generated based on the user's ID.
12
+ *
13
+ * @summary Assigns a unique color to the player object
12
14
  * @category Networking
13
15
  * @group Components
14
16
  */
@@ -19,6 +19,7 @@ const $originalMaterial = Symbol("original material");
19
19
  *
20
20
  * - Sample: http://samples.needle.tools/reflection-probes
21
21
  *
22
+ * @summary Provides reflection data to materials
22
23
  * @category Rendering
23
24
  * @group Components
24
25
  */
@@ -140,6 +140,7 @@ class TransformWatch {
140
140
  * - Example: https://samples.needle.tools/physics-playground
141
141
  * - Example: https://samples.needle.tools/physics-&-animation
142
142
  *
143
+ * @summary Rigidbody for physical interactions
143
144
  * @category Physics
144
145
  * @group Components
145
146
  */
@@ -108,6 +108,7 @@ export interface ISceneEventListener {
108
108
  * });
109
109
  * ```
110
110
  *
111
+ * @summary Dynamically loads and switches between multiple scenes
111
112
  * @category Asset Management
112
113
  * @group Components
113
114
  */
@@ -70,6 +70,7 @@ export declare type ScreenCaptureOptions = {
70
70
  * By default the component will start sharing the screen when the user clicks on the object this component is attached to. You can set {@link device} This behaviour can be disabled by setting `allowStartOnClick` to false.
71
71
  * It is also possible to start the stream manually from your code by calling the {@link share} method.
72
72
  *
73
+ * @summary Share screen, camera or microphone in a networked room
73
74
  * @category Networking
74
75
  * @group Components
75
76
  */
@@ -40,6 +40,7 @@ let i = 0;
40
40
  *
41
41
  * - Example https://see-through-walls-z23hmxbz1kjfjn.needle.run/
42
42
  *
43
+ * @summary Makes objects fade out when obscuring a reference point from the camera
43
44
  * @category Rendering
44
45
  * @group Components
45
46
  */
@@ -22,6 +22,8 @@ enum ShadowMode {
22
22
  * If the GameObject is a Mesh, it will apply a shadow-catching material to it - otherwise it will create a quad with the shadow-catching material.
23
23
  *
24
24
  * Note that ShadowCatcher meshes are not raycastable by default; if you want them to be raycastable, change the layers in `onEnable()`.
25
+ *
26
+ * @summary Renders shadows or light on the object
25
27
  * @category Rendering
26
28
  * @group Components
27
29
  */
@@ -143,6 +143,7 @@ ContextRegistry.registerCallback(ContextEvent.ContextCreationStart, () => {
143
143
  * skybox.setSkybox("https://example.com/skybox.hdr");
144
144
  * ```
145
145
  *
146
+ * @summary Sets the skybox or environment texture of a scene
146
147
  * @category Rendering
147
148
  * @group Components
148
149
  */
@@ -9,6 +9,7 @@ import { Behaviour } from "./Component.js";
9
9
  /**
10
10
  * SmoothFollow makes the {@link Object3D} (`GameObject`) smoothly follow another target {@link Object3D}.
11
11
  * It can follow the target's position, rotation, or both.
12
+ * @summary Smoothly follows a target object
12
13
  * @category Interactivity
13
14
  * @group Components
14
15
  */
@@ -26,6 +26,7 @@ function testMask(mask1, mask2) {
26
26
  /**
27
27
  * Component that receives and responds to spatial events, like entering or exiting a trigger zone.
28
28
  * Used in conjunction with {@link SpatialTrigger} to create interactive spatial events.
29
+ * @summary Receives spatial trigger events
29
30
  * @category Interactivity
30
31
  * @group Components
31
32
  */
@@ -35,6 +35,7 @@ const debug = getParam("debugspectator");
35
35
  *
36
36
  * Debug mode can be enabled with the URL parameter `?debugspectator`, which provides additional console output.
37
37
  *
38
+ * @summary Follow other users in a networked room
38
39
  * @category Networking
39
40
  * @group Components
40
41
  */