@needle-tools/engine 3.28.7-beta → 3.28.7-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2259 -2256
- package/LICENSE.md +10 -10
- package/README.md +52 -52
- package/dist/needle-engine.js +9 -12
- package/dist/needle-engine.light.js +9 -12
- package/dist/needle-engine.light.min.js +8 -11
- package/dist/needle-engine.light.umd.cjs +8 -11
- package/dist/needle-engine.min.js +8 -11
- package/dist/needle-engine.umd.cjs +8 -11
- package/lib/engine/api.d.ts +52 -52
- package/lib/engine/api.js +51 -51
- package/lib/engine/assets/index.d.ts +1 -1
- package/lib/engine/assets/index.js +4 -4
- package/lib/engine/codegen/register_types.d.ts +1 -1
- package/lib/engine/codegen/register_types.js +439 -439
- package/lib/engine/debug/debug.d.ts +12 -12
- package/lib/engine/debug/debug.js +26 -26
- package/lib/engine/debug/debug_console.d.ts +2 -2
- package/lib/engine/debug/debug_console.js +204 -204
- package/lib/engine/debug/debug_overlay.d.ts +10 -10
- package/lib/engine/debug/debug_overlay.js +277 -277
- package/lib/engine/debug/index.d.ts +1 -1
- package/lib/engine/debug/index.js +1 -1
- package/lib/engine/engine_addressables.d.ts +75 -75
- package/lib/engine/engine_addressables.js +441 -441
- package/lib/engine/engine_application.d.ts +19 -19
- package/lib/engine/engine_application.js +45 -45
- package/lib/engine/engine_assetdatabase.d.ts +25 -25
- package/lib/engine/engine_assetdatabase.js +341 -341
- package/lib/engine/engine_camera.d.ts +6 -6
- package/lib/engine/engine_camera.js +23 -23
- package/lib/engine/engine_components.d.ts +17 -17
- package/lib/engine/engine_components.js +273 -273
- package/lib/engine/engine_components_internal.d.ts +11 -11
- package/lib/engine/engine_components_internal.js +41 -41
- package/lib/engine/engine_constants.d.ts +5 -5
- package/lib/engine/engine_constants.js +32 -32
- package/lib/engine/engine_context.d.ts +269 -269
- package/lib/engine/engine_context.js +1242 -1242
- package/lib/engine/engine_context_registry.d.ts +50 -50
- package/lib/engine/engine_context_registry.js +89 -89
- package/lib/engine/engine_coroutine.d.ts +4 -4
- package/lib/engine/engine_coroutine.js +21 -21
- package/lib/engine/engine_create_objects.d.ts +13 -13
- package/lib/engine/engine_create_objects.js +33 -33
- 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 +17 -17
- package/lib/engine/engine_editor-sync.js +7 -7
- package/lib/engine/engine_element.d.ts +55 -55
- package/lib/engine/engine_element.js +559 -559
- package/lib/engine/engine_element_attributes.d.ts +49 -49
- 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 +40 -40
- package/lib/engine/engine_element_loading.js +312 -312
- package/lib/engine/engine_element_overlay.d.ts +19 -19
- package/lib/engine/engine_element_overlay.js +143 -143
- package/lib/engine/engine_fileloader.d.ts +3 -3
- package/lib/engine/engine_fileloader.js +7 -7
- package/lib/engine/engine_gameobject.d.ts +39 -39
- package/lib/engine/engine_gameobject.js +559 -559
- 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 +26 -26
- package/lib/engine/engine_gizmos.js +282 -282
- package/lib/engine/engine_gltf.d.ts +13 -13
- 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 +298 -298
- package/lib/engine/engine_hot_reload.d.ts +5 -5
- package/lib/engine/engine_hot_reload.js +182 -182
- package/lib/engine/engine_input.d.ts +129 -129
- package/lib/engine/engine_input.js +799 -799
- 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 +16 -16
- package/lib/engine/engine_instancing.js +36 -36
- package/lib/engine/engine_license.d.ts +4 -4
- package/lib/engine/engine_license.js +398 -398
- package/lib/engine/engine_lifecycle_api.d.ts +14 -14
- package/lib/engine/engine_lifecycle_api.js +24 -24
- package/lib/engine/engine_lifecycle_functions_internal.d.ts +6 -6
- package/lib/engine/engine_lifecycle_functions_internal.js +28 -28
- package/lib/engine/engine_lightdata.d.ts +23 -23
- package/lib/engine/engine_lightdata.js +86 -86
- package/lib/engine/engine_loaders.d.ts +7 -7
- package/lib/engine/engine_loaders.js +69 -69
- package/lib/engine/engine_mainloop_utils.d.ts +13 -13
- package/lib/engine/engine_mainloop_utils.js +426 -426
- package/lib/engine/engine_math.d.ts +43 -43
- package/lib/engine/engine_math.js +147 -147
- package/lib/engine/engine_networking.d.ts +176 -176
- package/lib/engine/engine_networking.js +649 -649
- package/lib/engine/engine_networking_auto.d.ts +24 -24
- package/lib/engine/engine_networking_auto.js +324 -324
- package/lib/engine/engine_networking_files.d.ts +23 -23
- package/lib/engine/engine_networking_files.js +176 -176
- package/lib/engine/engine_networking_files_default_components.d.ts +3 -3
- package/lib/engine/engine_networking_files_default_components.js +39 -39
- package/lib/engine/engine_networking_instantiate.d.ts +39 -39
- package/lib/engine/engine_networking_instantiate.js +302 -302
- 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 +90 -90
- package/lib/engine/engine_networking_streams.js +428 -428
- package/lib/engine/engine_networking_types.d.ts +14 -14
- 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_patcher.d.ts +10 -10
- package/lib/engine/engine_patcher.js +142 -142
- package/lib/engine/engine_physics.d.ts +115 -115
- package/lib/engine/engine_physics.js +228 -228
- package/lib/engine/engine_physics.types.d.ts +37 -37
- package/lib/engine/engine_physics.types.js +33 -33
- package/lib/engine/engine_physics_rapier.d.ts +112 -112
- package/lib/engine/engine_physics_rapier.js +1266 -1266
- package/lib/engine/engine_playerview.d.ts +26 -26
- package/lib/engine/engine_playerview.js +64 -64
- package/lib/engine/engine_scenelighting.d.ts +74 -74
- package/lib/engine/engine_scenelighting.js +285 -285
- package/lib/engine/engine_scenetools.d.ts +35 -35
- package/lib/engine/engine_scenetools.js +212 -212
- package/lib/engine/engine_serialization.d.ts +4 -4
- package/lib/engine/engine_serialization.js +4 -4
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +62 -62
- package/lib/engine/engine_serialization_builtin_serializer.js +369 -369
- package/lib/engine/engine_serialization_core.d.ts +84 -84
- package/lib/engine/engine_serialization_core.js +576 -576
- package/lib/engine/engine_serialization_decorator.d.ts +15 -15
- package/lib/engine/engine_serialization_decorator.js +54 -54
- package/lib/engine/engine_setup.d.ts +1 -1
- package/lib/engine/engine_setup.js +2 -2
- package/lib/engine/engine_shaders.d.ts +31 -31
- package/lib/engine/engine_shaders.js +229 -229
- package/lib/engine/engine_shims.d.ts +3 -3
- package/lib/engine/engine_shims.js +22 -22
- package/lib/engine/engine_texture.d.ts +20 -20
- package/lib/engine/engine_texture.js +57 -57
- package/lib/engine/engine_three_utils.d.ts +51 -51
- package/lib/engine/engine_three_utils.js +342 -342
- package/lib/engine/engine_time.d.ts +19 -19
- package/lib/engine/engine_time.js +47 -47
- package/lib/engine/engine_types.d.ts +358 -358
- package/lib/engine/engine_types.js +72 -72
- package/lib/engine/engine_typestore.d.ts +16 -16
- package/lib/engine/engine_typestore.js +35 -35
- package/lib/engine/engine_util_decorator.d.ts +12 -12
- package/lib/engine/engine_util_decorator.js +115 -115
- package/lib/engine/engine_utils.d.ts +104 -104
- package/lib/engine/engine_utils.js +518 -518
- package/lib/engine/engine_utils_screenshot.d.ts +10 -10
- package/lib/engine/engine_utils_screenshot.js +70 -70
- package/lib/engine/engine_web_api.d.ts +12 -12
- package/lib/engine/engine_web_api.js +112 -112
- 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 +116 -116
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js +91 -91
- package/lib/engine/extensions/NEEDLE_components.d.ts +33 -33
- package/lib/engine/extensions/NEEDLE_components.js +206 -206
- 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 +38 -38
- package/lib/engine/extensions/NEEDLE_lighting_settings.js +183 -183
- package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
- package/lib/engine/extensions/NEEDLE_lightmaps.js +108 -108
- 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 +41 -41
- package/lib/engine/extensions/NEEDLE_progressive.js +366 -366
- 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 +39 -39
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +544 -544
- 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 +2 -2
- package/lib/engine/extensions/extension_utils.js +140 -140
- package/lib/engine/extensions/extensions.d.ts +21 -21
- package/lib/engine/extensions/extensions.js +94 -94
- package/lib/engine/extensions/index.d.ts +5 -5
- package/lib/engine/extensions/index.js +5 -5
- package/lib/engine/extensions/usage_tracker.d.ts +13 -13
- package/lib/engine/extensions/usage_tracker.js +61 -61
- package/lib/engine/js-extensions/Camera.d.ts +1 -1
- package/lib/engine/js-extensions/Camera.js +36 -36
- package/lib/engine/js-extensions/Layers.d.ts +3 -3
- package/lib/engine/js-extensions/Layers.js +19 -19
- package/lib/engine/js-extensions/index.d.ts +2 -2
- package/lib/engine/js-extensions/index.js +2 -2
- 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-components/AlignmentConstraint.d.ts +10 -10
- package/lib/engine-components/AlignmentConstraint.js +39 -39
- package/lib/engine-components/Animation.d.ts +53 -53
- package/lib/engine-components/Animation.js +333 -333
- package/lib/engine-components/AnimationCurve.d.ts +16 -16
- package/lib/engine-components/AnimationCurve.js +97 -97
- package/lib/engine-components/AnimationUtils.d.ts +8 -8
- package/lib/engine-components/AnimationUtils.js +110 -110
- package/lib/engine-components/Animator.d.ts +81 -81
- package/lib/engine-components/Animator.js +229 -229
- package/lib/engine-components/AnimatorController.d.ts +57 -57
- package/lib/engine-components/AnimatorController.js +887 -887
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/AudioListener.d.ts +7 -7
- package/lib/engine-components/AudioListener.js +30 -30
- package/lib/engine-components/AudioSource.d.ts +61 -61
- package/lib/engine-components/AudioSource.js +422 -422
- package/lib/engine-components/AvatarLoader.d.ts +19 -19
- package/lib/engine-components/AvatarLoader.js +173 -173
- package/lib/engine-components/AxesHelper.d.ts +9 -9
- package/lib/engine-components/AxesHelper.js +44 -44
- package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
- package/lib/engine-components/BasicIKConstraint.js +43 -43
- package/lib/engine-components/BoxHelperComponent.d.ts +16 -16
- package/lib/engine-components/BoxHelperComponent.js +89 -89
- package/lib/engine-components/Camera.d.ts +70 -70
- package/lib/engine-components/Camera.js +450 -450
- package/lib/engine-components/CameraUtils.d.ts +1 -1
- package/lib/engine-components/CameraUtils.js +77 -77
- package/lib/engine-components/CharacterController.d.ts +46 -46
- package/lib/engine-components/CharacterController.js +227 -227
- package/lib/engine-components/Collider.d.ts +46 -46
- package/lib/engine-components/Collider.js +153 -153
- package/lib/engine-components/Component.d.ts +228 -228
- package/lib/engine-components/Component.js +541 -541
- package/lib/engine-components/ContactShadows.d.ts +23 -23
- package/lib/engine-components/ContactShadows.js +233 -233
- package/lib/engine-components/DeleteBox.d.ts +9 -9
- package/lib/engine-components/DeleteBox.js +30 -30
- package/lib/engine-components/DeviceFlag.d.ts +12 -12
- package/lib/engine-components/DeviceFlag.js +43 -43
- package/lib/engine-components/DragControls.d.ts +51 -51
- package/lib/engine-components/DragControls.js +516 -516
- package/lib/engine-components/DropListener.d.ts +15 -15
- package/lib/engine-components/DropListener.js +120 -120
- package/lib/engine-components/Duplicatable.d.ts +16 -16
- package/lib/engine-components/Duplicatable.js +150 -150
- package/lib/engine-components/EventList.d.ts +28 -28
- package/lib/engine-components/EventList.js +105 -105
- package/lib/engine-components/EventTrigger.d.ts +12 -12
- package/lib/engine-components/EventTrigger.js +50 -50
- package/lib/engine-components/EventType.d.ts +19 -19
- package/lib/engine-components/EventType.js +71 -71
- package/lib/engine-components/FlyControls.d.ts +7 -7
- package/lib/engine-components/FlyControls.js +25 -25
- package/lib/engine-components/Fog.d.ts +20 -20
- package/lib/engine-components/Fog.js +60 -60
- package/lib/engine-components/Gizmos.d.ts +12 -12
- package/lib/engine-components/Gizmos.js +60 -60
- package/lib/engine-components/GridHelper.d.ts +12 -12
- package/lib/engine-components/GridHelper.js +47 -47
- package/lib/engine-components/GroundProjection.d.ts +21 -21
- package/lib/engine-components/GroundProjection.js +97 -97
- package/lib/engine-components/Interactable.d.ts +10 -10
- package/lib/engine-components/Interactable.js +11 -11
- package/lib/engine-components/Joints.d.ts +19 -19
- package/lib/engine-components/Joints.js +51 -51
- package/lib/engine-components/LODGroup.d.ts +30 -30
- package/lib/engine-components/LODGroup.js +145 -145
- package/lib/engine-components/Light.d.ts +75 -75
- package/lib/engine-components/Light.js +475 -475
- package/lib/engine-components/LookAtConstraint.d.ts +7 -7
- package/lib/engine-components/LookAtConstraint.js +17 -17
- package/lib/engine-components/NestedGltf.d.ts +11 -11
- package/lib/engine-components/NestedGltf.js +74 -74
- package/lib/engine-components/Networking.d.ts +11 -11
- package/lib/engine-components/Networking.js +70 -70
- package/lib/engine-components/OffsetConstraint.d.ts +14 -14
- package/lib/engine-components/OffsetConstraint.js +65 -65
- package/lib/engine-components/OrbitControls.d.ts +111 -111
- package/lib/engine-components/OrbitControls.js +646 -646
- package/lib/engine-components/ParticleSystem.d.ts +145 -145
- package/lib/engine-components/ParticleSystem.js +1077 -1077
- package/lib/engine-components/ParticleSystemModules.d.ts +489 -489
- package/lib/engine-components/ParticleSystemModules.js +1667 -1667
- package/lib/engine-components/ParticleSystemSubEmitter.d.ts +25 -25
- package/lib/engine-components/ParticleSystemSubEmitter.js +86 -86
- package/lib/engine-components/PlayerColor.d.ts +13 -13
- package/lib/engine-components/PlayerColor.js +83 -83
- package/lib/engine-components/ReflectionProbe.d.ts +22 -22
- package/lib/engine-components/ReflectionProbe.js +181 -181
- package/lib/engine-components/Renderer.d.ts +112 -112
- package/lib/engine-components/Renderer.js +1029 -1029
- package/lib/engine-components/RendererLightmap.d.ts +19 -19
- package/lib/engine-components/RendererLightmap.js +127 -127
- package/lib/engine-components/RigidBody.d.ts +120 -120
- package/lib/engine-components/RigidBody.js +452 -452
- package/lib/engine-components/SceneSwitcher.d.ts +72 -72
- package/lib/engine-components/SceneSwitcher.js +583 -583
- package/lib/engine-components/ScreenCapture.d.ts +64 -64
- package/lib/engine-components/ScreenCapture.js +405 -405
- package/lib/engine-components/ShadowCatcher.d.ts +18 -18
- package/lib/engine-components/ShadowCatcher.js +144 -144
- package/lib/engine-components/Skybox.d.ts +23 -23
- package/lib/engine-components/Skybox.js +287 -287
- package/lib/engine-components/SmoothFollow.d.ts +14 -14
- package/lib/engine-components/SmoothFollow.js +63 -63
- package/lib/engine-components/SpatialTrigger.d.ts +27 -27
- package/lib/engine-components/SpatialTrigger.js +144 -144
- package/lib/engine-components/SpectatorCamera.d.ts +45 -45
- package/lib/engine-components/SpectatorCamera.js +593 -593
- package/lib/engine-components/SpriteRenderer.d.ts +48 -48
- package/lib/engine-components/SpriteRenderer.js +257 -257
- package/lib/engine-components/SyncedCamera.d.ts +27 -27
- package/lib/engine-components/SyncedCamera.js +187 -187
- package/lib/engine-components/SyncedRoom.d.ts +24 -24
- package/lib/engine-components/SyncedRoom.js +162 -162
- package/lib/engine-components/SyncedTransform.d.ts +35 -35
- package/lib/engine-components/SyncedTransform.js +265 -265
- package/lib/engine-components/TestRunner.d.ts +13 -13
- package/lib/engine-components/TestRunner.js +99 -99
- package/lib/engine-components/TransformGizmo.d.ts +16 -16
- package/lib/engine-components/TransformGizmo.js +148 -148
- package/lib/engine-components/VideoPlayer.d.ts +86 -86
- package/lib/engine-components/VideoPlayer.js +792 -792
- package/lib/engine-components/Voip.d.ts +29 -29
- package/lib/engine-components/Voip.js +203 -203
- package/lib/engine-components/XRFlag.d.ts +33 -33
- package/lib/engine-components/XRFlag.js +128 -128
- package/lib/engine-components/api.d.ts +15 -15
- package/lib/engine-components/api.js +15 -15
- package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +10 -10
- package/lib/engine-components/avatar/AvatarBlink_Simple.js +75 -75
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +13 -13
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +74 -74
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +27 -27
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +119 -119
- package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +13 -13
- package/lib/engine-components/avatar/Avatar_MouthShapes.js +78 -78
- package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +8 -8
- package/lib/engine-components/avatar/Avatar_MustacheShake.js +28 -28
- package/lib/engine-components/codegen/components.d.ts +216 -216
- package/lib/engine-components/codegen/components.js +217 -217
- 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 +25 -25
- package/lib/engine-components/export/gltf/GltfExport.js +215 -215
- 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 +10 -10
- package/lib/engine-components/export/usdz/Extension.js +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +114 -114
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1211 -1211
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +59 -59
- package/lib/engine-components/export/usdz/USDZExporter.js +450 -450
- package/lib/engine-components/export/usdz/extensions/Animation.d.ts +69 -69
- package/lib/engine-components/export/usdz/extensions/Animation.js +650 -650
- 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 +55 -55
- package/lib/engine-components/export/usdz/extensions/USDZText.js +246 -246
- package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
- package/lib/engine-components/export/usdz/extensions/USDZUI.js +100 -100
- 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 +9 -9
- package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +52 -52
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +22 -22
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +134 -134
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +126 -126
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +824 -824
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +133 -133
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +464 -464
- 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 +3 -3
- package/lib/engine-components/export/usdz/utils/animationutils.js +85 -85
- package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
- package/lib/engine-components/export/usdz/utils/quicklook.js +35 -35
- package/lib/engine-components/export/usdz/utils/timeutils.d.ts +1 -1
- package/lib/engine-components/export/usdz/utils/timeutils.js +14 -14
- package/lib/engine-components/js-extensions/ExtensionUtils.d.ts +6 -6
- package/lib/engine-components/js-extensions/ExtensionUtils.js +65 -65
- package/lib/engine-components/js-extensions/Object3D.d.ts +2 -2
- package/lib/engine-components/js-extensions/Object3D.js +140 -140
- package/lib/engine-components/js-extensions/RGBAColor.d.ts +14 -14
- package/lib/engine-components/js-extensions/RGBAColor.js +49 -49
- package/lib/engine-components/js-extensions/index.d.ts +3 -3
- package/lib/engine-components/js-extensions/index.js +3 -3
- package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +13 -13
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js +45 -45
- package/lib/engine-components/postprocessing/Effects/Bloom.d.ts +12 -12
- package/lib/engine-components/postprocessing/Effects/Bloom.js +77 -77
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +8 -8
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +38 -38
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +12 -12
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +81 -81
- package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +21 -21
- package/lib/engine-components/postprocessing/Effects/DepthOfField.js +97 -97
- package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +7 -7
- package/lib/engine-components/postprocessing/Effects/Pixelation.js +28 -28
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +13 -13
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +86 -86
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +24 -24
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +94 -94
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +13 -13
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +62 -62
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +16 -16
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +51 -51
- package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +11 -11
- package/lib/engine-components/postprocessing/Effects/Vignette.js +56 -56
- package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +33 -33
- package/lib/engine-components/postprocessing/PostProcessingEffect.js +126 -126
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +22 -22
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +201 -201
- package/lib/engine-components/postprocessing/Volume.d.ts +25 -25
- package/lib/engine-components/postprocessing/Volume.js +193 -193
- package/lib/engine-components/postprocessing/VolumeParameter.d.ts +22 -22
- package/lib/engine-components/postprocessing/VolumeParameter.js +80 -80
- package/lib/engine-components/postprocessing/VolumeProfile.d.ts +7 -7
- package/lib/engine-components/postprocessing/VolumeProfile.js +41 -41
- package/lib/engine-components/postprocessing/index.d.ts +4 -4
- package/lib/engine-components/postprocessing/index.js +4 -4
- package/lib/engine-components/timeline/PlayableDirector.d.ts +107 -107
- package/lib/engine-components/timeline/PlayableDirector.js +624 -624
- package/lib/engine-components/timeline/SignalAsset.d.ts +18 -18
- package/lib/engine-components/timeline/SignalAsset.js +124 -124
- package/lib/engine-components/timeline/TimelineModels.d.ts +88 -88
- package/lib/engine-components/timeline/TimelineModels.js +22 -22
- package/lib/engine-components/timeline/TimelineTracks.d.ts +90 -90
- package/lib/engine-components/timeline/TimelineTracks.js +825 -825
- 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 +31 -31
- package/lib/engine-components/ui/BaseUIComponent.js +161 -161
- package/lib/engine-components/ui/Button.d.ts +56 -56
- package/lib/engine-components/ui/Button.js +282 -282
- package/lib/engine-components/ui/Canvas.d.ts +67 -67
- package/lib/engine-components/ui/Canvas.js +382 -382
- package/lib/engine-components/ui/CanvasGroup.d.ts +15 -15
- package/lib/engine-components/ui/CanvasGroup.js +53 -53
- package/lib/engine-components/ui/EventSystem.d.ts +102 -102
- package/lib/engine-components/ui/EventSystem.js +641 -641
- package/lib/engine-components/ui/Graphic.d.ts +45 -45
- package/lib/engine-components/ui/Graphic.js +236 -236
- package/lib/engine-components/ui/Image.d.ts +27 -27
- package/lib/engine-components/ui/Image.js +107 -107
- package/lib/engine-components/ui/InputField.d.ts +34 -34
- package/lib/engine-components/ui/InputField.js +234 -234
- 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 +72 -72
- package/lib/engine-components/ui/Layout.js +318 -318
- 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 +64 -64
- package/lib/engine-components/ui/PointerEvents.js +68 -68
- 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 +18 -18
- package/lib/engine-components/ui/Raycaster.js +69 -69
- package/lib/engine-components/ui/RectTransform.d.ts +61 -61
- package/lib/engine-components/ui/RectTransform.js +343 -343
- package/lib/engine-components/ui/SpatialHtml.d.ts +6 -6
- package/lib/engine-components/ui/SpatialHtml.js +57 -57
- package/lib/engine-components/ui/Text.d.ts +74 -74
- package/lib/engine-components/ui/Text.js +534 -534
- package/lib/engine-components/ui/Utils.d.ts +23 -23
- 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/LookAt.d.ts +13 -13
- package/lib/engine-components/utils/LookAt.js +59 -59
- package/lib/engine-components/utils/OpenURL.d.ts +21 -21
- package/lib/engine-components/utils/OpenURL.js +124 -124
- package/lib/engine-components/webxr/WebARCameraBackground.d.ts +19 -19
- package/lib/engine-components/webxr/WebARCameraBackground.js +193 -193
- package/lib/engine-components/webxr/WebARSessionRoot.d.ts +38 -38
- package/lib/engine-components/webxr/WebARSessionRoot.js +407 -407
- package/lib/engine-components/webxr/WebXR.d.ts +110 -110
- package/lib/engine-components/webxr/WebXR.js +672 -672
- package/lib/engine-components/webxr/WebXRAvatar.d.ts +61 -61
- package/lib/engine-components/webxr/WebXRAvatar.js +289 -289
- package/lib/engine-components/webxr/WebXRController.d.ts +154 -154
- package/lib/engine-components/webxr/WebXRController.js +1028 -1028
- package/lib/engine-components/webxr/WebXRGrabRendering.d.ts +42 -42
- package/lib/engine-components/webxr/WebXRGrabRendering.js +137 -137
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +49 -49
- package/lib/engine-components/webxr/WebXRImageTracking.js +336 -336
- package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +49 -49
- package/lib/engine-components/webxr/WebXRPlaneTracking.js +372 -372
- package/lib/engine-components/webxr/WebXRRig.d.ts +4 -4
- package/lib/engine-components/webxr/WebXRRig.js +19 -19
- package/lib/engine-components/webxr/WebXRSync.d.ts +54 -54
- package/lib/engine-components/webxr/WebXRSync.js +410 -410
- package/lib/engine-components/webxr/index.d.ts +4 -4
- package/lib/engine-components/webxr/index.js +4 -4
- 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 +1 -1
- package/lib/engine-components-experimental/api.js +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +50 -50
- package/lib/engine-components-experimental/networking/PlayerSync.js +200 -200
- package/lib/engine-schemes/api.d.ts +1 -1
- package/lib/engine-schemes/api.js +1 -1
- 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/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 +36 -36
- package/lib/engine-schemes/vr-user-state-buffer.js +103 -103
- package/lib/include/three/ARButton.d.ts +3 -3
- package/lib/include/three/ARButton.js +151 -151
- 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/include/three/VRButton.d.ts +5 -5
- package/lib/include/three/VRButton.js +118 -118
- package/lib/needle-engine.d.ts +6 -6
- package/lib/needle-engine.js +49 -49
- package/package.json +1 -1
- package/plugins/common/config.cjs +14 -14
- package/plugins/common/config.js +19 -19
- package/plugins/common/generator.js +10 -10
- package/plugins/common/license.cjs +30 -30
- package/plugins/common/version.js +11 -11
- package/plugins/next/license.cjs +4 -4
- package/plugins/next/next.js +70 -70
- package/plugins/types/index.d.ts +1 -1
- package/plugins/types/needleConfig.d.ts +21 -21
- package/plugins/types/userconfig.d.ts +42 -42
- package/plugins/vite/alias.js +70 -70
- package/plugins/vite/build.js +19 -19
- package/plugins/vite/config.js +73 -73
- package/plugins/vite/copyfiles.js +134 -134
- package/plugins/vite/defines.js +45 -45
- package/plugins/vite/dependency-watcher.js +224 -224
- package/plugins/vite/drop-client.js +76 -76
- package/plugins/vite/drop.js +82 -82
- package/plugins/vite/editor-connection.js +121 -121
- package/plugins/vite/facebook-instant-games.js +99 -99
- package/plugins/vite/gzip.js +5 -5
- package/plugins/vite/imports-logger.js +143 -143
- package/plugins/vite/index.js +81 -81
- package/plugins/vite/license.js +42 -42
- package/plugins/vite/meta.js +149 -149
- package/plugins/vite/peer.js +31 -31
- package/plugins/vite/poster-client.js +59 -59
- package/plugins/vite/poster.js +73 -73
- package/plugins/vite/reload-client.js +15 -15
- package/plugins/vite/reload.js +363 -363
- package/plugins/vite/transform-codegen.js +55 -55
- package/plugins/vite/vite-4.4-hack.js +31 -31
- package/src/engine/api.ts +54 -54
- package/src/engine/assets/index.ts +4 -4
- package/src/engine/codegen/register_types.ts +441 -441
- package/src/engine/debug/debug.ts +29 -29
- package/src/engine/debug/debug_console.ts +213 -213
- package/src/engine/debug/debug_overlay.ts +283 -283
- package/src/engine/engine.ts +13 -13
- package/src/engine/engine_addressables.ts +494 -494
- package/src/engine/engine_application.ts +53 -53
- package/src/engine/engine_assetdatabase.ts +383 -383
- package/src/engine/engine_camera.ts +32 -32
- package/src/engine/engine_components.ts +266 -266
- package/src/engine/engine_components_internal.ts +42 -42
- package/src/engine/engine_constants.ts +42 -42
- package/src/engine/engine_context.ts +1386 -1386
- package/src/engine/engine_context_registry.ts +103 -103
- package/src/engine/engine_coroutine.ts +24 -24
- package/src/engine/engine_create_objects.ts +39 -39
- package/src/engine/engine_default_parameters.ts +3 -3
- package/src/engine/engine_editor-sync.ts +29 -29
- package/src/engine/engine_element.ts +592 -592
- package/src/engine/engine_element_attributes.ts +61 -61
- package/src/engine/engine_element_extras.ts +16 -16
- package/src/engine/engine_element_loading.ts +341 -341
- package/src/engine/engine_element_overlay.ts +160 -160
- package/src/engine/engine_fileloader.js +8 -8
- package/src/engine/engine_gameobject.ts +621 -621
- package/src/engine/engine_generic_utils.js +13 -13
- package/src/engine/engine_gizmos.ts +321 -321
- package/src/engine/engine_gltf.ts +30 -30
- package/src/engine/engine_gltf_builtin_components.ts +350 -350
- package/src/engine/engine_hot_reload.ts +196 -196
- package/src/engine/engine_input.ts +879 -879
- package/src/engine/engine_input_utils.ts +23 -23
- package/src/engine/engine_instancing.ts +42 -42
- package/src/engine/engine_license.ts +413 -413
- package/src/engine/engine_lifecycle_api.ts +29 -29
- package/src/engine/engine_lifecycle_functions_internal.ts +36 -36
- package/src/engine/engine_lightdata.ts +113 -113
- package/src/engine/engine_loaders.ts +77 -77
- package/src/engine/engine_mainloop_utils.ts +431 -431
- package/src/engine/engine_math.ts +174 -174
- package/src/engine/engine_networking.ts +742 -742
- package/src/engine/engine_networking_auto.ts +373 -373
- package/src/engine/engine_networking_files.ts +206 -206
- package/src/engine/engine_networking_files_default_components.ts +54 -54
- package/src/engine/engine_networking_instantiate.ts +362 -362
- package/src/engine/engine_networking_peer.ts +158 -158
- package/src/engine/engine_networking_streams.ts +489 -489
- package/src/engine/engine_networking_types.ts +18 -18
- 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 +287 -287
- package/src/engine/engine_physics.types.ts +43 -43
- package/src/engine/engine_physics_rapier.ts +1385 -1385
- package/src/engine/engine_playerview.ts +79 -79
- package/src/engine/engine_scenelighting.ts +313 -313
- package/src/engine/engine_scenetools.ts +242 -242
- package/src/engine/engine_serialization.ts +6 -6
- package/src/engine/engine_serialization_builtin_serializer.ts +415 -415
- package/src/engine/engine_serialization_core.ts +680 -680
- package/src/engine/engine_serialization_decorator.ts +68 -68
- package/src/engine/engine_setup.ts +1 -1
- package/src/engine/engine_shaders.ts +242 -242
- package/src/engine/engine_shims.ts +28 -28
- package/src/engine/engine_texture.ts +70 -70
- package/src/engine/engine_three_utils.ts +382 -382
- package/src/engine/engine_time.ts +55 -55
- package/src/engine/engine_types.ts +489 -489
- package/src/engine/engine_typestore.ts +41 -41
- package/src/engine/engine_util_decorator.ts +134 -134
- package/src/engine/engine_utils.ts +605 -605
- package/src/engine/engine_utils_screenshot.ts +84 -84
- package/src/engine/engine_web_api.ts +119 -119
- package/src/engine/extensions/EXT_texture_exr.ts +49 -49
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +193 -193
- package/src/engine/extensions/NEEDLE_components.ts +250 -250
- package/src/engine/extensions/NEEDLE_gameobject_data.ts +82 -82
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +210 -210
- package/src/engine/extensions/NEEDLE_lightmaps.ts +130 -130
- package/src/engine/extensions/NEEDLE_persistent_assets.ts +75 -75
- package/src/engine/extensions/NEEDLE_progressive.ts +412 -412
- package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +618 -618
- package/src/engine/extensions/extension_resolver.ts +4 -4
- package/src/engine/extensions/extension_utils.ts +149 -149
- package/src/engine/extensions/extensions.ts +118 -118
- package/src/engine/extensions/index.ts +4 -4
- package/src/engine/extensions/usage_tracker.ts +95 -95
- package/src/engine/js-extensions/Camera.ts +34 -34
- package/src/engine/js-extensions/Layers.ts +19 -19
- package/src/engine/js-extensions/index.ts +1 -1
- package/src/engine/shaders/shaderData.ts +67 -67
- package/src/engine/tests/test_utils.ts +63 -63
- package/src/engine-components/AlignmentConstraint.ts +35 -35
- package/src/engine-components/Animation.ts +345 -345
- package/src/engine-components/AnimationCurve.ts +83 -83
- package/src/engine-components/AnimationUtils.ts +117 -117
- package/src/engine-components/Animator.ts +243 -243
- package/src/engine-components/AnimatorController.ts +1020 -1020
- package/src/engine-components/AudioListener.ts +32 -32
- package/src/engine-components/AudioSource.ts +419 -419
- package/src/engine-components/AvatarLoader.ts +204 -204
- package/src/engine-components/AxesHelper.ts +33 -33
- package/src/engine-components/BasicIKConstraint.ts +53 -53
- package/src/engine-components/BoxCollider.ts +1 -1
- package/src/engine-components/BoxHelperComponent.ts +100 -100
- package/src/engine-components/Camera.ts +454 -454
- package/src/engine-components/CameraUtils.ts +89 -89
- package/src/engine-components/CharacterController.ts +243 -243
- package/src/engine-components/Collider.ts +160 -160
- package/src/engine-components/Component.ts +670 -670
- package/src/engine-components/ContactShadows.ts +265 -265
- package/src/engine-components/DeleteBox.ts +35 -35
- package/src/engine-components/DeviceFlag.ts +42 -42
- package/src/engine-components/DragControls.ts +574 -574
- package/src/engine-components/DropListener.ts +112 -112
- package/src/engine-components/Duplicatable.ts +146 -146
- package/src/engine-components/EventList.ts +125 -125
- package/src/engine-components/EventTrigger.ts +47 -47
- package/src/engine-components/EventType.ts +87 -87
- package/src/engine-components/FlyControls.ts +31 -31
- package/src/engine-components/Fog.ts +59 -59
- package/src/engine-components/Gizmos.ts +52 -52
- package/src/engine-components/GridHelper.ts +40 -40
- package/src/engine-components/GroundProjection.ts +97 -97
- package/src/engine-components/Interactable.ts +18 -18
- package/src/engine-components/Joints.ts +51 -51
- package/src/engine-components/LODGroup.ts +145 -145
- package/src/engine-components/Light.ts +493 -493
- package/src/engine-components/LookAtConstraint.ts +11 -11
- package/src/engine-components/NestedGltf.ts +70 -70
- package/src/engine-components/Networking.ts +72 -72
- package/src/engine-components/OffsetConstraint.ts +59 -59
- package/src/engine-components/OrbitControls.ts +653 -653
- package/src/engine-components/ParticleSystem.ts +1192 -1192
- package/src/engine-components/ParticleSystemModules.ts +1481 -1481
- package/src/engine-components/ParticleSystemSubEmitter.ts +110 -110
- package/src/engine-components/PlayerColor.ts +93 -93
- package/src/engine-components/ReflectionProbe.ts +192 -192
- package/src/engine-components/Renderer.ts +1125 -1125
- package/src/engine-components/RendererLightmap.ts +145 -145
- package/src/engine-components/RigidBody.ts +453 -453
- package/src/engine-components/SceneSwitcher.ts +594 -594
- package/src/engine-components/ScreenCapture.ts +437 -437
- package/src/engine-components/ShadowCatcher.ts +149 -149
- package/src/engine-components/Skybox.ts +281 -281
- package/src/engine-components/SmoothFollow.ts +57 -57
- package/src/engine-components/SpatialTrigger.ts +142 -142
- package/src/engine-components/SpectatorCamera.ts +675 -675
- package/src/engine-components/SphereCollider.ts +1 -1
- package/src/engine-components/SpriteRenderer.ts +244 -244
- package/src/engine-components/SyncedCamera.ts +208 -208
- package/src/engine-components/SyncedRoom.ts +166 -166
- package/src/engine-components/SyncedTransform.ts +336 -336
- package/src/engine-components/TestRunner.ts +114 -114
- package/src/engine-components/TransformGizmo.ts +157 -157
- package/src/engine-components/VideoPlayer.ts +831 -831
- package/src/engine-components/Voip.ts +214 -214
- package/src/engine-components/XRFlag.ts +138 -138
- package/src/engine-components/api.ts +22 -22
- package/src/engine-components/avatar/AvatarBlink_Simple.ts +67 -67
- package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +68 -68
- package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +136 -136
- package/src/engine-components/avatar/Avatar_MouthShapes.ts +81 -81
- package/src/engine-components/avatar/Avatar_MustacheShake.ts +28 -28
- package/src/engine-components/codegen/components.ts +216 -216
- package/src/engine-components/debug/LogStats.ts +21 -21
- package/src/engine-components/export/gltf/GltfExport.ts +231 -231
- package/src/engine-components/export/usdz/Extension.ts +11 -11
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1773 -1773
- package/src/engine-components/export/usdz/USDZExporter.ts +477 -477
- package/src/engine-components/export/usdz/extensions/Animation.ts +774 -774
- package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
- package/src/engine-components/export/usdz/extensions/USDZText.ts +287 -287
- package/src/engine-components/export/usdz/extensions/USDZUI.ts +119 -119
- package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +98 -98
- package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +67 -67
- package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +202 -202
- package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +963 -963
- package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +517 -517
- package/src/engine-components/export/usdz/index.ts +2 -2
- package/src/engine-components/export/usdz/utils/animationutils.ts +100 -100
- package/src/engine-components/export/usdz/utils/quicklook.ts +42 -42
- package/src/engine-components/export/usdz/utils/timeutils.ts +19 -19
- package/src/engine-components/js-extensions/ExtensionUtils.ts +81 -81
- package/src/engine-components/js-extensions/Object3D.ts +181 -181
- package/src/engine-components/js-extensions/RGBAColor.ts +54 -54
- package/src/engine-components/js-extensions/Vector.ts +16 -16
- package/src/engine-components/js-extensions/index.ts +2 -2
- package/src/engine-components/postprocessing/Effects/Antialiasing.ts +51 -51
- package/src/engine-components/postprocessing/Effects/Bloom.ts +76 -76
- package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +35 -35
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +96 -96
- package/src/engine-components/postprocessing/Effects/DepthOfField.ts +93 -93
- package/src/engine-components/postprocessing/Effects/Pixelation.ts +26 -26
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +84 -84
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +98 -98
- package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +55 -55
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +54 -54
- package/src/engine-components/postprocessing/Effects/Vignette.ts +54 -54
- package/src/engine-components/postprocessing/PostProcessingEffect.ts +148 -148
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +232 -232
- package/src/engine-components/postprocessing/Volume.ts +216 -216
- package/src/engine-components/postprocessing/VolumeParameter.ts +92 -92
- package/src/engine-components/postprocessing/VolumeProfile.ts +40 -40
- package/src/engine-components/postprocessing/index.ts +3 -3
- package/src/engine-components/timeline/PlayableDirector.ts +666 -666
- package/src/engine-components/timeline/SignalAsset.ts +138 -138
- package/src/engine-components/timeline/TimelineModels.ts +93 -93
- package/src/engine-components/timeline/TimelineTracks.ts +906 -906
- package/src/engine-components/timeline/index.ts +3 -3
- package/src/engine-components/ui/BaseUIComponent.ts +195 -195
- package/src/engine-components/ui/Button.ts +283 -283
- package/src/engine-components/ui/Canvas.ts +390 -390
- package/src/engine-components/ui/CanvasGroup.ts +49 -49
- package/src/engine-components/ui/EventSystem.ts +736 -736
- package/src/engine-components/ui/Graphic.ts +255 -255
- package/src/engine-components/ui/Image.ts +102 -102
- package/src/engine-components/ui/InputField.ts +290 -290
- package/src/engine-components/ui/Interfaces.ts +57 -57
- package/src/engine-components/ui/Layout.ts +322 -322
- package/src/engine-components/ui/Outline.ts +12 -12
- package/src/engine-components/ui/PointerEvents.ts +118 -118
- package/src/engine-components/ui/RaycastUtils.ts +68 -68
- package/src/engine-components/ui/Raycaster.ts +73 -73
- package/src/engine-components/ui/RectTransform.ts +364 -364
- package/src/engine-components/ui/SpatialHtml.ts +63 -63
- package/src/engine-components/ui/Text.ts +572 -572
- package/src/engine-components/ui/Utils.ts +110 -110
- package/src/engine-components/utils/LookAt.ts +65 -65
- package/src/engine-components/utils/OpenURL.ts +118 -118
- package/src/engine-components/webxr/WebARCameraBackground.ts +224 -224
- package/src/engine-components/webxr/WebARSessionRoot.ts +446 -446
- package/src/engine-components/webxr/WebXR.ts +761 -761
- package/src/engine-components/webxr/WebXRAvatar.ts +356 -356
- package/src/engine-components/webxr/WebXRController.ts +1168 -1168
- package/src/engine-components/webxr/WebXRGrabRendering.ts +150 -150
- package/src/engine-components/webxr/WebXRImageTracking.ts +371 -371
- package/src/engine-components/webxr/WebXRPlaneTracking.ts +429 -429
- package/src/engine-components/webxr/WebXRRig.ts +21 -21
- package/src/engine-components/webxr/WebXRSync.ts +463 -463
- package/src/engine-components/webxr/index.ts +3 -3
- package/src/engine-components-experimental/Presentation.ts +12 -12
- package/src/engine-components-experimental/networking/PlayerSync.ts +217 -217
- package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
- package/src/engine-schemes/COMPILE_TS.bat +11 -11
- package/src/engine-schemes/schemes.ts +27 -27
- 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 +138 -138
- package/src/engine-schemes/vrUserStateBuffer.fbs +16 -16
- package/src/include/draco/draco_decoder.js +34 -34
- package/src/include/draco/draco_wasm_wrapper.js +117 -117
- package/src/include/ktx2/basis_transcoder.js +21 -21
- package/src/include/needle/arial-msdf.json +1471 -1471
- package/src/include/three/ARButton.js +231 -231
- package/src/include/three/DragControls.js +231 -231
- package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
- package/src/include/three/VRButton.js +194 -194
- package/src/needle-engine.ts +55 -55
- package/src/engine/dist/api.js +0 -73
- package/src/engine/dist/api.js.meta +0 -7
- package/src/engine/dist/engine_networking_streams.js +0 -474
- package/src/engine/dist/engine_networking_streams.js.meta +0 -7
- 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
- package/src/engine-schemes/flatc.exe +0 -0
|
@@ -1,287 +1,287 @@
|
|
|
1
|
-
import { Box3, Camera, type Intersection, Layers, Mesh, Object3D, Ray, Raycaster, Sphere, Vector2, Vector3 } from 'three'
|
|
2
|
-
import { Context } from './engine_setup.js';
|
|
3
|
-
import { getParam } from "./engine_utils.js"
|
|
4
|
-
import { getWorldPosition } from "./engine_three_utils.js"
|
|
5
|
-
import type { Vec2, Vec3, } from './engine_types.js';
|
|
6
|
-
import type { IPhysicsEngine } from './engine_types.js';
|
|
7
|
-
|
|
8
|
-
const debugPhysics = getParam("debugphysics");
|
|
9
|
-
const layerMaskHelper: Layers = new Layers();
|
|
10
|
-
|
|
11
|
-
export declare type RaycastTestObjectReturnType = void | boolean | "continue in children";
|
|
12
|
-
export declare type RaycastTestObjectCallback = (obj: Object3D) => RaycastTestObjectReturnType;
|
|
13
|
-
|
|
14
|
-
declare interface IRaycastOptions {
|
|
15
|
-
/** Optionally a custom raycaster can be provided. Other properties will then be set on this raycaster */
|
|
16
|
-
raycaster?: Raycaster;
|
|
17
|
-
/** Optional ray that can be used for raycasting
|
|
18
|
-
* @link https://threejs.org/docs/#api/en/math/Ray
|
|
19
|
-
* */
|
|
20
|
-
ray?: Ray;
|
|
21
|
-
/** The camera to use for the raycaster */
|
|
22
|
-
cam?: Camera | null;
|
|
23
|
-
/** Point on screen in raycast space / normalized device coordinates (-1 to 1).
|
|
24
|
-
* @link https://threejs.org/docs/#api/en/core/Raycaster.setFromCamera */
|
|
25
|
-
screenPoint?: Vector2;
|
|
26
|
-
/** Raycast results array. You can provide an array here to avoid creating a new one (note that if your array already contains items they will be removed) */
|
|
27
|
-
results?: Array<Intersection>;
|
|
28
|
-
/** Objects to raycast against. If no target array is provided the whole scene will be raycasted */
|
|
29
|
-
targets?: Array<Object3D>;
|
|
30
|
-
recursive?: boolean;
|
|
31
|
-
/** Set the raycaster near distance:
|
|
32
|
-
* The near factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be smaller than the far property.
|
|
33
|
-
* @link https://threejs.org/docs/#api/en/core/Raycaster.near
|
|
34
|
-
*/
|
|
35
|
-
minDistance?: number;
|
|
36
|
-
/** Set the raycaster far distance:
|
|
37
|
-
* The far factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be larger than the near property.
|
|
38
|
-
* @link https://threejs.org/docs/#api/en/core/Raycaster.far
|
|
39
|
-
*/
|
|
40
|
-
maxDistance?: number;
|
|
41
|
-
/** @link https://threejs.org/docs/#api/en/core/Raycaster.params */
|
|
42
|
-
lineThreshold?: number;
|
|
43
|
-
/** raw layer mask, use setLayer to set an individual layer active */
|
|
44
|
-
layerMask?: Layers | number;
|
|
45
|
-
ignore?: Object3D[];
|
|
46
|
-
/** Optional calback function to be called per object before tested for intersections.
|
|
47
|
-
* This can be used to filter objects.
|
|
48
|
-
* Return `false` to ignore the object completely or `"continue in children"` to skip the object but continue to traverse its children (if you do raycast with `recursive` enabled)
|
|
49
|
-
* */
|
|
50
|
-
testObject?: RaycastTestObjectCallback;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export class RaycastOptions implements IRaycastOptions {
|
|
54
|
-
public static readonly AllLayers = 0xFFFFFFFF;
|
|
55
|
-
|
|
56
|
-
ray?: Ray;
|
|
57
|
-
cam?: Camera | null;
|
|
58
|
-
screenPoint?: Vector2;
|
|
59
|
-
raycaster?: Raycaster;
|
|
60
|
-
results?: Array<Intersection>;
|
|
61
|
-
targets?: Array<Object3D>;
|
|
62
|
-
recursive?: boolean = true;
|
|
63
|
-
minDistance?: number;
|
|
64
|
-
maxDistance?: number;
|
|
65
|
-
lineThreshold?: number;
|
|
66
|
-
layerMask?: Layers | number;
|
|
67
|
-
ignore?: Object3D[];
|
|
68
|
-
testObject?: RaycastTestObjectCallback;
|
|
69
|
-
|
|
70
|
-
screenPointFromOffset(ox: number, oy: number) {
|
|
71
|
-
if (this.screenPoint === undefined) this.screenPoint = new Vector2();
|
|
72
|
-
this.screenPoint.x = ox / window.innerWidth * 2 - 1;
|
|
73
|
-
this.screenPoint.y = -(oy / window.innerHeight) * 2 + 1;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** sets one layer for raycasting (e.g. layer 4, only objects on layer 4 will then be hit) */
|
|
77
|
-
setLayer(layer: number) {
|
|
78
|
-
layerMaskHelper.set(layer);
|
|
79
|
-
this.layerMask = layerMaskHelper;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** sets the layer.mask value directly, use setLayer if you want to set e.g. an individual layer only active. See https://threejs.org/docs/#api/en/core/Layers for more information about layers */
|
|
83
|
-
setMask(mask: number) {
|
|
84
|
-
if (!this.layerMask) this.layerMask = new Layers();
|
|
85
|
-
const lm = this.layerMask as Layers;
|
|
86
|
-
if (lm)
|
|
87
|
-
lm.mask = mask;
|
|
88
|
-
else this.layerMask = mask;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export class SphereIntersection implements Intersection {
|
|
94
|
-
distance: number;
|
|
95
|
-
point: Vector3;
|
|
96
|
-
object: Object3D;
|
|
97
|
-
constructor(object: Object3D, distance: number, point: Vector3) {
|
|
98
|
-
this.object = object;
|
|
99
|
-
this.distance = distance;
|
|
100
|
-
this.point = point;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export class Physics {
|
|
105
|
-
|
|
106
|
-
/**@deprecated use this.context.physics.engine.raycast */
|
|
107
|
-
public raycastPhysicsFast(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
|
|
108
|
-
return this.context.physics.engine?.raycast(origin, direction, maxDistance, solid) ?? null;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**@deprecated use this.context.physics.engine.raycastAndGetNormal */
|
|
112
|
-
public raycastPhysicsFastAndGetNormal(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
|
|
113
|
-
return this.context.physics.engine?.raycastAndGetNormal(origin, direction, maxDistance, solid) ?? null;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**@deprecated use this.context.physics.engine.sphereOverlap */
|
|
117
|
-
public sphereOverlapPhysics(point: Vector3, radius: number) {
|
|
118
|
-
return this.context.physics.engine?.sphereOverlap(point, radius) ?? null;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
private readonly context: Context;
|
|
123
|
-
engine?: IPhysicsEngine;
|
|
124
|
-
|
|
125
|
-
constructor(context: Context) {
|
|
126
|
-
this.context = context;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// raycasting
|
|
130
|
-
private readonly raycaster: Raycaster = new Raycaster();
|
|
131
|
-
private readonly defaultRaycastOptions: RaycastOptions = new RaycastOptions();
|
|
132
|
-
private readonly targetBuffer: Array<Object3D> = new Array<Object3D>(1);
|
|
133
|
-
private readonly defaultThresholds = {
|
|
134
|
-
Mesh: {},
|
|
135
|
-
Line: { threshold: 0 },
|
|
136
|
-
LOD: {},
|
|
137
|
-
Points: { threshold: 0 },
|
|
138
|
-
Sprite: {}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
private sphereResults: Array<Intersection> = new Array<Intersection>();
|
|
143
|
-
private sphereMask: Layers = new Layers();
|
|
144
|
-
/** Test overlapping of a sphere with the threejs geometry. This does not use colliders. This does not return an exact intersection point (intersections returned contain the object and the world position of the object that is being hit)
|
|
145
|
-
* For a more accurate test use the physics engine's collider overlap test (see sphereOverlapPhysics)
|
|
146
|
-
* @param spherePos the center of the sphere in world space
|
|
147
|
-
* @param radius the radius of the sphere
|
|
148
|
-
* @param traverseChildsAfterHit if false it will stop after the first hit. If true it will continue to traverse and add all hits to the result array
|
|
149
|
-
*/
|
|
150
|
-
public sphereOverlap(spherePos: Vector3, radius: number, traverseChildsAfterHit: boolean = true): Array<Intersection> {
|
|
151
|
-
this.sphereResults.length = 0;
|
|
152
|
-
if (!this.context.scene) return this.sphereResults;
|
|
153
|
-
const sphere = new Sphere(spherePos, radius);
|
|
154
|
-
const mask = this.sphereMask;
|
|
155
|
-
mask.enableAll();
|
|
156
|
-
mask.disable(2);
|
|
157
|
-
for (const ch of this.context.scene.children) {
|
|
158
|
-
this.onSphereOverlap(ch, sphere, mask, this.sphereResults, traverseChildsAfterHit);
|
|
159
|
-
}
|
|
160
|
-
return this.sphereResults.sort((a, b) => a.distance - b.distance);
|
|
161
|
-
}
|
|
162
|
-
private tempBoundingBox: Box3 = new Box3();
|
|
163
|
-
private onSphereOverlap(obj: Object3D, sp: Sphere, mask: Layers, results: Array<Intersection>, traverseChildsAfterHit: boolean): void {
|
|
164
|
-
if (obj.type === "Mesh" && obj.layers.test(mask)) {
|
|
165
|
-
const mesh = obj as Mesh;
|
|
166
|
-
const geo = mesh.geometry;
|
|
167
|
-
if (!geo.boundingBox)
|
|
168
|
-
geo.computeBoundingBox();
|
|
169
|
-
if (geo.boundingBox) {
|
|
170
|
-
if (mesh.matrixWorldNeedsUpdate) mesh.updateMatrixWorld();
|
|
171
|
-
const test = this.tempBoundingBox.copy(geo.boundingBox).applyMatrix4(mesh.matrixWorld);
|
|
172
|
-
if (sp.intersectsBox(test)) {
|
|
173
|
-
const wp = getWorldPosition(obj);
|
|
174
|
-
const dist = wp.distanceTo(sp.center);
|
|
175
|
-
const int = new SphereIntersection(obj, dist, wp);
|
|
176
|
-
results.push(int);
|
|
177
|
-
if (!traverseChildsAfterHit) return;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
if (obj.children) {
|
|
182
|
-
for (const ch of obj.children) {
|
|
183
|
-
const len = results.length;
|
|
184
|
-
this.onSphereOverlap(ch, sp, mask, results, traverseChildsAfterHit);
|
|
185
|
-
if (len != results.length && !traverseChildsAfterHit) return;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
public raycastFromRay(ray: Ray, options: RaycastOptions | null = null): Array<Intersection> {
|
|
191
|
-
const opts = options ?? this.defaultRaycastOptions;
|
|
192
|
-
opts.ray = ray;
|
|
193
|
-
const res = this.raycast(opts);
|
|
194
|
-
// reset the default options ray
|
|
195
|
-
if (opts === this.defaultRaycastOptions) opts.ray = undefined;
|
|
196
|
-
return res;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/** raycast against rendered three objects. This might be very slow depending on your scene complexity.
|
|
200
|
-
* We recommend setting objects to IgnoreRaycast layer (2) when you don't need them to be raycasted.
|
|
201
|
-
* Raycasting SkinnedMeshes is specially expensive.
|
|
202
|
-
* Use raycastPhysics for raycasting against physic colliders only. Depending on your scenario this might be faster.
|
|
203
|
-
* @param options raycast options. If null, default options will be used.
|
|
204
|
-
*/
|
|
205
|
-
public raycast(options: IRaycastOptions | RaycastOptions | null = null): Array<Intersection> {
|
|
206
|
-
if (!options) options = this.defaultRaycastOptions;
|
|
207
|
-
const mp = options.screenPoint ?? this.context.input.mousePositionRC;
|
|
208
|
-
const rc = options.raycaster ?? this.raycaster;
|
|
209
|
-
rc.near = options.minDistance ?? 0;
|
|
210
|
-
rc.far = options.maxDistance ?? Infinity;
|
|
211
|
-
rc.params = this.defaultThresholds;
|
|
212
|
-
if (options.lineThreshold)
|
|
213
|
-
rc.params.Line = { threshold: options.lineThreshold };
|
|
214
|
-
else rc.params.Line = { threshold: 0 };
|
|
215
|
-
if (options.ray) {
|
|
216
|
-
rc.ray.copy(options.ray);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
const cam = options.cam ?? this.context.mainCamera;
|
|
220
|
-
if (!cam) {
|
|
221
|
-
if (debugPhysics)
|
|
222
|
-
console.error("Can not perform raycast - no main camera found");
|
|
223
|
-
if (this.defaultRaycastOptions.results) this.defaultRaycastOptions.results.length = 0;
|
|
224
|
-
return this.defaultRaycastOptions.results ?? [];
|
|
225
|
-
}
|
|
226
|
-
rc.setFromCamera(mp, cam);
|
|
227
|
-
}
|
|
228
|
-
let targets = options.targets;
|
|
229
|
-
if (!targets) {
|
|
230
|
-
targets = this.targetBuffer;
|
|
231
|
-
targets.length = 1;
|
|
232
|
-
targets[0] = this.context.scene;
|
|
233
|
-
}
|
|
234
|
-
let results = options.results;
|
|
235
|
-
if (this.defaultRaycastOptions.results)
|
|
236
|
-
this.defaultRaycastOptions.results.length = 0;
|
|
237
|
-
if (!results) {
|
|
238
|
-
if (!this.defaultRaycastOptions.results)
|
|
239
|
-
this.defaultRaycastOptions.results = new Array<Intersection>();
|
|
240
|
-
results = this.defaultRaycastOptions.results;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// layermask
|
|
244
|
-
// https://github.com/mrdoob/js/blob/master/src/core/Layers.js
|
|
245
|
-
if (options.layerMask !== undefined) {
|
|
246
|
-
if (options.layerMask instanceof Layers)
|
|
247
|
-
rc.layers.mask = options.layerMask.mask;
|
|
248
|
-
else
|
|
249
|
-
rc.layers.mask = options.layerMask;
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
rc.layers.enableAll();
|
|
253
|
-
rc.layers.disable(2);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// console.log(rc)
|
|
257
|
-
// console.log(targets);
|
|
258
|
-
|
|
259
|
-
// shoot
|
|
260
|
-
results.length = 0;
|
|
261
|
-
this.intersect(this.raycaster, targets, results, options);
|
|
262
|
-
results.sort((a, b) => a.distance - b.distance);
|
|
263
|
-
|
|
264
|
-
// TODO: instead of doing this we should temporerly set these objects to layer 2 during raycasting
|
|
265
|
-
const ignorelist = options.ignore;
|
|
266
|
-
if (ignorelist !== undefined && ignorelist.length > 0) {
|
|
267
|
-
results = results.filter(r => !ignorelist.includes(r.object));
|
|
268
|
-
}
|
|
269
|
-
return results;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
private intersect(raycaster: Raycaster, objects: Object3D[], results: Intersection[], options: IRaycastOptions) {
|
|
273
|
-
for (const obj of objects) {
|
|
274
|
-
const testResult = options.testObject?.(obj);
|
|
275
|
-
if (testResult === false) continue;
|
|
276
|
-
const checkObject = testResult !== "continue in children";
|
|
277
|
-
if (checkObject) {
|
|
278
|
-
raycaster.intersectObject(obj, false, results);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if (options.recursive !== false) {
|
|
282
|
-
this.intersect(raycaster, obj.children, results, options);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return results;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
1
|
+
import { Box3, Camera, type Intersection, Layers, Mesh, Object3D, Ray, Raycaster, Sphere, Vector2, Vector3 } from 'three'
|
|
2
|
+
import { Context } from './engine_setup.js';
|
|
3
|
+
import { getParam } from "./engine_utils.js"
|
|
4
|
+
import { getWorldPosition } from "./engine_three_utils.js"
|
|
5
|
+
import type { Vec2, Vec3, } from './engine_types.js';
|
|
6
|
+
import type { IPhysicsEngine } from './engine_types.js';
|
|
7
|
+
|
|
8
|
+
const debugPhysics = getParam("debugphysics");
|
|
9
|
+
const layerMaskHelper: Layers = new Layers();
|
|
10
|
+
|
|
11
|
+
export declare type RaycastTestObjectReturnType = void | boolean | "continue in children";
|
|
12
|
+
export declare type RaycastTestObjectCallback = (obj: Object3D) => RaycastTestObjectReturnType;
|
|
13
|
+
|
|
14
|
+
declare interface IRaycastOptions {
|
|
15
|
+
/** Optionally a custom raycaster can be provided. Other properties will then be set on this raycaster */
|
|
16
|
+
raycaster?: Raycaster;
|
|
17
|
+
/** Optional ray that can be used for raycasting
|
|
18
|
+
* @link https://threejs.org/docs/#api/en/math/Ray
|
|
19
|
+
* */
|
|
20
|
+
ray?: Ray;
|
|
21
|
+
/** The camera to use for the raycaster */
|
|
22
|
+
cam?: Camera | null;
|
|
23
|
+
/** Point on screen in raycast space / normalized device coordinates (-1 to 1).
|
|
24
|
+
* @link https://threejs.org/docs/#api/en/core/Raycaster.setFromCamera */
|
|
25
|
+
screenPoint?: Vector2;
|
|
26
|
+
/** Raycast results array. You can provide an array here to avoid creating a new one (note that if your array already contains items they will be removed) */
|
|
27
|
+
results?: Array<Intersection>;
|
|
28
|
+
/** Objects to raycast against. If no target array is provided the whole scene will be raycasted */
|
|
29
|
+
targets?: Array<Object3D>;
|
|
30
|
+
recursive?: boolean;
|
|
31
|
+
/** Set the raycaster near distance:
|
|
32
|
+
* The near factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be smaller than the far property.
|
|
33
|
+
* @link https://threejs.org/docs/#api/en/core/Raycaster.near
|
|
34
|
+
*/
|
|
35
|
+
minDistance?: number;
|
|
36
|
+
/** Set the raycaster far distance:
|
|
37
|
+
* The far factor of the raycaster. This value indicates which objects can be discarded based on the distance. This value shouldn't be negative and should be larger than the near property.
|
|
38
|
+
* @link https://threejs.org/docs/#api/en/core/Raycaster.far
|
|
39
|
+
*/
|
|
40
|
+
maxDistance?: number;
|
|
41
|
+
/** @link https://threejs.org/docs/#api/en/core/Raycaster.params */
|
|
42
|
+
lineThreshold?: number;
|
|
43
|
+
/** raw layer mask, use setLayer to set an individual layer active */
|
|
44
|
+
layerMask?: Layers | number;
|
|
45
|
+
ignore?: Object3D[];
|
|
46
|
+
/** Optional calback function to be called per object before tested for intersections.
|
|
47
|
+
* This can be used to filter objects.
|
|
48
|
+
* Return `false` to ignore the object completely or `"continue in children"` to skip the object but continue to traverse its children (if you do raycast with `recursive` enabled)
|
|
49
|
+
* */
|
|
50
|
+
testObject?: RaycastTestObjectCallback;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export class RaycastOptions implements IRaycastOptions {
|
|
54
|
+
public static readonly AllLayers = 0xFFFFFFFF;
|
|
55
|
+
|
|
56
|
+
ray?: Ray;
|
|
57
|
+
cam?: Camera | null;
|
|
58
|
+
screenPoint?: Vector2;
|
|
59
|
+
raycaster?: Raycaster;
|
|
60
|
+
results?: Array<Intersection>;
|
|
61
|
+
targets?: Array<Object3D>;
|
|
62
|
+
recursive?: boolean = true;
|
|
63
|
+
minDistance?: number;
|
|
64
|
+
maxDistance?: number;
|
|
65
|
+
lineThreshold?: number;
|
|
66
|
+
layerMask?: Layers | number;
|
|
67
|
+
ignore?: Object3D[];
|
|
68
|
+
testObject?: RaycastTestObjectCallback;
|
|
69
|
+
|
|
70
|
+
screenPointFromOffset(ox: number, oy: number) {
|
|
71
|
+
if (this.screenPoint === undefined) this.screenPoint = new Vector2();
|
|
72
|
+
this.screenPoint.x = ox / window.innerWidth * 2 - 1;
|
|
73
|
+
this.screenPoint.y = -(oy / window.innerHeight) * 2 + 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** sets one layer for raycasting (e.g. layer 4, only objects on layer 4 will then be hit) */
|
|
77
|
+
setLayer(layer: number) {
|
|
78
|
+
layerMaskHelper.set(layer);
|
|
79
|
+
this.layerMask = layerMaskHelper;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** sets the layer.mask value directly, use setLayer if you want to set e.g. an individual layer only active. See https://threejs.org/docs/#api/en/core/Layers for more information about layers */
|
|
83
|
+
setMask(mask: number) {
|
|
84
|
+
if (!this.layerMask) this.layerMask = new Layers();
|
|
85
|
+
const lm = this.layerMask as Layers;
|
|
86
|
+
if (lm)
|
|
87
|
+
lm.mask = mask;
|
|
88
|
+
else this.layerMask = mask;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export class SphereIntersection implements Intersection {
|
|
94
|
+
distance: number;
|
|
95
|
+
point: Vector3;
|
|
96
|
+
object: Object3D;
|
|
97
|
+
constructor(object: Object3D, distance: number, point: Vector3) {
|
|
98
|
+
this.object = object;
|
|
99
|
+
this.distance = distance;
|
|
100
|
+
this.point = point;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export class Physics {
|
|
105
|
+
|
|
106
|
+
/**@deprecated use this.context.physics.engine.raycast */
|
|
107
|
+
public raycastPhysicsFast(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
|
|
108
|
+
return this.context.physics.engine?.raycast(origin, direction, maxDistance, solid) ?? null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**@deprecated use this.context.physics.engine.raycastAndGetNormal */
|
|
112
|
+
public raycastPhysicsFastAndGetNormal(origin: Vec2 | Vec3, direction: Vec3 | undefined = undefined, maxDistance: number = Infinity, solid: boolean = true) {
|
|
113
|
+
return this.context.physics.engine?.raycastAndGetNormal(origin, direction, maxDistance, solid) ?? null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**@deprecated use this.context.physics.engine.sphereOverlap */
|
|
117
|
+
public sphereOverlapPhysics(point: Vector3, radius: number) {
|
|
118
|
+
return this.context.physics.engine?.sphereOverlap(point, radius) ?? null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
private readonly context: Context;
|
|
123
|
+
engine?: IPhysicsEngine;
|
|
124
|
+
|
|
125
|
+
constructor(context: Context) {
|
|
126
|
+
this.context = context;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// raycasting
|
|
130
|
+
private readonly raycaster: Raycaster = new Raycaster();
|
|
131
|
+
private readonly defaultRaycastOptions: RaycastOptions = new RaycastOptions();
|
|
132
|
+
private readonly targetBuffer: Array<Object3D> = new Array<Object3D>(1);
|
|
133
|
+
private readonly defaultThresholds = {
|
|
134
|
+
Mesh: {},
|
|
135
|
+
Line: { threshold: 0 },
|
|
136
|
+
LOD: {},
|
|
137
|
+
Points: { threshold: 0 },
|
|
138
|
+
Sprite: {}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
private sphereResults: Array<Intersection> = new Array<Intersection>();
|
|
143
|
+
private sphereMask: Layers = new Layers();
|
|
144
|
+
/** Test overlapping of a sphere with the threejs geometry. This does not use colliders. This does not return an exact intersection point (intersections returned contain the object and the world position of the object that is being hit)
|
|
145
|
+
* For a more accurate test use the physics engine's collider overlap test (see sphereOverlapPhysics)
|
|
146
|
+
* @param spherePos the center of the sphere in world space
|
|
147
|
+
* @param radius the radius of the sphere
|
|
148
|
+
* @param traverseChildsAfterHit if false it will stop after the first hit. If true it will continue to traverse and add all hits to the result array
|
|
149
|
+
*/
|
|
150
|
+
public sphereOverlap(spherePos: Vector3, radius: number, traverseChildsAfterHit: boolean = true): Array<Intersection> {
|
|
151
|
+
this.sphereResults.length = 0;
|
|
152
|
+
if (!this.context.scene) return this.sphereResults;
|
|
153
|
+
const sphere = new Sphere(spherePos, radius);
|
|
154
|
+
const mask = this.sphereMask;
|
|
155
|
+
mask.enableAll();
|
|
156
|
+
mask.disable(2);
|
|
157
|
+
for (const ch of this.context.scene.children) {
|
|
158
|
+
this.onSphereOverlap(ch, sphere, mask, this.sphereResults, traverseChildsAfterHit);
|
|
159
|
+
}
|
|
160
|
+
return this.sphereResults.sort((a, b) => a.distance - b.distance);
|
|
161
|
+
}
|
|
162
|
+
private tempBoundingBox: Box3 = new Box3();
|
|
163
|
+
private onSphereOverlap(obj: Object3D, sp: Sphere, mask: Layers, results: Array<Intersection>, traverseChildsAfterHit: boolean): void {
|
|
164
|
+
if (obj.type === "Mesh" && obj.layers.test(mask)) {
|
|
165
|
+
const mesh = obj as Mesh;
|
|
166
|
+
const geo = mesh.geometry;
|
|
167
|
+
if (!geo.boundingBox)
|
|
168
|
+
geo.computeBoundingBox();
|
|
169
|
+
if (geo.boundingBox) {
|
|
170
|
+
if (mesh.matrixWorldNeedsUpdate) mesh.updateMatrixWorld();
|
|
171
|
+
const test = this.tempBoundingBox.copy(geo.boundingBox).applyMatrix4(mesh.matrixWorld);
|
|
172
|
+
if (sp.intersectsBox(test)) {
|
|
173
|
+
const wp = getWorldPosition(obj);
|
|
174
|
+
const dist = wp.distanceTo(sp.center);
|
|
175
|
+
const int = new SphereIntersection(obj, dist, wp);
|
|
176
|
+
results.push(int);
|
|
177
|
+
if (!traverseChildsAfterHit) return;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (obj.children) {
|
|
182
|
+
for (const ch of obj.children) {
|
|
183
|
+
const len = results.length;
|
|
184
|
+
this.onSphereOverlap(ch, sp, mask, results, traverseChildsAfterHit);
|
|
185
|
+
if (len != results.length && !traverseChildsAfterHit) return;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
public raycastFromRay(ray: Ray, options: RaycastOptions | null = null): Array<Intersection> {
|
|
191
|
+
const opts = options ?? this.defaultRaycastOptions;
|
|
192
|
+
opts.ray = ray;
|
|
193
|
+
const res = this.raycast(opts);
|
|
194
|
+
// reset the default options ray
|
|
195
|
+
if (opts === this.defaultRaycastOptions) opts.ray = undefined;
|
|
196
|
+
return res;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** raycast against rendered three objects. This might be very slow depending on your scene complexity.
|
|
200
|
+
* We recommend setting objects to IgnoreRaycast layer (2) when you don't need them to be raycasted.
|
|
201
|
+
* Raycasting SkinnedMeshes is specially expensive.
|
|
202
|
+
* Use raycastPhysics for raycasting against physic colliders only. Depending on your scenario this might be faster.
|
|
203
|
+
* @param options raycast options. If null, default options will be used.
|
|
204
|
+
*/
|
|
205
|
+
public raycast(options: IRaycastOptions | RaycastOptions | null = null): Array<Intersection> {
|
|
206
|
+
if (!options) options = this.defaultRaycastOptions;
|
|
207
|
+
const mp = options.screenPoint ?? this.context.input.mousePositionRC;
|
|
208
|
+
const rc = options.raycaster ?? this.raycaster;
|
|
209
|
+
rc.near = options.minDistance ?? 0;
|
|
210
|
+
rc.far = options.maxDistance ?? Infinity;
|
|
211
|
+
rc.params = this.defaultThresholds;
|
|
212
|
+
if (options.lineThreshold)
|
|
213
|
+
rc.params.Line = { threshold: options.lineThreshold };
|
|
214
|
+
else rc.params.Line = { threshold: 0 };
|
|
215
|
+
if (options.ray) {
|
|
216
|
+
rc.ray.copy(options.ray);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const cam = options.cam ?? this.context.mainCamera;
|
|
220
|
+
if (!cam) {
|
|
221
|
+
if (debugPhysics)
|
|
222
|
+
console.error("Can not perform raycast - no main camera found");
|
|
223
|
+
if (this.defaultRaycastOptions.results) this.defaultRaycastOptions.results.length = 0;
|
|
224
|
+
return this.defaultRaycastOptions.results ?? [];
|
|
225
|
+
}
|
|
226
|
+
rc.setFromCamera(mp, cam);
|
|
227
|
+
}
|
|
228
|
+
let targets = options.targets;
|
|
229
|
+
if (!targets) {
|
|
230
|
+
targets = this.targetBuffer;
|
|
231
|
+
targets.length = 1;
|
|
232
|
+
targets[0] = this.context.scene;
|
|
233
|
+
}
|
|
234
|
+
let results = options.results;
|
|
235
|
+
if (this.defaultRaycastOptions.results)
|
|
236
|
+
this.defaultRaycastOptions.results.length = 0;
|
|
237
|
+
if (!results) {
|
|
238
|
+
if (!this.defaultRaycastOptions.results)
|
|
239
|
+
this.defaultRaycastOptions.results = new Array<Intersection>();
|
|
240
|
+
results = this.defaultRaycastOptions.results;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// layermask
|
|
244
|
+
// https://github.com/mrdoob/js/blob/master/src/core/Layers.js
|
|
245
|
+
if (options.layerMask !== undefined) {
|
|
246
|
+
if (options.layerMask instanceof Layers)
|
|
247
|
+
rc.layers.mask = options.layerMask.mask;
|
|
248
|
+
else
|
|
249
|
+
rc.layers.mask = options.layerMask;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
rc.layers.enableAll();
|
|
253
|
+
rc.layers.disable(2);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// console.log(rc)
|
|
257
|
+
// console.log(targets);
|
|
258
|
+
|
|
259
|
+
// shoot
|
|
260
|
+
results.length = 0;
|
|
261
|
+
this.intersect(this.raycaster, targets, results, options);
|
|
262
|
+
results.sort((a, b) => a.distance - b.distance);
|
|
263
|
+
|
|
264
|
+
// TODO: instead of doing this we should temporerly set these objects to layer 2 during raycasting
|
|
265
|
+
const ignorelist = options.ignore;
|
|
266
|
+
if (ignorelist !== undefined && ignorelist.length > 0) {
|
|
267
|
+
results = results.filter(r => !ignorelist.includes(r.object));
|
|
268
|
+
}
|
|
269
|
+
return results;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
private intersect(raycaster: Raycaster, objects: Object3D[], results: Intersection[], options: IRaycastOptions) {
|
|
273
|
+
for (const obj of objects) {
|
|
274
|
+
const testResult = options.testObject?.(obj);
|
|
275
|
+
if (testResult === false) continue;
|
|
276
|
+
const checkObject = testResult !== "continue in children";
|
|
277
|
+
if (checkObject) {
|
|
278
|
+
raycaster.intersectObject(obj, false, results);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (options.recursive !== false) {
|
|
282
|
+
this.intersect(raycaster, obj.children, results, options);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return results;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export enum PhysicsMaterialCombine {
|
|
4
|
-
Average = 0,
|
|
5
|
-
Multiply = 1,
|
|
6
|
-
Minimum = 2,
|
|
7
|
-
Maximum = 3,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export type PhysicsMaterial = {
|
|
11
|
-
bounceCombine?: PhysicsMaterialCombine;
|
|
12
|
-
bounciness?: number;
|
|
13
|
-
frictionCombine?: PhysicsMaterialCombine;
|
|
14
|
-
dynamicFriction?: number;
|
|
15
|
-
/**@deprecated not used */
|
|
16
|
-
staticFriction?:number;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export enum CollisionDetectionMode {
|
|
20
|
-
Discrete = 0,
|
|
21
|
-
Continuous = 1,
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export enum RigidbodyConstraints {
|
|
25
|
-
None = 0,
|
|
26
|
-
FreezePositionX = 2,
|
|
27
|
-
FreezePositionY = 4,
|
|
28
|
-
FreezePositionZ = 8,
|
|
29
|
-
FreezePosition = 14,
|
|
30
|
-
FreezeRotationX = 16,
|
|
31
|
-
FreezeRotationY = 32,
|
|
32
|
-
FreezeRotationZ = 64,
|
|
33
|
-
FreezeRotation = 112,
|
|
34
|
-
FreezeAll = 126,
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
export enum Axes {
|
|
39
|
-
None = 0,
|
|
40
|
-
X = 2,
|
|
41
|
-
Y = 4,
|
|
42
|
-
Z = 8,
|
|
43
|
-
All = ~0,
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export enum PhysicsMaterialCombine {
|
|
4
|
+
Average = 0,
|
|
5
|
+
Multiply = 1,
|
|
6
|
+
Minimum = 2,
|
|
7
|
+
Maximum = 3,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type PhysicsMaterial = {
|
|
11
|
+
bounceCombine?: PhysicsMaterialCombine;
|
|
12
|
+
bounciness?: number;
|
|
13
|
+
frictionCombine?: PhysicsMaterialCombine;
|
|
14
|
+
dynamicFriction?: number;
|
|
15
|
+
/**@deprecated not used */
|
|
16
|
+
staticFriction?:number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export enum CollisionDetectionMode {
|
|
20
|
+
Discrete = 0,
|
|
21
|
+
Continuous = 1,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum RigidbodyConstraints {
|
|
25
|
+
None = 0,
|
|
26
|
+
FreezePositionX = 2,
|
|
27
|
+
FreezePositionY = 4,
|
|
28
|
+
FreezePositionZ = 8,
|
|
29
|
+
FreezePosition = 14,
|
|
30
|
+
FreezeRotationX = 16,
|
|
31
|
+
FreezeRotationY = 32,
|
|
32
|
+
FreezeRotationZ = 64,
|
|
33
|
+
FreezeRotation = 112,
|
|
34
|
+
FreezeAll = 126,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
export enum Axes {
|
|
39
|
+
None = 0,
|
|
40
|
+
X = 2,
|
|
41
|
+
Y = 4,
|
|
42
|
+
Z = 8,
|
|
43
|
+
All = ~0,
|
|
44
44
|
}
|