@needle-tools/engine 2.24.0-pre
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 +568 -0
- package/LICENSE.md +10 -0
- package/README.md +11 -0
- package/dist/needle-engine.d.ts +5011 -0
- package/dist/needle-engine.js +6605 -0
- package/dist/needle-engine.js.map +7 -0
- package/dist/needle-engine.min.js +167 -0
- package/dist/needle-engine.min.js.map +7 -0
- package/lib/engine/debug/error_overlay.d.ts +1 -0
- package/lib/engine/debug/error_overlay.js +110 -0
- package/lib/engine/debug/error_overlay.js.map +1 -0
- package/lib/engine/engine.d.ts +27 -0
- package/lib/engine/engine.js +13 -0
- package/lib/engine/engine.js.map +1 -0
- package/lib/engine/engine_addressables.d.ts +46 -0
- package/lib/engine/engine_addressables.js +264 -0
- package/lib/engine/engine_addressables.js.map +1 -0
- package/lib/engine/engine_application.d.ts +13 -0
- package/lib/engine/engine_application.js +35 -0
- package/lib/engine/engine_application.js.map +1 -0
- package/lib/engine/engine_assetdatabase.d.ts +54 -0
- package/lib/engine/engine_assetdatabase.js +150 -0
- package/lib/engine/engine_assetdatabase.js.map +1 -0
- package/lib/engine/engine_caching.d.ts +0 -0
- package/lib/engine/engine_caching.js +2 -0
- package/lib/engine/engine_caching.js.map +1 -0
- package/lib/engine/engine_constants.d.ts +2 -0
- package/lib/engine/engine_constants.js +3 -0
- package/lib/engine/engine_constants.js.map +1 -0
- package/lib/engine/engine_coroutine.d.ts +3 -0
- package/lib/engine/engine_coroutine.js +14 -0
- package/lib/engine/engine_coroutine.js.map +1 -0
- package/lib/engine/engine_default_parameters.d.ts +2 -0
- package/lib/engine/engine_default_parameters.js +4 -0
- package/lib/engine/engine_default_parameters.js.map +1 -0
- package/lib/engine/engine_element.d.ts +32 -0
- package/lib/engine/engine_element.js +340 -0
- package/lib/engine/engine_element.js.map +1 -0
- package/lib/engine/engine_element_loading.d.ts +31 -0
- package/lib/engine/engine_element_loading.js +154 -0
- package/lib/engine/engine_element_loading.js.map +1 -0
- package/lib/engine/engine_element_overlay.d.ts +17 -0
- package/lib/engine/engine_element_overlay.js +95 -0
- package/lib/engine/engine_element_overlay.js.map +1 -0
- package/lib/engine/engine_gizmos.d.ts +2 -0
- package/lib/engine/engine_gizmos.js +14 -0
- package/lib/engine/engine_gizmos.js.map +1 -0
- package/lib/engine/engine_gltf.d.ts +2 -0
- package/lib/engine/engine_gltf.js +2 -0
- package/lib/engine/engine_gltf.js.map +1 -0
- package/lib/engine/engine_gltf_builtin_components.d.ts +8 -0
- package/lib/engine/engine_gltf_builtin_components.js +251 -0
- package/lib/engine/engine_gltf_builtin_components.js.map +1 -0
- package/lib/engine/engine_input.d.ts +193 -0
- package/lib/engine/engine_input.js +566 -0
- package/lib/engine/engine_input.js.map +1 -0
- package/lib/engine/engine_input_utils.d.ts +2 -0
- package/lib/engine/engine_input_utils.js +23 -0
- package/lib/engine/engine_input_utils.js.map +1 -0
- package/lib/engine/engine_lightdata.d.ts +21 -0
- package/lib/engine/engine_lightdata.js +85 -0
- package/lib/engine/engine_lightdata.js.map +1 -0
- package/lib/engine/engine_loaders.d.ts +3 -0
- package/lib/engine/engine_loaders.js +20 -0
- package/lib/engine/engine_loaders.js.map +1 -0
- package/lib/engine/engine_mainloop_utils.d.ts +9 -0
- package/lib/engine/engine_mainloop_utils.js +288 -0
- package/lib/engine/engine_mainloop_utils.js.map +1 -0
- package/lib/engine/engine_math.d.ts +11 -0
- package/lib/engine/engine_math.js +40 -0
- package/lib/engine/engine_math.js.map +1 -0
- package/lib/engine/engine_networking.d.ts +133 -0
- package/lib/engine/engine_networking.js +541 -0
- package/lib/engine/engine_networking.js.map +1 -0
- package/lib/engine/engine_networking_auto.d.ts +18 -0
- package/lib/engine/engine_networking_auto.js +252 -0
- package/lib/engine/engine_networking_auto.js.map +1 -0
- package/lib/engine/engine_networking_files.d.ts +23 -0
- package/lib/engine/engine_networking_files.js +173 -0
- package/lib/engine/engine_networking_files.js.map +1 -0
- package/lib/engine/engine_networking_files_default_components.d.ts +3 -0
- package/lib/engine/engine_networking_files_default_components.js +45 -0
- package/lib/engine/engine_networking_files_default_components.js.map +1 -0
- package/lib/engine/engine_networking_instantiate.d.ts +34 -0
- package/lib/engine/engine_networking_instantiate.js +274 -0
- package/lib/engine/engine_networking_instantiate.js.map +1 -0
- package/lib/engine/engine_networking_peer.d.ts +10 -0
- package/lib/engine/engine_networking_peer.js +106 -0
- package/lib/engine/engine_networking_peer.js.map +1 -0
- package/lib/engine/engine_networking_utils.d.ts +1 -0
- package/lib/engine/engine_networking_utils.js +11 -0
- package/lib/engine/engine_networking_utils.js.map +1 -0
- package/lib/engine/engine_networking_websocket.d.ts +0 -0
- package/lib/engine/engine_networking_websocket.js +3 -0
- package/lib/engine/engine_networking_websocket.js.map +1 -0
- package/lib/engine/engine_physics.d.ts +88 -0
- package/lib/engine/engine_physics.js +563 -0
- package/lib/engine/engine_physics.js.map +1 -0
- package/lib/engine/engine_rendererdata.d.ts +48 -0
- package/lib/engine/engine_rendererdata.js +182 -0
- package/lib/engine/engine_rendererdata.js.map +1 -0
- package/lib/engine/engine_scenetools.d.ts +25 -0
- package/lib/engine/engine_scenetools.js +211 -0
- package/lib/engine/engine_scenetools.js.map +1 -0
- package/lib/engine/engine_serialization.d.ts +3 -0
- package/lib/engine/engine_serialization.js +5 -0
- package/lib/engine/engine_serialization.js.map +1 -0
- package/lib/engine/engine_serialization_builtin_serializer.d.ts +49 -0
- package/lib/engine/engine_serialization_builtin_serializer.js +238 -0
- package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -0
- package/lib/engine/engine_serialization_core.d.ts +70 -0
- package/lib/engine/engine_serialization_core.js +417 -0
- package/lib/engine/engine_serialization_core.js.map +1 -0
- package/lib/engine/engine_serialization_decorator.d.ts +9 -0
- package/lib/engine/engine_serialization_decorator.js +44 -0
- package/lib/engine/engine_serialization_decorator.js.map +1 -0
- package/lib/engine/engine_setup.d.ts +129 -0
- package/lib/engine/engine_setup.js +609 -0
- package/lib/engine/engine_setup.js.map +1 -0
- package/lib/engine/engine_shaders.d.ts +31 -0
- package/lib/engine/engine_shaders.js +230 -0
- package/lib/engine/engine_shaders.js.map +1 -0
- package/lib/engine/engine_three_utils.d.ts +20 -0
- package/lib/engine/engine_three_utils.js +247 -0
- package/lib/engine/engine_three_utils.js.map +1 -0
- package/lib/engine/engine_time.d.ts +13 -0
- package/lib/engine/engine_time.js +31 -0
- package/lib/engine/engine_time.js.map +1 -0
- package/lib/engine/engine_typestore.d.ts +7 -0
- package/lib/engine/engine_typestore.js +17 -0
- package/lib/engine/engine_typestore.js.map +1 -0
- package/lib/engine/engine_utils.d.ts +34 -0
- package/lib/engine/engine_utils.js +239 -0
- package/lib/engine/engine_utils.js.map +1 -0
- package/lib/engine/engine_web_api.d.ts +12 -0
- package/lib/engine/engine_web_api.js +114 -0
- package/lib/engine/engine_web_api.js.map +1 -0
- package/lib/engine/extensions/KHR_animation_pointer.d.ts +0 -0
- package/lib/engine/extensions/KHR_animation_pointer.js +385 -0
- package/lib/engine/extensions/KHR_animation_pointer.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_animator_controller.d.ts +0 -0
- package/lib/engine/extensions/NEEDLE_animator_controller.js +59 -0
- package/lib/engine/extensions/NEEDLE_animator_controller.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +108 -0
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js +92 -0
- package/lib/engine/extensions/NEEDLE_animator_controller_model.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_components.d.ts +32 -0
- package/lib/engine/extensions/NEEDLE_components.js +193 -0
- package/lib/engine/extensions/NEEDLE_components.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_deferred_texture.d.ts +18 -0
- package/lib/engine/extensions/NEEDLE_deferred_texture.js +149 -0
- package/lib/engine/extensions/NEEDLE_deferred_texture.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -0
- package/lib/engine/extensions/NEEDLE_gameobject_data.js +54 -0
- package/lib/engine/extensions/NEEDLE_gameobject_data.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +35 -0
- package/lib/engine/extensions/NEEDLE_lighting_settings.js +136 -0
- package/lib/engine/extensions/NEEDLE_lighting_settings.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +17 -0
- package/lib/engine/extensions/NEEDLE_lightmaps.js +69 -0
- package/lib/engine/extensions/NEEDLE_lightmaps.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -0
- package/lib/engine/extensions/NEEDLE_persistent_assets.js +64 -0
- package/lib/engine/extensions/NEEDLE_persistent_assets.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_render_objects.d.ts +12 -0
- package/lib/engine/extensions/NEEDLE_render_objects.js +144 -0
- package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +39 -0
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +419 -0
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -0
- package/lib/engine/extensions/NEEDLE_timeline.d.ts +0 -0
- package/lib/engine/extensions/NEEDLE_timeline.js +57 -0
- package/lib/engine/extensions/NEEDLE_timeline.js.map +1 -0
- package/lib/engine/extensions/extension_resolver.d.ts +4 -0
- package/lib/engine/extensions/extension_resolver.js +2 -0
- package/lib/engine/extensions/extension_resolver.js.map +1 -0
- package/lib/engine/extensions/extension_utils.d.ts +2 -0
- package/lib/engine/extensions/extension_utils.js +130 -0
- package/lib/engine/extensions/extension_utils.js.map +1 -0
- package/lib/engine/extensions/extensions.d.ts +6 -0
- package/lib/engine/extensions/extensions.js +41 -0
- package/lib/engine/extensions/extensions.js.map +1 -0
- package/lib/engine/shaders/shaderData.d.ts +55 -0
- package/lib/engine/shaders/shaderData.js +59 -0
- package/lib/engine/shaders/shaderData.js.map +1 -0
- package/lib/engine/tests/simulate_avatars.d.ts +0 -0
- package/lib/engine/tests/simulate_avatars.js +3 -0
- package/lib/engine/tests/simulate_avatars.js.map +1 -0
- package/lib/engine/tests/test_utils.d.ts +2 -0
- package/lib/engine/tests/test_utils.js +54 -0
- package/lib/engine/tests/test_utils.js.map +1 -0
- package/lib/engine-components/AlignmentConstraint.d.ts +10 -0
- package/lib/engine-components/AlignmentConstraint.js +27 -0
- package/lib/engine-components/AlignmentConstraint.js.map +1 -0
- package/lib/engine-components/Animation.d.ts +44 -0
- package/lib/engine-components/Animation.js +257 -0
- package/lib/engine-components/Animation.js.map +1 -0
- package/lib/engine-components/AnimationCurve.d.ts +15 -0
- package/lib/engine-components/AnimationCurve.js +62 -0
- package/lib/engine-components/AnimationCurve.js.map +1 -0
- package/lib/engine-components/Animator.d.ts +48 -0
- package/lib/engine-components/Animator.js +126 -0
- package/lib/engine-components/Animator.js.map +1 -0
- package/lib/engine-components/AnimatorController.d.ts +39 -0
- package/lib/engine-components/AnimatorController.js +687 -0
- package/lib/engine-components/AnimatorController.js.map +1 -0
- package/lib/engine-components/AudioListener.d.ts +7 -0
- package/lib/engine-components/AudioListener.js +29 -0
- package/lib/engine-components/AudioListener.js.map +1 -0
- package/lib/engine-components/AudioSource.d.ts +61 -0
- package/lib/engine-components/AudioSource.js +377 -0
- package/lib/engine-components/AudioSource.js.map +1 -0
- package/lib/engine-components/AvatarLoader.d.ts +22 -0
- package/lib/engine-components/AvatarLoader.js +203 -0
- package/lib/engine-components/AvatarLoader.js.map +1 -0
- package/lib/engine-components/AxesHelper.d.ts +9 -0
- package/lib/engine-components/AxesHelper.js +43 -0
- package/lib/engine-components/AxesHelper.js.map +1 -0
- package/lib/engine-components/BasicIKConstraint.d.ts +9 -0
- package/lib/engine-components/BasicIKConstraint.js +44 -0
- package/lib/engine-components/BasicIKConstraint.js.map +1 -0
- package/lib/engine-components/BoxCollider.d.ts +2 -0
- package/lib/engine-components/BoxCollider.js +3 -0
- package/lib/engine-components/BoxCollider.js.map +1 -0
- package/lib/engine-components/BoxHelperComponent.d.ts +16 -0
- package/lib/engine-components/BoxHelperComponent.js +72 -0
- package/lib/engine-components/BoxHelperComponent.js.map +1 -0
- package/lib/engine-components/Camera.d.ts +38 -0
- package/lib/engine-components/Camera.js +258 -0
- package/lib/engine-components/Camera.js.map +1 -0
- package/lib/engine-components/Collider.d.ts +21 -0
- package/lib/engine-components/Collider.js +65 -0
- package/lib/engine-components/Collider.js.map +1 -0
- package/lib/engine-components/Component.d.ts +165 -0
- package/lib/engine-components/Component.js +895 -0
- package/lib/engine-components/Component.js.map +1 -0
- package/lib/engine-components/ComponentExtensions.d.ts +2 -0
- package/lib/engine-components/ComponentExtensions.js +3 -0
- package/lib/engine-components/ComponentExtensions.js.map +1 -0
- package/lib/engine-components/DeleteBox.d.ts +9 -0
- package/lib/engine-components/DeleteBox.js +27 -0
- package/lib/engine-components/DeleteBox.js.map +1 -0
- package/lib/engine-components/DeviceFlag.d.ts +12 -0
- package/lib/engine-components/DeviceFlag.js +50 -0
- package/lib/engine-components/DeviceFlag.js.map +1 -0
- package/lib/engine-components/DragControls.d.ts +44 -0
- package/lib/engine-components/DragControls.js +465 -0
- package/lib/engine-components/DragControls.js.map +1 -0
- package/lib/engine-components/DropListener.d.ts +15 -0
- package/lib/engine-components/DropListener.js +102 -0
- package/lib/engine-components/DropListener.js.map +1 -0
- package/lib/engine-components/Duplicatable.d.ts +16 -0
- package/lib/engine-components/Duplicatable.js +150 -0
- package/lib/engine-components/Duplicatable.js.map +1 -0
- package/lib/engine-components/EventList.d.ts +22 -0
- package/lib/engine-components/EventList.js +97 -0
- package/lib/engine-components/EventList.js.map +1 -0
- package/lib/engine-components/EventTrigger.d.ts +3 -0
- package/lib/engine-components/EventTrigger.js +4 -0
- package/lib/engine-components/EventTrigger.js.map +1 -0
- package/lib/engine-components/EventType.d.ts +19 -0
- package/lib/engine-components/EventType.js +72 -0
- package/lib/engine-components/EventType.js.map +1 -0
- package/lib/engine-components/FlyControls.d.ts +7 -0
- package/lib/engine-components/FlyControls.js +22 -0
- package/lib/engine-components/FlyControls.js.map +1 -0
- package/lib/engine-components/Gizmos.d.ts +12 -0
- package/lib/engine-components/Gizmos.js +61 -0
- package/lib/engine-components/Gizmos.js.map +1 -0
- package/lib/engine-components/GltfExport.d.ts +28 -0
- package/lib/engine-components/GltfExport.js +201 -0
- package/lib/engine-components/GltfExport.js.map +1 -0
- package/lib/engine-components/GridHelper.d.ts +11 -0
- package/lib/engine-components/GridHelper.js +41 -0
- package/lib/engine-components/GridHelper.js.map +1 -0
- package/lib/engine-components/GroundProjection.d.ts +18 -0
- package/lib/engine-components/GroundProjection.js +77 -0
- package/lib/engine-components/GroundProjection.js.map +1 -0
- package/lib/engine-components/Interactable.d.ts +10 -0
- package/lib/engine-components/Interactable.js +13 -0
- package/lib/engine-components/Interactable.js.map +1 -0
- package/lib/engine-components/LODGroup.d.ts +29 -0
- package/lib/engine-components/LODGroup.js +176 -0
- package/lib/engine-components/LODGroup.js.map +1 -0
- package/lib/engine-components/Light.d.ts +69 -0
- package/lib/engine-components/Light.js +407 -0
- package/lib/engine-components/Light.js.map +1 -0
- package/lib/engine-components/LookAtConstraint.d.ts +7 -0
- package/lib/engine-components/LookAtConstraint.js +18 -0
- package/lib/engine-components/LookAtConstraint.js.map +1 -0
- package/lib/engine-components/MeshCollider.d.ts +4 -0
- package/lib/engine-components/MeshCollider.js +8 -0
- package/lib/engine-components/MeshCollider.js.map +1 -0
- package/lib/engine-components/NavMesh.d.ts +5 -0
- package/lib/engine-components/NavMesh.js +11 -0
- package/lib/engine-components/NavMesh.js.map +1 -0
- package/lib/engine-components/NestedGltf.d.ts +10 -0
- package/lib/engine-components/NestedGltf.js +61 -0
- package/lib/engine-components/NestedGltf.js.map +1 -0
- package/lib/engine-components/Networking.d.ts +9 -0
- package/lib/engine-components/Networking.js +47 -0
- package/lib/engine-components/Networking.js.map +1 -0
- package/lib/engine-components/OffsetConstraint.d.ts +11 -0
- package/lib/engine-components/OffsetConstraint.js +31 -0
- package/lib/engine-components/OffsetConstraint.js.map +1 -0
- package/lib/engine-components/OrbitControls.d.ts +45 -0
- package/lib/engine-components/OrbitControls.js +247 -0
- package/lib/engine-components/OrbitControls.js.map +1 -0
- package/lib/engine-components/ParticleSystem.d.ts +34 -0
- package/lib/engine-components/ParticleSystem.js +216 -0
- package/lib/engine-components/ParticleSystem.js.map +1 -0
- package/lib/engine-components/ParticleSystemModules.d.ts +93 -0
- package/lib/engine-components/ParticleSystemModules.js +167 -0
- package/lib/engine-components/ParticleSystemModules.js.map +1 -0
- package/lib/engine-components/PlayerColor.d.ts +13 -0
- package/lib/engine-components/PlayerColor.js +85 -0
- package/lib/engine-components/PlayerColor.js.map +1 -0
- package/lib/engine-components/Renderer.d.ts +72 -0
- package/lib/engine-components/Renderer.js +678 -0
- package/lib/engine-components/Renderer.js.map +1 -0
- package/lib/engine-components/RendererLightmap.d.ts +23 -0
- package/lib/engine-components/RendererLightmap.js +128 -0
- package/lib/engine-components/RendererLightmap.js.map +1 -0
- package/lib/engine-components/Rigidbody.d.ts +42 -0
- package/lib/engine-components/Rigidbody.js +170 -0
- package/lib/engine-components/Rigidbody.js.map +1 -0
- package/lib/engine-components/ScreenCapture.d.ts +9 -0
- package/lib/engine-components/ScreenCapture.js +44 -0
- package/lib/engine-components/ScreenCapture.js.map +1 -0
- package/lib/engine-components/ShadowCatcher.d.ts +15 -0
- package/lib/engine-components/ShadowCatcher.js +94 -0
- package/lib/engine-components/ShadowCatcher.js.map +1 -0
- package/lib/engine-components/Skybox.d.ts +16 -0
- package/lib/engine-components/Skybox.js +121 -0
- package/lib/engine-components/Skybox.js.map +1 -0
- package/lib/engine-components/SmoothFollow.d.ts +13 -0
- package/lib/engine-components/SmoothFollow.js +57 -0
- package/lib/engine-components/SmoothFollow.js.map +1 -0
- package/lib/engine-components/SpatialTrigger.d.ts +27 -0
- package/lib/engine-components/SpatialTrigger.js +145 -0
- package/lib/engine-components/SpatialTrigger.js.map +1 -0
- package/lib/engine-components/SpectatorCamera.d.ts +36 -0
- package/lib/engine-components/SpectatorCamera.js +311 -0
- package/lib/engine-components/SpectatorCamera.js.map +1 -0
- package/lib/engine-components/SphereCollider.d.ts +2 -0
- package/lib/engine-components/SphereCollider.js +3 -0
- package/lib/engine-components/SphereCollider.js.map +1 -0
- package/lib/engine-components/SpringJoint.d.ts +13 -0
- package/lib/engine-components/SpringJoint.js +42 -0
- package/lib/engine-components/SpringJoint.js.map +1 -0
- package/lib/engine-components/SpriteRenderer.d.ts +33 -0
- package/lib/engine-components/SpriteRenderer.js +141 -0
- package/lib/engine-components/SpriteRenderer.js.map +1 -0
- package/lib/engine-components/SyncedCamera.d.ts +23 -0
- package/lib/engine-components/SyncedCamera.js +188 -0
- package/lib/engine-components/SyncedCamera.js.map +1 -0
- package/lib/engine-components/SyncedRoom.d.ts +20 -0
- package/lib/engine-components/SyncedRoom.js +151 -0
- package/lib/engine-components/SyncedRoom.js.map +1 -0
- package/lib/engine-components/SyncedTransform.d.ts +35 -0
- package/lib/engine-components/SyncedTransform.js +268 -0
- package/lib/engine-components/SyncedTransform.js.map +1 -0
- package/lib/engine-components/TestRunner.d.ts +13 -0
- package/lib/engine-components/TestRunner.js +100 -0
- package/lib/engine-components/TestRunner.js.map +1 -0
- package/lib/engine-components/TransformGizmo.d.ts +15 -0
- package/lib/engine-components/TransformGizmo.js +166 -0
- package/lib/engine-components/TransformGizmo.js.map +1 -0
- package/lib/engine-components/VideoPlayer.d.ts +55 -0
- package/lib/engine-components/VideoPlayer.js +307 -0
- package/lib/engine-components/VideoPlayer.js.map +1 -0
- package/lib/engine-components/Voip.d.ts +22 -0
- package/lib/engine-components/Voip.js +400 -0
- package/lib/engine-components/Voip.js.map +1 -0
- package/lib/engine-components/Volume.d.ts +30 -0
- package/lib/engine-components/Volume.js +86 -0
- package/lib/engine-components/Volume.js.map +1 -0
- package/lib/engine-components/WebARSessionRoot.d.ts +21 -0
- package/lib/engine-components/WebARSessionRoot.js +105 -0
- package/lib/engine-components/WebARSessionRoot.js.map +1 -0
- package/lib/engine-components/WebXR.d.ts +90 -0
- package/lib/engine-components/WebXR.js +498 -0
- package/lib/engine-components/WebXR.js.map +1 -0
- package/lib/engine-components/WebXRAvatar.d.ts +59 -0
- package/lib/engine-components/WebXRAvatar.js +263 -0
- package/lib/engine-components/WebXRAvatar.js.map +1 -0
- package/lib/engine-components/WebXRController.d.ts +145 -0
- package/lib/engine-components/WebXRController.js +924 -0
- package/lib/engine-components/WebXRController.js.map +1 -0
- package/lib/engine-components/WebXRGrabRendering.d.ts +42 -0
- package/lib/engine-components/WebXRGrabRendering.js +138 -0
- package/lib/engine-components/WebXRGrabRendering.js.map +1 -0
- package/lib/engine-components/WebXRRig.d.ts +4 -0
- package/lib/engine-components/WebXRRig.js +8 -0
- package/lib/engine-components/WebXRRig.js.map +1 -0
- package/lib/engine-components/WebXRSync.d.ts +54 -0
- package/lib/engine-components/WebXRSync.js +405 -0
- package/lib/engine-components/WebXRSync.js.map +1 -0
- package/lib/engine-components/XRFlag.d.ts +32 -0
- package/lib/engine-components/XRFlag.js +115 -0
- package/lib/engine-components/XRFlag.js.map +1 -0
- package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +10 -0
- package/lib/engine-components/avatar/AvatarBlink_Simple.js +76 -0
- package/lib/engine-components/avatar/AvatarBlink_Simple.js.map +1 -0
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +13 -0
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +75 -0
- package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js.map +1 -0
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +27 -0
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +120 -0
- package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +1 -0
- package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +13 -0
- package/lib/engine-components/avatar/Avatar_MouthShapes.js +77 -0
- package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +1 -0
- package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +8 -0
- package/lib/engine-components/avatar/Avatar_MustacheShake.js +29 -0
- package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +1 -0
- package/lib/engine-components/codegen/exports.d.ts +140 -0
- package/lib/engine-components/codegen/exports.js +142 -0
- package/lib/engine-components/codegen/exports.js.map +1 -0
- package/lib/engine-components/debug/LogStats.d.ts +5 -0
- package/lib/engine-components/debug/LogStats.js +19 -0
- package/lib/engine-components/debug/LogStats.js.map +1 -0
- package/lib/engine-components/js-extensions/RGBAColor.d.ts +9 -0
- package/lib/engine-components/js-extensions/RGBAColor.js +35 -0
- package/lib/engine-components/js-extensions/RGBAColor.js.map +1 -0
- package/lib/engine-components/timeline/PlayableDirector.d.ts +66 -0
- package/lib/engine-components/timeline/PlayableDirector.js +460 -0
- package/lib/engine-components/timeline/PlayableDirector.js.map +1 -0
- package/lib/engine-components/timeline/SignalAsset.d.ts +19 -0
- package/lib/engine-components/timeline/SignalAsset.js +87 -0
- package/lib/engine-components/timeline/SignalAsset.js.map +1 -0
- package/lib/engine-components/timeline/TimelineModels.d.ts +86 -0
- package/lib/engine-components/timeline/TimelineModels.js +23 -0
- package/lib/engine-components/timeline/TimelineModels.js.map +1 -0
- package/lib/engine-components/timeline/TimelineTracks.d.ts +73 -0
- package/lib/engine-components/timeline/TimelineTracks.js +573 -0
- package/lib/engine-components/timeline/TimelineTracks.js.map +1 -0
- package/lib/engine-components/ui/BaseUIComponent.d.ts +24 -0
- package/lib/engine-components/ui/BaseUIComponent.js +129 -0
- package/lib/engine-components/ui/BaseUIComponent.js.map +1 -0
- package/lib/engine-components/ui/Button.d.ts +55 -0
- package/lib/engine-components/ui/Button.js +217 -0
- package/lib/engine-components/ui/Button.js.map +1 -0
- package/lib/engine-components/ui/Canvas.d.ts +39 -0
- package/lib/engine-components/ui/Canvas.js +169 -0
- package/lib/engine-components/ui/Canvas.js.map +1 -0
- package/lib/engine-components/ui/CanvasGroup.d.ts +14 -0
- package/lib/engine-components/ui/CanvasGroup.js +53 -0
- package/lib/engine-components/ui/CanvasGroup.js.map +1 -0
- package/lib/engine-components/ui/EventSystem.d.ts +44 -0
- package/lib/engine-components/ui/EventSystem.js +480 -0
- package/lib/engine-components/ui/EventSystem.js.map +1 -0
- package/lib/engine-components/ui/Graphic.d.ts +33 -0
- package/lib/engine-components/ui/Graphic.js +145 -0
- package/lib/engine-components/ui/Graphic.js.map +1 -0
- package/lib/engine-components/ui/Image.d.ts +20 -0
- package/lib/engine-components/ui/Image.js +61 -0
- package/lib/engine-components/ui/Image.js.map +1 -0
- package/lib/engine-components/ui/InputField.d.ts +25 -0
- package/lib/engine-components/ui/InputField.js +179 -0
- package/lib/engine-components/ui/InputField.js.map +1 -0
- package/lib/engine-components/ui/Interfaces.d.ts +7 -0
- package/lib/engine-components/ui/Interfaces.js +2 -0
- package/lib/engine-components/ui/Interfaces.js.map +1 -0
- package/lib/engine-components/ui/Keyboard.d.ts +31 -0
- package/lib/engine-components/ui/Keyboard.js +177 -0
- package/lib/engine-components/ui/Keyboard.js.map +1 -0
- package/lib/engine-components/ui/Layout.d.ts +10 -0
- package/lib/engine-components/ui/Layout.js +11 -0
- package/lib/engine-components/ui/Layout.js.map +1 -0
- package/lib/engine-components/ui/PointerEvents.d.ts +35 -0
- package/lib/engine-components/ui/PointerEvents.js +20 -0
- package/lib/engine-components/ui/PointerEvents.js.map +1 -0
- package/lib/engine-components/ui/Raycaster.d.ts +20 -0
- package/lib/engine-components/ui/Raycaster.js +40 -0
- package/lib/engine-components/ui/Raycaster.js.map +1 -0
- package/lib/engine-components/ui/RectTransform.d.ts +39 -0
- package/lib/engine-components/ui/RectTransform.js +173 -0
- package/lib/engine-components/ui/RectTransform.js.map +1 -0
- package/lib/engine-components/ui/SpatialHtml.d.ts +6 -0
- package/lib/engine-components/ui/SpatialHtml.js +58 -0
- package/lib/engine-components/ui/SpatialHtml.js.map +1 -0
- package/lib/engine-components/ui/Text.d.ts +68 -0
- package/lib/engine-components/ui/Text.js +631 -0
- package/lib/engine-components/ui/Text.js.map +1 -0
- package/lib/engine-components/ui/Utils.d.ts +19 -0
- package/lib/engine-components/ui/Utils.js +85 -0
- package/lib/engine-components/ui/Utils.js.map +1 -0
- package/lib/engine-schemes/schemes.d.ts +4 -0
- package/lib/engine-schemes/schemes.js +20 -0
- package/lib/engine-schemes/schemes.js.map +1 -0
- package/lib/engine-schemes/synced-camera-model.d.ts +25 -0
- package/lib/engine-schemes/synced-camera-model.js +68 -0
- package/lib/engine-schemes/synced-camera-model.js.map +1 -0
- package/lib/engine-schemes/synced-transform-model.d.ts +31 -0
- package/lib/engine-schemes/synced-transform-model.js +67 -0
- package/lib/engine-schemes/synced-transform-model.js.map +1 -0
- package/lib/engine-schemes/transform.d.ts +12 -0
- package/lib/engine-schemes/transform.js +40 -0
- package/lib/engine-schemes/transform.js.map +1 -0
- package/lib/engine-schemes/vec3.d.ts +11 -0
- package/lib/engine-schemes/vec3.js +30 -0
- package/lib/engine-schemes/vec3.js.map +1 -0
- package/lib/engine-schemes/vec4.d.ts +12 -0
- package/lib/engine-schemes/vec4.js +34 -0
- package/lib/engine-schemes/vec4.js.map +1 -0
- package/lib/engine-schemes/vr-user-state-buffer.d.ts +36 -0
- package/lib/engine-schemes/vr-user-state-buffer.js +104 -0
- package/lib/engine-schemes/vr-user-state-buffer.js.map +1 -0
- package/lib/needle-engine.d.ts +5 -0
- package/lib/needle-engine.js +34 -0
- package/lib/needle-engine.js.map +1 -0
- package/package.json +63 -0
- package/src/engine/codegen/register_types.js +297 -0
- package/src/engine/debug/error_overlay.ts +122 -0
- package/src/engine/engine.ts +15 -0
- package/src/engine/engine_addressables.ts +297 -0
- package/src/engine/engine_application.ts +42 -0
- package/src/engine/engine_assetdatabase.ts +215 -0
- package/src/engine/engine_caching.ts +0 -0
- package/src/engine/engine_components.js +202 -0
- package/src/engine/engine_constants.ts +3 -0
- package/src/engine/engine_coroutine.ts +16 -0
- package/src/engine/engine_default_parameters.ts +4 -0
- package/src/engine/engine_element.ts +380 -0
- package/src/engine/engine_element_loading.ts +178 -0
- package/src/engine/engine_element_overlay.ts +108 -0
- package/src/engine/engine_fileloader.js +9 -0
- package/src/engine/engine_generic_utils.js +14 -0
- package/src/engine/engine_gizmos.ts +15 -0
- package/src/engine/engine_gltf.ts +4 -0
- package/src/engine/engine_gltf_builtin_components.ts +298 -0
- package/src/engine/engine_input.ts +581 -0
- package/src/engine/engine_input_utils.ts +24 -0
- package/src/engine/engine_lightdata.ts +111 -0
- package/src/engine/engine_loaders.ts +26 -0
- package/src/engine/engine_mainloop_utils.ts +292 -0
- package/src/engine/engine_math.ts +43 -0
- package/src/engine/engine_networking.ts +664 -0
- package/src/engine/engine_networking_auto.ts +300 -0
- package/src/engine/engine_networking_files.ts +198 -0
- package/src/engine/engine_networking_files_default_components.ts +54 -0
- package/src/engine/engine_networking_instantiate.ts +321 -0
- package/src/engine/engine_networking_peer.ts +128 -0
- package/src/engine/engine_networking_utils.ts +12 -0
- package/src/engine/engine_networking_websocket.ts +1 -0
- package/src/engine/engine_physics.ts +652 -0
- package/src/engine/engine_rendererdata.ts +214 -0
- package/src/engine/engine_scenetools.ts +231 -0
- package/src/engine/engine_serialization.ts +4 -0
- package/src/engine/engine_serialization_builtin_serializer.ts +266 -0
- package/src/engine/engine_serialization_core.ts +513 -0
- package/src/engine/engine_serialization_decorator.ts +55 -0
- package/src/engine/engine_setup.ts +705 -0
- package/src/engine/engine_shaders.ts +243 -0
- package/src/engine/engine_three_utils.ts +290 -0
- package/src/engine/engine_time.ts +38 -0
- package/src/engine/engine_typestore.ts +21 -0
- package/src/engine/engine_utils.ts +268 -0
- package/src/engine/engine_web_api.ts +122 -0
- package/src/engine/extensions/EXT_texture_exr.js +42 -0
- package/src/engine/extensions/KHR_animation_pointer.ts +484 -0
- package/src/engine/extensions/NEEDLE_animator_controller.ts +68 -0
- package/src/engine/extensions/NEEDLE_animator_controller_model.ts +185 -0
- package/src/engine/extensions/NEEDLE_components.ts +234 -0
- package/src/engine/extensions/NEEDLE_deferred_texture.ts +175 -0
- package/src/engine/extensions/NEEDLE_gameobject_data.ts +76 -0
- package/src/engine/extensions/NEEDLE_lighting_settings.ts +161 -0
- package/src/engine/extensions/NEEDLE_lightmaps.ts +93 -0
- package/src/engine/extensions/NEEDLE_persistent_assets.ts +76 -0
- package/src/engine/extensions/NEEDLE_render_objects.ts +197 -0
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +482 -0
- package/src/engine/extensions/NEEDLE_timeline.ts +68 -0
- package/src/engine/extensions/extension_resolver.ts +5 -0
- package/src/engine/extensions/extension_utils.ts +138 -0
- package/src/engine/extensions/extensions.ts +49 -0
- package/src/engine/shaders/shaderData.ts +68 -0
- package/src/engine/tests/simulate_avatars.ts +2 -0
- package/src/engine/tests/test_utils.ts +63 -0
- package/src/engine-components/AlignmentConstraint.ts +33 -0
- package/src/engine-components/Animation.ts +282 -0
- package/src/engine-components/AnimationCurve.ts +42 -0
- package/src/engine-components/Animator.ts +148 -0
- package/src/engine-components/AnimatorController.ts +799 -0
- package/src/engine-components/AudioListener.ts +32 -0
- package/src/engine-components/AudioSource.ts +383 -0
- package/src/engine-components/AvatarLoader.ts +240 -0
- package/src/engine-components/AxesHelper.ts +32 -0
- package/src/engine-components/BasicIKConstraint.ts +54 -0
- package/src/engine-components/BoxCollider.ts +2 -0
- package/src/engine-components/BoxHelperComponent.ts +83 -0
- package/src/engine-components/Camera.ts +261 -0
- package/src/engine-components/Collider.ts +72 -0
- package/src/engine-components/Component.ts +1042 -0
- package/src/engine-components/ComponentExtensions.ts +7 -0
- package/src/engine-components/DeleteBox.ts +34 -0
- package/src/engine-components/DeviceFlag.ts +46 -0
- package/src/engine-components/DragControls.ts +534 -0
- package/src/engine-components/DropListener.ts +101 -0
- package/src/engine-components/Duplicatable.ts +146 -0
- package/src/engine-components/EventList.ts +116 -0
- package/src/engine-components/EventTrigger.ts +28 -0
- package/src/engine-components/EventType.ts +88 -0
- package/src/engine-components/FlyControls.ts +27 -0
- package/src/engine-components/Gizmos.ts +53 -0
- package/src/engine-components/GltfExport.ts +232 -0
- package/src/engine-components/GridHelper.ts +32 -0
- package/src/engine-components/GroundProjection.ts +75 -0
- package/src/engine-components/Interactable.ts +28 -0
- package/src/engine-components/LODGroup.ts +173 -0
- package/src/engine-components/Light.ts +418 -0
- package/src/engine-components/LookAtConstraint.ts +12 -0
- package/src/engine-components/MeshCollider.ts +12 -0
- package/src/engine-components/NavMesh.ts +118 -0
- package/src/engine-components/NestedGltf.ts +56 -0
- package/src/engine-components/Networking.ts +58 -0
- package/src/engine-components/OffsetConstraint.ts +32 -0
- package/src/engine-components/OrbitControls.ts +270 -0
- package/src/engine-components/ParticleSystem.ts +249 -0
- package/src/engine-components/ParticleSystemModules.ts +173 -0
- package/src/engine-components/PlayerColor.ts +93 -0
- package/src/engine-components/Renderer.ts +732 -0
- package/src/engine-components/RendererLightmap.ts +152 -0
- package/src/engine-components/RigidBody.ts +177 -0
- package/src/engine-components/ScreenCapture.ts +47 -0
- package/src/engine-components/ShadowCatcher.ts +93 -0
- package/src/engine-components/Skybox.ts +116 -0
- package/src/engine-components/SmoothFollow.ts +55 -0
- package/src/engine-components/SpatialTrigger.ts +142 -0
- package/src/engine-components/SpectatorCamera.ts +350 -0
- package/src/engine-components/SphereCollider.ts +2 -0
- package/src/engine-components/SpringJoint.ts +45 -0
- package/src/engine-components/SpriteRenderer.ts +143 -0
- package/src/engine-components/SyncedCamera.ts +206 -0
- package/src/engine-components/SyncedRoom.ts +157 -0
- package/src/engine-components/SyncedTransform.ts +339 -0
- package/src/engine-components/TestRunner.ts +116 -0
- package/src/engine-components/TransformGizmo.ts +185 -0
- package/src/engine-components/VideoPlayer.ts +308 -0
- package/src/engine-components/Voip.ts +455 -0
- package/src/engine-components/Volume.ts +86 -0
- package/src/engine-components/WebARSessionRoot.ts +109 -0
- package/src/engine-components/WebXR.ts +586 -0
- package/src/engine-components/WebXRAvatar.ts +326 -0
- package/src/engine-components/WebXRController.ts +1049 -0
- package/src/engine-components/WebXRGrabRendering.ts +151 -0
- package/src/engine-components/WebXRRig.ts +9 -0
- package/src/engine-components/WebXRSync.ts +458 -0
- package/src/engine-components/XRFlag.ts +134 -0
- package/src/engine-components/avatar/AvatarBlink_Simple.ts +68 -0
- package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +69 -0
- package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +137 -0
- package/src/engine-components/avatar/Avatar_MouthShapes.ts +81 -0
- package/src/engine-components/avatar/Avatar_MustacheShake.ts +29 -0
- package/src/engine-components/codegen/exports.ts +141 -0
- package/src/engine-components/debug/LogStats.ts +22 -0
- package/src/engine-components/js-extensions/RGBAColor.ts +36 -0
- package/src/engine-components/timeline/PlayableDirector.ts +485 -0
- package/src/engine-components/timeline/SignalAsset.ts +108 -0
- package/src/engine-components/timeline/TimelineModels.ts +91 -0
- package/src/engine-components/timeline/TimelineTracks.ts +627 -0
- package/src/engine-components/ui/BaseUIComponent.ts +153 -0
- package/src/engine-components/ui/Button.ts +251 -0
- package/src/engine-components/ui/Canvas.ts +166 -0
- package/src/engine-components/ui/CanvasGroup.ts +47 -0
- package/src/engine-components/ui/EventSystem.ts +523 -0
- package/src/engine-components/ui/Graphic.ts +157 -0
- package/src/engine-components/ui/Image.ts +57 -0
- package/src/engine-components/ui/InputField.ts +235 -0
- package/src/engine-components/ui/Interfaces.ts +8 -0
- package/src/engine-components/ui/Keyboard.ts +203 -0
- package/src/engine-components/ui/Layout.ts +17 -0
- package/src/engine-components/ui/PointerEvents.ts +54 -0
- package/src/engine-components/ui/Raycaster.ts +47 -0
- package/src/engine-components/ui/RectTransform.ts +180 -0
- package/src/engine-components/ui/SpatialHtml.ts +63 -0
- package/src/engine-components/ui/Text.ts +634 -0
- package/src/engine-components/ui/Utils.ts +105 -0
- package/src/engine-components-experimental/Presentation.ts +13 -0
- package/src/engine-components-experimental/annotation/LineDrawer.ts +191 -0
- package/src/engine-components-experimental/annotation/LinesManager.ts +218 -0
- package/src/engine-components-experimental/networking/PlayerSync.ts +131 -0
- package/src/engine-schemes/COMPILE_SCHEMES.bat +4 -0
- package/src/engine-schemes/COMPILE_TS.bat +12 -0
- package/src/engine-schemes/schemes.ts +29 -0
- package/src/engine-schemes/synced-camera-model.ts +92 -0
- package/src/engine-schemes/synced-transform-model.ts +90 -0
- package/src/engine-schemes/syncedCamera.fbs +11 -0
- package/src/engine-schemes/transform.ts +50 -0
- package/src/engine-schemes/transforms.fbs +26 -0
- package/src/engine-schemes/vec.fbs +19 -0
- package/src/engine-schemes/vec2.ts +33 -0
- package/src/engine-schemes/vec3.ts +38 -0
- package/src/engine-schemes/vec4.ts +43 -0
- package/src/engine-schemes/vr-user-state-buffer.ts +138 -0
- package/src/engine-schemes/vrUserStateBuffer.fbs +17 -0
- package/src/needle-engine.ts +39 -0
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { GLTF } from "three/examples/jsm/loaders/GLTFLoader";
|
|
2
|
+
import { getParam } from "./engine_utils";
|
|
3
|
+
import { Object3D } from "three";
|
|
4
|
+
import { Context } from "./engine_setup";
|
|
5
|
+
import { isPersistentAsset } from "./extensions/NEEDLE_persistent_assets";
|
|
6
|
+
import { SourceIdentifier } from "./engine_gltf";
|
|
7
|
+
import { debugExtension } from "../engine/engine_default_parameters";
|
|
8
|
+
|
|
9
|
+
const debug = getParam("debugserializer");
|
|
10
|
+
|
|
11
|
+
export type Constructor<T> = { new(...args: any[]): T };
|
|
12
|
+
export declare type NodeToObjectMap = { [nodeId: string]: Object3D };
|
|
13
|
+
export declare type ObjectToNodeMap = { [uuid: string]: number };
|
|
14
|
+
|
|
15
|
+
// internal helper class that we can ask for registered type serializers
|
|
16
|
+
// register your own type by deriving from ITypeSerializer and calling helper.register
|
|
17
|
+
class SerializationHelper {
|
|
18
|
+
register(type: string, ser: ITypeSerializer) {
|
|
19
|
+
if (this.typeMap[type] !== undefined) {
|
|
20
|
+
if (this.typeMap[type] === ser) return;
|
|
21
|
+
console.warn("Type " + type + " is already registered", ser, this.typeMap[type]);
|
|
22
|
+
}
|
|
23
|
+
if (debug)
|
|
24
|
+
console.log("Register type serializer for " + type, ser);
|
|
25
|
+
this.typeMap[type] = ser;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
typeMap: { [type: string]: ITypeSerializer } = {};
|
|
29
|
+
|
|
30
|
+
getSerializer(type: string): ITypeSerializer | undefined {
|
|
31
|
+
if (!type) return undefined;
|
|
32
|
+
return this.typeMap[type];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getSerializerForConstructor(type: any, level: number = 0): ITypeSerializer | undefined {
|
|
36
|
+
if (level > 20) return undefined;
|
|
37
|
+
if (!type || !type.constructor) {
|
|
38
|
+
if (debug)
|
|
39
|
+
console.log("invalid type");
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const name = type.name ?? type.constructor?.name;
|
|
43
|
+
if (!name) {
|
|
44
|
+
if (debug)
|
|
45
|
+
console.log("invalid name", name);
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const res = this.getSerializer(name);
|
|
49
|
+
if (res !== undefined) {
|
|
50
|
+
if (debug)
|
|
51
|
+
console.log("FOUND " + name, type.name, type.constructor.name, res, this.typeMap);
|
|
52
|
+
return res;
|
|
53
|
+
}
|
|
54
|
+
let parent = Object.getPrototypeOf(type);
|
|
55
|
+
const hasPrototypeOrConstructor = parent.prototype || parent.constructor;
|
|
56
|
+
// console.log(name, type, parent);
|
|
57
|
+
if (!hasPrototypeOrConstructor) {
|
|
58
|
+
if (debug)
|
|
59
|
+
console.warn("No prototype for " + name, type, type.name, type.prototype, type.constructor.name);
|
|
60
|
+
// console.log(type.constructor);
|
|
61
|
+
// console.dir(type);
|
|
62
|
+
// console.log(Object.getPrototypeOf(type))
|
|
63
|
+
// console.dir(parent, Object.getPrototypeOf(type));
|
|
64
|
+
// if(level <= 0){
|
|
65
|
+
// const t = TypeStore.get(type.name);
|
|
66
|
+
// console.log(type['__proto__'].name);
|
|
67
|
+
// if(t) return this.getSerializerForConstructor(t, level + 1);
|
|
68
|
+
// }
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const prot = parent.prototype ?? parent.constructor;
|
|
72
|
+
if (prot !== type) {
|
|
73
|
+
const resultFromChildren = this.getSerializerForConstructor(prot, ++level);
|
|
74
|
+
if (resultFromChildren) {
|
|
75
|
+
if (debug)
|
|
76
|
+
console.log("FOUND " + prot.constructor.name, prot.name, prot, resultFromChildren);
|
|
77
|
+
// register sub type
|
|
78
|
+
const typeName = prot.name ?? prot.constructor.name;
|
|
79
|
+
if (typeName === "Function") {
|
|
80
|
+
console.error("Registering Function is not allowed, something went wrong", type, prot, resultFromChildren);
|
|
81
|
+
}
|
|
82
|
+
else
|
|
83
|
+
this.register(typeName, resultFromChildren);
|
|
84
|
+
}
|
|
85
|
+
return resultFromChildren;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const helper: SerializationHelper = new SerializationHelper();
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
export interface ITypeSerializer {
|
|
95
|
+
onSerialize(data: any, context: SerializationContext): any;
|
|
96
|
+
onDeserialize(data: any, context: SerializationContext): any;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* implement and call super(<type string or array>) with the type names this serializer can handle
|
|
103
|
+
* for example:
|
|
104
|
+
* class ColorSerializer extends TypeSerializer {
|
|
105
|
+
* constructor() {
|
|
106
|
+
* super("Color")
|
|
107
|
+
* }
|
|
108
|
+
* }
|
|
109
|
+
*/
|
|
110
|
+
export abstract class TypeSerializer implements ITypeSerializer {
|
|
111
|
+
|
|
112
|
+
// register<T>(c: Constructor<T> | Constructor<T>[])
|
|
113
|
+
// {
|
|
114
|
+
// if (Array.isArray(c)) {
|
|
115
|
+
// for (const t of c) {
|
|
116
|
+
// helper.register(t.name, this);
|
|
117
|
+
// }
|
|
118
|
+
// }
|
|
119
|
+
// else {
|
|
120
|
+
// helper.register(c.name, this);
|
|
121
|
+
// }
|
|
122
|
+
// }
|
|
123
|
+
|
|
124
|
+
constructor(type: Constructor<any> | Constructor<any>[]) {
|
|
125
|
+
if (Array.isArray(type)) {
|
|
126
|
+
for (const key of type)
|
|
127
|
+
helper.register(key.name, this);
|
|
128
|
+
}
|
|
129
|
+
else
|
|
130
|
+
helper.register(type.name, this);
|
|
131
|
+
}
|
|
132
|
+
abstract onSerialize(data: any, context: SerializationContext): any | void;
|
|
133
|
+
abstract onDeserialize(data: any, context: SerializationContext): any | void;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
export interface ITypeInformation {
|
|
140
|
+
type?: Constructor<any>;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
// passed to serializers
|
|
145
|
+
export class SerializationContext {
|
|
146
|
+
root: THREE.Object3D;
|
|
147
|
+
|
|
148
|
+
gltf?: GLTF;
|
|
149
|
+
gltfId?: SourceIdentifier;
|
|
150
|
+
object!: THREE.Object3D;
|
|
151
|
+
target?: object;
|
|
152
|
+
nodeId?: number;
|
|
153
|
+
nodeToObject?: NodeToObjectMap;
|
|
154
|
+
objectToNode?: ObjectToNodeMap;
|
|
155
|
+
context?: Context;
|
|
156
|
+
path?: string;
|
|
157
|
+
|
|
158
|
+
constructor(root: THREE.Object3D) {
|
|
159
|
+
this.root = root;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
export interface ISerializable {
|
|
165
|
+
$serializedTypes?: { [key: string]: Constructor<any> | ITypeInformation | null };
|
|
166
|
+
// onDeserialize?(context: SerializationContext): void;
|
|
167
|
+
// example:
|
|
168
|
+
/* $serializedTypes : {
|
|
169
|
+
|
|
170
|
+
// it can be a constructor
|
|
171
|
+
myFieldName: Vector3,
|
|
172
|
+
|
|
173
|
+
// it can be null if it is a primitve type
|
|
174
|
+
myFieldName: null,
|
|
175
|
+
|
|
176
|
+
// it can be an object containing a field type that has a constructor
|
|
177
|
+
// this is just so we have some flexibility later if we need superspecialcustom overrides
|
|
178
|
+
myFieldName : { type: THREE.Color },
|
|
179
|
+
}
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
onBeforeDeserialize?(data: any, context: SerializationContext): void | undefined | boolean;
|
|
183
|
+
onBeforeDeserializeMember?(key: string, data: any, context: SerializationContext): void | undefined | boolean;
|
|
184
|
+
onAfterDeserializeMember?(key: string, data: any, context: SerializationContext): void;
|
|
185
|
+
onAfterDeserialize?(data: any, context: SerializationContext): void;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
export function serializeObject(obj: ISerializable, context: SerializationContext): object | null {
|
|
190
|
+
const types = obj.$serializedTypes;
|
|
191
|
+
if (types === undefined) return null;
|
|
192
|
+
const res = {};
|
|
193
|
+
for (const key in types) {
|
|
194
|
+
let val = obj[key];
|
|
195
|
+
|
|
196
|
+
// if the object bein serialized is some type of object check if we have special handling registered for it
|
|
197
|
+
if (val !== undefined && val !== null && typeof val === "object") {
|
|
198
|
+
// get type name
|
|
199
|
+
// get registered serialization handler
|
|
200
|
+
const ser = helper.getSerializerForConstructor(val);
|
|
201
|
+
if (ser) {
|
|
202
|
+
// serialize data using that handler
|
|
203
|
+
res[key] = ser.onSerialize(val, context);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
res[key] = val;
|
|
208
|
+
}
|
|
209
|
+
// name is the component type
|
|
210
|
+
res["name"] = obj.constructor.name;
|
|
211
|
+
// serialize guid
|
|
212
|
+
if (typeof obj["guid"] === "string")
|
|
213
|
+
res["guid"] = obj["guid"];
|
|
214
|
+
return res;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
const buffer: Array<any> = [];
|
|
219
|
+
|
|
220
|
+
function collectSerializedTypesInBaseTypes(obj: ISerializable, typeInfoObject?: object): object | undefined {
|
|
221
|
+
if (!obj) return typeInfoObject;
|
|
222
|
+
if (typeof obj.$serializedTypes === "object") {
|
|
223
|
+
if (!typeInfoObject) typeInfoObject = {};
|
|
224
|
+
Object.assign(typeInfoObject, obj.$serializedTypes);
|
|
225
|
+
}
|
|
226
|
+
const parentTarget = Object.getPrototypeOf(obj);
|
|
227
|
+
return collectSerializedTypesInBaseTypes(parentTarget, typeInfoObject);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function deserializeObject(obj: ISerializable, serializedData: object, context: SerializationContext): boolean {
|
|
231
|
+
if (!obj) return false;
|
|
232
|
+
|
|
233
|
+
context.target = obj;
|
|
234
|
+
|
|
235
|
+
if (obj.onBeforeDeserialize !== undefined) {
|
|
236
|
+
const res = obj.onBeforeDeserialize(serializedData, context);
|
|
237
|
+
if (typeof res === "boolean") return res;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// const typeInfo = obj.$serializedTypes;
|
|
241
|
+
const typeInfo = collectSerializedTypesInBaseTypes(obj);
|
|
242
|
+
if (serializedData) {
|
|
243
|
+
// restore guid (see serializeObject)
|
|
244
|
+
if (typeof serializedData["guid"] === "string")
|
|
245
|
+
obj["guid"] = serializedData["guid"];
|
|
246
|
+
|
|
247
|
+
if (typeInfo) {
|
|
248
|
+
for (const key in typeInfo) {
|
|
249
|
+
const serializedEntryInfo = typeInfo[key];
|
|
250
|
+
const data = serializedData[key];
|
|
251
|
+
context.path = key;
|
|
252
|
+
|
|
253
|
+
if (serializedEntryInfo === null) {
|
|
254
|
+
obj[key] = data;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
|
|
258
|
+
if (obj.onBeforeDeserializeMember !== undefined) {
|
|
259
|
+
// callback to the instance, if it returns true assume it's done all the things itself
|
|
260
|
+
if (obj.onBeforeDeserializeMember(key, data, context) === true) continue;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (Array.isArray(serializedEntryInfo)) {
|
|
264
|
+
for (let i = 0; i < serializedEntryInfo.length; i++) {
|
|
265
|
+
const typeInfoOrConstructor = serializedEntryInfo[i];
|
|
266
|
+
const res = tryResolve(typeInfoOrConstructor);
|
|
267
|
+
if (res !== undefined || i === serializedEntryInfo.length - 1) {
|
|
268
|
+
obj[key] = res;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
obj[key] = tryResolve(serializedEntryInfo);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
function tryResolve(typeInfoOrConstructor) {
|
|
278
|
+
const typeInformationOrConstructor = typeInfoOrConstructor as ITypeInformation;
|
|
279
|
+
// if the entry does specify an object of type ITypeInformation and has the type field set
|
|
280
|
+
const type = typeInformationOrConstructor.type;
|
|
281
|
+
if (type) {
|
|
282
|
+
return deserializeObjectWithType(data, type, context, undefined, obj[key]);
|
|
283
|
+
}
|
|
284
|
+
// it can also just contain a constructor
|
|
285
|
+
else {
|
|
286
|
+
const constructor = typeInfoOrConstructor as Constructor<any>;
|
|
287
|
+
return deserializeObjectWithType(data, constructor, context, undefined, obj[key]);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
buffer.length = 0;
|
|
292
|
+
|
|
293
|
+
if (obj.onAfterDeserializeMember !== undefined) {
|
|
294
|
+
obj.onAfterDeserializeMember(key, data, context);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// ***
|
|
301
|
+
// the code below could be used to implictly assign serialized data if they are primitive types
|
|
302
|
+
// if we decide not to do this we always have to write out all the $serializedTypes
|
|
303
|
+
// ***
|
|
304
|
+
implictlyAssignPrimitiveTypes(obj, serializedData);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (obj.onAfterDeserialize !== undefined) {
|
|
308
|
+
obj.onAfterDeserialize(serializedData, context);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
context.path = undefined;
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function implictlyAssignPrimitiveTypes(obj: any, serializedData: any) {
|
|
316
|
+
// implictly assign serialized primitive fields
|
|
317
|
+
for (const key of Object.keys(serializedData)) {
|
|
318
|
+
const data = serializedData[key];
|
|
319
|
+
if (typeof data === "object" && data !== null && data !== undefined) {
|
|
320
|
+
const member = obj[key];
|
|
321
|
+
if (!member) {
|
|
322
|
+
if (debug)
|
|
323
|
+
console.log(key, "is undefined on", obj);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
for (const key of Object.keys(data)) {
|
|
327
|
+
const targetMember = member[key];
|
|
328
|
+
// implictly assign number, string, boolean if they are undefined
|
|
329
|
+
if (targetMember !== undefined) continue;
|
|
330
|
+
// resolve serialized primitive types
|
|
331
|
+
if (isPrimitiveType(data[key]) && !isPrimitiveType(member)) {
|
|
332
|
+
// console.log("ASSIGN", key, member, member[key], targetMember, data[key]);
|
|
333
|
+
member[key] = data[key];
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
function isPrimitiveType(val): boolean {
|
|
340
|
+
switch (typeof val) {
|
|
341
|
+
case "number":
|
|
342
|
+
case "string":
|
|
343
|
+
case "boolean":
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// this is a wrapper for the cached serializer
|
|
351
|
+
// we use this to avoid trying to retrieve a serializer for a type multiple times
|
|
352
|
+
// e.g. when a type is actually an array of types
|
|
353
|
+
declare type TypeDeserializeReference = {
|
|
354
|
+
serializer?: ITypeSerializer
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
function deserializeObjectWithType(data: any, typeOrConstructor: Constructor<any>, context: SerializationContext, typeContext?: TypeDeserializeReference, currentValue?: any): any {
|
|
358
|
+
|
|
359
|
+
// e.g. @serializable((data) => { })
|
|
360
|
+
let typeIsFunction = typeof typeOrConstructor === "function" && (typeOrConstructor.prototype === undefined);
|
|
361
|
+
let type = typeOrConstructor;
|
|
362
|
+
if (typeIsFunction) {
|
|
363
|
+
// it's possible to assign a function to serializable to dynamically say which type we expect
|
|
364
|
+
// e.g. if you have an array of types and you want the array to be resolved with different class instances
|
|
365
|
+
try {
|
|
366
|
+
const resolvedType = (typeOrConstructor as any)?.call(typeOrConstructor, currentValue);
|
|
367
|
+
type = resolvedType;
|
|
368
|
+
typeIsFunction = false;
|
|
369
|
+
if (type === null || type === undefined) return;
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
console.error("Error in callback", err, data);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// e.g. when @serializable(Texture) and the texture is already resolved via json pointer from gltf
|
|
377
|
+
// then we dont need to do anything else
|
|
378
|
+
if (!typeIsFunction && currentValue instanceof type) return currentValue;
|
|
379
|
+
|
|
380
|
+
// if the value was already resolved via the persistent asset extension dont try to override that again
|
|
381
|
+
if (currentValue && typeof currentValue === "object" && isPersistentAsset(currentValue)) {
|
|
382
|
+
// if the persistent asset was already resolved to a concrete instance we dont need to do anything anymore
|
|
383
|
+
if (currentValue["__concreteInstance"]) {
|
|
384
|
+
return currentValue["__concreteInstance"];
|
|
385
|
+
}
|
|
386
|
+
const serializeableInstance = currentValue as ISerializable;
|
|
387
|
+
if (!serializeableInstance.$serializedTypes && type.prototype.$serializedTypes)
|
|
388
|
+
serializeableInstance.$serializedTypes = type.prototype.$serializedTypes;
|
|
389
|
+
if (serializeableInstance.$serializedTypes) {
|
|
390
|
+
deserializeObject(serializeableInstance, data, context);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
if (currentValue && type !== undefined) {
|
|
394
|
+
try {
|
|
395
|
+
// we create a concrete instance for a persistent asset here
|
|
396
|
+
// hence we want to have the same instance across all usages of this asset
|
|
397
|
+
const instance = new type();
|
|
398
|
+
if (debugExtension)
|
|
399
|
+
console.log("Create concrete instance for persistent asset", currentValue, "instance:", instance);
|
|
400
|
+
assign(instance, currentValue);
|
|
401
|
+
// save it so if another component references the same persistent asset it will automatically use the concrete instance
|
|
402
|
+
currentValue["__concreteInstance"] = instance;
|
|
403
|
+
currentValue = instance;
|
|
404
|
+
}
|
|
405
|
+
catch (err) {
|
|
406
|
+
console.error("Error creating instance or creating values on instance", err, currentValue, type);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return currentValue;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// try to resolve the serializer for a type only once
|
|
413
|
+
if (!typeContext) {
|
|
414
|
+
typeContext = {
|
|
415
|
+
serializer: helper.getSerializerForConstructor(type)
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// if the type is an array resolve each entries recursively
|
|
420
|
+
if (Array.isArray(data)) {
|
|
421
|
+
const newArr: any[] = [];
|
|
422
|
+
for (let i = 0; i < data.length; i++) {
|
|
423
|
+
const obj = data[i];
|
|
424
|
+
// debugger;
|
|
425
|
+
const res = deserializeObjectWithType(obj, typeOrConstructor, context, typeContext, obj)
|
|
426
|
+
newArr.push(res);
|
|
427
|
+
}
|
|
428
|
+
// return value;
|
|
429
|
+
return newArr;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const ser = typeContext.serializer;
|
|
433
|
+
if (ser) {
|
|
434
|
+
return ser.onDeserialize(data, context);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// console.log(type.prototype.get("$serializedTypes"));
|
|
438
|
+
|
|
439
|
+
let instance: any = undefined;
|
|
440
|
+
if (data && (data.isMaterial || data.isTexture || data.isObject3D)) {
|
|
441
|
+
// if the data is already a threejs object we dont want to create a new instance
|
|
442
|
+
// e.g. if we have a serialized class with a serializeable(Material)
|
|
443
|
+
instance = data;
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
// the fallback - this assumes that the type has a constructor that accepts the serialized arguments
|
|
447
|
+
// made originally with THREE.Vector3 in mind but SHOULD actually not be used/called anymore
|
|
448
|
+
instance = new type(...setBuffer(data));
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// recurse if the deserialized member also implements ISerializeable
|
|
452
|
+
const serializeableInstance = instance as ISerializable;
|
|
453
|
+
if (serializeableInstance.$serializedTypes) {
|
|
454
|
+
deserializeObject(serializeableInstance, data, context);
|
|
455
|
+
}
|
|
456
|
+
return instance;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
function setBuffer(value): Array<any> {
|
|
460
|
+
buffer.length = 0;
|
|
461
|
+
if (typeof value === "object" && value !== null && value !== undefined) {
|
|
462
|
+
for (const key of Object.keys(value)) {
|
|
463
|
+
buffer.push(value[key]);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
return buffer;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
// const developmentMode = getParam("dev")
|
|
471
|
+
|
|
472
|
+
/** Object.assign behaviour but check if property is writeable (e.g. getter only properties are skipped) */
|
|
473
|
+
export function assign(target: any, source: any) {
|
|
474
|
+
if (source === undefined || source === null) return;
|
|
475
|
+
if (target === undefined || target === null) return;
|
|
476
|
+
|
|
477
|
+
let onlyDeclared = false;
|
|
478
|
+
// if (onlyDeclared === true && target.constructor) {
|
|
479
|
+
// if (target.constructor[ALL_PROPERTIES_MARKER] === true)
|
|
480
|
+
// onlyDeclared = false;
|
|
481
|
+
// }
|
|
482
|
+
|
|
483
|
+
// if (onlyDeclared !== true && target.constructor) {
|
|
484
|
+
// if (target.constructor[STRICT_MARKER] === true)
|
|
485
|
+
// onlyDeclared = true;
|
|
486
|
+
// }
|
|
487
|
+
|
|
488
|
+
// if (onlyDeclared === undefined)
|
|
489
|
+
// onlyDeclared = true;
|
|
490
|
+
|
|
491
|
+
// if (developmentMode)
|
|
492
|
+
// onlyDeclared = false;
|
|
493
|
+
|
|
494
|
+
for (const key of Object.keys(source)) {
|
|
495
|
+
const desc = getPropertyDescriptor(target, key);
|
|
496
|
+
if (onlyDeclared && desc === undefined) continue;
|
|
497
|
+
if (!desc || desc.writable === true) {
|
|
498
|
+
target[key] = source[key];
|
|
499
|
+
}
|
|
500
|
+
else if (desc?.set !== undefined) {
|
|
501
|
+
target[key] = source[key];
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// we need to recurse because the property might be defined in a base class
|
|
507
|
+
function getPropertyDescriptor(obj: any, prop: string): PropertyDescriptor | undefined {
|
|
508
|
+
let desc;
|
|
509
|
+
do {
|
|
510
|
+
desc = Object.getOwnPropertyDescriptor(obj, prop);
|
|
511
|
+
} while (!desc && (obj = Object.getPrototypeOf(obj)));
|
|
512
|
+
return desc;
|
|
513
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Constructor } from "../engine-components/Component"
|
|
2
|
+
|
|
3
|
+
export declare type TypeResolver<T> = (data) => Constructor<T> | null;
|
|
4
|
+
|
|
5
|
+
export const serializeable = function <T>(type?: Constructor<T> | null | Array<Constructor<any> | TypeResolver<T>> | TypeResolver<T>) {
|
|
6
|
+
if (type === undefined) type = null;
|
|
7
|
+
// for primitive types the serialization handles it without the constructor and just assigns the value
|
|
8
|
+
// if the user still passes in a primitive type constructor we can just throw it away :)
|
|
9
|
+
if (!Array.isArray(type)) {
|
|
10
|
+
type = setNullForPrimitiveTypes(type);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
for (let i = 0; i < type.length; i++) {
|
|
14
|
+
const entry = type[i];
|
|
15
|
+
type[i] = setNullForPrimitiveTypes(entry);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return function (_target: any, _propertyKey: string) {
|
|
20
|
+
// this is important so objects with inheritance dont override their serialized type
|
|
21
|
+
// info if e.g. multiple classes inheriting from the same type implement a member with the same name
|
|
22
|
+
// and both use @serializable() with different types
|
|
23
|
+
if (!Object.getOwnPropertyDescriptor(_target, '$serializedTypes'))
|
|
24
|
+
_target["$serializedTypes"] = {};
|
|
25
|
+
const types = _target["$serializedTypes"] = _target["$serializedTypes"] || {}
|
|
26
|
+
types[_propertyKey] = type;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function setNullForPrimitiveTypes(type) {
|
|
31
|
+
switch (type?.prototype?.constructor?.name) {
|
|
32
|
+
case "Number":
|
|
33
|
+
case "String":
|
|
34
|
+
case "Boolean":
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return type;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
export const ALL_PROPERTIES_MARKER = "__NEEDLE__ALL_PROPERTIES";
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/** @deprecated current not used */
|
|
45
|
+
export function allProperties(constructor: Function) {
|
|
46
|
+
constructor[ALL_PROPERTIES_MARKER] = true;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
export const STRICT_MARKER = "__NEEDLE__STRICT";
|
|
51
|
+
|
|
52
|
+
/** @deprecated current not used */
|
|
53
|
+
export function strict(constructor: Function) {
|
|
54
|
+
constructor[STRICT_MARKER] = true;
|
|
55
|
+
}
|