@needle-tools/engine 4.13.0 → 4.13.1-beta
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 +2 -1
- package/README.md +37 -0
- package/components.needle.json +1 -1
- package/custom-elements.json +138 -4
- package/dist/{needle-engine.bundle-CxaKFQVS.min.js → needle-engine.bundle-6774fXoY.min.js} +107 -107
- package/dist/{needle-engine.bundle-Dl3TFYyv.js → needle-engine.bundle-CGtsEhyJ.js} +2346 -1844
- package/dist/{needle-engine.bundle-J4k4znv8.umd.cjs → needle-engine.bundle-fbFZTOKP.umd.cjs} +108 -108
- package/dist/needle-engine.d.ts +3769 -397
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +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_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_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/extensions/NEEDLE_materialx.d.ts +2 -2
- package/lib/engine/extensions/NEEDLE_materialx.js +2 -2
- package/lib/engine/extensions/NEEDLE_materialx.js.map +1 -1
- package/lib/engine/extensions/index.d.ts +1 -1
- package/lib/engine/extensions/index.js +1 -1
- 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/AudioListener.d.ts +1 -1
- package/lib/engine-components/AudioListener.js +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 +32 -2
- package/lib/engine-components/Camera.js +32 -2
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CharacterController.d.ts +68 -4
- package/lib/engine-components/CharacterController.js +68 -4
- 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 +31 -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/EventTrigger.d.ts +1 -1
- package/lib/engine-components/EventTrigger.js +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 +30 -5
- package/lib/engine-components/Light.js +30 -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/PlayerColor.d.ts +1 -1
- package/lib/engine-components/PlayerColor.js +1 -1
- package/lib/engine-components/ReflectionProbe.d.ts +17 -2
- package/lib/engine-components/ReflectionProbe.js +17 -3
- 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.d.ts +1 -1
- package/lib/engine-components/Skybox.js +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 +7 -1
- package/lib/engine-components/SyncedRoom.js +7 -1
- 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/postprocessing/Effects/Antialiasing.d.ts +1 -0
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js +1 -0
- package/lib/engine-components/postprocessing/Effects/Antialiasing.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/BloomEffect.js +1 -1
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +1 -1
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +1 -1
- package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/DepthOfField.js +1 -1
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +1 -0
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +1 -0
- package/lib/engine-components/postprocessing/Effects/EffectWrapper.js.map +1 -1
- package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/Pixelation.js +1 -1
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +1 -1
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +1 -1
- package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/Sharpening.js +1 -1
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/Tonemapping.js +1 -1
- package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +1 -1
- package/lib/engine-components/postprocessing/Effects/Vignette.js +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +1 -1
- package/lib/engine-components/postprocessing/PostProcessingHandler.js +1 -1
- package/lib/engine-components/postprocessing/Volume.d.ts +1 -1
- package/lib/engine-components/postprocessing/Volume.js +1 -1
- package/lib/engine-components/splines/Spline.d.ts +409 -12
- package/lib/engine-components/splines/Spline.js +409 -12
- package/lib/engine-components/splines/Spline.js.map +1 -1
- package/lib/engine-components/splines/SplineUtils.d.ts +1 -0
- package/lib/engine-components/splines/SplineUtils.js +1 -0
- package/lib/engine-components/splines/SplineUtils.js.map +1 -1
- package/lib/engine-components/splines/SplineWalker.d.ts +3 -1
- package/lib/engine-components/splines/SplineWalker.js +3 -1
- package/lib/engine-components/splines/SplineWalker.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 +29 -4
- package/lib/engine-components/ui/Canvas.js +29 -4
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/CanvasGroup.d.ts +1 -1
- package/lib/engine-components/ui/CanvasGroup.js +1 -1
- package/lib/engine-components/ui/EventSystem.d.ts +1 -1
- package/lib/engine-components/ui/EventSystem.js +1 -1
- package/lib/engine-components/ui/Graphic.d.ts +1 -0
- package/lib/engine-components/ui/Graphic.js +1 -0
- package/lib/engine-components/ui/Graphic.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/InputField.d.ts +1 -1
- package/lib/engine-components/ui/InputField.js +1 -1
- package/lib/engine-components/ui/Layout.d.ts +3 -0
- package/lib/engine-components/ui/Layout.js +3 -0
- package/lib/engine-components/ui/Layout.js.map +1 -1
- package/lib/engine-components/ui/Outline.d.ts +1 -1
- package/lib/engine-components/ui/Outline.js +1 -1
- package/lib/engine-components/ui/PointerEvents.d.ts +1 -1
- package/lib/engine-components/ui/PointerEvents.js +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/RectTransform.d.ts +1 -1
- package/lib/engine-components/ui/RectTransform.js +1 -1
- package/lib/engine-components/ui/SpatialHtml.d.ts +1 -1
- package/lib/engine-components/ui/SpatialHtml.js +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/utils/LookAt.d.ts +1 -1
- package/lib/engine-components/utils/LookAt.js +1 -1
- package/lib/engine-components/utils/OpenURL.d.ts +1 -1
- package/lib/engine-components/utils/OpenURL.js +1 -1
- package/lib/engine-components/web/Clickthrough.d.ts +116 -7
- package/lib/engine-components/web/Clickthrough.js +116 -7
- package/lib/engine-components/web/Clickthrough.js.map +1 -1
- package/lib/engine-components/web/CursorFollow.d.ts +171 -7
- package/lib/engine-components/web/CursorFollow.js +171 -7
- package/lib/engine-components/web/CursorFollow.js.map +1 -1
- package/lib/engine-components/web/HoverAnimation.d.ts +140 -11
- package/lib/engine-components/web/HoverAnimation.js +140 -11
- package/lib/engine-components/web/HoverAnimation.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +4 -1
- package/lib/engine-components/web/ScrollFollow.js +4 -1
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/engine-components/web/ViewBox.d.ts +116 -16
- package/lib/engine-components/web/ViewBox.js +110 -16
- package/lib/engine-components/web/ViewBox.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/WebXRPlaneTracking.d.ts +1 -1
- package/lib/engine-components/webxr/WebXRPlaneTracking.js +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 +1 -1
- package/plugins/vite/custom-element-data.js +128 -19
- 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_math.ts +81 -2
- package/src/engine/engine_networking.ts +186 -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/extensions/NEEDLE_materialx.ts +5 -4
- package/src/engine/extensions/index.ts +2 -2
- 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/AudioListener.ts +1 -1
- 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 +74 -7
- package/src/engine-components/Collider.ts +78 -21
- package/src/engine-components/ContactShadows.ts +36 -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 +41 -29
- package/src/engine-components/Duplicatable.ts +37 -6
- package/src/engine-components/EventList.ts +41 -13
- package/src/engine-components/EventTrigger.ts +1 -1
- 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 +35 -13
- 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/PlayerColor.ts +1 -1
- package/src/engine-components/ReflectionProbe.ts +19 -5
- 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 +68 -7
- package/src/engine-components/SpatialTrigger.ts +51 -4
- package/src/engine-components/SpectatorCamera.ts +23 -5
- package/src/engine-components/SyncedRoom.ts +8 -2
- 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/postprocessing/Effects/Antialiasing.ts +1 -0
- package/src/engine-components/postprocessing/Effects/BloomEffect.ts +1 -1
- package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +1 -1
- package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +1 -1
- package/src/engine-components/postprocessing/Effects/DepthOfField.ts +1 -1
- package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +1 -0
- package/src/engine-components/postprocessing/Effects/Pixelation.ts +1 -1
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +1 -1
- package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +1 -1
- package/src/engine-components/postprocessing/Effects/Sharpening.ts +1 -1
- package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +1 -1
- package/src/engine-components/postprocessing/Effects/Tonemapping.ts +1 -1
- package/src/engine-components/postprocessing/Effects/Vignette.ts +1 -1
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
- package/src/engine-components/postprocessing/Volume.ts +1 -1
- package/src/engine-components/splines/Spline.ts +412 -14
- package/src/engine-components/splines/SplineUtils.ts +1 -0
- package/src/engine-components/splines/SplineWalker.ts +4 -2
- 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 +29 -4
- package/src/engine-components/ui/CanvasGroup.ts +2 -2
- package/src/engine-components/ui/EventSystem.ts +1 -1
- package/src/engine-components/ui/Graphic.ts +1 -0
- package/src/engine-components/ui/Image.ts +22 -3
- package/src/engine-components/ui/InputField.ts +2 -2
- package/src/engine-components/ui/Layout.ts +3 -0
- package/src/engine-components/ui/Outline.ts +1 -1
- package/src/engine-components/ui/PointerEvents.ts +1 -1
- package/src/engine-components/ui/Raycaster.ts +57 -8
- package/src/engine-components/ui/RectTransform.ts +2 -2
- package/src/engine-components/ui/SpatialHtml.ts +1 -1
- package/src/engine-components/ui/Text.ts +24 -2
- package/src/engine-components/utils/LookAt.ts +1 -1
- package/src/engine-components/utils/OpenURL.ts +1 -1
- package/src/engine-components/web/Clickthrough.ts +119 -10
- package/src/engine-components/web/CursorFollow.ts +174 -9
- package/src/engine-components/web/HoverAnimation.ts +142 -13
- package/src/engine-components/web/ScrollFollow.ts +4 -1
- package/src/engine-components/web/ViewBox.ts +118 -18
- 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/WebXRPlaneTracking.ts +1 -1
- package/src/engine-components/webxr/XRFlag.ts +30 -3
|
@@ -4,43 +4,107 @@ import { Animator } from "./Animator.js";
|
|
|
4
4
|
import { Behaviour } from "./Component.js";
|
|
5
5
|
import { Rigidbody } from "./RigidBody.js";
|
|
6
6
|
/**
|
|
7
|
-
* CharacterController adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.
|
|
7
|
+
* The [CharacterController](https://engine.needle.tools/docs/api/CharacterController) adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.
|
|
8
8
|
* It is designed for typical character movement in 3D environments.
|
|
9
|
+
*
|
|
10
|
+
* The controller automatically:
|
|
11
|
+
* - Creates a {@link CapsuleCollider} if one doesn't exist
|
|
12
|
+
* - Creates a {@link Rigidbody} if one doesn't exist
|
|
13
|
+
* - Locks rotation on all axes to prevent tipping over
|
|
14
|
+
* - Tracks ground contact for jump detection
|
|
15
|
+
*
|
|
16
|
+
* @example Basic character movement
|
|
17
|
+
* ```ts
|
|
18
|
+
* export class MyCharacter extends Behaviour {
|
|
19
|
+
* @serializable(CharacterController)
|
|
20
|
+
* controller?: CharacterController;
|
|
21
|
+
*
|
|
22
|
+
* update() {
|
|
23
|
+
* const input = this.context.input;
|
|
24
|
+
* const move = new Vector3();
|
|
25
|
+
* if (input.isKeyPressed("KeyW")) move.z = 0.1;
|
|
26
|
+
* if (input.isKeyPressed("KeyS")) move.z = -0.1;
|
|
27
|
+
* this.controller?.move(move);
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
9
32
|
* @summary Character Movement Controller
|
|
10
33
|
* @category Character
|
|
11
34
|
* @group Components
|
|
35
|
+
* @see {@link CharacterControllerInput} for ready-to-use input handling
|
|
36
|
+
* @see {@link Rigidbody} for physics configuration
|
|
37
|
+
* @see {@link CapsuleCollider} for collision shape
|
|
12
38
|
*/
|
|
13
39
|
export declare class CharacterController extends Behaviour {
|
|
40
|
+
/** Center offset of the capsule collider in local space */
|
|
14
41
|
center: Vector3;
|
|
42
|
+
/** Radius of the capsule collider */
|
|
15
43
|
radius: number;
|
|
44
|
+
/** Height of the capsule collider */
|
|
16
45
|
height: number;
|
|
17
46
|
private _rigidbody;
|
|
18
47
|
get rigidbody(): Rigidbody;
|
|
19
48
|
private _activeGroundCollisions;
|
|
20
49
|
awake(): void;
|
|
21
50
|
onEnable(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Moves the character by adding the given vector to its position.
|
|
53
|
+
* Movement is applied directly without physics simulation.
|
|
54
|
+
* @param vec The movement vector to apply
|
|
55
|
+
*/
|
|
22
56
|
move(vec: Vector3): void;
|
|
23
57
|
onCollisionEnter(col: Collision): void;
|
|
24
58
|
onCollisionExit(col: Collision): void;
|
|
59
|
+
/** Returns true if the character is currently touching the ground */
|
|
25
60
|
get isGrounded(): boolean;
|
|
26
61
|
private _contactVelocity;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the combined velocity of all objects the character is standing on.
|
|
64
|
+
* Useful for moving platforms - add this to your movement for proper platform riding.
|
|
65
|
+
*/
|
|
27
66
|
get contactVelocity(): Vector3;
|
|
28
67
|
}
|
|
29
68
|
/**
|
|
30
|
-
* CharacterControllerInput handles user input to control a CharacterController.
|
|
69
|
+
* CharacterControllerInput handles user input to control a {@link CharacterController}.
|
|
31
70
|
* It supports movement, looking around, jumping, and double jumping.
|
|
32
|
-
*
|
|
33
|
-
*
|
|
71
|
+
*
|
|
72
|
+
* Default controls:
|
|
73
|
+
* - **W/S**: Move forward/backward
|
|
74
|
+
* - **A/D**: Rotate left/right
|
|
75
|
+
* - **Space**: Jump (supports double jump)
|
|
76
|
+
*
|
|
77
|
+
* The component automatically sets animator parameters:
|
|
78
|
+
* - `running` (bool): True when moving
|
|
79
|
+
* - `jumping` (bool): True when starting a jump
|
|
80
|
+
* - `doubleJump` (bool): True during double jump
|
|
81
|
+
* - `falling` (bool): True when falling from height
|
|
82
|
+
*
|
|
83
|
+
* @example Custom input handling
|
|
84
|
+
* ```ts
|
|
85
|
+
* const input = this.gameObject.getComponent(CharacterControllerInput);
|
|
86
|
+
* input?.move(new Vector2(0, 1)); // Move forward
|
|
87
|
+
* input?.jump(); // Trigger jump
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
34
90
|
* @summary User Input for Character Controller
|
|
35
91
|
* @category Character
|
|
36
92
|
* @group Components
|
|
93
|
+
* @see {@link CharacterController} for the movement controller
|
|
94
|
+
* @see {@link Animator} for animation integration
|
|
37
95
|
*/
|
|
38
96
|
export declare class CharacterControllerInput extends Behaviour {
|
|
97
|
+
/** The CharacterController to drive with input */
|
|
39
98
|
controller?: CharacterController;
|
|
99
|
+
/** Movement speed multiplier */
|
|
40
100
|
movementSpeed: number;
|
|
101
|
+
/** Rotation speed multiplier */
|
|
41
102
|
rotationSpeed: number;
|
|
103
|
+
/** Impulse force applied when jumping from ground */
|
|
42
104
|
jumpForce: number;
|
|
105
|
+
/** Impulse force applied for the second jump (set to 0 to disable double jump) */
|
|
43
106
|
doubleJumpForce: number;
|
|
107
|
+
/** Optional Animator for character animations */
|
|
44
108
|
animator?: Animator;
|
|
45
109
|
lookForward: boolean;
|
|
46
110
|
awake(): void;
|
|
@@ -16,15 +16,44 @@ import { Behaviour } from "./Component.js";
|
|
|
16
16
|
import { Rigidbody } from "./RigidBody.js";
|
|
17
17
|
const debug = getParam("debugcharactercontroller");
|
|
18
18
|
/**
|
|
19
|
-
* CharacterController adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.
|
|
19
|
+
* The [CharacterController](https://engine.needle.tools/docs/api/CharacterController) adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.
|
|
20
20
|
* It is designed for typical character movement in 3D environments.
|
|
21
|
+
*
|
|
22
|
+
* The controller automatically:
|
|
23
|
+
* - Creates a {@link CapsuleCollider} if one doesn't exist
|
|
24
|
+
* - Creates a {@link Rigidbody} if one doesn't exist
|
|
25
|
+
* - Locks rotation on all axes to prevent tipping over
|
|
26
|
+
* - Tracks ground contact for jump detection
|
|
27
|
+
*
|
|
28
|
+
* @example Basic character movement
|
|
29
|
+
* ```ts
|
|
30
|
+
* export class MyCharacter extends Behaviour {
|
|
31
|
+
* @serializable(CharacterController)
|
|
32
|
+
* controller?: CharacterController;
|
|
33
|
+
*
|
|
34
|
+
* update() {
|
|
35
|
+
* const input = this.context.input;
|
|
36
|
+
* const move = new Vector3();
|
|
37
|
+
* if (input.isKeyPressed("KeyW")) move.z = 0.1;
|
|
38
|
+
* if (input.isKeyPressed("KeyS")) move.z = -0.1;
|
|
39
|
+
* this.controller?.move(move);
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
21
44
|
* @summary Character Movement Controller
|
|
22
45
|
* @category Character
|
|
23
46
|
* @group Components
|
|
47
|
+
* @see {@link CharacterControllerInput} for ready-to-use input handling
|
|
48
|
+
* @see {@link Rigidbody} for physics configuration
|
|
49
|
+
* @see {@link CapsuleCollider} for collision shape
|
|
24
50
|
*/
|
|
25
51
|
export class CharacterController extends Behaviour {
|
|
52
|
+
/** Center offset of the capsule collider in local space */
|
|
26
53
|
center = new Vector3(0, 0, 0);
|
|
54
|
+
/** Radius of the capsule collider */
|
|
27
55
|
radius = .5;
|
|
56
|
+
/** Height of the capsule collider */
|
|
28
57
|
height = 2;
|
|
29
58
|
_rigidbody = null;
|
|
30
59
|
get rigidbody() {
|
|
@@ -60,6 +89,11 @@ export class CharacterController extends Behaviour {
|
|
|
60
89
|
rb.lockRotationY = true;
|
|
61
90
|
rb.lockRotationZ = true;
|
|
62
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Moves the character by adding the given vector to its position.
|
|
94
|
+
* Movement is applied directly without physics simulation.
|
|
95
|
+
* @param vec The movement vector to apply
|
|
96
|
+
*/
|
|
63
97
|
move(vec) {
|
|
64
98
|
this.gameObject.position.add(vec);
|
|
65
99
|
}
|
|
@@ -79,8 +113,13 @@ export class CharacterController extends Behaviour {
|
|
|
79
113
|
console.log(`Collision(${this._activeGroundCollisions.size}) - ${this.isGrounded}`);
|
|
80
114
|
}
|
|
81
115
|
}
|
|
116
|
+
/** Returns true if the character is currently touching the ground */
|
|
82
117
|
get isGrounded() { return this._activeGroundCollisions.size > 0; }
|
|
83
118
|
_contactVelocity = new Vector3();
|
|
119
|
+
/**
|
|
120
|
+
* Returns the combined velocity of all objects the character is standing on.
|
|
121
|
+
* Useful for moving platforms - add this to your movement for proper platform riding.
|
|
122
|
+
*/
|
|
84
123
|
get contactVelocity() {
|
|
85
124
|
this._contactVelocity.set(0, 0, 0);
|
|
86
125
|
for (const col of this._activeGroundCollisions) {
|
|
@@ -105,20 +144,45 @@ __decorate([
|
|
|
105
144
|
serializable()
|
|
106
145
|
], CharacterController.prototype, "height", void 0);
|
|
107
146
|
/**
|
|
108
|
-
* CharacterControllerInput handles user input to control a CharacterController.
|
|
147
|
+
* CharacterControllerInput handles user input to control a {@link CharacterController}.
|
|
109
148
|
* It supports movement, looking around, jumping, and double jumping.
|
|
110
|
-
*
|
|
111
|
-
*
|
|
149
|
+
*
|
|
150
|
+
* Default controls:
|
|
151
|
+
* - **W/S**: Move forward/backward
|
|
152
|
+
* - **A/D**: Rotate left/right
|
|
153
|
+
* - **Space**: Jump (supports double jump)
|
|
154
|
+
*
|
|
155
|
+
* The component automatically sets animator parameters:
|
|
156
|
+
* - `running` (bool): True when moving
|
|
157
|
+
* - `jumping` (bool): True when starting a jump
|
|
158
|
+
* - `doubleJump` (bool): True during double jump
|
|
159
|
+
* - `falling` (bool): True when falling from height
|
|
160
|
+
*
|
|
161
|
+
* @example Custom input handling
|
|
162
|
+
* ```ts
|
|
163
|
+
* const input = this.gameObject.getComponent(CharacterControllerInput);
|
|
164
|
+
* input?.move(new Vector2(0, 1)); // Move forward
|
|
165
|
+
* input?.jump(); // Trigger jump
|
|
166
|
+
* ```
|
|
167
|
+
*
|
|
112
168
|
* @summary User Input for Character Controller
|
|
113
169
|
* @category Character
|
|
114
170
|
* @group Components
|
|
171
|
+
* @see {@link CharacterController} for the movement controller
|
|
172
|
+
* @see {@link Animator} for animation integration
|
|
115
173
|
*/
|
|
116
174
|
export class CharacterControllerInput extends Behaviour {
|
|
175
|
+
/** The CharacterController to drive with input */
|
|
117
176
|
controller;
|
|
177
|
+
/** Movement speed multiplier */
|
|
118
178
|
movementSpeed = 2;
|
|
179
|
+
/** Rotation speed multiplier */
|
|
119
180
|
rotationSpeed = 2;
|
|
181
|
+
/** Impulse force applied when jumping from ground */
|
|
120
182
|
jumpForce = 1;
|
|
183
|
+
/** Impulse force applied for the second jump (set to 0 to disable double jump) */
|
|
121
184
|
doubleJumpForce = 2;
|
|
185
|
+
/** Optional Animator for character animations */
|
|
122
186
|
animator;
|
|
123
187
|
lookForward = true;
|
|
124
188
|
awake() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CharacterController.js","sourceRoot":"","sources":["../../src/engine-components/CharacterController.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,KAAK,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAEnD
|
|
1
|
+
{"version":3,"file":"CharacterController.js","sourceRoot":"","sources":["../../src/engine-components/CharacterController.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,17 +4,43 @@ import type { IBoxCollider, ICollider, ISphereCollider } from "../engine/engine_
|
|
|
4
4
|
import { Behaviour } from "./Component.js";
|
|
5
5
|
import { Rigidbody } from "./RigidBody.js";
|
|
6
6
|
/**
|
|
7
|
-
* Collider is the base class for all
|
|
8
|
-
* Colliders
|
|
9
|
-
*
|
|
7
|
+
* Collider is the base class for all physics collision shapes.
|
|
8
|
+
* Colliders define the physical boundary of objects for collision detection.
|
|
9
|
+
*
|
|
10
|
+
* 
|
|
11
|
+
*
|
|
12
|
+
* **Usage with Rigidbody:**
|
|
13
|
+
* - Add a collider to define collision shape
|
|
14
|
+
* - Add a {@link Rigidbody} to the same or parent object for physics simulation
|
|
15
|
+
* - Without Rigidbody, collider acts as static geometry
|
|
16
|
+
*
|
|
17
|
+
* **Trigger mode:**
|
|
18
|
+
* Set `isTrigger = true` for detection without physical collision.
|
|
19
|
+
* Triggers fire `onTriggerEnter`, `onTriggerStay`, `onTriggerExit` events.
|
|
20
|
+
*
|
|
21
|
+
* **Collision filtering:**
|
|
22
|
+
* Use `membership` and `filter` arrays to control which objects collide.
|
|
23
|
+
*
|
|
24
|
+
* @example Add a box collider to an object
|
|
25
|
+
* ```ts
|
|
26
|
+
* const collider = myObject.addComponent(BoxCollider);
|
|
27
|
+
* collider.size = new Vector3(1, 2, 1);
|
|
28
|
+
* collider.center = new Vector3(0, 1, 0);
|
|
29
|
+
* ```
|
|
10
30
|
*
|
|
11
31
|
* - Example: https://samples.needle.tools/physics-basic
|
|
12
32
|
* - Example: https://samples.needle.tools/physics-playground
|
|
13
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
14
33
|
*
|
|
15
|
-
* @summary Physics collider
|
|
34
|
+
* @summary Physics collider base class
|
|
16
35
|
* @category Physics
|
|
17
36
|
* @group Components
|
|
37
|
+
* @see {@link BoxCollider} for box-shaped colliders
|
|
38
|
+
* @see {@link SphereCollider} for sphere-shaped colliders
|
|
39
|
+
* @see {@link CapsuleCollider} for capsule-shaped colliders
|
|
40
|
+
* @see {@link MeshCollider} for mesh-based colliders
|
|
41
|
+
* @see {@link Rigidbody} for physics simulation
|
|
42
|
+
* @link https://engine.needle.tools/samples/?room=needle272&overlay=samples&tag=physics
|
|
43
|
+
* @link https://engine.needle.tools/samples-uploads/basic-physics/?showcolliders
|
|
18
44
|
*/
|
|
19
45
|
export declare abstract class Collider extends Behaviour implements ICollider {
|
|
20
46
|
/**
|
|
@@ -70,14 +96,25 @@ export declare abstract class Collider extends Behaviour implements ICollider {
|
|
|
70
96
|
}
|
|
71
97
|
/**
|
|
72
98
|
* SphereCollider represents a sphere-shaped collision volume.
|
|
73
|
-
*
|
|
99
|
+
* Efficient and suitable for balls, projectiles, or approximate collision bounds.
|
|
100
|
+
*
|
|
101
|
+
* 
|
|
102
|
+
*
|
|
103
|
+
* @example Create a bouncing ball
|
|
104
|
+
* ```ts
|
|
105
|
+
* const sphere = ball.addComponent(SphereCollider);
|
|
106
|
+
* sphere.radius = 0.5;
|
|
107
|
+
* const rb = ball.addComponent(Rigidbody);
|
|
108
|
+
* rb.mass = 1;
|
|
109
|
+
* ```
|
|
74
110
|
*
|
|
75
111
|
* - Example: https://samples.needle.tools/physics-basic
|
|
76
|
-
* - Example: https://samples.needle.tools/physics-playground
|
|
77
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
78
112
|
*
|
|
113
|
+
* @summary Sphere-shaped physics collider
|
|
79
114
|
* @category Physics
|
|
80
115
|
* @group Components
|
|
116
|
+
* @see {@link Collider} for base collider functionality
|
|
117
|
+
* @see {@link CapsuleCollider} for elongated sphere shapes
|
|
81
118
|
*/
|
|
82
119
|
export declare class SphereCollider extends Collider implements ISphereCollider {
|
|
83
120
|
/**
|
|
@@ -102,15 +139,31 @@ export declare class SphereCollider extends Collider implements ISphereCollider
|
|
|
102
139
|
onValidate(): void;
|
|
103
140
|
}
|
|
104
141
|
/**
|
|
105
|
-
* BoxCollider represents a box-shaped collision volume.
|
|
106
|
-
*
|
|
142
|
+
* BoxCollider represents a box-shaped (cuboid) collision volume.
|
|
143
|
+
* Most common collider type, efficient for walls, floors, crates, and rectangular objects.
|
|
144
|
+
*
|
|
145
|
+
* 
|
|
146
|
+
*
|
|
147
|
+
* @example Create a floor collider
|
|
148
|
+
* ```ts
|
|
149
|
+
* const box = floor.addComponent(BoxCollider);
|
|
150
|
+
* box.size = new Vector3(10, 0.1, 10);
|
|
151
|
+
* box.center = new Vector3(0, -0.05, 0);
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @example Auto-fit to mesh geometry
|
|
155
|
+
* ```ts
|
|
156
|
+
* const collider = BoxCollider.add(myMesh, { rigidbody: true });
|
|
157
|
+
* // Collider size is automatically set from mesh bounds
|
|
158
|
+
* ```
|
|
107
159
|
*
|
|
108
160
|
* - Example: https://samples.needle.tools/physics-basic
|
|
109
|
-
* - Example: https://samples.needle.tools/physics-playground
|
|
110
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
111
161
|
*
|
|
162
|
+
* @summary Box-shaped physics collider
|
|
112
163
|
* @category Physics
|
|
113
164
|
* @group Components
|
|
165
|
+
* @see {@link Collider} for base collider functionality
|
|
166
|
+
* @see {@link SphereCollider} for sphere shapes
|
|
114
167
|
*/
|
|
115
168
|
export declare class BoxCollider extends Collider implements IBoxCollider {
|
|
116
169
|
/**
|
|
@@ -159,6 +212,8 @@ export declare class BoxCollider extends Collider implements IBoxCollider {
|
|
|
159
212
|
* MeshCollider creates a collision shape from a mesh geometry.
|
|
160
213
|
* Allows for complex collision shapes that match the exact geometry of an object.
|
|
161
214
|
*
|
|
215
|
+
* 
|
|
216
|
+
*
|
|
162
217
|
* - Example: https://samples.needle.tools/physics-basic
|
|
163
218
|
* - Example: https://samples.needle.tools/physics-playground
|
|
164
219
|
* - Example: https://samples.needle.tools/physics-&-animation
|
|
@@ -187,6 +242,8 @@ export declare class MeshCollider extends Collider {
|
|
|
187
242
|
* CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).
|
|
188
243
|
* Ideal for character controllers and objects that need a rounded collision shape.
|
|
189
244
|
*
|
|
245
|
+
* 
|
|
246
|
+
*
|
|
190
247
|
* - Example: https://samples.needle.tools/physics-basic
|
|
191
248
|
* - Example: https://samples.needle.tools/physics-playground
|
|
192
249
|
* - Example: https://samples.needle.tools/physics-&-animation
|
|
@@ -16,17 +16,43 @@ import { NEEDLE_progressive } from "../engine/extensions/NEEDLE_progressive.js";
|
|
|
16
16
|
import { Behaviour } from "./Component.js";
|
|
17
17
|
import { Rigidbody } from "./RigidBody.js";
|
|
18
18
|
/**
|
|
19
|
-
* Collider is the base class for all
|
|
20
|
-
* Colliders
|
|
21
|
-
*
|
|
19
|
+
* Collider is the base class for all physics collision shapes.
|
|
20
|
+
* Colliders define the physical boundary of objects for collision detection.
|
|
21
|
+
*
|
|
22
|
+
* 
|
|
23
|
+
*
|
|
24
|
+
* **Usage with Rigidbody:**
|
|
25
|
+
* - Add a collider to define collision shape
|
|
26
|
+
* - Add a {@link Rigidbody} to the same or parent object for physics simulation
|
|
27
|
+
* - Without Rigidbody, collider acts as static geometry
|
|
28
|
+
*
|
|
29
|
+
* **Trigger mode:**
|
|
30
|
+
* Set `isTrigger = true` for detection without physical collision.
|
|
31
|
+
* Triggers fire `onTriggerEnter`, `onTriggerStay`, `onTriggerExit` events.
|
|
32
|
+
*
|
|
33
|
+
* **Collision filtering:**
|
|
34
|
+
* Use `membership` and `filter` arrays to control which objects collide.
|
|
35
|
+
*
|
|
36
|
+
* @example Add a box collider to an object
|
|
37
|
+
* ```ts
|
|
38
|
+
* const collider = myObject.addComponent(BoxCollider);
|
|
39
|
+
* collider.size = new Vector3(1, 2, 1);
|
|
40
|
+
* collider.center = new Vector3(0, 1, 0);
|
|
41
|
+
* ```
|
|
22
42
|
*
|
|
23
43
|
* - Example: https://samples.needle.tools/physics-basic
|
|
24
44
|
* - Example: https://samples.needle.tools/physics-playground
|
|
25
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
26
45
|
*
|
|
27
|
-
* @summary Physics collider
|
|
46
|
+
* @summary Physics collider base class
|
|
28
47
|
* @category Physics
|
|
29
48
|
* @group Components
|
|
49
|
+
* @see {@link BoxCollider} for box-shaped colliders
|
|
50
|
+
* @see {@link SphereCollider} for sphere-shaped colliders
|
|
51
|
+
* @see {@link CapsuleCollider} for capsule-shaped colliders
|
|
52
|
+
* @see {@link MeshCollider} for mesh-based colliders
|
|
53
|
+
* @see {@link Rigidbody} for physics simulation
|
|
54
|
+
* @link https://engine.needle.tools/samples/?room=needle272&overlay=samples&tag=physics
|
|
55
|
+
* @link https://engine.needle.tools/samples-uploads/basic-physics/?showcolliders
|
|
30
56
|
*/
|
|
31
57
|
export class Collider extends Behaviour {
|
|
32
58
|
/**
|
|
@@ -118,14 +144,25 @@ __decorate([
|
|
|
118
144
|
], Collider.prototype, "filter", void 0);
|
|
119
145
|
/**
|
|
120
146
|
* SphereCollider represents a sphere-shaped collision volume.
|
|
121
|
-
*
|
|
147
|
+
* Efficient and suitable for balls, projectiles, or approximate collision bounds.
|
|
148
|
+
*
|
|
149
|
+
* 
|
|
150
|
+
*
|
|
151
|
+
* @example Create a bouncing ball
|
|
152
|
+
* ```ts
|
|
153
|
+
* const sphere = ball.addComponent(SphereCollider);
|
|
154
|
+
* sphere.radius = 0.5;
|
|
155
|
+
* const rb = ball.addComponent(Rigidbody);
|
|
156
|
+
* rb.mass = 1;
|
|
157
|
+
* ```
|
|
122
158
|
*
|
|
123
159
|
* - Example: https://samples.needle.tools/physics-basic
|
|
124
|
-
* - Example: https://samples.needle.tools/physics-playground
|
|
125
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
126
160
|
*
|
|
161
|
+
* @summary Sphere-shaped physics collider
|
|
127
162
|
* @category Physics
|
|
128
163
|
* @group Components
|
|
164
|
+
* @see {@link Collider} for base collider functionality
|
|
165
|
+
* @see {@link CapsuleCollider} for elongated sphere shapes
|
|
129
166
|
*/
|
|
130
167
|
export class SphereCollider extends Collider {
|
|
131
168
|
/**
|
|
@@ -166,15 +203,31 @@ __decorate([
|
|
|
166
203
|
serializable(Vector3)
|
|
167
204
|
], SphereCollider.prototype, "center", void 0);
|
|
168
205
|
/**
|
|
169
|
-
* BoxCollider represents a box-shaped collision volume.
|
|
170
|
-
*
|
|
206
|
+
* BoxCollider represents a box-shaped (cuboid) collision volume.
|
|
207
|
+
* Most common collider type, efficient for walls, floors, crates, and rectangular objects.
|
|
208
|
+
*
|
|
209
|
+
* 
|
|
210
|
+
*
|
|
211
|
+
* @example Create a floor collider
|
|
212
|
+
* ```ts
|
|
213
|
+
* const box = floor.addComponent(BoxCollider);
|
|
214
|
+
* box.size = new Vector3(10, 0.1, 10);
|
|
215
|
+
* box.center = new Vector3(0, -0.05, 0);
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* @example Auto-fit to mesh geometry
|
|
219
|
+
* ```ts
|
|
220
|
+
* const collider = BoxCollider.add(myMesh, { rigidbody: true });
|
|
221
|
+
* // Collider size is automatically set from mesh bounds
|
|
222
|
+
* ```
|
|
171
223
|
*
|
|
172
224
|
* - Example: https://samples.needle.tools/physics-basic
|
|
173
|
-
* - Example: https://samples.needle.tools/physics-playground
|
|
174
|
-
* - Example: https://samples.needle.tools/physics-&-animation
|
|
175
225
|
*
|
|
226
|
+
* @summary Box-shaped physics collider
|
|
176
227
|
* @category Physics
|
|
177
228
|
* @group Components
|
|
229
|
+
* @see {@link Collider} for base collider functionality
|
|
230
|
+
* @see {@link SphereCollider} for sphere shapes
|
|
178
231
|
*/
|
|
179
232
|
export class BoxCollider extends Collider {
|
|
180
233
|
/**
|
|
@@ -269,6 +322,8 @@ __decorate([
|
|
|
269
322
|
* MeshCollider creates a collision shape from a mesh geometry.
|
|
270
323
|
* Allows for complex collision shapes that match the exact geometry of an object.
|
|
271
324
|
*
|
|
325
|
+
* 
|
|
326
|
+
*
|
|
272
327
|
* - Example: https://samples.needle.tools/physics-basic
|
|
273
328
|
* - Example: https://samples.needle.tools/physics-playground
|
|
274
329
|
* - Example: https://samples.needle.tools/physics-&-animation
|
|
@@ -356,6 +411,8 @@ __decorate([
|
|
|
356
411
|
* CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).
|
|
357
412
|
* Ideal for character controllers and objects that need a rounded collision shape.
|
|
358
413
|
*
|
|
414
|
+
* 
|
|
415
|
+
*
|
|
359
416
|
* - Example: https://samples.needle.tools/physics-basic
|
|
360
417
|
* - Example: https://samples.needle.tools/physics-playground
|
|
361
418
|
* - Example: https://samples.needle.tools/physics-&-animation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../src/engine-components/Collider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAkB,KAAK,EAAE,IAAI,EAAY,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../src/engine-components/Collider.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,19 +9,38 @@ type FitParameters = {
|
|
|
9
9
|
scaleFactor?: Partial<Vector3Like>;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
* ContactShadows
|
|
12
|
+
* [ContactShadows](https://engine.needle.tools/docs/api/ContactShadows) renders proximity-based soft shadows on flat surfaces.
|
|
13
|
+
* Ideal for products or objects that need visual grounding without real-time shadows.
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
+
* 
|
|
15
16
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
17
|
+
* **Setup options:**
|
|
18
|
+
* 1. `ContactShadows.auto(context)` - Auto-create and fit to scene
|
|
19
|
+
* 2. Add component manually to control position and scale
|
|
20
|
+
* 3. HTML attribute: `<needle-engine contactshadows="0.7">`
|
|
18
21
|
*
|
|
19
|
-
*
|
|
22
|
+
* **Properties:**
|
|
23
|
+
* - `opacity` / `darkness` - Shadow intensity
|
|
24
|
+
* - `blur` - Softness of shadow edges
|
|
25
|
+
* - Object scale defines shadow area size
|
|
26
|
+
*
|
|
27
|
+
* **Debug:** Use `?debugcontactshadows` URL parameter.
|
|
28
|
+
*
|
|
29
|
+
*
|
|
30
|
+
* @example Auto-create contact shadows
|
|
31
|
+
* ```ts
|
|
32
|
+
* const shadows = ContactShadows.auto(this.context);
|
|
33
|
+
* shadows.opacity = 0.5;
|
|
34
|
+
* shadows.darkness = 0.8;
|
|
35
|
+
* ```
|
|
20
36
|
*
|
|
21
37
|
* @summary Display contact shadows on the ground
|
|
22
38
|
* @category Rendering
|
|
23
39
|
* @group Components
|
|
24
|
-
|
|
40
|
+
* @see {@link Light} for real-time shadow casting
|
|
41
|
+
* @see {@link Renderer} for material/rendering control
|
|
42
|
+
* @link https://engine.needle.tools/samples/contact-shadows for a demo of contact shadows
|
|
43
|
+
*/
|
|
25
44
|
export declare class ContactShadows extends Behaviour {
|
|
26
45
|
private static readonly _instances;
|
|
27
46
|
/**
|
|
@@ -90,6 +109,7 @@ export declare class ContactShadows extends Behaviour {
|
|
|
90
109
|
private plane?;
|
|
91
110
|
private occluderMesh?;
|
|
92
111
|
private blurPlane?;
|
|
112
|
+
private planeMaterial?;
|
|
93
113
|
private depthMaterial?;
|
|
94
114
|
private horizontalBlurMaterial?;
|
|
95
115
|
private verticalBlurMaterial?;
|