@needle-tools/engine 4.7.2-alpha → 4.7.2-next.0e4e068
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.
- package/CHANGELOG.md +3782 -3782
- package/LICENSE.md +10 -10
- package/README.md +64 -64
- package/components.needle.json +1 -1
- package/dist/generateMeshBVH.worker-BaNp_Xtp.js +25 -0
- package/dist/gltf-progressive-CNdBjvz6.js +1145 -0
- package/dist/gltf-progressive-C_oN6wCA.umd.cjs +8 -0
- package/dist/gltf-progressive-MgWOszRl.min.js +8 -0
- package/dist/{needle-engine.bundle-BhDF-YSv.min.js → needle-engine.bundle-B1OlKJHF.min.js} +108 -107
- package/dist/{needle-engine.bundle-gp00DTS4.js → needle-engine.bundle-Bwsx9VYm.js} +2077 -2061
- package/dist/{needle-engine.bundle-D2myV4E4.umd.cjs → needle-engine.bundle-Cd6HpRz5.umd.cjs} +99 -98
- package/dist/needle-engine.d.ts +130 -129
- package/dist/needle-engine.js +4 -4
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-8AQTeZsr.umd.cjs → postprocessing-CjW23fio.umd.cjs} +2 -2
- package/dist/{postprocessing-BkxN_08g.js → postprocessing-DYLNOL3W.js} +3 -3
- package/dist/{postprocessing-BDScN9yu.min.js → postprocessing-xYQWCHFu.min.js} +2 -2
- package/dist/{three-DMrv-4ar.umd.cjs → three-B_hneGZr.umd.cjs} +4 -4
- package/dist/{three-Bz6X1mrw.js → three-DrqIzZTH.js} +4198 -4198
- package/dist/{three-Boa-jOq-.min.js → three-DuDKwKB8.min.js} +33 -33
- package/dist/{three-examples-GggCDHv0.js → three-examples-B50TT3Iu.js} +5 -5
- package/dist/{three-examples-DuVhxqft.min.js → three-examples-DaDLBuy6.min.js} +14 -14
- package/dist/{three-examples-C7ryg8vN.umd.cjs → three-examples-X3OadjXB.umd.cjs} +3 -3
- package/dist/{three-mesh-ui-CY6Izc7C.min.js → three-mesh-ui-B3p3gyUz.min.js} +1 -1
- package/dist/{three-mesh-ui-CwlN0FUC.umd.cjs → three-mesh-ui-CQiIQIlA.umd.cjs} +1 -1
- package/dist/{three-mesh-ui-CLNOfsWn.js → three-mesh-ui-CxuWt7m-.js} +1 -1
- package/dist/{vendor-zxXa3Dmr.min.js → vendor-BlSxe9JJ.min.js} +3 -3
- package/dist/{vendor-BSD1RQIh.js → vendor-BmYIgaS1.js} +3 -3
- package/dist/{vendor-DHr4aqIZ.umd.cjs → vendor-Cavtu3CP.umd.cjs} +3 -3
- package/lib/asap/needle-asap.d.ts +1 -1
- package/lib/asap/needle-asap.js +95 -95
- package/lib/asap/sessiongranted.d.ts +3 -3
- package/lib/asap/sessiongranted.js +65 -65
- package/lib/asap/utils.d.ts +1 -1
- package/lib/asap/utils.js +3 -3
- package/lib/engine/analytics/index.d.ts +6 -6
- package/lib/engine/analytics/index.js +12 -12
- package/lib/engine/analytics/lcp.d.ts +3 -3
- package/lib/engine/analytics/lcp.js +34 -34
- package/lib/engine/api.d.ts +82 -82
- package/lib/engine/api.js +81 -81
- package/lib/engine/assets/index.d.ts +11 -11
- package/lib/engine/assets/index.js +47 -47
- package/lib/engine/assets/static.d.ts +1 -1
- package/lib/engine/assets/static.js +4 -4
- package/lib/engine/codegen/register_types.d.ts +1 -1
- package/lib/engine/codegen/register_types.js +300 -300
- package/lib/engine/debug/debug.d.ts +15 -15
- package/lib/engine/debug/debug.js +44 -44
- package/lib/engine/debug/debug_console.d.ts +2 -2
- package/lib/engine/debug/debug_console.js +307 -307
- package/lib/engine/debug/debug_overlay.d.ts +22 -22
- package/lib/engine/debug/debug_overlay.js +316 -316
- package/lib/engine/debug/debug_spatial_console.d.ts +2 -2
- package/lib/engine/debug/debug_spatial_console.js +390 -390
- package/lib/engine/debug/index.d.ts +2 -2
- package/lib/engine/debug/index.js +2 -2
- package/lib/engine/engine_addressables.d.ts +164 -164
- package/lib/engine/engine_addressables.js +601 -601
- package/lib/engine/engine_animation.d.ts +43 -43
- package/lib/engine/engine_animation.js +133 -133
- package/lib/engine/engine_application.d.ts +45 -45
- package/lib/engine/engine_application.js +104 -104
- package/lib/engine/engine_assetdatabase.d.ts +25 -25
- package/lib/engine/engine_assetdatabase.js +346 -346
- package/lib/engine/engine_audio.d.ts +4 -4
- package/lib/engine/engine_audio.js +23 -23
- package/lib/engine/engine_camera.d.ts +13 -13
- package/lib/engine/engine_camera.js +30 -30
- package/lib/engine/engine_components.d.ts +110 -110
- package/lib/engine/engine_components.js +374 -374
- package/lib/engine/engine_components_internal.d.ts +9 -9
- package/lib/engine/engine_components_internal.js +36 -36
- package/lib/engine/engine_constants.d.ts +10 -10
- package/lib/engine/engine_constants.js +41 -41
- package/lib/engine/engine_context.d.ts +475 -475
- package/lib/engine/engine_context.js +1672 -1673
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_context_registry.d.ts +71 -71
- package/lib/engine/engine_context_registry.js +117 -117
- package/lib/engine/engine_coroutine.d.ts +35 -35
- package/lib/engine/engine_coroutine.js +52 -52
- package/lib/engine/engine_create_objects.d.ts +119 -119
- package/lib/engine/engine_create_objects.js +320 -320
- package/lib/engine/engine_default_parameters.d.ts +2 -2
- package/lib/engine/engine_default_parameters.js +3 -3
- package/lib/engine/engine_editor-sync.d.ts +21 -21
- package/lib/engine/engine_editor-sync.js +4 -4
- package/lib/engine/engine_fileloader.d.ts +2 -2
- package/lib/engine/engine_fileloader.js +8 -8
- package/lib/engine/engine_gameobject.d.ts +68 -68
- package/lib/engine/engine_gameobject.js +619 -619
- package/lib/engine/engine_generic_utils.d.ts +1 -1
- package/lib/engine/engine_generic_utils.js +13 -13
- package/lib/engine/engine_gizmos.d.ts +149 -149
- package/lib/engine/engine_gizmos.js +530 -530
- package/lib/engine/engine_gltf.d.ts +12 -12
- package/lib/engine/engine_gltf.js +15 -15
- package/lib/engine/engine_gltf_builtin_components.d.ts +11 -11
- package/lib/engine/engine_gltf_builtin_components.js +341 -341
- package/lib/engine/engine_hot_reload.d.ts +8 -8
- package/lib/engine/engine_hot_reload.js +197 -197
- package/lib/engine/engine_input.d.ts +362 -362
- package/lib/engine/engine_input.js +1294 -1294
- package/lib/engine/engine_input_utils.d.ts +2 -2
- package/lib/engine/engine_input_utils.js +22 -22
- package/lib/engine/engine_instancing.d.ts +19 -19
- package/lib/engine/engine_instancing.js +39 -39
- package/lib/engine/engine_license.d.ts +11 -11
- package/lib/engine/engine_license.js +369 -369
- package/lib/engine/engine_lifecycle_api.d.ts +83 -83
- package/lib/engine/engine_lifecycle_api.js +106 -106
- package/lib/engine/engine_lifecycle_functions_internal.d.ts +32 -32
- package/lib/engine/engine_lifecycle_functions_internal.js +146 -146
- package/lib/engine/engine_lightdata.d.ts +23 -23
- package/lib/engine/engine_lightdata.js +101 -101
- package/lib/engine/engine_loaders.callbacks.d.ts +97 -97
- package/lib/engine/engine_loaders.callbacks.js +86 -86
- package/lib/engine/engine_loaders.d.ts +48 -48
- package/lib/engine/engine_loaders.gltf.d.ts +13 -13
- package/lib/engine/engine_loaders.gltf.js +62 -62
- package/lib/engine/engine_loaders.js +337 -337
- package/lib/engine/engine_lods.d.ts +35 -35
- package/lib/engine/engine_lods.js +160 -160
- package/lib/engine/engine_lods.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.d.ts +32 -32
- package/lib/engine/engine_mainloop_utils.js +466 -466
- package/lib/engine/engine_math.d.ts +114 -114
- package/lib/engine/engine_math.js +247 -247
- package/lib/engine/engine_modules.d.ts +36 -36
- package/lib/engine/engine_modules.js +85 -85
- package/lib/engine/engine_networking.d.ts +260 -260
- package/lib/engine/engine_networking.js +764 -764
- package/lib/engine/engine_networking_auto.d.ts +24 -24
- package/lib/engine/engine_networking_auto.js +310 -310
- package/lib/engine/engine_networking_blob.d.ts +48 -48
- package/lib/engine/engine_networking_blob.js +228 -228
- package/lib/engine/engine_networking_files.d.ts +35 -35
- package/lib/engine/engine_networking_files.js +172 -172
- package/lib/engine/engine_networking_files_default_components.d.ts +6 -6
- package/lib/engine/engine_networking_files_default_components.js +42 -42
- package/lib/engine/engine_networking_instantiate.d.ts +100 -100
- package/lib/engine/engine_networking_instantiate.js +345 -345
- package/lib/engine/engine_networking_peer.d.ts +15 -15
- package/lib/engine/engine_networking_peer.js +132 -132
- package/lib/engine/engine_networking_streams.d.ts +123 -123
- package/lib/engine/engine_networking_streams.js +645 -645
- package/lib/engine/engine_networking_types.d.ts +22 -22
- package/lib/engine/engine_networking_types.js +7 -7
- package/lib/engine/engine_networking_utils.d.ts +2 -2
- package/lib/engine/engine_networking_utils.js +20 -20
- package/lib/engine/engine_networking_websocket.d.ts +1 -1
- package/lib/engine/engine_networking_websocket.js +2 -2
- package/lib/engine/engine_patcher.d.ts +10 -10
- package/lib/engine/engine_patcher.js +142 -142
- package/lib/engine/engine_physics.d.ts +152 -152
- package/lib/engine/engine_physics.js +645 -645
- package/lib/engine/engine_physics.types.d.ts +40 -40
- package/lib/engine/engine_physics.types.js +33 -33
- package/lib/engine/engine_physics_rapier.d.ts +147 -147
- package/lib/engine/engine_physics_rapier.js +1433 -1433
- package/lib/engine/engine_playerview.d.ts +26 -26
- package/lib/engine/engine_playerview.js +64 -64
- package/lib/engine/engine_scenelighting.d.ts +71 -71
- package/lib/engine/engine_scenelighting.js +226 -226
- package/lib/engine/engine_serialization.d.ts +3 -3
- package/lib/engine/engine_serialization.js +3 -3
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +72 -72
- package/lib/engine/engine_serialization_builtin_serializer.js +403 -403
- package/lib/engine/engine_serialization_core.d.ts +94 -94
- package/lib/engine/engine_serialization_core.js +607 -607
- package/lib/engine/engine_serialization_decorator.d.ts +23 -23
- package/lib/engine/engine_serialization_decorator.js +66 -66
- package/lib/engine/engine_setup.d.ts +1 -1
- package/lib/engine/engine_setup.js +2 -2
- package/lib/engine/engine_shaders.d.ts +53 -53
- package/lib/engine/engine_shaders.js +252 -252
- package/lib/engine/engine_shims.d.ts +4 -4
- package/lib/engine/engine_shims.js +24 -24
- package/lib/engine/engine_test_utils.d.ts +39 -39
- package/lib/engine/engine_test_utils.js +83 -83
- package/lib/engine/engine_texture.d.ts +28 -28
- package/lib/engine/engine_texture.js +64 -64
- package/lib/engine/engine_three_utils.d.ts +204 -204
- package/lib/engine/engine_three_utils.js +788 -788
- package/lib/engine/engine_time.d.ts +51 -51
- package/lib/engine/engine_time.js +82 -82
- package/lib/engine/engine_time_utils.d.ts +88 -88
- package/lib/engine/engine_time_utils.js +215 -215
- package/lib/engine/engine_tonemapping.d.ts +6 -6
- package/lib/engine/engine_tonemapping.js +198 -197
- package/lib/engine/engine_tonemapping.js.map +1 -1
- package/lib/engine/engine_types.d.ts +578 -578
- package/lib/engine/engine_types.js +95 -95
- package/lib/engine/engine_typestore.d.ts +28 -28
- package/lib/engine/engine_typestore.js +55 -55
- package/lib/engine/engine_util_decorator.d.ts +13 -13
- package/lib/engine/engine_util_decorator.js +116 -116
- package/lib/engine/engine_utils.d.ts +248 -248
- package/lib/engine/engine_utils.js +1012 -1012
- package/lib/engine/engine_utils_format.d.ts +24 -24
- package/lib/engine/engine_utils_format.js +239 -239
- package/lib/engine/engine_utils_screenshot.d.ts +159 -159
- package/lib/engine/engine_utils_screenshot.js +522 -522
- package/lib/engine/engine_utils_screenshot.xr.d.ts +5 -5
- package/lib/engine/engine_utils_screenshot.xr.js +90 -90
- package/lib/engine/engine_xr.d.ts +1 -1
- package/lib/engine/engine_xr.js +1 -1
- package/lib/engine/export/gltf/Writers.d.ts +19 -19
- package/lib/engine/export/gltf/Writers.js +24 -24
- package/lib/engine/export/gltf/index.d.ts +11 -11
- package/lib/engine/export/gltf/index.js +123 -123
- package/lib/engine/export/index.d.ts +2 -2
- package/lib/engine/export/index.js +2 -2
- package/lib/engine/export/state.d.ts +7 -7
- package/lib/engine/export/state.js +17 -17
- package/lib/engine/export/utils.d.ts +2 -2
- package/lib/engine/export/utils.js +7 -7
- package/lib/engine/extensions/EXT_texture_exr.d.ts +8 -8
- package/lib/engine/extensions/EXT_texture_exr.js +32 -32
- package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +122 -122
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js +95 -95
- package/lib/engine/extensions/NEEDLE_components.d.ts +35 -35
- package/lib/engine/extensions/NEEDLE_components.js +220 -220
- package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -10
- package/lib/engine/extensions/NEEDLE_gameobject_data.js +57 -57
- package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +37 -37
- package/lib/engine/extensions/NEEDLE_lighting_settings.js +157 -157
- package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
- package/lib/engine/extensions/NEEDLE_lightmaps.js +99 -99
- package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -11
- package/lib/engine/extensions/NEEDLE_persistent_assets.js +63 -63
- package/lib/engine/extensions/NEEDLE_progressive.d.ts +1 -1
- package/lib/engine/extensions/NEEDLE_progressive.js +1 -1
- package/lib/engine/extensions/NEEDLE_render_objects.d.ts +13 -13
- package/lib/engine/extensions/NEEDLE_render_objects.js +159 -159
- package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +38 -38
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +564 -564
- package/lib/engine/extensions/extension_resolver.d.ts +4 -4
- package/lib/engine/extensions/extension_resolver.js +1 -1
- package/lib/engine/extensions/extension_utils.d.ts +12 -12
- package/lib/engine/extensions/extension_utils.js +152 -152
- package/lib/engine/extensions/extensions.d.ts +32 -32
- package/lib/engine/extensions/extensions.js +107 -107
- package/lib/engine/extensions/index.d.ts +6 -6
- package/lib/engine/extensions/index.js +6 -6
- package/lib/engine/extensions/usage_tracker.d.ts +13 -13
- package/lib/engine/extensions/usage_tracker.js +65 -65
- package/lib/engine/js-extensions/Camera.d.ts +1 -1
- package/lib/engine/js-extensions/Camera.js +39 -39
- package/lib/engine/js-extensions/ExtensionUtils.d.ts +9 -9
- package/lib/engine/js-extensions/ExtensionUtils.js +67 -67
- package/lib/engine/js-extensions/Layers.d.ts +6 -6
- package/lib/engine/js-extensions/Layers.js +22 -22
- package/lib/engine/js-extensions/Object3D.d.ts +120 -120
- package/lib/engine/js-extensions/Object3D.js +136 -136
- package/lib/engine/js-extensions/RGBAColor.d.ts +23 -23
- package/lib/engine/js-extensions/RGBAColor.js +111 -111
- package/lib/engine/js-extensions/Vector.d.ts +3 -3
- package/lib/engine/js-extensions/Vector.js +13 -13
- package/lib/engine/js-extensions/index.d.ts +5 -5
- package/lib/engine/js-extensions/index.js +5 -5
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.d.ts +4 -4
- package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +79 -79
- package/lib/engine/shaders/shaderData.d.ts +55 -55
- package/lib/engine/shaders/shaderData.js +58 -58
- package/lib/engine/tests/test_utils.d.ts +2 -2
- package/lib/engine/tests/test_utils.js +53 -53
- package/lib/engine/webcomponents/WebXRButtons.d.ts +56 -56
- package/lib/engine/webcomponents/WebXRButtons.js +230 -230
- package/lib/engine/webcomponents/api.d.ts +5 -5
- package/lib/engine/webcomponents/api.js +4 -4
- package/lib/engine/webcomponents/buttons.d.ts +51 -51
- package/lib/engine/webcomponents/buttons.js +264 -264
- package/lib/engine/webcomponents/fonts.d.ts +9 -9
- package/lib/engine/webcomponents/fonts.js +32 -32
- package/lib/engine/webcomponents/icons.d.ts +9 -9
- package/lib/engine/webcomponents/icons.js +52 -52
- package/lib/engine/webcomponents/index.d.ts +1 -1
- package/lib/engine/webcomponents/index.js +1 -1
- package/lib/engine/webcomponents/logo-element.d.ts +10 -10
- package/lib/engine/webcomponents/logo-element.js +67 -67
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.d.ts +37 -37
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +513 -513
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +155 -155
- package/lib/engine/webcomponents/needle menu/needle-menu.js +1029 -1029
- package/lib/engine/webcomponents/needle-button.d.ts +34 -34
- package/lib/engine/webcomponents/needle-button.js +161 -161
- package/lib/engine/webcomponents/needle-engine.ar-overlay.d.ts +21 -21
- package/lib/engine/webcomponents/needle-engine.ar-overlay.js +166 -166
- package/lib/engine/webcomponents/needle-engine.attributes.d.ts +69 -69
- package/lib/engine/webcomponents/needle-engine.attributes.js +1 -1
- package/lib/engine/webcomponents/needle-engine.d.ts +115 -116
- package/lib/engine/webcomponents/needle-engine.extras.d.ts +6 -6
- package/lib/engine/webcomponents/needle-engine.extras.js +13 -13
- package/lib/engine/webcomponents/needle-engine.js +845 -821
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.d.ts +44 -44
- package/lib/engine/webcomponents/needle-engine.loading.js +341 -341
- package/lib/engine/xr/NeedleXRController.d.ts +313 -313
- package/lib/engine/xr/NeedleXRController.js +1007 -1007
- package/lib/engine/xr/NeedleXRSession.d.ts +340 -340
- package/lib/engine/xr/NeedleXRSession.js +1463 -1463
- package/lib/engine/xr/NeedleXRSync.d.ts +22 -22
- package/lib/engine/xr/NeedleXRSync.js +188 -188
- package/lib/engine/xr/SceneTransition.d.ts +18 -18
- package/lib/engine/xr/SceneTransition.js +69 -69
- package/lib/engine/xr/TempXRContext.d.ts +34 -34
- package/lib/engine/xr/TempXRContext.js +187 -187
- package/lib/engine/xr/XRRig.d.ts +7 -7
- package/lib/engine/xr/XRRig.js +1 -1
- package/lib/engine/xr/api.d.ts +6 -6
- package/lib/engine/xr/api.js +6 -6
- package/lib/engine/xr/events.d.ts +66 -66
- package/lib/engine/xr/events.js +93 -93
- package/lib/engine/xr/internal.d.ts +12 -12
- package/lib/engine/xr/internal.js +25 -25
- package/lib/engine/xr/usdz.d.ts +12 -12
- package/lib/engine/xr/usdz.js +29 -29
- package/lib/engine/xr/utils.d.ts +11 -11
- package/lib/engine/xr/utils.js +34 -34
- package/lib/engine-components/AlignmentConstraint.d.ts +10 -10
- package/lib/engine-components/AlignmentConstraint.js +39 -39
- package/lib/engine-components/Animation.d.ts +156 -156
- package/lib/engine-components/Animation.js +508 -508
- package/lib/engine-components/AnimationCurve.d.ts +40 -40
- package/lib/engine-components/AnimationCurve.js +159 -159
- package/lib/engine-components/AnimationUtils.d.ts +8 -8
- package/lib/engine-components/AnimationUtils.js +27 -27
- package/lib/engine-components/AnimationUtilsAutoplay.d.ts +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.js +39 -39
- package/lib/engine-components/Animator.d.ts +217 -217
- package/lib/engine-components/Animator.js +354 -354
- package/lib/engine-components/AnimatorController.d.ts +227 -227
- package/lib/engine-components/AnimatorController.js +1152 -1152
- package/lib/engine-components/AudioListener.d.ts +33 -33
- package/lib/engine-components/AudioListener.js +86 -86
- package/lib/engine-components/AudioSource.d.ts +217 -217
- package/lib/engine-components/AudioSource.js +635 -635
- package/lib/engine-components/AvatarLoader.d.ts +80 -80
- package/lib/engine-components/AvatarLoader.js +231 -231
- package/lib/engine-components/AxesHelper.d.ts +32 -32
- package/lib/engine-components/AxesHelper.js +67 -67
- package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
- package/lib/engine-components/BasicIKConstraint.js +43 -43
- package/lib/engine-components/BoxCollider.d.ts +2 -2
- package/lib/engine-components/BoxCollider.js +2 -2
- package/lib/engine-components/BoxHelperComponent.d.ts +47 -47
- package/lib/engine-components/BoxHelperComponent.js +102 -102
- package/lib/engine-components/Camera.d.ts +231 -231
- package/lib/engine-components/Camera.js +700 -700
- package/lib/engine-components/CameraUtils.d.ts +1 -1
- package/lib/engine-components/CameraUtils.js +123 -123
- package/lib/engine-components/CharacterController.d.ts +55 -55
- package/lib/engine-components/CharacterController.js +236 -236
- package/lib/engine-components/Collider.d.ts +188 -188
- package/lib/engine-components/Collider.js +369 -369
- package/lib/engine-components/Component.d.ts +792 -792
- package/lib/engine-components/Component.js +920 -920
- package/lib/engine-components/ContactShadows.d.ts +94 -94
- package/lib/engine-components/ContactShadows.js +453 -453
- package/lib/engine-components/DeleteBox.d.ts +19 -19
- package/lib/engine-components/DeleteBox.js +58 -58
- package/lib/engine-components/DeviceFlag.d.ts +16 -16
- package/lib/engine-components/DeviceFlag.js +47 -47
- package/lib/engine-components/DragControls.d.ts +170 -170
- package/lib/engine-components/DragControls.js +1421 -1421
- package/lib/engine-components/DropListener.d.ts +215 -215
- package/lib/engine-components/DropListener.js +642 -642
- package/lib/engine-components/Duplicatable.d.ts +35 -35
- package/lib/engine-components/Duplicatable.js +202 -202
- package/lib/engine-components/EventList.d.ts +54 -54
- package/lib/engine-components/EventList.js +232 -232
- package/lib/engine-components/EventTrigger.d.ts +33 -33
- package/lib/engine-components/EventTrigger.js +75 -75
- package/lib/engine-components/EventType.d.ts +22 -22
- package/lib/engine-components/EventType.js +23 -23
- package/lib/engine-components/Fog.d.ts +22 -22
- package/lib/engine-components/Fog.js +61 -61
- package/lib/engine-components/Gizmos.d.ts +17 -17
- package/lib/engine-components/Gizmos.js +64 -64
- package/lib/engine-components/GridHelper.d.ts +20 -20
- package/lib/engine-components/GridHelper.js +54 -54
- package/lib/engine-components/GroundProjection.d.ts +67 -67
- package/lib/engine-components/GroundProjection.js +343 -343
- package/lib/engine-components/Interactable.d.ts +12 -12
- package/lib/engine-components/Interactable.js +12 -12
- package/lib/engine-components/Joints.d.ts +19 -19
- package/lib/engine-components/Joints.js +51 -51
- package/lib/engine-components/LODGroup.d.ts +35 -35
- package/lib/engine-components/LODGroup.js +152 -152
- package/lib/engine-components/Light.d.ts +180 -180
- package/lib/engine-components/Light.js +535 -535
- package/lib/engine-components/LookAtConstraint.d.ts +19 -19
- package/lib/engine-components/LookAtConstraint.js +35 -35
- package/lib/engine-components/NeedleMenu.d.ts +50 -50
- package/lib/engine-components/NeedleMenu.js +92 -92
- package/lib/engine-components/NestedGltf.d.ts +25 -25
- package/lib/engine-components/NestedGltf.js +88 -88
- package/lib/engine-components/Networking.d.ts +54 -54
- package/lib/engine-components/Networking.js +112 -112
- package/lib/engine-components/OffsetConstraint.d.ts +14 -14
- package/lib/engine-components/OffsetConstraint.js +65 -65
- package/lib/engine-components/OrbitControls.d.ts +268 -268
- package/lib/engine-components/OrbitControls.js +1015 -1015
- package/lib/engine-components/PlayerColor.d.ts +19 -19
- package/lib/engine-components/PlayerColor.js +94 -94
- package/lib/engine-components/ReflectionProbe.d.ts +28 -28
- package/lib/engine-components/ReflectionProbe.js +204 -204
- package/lib/engine-components/Renderer.d.ts +153 -153
- package/lib/engine-components/Renderer.js +834 -834
- package/lib/engine-components/RendererInstancing.d.ts +140 -140
- package/lib/engine-components/RendererInstancing.js +744 -744
- package/lib/engine-components/RendererLightmap.d.ts +24 -24
- package/lib/engine-components/RendererLightmap.js +182 -182
- package/lib/engine-components/RigidBody.d.ts +155 -155
- package/lib/engine-components/RigidBody.js +517 -517
- package/lib/engine-components/SceneSwitcher.d.ts +263 -263
- package/lib/engine-components/SceneSwitcher.js +971 -971
- package/lib/engine-components/ScreenCapture.d.ts +144 -144
- package/lib/engine-components/ScreenCapture.js +547 -547
- package/lib/engine-components/ShadowCatcher.d.ts +33 -33
- package/lib/engine-components/ShadowCatcher.js +166 -166
- package/lib/engine-components/Skybox.d.ts +88 -88
- package/lib/engine-components/Skybox.js +469 -469
- package/lib/engine-components/SmoothFollow.d.ts +34 -34
- package/lib/engine-components/SmoothFollow.js +82 -82
- package/lib/engine-components/SpatialTrigger.d.ts +102 -102
- package/lib/engine-components/SpatialTrigger.js +225 -225
- package/lib/engine-components/SpectatorCamera.d.ts +111 -111
- package/lib/engine-components/SpectatorCamera.js +715 -715
- package/lib/engine-components/SphereCollider.d.ts +2 -2
- package/lib/engine-components/SphereCollider.js +2 -2
- package/lib/engine-components/SpriteRenderer.d.ts +132 -132
- package/lib/engine-components/SpriteRenderer.js +472 -472
- package/lib/engine-components/SyncedCamera.d.ts +41 -41
- package/lib/engine-components/SyncedCamera.js +199 -199
- package/lib/engine-components/SyncedRoom.d.ts +106 -106
- package/lib/engine-components/SyncedRoom.js +371 -371
- package/lib/engine-components/SyncedTransform.d.ts +94 -94
- package/lib/engine-components/SyncedTransform.js +331 -331
- package/lib/engine-components/TestRunner.d.ts +16 -16
- package/lib/engine-components/TestRunner.js +102 -102
- package/lib/engine-components/TransformGizmo.d.ts +75 -75
- package/lib/engine-components/TransformGizmo.js +209 -209
- package/lib/engine-components/VideoPlayer.d.ts +184 -184
- package/lib/engine-components/VideoPlayer.js +978 -978
- package/lib/engine-components/Voip.d.ts +67 -67
- package/lib/engine-components/Voip.js +360 -360
- package/lib/engine-components/api.d.ts +51 -51
- package/lib/engine-components/api.js +50 -50
- package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +11 -11
- package/lib/engine-components/avatar/AvatarBlink_Simple.js +76 -76
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +14 -14
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +68 -68
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +29 -29
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +121 -121
- package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +15 -15
- package/lib/engine-components/avatar/Avatar_MouthShapes.js +79 -79
- package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +9 -9
- package/lib/engine-components/avatar/Avatar_MustacheShake.js +29 -29
- package/lib/engine-components/codegen/components.d.ts +216 -216
- package/lib/engine-components/codegen/components.js +218 -218
- package/lib/engine-components/debug/LogStats.d.ts +5 -5
- package/lib/engine-components/debug/LogStats.js +18 -18
- package/lib/engine-components/export/gltf/GltfExport.d.ts +30 -30
- package/lib/engine-components/export/gltf/GltfExport.js +246 -246
- package/lib/engine-components/export/gltf/index.d.ts +1 -1
- package/lib/engine-components/export/gltf/index.js +1 -1
- package/lib/engine-components/export/index.d.ts +1 -1
- package/lib/engine-components/export/index.js +1 -1
- package/lib/engine-components/export/usdz/Extension.d.ts +22 -22
- package/lib/engine-components/export/usdz/Extension.js +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +162 -162
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1789 -1789
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +130 -130
- package/lib/engine-components/export/usdz/USDZExporter.js +663 -663
- package/lib/engine-components/export/usdz/extensions/Animation.d.ts +106 -106
- package/lib/engine-components/export/usdz/extensions/Animation.js +1071 -1071
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -5
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +6 -6
- package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.d.ts +10 -10
- package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.js +451 -451
- package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +54 -54
- package/lib/engine-components/export/usdz/extensions/USDZText.js +203 -203
- package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
- package/lib/engine-components/export/usdz/extensions/USDZUI.js +158 -158
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -30
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +88 -88
- package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.d.ts +10 -10
- package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +86 -86
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +28 -28
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +290 -290
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +190 -190
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +1060 -1060
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +135 -135
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +548 -548
- package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.d.ts +7 -7
- package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.js +115 -115
- package/lib/engine-components/export/usdz/index.d.ts +3 -3
- package/lib/engine-components/export/usdz/index.js +2 -2
- package/lib/engine-components/export/usdz/utils/animationutils.d.ts +7 -7
- package/lib/engine-components/export/usdz/utils/animationutils.js +163 -163
- package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
- package/lib/engine-components/export/usdz/utils/quicklook.js +43 -43
- package/lib/engine-components/particlesystem/ParticleSystem.d.ts +177 -177
- package/lib/engine-components/particlesystem/ParticleSystem.js +1176 -1176
- package/lib/engine-components/particlesystem/ParticleSystemModules.d.ts +526 -526
- package/lib/engine-components/particlesystem/ParticleSystemModules.js +1930 -1930
- package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.d.ts +25 -25
- package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.js +87 -87
- package/lib/engine-components/particlesystem/api.d.ts +2 -2
- package/lib/engine-components/particlesystem/api.js +2 -2
- package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +17 -17
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js +59 -59
- package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +46 -46
- package/lib/engine-components/postprocessing/Effects/BloomEffect.js +113 -113
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +11 -11
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +39 -39
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +23 -23
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +111 -111
- package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +25 -25
- package/lib/engine-components/postprocessing/Effects/DepthOfField.js +104 -104
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +12 -12
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +18 -18
- package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +11 -11
- package/lib/engine-components/postprocessing/Effects/Pixelation.js +32 -32
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +18 -18
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +91 -91
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +70 -70
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +176 -176
- package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +18 -18
- package/lib/engine-components/postprocessing/Effects/Sharpening.js +127 -127
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +17 -17
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +70 -70
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +19 -19
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +94 -94
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -13
- package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +51 -51
- package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +15 -15
- package/lib/engine-components/postprocessing/Effects/Vignette.js +60 -60
- package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +90 -90
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +168 -168
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +42 -42
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +494 -494
- package/lib/engine-components/postprocessing/Volume.d.ts +90 -90
- package/lib/engine-components/postprocessing/Volume.js +385 -385
- package/lib/engine-components/postprocessing/VolumeParameter.d.ts +26 -26
- package/lib/engine-components/postprocessing/VolumeParameter.js +136 -136
- package/lib/engine-components/postprocessing/VolumeProfile.d.ts +15 -15
- package/lib/engine-components/postprocessing/VolumeProfile.js +60 -60
- package/lib/engine-components/postprocessing/index.d.ts +6 -6
- package/lib/engine-components/postprocessing/index.js +6 -6
- package/lib/engine-components/postprocessing/utils.d.ts +55 -55
- package/lib/engine-components/postprocessing/utils.js +119 -119
- package/lib/engine-components/timeline/PlayableDirector.d.ts +163 -163
- package/lib/engine-components/timeline/PlayableDirector.js +686 -686
- package/lib/engine-components/timeline/SignalAsset.d.ts +24 -24
- package/lib/engine-components/timeline/SignalAsset.js +130 -130
- package/lib/engine-components/timeline/TimelineModels.d.ts +89 -89
- package/lib/engine-components/timeline/TimelineModels.js +22 -22
- package/lib/engine-components/timeline/TimelineTracks.d.ts +110 -110
- package/lib/engine-components/timeline/TimelineTracks.js +879 -879
- package/lib/engine-components/timeline/index.d.ts +4 -4
- package/lib/engine-components/timeline/index.js +3 -3
- package/lib/engine-components/ui/BaseUIComponent.d.ts +48 -48
- package/lib/engine-components/ui/BaseUIComponent.js +170 -170
- package/lib/engine-components/ui/Button.d.ts +64 -64
- package/lib/engine-components/ui/Button.js +315 -315
- package/lib/engine-components/ui/Canvas.d.ts +74 -74
- package/lib/engine-components/ui/Canvas.js +407 -407
- package/lib/engine-components/ui/CanvasGroup.d.ts +19 -19
- package/lib/engine-components/ui/CanvasGroup.js +58 -58
- package/lib/engine-components/ui/EventSystem.d.ts +125 -125
- package/lib/engine-components/ui/EventSystem.js +765 -765
- package/lib/engine-components/ui/Graphic.d.ts +55 -55
- package/lib/engine-components/ui/Graphic.js +255 -255
- package/lib/engine-components/ui/Image.d.ts +35 -35
- package/lib/engine-components/ui/Image.js +116 -116
- package/lib/engine-components/ui/InputField.d.ts +42 -42
- package/lib/engine-components/ui/InputField.js +268 -268
- package/lib/engine-components/ui/Interfaces.d.ts +38 -38
- package/lib/engine-components/ui/Interfaces.js +12 -12
- package/lib/engine-components/ui/Layout.d.ts +84 -84
- package/lib/engine-components/ui/Layout.js +330 -330
- package/lib/engine-components/ui/Outline.d.ts +7 -7
- package/lib/engine-components/ui/Outline.js +20 -20
- package/lib/engine-components/ui/PointerEvents.d.ts +115 -115
- package/lib/engine-components/ui/PointerEvents.js +145 -145
- package/lib/engine-components/ui/RaycastUtils.d.ts +11 -11
- package/lib/engine-components/ui/RaycastUtils.js +67 -67
- package/lib/engine-components/ui/Raycaster.d.ts +30 -30
- package/lib/engine-components/ui/Raycaster.js +95 -95
- package/lib/engine-components/ui/RectTransform.d.ts +61 -61
- package/lib/engine-components/ui/RectTransform.js +356 -356
- package/lib/engine-components/ui/SpatialHtml.d.ts +8 -8
- package/lib/engine-components/ui/SpatialHtml.js +79 -79
- package/lib/engine-components/ui/Symbols.d.ts +1 -1
- package/lib/engine-components/ui/Symbols.js +1 -1
- package/lib/engine-components/ui/Text.d.ts +78 -78
- package/lib/engine-components/ui/Text.js +539 -539
- package/lib/engine-components/ui/Utils.d.ts +24 -24
- package/lib/engine-components/ui/Utils.js +90 -90
- package/lib/engine-components/ui/index.d.ts +1 -1
- package/lib/engine-components/ui/index.js +1 -1
- package/lib/engine-components/utils/EnvironmentScene.d.ts +5 -5
- package/lib/engine-components/utils/EnvironmentScene.js +205 -205
- package/lib/engine-components/utils/LookAt.d.ts +31 -31
- package/lib/engine-components/utils/LookAt.js +82 -82
- package/lib/engine-components/utils/OpenURL.d.ts +42 -42
- package/lib/engine-components/utils/OpenURL.js +119 -119
- package/lib/engine-components/webxr/Avatar.d.ts +25 -25
- package/lib/engine-components/webxr/Avatar.js +255 -255
- package/lib/engine-components/webxr/TeleportTarget.d.ts +7 -7
- package/lib/engine-components/webxr/TeleportTarget.js +7 -7
- package/lib/engine-components/webxr/WebARCameraBackground.d.ts +30 -30
- package/lib/engine-components/webxr/WebARCameraBackground.js +155 -155
- package/lib/engine-components/webxr/WebARSessionRoot.d.ts +98 -98
- package/lib/engine-components/webxr/WebARSessionRoot.js +770 -770
- package/lib/engine-components/webxr/WebXR.d.ts +232 -232
- package/lib/engine-components/webxr/WebXR.js +561 -561
- package/lib/engine-components/webxr/WebXRAvatar.d.ts +27 -27
- package/lib/engine-components/webxr/WebXRAvatar.js +44 -44
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +86 -86
- package/lib/engine-components/webxr/WebXRImageTracking.js +471 -471
- package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +92 -92
- package/lib/engine-components/webxr/WebXRPlaneTracking.js +500 -500
- package/lib/engine-components/webxr/WebXRRig.d.ts +32 -32
- package/lib/engine-components/webxr/WebXRRig.js +72 -72
- package/lib/engine-components/webxr/XRFlag.d.ts +38 -38
- package/lib/engine-components/webxr/XRFlag.js +139 -139
- package/lib/engine-components/webxr/controllers/XRControllerFollow.d.ts +47 -47
- package/lib/engine-components/webxr/controllers/XRControllerFollow.js +120 -120
- package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +43 -43
- package/lib/engine-components/webxr/controllers/XRControllerModel.js +352 -352
- package/lib/engine-components/webxr/controllers/XRControllerMovement.d.ts +78 -78
- package/lib/engine-components/webxr/controllers/XRControllerMovement.js +506 -506
- package/lib/engine-components/webxr/index.d.ts +3 -3
- package/lib/engine-components/webxr/index.js +3 -3
- package/lib/engine-components/webxr/types.d.ts +3 -3
- package/lib/engine-components/webxr/types.js +1 -1
- package/lib/engine-components-experimental/Presentation.d.ts +6 -6
- package/lib/engine-components-experimental/Presentation.js +9 -9
- package/lib/engine-components-experimental/api.d.ts +4 -4
- package/lib/engine-components-experimental/api.js +4 -4
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +156 -156
- package/lib/engine-components-experimental/networking/PlayerSync.js +377 -377
- package/lib/engine-schemes/api.d.ts +12 -12
- package/lib/engine-schemes/api.js +12 -12
- package/lib/engine-schemes/schemes.d.ts +7 -7
- package/lib/engine-schemes/schemes.js +19 -19
- package/lib/engine-schemes/synced-camera-model.d.ts +25 -25
- package/lib/engine-schemes/synced-camera-model.js +67 -67
- package/lib/engine-schemes/synced-transform-model.d.ts +31 -31
- package/lib/engine-schemes/synced-transform-model.js +66 -66
- package/lib/engine-schemes/transform.d.ts +12 -12
- package/lib/engine-schemes/transform.js +39 -39
- package/lib/engine-schemes/vec2.d.ts +10 -10
- package/lib/engine-schemes/vec2.js +25 -25
- package/lib/engine-schemes/vec3.d.ts +11 -11
- package/lib/engine-schemes/vec3.js +29 -29
- package/lib/engine-schemes/vec4.d.ts +12 -12
- package/lib/engine-schemes/vec4.js +33 -33
- package/lib/engine-schemes/vr-user-state-buffer.d.ts +37 -37
- package/lib/engine-schemes/vr-user-state-buffer.js +110 -110
- package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -6
- package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +45 -45
- package/lib/needle-engine.d.ts +7 -7
- package/lib/needle-engine.js +64 -64
- package/package.json +3 -3
- package/plugins/common/buildinfo.js +64 -64
- package/plugins/common/cloud.js +1 -1
- package/plugins/common/config.cjs +31 -31
- package/plugins/common/config.js +35 -35
- package/plugins/common/files.js +31 -31
- package/plugins/common/generator.js +10 -10
- package/plugins/common/license.js +452 -452
- package/plugins/common/logger.js +327 -327
- package/plugins/common/npm.js +15 -15
- package/plugins/common/timers.js +7 -7
- package/plugins/common/version.js +37 -37
- package/plugins/gltf-packer.mjs +1 -1
- package/plugins/next/alias.cjs +39 -39
- package/plugins/next/license.cjs +24 -24
- package/plugins/next/meshbvhworker.cjs +18 -18
- package/plugins/next/next.js +141 -141
- package/plugins/types/index.d.ts +2 -2
- package/plugins/types/license.d.ts +24 -24
- package/plugins/types/needleConfig.d.ts +27 -27
- package/plugins/types/next.d.ts +2 -2
- package/plugins/types/userconfig.d.ts +124 -124
- package/plugins/types/vite.d.ts +13 -13
- package/plugins/types/webmanifest.d.ts +32 -32
- package/plugins/vite/alias.js +189 -189
- package/plugins/vite/asap.js +251 -251
- package/plugins/vite/build-pipeline.js +371 -371
- package/plugins/vite/build.js +19 -19
- package/plugins/vite/buildinfo.js +41 -41
- package/plugins/vite/config.js +106 -106
- package/plugins/vite/copyfiles.js +138 -138
- package/plugins/vite/defines.js +70 -70
- package/plugins/vite/dependencies.js +232 -232
- package/plugins/vite/dependency-watcher.js +237 -237
- package/plugins/vite/drop-client.js +76 -76
- package/plugins/vite/drop.js +87 -87
- package/plugins/vite/editor-connection.js +124 -124
- package/plugins/vite/facebook-instant-games.js +102 -102
- package/plugins/vite/gzip.js +5 -5
- package/plugins/vite/imports-logger.js +143 -143
- package/plugins/vite/index.js +147 -147
- package/plugins/vite/license.js +56 -56
- package/plugins/vite/local-files.js +440 -440
- package/plugins/vite/logger.client.js +272 -272
- package/plugins/vite/logger.js +100 -100
- package/plugins/vite/materialx.js +31 -31
- package/plugins/vite/meta.js +163 -163
- package/plugins/vite/npm.js +7 -7
- package/plugins/vite/peer.js +29 -29
- package/plugins/vite/poster-client.js +73 -73
- package/plugins/vite/poster.js +79 -79
- package/plugins/vite/pwa.js +604 -604
- package/plugins/vite/reload-client.js +15 -15
- package/plugins/vite/reload.js +351 -351
- package/plugins/vite/server.js +66 -66
- package/plugins/vite/transform-codegen.js +55 -55
- package/plugins/vite/transform.js +32 -32
- package/plugins/vite/vite-4.4-hack.js +31 -31
- package/src/asap/needle-asap.ts +111 -111
- package/src/asap/sessiongranted.ts +75 -75
- package/src/asap/utils.ts +4 -4
- package/src/engine/analytics/index.ts +10 -10
- package/src/engine/analytics/lcp.ts +35 -35
- package/src/engine/api.ts +82 -82
- package/src/engine/assets/index.ts +59 -59
- package/src/engine/assets/static.js +5 -5
- package/src/engine/codegen/register_types.ts +300 -300
- package/src/engine/debug/debug.ts +51 -51
- package/src/engine/debug/debug_console.ts +333 -333
- package/src/engine/debug/debug_overlay.ts +332 -332
- package/src/engine/debug/debug_spatial_console.ts +429 -429
- package/src/engine/debug/index.ts +1 -1
- package/src/engine/engine_addressables.ts +671 -671
- package/src/engine/engine_animation.ts +145 -145
- package/src/engine/engine_application.ts +113 -113
- package/src/engine/engine_assetdatabase.ts +389 -389
- package/src/engine/engine_audio.ts +24 -24
- package/src/engine/engine_camera.ts +39 -39
- package/src/engine/engine_components.ts +366 -366
- package/src/engine/engine_components_internal.ts +40 -40
- package/src/engine/engine_constants.ts +52 -52
- package/src/engine/engine_context.ts +1822 -1824
- package/src/engine/engine_context_registry.ts +129 -129
- package/src/engine/engine_coroutine.ts +54 -54
- package/src/engine/engine_create_objects.ts +411 -411
- package/src/engine/engine_default_parameters.ts +3 -3
- package/src/engine/engine_editor-sync.ts +28 -28
- package/src/engine/engine_fileloader.js +9 -9
- package/src/engine/engine_gameobject.ts +712 -712
- package/src/engine/engine_generic_utils.js +13 -13
- package/src/engine/engine_gizmos.ts +577 -577
- package/src/engine/engine_gltf.ts +29 -29
- package/src/engine/engine_gltf_builtin_components.ts +403 -403
- package/src/engine/engine_hot_reload.ts +210 -210
- package/src/engine/engine_input.ts +1500 -1500
- package/src/engine/engine_input_utils.ts +23 -23
- package/src/engine/engine_instancing.ts +45 -45
- package/src/engine/engine_license.ts +386 -386
- package/src/engine/engine_lifecycle_api.ts +113 -113
- package/src/engine/engine_lifecycle_functions_internal.ts +193 -193
- package/src/engine/engine_lightdata.ts +125 -125
- package/src/engine/engine_loaders.callbacks.ts +136 -136
- package/src/engine/engine_loaders.gltf.ts +82 -82
- package/src/engine/engine_loaders.ts +378 -378
- package/src/engine/engine_lods.ts +185 -186
- package/src/engine/engine_mainloop_utils.ts +472 -472
- package/src/engine/engine_math.ts +282 -282
- package/src/engine/engine_modules.ts +83 -83
- package/src/engine/engine_networking.ts +862 -862
- package/src/engine/engine_networking_auto.ts +352 -352
- package/src/engine/engine_networking_blob.ts +275 -275
- package/src/engine/engine_networking_files.ts +217 -217
- package/src/engine/engine_networking_files_default_components.ts +58 -58
- package/src/engine/engine_networking_instantiate.ts +419 -419
- package/src/engine/engine_networking_peer.ts +159 -159
- package/src/engine/engine_networking_streams.ts +713 -713
- package/src/engine/engine_networking_types.ts +24 -24
- package/src/engine/engine_networking_utils.ts +23 -23
- package/src/engine/engine_networking_websocket.ts +2 -2
- package/src/engine/engine_patcher.ts +199 -199
- package/src/engine/engine_physics.ts +783 -783
- package/src/engine/engine_physics.types.ts +46 -46
- package/src/engine/engine_physics_rapier.ts +1577 -1577
- package/src/engine/engine_playerview.ts +80 -80
- package/src/engine/engine_scenelighting.ts +294 -294
- package/src/engine/engine_serialization.ts +2 -2
- package/src/engine/engine_serialization_builtin_serializer.ts +473 -473
- package/src/engine/engine_serialization_core.ts +720 -720
- package/src/engine/engine_serialization_decorator.ts +80 -80
- package/src/engine/engine_setup.ts +1 -1
- package/src/engine/engine_shaders.ts +267 -267
- package/src/engine/engine_shims.ts +32 -32
- package/src/engine/engine_test_utils.ts +109 -109
- package/src/engine/engine_texture.ts +82 -82
- package/src/engine/engine_three_utils.ts +928 -928
- package/src/engine/engine_time.ts +94 -94
- package/src/engine/engine_time_utils.ts +237 -237
- package/src/engine/engine_tonemapping.ts +209 -208
- package/src/engine/engine_types.ts +730 -730
- package/src/engine/engine_typestore.ts +63 -63
- package/src/engine/engine_util_decorator.ts +136 -136
- package/src/engine/engine_utils.ts +1115 -1115
- package/src/engine/engine_utils_format.ts +273 -273
- package/src/engine/engine_utils_screenshot.ts +708 -708
- package/src/engine/engine_utils_screenshot.xr.ts +103 -103
- package/src/engine/export/gltf/Writers.ts +34 -34
- package/src/engine/export/gltf/index.ts +158 -158
- package/src/engine/export/index.ts +2 -2
- package/src/engine/export/state.ts +19 -19
- package/src/engine/export/utils.ts +9 -9
- package/src/engine/extensions/EXT_texture_exr.ts +50 -50
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +195 -195
- package/src/engine/extensions/NEEDLE_components.ts +268 -268
- package/src/engine/extensions/NEEDLE_gameobject_data.ts +81 -81
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +185 -185
- package/src/engine/extensions/NEEDLE_lightmaps.ts +119 -119
- package/src/engine/extensions/NEEDLE_persistent_assets.ts +76 -76
- package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +640 -640
- package/src/engine/extensions/extension_resolver.ts +4 -4
- package/src/engine/extensions/extension_utils.ts +166 -166
- package/src/engine/extensions/extensions.ts +140 -140
- package/src/engine/extensions/index.ts +5 -5
- package/src/engine/extensions/usage_tracker.ts +100 -100
- package/src/engine/js-extensions/Camera.ts +37 -37
- package/src/engine/js-extensions/ExtensionUtils.ts +85 -85
- package/src/engine/js-extensions/Layers.ts +23 -23
- package/src/engine/js-extensions/Object3D.ts +296 -296
- package/src/engine/js-extensions/RGBAColor.ts +126 -126
- package/src/engine/js-extensions/Vector.ts +18 -18
- package/src/engine/js-extensions/index.ts +4 -4
- package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +125 -125
- package/src/engine/shaders/shaderData.ts +67 -67
- package/src/engine/tests/test_utils.ts +63 -63
- package/src/engine/webcomponents/WebXRButtons.ts +260 -260
- package/src/engine/webcomponents/api.ts +6 -6
- package/src/engine/webcomponents/buttons.ts +292 -292
- package/src/engine/webcomponents/fonts.ts +41 -41
- package/src/engine/webcomponents/icons.ts +57 -57
- package/src/engine/webcomponents/index.ts +1 -1
- package/src/engine/webcomponents/logo-element.ts +78 -78
- package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +573 -573
- package/src/engine/webcomponents/needle menu/needle-menu.ts +1118 -1118
- package/src/engine/webcomponents/needle-button.ts +181 -181
- package/src/engine/webcomponents/needle-engine.ar-overlay.ts +186 -186
- package/src/engine/webcomponents/needle-engine.attributes.ts +82 -82
- package/src/engine/webcomponents/needle-engine.extras.ts +16 -16
- package/src/engine/webcomponents/needle-engine.loading.ts +373 -373
- package/src/engine/webcomponents/needle-engine.ts +890 -860
- package/src/engine/xr/NeedleXRController.ts +1125 -1125
- package/src/engine/xr/NeedleXRSession.ts +1624 -1624
- package/src/engine/xr/NeedleXRSync.ts +220 -220
- package/src/engine/xr/SceneTransition.ts +78 -78
- package/src/engine/xr/TempXRContext.ts +216 -216
- package/src/engine/xr/XRRig.ts +9 -9
- package/src/engine/xr/api.ts +5 -5
- package/src/engine/xr/events.ts +102 -102
- package/src/engine/xr/internal.ts +34 -34
- package/src/engine/xr/usdz.ts +30 -30
- package/src/engine/xr/utils.ts +39 -39
- package/src/engine-components/AlignmentConstraint.ts +36 -36
- package/src/engine-components/Animation.ts +557 -557
- package/src/engine-components/AnimationCurve.ts +150 -150
- package/src/engine-components/AnimationUtils.ts +28 -28
- package/src/engine-components/AnimationUtilsAutoplay.ts +43 -43
- package/src/engine-components/Animator.ts +397 -397
- package/src/engine-components/AnimatorController.ts +1293 -1293
- package/src/engine-components/AudioListener.ts +92 -92
- package/src/engine-components/AudioSource.ts +644 -644
- package/src/engine-components/AvatarLoader.ts +263 -263
- package/src/engine-components/AxesHelper.ts +59 -59
- package/src/engine-components/BasicIKConstraint.ts +54 -54
- package/src/engine-components/BoxCollider.ts +1 -1
- package/src/engine-components/BoxHelperComponent.ts +114 -114
- package/src/engine-components/Camera.ts +719 -719
- package/src/engine-components/CameraUtils.ts +138 -138
- package/src/engine-components/CharacterController.ts +253 -253
- package/src/engine-components/Collider.ts +374 -374
- package/src/engine-components/Component.ts +1297 -1297
- package/src/engine-components/ContactShadows.ts +506 -506
- package/src/engine-components/DeleteBox.ts +62 -62
- package/src/engine-components/DeviceFlag.ts +46 -46
- package/src/engine-components/DragControls.ts +1623 -1623
- package/src/engine-components/DropListener.ts +713 -713
- package/src/engine-components/Duplicatable.ts +198 -198
- package/src/engine-components/EventList.ts +266 -266
- package/src/engine-components/EventTrigger.ts +74 -74
- package/src/engine-components/EventType.ts +22 -22
- package/src/engine-components/Fog.ts +60 -60
- package/src/engine-components/Gizmos.ts +56 -56
- package/src/engine-components/GridHelper.ts +48 -48
- package/src/engine-components/GroundProjection.ts +356 -356
- package/src/engine-components/Interactable.ts +14 -14
- package/src/engine-components/Joints.ts +52 -52
- package/src/engine-components/LODGroup.ts +153 -153
- package/src/engine-components/Light.ts +558 -558
- package/src/engine-components/LookAtConstraint.ts +25 -25
- package/src/engine-components/NeedleMenu.ts +84 -84
- package/src/engine-components/NestedGltf.ts +86 -86
- package/src/engine-components/Networking.ts +114 -114
- package/src/engine-components/OffsetConstraint.ts +60 -60
- package/src/engine-components/OrbitControls.ts +1074 -1074
- package/src/engine-components/PlayerColor.ts +103 -103
- package/src/engine-components/ReflectionProbe.ts +220 -220
- package/src/engine-components/Renderer.ts +903 -903
- package/src/engine-components/RendererInstancing.ts +855 -855
- package/src/engine-components/RendererLightmap.ts +198 -198
- package/src/engine-components/RigidBody.ts +526 -526
- package/src/engine-components/SceneSwitcher.ts +1030 -1030
- package/src/engine-components/ScreenCapture.ts +592 -592
- package/src/engine-components/ShadowCatcher.ts +172 -172
- package/src/engine-components/Skybox.ts +475 -475
- package/src/engine-components/SmoothFollow.ts +76 -76
- package/src/engine-components/SpatialTrigger.ts +229 -229
- package/src/engine-components/SpectatorCamera.ts +787 -787
- package/src/engine-components/SphereCollider.ts +1 -1
- package/src/engine-components/SpriteRenderer.ts +468 -468
- package/src/engine-components/SyncedCamera.ts +220 -220
- package/src/engine-components/SyncedRoom.ts +380 -380
- package/src/engine-components/SyncedTransform.ts +383 -383
- package/src/engine-components/TestRunner.ts +118 -118
- package/src/engine-components/TransformGizmo.ts +219 -219
- package/src/engine-components/VideoPlayer.ts +1025 -1025
- package/src/engine-components/Voip.ts +363 -363
- package/src/engine-components/api.ts +60 -60
- package/src/engine-components/avatar/AvatarBlink_Simple.ts +69 -69
- package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +63 -63
- package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +139 -139
- package/src/engine-components/avatar/Avatar_MouthShapes.ts +83 -83
- package/src/engine-components/avatar/Avatar_MustacheShake.ts +31 -31
- package/src/engine-components/codegen/components.ts +217 -217
- package/src/engine-components/debug/LogStats.ts +21 -21
- package/src/engine-components/export/gltf/GltfExport.ts +265 -265
- package/src/engine-components/export/usdz/Extension.ts +24 -24
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +2426 -2426
- package/src/engine-components/export/usdz/USDZExporter.ts +705 -705
- package/src/engine-components/export/usdz/extensions/Animation.ts +1204 -1204
- package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
- package/src/engine-components/export/usdz/extensions/NodeMaterialConverter.ts +532 -532
- package/src/engine-components/export/usdz/extensions/USDZText.ts +240 -240
- package/src/engine-components/export/usdz/extensions/USDZUI.ts +189 -189
- package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -99
- package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +102 -102
- package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +320 -320
- package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +1225 -1225
- package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +646 -646
- package/src/engine-components/export/usdz/extensions/behavior/PhysicsExtension.ts +132 -132
- package/src/engine-components/export/usdz/index.ts +2 -2
- package/src/engine-components/export/usdz/utils/animationutils.ts +191 -191
- package/src/engine-components/export/usdz/utils/quicklook.ts +50 -50
- package/src/engine-components/particlesystem/ParticleSystem.ts +1287 -1287
- package/src/engine-components/particlesystem/ParticleSystemModules.ts +1765 -1765
- package/src/engine-components/particlesystem/ParticleSystemSubEmitter.ts +111 -111
- package/src/engine-components/particlesystem/api.ts +1 -1
- package/src/engine-components/postprocessing/Effects/Antialiasing.ts +64 -64
- package/src/engine-components/postprocessing/Effects/BloomEffect.ts +116 -116
- package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +37 -37
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +106 -106
- package/src/engine-components/postprocessing/Effects/DepthOfField.ts +103 -103
- package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +25 -25
- package/src/engine-components/postprocessing/Effects/Pixelation.ts +32 -32
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +90 -90
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +192 -192
- package/src/engine-components/postprocessing/Effects/Sharpening.ts +143 -143
- package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +61 -61
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +103 -103
- package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -60
- package/src/engine-components/postprocessing/Effects/Vignette.ts +59 -59
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +192 -192
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +572 -572
- package/src/engine-components/postprocessing/Volume.ts +426 -426
- package/src/engine-components/postprocessing/VolumeParameter.ts +158 -158
- package/src/engine-components/postprocessing/VolumeProfile.ts +61 -61
- package/src/engine-components/postprocessing/index.ts +5 -5
- package/src/engine-components/postprocessing/utils.ts +154 -154
- package/src/engine-components/timeline/PlayableDirector.ts +722 -722
- package/src/engine-components/timeline/SignalAsset.ts +144 -144
- package/src/engine-components/timeline/TimelineModels.ts +92 -92
- package/src/engine-components/timeline/TimelineTracks.ts +967 -967
- package/src/engine-components/timeline/index.ts +3 -3
- package/src/engine-components/ui/BaseUIComponent.ts +203 -203
- package/src/engine-components/ui/Button.ts +307 -307
- package/src/engine-components/ui/Canvas.ts +419 -419
- package/src/engine-components/ui/CanvasGroup.ts +54 -54
- package/src/engine-components/ui/EventSystem.ts +854 -854
- package/src/engine-components/ui/Graphic.ts +275 -275
- package/src/engine-components/ui/Image.ts +112 -112
- package/src/engine-components/ui/InputField.ts +321 -321
- package/src/engine-components/ui/Interfaces.ts +57 -57
- package/src/engine-components/ui/Layout.ts +334 -334
- package/src/engine-components/ui/Outline.ts +13 -13
- package/src/engine-components/ui/PointerEvents.ts +206 -206
- package/src/engine-components/ui/RaycastUtils.ts +69 -69
- package/src/engine-components/ui/Raycaster.ts +102 -102
- package/src/engine-components/ui/RectTransform.ts +375 -375
- package/src/engine-components/ui/SpatialHtml.ts +79 -79
- package/src/engine-components/ui/Symbols.ts +1 -1
- package/src/engine-components/ui/Text.ts +578 -578
- package/src/engine-components/ui/Utils.ts +113 -113
- package/src/engine-components/utils/EnvironmentScene.ts +245 -245
- package/src/engine-components/utils/LookAt.ts +88 -88
- package/src/engine-components/utils/OpenURL.ts +114 -114
- package/src/engine-components/webxr/Avatar.ts +265 -265
- package/src/engine-components/webxr/TeleportTarget.ts +9 -9
- package/src/engine-components/webxr/WebARCameraBackground.ts +175 -175
- package/src/engine-components/webxr/WebARSessionRoot.ts +880 -880
- package/src/engine-components/webxr/WebXR.ts +585 -585
- package/src/engine-components/webxr/WebXRAvatar.ts +66 -66
- package/src/engine-components/webxr/WebXRImageTracking.ts +519 -519
- package/src/engine-components/webxr/WebXRPlaneTracking.ts +570 -570
- package/src/engine-components/webxr/WebXRRig.ts +77 -77
- package/src/engine-components/webxr/XRFlag.ts +147 -147
- package/src/engine-components/webxr/controllers/XRControllerFollow.ts +118 -118
- package/src/engine-components/webxr/controllers/XRControllerModel.ts +373 -373
- package/src/engine-components/webxr/controllers/XRControllerMovement.ts +550 -550
- package/src/engine-components/webxr/index.ts +2 -2
- package/src/engine-components/webxr/types.ts +3 -3
- package/src/engine-components-experimental/Presentation.ts +12 -12
- package/src/engine-components-experimental/api.ts +4 -4
- package/src/engine-components-experimental/networking/PlayerSync.ts +401 -401
- package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
- package/src/engine-schemes/COMPILE_TS.bat +11 -11
- package/src/engine-schemes/README.md +1 -1
- package/src/engine-schemes/api.ts +12 -12
- package/src/engine-schemes/schemes.ts +28 -28
- package/src/engine-schemes/synced-camera-model.ts +92 -92
- package/src/engine-schemes/synced-transform-model.ts +90 -90
- package/src/engine-schemes/syncedCamera.fbs +10 -10
- package/src/engine-schemes/transform.ts +50 -50
- package/src/engine-schemes/transforms.fbs +25 -25
- package/src/engine-schemes/vec.fbs +19 -19
- package/src/engine-schemes/vec2.ts +33 -33
- package/src/engine-schemes/vec3.ts +38 -38
- package/src/engine-schemes/vec4.ts +43 -43
- package/src/engine-schemes/vr-user-state-buffer.ts +145 -145
- package/src/engine-schemes/vrUserStateBuffer.fbs +17 -17
- package/src/include/draco/draco_decoder.js +34 -34
- package/src/include/ktx2/basis_transcoder.js +21 -21
- package/src/include/needle/arial-msdf.json +1471 -1471
- package/src/include/three/DragControls.js +231 -231
- package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
- package/src/needle-engine.ts +70 -70
- package/dist/generateMeshBVH.worker-Cdfpaq5W.js +0 -25
- package/dist/gltf-progressive-YjtQYFa9.js +0 -1052
- package/dist/gltf-progressive-yOP1mp5W.min.js +0 -8
- package/dist/gltf-progressive-zdhlW609.umd.cjs +0 -8
- package/src/engine-schemes/dist/api.js +0 -17
- package/src/engine-schemes/dist/api.js.meta +0 -7
- package/src/engine-schemes/dist/schemes.js +0 -25
- package/src/engine-schemes/dist/schemes.js.meta +0 -7
- package/src/engine-schemes/dist/synced-camera-model.js +0 -74
- package/src/engine-schemes/dist/synced-camera-model.js.meta +0 -7
- package/src/engine-schemes/dist/synced-transform-model.js +0 -73
- package/src/engine-schemes/dist/synced-transform-model.js.meta +0 -7
- package/src/engine-schemes/dist/transform.js +0 -46
- package/src/engine-schemes/dist/transform.js.meta +0 -7
- package/src/engine-schemes/dist/vec2.js +0 -32
- package/src/engine-schemes/dist/vec2.js.meta +0 -7
- package/src/engine-schemes/dist/vec3.js +0 -36
- package/src/engine-schemes/dist/vec3.js.meta +0 -7
- package/src/engine-schemes/dist/vec4.js +0 -40
- package/src/engine-schemes/dist/vec4.js.meta +0 -7
- package/src/engine-schemes/dist/vr-user-state-buffer.js +0 -110
- package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +0 -7
|
@@ -1,378 +1,378 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { Object3D } from "three";
|
|
8
|
-
import { AssetReference } from "../../engine/engine_addressables.js";
|
|
9
|
-
import { RoomEvents } from "../../engine/engine_networking.js";
|
|
10
|
-
import { syncField } from "../../engine/engine_networking_auto.js";
|
|
11
|
-
import { syncDestroy } from "../../engine/engine_networking_instantiate.js";
|
|
12
|
-
import { serializable } from "../../engine/engine_serialization_decorator.js";
|
|
13
|
-
import { delay, getParam } from "../../engine/engine_utils.js";
|
|
14
|
-
import { Behaviour, Component, GameObject } from "../../engine-components/Component.js";
|
|
15
|
-
import { EventList } from "../../engine-components/EventList.js";
|
|
16
|
-
const debug = getParam("debugplayersync");
|
|
17
|
-
/**
|
|
18
|
-
* This component instantiates an asset for each player that joins a networked room. The asset will be destroyed when the player leaves the room.
|
|
19
|
-
* The asset should have a PlayerState component, and can have other components like SyncedTransform, custom components, etc.
|
|
20
|
-
* @category Networking
|
|
21
|
-
*/
|
|
22
|
-
export class PlayerSync extends Behaviour {
|
|
23
|
-
/**
|
|
24
|
-
* This API is experimental and may change or be removed in the future.
|
|
25
|
-
* Creates a PlayerSync instance at runtime from a given URL and sets it up for networking
|
|
26
|
-
* @param url Path to the asset that should be instantiated for each player
|
|
27
|
-
* @param init Optional initialization parameters for the PlayerSync component
|
|
28
|
-
* @returns Promise resolving to a PlayerSync instance with a guaranteed asset property
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const res = await PlayerSync.setupFrom("/assets/demo.glb");
|
|
32
|
-
* addComponent(res.asset?.asset, DragControls);
|
|
33
|
-
* addComponent(res.asset?.asset, SyncedTransform);
|
|
34
|
-
* scene.add(res.gameObject);
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
static async setupFrom(url, init) {
|
|
38
|
-
const assetReference = AssetReference.getOrCreateFromUrl(url);
|
|
39
|
-
if (!assetReference.asset) {
|
|
40
|
-
const i = await assetReference.loadAssetAsync();
|
|
41
|
-
if (i)
|
|
42
|
-
GameObject.getOrAddComponent(i, PlayerState);
|
|
43
|
-
}
|
|
44
|
-
const ps = new PlayerSync();
|
|
45
|
-
ps._internalInit(init);
|
|
46
|
-
ps.asset = assetReference;
|
|
47
|
-
const obj = new Object3D();
|
|
48
|
-
obj["guid"] = url;
|
|
49
|
-
GameObject.addComponent(obj, ps);
|
|
50
|
-
return ps;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* When enabled, PlayerSync will automatically load and instantiate the assigned asset when joining a networked room
|
|
54
|
-
*/
|
|
55
|
-
autoSync = true;
|
|
56
|
-
/**
|
|
57
|
-
* The asset that will be loaded and instantiated when PlayerSync becomes active and joins a networked room
|
|
58
|
-
*/
|
|
59
|
-
asset;
|
|
60
|
-
/**
|
|
61
|
-
* Event invoked when a player instance is spawned with the spawned {@link Object3D} as parameter
|
|
62
|
-
* @serializable
|
|
63
|
-
*/
|
|
64
|
-
onPlayerSpawned;
|
|
65
|
-
_localInstance;
|
|
66
|
-
awake() {
|
|
67
|
-
this.watchTabVisible();
|
|
68
|
-
if (!this.onPlayerSpawned)
|
|
69
|
-
this.onPlayerSpawned = new EventList();
|
|
70
|
-
}
|
|
71
|
-
onEnable() {
|
|
72
|
-
this.context.connection.beginListen(RoomEvents.RoomStateSent, this.onJoinedRoom);
|
|
73
|
-
this.context.connection.beginListen(RoomEvents.JoinedRoom, this.onJoinedRoom);
|
|
74
|
-
this.context.connection.beginListen(RoomEvents.LeftRoom, this.destroyInstance);
|
|
75
|
-
if (this.context.connection.isInRoom) {
|
|
76
|
-
this.onJoinedRoom();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
onDisable() {
|
|
80
|
-
this.context.connection.stopListen(RoomEvents.RoomStateSent, this.onJoinedRoom);
|
|
81
|
-
this.context.connection.stopListen(RoomEvents.JoinedRoom, this.onJoinedRoom);
|
|
82
|
-
this.context.connection.stopListen(RoomEvents.LeftRoom, this.destroyInstance);
|
|
83
|
-
}
|
|
84
|
-
onJoinedRoom = () => {
|
|
85
|
-
if (debug)
|
|
86
|
-
console.log("PlayerSync.joinedRoom. autoSync is set to " + this.autoSync);
|
|
87
|
-
if (this.autoSync)
|
|
88
|
-
this.getInstance();
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Gets or creates an instance of the assigned asset for the local player
|
|
92
|
-
* @returns Promise resolving to the instantiated player object or null if creation failed
|
|
93
|
-
*/
|
|
94
|
-
async getInstance() {
|
|
95
|
-
if (this._localInstance)
|
|
96
|
-
return this._localInstance;
|
|
97
|
-
if (debug)
|
|
98
|
-
console.log("PlayerSync.createInstance", this.asset?.url);
|
|
99
|
-
if (!this.asset?.asset && !this.asset?.url) {
|
|
100
|
-
console.error("PlayerSync: can not create an instance because \"asset\" is not set and or has no URL!");
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
if (!this.gameObject.guid) {
|
|
104
|
-
console.warn("PlayerSync: gameObject has no guid! This might cause issues with syncing the player state.");
|
|
105
|
-
}
|
|
106
|
-
this._localInstance = this.asset?.instantiateSynced({ parent: this.gameObject, deleteOnDisconnect: true }, true);
|
|
107
|
-
const instance = await this._localInstance;
|
|
108
|
-
if (instance) {
|
|
109
|
-
const pl = GameObject.getComponentsInChildren(instance, PlayerState);
|
|
110
|
-
if (debug)
|
|
111
|
-
console.log(`PlayerSync.createInstance: found ${pl?.length} PlayerState components. Owner: ${this.context.connection.connectionId}`);
|
|
112
|
-
if (pl?.length) {
|
|
113
|
-
for (const state of pl)
|
|
114
|
-
state.owner = this.context.connection.connectionId;
|
|
115
|
-
this.onPlayerSpawned?.invoke(instance);
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
this._localInstance = undefined;
|
|
119
|
-
console.error("<strong>Failed finding PlayerState on " + this.asset?.url + "</strong>: please make sure the asset has a PlayerState component!");
|
|
120
|
-
GameObject.destroySynced(instance);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this._localInstance = undefined;
|
|
125
|
-
console.warn("PlayerSync: failed instantiating asset!");
|
|
126
|
-
}
|
|
127
|
-
return this._localInstance;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Destroys the current player instance and cleans up networking state
|
|
131
|
-
*/
|
|
132
|
-
destroyInstance = () => {
|
|
133
|
-
this._localInstance?.then(go => {
|
|
134
|
-
if (debug)
|
|
135
|
-
console.log("PlayerSync.destroyInstance", go);
|
|
136
|
-
syncDestroy(go, this.context.connection, true, { saveInRoom: false });
|
|
137
|
-
});
|
|
138
|
-
this._localInstance = undefined;
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* Sets up visibility change listeners to handle player cleanup when browser tab visibility changes
|
|
142
|
-
*/
|
|
143
|
-
watchTabVisible() {
|
|
144
|
-
window.addEventListener("visibilitychange", _ => {
|
|
145
|
-
if (document.visibilityState === "visible") {
|
|
146
|
-
for (let i = PlayerState.all.length - 1; i >= 0; i--) {
|
|
147
|
-
const pl = PlayerState.all[i];
|
|
148
|
-
if (!pl.owner || !this.context.connection.userIsInRoom(pl.owner)) {
|
|
149
|
-
pl.doDestroy();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
__decorate([
|
|
157
|
-
serializable()
|
|
158
|
-
], PlayerSync.prototype, "autoSync", void 0);
|
|
159
|
-
__decorate([
|
|
160
|
-
serializable(AssetReference)
|
|
161
|
-
], PlayerSync.prototype, "asset", void 0);
|
|
162
|
-
__decorate([
|
|
163
|
-
serializable(EventList)
|
|
164
|
-
], PlayerSync.prototype, "onPlayerSpawned", void 0);
|
|
165
|
-
/**
|
|
166
|
-
* Enum defining events that can be triggered by PlayerState
|
|
167
|
-
*/
|
|
168
|
-
export var PlayerStateEvent;
|
|
169
|
-
(function (PlayerStateEvent) {
|
|
170
|
-
/** Triggered when a PlayerState's owner property changes */
|
|
171
|
-
PlayerStateEvent["OwnerChanged"] = "ownerChanged";
|
|
172
|
-
})(PlayerStateEvent || (PlayerStateEvent = {}));
|
|
173
|
-
/**
|
|
174
|
-
* Represents a player instance in the networked environment.
|
|
175
|
-
* Handles ownership, synchronization, and lifecycle management of player objects.
|
|
176
|
-
*/
|
|
177
|
-
export class PlayerState extends Behaviour {
|
|
178
|
-
static _all = [];
|
|
179
|
-
/** All PlayerState instances for all players in the scene */
|
|
180
|
-
static get all() {
|
|
181
|
-
return PlayerState._all;
|
|
182
|
-
}
|
|
183
|
-
;
|
|
184
|
-
static _local = [];
|
|
185
|
-
/** All PlayerState instances that belong to the local player */
|
|
186
|
-
static get local() {
|
|
187
|
-
return PlayerState._local;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Gets the PlayerState component for a given object or component
|
|
191
|
-
* @param obj Object3D or Component to find the PlayerState for
|
|
192
|
-
* @returns The PlayerState component if found, undefined otherwise
|
|
193
|
-
*/
|
|
194
|
-
static getFor(obj) {
|
|
195
|
-
if (obj instanceof Object3D) {
|
|
196
|
-
return GameObject.getComponentInParent(obj, PlayerState);
|
|
197
|
-
}
|
|
198
|
-
else if (obj instanceof Component) {
|
|
199
|
-
return GameObject.getComponentInParent(obj.gameObject, PlayerState);
|
|
200
|
-
}
|
|
201
|
-
return undefined;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Checks if a given object or component belongs to the local player
|
|
205
|
-
* @param obj Object3D or Component to check
|
|
206
|
-
* @returns True if the object belongs to the local player, false otherwise
|
|
207
|
-
*/
|
|
208
|
-
static isLocalPlayer(obj) {
|
|
209
|
-
const state = PlayerState.getFor(obj);
|
|
210
|
-
return state?.isLocalPlayer ?? false;
|
|
211
|
-
}
|
|
212
|
-
static _callbacks = {};
|
|
213
|
-
/**
|
|
214
|
-
* Registers a callback for a specific PlayerState event
|
|
215
|
-
* @param event The event to listen for
|
|
216
|
-
* @param cb Callback function that will be invoked when the event occurs
|
|
217
|
-
* @returns The provided callback function for chaining
|
|
218
|
-
*/
|
|
219
|
-
static addEventListener(event, cb) {
|
|
220
|
-
if (!this._callbacks[event])
|
|
221
|
-
this._callbacks[event] = [];
|
|
222
|
-
this._callbacks[event].push(cb);
|
|
223
|
-
return cb;
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Removes a previously registered event callback
|
|
227
|
-
* @param event The event type to remove the callback from
|
|
228
|
-
* @param cb The callback function to remove
|
|
229
|
-
*/
|
|
230
|
-
static removeEventListener(event, cb) {
|
|
231
|
-
if (!this._callbacks[event])
|
|
232
|
-
return;
|
|
233
|
-
const index = this._callbacks[event].indexOf(cb);
|
|
234
|
-
if (index >= 0)
|
|
235
|
-
this._callbacks[event].splice(index, 1);
|
|
236
|
-
}
|
|
237
|
-
static dispatchEvent(event, args) {
|
|
238
|
-
if (!this._callbacks[event])
|
|
239
|
-
return;
|
|
240
|
-
for (const cb of this._callbacks[event]) {
|
|
241
|
-
cb(args);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
/** Event triggered when the owner of this PlayerState changes */
|
|
245
|
-
onOwnerChangeEvent = new EventList();
|
|
246
|
-
/** Event triggered the first time an owner is assigned to this PlayerState */
|
|
247
|
-
onFirstOwnerChangeEvent = new EventList();
|
|
248
|
-
/** Indicates if this PlayerState has an owner assigned */
|
|
249
|
-
hasOwner = false;
|
|
250
|
-
/**
|
|
251
|
-
* The connection ID of the player who owns this PlayerState instance
|
|
252
|
-
* @syncField Synchronized across the network
|
|
253
|
-
*/
|
|
254
|
-
owner;
|
|
255
|
-
/**
|
|
256
|
-
* When enabled, PlayerState will not destroy itself when the owner is not connected anymore
|
|
257
|
-
*/
|
|
258
|
-
dontDestroy = false;
|
|
259
|
-
/**
|
|
260
|
-
* Indicates if this PlayerState belongs to the local player
|
|
261
|
-
*/
|
|
262
|
-
get isLocalPlayer() {
|
|
263
|
-
return this.owner === this.context.connection.connectionId;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Handles owner change events and updates relevant state
|
|
267
|
-
* @param newOwner The new owner's connection ID
|
|
268
|
-
* @param oldOwner The previous owner's connection ID
|
|
269
|
-
*/
|
|
270
|
-
onOwnerChange(newOwner, oldOwner) {
|
|
271
|
-
if (debug)
|
|
272
|
-
console.log(`PlayerSync.onOwnerChange: ${oldOwner} → ${newOwner} (me: ${this.context.connection.connectionId})`);
|
|
273
|
-
// Remove from local owner array if it was local before
|
|
274
|
-
const index = PlayerState._local.indexOf(this);
|
|
275
|
-
if (index >= 0)
|
|
276
|
-
PlayerState._local.splice(index, 1);
|
|
277
|
-
// Args to use for dispatching events
|
|
278
|
-
const detail = {
|
|
279
|
-
playerState: this,
|
|
280
|
-
oldValue: oldOwner,
|
|
281
|
-
newValue: newOwner
|
|
282
|
-
};
|
|
283
|
-
// call local events
|
|
284
|
-
if (!this.hasOwner) {
|
|
285
|
-
this.hasOwner = true;
|
|
286
|
-
this.onFirstOwnerChangeEvent?.invoke(detail);
|
|
287
|
-
}
|
|
288
|
-
this.onOwnerChangeEvent?.invoke(detail);
|
|
289
|
-
// call remote events
|
|
290
|
-
if (this.owner === this.context.connection.connectionId) {
|
|
291
|
-
PlayerState._local.push(this);
|
|
292
|
-
// console.warn(this.gameObject.guid, this.guid, this.owner, this.isLocalPlayer, PlayerState.isLocalPlayer(this));
|
|
293
|
-
const evt = new CustomEvent("local-owner-changed", { detail: detail });
|
|
294
|
-
this.dispatchEvent(evt);
|
|
295
|
-
}
|
|
296
|
-
const evt = new CustomEvent("owner-changed", { detail: detail });
|
|
297
|
-
this.dispatchEvent(evt);
|
|
298
|
-
PlayerState.dispatchEvent(PlayerStateEvent.OwnerChanged, evt);
|
|
299
|
-
}
|
|
300
|
-
/** @internal */
|
|
301
|
-
awake() {
|
|
302
|
-
PlayerState.all.push(this);
|
|
303
|
-
if (debug)
|
|
304
|
-
console.log("Registered new PlayerState", this.guid, PlayerState.all.length - 1, PlayerState.all);
|
|
305
|
-
this.context.connection.beginListen(RoomEvents.UserLeftRoom, this.onUserLeftRoom);
|
|
306
|
-
}
|
|
307
|
-
/** @internal */
|
|
308
|
-
async start() {
|
|
309
|
-
if (debug)
|
|
310
|
-
console.log("PLAYERSTATE.START, owner: " + this.owner, this.context.connection.usersInRoom([]));
|
|
311
|
-
// If a player is spawned but not in the room anymore we want to destroy it
|
|
312
|
-
// this might happen in a case where all users get disconnected at once and the server
|
|
313
|
-
// still has the syncInstantiate messages that are sent to all clients
|
|
314
|
-
if (this.owner) {
|
|
315
|
-
// a slight delay is necessary right now because the syncInstantiate call might has created this object already with the owner assigned but the user has not yet joined the room
|
|
316
|
-
if (!this.context.connection.isInRoom)
|
|
317
|
-
await delay(300);
|
|
318
|
-
if (this.context.connection.userIsInRoom(this.owner) == false) {
|
|
319
|
-
if (debug)
|
|
320
|
-
console.log(`PlayerSync.start → doDestroy \"${this.name}\" because user \"${this.owner}\" is not in room anymore...`, "Currently in room:", ...this.context.connection.usersInRoom());
|
|
321
|
-
this.doDestroy();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
else if (!this.owner) {
|
|
325
|
-
if (debug)
|
|
326
|
-
console.warn("PlayerState.start → owner is undefined!", this.name);
|
|
327
|
-
// we can delete it here immediately because it is not synced anymore or the owner has left the room
|
|
328
|
-
// we could also do this in a timeout and check if the owner is still not assigned after a second (but that would be a hack)
|
|
329
|
-
setTimeout(() => {
|
|
330
|
-
if (!this.destroyed && !this.owner) {
|
|
331
|
-
if (!this.dontDestroy) {
|
|
332
|
-
if (debug)
|
|
333
|
-
console.warn(`PlayerState.start → owner is still undefined: destroying \"${this.name}\" instance now`);
|
|
334
|
-
this.doDestroy();
|
|
335
|
-
}
|
|
336
|
-
else if (debug)
|
|
337
|
-
console.warn("PlayerState.start → owner is still undefined but dontDestroy is set to true", this.name);
|
|
338
|
-
}
|
|
339
|
-
else if (debug)
|
|
340
|
-
console.log("PlayerState.start → owner is assigned", this.owner);
|
|
341
|
-
}, 2000);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
/** Tells the server that this client has been destroyed, and the networking message for the instantiate will be removed */
|
|
345
|
-
doDestroy() {
|
|
346
|
-
if (debug)
|
|
347
|
-
console.log("PlayerSync.doDestroy → syncDestroy", this.name);
|
|
348
|
-
syncDestroy(this.gameObject, this.context.connection, true, { saveInRoom: false });
|
|
349
|
-
}
|
|
350
|
-
/** @internal */
|
|
351
|
-
onDestroy() {
|
|
352
|
-
if (debug)
|
|
353
|
-
console.warn("PlayerState.onDestroy", this.owner);
|
|
354
|
-
this.context.connection.stopListen(RoomEvents.UserLeftRoom, this.onUserLeftRoom);
|
|
355
|
-
PlayerState.all.splice(PlayerState.all.indexOf(this), 1);
|
|
356
|
-
if (this.isLocalPlayer) {
|
|
357
|
-
const index = PlayerState._local.indexOf(this);
|
|
358
|
-
if (index >= 0)
|
|
359
|
-
PlayerState._local.splice(index, 1);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Handler for when a user leaves the networked room
|
|
364
|
-
* @param model Object containing the ID of the user who left
|
|
365
|
-
*/
|
|
366
|
-
onUserLeftRoom = (model) => {
|
|
367
|
-
if (model.userId === this.owner) {
|
|
368
|
-
if (debug)
|
|
369
|
-
console.log("PLAYERSYNC LEFT", this.owner);
|
|
370
|
-
this.doDestroy();
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
__decorate([
|
|
376
|
-
syncField(PlayerState.prototype.onOwnerChange)
|
|
377
|
-
], PlayerState.prototype, "owner", void 0);
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Object3D } from "three";
|
|
8
|
+
import { AssetReference } from "../../engine/engine_addressables.js";
|
|
9
|
+
import { RoomEvents } from "../../engine/engine_networking.js";
|
|
10
|
+
import { syncField } from "../../engine/engine_networking_auto.js";
|
|
11
|
+
import { syncDestroy } from "../../engine/engine_networking_instantiate.js";
|
|
12
|
+
import { serializable } from "../../engine/engine_serialization_decorator.js";
|
|
13
|
+
import { delay, getParam } from "../../engine/engine_utils.js";
|
|
14
|
+
import { Behaviour, Component, GameObject } from "../../engine-components/Component.js";
|
|
15
|
+
import { EventList } from "../../engine-components/EventList.js";
|
|
16
|
+
const debug = getParam("debugplayersync");
|
|
17
|
+
/**
|
|
18
|
+
* This component instantiates an asset for each player that joins a networked room. The asset will be destroyed when the player leaves the room.
|
|
19
|
+
* The asset should have a PlayerState component, and can have other components like SyncedTransform, custom components, etc.
|
|
20
|
+
* @category Networking
|
|
21
|
+
*/
|
|
22
|
+
export class PlayerSync extends Behaviour {
|
|
23
|
+
/**
|
|
24
|
+
* This API is experimental and may change or be removed in the future.
|
|
25
|
+
* Creates a PlayerSync instance at runtime from a given URL and sets it up for networking
|
|
26
|
+
* @param url Path to the asset that should be instantiated for each player
|
|
27
|
+
* @param init Optional initialization parameters for the PlayerSync component
|
|
28
|
+
* @returns Promise resolving to a PlayerSync instance with a guaranteed asset property
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const res = await PlayerSync.setupFrom("/assets/demo.glb");
|
|
32
|
+
* addComponent(res.asset?.asset, DragControls);
|
|
33
|
+
* addComponent(res.asset?.asset, SyncedTransform);
|
|
34
|
+
* scene.add(res.gameObject);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
static async setupFrom(url, init) {
|
|
38
|
+
const assetReference = AssetReference.getOrCreateFromUrl(url);
|
|
39
|
+
if (!assetReference.asset) {
|
|
40
|
+
const i = await assetReference.loadAssetAsync();
|
|
41
|
+
if (i)
|
|
42
|
+
GameObject.getOrAddComponent(i, PlayerState);
|
|
43
|
+
}
|
|
44
|
+
const ps = new PlayerSync();
|
|
45
|
+
ps._internalInit(init);
|
|
46
|
+
ps.asset = assetReference;
|
|
47
|
+
const obj = new Object3D();
|
|
48
|
+
obj["guid"] = url;
|
|
49
|
+
GameObject.addComponent(obj, ps);
|
|
50
|
+
return ps;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* When enabled, PlayerSync will automatically load and instantiate the assigned asset when joining a networked room
|
|
54
|
+
*/
|
|
55
|
+
autoSync = true;
|
|
56
|
+
/**
|
|
57
|
+
* The asset that will be loaded and instantiated when PlayerSync becomes active and joins a networked room
|
|
58
|
+
*/
|
|
59
|
+
asset;
|
|
60
|
+
/**
|
|
61
|
+
* Event invoked when a player instance is spawned with the spawned {@link Object3D} as parameter
|
|
62
|
+
* @serializable
|
|
63
|
+
*/
|
|
64
|
+
onPlayerSpawned;
|
|
65
|
+
_localInstance;
|
|
66
|
+
awake() {
|
|
67
|
+
this.watchTabVisible();
|
|
68
|
+
if (!this.onPlayerSpawned)
|
|
69
|
+
this.onPlayerSpawned = new EventList();
|
|
70
|
+
}
|
|
71
|
+
onEnable() {
|
|
72
|
+
this.context.connection.beginListen(RoomEvents.RoomStateSent, this.onJoinedRoom);
|
|
73
|
+
this.context.connection.beginListen(RoomEvents.JoinedRoom, this.onJoinedRoom);
|
|
74
|
+
this.context.connection.beginListen(RoomEvents.LeftRoom, this.destroyInstance);
|
|
75
|
+
if (this.context.connection.isInRoom) {
|
|
76
|
+
this.onJoinedRoom();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
onDisable() {
|
|
80
|
+
this.context.connection.stopListen(RoomEvents.RoomStateSent, this.onJoinedRoom);
|
|
81
|
+
this.context.connection.stopListen(RoomEvents.JoinedRoom, this.onJoinedRoom);
|
|
82
|
+
this.context.connection.stopListen(RoomEvents.LeftRoom, this.destroyInstance);
|
|
83
|
+
}
|
|
84
|
+
onJoinedRoom = () => {
|
|
85
|
+
if (debug)
|
|
86
|
+
console.log("PlayerSync.joinedRoom. autoSync is set to " + this.autoSync);
|
|
87
|
+
if (this.autoSync)
|
|
88
|
+
this.getInstance();
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Gets or creates an instance of the assigned asset for the local player
|
|
92
|
+
* @returns Promise resolving to the instantiated player object or null if creation failed
|
|
93
|
+
*/
|
|
94
|
+
async getInstance() {
|
|
95
|
+
if (this._localInstance)
|
|
96
|
+
return this._localInstance;
|
|
97
|
+
if (debug)
|
|
98
|
+
console.log("PlayerSync.createInstance", this.asset?.url);
|
|
99
|
+
if (!this.asset?.asset && !this.asset?.url) {
|
|
100
|
+
console.error("PlayerSync: can not create an instance because \"asset\" is not set and or has no URL!");
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
if (!this.gameObject.guid) {
|
|
104
|
+
console.warn("PlayerSync: gameObject has no guid! This might cause issues with syncing the player state.");
|
|
105
|
+
}
|
|
106
|
+
this._localInstance = this.asset?.instantiateSynced({ parent: this.gameObject, deleteOnDisconnect: true }, true);
|
|
107
|
+
const instance = await this._localInstance;
|
|
108
|
+
if (instance) {
|
|
109
|
+
const pl = GameObject.getComponentsInChildren(instance, PlayerState);
|
|
110
|
+
if (debug)
|
|
111
|
+
console.log(`PlayerSync.createInstance: found ${pl?.length} PlayerState components. Owner: ${this.context.connection.connectionId}`);
|
|
112
|
+
if (pl?.length) {
|
|
113
|
+
for (const state of pl)
|
|
114
|
+
state.owner = this.context.connection.connectionId;
|
|
115
|
+
this.onPlayerSpawned?.invoke(instance);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this._localInstance = undefined;
|
|
119
|
+
console.error("<strong>Failed finding PlayerState on " + this.asset?.url + "</strong>: please make sure the asset has a PlayerState component!");
|
|
120
|
+
GameObject.destroySynced(instance);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this._localInstance = undefined;
|
|
125
|
+
console.warn("PlayerSync: failed instantiating asset!");
|
|
126
|
+
}
|
|
127
|
+
return this._localInstance;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Destroys the current player instance and cleans up networking state
|
|
131
|
+
*/
|
|
132
|
+
destroyInstance = () => {
|
|
133
|
+
this._localInstance?.then(go => {
|
|
134
|
+
if (debug)
|
|
135
|
+
console.log("PlayerSync.destroyInstance", go);
|
|
136
|
+
syncDestroy(go, this.context.connection, true, { saveInRoom: false });
|
|
137
|
+
});
|
|
138
|
+
this._localInstance = undefined;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Sets up visibility change listeners to handle player cleanup when browser tab visibility changes
|
|
142
|
+
*/
|
|
143
|
+
watchTabVisible() {
|
|
144
|
+
window.addEventListener("visibilitychange", _ => {
|
|
145
|
+
if (document.visibilityState === "visible") {
|
|
146
|
+
for (let i = PlayerState.all.length - 1; i >= 0; i--) {
|
|
147
|
+
const pl = PlayerState.all[i];
|
|
148
|
+
if (!pl.owner || !this.context.connection.userIsInRoom(pl.owner)) {
|
|
149
|
+
pl.doDestroy();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
__decorate([
|
|
157
|
+
serializable()
|
|
158
|
+
], PlayerSync.prototype, "autoSync", void 0);
|
|
159
|
+
__decorate([
|
|
160
|
+
serializable(AssetReference)
|
|
161
|
+
], PlayerSync.prototype, "asset", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
serializable(EventList)
|
|
164
|
+
], PlayerSync.prototype, "onPlayerSpawned", void 0);
|
|
165
|
+
/**
|
|
166
|
+
* Enum defining events that can be triggered by PlayerState
|
|
167
|
+
*/
|
|
168
|
+
export var PlayerStateEvent;
|
|
169
|
+
(function (PlayerStateEvent) {
|
|
170
|
+
/** Triggered when a PlayerState's owner property changes */
|
|
171
|
+
PlayerStateEvent["OwnerChanged"] = "ownerChanged";
|
|
172
|
+
})(PlayerStateEvent || (PlayerStateEvent = {}));
|
|
173
|
+
/**
|
|
174
|
+
* Represents a player instance in the networked environment.
|
|
175
|
+
* Handles ownership, synchronization, and lifecycle management of player objects.
|
|
176
|
+
*/
|
|
177
|
+
export class PlayerState extends Behaviour {
|
|
178
|
+
static _all = [];
|
|
179
|
+
/** All PlayerState instances for all players in the scene */
|
|
180
|
+
static get all() {
|
|
181
|
+
return PlayerState._all;
|
|
182
|
+
}
|
|
183
|
+
;
|
|
184
|
+
static _local = [];
|
|
185
|
+
/** All PlayerState instances that belong to the local player */
|
|
186
|
+
static get local() {
|
|
187
|
+
return PlayerState._local;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Gets the PlayerState component for a given object or component
|
|
191
|
+
* @param obj Object3D or Component to find the PlayerState for
|
|
192
|
+
* @returns The PlayerState component if found, undefined otherwise
|
|
193
|
+
*/
|
|
194
|
+
static getFor(obj) {
|
|
195
|
+
if (obj instanceof Object3D) {
|
|
196
|
+
return GameObject.getComponentInParent(obj, PlayerState);
|
|
197
|
+
}
|
|
198
|
+
else if (obj instanceof Component) {
|
|
199
|
+
return GameObject.getComponentInParent(obj.gameObject, PlayerState);
|
|
200
|
+
}
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Checks if a given object or component belongs to the local player
|
|
205
|
+
* @param obj Object3D or Component to check
|
|
206
|
+
* @returns True if the object belongs to the local player, false otherwise
|
|
207
|
+
*/
|
|
208
|
+
static isLocalPlayer(obj) {
|
|
209
|
+
const state = PlayerState.getFor(obj);
|
|
210
|
+
return state?.isLocalPlayer ?? false;
|
|
211
|
+
}
|
|
212
|
+
static _callbacks = {};
|
|
213
|
+
/**
|
|
214
|
+
* Registers a callback for a specific PlayerState event
|
|
215
|
+
* @param event The event to listen for
|
|
216
|
+
* @param cb Callback function that will be invoked when the event occurs
|
|
217
|
+
* @returns The provided callback function for chaining
|
|
218
|
+
*/
|
|
219
|
+
static addEventListener(event, cb) {
|
|
220
|
+
if (!this._callbacks[event])
|
|
221
|
+
this._callbacks[event] = [];
|
|
222
|
+
this._callbacks[event].push(cb);
|
|
223
|
+
return cb;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Removes a previously registered event callback
|
|
227
|
+
* @param event The event type to remove the callback from
|
|
228
|
+
* @param cb The callback function to remove
|
|
229
|
+
*/
|
|
230
|
+
static removeEventListener(event, cb) {
|
|
231
|
+
if (!this._callbacks[event])
|
|
232
|
+
return;
|
|
233
|
+
const index = this._callbacks[event].indexOf(cb);
|
|
234
|
+
if (index >= 0)
|
|
235
|
+
this._callbacks[event].splice(index, 1);
|
|
236
|
+
}
|
|
237
|
+
static dispatchEvent(event, args) {
|
|
238
|
+
if (!this._callbacks[event])
|
|
239
|
+
return;
|
|
240
|
+
for (const cb of this._callbacks[event]) {
|
|
241
|
+
cb(args);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** Event triggered when the owner of this PlayerState changes */
|
|
245
|
+
onOwnerChangeEvent = new EventList();
|
|
246
|
+
/** Event triggered the first time an owner is assigned to this PlayerState */
|
|
247
|
+
onFirstOwnerChangeEvent = new EventList();
|
|
248
|
+
/** Indicates if this PlayerState has an owner assigned */
|
|
249
|
+
hasOwner = false;
|
|
250
|
+
/**
|
|
251
|
+
* The connection ID of the player who owns this PlayerState instance
|
|
252
|
+
* @syncField Synchronized across the network
|
|
253
|
+
*/
|
|
254
|
+
owner;
|
|
255
|
+
/**
|
|
256
|
+
* When enabled, PlayerState will not destroy itself when the owner is not connected anymore
|
|
257
|
+
*/
|
|
258
|
+
dontDestroy = false;
|
|
259
|
+
/**
|
|
260
|
+
* Indicates if this PlayerState belongs to the local player
|
|
261
|
+
*/
|
|
262
|
+
get isLocalPlayer() {
|
|
263
|
+
return this.owner === this.context.connection.connectionId;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Handles owner change events and updates relevant state
|
|
267
|
+
* @param newOwner The new owner's connection ID
|
|
268
|
+
* @param oldOwner The previous owner's connection ID
|
|
269
|
+
*/
|
|
270
|
+
onOwnerChange(newOwner, oldOwner) {
|
|
271
|
+
if (debug)
|
|
272
|
+
console.log(`PlayerSync.onOwnerChange: ${oldOwner} → ${newOwner} (me: ${this.context.connection.connectionId})`);
|
|
273
|
+
// Remove from local owner array if it was local before
|
|
274
|
+
const index = PlayerState._local.indexOf(this);
|
|
275
|
+
if (index >= 0)
|
|
276
|
+
PlayerState._local.splice(index, 1);
|
|
277
|
+
// Args to use for dispatching events
|
|
278
|
+
const detail = {
|
|
279
|
+
playerState: this,
|
|
280
|
+
oldValue: oldOwner,
|
|
281
|
+
newValue: newOwner
|
|
282
|
+
};
|
|
283
|
+
// call local events
|
|
284
|
+
if (!this.hasOwner) {
|
|
285
|
+
this.hasOwner = true;
|
|
286
|
+
this.onFirstOwnerChangeEvent?.invoke(detail);
|
|
287
|
+
}
|
|
288
|
+
this.onOwnerChangeEvent?.invoke(detail);
|
|
289
|
+
// call remote events
|
|
290
|
+
if (this.owner === this.context.connection.connectionId) {
|
|
291
|
+
PlayerState._local.push(this);
|
|
292
|
+
// console.warn(this.gameObject.guid, this.guid, this.owner, this.isLocalPlayer, PlayerState.isLocalPlayer(this));
|
|
293
|
+
const evt = new CustomEvent("local-owner-changed", { detail: detail });
|
|
294
|
+
this.dispatchEvent(evt);
|
|
295
|
+
}
|
|
296
|
+
const evt = new CustomEvent("owner-changed", { detail: detail });
|
|
297
|
+
this.dispatchEvent(evt);
|
|
298
|
+
PlayerState.dispatchEvent(PlayerStateEvent.OwnerChanged, evt);
|
|
299
|
+
}
|
|
300
|
+
/** @internal */
|
|
301
|
+
awake() {
|
|
302
|
+
PlayerState.all.push(this);
|
|
303
|
+
if (debug)
|
|
304
|
+
console.log("Registered new PlayerState", this.guid, PlayerState.all.length - 1, PlayerState.all);
|
|
305
|
+
this.context.connection.beginListen(RoomEvents.UserLeftRoom, this.onUserLeftRoom);
|
|
306
|
+
}
|
|
307
|
+
/** @internal */
|
|
308
|
+
async start() {
|
|
309
|
+
if (debug)
|
|
310
|
+
console.log("PLAYERSTATE.START, owner: " + this.owner, this.context.connection.usersInRoom([]));
|
|
311
|
+
// If a player is spawned but not in the room anymore we want to destroy it
|
|
312
|
+
// this might happen in a case where all users get disconnected at once and the server
|
|
313
|
+
// still has the syncInstantiate messages that are sent to all clients
|
|
314
|
+
if (this.owner) {
|
|
315
|
+
// a slight delay is necessary right now because the syncInstantiate call might has created this object already with the owner assigned but the user has not yet joined the room
|
|
316
|
+
if (!this.context.connection.isInRoom)
|
|
317
|
+
await delay(300);
|
|
318
|
+
if (this.context.connection.userIsInRoom(this.owner) == false) {
|
|
319
|
+
if (debug)
|
|
320
|
+
console.log(`PlayerSync.start → doDestroy \"${this.name}\" because user \"${this.owner}\" is not in room anymore...`, "Currently in room:", ...this.context.connection.usersInRoom());
|
|
321
|
+
this.doDestroy();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
else if (!this.owner) {
|
|
325
|
+
if (debug)
|
|
326
|
+
console.warn("PlayerState.start → owner is undefined!", this.name);
|
|
327
|
+
// we can delete it here immediately because it is not synced anymore or the owner has left the room
|
|
328
|
+
// we could also do this in a timeout and check if the owner is still not assigned after a second (but that would be a hack)
|
|
329
|
+
setTimeout(() => {
|
|
330
|
+
if (!this.destroyed && !this.owner) {
|
|
331
|
+
if (!this.dontDestroy) {
|
|
332
|
+
if (debug)
|
|
333
|
+
console.warn(`PlayerState.start → owner is still undefined: destroying \"${this.name}\" instance now`);
|
|
334
|
+
this.doDestroy();
|
|
335
|
+
}
|
|
336
|
+
else if (debug)
|
|
337
|
+
console.warn("PlayerState.start → owner is still undefined but dontDestroy is set to true", this.name);
|
|
338
|
+
}
|
|
339
|
+
else if (debug)
|
|
340
|
+
console.log("PlayerState.start → owner is assigned", this.owner);
|
|
341
|
+
}, 2000);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/** Tells the server that this client has been destroyed, and the networking message for the instantiate will be removed */
|
|
345
|
+
doDestroy() {
|
|
346
|
+
if (debug)
|
|
347
|
+
console.log("PlayerSync.doDestroy → syncDestroy", this.name);
|
|
348
|
+
syncDestroy(this.gameObject, this.context.connection, true, { saveInRoom: false });
|
|
349
|
+
}
|
|
350
|
+
/** @internal */
|
|
351
|
+
onDestroy() {
|
|
352
|
+
if (debug)
|
|
353
|
+
console.warn("PlayerState.onDestroy", this.owner);
|
|
354
|
+
this.context.connection.stopListen(RoomEvents.UserLeftRoom, this.onUserLeftRoom);
|
|
355
|
+
PlayerState.all.splice(PlayerState.all.indexOf(this), 1);
|
|
356
|
+
if (this.isLocalPlayer) {
|
|
357
|
+
const index = PlayerState._local.indexOf(this);
|
|
358
|
+
if (index >= 0)
|
|
359
|
+
PlayerState._local.splice(index, 1);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Handler for when a user leaves the networked room
|
|
364
|
+
* @param model Object containing the ID of the user who left
|
|
365
|
+
*/
|
|
366
|
+
onUserLeftRoom = (model) => {
|
|
367
|
+
if (model.userId === this.owner) {
|
|
368
|
+
if (debug)
|
|
369
|
+
console.log("PLAYERSYNC LEFT", this.owner);
|
|
370
|
+
this.doDestroy();
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
__decorate([
|
|
376
|
+
syncField(PlayerState.prototype.onOwnerChange)
|
|
377
|
+
], PlayerState.prototype, "owner", void 0);
|
|
378
378
|
//# sourceMappingURL=PlayerSync.js.map
|