@needle-tools/engine 3.28.7-beta → 3.28.7-beta.1

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 (849) hide show
  1. package/CHANGELOG.md +2259 -2256
  2. package/LICENSE.md +10 -10
  3. package/README.md +52 -52
  4. package/dist/needle-engine.js +9 -12
  5. package/dist/needle-engine.light.js +9 -12
  6. package/dist/needle-engine.light.min.js +8 -11
  7. package/dist/needle-engine.light.umd.cjs +8 -11
  8. package/dist/needle-engine.min.js +8 -11
  9. package/dist/needle-engine.umd.cjs +8 -11
  10. package/lib/engine/api.d.ts +52 -52
  11. package/lib/engine/api.js +51 -51
  12. package/lib/engine/assets/index.d.ts +1 -1
  13. package/lib/engine/assets/index.js +4 -4
  14. package/lib/engine/codegen/register_types.d.ts +1 -1
  15. package/lib/engine/codegen/register_types.js +439 -439
  16. package/lib/engine/debug/debug.d.ts +12 -12
  17. package/lib/engine/debug/debug.js +26 -26
  18. package/lib/engine/debug/debug_console.d.ts +2 -2
  19. package/lib/engine/debug/debug_console.js +204 -204
  20. package/lib/engine/debug/debug_overlay.d.ts +10 -10
  21. package/lib/engine/debug/debug_overlay.js +277 -277
  22. package/lib/engine/debug/index.d.ts +1 -1
  23. package/lib/engine/debug/index.js +1 -1
  24. package/lib/engine/engine_addressables.d.ts +75 -75
  25. package/lib/engine/engine_addressables.js +441 -441
  26. package/lib/engine/engine_application.d.ts +19 -19
  27. package/lib/engine/engine_application.js +45 -45
  28. package/lib/engine/engine_assetdatabase.d.ts +25 -25
  29. package/lib/engine/engine_assetdatabase.js +341 -341
  30. package/lib/engine/engine_camera.d.ts +6 -6
  31. package/lib/engine/engine_camera.js +23 -23
  32. package/lib/engine/engine_components.d.ts +17 -17
  33. package/lib/engine/engine_components.js +273 -273
  34. package/lib/engine/engine_components_internal.d.ts +11 -11
  35. package/lib/engine/engine_components_internal.js +41 -41
  36. package/lib/engine/engine_constants.d.ts +5 -5
  37. package/lib/engine/engine_constants.js +32 -32
  38. package/lib/engine/engine_context.d.ts +269 -269
  39. package/lib/engine/engine_context.js +1242 -1242
  40. package/lib/engine/engine_context_registry.d.ts +50 -50
  41. package/lib/engine/engine_context_registry.js +89 -89
  42. package/lib/engine/engine_coroutine.d.ts +4 -4
  43. package/lib/engine/engine_coroutine.js +21 -21
  44. package/lib/engine/engine_create_objects.d.ts +13 -13
  45. package/lib/engine/engine_create_objects.js +33 -33
  46. package/lib/engine/engine_default_parameters.d.ts +2 -2
  47. package/lib/engine/engine_default_parameters.js +3 -3
  48. package/lib/engine/engine_editor-sync.d.ts +17 -17
  49. package/lib/engine/engine_editor-sync.js +7 -7
  50. package/lib/engine/engine_element.d.ts +55 -55
  51. package/lib/engine/engine_element.js +559 -559
  52. package/lib/engine/engine_element_attributes.d.ts +49 -49
  53. package/lib/engine/engine_element_attributes.js +1 -1
  54. package/lib/engine/engine_element_extras.d.ts +6 -6
  55. package/lib/engine/engine_element_extras.js +13 -13
  56. package/lib/engine/engine_element_loading.d.ts +40 -40
  57. package/lib/engine/engine_element_loading.js +312 -312
  58. package/lib/engine/engine_element_overlay.d.ts +19 -19
  59. package/lib/engine/engine_element_overlay.js +143 -143
  60. package/lib/engine/engine_fileloader.d.ts +3 -3
  61. package/lib/engine/engine_fileloader.js +7 -7
  62. package/lib/engine/engine_gameobject.d.ts +39 -39
  63. package/lib/engine/engine_gameobject.js +559 -559
  64. package/lib/engine/engine_generic_utils.d.ts +1 -1
  65. package/lib/engine/engine_generic_utils.js +13 -13
  66. package/lib/engine/engine_gizmos.d.ts +26 -26
  67. package/lib/engine/engine_gizmos.js +282 -282
  68. package/lib/engine/engine_gltf.d.ts +13 -13
  69. package/lib/engine/engine_gltf.js +15 -15
  70. package/lib/engine/engine_gltf_builtin_components.d.ts +7 -7
  71. package/lib/engine/engine_gltf_builtin_components.js +298 -298
  72. package/lib/engine/engine_hot_reload.d.ts +5 -5
  73. package/lib/engine/engine_hot_reload.js +182 -182
  74. package/lib/engine/engine_input.d.ts +129 -129
  75. package/lib/engine/engine_input.js +799 -799
  76. package/lib/engine/engine_input_utils.d.ts +2 -2
  77. package/lib/engine/engine_input_utils.js +22 -22
  78. package/lib/engine/engine_instancing.d.ts +16 -16
  79. package/lib/engine/engine_instancing.js +36 -36
  80. package/lib/engine/engine_license.d.ts +4 -4
  81. package/lib/engine/engine_license.js +398 -398
  82. package/lib/engine/engine_lifecycle_api.d.ts +14 -14
  83. package/lib/engine/engine_lifecycle_api.js +24 -24
  84. package/lib/engine/engine_lifecycle_functions_internal.d.ts +6 -6
  85. package/lib/engine/engine_lifecycle_functions_internal.js +28 -28
  86. package/lib/engine/engine_lightdata.d.ts +23 -23
  87. package/lib/engine/engine_lightdata.js +86 -86
  88. package/lib/engine/engine_loaders.d.ts +7 -7
  89. package/lib/engine/engine_loaders.js +69 -69
  90. package/lib/engine/engine_mainloop_utils.d.ts +13 -13
  91. package/lib/engine/engine_mainloop_utils.js +426 -426
  92. package/lib/engine/engine_math.d.ts +43 -43
  93. package/lib/engine/engine_math.js +147 -147
  94. package/lib/engine/engine_networking.d.ts +176 -176
  95. package/lib/engine/engine_networking.js +649 -649
  96. package/lib/engine/engine_networking_auto.d.ts +24 -24
  97. package/lib/engine/engine_networking_auto.js +324 -324
  98. package/lib/engine/engine_networking_files.d.ts +23 -23
  99. package/lib/engine/engine_networking_files.js +176 -176
  100. package/lib/engine/engine_networking_files_default_components.d.ts +3 -3
  101. package/lib/engine/engine_networking_files_default_components.js +39 -39
  102. package/lib/engine/engine_networking_instantiate.d.ts +39 -39
  103. package/lib/engine/engine_networking_instantiate.js +302 -302
  104. package/lib/engine/engine_networking_peer.d.ts +15 -15
  105. package/lib/engine/engine_networking_peer.js +132 -132
  106. package/lib/engine/engine_networking_streams.d.ts +90 -90
  107. package/lib/engine/engine_networking_streams.js +428 -428
  108. package/lib/engine/engine_networking_types.d.ts +14 -14
  109. package/lib/engine/engine_networking_types.js +7 -7
  110. package/lib/engine/engine_networking_utils.d.ts +2 -2
  111. package/lib/engine/engine_networking_utils.js +20 -20
  112. package/lib/engine/engine_patcher.d.ts +10 -10
  113. package/lib/engine/engine_patcher.js +142 -142
  114. package/lib/engine/engine_physics.d.ts +115 -115
  115. package/lib/engine/engine_physics.js +228 -228
  116. package/lib/engine/engine_physics.types.d.ts +37 -37
  117. package/lib/engine/engine_physics.types.js +33 -33
  118. package/lib/engine/engine_physics_rapier.d.ts +112 -112
  119. package/lib/engine/engine_physics_rapier.js +1266 -1266
  120. package/lib/engine/engine_playerview.d.ts +26 -26
  121. package/lib/engine/engine_playerview.js +64 -64
  122. package/lib/engine/engine_scenelighting.d.ts +74 -74
  123. package/lib/engine/engine_scenelighting.js +285 -285
  124. package/lib/engine/engine_scenetools.d.ts +35 -35
  125. package/lib/engine/engine_scenetools.js +212 -212
  126. package/lib/engine/engine_serialization.d.ts +4 -4
  127. package/lib/engine/engine_serialization.js +4 -4
  128. package/lib/engine/engine_serialization_builtin_serializer.d.ts +62 -62
  129. package/lib/engine/engine_serialization_builtin_serializer.js +369 -369
  130. package/lib/engine/engine_serialization_core.d.ts +84 -84
  131. package/lib/engine/engine_serialization_core.js +576 -576
  132. package/lib/engine/engine_serialization_decorator.d.ts +15 -15
  133. package/lib/engine/engine_serialization_decorator.js +54 -54
  134. package/lib/engine/engine_setup.d.ts +1 -1
  135. package/lib/engine/engine_setup.js +2 -2
  136. package/lib/engine/engine_shaders.d.ts +31 -31
  137. package/lib/engine/engine_shaders.js +229 -229
  138. package/lib/engine/engine_shims.d.ts +3 -3
  139. package/lib/engine/engine_shims.js +22 -22
  140. package/lib/engine/engine_texture.d.ts +20 -20
  141. package/lib/engine/engine_texture.js +57 -57
  142. package/lib/engine/engine_three_utils.d.ts +51 -51
  143. package/lib/engine/engine_three_utils.js +342 -342
  144. package/lib/engine/engine_time.d.ts +19 -19
  145. package/lib/engine/engine_time.js +47 -47
  146. package/lib/engine/engine_types.d.ts +358 -358
  147. package/lib/engine/engine_types.js +72 -72
  148. package/lib/engine/engine_typestore.d.ts +16 -16
  149. package/lib/engine/engine_typestore.js +35 -35
  150. package/lib/engine/engine_util_decorator.d.ts +12 -12
  151. package/lib/engine/engine_util_decorator.js +115 -115
  152. package/lib/engine/engine_utils.d.ts +104 -104
  153. package/lib/engine/engine_utils.js +518 -518
  154. package/lib/engine/engine_utils_screenshot.d.ts +10 -10
  155. package/lib/engine/engine_utils_screenshot.js +70 -70
  156. package/lib/engine/engine_web_api.d.ts +12 -12
  157. package/lib/engine/engine_web_api.js +112 -112
  158. package/lib/engine/extensions/EXT_texture_exr.d.ts +8 -8
  159. package/lib/engine/extensions/EXT_texture_exr.js +32 -32
  160. package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +116 -116
  161. package/lib/engine/extensions/NEEDLE_animator_controller_model.js +91 -91
  162. package/lib/engine/extensions/NEEDLE_components.d.ts +33 -33
  163. package/lib/engine/extensions/NEEDLE_components.js +206 -206
  164. package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -10
  165. package/lib/engine/extensions/NEEDLE_gameobject_data.js +57 -57
  166. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +38 -38
  167. package/lib/engine/extensions/NEEDLE_lighting_settings.js +183 -183
  168. package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
  169. package/lib/engine/extensions/NEEDLE_lightmaps.js +108 -108
  170. package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -11
  171. package/lib/engine/extensions/NEEDLE_persistent_assets.js +63 -63
  172. package/lib/engine/extensions/NEEDLE_progressive.d.ts +41 -41
  173. package/lib/engine/extensions/NEEDLE_progressive.js +366 -366
  174. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +13 -13
  175. package/lib/engine/extensions/NEEDLE_render_objects.js +159 -159
  176. package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +39 -39
  177. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +544 -544
  178. package/lib/engine/extensions/extension_resolver.d.ts +4 -4
  179. package/lib/engine/extensions/extension_resolver.js +1 -1
  180. package/lib/engine/extensions/extension_utils.d.ts +2 -2
  181. package/lib/engine/extensions/extension_utils.js +140 -140
  182. package/lib/engine/extensions/extensions.d.ts +21 -21
  183. package/lib/engine/extensions/extensions.js +94 -94
  184. package/lib/engine/extensions/index.d.ts +5 -5
  185. package/lib/engine/extensions/index.js +5 -5
  186. package/lib/engine/extensions/usage_tracker.d.ts +13 -13
  187. package/lib/engine/extensions/usage_tracker.js +61 -61
  188. package/lib/engine/js-extensions/Camera.d.ts +1 -1
  189. package/lib/engine/js-extensions/Camera.js +36 -36
  190. package/lib/engine/js-extensions/Layers.d.ts +3 -3
  191. package/lib/engine/js-extensions/Layers.js +19 -19
  192. package/lib/engine/js-extensions/index.d.ts +2 -2
  193. package/lib/engine/js-extensions/index.js +2 -2
  194. package/lib/engine/shaders/shaderData.d.ts +55 -55
  195. package/lib/engine/shaders/shaderData.js +58 -58
  196. package/lib/engine/tests/test_utils.d.ts +2 -2
  197. package/lib/engine/tests/test_utils.js +53 -53
  198. package/lib/engine-components/AlignmentConstraint.d.ts +10 -10
  199. package/lib/engine-components/AlignmentConstraint.js +39 -39
  200. package/lib/engine-components/Animation.d.ts +53 -53
  201. package/lib/engine-components/Animation.js +333 -333
  202. package/lib/engine-components/AnimationCurve.d.ts +16 -16
  203. package/lib/engine-components/AnimationCurve.js +97 -97
  204. package/lib/engine-components/AnimationUtils.d.ts +8 -8
  205. package/lib/engine-components/AnimationUtils.js +110 -110
  206. package/lib/engine-components/Animator.d.ts +81 -81
  207. package/lib/engine-components/Animator.js +229 -229
  208. package/lib/engine-components/AnimatorController.d.ts +57 -57
  209. package/lib/engine-components/AnimatorController.js +887 -887
  210. package/lib/engine-components/AnimatorController.js.map +1 -1
  211. package/lib/engine-components/AudioListener.d.ts +7 -7
  212. package/lib/engine-components/AudioListener.js +30 -30
  213. package/lib/engine-components/AudioSource.d.ts +61 -61
  214. package/lib/engine-components/AudioSource.js +422 -422
  215. package/lib/engine-components/AvatarLoader.d.ts +19 -19
  216. package/lib/engine-components/AvatarLoader.js +173 -173
  217. package/lib/engine-components/AxesHelper.d.ts +9 -9
  218. package/lib/engine-components/AxesHelper.js +44 -44
  219. package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
  220. package/lib/engine-components/BasicIKConstraint.js +43 -43
  221. package/lib/engine-components/BoxHelperComponent.d.ts +16 -16
  222. package/lib/engine-components/BoxHelperComponent.js +89 -89
  223. package/lib/engine-components/Camera.d.ts +70 -70
  224. package/lib/engine-components/Camera.js +450 -450
  225. package/lib/engine-components/CameraUtils.d.ts +1 -1
  226. package/lib/engine-components/CameraUtils.js +77 -77
  227. package/lib/engine-components/CharacterController.d.ts +46 -46
  228. package/lib/engine-components/CharacterController.js +227 -227
  229. package/lib/engine-components/Collider.d.ts +46 -46
  230. package/lib/engine-components/Collider.js +153 -153
  231. package/lib/engine-components/Component.d.ts +228 -228
  232. package/lib/engine-components/Component.js +541 -541
  233. package/lib/engine-components/ContactShadows.d.ts +23 -23
  234. package/lib/engine-components/ContactShadows.js +233 -233
  235. package/lib/engine-components/DeleteBox.d.ts +9 -9
  236. package/lib/engine-components/DeleteBox.js +30 -30
  237. package/lib/engine-components/DeviceFlag.d.ts +12 -12
  238. package/lib/engine-components/DeviceFlag.js +43 -43
  239. package/lib/engine-components/DragControls.d.ts +51 -51
  240. package/lib/engine-components/DragControls.js +516 -516
  241. package/lib/engine-components/DropListener.d.ts +15 -15
  242. package/lib/engine-components/DropListener.js +120 -120
  243. package/lib/engine-components/Duplicatable.d.ts +16 -16
  244. package/lib/engine-components/Duplicatable.js +150 -150
  245. package/lib/engine-components/EventList.d.ts +28 -28
  246. package/lib/engine-components/EventList.js +105 -105
  247. package/lib/engine-components/EventTrigger.d.ts +12 -12
  248. package/lib/engine-components/EventTrigger.js +50 -50
  249. package/lib/engine-components/EventType.d.ts +19 -19
  250. package/lib/engine-components/EventType.js +71 -71
  251. package/lib/engine-components/FlyControls.d.ts +7 -7
  252. package/lib/engine-components/FlyControls.js +25 -25
  253. package/lib/engine-components/Fog.d.ts +20 -20
  254. package/lib/engine-components/Fog.js +60 -60
  255. package/lib/engine-components/Gizmos.d.ts +12 -12
  256. package/lib/engine-components/Gizmos.js +60 -60
  257. package/lib/engine-components/GridHelper.d.ts +12 -12
  258. package/lib/engine-components/GridHelper.js +47 -47
  259. package/lib/engine-components/GroundProjection.d.ts +21 -21
  260. package/lib/engine-components/GroundProjection.js +97 -97
  261. package/lib/engine-components/Interactable.d.ts +10 -10
  262. package/lib/engine-components/Interactable.js +11 -11
  263. package/lib/engine-components/Joints.d.ts +19 -19
  264. package/lib/engine-components/Joints.js +51 -51
  265. package/lib/engine-components/LODGroup.d.ts +30 -30
  266. package/lib/engine-components/LODGroup.js +145 -145
  267. package/lib/engine-components/Light.d.ts +75 -75
  268. package/lib/engine-components/Light.js +475 -475
  269. package/lib/engine-components/LookAtConstraint.d.ts +7 -7
  270. package/lib/engine-components/LookAtConstraint.js +17 -17
  271. package/lib/engine-components/NestedGltf.d.ts +11 -11
  272. package/lib/engine-components/NestedGltf.js +74 -74
  273. package/lib/engine-components/Networking.d.ts +11 -11
  274. package/lib/engine-components/Networking.js +70 -70
  275. package/lib/engine-components/OffsetConstraint.d.ts +14 -14
  276. package/lib/engine-components/OffsetConstraint.js +65 -65
  277. package/lib/engine-components/OrbitControls.d.ts +111 -111
  278. package/lib/engine-components/OrbitControls.js +646 -646
  279. package/lib/engine-components/ParticleSystem.d.ts +145 -145
  280. package/lib/engine-components/ParticleSystem.js +1077 -1077
  281. package/lib/engine-components/ParticleSystemModules.d.ts +489 -489
  282. package/lib/engine-components/ParticleSystemModules.js +1667 -1667
  283. package/lib/engine-components/ParticleSystemSubEmitter.d.ts +25 -25
  284. package/lib/engine-components/ParticleSystemSubEmitter.js +86 -86
  285. package/lib/engine-components/PlayerColor.d.ts +13 -13
  286. package/lib/engine-components/PlayerColor.js +83 -83
  287. package/lib/engine-components/ReflectionProbe.d.ts +22 -22
  288. package/lib/engine-components/ReflectionProbe.js +181 -181
  289. package/lib/engine-components/Renderer.d.ts +112 -112
  290. package/lib/engine-components/Renderer.js +1029 -1029
  291. package/lib/engine-components/RendererLightmap.d.ts +19 -19
  292. package/lib/engine-components/RendererLightmap.js +127 -127
  293. package/lib/engine-components/RigidBody.d.ts +120 -120
  294. package/lib/engine-components/RigidBody.js +452 -452
  295. package/lib/engine-components/SceneSwitcher.d.ts +72 -72
  296. package/lib/engine-components/SceneSwitcher.js +583 -583
  297. package/lib/engine-components/ScreenCapture.d.ts +64 -64
  298. package/lib/engine-components/ScreenCapture.js +405 -405
  299. package/lib/engine-components/ShadowCatcher.d.ts +18 -18
  300. package/lib/engine-components/ShadowCatcher.js +144 -144
  301. package/lib/engine-components/Skybox.d.ts +23 -23
  302. package/lib/engine-components/Skybox.js +287 -287
  303. package/lib/engine-components/SmoothFollow.d.ts +14 -14
  304. package/lib/engine-components/SmoothFollow.js +63 -63
  305. package/lib/engine-components/SpatialTrigger.d.ts +27 -27
  306. package/lib/engine-components/SpatialTrigger.js +144 -144
  307. package/lib/engine-components/SpectatorCamera.d.ts +45 -45
  308. package/lib/engine-components/SpectatorCamera.js +593 -593
  309. package/lib/engine-components/SpriteRenderer.d.ts +48 -48
  310. package/lib/engine-components/SpriteRenderer.js +257 -257
  311. package/lib/engine-components/SyncedCamera.d.ts +27 -27
  312. package/lib/engine-components/SyncedCamera.js +187 -187
  313. package/lib/engine-components/SyncedRoom.d.ts +24 -24
  314. package/lib/engine-components/SyncedRoom.js +162 -162
  315. package/lib/engine-components/SyncedTransform.d.ts +35 -35
  316. package/lib/engine-components/SyncedTransform.js +265 -265
  317. package/lib/engine-components/TestRunner.d.ts +13 -13
  318. package/lib/engine-components/TestRunner.js +99 -99
  319. package/lib/engine-components/TransformGizmo.d.ts +16 -16
  320. package/lib/engine-components/TransformGizmo.js +148 -148
  321. package/lib/engine-components/VideoPlayer.d.ts +86 -86
  322. package/lib/engine-components/VideoPlayer.js +792 -792
  323. package/lib/engine-components/Voip.d.ts +29 -29
  324. package/lib/engine-components/Voip.js +203 -203
  325. package/lib/engine-components/XRFlag.d.ts +33 -33
  326. package/lib/engine-components/XRFlag.js +128 -128
  327. package/lib/engine-components/api.d.ts +15 -15
  328. package/lib/engine-components/api.js +15 -15
  329. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +10 -10
  330. package/lib/engine-components/avatar/AvatarBlink_Simple.js +75 -75
  331. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +13 -13
  332. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +74 -74
  333. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +27 -27
  334. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +119 -119
  335. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +13 -13
  336. package/lib/engine-components/avatar/Avatar_MouthShapes.js +78 -78
  337. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +8 -8
  338. package/lib/engine-components/avatar/Avatar_MustacheShake.js +28 -28
  339. package/lib/engine-components/codegen/components.d.ts +216 -216
  340. package/lib/engine-components/codegen/components.js +217 -217
  341. package/lib/engine-components/debug/LogStats.d.ts +5 -5
  342. package/lib/engine-components/debug/LogStats.js +18 -18
  343. package/lib/engine-components/export/gltf/GltfExport.d.ts +25 -25
  344. package/lib/engine-components/export/gltf/GltfExport.js +215 -215
  345. package/lib/engine-components/export/index.d.ts +1 -1
  346. package/lib/engine-components/export/index.js +1 -1
  347. package/lib/engine-components/export/usdz/Extension.d.ts +10 -10
  348. package/lib/engine-components/export/usdz/Extension.js +1 -1
  349. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +114 -114
  350. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1211 -1211
  351. package/lib/engine-components/export/usdz/USDZExporter.d.ts +59 -59
  352. package/lib/engine-components/export/usdz/USDZExporter.js +450 -450
  353. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +69 -69
  354. package/lib/engine-components/export/usdz/extensions/Animation.js +650 -650
  355. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -5
  356. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +6 -6
  357. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +55 -55
  358. package/lib/engine-components/export/usdz/extensions/USDZText.js +246 -246
  359. package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
  360. package/lib/engine-components/export/usdz/extensions/USDZUI.js +100 -100
  361. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -30
  362. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +88 -88
  363. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.d.ts +9 -9
  364. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +52 -52
  365. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +22 -22
  366. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +134 -134
  367. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +126 -126
  368. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +824 -824
  369. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +133 -133
  370. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +464 -464
  371. package/lib/engine-components/export/usdz/index.d.ts +3 -3
  372. package/lib/engine-components/export/usdz/index.js +2 -2
  373. package/lib/engine-components/export/usdz/utils/animationutils.d.ts +3 -3
  374. package/lib/engine-components/export/usdz/utils/animationutils.js +85 -85
  375. package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
  376. package/lib/engine-components/export/usdz/utils/quicklook.js +35 -35
  377. package/lib/engine-components/export/usdz/utils/timeutils.d.ts +1 -1
  378. package/lib/engine-components/export/usdz/utils/timeutils.js +14 -14
  379. package/lib/engine-components/js-extensions/ExtensionUtils.d.ts +6 -6
  380. package/lib/engine-components/js-extensions/ExtensionUtils.js +65 -65
  381. package/lib/engine-components/js-extensions/Object3D.d.ts +2 -2
  382. package/lib/engine-components/js-extensions/Object3D.js +140 -140
  383. package/lib/engine-components/js-extensions/RGBAColor.d.ts +14 -14
  384. package/lib/engine-components/js-extensions/RGBAColor.js +49 -49
  385. package/lib/engine-components/js-extensions/index.d.ts +3 -3
  386. package/lib/engine-components/js-extensions/index.js +3 -3
  387. package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +13 -13
  388. package/lib/engine-components/postprocessing/Effects/Antialiasing.js +45 -45
  389. package/lib/engine-components/postprocessing/Effects/Bloom.d.ts +12 -12
  390. package/lib/engine-components/postprocessing/Effects/Bloom.js +77 -77
  391. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +8 -8
  392. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +38 -38
  393. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +12 -12
  394. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +81 -81
  395. package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +21 -21
  396. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +97 -97
  397. package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +7 -7
  398. package/lib/engine-components/postprocessing/Effects/Pixelation.js +28 -28
  399. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +13 -13
  400. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +86 -86
  401. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +24 -24
  402. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +94 -94
  403. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +13 -13
  404. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +62 -62
  405. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +16 -16
  406. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +51 -51
  407. package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +11 -11
  408. package/lib/engine-components/postprocessing/Effects/Vignette.js +56 -56
  409. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +33 -33
  410. package/lib/engine-components/postprocessing/PostProcessingEffect.js +126 -126
  411. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +22 -22
  412. package/lib/engine-components/postprocessing/PostProcessingHandler.js +201 -201
  413. package/lib/engine-components/postprocessing/Volume.d.ts +25 -25
  414. package/lib/engine-components/postprocessing/Volume.js +193 -193
  415. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +22 -22
  416. package/lib/engine-components/postprocessing/VolumeParameter.js +80 -80
  417. package/lib/engine-components/postprocessing/VolumeProfile.d.ts +7 -7
  418. package/lib/engine-components/postprocessing/VolumeProfile.js +41 -41
  419. package/lib/engine-components/postprocessing/index.d.ts +4 -4
  420. package/lib/engine-components/postprocessing/index.js +4 -4
  421. package/lib/engine-components/timeline/PlayableDirector.d.ts +107 -107
  422. package/lib/engine-components/timeline/PlayableDirector.js +624 -624
  423. package/lib/engine-components/timeline/SignalAsset.d.ts +18 -18
  424. package/lib/engine-components/timeline/SignalAsset.js +124 -124
  425. package/lib/engine-components/timeline/TimelineModels.d.ts +88 -88
  426. package/lib/engine-components/timeline/TimelineModels.js +22 -22
  427. package/lib/engine-components/timeline/TimelineTracks.d.ts +90 -90
  428. package/lib/engine-components/timeline/TimelineTracks.js +825 -825
  429. package/lib/engine-components/timeline/index.d.ts +4 -4
  430. package/lib/engine-components/timeline/index.js +3 -3
  431. package/lib/engine-components/ui/BaseUIComponent.d.ts +31 -31
  432. package/lib/engine-components/ui/BaseUIComponent.js +161 -161
  433. package/lib/engine-components/ui/Button.d.ts +56 -56
  434. package/lib/engine-components/ui/Button.js +282 -282
  435. package/lib/engine-components/ui/Canvas.d.ts +67 -67
  436. package/lib/engine-components/ui/Canvas.js +382 -382
  437. package/lib/engine-components/ui/CanvasGroup.d.ts +15 -15
  438. package/lib/engine-components/ui/CanvasGroup.js +53 -53
  439. package/lib/engine-components/ui/EventSystem.d.ts +102 -102
  440. package/lib/engine-components/ui/EventSystem.js +641 -641
  441. package/lib/engine-components/ui/Graphic.d.ts +45 -45
  442. package/lib/engine-components/ui/Graphic.js +236 -236
  443. package/lib/engine-components/ui/Image.d.ts +27 -27
  444. package/lib/engine-components/ui/Image.js +107 -107
  445. package/lib/engine-components/ui/InputField.d.ts +34 -34
  446. package/lib/engine-components/ui/InputField.js +234 -234
  447. package/lib/engine-components/ui/Interfaces.d.ts +38 -38
  448. package/lib/engine-components/ui/Interfaces.js +12 -12
  449. package/lib/engine-components/ui/Layout.d.ts +72 -72
  450. package/lib/engine-components/ui/Layout.js +318 -318
  451. package/lib/engine-components/ui/Outline.d.ts +7 -7
  452. package/lib/engine-components/ui/Outline.js +20 -20
  453. package/lib/engine-components/ui/PointerEvents.d.ts +64 -64
  454. package/lib/engine-components/ui/PointerEvents.js +68 -68
  455. package/lib/engine-components/ui/RaycastUtils.d.ts +11 -11
  456. package/lib/engine-components/ui/RaycastUtils.js +67 -67
  457. package/lib/engine-components/ui/Raycaster.d.ts +18 -18
  458. package/lib/engine-components/ui/Raycaster.js +69 -69
  459. package/lib/engine-components/ui/RectTransform.d.ts +61 -61
  460. package/lib/engine-components/ui/RectTransform.js +343 -343
  461. package/lib/engine-components/ui/SpatialHtml.d.ts +6 -6
  462. package/lib/engine-components/ui/SpatialHtml.js +57 -57
  463. package/lib/engine-components/ui/Text.d.ts +74 -74
  464. package/lib/engine-components/ui/Text.js +534 -534
  465. package/lib/engine-components/ui/Utils.d.ts +23 -23
  466. package/lib/engine-components/ui/Utils.js +90 -90
  467. package/lib/engine-components/ui/index.d.ts +1 -1
  468. package/lib/engine-components/ui/index.js +1 -1
  469. package/lib/engine-components/utils/LookAt.d.ts +13 -13
  470. package/lib/engine-components/utils/LookAt.js +59 -59
  471. package/lib/engine-components/utils/OpenURL.d.ts +21 -21
  472. package/lib/engine-components/utils/OpenURL.js +124 -124
  473. package/lib/engine-components/webxr/WebARCameraBackground.d.ts +19 -19
  474. package/lib/engine-components/webxr/WebARCameraBackground.js +193 -193
  475. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +38 -38
  476. package/lib/engine-components/webxr/WebARSessionRoot.js +407 -407
  477. package/lib/engine-components/webxr/WebXR.d.ts +110 -110
  478. package/lib/engine-components/webxr/WebXR.js +672 -672
  479. package/lib/engine-components/webxr/WebXRAvatar.d.ts +61 -61
  480. package/lib/engine-components/webxr/WebXRAvatar.js +289 -289
  481. package/lib/engine-components/webxr/WebXRController.d.ts +154 -154
  482. package/lib/engine-components/webxr/WebXRController.js +1028 -1028
  483. package/lib/engine-components/webxr/WebXRGrabRendering.d.ts +42 -42
  484. package/lib/engine-components/webxr/WebXRGrabRendering.js +137 -137
  485. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +49 -49
  486. package/lib/engine-components/webxr/WebXRImageTracking.js +336 -336
  487. package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +49 -49
  488. package/lib/engine-components/webxr/WebXRPlaneTracking.js +372 -372
  489. package/lib/engine-components/webxr/WebXRRig.d.ts +4 -4
  490. package/lib/engine-components/webxr/WebXRRig.js +19 -19
  491. package/lib/engine-components/webxr/WebXRSync.d.ts +54 -54
  492. package/lib/engine-components/webxr/WebXRSync.js +410 -410
  493. package/lib/engine-components/webxr/index.d.ts +4 -4
  494. package/lib/engine-components/webxr/index.js +4 -4
  495. package/lib/engine-components-experimental/Presentation.d.ts +6 -6
  496. package/lib/engine-components-experimental/Presentation.js +9 -9
  497. package/lib/engine-components-experimental/api.d.ts +1 -1
  498. package/lib/engine-components-experimental/api.js +1 -1
  499. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +50 -50
  500. package/lib/engine-components-experimental/networking/PlayerSync.js +200 -200
  501. package/lib/engine-schemes/api.d.ts +1 -1
  502. package/lib/engine-schemes/api.js +1 -1
  503. package/lib/engine-schemes/schemes.d.ts +7 -7
  504. package/lib/engine-schemes/schemes.js +19 -19
  505. package/lib/engine-schemes/synced-camera-model.d.ts +25 -25
  506. package/lib/engine-schemes/synced-camera-model.js +67 -67
  507. package/lib/engine-schemes/synced-transform-model.d.ts +31 -31
  508. package/lib/engine-schemes/synced-transform-model.js +66 -66
  509. package/lib/engine-schemes/transform.d.ts +12 -12
  510. package/lib/engine-schemes/transform.js +39 -39
  511. package/lib/engine-schemes/vec3.d.ts +11 -11
  512. package/lib/engine-schemes/vec3.js +29 -29
  513. package/lib/engine-schemes/vec4.d.ts +12 -12
  514. package/lib/engine-schemes/vec4.js +33 -33
  515. package/lib/engine-schemes/vr-user-state-buffer.d.ts +36 -36
  516. package/lib/engine-schemes/vr-user-state-buffer.js +103 -103
  517. package/lib/include/three/ARButton.d.ts +3 -3
  518. package/lib/include/three/ARButton.js +151 -151
  519. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -6
  520. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +45 -45
  521. package/lib/include/three/VRButton.d.ts +5 -5
  522. package/lib/include/three/VRButton.js +118 -118
  523. package/lib/needle-engine.d.ts +6 -6
  524. package/lib/needle-engine.js +49 -49
  525. package/package.json +1 -1
  526. package/plugins/common/config.cjs +14 -14
  527. package/plugins/common/config.js +19 -19
  528. package/plugins/common/generator.js +10 -10
  529. package/plugins/common/license.cjs +30 -30
  530. package/plugins/common/version.js +11 -11
  531. package/plugins/next/license.cjs +4 -4
  532. package/plugins/next/next.js +70 -70
  533. package/plugins/types/index.d.ts +1 -1
  534. package/plugins/types/needleConfig.d.ts +21 -21
  535. package/plugins/types/userconfig.d.ts +42 -42
  536. package/plugins/vite/alias.js +70 -70
  537. package/plugins/vite/build.js +19 -19
  538. package/plugins/vite/config.js +73 -73
  539. package/plugins/vite/copyfiles.js +134 -134
  540. package/plugins/vite/defines.js +45 -45
  541. package/plugins/vite/dependency-watcher.js +224 -224
  542. package/plugins/vite/drop-client.js +76 -76
  543. package/plugins/vite/drop.js +82 -82
  544. package/plugins/vite/editor-connection.js +121 -121
  545. package/plugins/vite/facebook-instant-games.js +99 -99
  546. package/plugins/vite/gzip.js +5 -5
  547. package/plugins/vite/imports-logger.js +143 -143
  548. package/plugins/vite/index.js +81 -81
  549. package/plugins/vite/license.js +42 -42
  550. package/plugins/vite/meta.js +149 -149
  551. package/plugins/vite/peer.js +31 -31
  552. package/plugins/vite/poster-client.js +59 -59
  553. package/plugins/vite/poster.js +73 -73
  554. package/plugins/vite/reload-client.js +15 -15
  555. package/plugins/vite/reload.js +363 -363
  556. package/plugins/vite/transform-codegen.js +55 -55
  557. package/plugins/vite/vite-4.4-hack.js +31 -31
  558. package/src/engine/api.ts +54 -54
  559. package/src/engine/assets/index.ts +4 -4
  560. package/src/engine/codegen/register_types.ts +441 -441
  561. package/src/engine/debug/debug.ts +29 -29
  562. package/src/engine/debug/debug_console.ts +213 -213
  563. package/src/engine/debug/debug_overlay.ts +283 -283
  564. package/src/engine/engine.ts +13 -13
  565. package/src/engine/engine_addressables.ts +494 -494
  566. package/src/engine/engine_application.ts +53 -53
  567. package/src/engine/engine_assetdatabase.ts +383 -383
  568. package/src/engine/engine_camera.ts +32 -32
  569. package/src/engine/engine_components.ts +266 -266
  570. package/src/engine/engine_components_internal.ts +42 -42
  571. package/src/engine/engine_constants.ts +42 -42
  572. package/src/engine/engine_context.ts +1386 -1386
  573. package/src/engine/engine_context_registry.ts +103 -103
  574. package/src/engine/engine_coroutine.ts +24 -24
  575. package/src/engine/engine_create_objects.ts +39 -39
  576. package/src/engine/engine_default_parameters.ts +3 -3
  577. package/src/engine/engine_editor-sync.ts +29 -29
  578. package/src/engine/engine_element.ts +592 -592
  579. package/src/engine/engine_element_attributes.ts +61 -61
  580. package/src/engine/engine_element_extras.ts +16 -16
  581. package/src/engine/engine_element_loading.ts +341 -341
  582. package/src/engine/engine_element_overlay.ts +160 -160
  583. package/src/engine/engine_fileloader.js +8 -8
  584. package/src/engine/engine_gameobject.ts +621 -621
  585. package/src/engine/engine_generic_utils.js +13 -13
  586. package/src/engine/engine_gizmos.ts +321 -321
  587. package/src/engine/engine_gltf.ts +30 -30
  588. package/src/engine/engine_gltf_builtin_components.ts +350 -350
  589. package/src/engine/engine_hot_reload.ts +196 -196
  590. package/src/engine/engine_input.ts +879 -879
  591. package/src/engine/engine_input_utils.ts +23 -23
  592. package/src/engine/engine_instancing.ts +42 -42
  593. package/src/engine/engine_license.ts +413 -413
  594. package/src/engine/engine_lifecycle_api.ts +29 -29
  595. package/src/engine/engine_lifecycle_functions_internal.ts +36 -36
  596. package/src/engine/engine_lightdata.ts +113 -113
  597. package/src/engine/engine_loaders.ts +77 -77
  598. package/src/engine/engine_mainloop_utils.ts +431 -431
  599. package/src/engine/engine_math.ts +174 -174
  600. package/src/engine/engine_networking.ts +742 -742
  601. package/src/engine/engine_networking_auto.ts +373 -373
  602. package/src/engine/engine_networking_files.ts +206 -206
  603. package/src/engine/engine_networking_files_default_components.ts +54 -54
  604. package/src/engine/engine_networking_instantiate.ts +362 -362
  605. package/src/engine/engine_networking_peer.ts +158 -158
  606. package/src/engine/engine_networking_streams.ts +489 -489
  607. package/src/engine/engine_networking_types.ts +18 -18
  608. package/src/engine/engine_networking_utils.ts +23 -23
  609. package/src/engine/engine_networking_websocket.ts +2 -2
  610. package/src/engine/engine_patcher.ts +199 -199
  611. package/src/engine/engine_physics.ts +287 -287
  612. package/src/engine/engine_physics.types.ts +43 -43
  613. package/src/engine/engine_physics_rapier.ts +1385 -1385
  614. package/src/engine/engine_playerview.ts +79 -79
  615. package/src/engine/engine_scenelighting.ts +313 -313
  616. package/src/engine/engine_scenetools.ts +242 -242
  617. package/src/engine/engine_serialization.ts +6 -6
  618. package/src/engine/engine_serialization_builtin_serializer.ts +415 -415
  619. package/src/engine/engine_serialization_core.ts +680 -680
  620. package/src/engine/engine_serialization_decorator.ts +68 -68
  621. package/src/engine/engine_setup.ts +1 -1
  622. package/src/engine/engine_shaders.ts +242 -242
  623. package/src/engine/engine_shims.ts +28 -28
  624. package/src/engine/engine_texture.ts +70 -70
  625. package/src/engine/engine_three_utils.ts +382 -382
  626. package/src/engine/engine_time.ts +55 -55
  627. package/src/engine/engine_types.ts +489 -489
  628. package/src/engine/engine_typestore.ts +41 -41
  629. package/src/engine/engine_util_decorator.ts +134 -134
  630. package/src/engine/engine_utils.ts +605 -605
  631. package/src/engine/engine_utils_screenshot.ts +84 -84
  632. package/src/engine/engine_web_api.ts +119 -119
  633. package/src/engine/extensions/EXT_texture_exr.ts +49 -49
  634. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +193 -193
  635. package/src/engine/extensions/NEEDLE_components.ts +250 -250
  636. package/src/engine/extensions/NEEDLE_gameobject_data.ts +82 -82
  637. package/src/engine/extensions/NEEDLE_lighting_settings.ts +210 -210
  638. package/src/engine/extensions/NEEDLE_lightmaps.ts +130 -130
  639. package/src/engine/extensions/NEEDLE_persistent_assets.ts +75 -75
  640. package/src/engine/extensions/NEEDLE_progressive.ts +412 -412
  641. package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
  642. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +618 -618
  643. package/src/engine/extensions/extension_resolver.ts +4 -4
  644. package/src/engine/extensions/extension_utils.ts +149 -149
  645. package/src/engine/extensions/extensions.ts +118 -118
  646. package/src/engine/extensions/index.ts +4 -4
  647. package/src/engine/extensions/usage_tracker.ts +95 -95
  648. package/src/engine/js-extensions/Camera.ts +34 -34
  649. package/src/engine/js-extensions/Layers.ts +19 -19
  650. package/src/engine/js-extensions/index.ts +1 -1
  651. package/src/engine/shaders/shaderData.ts +67 -67
  652. package/src/engine/tests/test_utils.ts +63 -63
  653. package/src/engine-components/AlignmentConstraint.ts +35 -35
  654. package/src/engine-components/Animation.ts +345 -345
  655. package/src/engine-components/AnimationCurve.ts +83 -83
  656. package/src/engine-components/AnimationUtils.ts +117 -117
  657. package/src/engine-components/Animator.ts +243 -243
  658. package/src/engine-components/AnimatorController.ts +1020 -1020
  659. package/src/engine-components/AudioListener.ts +32 -32
  660. package/src/engine-components/AudioSource.ts +419 -419
  661. package/src/engine-components/AvatarLoader.ts +204 -204
  662. package/src/engine-components/AxesHelper.ts +33 -33
  663. package/src/engine-components/BasicIKConstraint.ts +53 -53
  664. package/src/engine-components/BoxCollider.ts +1 -1
  665. package/src/engine-components/BoxHelperComponent.ts +100 -100
  666. package/src/engine-components/Camera.ts +454 -454
  667. package/src/engine-components/CameraUtils.ts +89 -89
  668. package/src/engine-components/CharacterController.ts +243 -243
  669. package/src/engine-components/Collider.ts +160 -160
  670. package/src/engine-components/Component.ts +670 -670
  671. package/src/engine-components/ContactShadows.ts +265 -265
  672. package/src/engine-components/DeleteBox.ts +35 -35
  673. package/src/engine-components/DeviceFlag.ts +42 -42
  674. package/src/engine-components/DragControls.ts +574 -574
  675. package/src/engine-components/DropListener.ts +112 -112
  676. package/src/engine-components/Duplicatable.ts +146 -146
  677. package/src/engine-components/EventList.ts +125 -125
  678. package/src/engine-components/EventTrigger.ts +47 -47
  679. package/src/engine-components/EventType.ts +87 -87
  680. package/src/engine-components/FlyControls.ts +31 -31
  681. package/src/engine-components/Fog.ts +59 -59
  682. package/src/engine-components/Gizmos.ts +52 -52
  683. package/src/engine-components/GridHelper.ts +40 -40
  684. package/src/engine-components/GroundProjection.ts +97 -97
  685. package/src/engine-components/Interactable.ts +18 -18
  686. package/src/engine-components/Joints.ts +51 -51
  687. package/src/engine-components/LODGroup.ts +145 -145
  688. package/src/engine-components/Light.ts +493 -493
  689. package/src/engine-components/LookAtConstraint.ts +11 -11
  690. package/src/engine-components/NestedGltf.ts +70 -70
  691. package/src/engine-components/Networking.ts +72 -72
  692. package/src/engine-components/OffsetConstraint.ts +59 -59
  693. package/src/engine-components/OrbitControls.ts +653 -653
  694. package/src/engine-components/ParticleSystem.ts +1192 -1192
  695. package/src/engine-components/ParticleSystemModules.ts +1481 -1481
  696. package/src/engine-components/ParticleSystemSubEmitter.ts +110 -110
  697. package/src/engine-components/PlayerColor.ts +93 -93
  698. package/src/engine-components/ReflectionProbe.ts +192 -192
  699. package/src/engine-components/Renderer.ts +1125 -1125
  700. package/src/engine-components/RendererLightmap.ts +145 -145
  701. package/src/engine-components/RigidBody.ts +453 -453
  702. package/src/engine-components/SceneSwitcher.ts +594 -594
  703. package/src/engine-components/ScreenCapture.ts +437 -437
  704. package/src/engine-components/ShadowCatcher.ts +149 -149
  705. package/src/engine-components/Skybox.ts +281 -281
  706. package/src/engine-components/SmoothFollow.ts +57 -57
  707. package/src/engine-components/SpatialTrigger.ts +142 -142
  708. package/src/engine-components/SpectatorCamera.ts +675 -675
  709. package/src/engine-components/SphereCollider.ts +1 -1
  710. package/src/engine-components/SpriteRenderer.ts +244 -244
  711. package/src/engine-components/SyncedCamera.ts +208 -208
  712. package/src/engine-components/SyncedRoom.ts +166 -166
  713. package/src/engine-components/SyncedTransform.ts +336 -336
  714. package/src/engine-components/TestRunner.ts +114 -114
  715. package/src/engine-components/TransformGizmo.ts +157 -157
  716. package/src/engine-components/VideoPlayer.ts +831 -831
  717. package/src/engine-components/Voip.ts +214 -214
  718. package/src/engine-components/XRFlag.ts +138 -138
  719. package/src/engine-components/api.ts +22 -22
  720. package/src/engine-components/avatar/AvatarBlink_Simple.ts +67 -67
  721. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +68 -68
  722. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +136 -136
  723. package/src/engine-components/avatar/Avatar_MouthShapes.ts +81 -81
  724. package/src/engine-components/avatar/Avatar_MustacheShake.ts +28 -28
  725. package/src/engine-components/codegen/components.ts +216 -216
  726. package/src/engine-components/debug/LogStats.ts +21 -21
  727. package/src/engine-components/export/gltf/GltfExport.ts +231 -231
  728. package/src/engine-components/export/usdz/Extension.ts +11 -11
  729. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1773 -1773
  730. package/src/engine-components/export/usdz/USDZExporter.ts +477 -477
  731. package/src/engine-components/export/usdz/extensions/Animation.ts +774 -774
  732. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
  733. package/src/engine-components/export/usdz/extensions/USDZText.ts +287 -287
  734. package/src/engine-components/export/usdz/extensions/USDZUI.ts +119 -119
  735. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +98 -98
  736. package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +67 -67
  737. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +202 -202
  738. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +963 -963
  739. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +517 -517
  740. package/src/engine-components/export/usdz/index.ts +2 -2
  741. package/src/engine-components/export/usdz/utils/animationutils.ts +100 -100
  742. package/src/engine-components/export/usdz/utils/quicklook.ts +42 -42
  743. package/src/engine-components/export/usdz/utils/timeutils.ts +19 -19
  744. package/src/engine-components/js-extensions/ExtensionUtils.ts +81 -81
  745. package/src/engine-components/js-extensions/Object3D.ts +181 -181
  746. package/src/engine-components/js-extensions/RGBAColor.ts +54 -54
  747. package/src/engine-components/js-extensions/Vector.ts +16 -16
  748. package/src/engine-components/js-extensions/index.ts +2 -2
  749. package/src/engine-components/postprocessing/Effects/Antialiasing.ts +51 -51
  750. package/src/engine-components/postprocessing/Effects/Bloom.ts +76 -76
  751. package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +35 -35
  752. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +96 -96
  753. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +93 -93
  754. package/src/engine-components/postprocessing/Effects/Pixelation.ts +26 -26
  755. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +84 -84
  756. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +98 -98
  757. package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +55 -55
  758. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +54 -54
  759. package/src/engine-components/postprocessing/Effects/Vignette.ts +54 -54
  760. package/src/engine-components/postprocessing/PostProcessingEffect.ts +148 -148
  761. package/src/engine-components/postprocessing/PostProcessingHandler.ts +232 -232
  762. package/src/engine-components/postprocessing/Volume.ts +216 -216
  763. package/src/engine-components/postprocessing/VolumeParameter.ts +92 -92
  764. package/src/engine-components/postprocessing/VolumeProfile.ts +40 -40
  765. package/src/engine-components/postprocessing/index.ts +3 -3
  766. package/src/engine-components/timeline/PlayableDirector.ts +666 -666
  767. package/src/engine-components/timeline/SignalAsset.ts +138 -138
  768. package/src/engine-components/timeline/TimelineModels.ts +93 -93
  769. package/src/engine-components/timeline/TimelineTracks.ts +906 -906
  770. package/src/engine-components/timeline/index.ts +3 -3
  771. package/src/engine-components/ui/BaseUIComponent.ts +195 -195
  772. package/src/engine-components/ui/Button.ts +283 -283
  773. package/src/engine-components/ui/Canvas.ts +390 -390
  774. package/src/engine-components/ui/CanvasGroup.ts +49 -49
  775. package/src/engine-components/ui/EventSystem.ts +736 -736
  776. package/src/engine-components/ui/Graphic.ts +255 -255
  777. package/src/engine-components/ui/Image.ts +102 -102
  778. package/src/engine-components/ui/InputField.ts +290 -290
  779. package/src/engine-components/ui/Interfaces.ts +57 -57
  780. package/src/engine-components/ui/Layout.ts +322 -322
  781. package/src/engine-components/ui/Outline.ts +12 -12
  782. package/src/engine-components/ui/PointerEvents.ts +118 -118
  783. package/src/engine-components/ui/RaycastUtils.ts +68 -68
  784. package/src/engine-components/ui/Raycaster.ts +73 -73
  785. package/src/engine-components/ui/RectTransform.ts +364 -364
  786. package/src/engine-components/ui/SpatialHtml.ts +63 -63
  787. package/src/engine-components/ui/Text.ts +572 -572
  788. package/src/engine-components/ui/Utils.ts +110 -110
  789. package/src/engine-components/utils/LookAt.ts +65 -65
  790. package/src/engine-components/utils/OpenURL.ts +118 -118
  791. package/src/engine-components/webxr/WebARCameraBackground.ts +224 -224
  792. package/src/engine-components/webxr/WebARSessionRoot.ts +446 -446
  793. package/src/engine-components/webxr/WebXR.ts +761 -761
  794. package/src/engine-components/webxr/WebXRAvatar.ts +356 -356
  795. package/src/engine-components/webxr/WebXRController.ts +1168 -1168
  796. package/src/engine-components/webxr/WebXRGrabRendering.ts +150 -150
  797. package/src/engine-components/webxr/WebXRImageTracking.ts +371 -371
  798. package/src/engine-components/webxr/WebXRPlaneTracking.ts +429 -429
  799. package/src/engine-components/webxr/WebXRRig.ts +21 -21
  800. package/src/engine-components/webxr/WebXRSync.ts +463 -463
  801. package/src/engine-components/webxr/index.ts +3 -3
  802. package/src/engine-components-experimental/Presentation.ts +12 -12
  803. package/src/engine-components-experimental/networking/PlayerSync.ts +217 -217
  804. package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
  805. package/src/engine-schemes/COMPILE_TS.bat +11 -11
  806. package/src/engine-schemes/schemes.ts +27 -27
  807. package/src/engine-schemes/synced-camera-model.ts +92 -92
  808. package/src/engine-schemes/synced-transform-model.ts +90 -90
  809. package/src/engine-schemes/syncedCamera.fbs +10 -10
  810. package/src/engine-schemes/transform.ts +50 -50
  811. package/src/engine-schemes/transforms.fbs +25 -25
  812. package/src/engine-schemes/vec.fbs +19 -19
  813. package/src/engine-schemes/vec2.ts +33 -33
  814. package/src/engine-schemes/vec3.ts +38 -38
  815. package/src/engine-schemes/vec4.ts +43 -43
  816. package/src/engine-schemes/vr-user-state-buffer.ts +138 -138
  817. package/src/engine-schemes/vrUserStateBuffer.fbs +16 -16
  818. package/src/include/draco/draco_decoder.js +34 -34
  819. package/src/include/draco/draco_wasm_wrapper.js +117 -117
  820. package/src/include/ktx2/basis_transcoder.js +21 -21
  821. package/src/include/needle/arial-msdf.json +1471 -1471
  822. package/src/include/three/ARButton.js +231 -231
  823. package/src/include/three/DragControls.js +231 -231
  824. package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
  825. package/src/include/three/VRButton.js +194 -194
  826. package/src/needle-engine.ts +55 -55
  827. package/src/engine/dist/api.js +0 -73
  828. package/src/engine/dist/api.js.meta +0 -7
  829. package/src/engine/dist/engine_networking_streams.js +0 -474
  830. package/src/engine/dist/engine_networking_streams.js.meta +0 -7
  831. package/src/engine-schemes/dist/api.js +0 -17
  832. package/src/engine-schemes/dist/api.js.meta +0 -7
  833. package/src/engine-schemes/dist/schemes.js +0 -25
  834. package/src/engine-schemes/dist/schemes.js.meta +0 -7
  835. package/src/engine-schemes/dist/synced-camera-model.js +0 -74
  836. package/src/engine-schemes/dist/synced-camera-model.js.meta +0 -7
  837. package/src/engine-schemes/dist/synced-transform-model.js +0 -73
  838. package/src/engine-schemes/dist/synced-transform-model.js.meta +0 -7
  839. package/src/engine-schemes/dist/transform.js +0 -46
  840. package/src/engine-schemes/dist/transform.js.meta +0 -7
  841. package/src/engine-schemes/dist/vec2.js +0 -32
  842. package/src/engine-schemes/dist/vec2.js.meta +0 -7
  843. package/src/engine-schemes/dist/vec3.js +0 -36
  844. package/src/engine-schemes/dist/vec3.js.meta +0 -7
  845. package/src/engine-schemes/dist/vec4.js +0 -40
  846. package/src/engine-schemes/dist/vec4.js.meta +0 -7
  847. package/src/engine-schemes/dist/vr-user-state-buffer.js +0 -110
  848. package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +0 -7
  849. package/src/engine-schemes/flatc.exe +0 -0
@@ -1,411 +1,411 @@
1
- import { Behaviour, GameObject } from "../Component.js";
2
- import { RoomEvents, OwnershipModel } from "../../engine/engine_networking.js";
3
- import { WebXR, WebXREvent } from "./WebXR.js";
4
- import { Quaternion, Vector3, Vector4 } from "three";
5
- import { getParam } from "../../engine/engine_utils.js";
6
- import { Voip } from "../Voip.js";
7
- import { Builder, Long } from "flatbuffers";
8
- import { VrUserStateBuffer } from "../../engine-schemes/vr-user-state-buffer.js";
9
- import { Vec3 } from "../../engine-schemes/vec3.js";
10
- import { registerBinaryType } from "../../engine-schemes/schemes.js";
11
- import { Vec4 } from "../../engine-schemes/vec4.js";
12
- import { WebXRAvatar } from "./WebXRAvatar.js";
13
- // for debug GUI
14
- // import { GUI } from "three/examples/jsm/libs/lil-gui.module.min.js";
15
- // import { HTMLMesh } from 'three/examples/jsm/interactive/HTMLMesh.js';
16
- // import { InteractiveGroup } from 'three/examples/jsm/interactive/InteractiveGroup.js';
17
- // import { renderer, sceneData } from "../engine/engine_setup.js";
18
- const debugLogs = getParam("debugxr");
19
- const debugAvatar = getParam("debugavatar");
20
- // const debugAvatarVoip = getParam("debugavatarvoip");
21
- var WebXRSyncEvent;
22
- (function (WebXRSyncEvent) {
23
- WebXRSyncEvent["WebXR_UserJoined"] = "webxr-user-joined";
24
- WebXRSyncEvent["WebXR_UserLeft"] = "webxr-user-left";
25
- WebXRSyncEvent["VRSessionStart"] = "vr-session-started";
26
- WebXRSyncEvent["VRSessionEnd"] = "vr-session-ended";
27
- WebXRSyncEvent["VRSessionUpdate"] = "vr-session-update";
28
- })(WebXRSyncEvent || (WebXRSyncEvent = {}));
29
- var XRMode;
30
- (function (XRMode) {
31
- XRMode["VR"] = "vr";
32
- XRMode["AR"] = "ar";
33
- })(XRMode || (XRMode = {}));
34
- const VRUserStateBufferIdentifier = "VRUS";
35
- registerBinaryType(VRUserStateBufferIdentifier, VrUserStateBuffer.getRootAsVrUserStateBuffer);
36
- function getTimeStampNow() {
37
- return new Date().getTime(); // avoid sending millis in flatbuffer
38
- }
39
- function flatbuffers_long_from_number(num) {
40
- const low = num & 0xffffffff;
41
- const high = (num / Math.pow(2, 32)) & 0xfffff;
42
- return Long.create(low, high);
43
- }
44
- export class VRUserState {
45
- guid;
46
- time;
47
- avatarId;
48
- position = new Vector3();
49
- rotation = new Vector4();
50
- scale = 1;
51
- posLeftHand = new Vector3();
52
- posRightHand = new Vector3();
53
- rotLeftHand = new Quaternion();
54
- rotRightHand = new Quaternion();
55
- constructor(guid) {
56
- this.guid = guid;
57
- }
58
- static invertRotation = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
59
- update(rig, pos, rot, webXR, avatarId) {
60
- this.time = getTimeStampNow();
61
- this.avatarId = avatarId;
62
- this.position.set(pos.x, pos.y, pos.z);
63
- if (rig)
64
- this.position.applyMatrix4(rig.matrixWorld);
65
- let q0 = VRUserState.quat0;
66
- const q1 = VRUserState.quat1;
67
- q0.set(rot.x, rot.y, rot.z, rot.w);
68
- q0 = q0.multiplyQuaternions(q0, VRUserState.invertRotation);
69
- if (rig) {
70
- rig.getWorldQuaternion(q1);
71
- q0.multiplyQuaternions(q1, q0);
72
- }
73
- this.rotation.set(q0.x, q0.y, q0.z, q0.w);
74
- this.scale = rig.scale.x;
75
- // for controllers, it seems we need grip pose
76
- const ctrl0 = webXR.LeftController?.controllerGrip;
77
- if (ctrl0) {
78
- ctrl0.getWorldPosition(this.posLeftHand);
79
- ctrl0.getWorldQuaternion(this.rotLeftHand);
80
- }
81
- const ctrl1 = webXR.RightController?.controllerGrip;
82
- if (ctrl1) {
83
- ctrl1.getWorldPosition(this.posRightHand);
84
- ctrl1.getWorldQuaternion(this.rotRightHand);
85
- }
86
- // if this is a hand, we need to get the root bone of that / use that for position/rotation
87
- if (webXR.LeftController?.hand?.visible) {
88
- const wrist = webXR.LeftController.wrist;
89
- if (wrist) {
90
- wrist.getWorldPosition(this.posLeftHand);
91
- wrist.getWorldQuaternion(this.rotLeftHand);
92
- }
93
- }
94
- if (webXR.RightController?.hand?.visible) {
95
- const wrist = webXR.RightController.wrist;
96
- if (wrist) {
97
- wrist.getWorldPosition(this.posRightHand);
98
- wrist.getWorldQuaternion(this.rotRightHand);
99
- }
100
- }
101
- }
102
- static quat0 = new Quaternion();
103
- static quat1 = new Quaternion();
104
- sendAsBuffer(builder, net) {
105
- builder.clear();
106
- const guid = builder.createString(this.guid);
107
- const id = builder.createString(this.avatarId);
108
- VrUserStateBuffer.startVrUserStateBuffer(builder);
109
- VrUserStateBuffer.addGuid(builder, guid);
110
- VrUserStateBuffer.addTime(builder, flatbuffers_long_from_number(this.time));
111
- VrUserStateBuffer.addAvatarId(builder, id);
112
- VrUserStateBuffer.addPosition(builder, Vec3.createVec3(builder, this.position.x, this.position.y, this.position.z));
113
- VrUserStateBuffer.addRotation(builder, Vec4.createVec4(builder, this.rotation.x, this.rotation.y, this.rotation.z, this.rotation.w));
114
- VrUserStateBuffer.addScale(builder, this.scale);
115
- VrUserStateBuffer.addPosLeftHand(builder, Vec3.createVec3(builder, this.posLeftHand.x, this.posLeftHand.y, this.posLeftHand.z));
116
- VrUserStateBuffer.addPosRightHand(builder, Vec3.createVec3(builder, this.posRightHand.x, this.posRightHand.y, this.posRightHand.z));
117
- VrUserStateBuffer.addRotLeftHand(builder, Vec4.createVec4(builder, this.rotLeftHand.x, this.rotLeftHand.y, this.rotLeftHand.z, this.rotLeftHand.w));
118
- VrUserStateBuffer.addRotRightHand(builder, Vec4.createVec4(builder, this.rotRightHand.x, this.rotRightHand.y, this.rotRightHand.z, this.rotRightHand.w));
119
- const res = VrUserStateBuffer.endVrUserStateBuffer(builder);
120
- builder.finish(res, VRUserStateBufferIdentifier);
121
- const arr = builder.asUint8Array();
122
- net.sendBinary(arr);
123
- }
124
- setFromBuffer(guid, state) {
125
- if (!guid)
126
- return;
127
- this.guid = guid;
128
- this.time = state.time().toFloat64();
129
- const id = state.avatarId();
130
- if (id)
131
- this.avatarId = id;
132
- const pos = state.position();
133
- if (pos)
134
- this.position.set(pos.x(), pos.y(), pos.z());
135
- // TODO: maybe just send one float more instead of converting back and forth
136
- const rot = state.rotation();
137
- if (rot)
138
- this.rotation.set(rot.x(), rot.y(), rot.z(), rot.w());
139
- const posLeftHand = state.posLeftHand();
140
- if (posLeftHand)
141
- this.posLeftHand.set(posLeftHand.x(), posLeftHand.y(), posLeftHand.z());
142
- const posRightHand = state.posRightHand();
143
- if (posRightHand)
144
- this.posRightHand.set(posRightHand.x(), posRightHand.y(), posRightHand.z());
145
- const rotLeftHand = state.rotLeftHand();
146
- if (rotLeftHand)
147
- this.rotLeftHand.set(rotLeftHand.x(), rotLeftHand.y(), rotLeftHand.z(), rotLeftHand.w());
148
- const rotRightHand = state.rotRightHand();
149
- if (rotRightHand)
150
- this.rotRightHand.set(rotRightHand.x(), rotRightHand.y(), rotRightHand.z(), rotRightHand.w());
151
- this.scale = state.scale();
152
- }
153
- }
154
- export class WebXRSync extends Behaviour {
155
- webXR = null;
156
- // private allowCustomAvatars: boolean | null = true;
157
- debugAvatarUser = null;
158
- voip = null;
159
- async awake() {
160
- if (!this.webXR)
161
- this.webXR = GameObject.getComponent(this.gameObject, WebXR);
162
- if (!this.webXR)
163
- this.webXR = GameObject.findObjectOfType(WebXR, this.context);
164
- if (!this.webXR) {
165
- this.webXR = GameObject.findObjectOfType(WebXR, this.context);
166
- if (!this.webXR) {
167
- console.warn("WebXRSync: Could not find WebXR component, won't sync.");
168
- return;
169
- }
170
- }
171
- if (!this.voip)
172
- this.voip = GameObject.findObjectOfType(Voip, this.context);
173
- if (debugAvatar) {
174
- const debugGuid = "debug-avatar-" + debugAvatar;
175
- const newUser = new WebXRAvatar(this.context, debugGuid, this.webXR);
176
- // newUser.isLocalAvatar = true;
177
- this.debugAvatarUser = newUser;
178
- if (typeof debugAvatar === "string" && debugAvatar.length > 0) {
179
- if (await newUser.setAvatarOverride(debugAvatar)) {
180
- const debugState = new VRUserState(debugGuid);
181
- debugState.position.y += 1;
182
- const off = .5;
183
- debugState.posLeftHand.y += off;
184
- debugState.posLeftHand.x += off;
185
- debugState.posRightHand.y += off;
186
- debugState.posRightHand.x -= off;
187
- newUser.tryUpdate(debugState, 0);
188
- }
189
- else {
190
- newUser.destroy();
191
- }
192
- }
193
- }
194
- }
195
- onEnable() {
196
- // const debugUser = new WebXRAvatar(this.context, "sorry-no-guid", this.webXR!);
197
- if (!this.webXR) {
198
- this.webXR = GameObject.getComponent(this.gameObject, WebXR);
199
- if (!this.webXR) {
200
- console.warn("Missing webxr component on " + this.gameObject.name);
201
- return;
202
- }
203
- }
204
- this.eventSub_WebXRStartEvent = this.onXRSessionStart.bind(this);
205
- WebXR.addEventListener(WebXREvent.XRStarted, this.eventSub_WebXRStartEvent);
206
- this.eventSub_WebXRUpdateEvent = this.onXRSessionUpdate.bind(this);
207
- WebXR.addEventListener(WebXREvent.XRUpdate, this.eventSub_WebXRUpdateEvent);
208
- this.eventSub_WebXREndEvent = this.onXRSessionEnded.bind(this);
209
- WebXR.addEventListener(WebXREvent.XRStopped, this.eventSub_WebXREndEvent);
210
- this.eventSub_ConnectionEvent = this.onConnected.bind(this);
211
- this.context.connection.beginListen(RoomEvents.JoinedRoom, this.eventSub_ConnectionEvent);
212
- this.context.connection.beginListen(WebXRSyncEvent.WebXR_UserJoined, _evt => {
213
- console.log("webxr user joined evt");
214
- });
215
- this.context.connection.beginListen(WebXRSyncEvent.WebXR_UserLeft, evt => {
216
- const hasId = evt.id !== null && evt.id !== undefined;
217
- if (!hasId)
218
- return;
219
- console.log("webxr user left evt");
220
- if (hasId) {
221
- const avatar = this.avatars[evt.id];
222
- avatar?.destroy();
223
- this.avatars[evt.id] = undefined;
224
- }
225
- });
226
- this.context.connection.beginListenBinary(VRUserStateBufferIdentifier, (state) => {
227
- // console.log("BUFFER", state);
228
- const guid = state.guid();
229
- if (!guid)
230
- return;
231
- const time = state.time().toFloat64();
232
- const temp = this.tempState;
233
- temp.setFromBuffer(guid, state);
234
- // console.log(temp);
235
- const user = this.onTryGetAvatar(guid, time);
236
- user?.tryUpdate(temp, time);
237
- });
238
- this.context.connection.beginListen(WebXRSyncEvent.VRSessionUpdate, (state) => {
239
- const guid = state.guid;
240
- const time = state.time;
241
- const user = this.onTryGetAvatar(guid, time);
242
- user?.tryUpdate(state, time);
243
- });
244
- }
245
- tempState = new VRUserState("");
246
- onTryGetAvatar(guid, time) {
247
- if (guid === this.context.connection.connectionId)
248
- return null; // ignore self in case we receive that also!
249
- const timeDiff = new Date().getTime() - time;
250
- if (timeDiff > 5000) {
251
- if (debugLogs)
252
- console.log("old data", timeDiff, guid);
253
- return null;
254
- }
255
- if (!this.webXR)
256
- return null;
257
- let user = this.avatars[guid];
258
- if (user === undefined) {
259
- try {
260
- console.log("create new avatar");
261
- const newUser = new WebXRAvatar(this.context, guid, this.webXR);
262
- user = newUser;
263
- this.avatars[guid] = newUser;
264
- }
265
- catch (err) {
266
- this.avatars[guid] = null;
267
- console.error(err);
268
- }
269
- }
270
- return user;
271
- }
272
- onDisable() {
273
- if (this.eventSub_ConnectionEvent)
274
- this.context.connection.stopListen(RoomEvents.JoinedRoom, this.eventSub_ConnectionEvent);
275
- WebXR.removeEventListener(WebXREvent.XRStarted, this.eventSub_WebXRStartEvent);
276
- WebXR.removeEventListener(WebXREvent.XRUpdate, this.eventSub_WebXRUpdateEvent);
277
- WebXR.removeEventListener(WebXREvent.XRStopped, this.eventSub_WebXREndEvent);
278
- }
279
- update() {
280
- const now = getTimeStampNow();
281
- if (this.debugAvatarUser) {
282
- this.debugAvatarUser.lastUpdate = now;
283
- }
284
- this.detectPotentiallyDisconnectedAvatarsAndRemove();
285
- for (const key in this.avatars) {
286
- const avatar = this.avatars[key];
287
- if (!avatar)
288
- continue;
289
- avatar.update();
290
- }
291
- }
292
- _removeAvatarsList = [];
293
- detectPotentiallyDisconnectedAvatarsAndRemove() {
294
- const utcnow = getTimeStampNow();
295
- for (const key in this.avatars) {
296
- const avatar = this.avatars[key];
297
- if (!avatar) {
298
- this._removeAvatarsList.push(key);
299
- continue;
300
- }
301
- if (utcnow - avatar.lastUpdate > 10_000) {
302
- console.log("avatar timed out (didnt receive any updates in a while) - destroying it now");
303
- avatar.destroy();
304
- this.avatars[key] = undefined;
305
- }
306
- }
307
- for (const rem of this._removeAvatarsList) {
308
- delete this.avatars[rem];
309
- }
310
- this._removeAvatarsList.length = 0;
311
- }
312
- buildLocalAvatar() {
313
- if (this.localAvatar || !this.webXR)
314
- return;
315
- const connectionId = this.context.connection?.connectionId ?? this.k_LocalAvatarNoNetworkingGuid;
316
- this.localAvatar = new WebXRAvatar(this.context, connectionId, this.webXR);
317
- this.localAvatar.isLocalAvatar = true;
318
- this.localAvatar.setAvatarOverride(this.getAvatarId());
319
- this.avatars[this.localAvatar.guid] = this.localAvatar;
320
- }
321
- eventSub_ConnectionEvent = null;
322
- eventSub_WebXRStartEvent = null;
323
- eventSub_WebXREndEvent = null;
324
- eventSub_WebXRUpdateEvent = null;
325
- avatars = {};
326
- localAvatar = null;
327
- k_LocalAvatarNoNetworkingGuid = "local";
328
- onConnected() {
329
- // this event gets fired when we have joined a room and are ready to update
330
- if (debugLogs)
331
- console.log("Hey you are connected as " + this.context.connection.connectionId);
332
- if (this.localAvatar?.guid === this.k_LocalAvatarNoNetworkingGuid) {
333
- if (this.localAvatar) {
334
- this.localAvatar?.destroy();
335
- this.avatars[this.localAvatar.guid] = undefined;
336
- }
337
- this.localAvatar = null;
338
- this.xrState = null;
339
- this.ownership?.freeOwnership();
340
- this.ownership = null;
341
- }
342
- }
343
- onXRSessionStart(_evt) {
344
- console.log("XR session started");
345
- this.context.connection.send(WebXRSyncEvent.WebXR_UserJoined, { id: this.context.connection.connectionId, mode: XRMode.VR });
346
- if (this.localAvatar) {
347
- this.localAvatar?.destroy();
348
- this.avatars[this.localAvatar.guid] = undefined;
349
- this.localAvatar = null;
350
- }
351
- this.xrState = null;
352
- this.ownership?.freeOwnership();
353
- this.ownership = null;
354
- if (this.avatars) {
355
- for (const key in this.avatars) {
356
- this.avatars[key]?.updateFlags();
357
- }
358
- }
359
- }
360
- onXRSessionEnded(_evt) {
361
- console.log("XR session ended");
362
- this.context.connection.send(WebXRSyncEvent.WebXR_UserLeft, { id: this.context.connection.connectionId, mode: XRMode.VR });
363
- if (this.localAvatar) {
364
- this.localAvatar?.destroy();
365
- this.avatars[this.localAvatar.guid] = undefined;
366
- this.localAvatar = null;
367
- }
368
- }
369
- ownership = null;
370
- xrState = null;
371
- builder = new Builder(1024);
372
- onXRSessionUpdate(evt) {
373
- this.xrState ??= new VRUserState(this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid);
374
- this.ownership ??= new OwnershipModel(this.context.connection, this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid);
375
- this.ownership.guid = this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid;
376
- this.buildLocalAvatar();
377
- const { frame, xr, rig } = evt;
378
- const pose = frame.getViewerPose(xr.getReferenceSpace());
379
- if (!pose)
380
- return; // e.g. if user is not wearing headset
381
- const transform = pose?.transform;
382
- const pos = transform.position;
383
- const rot = transform.orientation;
384
- this.xrState.update(rig, pos, rot, this.webXR, this.getAvatarId());
385
- if (this.localAvatar) {
386
- if (this.context.connection.connectionId) {
387
- this.localAvatar.guid = this.context.connection.connectionId;
388
- }
389
- this.localAvatar.tryUpdate(this.xrState, 0);
390
- }
391
- if (this.ownership && !this.ownership.hasOwnership && this.context.connection.isConnected) {
392
- if (this.context.time.frameCount % 120 === 0)
393
- this.ownership.requestOwnership();
394
- if (!this.ownership.hasOwnership) {
395
- // console.log("NO OWNERSHIP", this.ownership.guid);
396
- return;
397
- }
398
- }
399
- if (!this.context.connection.isConnected || !this.context.connection.connectionId) {
400
- return;
401
- }
402
- this.xrState.sendAsBuffer(this.builder, this.context.connection);
403
- // this.context.connection.send(WebXRSyncEvent.VRSessionUpdate, this.xrState);
404
- }
405
- getAvatarId() {
406
- const urlAvatar = getParam("avatar");
407
- const avatarId = urlAvatar ?? null;
408
- return avatarId;
409
- }
410
- }
1
+ import { Behaviour, GameObject } from "../Component.js";
2
+ import { RoomEvents, OwnershipModel } from "../../engine/engine_networking.js";
3
+ import { WebXR, WebXREvent } from "./WebXR.js";
4
+ import { Quaternion, Vector3, Vector4 } from "three";
5
+ import { getParam } from "../../engine/engine_utils.js";
6
+ import { Voip } from "../Voip.js";
7
+ import { Builder, Long } from "flatbuffers";
8
+ import { VrUserStateBuffer } from "../../engine-schemes/vr-user-state-buffer.js";
9
+ import { Vec3 } from "../../engine-schemes/vec3.js";
10
+ import { registerBinaryType } from "../../engine-schemes/schemes.js";
11
+ import { Vec4 } from "../../engine-schemes/vec4.js";
12
+ import { WebXRAvatar } from "./WebXRAvatar.js";
13
+ // for debug GUI
14
+ // import { GUI } from "three/examples/jsm/libs/lil-gui.module.min.js";
15
+ // import { HTMLMesh } from 'three/examples/jsm/interactive/HTMLMesh.js';
16
+ // import { InteractiveGroup } from 'three/examples/jsm/interactive/InteractiveGroup.js';
17
+ // import { renderer, sceneData } from "../engine/engine_setup.js";
18
+ const debugLogs = getParam("debugxr");
19
+ const debugAvatar = getParam("debugavatar");
20
+ // const debugAvatarVoip = getParam("debugavatarvoip");
21
+ var WebXRSyncEvent;
22
+ (function (WebXRSyncEvent) {
23
+ WebXRSyncEvent["WebXR_UserJoined"] = "webxr-user-joined";
24
+ WebXRSyncEvent["WebXR_UserLeft"] = "webxr-user-left";
25
+ WebXRSyncEvent["VRSessionStart"] = "vr-session-started";
26
+ WebXRSyncEvent["VRSessionEnd"] = "vr-session-ended";
27
+ WebXRSyncEvent["VRSessionUpdate"] = "vr-session-update";
28
+ })(WebXRSyncEvent || (WebXRSyncEvent = {}));
29
+ var XRMode;
30
+ (function (XRMode) {
31
+ XRMode["VR"] = "vr";
32
+ XRMode["AR"] = "ar";
33
+ })(XRMode || (XRMode = {}));
34
+ const VRUserStateBufferIdentifier = "VRUS";
35
+ registerBinaryType(VRUserStateBufferIdentifier, VrUserStateBuffer.getRootAsVrUserStateBuffer);
36
+ function getTimeStampNow() {
37
+ return new Date().getTime(); // avoid sending millis in flatbuffer
38
+ }
39
+ function flatbuffers_long_from_number(num) {
40
+ const low = num & 0xffffffff;
41
+ const high = (num / Math.pow(2, 32)) & 0xfffff;
42
+ return Long.create(low, high);
43
+ }
44
+ export class VRUserState {
45
+ guid;
46
+ time;
47
+ avatarId;
48
+ position = new Vector3();
49
+ rotation = new Vector4();
50
+ scale = 1;
51
+ posLeftHand = new Vector3();
52
+ posRightHand = new Vector3();
53
+ rotLeftHand = new Quaternion();
54
+ rotRightHand = new Quaternion();
55
+ constructor(guid) {
56
+ this.guid = guid;
57
+ }
58
+ static invertRotation = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
59
+ update(rig, pos, rot, webXR, avatarId) {
60
+ this.time = getTimeStampNow();
61
+ this.avatarId = avatarId;
62
+ this.position.set(pos.x, pos.y, pos.z);
63
+ if (rig)
64
+ this.position.applyMatrix4(rig.matrixWorld);
65
+ let q0 = VRUserState.quat0;
66
+ const q1 = VRUserState.quat1;
67
+ q0.set(rot.x, rot.y, rot.z, rot.w);
68
+ q0 = q0.multiplyQuaternions(q0, VRUserState.invertRotation);
69
+ if (rig) {
70
+ rig.getWorldQuaternion(q1);
71
+ q0.multiplyQuaternions(q1, q0);
72
+ }
73
+ this.rotation.set(q0.x, q0.y, q0.z, q0.w);
74
+ this.scale = rig.scale.x;
75
+ // for controllers, it seems we need grip pose
76
+ const ctrl0 = webXR.LeftController?.controllerGrip;
77
+ if (ctrl0) {
78
+ ctrl0.getWorldPosition(this.posLeftHand);
79
+ ctrl0.getWorldQuaternion(this.rotLeftHand);
80
+ }
81
+ const ctrl1 = webXR.RightController?.controllerGrip;
82
+ if (ctrl1) {
83
+ ctrl1.getWorldPosition(this.posRightHand);
84
+ ctrl1.getWorldQuaternion(this.rotRightHand);
85
+ }
86
+ // if this is a hand, we need to get the root bone of that / use that for position/rotation
87
+ if (webXR.LeftController?.hand?.visible) {
88
+ const wrist = webXR.LeftController.wrist;
89
+ if (wrist) {
90
+ wrist.getWorldPosition(this.posLeftHand);
91
+ wrist.getWorldQuaternion(this.rotLeftHand);
92
+ }
93
+ }
94
+ if (webXR.RightController?.hand?.visible) {
95
+ const wrist = webXR.RightController.wrist;
96
+ if (wrist) {
97
+ wrist.getWorldPosition(this.posRightHand);
98
+ wrist.getWorldQuaternion(this.rotRightHand);
99
+ }
100
+ }
101
+ }
102
+ static quat0 = new Quaternion();
103
+ static quat1 = new Quaternion();
104
+ sendAsBuffer(builder, net) {
105
+ builder.clear();
106
+ const guid = builder.createString(this.guid);
107
+ const id = builder.createString(this.avatarId);
108
+ VrUserStateBuffer.startVrUserStateBuffer(builder);
109
+ VrUserStateBuffer.addGuid(builder, guid);
110
+ VrUserStateBuffer.addTime(builder, flatbuffers_long_from_number(this.time));
111
+ VrUserStateBuffer.addAvatarId(builder, id);
112
+ VrUserStateBuffer.addPosition(builder, Vec3.createVec3(builder, this.position.x, this.position.y, this.position.z));
113
+ VrUserStateBuffer.addRotation(builder, Vec4.createVec4(builder, this.rotation.x, this.rotation.y, this.rotation.z, this.rotation.w));
114
+ VrUserStateBuffer.addScale(builder, this.scale);
115
+ VrUserStateBuffer.addPosLeftHand(builder, Vec3.createVec3(builder, this.posLeftHand.x, this.posLeftHand.y, this.posLeftHand.z));
116
+ VrUserStateBuffer.addPosRightHand(builder, Vec3.createVec3(builder, this.posRightHand.x, this.posRightHand.y, this.posRightHand.z));
117
+ VrUserStateBuffer.addRotLeftHand(builder, Vec4.createVec4(builder, this.rotLeftHand.x, this.rotLeftHand.y, this.rotLeftHand.z, this.rotLeftHand.w));
118
+ VrUserStateBuffer.addRotRightHand(builder, Vec4.createVec4(builder, this.rotRightHand.x, this.rotRightHand.y, this.rotRightHand.z, this.rotRightHand.w));
119
+ const res = VrUserStateBuffer.endVrUserStateBuffer(builder);
120
+ builder.finish(res, VRUserStateBufferIdentifier);
121
+ const arr = builder.asUint8Array();
122
+ net.sendBinary(arr);
123
+ }
124
+ setFromBuffer(guid, state) {
125
+ if (!guid)
126
+ return;
127
+ this.guid = guid;
128
+ this.time = state.time().toFloat64();
129
+ const id = state.avatarId();
130
+ if (id)
131
+ this.avatarId = id;
132
+ const pos = state.position();
133
+ if (pos)
134
+ this.position.set(pos.x(), pos.y(), pos.z());
135
+ // TODO: maybe just send one float more instead of converting back and forth
136
+ const rot = state.rotation();
137
+ if (rot)
138
+ this.rotation.set(rot.x(), rot.y(), rot.z(), rot.w());
139
+ const posLeftHand = state.posLeftHand();
140
+ if (posLeftHand)
141
+ this.posLeftHand.set(posLeftHand.x(), posLeftHand.y(), posLeftHand.z());
142
+ const posRightHand = state.posRightHand();
143
+ if (posRightHand)
144
+ this.posRightHand.set(posRightHand.x(), posRightHand.y(), posRightHand.z());
145
+ const rotLeftHand = state.rotLeftHand();
146
+ if (rotLeftHand)
147
+ this.rotLeftHand.set(rotLeftHand.x(), rotLeftHand.y(), rotLeftHand.z(), rotLeftHand.w());
148
+ const rotRightHand = state.rotRightHand();
149
+ if (rotRightHand)
150
+ this.rotRightHand.set(rotRightHand.x(), rotRightHand.y(), rotRightHand.z(), rotRightHand.w());
151
+ this.scale = state.scale();
152
+ }
153
+ }
154
+ export class WebXRSync extends Behaviour {
155
+ webXR = null;
156
+ // private allowCustomAvatars: boolean | null = true;
157
+ debugAvatarUser = null;
158
+ voip = null;
159
+ async awake() {
160
+ if (!this.webXR)
161
+ this.webXR = GameObject.getComponent(this.gameObject, WebXR);
162
+ if (!this.webXR)
163
+ this.webXR = GameObject.findObjectOfType(WebXR, this.context);
164
+ if (!this.webXR) {
165
+ this.webXR = GameObject.findObjectOfType(WebXR, this.context);
166
+ if (!this.webXR) {
167
+ console.warn("WebXRSync: Could not find WebXR component, won't sync.");
168
+ return;
169
+ }
170
+ }
171
+ if (!this.voip)
172
+ this.voip = GameObject.findObjectOfType(Voip, this.context);
173
+ if (debugAvatar) {
174
+ const debugGuid = "debug-avatar-" + debugAvatar;
175
+ const newUser = new WebXRAvatar(this.context, debugGuid, this.webXR);
176
+ // newUser.isLocalAvatar = true;
177
+ this.debugAvatarUser = newUser;
178
+ if (typeof debugAvatar === "string" && debugAvatar.length > 0) {
179
+ if (await newUser.setAvatarOverride(debugAvatar)) {
180
+ const debugState = new VRUserState(debugGuid);
181
+ debugState.position.y += 1;
182
+ const off = .5;
183
+ debugState.posLeftHand.y += off;
184
+ debugState.posLeftHand.x += off;
185
+ debugState.posRightHand.y += off;
186
+ debugState.posRightHand.x -= off;
187
+ newUser.tryUpdate(debugState, 0);
188
+ }
189
+ else {
190
+ newUser.destroy();
191
+ }
192
+ }
193
+ }
194
+ }
195
+ onEnable() {
196
+ // const debugUser = new WebXRAvatar(this.context, "sorry-no-guid", this.webXR!);
197
+ if (!this.webXR) {
198
+ this.webXR = GameObject.getComponent(this.gameObject, WebXR);
199
+ if (!this.webXR) {
200
+ console.warn("Missing webxr component on " + this.gameObject.name);
201
+ return;
202
+ }
203
+ }
204
+ this.eventSub_WebXRStartEvent = this.onXRSessionStart.bind(this);
205
+ WebXR.addEventListener(WebXREvent.XRStarted, this.eventSub_WebXRStartEvent);
206
+ this.eventSub_WebXRUpdateEvent = this.onXRSessionUpdate.bind(this);
207
+ WebXR.addEventListener(WebXREvent.XRUpdate, this.eventSub_WebXRUpdateEvent);
208
+ this.eventSub_WebXREndEvent = this.onXRSessionEnded.bind(this);
209
+ WebXR.addEventListener(WebXREvent.XRStopped, this.eventSub_WebXREndEvent);
210
+ this.eventSub_ConnectionEvent = this.onConnected.bind(this);
211
+ this.context.connection.beginListen(RoomEvents.JoinedRoom, this.eventSub_ConnectionEvent);
212
+ this.context.connection.beginListen(WebXRSyncEvent.WebXR_UserJoined, _evt => {
213
+ console.log("webxr user joined evt");
214
+ });
215
+ this.context.connection.beginListen(WebXRSyncEvent.WebXR_UserLeft, evt => {
216
+ const hasId = evt.id !== null && evt.id !== undefined;
217
+ if (!hasId)
218
+ return;
219
+ console.log("webxr user left evt");
220
+ if (hasId) {
221
+ const avatar = this.avatars[evt.id];
222
+ avatar?.destroy();
223
+ this.avatars[evt.id] = undefined;
224
+ }
225
+ });
226
+ this.context.connection.beginListenBinary(VRUserStateBufferIdentifier, (state) => {
227
+ // console.log("BUFFER", state);
228
+ const guid = state.guid();
229
+ if (!guid)
230
+ return;
231
+ const time = state.time().toFloat64();
232
+ const temp = this.tempState;
233
+ temp.setFromBuffer(guid, state);
234
+ // console.log(temp);
235
+ const user = this.onTryGetAvatar(guid, time);
236
+ user?.tryUpdate(temp, time);
237
+ });
238
+ this.context.connection.beginListen(WebXRSyncEvent.VRSessionUpdate, (state) => {
239
+ const guid = state.guid;
240
+ const time = state.time;
241
+ const user = this.onTryGetAvatar(guid, time);
242
+ user?.tryUpdate(state, time);
243
+ });
244
+ }
245
+ tempState = new VRUserState("");
246
+ onTryGetAvatar(guid, time) {
247
+ if (guid === this.context.connection.connectionId)
248
+ return null; // ignore self in case we receive that also!
249
+ const timeDiff = new Date().getTime() - time;
250
+ if (timeDiff > 5000) {
251
+ if (debugLogs)
252
+ console.log("old data", timeDiff, guid);
253
+ return null;
254
+ }
255
+ if (!this.webXR)
256
+ return null;
257
+ let user = this.avatars[guid];
258
+ if (user === undefined) {
259
+ try {
260
+ console.log("create new avatar");
261
+ const newUser = new WebXRAvatar(this.context, guid, this.webXR);
262
+ user = newUser;
263
+ this.avatars[guid] = newUser;
264
+ }
265
+ catch (err) {
266
+ this.avatars[guid] = null;
267
+ console.error(err);
268
+ }
269
+ }
270
+ return user;
271
+ }
272
+ onDisable() {
273
+ if (this.eventSub_ConnectionEvent)
274
+ this.context.connection.stopListen(RoomEvents.JoinedRoom, this.eventSub_ConnectionEvent);
275
+ WebXR.removeEventListener(WebXREvent.XRStarted, this.eventSub_WebXRStartEvent);
276
+ WebXR.removeEventListener(WebXREvent.XRUpdate, this.eventSub_WebXRUpdateEvent);
277
+ WebXR.removeEventListener(WebXREvent.XRStopped, this.eventSub_WebXREndEvent);
278
+ }
279
+ update() {
280
+ const now = getTimeStampNow();
281
+ if (this.debugAvatarUser) {
282
+ this.debugAvatarUser.lastUpdate = now;
283
+ }
284
+ this.detectPotentiallyDisconnectedAvatarsAndRemove();
285
+ for (const key in this.avatars) {
286
+ const avatar = this.avatars[key];
287
+ if (!avatar)
288
+ continue;
289
+ avatar.update();
290
+ }
291
+ }
292
+ _removeAvatarsList = [];
293
+ detectPotentiallyDisconnectedAvatarsAndRemove() {
294
+ const utcnow = getTimeStampNow();
295
+ for (const key in this.avatars) {
296
+ const avatar = this.avatars[key];
297
+ if (!avatar) {
298
+ this._removeAvatarsList.push(key);
299
+ continue;
300
+ }
301
+ if (utcnow - avatar.lastUpdate > 10_000) {
302
+ console.log("avatar timed out (didnt receive any updates in a while) - destroying it now");
303
+ avatar.destroy();
304
+ this.avatars[key] = undefined;
305
+ }
306
+ }
307
+ for (const rem of this._removeAvatarsList) {
308
+ delete this.avatars[rem];
309
+ }
310
+ this._removeAvatarsList.length = 0;
311
+ }
312
+ buildLocalAvatar() {
313
+ if (this.localAvatar || !this.webXR)
314
+ return;
315
+ const connectionId = this.context.connection?.connectionId ?? this.k_LocalAvatarNoNetworkingGuid;
316
+ this.localAvatar = new WebXRAvatar(this.context, connectionId, this.webXR);
317
+ this.localAvatar.isLocalAvatar = true;
318
+ this.localAvatar.setAvatarOverride(this.getAvatarId());
319
+ this.avatars[this.localAvatar.guid] = this.localAvatar;
320
+ }
321
+ eventSub_ConnectionEvent = null;
322
+ eventSub_WebXRStartEvent = null;
323
+ eventSub_WebXREndEvent = null;
324
+ eventSub_WebXRUpdateEvent = null;
325
+ avatars = {};
326
+ localAvatar = null;
327
+ k_LocalAvatarNoNetworkingGuid = "local";
328
+ onConnected() {
329
+ // this event gets fired when we have joined a room and are ready to update
330
+ if (debugLogs)
331
+ console.log("Hey you are connected as " + this.context.connection.connectionId);
332
+ if (this.localAvatar?.guid === this.k_LocalAvatarNoNetworkingGuid) {
333
+ if (this.localAvatar) {
334
+ this.localAvatar?.destroy();
335
+ this.avatars[this.localAvatar.guid] = undefined;
336
+ }
337
+ this.localAvatar = null;
338
+ this.xrState = null;
339
+ this.ownership?.freeOwnership();
340
+ this.ownership = null;
341
+ }
342
+ }
343
+ onXRSessionStart(_evt) {
344
+ console.log("XR session started");
345
+ this.context.connection.send(WebXRSyncEvent.WebXR_UserJoined, { id: this.context.connection.connectionId, mode: XRMode.VR });
346
+ if (this.localAvatar) {
347
+ this.localAvatar?.destroy();
348
+ this.avatars[this.localAvatar.guid] = undefined;
349
+ this.localAvatar = null;
350
+ }
351
+ this.xrState = null;
352
+ this.ownership?.freeOwnership();
353
+ this.ownership = null;
354
+ if (this.avatars) {
355
+ for (const key in this.avatars) {
356
+ this.avatars[key]?.updateFlags();
357
+ }
358
+ }
359
+ }
360
+ onXRSessionEnded(_evt) {
361
+ console.log("XR session ended");
362
+ this.context.connection.send(WebXRSyncEvent.WebXR_UserLeft, { id: this.context.connection.connectionId, mode: XRMode.VR });
363
+ if (this.localAvatar) {
364
+ this.localAvatar?.destroy();
365
+ this.avatars[this.localAvatar.guid] = undefined;
366
+ this.localAvatar = null;
367
+ }
368
+ }
369
+ ownership = null;
370
+ xrState = null;
371
+ builder = new Builder(1024);
372
+ onXRSessionUpdate(evt) {
373
+ this.xrState ??= new VRUserState(this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid);
374
+ this.ownership ??= new OwnershipModel(this.context.connection, this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid);
375
+ this.ownership.guid = this.context.connection.connectionId ?? this.k_LocalAvatarNoNetworkingGuid;
376
+ this.buildLocalAvatar();
377
+ const { frame, xr, rig } = evt;
378
+ const pose = frame.getViewerPose(xr.getReferenceSpace());
379
+ if (!pose)
380
+ return; // e.g. if user is not wearing headset
381
+ const transform = pose?.transform;
382
+ const pos = transform.position;
383
+ const rot = transform.orientation;
384
+ this.xrState.update(rig, pos, rot, this.webXR, this.getAvatarId());
385
+ if (this.localAvatar) {
386
+ if (this.context.connection.connectionId) {
387
+ this.localAvatar.guid = this.context.connection.connectionId;
388
+ }
389
+ this.localAvatar.tryUpdate(this.xrState, 0);
390
+ }
391
+ if (this.ownership && !this.ownership.hasOwnership && this.context.connection.isConnected) {
392
+ if (this.context.time.frameCount % 120 === 0)
393
+ this.ownership.requestOwnership();
394
+ if (!this.ownership.hasOwnership) {
395
+ // console.log("NO OWNERSHIP", this.ownership.guid);
396
+ return;
397
+ }
398
+ }
399
+ if (!this.context.connection.isConnected || !this.context.connection.connectionId) {
400
+ return;
401
+ }
402
+ this.xrState.sendAsBuffer(this.builder, this.context.connection);
403
+ // this.context.connection.send(WebXRSyncEvent.VRSessionUpdate, this.xrState);
404
+ }
405
+ getAvatarId() {
406
+ const urlAvatar = getParam("avatar");
407
+ const avatarId = urlAvatar ?? null;
408
+ return avatarId;
409
+ }
410
+ }
411
411
  //# sourceMappingURL=WebXRSync.js.map