@needle-tools/engine 4.12.5 → 4.13.0-next.1eca7a7
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 +5 -0
- package/README.md +38 -1
- package/components.needle.json +1 -1
- package/custom-elements.json +156 -5
- package/dist/{gltf-progressive-BqUnxvCx.umd.cjs → gltf-progressive-BURrJW0U.umd.cjs} +1 -1
- package/dist/{gltf-progressive-CSaX5HQb.min.js → gltf-progressive-DHLDFNvQ.min.js} +1 -1
- package/dist/{gltf-progressive-ChnIhDXx.js → gltf-progressive-eiJCrjLb.js} +3 -3
- package/dist/materialx-B9ddsHcF.min.js +90 -0
- package/dist/materialx-BF23AVE8.umd.cjs +90 -0
- package/dist/materialx-fkoFuRh3.js +4636 -0
- package/dist/{needle-engine.bundle-Cnemui9H.umd.cjs → needle-engine.bundle-BfrDWglE.umd.cjs} +124 -124
- package/dist/{needle-engine.bundle-B_IGIr6Z.min.js → needle-engine.bundle-Bx_Lq_3v.min.js} +131 -131
- package/dist/{needle-engine.bundle-Cj66livk.js → needle-engine.bundle-MQyZGnMF.js} +3754 -3374
- package/dist/needle-engine.d.ts +2791 -309
- package/dist/needle-engine.js +415 -414
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-12-UW7je.min.js → postprocessing-BVNrgYZK.min.js} +1 -1
- package/dist/{postprocessing-B3Hu0Ryi.umd.cjs → postprocessing-CI2TjWpu.umd.cjs} +1 -1
- package/dist/{postprocessing-R535krvT.js → postprocessing-DdM-tz1j.js} +2 -2
- package/dist/{three-BzxwLtUE.umd.cjs → three-BW2s1Yl-.umd.cjs} +25 -25
- package/dist/{three-DMvLgxja.min.js → three-I__hSXzr.min.js} +26 -26
- package/dist/{three-D9pcFbxc.js → three-VvRoMeIN.js} +22 -0
- package/dist/{three-examples-F0MJj0vr.js → three-examples-BhfOE7NG.js} +1 -1
- package/dist/{three-examples-CjSwCv_b.umd.cjs → three-examples-Bpfu6ke_.umd.cjs} +1 -1
- package/dist/{three-examples-CIv2roOA.min.js → three-examples-D8zAE_7t.min.js} +1 -1
- package/dist/{three-mesh-ui-BLnJQzMl.umd.cjs → three-mesh-ui-BU55xDxJ.umd.cjs} +1 -1
- package/dist/{three-mesh-ui-BllgajJz.min.js → three-mesh-ui-C3QbemOV.min.js} +1 -1
- package/dist/{three-mesh-ui-DYyiRn5Y.js → three-mesh-ui-CcMp-FQm.js} +1 -1
- package/dist/{vendor-BIFy-gRe.js → vendor-BiyIZ61v.js} +1 -1
- package/dist/{vendor-BFgQSG2m.umd.cjs → vendor-COVQl0b8.umd.cjs} +1 -1
- package/dist/{vendor-ChgmXMYr.min.js → vendor-DW7zqjuT.min.js} +1 -1
- package/lib/engine/engine_context.d.ts +16 -0
- package/lib/engine/engine_context.js +16 -0
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_gameobject.d.ts +72 -0
- package/lib/engine/engine_gameobject.js +38 -0
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_input.d.ts +80 -4
- package/lib/engine/engine_input.js +78 -2
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_loaders.js +7 -1
- package/lib/engine/engine_loaders.js.map +1 -1
- package/lib/engine/engine_math.d.ts +81 -2
- package/lib/engine/engine_math.js +68 -2
- package/lib/engine/engine_math.js.map +1 -1
- package/lib/engine/engine_modules.d.ts +9 -0
- package/lib/engine/engine_modules.js +25 -0
- package/lib/engine/engine_modules.js.map +1 -1
- package/lib/engine/engine_networking.d.ts +181 -14
- package/lib/engine/engine_networking.js +181 -14
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_networking_auto.d.ts +35 -8
- package/lib/engine/engine_networking_auto.js +35 -8
- package/lib/engine/engine_networking_auto.js.map +1 -1
- package/lib/engine/engine_physics.d.ts +35 -1
- package/lib/engine/engine_physics.js +35 -1
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics_rapier.d.ts +76 -0
- package/lib/engine/engine_physics_rapier.js +76 -0
- package/lib/engine/engine_physics_rapier.js.map +1 -1
- package/lib/engine/engine_serialization_decorator.d.ts +28 -2
- package/lib/engine/engine_serialization_decorator.js +28 -2
- package/lib/engine/engine_serialization_decorator.js.map +1 -1
- package/lib/engine/engine_time.d.ts +23 -3
- package/lib/engine/engine_time.js +23 -3
- package/lib/engine/engine_time.js.map +1 -1
- package/lib/engine/engine_util_decorator.d.ts +31 -1
- package/lib/engine/engine_util_decorator.js +31 -1
- package/lib/engine/engine_util_decorator.js.map +1 -1
- package/lib/engine/engine_utils.d.ts +21 -5
- package/lib/engine/engine_utils.js +21 -5
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/engine_utils_format.d.ts +1 -1
- package/lib/engine/engine_utils_format.js +4 -1
- package/lib/engine/engine_utils_format.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_materialx.d.ts +29 -0
- package/lib/engine/extensions/NEEDLE_materialx.js +115 -0
- package/lib/engine/extensions/NEEDLE_materialx.js.map +1 -0
- package/lib/engine/extensions/extensions.js +2 -0
- package/lib/engine/extensions/extensions.js.map +1 -1
- package/lib/engine/extensions/index.d.ts +1 -0
- package/lib/engine/extensions/index.js +1 -0
- package/lib/engine/extensions/index.js.map +1 -1
- package/lib/engine-components/AlignmentConstraint.d.ts +23 -3
- package/lib/engine-components/AlignmentConstraint.js +23 -3
- package/lib/engine-components/AlignmentConstraint.js.map +1 -1
- package/lib/engine-components/Animation.d.ts +42 -0
- package/lib/engine-components/Animation.js +36 -0
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/Animator.d.ts +37 -4
- package/lib/engine-components/Animator.js +37 -4
- package/lib/engine-components/Animator.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +32 -10
- package/lib/engine-components/AudioSource.js +32 -10
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/AxesHelper.d.ts +22 -3
- package/lib/engine-components/AxesHelper.js +22 -3
- package/lib/engine-components/AxesHelper.js.map +1 -1
- package/lib/engine-components/BasicIKConstraint.d.ts +27 -4
- package/lib/engine-components/BasicIKConstraint.js +27 -4
- package/lib/engine-components/BasicIKConstraint.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +31 -1
- package/lib/engine-components/Camera.js +31 -1
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CharacterController.d.ts +67 -3
- package/lib/engine-components/CharacterController.js +67 -3
- package/lib/engine-components/CharacterController.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +69 -12
- package/lib/engine-components/Collider.js +69 -12
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/ContactShadows.d.ts +26 -6
- package/lib/engine-components/ContactShadows.js +46 -8
- package/lib/engine-components/ContactShadows.js.map +1 -1
- package/lib/engine-components/DeleteBox.d.ts +43 -2
- package/lib/engine-components/DeleteBox.js +43 -2
- package/lib/engine-components/DeleteBox.js.map +1 -1
- package/lib/engine-components/DeviceFlag.d.ts +21 -2
- package/lib/engine-components/DeviceFlag.js +21 -2
- package/lib/engine-components/DeviceFlag.js.map +1 -1
- package/lib/engine-components/DragControls.d.ts +32 -2
- package/lib/engine-components/DragControls.js +32 -2
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/DropListener.d.ts +33 -21
- package/lib/engine-components/DropListener.js +33 -21
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/Duplicatable.d.ts +36 -5
- package/lib/engine-components/Duplicatable.js +36 -5
- package/lib/engine-components/Duplicatable.js.map +1 -1
- package/lib/engine-components/EventList.d.ts +38 -10
- package/lib/engine-components/EventList.js +38 -10
- package/lib/engine-components/EventList.js.map +1 -1
- package/lib/engine-components/Fog.d.ts +23 -1
- package/lib/engine-components/Fog.js +23 -1
- package/lib/engine-components/Fog.js.map +1 -1
- package/lib/engine-components/GridHelper.d.ts +18 -2
- package/lib/engine-components/GridHelper.js +18 -2
- package/lib/engine-components/GridHelper.js.map +1 -1
- package/lib/engine-components/GroundProjection.d.ts +24 -2
- package/lib/engine-components/GroundProjection.js +24 -2
- package/lib/engine-components/GroundProjection.js.map +1 -1
- package/lib/engine-components/Interactable.d.ts +17 -2
- package/lib/engine-components/Interactable.js +17 -2
- package/lib/engine-components/Interactable.js.map +1 -1
- package/lib/engine-components/Joints.d.ts +50 -7
- package/lib/engine-components/Joints.js +50 -7
- package/lib/engine-components/Joints.js.map +1 -1
- package/lib/engine-components/LODGroup.d.ts +36 -14
- package/lib/engine-components/LODGroup.js +43 -11
- package/lib/engine-components/LODGroup.js.map +1 -1
- package/lib/engine-components/Light.d.ts +27 -5
- package/lib/engine-components/Light.js +27 -5
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/engine-components/LookAtConstraint.d.ts +22 -7
- package/lib/engine-components/LookAtConstraint.js +22 -7
- package/lib/engine-components/LookAtConstraint.js.map +1 -1
- package/lib/engine-components/NeedleMenu.d.ts +27 -5
- package/lib/engine-components/NeedleMenu.js +27 -5
- package/lib/engine-components/NeedleMenu.js.map +1 -1
- package/lib/engine-components/NestedGltf.d.ts +39 -4
- package/lib/engine-components/NestedGltf.js +42 -4
- package/lib/engine-components/NestedGltf.js.map +1 -1
- package/lib/engine-components/OffsetConstraint.d.ts +27 -3
- package/lib/engine-components/OffsetConstraint.js +27 -3
- package/lib/engine-components/OffsetConstraint.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +41 -3
- package/lib/engine-components/OrbitControls.js +41 -3
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.d.ts +17 -2
- package/lib/engine-components/ReflectionProbe.js +28 -10
- package/lib/engine-components/ReflectionProbe.js.map +1 -1
- package/lib/engine-components/Renderer.d.ts +34 -0
- package/lib/engine-components/Renderer.js +35 -2
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.d.ts +11 -0
- package/lib/engine-components/SceneSwitcher.js +11 -0
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/ScreenCapture.d.ts +38 -6
- package/lib/engine-components/ScreenCapture.js +38 -6
- package/lib/engine-components/ScreenCapture.js.map +1 -1
- package/lib/engine-components/Skybox.js +1 -1
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/SmoothFollow.d.ts +66 -7
- package/lib/engine-components/SmoothFollow.js +66 -7
- package/lib/engine-components/SmoothFollow.js.map +1 -1
- package/lib/engine-components/SpatialTrigger.d.ts +48 -1
- package/lib/engine-components/SpatialTrigger.js +48 -1
- package/lib/engine-components/SpatialTrigger.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.d.ts +21 -3
- package/lib/engine-components/SpectatorCamera.js +21 -3
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SyncedRoom.d.ts +6 -0
- package/lib/engine-components/SyncedRoom.js +6 -0
- package/lib/engine-components/SyncedRoom.js.map +1 -1
- package/lib/engine-components/SyncedTransform.d.ts +55 -6
- package/lib/engine-components/SyncedTransform.js +55 -6
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/TransformGizmo.d.ts +30 -3
- package/lib/engine-components/TransformGizmo.js +30 -3
- package/lib/engine-components/TransformGizmo.js.map +1 -1
- package/lib/engine-components/VideoPlayer.d.ts +33 -6
- package/lib/engine-components/VideoPlayer.js +45 -6
- package/lib/engine-components/VideoPlayer.js.map +1 -1
- package/lib/engine-components/Voip.d.ts +33 -2
- package/lib/engine-components/Voip.js +33 -2
- package/lib/engine-components/Voip.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +47 -13
- package/lib/engine-components/export/usdz/USDZExporter.js +47 -13
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/particlesystem/ParticleSystem.d.ts +82 -3
- package/lib/engine-components/particlesystem/ParticleSystem.js +82 -3
- package/lib/engine-components/particlesystem/ParticleSystem.js.map +1 -1
- package/lib/engine-components/timeline/PlayableDirector.d.ts +99 -14
- package/lib/engine-components/timeline/PlayableDirector.js +91 -25
- package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
- package/lib/engine-components/ui/Button.d.ts +29 -3
- package/lib/engine-components/ui/Button.js +29 -3
- package/lib/engine-components/ui/Button.js.map +1 -1
- package/lib/engine-components/ui/Canvas.d.ts +28 -3
- package/lib/engine-components/ui/Canvas.js +28 -3
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/Image.d.ts +22 -3
- package/lib/engine-components/ui/Image.js +22 -3
- package/lib/engine-components/ui/Image.js.map +1 -1
- package/lib/engine-components/ui/Raycaster.d.ts +55 -6
- package/lib/engine-components/ui/Raycaster.js +55 -6
- package/lib/engine-components/ui/Raycaster.js.map +1 -1
- package/lib/engine-components/ui/Text.d.ts +23 -1
- package/lib/engine-components/ui/Text.js +23 -1
- package/lib/engine-components/ui/Text.js.map +1 -1
- package/lib/engine-components/webxr/TeleportTarget.d.ts +21 -2
- package/lib/engine-components/webxr/TeleportTarget.js +21 -2
- package/lib/engine-components/webxr/TeleportTarget.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.d.ts +10 -2
- package/lib/engine-components/webxr/WebXR.js +10 -2
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/engine-components/webxr/WebXRAvatar.d.ts +39 -2
- package/lib/engine-components/webxr/WebXRAvatar.js +35 -3
- package/lib/engine-components/webxr/WebXRAvatar.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +266 -30
- package/lib/engine-components/webxr/WebXRImageTracking.js +266 -30
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/lib/engine-components/webxr/XRFlag.d.ts +29 -2
- package/lib/engine-components/webxr/XRFlag.js +29 -2
- package/lib/engine-components/webxr/XRFlag.js.map +1 -1
- package/package.json +3 -2
- package/plugins/vite/custom-element-data.js +128 -19
- package/plugins/vite/dependencies.js +9 -4
- package/plugins/vite/index.js +0 -2
- package/src/engine/engine_context.ts +16 -0
- package/src/engine/engine_gameobject.ts +73 -0
- package/src/engine/engine_input.ts +83 -7
- package/src/engine/engine_loaders.ts +9 -2
- package/src/engine/engine_math.ts +81 -2
- package/src/engine/engine_modules.ts +24 -0
- package/src/engine/engine_networking.ts +187 -17
- package/src/engine/engine_networking_auto.ts +36 -9
- package/src/engine/engine_physics.ts +37 -1
- package/src/engine/engine_physics_rapier.ts +77 -0
- package/src/engine/engine_serialization_decorator.ts +28 -2
- package/src/engine/engine_time.ts +23 -3
- package/src/engine/engine_util_decorator.ts +31 -1
- package/src/engine/engine_utils.ts +21 -5
- package/src/engine/engine_utils_format.ts +6 -2
- package/src/engine/extensions/NEEDLE_materialx.ts +143 -0
- package/src/engine/extensions/extensions.ts +2 -0
- package/src/engine/extensions/index.ts +1 -0
- package/src/engine-components/AlignmentConstraint.ts +24 -4
- package/src/engine-components/Animation.ts +44 -2
- package/src/engine-components/Animator.ts +40 -7
- package/src/engine-components/AudioSource.ts +37 -15
- package/src/engine-components/AxesHelper.ts +23 -4
- package/src/engine-components/BasicIKConstraint.ts +28 -5
- package/src/engine-components/Camera.ts +33 -3
- package/src/engine-components/CharacterController.ts +73 -6
- package/src/engine-components/Collider.ts +78 -21
- package/src/engine-components/ContactShadows.ts +51 -11
- package/src/engine-components/DeleteBox.ts +43 -2
- package/src/engine-components/DeviceFlag.ts +22 -3
- package/src/engine-components/DragControls.ts +32 -2
- package/src/engine-components/DropListener.ts +42 -29
- package/src/engine-components/Duplicatable.ts +37 -6
- package/src/engine-components/EventList.ts +41 -13
- package/src/engine-components/Fog.ts +23 -1
- package/src/engine-components/GridHelper.ts +18 -2
- package/src/engine-components/GroundProjection.ts +25 -3
- package/src/engine-components/Interactable.ts +17 -2
- package/src/engine-components/Joints.ts +51 -8
- package/src/engine-components/LODGroup.ts +45 -11
- package/src/engine-components/Light.ts +30 -8
- package/src/engine-components/LookAtConstraint.ts +26 -8
- package/src/engine-components/NeedleMenu.ts +29 -7
- package/src/engine-components/NestedGltf.ts +40 -4
- package/src/engine-components/OffsetConstraint.ts +27 -3
- package/src/engine-components/OrbitControls.ts +41 -3
- package/src/engine-components/ReflectionProbe.ts +31 -13
- package/src/engine-components/Renderer.ts +34 -1
- package/src/engine-components/SceneSwitcher.ts +11 -0
- package/src/engine-components/ScreenCapture.ts +41 -9
- package/src/engine-components/Skybox.ts +1 -1
- package/src/engine-components/SmoothFollow.ts +69 -7
- package/src/engine-components/SpatialTrigger.ts +51 -4
- package/src/engine-components/SpectatorCamera.ts +23 -5
- package/src/engine-components/SyncedRoom.ts +6 -0
- package/src/engine-components/SyncedTransform.ts +59 -10
- package/src/engine-components/TransformGizmo.ts +31 -4
- package/src/engine-components/VideoPlayer.ts +48 -6
- package/src/engine-components/Voip.ts +33 -2
- package/src/engine-components/export/usdz/USDZExporter.ts +47 -13
- package/src/engine-components/particlesystem/ParticleSystem.ts +84 -5
- package/src/engine-components/timeline/PlayableDirector.ts +104 -27
- package/src/engine-components/ui/Button.ts +29 -3
- package/src/engine-components/ui/Canvas.ts +28 -3
- package/src/engine-components/ui/Image.ts +22 -3
- package/src/engine-components/ui/Raycaster.ts +57 -8
- package/src/engine-components/ui/Text.ts +24 -2
- package/src/engine-components/webxr/TeleportTarget.ts +23 -4
- package/src/engine-components/webxr/WebXR.ts +11 -3
- package/src/engine-components/webxr/WebXRAvatar.ts +41 -4
- package/src/engine-components/webxr/WebXRImageTracking.ts +282 -38
- package/src/engine-components/webxr/XRFlag.ts +30 -3
- package/plugins/vite/materialx.js +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridHelper.js","sourceRoot":"","sources":["../../src/engine-components/GridHelper.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAuB,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9E,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"GridHelper.js","sourceRoot":"","sources":["../../src/engine-components/GridHelper.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAuB,UAAU,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9E,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,UAAW,SAAQ,SAAS;IAG9B,OAAO,GAAY,KAAK,CAAC;IAEhC,MAAM,CAA+B;IAErC,MAAM,CAA+B;IAE7B,UAAU,CAAsB;IAChC,IAAI,CAAU;IACd,SAAS,CAAU;IACnB,MAAM,CAAU;IAExB,gBAAgB;IAChB,QAAQ;QACJ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAE/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/H,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IAChB,SAAS;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;IACL,CAAC;CACJ;AAjCG;IADC,YAAY,EAAE;2CACiB;AAEhC;IADC,YAAY,CAAC,KAAK,CAAC;0CACiB;AAErC;IADC,YAAY,CAAC,KAAK,CAAC;0CACiB"}
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
import { Behaviour } from "./Component.js";
|
|
2
2
|
/**
|
|
3
|
-
* GroundProjectedEnv
|
|
3
|
+
* GroundProjectedEnv projects the environment map onto a virtual ground plane.
|
|
4
|
+
* Creates a realistic floor from 360° panoramas/HDRIs by deforming the skybox
|
|
5
|
+
* into a hemisphere with a beveled floor.
|
|
4
6
|
*
|
|
5
|
-
*
|
|
7
|
+
*
|
|
8
|
+
* [](https://engine.needle.tools/samples/ground-projection)
|
|
9
|
+
*
|
|
10
|
+
* **Key properties:**
|
|
11
|
+
* - `radius` - Size of the projection sphere (keep camera inside)
|
|
12
|
+
* - `height` - How high the original photo was taken (affects floor magnification)
|
|
13
|
+
* - `autoFit` - Automatically center and position at ground level
|
|
14
|
+
* - `arBlending` - Blend with real-world in AR (0=hidden, 1=visible)
|
|
15
|
+
*
|
|
16
|
+
* **Debug:** Use `?debuggroundprojection` URL parameter.
|
|
17
|
+
*
|
|
18
|
+
* @example Apply ground projection
|
|
19
|
+
* ```ts
|
|
20
|
+
* const ground = myObject.getComponent(GroundProjectedEnv);
|
|
21
|
+
* ground.radius = 100;
|
|
22
|
+
* ground.height = 2;
|
|
23
|
+
* ground.apply();
|
|
24
|
+
* ```
|
|
6
25
|
*
|
|
7
26
|
* @summary Projects the environment map onto the ground
|
|
8
27
|
* @category Rendering
|
|
9
28
|
* @group Components
|
|
29
|
+
* @see {@link Camera} for environment/skybox settings
|
|
30
|
+
* @see {@link ContactShadows} for ground shadows
|
|
31
|
+
* @link https://engine.needle.tools/samples/ground-projection for a demo of ground projection
|
|
10
32
|
*/
|
|
11
33
|
export declare class GroundProjectedEnv extends Behaviour {
|
|
12
34
|
/**
|
|
@@ -13,13 +13,35 @@ import { delayForFrames, getParam, Watch as Watch } from "../engine/engine_utils
|
|
|
13
13
|
import { Behaviour } from "./Component.js";
|
|
14
14
|
const debug = getParam("debuggroundprojection");
|
|
15
15
|
/**
|
|
16
|
-
* GroundProjectedEnv
|
|
16
|
+
* GroundProjectedEnv projects the environment map onto a virtual ground plane.
|
|
17
|
+
* Creates a realistic floor from 360° panoramas/HDRIs by deforming the skybox
|
|
18
|
+
* into a hemisphere with a beveled floor.
|
|
17
19
|
*
|
|
18
|
-
*
|
|
20
|
+
*
|
|
21
|
+
* [](https://engine.needle.tools/samples/ground-projection)
|
|
22
|
+
*
|
|
23
|
+
* **Key properties:**
|
|
24
|
+
* - `radius` - Size of the projection sphere (keep camera inside)
|
|
25
|
+
* - `height` - How high the original photo was taken (affects floor magnification)
|
|
26
|
+
* - `autoFit` - Automatically center and position at ground level
|
|
27
|
+
* - `arBlending` - Blend with real-world in AR (0=hidden, 1=visible)
|
|
28
|
+
*
|
|
29
|
+
* **Debug:** Use `?debuggroundprojection` URL parameter.
|
|
30
|
+
*
|
|
31
|
+
* @example Apply ground projection
|
|
32
|
+
* ```ts
|
|
33
|
+
* const ground = myObject.getComponent(GroundProjectedEnv);
|
|
34
|
+
* ground.radius = 100;
|
|
35
|
+
* ground.height = 2;
|
|
36
|
+
* ground.apply();
|
|
37
|
+
* ```
|
|
19
38
|
*
|
|
20
39
|
* @summary Projects the environment map onto the ground
|
|
21
40
|
* @category Rendering
|
|
22
41
|
* @group Components
|
|
42
|
+
* @see {@link Camera} for environment/skybox settings
|
|
43
|
+
* @see {@link ContactShadows} for ground shadows
|
|
44
|
+
* @link https://engine.needle.tools/samples/ground-projection for a demo of ground projection
|
|
23
45
|
*/
|
|
24
46
|
export class GroundProjectedEnv extends Behaviour {
|
|
25
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroundProjection.js","sourceRoot":"","sources":["../../src/engine-components/GroundProjection.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAElG,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,iCAAiC,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC9J,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"GroundProjection.js","sourceRoot":"","sources":["../../src/engine-components/GroundProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { Behaviour } from "./Component.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* UsageMarker indicates an object is currently being interacted with.
|
|
4
|
+
* Components like {@link DragControls} add this to prevent accidental deletion
|
|
5
|
+
* by {@link DeleteBox} while the user is dragging.
|
|
6
|
+
*
|
|
7
|
+
* @example Check if object is in use
|
|
8
|
+
* ```ts
|
|
9
|
+
* const marker = object.getComponent(UsageMarker);
|
|
10
|
+
* if (marker?.isUsed) {
|
|
11
|
+
* console.log("Object is being used by:", marker.usedBy);
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @summary Marks object as currently being interacted with
|
|
16
|
+
* @category Interactivity
|
|
17
|
+
* @group Components
|
|
18
|
+
* @see {@link DeleteBox} respects this marker
|
|
19
|
+
* @see {@link DragControls} adds this during drag
|
|
5
20
|
*/
|
|
6
21
|
export declare class UsageMarker extends Behaviour {
|
|
7
22
|
isUsed: boolean;
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { Behaviour } from "./Component.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* UsageMarker indicates an object is currently being interacted with.
|
|
4
|
+
* Components like {@link DragControls} add this to prevent accidental deletion
|
|
5
|
+
* by {@link DeleteBox} while the user is dragging.
|
|
6
|
+
*
|
|
7
|
+
* @example Check if object is in use
|
|
8
|
+
* ```ts
|
|
9
|
+
* const marker = object.getComponent(UsageMarker);
|
|
10
|
+
* if (marker?.isUsed) {
|
|
11
|
+
* console.log("Object is being used by:", marker.usedBy);
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @summary Marks object as currently being interacted with
|
|
16
|
+
* @category Interactivity
|
|
17
|
+
* @group Components
|
|
18
|
+
* @see {@link DeleteBox} respects this marker
|
|
19
|
+
* @see {@link DragControls} adds this during drag
|
|
5
20
|
*/
|
|
6
21
|
export class UsageMarker extends Behaviour {
|
|
7
22
|
isUsed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interactable.js","sourceRoot":"","sources":["../../src/engine-components/Interactable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"Interactable.js","sourceRoot":"","sources":["../../src/engine-components/Interactable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAE/B,MAAM,GAAY,IAAI,CAAC;IACvB,MAAM,GAAQ,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,kBAAkB;AAClB,MAAM,OAAO,YAAa,SAAQ,SAAS;CAAG"}
|
|
@@ -2,12 +2,22 @@ import { Vector3 } from "three";
|
|
|
2
2
|
import { Behaviour } from "./Component.js";
|
|
3
3
|
import { Rigidbody } from "./RigidBody.js";
|
|
4
4
|
/**
|
|
5
|
-
* Base class for physics joints
|
|
6
|
-
*
|
|
5
|
+
* Base class for physics joints that connect two {@link Rigidbody} components.
|
|
6
|
+
* Joints constrain how two bodies can move relative to each other.
|
|
7
|
+
*
|
|
8
|
+
* The joint is created between:
|
|
9
|
+
* - The {@link Rigidbody} on this GameObject (automatically found)
|
|
10
|
+
* - The {@link connectedBody} Rigidbody you specify
|
|
11
|
+
*
|
|
12
|
+
* @summary Connect two Rigidbodies with physics constraints
|
|
7
13
|
* @category Physics
|
|
8
14
|
* @group Components
|
|
15
|
+
* @see {@link FixedJoint} for rigid connections
|
|
16
|
+
* @see {@link HingeJoint} for rotating connections
|
|
17
|
+
* @see {@link Rigidbody} for physics bodies
|
|
9
18
|
*/
|
|
10
19
|
export declare abstract class Joint extends Behaviour {
|
|
20
|
+
/** The other Rigidbody to connect to */
|
|
11
21
|
connectedBody?: Rigidbody;
|
|
12
22
|
get rigidBody(): Rigidbody | null;
|
|
13
23
|
private _rigidBody;
|
|
@@ -16,24 +26,57 @@ export declare abstract class Joint extends Behaviour {
|
|
|
16
26
|
protected abstract createJoint(self: Rigidbody, other: Rigidbody): any;
|
|
17
27
|
}
|
|
18
28
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
29
|
+
* FixedJoint locks two {@link Rigidbody} components together, making them move as one rigid unit.
|
|
30
|
+
* The bodies maintain their relative position and rotation at the time the joint is created.
|
|
31
|
+
*
|
|
32
|
+
* Use this for:
|
|
33
|
+
* - Attaching objects together permanently
|
|
34
|
+
* - Creating compound rigid bodies
|
|
35
|
+
* - Welding broken pieces back together
|
|
36
|
+
*
|
|
37
|
+
* @example Attach a weapon to a character
|
|
38
|
+
* ```ts
|
|
39
|
+
* const joint = weapon.addComponent(FixedJoint);
|
|
40
|
+
* joint.connectedBody = characterRigidbody;
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @summary Lock two Rigidbodies together rigidly
|
|
21
44
|
* @category Physics
|
|
22
45
|
* @group Components
|
|
46
|
+
* @see {@link Joint} base class
|
|
47
|
+
* @see {@link HingeJoint} for rotating connections
|
|
23
48
|
*/
|
|
24
49
|
export declare class FixedJoint extends Joint {
|
|
25
50
|
protected createJoint(self: Rigidbody, other: Rigidbody): void;
|
|
26
51
|
}
|
|
27
52
|
/**
|
|
28
|
-
*
|
|
53
|
+
* HingeJoint connects two {@link Rigidbody} components with a rotating constraint,
|
|
54
|
+
* like a door hinge or wheel axle. Bodies can only rotate around the specified axis.
|
|
55
|
+
*
|
|
56
|
+
* Use this for:
|
|
57
|
+
* - Doors and gates
|
|
58
|
+
* - Wheels and axles
|
|
59
|
+
* - Pendulums
|
|
60
|
+
* - Any rotating mechanical connection
|
|
61
|
+
*
|
|
62
|
+
* @example Create a door hinge
|
|
63
|
+
* ```ts
|
|
64
|
+
* const hinge = door.addComponent(HingeJoint);
|
|
65
|
+
* hinge.connectedBody = doorFrameRigidbody;
|
|
66
|
+
* hinge.anchor = new Vector3(0, 0, 0); // Hinge position
|
|
67
|
+
* hinge.axis = new Vector3(0, 1, 0); // Rotate around Y axis
|
|
68
|
+
* ```
|
|
29
69
|
*
|
|
30
|
-
*
|
|
31
|
-
* @summary Connect two Rigidbodies with a hinge
|
|
70
|
+
* @summary Connect two Rigidbodies with a rotating hinge
|
|
32
71
|
* @category Physics
|
|
33
72
|
* @group Components
|
|
73
|
+
* @see {@link Joint} base class
|
|
74
|
+
* @see {@link FixedJoint} for rigid connections
|
|
34
75
|
*/
|
|
35
76
|
export declare class HingeJoint extends Joint {
|
|
77
|
+
/** Local position of the hinge pivot point */
|
|
36
78
|
anchor?: Vector3;
|
|
79
|
+
/** Axis of rotation for the hinge (e.g., Vector3(0,1,0) for vertical axis) */
|
|
37
80
|
axis?: Vector3;
|
|
38
81
|
protected createJoint(self: Rigidbody, other: Rigidbody): void;
|
|
39
82
|
}
|
|
@@ -9,12 +9,22 @@ import { serializable } from "../engine/engine_serialization.js";
|
|
|
9
9
|
import { Behaviour } from "./Component.js";
|
|
10
10
|
import { Rigidbody } from "./RigidBody.js";
|
|
11
11
|
/**
|
|
12
|
-
* Base class for physics joints
|
|
13
|
-
*
|
|
12
|
+
* Base class for physics joints that connect two {@link Rigidbody} components.
|
|
13
|
+
* Joints constrain how two bodies can move relative to each other.
|
|
14
|
+
*
|
|
15
|
+
* The joint is created between:
|
|
16
|
+
* - The {@link Rigidbody} on this GameObject (automatically found)
|
|
17
|
+
* - The {@link connectedBody} Rigidbody you specify
|
|
18
|
+
*
|
|
19
|
+
* @summary Connect two Rigidbodies with physics constraints
|
|
14
20
|
* @category Physics
|
|
15
21
|
* @group Components
|
|
22
|
+
* @see {@link FixedJoint} for rigid connections
|
|
23
|
+
* @see {@link HingeJoint} for rotating connections
|
|
24
|
+
* @see {@link Rigidbody} for physics bodies
|
|
16
25
|
*/
|
|
17
26
|
export class Joint extends Behaviour {
|
|
27
|
+
/** The other Rigidbody to connect to */
|
|
18
28
|
connectedBody;
|
|
19
29
|
get rigidBody() {
|
|
20
30
|
return this._rigidBody;
|
|
@@ -37,10 +47,25 @@ __decorate([
|
|
|
37
47
|
serializable(Rigidbody)
|
|
38
48
|
], Joint.prototype, "connectedBody", void 0);
|
|
39
49
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
50
|
+
* FixedJoint locks two {@link Rigidbody} components together, making them move as one rigid unit.
|
|
51
|
+
* The bodies maintain their relative position and rotation at the time the joint is created.
|
|
52
|
+
*
|
|
53
|
+
* Use this for:
|
|
54
|
+
* - Attaching objects together permanently
|
|
55
|
+
* - Creating compound rigid bodies
|
|
56
|
+
* - Welding broken pieces back together
|
|
57
|
+
*
|
|
58
|
+
* @example Attach a weapon to a character
|
|
59
|
+
* ```ts
|
|
60
|
+
* const joint = weapon.addComponent(FixedJoint);
|
|
61
|
+
* joint.connectedBody = characterRigidbody;
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @summary Lock two Rigidbodies together rigidly
|
|
42
65
|
* @category Physics
|
|
43
66
|
* @group Components
|
|
67
|
+
* @see {@link Joint} base class
|
|
68
|
+
* @see {@link HingeJoint} for rotating connections
|
|
44
69
|
*/
|
|
45
70
|
export class FixedJoint extends Joint {
|
|
46
71
|
createJoint(self, other) {
|
|
@@ -48,15 +73,33 @@ export class FixedJoint extends Joint {
|
|
|
48
73
|
}
|
|
49
74
|
}
|
|
50
75
|
/**
|
|
51
|
-
*
|
|
76
|
+
* HingeJoint connects two {@link Rigidbody} components with a rotating constraint,
|
|
77
|
+
* like a door hinge or wheel axle. Bodies can only rotate around the specified axis.
|
|
78
|
+
*
|
|
79
|
+
* Use this for:
|
|
80
|
+
* - Doors and gates
|
|
81
|
+
* - Wheels and axles
|
|
82
|
+
* - Pendulums
|
|
83
|
+
* - Any rotating mechanical connection
|
|
84
|
+
*
|
|
85
|
+
* @example Create a door hinge
|
|
86
|
+
* ```ts
|
|
87
|
+
* const hinge = door.addComponent(HingeJoint);
|
|
88
|
+
* hinge.connectedBody = doorFrameRigidbody;
|
|
89
|
+
* hinge.anchor = new Vector3(0, 0, 0); // Hinge position
|
|
90
|
+
* hinge.axis = new Vector3(0, 1, 0); // Rotate around Y axis
|
|
91
|
+
* ```
|
|
52
92
|
*
|
|
53
|
-
*
|
|
54
|
-
* @summary Connect two Rigidbodies with a hinge
|
|
93
|
+
* @summary Connect two Rigidbodies with a rotating hinge
|
|
55
94
|
* @category Physics
|
|
56
95
|
* @group Components
|
|
96
|
+
* @see {@link Joint} base class
|
|
97
|
+
* @see {@link FixedJoint} for rigid connections
|
|
57
98
|
*/
|
|
58
99
|
export class HingeJoint extends Joint {
|
|
100
|
+
/** Local position of the hinge pivot point */
|
|
59
101
|
anchor;
|
|
102
|
+
/** Axis of rotation for the hinge (e.g., Vector3(0,1,0) for vertical axis) */
|
|
60
103
|
axis;
|
|
61
104
|
createJoint(self, other) {
|
|
62
105
|
if (this.axis && this.anchor)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Joints.js","sourceRoot":"","sources":["../../src/engine-components/Joints.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"Joints.js","sourceRoot":"","sources":["../../src/engine-components/Joints.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAgB,KAAM,SAAQ,SAAS;IACzC,wCAAwC;IAExC,aAAa,CAAa;IAE1B,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACO,UAAU,GAAqB,IAAI,CAAC;IAG5C,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEO,CAAC,MAAM;QACX,KAAK,CAAC;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;SACvD;IACL,CAAC;CAGJ;AAtBG;IADC,YAAY,CAAC,SAAS,CAAC;4CACE;AAwB9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAEvB,WAAW,CAAC,IAAe,EAAE,KAAgB;QACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAEjC,8CAA8C;IAE9C,MAAM,CAAW;IAEjB,8EAA8E;IAE9E,IAAI,CAAW;IAEL,WAAW,CAAC,IAAe,EAAE,KAAgB;QACnD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;YACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;CAEJ;AAXG;IADC,YAAY,CAAC,OAAO,CAAC;0CACL;AAIjB;IADC,YAAY,CAAC,OAAO,CAAC;wCACP"}
|
|
@@ -1,30 +1,47 @@
|
|
|
1
|
-
import { Vector3 } from "three";
|
|
2
1
|
import { Behaviour } from "./Component.js";
|
|
3
2
|
import { Renderer } from "./Renderer.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
3
|
+
/**
|
|
4
|
+
* Defines a single LOD level with its transition distance and associated renderers.
|
|
5
|
+
* Used by {@link LODGroup} to configure level of detail switching.
|
|
6
|
+
*/
|
|
9
7
|
export declare class LODModel {
|
|
8
|
+
/** Screen height ratio (0-1) at which this LOD becomes active */
|
|
10
9
|
screenRelativeTransitionHeight: number;
|
|
10
|
+
/** Distance from camera at which this LOD becomes active */
|
|
11
11
|
distance: number;
|
|
12
|
+
/** Renderers to show at this LOD level */
|
|
12
13
|
renderers: Renderer[];
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
* LODGroup
|
|
16
|
+
* LODGroup manages multiple levels of detail for optimized rendering.
|
|
17
|
+
* Objects switch between different detail levels based on distance from camera.
|
|
18
|
+
*
|
|
19
|
+
* LOD levels are defined in {@link LODModel} objects, each specifying:
|
|
20
|
+
* - The distance at which that level becomes active
|
|
21
|
+
* - The {@link Renderer} components to show at that level
|
|
22
|
+
*
|
|
23
|
+
* This is useful for performance optimization - showing high-detail models up close
|
|
24
|
+
* and lower-detail versions at distance where the difference isn't visible.
|
|
25
|
+
*
|
|
26
|
+
* **Progressive Loading:**
|
|
27
|
+
* For automatic texture/mesh LOD streaming, see the `@needle-tools/gltf-progressive` package
|
|
28
|
+
* which provides progressive loading capabilities independent of this component.
|
|
29
|
+
*
|
|
30
|
+
* **Debug options:**
|
|
31
|
+
* - `?debuglods` - Log LOD switching information
|
|
32
|
+
* - `?nolods` - Disable LOD system entirely
|
|
16
33
|
*
|
|
17
34
|
* @summary Level of Detail Group for optimizing rendering
|
|
18
35
|
* @category Rendering
|
|
19
36
|
* @group Components
|
|
37
|
+
* @see {@link LODModel} for configuring individual LOD levels
|
|
38
|
+
* @see {@link Renderer} for the renderers controlled by LOD
|
|
39
|
+
* @see {@link LODsManager} for programmatic control of progressive LODs
|
|
40
|
+
* @link https://npmjs.com/package/@needle-tools/gltf-progressive
|
|
20
41
|
*/
|
|
21
42
|
export declare class LODGroup extends Behaviour {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
lodCount: number;
|
|
25
|
-
size: number;
|
|
26
|
-
animateCrossFading: boolean;
|
|
27
|
-
lodModels?: LODModel[];
|
|
43
|
+
/** Array of LOD level configurations */
|
|
44
|
+
readonly lodModels: LODModel[];
|
|
28
45
|
private _lods;
|
|
29
46
|
private _settings;
|
|
30
47
|
private _lodsHandler?;
|
|
@@ -32,6 +49,11 @@ export declare class LODGroup extends Behaviour {
|
|
|
32
49
|
onAfterRender(): void;
|
|
33
50
|
private onAddLodLevel;
|
|
34
51
|
private _distanceFactor;
|
|
52
|
+
/**
|
|
53
|
+
* Adjusts all LOD transition distances by a multiplier.
|
|
54
|
+
* Values > 1 push LOD transitions further away (higher quality at distance).
|
|
55
|
+
* Values < 1 bring transitions closer (better performance).
|
|
56
|
+
* @param factor Multiplier to apply to all LOD distances
|
|
57
|
+
*/
|
|
35
58
|
distanceFactor(factor: number): void;
|
|
36
59
|
}
|
|
37
|
-
export {};
|
|
@@ -4,22 +4,35 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { LOD as ThreeLOD, Object3D
|
|
7
|
+
import { LOD as ThreeLOD, Object3D } from "three";
|
|
8
8
|
import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
9
9
|
import { getParam } from "../engine/engine_utils.js";
|
|
10
10
|
import { Behaviour } from "./Component.js";
|
|
11
11
|
import { Renderer } from "./Renderer.js";
|
|
12
12
|
const debug = getParam("debuglods");
|
|
13
13
|
const noLods = getParam("nolods");
|
|
14
|
+
/**
|
|
15
|
+
* Defines how LOD levels transition between each other
|
|
16
|
+
*/
|
|
14
17
|
var LODFadeMode;
|
|
15
18
|
(function (LODFadeMode) {
|
|
19
|
+
/** Instant switch between LOD levels */
|
|
16
20
|
LODFadeMode[LODFadeMode["None"] = 0] = "None";
|
|
21
|
+
/** Smooth cross-fade transition between levels */
|
|
17
22
|
LODFadeMode[LODFadeMode["CrossFade"] = 1] = "CrossFade";
|
|
23
|
+
/** SpeedTree-style blending for vegetation */
|
|
18
24
|
LODFadeMode[LODFadeMode["SpeedTree"] = 2] = "SpeedTree";
|
|
19
25
|
})(LODFadeMode || (LODFadeMode = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Defines a single LOD level with its transition distance and associated renderers.
|
|
28
|
+
* Used by {@link LODGroup} to configure level of detail switching.
|
|
29
|
+
*/
|
|
20
30
|
export class LODModel {
|
|
31
|
+
/** Screen height ratio (0-1) at which this LOD becomes active */
|
|
21
32
|
screenRelativeTransitionHeight;
|
|
33
|
+
/** Distance from camera at which this LOD becomes active */
|
|
22
34
|
distance;
|
|
35
|
+
/** Renderers to show at this LOD level */
|
|
23
36
|
renderers;
|
|
24
37
|
}
|
|
25
38
|
__decorate([
|
|
@@ -39,19 +52,35 @@ class LOD {
|
|
|
39
52
|
}
|
|
40
53
|
}
|
|
41
54
|
/**
|
|
42
|
-
* LODGroup
|
|
55
|
+
* LODGroup manages multiple levels of detail for optimized rendering.
|
|
56
|
+
* Objects switch between different detail levels based on distance from camera.
|
|
57
|
+
*
|
|
58
|
+
* LOD levels are defined in {@link LODModel} objects, each specifying:
|
|
59
|
+
* - The distance at which that level becomes active
|
|
60
|
+
* - The {@link Renderer} components to show at that level
|
|
61
|
+
*
|
|
62
|
+
* This is useful for performance optimization - showing high-detail models up close
|
|
63
|
+
* and lower-detail versions at distance where the difference isn't visible.
|
|
64
|
+
*
|
|
65
|
+
* **Progressive Loading:**
|
|
66
|
+
* For automatic texture/mesh LOD streaming, see the `@needle-tools/gltf-progressive` package
|
|
67
|
+
* which provides progressive loading capabilities independent of this component.
|
|
68
|
+
*
|
|
69
|
+
* **Debug options:**
|
|
70
|
+
* - `?debuglods` - Log LOD switching information
|
|
71
|
+
* - `?nolods` - Disable LOD system entirely
|
|
43
72
|
*
|
|
44
73
|
* @summary Level of Detail Group for optimizing rendering
|
|
45
74
|
* @category Rendering
|
|
46
75
|
* @group Components
|
|
76
|
+
* @see {@link LODModel} for configuring individual LOD levels
|
|
77
|
+
* @see {@link Renderer} for the renderers controlled by LOD
|
|
78
|
+
* @see {@link LODsManager} for programmatic control of progressive LODs
|
|
79
|
+
* @link https://npmjs.com/package/@needle-tools/gltf-progressive
|
|
47
80
|
*/
|
|
48
81
|
export class LODGroup extends Behaviour {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
lodCount = 0;
|
|
52
|
-
size = 0;
|
|
53
|
-
animateCrossFading = false;
|
|
54
|
-
lodModels;
|
|
82
|
+
/** Array of LOD level configurations */
|
|
83
|
+
lodModels = [];
|
|
55
84
|
_lods = [];
|
|
56
85
|
_settings = [];
|
|
57
86
|
// https://threejs.org/docs/#api/en/objects/LOD
|
|
@@ -136,6 +165,12 @@ export class LODGroup extends Behaviour {
|
|
|
136
165
|
this._settings.push(setting);
|
|
137
166
|
}
|
|
138
167
|
_distanceFactor = 1;
|
|
168
|
+
/**
|
|
169
|
+
* Adjusts all LOD transition distances by a multiplier.
|
|
170
|
+
* Values > 1 push LOD transitions further away (higher quality at distance).
|
|
171
|
+
* Values < 1 bring transitions closer (better performance).
|
|
172
|
+
* @param factor Multiplier to apply to all LOD distances
|
|
173
|
+
*/
|
|
139
174
|
distanceFactor(factor) {
|
|
140
175
|
if (factor === this._distanceFactor)
|
|
141
176
|
return;
|
|
@@ -146,9 +181,6 @@ export class LODGroup extends Behaviour {
|
|
|
146
181
|
}
|
|
147
182
|
}
|
|
148
183
|
}
|
|
149
|
-
__decorate([
|
|
150
|
-
serializable(Vector3)
|
|
151
|
-
], LODGroup.prototype, "localReferencePoint", void 0);
|
|
152
184
|
__decorate([
|
|
153
185
|
serializable(LODModel)
|
|
154
186
|
], LODGroup.prototype, "lodModels", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LODGroup.js","sourceRoot":"","sources":["../../src/engine-components/LODGroup.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"LODGroup.js","sourceRoot":"","sources":["../../src/engine-components/LODGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,16 +42,38 @@ declare enum LightShadows {
|
|
|
42
42
|
Soft = 2
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
* Supports directional, spot, and point light types with various customization options.
|
|
47
|
-
* Lights can cast shadows with configurable settings and can be set to baked or realtime rendering.
|
|
45
|
+
* Light component creates a light source in the scene for illuminating 3D objects.
|
|
48
46
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
47
|
+
* **Light types:**
|
|
48
|
+
* - `Directional` - Sun-like parallel rays (best for outdoor scenes)
|
|
49
|
+
* - `Point` - Omnidirectional from a point (bulbs, candles)
|
|
50
|
+
* - `Spot` - Cone-shaped (flashlights, stage lights)
|
|
51
|
+
*
|
|
52
|
+
* **Shadows:**
|
|
53
|
+
* Enable shadows via `shadows` property. Configure quality with shadow resolution
|
|
54
|
+
* settings. Directional lights support adaptive shadow cascades.
|
|
55
|
+
*
|
|
56
|
+
* **Performance tips:**
|
|
57
|
+
* - Use baked lighting (`lightmapBakeType = Baked`) when possible
|
|
58
|
+
* - Limit shadow-casting lights (1-2 recommended)
|
|
59
|
+
* - Reduce shadow resolution for mobile
|
|
60
|
+
*
|
|
61
|
+
* **Debug:** Use `?debuglights` URL parameter for visual helpers.
|
|
62
|
+
*
|
|
63
|
+
* @example Configure a directional light
|
|
64
|
+
* ```ts
|
|
65
|
+
* const light = myLight.getComponent(Light);
|
|
66
|
+
* light.intensity = 1.5;
|
|
67
|
+
* light.color = new Color(1, 0.95, 0.9); // Warm white
|
|
68
|
+
* light.shadows = LightShadows.Soft;
|
|
69
|
+
* ```
|
|
51
70
|
*
|
|
52
71
|
* @summary Light component for various light types and shadow settings
|
|
53
72
|
* @category Rendering
|
|
54
73
|
* @group Components
|
|
74
|
+
* @see {@link LightType} for available light types
|
|
75
|
+
* @see {@link ReflectionProbe} for environment reflections
|
|
76
|
+
* @see {@link Camera} for rendering configuration
|
|
55
77
|
*/
|
|
56
78
|
export declare class Light extends Behaviour implements ILight {
|
|
57
79
|
/**
|