@needle-tools/engine 3.28.6-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 -2253
- package/LICENSE.md +10 -10
- package/README.md +52 -52
- package/dist/needle-engine.js +7 -10
- package/dist/needle-engine.light.js +7 -10
- package/dist/needle-engine.light.min.js +7 -10
- package/dist/needle-engine.light.umd.cjs +7 -10
- package/dist/needle-engine.min.js +7 -10
- package/dist/needle-engine.umd.cjs +7 -10
- 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/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,370 +1,370 @@
|
|
|
1
|
-
import * as THREE from "three";
|
|
2
|
-
import { RGBAColor } from "../engine-components/js-extensions/RGBAColor.js";
|
|
3
|
-
import { TypeSerializer } from "./engine_serialization_core.js";
|
|
4
|
-
import { Behaviour, Component, GameObject } from "../engine-components/Component.js";
|
|
5
|
-
import { debugExtension } from "./engine_default_parameters.js";
|
|
6
|
-
import { CallInfo, EventList } from "../engine-components/EventList.js";
|
|
7
|
-
import { Color, CompressedTexture, Object3D, Texture, WebGLRenderTarget } from "three";
|
|
8
|
-
import { RenderTexture } from "./engine_texture.js";
|
|
9
|
-
import { isDevEnvironment, showBalloonWarning } from "../engine/debug/index.js";
|
|
10
|
-
import { resolveUrl } from "./engine_utils.js";
|
|
11
|
-
import { AssetReference } from "./engine_addressables.js";
|
|
12
|
-
// export class SourcePath {
|
|
13
|
-
// src?:string
|
|
14
|
-
// };
|
|
15
|
-
// class SourcePathSerializer extends TypeSerializer{
|
|
16
|
-
// constructor(){
|
|
17
|
-
// super(SourcePath);
|
|
18
|
-
// }
|
|
19
|
-
// onDeserialize(data: any, _context: SerializationContext) {
|
|
20
|
-
// if(data.src && typeof data.src === "string"){
|
|
21
|
-
// return data.src;
|
|
22
|
-
// }
|
|
23
|
-
// }
|
|
24
|
-
// onSerialize(_data: any, _context: SerializationContext) {
|
|
25
|
-
// }
|
|
26
|
-
// }
|
|
27
|
-
// new SourcePathSerializer();
|
|
28
|
-
class ColorSerializer extends TypeSerializer {
|
|
29
|
-
constructor() {
|
|
30
|
-
super([Color, RGBAColor]);
|
|
31
|
-
}
|
|
32
|
-
onDeserialize(data) {
|
|
33
|
-
if (data === undefined || data === null)
|
|
34
|
-
return;
|
|
35
|
-
if (data.a !== undefined) {
|
|
36
|
-
return new RGBAColor(data.r, data.g, data.b, data.a);
|
|
37
|
-
}
|
|
38
|
-
else if (data.alpha !== undefined) {
|
|
39
|
-
return new RGBAColor(data.r, data.g, data.b, data.alpha);
|
|
40
|
-
}
|
|
41
|
-
return new THREE.Color(data.r, data.g, data.b);
|
|
42
|
-
}
|
|
43
|
-
onSerialize(data) {
|
|
44
|
-
if (data === undefined || data === null)
|
|
45
|
-
return;
|
|
46
|
-
if (data.a !== undefined)
|
|
47
|
-
return { r: data.r, g: data.g, b: data.b, a: data.a };
|
|
48
|
-
else
|
|
49
|
-
return { r: data.r, g: data.g, b: data.b };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export const colorSerializer = new ColorSerializer();
|
|
53
|
-
class ObjectSerializer extends TypeSerializer {
|
|
54
|
-
constructor() {
|
|
55
|
-
super(Object3D);
|
|
56
|
-
}
|
|
57
|
-
onSerialize(data, context) {
|
|
58
|
-
if (context.objectToNode !== undefined && data.uuid) {
|
|
59
|
-
const node = context.objectToNode[data.uuid];
|
|
60
|
-
if (debugExtension)
|
|
61
|
-
console.log(node, data.name, data.uuid);
|
|
62
|
-
return { node: node };
|
|
63
|
-
}
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
onDeserialize(data, context) {
|
|
67
|
-
if (typeof data === "string") {
|
|
68
|
-
if (data.endsWith(".glb") || data.endsWith(".gltf")) {
|
|
69
|
-
// If the @serializable([Object3D, AssetReference]) looks like this we don't need to warn here. This is the case e.g. with SyncedCamera referencing a scene
|
|
70
|
-
if (context.serializable instanceof Array) {
|
|
71
|
-
if (context.serializable.includes(AssetReference))
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
if (isDevEnvironment())
|
|
75
|
-
showBalloonWarning("Detected wrong usage of @serializable with Object3D or GameObject. Instead you should use AssetReference here! Please see the console for details.");
|
|
76
|
-
const scriptname = context.target?.constructor?.name;
|
|
77
|
-
console.warn(`Wrong usage of @serializable detected in your script \"${scriptname}\"\n\nIt looks like you used @serializable(Object3D) or @serializable(GameObject) for a prefab or scene reference which is exported to a separate glTF file.\n\nTo fix this please change your code to:\n\n@serializable(AssetReference)\n${context.path}! : AssetReference;\n\0`);
|
|
78
|
-
}
|
|
79
|
-
// ACTUALLY: this is already handled by the extension_utils where we resolve json pointers recursively
|
|
80
|
-
// if(data.startsWith("/nodes/")){
|
|
81
|
-
// const node = parseInt(data.substring("/nodes/".length));
|
|
82
|
-
// if (context.nodeToObject) {
|
|
83
|
-
// const res = context.nodeToObject[node];
|
|
84
|
-
// if (debugExtension)
|
|
85
|
-
// console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
86
|
-
// if (!res) console.warn("Did not find node: " + data, context.nodeToObject, context.object);
|
|
87
|
-
// return res;
|
|
88
|
-
// }
|
|
89
|
-
// }
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
if (data) {
|
|
93
|
-
if (data.node !== undefined && context.nodeToObject) {
|
|
94
|
-
const res = context.nodeToObject[data.node];
|
|
95
|
-
if (debugExtension)
|
|
96
|
-
console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
97
|
-
if (!res)
|
|
98
|
-
console.warn("Did not find node: " + data.node, context.nodeToObject, context.object);
|
|
99
|
-
return res;
|
|
100
|
-
}
|
|
101
|
-
else if (data.guid) {
|
|
102
|
-
if (!context.context) {
|
|
103
|
-
console.error("Missing context");
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
|
-
// it is possible that the object is not yet loaded
|
|
107
|
-
// e.g. if we have a scene with multiple gltf files and the first gltf references something in the second gltf
|
|
108
|
-
// we need a way to wait for all components to be created before we can resolve those references
|
|
109
|
-
// independent of order of loading
|
|
110
|
-
let res = undefined;
|
|
111
|
-
// first try to search in the current gltf scene (if any)
|
|
112
|
-
const gltfScene = context.gltf?.scene;
|
|
113
|
-
if (gltfScene) {
|
|
114
|
-
res = GameObject.findByGuid(data.guid, gltfScene);
|
|
115
|
-
}
|
|
116
|
-
// if not found, search in the whole scene
|
|
117
|
-
if (!res) {
|
|
118
|
-
res = GameObject.findByGuid(data.guid, context.context.scene);
|
|
119
|
-
}
|
|
120
|
-
if (!res) {
|
|
121
|
-
if (isDevEnvironment() || debugExtension)
|
|
122
|
-
console.warn("Could not resolve object reference", context.path, data, context.target, context.context.scene);
|
|
123
|
-
data["could_not_resolve"] = true;
|
|
124
|
-
}
|
|
125
|
-
else if (debugExtension)
|
|
126
|
-
console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
127
|
-
return res;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return undefined;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
export const objectSerializer = new ObjectSerializer();
|
|
134
|
-
class ComponentSerializer extends TypeSerializer {
|
|
135
|
-
constructor() {
|
|
136
|
-
super([Component, Behaviour]);
|
|
137
|
-
}
|
|
138
|
-
onSerialize(data, _context) {
|
|
139
|
-
if (data?.guid) {
|
|
140
|
-
return { guid: data.guid };
|
|
141
|
-
}
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
onDeserialize(data, context) {
|
|
145
|
-
if (data?.guid) {
|
|
146
|
-
// TODO: need to serialize some identifier for referenced components as well, maybe just guid?
|
|
147
|
-
// because here the components are created but dont have their former guid assigned
|
|
148
|
-
// and will later in the stack just get a newly generated guid
|
|
149
|
-
if (debugExtension)
|
|
150
|
-
console.log(data.guid, context.root, context.object, context.target);
|
|
151
|
-
// first search within the gltf (e.g. necessary when using AssetReference and loading a gltf without adding it to the scene)
|
|
152
|
-
// if we would search JUST the scene those references would NEVER be resolved
|
|
153
|
-
let res = this.findObjectForGuid(data.guid, context.root);
|
|
154
|
-
if (res) {
|
|
155
|
-
return res;
|
|
156
|
-
}
|
|
157
|
-
if (context.context) {
|
|
158
|
-
// if not found within the gltf use the provided context scene
|
|
159
|
-
// to find references outside
|
|
160
|
-
res = this.findObjectForGuid(data.guid, context.context?.scene);
|
|
161
|
-
if (res)
|
|
162
|
-
return res;
|
|
163
|
-
}
|
|
164
|
-
if (isDevEnvironment() || debugExtension)
|
|
165
|
-
console.warn("Could not resolve component reference", context.path, data, context.target);
|
|
166
|
-
data["could_not_resolve"] = true;
|
|
167
|
-
return undefined;
|
|
168
|
-
}
|
|
169
|
-
// if (data?.node !== undefined && context.nodeToObject) {
|
|
170
|
-
// return context.nodeToObject[data.node];
|
|
171
|
-
// }
|
|
172
|
-
return undefined;
|
|
173
|
-
}
|
|
174
|
-
findObjectForGuid(guid, root) {
|
|
175
|
-
// recursively search root
|
|
176
|
-
// need to check the root object too
|
|
177
|
-
if (root["guid"] === guid)
|
|
178
|
-
return root;
|
|
179
|
-
const res = GameObject.foreachComponent(root, (c) => {
|
|
180
|
-
if (c.guid === guid)
|
|
181
|
-
return c;
|
|
182
|
-
return undefined;
|
|
183
|
-
}, false);
|
|
184
|
-
if (res !== undefined)
|
|
185
|
-
return res;
|
|
186
|
-
// if not found, search in children
|
|
187
|
-
for (let i = 0; i < root.children.length; i++) {
|
|
188
|
-
const child = root.children[i];
|
|
189
|
-
const res = this.findObjectForGuid(guid, child);
|
|
190
|
-
if (res)
|
|
191
|
-
return res;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
export const componentSerializer = new ComponentSerializer();
|
|
196
|
-
const $eventListDebugInfo = Symbol("eventListDebugInfo");
|
|
197
|
-
class EventListSerializer extends TypeSerializer {
|
|
198
|
-
constructor() {
|
|
199
|
-
super([EventList]);
|
|
200
|
-
}
|
|
201
|
-
onSerialize(_data, _context) {
|
|
202
|
-
console.log("TODO: SERIALIZE EVENT");
|
|
203
|
-
return undefined;
|
|
204
|
-
}
|
|
205
|
-
onDeserialize(data, context) {
|
|
206
|
-
// TODO: check that we dont accidentally deserialize methods to EventList objects. This is here to make is easy for react-three-fiber to just add props as { () => { } }
|
|
207
|
-
if (typeof data === "function") {
|
|
208
|
-
const evtList = new EventList([new CallInfo(data, true)]);
|
|
209
|
-
return evtList;
|
|
210
|
-
}
|
|
211
|
-
else if (data && data.type === "EventList") {
|
|
212
|
-
if (debugExtension)
|
|
213
|
-
console.log("DESERIALIZE EVENT", data);
|
|
214
|
-
const fns = new Array();
|
|
215
|
-
if (data.calls && Array.isArray(data.calls)) {
|
|
216
|
-
for (const call of data.calls) {
|
|
217
|
-
if (debugExtension)
|
|
218
|
-
console.log(call);
|
|
219
|
-
let target = componentSerializer.findObjectForGuid(call.target, context.root);
|
|
220
|
-
// if the object is not found in the current glb try find it in the whole scene
|
|
221
|
-
if (!target && context.context?.scene) {
|
|
222
|
-
target = componentSerializer.findObjectForGuid(call.target, context.context?.scene);
|
|
223
|
-
}
|
|
224
|
-
const hasMethod = call.method?.length > 0;
|
|
225
|
-
if (target && hasMethod) {
|
|
226
|
-
const printWarningMethodNotFound = () => {
|
|
227
|
-
const uppercaseMethodName = call.method[0].toUpperCase() + call.method.slice(1);
|
|
228
|
-
if (typeof target[uppercaseMethodName] === "function") {
|
|
229
|
-
console.warn(`EventList method:\nCould not find method ${call.method} on object ${target.name}. Please rename ${call.method} to ${uppercaseMethodName}?\n`, target[uppercaseMethodName], "\n in script: ", target);
|
|
230
|
-
showBalloonWarning("EventList methods must start with lowercase letter, see console for details");
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
console.warn(`EventList method:\nCould not find method ${call.method} on object ${target.name}`, target, typeof target[call.method]);
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
const method = target[call.method];
|
|
238
|
-
if (typeof method !== "function") {
|
|
239
|
-
let foundMethod = false;
|
|
240
|
-
let currentPrototype = target;
|
|
241
|
-
// test if the target method is actually a property setter
|
|
242
|
-
while (currentPrototype) {
|
|
243
|
-
const desc = Object.getOwnPropertyDescriptor(currentPrototype, call.method);
|
|
244
|
-
if (desc && (desc.writable === true || desc.set)) {
|
|
245
|
-
foundMethod = true;
|
|
246
|
-
break;
|
|
247
|
-
}
|
|
248
|
-
currentPrototype = Object.getPrototypeOf(currentPrototype);
|
|
249
|
-
}
|
|
250
|
-
if (!foundMethod && (isDevEnvironment() || debugExtension))
|
|
251
|
-
printWarningMethodNotFound();
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
function deserializeArgument(arg) {
|
|
255
|
-
if (typeof arg === "object") {
|
|
256
|
-
// Try to deserialize the call argument to either a object or a component reference
|
|
257
|
-
let argRes = objectSerializer.onDeserialize(arg, context);
|
|
258
|
-
if (!argRes)
|
|
259
|
-
argRes = componentSerializer.onDeserialize(arg, context);
|
|
260
|
-
if (argRes)
|
|
261
|
-
return argRes;
|
|
262
|
-
}
|
|
263
|
-
return arg;
|
|
264
|
-
}
|
|
265
|
-
let args = call.argument;
|
|
266
|
-
if (args !== undefined) {
|
|
267
|
-
args = deserializeArgument(args);
|
|
268
|
-
}
|
|
269
|
-
else if (call.arguments !== undefined) {
|
|
270
|
-
args = call.arguments.map(deserializeArgument);
|
|
271
|
-
}
|
|
272
|
-
// This is the final method we pass to the call info (or undefined if the method couldnt be resolved)
|
|
273
|
-
const eventMethod = hasMethod ? this.createEventMethod(target, call.method, args) : undefined;
|
|
274
|
-
const fn = new CallInfo(eventMethod, call.enabled);
|
|
275
|
-
if (!fn.method)
|
|
276
|
-
fn[$eventListDebugInfo] = context.object?.name;
|
|
277
|
-
if (!target || !fn.method) {
|
|
278
|
-
const debugInfo = context.object ? "Current object: " + context.object.name + ", " + context.object["guid"] : null;
|
|
279
|
-
if (!target)
|
|
280
|
-
console.warn("EventList is missing target - will be ignored", call.target, debugInfo, data);
|
|
281
|
-
else
|
|
282
|
-
console.warn("EventList method not found: \"" + call.method + "\" on", target);
|
|
283
|
-
}
|
|
284
|
-
else
|
|
285
|
-
fns.push(fn);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
const evt = new EventList(fns);
|
|
289
|
-
if (debugExtension)
|
|
290
|
-
console.log(evt);
|
|
291
|
-
const eventListOwner = context.target;
|
|
292
|
-
if (eventListOwner !== undefined && context.path !== undefined) {
|
|
293
|
-
evt.setEventTarget(context.path, eventListOwner);
|
|
294
|
-
}
|
|
295
|
-
return evt;
|
|
296
|
-
}
|
|
297
|
-
return undefined;
|
|
298
|
-
}
|
|
299
|
-
createEventMethod(target, methodName, args) {
|
|
300
|
-
return (...forwardedArgs) => {
|
|
301
|
-
const method = target[methodName];
|
|
302
|
-
if (typeof method === "function") {
|
|
303
|
-
if (args !== undefined) {
|
|
304
|
-
// we now have support for creating event methods with multiple arguments
|
|
305
|
-
// an argument can not be an array right now - so if we receive an array we assume it's the array of arguments that we want to call the method with
|
|
306
|
-
// this means ["test", true] will invoke the method like this: myFunction("test", true)
|
|
307
|
-
if (Array.isArray(args))
|
|
308
|
-
method?.call(target, ...args);
|
|
309
|
-
// in any other case (when we just have one argument) we just call the method with the argument
|
|
310
|
-
// we an not use ...args by default becaue that would break string arguments (it would then just use the first character)
|
|
311
|
-
else
|
|
312
|
-
method?.call(target, args);
|
|
313
|
-
}
|
|
314
|
-
else // support invoking EventList with any number of arguments (if none were declared in unity)
|
|
315
|
-
method?.call(target, ...forwardedArgs);
|
|
316
|
-
}
|
|
317
|
-
else // the target "method" can be a property too
|
|
318
|
-
{
|
|
319
|
-
target[methodName] = args;
|
|
320
|
-
}
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
export const eventListSerializer = new EventListSerializer();
|
|
325
|
-
export class RenderTextureSerializer extends TypeSerializer {
|
|
326
|
-
constructor() {
|
|
327
|
-
super([RenderTexture, WebGLRenderTarget]);
|
|
328
|
-
}
|
|
329
|
-
onSerialize(_data, _context) {
|
|
330
|
-
}
|
|
331
|
-
onDeserialize(data, context) {
|
|
332
|
-
if (data instanceof Texture && context.type === RenderTexture) {
|
|
333
|
-
const tex = data;
|
|
334
|
-
const rt = new RenderTexture(tex.image.width, tex.image.height, {
|
|
335
|
-
colorSpace: THREE.LinearSRGBColorSpace,
|
|
336
|
-
});
|
|
337
|
-
rt.texture = tex;
|
|
338
|
-
tex.isRenderTargetTexture = true;
|
|
339
|
-
tex.flipY = true;
|
|
340
|
-
tex.offset.y = 1;
|
|
341
|
-
tex.repeat.y = -1;
|
|
342
|
-
tex.needsUpdate = true;
|
|
343
|
-
if (tex instanceof CompressedTexture) {
|
|
344
|
-
//@ts-ignore
|
|
345
|
-
tex["isCompressedTexture"] = false;
|
|
346
|
-
//@ts-ignore
|
|
347
|
-
tex.format = THREE.RGBAFormat;
|
|
348
|
-
}
|
|
349
|
-
return rt;
|
|
350
|
-
}
|
|
351
|
-
return undefined;
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
new RenderTextureSerializer();
|
|
355
|
-
export class UriSerializer extends TypeSerializer {
|
|
356
|
-
constructor() {
|
|
357
|
-
super([URL]);
|
|
358
|
-
}
|
|
359
|
-
onSerialize(_data, _context) {
|
|
360
|
-
return null;
|
|
361
|
-
}
|
|
362
|
-
onDeserialize(data, _context) {
|
|
363
|
-
if (typeof data === "string" && data.length > 0) {
|
|
364
|
-
return resolveUrl(_context.gltfId, data);
|
|
365
|
-
}
|
|
366
|
-
return undefined;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
new UriSerializer();
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { RGBAColor } from "../engine-components/js-extensions/RGBAColor.js";
|
|
3
|
+
import { TypeSerializer } from "./engine_serialization_core.js";
|
|
4
|
+
import { Behaviour, Component, GameObject } from "../engine-components/Component.js";
|
|
5
|
+
import { debugExtension } from "./engine_default_parameters.js";
|
|
6
|
+
import { CallInfo, EventList } from "../engine-components/EventList.js";
|
|
7
|
+
import { Color, CompressedTexture, Object3D, Texture, WebGLRenderTarget } from "three";
|
|
8
|
+
import { RenderTexture } from "./engine_texture.js";
|
|
9
|
+
import { isDevEnvironment, showBalloonWarning } from "../engine/debug/index.js";
|
|
10
|
+
import { resolveUrl } from "./engine_utils.js";
|
|
11
|
+
import { AssetReference } from "./engine_addressables.js";
|
|
12
|
+
// export class SourcePath {
|
|
13
|
+
// src?:string
|
|
14
|
+
// };
|
|
15
|
+
// class SourcePathSerializer extends TypeSerializer{
|
|
16
|
+
// constructor(){
|
|
17
|
+
// super(SourcePath);
|
|
18
|
+
// }
|
|
19
|
+
// onDeserialize(data: any, _context: SerializationContext) {
|
|
20
|
+
// if(data.src && typeof data.src === "string"){
|
|
21
|
+
// return data.src;
|
|
22
|
+
// }
|
|
23
|
+
// }
|
|
24
|
+
// onSerialize(_data: any, _context: SerializationContext) {
|
|
25
|
+
// }
|
|
26
|
+
// }
|
|
27
|
+
// new SourcePathSerializer();
|
|
28
|
+
class ColorSerializer extends TypeSerializer {
|
|
29
|
+
constructor() {
|
|
30
|
+
super([Color, RGBAColor]);
|
|
31
|
+
}
|
|
32
|
+
onDeserialize(data) {
|
|
33
|
+
if (data === undefined || data === null)
|
|
34
|
+
return;
|
|
35
|
+
if (data.a !== undefined) {
|
|
36
|
+
return new RGBAColor(data.r, data.g, data.b, data.a);
|
|
37
|
+
}
|
|
38
|
+
else if (data.alpha !== undefined) {
|
|
39
|
+
return new RGBAColor(data.r, data.g, data.b, data.alpha);
|
|
40
|
+
}
|
|
41
|
+
return new THREE.Color(data.r, data.g, data.b);
|
|
42
|
+
}
|
|
43
|
+
onSerialize(data) {
|
|
44
|
+
if (data === undefined || data === null)
|
|
45
|
+
return;
|
|
46
|
+
if (data.a !== undefined)
|
|
47
|
+
return { r: data.r, g: data.g, b: data.b, a: data.a };
|
|
48
|
+
else
|
|
49
|
+
return { r: data.r, g: data.g, b: data.b };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export const colorSerializer = new ColorSerializer();
|
|
53
|
+
class ObjectSerializer extends TypeSerializer {
|
|
54
|
+
constructor() {
|
|
55
|
+
super(Object3D);
|
|
56
|
+
}
|
|
57
|
+
onSerialize(data, context) {
|
|
58
|
+
if (context.objectToNode !== undefined && data.uuid) {
|
|
59
|
+
const node = context.objectToNode[data.uuid];
|
|
60
|
+
if (debugExtension)
|
|
61
|
+
console.log(node, data.name, data.uuid);
|
|
62
|
+
return { node: node };
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
onDeserialize(data, context) {
|
|
67
|
+
if (typeof data === "string") {
|
|
68
|
+
if (data.endsWith(".glb") || data.endsWith(".gltf")) {
|
|
69
|
+
// If the @serializable([Object3D, AssetReference]) looks like this we don't need to warn here. This is the case e.g. with SyncedCamera referencing a scene
|
|
70
|
+
if (context.serializable instanceof Array) {
|
|
71
|
+
if (context.serializable.includes(AssetReference))
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
if (isDevEnvironment())
|
|
75
|
+
showBalloonWarning("Detected wrong usage of @serializable with Object3D or GameObject. Instead you should use AssetReference here! Please see the console for details.");
|
|
76
|
+
const scriptname = context.target?.constructor?.name;
|
|
77
|
+
console.warn(`Wrong usage of @serializable detected in your script \"${scriptname}\"\n\nIt looks like you used @serializable(Object3D) or @serializable(GameObject) for a prefab or scene reference which is exported to a separate glTF file.\n\nTo fix this please change your code to:\n\n@serializable(AssetReference)\n${context.path}! : AssetReference;\n\0`);
|
|
78
|
+
}
|
|
79
|
+
// ACTUALLY: this is already handled by the extension_utils where we resolve json pointers recursively
|
|
80
|
+
// if(data.startsWith("/nodes/")){
|
|
81
|
+
// const node = parseInt(data.substring("/nodes/".length));
|
|
82
|
+
// if (context.nodeToObject) {
|
|
83
|
+
// const res = context.nodeToObject[node];
|
|
84
|
+
// if (debugExtension)
|
|
85
|
+
// console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
86
|
+
// if (!res) console.warn("Did not find node: " + data, context.nodeToObject, context.object);
|
|
87
|
+
// return res;
|
|
88
|
+
// }
|
|
89
|
+
// }
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
if (data) {
|
|
93
|
+
if (data.node !== undefined && context.nodeToObject) {
|
|
94
|
+
const res = context.nodeToObject[data.node];
|
|
95
|
+
if (debugExtension)
|
|
96
|
+
console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
97
|
+
if (!res)
|
|
98
|
+
console.warn("Did not find node: " + data.node, context.nodeToObject, context.object);
|
|
99
|
+
return res;
|
|
100
|
+
}
|
|
101
|
+
else if (data.guid) {
|
|
102
|
+
if (!context.context) {
|
|
103
|
+
console.error("Missing context");
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
// it is possible that the object is not yet loaded
|
|
107
|
+
// e.g. if we have a scene with multiple gltf files and the first gltf references something in the second gltf
|
|
108
|
+
// we need a way to wait for all components to be created before we can resolve those references
|
|
109
|
+
// independent of order of loading
|
|
110
|
+
let res = undefined;
|
|
111
|
+
// first try to search in the current gltf scene (if any)
|
|
112
|
+
const gltfScene = context.gltf?.scene;
|
|
113
|
+
if (gltfScene) {
|
|
114
|
+
res = GameObject.findByGuid(data.guid, gltfScene);
|
|
115
|
+
}
|
|
116
|
+
// if not found, search in the whole scene
|
|
117
|
+
if (!res) {
|
|
118
|
+
res = GameObject.findByGuid(data.guid, context.context.scene);
|
|
119
|
+
}
|
|
120
|
+
if (!res) {
|
|
121
|
+
if (isDevEnvironment() || debugExtension)
|
|
122
|
+
console.warn("Could not resolve object reference", context.path, data, context.target, context.context.scene);
|
|
123
|
+
data["could_not_resolve"] = true;
|
|
124
|
+
}
|
|
125
|
+
else if (debugExtension)
|
|
126
|
+
console.log("Deserialized object reference?", data, res, context?.nodeToObject);
|
|
127
|
+
return res;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export const objectSerializer = new ObjectSerializer();
|
|
134
|
+
class ComponentSerializer extends TypeSerializer {
|
|
135
|
+
constructor() {
|
|
136
|
+
super([Component, Behaviour]);
|
|
137
|
+
}
|
|
138
|
+
onSerialize(data, _context) {
|
|
139
|
+
if (data?.guid) {
|
|
140
|
+
return { guid: data.guid };
|
|
141
|
+
}
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
onDeserialize(data, context) {
|
|
145
|
+
if (data?.guid) {
|
|
146
|
+
// TODO: need to serialize some identifier for referenced components as well, maybe just guid?
|
|
147
|
+
// because here the components are created but dont have their former guid assigned
|
|
148
|
+
// and will later in the stack just get a newly generated guid
|
|
149
|
+
if (debugExtension)
|
|
150
|
+
console.log(data.guid, context.root, context.object, context.target);
|
|
151
|
+
// first search within the gltf (e.g. necessary when using AssetReference and loading a gltf without adding it to the scene)
|
|
152
|
+
// if we would search JUST the scene those references would NEVER be resolved
|
|
153
|
+
let res = this.findObjectForGuid(data.guid, context.root);
|
|
154
|
+
if (res) {
|
|
155
|
+
return res;
|
|
156
|
+
}
|
|
157
|
+
if (context.context) {
|
|
158
|
+
// if not found within the gltf use the provided context scene
|
|
159
|
+
// to find references outside
|
|
160
|
+
res = this.findObjectForGuid(data.guid, context.context?.scene);
|
|
161
|
+
if (res)
|
|
162
|
+
return res;
|
|
163
|
+
}
|
|
164
|
+
if (isDevEnvironment() || debugExtension)
|
|
165
|
+
console.warn("Could not resolve component reference", context.path, data, context.target);
|
|
166
|
+
data["could_not_resolve"] = true;
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
// if (data?.node !== undefined && context.nodeToObject) {
|
|
170
|
+
// return context.nodeToObject[data.node];
|
|
171
|
+
// }
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
findObjectForGuid(guid, root) {
|
|
175
|
+
// recursively search root
|
|
176
|
+
// need to check the root object too
|
|
177
|
+
if (root["guid"] === guid)
|
|
178
|
+
return root;
|
|
179
|
+
const res = GameObject.foreachComponent(root, (c) => {
|
|
180
|
+
if (c.guid === guid)
|
|
181
|
+
return c;
|
|
182
|
+
return undefined;
|
|
183
|
+
}, false);
|
|
184
|
+
if (res !== undefined)
|
|
185
|
+
return res;
|
|
186
|
+
// if not found, search in children
|
|
187
|
+
for (let i = 0; i < root.children.length; i++) {
|
|
188
|
+
const child = root.children[i];
|
|
189
|
+
const res = this.findObjectForGuid(guid, child);
|
|
190
|
+
if (res)
|
|
191
|
+
return res;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
export const componentSerializer = new ComponentSerializer();
|
|
196
|
+
const $eventListDebugInfo = Symbol("eventListDebugInfo");
|
|
197
|
+
class EventListSerializer extends TypeSerializer {
|
|
198
|
+
constructor() {
|
|
199
|
+
super([EventList]);
|
|
200
|
+
}
|
|
201
|
+
onSerialize(_data, _context) {
|
|
202
|
+
console.log("TODO: SERIALIZE EVENT");
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
onDeserialize(data, context) {
|
|
206
|
+
// TODO: check that we dont accidentally deserialize methods to EventList objects. This is here to make is easy for react-three-fiber to just add props as { () => { } }
|
|
207
|
+
if (typeof data === "function") {
|
|
208
|
+
const evtList = new EventList([new CallInfo(data, true)]);
|
|
209
|
+
return evtList;
|
|
210
|
+
}
|
|
211
|
+
else if (data && data.type === "EventList") {
|
|
212
|
+
if (debugExtension)
|
|
213
|
+
console.log("DESERIALIZE EVENT", data);
|
|
214
|
+
const fns = new Array();
|
|
215
|
+
if (data.calls && Array.isArray(data.calls)) {
|
|
216
|
+
for (const call of data.calls) {
|
|
217
|
+
if (debugExtension)
|
|
218
|
+
console.log(call);
|
|
219
|
+
let target = componentSerializer.findObjectForGuid(call.target, context.root);
|
|
220
|
+
// if the object is not found in the current glb try find it in the whole scene
|
|
221
|
+
if (!target && context.context?.scene) {
|
|
222
|
+
target = componentSerializer.findObjectForGuid(call.target, context.context?.scene);
|
|
223
|
+
}
|
|
224
|
+
const hasMethod = call.method?.length > 0;
|
|
225
|
+
if (target && hasMethod) {
|
|
226
|
+
const printWarningMethodNotFound = () => {
|
|
227
|
+
const uppercaseMethodName = call.method[0].toUpperCase() + call.method.slice(1);
|
|
228
|
+
if (typeof target[uppercaseMethodName] === "function") {
|
|
229
|
+
console.warn(`EventList method:\nCould not find method ${call.method} on object ${target.name}. Please rename ${call.method} to ${uppercaseMethodName}?\n`, target[uppercaseMethodName], "\n in script: ", target);
|
|
230
|
+
showBalloonWarning("EventList methods must start with lowercase letter, see console for details");
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
console.warn(`EventList method:\nCould not find method ${call.method} on object ${target.name}`, target, typeof target[call.method]);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const method = target[call.method];
|
|
238
|
+
if (typeof method !== "function") {
|
|
239
|
+
let foundMethod = false;
|
|
240
|
+
let currentPrototype = target;
|
|
241
|
+
// test if the target method is actually a property setter
|
|
242
|
+
while (currentPrototype) {
|
|
243
|
+
const desc = Object.getOwnPropertyDescriptor(currentPrototype, call.method);
|
|
244
|
+
if (desc && (desc.writable === true || desc.set)) {
|
|
245
|
+
foundMethod = true;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
currentPrototype = Object.getPrototypeOf(currentPrototype);
|
|
249
|
+
}
|
|
250
|
+
if (!foundMethod && (isDevEnvironment() || debugExtension))
|
|
251
|
+
printWarningMethodNotFound();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function deserializeArgument(arg) {
|
|
255
|
+
if (typeof arg === "object") {
|
|
256
|
+
// Try to deserialize the call argument to either a object or a component reference
|
|
257
|
+
let argRes = objectSerializer.onDeserialize(arg, context);
|
|
258
|
+
if (!argRes)
|
|
259
|
+
argRes = componentSerializer.onDeserialize(arg, context);
|
|
260
|
+
if (argRes)
|
|
261
|
+
return argRes;
|
|
262
|
+
}
|
|
263
|
+
return arg;
|
|
264
|
+
}
|
|
265
|
+
let args = call.argument;
|
|
266
|
+
if (args !== undefined) {
|
|
267
|
+
args = deserializeArgument(args);
|
|
268
|
+
}
|
|
269
|
+
else if (call.arguments !== undefined) {
|
|
270
|
+
args = call.arguments.map(deserializeArgument);
|
|
271
|
+
}
|
|
272
|
+
// This is the final method we pass to the call info (or undefined if the method couldnt be resolved)
|
|
273
|
+
const eventMethod = hasMethod ? this.createEventMethod(target, call.method, args) : undefined;
|
|
274
|
+
const fn = new CallInfo(eventMethod, call.enabled);
|
|
275
|
+
if (!fn.method)
|
|
276
|
+
fn[$eventListDebugInfo] = context.object?.name;
|
|
277
|
+
if (!target || !fn.method) {
|
|
278
|
+
const debugInfo = context.object ? "Current object: " + context.object.name + ", " + context.object["guid"] : null;
|
|
279
|
+
if (!target)
|
|
280
|
+
console.warn("EventList is missing target - will be ignored", call.target, debugInfo, data);
|
|
281
|
+
else
|
|
282
|
+
console.warn("EventList method not found: \"" + call.method + "\" on", target);
|
|
283
|
+
}
|
|
284
|
+
else
|
|
285
|
+
fns.push(fn);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const evt = new EventList(fns);
|
|
289
|
+
if (debugExtension)
|
|
290
|
+
console.log(evt);
|
|
291
|
+
const eventListOwner = context.target;
|
|
292
|
+
if (eventListOwner !== undefined && context.path !== undefined) {
|
|
293
|
+
evt.setEventTarget(context.path, eventListOwner);
|
|
294
|
+
}
|
|
295
|
+
return evt;
|
|
296
|
+
}
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
299
|
+
createEventMethod(target, methodName, args) {
|
|
300
|
+
return (...forwardedArgs) => {
|
|
301
|
+
const method = target[methodName];
|
|
302
|
+
if (typeof method === "function") {
|
|
303
|
+
if (args !== undefined) {
|
|
304
|
+
// we now have support for creating event methods with multiple arguments
|
|
305
|
+
// an argument can not be an array right now - so if we receive an array we assume it's the array of arguments that we want to call the method with
|
|
306
|
+
// this means ["test", true] will invoke the method like this: myFunction("test", true)
|
|
307
|
+
if (Array.isArray(args))
|
|
308
|
+
method?.call(target, ...args);
|
|
309
|
+
// in any other case (when we just have one argument) we just call the method with the argument
|
|
310
|
+
// we an not use ...args by default becaue that would break string arguments (it would then just use the first character)
|
|
311
|
+
else
|
|
312
|
+
method?.call(target, args);
|
|
313
|
+
}
|
|
314
|
+
else // support invoking EventList with any number of arguments (if none were declared in unity)
|
|
315
|
+
method?.call(target, ...forwardedArgs);
|
|
316
|
+
}
|
|
317
|
+
else // the target "method" can be a property too
|
|
318
|
+
{
|
|
319
|
+
target[methodName] = args;
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
export const eventListSerializer = new EventListSerializer();
|
|
325
|
+
export class RenderTextureSerializer extends TypeSerializer {
|
|
326
|
+
constructor() {
|
|
327
|
+
super([RenderTexture, WebGLRenderTarget]);
|
|
328
|
+
}
|
|
329
|
+
onSerialize(_data, _context) {
|
|
330
|
+
}
|
|
331
|
+
onDeserialize(data, context) {
|
|
332
|
+
if (data instanceof Texture && context.type === RenderTexture) {
|
|
333
|
+
const tex = data;
|
|
334
|
+
const rt = new RenderTexture(tex.image.width, tex.image.height, {
|
|
335
|
+
colorSpace: THREE.LinearSRGBColorSpace,
|
|
336
|
+
});
|
|
337
|
+
rt.texture = tex;
|
|
338
|
+
tex.isRenderTargetTexture = true;
|
|
339
|
+
tex.flipY = true;
|
|
340
|
+
tex.offset.y = 1;
|
|
341
|
+
tex.repeat.y = -1;
|
|
342
|
+
tex.needsUpdate = true;
|
|
343
|
+
if (tex instanceof CompressedTexture) {
|
|
344
|
+
//@ts-ignore
|
|
345
|
+
tex["isCompressedTexture"] = false;
|
|
346
|
+
//@ts-ignore
|
|
347
|
+
tex.format = THREE.RGBAFormat;
|
|
348
|
+
}
|
|
349
|
+
return rt;
|
|
350
|
+
}
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
new RenderTextureSerializer();
|
|
355
|
+
export class UriSerializer extends TypeSerializer {
|
|
356
|
+
constructor() {
|
|
357
|
+
super([URL]);
|
|
358
|
+
}
|
|
359
|
+
onSerialize(_data, _context) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
onDeserialize(data, _context) {
|
|
363
|
+
if (typeof data === "string" && data.length > 0) {
|
|
364
|
+
return resolveUrl(_context.gltfId, data);
|
|
365
|
+
}
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
new UriSerializer();
|
|
370
370
|
//# sourceMappingURL=engine_serialization_builtin_serializer.js.map
|