@needle-tools/engine 4.4.1 → 4.4.2
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 +3671 -3667
- package/LICENSE.md +10 -10
- package/README.md +64 -64
- package/components.needle.json +1 -1
- package/dist/needle-engine.bundle.js +333 -219
- package/dist/needle-engine.bundle.light.js +333 -219
- package/dist/needle-engine.bundle.light.min.js +4 -4
- package/dist/needle-engine.bundle.light.umd.cjs +4 -4
- package/dist/needle-engine.bundle.min.js +4 -4
- package/dist/needle-engine.bundle.umd.cjs +4 -4
- package/dist/needle-engine.d.ts +130 -129
- package/dist/needle-engine.light.d.ts +130 -129
- 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 +81 -81
- package/lib/engine/api.js +80 -80
- 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 +166 -166
- package/lib/engine/engine_addressables.js +608 -608
- package/lib/engine/engine_animation.d.ts +43 -43
- package/lib/engine/engine_animation.js +133 -133
- package/lib/engine/engine_application.d.ts +40 -40
- package/lib/engine/engine_application.js +104 -104
- package/lib/engine/engine_assetdatabase.d.ts +25 -25
- package/lib/engine/engine_assetdatabase.js +344 -344
- 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 +382 -382
- 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 +472 -354
- package/lib/engine/engine_context.js +1653 -1536
- 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 +118 -118
- package/lib/engine/engine_create_objects.js +308 -308
- 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_element.d.ts +113 -113
- package/lib/engine/engine_element.js +832 -832
- package/lib/engine/engine_element_attributes.d.ts +72 -72
- package/lib/engine/engine_element_attributes.js +1 -1
- package/lib/engine/engine_element_extras.d.ts +6 -6
- package/lib/engine/engine_element_extras.js +13 -13
- package/lib/engine/engine_element_loading.d.ts +44 -44
- package/lib/engine/engine_element_loading.js +349 -349
- package/lib/engine/engine_element_overlay.d.ts +21 -21
- package/lib/engine/engine_element_overlay.js +166 -166
- 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 +596 -596
- 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 +7 -7
- package/lib/engine/engine_gltf_builtin_components.js +341 -341
- package/lib/engine/engine_hot_reload.d.ts +7 -7
- package/lib/engine/engine_hot_reload.js +184 -184
- package/lib/engine/engine_input.d.ts +352 -352
- package/lib/engine/engine_input.js +1265 -1265
- 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 +361 -361
- package/lib/engine/engine_lifecycle_api.d.ts +76 -76
- package/lib/engine/engine_lifecycle_api.js +99 -99
- 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 +91 -91
- package/lib/engine/engine_loaders.d.ts +13 -13
- package/lib/engine/engine_loaders.js +62 -62
- package/lib/engine/engine_lods.d.ts +31 -31
- package/lib/engine/engine_lods.js +146 -146
- 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 +252 -252
- package/lib/engine/engine_networking.js +743 -743
- 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_scenetools.d.ts +50 -50
- package/lib/engine/engine_scenetools.js +321 -321
- 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 +85 -85
- package/lib/engine/engine_serialization_core.js +606 -606
- 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 +201 -201
- package/lib/engine/engine_three_utils.js +731 -731
- 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 +2 -2
- package/lib/engine/engine_tonemapping.js +194 -194
- package/lib/engine/engine_types.d.ts +572 -572
- package/lib/engine/engine_types.js +88 -88
- 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 +266 -266
- package/lib/engine/engine_utils.js +878 -878
- package/lib/engine/engine_utils_format.d.ts +21 -21
- package/lib/engine/engine_utils_format.js +193 -193
- package/lib/engine/engine_utils_screenshot.d.ts +159 -159
- package/lib/engine/engine_utils_screenshot.js +513 -513
- 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 +31 -31
- package/lib/engine/extensions/extensions.js +103 -103
- 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 -110
- package/lib/engine/js-extensions/RGBAColor.js.map +1 -1
- 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 +76 -76
- 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 +39 -39
- package/lib/engine/webcomponents/buttons.js +237 -237
- 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/xr/NeedleXRController.d.ts +313 -313
- package/lib/engine/xr/NeedleXRController.js +1007 -1007
- package/lib/engine/xr/NeedleXRSession.d.ts +339 -339
- package/lib/engine/xr/NeedleXRSession.js +1427 -1427
- 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 +634 -634
- 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 +121 -121
- 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 +915 -915
- package/lib/engine-components/ContactShadows.d.ts +82 -82
- package/lib/engine-components/ContactShadows.js +430 -430
- 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 +630 -630
- 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 +266 -266
- package/lib/engine-components/OrbitControls.js +1011 -1011
- package/lib/engine-components/PlayerColor.d.ts +19 -19
- package/lib/engine-components/PlayerColor.js +94 -94
- package/lib/engine-components/ReflectionProbe.d.ts +27 -27
- package/lib/engine-components/ReflectionProbe.js +201 -201
- package/lib/engine-components/Renderer.d.ts +153 -153
- package/lib/engine-components/Renderer.js +830 -830
- 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 +972 -972
- 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 +82 -82
- package/lib/engine-components/Skybox.js +448 -448
- 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 +160 -160
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1782 -1782
- 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/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 +50 -50
- 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 +15 -15
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +92 -92
- 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 +175 -175
- package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +17 -17
- package/lib/engine-components/postprocessing/Effects/Sharpening.js +123 -123
- 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 +26 -26
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +138 -138
- 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 +72 -72
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +149 -149
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +25 -25
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +350 -350
- package/lib/engine-components/postprocessing/Volume.d.ts +89 -89
- package/lib/engine-components/postprocessing/Volume.js +367 -367
- 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 +5 -5
- package/lib/engine-components/postprocessing/index.js +5 -5
- package/lib/engine-components/postprocessing/utils.d.ts +11 -11
- package/lib/engine-components/postprocessing/utils.js +37 -37
- 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 +764 -764
- 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 +470 -470
- 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 +351 -351
- 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 +1 -1
- 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 +405 -365
- 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 +18 -18
- package/plugins/next/meshbvhworker.cjs +18 -18
- package/plugins/next/next.js +128 -128
- 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/userconfig.d.ts +113 -110
- package/plugins/types/webmanifest.d.ts +32 -32
- package/plugins/vite/alias.js +174 -174
- package/plugins/vite/asap.js +245 -245
- package/plugins/vite/build-pipeline.js +355 -355
- 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 +68 -66
- package/plugins/vite/dependencies.js +232 -223
- package/plugins/vite/dependency-watcher.js +231 -231
- 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 +139 -139
- package/plugins/vite/license.js +56 -55
- 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 +363 -363
- package/plugins/vite/server.js +66 -66
- package/plugins/vite/transform-codegen.js +55 -55
- package/plugins/vite/transform.js +31 -31
- 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 +81 -81
- 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 +680 -680
- package/src/engine/engine_animation.ts +145 -145
- package/src/engine/engine_application.ts +113 -113
- package/src/engine/engine_assetdatabase.ts +387 -387
- package/src/engine/engine_audio.ts +24 -24
- package/src/engine/engine_camera.ts +39 -39
- package/src/engine/engine_components.ts +374 -374
- package/src/engine/engine_components_internal.ts +40 -40
- package/src/engine/engine_constants.ts +52 -52
- package/src/engine/engine_context.ts +1798 -1686
- package/src/engine/engine_context_registry.ts +129 -129
- package/src/engine/engine_coroutine.ts +54 -54
- package/src/engine/engine_create_objects.ts +398 -398
- package/src/engine/engine_default_parameters.ts +3 -3
- package/src/engine/engine_editor-sync.ts +28 -28
- package/src/engine/engine_element.ts +872 -872
- package/src/engine/engine_element_attributes.ts +85 -85
- package/src/engine/engine_element_extras.ts +16 -16
- package/src/engine/engine_element_loading.ts +381 -381
- package/src/engine/engine_element_overlay.ts +186 -186
- package/src/engine/engine_fileloader.js +9 -9
- package/src/engine/engine_gameobject.ts +691 -691
- 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 +198 -198
- package/src/engine/engine_input.ts +1460 -1460
- package/src/engine/engine_input_utils.ts +23 -23
- package/src/engine/engine_instancing.ts +45 -45
- package/src/engine/engine_license.ts +378 -378
- package/src/engine/engine_lifecycle_api.ts +106 -106
- package/src/engine/engine_lifecycle_functions_internal.ts +193 -193
- package/src/engine/engine_lightdata.ts +117 -117
- package/src/engine/engine_loaders.ts +82 -82
- package/src/engine/engine_lods.ts +168 -168
- 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 +841 -841
- 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_scenetools.ts +365 -365
- 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 +710 -710
- 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 +849 -849
- package/src/engine/engine_time.ts +94 -94
- package/src/engine/engine_time_utils.ts +237 -237
- package/src/engine/engine_tonemapping.ts +210 -210
- package/src/engine/engine_types.ts +714 -714
- package/src/engine/engine_typestore.ts +63 -63
- package/src/engine/engine_util_decorator.ts +136 -136
- package/src/engine/engine_utils.ts +972 -972
- package/src/engine/engine_utils_format.ts +212 -212
- package/src/engine/engine_utils_screenshot.ts +698 -698
- 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 +135 -135
- 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 -125
- 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 +122 -122
- 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 +262 -262
- 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/xr/NeedleXRController.ts +1125 -1125
- package/src/engine/xr/NeedleXRSession.ts +1585 -1585
- 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 +136 -136
- package/src/engine-components/CharacterController.ts +253 -253
- package/src/engine-components/Collider.ts +374 -374
- package/src/engine-components/Component.ts +1294 -1294
- package/src/engine-components/ContactShadows.ts +482 -482
- 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 +698 -698
- 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 +1069 -1069
- package/src/engine-components/PlayerColor.ts +103 -103
- package/src/engine-components/ReflectionProbe.ts +216 -216
- package/src/engine-components/Renderer.ts +900 -900
- 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 +455 -455
- 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 +2413 -2413
- 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/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 +55 -55
- 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 +95 -95
- 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 +191 -191
- package/src/engine-components/postprocessing/Effects/Sharpening.ts +138 -138
- package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +61 -61
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +155 -155
- package/src/engine-components/postprocessing/Effects/Vignette.ts +59 -59
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +172 -172
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +398 -398
- package/src/engine-components/postprocessing/Volume.ts +410 -410
- 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 +52 -52
- 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 +853 -853
- 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 +518 -518
- 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 +374 -374
- 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/lib/engine/engine.d.ts +0 -4
- package/lib/engine/engine.js +0 -12
- package/lib/engine/engine.js.map +0 -1
- package/lib/engine/engine_web_api.d.ts +0 -12
- package/lib/engine/engine_web_api.js +0 -113
- package/lib/engine/engine_web_api.js.map +0 -1
- package/lib/engine-components/FlyControls.d.ts +0 -10
- package/lib/engine-components/FlyControls.js +0 -29
- package/lib/engine-components/FlyControls.js.map +0 -1
- 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
|
@@ -130,8 +130,8 @@ Open this page to get the console: `+t.toString())}const n=Q.isMobileDevice()||Q
|
|
|
130
130
|
#__vconsole .vc-mask {
|
|
131
131
|
overflow: hidden;
|
|
132
132
|
}
|
|
133
|
-
`,Gi?.prepend(s),n===!0&&jm()<=0&&rb(),console.log("\u{1F335} Debug console has loaded")}},t.onerror=()=>{console.warn("\u{1F335} Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),rc=!1,ri=null},t.src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js",document.body.appendChild(t)}function SP(){if(!globalThis.VConsole)return;const n=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),t=()=>document.querySelector("#__vc_plug_"+n._id+" iframe");return n.on("renderTab",function(i){const s=globalThis["needle:codegen_files"];if(!s||s.length===0)return;let o=globalThis["needle:codegen_files"][0];const r=o.indexOf("?");r>-1&&(o=o.substring(0,r));const l=location.protocol+"//"+location.host+location.pathname+"/"+o,c=encodeURIComponent(l);n.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';i(h)}),n.on("show",function(){const i=t();i&&i.src!==n.fullUrl&&(i.src=n.fullUrl)}),n.on("hide",function(){const i=t();i&&(i.src="")}),n.on("addTopBar",function(i){var s=new Array;s.push({name:"Open in new window \u2197",onClick:function(o){window.open(n.fullUrl,"_blank"),ri?.hide()}}),s.push({name:"Reload",onClick:function(o){const r=t();r&&(r.src=n.fullUrl)}}),s.push({name:"Fullscreen",onClick:function(o){const r=t();r.requestFullscreen?r.requestFullscreen():r.webkitRequestFullscreen instanceof Function&&r.webkitRequestFullscreen()}}),i(s)}),n}function CP(){return document.querySelector("#__vconsole .vc-switch")||null}function OP(){return document.querySelector("#__vconsole")||null}const hb=C("debugdefines");go('if(!globalThis[""4.4.
|
|
134
|
-
Project built at ${eg}`);const lc="npk_74222a9fbd1b42572cdd3bf7f639eeb17a07d07f40a6185fac5f722e8fd34df9",xs="needle_isActiveInHierarchy",pr="builtin_components",cc="needle_editor_guid";function go(n){try{(0,eval)(n)}catch(t){hb&&console.error(t)}}const PP='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 160 187.74"><defs><linearGradient id="a" x1="89.64" y1="184.81" x2="90.48" y2="21.85" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#62d399"/><stop offset=".51" stop-color="#acd842"/><stop offset=".9" stop-color="#d7db0a"/></linearGradient><linearGradient id="b" x1="69.68" y1="178.9" x2="68.08" y2="16.77" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0ba398"/><stop offset=".5" stop-color="#4ca352"/><stop offset="1" stop-color="#76a30a"/></linearGradient><linearGradient id="c" x1="36.6" y1="152.17" x2="34.7" y2="84.19" gradientUnits="userSpaceOnUse"><stop offset=".19" stop-color="#36a382"/><stop offset=".54" stop-color="#49a459"/><stop offset="1" stop-color="#76a30b"/></linearGradient><linearGradient id="d" x1="15.82" y1="153.24" x2="18" y2="90.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#267880"/><stop offset=".51" stop-color="#457a5c"/><stop offset="1" stop-color="#717516"/></linearGradient><linearGradient id="e" x1="135.08" y1="135.43" x2="148.93" y2="63.47" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b0d939"/><stop offset="1" stop-color="#eadb04"/></linearGradient><linearGradient id="f" x1="-4163.25" y1="2285.12" x2="-4160.81" y2="2215.34" gradientTransform="rotate(20 4088.49 13316.712)" gradientUnits="userSpaceOnUse"><stop offset=".17" stop-color="#74af52"/><stop offset=".48" stop-color="#99be32"/><stop offset="1" stop-color="#c0c40a"/></linearGradient><symbol id="g" viewBox="0 0 160 187.74"><path style="fill:url(#a)" d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75z"/><path style="fill:url(#b)" d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98z"/><path style="fill:url(#c)" d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z"/><path style="fill:url(#d)" d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04z"/><path style="fill:#9c3" d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5z"/><path style="fill:url(#e)" d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59z"/><path style="fill:url(#f)" d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z"/><path style="fill:#ffe113" d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1z"/><path style="fill:#f3e600" d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75z"/></symbol></defs><use width="160" height="187.74" xlink:href="#g"/></svg>',kP=btoa(PP),MP="data:image/svg+xml;base64,"+kP,RP=MP,TP=`<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 1014 282" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m665.95 132.73v44.88l-10.56-8.4c-0.8-0.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18 0.4-6.06 1.2s-3.54 1.8-4.98 3-2.56 2.5-3.36 3.9-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c0.32 0.24 0.56 0.44 0.72 0.6s0.36 0.32 0.6 0.48c0.96-1.2 2.14-2.28 3.54-3.24s2.92-1.76 4.56-2.4 3.34-1.14 5.1-1.5 3.44-0.54 5.04-0.54c1.44 0 2.92 0.04 4.44 0.12s2.84 0.28 3.96 0.6c4.56 1.12 7.8 3.12 9.72 6s2.88 6.56 2.88 11.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m732.38 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m795.93 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m858.57 97.21c0.64 0.48 0.96 1.16 0.96 2.04v74.88c-0.08 1.04-0.12 2.12-0.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18s-2.06-1.66-2.46-1.98c-1.76 2.48-4.26 4.44-7.5 5.88s-7.02 2.16-11.34 2.16c-3.84 0-7.4-0.7-10.68-2.1s-6.14-3.44-8.58-6.12-4.34-5.94-5.7-9.78-2.04-8.16-2.04-12.96c0-4.32 0.78-8.34 2.34-12.06s3.6-6.92 6.12-9.6 5.38-4.78 8.58-6.3 6.48-2.28 9.84-2.28c2.56 0 4.82 0.22 6.78 0.66s3.68 1.06 5.16 1.86 2.78 1.74 3.9 2.82 2.16 2.22 3.12 3.42v-35.04l10.68 8.64zm-27.96 67.92c3.6 0 6.52-0.68 8.76-2.04s3.98-3.06 5.22-5.1 2.1-4.22 2.58-6.54 0.72-4.44 0.72-6.36v-1.2c0-1.12-0.22-2.7-0.66-4.74s-1.28-4.06-2.52-6.06-3-3.7-5.28-5.1-5.22-2.02-8.82-1.86c-3.44 0-6.26 0.74-8.46 2.22s-3.96 3.26-5.28 5.34-2.24 4.2-2.76 6.36-0.78 3.92-0.78 5.28c0 1.84 0.24 3.92 0.72 6.24s1.36 4.48 2.64 6.48 3.04 3.68 5.28 5.04 5.12 2.04 8.64 2.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m882.81 97.09c0.64 0.48 0.96 1.12 0.96 1.92l-0.12 41.04v37.08l-10.56-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-77.88l10.8 8.64z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m950.36 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.8559 0 0 .7642 45.348 36.475)"> <g transform="translate(2.7114)"> <path d="m3.935 173.02c-0.331 0-0.497-0.402-0.497-1.207v-51.002c0-0.738 0.138-1.107 0.414-1.107h1.781c0.277 0 0.415 0.335 0.415 1.006v5.935c0 0.336 0.027 0.553 0.083 0.654 0.055 0.101 0.151-0.017 0.289-0.352 0.912-1.744 1.754-3.236 2.527-4.477 0.773-1.24 1.554-2.179 2.341-2.816s1.65-0.956 2.588-0.956c1.685 0 3.011 0.922 3.977 2.766 0.967 1.845 1.602 3.84 1.905 5.986 0.056 0.268 0.139 0.369 0.249 0.302s0.221-0.235 0.331-0.503c0.939-1.811 1.802-3.353 2.589-4.628 0.787-1.274 1.581-2.246 2.382-2.917s1.671-1.006 2.61-1.006c2.016 0 3.569 1.392 4.66 4.175 1.09 2.783 1.636 6.421 1.636 10.915v37.925c0 0.871-0.18 1.307-0.539 1.307h-1.739c-0.138 0-0.249-0.1-0.332-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.338-6.321-1.015-8.3-0.676-1.978-1.76-2.967-3.251-2.967-0.884 0-1.726 0.386-2.527 1.157s-1.519 1.727-2.154 2.867-1.201 2.213-1.699 3.219c-0.248 0.469-0.421 0.905-0.517 1.308-0.097 0.402-0.145 0.972-0.145 1.71v37.221c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.166 0-0.29-0.1-0.373-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.332-6.321-0.994-8.3-0.663-1.978-1.754-2.967-3.273-2.967-1.242 0-2.375 0.704-3.396 2.112-1.022 1.409-2.223 3.555-3.604 6.439v39.031c0 0.805-0.18 1.207-0.539 1.207h-1.698z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m53.642 166.28c-1.077 2.549-2.237 4.477-3.479 5.785-1.243 1.307-2.61 1.961-4.101 1.961-2.154 0-3.853-1.324-5.095-3.973-1.243-2.649-1.864-6.187-1.864-10.613 0-3.488 0.4-6.489 1.201-9.004s1.988-4.51 3.562-5.985c1.574-1.476 3.521-2.414 5.841-2.817l3.686-0.704c0.221-0.067 0.394-0.218 0.518-0.453 0.124-0.234 0.187-0.587 0.187-1.056v-2.917c0-3.89-0.504-6.975-1.512-9.255s-2.354-3.42-4.039-3.42c-1.298 0-2.472 0.72-3.521 2.162s-2.002 3.572-2.858 6.388c-0.083 0.268-0.159 0.453-0.228 0.554-0.069 0.1-0.172 0.083-0.311-0.051l-1.698-1.71c-0.083-0.134-0.138-0.285-0.166-0.453-0.027-0.167 0.014-0.452 0.125-0.855 0.856-3.353 2.009-6.052 3.459-8.098 1.449-2.045 3.224-3.068 5.322-3.068 1.74 0 3.211 0.687 4.412 2.062s2.112 3.37 2.734 5.986c0.621 2.615 0.932 5.7 0.932 9.255v35.712c0 0.536-0.035 0.888-0.104 1.056s-0.2 0.251-0.393 0.251h-1.533c-0.166 0-0.29-0.117-0.373-0.352-0.083-0.234-0.124-0.553-0.124-0.955l-0.083-5.231c-0.055-0.939-0.221-1.006-0.497-0.202zm0.456-19.314c0-1.14-0.194-1.643-0.58-1.509l-3.107 0.603c-1.436 0.202-2.686 0.638-3.749 1.308-1.063 0.671-1.953 1.543-2.671 2.616s-1.257 2.33-1.616 3.772-0.538 3.102-0.538 4.98c0 3.152 0.455 5.616 1.367 7.393 0.911 1.778 2.14 2.666 3.686 2.666 0.939 0 1.85-0.419 2.734-1.257s1.671-1.895 2.361-3.169c0.663-1.408 1.181-2.85 1.553-4.326 0.373-1.475 0.56-2.883 0.56-4.225v-8.852z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m79.034 173.02c-0.166 0-0.297-0.117-0.394-0.352-0.096-0.234-0.145-0.553-0.145-0.955v-4.628c0-0.536-0.041-0.838-0.124-0.905s-0.207 0.1-0.373 0.503c-0.276 0.67-0.69 1.593-1.242 2.766-0.553 1.174-1.271 2.23-2.154 3.169-0.884 0.939-1.961 1.408-3.231 1.408-1.74 0-3.314-0.989-4.722-2.967-1.409-1.979-2.534-4.963-3.376-8.953-0.843-3.991-1.264-8.937-1.264-14.838 0-5.701 0.415-10.68 1.243-14.939s1.988-7.595 3.479-10.009c1.492-2.415 3.204-3.622 5.137-3.622 1.436 0 2.616 0.57 3.541 1.71 0.926 1.14 1.719 2.381 2.382 3.722 0.249 0.47 0.414 0.637 0.497 0.503s0.125-0.536 0.125-1.207v-23.841c0-0.805 0.151-1.208 0.455-1.208h1.864c0.276 0 0.414 0.369 0.414 1.107v72.128c0 0.537-0.041 0.905-0.124 1.107-0.083 0.201-0.235 0.301-0.455 0.301h-1.533zm-0.621-42.049c-0.939-2.213-1.885-3.94-2.838-5.181s-2.009-1.861-3.169-1.861c-1.463 0-2.768 0.889-3.914 2.666s-2.044 4.376-2.693 7.796-0.973 7.578-0.973 12.474c0 5.097 0.338 9.272 1.015 12.524 0.676 3.253 1.567 5.651 2.672 7.193 1.104 1.543 2.305 2.314 3.603 2.314 1.188 0 2.258-0.704 3.211-2.113 0.952-1.408 1.705-3.118 2.257-5.13s0.829-3.957 0.829-5.835v-24.847z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m89.514 149.38c0 3.42 0.345 6.606 1.035 9.557 0.691 2.951 1.609 5.315 2.755 7.092s2.437 2.666 3.873 2.666c1.519 0 2.837-0.738 3.956-2.213 1.118-1.476 2.064-3.655 2.837-6.539 0.083-0.336 0.166-0.52 0.249-0.554 0.083-0.033 0.179 0.017 0.29 0.151l1.408 1.912c0.221 0.268 0.235 0.67 0.041 1.207-0.69 2.548-1.47 4.661-2.34 6.337-0.87 1.677-1.857 2.935-2.962 3.773-1.104 0.838-2.319 1.257-3.645 1.257-2.043 0-3.838-1.14-5.385-3.42-1.546-2.28-2.761-5.482-3.645-9.607-0.884-4.124-1.325-8.836-1.325-14.134 0-5.901 0.455-10.931 1.367-15.089 0.911-4.158 2.14-7.377 3.686-9.658 1.547-2.28 3.3-3.42 5.261-3.42 1.988 0 3.714 1.073 5.178 3.219 1.463 2.146 2.595 5.231 3.396 9.255s1.201 8.886 1.201 14.587c0 0.469-0.02 0.939-0.062 1.408-0.041 0.469-0.214 0.704-0.517 0.704h-16.362c-0.083 0-0.152 0.151-0.207 0.453-0.056 0.302-0.083 0.654-0.083 1.056zm13.752-6.237c0.304 0 0.497-0.1 0.58-0.302 0.083-0.201 0.124-0.57 0.124-1.106 0-3.219-0.283-6.187-0.849-8.903s-1.367-4.896-2.402-6.539c-1.036-1.643-2.272-2.464-3.708-2.464-1.629 0-2.996 0.955-4.101 2.867-1.104 1.911-1.94 4.342-2.506 7.293s-0.849 6.002-0.849 9.154h13.711z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m148.54 119.7c0.165 0 0.283 0.117 0.352 0.352s0.076 0.52 0.02 0.855l-6.254 50.902c-0.028 0.47-0.104 0.788-0.228 0.956s-0.297 0.251-0.518 0.251h-1.615c-0.442 0-0.718-0.402-0.829-1.207l-5.26-40.138c-0.111-0.604-0.201-0.905-0.27-0.905s-0.131 0.301-0.186 0.905l-5.012 40.138c-0.028 0.47-0.097 0.788-0.207 0.956-0.111 0.168-0.277 0.251-0.497 0.251h-1.74c-0.442 0-0.718-0.402-0.829-1.207l-6.503-50.801c-0.055-0.403-0.048-0.721 0.021-0.956s0.2-0.352 0.393-0.352h1.823c0.166 0 0.297 0.067 0.393 0.201 0.097 0.134 0.159 0.403 0.187 0.805l5.302 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.219-41.949c0.055-0.268 0.124-0.47 0.207-0.604s0.193-0.201 0.331-0.201h1.533c0.138 0 0.262 0.067 0.373 0.201 0.11 0.134 0.179 0.403 0.207 0.805l5.468 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.053-41.849c0.055-0.335 0.138-0.57 0.249-0.704 0.11-0.134 0.234-0.201 0.373-0.201h1.284z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m156.49 171.51c0 0.604-0.042 1.006-0.125 1.208-0.082 0.201-0.262 0.301-0.538 0.301h-1.533c-0.221 0-0.366-0.083-0.435-0.251s-0.103-0.486-0.103-0.956v-50.902c0-0.805 0.152-1.207 0.456-1.207h1.822c0.304 0 0.456 0.402 0.456 1.207v50.6zm0.165-63.979c0 1.207-0.207 1.811-0.621 1.811h-1.905c-0.221 0-0.366-0.135-0.435-0.403s-0.104-0.67-0.104-1.207v-7.847c0-1.006 0.18-1.509 0.539-1.509h1.988c0.359 0 0.538 0.47 0.538 1.409v7.746z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m168.3 124.83c-0.221 0-0.331 0.269-0.331 0.805v33.801c0 3.42 0.221 5.667 0.663 6.74 0.441 1.073 1.09 1.609 1.946 1.609h3.024c0.138 0 0.242 0.084 0.311 0.252 0.069 0.167 0.103 0.419 0.103 0.754v2.716c0 0.537-0.138 0.906-0.414 1.107-0.248 0.067-0.614 0.134-1.098 0.201-0.483 0.067-0.959 0.118-1.429 0.151-0.469 0.034-0.828 0.05-1.077 0.05-1.712 0-2.934-0.955-3.665-2.867-0.732-1.911-1.098-5.013-1.098-9.305v-35.108c0-0.604-0.124-0.906-0.373-0.906h-3.521c-0.248 0-0.373-0.268-0.373-0.804v-3.521c0-0.537 0.111-0.805 0.332-0.805h3.686c0.166 0 0.263-0.268 0.29-0.805l0.415-16.095c0-0.805 0.124-1.207 0.372-1.207h1.492c0.303 0 0.455 0.436 0.455 1.307v15.995c0 0.537 0.097 0.805 0.29 0.805h5.468c0.221 0 0.331 0.268 0.331 0.805v3.521c0 0.536-0.124 0.804-0.373 0.804h-5.426z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m179.4 173.02c-0.331 0-0.497-0.402-0.497-1.207v-72.329c0-0.738 0.138-1.107 0.414-1.107h1.782c0.276 0 0.414 0.336 0.414 1.006v27.162c0 0.335 0.034 0.536 0.103 0.603s0.159-0.033 0.27-0.302c0.994-1.81 1.898-3.319 2.713-4.526 0.814-1.208 1.629-2.113 2.444-2.717 0.814-0.603 1.691-0.905 2.63-0.905 2.182 0 3.839 1.375 4.971 4.125 1.132 2.749 1.698 6.404 1.698 10.965v37.925c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.165 0-0.29-0.1-0.373-0.301-0.082-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.366-6.321-1.097-8.3-0.732-1.978-1.899-2.967-3.501-2.967-0.883 0-1.705 0.318-2.464 0.956-0.76 0.637-1.526 1.576-2.299 2.816-0.773 1.241-1.643 2.834-2.61 4.779v39.031c0 0.805-0.179 1.207-0.538 1.207h-1.699z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> </g> <g transform="matrix(.80638 0 0 .80638 452.53 65.421)" fill-rule="nonzero"> <path d="m79.32 36.98v150.76l15.68-13.2 6.59-156.31-22.27 18.75z" fill="url(#f)"/> <path d="m79.32 36.98-22.27-18.75 6.59 156.31 15.68 13.2v-150.76z" fill="url(#e)"/> <path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z" fill="url(#d)"/> <path d="m25.19 104.83-25.19-14.59 16.97 53.86 16.85 9.77-8.63-49.04z" fill="url(#c)"/> <path d="M43.86,82.5L18.69,67.98L0,90.24L25.18,104.83L43.86,82.5Z" fill="#9c3"/> <path d="m134.82 78.69-9.97 56.5 15.58-9.04 19.57-62.05-25.18 14.59z" fill="url(#b)"/> <path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z" fill="url(#a)"/> <path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33 25.19-14.59z" fill="#ffe113"/> <path d="M101.59,18.23L79.32,0L57.05,18.23L79.32,36.98L101.59,18.23Z" fill="#f3e600"/> </g> <defs> <linearGradient id="f" x2="1" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)" gradientUnits="userSpaceOnUse"><stop stop-color="#62d399" offset="0"/><stop stop-color="#acd842" offset=".51"/><stop stop-color="#d7db0a" offset=".9"/><stop stop-color="#d7db0a" offset="1"/></linearGradient> <linearGradient id="e" x2="1" gradientTransform="matrix(-1.6,-162.13,162.13,-1.6,69.68,178.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#0ba398" offset="0"/><stop stop-color="#4ca352" offset=".5"/><stop stop-color="#76a30a" offset="1"/></linearGradient> <linearGradient id="d" x2="1" gradientTransform="matrix(-1.9,-67.98,67.98,-1.9,36.6,152.17)" gradientUnits="userSpaceOnUse"><stop stop-color="#36a382" offset="0"/><stop stop-color="#36a382" offset=".19"/><stop stop-color="#49a459" offset=".54"/><stop stop-color="#76a30b" offset="1"/></linearGradient> <linearGradient id="c" x2="1" gradientTransform="matrix(2.18,-62.38,62.38,2.18,15.82,153.24)" gradientUnits="userSpaceOnUse"><stop stop-color="#267880" offset="0"/><stop stop-color="#457a5c" offset=".51"/><stop stop-color="#717516" offset="1"/></linearGradient> <linearGradient id="b" x2="1" gradientTransform="matrix(13.85,-71.96,71.96,13.85,135.08,135.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#b0d939" offset="0"/><stop stop-color="#eadb04" offset="1"/></linearGradient> <linearGradient id="a" x2="1" gradientTransform="matrix(26.159 -64.737 64.737 26.159 107.42 128.14)" gradientUnits="userSpaceOnUse"><stop stop-color="#74af52" offset="0"/><stop stop-color="#74af52" offset=".17"/><stop stop-color="#99be32" offset=".48"/><stop stop-color="#c0c40a" offset="1"/></linearGradient> </defs> </svg>`;btoa(TP);const EP='<svg viewBox="0 0 509 154" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M665.95 132.73v44.88l-10.56-8.4c-.8-.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18.4-6.06 1.2-1.88.8-3.54 1.8-4.98 3-1.44 1.2-2.56 2.5-3.36 3.9-.8 1.4-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-.72-.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c.32.24.56.44.72.6.16.16.36.32.6.48.96-1.2 2.14-2.28 3.54-3.24 1.4-.96 2.92-1.76 4.56-2.4 1.64-.64 3.34-1.14 5.1-1.5 1.76-.36 3.44-.54 5.04-.54 1.44 0 2.92.04 4.44.12 1.52.08 2.84.28 3.96.6 4.56 1.12 7.8 3.12 9.72 6 1.92 2.88 2.88 6.56 2.88 11.04ZM732.38 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM795.93 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM858.57 97.21c.64.48.96 1.16.96 2.04v74.88c-.08 1.04-.12 2.12-.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18-1.24-1-2.06-1.66-2.46-1.98-1.76 2.48-4.26 4.44-7.5 5.88-3.24 1.44-7.02 2.16-11.34 2.16-3.84 0-7.4-.7-10.68-2.1-3.28-1.4-6.14-3.44-8.58-6.12-2.44-2.68-4.34-5.94-5.7-9.78-1.36-3.84-2.04-8.16-2.04-12.96 0-4.32.78-8.34 2.34-12.06 1.56-3.72 3.6-6.92 6.12-9.6 2.52-2.68 5.38-4.78 8.58-6.3 3.2-1.52 6.48-2.28 9.84-2.28 2.56 0 4.82.22 6.78.66 1.96.44 3.68 1.06 5.16 1.86s2.78 1.74 3.9 2.82a35.92 35.92 0 0 1 3.12 3.42V88.57l10.68 8.64Zm-27.96 67.92c3.6 0 6.52-.68 8.76-2.04 2.24-1.36 3.98-3.06 5.22-5.1a20.5 20.5 0 0 0 2.58-6.54c.48-2.32.72-4.44.72-6.36v-1.2c0-1.12-.22-2.7-.66-4.74-.44-2.04-1.28-4.06-2.52-6.06s-3-3.7-5.28-5.1c-2.28-1.4-5.22-2.02-8.82-1.86-3.44 0-6.26.74-8.46 2.22-2.2 1.48-3.96 3.26-5.28 5.34-1.32 2.08-2.24 4.2-2.76 6.36-.52 2.16-.78 3.92-.78 5.28 0 1.84.24 3.92.72 6.24.48 2.32 1.36 4.48 2.64 6.48s3.04 3.68 5.28 5.04c2.24 1.36 5.12 2.04 8.64 2.04ZM882.81 97.09c.64.48.96 1.12.96 1.92l-.12 41.04v37.08l-10.56-8.4c-.72-.64-1.08-1.44-1.08-2.4V88.45l10.8 8.64ZM950.36 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14Z" style="fill-rule:nonzero" transform="translate(-452.406 -63.709) scale(1.00797)"/><path d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75Z" style="fill:url(#a);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98Z" style="fill:url(#b);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33Z" style="fill:url(#c);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04Z" style="fill:url(#d);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5Z" style="fill:#9c3;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59Z" style="fill:url(#e);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5Z" style="fill:url(#f);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1Z" style="fill:#ffe113;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75Z" style="fill:#f3e600;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)"><stop offset="0" style="stop-color:#62d399;stop-opacity:1"/><stop offset=".51" style="stop-color:#acd842;stop-opacity:1"/><stop offset=".9" style="stop-color:#d7db0a;stop-opacity:1"/><stop offset="1" style="stop-color:#d7db0a;stop-opacity:1"/></linearGradient><linearGradient id="b" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90.565 123.412 54.953) scale(162.14)"><stop offset="0" style="stop-color:#0ba398;stop-opacity:1"/><stop offset=".5" style="stop-color:#4ca352;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30a;stop-opacity:1"/></linearGradient><linearGradient id="c" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(-68) rotate(88.4 .881 -1.396)"><stop offset="0" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".19" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".54" style="stop-color:#49a459;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30b;stop-opacity:1"/></linearGradient><linearGradient id="d" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-88 87.255 68.431) scale(62.42)"><stop offset="0" style="stop-color:#267880;stop-opacity:1"/><stop offset=".51" style="stop-color:#457a5c;stop-opacity:1"/><stop offset="1" style="stop-color:#717516;stop-opacity:1"/></linearGradient><linearGradient id="e" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-79.1 149.53 -14.065) scale(73.28)"><stop offset="0" style="stop-color:#b0d939;stop-opacity:1"/><stop offset="1" style="stop-color:#eadb04;stop-opacity:1"/></linearGradient><linearGradient id="f" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-67.997 148.705 -15.558) scale(69.8226)"><stop offset="0" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".17" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".48" style="stop-color:#99be32;stop-opacity:1"/><stop offset="1" style="stop-color:#c0c40a;stop-opacity:1"/></linearGradient></defs></svg>',AP=btoa(EP),IP="data:image/svg+xml;charset=utf-8;base64,"+AP,jP=IP,ki=Symbol("shadowDomOwner"),LP=C("debugpatch");function Pd(n,t,i,s){const o=LP===t;if(!i&&!s)return;const r=t+"___needle";BP(n,t,i,s);const l=Object.getOwnPropertyDescriptor(n,t),c=n[t];o&&console.log("Patch",n.constructor.name,t,l,c),l?(o&&console.log("Apply patch with existing descriptor",n.constructor.name,t,l),typeof l.value=="function"&&(n[t]=ub(l.value,n,t))):(o&&console.log("Create patch with new property",n.constructor.name,t,l),Object.defineProperty(n,t,{set:function(h){if(typeof h=="function")this[r]=ub(h,n,t);else{const d=this[r];pb(n,t,this,d,h),this[r]=h,mb(n,t,this,d,h)}},get:function(){const h=this[r];return typeof h=="function"&&h[r]?h[r]:h}}))}function DP(n,t,i){const s=ig(n,t);if(s)for(let o=s.length-1;o>=0;o--){const r=s[o];r.prefix===i&&(r.prefix=null),r.postfix===i&&(r.postfix=null),!r.prefix&&!r.postfix&&s.splice(o,1)}}const db=Symbol("Needle:Patches:WrappedFunction");function ub(n,t,i){if(n[db])return n;const s=function(...o){pb(t,i,this,...o);const r=n.apply(this,o);return mb(t,i,this,r,...o),r};return s[db]=!0,s}const kd="Needle:Patches";function tg(){return globalThis[kd]||(globalThis[kd]=new WeakMap),globalThis[kd]}function ig(n,t){const i=tg().get(n);return i?i.get(t):null}function BP(n,t,i,s){let o=tg().get(n);o||(o=new Map,tg().set(n,o));let r=o.get(t);r||(r=[],o.set(t,r)),r.push({prefix:i,postfix:s})}function pb(n,t,i,...s){var o;if(!i)return;const r=ig(n,t);if(r)for(const l of r)(o=l.prefix)==null||o.call(i,...s)}function mb(n,t,i,s,...o){var r;if(!i)return;const l=ig(n,t);if(l)for(const c of l)(r=c.postfix)==null||r.call(i,s,...o)}const Sa=[];function Md(n){Sa.indexOf(n)===-1&&Sa.push(n)}function FP(n){const t=Sa.indexOf(n);t!==-1&&Sa.splice(t,1)}const Ca=[];function ng(n){Ca.indexOf(n)===-1&&Ca.push(n)}function zP(n){const t=Ca.indexOf(n);t!==-1&&Ca.splice(t,1)}function gb(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-start",{detail:n}));for(let t=0;t<Sa.length;t++)Sa[t](n)}function fb(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-end",{detail:n}));for(let t=0;t<Ca.length;t++)Ca[t](n)}const dt=C("debuginput");var Rd=(n=>(n.Mouse="mouse",n.Touch="touch",n.Controller="controller",n.Hand="hand",n))(Rd||{}),Fe=(n=>(n.PointerDown="pointerdown",n.PointerUp="pointerup",n.PointerMove="pointermove",n.KeyDown="keydown",n.KeyUp="keyup",n.KeyPressed="keypress",n))(Fe||{});class Ss extends PointerEvent{constructor(t,i,s){super(t,s),a(this,"clientZ"),a(this,"deviceIndex"),a(this,"origin"),a(this,"source"),a(this,"mode"),a(this,"_ray"),a(this,"space"),a(this,"isClick",!1),a(this,"isDoubleClick",!1),a(this,"_used",!1),a(this,"_pointerid"),a(this,"_pointerType"),a(this,"_type"),a(this,"metadata",{}),a(this,"intersections",new Array),a(this,"_immediatePropagationStopped",!1),a(this,"_propagationStopped",!1),this.clientZ=s.clientZ,this._pointerid=s.pointerId,this._pointerType=s.pointerType,this._type=t,this.deviceIndex=s.deviceIndex,this.origin=s.origin,this.source=i,this.mode=s.mode,this._ray=s.ray,this.space=s.device}get isSpatial(){return this.mode!="screen"}get ray(){return this._ray||(this._ray=new lo(this.space.worldPosition.clone(),this.space.worldForward.clone())),this._ray}set ray(t){this._ray=t}get hasRay(){return this._ray!==void 0}get used(){return this._used}use(){this._used=!0}get pointerId(){return this._pointerid}get pointerType(){return this._pointerType}get type(){return this._type}get immediatePropagationStopped(){return this._immediatePropagationStopped}get propagationStopped(){return this._immediatePropagationStopped||this._propagationStopped}stopImmediatePropagation(){var t;this._immediatePropagationStopped=!0,super.stopImmediatePropagation(),(t=this.source)==null||t.stopImmediatePropagation()}stopPropagation(){var t;this._propagationStopped=!0,super.stopPropagation(),(t=this.source)==null||t.stopPropagation(),dt&&console.warn("Stop propagation...",this.pointerId,this.pointerType)}}class hc extends KeyboardEvent{constructor(t,i,s){super(t,s),a(this,"source"),this.source=i}stopImmediatePropagation(){var t;super.stopImmediatePropagation(),(t=this.source)==null||t.stopImmediatePropagation()}}class UP{constructor(t){a(this,"key"),a(this,"keyType"),a(this,"source"),this.key=t.key,this.keyType=t.type,this.source=t}}var ai=(n=>(n[n.Early=-100]="Early",n[n.Default=0]="Default",n[n.Late=100]="Late",n))(ai||{});class yb{constructor(t){a(this,"_eventListeners",{}),a(this,"_doubleClickTimeThreshold",.2),a(this,"_longPressTimeThreshold",1),a(this,"_setCursorTypes",[]),a(this,"context"),a(this,"_pointerDown",[!1]),a(this,"_pointerUp",[!1]),a(this,"_pointerClick",[!1]),a(this,"_pointerDoubleClick",[!1]),a(this,"_pointerPressed",[!1]),a(this,"_pointerPositions",[new re]),a(this,"_pointerPositionsLastFrame",[new re]),a(this,"_pointerPositionsDelta",[new re]),a(this,"_pointerPositionsRC",[new re]),a(this,"_pointerPositionDown",[new x]),a(this,"_pointerDownTime",[]),a(this,"_pointerUpTime",[]),a(this,"_pointerUpTimestamp",[]),a(this,"_pointerIds",[]),a(this,"_pointerTypes",[""]),a(this,"_mouseWheelChanged",[!1]),a(this,"_mouseWheelDeltaY",[0]),a(this,"_pointerEvent",[]),a(this,"_pointerEventsPressed",[]),a(this,"_pointerSpace",[]),a(this,"_pressedStack",new Map),a(this,"_htmlEventSource"),a(this,"onLostFocus",()=>{for(const i in this.keysPressed)this.keysPressed[i].pressed=!1}),a(this,"_receivedPointerMoveEventsThisFrame",new Array),a(this,"onEndOfFrame",()=>{this._receivedPointerMoveEventsThisFrame.length=0;for(let i=0;i<this._pointerUp.length;i++)this._pointerUp[i]=!1;for(let i=0;i<this._pointerDown.length;i++)this._pointerDown[i]=!1;for(let i=0;i<this._pointerClick.length;i++)this._pointerClick[i]=!1;for(let i=0;i<this._pointerDoubleClick.length;i++)this._pointerDoubleClick[i]=!1;for(const i of this._pointerPositionsDelta)i.set(0,0);for(let i=0;i<this._mouseWheelChanged.length;i++)this._mouseWheelChanged[i]=!1;for(let i=0;i<this._mouseWheelDeltaY.length;i++)this._mouseWheelDeltaY[i]=0}),a(this,"onContextMenu",i=>{this.canReceiveInput(i)!==!1&&i instanceof PointerEvent&&i.pointerType}),a(this,"keysPressed",{}),a(this,"onKeyDown",i=>{if(dt&&console.log(`key down ${i.code}, ${this.context.application.hasFocus}`,i),!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(s&&s.pressed)return;this.keysPressed[i.code]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:i.key,code:i.code};const o=new hc("keydown",i,i);this.onDispatchEvent(o)}),a(this,"onKeyPressed",i=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(!s)return;s.pressed=!0,s.frame=this.context.time.frameCount+1;const o=new hc("keypress",i,i);this.onDispatchEvent(o)}),a(this,"onKeyUp",i=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(!s)return;s.pressed=!1,s.frame=this.context.time.frameCount+1;const o=new hc("keyup",i,i);this.onDispatchEvent(o)}),a(this,"onWheelWindow",i=>{document.pointerLockElement&&this.onMouseWheel(i)}),a(this,"onMouseWheel",i=>{if(this.canReceiveInput(i)===!1)return;this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;const s=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=s+i.deltaY}),a(this,"onPointerDown",i=>{if(this.context.isInAR||this.canReceiveInput(i)===!1)return;i.target instanceof HTMLElement&&i.target.setPointerCapture(i.pointerId);const s=this.getPointerId(i);dt&&Be(`pointer down #${s}, identifier:${i.pointerId}`);const o=this.getAndUpdateSpatialObjectForScreenPosition(s,i.clientX,i.clientY),r=new Ss("pointerdown",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:i.button,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:o,pressure:i.pressure});this.onDown(r)}),a(this,"onPointerMove",i=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(i.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(i.pointerId);let s=i.button;i.pointerType==="mouse"&&(s=this.getFirstPressedButtonForPointer(0)??0);const o=this.getPointerId(i,s);s===-1&&(s=o);const r=this.getAndUpdateSpatialObjectForScreenPosition(o,i.clientX,i.clientY),l=new Ss("pointermove",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:o,button:s,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:r,pressure:i.pressure});this.onMove(l)}),a(this,"onPointerCancel",i=>{this.context.isInAR||(dt&&console.log("Pointer cancel",i),this.onPointerUp(i))}),a(this,"onPointerUp",i=>{if(this.context.isInAR)return;i.target instanceof HTMLElement&&i.target.releasePointerCapture(i.pointerId);const s=this.getPointerId(i),o=new Ss("pointerup",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:i.button,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:this.getAndUpdateSpatialObjectForScreenPosition(s,i.clientX,i.clientY),pressure:i.pressure});this.onUp(o),this._pointerIds[s]=-1,dt&&console.log("ID="+s,"PointerId="+i.pointerId,"ALL:",[...this._pointerIds])}),a(this,"onTouchStart",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new Ss("pointerdown",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onDown(c)}}),a(this,"onTouchMove",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new Ss("pointermove",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onMove(c)}}),a(this,"onTouchEnd",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=new Ss("pointerup",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),pressure:o.force});this.onUp(l),this._pointerIds[r]=-1}}),a(this,"tempNearPlaneVector",new x),a(this,"tempFarPlaneVector",new x),a(this,"tempLookMatrix",new se),this.context=t,this.context.post_render_callbacks.push(this.onEndOfFrame)}addEventListener(t,i,s){if(this._eventListeners[t]||(this._eventListeners[t]=[]),!i||typeof i!="function"){console.error("Invalid call to addEventListener: callback is required and must be a function!");return}s?s={...s}:s={};let o=0;s?.queue!=null&&(o=s.queue);const r=this._eventListeners[t],l=r.find(c=>c.priority===o);l?l.listeners.push({callback:i,options:s}):(r.push({priority:o,listeners:[{callback:i,options:s}]}),r.sort((c,h)=>c.priority-h.priority))}removeEventListener(t,i,s){if(!this._eventListeners[t]||!i)return;const o=this._eventListeners[t];if(s?.queue!=null){const r=o.find(c=>c.priority===s.queue);if(!r)return;const l=r.listeners.findIndex(c=>c.callback===i);l>=0&&r.listeners.splice(l,1)}else for(const r of o){const l=r.listeners.findIndex(c=>c.callback===i);l>=0&&r.listeners.splice(l,1)}}dispatchEvent(t){var i,s,o,r;let l=!1;if(t instanceof hc){const c=this._eventListeners[t.type];if(c)for(const h of c)for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((s=(i=u.options)==null?void 0:i.signal)!=null&&s.aborted){h.listeners.splice(d,1),d--;continue}u.options.once&&(h.listeners.splice(d,1),d--),u.callback(t)}}if(t instanceof Ss){const c=this._eventListeners[t.type];if(c)for(const h of c){if(l)break;for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((r=(o=u.options)==null?void 0:o.signal)!=null&&r.aborted){h.listeners.splice(d,1),d--;continue}if(t.immediatePropagationStopped){l=!0,dt&&console.log("immediatePropagationStopped",t.type);break}else t.propagationStopped&&(l=!0,dt&&console.log("propagationStopped",t.type));u.options.once&&(h.listeners.splice(d,1),d--),u.callback(t)}}}}get mousePosition(){return this._pointerPositions[0]}get mousePositionRC(){return this._pointerPositionsRC[0]}get mouseDown(){return this._pointerDown[0]}get mouseUp(){return this._pointerUp[0]}get mouseClick(){return this._pointerClick[0]}get mouseDoubleClick(){return this._pointerDoubleClick[0]}get mousePressed(){return this._pointerPressed[0]}get mouseWheelChanged(){return this.getMouseWheelChanged(0)}get click(){return this._pointerClick[0]}get doubleClick(){return this._pointerDoubleClick[0]}getGamepad(t=0){return typeof navigator<"u"&&"getGamepads"in navigator&&navigator.getGamepads()[t]||null}setCursorPointer(){this.setCursor("pointer")}setCursorNormal(){this.unsetCursor("pointer")}setCursor(t){this._setCursorTypes.push(t),this._setCursorTypes.length>10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(t){for(let i=this._setCursorTypes.length-1;i>=0;i--)if(this._setCursorTypes[i]===t){this._setCursorTypes.splice(i,1),this.updateCursor();break}}updateCursor(){var t;((t=this._setCursorTypes)==null?void 0:t.length)==0?this.context.domElement.style.cursor="default":this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(t){for(const i of this._pointerEventsPressed)if(i.pointerId===t&&i.used)return!0;return!1}getPointerPressedCount(){let t=0;for(let i=0;i<this._pointerPressed.length;i++)this._pointerPressed[i]&&t++;return t}getPointerPosition(t){return t>=this._pointerPositions.length?null:this._pointerPositions[t]}getPointerPositionLastFrame(t){return t>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[t]}getPointerPositionDelta(t){return t>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[t]}getPointerPositionRC(t){return t>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[t]}getPointerDown(t){return t>=this._pointerDown.length?!1:this._pointerDown[t]}getPointerUp(t){return t>=this._pointerUp.length?!1:this._pointerUp[t]}getPointerPressed(t){return t>=this._pointerPressed.length?!1:this._pointerPressed[t]}getPointerClicked(t){return t>=this._pointerClick.length?!1:this._pointerClick[t]}getPointerDoubleClicked(t){return t>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[t]}getPointerDownTime(t){return t>=this._pointerDownTime.length?-1:this._pointerDownTime[t]}getPointerUpTime(t){return t>=this._pointerUpTime.length?-1:this._pointerUpTime[t]}getPointerLongPress(t){return t>=this._pointerDownTime.length?!1:this.getPointerPressed(t)&&this.context.time.time-this._pointerDownTime[t]>this._longPressTimeThreshold}getIsMouse(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="mouse"}getIsTouch(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="touch"}getTouchesPressedCount(){let t=0;for(let i=0;i<this._pointerPressed.length;i++)this._pointerPressed[i]&&this.getIsTouch(i)&&t++;return t}getMouseWheelChanged(t=0){return t>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[t]}getMouseWheelDeltaY(t=0){return t>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[t]}getPointerEvent(t){if(!(t>=this._pointerEvent.length))return this._pointerEvent[t]??void 0}*foreachPointerId(t){for(let i=0;i<this._pointerTypes.length;i++)if(this._pointerIsActive(i)){if(t!==void 0){const s=this._pointerTypes[i];if(Array.isArray(t)){let o=!1;for(const r of t)if(s===r){o=!0;break}if(!o)continue}else if(t!==s)continue}yield i}}*foreachTouchId(){for(let t=0;t<this._pointerTypes.length;t++)this._pointerTypes[t]==="touch"&&this._pointerIsActive[t]&&(yield t)}_pointerIsActive(t){return t<0?!1:this._pointerPressed[t]||this._pointerDown[t]||this._pointerUp[t]}onDownButton(t,i){let s=this._pressedStack.get(t);s||(s=[],this._pressedStack.set(t,s)),s.push(i)}onReleaseButton(t,i){const s=this._pressedStack.get(t);if(!s)return;const o=s.indexOf(i);o>=0&&s.splice(o,1)}getFirstPressedButtonForPointer(t){const i=this._pressedStack.get(t);if(i)return i[0]}getLatestPressedButtonForPointer(t){const i=this._pressedStack.get(t);if(i)return i[i.length-1]}getKeyDown(){for(const t in this.keysPressed){const i=this.keysPressed[t];if(i.startFrame===this.context.time.frameCount)return i.key}return null}getKeyPressed(){for(const t in this.keysPressed){const i=this.keysPressed[t];if(i.pressed)return i.key}return null}isKeyDown(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyDown(o))return!0;return!1}return((i=this.keysPressed[t])==null?void 0:i.startFrame)===this.context.time.frameCount&&this.keysPressed[t].pressed}isKeyUp(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyUp(o))return!0;return!1}return((i=this.keysPressed[t])==null?void 0:i.frame)===this.context.time.frameCount&&!this.keysPressed[t].pressed}isKeyPressed(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyPressed(o))return!0;return!1}return(i=this.keysPressed[t])==null?void 0:i.pressed}getCodeForCommonKeyName(t){if(t.length===1){if(t>="0"&&t<="9")return["Digit"+t];if(t>="a"&&t<="z")return["Key"+t.toUpperCase()];if(t==" ")return["Space"]}switch(t){case"shift":case"Shift":return["ShiftLeft","ShiftRight"];case"control":case"Control":return["ControlLeft","ControlRight"];case"alt":case"Alt":return["AltLeft","AltRight"]}return null}createInputEvent(t){switch(t.type){case"pointerdown":dt&&Be("Create Pointer down"),this.onDownButton(t.deviceIndex,t.button),this.onDown(t);break;case"pointermove":dt&&Be("Create Pointer move"),this.onMove(t);break;case"pointerup":dt&&Be("Create Pointer up"),this.onUp(t),this.onReleaseButton(t.deviceIndex,t.button);break}}convertScreenspaceToRaycastSpace(t){return t.x=(t.x-this.context.domX)/this.context.domWidth*2-1,t.y=-((t.y-this.context.domY)/this.context.domHeight)*2+1,t}bindEvents(){this.unbindEvents(),this._htmlEventSource=this.context.renderer.domElement,window.addEventListener("contextmenu",this.onContextMenu),this._htmlEventSource.addEventListener("pointerdown",this.onPointerDown,{passive:!0}),window.addEventListener("pointermove",this.onPointerMove,{passive:!0,capture:!0}),window.addEventListener("pointerup",this.onPointerUp,{passive:!0}),window.addEventListener("pointercancel",this.onPointerCancel,{passive:!0}),window.addEventListener("touchstart",this.onTouchStart,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchEnd,{passive:!0}),this._htmlEventSource.addEventListener("wheel",this.onMouseWheel,{passive:!0}),window.addEventListener("wheel",this.onWheelWindow,{passive:!0}),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keypress",this.onKeyPressed,!1),window.addEventListener("keyup",this.onKeyUp,!1),window.addEventListener("blur",this.onLostFocus)}unbindEvents(){var t,i;window.removeEventListener("contextmenu",this.onContextMenu),(t=this._htmlEventSource)==null||t.removeEventListener("pointerdown",this.onPointerDown),window.removeEventListener("pointermove",this.onPointerMove),window.removeEventListener("pointerup",this.onPointerUp),window.removeEventListener("pointercancel",this.onPointerCancel),window.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),(i=this._htmlEventSource)==null||i.removeEventListener("wheel",this.onMouseWheel,!1),window.removeEventListener("wheel",this.onWheelWindow,!1),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keypress",this.onKeyPressed,!1),window.removeEventListener("keyup",this.onKeyUp,!1),window.removeEventListener("blur",this.onLostFocus)}dispose(){const t=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);t>=0&&this.context.post_render_callbacks.splice(t,1),this.unbindEvents()}canReceiveInput(t){var i;return t.target===((i=this.context.renderer)==null?void 0:i.domElement)||t.target===this.context.domElement||this.context.isInAR||this.context.isInAR&&t.target===document.body&&Q.isMozillaXR()?!0:(dt&&console.warn("CanReceiveInput:False for",t.target),!1)}getPointerId(t,i){return t.pointerType==="mouse"?0+(i??t.button):this.getPointerIndex(t.pointerId)}getButtonName(t){const i=t.button;if(t.pointerType==="mouse")switch(i){case 0:return"left";case 1:return"middle";case 2:return"right"}return"unknown"}getAndUpdateSpatialObjectForScreenPosition(t,i,s){let o=this._pointerSpace[t];o||(o=new I,this._pointerSpace[t]=o),this._pointerSpace[t]=o;const r=this.context.mainCamera;if(r){const l=this.tempNearPlaneVector.set(i,s,-1);this.convertScreenspaceToRaycastSpace(l);const c=this.tempFarPlaneVector.set(l.x,l.y,1);l.unproject(r),c.unproject(r);const h=r.worldUp||q(0,1,0).applyQuaternion(Ce(r));this.tempLookMatrix.lookAt(c,l,h),o.position.set(l.x,l.y,l.z),o.quaternion.setFromRotationMatrix(this.tempLookMatrix)}return o}isInRect(t){if(this.context.isInXR)return!0;const i=this.context.domElement.getBoundingClientRect(),s=t.clientX,o=t.clientY,r=s>=i.x&&s<=i.right&&o>=i.y&&o<=i.bottom;return dt&&!r&&console.log("Not in rect",i,s,o),r}onDown(t){const i=t.pointerId;if(this.getPointerPressed(i)&&console.warn(`Received pointerDown for pointerId that is already pressed: ${i}`,dt?t:""),dt&&console.log(t.pointerType,"DOWN",i),!!this.isInRect(t)){for(this.setPointerState(i,this._pointerPressed,!0),this.setPointerState(i,this._pointerDown,!0),this.setPointerStateT(i,this._pointerEvent,t.source);i>=this._pointerTypes.length;)this._pointerTypes.push(t.pointerType);for(this._pointerTypes[i]=t.pointerType;i>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new x);for(this._pointerPositionDown[i].set(t.clientX,t.clientY,t.clientZ??0);i>=this._pointerPositions.length;)this._pointerPositions.push(new re);this._pointerPositions[i].set(t.clientX,t.clientY),i>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[i]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(t),this._pointerEventsPressed.push(t),this.onDispatchEvent(t)}}onMove(t){const i=t.pointerId,s=this.getPointerPressed(i);s===!1&&!this.isInRect(t)||t.pointerType==="touch"&&!s||(this.updatePointerPosition(t),this.setPointerStateT(i,this._pointerEvent,t.source),this.onDispatchEvent(t))}onUp(t){const i=t.pointerId;if(!this.getPointerPressed(i)){dt&&console.log(t.pointerType,"UP",i,"was not down");return}dt&&console.log(t.pointerType,"UP",i),this.setPointerState(i,this._pointerPressed,!1),this.setPointerStateT(i,this._pointerEvent,t.source),this.setPointerState(i,this._pointerUp,!0),this.updatePointerPosition(t);for(let c=this._pointerEventsPressed.length-1;c>=0;c--)if(this._pointerEventsPressed[c].pointerId===i){this._pointerEventsPressed.splice(c,1);break}if(!this._pointerPositionDown[i]){dt&&_e("Received pointer up event without matching down event for button: "+i),console.warn("Received pointer up event without matching down event for button: "+i);return}const s=this._pointerUpTime[i],o=this._pointerDownTime[i],r=this.context.time.realtimeSinceStartup,l=r-o;if(i>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[i]=r,l<1){let c=t.clientX-this._pointerPositionDown[i].x,h=t.clientY-this._pointerPositionDown[i].y,d=0;if(t.isSpatial&&t.clientZ!=null&&(d=t.clientZ-this._pointerPositionDown[i].z,c*=200,h*=200,d*=200),Math.abs(c)<5&&Math.abs(h)<5&&Math.abs(d)<5){this.setPointerState(i,this._pointerClick,!0),t.isClick=!0;const u=r-s;dt&&console.log("CLICK",i,c,h,d,u),u<this._doubleClickTimeThreshold&&u>0&&(this.setPointerState(i,this._pointerDoubleClick,!0),t.isDoubleClick=!0)}}this.onDispatchEvent(t)}updatePointerPosition(t){const i=t.pointerId;for(;i>=this._pointerPositions.length;)this._pointerPositions.push(new re);for(;i>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new re);for(;i>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new re);const s=this._pointerPositionsLastFrame[i];s.copy(this._pointerPositions[i]);const o=this._pointerPositionsDelta[i];let r=t.clientX-s.x,l=t.clientY-s.y;if(t.source instanceof MouseEvent||t.source instanceof TouchEvent){const u=t.source;r===0&&u.movementX!==0&&(r=u.movementX||0),l===0&&u.movementY!==0&&(l=u.movementY||0)}o.x+=r,o.y+=l,this._pointerPositions[i].x=t.clientX,this._pointerPositions[i].y=t.clientY;const c=t.clientX,h=t.clientY;for(;i>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new re);const d=this._pointerPositionsRC[i];d.set(c,h),this.convertScreenspaceToRaycastSpace(d)}getPointerIndex(t){let i=-1;for(let s=0;s<this._pointerIds.length;s++){if(this._pointerIds[s]===t)return s;i===-1&&this._pointerIds[s]===-1&&(i=s)}return i!==-1?(this._pointerIds[i]=t,i):(dt&&console.log("PUSH pointerId:",t),this._pointerIds.push(t),this._pointerIds.length-1)}setPointerState(t,i,s){i[t]=s}setPointerStateT(t,i,s){return i[t]=s,s}onDispatchEvent(t){const i=ee.Current;try{ee.Current=this.context,this.dispatchEvent(t)}finally{ee.Current=i}}}const Oa=new se().makeRotationY(Math.PI),qi=new V().setFromAxisAngle(new x(0,1,0),Math.PI),NP=C("debugwebxr");class WP{constructor(){if(a(this,"priority",-1e5),a(this,"gameObject"),this.gameObject=new I,this.gameObject.name="Implicit XR Rig",NP){const t=bg(16733661);t.position.y+=.5,this.gameObject.add(t)}}isXRRig(){return!0}get isActive(){return this.gameObject.visible}}const Cs=C("debugwebxr"),Td=C("debugcustomgesture"),VP="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",HP="generic-trigger",$P=new V().setFromEuler(new Ft(ms.degToRad(0),ms.degToRad(-90),ms.degToRad(-90))),GP=new x(.04,-.04,0);class sg{constructor(t,i,s){a(this,"xr"),a(this,"inputSource"),a(this,"index",0),a(this,"emitEvents",!0),a(this,"_connected",!0),a(this,"_isTracking",!1),a(this,"__gamepad"),a(this,"__hand"),a(this,"__side"),a(this,"_hitTestSource"),a(this,"_hasSelectEvent",!1),a(this,"_isMxInk",!1),a(this,"_isMetaQuestTouchController",!1),a(this,"_handJointPoses",new Map),a(this,"_gripMatrix",new se),a(this,"_gripPosition",new x),a(this,"_gripQuaternion",new V),a(this,"_linearVelocity",new x),a(this,"_rayPositionRaw",new x),a(this,"_rayRotationRaw",new V),a(this,"_rayMatrix",new se),a(this,"_rayPosition",new x),a(this,"_rayQuaternion",new V),a(this,"_gripWorldPosition",new x),a(this,"_gripWorldQuaternion",new V),a(this,"_rayWorldPosition",new x),a(this,"_rayWorldQuaternion",new V),a(this,"_pinchPosition",new x),a(this,"_ray"),a(this,"_hand_wristDotUp"),a(this,"_object"),a(this,"_gripSpaceObject"),a(this,"_raySpaceObject"),a(this,"model",null),a(this,"_debugAxesHelper",new Si(.15)),a(this,"_debugGripAxesHelper",new Si(.07)),a(this,"_debugRayAxesHelper",new Si(.07)),a(this,"_hitTestSourcePromise",null),a(this,"onPointerHits",o=>{}),a(this,"_needleGamepadButtons",{}),a(this,"_buttonMap",new Map),a(this,"_motioncontroller"),a(this,"_layout"),a(this,"getMotionController"),a(this,"emitPointerDownEvent",!0),a(this,"emitPointerUpEvent",!0),a(this,"emitPointerMoveEvent",!0),a(this,"pointerMoveDistanceThreshold",.03),a(this,"pointerMoveAngleThreshold",.05),a(this,"_selectButtonIndex"),a(this,"_squeezeButtonIndex"),a(this,"onSelectStart",o=>{var r,l,c,h;if(!this.emitPointerDownEvent||this.inputSource!==o.inputSource)return;this.onUpdateFrame(o.frame),this._hasSelectEvent=!0;const d=(r=this._layout)==null?void 0:r.selectComponentId,u=(h=(c=(l=this._layout)==null?void 0:l.components[d])==null?void 0:c.gamepadIndices)==null?void 0:h.button;u!==void 0&&(this._selectButtonIndex=u),!Td&&(Cs&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(Fe.PointerDown,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSelectEnd",o=>{this.emitPointerUpEvent&&(Td||this.inputSource===o.inputSource&&this.emitPointerEvent(Fe.PointerUp,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSequeezeStart",o=>{var r,l,c;this.emitPointerDownEvent&&this.inputSource===o.inputSource&&(this._squeezeButtonIndex=(c=(l=(r=this._layout)==null?void 0:r.components["xr-standard-squeeze"])==null?void 0:l.gamepadIndices)==null?void 0:c.button,this._squeezeButtonIndex!==void 0&&(Cs&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(Fe.PointerDown,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)))}),a(this,"onSequeezeEnd",o=>{this.emitPointerUpEvent&&this.inputSource===o.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(Fe.PointerUp,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)}),a(this,"states",{}),a(this,"_didMoveLastFrame",!1),a(this,"_lastPointerMovePosition",new x),a(this,"_lastPointerMoveQuaternion",new V),a(this,"pointerInit"),this.xr=t,this.inputSource=i,this.index=s,this._object=new I,this._object.name=`NeedleXRController_${s}`,Cs&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new I,this._raySpaceObject=new I,this._gripSpaceObject.name=`NeedleXRController_${s}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${s}_raySpace`,this._gripSpaceObject.add(this._debugGripAxesHelper),this._raySpaceObject.add(this._debugRayAxesHelper),this.xr.context.scene.add(this._gripSpaceObject),this.xr.context.scene.add(this._raySpaceObject)),this.xr.context.scene.add(this._object),this._ray=new lo,this.pointerInit={origin:this,pointerType:this.hand?"hand":"controller",deviceIndex:this.index,pointerId:-1,mode:this.inputSource.targetRayMode,ray:this._ray,device:this._object,buttonName:"none"},this.initialize(),this.subscribeEvents()}get context(){return this.xr.context}get connected(){return this._connected}get isTracking(){return this._isTracking}get gamepad(){return this.__gamepad??(this.__gamepad=this.inputSource.gamepad)}get isHand(){return this.hand!=null}get hand(){return this.__hand??(this.__hand=this.inputSource.hand)}get handObject(){return this.context.renderer.xr.getHand(this.index)}get profiles(){return this.inputSource.profiles}get layout(){return this._layout}get targetRayMode(){return this.inputSource.targetRayMode}get targetRaySpace(){return this.inputSource.targetRaySpace}get gripSpace(){return this.inputSource.gripSpace}get side(){return this.__side??(this.__side=this.inputSource.handedness)}get isRight(){return this.side==="right"}get isLeft(){return this.side==="left"}get isStylus(){return this._isMxInk}getHitTestSource(){return this._hitTestSource||this._requestHitTestSource(),this._hitTestSource}get hasHitTestSource(){return this._hitTestSource}cancelHitTestSource(){this._hitTestSource&&(this._hitTestSource.cancel(),this._hitTestSource=void 0)}get hasSelectEvent(){return this._hasSelectEvent}getHitTest(){return this.xr.getHitTest(this)}getHandJointPose(t,i){var s;if(i=i||this.xr.frame,!this.hand||!(i!=null&&i.getJointPose)||!this.xr.referenceSpace)return null;let o=(s=this._handJointPoses)==null?void 0:s.get(t);return o||(o=i.getJointPose(t,this.xr.referenceSpace),o&&this._handJointPoses.set(t,o),o)}get gripPosition(){return q(this._gripPosition)}get gripQuaternion(){return yn(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return q(this._linearVelocity).applyQuaternion(qi)}get rayPosition(){return q(this._rayPosition)}get rayQuaternion(){return yn(this._rayQuaternion)}get gripWorldPosition(){return q(this._gripWorldPosition)}get gripWorldQuaternion(){return yn(this._gripWorldQuaternion)}get rayWorldPosition(){return q(this._rayWorldPosition)}updateRayWorldPosition(){var t;const i=(t=this.xr.context.mainCamera)==null?void 0:t.parent;this._rayWorldPosition.copy(this._rayPositionRaw),i&&this._rayWorldPosition.applyMatrix4(i.matrixWorld)}get rayWorldQuaternion(){return yn(this._rayWorldQuaternion)}get pinchPosition(){return q(this._pinchPosition)}updateRayWorldQuaternion(){var t;const i=(t=this.xr.context.mainCamera)==null?void 0:t.parent,s=i?Ce(i):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(qi),s&&this._rayWorldQuaternion.premultiply(s)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy(q(0,0,1).applyQuaternion(this.rayWorldQuaternion)),this._ray}get handWristDotUp(){var t;if(this._hand_wristDotUp!==void 0)return this._hand_wristDotUp;const i=(t=this.handObject)==null?void 0:t.joints.wrist;if(i){const s=q(0,1,0).applyQuaternion(i.quaternion),o=q(0,1,0).dot(s);return this._hand_wristDotUp=o}}get isHandUpsideDown(){return this.handWristDotUp!==void 0?this.handWristDotUp<-.7:!1}get isTeleportGesture(){var t;return this.isHandUpsideDown&&((t=this.getGesture("pinch"))==null?void 0:t.isDown)}get object(){return this._object}async getModelUrl(){var t;return(t=this.getMotionController)==null?void 0:t.then(i=>i?.assetUrl||null)}_requestHitTestSource(){var t;return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode==="immersive-ar"&&this.inputSource.targetRayMode==="tracked-pointer"&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=((t=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay}))==null?void 0:t.then(i=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=i:(i.cancel(),null))))??null:null}onUpdate(t){this.onUpdateFrame(t),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){var t;$.DrawSphere(this.rayWorldPosition,.003),$.DrawDirection(this.rayWorldPosition,q(0,0,10).applyQuaternion(this.rayWorldQuaternion));const i=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),s=this.inputSource.profiles.join(`
|
|
133
|
+
`,Gi?.prepend(s),n===!0&&jm()<=0&&rb(),console.log("\u{1F335} Debug console has loaded")}},t.onerror=()=>{console.warn("\u{1F335} Debug console failed to load."+(window.crossOriginIsolated?"This page is using cross-origin isolation, so external scripts can't be loaded.":"")),rc=!1,ri=null},t.src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js",document.body.appendChild(t)}function SP(){if(!globalThis.VConsole)return;const n=new VConsole.VConsolePlugin("needle-console","\u{1F335} Inspect glTF"),t=()=>document.querySelector("#__vc_plug_"+n._id+" iframe");return n.on("renderTab",function(i){const s=globalThis["needle:codegen_files"];if(!s||s.length===0)return;let o=globalThis["needle:codegen_files"][0];const r=o.indexOf("?");r>-1&&(o=o.substring(0,r));const l=location.protocol+"//"+location.host+location.pathname+"/"+o,c=encodeURIComponent(l);n.fullUrl="https://viewer.needle.tools?inspect&file="+c;var h='<iframe src="" style="width: 100%; height: 99%; border: none;"></iframe>';i(h)}),n.on("show",function(){const i=t();i&&i.src!==n.fullUrl&&(i.src=n.fullUrl)}),n.on("hide",function(){const i=t();i&&(i.src="")}),n.on("addTopBar",function(i){var s=new Array;s.push({name:"Open in new window \u2197",onClick:function(o){window.open(n.fullUrl,"_blank"),ri?.hide()}}),s.push({name:"Reload",onClick:function(o){const r=t();r&&(r.src=n.fullUrl)}}),s.push({name:"Fullscreen",onClick:function(o){const r=t();r.requestFullscreen?r.requestFullscreen():r.webkitRequestFullscreen instanceof Function&&r.webkitRequestFullscreen()}}),i(s)}),n}function CP(){return document.querySelector("#__vconsole .vc-switch")||null}function OP(){return document.querySelector("#__vconsole")||null}const hb=C("debugdefines");go('if(!globalThis[""4.4.2""]) globalThis[""4.4.2""] = "0.0.0";'),go('if(!globalThis[""undefined""]) globalThis[""undefined""] = "unknown";'),go('if(!globalThis[""Thu Apr 24 2025 21:36:30 GMT+0700 (Indochina Time)""]) globalThis[""Thu Apr 24 2025 21:36:30 GMT+0700 (Indochina Time)""] = "unknown";'),go('if(!globalThis[""npk_ad8e492e31253a2800d563522e42a7311d0d7b766ac4ec1f64d3b425f06eacbd""]) globalThis[""npk_ad8e492e31253a2800d563522e42a7311d0d7b766ac4ec1f64d3b425f06eacbd""] = "unknown";'),go('globalThis["__NEEDLE_ENGINE_VERSION__"] = "4.4.2";'),go('globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "undefined";'),go('globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "Thu Apr 24 2025 21:36:30 GMT+0700 (Indochina Time)";'),go('globalThis["__NEEDLE_PUBLIC_KEY__"] = "npk_ad8e492e31253a2800d563522e42a7311d0d7b766ac4ec1f64d3b425f06eacbd";');const bn="4.4.2",Od="undefined",eg="Thu Apr 24 2025 21:36:30 GMT+0700 (Indochina Time)";hb&&console.log(`Engine version: ${bn} (generator: ${Od})
|
|
134
|
+
Project built at ${eg}`);const lc="npk_ad8e492e31253a2800d563522e42a7311d0d7b766ac4ec1f64d3b425f06eacbd",xs="needle_isActiveInHierarchy",pr="builtin_components",cc="needle_editor_guid";function go(n){try{(0,eval)(n)}catch(t){hb&&console.error(t)}}const PP='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 160 187.74"><defs><linearGradient id="a" x1="89.64" y1="184.81" x2="90.48" y2="21.85" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#62d399"/><stop offset=".51" stop-color="#acd842"/><stop offset=".9" stop-color="#d7db0a"/></linearGradient><linearGradient id="b" x1="69.68" y1="178.9" x2="68.08" y2="16.77" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0ba398"/><stop offset=".5" stop-color="#4ca352"/><stop offset="1" stop-color="#76a30a"/></linearGradient><linearGradient id="c" x1="36.6" y1="152.17" x2="34.7" y2="84.19" gradientUnits="userSpaceOnUse"><stop offset=".19" stop-color="#36a382"/><stop offset=".54" stop-color="#49a459"/><stop offset="1" stop-color="#76a30b"/></linearGradient><linearGradient id="d" x1="15.82" y1="153.24" x2="18" y2="90.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#267880"/><stop offset=".51" stop-color="#457a5c"/><stop offset="1" stop-color="#717516"/></linearGradient><linearGradient id="e" x1="135.08" y1="135.43" x2="148.93" y2="63.47" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b0d939"/><stop offset="1" stop-color="#eadb04"/></linearGradient><linearGradient id="f" x1="-4163.25" y1="2285.12" x2="-4160.81" y2="2215.34" gradientTransform="rotate(20 4088.49 13316.712)" gradientUnits="userSpaceOnUse"><stop offset=".17" stop-color="#74af52"/><stop offset=".48" stop-color="#99be32"/><stop offset="1" stop-color="#c0c40a"/></linearGradient><symbol id="g" viewBox="0 0 160 187.74"><path style="fill:url(#a)" d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75z"/><path style="fill:url(#b)" d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98z"/><path style="fill:url(#c)" d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z"/><path style="fill:url(#d)" d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04z"/><path style="fill:#9c3" d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5z"/><path style="fill:url(#e)" d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59z"/><path style="fill:url(#f)" d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z"/><path style="fill:#ffe113" d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1z"/><path style="fill:#f3e600" d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75z"/></symbol></defs><use width="160" height="187.74" xlink:href="#g"/></svg>',kP=btoa(PP),MP="data:image/svg+xml;base64,"+kP,RP=MP,TP=`<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 1014 282" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m665.95 132.73v44.88l-10.56-8.4c-0.8-0.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18 0.4-6.06 1.2s-3.54 1.8-4.98 3-2.56 2.5-3.36 3.9-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c0.32 0.24 0.56 0.44 0.72 0.6s0.36 0.32 0.6 0.48c0.96-1.2 2.14-2.28 3.54-3.24s2.92-1.76 4.56-2.4 3.34-1.14 5.1-1.5 3.44-0.54 5.04-0.54c1.44 0 2.92 0.04 4.44 0.12s2.84 0.28 3.96 0.6c4.56 1.12 7.8 3.12 9.72 6s2.88 6.56 2.88 11.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m732.38 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m795.93 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m858.57 97.21c0.64 0.48 0.96 1.16 0.96 2.04v74.88c-0.08 1.04-0.12 2.12-0.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18s-2.06-1.66-2.46-1.98c-1.76 2.48-4.26 4.44-7.5 5.88s-7.02 2.16-11.34 2.16c-3.84 0-7.4-0.7-10.68-2.1s-6.14-3.44-8.58-6.12-4.34-5.94-5.7-9.78-2.04-8.16-2.04-12.96c0-4.32 0.78-8.34 2.34-12.06s3.6-6.92 6.12-9.6 5.38-4.78 8.58-6.3 6.48-2.28 9.84-2.28c2.56 0 4.82 0.22 6.78 0.66s3.68 1.06 5.16 1.86 2.78 1.74 3.9 2.82 2.16 2.22 3.12 3.42v-35.04l10.68 8.64zm-27.96 67.92c3.6 0 6.52-0.68 8.76-2.04s3.98-3.06 5.22-5.1 2.1-4.22 2.58-6.54 0.72-4.44 0.72-6.36v-1.2c0-1.12-0.22-2.7-0.66-4.74s-1.28-4.06-2.52-6.06-3-3.7-5.28-5.1-5.22-2.02-8.82-1.86c-3.44 0-6.26 0.74-8.46 2.22s-3.96 3.26-5.28 5.34-2.24 4.2-2.76 6.36-0.78 3.92-0.78 5.28c0 1.84 0.24 3.92 0.72 6.24s1.36 4.48 2.64 6.48 3.04 3.68 5.28 5.04 5.12 2.04 8.64 2.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m882.81 97.09c0.64 0.48 0.96 1.12 0.96 1.92l-0.12 41.04v37.08l-10.56-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-77.88l10.8 8.64z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m950.36 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.8559 0 0 .7642 45.348 36.475)"> <g transform="translate(2.7114)"> <path d="m3.935 173.02c-0.331 0-0.497-0.402-0.497-1.207v-51.002c0-0.738 0.138-1.107 0.414-1.107h1.781c0.277 0 0.415 0.335 0.415 1.006v5.935c0 0.336 0.027 0.553 0.083 0.654 0.055 0.101 0.151-0.017 0.289-0.352 0.912-1.744 1.754-3.236 2.527-4.477 0.773-1.24 1.554-2.179 2.341-2.816s1.65-0.956 2.588-0.956c1.685 0 3.011 0.922 3.977 2.766 0.967 1.845 1.602 3.84 1.905 5.986 0.056 0.268 0.139 0.369 0.249 0.302s0.221-0.235 0.331-0.503c0.939-1.811 1.802-3.353 2.589-4.628 0.787-1.274 1.581-2.246 2.382-2.917s1.671-1.006 2.61-1.006c2.016 0 3.569 1.392 4.66 4.175 1.09 2.783 1.636 6.421 1.636 10.915v37.925c0 0.871-0.18 1.307-0.539 1.307h-1.739c-0.138 0-0.249-0.1-0.332-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.338-6.321-1.015-8.3-0.676-1.978-1.76-2.967-3.251-2.967-0.884 0-1.726 0.386-2.527 1.157s-1.519 1.727-2.154 2.867-1.201 2.213-1.699 3.219c-0.248 0.469-0.421 0.905-0.517 1.308-0.097 0.402-0.145 0.972-0.145 1.71v37.221c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.166 0-0.29-0.1-0.373-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.332-6.321-0.994-8.3-0.663-1.978-1.754-2.967-3.273-2.967-1.242 0-2.375 0.704-3.396 2.112-1.022 1.409-2.223 3.555-3.604 6.439v39.031c0 0.805-0.18 1.207-0.539 1.207h-1.698z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m53.642 166.28c-1.077 2.549-2.237 4.477-3.479 5.785-1.243 1.307-2.61 1.961-4.101 1.961-2.154 0-3.853-1.324-5.095-3.973-1.243-2.649-1.864-6.187-1.864-10.613 0-3.488 0.4-6.489 1.201-9.004s1.988-4.51 3.562-5.985c1.574-1.476 3.521-2.414 5.841-2.817l3.686-0.704c0.221-0.067 0.394-0.218 0.518-0.453 0.124-0.234 0.187-0.587 0.187-1.056v-2.917c0-3.89-0.504-6.975-1.512-9.255s-2.354-3.42-4.039-3.42c-1.298 0-2.472 0.72-3.521 2.162s-2.002 3.572-2.858 6.388c-0.083 0.268-0.159 0.453-0.228 0.554-0.069 0.1-0.172 0.083-0.311-0.051l-1.698-1.71c-0.083-0.134-0.138-0.285-0.166-0.453-0.027-0.167 0.014-0.452 0.125-0.855 0.856-3.353 2.009-6.052 3.459-8.098 1.449-2.045 3.224-3.068 5.322-3.068 1.74 0 3.211 0.687 4.412 2.062s2.112 3.37 2.734 5.986c0.621 2.615 0.932 5.7 0.932 9.255v35.712c0 0.536-0.035 0.888-0.104 1.056s-0.2 0.251-0.393 0.251h-1.533c-0.166 0-0.29-0.117-0.373-0.352-0.083-0.234-0.124-0.553-0.124-0.955l-0.083-5.231c-0.055-0.939-0.221-1.006-0.497-0.202zm0.456-19.314c0-1.14-0.194-1.643-0.58-1.509l-3.107 0.603c-1.436 0.202-2.686 0.638-3.749 1.308-1.063 0.671-1.953 1.543-2.671 2.616s-1.257 2.33-1.616 3.772-0.538 3.102-0.538 4.98c0 3.152 0.455 5.616 1.367 7.393 0.911 1.778 2.14 2.666 3.686 2.666 0.939 0 1.85-0.419 2.734-1.257s1.671-1.895 2.361-3.169c0.663-1.408 1.181-2.85 1.553-4.326 0.373-1.475 0.56-2.883 0.56-4.225v-8.852z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m79.034 173.02c-0.166 0-0.297-0.117-0.394-0.352-0.096-0.234-0.145-0.553-0.145-0.955v-4.628c0-0.536-0.041-0.838-0.124-0.905s-0.207 0.1-0.373 0.503c-0.276 0.67-0.69 1.593-1.242 2.766-0.553 1.174-1.271 2.23-2.154 3.169-0.884 0.939-1.961 1.408-3.231 1.408-1.74 0-3.314-0.989-4.722-2.967-1.409-1.979-2.534-4.963-3.376-8.953-0.843-3.991-1.264-8.937-1.264-14.838 0-5.701 0.415-10.68 1.243-14.939s1.988-7.595 3.479-10.009c1.492-2.415 3.204-3.622 5.137-3.622 1.436 0 2.616 0.57 3.541 1.71 0.926 1.14 1.719 2.381 2.382 3.722 0.249 0.47 0.414 0.637 0.497 0.503s0.125-0.536 0.125-1.207v-23.841c0-0.805 0.151-1.208 0.455-1.208h1.864c0.276 0 0.414 0.369 0.414 1.107v72.128c0 0.537-0.041 0.905-0.124 1.107-0.083 0.201-0.235 0.301-0.455 0.301h-1.533zm-0.621-42.049c-0.939-2.213-1.885-3.94-2.838-5.181s-2.009-1.861-3.169-1.861c-1.463 0-2.768 0.889-3.914 2.666s-2.044 4.376-2.693 7.796-0.973 7.578-0.973 12.474c0 5.097 0.338 9.272 1.015 12.524 0.676 3.253 1.567 5.651 2.672 7.193 1.104 1.543 2.305 2.314 3.603 2.314 1.188 0 2.258-0.704 3.211-2.113 0.952-1.408 1.705-3.118 2.257-5.13s0.829-3.957 0.829-5.835v-24.847z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m89.514 149.38c0 3.42 0.345 6.606 1.035 9.557 0.691 2.951 1.609 5.315 2.755 7.092s2.437 2.666 3.873 2.666c1.519 0 2.837-0.738 3.956-2.213 1.118-1.476 2.064-3.655 2.837-6.539 0.083-0.336 0.166-0.52 0.249-0.554 0.083-0.033 0.179 0.017 0.29 0.151l1.408 1.912c0.221 0.268 0.235 0.67 0.041 1.207-0.69 2.548-1.47 4.661-2.34 6.337-0.87 1.677-1.857 2.935-2.962 3.773-1.104 0.838-2.319 1.257-3.645 1.257-2.043 0-3.838-1.14-5.385-3.42-1.546-2.28-2.761-5.482-3.645-9.607-0.884-4.124-1.325-8.836-1.325-14.134 0-5.901 0.455-10.931 1.367-15.089 0.911-4.158 2.14-7.377 3.686-9.658 1.547-2.28 3.3-3.42 5.261-3.42 1.988 0 3.714 1.073 5.178 3.219 1.463 2.146 2.595 5.231 3.396 9.255s1.201 8.886 1.201 14.587c0 0.469-0.02 0.939-0.062 1.408-0.041 0.469-0.214 0.704-0.517 0.704h-16.362c-0.083 0-0.152 0.151-0.207 0.453-0.056 0.302-0.083 0.654-0.083 1.056zm13.752-6.237c0.304 0 0.497-0.1 0.58-0.302 0.083-0.201 0.124-0.57 0.124-1.106 0-3.219-0.283-6.187-0.849-8.903s-1.367-4.896-2.402-6.539c-1.036-1.643-2.272-2.464-3.708-2.464-1.629 0-2.996 0.955-4.101 2.867-1.104 1.911-1.94 4.342-2.506 7.293s-0.849 6.002-0.849 9.154h13.711z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m148.54 119.7c0.165 0 0.283 0.117 0.352 0.352s0.076 0.52 0.02 0.855l-6.254 50.902c-0.028 0.47-0.104 0.788-0.228 0.956s-0.297 0.251-0.518 0.251h-1.615c-0.442 0-0.718-0.402-0.829-1.207l-5.26-40.138c-0.111-0.604-0.201-0.905-0.27-0.905s-0.131 0.301-0.186 0.905l-5.012 40.138c-0.028 0.47-0.097 0.788-0.207 0.956-0.111 0.168-0.277 0.251-0.497 0.251h-1.74c-0.442 0-0.718-0.402-0.829-1.207l-6.503-50.801c-0.055-0.403-0.048-0.721 0.021-0.956s0.2-0.352 0.393-0.352h1.823c0.166 0 0.297 0.067 0.393 0.201 0.097 0.134 0.159 0.403 0.187 0.805l5.302 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.219-41.949c0.055-0.268 0.124-0.47 0.207-0.604s0.193-0.201 0.331-0.201h1.533c0.138 0 0.262 0.067 0.373 0.201 0.11 0.134 0.179 0.403 0.207 0.805l5.468 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.053-41.849c0.055-0.335 0.138-0.57 0.249-0.704 0.11-0.134 0.234-0.201 0.373-0.201h1.284z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m156.49 171.51c0 0.604-0.042 1.006-0.125 1.208-0.082 0.201-0.262 0.301-0.538 0.301h-1.533c-0.221 0-0.366-0.083-0.435-0.251s-0.103-0.486-0.103-0.956v-50.902c0-0.805 0.152-1.207 0.456-1.207h1.822c0.304 0 0.456 0.402 0.456 1.207v50.6zm0.165-63.979c0 1.207-0.207 1.811-0.621 1.811h-1.905c-0.221 0-0.366-0.135-0.435-0.403s-0.104-0.67-0.104-1.207v-7.847c0-1.006 0.18-1.509 0.539-1.509h1.988c0.359 0 0.538 0.47 0.538 1.409v7.746z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m168.3 124.83c-0.221 0-0.331 0.269-0.331 0.805v33.801c0 3.42 0.221 5.667 0.663 6.74 0.441 1.073 1.09 1.609 1.946 1.609h3.024c0.138 0 0.242 0.084 0.311 0.252 0.069 0.167 0.103 0.419 0.103 0.754v2.716c0 0.537-0.138 0.906-0.414 1.107-0.248 0.067-0.614 0.134-1.098 0.201-0.483 0.067-0.959 0.118-1.429 0.151-0.469 0.034-0.828 0.05-1.077 0.05-1.712 0-2.934-0.955-3.665-2.867-0.732-1.911-1.098-5.013-1.098-9.305v-35.108c0-0.604-0.124-0.906-0.373-0.906h-3.521c-0.248 0-0.373-0.268-0.373-0.804v-3.521c0-0.537 0.111-0.805 0.332-0.805h3.686c0.166 0 0.263-0.268 0.29-0.805l0.415-16.095c0-0.805 0.124-1.207 0.372-1.207h1.492c0.303 0 0.455 0.436 0.455 1.307v15.995c0 0.537 0.097 0.805 0.29 0.805h5.468c0.221 0 0.331 0.268 0.331 0.805v3.521c0 0.536-0.124 0.804-0.373 0.804h-5.426z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m179.4 173.02c-0.331 0-0.497-0.402-0.497-1.207v-72.329c0-0.738 0.138-1.107 0.414-1.107h1.782c0.276 0 0.414 0.336 0.414 1.006v27.162c0 0.335 0.034 0.536 0.103 0.603s0.159-0.033 0.27-0.302c0.994-1.81 1.898-3.319 2.713-4.526 0.814-1.208 1.629-2.113 2.444-2.717 0.814-0.603 1.691-0.905 2.63-0.905 2.182 0 3.839 1.375 4.971 4.125 1.132 2.749 1.698 6.404 1.698 10.965v37.925c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.165 0-0.29-0.1-0.373-0.301-0.082-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.366-6.321-1.097-8.3-0.732-1.978-1.899-2.967-3.501-2.967-0.883 0-1.705 0.318-2.464 0.956-0.76 0.637-1.526 1.576-2.299 2.816-0.773 1.241-1.643 2.834-2.61 4.779v39.031c0 0.805-0.179 1.207-0.538 1.207h-1.699z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> </g> <g transform="matrix(.80638 0 0 .80638 452.53 65.421)" fill-rule="nonzero"> <path d="m79.32 36.98v150.76l15.68-13.2 6.59-156.31-22.27 18.75z" fill="url(#f)"/> <path d="m79.32 36.98-22.27-18.75 6.59 156.31 15.68 13.2v-150.76z" fill="url(#e)"/> <path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z" fill="url(#d)"/> <path d="m25.19 104.83-25.19-14.59 16.97 53.86 16.85 9.77-8.63-49.04z" fill="url(#c)"/> <path d="M43.86,82.5L18.69,67.98L0,90.24L25.18,104.83L43.86,82.5Z" fill="#9c3"/> <path d="m134.82 78.69-9.97 56.5 15.58-9.04 19.57-62.05-25.18 14.59z" fill="url(#b)"/> <path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z" fill="url(#a)"/> <path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33 25.19-14.59z" fill="#ffe113"/> <path d="M101.59,18.23L79.32,0L57.05,18.23L79.32,36.98L101.59,18.23Z" fill="#f3e600"/> </g> <defs> <linearGradient id="f" x2="1" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)" gradientUnits="userSpaceOnUse"><stop stop-color="#62d399" offset="0"/><stop stop-color="#acd842" offset=".51"/><stop stop-color="#d7db0a" offset=".9"/><stop stop-color="#d7db0a" offset="1"/></linearGradient> <linearGradient id="e" x2="1" gradientTransform="matrix(-1.6,-162.13,162.13,-1.6,69.68,178.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#0ba398" offset="0"/><stop stop-color="#4ca352" offset=".5"/><stop stop-color="#76a30a" offset="1"/></linearGradient> <linearGradient id="d" x2="1" gradientTransform="matrix(-1.9,-67.98,67.98,-1.9,36.6,152.17)" gradientUnits="userSpaceOnUse"><stop stop-color="#36a382" offset="0"/><stop stop-color="#36a382" offset=".19"/><stop stop-color="#49a459" offset=".54"/><stop stop-color="#76a30b" offset="1"/></linearGradient> <linearGradient id="c" x2="1" gradientTransform="matrix(2.18,-62.38,62.38,2.18,15.82,153.24)" gradientUnits="userSpaceOnUse"><stop stop-color="#267880" offset="0"/><stop stop-color="#457a5c" offset=".51"/><stop stop-color="#717516" offset="1"/></linearGradient> <linearGradient id="b" x2="1" gradientTransform="matrix(13.85,-71.96,71.96,13.85,135.08,135.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#b0d939" offset="0"/><stop stop-color="#eadb04" offset="1"/></linearGradient> <linearGradient id="a" x2="1" gradientTransform="matrix(26.159 -64.737 64.737 26.159 107.42 128.14)" gradientUnits="userSpaceOnUse"><stop stop-color="#74af52" offset="0"/><stop stop-color="#74af52" offset=".17"/><stop stop-color="#99be32" offset=".48"/><stop stop-color="#c0c40a" offset="1"/></linearGradient> </defs> </svg>`;btoa(TP);const EP='<svg viewBox="0 0 509 154" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M665.95 132.73v44.88l-10.56-8.4c-.8-.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18.4-6.06 1.2-1.88.8-3.54 1.8-4.98 3-1.44 1.2-2.56 2.5-3.36 3.9-.8 1.4-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-.72-.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c.32.24.56.44.72.6.16.16.36.32.6.48.96-1.2 2.14-2.28 3.54-3.24 1.4-.96 2.92-1.76 4.56-2.4 1.64-.64 3.34-1.14 5.1-1.5 1.76-.36 3.44-.54 5.04-.54 1.44 0 2.92.04 4.44.12 1.52.08 2.84.28 3.96.6 4.56 1.12 7.8 3.12 9.72 6 1.92 2.88 2.88 6.56 2.88 11.04ZM732.38 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM795.93 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM858.57 97.21c.64.48.96 1.16.96 2.04v74.88c-.08 1.04-.12 2.12-.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18-1.24-1-2.06-1.66-2.46-1.98-1.76 2.48-4.26 4.44-7.5 5.88-3.24 1.44-7.02 2.16-11.34 2.16-3.84 0-7.4-.7-10.68-2.1-3.28-1.4-6.14-3.44-8.58-6.12-2.44-2.68-4.34-5.94-5.7-9.78-1.36-3.84-2.04-8.16-2.04-12.96 0-4.32.78-8.34 2.34-12.06 1.56-3.72 3.6-6.92 6.12-9.6 2.52-2.68 5.38-4.78 8.58-6.3 3.2-1.52 6.48-2.28 9.84-2.28 2.56 0 4.82.22 6.78.66 1.96.44 3.68 1.06 5.16 1.86s2.78 1.74 3.9 2.82a35.92 35.92 0 0 1 3.12 3.42V88.57l10.68 8.64Zm-27.96 67.92c3.6 0 6.52-.68 8.76-2.04 2.24-1.36 3.98-3.06 5.22-5.1a20.5 20.5 0 0 0 2.58-6.54c.48-2.32.72-4.44.72-6.36v-1.2c0-1.12-.22-2.7-.66-4.74-.44-2.04-1.28-4.06-2.52-6.06s-3-3.7-5.28-5.1c-2.28-1.4-5.22-2.02-8.82-1.86-3.44 0-6.26.74-8.46 2.22-2.2 1.48-3.96 3.26-5.28 5.34-1.32 2.08-2.24 4.2-2.76 6.36-.52 2.16-.78 3.92-.78 5.28 0 1.84.24 3.92.72 6.24.48 2.32 1.36 4.48 2.64 6.48s3.04 3.68 5.28 5.04c2.24 1.36 5.12 2.04 8.64 2.04ZM882.81 97.09c.64.48.96 1.12.96 1.92l-.12 41.04v37.08l-10.56-8.4c-.72-.64-1.08-1.44-1.08-2.4V88.45l10.8 8.64ZM950.36 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14Z" style="fill-rule:nonzero" transform="translate(-452.406 -63.709) scale(1.00797)"/><path d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75Z" style="fill:url(#a);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98Z" style="fill:url(#b);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33Z" style="fill:url(#c);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04Z" style="fill:url(#d);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5Z" style="fill:#9c3;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59Z" style="fill:url(#e);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5Z" style="fill:url(#f);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1Z" style="fill:#ffe113;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75Z" style="fill:#f3e600;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)"><stop offset="0" style="stop-color:#62d399;stop-opacity:1"/><stop offset=".51" style="stop-color:#acd842;stop-opacity:1"/><stop offset=".9" style="stop-color:#d7db0a;stop-opacity:1"/><stop offset="1" style="stop-color:#d7db0a;stop-opacity:1"/></linearGradient><linearGradient id="b" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90.565 123.412 54.953) scale(162.14)"><stop offset="0" style="stop-color:#0ba398;stop-opacity:1"/><stop offset=".5" style="stop-color:#4ca352;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30a;stop-opacity:1"/></linearGradient><linearGradient id="c" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(-68) rotate(88.4 .881 -1.396)"><stop offset="0" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".19" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".54" style="stop-color:#49a459;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30b;stop-opacity:1"/></linearGradient><linearGradient id="d" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-88 87.255 68.431) scale(62.42)"><stop offset="0" style="stop-color:#267880;stop-opacity:1"/><stop offset=".51" style="stop-color:#457a5c;stop-opacity:1"/><stop offset="1" style="stop-color:#717516;stop-opacity:1"/></linearGradient><linearGradient id="e" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-79.1 149.53 -14.065) scale(73.28)"><stop offset="0" style="stop-color:#b0d939;stop-opacity:1"/><stop offset="1" style="stop-color:#eadb04;stop-opacity:1"/></linearGradient><linearGradient id="f" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-67.997 148.705 -15.558) scale(69.8226)"><stop offset="0" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".17" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".48" style="stop-color:#99be32;stop-opacity:1"/><stop offset="1" style="stop-color:#c0c40a;stop-opacity:1"/></linearGradient></defs></svg>',AP=btoa(EP),IP="data:image/svg+xml;charset=utf-8;base64,"+AP,jP=IP,ki=Symbol("shadowDomOwner"),LP=C("debugpatch");function Pd(n,t,i,s){const o=LP===t;if(!i&&!s)return;const r=t+"___needle";BP(n,t,i,s);const l=Object.getOwnPropertyDescriptor(n,t),c=n[t];o&&console.log("Patch",n.constructor.name,t,l,c),l?(o&&console.log("Apply patch with existing descriptor",n.constructor.name,t,l),typeof l.value=="function"&&(n[t]=ub(l.value,n,t))):(o&&console.log("Create patch with new property",n.constructor.name,t,l),Object.defineProperty(n,t,{set:function(h){if(typeof h=="function")this[r]=ub(h,n,t);else{const d=this[r];pb(n,t,this,d,h),this[r]=h,mb(n,t,this,d,h)}},get:function(){const h=this[r];return typeof h=="function"&&h[r]?h[r]:h}}))}function DP(n,t,i){const s=ig(n,t);if(s)for(let o=s.length-1;o>=0;o--){const r=s[o];r.prefix===i&&(r.prefix=null),r.postfix===i&&(r.postfix=null),!r.prefix&&!r.postfix&&s.splice(o,1)}}const db=Symbol("Needle:Patches:WrappedFunction");function ub(n,t,i){if(n[db])return n;const s=function(...o){pb(t,i,this,...o);const r=n.apply(this,o);return mb(t,i,this,r,...o),r};return s[db]=!0,s}const kd="Needle:Patches";function tg(){return globalThis[kd]||(globalThis[kd]=new WeakMap),globalThis[kd]}function ig(n,t){const i=tg().get(n);return i?i.get(t):null}function BP(n,t,i,s){let o=tg().get(n);o||(o=new Map,tg().set(n,o));let r=o.get(t);r||(r=[],o.set(t,r)),r.push({prefix:i,postfix:s})}function pb(n,t,i,...s){var o;if(!i)return;const r=ig(n,t);if(r)for(const l of r)(o=l.prefix)==null||o.call(i,...s)}function mb(n,t,i,s,...o){var r;if(!i)return;const l=ig(n,t);if(l)for(const c of l)(r=c.postfix)==null||r.call(i,s,...o)}const Sa=[];function Md(n){Sa.indexOf(n)===-1&&Sa.push(n)}function FP(n){const t=Sa.indexOf(n);t!==-1&&Sa.splice(t,1)}const Ca=[];function ng(n){Ca.indexOf(n)===-1&&Ca.push(n)}function zP(n){const t=Ca.indexOf(n);t!==-1&&Ca.splice(t,1)}function gb(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-start",{detail:n}));for(let t=0;t<Sa.length;t++)Sa[t](n)}function fb(n){globalThis.dispatchEvent(new CustomEvent("needle-xrsession-end",{detail:n}));for(let t=0;t<Ca.length;t++)Ca[t](n)}const dt=C("debuginput");var Rd=(n=>(n.Mouse="mouse",n.Touch="touch",n.Controller="controller",n.Hand="hand",n))(Rd||{}),Fe=(n=>(n.PointerDown="pointerdown",n.PointerUp="pointerup",n.PointerMove="pointermove",n.KeyDown="keydown",n.KeyUp="keyup",n.KeyPressed="keypress",n))(Fe||{});class Ss extends PointerEvent{constructor(t,i,s){super(t,s),a(this,"clientZ"),a(this,"deviceIndex"),a(this,"origin"),a(this,"source"),a(this,"mode"),a(this,"_ray"),a(this,"space"),a(this,"isClick",!1),a(this,"isDoubleClick",!1),a(this,"_used",!1),a(this,"_pointerid"),a(this,"_pointerType"),a(this,"_type"),a(this,"metadata",{}),a(this,"intersections",new Array),a(this,"_immediatePropagationStopped",!1),a(this,"_propagationStopped",!1),this.clientZ=s.clientZ,this._pointerid=s.pointerId,this._pointerType=s.pointerType,this._type=t,this.deviceIndex=s.deviceIndex,this.origin=s.origin,this.source=i,this.mode=s.mode,this._ray=s.ray,this.space=s.device}get isSpatial(){return this.mode!="screen"}get ray(){return this._ray||(this._ray=new lo(this.space.worldPosition.clone(),this.space.worldForward.clone())),this._ray}set ray(t){this._ray=t}get hasRay(){return this._ray!==void 0}get used(){return this._used}use(){this._used=!0}get pointerId(){return this._pointerid}get pointerType(){return this._pointerType}get type(){return this._type}get immediatePropagationStopped(){return this._immediatePropagationStopped}get propagationStopped(){return this._immediatePropagationStopped||this._propagationStopped}stopImmediatePropagation(){var t;this._immediatePropagationStopped=!0,super.stopImmediatePropagation(),(t=this.source)==null||t.stopImmediatePropagation()}stopPropagation(){var t;this._propagationStopped=!0,super.stopPropagation(),(t=this.source)==null||t.stopPropagation(),dt&&console.warn("Stop propagation...",this.pointerId,this.pointerType)}}class hc extends KeyboardEvent{constructor(t,i,s){super(t,s),a(this,"source"),this.source=i}stopImmediatePropagation(){var t;super.stopImmediatePropagation(),(t=this.source)==null||t.stopImmediatePropagation()}}class UP{constructor(t){a(this,"key"),a(this,"keyType"),a(this,"source"),this.key=t.key,this.keyType=t.type,this.source=t}}var ai=(n=>(n[n.Early=-100]="Early",n[n.Default=0]="Default",n[n.Late=100]="Late",n))(ai||{});class yb{constructor(t){a(this,"_eventListeners",{}),a(this,"_doubleClickTimeThreshold",.2),a(this,"_longPressTimeThreshold",1),a(this,"_setCursorTypes",[]),a(this,"context"),a(this,"_pointerDown",[!1]),a(this,"_pointerUp",[!1]),a(this,"_pointerClick",[!1]),a(this,"_pointerDoubleClick",[!1]),a(this,"_pointerPressed",[!1]),a(this,"_pointerPositions",[new re]),a(this,"_pointerPositionsLastFrame",[new re]),a(this,"_pointerPositionsDelta",[new re]),a(this,"_pointerPositionsRC",[new re]),a(this,"_pointerPositionDown",[new x]),a(this,"_pointerDownTime",[]),a(this,"_pointerUpTime",[]),a(this,"_pointerUpTimestamp",[]),a(this,"_pointerIds",[]),a(this,"_pointerTypes",[""]),a(this,"_mouseWheelChanged",[!1]),a(this,"_mouseWheelDeltaY",[0]),a(this,"_pointerEvent",[]),a(this,"_pointerEventsPressed",[]),a(this,"_pointerSpace",[]),a(this,"_pressedStack",new Map),a(this,"_htmlEventSource"),a(this,"onLostFocus",()=>{for(const i in this.keysPressed)this.keysPressed[i].pressed=!1}),a(this,"_receivedPointerMoveEventsThisFrame",new Array),a(this,"onEndOfFrame",()=>{this._receivedPointerMoveEventsThisFrame.length=0;for(let i=0;i<this._pointerUp.length;i++)this._pointerUp[i]=!1;for(let i=0;i<this._pointerDown.length;i++)this._pointerDown[i]=!1;for(let i=0;i<this._pointerClick.length;i++)this._pointerClick[i]=!1;for(let i=0;i<this._pointerDoubleClick.length;i++)this._pointerDoubleClick[i]=!1;for(const i of this._pointerPositionsDelta)i.set(0,0);for(let i=0;i<this._mouseWheelChanged.length;i++)this._mouseWheelChanged[i]=!1;for(let i=0;i<this._mouseWheelDeltaY.length;i++)this._mouseWheelDeltaY[i]=0}),a(this,"onContextMenu",i=>{this.canReceiveInput(i)!==!1&&i instanceof PointerEvent&&i.pointerType}),a(this,"keysPressed",{}),a(this,"onKeyDown",i=>{if(dt&&console.log(`key down ${i.code}, ${this.context.application.hasFocus}`,i),!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(s&&s.pressed)return;this.keysPressed[i.code]={pressed:!0,frame:this.context.time.frameCount+1,startFrame:this.context.time.frameCount+1,key:i.key,code:i.code};const o=new hc("keydown",i,i);this.onDispatchEvent(o)}),a(this,"onKeyPressed",i=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(!s)return;s.pressed=!0,s.frame=this.context.time.frameCount+1;const o=new hc("keypress",i,i);this.onDispatchEvent(o)}),a(this,"onKeyUp",i=>{if(!this.context.application.hasFocus)return;const s=this.keysPressed[i.code];if(!s)return;s.pressed=!1,s.frame=this.context.time.frameCount+1;const o=new hc("keyup",i,i);this.onDispatchEvent(o)}),a(this,"onWheelWindow",i=>{document.pointerLockElement&&this.onMouseWheel(i)}),a(this,"onMouseWheel",i=>{if(this.canReceiveInput(i)===!1)return;this._mouseWheelDeltaY.length<=0&&this._mouseWheelDeltaY.push(0),this._mouseWheelChanged.length<=0&&this._mouseWheelChanged.push(!1),this._mouseWheelChanged[0]=!0;const s=this._mouseWheelDeltaY[0];this._mouseWheelDeltaY[0]=s+i.deltaY}),a(this,"onPointerDown",i=>{if(this.context.isInAR||this.canReceiveInput(i)===!1)return;i.target instanceof HTMLElement&&i.target.setPointerCapture(i.pointerId);const s=this.getPointerId(i);dt&&Be(`pointer down #${s}, identifier:${i.pointerId}`);const o=this.getAndUpdateSpatialObjectForScreenPosition(s,i.clientX,i.clientY),r=new Ss("pointerdown",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:i.button,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:o,pressure:i.pressure});this.onDown(r)}),a(this,"onPointerMove",i=>{if(this.context.isInAR||this._receivedPointerMoveEventsThisFrame.includes(i.pointerId))return;this._receivedPointerMoveEventsThisFrame.push(i.pointerId);let s=i.button;i.pointerType==="mouse"&&(s=this.getFirstPressedButtonForPointer(0)??0);const o=this.getPointerId(i,s);s===-1&&(s=o);const r=this.getAndUpdateSpatialObjectForScreenPosition(o,i.clientX,i.clientY),l=new Ss("pointermove",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:o,button:s,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:r,pressure:i.pressure});this.onMove(l)}),a(this,"onPointerCancel",i=>{this.context.isInAR||(dt&&console.log("Pointer cancel",i),this.onPointerUp(i))}),a(this,"onPointerUp",i=>{if(this.context.isInAR)return;i.target instanceof HTMLElement&&i.target.releasePointerCapture(i.pointerId);const s=this.getPointerId(i),o=new Ss("pointerup",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:s,button:i.button,clientX:i.clientX,clientY:i.clientY,pointerType:i.pointerType,buttonName:this.getButtonName(i),device:this.getAndUpdateSpatialObjectForScreenPosition(s,i.clientX,i.clientY),pressure:i.pressure});this.onUp(o),this._pointerIds[s]=-1,dt&&console.log("ID="+s,"PointerId="+i.pointerId,"ALL:",[...this._pointerIds])}),a(this,"onTouchStart",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new Ss("pointerdown",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onDown(c)}}),a(this,"onTouchMove",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),c=new Ss("pointermove",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:l,pressure:o.force});this.onMove(c)}}),a(this,"onTouchEnd",i=>{if(this.context.isInAR)for(let s=0;s<i.changedTouches.length;s++){const o=i.changedTouches[s],r=this.getPointerIndex(o.identifier),l=new Ss("pointerup",i,{origin:this,mode:"screen",deviceIndex:0,pointerId:r,button:0,clientX:o.clientX,clientY:o.clientY,pointerType:"touch",buttonName:"unknown",device:this.getAndUpdateSpatialObjectForScreenPosition(r,o.clientX,o.clientY),pressure:o.force});this.onUp(l),this._pointerIds[r]=-1}}),a(this,"tempNearPlaneVector",new x),a(this,"tempFarPlaneVector",new x),a(this,"tempLookMatrix",new se),this.context=t,this.context.post_render_callbacks.push(this.onEndOfFrame)}addEventListener(t,i,s){if(this._eventListeners[t]||(this._eventListeners[t]=[]),!i||typeof i!="function"){console.error("Invalid call to addEventListener: callback is required and must be a function!");return}s?s={...s}:s={};let o=0;s?.queue!=null&&(o=s.queue);const r=this._eventListeners[t],l=r.find(c=>c.priority===o);l?l.listeners.push({callback:i,options:s}):(r.push({priority:o,listeners:[{callback:i,options:s}]}),r.sort((c,h)=>c.priority-h.priority))}removeEventListener(t,i,s){if(!this._eventListeners[t]||!i)return;const o=this._eventListeners[t];if(s?.queue!=null){const r=o.find(c=>c.priority===s.queue);if(!r)return;const l=r.listeners.findIndex(c=>c.callback===i);l>=0&&r.listeners.splice(l,1)}else for(const r of o){const l=r.listeners.findIndex(c=>c.callback===i);l>=0&&r.listeners.splice(l,1)}}dispatchEvent(t){var i,s,o,r;let l=!1;if(t instanceof hc){const c=this._eventListeners[t.type];if(c)for(const h of c)for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((s=(i=u.options)==null?void 0:i.signal)!=null&&s.aborted){h.listeners.splice(d,1),d--;continue}u.options.once&&(h.listeners.splice(d,1),d--),u.callback(t)}}if(t instanceof Ss){const c=this._eventListeners[t.type];if(c)for(const h of c){if(l)break;for(let d=0;d<h.listeners.length;d++){const u=h.listeners[d];if((r=(o=u.options)==null?void 0:o.signal)!=null&&r.aborted){h.listeners.splice(d,1),d--;continue}if(t.immediatePropagationStopped){l=!0,dt&&console.log("immediatePropagationStopped",t.type);break}else t.propagationStopped&&(l=!0,dt&&console.log("propagationStopped",t.type));u.options.once&&(h.listeners.splice(d,1),d--),u.callback(t)}}}}get mousePosition(){return this._pointerPositions[0]}get mousePositionRC(){return this._pointerPositionsRC[0]}get mouseDown(){return this._pointerDown[0]}get mouseUp(){return this._pointerUp[0]}get mouseClick(){return this._pointerClick[0]}get mouseDoubleClick(){return this._pointerDoubleClick[0]}get mousePressed(){return this._pointerPressed[0]}get mouseWheelChanged(){return this.getMouseWheelChanged(0)}get click(){return this._pointerClick[0]}get doubleClick(){return this._pointerDoubleClick[0]}getGamepad(t=0){return typeof navigator<"u"&&"getGamepads"in navigator&&navigator.getGamepads()[t]||null}setCursorPointer(){this.setCursor("pointer")}setCursorNormal(){this.unsetCursor("pointer")}setCursor(t){this._setCursorTypes.push(t),this._setCursorTypes.length>10&&this._setCursorTypes.shift(),this.updateCursor()}unsetCursor(t){for(let i=this._setCursorTypes.length-1;i>=0;i--)if(this._setCursorTypes[i]===t){this._setCursorTypes.splice(i,1),this.updateCursor();break}}updateCursor(){var t;((t=this._setCursorTypes)==null?void 0:t.length)==0?this.context.domElement.style.cursor="default":this.context.domElement.style.cursor=this._setCursorTypes[this._setCursorTypes.length-1]}getIsPointerIdInUse(t){for(const i of this._pointerEventsPressed)if(i.pointerId===t&&i.used)return!0;return!1}getPointerPressedCount(){let t=0;for(let i=0;i<this._pointerPressed.length;i++)this._pointerPressed[i]&&t++;return t}getPointerPosition(t){return t>=this._pointerPositions.length?null:this._pointerPositions[t]}getPointerPositionLastFrame(t){return t>=this._pointerPositionsLastFrame.length?null:this._pointerPositionsLastFrame[t]}getPointerPositionDelta(t){return t>=this._pointerPositionsDelta.length?null:this._pointerPositionsDelta[t]}getPointerPositionRC(t){return t>=this._pointerPositionsRC.length?null:this._pointerPositionsRC[t]}getPointerDown(t){return t>=this._pointerDown.length?!1:this._pointerDown[t]}getPointerUp(t){return t>=this._pointerUp.length?!1:this._pointerUp[t]}getPointerPressed(t){return t>=this._pointerPressed.length?!1:this._pointerPressed[t]}getPointerClicked(t){return t>=this._pointerClick.length?!1:this._pointerClick[t]}getPointerDoubleClicked(t){return t>=this._pointerDoubleClick.length?!1:this._pointerDoubleClick[t]}getPointerDownTime(t){return t>=this._pointerDownTime.length?-1:this._pointerDownTime[t]}getPointerUpTime(t){return t>=this._pointerUpTime.length?-1:this._pointerUpTime[t]}getPointerLongPress(t){return t>=this._pointerDownTime.length?!1:this.getPointerPressed(t)&&this.context.time.time-this._pointerDownTime[t]>this._longPressTimeThreshold}getIsMouse(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="mouse"}getIsTouch(t){return t<0||t>=this._pointerTypes.length?!1:this._pointerTypes[t]==="touch"}getTouchesPressedCount(){let t=0;for(let i=0;i<this._pointerPressed.length;i++)this._pointerPressed[i]&&this.getIsTouch(i)&&t++;return t}getMouseWheelChanged(t=0){return t>=this._mouseWheelChanged.length?!1:this._mouseWheelChanged[t]}getMouseWheelDeltaY(t=0){return t>=this._mouseWheelDeltaY.length?0:this._mouseWheelDeltaY[t]}getPointerEvent(t){if(!(t>=this._pointerEvent.length))return this._pointerEvent[t]??void 0}*foreachPointerId(t){for(let i=0;i<this._pointerTypes.length;i++)if(this._pointerIsActive(i)){if(t!==void 0){const s=this._pointerTypes[i];if(Array.isArray(t)){let o=!1;for(const r of t)if(s===r){o=!0;break}if(!o)continue}else if(t!==s)continue}yield i}}*foreachTouchId(){for(let t=0;t<this._pointerTypes.length;t++)this._pointerTypes[t]==="touch"&&this._pointerIsActive[t]&&(yield t)}_pointerIsActive(t){return t<0?!1:this._pointerPressed[t]||this._pointerDown[t]||this._pointerUp[t]}onDownButton(t,i){let s=this._pressedStack.get(t);s||(s=[],this._pressedStack.set(t,s)),s.push(i)}onReleaseButton(t,i){const s=this._pressedStack.get(t);if(!s)return;const o=s.indexOf(i);o>=0&&s.splice(o,1)}getFirstPressedButtonForPointer(t){const i=this._pressedStack.get(t);if(i)return i[0]}getLatestPressedButtonForPointer(t){const i=this._pressedStack.get(t);if(i)return i[i.length-1]}getKeyDown(){for(const t in this.keysPressed){const i=this.keysPressed[t];if(i.startFrame===this.context.time.frameCount)return i.key}return null}getKeyPressed(){for(const t in this.keysPressed){const i=this.keysPressed[t];if(i.pressed)return i.key}return null}isKeyDown(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyDown(o))return!0;return!1}return((i=this.keysPressed[t])==null?void 0:i.startFrame)===this.context.time.frameCount&&this.keysPressed[t].pressed}isKeyUp(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyUp(o))return!0;return!1}return((i=this.keysPressed[t])==null?void 0:i.frame)===this.context.time.frameCount&&!this.keysPressed[t].pressed}isKeyPressed(t){var i;if(!this.context.application.isVisible||!this.context.application.hasFocus)return!1;const s=this.getCodeForCommonKeyName(t);if(s!==null){for(const o of s)if(this.isKeyPressed(o))return!0;return!1}return(i=this.keysPressed[t])==null?void 0:i.pressed}getCodeForCommonKeyName(t){if(t.length===1){if(t>="0"&&t<="9")return["Digit"+t];if(t>="a"&&t<="z")return["Key"+t.toUpperCase()];if(t==" ")return["Space"]}switch(t){case"shift":case"Shift":return["ShiftLeft","ShiftRight"];case"control":case"Control":return["ControlLeft","ControlRight"];case"alt":case"Alt":return["AltLeft","AltRight"]}return null}createInputEvent(t){switch(t.type){case"pointerdown":dt&&Be("Create Pointer down"),this.onDownButton(t.deviceIndex,t.button),this.onDown(t);break;case"pointermove":dt&&Be("Create Pointer move"),this.onMove(t);break;case"pointerup":dt&&Be("Create Pointer up"),this.onUp(t),this.onReleaseButton(t.deviceIndex,t.button);break}}convertScreenspaceToRaycastSpace(t){return t.x=(t.x-this.context.domX)/this.context.domWidth*2-1,t.y=-((t.y-this.context.domY)/this.context.domHeight)*2+1,t}bindEvents(){this.unbindEvents(),this._htmlEventSource=this.context.renderer.domElement,window.addEventListener("contextmenu",this.onContextMenu),this._htmlEventSource.addEventListener("pointerdown",this.onPointerDown,{passive:!0}),window.addEventListener("pointermove",this.onPointerMove,{passive:!0,capture:!0}),window.addEventListener("pointerup",this.onPointerUp,{passive:!0}),window.addEventListener("pointercancel",this.onPointerCancel,{passive:!0}),window.addEventListener("touchstart",this.onTouchStart,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchEnd,{passive:!0}),this._htmlEventSource.addEventListener("wheel",this.onMouseWheel,{passive:!0}),window.addEventListener("wheel",this.onWheelWindow,{passive:!0}),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keypress",this.onKeyPressed,!1),window.addEventListener("keyup",this.onKeyUp,!1),window.addEventListener("blur",this.onLostFocus)}unbindEvents(){var t,i;window.removeEventListener("contextmenu",this.onContextMenu),(t=this._htmlEventSource)==null||t.removeEventListener("pointerdown",this.onPointerDown),window.removeEventListener("pointermove",this.onPointerMove),window.removeEventListener("pointerup",this.onPointerUp),window.removeEventListener("pointercancel",this.onPointerCancel),window.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),(i=this._htmlEventSource)==null||i.removeEventListener("wheel",this.onMouseWheel,!1),window.removeEventListener("wheel",this.onWheelWindow,!1),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keypress",this.onKeyPressed,!1),window.removeEventListener("keyup",this.onKeyUp,!1),window.removeEventListener("blur",this.onLostFocus)}dispose(){const t=this.context.post_render_callbacks.indexOf(this.onEndOfFrame);t>=0&&this.context.post_render_callbacks.splice(t,1),this.unbindEvents()}canReceiveInput(t){var i;return t.target===((i=this.context.renderer)==null?void 0:i.domElement)||t.target===this.context.domElement||this.context.isInAR||this.context.isInAR&&t.target===document.body&&Q.isMozillaXR()?!0:(dt&&console.warn("CanReceiveInput:False for",t.target),!1)}getPointerId(t,i){return t.pointerType==="mouse"?0+(i??t.button):this.getPointerIndex(t.pointerId)}getButtonName(t){const i=t.button;if(t.pointerType==="mouse")switch(i){case 0:return"left";case 1:return"middle";case 2:return"right"}return"unknown"}getAndUpdateSpatialObjectForScreenPosition(t,i,s){let o=this._pointerSpace[t];o||(o=new I,this._pointerSpace[t]=o),this._pointerSpace[t]=o;const r=this.context.mainCamera;if(r){const l=this.tempNearPlaneVector.set(i,s,-1);this.convertScreenspaceToRaycastSpace(l);const c=this.tempFarPlaneVector.set(l.x,l.y,1);l.unproject(r),c.unproject(r);const h=r.worldUp||q(0,1,0).applyQuaternion(Ce(r));this.tempLookMatrix.lookAt(c,l,h),o.position.set(l.x,l.y,l.z),o.quaternion.setFromRotationMatrix(this.tempLookMatrix)}return o}isInRect(t){if(this.context.isInXR)return!0;const i=this.context.domElement.getBoundingClientRect(),s=t.clientX,o=t.clientY,r=s>=i.x&&s<=i.right&&o>=i.y&&o<=i.bottom;return dt&&!r&&console.log("Not in rect",i,s,o),r}onDown(t){const i=t.pointerId;if(this.getPointerPressed(i)&&console.warn(`Received pointerDown for pointerId that is already pressed: ${i}`,dt?t:""),dt&&console.log(t.pointerType,"DOWN",i),!!this.isInRect(t)){for(this.setPointerState(i,this._pointerPressed,!0),this.setPointerState(i,this._pointerDown,!0),this.setPointerStateT(i,this._pointerEvent,t.source);i>=this._pointerTypes.length;)this._pointerTypes.push(t.pointerType);for(this._pointerTypes[i]=t.pointerType;i>=this._pointerPositionDown.length;)this._pointerPositionDown.push(new x);for(this._pointerPositionDown[i].set(t.clientX,t.clientY,t.clientZ??0);i>=this._pointerPositions.length;)this._pointerPositions.push(new re);this._pointerPositions[i].set(t.clientX,t.clientY),i>=this._pointerDownTime.length&&this._pointerDownTime.push(0),this._pointerDownTime[i]=this.context.time.realtimeSinceStartup,this.updatePointerPosition(t),this._pointerEventsPressed.push(t),this.onDispatchEvent(t)}}onMove(t){const i=t.pointerId,s=this.getPointerPressed(i);s===!1&&!this.isInRect(t)||t.pointerType==="touch"&&!s||(this.updatePointerPosition(t),this.setPointerStateT(i,this._pointerEvent,t.source),this.onDispatchEvent(t))}onUp(t){const i=t.pointerId;if(!this.getPointerPressed(i)){dt&&console.log(t.pointerType,"UP",i,"was not down");return}dt&&console.log(t.pointerType,"UP",i),this.setPointerState(i,this._pointerPressed,!1),this.setPointerStateT(i,this._pointerEvent,t.source),this.setPointerState(i,this._pointerUp,!0),this.updatePointerPosition(t);for(let c=this._pointerEventsPressed.length-1;c>=0;c--)if(this._pointerEventsPressed[c].pointerId===i){this._pointerEventsPressed.splice(c,1);break}if(!this._pointerPositionDown[i]){dt&&_e("Received pointer up event without matching down event for button: "+i),console.warn("Received pointer up event without matching down event for button: "+i);return}const s=this._pointerUpTime[i],o=this._pointerDownTime[i],r=this.context.time.realtimeSinceStartup,l=r-o;if(i>=this._pointerUpTime.length&&this._pointerUpTime.push(-99),this._pointerUpTime[i]=r,l<1){let c=t.clientX-this._pointerPositionDown[i].x,h=t.clientY-this._pointerPositionDown[i].y,d=0;if(t.isSpatial&&t.clientZ!=null&&(d=t.clientZ-this._pointerPositionDown[i].z,c*=200,h*=200,d*=200),Math.abs(c)<5&&Math.abs(h)<5&&Math.abs(d)<5){this.setPointerState(i,this._pointerClick,!0),t.isClick=!0;const u=r-s;dt&&console.log("CLICK",i,c,h,d,u),u<this._doubleClickTimeThreshold&&u>0&&(this.setPointerState(i,this._pointerDoubleClick,!0),t.isDoubleClick=!0)}}this.onDispatchEvent(t)}updatePointerPosition(t){const i=t.pointerId;for(;i>=this._pointerPositions.length;)this._pointerPositions.push(new re);for(;i>=this._pointerPositionsLastFrame.length;)this._pointerPositionsLastFrame.push(new re);for(;i>=this._pointerPositionsDelta.length;)this._pointerPositionsDelta.push(new re);const s=this._pointerPositionsLastFrame[i];s.copy(this._pointerPositions[i]);const o=this._pointerPositionsDelta[i];let r=t.clientX-s.x,l=t.clientY-s.y;if(t.source instanceof MouseEvent||t.source instanceof TouchEvent){const u=t.source;r===0&&u.movementX!==0&&(r=u.movementX||0),l===0&&u.movementY!==0&&(l=u.movementY||0)}o.x+=r,o.y+=l,this._pointerPositions[i].x=t.clientX,this._pointerPositions[i].y=t.clientY;const c=t.clientX,h=t.clientY;for(;i>=this._pointerPositionsRC.length;)this._pointerPositionsRC.push(new re);const d=this._pointerPositionsRC[i];d.set(c,h),this.convertScreenspaceToRaycastSpace(d)}getPointerIndex(t){let i=-1;for(let s=0;s<this._pointerIds.length;s++){if(this._pointerIds[s]===t)return s;i===-1&&this._pointerIds[s]===-1&&(i=s)}return i!==-1?(this._pointerIds[i]=t,i):(dt&&console.log("PUSH pointerId:",t),this._pointerIds.push(t),this._pointerIds.length-1)}setPointerState(t,i,s){i[t]=s}setPointerStateT(t,i,s){return i[t]=s,s}onDispatchEvent(t){const i=ee.Current;try{ee.Current=this.context,this.dispatchEvent(t)}finally{ee.Current=i}}}const Oa=new se().makeRotationY(Math.PI),qi=new V().setFromAxisAngle(new x(0,1,0),Math.PI),NP=C("debugwebxr");class WP{constructor(){if(a(this,"priority",-1e5),a(this,"gameObject"),this.gameObject=new I,this.gameObject.name="Implicit XR Rig",NP){const t=bg(16733661);t.position.y+=.5,this.gameObject.add(t)}}isXRRig(){return!0}get isActive(){return this.gameObject.visible}}const Cs=C("debugwebxr"),Td=C("debugcustomgesture"),VP="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",HP="generic-trigger",$P=new V().setFromEuler(new Ft(ms.degToRad(0),ms.degToRad(-90),ms.degToRad(-90))),GP=new x(.04,-.04,0);class sg{constructor(t,i,s){a(this,"xr"),a(this,"inputSource"),a(this,"index",0),a(this,"emitEvents",!0),a(this,"_connected",!0),a(this,"_isTracking",!1),a(this,"__gamepad"),a(this,"__hand"),a(this,"__side"),a(this,"_hitTestSource"),a(this,"_hasSelectEvent",!1),a(this,"_isMxInk",!1),a(this,"_isMetaQuestTouchController",!1),a(this,"_handJointPoses",new Map),a(this,"_gripMatrix",new se),a(this,"_gripPosition",new x),a(this,"_gripQuaternion",new V),a(this,"_linearVelocity",new x),a(this,"_rayPositionRaw",new x),a(this,"_rayRotationRaw",new V),a(this,"_rayMatrix",new se),a(this,"_rayPosition",new x),a(this,"_rayQuaternion",new V),a(this,"_gripWorldPosition",new x),a(this,"_gripWorldQuaternion",new V),a(this,"_rayWorldPosition",new x),a(this,"_rayWorldQuaternion",new V),a(this,"_pinchPosition",new x),a(this,"_ray"),a(this,"_hand_wristDotUp"),a(this,"_object"),a(this,"_gripSpaceObject"),a(this,"_raySpaceObject"),a(this,"model",null),a(this,"_debugAxesHelper",new Si(.15)),a(this,"_debugGripAxesHelper",new Si(.07)),a(this,"_debugRayAxesHelper",new Si(.07)),a(this,"_hitTestSourcePromise",null),a(this,"onPointerHits",o=>{}),a(this,"_needleGamepadButtons",{}),a(this,"_buttonMap",new Map),a(this,"_motioncontroller"),a(this,"_layout"),a(this,"getMotionController"),a(this,"emitPointerDownEvent",!0),a(this,"emitPointerUpEvent",!0),a(this,"emitPointerMoveEvent",!0),a(this,"pointerMoveDistanceThreshold",.03),a(this,"pointerMoveAngleThreshold",.05),a(this,"_selectButtonIndex"),a(this,"_squeezeButtonIndex"),a(this,"onSelectStart",o=>{var r,l,c,h;if(!this.emitPointerDownEvent||this.inputSource!==o.inputSource)return;this.onUpdateFrame(o.frame),this._hasSelectEvent=!0;const d=(r=this._layout)==null?void 0:r.selectComponentId,u=(h=(c=(l=this._layout)==null?void 0:l.components[d])==null?void 0:c.gamepadIndices)==null?void 0:h.button;u!==void 0&&(this._selectButtonIndex=u),!Td&&(Cs&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),16711680,10),this.emitPointerEvent(Fe.PointerDown,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSelectEnd",o=>{this.emitPointerUpEvent&&(Td||this.inputSource===o.inputSource&&this.emitPointerEvent(Fe.PointerUp,this._selectButtonIndex||0,"xr-standard-trigger",!0,o))}),a(this,"onSequeezeStart",o=>{var r,l,c;this.emitPointerDownEvent&&this.inputSource===o.inputSource&&(this._squeezeButtonIndex=(c=(l=(r=this._layout)==null?void 0:r.components["xr-standard-squeeze"])==null?void 0:l.gamepadIndices)==null?void 0:c.button,this._squeezeButtonIndex!==void 0&&(Cs&&$.DrawDirection(this.rayWorldPosition,q(0,.01,1).applyQuaternion(this.rayWorldQuaternion),255,10),this.emitPointerEvent(Fe.PointerDown,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)))}),a(this,"onSequeezeEnd",o=>{this.emitPointerUpEvent&&this.inputSource===o.inputSource&&this._squeezeButtonIndex!==void 0&&this.emitPointerEvent(Fe.PointerUp,this._squeezeButtonIndex||0,"xr-standard-squeeze",!0,o)}),a(this,"states",{}),a(this,"_didMoveLastFrame",!1),a(this,"_lastPointerMovePosition",new x),a(this,"_lastPointerMoveQuaternion",new V),a(this,"pointerInit"),this.xr=t,this.inputSource=i,this.index=s,this._object=new I,this._object.name=`NeedleXRController_${s}`,Cs&&(this._object.add(this._debugAxesHelper),this._gripSpaceObject=new I,this._raySpaceObject=new I,this._gripSpaceObject.name=`NeedleXRController_${s}_gripSpace`,this._raySpaceObject.name=`NeedleXRController_${s}_raySpace`,this._gripSpaceObject.add(this._debugGripAxesHelper),this._raySpaceObject.add(this._debugRayAxesHelper),this.xr.context.scene.add(this._gripSpaceObject),this.xr.context.scene.add(this._raySpaceObject)),this.xr.context.scene.add(this._object),this._ray=new lo,this.pointerInit={origin:this,pointerType:this.hand?"hand":"controller",deviceIndex:this.index,pointerId:-1,mode:this.inputSource.targetRayMode,ray:this._ray,device:this._object,buttonName:"none"},this.initialize(),this.subscribeEvents()}get context(){return this.xr.context}get connected(){return this._connected}get isTracking(){return this._isTracking}get gamepad(){return this.__gamepad??(this.__gamepad=this.inputSource.gamepad)}get isHand(){return this.hand!=null}get hand(){return this.__hand??(this.__hand=this.inputSource.hand)}get handObject(){return this.context.renderer.xr.getHand(this.index)}get profiles(){return this.inputSource.profiles}get layout(){return this._layout}get targetRayMode(){return this.inputSource.targetRayMode}get targetRaySpace(){return this.inputSource.targetRaySpace}get gripSpace(){return this.inputSource.gripSpace}get side(){return this.__side??(this.__side=this.inputSource.handedness)}get isRight(){return this.side==="right"}get isLeft(){return this.side==="left"}get isStylus(){return this._isMxInk}getHitTestSource(){return this._hitTestSource||this._requestHitTestSource(),this._hitTestSource}get hasHitTestSource(){return this._hitTestSource}cancelHitTestSource(){this._hitTestSource&&(this._hitTestSource.cancel(),this._hitTestSource=void 0)}get hasSelectEvent(){return this._hasSelectEvent}getHitTest(){return this.xr.getHitTest(this)}getHandJointPose(t,i){var s;if(i=i||this.xr.frame,!this.hand||!(i!=null&&i.getJointPose)||!this.xr.referenceSpace)return null;let o=(s=this._handJointPoses)==null?void 0:s.get(t);return o||(o=i.getJointPose(t,this.xr.referenceSpace),o&&this._handJointPoses.set(t,o),o)}get gripPosition(){return q(this._gripPosition)}get gripQuaternion(){return yn(this._gripQuaternion)}get gripMatrix(){return this._gripMatrix}get gripLinearVelocity(){return q(this._linearVelocity).applyQuaternion(qi)}get rayPosition(){return q(this._rayPosition)}get rayQuaternion(){return yn(this._rayQuaternion)}get gripWorldPosition(){return q(this._gripWorldPosition)}get gripWorldQuaternion(){return yn(this._gripWorldQuaternion)}get rayWorldPosition(){return q(this._rayWorldPosition)}updateRayWorldPosition(){var t;const i=(t=this.xr.context.mainCamera)==null?void 0:t.parent;this._rayWorldPosition.copy(this._rayPositionRaw),i&&this._rayWorldPosition.applyMatrix4(i.matrixWorld)}get rayWorldQuaternion(){return yn(this._rayWorldQuaternion)}get pinchPosition(){return q(this._pinchPosition)}updateRayWorldQuaternion(){var t;const i=(t=this.xr.context.mainCamera)==null?void 0:t.parent,s=i?Ce(i):void 0;this._rayWorldQuaternion.copy(this._rayRotationRaw).multiply(qi),s&&this._rayWorldQuaternion.premultiply(s)}get ray(){return this._ray.origin.copy(this.rayWorldPosition),this._ray.direction.copy(q(0,0,1).applyQuaternion(this.rayWorldQuaternion)),this._ray}get handWristDotUp(){var t;if(this._hand_wristDotUp!==void 0)return this._hand_wristDotUp;const i=(t=this.handObject)==null?void 0:t.joints.wrist;if(i){const s=q(0,1,0).applyQuaternion(i.quaternion),o=q(0,1,0).dot(s);return this._hand_wristDotUp=o}}get isHandUpsideDown(){return this.handWristDotUp!==void 0?this.handWristDotUp<-.7:!1}get isTeleportGesture(){var t;return this.isHandUpsideDown&&((t=this.getGesture("pinch"))==null?void 0:t.isDown)}get object(){return this._object}async getModelUrl(){var t;return(t=this.getMotionController)==null?void 0:t.then(i=>i?.assetUrl||null)}_requestHitTestSource(){var t;return this._hitTestSourcePromise?this._hitTestSourcePromise:this.xr.mode==="immersive-ar"&&this.inputSource.targetRayMode==="tracked-pointer"&&this.xr.session.requestHitTestSourceForTransientInput?this._hitTestSourcePromise=((t=this.xr.session.requestHitTestSourceForTransientInput({profile:this.inputSource.profiles[0],offsetRay:new XRRay}))==null?void 0:t.then(i=>(this._hitTestSourcePromise=null,this.connected?this._hitTestSource=i:(i.cancel(),null))))??null:null}onUpdate(t){this.onUpdateFrame(t),this.updateInputEvents(),this.onUpdateMove()}onRenderDebug(){var t;$.DrawSphere(this.rayWorldPosition,.003),$.DrawDirection(this.rayWorldPosition,q(0,0,10).applyQuaternion(this.rayWorldQuaternion));const i=(this.inputSource.gripSpace?this.gripWorldPosition:this.object.worldPosition).sub(this.object.worldForward.multiplyScalar(.1)),s=this.inputSource.profiles.join(`
|
|
135
135
|
`);let o=`Controller[${this.index}] (${this.inputSource.targetRayMode}, ${this.side})
|
|
136
136
|
C:${this.connected?"x":"-"} T:${this.isTracking?"x":"-"} Hand:${this.inputSource.hand?"x":"-"} Pen: ${this._isMxInk?"x":"-"}`;if(this.inputSource.hand&&(o+=`
|
|
137
137
|
Pinch: ${(t=this.getGesture("pinch"))==null?void 0:t.value.toFixed(3)}`),o+=`
|
|
@@ -176,7 +176,7 @@ Please use the component type instead. This may keep working in local developmen
|
|
|
176
176
|
|
|
177
177
|
You can import other modules your main module to get access to types
|
|
178
178
|
or if you use npmdefs you can make types available globally using globalThis:
|
|
179
|
-
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),O_()&&console.log("[onGetComponent] FIND",t),t==null))return null;for(let o=0;o<n.userData.components.length;o++){const r=n.userData.components[o];let l=Object.getPrototypeOf(r);for(;l;){if(l===t.prototype)if(O_()&&console.log("[onGetComponent] MATCH BY PROTOYPE",l),i)i.push(r);else return r;l=Object.getPrototypeOf(l)}}return i||null}function br(n,t){const i=R_(n,t);return i?Array.isArray(i)?i[0]:i:null}function Sc(n,t,i,s=!0){return i||(i=[]),s&&(i.length=0),R_(n,t,i),i}function Cc(n,t,i){var s;const o=br(n,t);if(i===!1&&o?.enabled===!1)return null;if(o)return o;for(let r=0;r<((s=n?.children)==null?void 0:s.length);r++){const l=Cc(n.children[r],t);if(l)return l}return null}function Ia(n,t,i,s=!0){var o;i||(i=[]),s&&(i.length=0),Sc(n,t,i,!1);for(let r=0;r<((o=n?.children)==null?void 0:o.length);r++)Ia(n.children[r],t,i,!1);return i}function Oc(n,t){if(!n)return null;if(Array.isArray(n)){for(let s=0;s<n.length;s++){const o=X2(n[s]),r=Oc(o,t);if(r)return r}return null}return br(n,t)||(n.parent?Oc(n.parent,t):null)}function qd(n,t,i,s=!0){return i||(i=[]),s&&(i.length=0),n?(Sc(n,t,i,!1),n.parent?qd(n.parent,t,i,!1):i):i}function Pc(n,t=void 0,i=!0){if(!n)return null;if(!t&&(t=ee.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),null;let s=t;if(s.isScene||(s=t?.scene),!s)return null;for(const o in s.children){const r=s.children[o];if(i===!1&&r[xs]===!1)continue;const l=Cc(r,n);if(l)return l}return null}function T_(n,t,i=void 0){if(!n)return t??[];if(t||(t=[]),t.length=0,!i&&(i=ee.Current,!i))return console.error("Can not search object without any needle context or scene!!!"),t;"scene"in i&&(i=i.scene);const s=i;if(!s)return t;for(const o in s.children){const r=s.children[o];Ia(r,n,t,!1)}return t}function Xd(n){n&&n.isObject3D===!0&&S_(n,I)}I.prototype.SetActive=function(n){this.visible=n},I.prototype.setActive=function(n){this.visible=n},I.prototype.destroy=function(){Ei(this)},I.prototype.addComponent=function(n,t){return Ti(this,n,t)},I.prototype.addNewComponent=function(n,t){return Ti(this,n,t)},I.prototype.removeComponent=function(n){return Hg(this,n)},I.prototype.getOrAddComponent=function(n,t){return xc(this,n,t)},I.prototype.getComponent=function(n){return br(this,n)},I.prototype.getComponents=function(n,t){return Sc(this,n,t)},I.prototype.getComponentInChildren=function(n){return Cc(this,n)},I.prototype.getComponentsInChildren=function(n,t){return Ia(this,n,t)},I.prototype.getComponentInParent=function(n){return Oc(this,n)},I.prototype.getComponentsInParent=function(n,t){return qd(this,n,t)},Object.getOwnPropertyDescriptor(I.prototype,"activeSelf")||Object.defineProperty(I.prototype,"activeSelf",{get:function(){return ja(this)},set:function(n){kc(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldPosition")||Object.defineProperty(I.prototype,"worldPosition",{get:function(){return this instanceof rv?te(this.object):te(this)},set:function(n){ht(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldQuaternion")||Object.defineProperty(I.prototype,"worldQuaternion",{get:function(){return this instanceof rv?Ce(this.object):Ce(this)},set:function(n){Hi(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldRotation")||Object.defineProperty(I.prototype,"worldRotation",{get:function(){return tc(this)},set:function(n){qm(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldScale")||Object.defineProperty(I.prototype,"worldScale",{get:function(){return Ye(this)},set:function(n){xa(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldForward")||Object.defineProperty(I.prototype,"worldForward",{get:function(){return q().set(0,0,1).applyQuaternion(Ce(this))}}),Object.getOwnPropertyDescriptor(I.prototype,"worldRight")||Object.defineProperty(I.prototype,"worldRight",{get:function(){return q().set(1,0,0).applyQuaternion(Ce(this))}}),Object.getOwnPropertyDescriptor(I.prototype,"worldUp")||Object.defineProperty(I.prototype,"worldUp",{get:function(){return q().set(0,1,0).applyQuaternion(Ce(this))}}),C_(I);class le extends ce{constructor(t,i,s,o){var r=(...l)=>{super(...l),a(this,"alpha",1)};i!=null&&s!=null?(r(t,i,s),this.alpha=o):(r(t),this.alpha=1)}get isRGBAColor(){return!0}set a(t){this.alpha=t}get a(){return this.alpha}clone(){const t=super.clone();return t.alpha=this.alpha,t}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,"alpha"in t&&typeof t.alpha=="number"?this.alpha=t.alpha:typeof t.a=="number"&&(this.alpha=t.a),this}lerp(t,i){const s=t;return s.alpha!=null&&(this.alpha=W.lerp(this.alpha,s.alpha,i)),super.lerp(t,i)}lerpColors(t,i,s){const o=t,r=i;return o.alpha!=null&&r.alpha!=null&&(this.alpha=W.lerp(o.alpha,r.alpha,s)),super.lerpColors(t,i,s)}multiply(t){const i=t;return i.alpha!=null&&(this.alpha=this.alpha*i.alpha),super.multiply(t)}fromArray(t,i=0){return this.alpha=t[i+3],super.fromArray(t,i)}static fromColorRepresentation(t){if(typeof t=="string"){if(t.trim()==="transparent")return new le(0,0,0,0);if(t.startsWith("#")&&t.length===9){const i=parseInt(t.slice(1,9),16),s=i>>24&255,o=i>>16&255,r=i>>8&255,l=i>>0&255;return new le(s/255,o/255,r/255,l/255)}else if(t.startsWith("#")){const i=parseInt(t.slice(1),16),s=i>>16&255,o=i>>8&255,r=i>>0&255;return new le(s/255,o/255,r/255,1)}else if(t.startsWith("rgba")){const i=t.slice(5,-1).split(",").map(Number);return new le(i[0]/255,i[1]/255,i[2]/255,i[3])}else if(t.startsWith("rgb")){const i=t.slice(4,-1).split(",").map(Number);return new le(i[0]/255,i[1]/255,i[2]/255,1)}}else if(Array.isArray(t)){if(t.length===4)return new le(t[0],t[1],t[2],t[3]);if(t.length===3)return new le(t[0],t[1],t[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+t.length)}return new le(t)}}const Qd=C("debuggetcomponent"),Yd=C("debuginstantiate");class Ln{constructor(){a(this,"idProvider"),a(this,"parent"),a(this,"keepWorldPosition"),a(this,"position"),a(this,"rotation"),a(this,"scale"),a(this,"visible"),a(this,"context"),a(this,"components")}clone(){var t,i,s;const o=new Ln;return o.idProvider=this.idProvider,o.parent=this.parent,o.keepWorldPosition=this.keepWorldPosition,o.position=(t=this.position)==null?void 0:t.clone(),o.rotation=(i=this.rotation)==null?void 0:i.clone(),o.scale=(s=this.scale)==null?void 0:s.clone(),o.visible=this.visible,o.context=this.context,o.components=this.components,o}cloneAssign(t){var i,s,o;this.idProvider=t.idProvider,this.parent=t.parent,this.keepWorldPosition=t.keepWorldPosition,this.position=(i=t.position)==null?void 0:i.clone(),this.rotation=(s=t.rotation)==null?void 0:s.clone(),this.scale=(o=t.scale)==null?void 0:o.clone(),this.visible=t.visible,this.context=t.context,this.components=t.components}}function ja(n){return n.visible}function kc(n,t){return typeof t=="number"&&(t=t>.5),n.visible=t,n.visible}function E_(n){return n[xs]||Zd(n)}function A_(n,t){n[Jb]=t}function Zd(n){return an.isUsingInstancing(n)}function $g(n,t){return _a(n,t,!0,!0)}const I_=Symbol("isDestroyed");function _r(n){return n[I_]}function j_(n,t){n[I_]=t}const Gg=Symbol("isDontDestroy");function La(n,t=!0){n[Gg]=t}const Kd=[],Jd=[];function Ei(n,t=!0,i=!1){Kd.length=0,Jd.length=0,qg(n,t,!0);for(const s of Kd)s.gameObject=null,s.context=null;for(const s of Jd)j_(s,!0),i&&Ee(s),Zb(s);Jd.length=0,Kd.length=0}function qg(n,t=!0,i=!0){var s;if(n==null)return;const o=n;if(o.isComponent){if(o[Gg])return;Kd.push(o);const c=o.gameObject;o.__internalDisable(),o.__internalDestroy(),o.gameObject=c;return}if(n[Gg])return;const r=n;Qd&&console.log(r),Jd.push(r);const l=(s=r.userData)==null?void 0:s.components;if(l!=null&&Array.isArray(l)){let c=l.length;for(let h=0;h<l.length;h++){const d=l[h];qg(d,t,!1),l.length<c&&(c=l.length,h--)}}if(t&&r.children)for(const c of r.children)qg(c,t,!1);i&&r.removeFromParent()}function wr(n,t,i=!0){return L_(n,t,i)}function*eu(n,t,i=!1,s=999,o=0){if(n!=null&&n.userData.components&&!(o>s)){for(const r of n.userData.components)t&&r?.isComponent===!0&&r instanceof t?yield r:yield r;if(i===!0)for(const r of n.children)yield*eu(r,t,!0,s,o+1)}}function L_(n,t,i,s=0){var o;if(n){if(n.isObject3D,s>1e3){console.warn("Failed to iterate components: too many levels");return}if((o=n.userData)!=null&&o.components)for(let r=0;r<n.userData.components.length;r++){const l=n.userData.components[r];if(l?.isComponent===!0){const c=t(l);if(c!==void 0)return c}}if(i&&n.children){const r=s+1;for(let l=0;l<n.children.length;l++){const c=n.children[l];if(!c)continue;const h=L_(c,t,i,r);if(h!==void 0)return h}}}}function Da(n,t){if("isAssetReference"in n)return n.instantiate(t??void 0);let i=null;t!=null&&(t.x!==void 0?(i=new Ln,i.position=t):i=t);let s=ee.Current;i!=null&&i.context&&(s=i.context),Qd&&s.alias&&console.log("context",s.alias),i&&!i.idProvider&&(i.idProvider=new Bt(Date.now()));const o=[],r={},l={},c=D_(s,n,i,o,r,l);c&&(Y2(r),Q2(l,r)),Qd&&(Sd(n,!0),Sd(c,!0));const h={};if(i?.components!==!1){for(const d in o){const u=o[d],p=u.guid;i&&i.idProvider&&(u.guid=i.idProvider.generateUUID(),h[p]=u.guid,Qd&&console.log(u.name,u.guid)),gu(u,s),u.__internalNewInstanceCreated&&u.__internalNewInstanceCreated()}for(const d in o){const u=o[d];u.resolveGuids&&u.resolveGuids(h),u.enabled!==!1&&(u.enabled=!0)}Ud(s)}return c}function D_(n,t,i,s,o,r){var l;if(!t||t[ki])return null;const c=t.userData;t.userData={};const h=t.children;t.children=[];const d=t.clone(!1);if(Xd(d),t.userData=c,t.children=h,o[t.uuid]={original:t,clone:d},Yd&&console.log("ADD",t,d),t.type==="SkinnedMesh"&&(r[t.uuid]={original:t,clone:d}),i?.visible!==void 0&&(d.visible=i.visible),i!=null&&i.idProvider){d.uuid=i.idProvider.generateUUID();const p=d;p&&(p.guid=d.uuid)}t.animations&&t.animations.length>0&&(d.animations=[...t.animations]);const u=t.parent;if(u&&u.add(d),i!=null&&i.position?ht(d,i.position):d.position.copy(t.position),i!=null&&i.rotation?Hi(d,i.rotation):d.quaternion.copy(t.quaternion),i!=null&&i.scale?d.scale.copy(i.scale):d.scale.copy(t.scale),i!=null&&i.parent&&i.parent!=="scene"){let p=null;if(typeof i.parent=="string"?p=_a(i.parent,n.scene,!0):p=i.parent,p){const g=i.keepWorldPosition===!0?p.attach:p.add;g?g.call(p,d):console.error("Invalid parent object",p,"received when instantiating:",t)}else console.warn("could not find parent:",i.parent)}for(const[p,g]of Object.entries(t.userData))p!=="components"&&(d.userData[p]=g);if((l=t.userData)!=null&&l.components){const p=t.userData.components,g=[];d.userData.components=g;for(let y=0;y<p.length;y++){const f=p[y],v=new f.constructor;Aa(v,f),f[cc]!==void 0&&(v[cc]=f[cc]),g.push(v),v.gameObject=d,s.push(v),o[f.guid]={original:f,clone:v},fc.dispatchComponentLifecycleEvent("component-added",v)}}i&&(i.position=void 0,i.rotation=void 0,i.scale=void 0,i.parent=void 0);for(const p in t.children){const g=t.children[p],y=D_(n,g,i,s,o,r);y&&d.add(y)}return d}function Q2(n,t){for(const i in n){const s=n[i],o=s.original,r=o.skeleton,l=s.clone;if(!r){console.warn("Skinned mesh has no skeleton?",s);continue}const c=r.bones,h=l.skeleton.clone();l.skeleton=h,l.bindMatrix.clone().copy(o.bindMatrix),l.bindMatrixInverse.copy(o.bindMatrixInverse);const d=[];h.bones=d;for(let u=0;u<c.length;u++){const p=c[u],g=t[p.uuid].clone;d.push(g)}}for(const i in n){const s=n[i].clone;s.skeleton.update(),s.bind(s.skeleton,s.bindMatrix),s.updateMatrixWorld(!0)}}function Y2(n){var t;for(const i in n){const s=n[i].clone;if(s!=null&&s.isObject3D&&(t=s?.userData)!=null&&t.components)for(let o=0;o<s.userData.components.length;o++){const r=s.userData.components[o],l=Object.entries(r);for(const[c,h]of l)if(Array.isArray(h)){const d=[];r[c]=d;for(let u=0;u<h.length;u++){const p=h[u];if(typeof p!="object"){d.push(p);continue}const g=B_(r,c,p,n);g!==void 0?d.push(g):d.push(p)}}else if(typeof h=="object"){const d=B_(r,c,h,n);d!==void 0&&(r[c]=d)}}}}function B_(n,t,i,s){var o,r;if(i!=null)if(i.isComponent===!0){const l=i.gameObject;if(l){const c=l.uuid,h=(o=s[c])==null?void 0:o.clone;if(!h){Yd&&console.log("reference did not change",t,n,i);return}const d=l.userData.components.indexOf(i);if(d>=0&&h.isObject3D)return Yd&&console.log(t,c),h.userData.components[d];console.warn("could not find component",t,i)}}else if(i.isObject3D===!0){if(t==="gameObject")return;const l=i;if(l){const c=l.uuid,h=(r=s[c])==null?void 0:r.clone;if(h)return Yd&&console.log(t,"old",i,"new",h),h}}else{if(i.isVector4||i.isVector3||i.isVector2||i.isQuaternion||i.isEuler||i.isColor===!0)return i.clone();if(i.isEventList===!0)return i.__internalOnInstantiate(s)}}var xr;(n=>{n.baseUrl="https://networking.needle.tools";function t(h){return pv(new Uint8Array(h))}n.hashMD5=t;function i(h){const d=pv(new Uint8Array(h),{encoding:"binary",asBytes:!0});return btoa(String.fromCharCode(...d))}n.hashMD5_Base64=i;function s(h){const d=new Uint8Array(h);return crypto.subtle.digest("SHA-256",d).then(u=>btoa(String.fromCharCode(...new Uint8Array(u))))}n.hashSha256=s;function o(h){const d=h.filesize/1024/1024;return Hn()?d<50:d<5}n.canUpload=o;async function r(h,d){var u;const p=n.baseUrl;if(p){if(!h.name)return console.error("Upload: file name is missing"),null}else return console.error("Blob storage base url is not set"),null;let g=null;h instanceof File?g=await h.arrayBuffer():g=h.data;const y=g.byteLength,f=y/1024/1024;if(f>50)return d?.silent!==!0&&_e(`File (${f.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${f.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Hn()&&f>5)return d?.silent!==!0&&_e('File is too large for uploading. Please get a <a href="https://needle.tools/pricing" target="_blank">commercial license</a> to upload files larger than 5MB'),console.warn(`Your file is too large for uploading (${f.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(y<1)return console.warn(`Your file is too small for uploading (${f.toFixed(1)}MB). Min size is 1 byte`),null;const v=i(g),b={filename:h.name,"Content-Md5":v,"Content-Type":h.type||"application/octet-stream",FileSize:y.toString(),"Content-Disposition":`attachment; filename="${h.name}"`,"x-amz-server-side-encryption":"AES256"},w=await fetch(p+"/api/needle/blob",{method:"POST",headers:b,signal:d?.abort}).then(_=>_.json()).catch(_=>(console.error(_),null));if(w==null)return console.warn("Upload failed..."),null;if("error"in w)return console.error(w.error),null;if("upload"in w&&w.upload){let _=function(M){var T;return(T=d?.onProgress)==null||T.call(null,{progress01:0,state:"inprogress"}),fetch(M,{method:"PUT",headers:b,body:g,signal:d?.abort}).then(L=>{var D;return(D=d?.onProgress)==null||D.call(null,{progress01:1,state:"finished"}),L}).catch(L=>L)};console.debug("Uploading file",w.upload);let S=!1,R=null;for(let M=0;M<3;M++)try{if(S)break;if((u=d?.abort)!=null&&u.aborted)return console.debug("Aborted upload"),null;const T=await _(w.upload);T instanceof Error?(R=T,await fn(1e3*M)):T.ok&&(console.debug("File uploaded successfully"),S=!0)}catch(T){console.error(T)}if(!S)return console.error(R?.message||"Failed to upload file"),null}if("download"in w){const _=p+w.download;return console.debug("File found in blob storage",_),{key:w.key,success:!0,download_url:_}}return null}n.upload=r;function l(h){return`${n.baseUrl}/api/needle/blob/${h}`}n.getBlobUrlForKey=l;async function c(h,d){const u=new cm;u.setResponseType("arraybuffer");const p=await u.loadAsync(h,g=>{d&&d.call(null,g)});return p instanceof ArrayBuffer?new Uint8Array(p):(console.error("Download failed, no arraybuffer returned"),null)}n.download=c})(xr||(xr={}));const bo=C("debugaddressables");class F_{constructor(t){a(this,"_context"),a(this,"_assetReferences",{}),a(this,"preUpdate",()=>{}),this._context=t,this._context.pre_update_callbacks.push(this.preUpdate)}dispose(){const t=this._context.pre_update_callbacks.indexOf(this.preUpdate);t>=0&&this._context.pre_update_callbacks.splice(t,1);for(const i in this._assetReferences){const s=this._assetReferences[i];s?.unload()}this._assetReferences={}}findAssetReference(t){return this._assetReferences[t]||null}registerAssetReference(t){return t.url&&(this._assetReferences[t.url]?console.warn("Asset reference already registered",t):this._assetReferences[t.url]=t),t}unregisterAssetReference(t){t.url&&delete this._assetReferences[t.url]}}const Xg=Symbol("assetReference"),Ba=class{constructor(n,t,i=null){a(this,"_loading"),a(this,"_asset"),a(this,"_glbRoot"),a(this,"_url"),a(this,"_urlName"),a(this,"_progressListeners",[]),a(this,"_hash"),a(this,"_hashedUri"),a(this,"_isLoadingRawBinary",!1),a(this,"_rawBinary"),this._url=n;const s=n.lastIndexOf("/");if(s>=0){this._urlName=n.substring(s+1);const o=this._urlName.lastIndexOf(".");o>=0&&(this._urlName=this._urlName.substring(0,o))}else this._urlName=n;this._hash=t,n.includes("?v=")?this._hashedUri=n:this._hashedUri=t?n+"?v="+t:n,i!==null&&(this.asset=i),d_(this._url,this.onResolvePrefab.bind(this))}static getOrCreateFromUrl(n,t){if(!t&&(t=ee.Current,!t))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');const i=t.addressables,s=i.findAssetReference(n);if(s)return s;const o=new Ba(n,t.hash);return i.registerAssetReference(o),o}static getOrCreate(n,t,i){if(typeof n=="string"){if(!i&&(i=ee.Current,!i))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.')}else i=n.context,n=n.sourceId;const s=po(n,t);bo&&console.log("GetOrCreate Addressable from",n,t,"FinalPath=",s);const o=i.addressables,r=o.findAssetReference(s);if(r)return r;const l=new Ba(s,i.hash);return o.registerAssetReference(l),l}get isAssetReference(){return!0}get asset(){return this._glbRoot??this._asset}set asset(n){this._asset=n}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith("http")||this._url.startsWith("blob:")||this._url.startsWith("www.")||this._url.includes("/"))}get rawAsset(){return this._asset}async onResolvePrefab(n){return n===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||_r(this.asset)===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(bo&&console.log("Unload",this.asset),"scene"in this.asset&&this.asset.scene&&Ei(this.asset.scene,!0,!0),Ei(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loading=void 0,ee.Current&&ee.Current.addressables.unregisterAssetReference(this)}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,bo&&console.log("Preload",this._hashedUri);const n=await xr.download(this._hashedUri,t=>{this.raiseProgressEvent(t)});return this._rawBinary=n?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(n){if(bo&&console.log("loadAssetAsync",this.url),!this.mustLoad)return this.asset;if(n&&this._progressListeners.push(n),this._loading!==void 0)return this._loading.then(s=>this.asset);const t=ee.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error("Invalid raw binary data",this._rawBinary),null;this._loading=gn().parseSync(t,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else bo&&console.log("Load async",this.url),this._loading=gn().loadSync(t,this._hashedUri,this.url,null,s=>{this.raiseProgressEvent(s)});const i=await this._loading;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i?(i[Xg]=this,this._glbRoot&&(this._glbRoot[Xg]=this),this.asset&&(this.asset[Xg]=this),Ud(t),i.scene!==void 0&&(this.asset=i),this.asset):null}async instantiate(n){return this.onInstantiate(n,!1)}async instantiateSynced(n,t=!0){return this.onInstantiate(n,!0,t)}beginListenDownload(n){this._progressListeners.indexOf(n)<0&&this._progressListeners.push(n)}endListenDownload(n){const t=this._progressListeners.indexOf(n);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(n){for(const t of this._progressListeners)t(this,n)}async onInstantiate(n,t=!1,i){const s=ee.Current,o=new Ln;if(n instanceof I?o.parent=n:n&&(Object.assign(o,n),o.cloneAssign(n)),o.parent||(o.parent=s.scene),this.mustLoad&&await this.loadAssetAsync(),bo&&console.log("Instantiate",this.url,"parent:",n),this.asset){bo&&console.log("Add to scene",this.asset);let r=Ba.currentlyInstantiating.get(this.url);if(r!==void 0&&r>=1e4)return console.error("Recursive or too many instantiations of "+this.url+" in the same frame ("+r+")"),null;try{if(r===void 0&&(r=0),r+=1,Ba.currentlyInstantiating.set(this.url,r),t){o.context=s;const l=this.asset;l.guid=this.url;const c=Lg(l,o,void 0,i);if(c)return c}else{const l=Da(this.asset,o);if(l)return l}}finally{s.post_render_callbacks.push(()=>{r===void 0||r<0?r=0:r-=1,Ba.currentlyInstantiating.set(this.url,r)})}}else bo&&console.warn("Failed to load asset",this.url);return null}tryGetActualGameObjectRoot(n){if(n&&n.scene){const t=n.scene;return t.isGroup&&t.children.length===1&&t.children[0].name+"glb"===t.name?t.children[0]:t}return null}};let ae=Ba;a(ae,"currentlyInstantiating",new Map);class Z2 extends Qi{constructor(){super([ae],"AssetReferenceSerializer")}onSerialize(t,i){if(t&&t.uri!==void 0&&typeof t.uri=="string")return t.uri}onDeserialize(t,i){if(typeof t=="string")return i.context?i.gltfId?ae.getOrCreate(i.gltfId,t,i.context):(console.error("Missing source id"),null):(console.error("Missing context"),null);if(t instanceof I){if(!i.context)return console.error("Missing context"),null;if(!i.gltfId)return console.error("Missing source id"),null;const s=t,o=i.context,r=s.guid??s.uuid,l=o.addressables.findAssetReference(r);if(l)return l;const c=new ae(r,void 0,s);return o.addressables.registerAssetReference(c),c}return null}}new Z2;const K2=Promise.resolve(null),tu=class{constructor(n){a(this,"url"),a(this,"_bitmap"),a(this,"_bitmapObject"),a(this,"loader",null),this.url=n}static getOrCreate(n){let t=tu.imageReferences.get(n);return t||(t=new tu(n),tu.imageReferences.set(n,t)),t}dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){const n=new Image;return n.src=this.url,n}createTexture(){return this.url?(this.loader||(this.loader=new ga),this.loader.setCrossOrigin("anonymous"),this.loader.loadAsync(this.url).then(n=>{var t;return n&&!((t=n.name)!=null&&t.length)&&(n.name=this.url.split("/").pop()??this.url),n})):(console.error("Can not load texture without url"),K2)}getBitmap(){return this._bitmap?this._bitmap:(this._bitmap=new Promise((n,t)=>{const i=document.createElement("img");i.addEventListener("load",()=>{this._bitmap=createImageBitmap(i).then(s=>(this._bitmapObject=s,n(s),s))}),i.addEventListener("error",s=>{console.error("Failed to load image:"+this.url,s),n(null)}),i.src=this.url}),this._bitmap)}};let iu=tu;a(iu,"imageReferences",new Map);class z_ extends Qi{constructor(){super([iu],"ImageReferenceSerializer")}onSerialize(t,i){return null}onDeserialize(t,i){if(typeof t=="string"){const s=po(i.gltfId,t);return iu.getOrCreate(s)}}}new z_;const nu=class{constructor(n){a(this,"url"),a(this,"res"),this.url=n}static getOrCreate(n){let t=nu.cache.get(n);return t||(t=new nu(n),nu.cache.set(n,t)),t}async loadRaw(){return this.res||(this.res=fetch(this.url)),this.res.then(n=>n.blob())}async loadText(){return this.res||(this.res=fetch(this.url)),this.res.then(n=>n.text())}};let su=nu;a(su,"cache",new Map);class U_ extends Qi{constructor(){super([su],"FileReferenceSerializer")}onSerialize(t,i){return null}onDeserialize(t,i){if(typeof t=="string"){const s=po(i.gltfId,t);return su.getOrCreate(s)}}}new U_;class J2{constructor(t){a(this,"context"),a(this,"mixers",[]),this.context=t}onDestroy(){this.mixers.forEach(t=>t.stopAllAction()),this.mixers.length=0}registerAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(t)||this.mixers.push(t)}unregisterAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const i=this.mixers.indexOf(t);i!==-1&&this.mixers.splice(i,1)}}class Fa{static tryGetActionsFromMixer(t){return t._actions||null}static tryGetAnimationClipsFromObjectHierarchy(t,i){if(i||(i=new Array),t)t.animations&&i.push(...t.animations);else return i;if(t.children)for(const s of t.children)this.tryGetAnimationClipsFromObjectHierarchy(s,i);return i}static assignAnimationsFromFile(t,i){if(!t||!t.animations){console.debug("No animations found in file");return}for(let o=0;o<t.animations.length;o++){const r=t.animations[o];if(!r.tracks||r.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const l in r.tracks){const c=r.tracks[l],h=fa.parseTrackName(c.name);let d=fa.findNode(t.scene,h.nodeName);if(!d){const p=c.__objectName??c.name.substring(0,c.name.indexOf("."));if(d=t.scene.getObjectByProperty("uuid",p),!d)continue}let u=s(d);if(!u){if(!(i!=null&&i.createAnimationComponent)){console.warn("No AnimationComponent found in parent hierarchy of object and no 'createAnimationComponent' callback was provided in options.");continue}u=i.createAnimationComponent(t.scene,r)}u.addClip&&u.addClip(r)}}function s(o){var r;if(!o)return null;const l=(r=o.userData)==null?void 0:r.components;if(l&&l.length>0){for(let c=0;c<l.length;c++)if(l[c].isAnimationComponent===!0)return o}return s(o.parent)}}}var ou=(n=>(n.Visible="application-visible",n.Hidden="application-hidden",n.MuteChanged="application-mutechanged",n))(ou||{});let ru=!1;const za=[];function Sr(){if(ru)return;F()&&console.debug("User interaction registered: audio can now be played"),ru=!0;const n=[...za];za.length=0,n.forEach(t=>t())}document.addEventListener("mousedown",Sr),document.addEventListener("pointerup",Sr),document.addEventListener("click",Sr),document.addEventListener("dragstart",Sr),document.addEventListener("touchend",Sr),document.addEventListener("keydown",Sr),J.onXRSessionStart(()=>{Sr()});const N_=class extends EventTarget{constructor(n){super(),a(this,"_mute",!1),a(this,"context"),a(this,"_isVisible",!0),this.context=n,window.addEventListener("visibilitychange",this.onVisiblityChanged.bind(this),!1)}static get userInteractionRegistered(){return ru}static registerWaitForInteraction(n){if(n!==null){if(ru){n();return}za.indexOf(n)===-1&&za.push(n)}}static unregisterWaitForInteraction(n){const t=za.indexOf(n);t!==-1&&za.splice(t,1)}get muted(){return this._mute}set muted(n){n!==this._mute&&(this._mute=n,this.dispatchEvent(new Event("application-mutechanged")))}get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}onVisiblityChanged(n){switch(n.target.visibilityState){case"hidden":this._isVisible=!1,this.dispatchEvent(new Event("application-hidden"));break;case"visible":this._isVisible=!0,this.dispatchEvent(new Event("application-visible"));break}}};let Ms=N_;a(Ms,"registerWaitForAllowAudio",N_.registerWaitForInteraction);function*Qg(n,t=null){const i=t?t.time:ee.Current.time,s=i.time;for(;i.time-s<n;)yield}function*ek(n){for(let t=0;t<n;t++)yield}function*W_(n){let t=!0;for(n.then(()=>t=!1),n.catch(()=>t=!1);t;)yield}const V_="NEEDLE_lightmaps",Mc=C("debuglightmapsextension")||C("debuglightmaps");var _o=(n=>(n[n.Lightmap=0]="Lightmap",n[n.Skybox=1]="Skybox",n[n.Reflection=2]="Reflection",n))(_o||{});class tk{constructor(t,i,s){a(this,"parser"),a(this,"registry"),a(this,"source"),this.parser=t,this.registry=i,this.source=s}get name(){return V_}afterRoot(t){const i=this.parser.json.extensions;if(i){const s=i[V_];if(s){const o=s.textures;return o!=null&&o.length?(Mc&&console.log(s),new Promise(async(r,l)=>{const c=[];for(const d of o)if(d.pointer){Mc&&console.log(d);let u=null;if(d.pointer.startsWith("/textures/"))Mc&&console.log("Load texture from gltf",d.pointer),u=Fg(this.parser,d.pointer).then(p=>this.resolveTexture(d,p));else if(typeof d.pointer=="string"){Mc&&console.log("Load texture from path",d.pointer);const p=po(this.source,d.pointer);let g;p.endsWith(".exr")?g=new gd(this.parser.options.manager):p.endsWith(".hdr")?g=new _m(this.parser.options.manager):g=new ga(this.parser.options.manager),u=g.loadAsync(p,void 0).then(y=>this.resolveTexture(d,y))}else d.pointer;u&&c.push(u)}const h=await Am(c);h!=null&&h.anyFailed&&F()&&console.error("Failed to load lightmap extension",h),r()})):null}}return null}resolveTexture(t,i){const s=i;Mc&&console.log("Lightmap loaded:",s),s!=null&&s.isTexture&&(this.registry?(s.colorSpace=ys,this.registry.registerTexture(this.source,t.type,s,t.index)):console.log(_o[t.type],t.pointer,s))}}const H_=!!C("debuglightmaps");class ik{constructor(t){a(this,"_context"),a(this,"_lightmaps",new Map),this._context=t}clear(){this._lightmaps.clear()}registerTexture(t,i,s,o){H_&&console.log("Registering ",_o[i]+' "'+t+'"',s),this._lightmaps.has(t)||this._lightmaps.set(t,new Map);const r=this._lightmaps.get(t),l=r?.get(i)??[];l.length<o&&(l.length=o+1),l[o]=s,r?.set(i,l)}tryGetLightmap(t,i=0){return this.tryGet(t,_o.Lightmap,i)}tryGetSkybox(t){return this.tryGet(t,_o.Skybox,0)}tryGetReflection(t){return this.tryGet(t,_o.Reflection,0)}tryGet(t,i,s){if(!t)return H_&&console.warn("Missing source id"),null;const o=this._lightmaps.get(t);if(!o)return null;const r=o.get(i);return r===void 0||!(r!=null&&r.length)||r.length<=s?null:r[s]}}Xt.lights_fragment_maps=Xt.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );",`
|
|
179
|
+
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis`,t))),O_()&&console.log("[onGetComponent] FIND",t),t==null))return null;for(let o=0;o<n.userData.components.length;o++){const r=n.userData.components[o];let l=Object.getPrototypeOf(r);for(;l;){if(l===t.prototype)if(O_()&&console.log("[onGetComponent] MATCH BY PROTOYPE",l),i)i.push(r);else return r;l=Object.getPrototypeOf(l)}}return i||null}function br(n,t){const i=R_(n,t);return i?Array.isArray(i)?i[0]:i:null}function Sc(n,t,i,s=!0){return i||(i=[]),s&&(i.length=0),R_(n,t,i),i}function Cc(n,t,i){var s;const o=br(n,t);if(i===!1&&o?.enabled===!1)return null;if(o)return o;for(let r=0;r<((s=n?.children)==null?void 0:s.length);r++){const l=Cc(n.children[r],t);if(l)return l}return null}function Ia(n,t,i,s=!0){var o;i||(i=[]),s&&(i.length=0),Sc(n,t,i,!1);for(let r=0;r<((o=n?.children)==null?void 0:o.length);r++)Ia(n.children[r],t,i,!1);return i}function Oc(n,t){if(!n)return null;if(Array.isArray(n)){for(let s=0;s<n.length;s++){const o=X2(n[s]),r=Oc(o,t);if(r)return r}return null}return br(n,t)||(n.parent?Oc(n.parent,t):null)}function qd(n,t,i,s=!0){return i||(i=[]),s&&(i.length=0),n?(Sc(n,t,i,!1),n.parent?qd(n.parent,t,i,!1):i):i}function Pc(n,t=void 0,i=!0){if(!n)return null;if(!t&&(t=ee.Current,!t))return console.error("Can not search object without any needle context or scene!!!"),null;let s=t;if(s.isScene||(s=t?.scene),!s)return null;for(const o in s.children){const r=s.children[o];if(i===!1&&r[xs]===!1)continue;const l=Cc(r,n);if(l)return l}return null}function T_(n,t,i=void 0){if(!n)return t??[];if(t||(t=[]),t.length=0,!i&&(i=ee.Current,!i))return console.error("Can not search object without any needle context or scene!!!"),t;"scene"in i&&(i=i.scene);const s=i;if(!s)return t;for(const o in s.children){const r=s.children[o];Ia(r,n,t,!1)}return t}function Xd(n){n&&n.isObject3D===!0&&S_(n,I)}I.prototype.SetActive=function(n){this.visible=n},I.prototype.setActive=function(n){this.visible=n},I.prototype.destroy=function(){Ei(this)},I.prototype.addComponent=function(n,t){return Ti(this,n,t)},I.prototype.addNewComponent=function(n,t){return Ti(this,n,t)},I.prototype.removeComponent=function(n){return Hg(this,n)},I.prototype.getOrAddComponent=function(n,t){return xc(this,n,t)},I.prototype.getComponent=function(n){return br(this,n)},I.prototype.getComponents=function(n,t){return Sc(this,n,t)},I.prototype.getComponentInChildren=function(n){return Cc(this,n)},I.prototype.getComponentsInChildren=function(n,t){return Ia(this,n,t)},I.prototype.getComponentInParent=function(n){return Oc(this,n)},I.prototype.getComponentsInParent=function(n,t){return qd(this,n,t)},Object.getOwnPropertyDescriptor(I.prototype,"activeSelf")||Object.defineProperty(I.prototype,"activeSelf",{get:function(){return ja(this)},set:function(n){kc(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldPosition")||Object.defineProperty(I.prototype,"worldPosition",{get:function(){return this instanceof rv?te(this.object):te(this)},set:function(n){ht(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldQuaternion")||Object.defineProperty(I.prototype,"worldQuaternion",{get:function(){return this instanceof rv?Ce(this.object):Ce(this)},set:function(n){Hi(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldRotation")||Object.defineProperty(I.prototype,"worldRotation",{get:function(){return tc(this)},set:function(n){qm(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldScale")||Object.defineProperty(I.prototype,"worldScale",{get:function(){return Ye(this)},set:function(n){xa(this,n)}}),Object.getOwnPropertyDescriptor(I.prototype,"worldForward")||Object.defineProperty(I.prototype,"worldForward",{get:function(){return q().set(0,0,1).applyQuaternion(Ce(this))}}),Object.getOwnPropertyDescriptor(I.prototype,"worldRight")||Object.defineProperty(I.prototype,"worldRight",{get:function(){return q().set(1,0,0).applyQuaternion(Ce(this))}}),Object.getOwnPropertyDescriptor(I.prototype,"worldUp")||Object.defineProperty(I.prototype,"worldUp",{get:function(){return q().set(0,1,0).applyQuaternion(Ce(this))}}),C_(I);class le extends ce{constructor(t,i,s,o){super(),a(this,"alpha",1),typeof t=="number"&&typeof i=="number"&&typeof s=="number"?(this.set(t,i,s),this.alpha=typeof o=="number"?o:1):t!==void 0&&(this.set(t),this.alpha=1)}get isRGBAColor(){return!0}set a(t){this.alpha=t}get a(){return this.alpha}clone(){const t=super.clone();return t.alpha=this.alpha,t}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,"alpha"in t&&typeof t.alpha=="number"?this.alpha=t.alpha:typeof t.a=="number"&&(this.alpha=t.a),this}lerp(t,i){const s=t;return s.alpha!=null&&(this.alpha=W.lerp(this.alpha,s.alpha,i)),super.lerp(t,i)}lerpColors(t,i,s){const o=t,r=i;return o.alpha!=null&&r.alpha!=null&&(this.alpha=W.lerp(o.alpha,r.alpha,s)),super.lerpColors(t,i,s)}multiply(t){const i=t;return i.alpha!=null&&(this.alpha=this.alpha*i.alpha),super.multiply(t)}fromArray(t,i=0){return this.alpha=t[i+3],super.fromArray(t,i)}static fromColorRepresentation(t){if(typeof t=="string"){if(t.trim()==="transparent")return new le(0,0,0,0);if(t.startsWith("#")&&t.length===9){const i=parseInt(t.slice(1,9),16),s=i>>24&255,o=i>>16&255,r=i>>8&255,l=i>>0&255;return new le(s/255,o/255,r/255,l/255)}else if(t.startsWith("#")){const i=parseInt(t.slice(1),16),s=i>>16&255,o=i>>8&255,r=i>>0&255;return new le(s/255,o/255,r/255,1)}else if(t.startsWith("rgba")){const i=t.slice(5,-1).split(",").map(Number);return new le(i[0]/255,i[1]/255,i[2]/255,i[3])}else if(t.startsWith("rgb")){const i=t.slice(4,-1).split(",").map(Number);return new le(i[0]/255,i[1]/255,i[2]/255,1)}}else if(Array.isArray(t)){if(t.length===4)return new le(t[0],t[1],t[2],t[3]);if(t.length===3)return new le(t[0],t[1],t[2],1);console.error("Invalid color array length. Expected 3 or 4, got "+t.length)}return new le(t)}}const Qd=C("debuggetcomponent"),Yd=C("debuginstantiate");class Ln{constructor(){a(this,"idProvider"),a(this,"parent"),a(this,"keepWorldPosition"),a(this,"position"),a(this,"rotation"),a(this,"scale"),a(this,"visible"),a(this,"context"),a(this,"components")}clone(){var t,i,s;const o=new Ln;return o.idProvider=this.idProvider,o.parent=this.parent,o.keepWorldPosition=this.keepWorldPosition,o.position=(t=this.position)==null?void 0:t.clone(),o.rotation=(i=this.rotation)==null?void 0:i.clone(),o.scale=(s=this.scale)==null?void 0:s.clone(),o.visible=this.visible,o.context=this.context,o.components=this.components,o}cloneAssign(t){var i,s,o;this.idProvider=t.idProvider,this.parent=t.parent,this.keepWorldPosition=t.keepWorldPosition,this.position=(i=t.position)==null?void 0:i.clone(),this.rotation=(s=t.rotation)==null?void 0:s.clone(),this.scale=(o=t.scale)==null?void 0:o.clone(),this.visible=t.visible,this.context=t.context,this.components=t.components}}function ja(n){return n.visible}function kc(n,t){return typeof t=="number"&&(t=t>.5),n.visible=t,n.visible}function E_(n){return n[xs]||Zd(n)}function A_(n,t){n[Jb]=t}function Zd(n){return an.isUsingInstancing(n)}function $g(n,t){return _a(n,t,!0,!0)}const I_=Symbol("isDestroyed");function _r(n){return n[I_]}function j_(n,t){n[I_]=t}const Gg=Symbol("isDontDestroy");function La(n,t=!0){n[Gg]=t}const Kd=[],Jd=[];function Ei(n,t=!0,i=!1){Kd.length=0,Jd.length=0,qg(n,t,!0);for(const s of Kd)s.gameObject=null,s.context=null;for(const s of Jd)j_(s,!0),i&&Ee(s),Zb(s);Jd.length=0,Kd.length=0}function qg(n,t=!0,i=!0){var s;if(n==null)return;const o=n;if(o.isComponent){if(o[Gg])return;Kd.push(o);const c=o.gameObject;o.__internalDisable(),o.__internalDestroy(),o.gameObject=c;return}if(n[Gg])return;const r=n;Qd&&console.log(r),Jd.push(r);const l=(s=r.userData)==null?void 0:s.components;if(l!=null&&Array.isArray(l)){let c=l.length;for(let h=0;h<l.length;h++){const d=l[h];qg(d,t,!1),l.length<c&&(c=l.length,h--)}}if(t&&r.children)for(const c of r.children)qg(c,t,!1);i&&r.removeFromParent()}function wr(n,t,i=!0){return L_(n,t,i)}function*eu(n,t,i=!1,s=999,o=0){if(n!=null&&n.userData.components&&!(o>s)){for(const r of n.userData.components)t&&r?.isComponent===!0&&r instanceof t?yield r:yield r;if(i===!0)for(const r of n.children)yield*eu(r,t,!0,s,o+1)}}function L_(n,t,i,s=0){var o;if(n){if(n.isObject3D,s>1e3){console.warn("Failed to iterate components: too many levels");return}if((o=n.userData)!=null&&o.components)for(let r=0;r<n.userData.components.length;r++){const l=n.userData.components[r];if(l?.isComponent===!0){const c=t(l);if(c!==void 0)return c}}if(i&&n.children){const r=s+1;for(let l=0;l<n.children.length;l++){const c=n.children[l];if(!c)continue;const h=L_(c,t,i,r);if(h!==void 0)return h}}}}function Da(n,t){if("isAssetReference"in n)return n.instantiate(t??void 0);let i=null;t!=null&&(t.x!==void 0?(i=new Ln,i.position=t):i=t);let s=ee.Current;i!=null&&i.context&&(s=i.context),Qd&&s.alias&&console.log("context",s.alias),i&&!i.idProvider&&(i.idProvider=new Bt(Date.now()));const o=[],r={},l={},c=D_(s,n,i,o,r,l);c&&(Y2(r),Q2(l,r)),Qd&&(Sd(n,!0),Sd(c,!0));const h={};if(i?.components!==!1){for(const d in o){const u=o[d],p=u.guid;i&&i.idProvider&&(u.guid=i.idProvider.generateUUID(),h[p]=u.guid,Qd&&console.log(u.name,u.guid)),gu(u,s),u.__internalNewInstanceCreated&&u.__internalNewInstanceCreated()}for(const d in o){const u=o[d];u.resolveGuids&&u.resolveGuids(h),u.enabled!==!1&&(u.enabled=!0)}Ud(s)}return c}function D_(n,t,i,s,o,r){var l;if(!t||t[ki])return null;const c=t.userData;t.userData={};const h=t.children;t.children=[];const d=t.clone(!1);if(Xd(d),t.userData=c,t.children=h,o[t.uuid]={original:t,clone:d},Yd&&console.log("ADD",t,d),t.type==="SkinnedMesh"&&(r[t.uuid]={original:t,clone:d}),i?.visible!==void 0&&(d.visible=i.visible),i!=null&&i.idProvider){d.uuid=i.idProvider.generateUUID();const p=d;p&&(p.guid=d.uuid)}t.animations&&t.animations.length>0&&(d.animations=[...t.animations]);const u=t.parent;if(u&&u.add(d),i!=null&&i.position?ht(d,i.position):d.position.copy(t.position),i!=null&&i.rotation?Hi(d,i.rotation):d.quaternion.copy(t.quaternion),i!=null&&i.scale?d.scale.copy(i.scale):d.scale.copy(t.scale),i!=null&&i.parent&&i.parent!=="scene"){let p=null;if(typeof i.parent=="string"?p=_a(i.parent,n.scene,!0):p=i.parent,p){const g=i.keepWorldPosition===!0?p.attach:p.add;g?g.call(p,d):console.error("Invalid parent object",p,"received when instantiating:",t)}else console.warn("could not find parent:",i.parent)}for(const[p,g]of Object.entries(t.userData))p!=="components"&&(d.userData[p]=g);if((l=t.userData)!=null&&l.components){const p=t.userData.components,g=[];d.userData.components=g;for(let y=0;y<p.length;y++){const f=p[y],v=new f.constructor;Aa(v,f),f[cc]!==void 0&&(v[cc]=f[cc]),g.push(v),v.gameObject=d,s.push(v),o[f.guid]={original:f,clone:v},fc.dispatchComponentLifecycleEvent("component-added",v)}}i&&(i.position=void 0,i.rotation=void 0,i.scale=void 0,i.parent=void 0);for(const p in t.children){const g=t.children[p],y=D_(n,g,i,s,o,r);y&&d.add(y)}return d}function Q2(n,t){for(const i in n){const s=n[i],o=s.original,r=o.skeleton,l=s.clone;if(!r){console.warn("Skinned mesh has no skeleton?",s);continue}const c=r.bones,h=l.skeleton.clone();l.skeleton=h,l.bindMatrix.clone().copy(o.bindMatrix),l.bindMatrixInverse.copy(o.bindMatrixInverse);const d=[];h.bones=d;for(let u=0;u<c.length;u++){const p=c[u],g=t[p.uuid].clone;d.push(g)}}for(const i in n){const s=n[i].clone;s.skeleton.update(),s.bind(s.skeleton,s.bindMatrix),s.updateMatrixWorld(!0)}}function Y2(n){var t;for(const i in n){const s=n[i].clone;if(s!=null&&s.isObject3D&&(t=s?.userData)!=null&&t.components)for(let o=0;o<s.userData.components.length;o++){const r=s.userData.components[o],l=Object.entries(r);for(const[c,h]of l)if(Array.isArray(h)){const d=[];r[c]=d;for(let u=0;u<h.length;u++){const p=h[u];if(typeof p!="object"){d.push(p);continue}const g=B_(r,c,p,n);g!==void 0?d.push(g):d.push(p)}}else if(typeof h=="object"){const d=B_(r,c,h,n);d!==void 0&&(r[c]=d)}}}}function B_(n,t,i,s){var o,r;if(i!=null)if(i.isComponent===!0){const l=i.gameObject;if(l){const c=l.uuid,h=(o=s[c])==null?void 0:o.clone;if(!h){Yd&&console.log("reference did not change",t,n,i);return}const d=l.userData.components.indexOf(i);if(d>=0&&h.isObject3D)return Yd&&console.log(t,c),h.userData.components[d];console.warn("could not find component",t,i)}}else if(i.isObject3D===!0){if(t==="gameObject")return;const l=i;if(l){const c=l.uuid,h=(r=s[c])==null?void 0:r.clone;if(h)return Yd&&console.log(t,"old",i,"new",h),h}}else{if(i.isVector4||i.isVector3||i.isVector2||i.isQuaternion||i.isEuler||i.isColor===!0)return i.clone();if(i.isEventList===!0)return i.__internalOnInstantiate(s)}}var xr;(n=>{n.baseUrl="https://networking.needle.tools";function t(h){return pv(new Uint8Array(h))}n.hashMD5=t;function i(h){const d=pv(new Uint8Array(h),{encoding:"binary",asBytes:!0});return btoa(String.fromCharCode(...d))}n.hashMD5_Base64=i;function s(h){const d=new Uint8Array(h);return crypto.subtle.digest("SHA-256",d).then(u=>btoa(String.fromCharCode(...new Uint8Array(u))))}n.hashSha256=s;function o(h){const d=h.filesize/1024/1024;return Hn()?d<50:d<5}n.canUpload=o;async function r(h,d){var u;const p=n.baseUrl;if(p){if(!h.name)return console.error("Upload: file name is missing"),null}else return console.error("Blob storage base url is not set"),null;let g=null;h instanceof File?g=await h.arrayBuffer():g=h.data;const y=g.byteLength,f=y/1024/1024;if(f>50)return d?.silent!==!0&&_e(`File (${f.toFixed(1)}MB) is too large for uploading (see console for details)`),console.warn(`Your file is too large for uploading (${f.toFixed(1)}MB). Max allowed size is 50MB`),null;if(!Hn()&&f>5)return d?.silent!==!0&&_e('File is too large for uploading. Please get a <a href="https://needle.tools/pricing" target="_blank">commercial license</a> to upload files larger than 5MB'),console.warn(`Your file is too large for uploading (${f.toFixed(1)}MB). Max size is 5MB for non-commercial users. Please get a commercial license at https://needle.tools/pricing for larger files (up to 50MB)`),null;if(y<1)return console.warn(`Your file is too small for uploading (${f.toFixed(1)}MB). Min size is 1 byte`),null;const v=i(g),b={filename:h.name,"Content-Md5":v,"Content-Type":h.type||"application/octet-stream",FileSize:y.toString(),"Content-Disposition":`attachment; filename="${h.name}"`,"x-amz-server-side-encryption":"AES256"},w=await fetch(p+"/api/needle/blob",{method:"POST",headers:b,signal:d?.abort}).then(_=>_.json()).catch(_=>(console.error(_),null));if(w==null)return console.warn("Upload failed..."),null;if("error"in w)return console.error(w.error),null;if("upload"in w&&w.upload){let _=function(M){var T;return(T=d?.onProgress)==null||T.call(null,{progress01:0,state:"inprogress"}),fetch(M,{method:"PUT",headers:b,body:g,signal:d?.abort}).then(L=>{var D;return(D=d?.onProgress)==null||D.call(null,{progress01:1,state:"finished"}),L}).catch(L=>L)};console.debug("Uploading file",w.upload);let S=!1,R=null;for(let M=0;M<3;M++)try{if(S)break;if((u=d?.abort)!=null&&u.aborted)return console.debug("Aborted upload"),null;const T=await _(w.upload);T instanceof Error?(R=T,await fn(1e3*M)):T.ok&&(console.debug("File uploaded successfully"),S=!0)}catch(T){console.error(T)}if(!S)return console.error(R?.message||"Failed to upload file"),null}if("download"in w){const _=p+w.download;return console.debug("File found in blob storage",_),{key:w.key,success:!0,download_url:_}}return null}n.upload=r;function l(h){return`${n.baseUrl}/api/needle/blob/${h}`}n.getBlobUrlForKey=l;async function c(h,d){const u=new cm;u.setResponseType("arraybuffer");const p=await u.loadAsync(h,g=>{d&&d.call(null,g)});return p instanceof ArrayBuffer?new Uint8Array(p):(console.error("Download failed, no arraybuffer returned"),null)}n.download=c})(xr||(xr={}));const bo=C("debugaddressables");class F_{constructor(t){a(this,"_context"),a(this,"_assetReferences",{}),a(this,"preUpdate",()=>{}),this._context=t,this._context.pre_update_callbacks.push(this.preUpdate)}dispose(){const t=this._context.pre_update_callbacks.indexOf(this.preUpdate);t>=0&&this._context.pre_update_callbacks.splice(t,1);for(const i in this._assetReferences){const s=this._assetReferences[i];s?.unload()}this._assetReferences={}}findAssetReference(t){return this._assetReferences[t]||null}registerAssetReference(t){return t.url&&(this._assetReferences[t.url]?console.warn("Asset reference already registered",t):this._assetReferences[t.url]=t),t}unregisterAssetReference(t){t.url&&delete this._assetReferences[t.url]}}const Xg=Symbol("assetReference"),Ba=class{constructor(n,t,i=null){a(this,"_loading"),a(this,"_asset"),a(this,"_glbRoot"),a(this,"_url"),a(this,"_urlName"),a(this,"_progressListeners",[]),a(this,"_hash"),a(this,"_hashedUri"),a(this,"_isLoadingRawBinary",!1),a(this,"_rawBinary"),this._url=n;const s=n.lastIndexOf("/");if(s>=0){this._urlName=n.substring(s+1);const o=this._urlName.lastIndexOf(".");o>=0&&(this._urlName=this._urlName.substring(0,o))}else this._urlName=n;this._hash=t,n.includes("?v=")?this._hashedUri=n:this._hashedUri=t?n+"?v="+t:n,i!==null&&(this.asset=i),d_(this._url,this.onResolvePrefab.bind(this))}static getOrCreateFromUrl(n,t){if(!t&&(t=ee.Current,!t))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.');const i=t.addressables,s=i.findAssetReference(n);if(s)return s;const o=new Ba(n,t.hash);return i.registerAssetReference(o),o}static getOrCreate(n,t,i){if(typeof n=="string"){if(!i&&(i=ee.Current,!i))throw new Error('Context is required when sourceId is a string. When you call this method from a component you can call it with "getOrCreate(this, url)" where "this" is the component.')}else i=n.context,n=n.sourceId;const s=po(n,t);bo&&console.log("GetOrCreate Addressable from",n,t,"FinalPath=",s);const o=i.addressables,r=o.findAssetReference(s);if(r)return r;const l=new Ba(s,i.hash);return o.registerAssetReference(l),l}get isAssetReference(){return!0}get asset(){return this._glbRoot??this._asset}set asset(n){this._asset=n}get uri(){return this._url}get url(){return this._url}get urlName(){return this._urlName}get hasUrl(){return this._url!==void 0&&(this._url.startsWith("http")||this._url.startsWith("blob:")||this._url.startsWith("www.")||this._url.includes("/"))}get rawAsset(){return this._asset}async onResolvePrefab(n){return n===this.url&&(this.mustLoad&&await this.loadAssetAsync(),this.asset)?this.asset:null}get mustLoad(){return!this.asset||this.asset.__destroyed===!0||_r(this.asset)===!0}isLoaded(){return this._rawBinary||this.asset!==void 0}unload(){this.asset&&(bo&&console.log("Unload",this.asset),"scene"in this.asset&&this.asset.scene&&Ei(this.asset.scene,!0,!0),Ei(this.asset,!0,!0)),this.asset=null,this._rawBinary=void 0,this._glbRoot=null,this._loading=void 0,ee.Current&&ee.Current.addressables.unregisterAssetReference(this)}async preload(){if(!this.mustLoad||this._isLoadingRawBinary)return null;if(this._rawBinary!==void 0)return this._rawBinary;this._isLoadingRawBinary=!0,bo&&console.log("Preload",this._hashedUri);const n=await xr.download(this._hashedUri,t=>{this.raiseProgressEvent(t)});return this._rawBinary=n?.buffer??null,this._isLoadingRawBinary=!1,this._rawBinary}async loadAssetAsync(n){if(bo&&console.log("loadAssetAsync",this.url),!this.mustLoad)return this.asset;if(n&&this._progressListeners.push(n),this._loading!==void 0)return this._loading.then(s=>this.asset);const t=ee.Current;if(this._rawBinary){if(!(this._rawBinary instanceof ArrayBuffer))return console.error("Invalid raw binary data",this._rawBinary),null;this._loading=gn().parseSync(t,this._rawBinary,this.url,null),this.raiseProgressEvent(new ProgressEvent("progress",{loaded:this._rawBinary.byteLength,total:this._rawBinary.byteLength}))}else bo&&console.log("Load async",this.url),this._loading=gn().loadSync(t,this._hashedUri,this.url,null,s=>{this.raiseProgressEvent(s)});const i=await this._loading;return this._progressListeners.length=0,this._glbRoot=this.tryGetActualGameObjectRoot(i),this._loading=void 0,i?(i[Xg]=this,this._glbRoot&&(this._glbRoot[Xg]=this),this.asset&&(this.asset[Xg]=this),Ud(t),i.scene!==void 0&&(this.asset=i),this.asset):null}async instantiate(n){return this.onInstantiate(n,!1)}async instantiateSynced(n,t=!0){return this.onInstantiate(n,!0,t)}beginListenDownload(n){this._progressListeners.indexOf(n)<0&&this._progressListeners.push(n)}endListenDownload(n){const t=this._progressListeners.indexOf(n);t>=0&&this._progressListeners.splice(t,1)}raiseProgressEvent(n){for(const t of this._progressListeners)t(this,n)}async onInstantiate(n,t=!1,i){const s=ee.Current,o=new Ln;if(n instanceof I?o.parent=n:n&&(Object.assign(o,n),o.cloneAssign(n)),o.parent||(o.parent=s.scene),this.mustLoad&&await this.loadAssetAsync(),bo&&console.log("Instantiate",this.url,"parent:",n),this.asset){bo&&console.log("Add to scene",this.asset);let r=Ba.currentlyInstantiating.get(this.url);if(r!==void 0&&r>=1e4)return console.error("Recursive or too many instantiations of "+this.url+" in the same frame ("+r+")"),null;try{if(r===void 0&&(r=0),r+=1,Ba.currentlyInstantiating.set(this.url,r),t){o.context=s;const l=this.asset;l.guid=this.url;const c=Lg(l,o,void 0,i);if(c)return c}else{const l=Da(this.asset,o);if(l)return l}}finally{s.post_render_callbacks.push(()=>{r===void 0||r<0?r=0:r-=1,Ba.currentlyInstantiating.set(this.url,r)})}}else bo&&console.warn("Failed to load asset",this.url);return null}tryGetActualGameObjectRoot(n){if(n&&n.scene){const t=n.scene;return t.isGroup&&t.children.length===1&&t.children[0].name+"glb"===t.name?t.children[0]:t}return null}};let ae=Ba;a(ae,"currentlyInstantiating",new Map);class Z2 extends Qi{constructor(){super([ae],"AssetReferenceSerializer")}onSerialize(t,i){if(t&&t.uri!==void 0&&typeof t.uri=="string")return t.uri}onDeserialize(t,i){if(typeof t=="string")return i.context?i.gltfId?ae.getOrCreate(i.gltfId,t,i.context):(console.error("Missing source id"),null):(console.error("Missing context"),null);if(t instanceof I){if(!i.context)return console.error("Missing context"),null;if(!i.gltfId)return console.error("Missing source id"),null;const s=t,o=i.context,r=s.guid??s.uuid,l=o.addressables.findAssetReference(r);if(l)return l;const c=new ae(r,void 0,s);return o.addressables.registerAssetReference(c),c}return null}}new Z2;const K2=Promise.resolve(null),tu=class{constructor(n){a(this,"url"),a(this,"_bitmap"),a(this,"_bitmapObject"),a(this,"loader",null),this.url=n}static getOrCreate(n){let t=tu.imageReferences.get(n);return t||(t=new tu(n),tu.imageReferences.set(n,t)),t}dispose(){this._bitmapObject&&this._bitmapObject.close(),this._bitmap=void 0}createHTMLImage(){const n=new Image;return n.src=this.url,n}createTexture(){return this.url?(this.loader||(this.loader=new ga),this.loader.setCrossOrigin("anonymous"),this.loader.loadAsync(this.url).then(n=>{var t;return n&&!((t=n.name)!=null&&t.length)&&(n.name=this.url.split("/").pop()??this.url),n})):(console.error("Can not load texture without url"),K2)}getBitmap(){return this._bitmap?this._bitmap:(this._bitmap=new Promise((n,t)=>{const i=document.createElement("img");i.addEventListener("load",()=>{this._bitmap=createImageBitmap(i).then(s=>(this._bitmapObject=s,n(s),s))}),i.addEventListener("error",s=>{console.error("Failed to load image:"+this.url,s),n(null)}),i.src=this.url}),this._bitmap)}};let iu=tu;a(iu,"imageReferences",new Map);class z_ extends Qi{constructor(){super([iu],"ImageReferenceSerializer")}onSerialize(t,i){return null}onDeserialize(t,i){if(typeof t=="string"){const s=po(i.gltfId,t);return iu.getOrCreate(s)}}}new z_;const nu=class{constructor(n){a(this,"url"),a(this,"res"),this.url=n}static getOrCreate(n){let t=nu.cache.get(n);return t||(t=new nu(n),nu.cache.set(n,t)),t}async loadRaw(){return this.res||(this.res=fetch(this.url)),this.res.then(n=>n.blob())}async loadText(){return this.res||(this.res=fetch(this.url)),this.res.then(n=>n.text())}};let su=nu;a(su,"cache",new Map);class U_ extends Qi{constructor(){super([su],"FileReferenceSerializer")}onSerialize(t,i){return null}onDeserialize(t,i){if(typeof t=="string"){const s=po(i.gltfId,t);return su.getOrCreate(s)}}}new U_;class J2{constructor(t){a(this,"context"),a(this,"mixers",[]),this.context=t}onDestroy(){this.mixers.forEach(t=>t.stopAllAction()),this.mixers.length=0}registerAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.registerAnimationMixer called with null or undefined mixer");return}this.mixers.includes(t)||this.mixers.push(t)}unregisterAnimationMixer(t){if(!t){console.warn("AnimationsRegistry.unregisterAnimationMixer called with null or undefined mixer");return}const i=this.mixers.indexOf(t);i!==-1&&this.mixers.splice(i,1)}}class Fa{static tryGetActionsFromMixer(t){return t._actions||null}static tryGetAnimationClipsFromObjectHierarchy(t,i){if(i||(i=new Array),t)t.animations&&i.push(...t.animations);else return i;if(t.children)for(const s of t.children)this.tryGetAnimationClipsFromObjectHierarchy(s,i);return i}static assignAnimationsFromFile(t,i){if(!t||!t.animations){console.debug("No animations found in file");return}for(let o=0;o<t.animations.length;o++){const r=t.animations[o];if(!r.tracks||r.tracks.length<=0){console.warn("Animation has no tracks");continue}for(const l in r.tracks){const c=r.tracks[l],h=fa.parseTrackName(c.name);let d=fa.findNode(t.scene,h.nodeName);if(!d){const p=c.__objectName??c.name.substring(0,c.name.indexOf("."));if(d=t.scene.getObjectByProperty("uuid",p),!d)continue}let u=s(d);if(!u){if(!(i!=null&&i.createAnimationComponent)){console.warn("No AnimationComponent found in parent hierarchy of object and no 'createAnimationComponent' callback was provided in options.");continue}u=i.createAnimationComponent(t.scene,r)}u.addClip&&u.addClip(r)}}function s(o){var r;if(!o)return null;const l=(r=o.userData)==null?void 0:r.components;if(l&&l.length>0){for(let c=0;c<l.length;c++)if(l[c].isAnimationComponent===!0)return o}return s(o.parent)}}}var ou=(n=>(n.Visible="application-visible",n.Hidden="application-hidden",n.MuteChanged="application-mutechanged",n))(ou||{});let ru=!1;const za=[];function Sr(){if(ru)return;F()&&console.debug("User interaction registered: audio can now be played"),ru=!0;const n=[...za];za.length=0,n.forEach(t=>t())}document.addEventListener("mousedown",Sr),document.addEventListener("pointerup",Sr),document.addEventListener("click",Sr),document.addEventListener("dragstart",Sr),document.addEventListener("touchend",Sr),document.addEventListener("keydown",Sr),J.onXRSessionStart(()=>{Sr()});const N_=class extends EventTarget{constructor(n){super(),a(this,"_mute",!1),a(this,"context"),a(this,"_isVisible",!0),this.context=n,window.addEventListener("visibilitychange",this.onVisiblityChanged.bind(this),!1)}static get userInteractionRegistered(){return ru}static registerWaitForInteraction(n){if(n!==null){if(ru){n();return}za.indexOf(n)===-1&&za.push(n)}}static unregisterWaitForInteraction(n){const t=za.indexOf(n);t!==-1&&za.splice(t,1)}get muted(){return this._mute}set muted(n){n!==this._mute&&(this._mute=n,this.dispatchEvent(new Event("application-mutechanged")))}get hasFocus(){return document.hasFocus()}get isVisible(){return this._isVisible}onVisiblityChanged(n){switch(n.target.visibilityState){case"hidden":this._isVisible=!1,this.dispatchEvent(new Event("application-hidden"));break;case"visible":this._isVisible=!0,this.dispatchEvent(new Event("application-visible"));break}}};let Ms=N_;a(Ms,"registerWaitForAllowAudio",N_.registerWaitForInteraction);function*Qg(n,t=null){const i=t?t.time:ee.Current.time,s=i.time;for(;i.time-s<n;)yield}function*ek(n){for(let t=0;t<n;t++)yield}function*W_(n){let t=!0;for(n.then(()=>t=!1),n.catch(()=>t=!1);t;)yield}const V_="NEEDLE_lightmaps",Mc=C("debuglightmapsextension")||C("debuglightmaps");var _o=(n=>(n[n.Lightmap=0]="Lightmap",n[n.Skybox=1]="Skybox",n[n.Reflection=2]="Reflection",n))(_o||{});class tk{constructor(t,i,s){a(this,"parser"),a(this,"registry"),a(this,"source"),this.parser=t,this.registry=i,this.source=s}get name(){return V_}afterRoot(t){const i=this.parser.json.extensions;if(i){const s=i[V_];if(s){const o=s.textures;return o!=null&&o.length?(Mc&&console.log(s),new Promise(async(r,l)=>{const c=[];for(const d of o)if(d.pointer){Mc&&console.log(d);let u=null;if(d.pointer.startsWith("/textures/"))Mc&&console.log("Load texture from gltf",d.pointer),u=Fg(this.parser,d.pointer).then(p=>this.resolveTexture(d,p));else if(typeof d.pointer=="string"){Mc&&console.log("Load texture from path",d.pointer);const p=po(this.source,d.pointer);let g;p.endsWith(".exr")?g=new gd(this.parser.options.manager):p.endsWith(".hdr")?g=new _m(this.parser.options.manager):g=new ga(this.parser.options.manager),u=g.loadAsync(p,void 0).then(y=>this.resolveTexture(d,y))}else d.pointer;u&&c.push(u)}const h=await Am(c);h!=null&&h.anyFailed&&F()&&console.error("Failed to load lightmap extension",h),r()})):null}}return null}resolveTexture(t,i){const s=i;Mc&&console.log("Lightmap loaded:",s),s!=null&&s.isTexture&&(this.registry?(s.colorSpace=ys,this.registry.registerTexture(this.source,t.type,s,t.index)):console.log(_o[t.type],t.pointer,s))}}const H_=!!C("debuglightmaps");class ik{constructor(t){a(this,"_context"),a(this,"_lightmaps",new Map),this._context=t}clear(){this._lightmaps.clear()}registerTexture(t,i,s,o){H_&&console.log("Registering ",_o[i]+' "'+t+'"',s),this._lightmaps.has(t)||this._lightmaps.set(t,new Map);const r=this._lightmaps.get(t),l=r?.get(i)??[];l.length<o&&(l.length=o+1),l[o]=s,r?.set(i,l)}tryGetLightmap(t,i=0){return this.tryGet(t,_o.Lightmap,i)}tryGetSkybox(t){return this.tryGet(t,_o.Skybox,0)}tryGetReflection(t){return this.tryGet(t,_o.Reflection,0)}tryGet(t,i,s){if(!t)return H_&&console.warn("Missing source id"),null;const o=this._lightmaps.get(t);if(!o)return null;const r=o.get(i);return r===void 0||!(r!=null&&r.length)||r.length<=s?null:r[s]}}Xt.lights_fragment_maps=Xt.lights_fragment_maps.replace("vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );",`
|
|
180
180
|
vec2 lUv = vLightMapUv.xy * lightmapScaleOffset.xy + vec2(lightmapScaleOffset.z, (1. - (lightmapScaleOffset.y + lightmapScaleOffset.w)));
|
|
181
181
|
vec4 lightMapTexel = texture2D( lightMap, lUv);
|
|
182
182
|
// The range of RGBM lightmaps goes from 0 to 34.49 (5^2.2) in linear space, and from 0 to 5 in gamma space.
|
|
@@ -755,7 +755,7 @@ vec3 AgXToneMapping( vec3 color ) {
|
|
|
755
755
|
</div>
|
|
756
756
|
`;const c=this.attachShadow({mode:"open"});iw(),uu(nf,{loadedCallback:()=>{this.handleSizeChange()}}),uu(nf,{element:c});const h=l.content.cloneNode(!0);c?.appendChild(h),this.root=c.querySelector("#root"),this.wrapper=(n=this.root)==null?void 0:n.querySelector(".wrapper"),this.options=(t=this.root)==null?void 0:t.querySelector(".options"),this.logoContainer=(i=this.root)==null?void 0:i.querySelector(".logo"),this.compactMenuButton=(s=this.root)==null?void 0:s.querySelector(".compact-menu-button"),this.compactMenuButton.append(Ot("more_vert")),this.foldout=(o=this.root)==null?void 0:o.querySelector(".foldout"),(r=this.root)==null||r.appendChild(this.wrapper),this.wrapper.classList.add("wrapper");const d=nw.create();d.style.minHeight="1rem",this.logoContainer.append(d),this.logoContainer.addEventListener("click",()=>{globalThis.open("https://needle.tools","_blank")});try{window.requestAnimationFrame(()=>xk(f=>{if(f==!0&&Hn()&&!ow){let v=this._userRequestedLogoVisible;v===void 0&&(v=!1),this.___onSetLogoVisible(v)}else this.___onSetLogoVisible(!0)}))}catch(f){console.error("[Needle Menu] License check failed.",f)}this.compactMenuButton.addEventListener("click",f=>{f.preventDefault(),this.root.classList.toggle("open")});let u=this._context;setTimeout(()=>u=this._context);let p=0;const g=(f,v)=>{var b,w,_;Tc&&console.log("Set menu visible",v),u!=null&&u.isInAR&&u.arOverlayElement?f!=u.arOverlayElement&&u.arOverlayElement.appendChild(this):this.parentNode!=((b=this._domElement)==null?void 0:b.shadowRoot)&&((_=(w=this._domElement)==null?void 0:w.shadowRoot)==null||_.appendChild(this)),this.style.display=v?"flex":"none",this.style.visibility="visible",this.style.opacity="1"};let y=!1;new MutationObserver(f=>{var v;if(!y)try{y=!0,this.onChangeDetected(f);const b=this==null?void 0:this.parentNode;if((this.style.display!="flex"||this.style.visibility!="visible"||this.style.opacity!="1"||b!=((v=this._domElement)==null?void 0:v.shadowRoot))&&!Hn()){const w=p++;Qt()&&this._userRequestedMenuVisible===!1?(w===0&&g(b,this._userRequestedMenuVisible),w===1&&console.warn("Needle Menu Warning: You need a PRO license to hide the Needle Engine menu \u2192 The menu will be visible in your deployed website if you don't have a PRO license. See https://needle.tools/pricing for details.")):w===0?g(b,!0):setTimeout(()=>g(b,!0),5)}}finally{y=!1}}).observe(this.root,{childList:!0,subtree:!0,attributes:!0}),Tc&&this.___insertDebugOptions()}static create(){return document.createElement(Cr,{is:Cr})}static getOrCreate(n,t){let i=n.querySelector(Cr);return!i&&n.shadowRoot&&(i=n.shadowRoot.querySelector(Cr)),i||(i=window.document.body.querySelector(Cr)),i||(i=rw.create(),n.shadowRoot?n.shadowRoot.appendChild(i):n.appendChild(i)),i._domElement=n,i._context=t,i}connectedCallback(){window.addEventListener("resize",this.handleSizeChange),this.handleMenuVisible(),this._sizeChangeInterval=setInterval(()=>this.handleSizeChange(void 0,!0),5e3),setTimeout(()=>{var n,t;(n=this._domElement)==null||n.addEventListener("resize",this.handleSizeChange),(t=this._domElement)==null||t.addEventListener("click",ge(this,mu))},1)}disconnectedCallback(){var n,t;window.removeEventListener("resize",this.handleSizeChange),clearInterval(this._sizeChangeInterval),(n=this._domElement)==null||n.removeEventListener("resize",this.handleSizeChange),(t=this._context)==null||t.domElement.removeEventListener("click",ge(this,mu))}showNeedleLogo(n){this._userRequestedLogoVisible=n,!(!n&&(!Hn()||ow)&&(console.warn("[Needle Engine] You need a PRO license to hide the Needle Engine logo in production."),!Qt()))&&this.___onSetLogoVisible(n)}get logoIsVisible(){return!this.root.classList.contains("logo-hidden")}___onSetLogoVisible(n){this.logoContainer.style.display="",this.logoContainer.style.opacity="1",this.logoContainer.style.visibility="visible",n?(this.root.classList.remove("logo-hidden"),this.root.classList.add("logo-visible")):(this.root.classList.remove("logo-visible"),this.root.classList.add("logo-hidden"))}setPosition(n){if(n!=="top"&&n!=="bottom")return console.error("NeedleMenu.setPosition: invalid position",n);this.root.classList.remove("top","bottom"),this.root.classList.add(n)}setVisible(n){this._userRequestedMenuVisible=n,this.style.display=n?"flex":"none"}closeFoldout(){this.root.classList.remove("open")}append(...n){for(const t of n)if(typeof t=="string"){const i=document.createTextNode(t);this.options.appendChild(i)}else this.options.appendChild(t)}appendChild(n){var t;if(!(n instanceof Node)){const i=document.createElement("button");if(i.textContent=n.label,i.onclick=n.onClick,i.setAttribute("priority",((t=n.priority)==null?void 0:t.toString())??"0"),n.title&&(i.title=n.title),n.icon){const s=Ot(n.icon);n.iconSide==="right"?i.appendChild(s):i.prepend(s)}n.class&&i.classList.add(n.class),n=i}return this.options.appendChild(n)}prepend(...n){for(const t of n)if(typeof t=="string"){const i=document.createTextNode(t);this.options.prepend(i)}else this.options.prepend(t)}onChangeDetected(n){if(!this._isHandlingChange){this._isHandlingChange=!0;try{this.handleMenuVisible();for(const t of n)t.target==this.options&&this.onOptionsChildrenChanged(t)}finally{this._isHandlingChange=!1}}}onOptionsChildrenChanged(n){if(this.root.classList.toggle("has-options",this.hasAnyVisibleOptions),this.root.classList.toggle("has-no-options",!this.hasAnyVisibleOptions),this.handleSizeChange(void 0,!0),n.type==="childList"&&n.addedNodes.length>0){const t=Array.from(this.options.children);t.sort((s,o)=>{const r=parseInt(s.getAttribute("priority")||"0"),l=parseInt(o.getAttribute("priority")||"0");return r-l});let i=!1;for(let s=0;s<t.length;s++){const o=this.options.children[s],r=t[s];if(o!==r){i=!0;break}}if(i)for(const s of t)this.options.appendChild(s)}}handleMenuVisible(){Tc&&console.log("Update VisibleState: Any Content?",this.hasAnyContent),this.hasAnyContent?this.root.style.display="":this.root.style.display="none",this.root.classList.toggle("has-options",this.hasAnyVisibleOptions),this.root.classList.toggle("has-no-options",!this.hasAnyVisibleOptions)}get hasAnyContent(){return!!(this.logoContainer.style.display!="none"||this.hasAnyVisibleOptions)}get hasAnyVisibleOptions(){for(let n=0;n<this.options.children.length;n++){const t=this.options.children[n];if(t.tagName==="SLOT"){const i=t.assignedNodes();for(const s of i)if(s instanceof HTMLElement&&s.style.display!="none")return!0}else if(t.style.display!="none")return!0}return!1}___insertDebugOptions(){window.addEventListener("keydown",i=>{i.key==="p"&&this.setPosition(this.root.classList.contains("top")?"bottom":"top")});const n=document.createElement("button");n.textContent="Hide Buttons",n.onclick=()=>{const i=new Array(this.options.children.length);for(let s=0;s<this.options.children.length;s++)i[s]=this.options.children[s];for(const s of i)this.options.removeChild(s);setTimeout(()=>{for(const s of i)this.options.appendChild(s)},1e3)},this.appendChild(n);const t=document.createElement("button");t.textContent="Toggle Logo",t.addEventListener("click",()=>{this.logoContainer.style.display=this.logoContainer.style.display==="none"?"":"none"}),this.appendChild(t)}};let aw=rw;mu=new WeakMap,customElements.get(Cr)||customElements.define(Cr,aw);const rt=C("debugcontext"),fk=C("stats"),yk=C("debugactive"),vk=C("debugframerate"),bk=C("debugcoroutine"),_k={};class wk{constructor(){a(this,"name"),a(this,"alias"),a(this,"hash"),a(this,"runInBackground"),a(this,"domElement"),a(this,"renderer"),a(this,"camera"),a(this,"scene")}}var Me=(n=>(n[n.Start=-1]="Start",n[n.EarlyUpdate=0]="EarlyUpdate",n[n.Update=1]="Update",n[n.LateUpdate=2]="LateUpdate",n[n.OnBeforeRender=3]="OnBeforeRender",n[n.OnAfterRender=4]="OnAfterRender",n[n.PrePhysicsStep=9]="PrePhysicsStep",n[n.PostPhysicsStep=10]="PostPhysicsStep",n[n.Undefined=-1]="Undefined",n))(Me||{});function gu(n,t){if(!n)return;if(!n.isComponent){(F()||rt)&&console.error(`Registered script is not a Needle Engine component.
|
|
757
757
|
The script will be ignored. Please make sure your component extends "Behaviour" imported from "@needle-tools/engine"
|
|
758
|
-
`,n);return}t||(t=ee.Current,rt&&console.warn("> Registering component without context"));const i=t?.new_scripts;i.includes(n)||i.push(n)}const Ie=class{constructor(n){a(this,"name"),a(this,"alias"),a(this,"isManagedExternally",!1),a(this,"isPaused",!1),a(this,"runInBackground",!1),a(this,"targetFrameRate"),a(this,"physicsSteps",1),a(this,"hash"),a(this,"domElement"),a(this,"_resolutionScaleFactor",1),a(this,"_boundingClientRectFrame",-1),a(this,"_boundingClientRect",null),a(this,"_domX"),a(this,"_domY"),a(this,"xr",null),a(this,"_xrFrame",null),a(this,"_currentFrameEvent",-1),a(this,"scene"),a(this,"renderer"),a(this,"composer",null),a(this,"scripts",[]),a(this,"scripts_pausedChanged",[]),a(this,"scripts_earlyUpdate",[]),a(this,"scripts_update",[]),a(this,"scripts_lateUpdate",[]),a(this,"scripts_onBeforeRender",[]),a(this,"scripts_onAfterRender",[]),a(this,"scripts_WithCorroutines",[]),a(this,"scripts_immersive_vr",[]),a(this,"scripts_immersive_ar",[]),a(this,"coroutines",{}),a(this,"post_setup_callbacks",[]),a(this,"pre_update_callbacks",[]),a(this,"pre_render_callbacks",[]),a(this,"post_render_callbacks",[]),a(this,"pre_update_oneshot_callbacks",[]),a(this,"new_scripts",[]),a(this,"new_script_start",[]),a(this,"new_scripts_pre_setup_callbacks",[]),a(this,"new_scripts_post_setup_callbacks",[]),a(this,"new_scripts_xr",[]),a(this,"mainCameraComponent"),a(this,"_mainCamera",null),a(this,"_fallbackCamera",null),a(this,"application"),a(this,"animations"),a(this,"time"),a(this,"input"),a(this,"physics"),a(this,"connection"),a(this,"assets"),a(this,"mainLight",null),a(this,"sceneLighting"),a(this,"addressables"),a(this,"lightmaps"),a(this,"players"),a(this,"lodsManager"),a(this,"menu"),a(this,"_needsUpdateSize",!1),a(this,"_isCreated",!1),a(this,"_isCreating",!1),a(this,"_isVisible",!1),a(this,"_stats",fk?new UC:null),a(this,"_intersectionObserver",null),a(this,"_disposeCallbacks",[]),a(this,"maxRenderResolution"),a(this,"_devicePixelRatio","auto"),a(this,"_originalCreationArgs"),a(this,"onUnhandledRejection",s=>{this.onError(s.reason)}),a(this,"_cameraStack",[]),a(this,"_onBeforeRenderListeners",new Map),a(this,"_onAfterRenderListeners",new Map),a(this,"_requireDepthTexture",!1),a(this,"_requireColorTexture",!1),a(this,"_renderTarget"),a(this,"_isRendering",!1),a(this,"_createId",0),a(this,"_renderlooperrors",0),a(this,"_lastTimestamp",0),a(this,"_accumulatedTime",0),a(this,"_dispatchReadyAfterFrame",!1),a(this,"_contextRestoreTries",0),a(this,"_wasPaused",!1),this.name=n?.name||"",this.alias=n?.alias,this.domElement=n?.domElement||document.body,this.hash=n?.hash,n!=null&&n.renderer&&(this.renderer=n.renderer,this.isManagedExternally=!0),n?.runInBackground!==void 0&&(this.runInBackground=n.runInBackground),n!=null&&n.scene?this.scene=n.scene:this.scene=new wi,n!=null&&n.camera&&(this._mainCamera=n.camera),this.application=new Ms(this),this.time=new K_,this.input=new yb(this),this.physics=new jd(this),this.connection=new Ab(this),this.assets=new Gb,this.sceneLighting=new Q_(this),this.addressables=new F_(this),this.lightmaps=new ik(this),this.players=new G_(this),this.menu=new gk(this),this.lodsManager=new nk(this),this.animations=new J2(this);const t=()=>this._needsUpdateSize=!0;window.addEventListener("resize",t),this._disposeCallbacks.push(()=>window.removeEventListener("resize",t));const i=new ResizeObserver(s=>this._needsUpdateSize=!0);i.observe(this.domElement),this._disposeCallbacks.push(()=>i.disconnect()),this._intersectionObserver=new IntersectionObserver(s=>{this._isVisible=s[0].isIntersecting}),this._disposeCallbacks.push(()=>{var s;return(s=this._intersectionObserver)==null?void 0:s.disconnect()}),pe.register(this)}static get DefaultTargetFrameRate(){return Ie._defaultTargetFramerate.value}static set DefaultTargetFrameRate(n){Ie._defaultTargetFramerate.value=n}static get DefaultWebGLRendererParameters(){return Ie._defaultWebglRendererParameters}get version(){return bn}static get Current(){return pe.Current}static set Current(n){pe.Current=n}static get All(){return pe.All}appendHTMLElement(n){return this.domElement.shadowRoot?this.domElement.shadowRoot.appendChild(n):this.domElement.appendChild(n)}get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(n){if(n!==this._resolutionScaleFactor&&typeof n=="number"){if(n<=0){console.error("Invalid resolution scale factor",n);return}this._resolutionScaleFactor=n,this.updateSize()}}calculateBoundingClientRect(){if(this.xr){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){var n,t;return((t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.isPresenting)||!1}get xrSessionMode(){var n;return(n=this.xr)==null?void 0:n.mode}get isInVR(){return this.xrSessionMode==="immersive-vr"}get isInAR(){return this.xrSessionMode==="immersive-ar"}get isInPassThrough(){return this.xr?this.xr.isPassThrough:!1}get xrSession(){var n,t;return(t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.getSession()}get xrFrame(){return this._xrFrame}get xrCamera(){var n,t;return this.renderer.xr.isPresenting?(t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.getCamera():void 0}get arOverlayElement(){const n=this.domElement;return typeof n.getAROverlayContainer=="function"?n.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}get mainCamera(){if(this._mainCamera)return this._mainCamera;if(this.mainCameraComponent){const n=this.mainCameraComponent;return n.threeCamera||n.buildCamera(),n.threeCamera}return this._fallbackCamera||(this._fallbackCamera=new xe(75,this.domWidth/this.domHeight,.1,1e3)),this._fallbackCamera}set mainCamera(n){this._mainCamera=n}get rendererData(){return this.sceneLighting}get isCreated(){return this._isCreated}createNewRenderer(n){var t,i,s;if((t=this.renderer)==null||t.dispose(),n={...Ie.DefaultWebGLRendererParameters,...n},!n.canvas){const o=(s=(i=this.domElement)==null?void 0:i.shadowRoot)==null?void 0:s.querySelector("canvas");o&&(n.canvas=o,rt&&console.log("Using canvas from shadow root",o))}rt&&console.log("Using Renderer Parameters:",n,this.domElement),this.renderer=new rr(n),this.renderer.debug.checkShaderErrors=F()||C("checkshadererrors")===!0,this.renderer.toneMappingExposure=1,this.renderer.toneMapping=ya,this.renderer.setClearColor(new ce("lightgrey"),0),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=ES,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputColorSpace=bs,this.renderer.nodes={library:new AS,modelViewMatrix:null,modelNormalViewMatrix:null},this.lodsManager.setRenderer(this.renderer),this.input.bindEvents()}internalOnUpdateVisible(){var n,t;(n=this._intersectionObserver)==null||n.disconnect(),(t=this._intersectionObserver)==null||t.observe(this.domElement)}requestSizeUpdate(){this._needsUpdateSize=!0}get devicePixelRatio(){return this._devicePixelRatio}set devicePixelRatio(n){n!==this._devicePixelRatio&&(this._devicePixelRatio=n,this._needsUpdateSize=!0)}updateSize(n=!1){var t,i,s;if(n||!this.isManagedExternally&&((t=this.renderer.xr)==null?void 0:t.isPresenting)===!1){this._needsUpdateSize=!1;const o=this.resolutionScaleFactor;let r=this.domWidth*o,l=this.domHeight*o;this.maxRenderResolution&&(this.maxRenderResolution.x=Math.max(1,this.maxRenderResolution.x),r=Math.min(this.maxRenderResolution.x,r),this.maxRenderResolution.y=Math.max(1,this.maxRenderResolution.y),l=Math.min(this.maxRenderResolution.y,l));const c=this.mainCamera;this.updateAspect(c),this.renderer.setSize(r,l,!0),this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%";const h=typeof this.devicePixelRatio=="number"?this.devicePixelRatio:this.devicePixelRatio==="auto"?window.devicePixelRatio:void 0;h!==void 0&&this.renderer.setPixelRatio(h),this.composer&&((i=this.composer.setSize)==null||i.call(this.composer,r,l),h!==void 0&&"setPixelRatio"in this.composer&&typeof this.composer.setPixelRatio=="function"&&((s=this.composer.setPixelRatio)==null||s.call(this.composer,window.devicePixelRatio)))}}updateAspect(n,t,i){if(!n)return;t===void 0&&(t=this.domWidth),i===void 0&&(i=this.domHeight);const s=t/i;if(n.isPerspectiveCamera){const o=n,r=o.aspect;o.aspect=s,r!==o.aspect&&n.updateProjectionMatrix()}else if(n.isOrthographicCamera){const o=n,r=o.top-o.bottom,l=r*s/2,c=r/2;(o.left!=-l||o.top!=c)&&(o.left=-l,o.right=l,o.top=c,o.bottom=-c,n.updateProjectionMatrix())}}recreate(){this.clear(),this.create(this._originalCreationArgs)}async onCreate(n){return this.create(n)}async create(n){try{this._isCreating=!0,n!==this._originalCreationArgs&&(this._originalCreationArgs=Yl(n)),window.addEventListener("unhandledrejection",this.onUnhandledRejection);const t=await this.internalOnCreate(n);return this._isCreated=t,t}finally{window.removeEventListener("unhandledrejection",this.onUnhandledRejection),this._isCreating=!1}}onError(n){this.domElement.dispatchEvent(new CustomEvent("error",{detail:n}))}clear(){var n,t,i,s;pe.dispatchCallback(fe.ContextClearing,this),Un(this,fe.ContextClearing),Ei(this.scene,!0,!0),this.scene=new wi,(n=this.addressables)==null||n.dispose(),(t=this.lightmaps)==null||t.clear(),(s=(i=this.physics)==null?void 0:i.engine)==null||s.clearCaches(),this.lodsManager.disable(),this.isManagedExternally||this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.state.reset(),this.renderer.resetState()),pe.dispatchCallback(fe.ContextCleared,this)}dispose(){this.internalOnDestroy()}onDestroy(){this.internalOnDestroy()}internalOnDestroy(){var n,t;Ie.Current=this,pe.dispatchCallback(fe.ContextDestroying,this),Un(this,fe.ContextDestroying),this.clear(),(n=this.renderer)==null||n.setAnimationLoop(null),this.renderer&&(this.renderer.setClearAlpha(0),this.renderer.clear(),this.isManagedExternally||(rt&&console.log("Disposing renderer"),this.renderer.dispose())),this.scene=null,this.renderer=null,this.input.dispose(),this.menu.onDestroy(),this.animations.onDestroy();for(const i of this._disposeCallbacks)try{i()}catch(s){console.error("Error in on dispose callback:",s,i)}(t=this.domElement)!=null&&t.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this._isCreated=!1,pe.dispatchCallback(fe.ContextDestroyed,this),Un(this,fe.ContextDestroyed),pe.unregister(this),Ie.Current===this&&(Ie.Current=null)}registerCoroutineUpdate(n,t,i){return typeof t?.next!="function"?(console.error("Registered invalid coroutine function from "+n.name+`
|
|
758
|
+
`,n);return}t||(t=ee.Current,rt&&console.warn("> Registering component without context"));const i=t?.new_scripts;i.includes(n)||i.push(n)}const Ie=class{constructor(n){a(this,"name"),a(this,"alias"),a(this,"isManagedExternally",!1),a(this,"isPaused",!1),a(this,"runInBackground",!1),a(this,"targetFrameRate"),a(this,"physicsSteps",1),a(this,"hash"),a(this,"domElement"),a(this,"_resolutionScaleFactor",1),a(this,"_boundingClientRectFrame",-1),a(this,"_boundingClientRect",null),a(this,"_domX"),a(this,"_domY"),a(this,"xr",null),a(this,"_xrFrame",null),a(this,"_currentFrameEvent",-1),a(this,"scene"),a(this,"renderer"),a(this,"composer",null),a(this,"scripts",[]),a(this,"scripts_pausedChanged",[]),a(this,"scripts_earlyUpdate",[]),a(this,"scripts_update",[]),a(this,"scripts_lateUpdate",[]),a(this,"scripts_onBeforeRender",[]),a(this,"scripts_onAfterRender",[]),a(this,"scripts_WithCorroutines",[]),a(this,"scripts_immersive_vr",[]),a(this,"scripts_immersive_ar",[]),a(this,"coroutines",{}),a(this,"post_setup_callbacks",[]),a(this,"pre_update_callbacks",[]),a(this,"pre_render_callbacks",[]),a(this,"post_render_callbacks",[]),a(this,"pre_update_oneshot_callbacks",[]),a(this,"new_scripts",[]),a(this,"new_script_start",[]),a(this,"new_scripts_pre_setup_callbacks",[]),a(this,"new_scripts_post_setup_callbacks",[]),a(this,"new_scripts_xr",[]),a(this,"mainCameraComponent"),a(this,"_mainCamera",null),a(this,"_fallbackCamera",null),a(this,"application"),a(this,"animations"),a(this,"time"),a(this,"input"),a(this,"physics"),a(this,"connection"),a(this,"assets"),a(this,"mainLight",null),a(this,"sceneLighting"),a(this,"addressables"),a(this,"lightmaps"),a(this,"players"),a(this,"lodsManager"),a(this,"menu"),a(this,"_needsUpdateSize",!1),a(this,"_isCreated",!1),a(this,"_isCreating",!1),a(this,"_isVisible",!1),a(this,"_stats",fk?new UC:null),a(this,"_intersectionObserver",null),a(this,"_disposeCallbacks",[]),a(this,"maxRenderResolution"),a(this,"_devicePixelRatio","auto"),a(this,"_originalCreationArgs"),a(this,"onUnhandledRejection",s=>{this.onError(s.reason)}),a(this,"_cameraStack",[]),a(this,"_onBeforeRenderListeners",new Map),a(this,"_onAfterRenderListeners",new Map),a(this,"_requireDepthTexture",!1),a(this,"_requireColorTexture",!1),a(this,"_renderTarget"),a(this,"_isRendering",!1),a(this,"_createId",0),a(this,"_renderlooperrors",0),a(this,"_lastTimestamp",0),a(this,"_accumulatedTime",0),a(this,"_dispatchReadyAfterFrame",!1),a(this,"_contextRestoreTries",0),a(this,"_wasPaused",!1),this.name=n?.name||"",this.alias=n?.alias,this.domElement=n?.domElement||document.body,this.hash=n?.hash,n!=null&&n.renderer&&(this.renderer=n.renderer,this.isManagedExternally=!0),n?.runInBackground!==void 0&&(this.runInBackground=n.runInBackground),n!=null&&n.scene?this.scene=n.scene:this.scene=new wi,n!=null&&n.camera&&(this._mainCamera=n.camera),this.application=new Ms(this),this.time=new K_,this.input=new yb(this),this.physics=new jd(this),this.connection=new Ab(this),this.assets=new Gb,this.sceneLighting=new Q_(this),this.addressables=new F_(this),this.lightmaps=new ik(this),this.players=new G_(this),this.menu=new gk(this),this.lodsManager=new nk(this),this.animations=new J2(this);const t=()=>this._needsUpdateSize=!0;window.addEventListener("resize",t),this._disposeCallbacks.push(()=>window.removeEventListener("resize",t));const i=new ResizeObserver(s=>this._needsUpdateSize=!0);i.observe(this.domElement),this._disposeCallbacks.push(()=>i.disconnect()),this._intersectionObserver=new IntersectionObserver(s=>{this._isVisible=s[0].isIntersecting}),this._disposeCallbacks.push(()=>{var s;return(s=this._intersectionObserver)==null?void 0:s.disconnect()}),pe.register(this)}static get DefaultTargetFrameRate(){return Ie._defaultTargetFramerate.value}static set DefaultTargetFrameRate(n){Ie._defaultTargetFramerate.value=n}static get DefaultWebGLRendererParameters(){return Ie._defaultWebglRendererParameters}get version(){return bn}static get Current(){return pe.Current}static set Current(n){pe.Current=n}static get All(){return pe.All}appendHTMLElement(n){return this.domElement.shadowRoot?this.domElement.shadowRoot.appendChild(n):this.domElement.appendChild(n)}get resolutionScaleFactor(){return this._resolutionScaleFactor}set resolutionScaleFactor(n){if(n!==this._resolutionScaleFactor&&typeof n=="number"){if(n<=0){console.error("Invalid resolution scale factor",n);return}this._resolutionScaleFactor=n,this.updateSize()}}calculateBoundingClientRect(){if(this.xr){this._domX=0,this._domY=0;return}this._boundingClientRectFrame!==this.time.frame&&(this._boundingClientRectFrame=this.time.frame,this._boundingClientRect=this.domElement.getBoundingClientRect(),this._domX=this._boundingClientRect.x,this._domY=this._boundingClientRect.y)}get domWidth(){return this.isInAR?window.innerWidth:this.domElement.clientWidth}get domHeight(){return this.isInAR?window.innerHeight:this.domElement.clientHeight}get domX(){return this.calculateBoundingClientRect(),this._domX}get domY(){return this.calculateBoundingClientRect(),this._domY}get isInXR(){var n,t;return((t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.isPresenting)||!1}get xrSessionMode(){var n;return(n=this.xr)==null?void 0:n.mode}get isInVR(){return this.xrSessionMode==="immersive-vr"}get isInAR(){return this.xrSessionMode==="immersive-ar"}get isInPassThrough(){return this.xr?this.xr.isPassThrough:!1}get xrSession(){var n,t;return(t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.getSession()}get xrFrame(){return this._xrFrame}get xrCamera(){var n,t;return this.renderer.xr.isPresenting?(t=(n=this.renderer)==null?void 0:n.xr)==null?void 0:t.getCamera():void 0}get arOverlayElement(){const n=this.domElement;return typeof n.getAROverlayContainer=="function"?n.getAROverlayContainer():this.domElement}get currentFrameEvent(){return this._currentFrameEvent}get mainCamera(){if(this._mainCamera)return this._mainCamera;if(this.mainCameraComponent){const n=this.mainCameraComponent;return n.threeCamera||n.buildCamera(),n.threeCamera}return this._fallbackCamera||(this._fallbackCamera=new xe(75,this.domWidth/this.domHeight,.1,1e3)),this._fallbackCamera}set mainCamera(n){this._mainCamera=n}get rendererData(){return this.sceneLighting}get isCreated(){return this._isCreated}createNewRenderer(n){var t,i,s;if((t=this.renderer)==null||t.dispose(),n={...Ie.DefaultWebGLRendererParameters,...n},!n.canvas){const o=(s=(i=this.domElement)==null?void 0:i.shadowRoot)==null?void 0:s.querySelector("canvas");o&&(n.canvas=o,rt&&console.log("Using canvas from shadow root",o))}return rt&&console.log("Using Renderer Parameters:",n,this.domElement),this.renderer=new rr(n),this.renderer.debug.checkShaderErrors=F()||C("checkshadererrors")===!0,this.renderer.toneMappingExposure=1,this.renderer.toneMapping=ya,this.renderer.setClearColor(new ce("lightgrey"),0),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=ES,this.renderer.setSize(this.domWidth,this.domHeight),this.renderer.outputColorSpace=bs,this.renderer.nodes={library:new AS,modelViewMatrix:null,modelNormalViewMatrix:null},this.lodsManager.setRenderer(this.renderer),this.input.bindEvents(),this.renderer}internalOnUpdateVisible(){var n,t;(n=this._intersectionObserver)==null||n.disconnect(),(t=this._intersectionObserver)==null||t.observe(this.domElement)}requestSizeUpdate(){this._needsUpdateSize=!0}get devicePixelRatio(){return this._devicePixelRatio}set devicePixelRatio(n){n!==this._devicePixelRatio&&(this._devicePixelRatio=n,this._needsUpdateSize=!0)}updateSize(n=!1){var t,i,s;if(n||!this.isManagedExternally&&((t=this.renderer.xr)==null?void 0:t.isPresenting)===!1){this._needsUpdateSize=!1;const o=this.resolutionScaleFactor;let r=this.domWidth*o,l=this.domHeight*o;this.maxRenderResolution&&(this.maxRenderResolution.x=Math.max(1,this.maxRenderResolution.x),r=Math.min(this.maxRenderResolution.x,r),this.maxRenderResolution.y=Math.max(1,this.maxRenderResolution.y),l=Math.min(this.maxRenderResolution.y,l));const c=this.mainCamera;this.updateAspect(c),this.renderer.setSize(r,l,!0),this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%";const h=typeof this.devicePixelRatio=="number"?this.devicePixelRatio:this.devicePixelRatio==="auto"?window.devicePixelRatio:void 0;h!==void 0&&this.renderer.setPixelRatio(h),this.composer&&((i=this.composer.setSize)==null||i.call(this.composer,r,l),h!==void 0&&"setPixelRatio"in this.composer&&typeof this.composer.setPixelRatio=="function"&&((s=this.composer.setPixelRatio)==null||s.call(this.composer,window.devicePixelRatio)))}}updateAspect(n,t,i){if(!n)return;t===void 0&&(t=this.domWidth),i===void 0&&(i=this.domHeight);const s=t/i;if(n.isPerspectiveCamera){const o=n,r=o.aspect;o.aspect=s,r!==o.aspect&&n.updateProjectionMatrix()}else if(n.isOrthographicCamera){const o=n,r=o.top-o.bottom,l=r*s/2,c=r/2;(o.left!=-l||o.top!=c)&&(o.left=-l,o.right=l,o.top=c,o.bottom=-c,n.updateProjectionMatrix())}}recreate(){this.clear(),this.create(this._originalCreationArgs)}async onCreate(n){return this.create(n)}async create(n){try{this._isCreating=!0,n!==this._originalCreationArgs&&(this._originalCreationArgs=Yl(n)),window.addEventListener("unhandledrejection",this.onUnhandledRejection);const t=await this.internalOnCreate(n);return this._isCreated=t,t}finally{window.removeEventListener("unhandledrejection",this.onUnhandledRejection),this._isCreating=!1}}onError(n){this.domElement.dispatchEvent(new CustomEvent("error",{detail:n}))}clear(){var n,t,i,s;pe.dispatchCallback(fe.ContextClearing,this),Un(this,fe.ContextClearing),Ei(this.scene,!0,!0),this.scene=new wi,(n=this.addressables)==null||n.dispose(),(t=this.lightmaps)==null||t.clear(),(s=(i=this.physics)==null?void 0:i.engine)==null||s.clearCaches(),this.lodsManager.disable(),this.isManagedExternally||this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.state.reset(),this.renderer.resetState()),pe.dispatchCallback(fe.ContextCleared,this)}dispose(){this.internalOnDestroy()}onDestroy(){this.internalOnDestroy()}internalOnDestroy(){var n,t;Ie.Current=this,pe.dispatchCallback(fe.ContextDestroying,this),Un(this,fe.ContextDestroying),this.clear(),(n=this.renderer)==null||n.setAnimationLoop(null),this.renderer&&(this.renderer.setClearAlpha(0),this.renderer.clear(),this.isManagedExternally||(rt&&console.log("Disposing renderer"),this.renderer.dispose())),this.scene=null,this.renderer=null,this.input.dispose(),this.menu.onDestroy(),this.animations.onDestroy();for(const i of this._disposeCallbacks)try{i()}catch(s){console.error("Error in on dispose callback:",s,i)}(t=this.domElement)!=null&&t.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this._isCreated=!1,pe.dispatchCallback(fe.ContextDestroyed,this),Un(this,fe.ContextDestroyed),pe.unregister(this),Ie.Current===this&&(Ie.Current=null)}registerCoroutineUpdate(n,t,i){return typeof t?.next!="function"?(console.error("Registered invalid coroutine function from "+n.name+`
|
|
759
759
|
Coroutine functions must be generators: "*myCoroutine() {...}"
|
|
760
760
|
Start a coroutine from a component by calling "this.startCoroutine(myCoroutine())"`),t):(this.coroutines[i]||(this.coroutines[i]=[]),this.coroutines[i].push({comp:n,main:t}),t)}unregisterCoroutineUpdate(n,t){if(!this.coroutines[t])return;const i=this.coroutines[t].findIndex(s=>s.main===n);i>=0&&this.coroutines[t].splice(i,1)}stopAllCoroutinesFrom(n){for(const t in this.coroutines){const i=this.coroutines[t];for(let s=i.length-1;s>=0;s--)i[s].comp===n&&i.splice(s,1)}}setCurrentCamera(n){var t;if(!n)return;if(n.threeCamera||n.buildCamera(),!n.threeCamera){console.warn("Camera component is missing camera",n);return}const i=this._cameraStack.indexOf(n);i>=0&&this._cameraStack.splice(i,1),this._cameraStack.push(n),this.mainCameraComponent=n;const s=n.threeCamera;s.isPerspectiveCamera&&this.updateAspect(s),(t=this.mainCameraComponent)==null||t.applyClearFlagsIfIsActiveCamera()}removeCamera(n){if(!n)return;const t=this._cameraStack.indexOf(n);if(t>=0&&this._cameraStack.splice(t,1),this.mainCameraComponent===n&&(this.mainCameraComponent=void 0,this._cameraStack.length>0)){const i=this._cameraStack[this._cameraStack.length-1];this.setCurrentCamera(i)}}addBeforeRenderListener(n,t){this._onBeforeRenderListeners.has(n.uuid)||(this._onBeforeRenderListeners.set(n.uuid,[]),n.onBeforeRender=this._createRenderCallbackWrapper(n,this._onBeforeRenderListeners)),this._onBeforeRenderListeners.get(n.uuid).push(t)}removeBeforeRenderListener(n,t){if(this._onBeforeRenderListeners.has(n.uuid)){const i=this._onBeforeRenderListeners.get(n.uuid),s=i.indexOf(t);s>=0&&i.splice(s,1)}}addAfterRenderListener(n,t){var i;this._onAfterRenderListeners.has(n.uuid)||(this._onAfterRenderListeners.set(n.uuid,[]),n.onAfterRender=this._createRenderCallbackWrapper(n,this._onAfterRenderListeners)),(i=this._onAfterRenderListeners.get(n.uuid))==null||i.push(t)}removeAfterRenderListener(n,t){if(this._onAfterRenderListeners.has(n.uuid)){const i=this._onAfterRenderListeners.get(n.uuid),s=i.indexOf(t);s>=0&&i.splice(s,1)}}_createRenderCallbackWrapper(n,t){return(i,s,o,r,l,c)=>{const h=t.get(n.uuid);if(h)for(let d=0;d<h.length;d++){const u=h[d];u(i,s,o,r,l,c)}}}get isRendering(){return this._isRendering}setRequireDepth(n){this._requireDepthTexture=n}setRequireColor(n){this._requireColorTexture=n}get depthTexture(){var n;return((n=this._renderTarget)==null?void 0:n.depthTexture)||null}get opaqueColorTexture(){var n;return((n=this._renderTarget)==null?void 0:n.texture)||null}get isVisibleToUser(){if(this.isInXR)return!0;if(!this._isVisible)return!1;const n=getComputedStyle(this.domElement);return n.visibility!=="hidden"&&n.display!=="none"&&n.opacity!=="0"}async internalOnCreate(n){var t,i,s,o,r,l,c,h;const d=++this._createId;rt&&console.log("Creating context",this.name,n);const u=globalThis["needle:dependencies:ready"];u instanceof Promise&&(rt&&console.log("Waiting for dependencies to be ready"),await u.catch(f=>{if(rt||F()){if(oc("Needle Engine dependencies failed to load. Please check the console for more details"),f instanceof ReferenceError){let v="YourComponentName";const b=f.message.indexOf("'");if(b>0){const w=f.message.indexOf("'",b+1);if(w>0){const _=f.message.substring(b+1,w);_.length>3&&(v=_)}}console.error(`Needle Engine dependencies failed to load:
|
|
761
761
|
|