@needle-tools/engine 4.12.0-next.de80571 → 4.12.0-next.e42c144
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 +1 -1
- package/components.needle.json +1 -1
- package/dist/generateMeshBVH.worker-iyfPIK6R.js +21 -0
- package/dist/{gltf-progressive-DZrY8VT6.min.js → gltf-progressive-BmSygnAC.min.js} +2 -2
- package/dist/{gltf-progressive-DgYz5BYa.js → gltf-progressive-DnLBuGK5.js} +24 -24
- package/dist/{gltf-progressive-DWcmTMCh.umd.cjs → gltf-progressive-Rs-ojtXy.umd.cjs} +1 -1
- package/dist/{loader.worker-Dip-PthR.js → loader.worker-DWzfDpAl.js} +4 -4
- package/dist/needle-engine.bundle-CW5U4a3u.umd.cjs +1647 -0
- package/dist/needle-engine.bundle-HNQiYV9e.min.js +1647 -0
- package/dist/{needle-engine.bundle-CbrIHiN8.js → needle-engine.bundle-qrrKb_xn.js} +8886 -8598
- package/dist/needle-engine.d.ts +108 -43
- package/dist/needle-engine.js +48 -48
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-DYDtB188.min.js → postprocessing-B5ksn9-G.min.js} +54 -54
- package/dist/{postprocessing-CMgoN5t5.umd.cjs → postprocessing-DZtb9Nnn.umd.cjs} +81 -81
- package/dist/{postprocessing-BTW9pD_s.js → postprocessing-__7s9wON.js} +450 -441
- package/dist/{three-DfMvBzXi.js → three-BCCkyCA5.js} +1 -7
- package/dist/{three-qj71I7J3.umd.cjs → three-Bf2NBxAw.umd.cjs} +2 -2
- package/dist/{three-B7CT31Bt.min.js → three-W7zWTcfP.min.js} +1 -1
- package/dist/{three-examples-CsW4_6LI.umd.cjs → three-examples-Dho7cuu4.umd.cjs} +4 -4
- package/dist/{three-examples-D1P7eEhn.min.js → three-examples-MsJjauyk.min.js} +10 -10
- package/dist/{three-examples-D1SK93ek.js → three-examples-y2GeYlze.js} +2 -20
- package/dist/{three-mesh-ui-C_uSB5dD.js → three-mesh-ui-3nSSizT4.js} +1 -1
- package/dist/{three-mesh-ui-LQ44s0AL.min.js → three-mesh-ui-CIez6qJQ.min.js} +1 -1
- package/dist/{three-mesh-ui-DpATDXwU.umd.cjs → three-mesh-ui-zsOOA5Pq.umd.cjs} +1 -1
- package/dist/{vendor-D0zoswDa.js → vendor-DMZcbVO1.js} +3707 -3527
- package/dist/vendor-sURMCFSI.min.js +1116 -0
- package/dist/{vendor-UCpFAwt1.umd.cjs → vendor-tyBvnMF-.umd.cjs} +39 -39
- package/lib/engine/codegen/register_types.js +0 -2
- package/lib/engine/codegen/register_types.js.map +1 -1
- package/lib/engine/debug/debug_console.js +403 -1
- package/lib/engine/debug/debug_console.js.map +1 -1
- package/lib/engine/engine_components.js +3 -3
- package/lib/engine/engine_components.js.map +1 -1
- package/lib/engine/engine_context.js +2 -0
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_input.d.ts +5 -0
- package/lib/engine/engine_input.js +6 -0
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_license.d.ts +18 -0
- package/lib/engine/engine_license.js +115 -18
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_networking.js +5 -5
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics_rapier.js +1 -1
- package/lib/engine/engine_physics_rapier.js.map +1 -1
- package/lib/engine/engine_serialization_builtin_serializer.js +1 -1
- package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
- package/lib/engine/engine_utils.d.ts +4 -1
- package/lib/engine/engine_utils.js +28 -4
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/extensions/extensions.d.ts +29 -7
- package/lib/engine/extensions/extensions.js.map +1 -1
- package/lib/engine/webcomponents/WebXRButtons.js +13 -5
- package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +4 -5
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.ar-overlay.js +4 -0
- package/lib/engine/webcomponents/needle-engine.ar-overlay.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +1 -1
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/xr/NeedleXRSession.d.ts +1 -1
- package/lib/engine/xr/NeedleXRSession.js +101 -22
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine/xr/TempXRContext.js +12 -2
- package/lib/engine/xr/TempXRContext.js.map +1 -1
- package/lib/engine/xr/usdz.js +6 -2
- package/lib/engine/xr/usdz.js.map +1 -1
- package/lib/engine-components/AlignmentConstraint.d.ts +1 -1
- package/lib/engine-components/AlignmentConstraint.js +1 -1
- package/lib/engine-components/Animation.d.ts +1 -1
- package/lib/engine-components/Animation.js +1 -1
- package/lib/engine-components/Animator.d.ts +1 -1
- package/lib/engine-components/Animator.js +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 +1 -1
- package/lib/engine-components/AudioSource.js +1 -1
- package/lib/engine-components/Camera.d.ts +1 -1
- package/lib/engine-components/Camera.js +5 -2
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CharacterController.d.ts +6 -2
- package/lib/engine-components/CharacterController.js +6 -2
- package/lib/engine-components/CharacterController.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +1 -1
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Component.d.ts +2 -1
- package/lib/engine-components/Component.js +3 -2
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.js +4 -1
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/Joints.d.ts +14 -0
- package/lib/engine-components/Joints.js +14 -0
- package/lib/engine-components/Joints.js.map +1 -1
- package/lib/engine-components/LookAtConstraint.d.ts +1 -1
- package/lib/engine-components/LookAtConstraint.js +1 -1
- package/lib/engine-components/OrbitControls.d.ts +1 -1
- package/lib/engine-components/OrbitControls.js +1 -1
- package/lib/engine-components/Renderer.d.ts +6 -0
- package/lib/engine-components/Renderer.js +6 -0
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/RendererInstancing.js +5 -3
- package/lib/engine-components/RendererInstancing.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.js +18 -14
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.js +15 -7
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SpriteRenderer.d.ts +2 -1
- package/lib/engine-components/SpriteRenderer.js +2 -1
- package/lib/engine-components/SpriteRenderer.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -0
- package/lib/engine-components/api.js +1 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +0 -1
- package/lib/engine-components/codegen/components.js +0 -1
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/timeline/SignalAsset.d.ts +1 -1
- package/lib/engine-components/timeline/SignalAsset.js +1 -1
- package/lib/engine-components/ui/Raycaster.d.ts +3 -2
- package/lib/engine-components/ui/Raycaster.js +3 -2
- package/lib/engine-components/ui/Raycaster.js.map +1 -1
- package/lib/engine-components/ui/RectTransform.d.ts +6 -0
- package/lib/engine-components/ui/RectTransform.js +6 -0
- package/lib/engine-components/ui/RectTransform.js.map +1 -1
- package/lib/engine-components/utils/LookAt.d.ts +2 -1
- package/lib/engine-components/utils/LookAt.js +2 -1
- package/lib/engine-components/utils/LookAt.js.map +1 -1
- package/lib/engine-components/web/CursorFollow.d.ts +1 -1
- package/lib/engine-components/web/CursorFollow.js +1 -1
- package/lib/engine-components/web/HoverAnimation.d.ts +1 -1
- package/lib/engine-components/web/HoverAnimation.js +1 -1
- package/lib/engine-components/web/ViewBox.d.ts +1 -1
- package/lib/engine-components/web/ViewBox.js +1 -1
- package/lib/engine-components/webxr/Avatar.js +2 -0
- package/lib/engine-components/webxr/Avatar.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.js +18 -12
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/package.json +3 -3
- package/plugins/vite/poster-client.js +8 -1
- package/src/engine/codegen/register_types.ts +0 -2
- package/src/engine/debug/debug_console.ts +449 -1
- package/src/engine/engine_components.ts +4 -4
- package/src/engine/engine_context.ts +2 -0
- package/src/engine/engine_input.ts +7 -0
- package/src/engine/engine_license.ts +128 -17
- package/src/engine/engine_networking.ts +5 -5
- package/src/engine/engine_physics.ts +3 -3
- package/src/engine/engine_physics_rapier.ts +1 -1
- package/src/engine/engine_serialization_builtin_serializer.ts +1 -1
- package/src/engine/engine_utils.ts +23 -4
- package/src/engine/extensions/extensions.ts +30 -6
- package/src/engine/webcomponents/WebXRButtons.ts +15 -5
- package/src/engine/webcomponents/needle menu/needle-menu.ts +4 -5
- package/src/engine/webcomponents/needle-engine.ar-overlay.ts +6 -0
- package/src/engine/webcomponents/needle-engine.ts +2 -2
- package/src/engine/xr/NeedleXRSession.ts +114 -24
- package/src/engine/xr/TempXRContext.ts +12 -2
- package/src/engine/xr/usdz.ts +6 -1
- package/src/engine-components/AlignmentConstraint.ts +1 -1
- package/src/engine-components/Animation.ts +1 -1
- package/src/engine-components/Animator.ts +1 -1
- package/src/engine-components/AudioListener.ts +1 -1
- package/src/engine-components/AudioSource.ts +1 -1
- package/src/engine-components/Camera.ts +5 -2
- package/src/engine-components/CharacterController.ts +6 -2
- package/src/engine-components/Collider.ts +1 -1
- package/src/engine-components/Component.ts +5 -4
- package/src/engine-components/DragControls.ts +5 -1
- package/src/engine-components/Joints.ts +14 -0
- package/src/engine-components/LookAtConstraint.ts +1 -1
- package/src/engine-components/OrbitControls.ts +1 -1
- package/src/engine-components/Renderer.ts +6 -0
- package/src/engine-components/RendererInstancing.ts +6 -3
- package/src/engine-components/SceneSwitcher.ts +17 -17
- package/src/engine-components/SpectatorCamera.ts +21 -10
- package/src/engine-components/SpriteRenderer.ts +2 -1
- package/src/engine-components/api.ts +2 -1
- package/src/engine-components/codegen/components.ts +0 -1
- package/src/engine-components/timeline/SignalAsset.ts +1 -1
- package/src/engine-components/ui/Raycaster.ts +3 -2
- package/src/engine-components/ui/RectTransform.ts +6 -0
- package/src/engine-components/utils/LookAt.ts +2 -1
- package/src/engine-components/web/CursorFollow.ts +1 -1
- package/src/engine-components/web/HoverAnimation.ts +1 -1
- package/src/engine-components/web/ViewBox.ts +1 -1
- package/src/engine-components/webxr/Avatar.ts +4 -0
- package/src/engine-components/webxr/WebXR.ts +19 -11
- package/dist/generateMeshBVH.worker-mO20N_b8.js +0 -21
- package/dist/needle-engine.bundle-BGixCtrn.umd.cjs +0 -1647
- package/dist/needle-engine.bundle-S3PalR7r.min.js +0 -1647
- package/dist/vendor-BKGa4GE0.min.js +0 -1116
package/components.needle.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"file":"AlignmentConstraint.ts","name":"AlignmentConstraint","kindString":"Class","category":"Utility","group":"Components","comment":{"kind":"text","shortText":"Aligns and scales the object between two target GameObjects","text":"Aligns this GameObject between two other GameObjects, scaling it to fit the distance.\nYou can use this to create dynamic beams or connectors between objects."},"children":[{"name":"from","kindString":"Property","propertyType":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"to","kindString":"Property","propertyType":"GameObject | undefined","comment":{"kind":"text","shortText":""}}]},{"file":"Animation.ts","name":"Animation","kindString":"Class","category":"Animation and Sequencing","group":"Components","comment":{"kind":"text","shortText":"Play animations"},"children":[{"name":"playAutomatically","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the animation will start playing when the component is enabled"}},{"name":"randomStartTime","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the animation will start at a random time. This is used when the animation component is enabled"}},{"name":"minMaxSpeed","kindString":"Property","propertyType":"Vec2","comment":{"kind":"text","shortText":"The animation min-max speed range"}},{"name":"minMaxOffsetNormalized","kindString":"Property","propertyType":"Vec2","comment":{"kind":"text","shortText":"The normalized offset to start the animation at. This will override startTime"}},{"name":"loop","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Set to true to loop the animation"}},{"name":"clampWhenFinished","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the animation will clamp when finished"}},{"name":"clips","kindString":"Property","propertyType":"AnimationClip[]","comment":{"kind":"text","shortText":""}}]},{"file":"Animator.ts","name":"Animator","kindString":"Class","category":"Animation and Sequencing","group":"Components","comment":{"kind":"text","shortText":"Animation controller and playback component","text":"The Animator component plays and manages animations on a GameObject.\nIt works with an AnimatorController to handle state transitions and animation blending.\nA new AnimatorController can be created from code via `AnimatorController.createFromClips`."},"children":[{"name":"applyRootMotion","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, animation will affect the root transform position and rotation"}},{"name":"hasRootMotion","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Indicates whether this animator contains root motion data"}},{"name":"keepAnimatorControllerStateOnDisable","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, the animator will maintain its state when the component is disabled"}},{"name":"runtimeAnimatorController","kindString":"Property","propertyType":"AnimatorControllerModel | AnimatorController | undefined | null","comment":{"kind":"text","shortText":"Sets or replaces the animator controller for this component.\nHandles binding the controller to this animator instance and ensures\nproper initialization when the controller changes."}}]},{"file":"AudioListener.ts","name":"AudioListener","kindString":"Class","category":"Multimedia","group":"Components","comment":{"kind":"text","shortText":"Audio listener for 3D audio capture","text":"AudioListener represents a listener that can hear audio sources in the scene.\nThis component creates and manages a Three.js three#AudioListener, automatically connecting it\nto the main camera or a Camera in the parent hierarchy."},"children":[]},{"file":"AudioSource.ts","name":"AudioSource","kindString":"Class","category":"Multimedia","group":"Components","comment":{"kind":"text","shortText":"3D audio source with spatial positioning and playback controls","text":"Plays audio clips in the scene, with support for spatial positioning.\n\nThe AudioSource component can play audio files or media streams with\noptions for spatial blending, volume control, looping, and more.\n\nWhen a page loses visibility (tab becomes inactive), audio will automatically\npause unless playInBackground is set to true. On mobile devices, audio always\npauses regardless of this setting. When the page becomes visible again,\npreviously playing audio will resume.\n\nAudioSource also responds to application mute state changes. When the application\nis muted, the volume is set to 0. When unmuted, the volume\nreturns to its previous value."},"children":[{"name":"clip","kindString":"Property","propertyType":"string | MediaStream","comment":{"kind":"text","shortText":"The audio clip to play. Can be a URL string pointing to an audio file or a MediaStream object."}},{"name":"playOnAwake","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, the audio will automatically start playing when the component is enabled.\nWhen false, you must call play() manually to start audio playback."}},{"name":"preload","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, the audio clip will be loaded during initialization rather than when play() is called.\nThis can reduce playback delay but increases initial loading time."}},{"name":"playInBackground","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, audio will continue playing when the browser tab loses focus.\nWhen false, audio will pause when the tab is minimized or not active."}},{"name":"pitch","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Controls the playback rate (speed) of the audio.\nValues greater than 1 increase speed, values less than 1 decrease it.\nThis affects both speed and pitch of the audio."}},{"name":"rollOffMode","kindString":"Property","propertyType":"AudioRolloffMode","comment":{"kind":"text","shortText":"Determines how audio volume decreases with distance from the listener."}}]},{"file":"AxesHelper.ts","name":"AxesHelper","kindString":"Class","category":"Helpers","group":"Components","comment":{"kind":"text","shortText":"Visualizes object axes in the scene","text":"Component that visualizes the axes of an object in the scene.\nRenders colored lines representing the X (red), Y (green) and Z (blue) axes."},"children":[{"name":"length","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The length of each axis line in scene units."}},{"name":"depthTest","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Whether the axes should be occluded by objects in the scene.\nWhen set to false, axes will always appear on top regardless of their depth."}},{"name":"isGizmo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, this helper will only be visible if the debug flag `?gizmos` is enabled."}}]},{"file":"BasicIKConstraint.ts","name":"BasicIKConstraint","kindString":"Class","category":"Animation","group":"Components","comment":{"kind":"text","shortText":"Simple Inverse Kinematics Constraint","text":"BasicIKConstraint positions the GameObject between two target GameObjects (`from` and `to`) with an optional `hint` GameObject to guide the bending direction.\nThis is useful for simple inverse kinematics setups, such as positioning a joint in a limb."},"children":[]},{"file":"BoxHelperComponent.ts","name":"BoxHelperComponent","kindString":"Class","category":"Helpers","group":"Components","comment":{"kind":"text","shortText":"Bounding box helper with intersection tests","text":"A component that creates a bounding box around an object and provides intersection testing functionality.\n\nDebug mode can be enabled with the URL parameter `?debugboxhelper`, which will visualize intersection tests.\nHelper visualization can be enabled with the URL parameter `?gizmos`."},"children":[]},{"file":"Camera.ts","name":"Camera","kindString":"Class","category":"Camera","group":"Components","comment":{"kind":"text","shortText":"Rendering scenes from a specific viewpoint","text":"Camera component that handles rendering from a specific viewpoint in the scene.\nSupports both perspective and orthographic cameras with various rendering options.\nInternally, this component uses PerspectiveCamera and OrthographicCamera three.js objects."},"children":[{"name":"aspect","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"fieldOfView","kindString":"Property","propertyType":"number | undefined","comment":{"kind":"text","shortText":""}},{"name":"nearClipPlane","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":""}},{"name":"farClipPlane","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":""}},{"name":"orthographic","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Determines if the camera should use orthographic projection instead of perspective."}},{"name":"orthographicSize","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The size of the orthographic camera's view volume when in orthographic mode.\nLarger values show more of the scene."}},{"name":"ARBackgroundAlpha","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Controls the transparency level of the camera background in AR mode on supported devices.\nValue from 0 (fully transparent) to 1 (fully opaque)."}},{"name":"cullingMask","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Gets or sets the layers mask that determines which objects this camera will render.\nUses the three.js layers mask convention."}},{"name":"backgroundBlurriness","kindString":"Property","propertyType":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the blurriness of the skybox background.\nValues range from 0 (sharp) to 1 (maximum blur)."}},{"name":"backgroundIntensity","kindString":"Property","propertyType":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the intensity of the skybox background.\nValues range from 0 (dark) to 10 (very bright)."}},{"name":"backgroundRotation","kindString":"Property","propertyType":"Euler | undefined","comment":{"kind":"text","shortText":"Gets or sets the rotation of the skybox background.\nControls the orientation of the environment map."}},{"name":"environmentIntensity","kindString":"Property","propertyType":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the intensity of the environment lighting.\nControls how strongly the environment map affects scene lighting."}},{"name":"targetTexture","kindString":"Property","propertyType":"RenderTexture | null","comment":{"kind":"text","shortText":"Gets or sets the texture that the camera should render to instead of the screen.\nUseful for creating effects like mirrors, portals or custom post processing."}}]},{"file":"CharacterController.ts","name":"CharacterController","kindString":"Class","category":"Character","group":"Components","comment":{"kind":"text","shortText":"Character Movement Controller","text":"CharacterController adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.\nIt is designed for typical character movement in 3D environments."},"children":[{"name":"center","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"height","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"CharacterController.ts","name":"CharacterControllerInput","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":""},"children":[{"name":"controller","kindString":"Property","propertyType":"CharacterController","comment":{"kind":"text","shortText":""}},{"name":"movementSpeed","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"rotationSpeed","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"jumpForce","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"doubleJumpForce","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"animator","kindString":"Property","propertyType":"Animator","comment":{"kind":"text","shortText":""}}]},{"file":"Collider.ts","name":"Collider","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"Physics collider","text":"Collider is the base class for all colliders. A collider is a physical shape that is used to detect collisions with other objects in the scene.\nColliders are used in combination with a Rigidbody to create physical interactions between objects.\nColliders are registered with the physics engine when they are enabled and removed when they are disabled.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"attachedRigidbody","kindString":"Property","propertyType":"Rigidbody | null","comment":{"kind":"text","shortText":"The Rigidbody that this collider is attached to. This handles the physics simulation for this collider."}},{"name":"isTrigger","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When `true` the collider will not be used for collision detection but will still trigger events.\nTrigger colliders can trigger events when other colliders enter their space, without creating a physical response/collision."}},{"name":"sharedMaterial","kindString":"Property","propertyType":"PhysicsMaterial","comment":{"kind":"text","shortText":"The physics material that defines physical properties of the collider such as friction and bounciness."}},{"name":"membership","kindString":"Property","propertyType":"number[]","comment":{"kind":"text","shortText":"The layers that this collider belongs to. Used for filtering collision detection."}},{"name":"filter","kindString":"Property","propertyType":"number[]","comment":{"kind":"text","shortText":"The layers that this collider will interact with. Used for filtering collision detection."}}]},{"file":"Collider.ts","name":"SphereCollider","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"SphereCollider represents a sphere-shaped collision volume.\nUseful for objects that are roughly sph…","text":"SphereCollider represents a sphere-shaped collision volume.\nUseful for objects that are roughly spherical in shape or need a simple collision boundary.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The radius of the sphere collider."}},{"name":"center","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":"The center position of the sphere collider relative to the transform's position."}}]},{"file":"Collider.ts","name":"BoxCollider","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"BoxCollider represents a box-shaped collision volume.\nIdeal for rectangular objects or objects that…","text":"BoxCollider represents a box-shaped collision volume.\nIdeal for rectangular objects or objects that need a simple cuboid collision boundary.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"size","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":"The size of the box collider along each axis."}},{"name":"center","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":"The center position of the box collider relative to the transform's position."}}]},{"file":"Collider.ts","name":"MeshCollider","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"MeshCollider creates a collision shape from a mesh geometry.\nAllows for complex collision shapes th…","text":"MeshCollider creates a collision shape from a mesh geometry.\nAllows for complex collision shapes that match the exact geometry of an object.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"sharedMesh","kindString":"Property","propertyType":"Mesh","comment":{"kind":"text","shortText":"The mesh that is used to create the collision shape.\nIf not set, the collider will try to use the mesh of the object it's attached to."}},{"name":"convex","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When `true` the collider is treated as a solid object without holes.\nSet to `false` if you want this mesh collider to be able to contain other objects."}}]},{"file":"Collider.ts","name":"CapsuleCollider","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).\nId…","text":"CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).\nIdeal for character controllers and objects that need a rounded collision shape.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"center","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":"The center position of the capsule collider relative to the transform's position."}},{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The radius of the capsule's cylindrical body and hemispherical ends."}},{"name":"height","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The total height of the capsule including both hemispherical ends."}}]},{"file":"ContactShadows.ts","name":"ContactShadows","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Display contact shadows on the ground","text":"ContactShadows is a component that allows to display contact shadows in the scene. It has options for darkness, opacity and blur of the shadows.\n\n- Example: https://samples.needle.tools/contact-shadows\n\n## Usage\nYou can use ContactShadows.auto to automatically create a ContactShadows instance for the scene or you can add the component to an object in the scene. Note that the scale of the object will be used to define the size of the shadow area.\n\nContactShadows can also be enabled on the `<needle-engine>` web component directly by adding the `contactshadows` attribute. The value of the attribute will be used as opacity and darkness of the shadows: `<needle-engine contactshadows=\"0.7\">`."},"children":[{"name":"autoFit","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the contact shadows component will be created to fit the whole scene."}},{"name":"darkness","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Darkness of the shadows."}},{"name":"opacity","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Opacity of the shadows."}},{"name":"blur","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Blur of the shadows."}},{"name":"occludeBelowGround","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled objects will not be visible below the shadow plane"}},{"name":"backfaceShadows","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the backfaces of objects will cast shadows as well."}}]},{"file":"DeleteBox.ts","name":"DeleteBox","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Box area that deletes objects entering it","text":"A box-shaped area that can be used to delete objects that get into it. Useful for sandbox-style builders or physics simulations."},"children":[]},{"file":"DeleteBox.ts","name":"Deletable","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Objects with this component can be destroyed by the DeleteBox component."},"children":[]},{"file":"DeviceFlag.ts","name":"DeviceFlag","kindString":"Class","category":"Utilities","group":"Components","comment":{"kind":"text","shortText":"Show or hide GameObject based on device type","text":"Enables or disables the GameObject based on the device type (mobile or desktop).\nYou can use this to show or hide objects depending on whether the user is on a mobile device or a desktop."},"children":[{"name":"visibleOn","kindString":"Property","propertyType":"DeviceType","comment":{"kind":"text","shortText":""}}]},{"file":"DragControls.ts","name":"DragControls","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Enables dragging of objects in 2D or 3D space","text":"DragControls allows you to drag objects around in the scene. It can be used to move objects in 2D (screen space) or 3D (world space).\nDebug mode can be enabled with the URL parameter `?debugdrag`, which shows visual helpers and logs drag operations."},"children":[{"name":"dragMode","kindString":"Property","propertyType":"DragMode","comment":{"kind":"text","shortText":"Determines how and where the object is dragged along. Different modes include\ndragging along a plane, attached to the pointer, or following surface normals."}},{"name":"snapGridResolution","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Snaps dragged objects to a 3D grid with the specified resolution.\nSet to 0 to disable snapping."}},{"name":"keepRotation","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, maintains the original rotation of the dragged object while moving it.\nWhen false, allows the object to rotate freely during dragging."}},{"name":"xrDragMode","kindString":"Property","propertyType":"DragMode","comment":{"kind":"text","shortText":"Determines how and where the object is dragged along while dragging in XR.\nUses a separate setting from regular drag mode for better XR interaction."}},{"name":"xrKeepRotation","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, maintains the original rotation of the dragged object during XR dragging.\nWhen false, allows the object to rotate freely during XR dragging."}},{"name":"xrDistanceDragFactor","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Multiplier that affects how quickly objects move closer or further away when dragging in XR.\nHigher values make distance changes more pronounced.\nThis is similar to mouse acceleration on a screen."}},{"name":"showGizmo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, draws a visual line from the dragged object downwards to the next raycast hit,\nproviding visual feedback about the object's position relative to surfaces below it."}}]},{"file":"DropListener.ts","name":"DropListener","kindString":"Class","category":"Asset Management","group":"Components","comment":{"kind":"text","shortText":"Component to handle drag and drop of files into the scene","text":"The DropListener component is used to listen for drag and drop events in the browser and add the dropped files to the scene\nIt can be used to allow users to drag and drop glTF files into the scene to add new objects.\n\nIf useNetworking is enabled, the DropListener will automatically synchronize dropped files to other connected clients.\nEnable fitIntoVolume to automatically scale dropped objects to fit within the volume defined by fitVolumeSize.\n\n- Example: [DropListener Sample](https://droplistener-zubcksz1veaoo.needle.run/)\n\nThe following events are dispatched by the DropListener:\n- **object-added** - dispatched when a new object is added to the scene\n- **file-dropped** - dispatched when a file is dropped into the scene"},"children":[{"name":"dropArea","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":"When assigned, the DropListener will only accept files that are dropped on this specific object.\nThis allows creating designated drop zones in your scene."}},{"name":"fitIntoVolume","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, dropped objects will be automatically scaled to fit within the volume defined by fitVolumeSize.\nUseful for ensuring dropped models appear at an appropriate scale.\n\n**Tip**: Use the handy `fitObjectIntoVolume` function (`import { fitObjectIntoVolume } from \"@needle-tools/engine\"`) for custom fitting needs."}},{"name":"fitVolumeSize","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"Defines the dimensions of the volume that dropped objects will be scaled to fit within.\nOnly used when fitIntoVolume is enabled."}},{"name":"placeAtHitPosition","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, dropped objects will be positioned at the point where the cursor hit the scene.\nWhen disabled, objects will be placed at the origin of the DropListener."}},{"name":"useNetworking","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, the DropListener will automatically synchronize dropped files to other connected clients.\nWhen a file is dropped locally, it will be uploaded to blob storage and the URL will be shared with other clients."}},{"name":"onDropped","kindString":"Property","propertyType":"EventList<DropListenerOnDropArguments>","comment":{"kind":"text","shortText":"Event list that gets invoked after a file has been successfully added to the scene.\nReceives DropListenerOnDropArguments containing the added object and related information."}}]},{"file":"Duplicatable.ts","name":"Duplicatable","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Duplicates a GameObject on pointer events","text":"The Duplicatable component is used to duplicate a assigned GameObject when a pointer event occurs on the object."},"children":[{"name":"parent","kindString":"Property","propertyType":"GameObject | null","comment":{"kind":"text","shortText":"Duplicates will be parented into the set object. If not defined, this GameObject will be used as parent."}},{"name":"object","kindString":"Property","propertyType":"GameObject | null","comment":{"kind":"text","shortText":"The object to be duplicated. If no object is assigned then the object the Duplicatable component is attached to will be used for cloning."}},{"name":"limitCount","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"The maximum number of objects that can be duplicated in the interval."}}]},{"file":"EventTrigger.ts","name":"EventTrigger","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Triggers events on pointer interactions","text":"The EventTrigger component is used to trigger events when certain pointer events occur on the GameObject.\nIt implements the IPointerEventHandler interface and can be used to expose events to the user in the editor without writing code."},"children":[{"name":"triggers","kindString":"Property","propertyType":"Array<TriggerEvent>","comment":{"kind":"text","shortText":"A list of events that should be triggered when a pointer event occurs on the GameObject."}}]},{"file":"Fog.ts","name":"Fog","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"near","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"far","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"color","kindString":"Property","propertyType":"Color","comment":{"kind":"text","shortText":""}}]},{"file":"Gizmos.ts","name":"BoxGizmo","kindString":"Class","category":"Helpers","group":"Components","comment":{"kind":"text","shortText":"Display a box around the object","text":"BoxGizmo is a component that displays a box around the object in the scene. It can optionally expand to the object's bounds."},"children":[{"name":"objectBounds","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"color","kindString":"Property","propertyType":"Color","comment":{"kind":"text","shortText":""}},{"name":"isGizmo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"GridHelper.ts","name":"GridHelper","kindString":"Class","category":"Helpers","group":"Components","comment":{"kind":"text","shortText":"GridHelper is a component that allows to display a grid in the scene."},"children":[{"name":"isGizmo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"color0","kindString":"Property","propertyType":"Color | ColorRepresentation","comment":{"kind":"text","shortText":""}},{"name":"color1","kindString":"Property","propertyType":"Color | ColorRepresentation","comment":{"kind":"text","shortText":""}}]},{"file":"GroundProjection.ts","name":"GroundProjectedEnv","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Projects the environment map onto the ground","text":"GroundProjectedEnv creates a ground projection of the current environment map.\n\n- Example https://engine.needle.tools/samples/ground-projection"},"children":[{"name":"applyOnAwake","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true the projection will be created on awake and onEnable"}},{"name":"autoFit","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the position of the projected environment will be adjusted to be centered in the scene (and ground level)."}},{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Radius of the projection sphere. Set it large enough so the camera stays inside (make sure the far plane is also large enough)"}},{"name":"height","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"How far the camera that took the photo was above the ground. A larger value will magnify the downward part of the image."}},{"name":"arBlending","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Blending factor for the AR projection being blended with the scene background.\n0 = not visible in AR - 1 = blended with real world background.\nValues between 0 and 1 control the smoothness of the blend while lower values result in smoother blending."}}]},{"file":"Interactable.ts","name":"UsageMarker","kindString":"Class","comment":{"kind":"text","shortText":"Marks an object as currently being interacted with.\nFor example, DragControls set this on the dragg…","text":"Marks an object as currently being interacted with.\nFor example, DragControls set this on the dragged object to prevent DeleteBox from deleting it."},"children":[]},{"file":"Interactable.ts","name":"Interactable","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Joints.ts","name":"Joint","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"Connect two Rigidbodies"},"children":[{"name":"connectedBody","kindString":"Property","propertyType":"Rigidbody","comment":{"kind":"text","shortText":""}}]},{"file":"Joints.ts","name":"FixedJoint","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Joints.ts","name":"HingeJoint","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"anchor","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"axis","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"LODGroup.ts","name":"LODGroup","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Level of Detail Group for optimizing rendering"},"children":[{"name":"localReferencePoint","kindString":"Property","propertyType":"Vector3 | undefined","comment":{"kind":"text","shortText":""}},{"name":"lodModels","kindString":"Property","propertyType":"LODModel[]","comment":{"kind":"text","shortText":""}}]},{"file":"Light.ts","name":"Light","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Light component for various light types and shadow settings","text":"The Light component creates a light source in the scene.\nSupports directional, spot, and point light types with various customization options.\nLights can cast shadows with configurable settings and can be set to baked or realtime rendering.\n\nDebug mode can be enabled with the URL parameter `?debuglights`, which shows\nadditional console output and visual helpers for lights."},"children":[{"name":"type","kindString":"Property","propertyType":"LightType","comment":{"kind":"text","shortText":"The type of light (spot, directional, point, etc.)"}},{"name":"color","kindString":"Property","propertyType":"Color","comment":{"kind":"text","shortText":"The color of the light"}},{"name":"shadowNearPlane","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The near plane distance for shadow projection"}},{"name":"shadowBias","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Shadow bias value to reduce shadow acne and peter-panning"}},{"name":"shadowNormalBias","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Shadow normal bias to reduce shadow acne on sloped surfaces"}},{"name":"shadows","kindString":"Property","propertyType":"LightShadows","comment":{"kind":"text","shortText":"Shadow casting mode (None, Hard, or Soft)"}},{"name":"lightmapBakeType","kindString":"Property","propertyType":"LightmapBakeType","comment":{"kind":"text","shortText":"Determines if the light contributes to realtime lighting, baked lighting, or a mix"}},{"name":"intensity","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Brightness of the light. In WebXR experiences, the intensity is automatically\nadjusted based on the AR session scale to maintain consistent lighting."}}]},{"file":"LookAtConstraint.ts","name":"LookAtConstraint","kindString":"Class","category":"Camera Controls","group":"Components","comment":{"kind":"text","shortText":"Look At Constraint for OrbitControls","text":"A LookAtConstraint is used by OrbitControls to make the camera look at a target.\nThis component is used by OrbitControls internally."},"children":[{"name":"constraintActive","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true the constraint is active."}},{"name":"locked","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true the look at is locked to the position of the assigned sources."}},{"name":"sources","kindString":"Property","propertyType":"Object3D[]","comment":{"kind":"text","shortText":"The sources to look at."}}]},{"file":"NeedleMenu.ts","name":"NeedleMenu","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Configuration component for the Needle Menu","text":"Provides configuration options for the built-in Needle Menu.\nNeedle Menu uses HTML in 2D mode, and automatically switches to a 3D menu in VR/AR mode.\n\nControls display options, button visibility, and menu positioning.\nFrom code, you can access the menu via Context.menu."},"children":[{"name":"position","kindString":"Property","propertyType":"\"top\" | \"bottom\"","comment":{"kind":"text","shortText":"Determines the vertical positioning of the menu on the screen"}},{"name":"showNeedleLogo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Controls the visibility of the Needle logo in the menu (requires PRO license)"}},{"name":"showSpatialMenu","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, displays the menu in VR/AR mode when the user looks up"}},{"name":"createFullscreenButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, adds a fullscreen toggle button to the menu"}},{"name":"createMuteButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, adds an audio mute/unmute button to the menu"}},{"name":"createQRCodeButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, adds a button to display a QR code for sharing the application.\nThe QR code is only displayed on desktop devices."}}]},{"file":"NestedGltf.ts","name":"NestedGltf","kindString":"Class","category":"Asset Management","group":"Components","comment":{"kind":"text","shortText":"Loads and instantiates a nested glTF file","text":"The nested gltf is a component that is used to load a gltf file when the component becomes active (start)\nIt will load the gltf file and instantiate it as a child of the parent of the GameObject that has this component"},"children":[{"name":"filePath","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"A reference to the gltf file that should be loaded"}},{"name":"loaded","kindString":"Property","propertyType":"EventList<{ component: NestedGltf, instance: any, asset: AssetReference }>","comment":{"kind":"text","shortText":"Invoked when the nested glTF file has been instantiated"}}]},{"file":"Networking.ts","name":"Networking","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Networking configuration","text":"Provides configuration to the built-in networking system.\nThis component supplies websocket URLs for establishing connections.\nIt implements the INetworkingWebsocketUrlProvider interface."},"children":[{"name":"url","kindString":"Property","propertyType":"string | null","comment":{"kind":"text","shortText":"The websocket URL to connect to for networking functionality.\nCan be a complete URL or a relative path that will be resolved against the current origin."}},{"name":"urlParameterName","kindString":"Property","propertyType":"string | null","comment":{"kind":"text","shortText":"Name of the URL parameter that can override the websocket connection URL.\nWhen set, the URL will be overridden by the parameter value from the browser URL.\nFor example, with `urlParameterName=\"ws\"`, adding `?ws=ws://localhost:8080` to the browser URL will override the connection URL."}},{"name":"localhost","kindString":"Property","propertyType":"string | null","comment":{"kind":"text","shortText":"Alternative URL to use when running on a local network.\nThis is particularly useful for development, when the server is running on the same machine as the client."}}]},{"file":"OffsetConstraint.ts","name":"OffsetConstraint","kindString":"Class","category":"Constraints","group":"Components","comment":{"kind":"text","shortText":"Maintains positional and rotational offset relative to another object","text":"OffsetConstraint component allows an object to maintain a specified positional and rotational offset\nrelative to another object, with options for alignment and leveling."},"children":[{"name":"referenceSpace","kindString":"Property","propertyType":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"from","kindString":"Property","propertyType":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"positionOffset","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"rotationOffset","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"OrbitControls.ts","name":"OrbitControls","kindString":"Class","category":"Camera","group":"Components","comment":{"kind":"text","shortText":"Camera controller using three.js OrbitControls","text":"The OrbitControls component is used to control a camera using the [OrbitControls from three.js](https://threejs.org/docs/#examples/en/controls/OrbitControls) library.\nThe three OrbitControls object can be accessed via the `controls` property.\nThe object being controlled by the OrbitControls (usually the camera) can be accessed via the `controllerObject` property."},"children":[{"name":"autoTarget","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled OrbitControls will automatically raycast find a look at target in start"}},{"name":"autoFit","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the scene will be automatically fitted into the camera view in onEnable"}},{"name":"enableRotate","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be rotated"}},{"name":"autoRotate","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera will rotate automatically"}},{"name":"autoRotateSpeed","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The speed at which the camera will rotate automatically. Will only be used when `autoRotate` is enabled"}},{"name":"minAzimuthAngle","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The minimum azimuth angle in radians"}},{"name":"maxAzimuthAngle","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The maximum azimuth angle in radians"}},{"name":"minPolarAngle","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The minimum polar angle in radians"}},{"name":"maxPolarAngle","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The maximum polar angle in radians"}},{"name":"enableKeys","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be moved using keyboard keys. The keys are defined in the `controls.keys` property"}},{"name":"enableDamping","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera movement will be damped"}},{"name":"dampingFactor","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The damping factor for the camera movement. For more information see the [three.js documentation](https://threejs.org/docs/#examples/en/controls/OrbitControls.dampingFactor)"}},{"name":"enableZoom","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be zoomed"}},{"name":"minZoom","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The minimum zoom level"}},{"name":"maxZoom","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The maximum zoom level"}},{"name":"zoomSpeed","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Sets the zoom speed of the OrbitControls"}},{"name":"enablePan","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be panned"}},{"name":"lookAtConstraint","kindString":"Property","propertyType":"LookAtConstraint | null","comment":{"kind":"text","shortText":"Assigning a LookAtConstraint will make the camera look at the constraint source"}},{"name":"lookAtConstraint01","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The weight of the first lookAtConstraint source"}},{"name":"allowInterrupt","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true user input interrupts the camera from animating to a target"}},{"name":"middleClickToFocus","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true the camera will focus on the target when the middle mouse button is clicked"}},{"name":"doubleClickToFocus","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true the camera will focus on the target when the left mouse button is double clicked"}},{"name":"clickBackgroundToFitScene","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"When enabled the camera will fit the scene to the camera view when the background is clicked the specified number of times within a short time"}},{"name":"targetBounds","kindString":"Property","propertyType":"Object3D | null","comment":{"kind":"text","shortText":""}}]},{"file":"PlayerColor.ts","name":"PlayerColor","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Assigns a unique color to the player object","text":"PlayerColor assigns a unique color for each user in the room to the object it is attached to.\nThe color is generated based on the user's ID."},"children":[]},{"file":"ReflectionProbe.ts","name":"ReflectionProbe","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Provides reflection data to materials","text":"A ReflectionProbe provides reflection data to materials within its defined area.\n\n- Sample: http://samples.needle.tools/reflection-probes"},"children":[{"name":"center","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"size","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"Renderer.ts","name":"Renderer","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":""},"children":[{"name":"receiveShadows","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"shadowCastingMode","kindString":"Property","propertyType":"ShadowCastingMode","comment":{"kind":"text","shortText":""}},{"name":"lightmapIndex","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"lightmapScaleOffset","kindString":"Property","propertyType":"Vector4","comment":{"kind":"text","shortText":""}},{"name":"enableInstancing","kindString":"Property","propertyType":"boolean | boolean[] | undefined","comment":{"kind":"text","shortText":"If the renderer should use instancing\nIf this is a boolean (true) all materials will be instanced or (false) none of them.\nIf this is an array of booleans the materials will be instanced based on the index of the material."}},{"name":"renderOrder","kindString":"Property","propertyType":"number[] | undefined","comment":{"kind":"text","shortText":""}},{"name":"allowOcclusionWhenDynamic","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"probeAnchor","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"reflectionProbeUsage","kindString":"Property","propertyType":"ReflectionProbeUsage","comment":{"kind":"text","shortText":""}}]},{"file":"Renderer.ts","name":"MeshRenderer","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Renderer.ts","name":"SkinnedMeshRenderer","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"RigidBody.ts","name":"Rigidbody","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"Rigidbody for physical interactions","text":"A Rigidbody is used together with a Collider to create physical interactions between objects in the scene.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"children":[{"name":"mass","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"By default the mass will be automatically calculated (see `autoMass`) by the physics engine using the collider sizes\nTo set the mass manually you can either set the `mass` value or set `autoMass` to `false`"}},{"name":"useGravity","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Use gravity is a flag that can be set to false to disable gravity for a specific rigid-body."}},{"name":"centerOfMass","kindString":"Property","propertyType":"Vector3","comment":{"kind":"text","shortText":"The center of mass is the point around which the mass of the rigid-body is evenly distributed. It is used to compute the torque applied to the rigid-body when forces are applied to it."}},{"name":"constraints","kindString":"Property","propertyType":"RigidbodyConstraints","comment":{"kind":"text","shortText":"Constraints are used to lock the position or rotation of an object in a specific axis."}},{"name":"isKinematic","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"IsKinematic is a flag that can be set to true to make a rigid-body kinematic. Kinematic rigid-bodies are not affected by forces and collisions. They are meant to be animated by the user."}},{"name":"drag","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Drag is a force that resists the motion of the rigid-body. It is applied to the center-of-mass of the rigid-body."}},{"name":"angularDrag","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Angular drag is a force that resists the rotation of the rigid-body. It is applied to the center-of-mass of the rigid-body."}},{"name":"detectCollisions","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Detect collisions is a flag that can be set to false to disable collision detection for a specific rigid-body."}},{"name":"sleepThreshold","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The sleeping threshold is the minimum velocity below which a dynamic rigid-body will be put to sleep by the physics engine."}},{"name":"collisionDetectionMode","kindString":"Property","propertyType":"CollisionDetectionMode","comment":{"kind":"text","shortText":""}}]},{"file":"SceneSwitcher.ts","name":"SceneSwitcher","kindString":"Class","category":"Asset Management","group":"Components","comment":{"kind":"text","shortText":"Dynamically loads and switches between multiple scenes","text":"The SceneSwitcher can be used to dynamically load and unload extra content\nAvailable scenes are defined in the `scenes` array.\nLoaded scenes will be added to the SceneSwitcher's GameObject as a child and removed when another scene is loaded by the same SceneSwitcher.\nLive Examples\n- [Multi Scenes Sample](https://engine.needle.tools/samples/multi-scene-example) (source code available)\n- [Needle Website](https://needle.tools)\n- [Songs Of Cultures](https://app.songsofcultures.com)\n\n### Interfaces\nUse the ISceneEventListener interface to listen to scene open and closing events with the ability to modify transitions and stall the scene loading process.\n\n### Events\n- `loadscene-start`: Called when a scene starts loading\n- `loadscene-finished`: Called when a scene finished loading\n- `progress`: Called when a scene is loading and the progress changes\n- `scene-opened`: Called when a scene is loaded and added to the SceneSwitcher's GameObject"},"children":[{"name":"autoLoadFirstScene","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the first scene will be loaded when the SceneSwitcher becomes active"}},{"name":"scenes","kindString":"Property","propertyType":"AssetReference[]","comment":{"kind":"text","shortText":"The scenes that can be loaded by the SceneSwitcher."}},{"name":"loadingScene","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"The scene that is displayed while a scene is loading."}},{"name":"queryParameterName","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"the url parameter that is set/used to store the currently loaded scene in, set to \"\" to disable"}},{"name":"useSceneName","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled the scene name will be used as the query parameter (otherwise the scene index will be used)\nNeeds `queryParameterName` set"}},{"name":"clamp","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the current scene index will be clamped to the scenes array bounds.\nFor example when the last scene is loaded and `clamp` is true then trying to load the `next()` scene will not change the scene.\nWhen `clamp` is false and the last scene is loaded then the first scene will be loaded instead."}},{"name":"useHistory","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled the new scene is pushed to the browser navigation history, only works with a valid query parameter set"}},{"name":"useKeyboard","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled you can switch between scenes using keyboard left, right, A and D or number keys"}},{"name":"useSwipe","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled you can switch between scenes using swipe (mobile only)"}},{"name":"useSceneLighting","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled will automatically apply the environment scene lights"}},{"name":"useSceneBackground","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled will automatically apply the skybox from the loaded scene"}},{"name":"preloadNext","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"how many scenes after the currently active scene should be preloaded"}},{"name":"preloadPrevious","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"how many scenes before the currently active scene should be preloaded"}},{"name":"preloadConcurrent","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"how many scenes can be loaded in parallel"}},{"name":"createMenuButtons","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled will create a button for the Needle menu to switch to the next or previous scene"}},{"name":"sceneLoadingStart","kindString":"Property","propertyType":"EventList<LoadSceneEvent>","comment":{"kind":"text","shortText":"Called when a scene starts loading"}},{"name":"sceneLoadingProgress","kindString":"Property","propertyType":"EventList<ProgressEvent>","comment":{"kind":"text","shortText":""}},{"name":"sceneLoaded","kindString":"Property","propertyType":"EventList<SceneSwitcher>","comment":{"kind":"text","shortText":"The sceneLoaded event is called when a scene/glTF is loaded and added to the scene"}}]},{"file":"ScreenCapture.ts","name":"ScreenCapture","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Share screen, camera or microphone in a networked room","text":"The ScreenCapture component allows you to share your screen, camera or microphone with other users in the networked room.\nWhen the stream is active the video will be displayed on the VideoPlayer component attached to the same GameObject.\n\nNote: For debugging append `?debugscreensharing` to the URL to see more information in the console.\n\nBy default the component will start sharing the screen when the user clicks on the object this component is attached to. You can set device This behaviour can be disabled by setting `allowStartOnClick` to false.\nIt is also possible to start the stream manually from your code by calling the share method."},"children":[{"name":"allowStartOnClick","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the stream will start when the user clicks on the object this component is attached to\nIt is also possible to start the stream manually from your code by calling the share method\nTo modify what type of device is shared you can set the device property."}},{"name":"autoConnect","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the stream will start when this component becomes active (enabled in the scene)"}},{"name":"videoPlayer","kindString":"Property","propertyType":"VideoPlayer | undefined","comment":{"kind":"text","shortText":"If a VideoPlayer component is assigned to this property the video will be displayed on the VideoPlayer component."}},{"name":"device","kindString":"Property","propertyType":"ScreenCaptureDeviceTypes","comment":{"kind":"text","shortText":"Which streaming device type should be used when starting to share (if share is called without a device option). Options are Screen, Camera, Microphone.\nThis is e.g. used if `allowStartOnClick` is enabled and the user clicks on the object."}},{"name":"deviceName","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"If assigned the device the device will be selected by this id or label when starting to share.\nNote: This is only supported for `Camera` devices"}}]},{"file":"SeeThrough.ts","name":"SeeThrough","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Makes objects fade out when obscuring a reference point from the camera","text":"Makes the object fade out when it is obscuring the reference point from the camera. This component can be put on any object in the scene. It will affect all Renderer components on the same object and child objects.\n\nUseful for e.g. making walls transparent when the camera is outside or hiding object's that would otherwise block the view.\n\nRequires a Renderer component on the same object or a child object.\n\n- Example https://see-through-walls-z23hmxbz1kjfjn.needle.run/"},"children":[{"name":"referencePoint","kindString":"Property","propertyType":"Object3D | null","comment":{"kind":"text","shortText":"Assign a reference point - if this point will be obscured from the camera by this object then this object will fade out.\nIf no reference point is assigned the scene's root object will be used as reference point."}},{"name":"fadeDuration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Fade Duration in seconds"}},{"name":"minAlpha","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Minimum alpha value when fading out (0-1)"}},{"name":"useAlphaHash","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When useAlphaHash is enabled the object will fade out using alpha hashing, this means the object can stay opaque. If disabled the object will set to be transparent when fading out."}},{"name":"overrideAlpha","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Override the alpha value, -1 means no override"}},{"name":"autoUpdate","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"ShadowCatcher.ts","name":"ShadowCatcher","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Creates a shadow mask or a light occluder","text":"ShadowCatcher can be added to an Object3D to make it render shadows (or light) in the scene. It can also be used to create a shadow mask, or to occlude light.\nIf the GameObject is a Mesh, it will apply a shadow-catching material to it - otherwise it will create a quad with the shadow-catching material.\n\nNote that ShadowCatcher meshes are not raycastable by default; if you want them to be raycastable, change the layers in `onEnable()`."},"children":[{"name":"mode","kindString":"Property","propertyType":"ShadowMode","comment":{"kind":"text","shortText":""}},{"name":"shadowColor","kindString":"Property","propertyType":"RGBAColor","comment":{"kind":"text","shortText":""}}]},{"file":"Skybox.ts","name":"RemoteSkybox","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Sets the skybox or environment texture of a scene","text":"RemoteSkybox is a component that allows you to set the skybox or environment texture of a scene from a URL, a local file or a static skybox name.\nIt supports .hdr, .exr, .jpg, .png files.\n\n### Events\n- `dropped-unknown-url`: Emitted when a file is dropped on the scene. The event detail contains the sender, the url and a function to apply the url."},"children":[{"name":"url","kindString":"Property","propertyType":"MagicSkyboxName | AnyString","comment":{"kind":"text","shortText":"URL to a remote skybox.\nTo update the skybox/environment map use `setSkybox(url)`.\n\nThe url can also be set to a magic skybox name.\nMagic name options are: \"quicklook\", \"quicklook-ar\", \"studio\", \"blurred-skybox\".\nThese will resolve to built-in skyboxes hosted on the Needle CDN that are static, optimized for the web and will never change."}},{"name":"allowDrop","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled a user can drop a link to a skybox image on the scene to set the skybox."}},{"name":"background","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the skybox will be set as the background of the scene."}},{"name":"environment","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the skybox will be set as the environment of the scene (to be used as environment map for reflections and lighting)"}},{"name":"allowNetworking","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled dropped skybox urls (or assigned skybox urls) will be networked to other users in the same networked room."}}]},{"file":"SmoothFollow.ts","name":"SmoothFollow","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Smoothly follows a target object","text":"SmoothFollow makes the Object3D (`GameObject`) smoothly follow another target Object3D.\nIt can follow the target's position, rotation, or both."},"children":[{"name":"target","kindString":"Property","propertyType":"Object3D | null","comment":{"kind":"text","shortText":"The target to follow. If null, the GameObject will not move."}},{"name":"followFactor","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"The factor to smoothly follow the target's position.\nThe value is clamped between 0 and 1. If 0, the GameObject will not follow the target's position."}},{"name":"rotateFactor","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"The factor to smoothly follow the target's rotation.\nThe value is clamped between 0 and 1. If 0, the GameObject will not follow the target's rotation."}},{"name":"positionAxes","kindString":"Property","propertyType":"Axes","comment":{"kind":"text","shortText":""}}]},{"file":"SpatialTrigger.ts","name":"SpatialTriggerReceiver","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"Receives spatial trigger events","text":"Component that receives and responds to spatial events, like entering or exiting a trigger zone.\nUsed in conjunction with SpatialTrigger to create interactive spatial events."},"children":[{"name":"triggerMask","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Bitmask determining which triggers this receiver responds to\nOnly triggers with matching masks will interact with this receiver"}},{"name":"onEnter","kindString":"Property","propertyType":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked when this object enters a trigger zone"}},{"name":"onStay","kindString":"Property","propertyType":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked continuously while this object is inside a trigger zone"}},{"name":"onExit","kindString":"Property","propertyType":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked when this object exits a trigger zone"}}]},{"file":"SpatialTrigger.ts","name":"SpatialTrigger","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"A spatial trigger component that detects objects within a box-shaped area.\nUsed to trigger events w…","text":"A spatial trigger component that detects objects within a box-shaped area.\nUsed to trigger events when objects enter, stay in, or exit the defined area"},"children":[{"name":"triggerMask","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Bitmask determining which receivers this trigger affects.\nOnly receivers with matching masks will be triggered."}}]},{"file":"SpectatorCamera.ts","name":"SpectatorCamera","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Spectator camera for following other users","text":"Provides functionality to follow and spectate other users in a networked environment.\nHandles camera switching, following behavior, and network synchronization for spectator mode.\n\nDebug mode can be enabled with the URL parameter `?debugspectator`, which provides additional console output."},"children":[{"name":"useKeys","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, pressing F will send a request to all connected users to follow the local player.\nPressing ESC will stop spectating."}}]},{"file":"SpriteRenderer.ts","name":"SpriteRenderer","kindString":"Class","category":"Sprites","group":"Components","comment":{"kind":"text","shortText":"The sprite renderer renders a sprite on a GameObject using an assigned spritesheet (SpriteData).\n\n-…","text":"The sprite renderer renders a sprite on a GameObject using an assigned spritesheet (SpriteData).\n\n- Example: https://engine.needle.tools/samples/spritesheet-animation"},"children":[{"name":"drawMode","kindString":"Property","propertyType":"SpriteDrawMode","comment":{"kind":"text","shortText":""}},{"name":"size","kindString":"Property","propertyType":"Vec2","comment":{"kind":"text","shortText":""}},{"name":"color","kindString":"Property","propertyType":"RGBAColor","comment":{"kind":"text","shortText":""}},{"name":"sharedMaterial","kindString":"Property","propertyType":"Material","comment":{"kind":"text","shortText":"The material that is used to render the sprite"}},{"name":"transparent","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"cutoutThreshold","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"castShadows","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"renderOrder","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"toneMapped","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"SyncedCamera.ts","name":"SyncedCamera","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Syncs camera position and rotation of users in a networked room","text":"SyncedCamera is a component that syncs the camera position and rotation of all users in the room.\nA prefab can be set to represent the remote cameras visually in the scene."},"children":[{"name":"cameraPrefab","kindString":"Property","propertyType":"Object3D | null | AssetReference","comment":{"kind":"text","shortText":"The prefab to visually represent the remote cameras in the scene."}}]},{"file":"SyncedRoom.ts","name":"SyncedRoom","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Joins a networked room based on URL parameters or a random room","text":"SyncedRoom is a behaviour that will attempt to join a networked room based on the URL parameters or a random room.\nIt will also create a button in the menu to join or leave the room.\nYou can also join a networked room by calling the core methods like `this.context.connection.joinRoom(\"roomName\")`."},"children":[{"name":"roomName","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"The name of the room to join."}},{"name":"urlParameterName","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"The URL parameter name to use for the room name. E.g. if set to \"room\" the URL will look like `?room=roomName`."}},{"name":"joinRandomRoom","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the room will be joined automatically when this component becomes active."}},{"name":"requireRoomParameter","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true and no room parameter is found in the URL then no room will be joined."}},{"name":"autoRejoin","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the room will be rejoined automatically when disconnected."}},{"name":"createJoinButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, a join/leave room button will be created in the menu."}},{"name":"createViewOnlyButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, a join/leave room button for the view only URL will be created in the menu."}},{"name":"roomPrefix","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"The room prefix to use for the room name. E.g. if set to \"room_\" and the room name is \"name\" the final room name will be \"room_name\"."}}]},{"file":"SyncedTransform.ts","name":"SyncedTransform","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Synchronizes object transform over the network with ownership management","text":"SyncedTransform synchronizes the position and rotation of a game object over the network.\nIt handles ownership transfer, interpolation, and network state updates automatically."},"children":[]},{"file":"TestRunner.ts","name":"TestRunner","kindString":"Class","comment":{"kind":"text","shortText":"The TestRunner component is used to run tests when the scene starts\n @internal"},"children":[]},{"file":"TestRunner.ts","name":"TestSimulateUserData","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"TransformGizmo.ts","name":"TransformGizmo","kindString":"Class","category":"Helpers","group":"Components","comment":{"kind":"text","shortText":"Object manipulation gizmo for translating, rotating, and scaling","text":"TransformGizmo displays manipulation controls for translating, rotating, and scaling objects in the scene.\nIt wraps three.js TransformControls and provides keyboard shortcuts for changing modes and settings."},"children":[{"name":"isGizmo","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true, this is considered a helper gizmo and will only be shown if showGizmos is enabled in engine parameters."}},{"name":"translationSnap","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Specifies the translation grid snap value in world units.\nApplied when holding Shift while translating an object."}},{"name":"rotationSnapAngle","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Specifies the rotation snap angle in degrees.\nApplied when holding Shift while rotating an object."}},{"name":"scaleSnap","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Specifies the scale snapping value.\nApplied when holding Shift while scaling an object."}}]},{"file":"VideoPlayer.ts","name":"VideoPlayer","kindString":"Class","category":"Multimedia","group":"Components","comment":{"kind":"text","shortText":"Plays video clips from URLs or streams","text":"The VideoPlayer component can be used to playback video clips from urls, streams or m3u8 playlists (livestreams)"},"children":[{"name":"playOnAwake","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When true the video will start playing as soon as the component is enabled"}},{"name":"aspectMode","kindString":"Property","propertyType":"AspectMode","comment":{"kind":"text","shortText":"The aspect mode to use for the video. If"}},{"name":"clip","kindString":"Property","propertyType":"string | MediaStream | null","comment":{"kind":"text","shortText":""}},{"name":"source","kindString":"Property","propertyType":"VideoSource","comment":{"kind":"text","shortText":""}},{"name":"renderMode","kindString":"Property","propertyType":"VideoRenderMode","comment":{"kind":"text","shortText":""}},{"name":"targetMaterialProperty","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":""}},{"name":"targetMaterialRenderer","kindString":"Property","propertyType":"Renderer","comment":{"kind":"text","shortText":""}},{"name":"targetTexture","kindString":"Property","propertyType":"Texture","comment":{"kind":"text","shortText":""}},{"name":"time","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"isLooping","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"audioOutputMode","kindString":"Property","propertyType":"VideoAudioOutputMode","comment":{"kind":"text","shortText":""}}]},{"file":"Voip.ts","name":"Voip","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"Voice over IP for networked audio communication","text":"The Voice over IP component (VoIP) allows you to send and receive audio streams to other users in the same networked room.\nIt requires a networking connection to be working (e.g. by having an active SyncedRoom component in the scene or by connecting to a room manually)."},"children":[{"name":"autoConnect","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, VoIP will start when a room is joined or when this component is enabled while already in a room."}},{"name":"runInBackground","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, VoIP will stay connected even when the browser tab is not focused/active anymore."}},{"name":"createMenuButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a menu button will be created to allow the user to toggle VoIP on and off."}}]},{"file":"AvatarBlink_Simple.ts","name":"AvatarBlink_Simple","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"eyes","kindString":"Property","propertyType":"Object3D[]","comment":{"kind":"text","shortText":""}},{"name":"lastBlinkTime","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"blinkLength","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"eyesOpen","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"AvatarEyeLook_Rotation.ts","name":"AvatarEyeLook_Rotation","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"head","kindString":"Property","propertyType":"GameObject | null","comment":{"kind":"text","shortText":""}},{"name":"eyes","kindString":"Property","propertyType":"GameObject[] | null","comment":{"kind":"text","shortText":""}},{"name":"target","kindString":"Property","propertyType":"Object3D | null","comment":{"kind":"text","shortText":""}}]},{"file":"Avatar_Brain_LookAt.ts","name":"Avatar_Brain_LookAt","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Avatar_MouthShapes.ts","name":"Avatar_MouthShapes","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"idle","kindString":"Property","propertyType":"Object3D[]","comment":{"kind":"text","shortText":""}},{"name":"talking","kindString":"Property","propertyType":"Object3D[]","comment":{"kind":"text","shortText":""}}]},{"file":"Avatar_MustacheShake.ts","name":"Avatar_MustacheShake","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"LogStats.ts","name":"LogStats","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"GltfExport.ts","name":"GltfExportBox","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"GltfExport.ts","name":"GltfExport","kindString":"Class","category":"Asset Management","group":"Components","comment":{"kind":"text","shortText":"Export selected 3D objects to glTF format","text":"GltfExport is a component that enables exporting selected 3D objects from the scene to the glTF format.\nYou can specify whether to export in binary format (.glb) or JSON format (.gltf), and select specific objects to include in the export.\nThe exported glTF file can be used in various 3D applications and engines that support the glTF standard."},"children":[{"name":"binary","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"objects","kindString":"Property","propertyType":"Object3D[]","comment":{"kind":"text","shortText":""}}]},{"file":"USDZExporter.ts","name":"USDZExporter","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Export 3D objects as USDZ files for QuickLook","text":"Exports the current scene or a specific object as USDZ file and opens it in QuickLook on iOS/iPadOS/visionOS.\nThe USDZ file is generated using the Needle Engine ThreeUSDZExporter.\nThe exporter supports various extensions to add custom behaviors and interactions to the USDZ file.\nThe exporter can automatically collect Animations and AudioSources and export them as playing at the start.\nThe exporter can also add a custom QuickLook overlay with a call to action button and custom branding."},"children":[{"name":"objectToExport","kindString":"Property","propertyType":"Object3D | null | undefined","comment":{"kind":"text","shortText":"Assign the object to export as USDZ file. If undefined or null, the whole scene will be exported."}},{"name":"autoExportAnimations","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Collect all Animations/Animators automatically on export and emit them as playing at the start.\nAnimator state chains and loops will automatically be collected and exported in order as well.\nIf this setting is off, Animators need to be registered by components – for example from PlayAnimationOnClick."}},{"name":"autoExportAudioSources","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Collect all AudioSources automatically on export and emit them as playing at the start.\nThey will loop according to their settings.\nIf this setting is off, Audio Sources need to be registered by components – for example from PlayAudioOnClick."}},{"name":"exportFileName","kindString":"Property","propertyType":"string | null | undefined","comment":{"kind":"text","shortText":""}},{"name":"customUsdzFile","kindString":"Property","propertyType":"string | null | undefined","comment":{"kind":"text","shortText":""}},{"name":"customBranding","kindString":"Property","propertyType":"CustomBranding","comment":{"kind":"text","shortText":""}},{"name":"anchoringType","kindString":"Property","propertyType":"\"plane\" | \"image\" | \"face\" | \"none\"","comment":{"kind":"text","shortText":""}},{"name":"maxTextureSize","kindString":"Property","propertyType":"256 | 512 | 1024 | 2048 | 4096 | 8192","comment":{"kind":"text","shortText":""}},{"name":"planeAnchoringAlignment","kindString":"Property","propertyType":"\"horizontal\" | \"vertical\" | \"any\"","comment":{"kind":"text","shortText":""}},{"name":"interactive","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Enabling this option will export QuickLook-specific preliminary behaviours along with the USDZ files.\nThese extensions are only supported on QuickLook on iOS/visionOS/MacOS.\nKeep this option off for general USDZ usage."}},{"name":"physics","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Enabling this option will export the USDZ file with RealityKit physics components.\nRigidbody and Collider components will be converted to their RealityKit counterparts.\nPhysics are supported on QuickLook in iOS 18+ and VisionOS 1+.\nPhysics export is automatically turned off when there are no Rigidbody components anywhere on the exported object."}},{"name":"allowCreateQuicklookButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"quickLookCompatible","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"ChangeTransformOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Moves an object to a target transform upon click"},"children":[{"name":"object","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"target","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"duration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"relativeMotion","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"ChangeMaterialOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Changes the material of objects when clicked"},"children":[{"name":"materialToSwitch","kindString":"Property","propertyType":"Material","comment":{"kind":"text","shortText":"The material that will be switched to the variant material"}},{"name":"variantMaterial","kindString":"Property","propertyType":"Material","comment":{"kind":"text","shortText":"The material that will be switched to"}},{"name":"fadeDuration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The duration of the fade effect in seconds (USDZ/Quicklook only)"}}]},{"file":"BehaviourComponents.ts","name":"SetActiveOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Sets the active state of an object when clicked"},"children":[{"name":"target","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"toggleOnClick","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"targetState","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"hideSelf","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"HideOnStart","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Hides the object on scene start"},"children":[]},{"file":"BehaviourComponents.ts","name":"EmphasizeOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Emphasizes the target object when clicked"},"children":[{"name":"target","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"duration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"motionType","kindString":"Property","propertyType":"EmphasizeActionMotionType","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"PlayAudioOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Plays an audio clip when clicked"},"children":[{"name":"target","kindString":"Property","propertyType":"AudioSource","comment":{"kind":"text","shortText":""}},{"name":"clip","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":""}},{"name":"toggleOnClick","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"PlayAnimationOnClick","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Plays an animation when clicked"},"children":[{"name":"animator","kindString":"Property","propertyType":"Animator","comment":{"kind":"text","shortText":""}},{"name":"stateName","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"PreliminaryAction","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"target","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"PreliminaryTrigger","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"target","kindString":"Property","propertyType":"PreliminaryAction","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"VisibilityAction","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Hides or shows the object when clicked"},"children":[{"name":"type","kindString":"Property","propertyType":"VisibilityActionType","comment":{"kind":"text","shortText":""}},{"name":"duration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"BehaviourComponents.ts","name":"TapGestureTrigger","kindString":"Class","category":"Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Triggers an action when the object is tapped/clicked"},"children":[]},{"file":"ParticleSystem.ts","name":"ParticleSystemRenderer","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"renderMode","kindString":"Property","propertyType":"ParticleSystemRenderMode","comment":{"kind":"text","shortText":""}},{"name":"particleMaterial","kindString":"Property","propertyType":"SpriteMaterial | MeshBasicMaterial","comment":{"kind":"text","shortText":""}},{"name":"trailMaterial","kindString":"Property","propertyType":"SpriteMaterial | MeshBasicMaterial","comment":{"kind":"text","shortText":""}},{"name":"maxParticleSize","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"minParticleSize","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"velocityScale","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"cameraVelocityScale","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"lengthScale","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"ParticleSystem.ts","name":"ParticleSystem","kindString":"Class","category":"Rendering","group":"Components","comment":{"kind":"text","shortText":"Handles the motion and rendering of many individual particles","text":"The ParticleSystem component efficiently handles the motion and rendering of many individual particles.\n\nYou can add custom behaviours to the particle system to fully customize the behaviour of the particles. See ParticleSystemBaseBehaviour and ParticleSystem.addBehaviour for more information.\n\nNeedle Engine uses [three.quarks](https://github.com/Alchemist0823/three.quarks) under the hood to handle particles."},"children":[{"name":"colorOverLifetime","kindString":"Property","propertyType":"ColorOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"main","kindString":"Property","propertyType":"MainModule","comment":{"kind":"text","shortText":""}},{"name":"emission","kindString":"Property","propertyType":"EmissionModule","comment":{"kind":"text","shortText":""}},{"name":"sizeOverLifetime","kindString":"Property","propertyType":"SizeOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"shape","kindString":"Property","propertyType":"ShapeModule","comment":{"kind":"text","shortText":""}},{"name":"noise","kindString":"Property","propertyType":"NoiseModule","comment":{"kind":"text","shortText":""}},{"name":"trails","kindString":"Property","propertyType":"TrailModule","comment":{"kind":"text","shortText":""}},{"name":"velocityOverLifetime","kindString":"Property","propertyType":"VelocityOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"limitVelocityOverLifetime","kindString":"Property","propertyType":"LimitVelocityOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"inheritVelocity","kindString":"Property","propertyType":"InheritVelocityModule","comment":{"kind":"text","shortText":""}},{"name":"colorBySpeed","kindString":"Property","propertyType":"ColorBySpeedModule","comment":{"kind":"text","shortText":""}},{"name":"textureSheetAnimation","kindString":"Property","propertyType":"TextureSheetAnimationModule","comment":{"kind":"text","shortText":""}},{"name":"rotationOverLifetime","kindString":"Property","propertyType":"RotationOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"rotationBySpeed","kindString":"Property","propertyType":"RotationBySpeedModule","comment":{"kind":"text","shortText":""}},{"name":"sizeBySpeed","kindString":"Property","propertyType":"SizeBySpeedModule","comment":{"kind":"text","shortText":""}}]},{"file":"Attractor.ts","name":"Attractor","kindString":"Class","category":"Physics","group":"Components","comment":{"kind":"text","shortText":"Attract Rigidbodies towards the position of this component","text":"Used to attract Rigidbodies towards the position of this component.\nAdd Rigidbodies to the `targets` array to have them be attracted.\nYou can use negative strength values to create a repulsion effect."},"children":[{"name":"strength","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"targets","kindString":"Property","propertyType":"Rigidbody[]","comment":{"kind":"text","shortText":""}}]},{"file":"Antialiasing.ts","name":"Antialiasing","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":""},"children":[{"name":"preset","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"BloomEffect.ts","name":"BloomEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Bloom Post-Processing Effect"},"children":[{"name":"threshold","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"The bloom threshold controls at what brightness level the bloom effect will be applied.\nA higher value means the bloom will be applied to brighter areas or lights only"}},{"name":"intensity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"Intensity of the bloom effect. A higher value will increase the intensity of the bloom effect."}},{"name":"scatter","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"Scatter value. The higher the value, the more the bloom will scatter."}}]},{"file":"ChromaticAberration.ts","name":"ChromaticAberration","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Chromatic Aberration Post-Processing Effect","text":"Chromatic Aberration effect simulates the color fringing effect seen in real-world cameras.\nIt offsets the red, green, and blue color channels to create a distorted, colorful edge around objects.\nThis effect can enhance the visual appeal of scenes by adding a subtle or pronounced chromatic distortion."},"children":[{"name":"intensity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"ColorAdjustments.ts","name":"ColorAdjustments","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Color Adjustments Post-Processing Effect","text":"Color Adjustments effect allows you to modify the overall color properties of the rendered scene, including post-exposure, contrast, hue shift, and saturation.\nThese adjustments can be used to enhance the visual aesthetics of the scene or to achieve specific artistic effects."},"children":[{"name":"postExposure","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"contrast","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"Range -1 to 1, where 0 is the default value, -1 is the lowest contrast and 1 is the highest contrast."}},{"name":"hueShift","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"saturation","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"DepthOfField.ts","name":"DepthOfField","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Depth of Field Post-Processing Effect","text":"Depth of Field effect simulates the focusing behavior of real-world cameras by blurring objects that are outside the focal plane.\nThis effect enhances the sense of depth in a scene by mimicking how cameras focus on subjects at varying distances, creating a more immersive visual experience.\nIt can be adjusted to achieve different artistic effects, from subtle background blurring to pronounced bokeh effects."},"children":[{"name":"mode","kindString":"Property","propertyType":"DepthOfFieldMode","comment":{"kind":"text","shortText":""}},{"name":"focusDistance","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"focalLength","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"aperture","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"gaussianMaxRadius","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"resolutionScale","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"bokehScale","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"EffectWrapper.ts","name":"EffectWrapper","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Pixelation.ts","name":"PixelationEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Pixelation Post-Processing Effect","text":"Pixelation effect simulates a pixelated look by enlarging pixels in the rendered scene.\nThis effect can be used to achieve a retro or stylized visual aesthetic, reminiscent of early video games or low-resolution graphics."},"children":[{"name":"granularity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"ScreenspaceAmbientOcclusion.ts","name":"ScreenSpaceAmbientOcclusion","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Screenspace Ambient Occlusion post-processing effect.\nWe recommend using ScreenSpaceAmbientOcclusio…","text":"Screenspace Ambient Occlusion post-processing effect.\nWe recommend using ScreenSpaceAmbientOcclusionN8 instead."},"children":[{"name":"intensity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"falloff","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"samples","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"color","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"luminanceInfluence","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"ScreenspaceAmbientOcclusionN8.ts","name":"ScreenSpaceAmbientOcclusionN8","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Screen Space Ambient Occlusion (SSAO) Post-Processing Effect","text":"Screen Space Ambient Occlusion (SSAO) effect.\nAmbient Occlusion is a shading method used to calculate how exposed each point in a scene is to ambient lighting.\nThe effect enhances the depth and realism of 3D scenes by simulating the soft shadows that occur in crevices, corners, and areas where objects are close to each other.\nThis implementation uses the N8AO library to provide high-quality SSAO with various quality settings."},"children":[{"name":"gammaCorrection","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"aoRadius","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"The most important parameter for your ambient occlusion effect.\nControls the radius/size of the ambient occlusion in world units.\nShould be set to how far you want the occlusion to extend from a given object.\nSet it too low, and AO becomes an edge detector.\nToo high, and the AO becomes \"soft\" and might not highlight the details you want.\nThe radius should be one or two magnitudes less than scene scale:\nif your scene is 10 units across, the radius should be between 0.1 and 1. If its 100, 1 to 10."}},{"name":"falloff","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"The second most important parameter for your ambient occlusion effect.\nControls how fast the ambient occlusion fades away with distance in proportion to its radius.\nDefaults to 1, and behind-the-scenes, is a calculated as a ratio of your radius (0.2 * distanceFalloff is the size used for attenuation).\nDecreasing it reduces \"haloing\" artifacts and improves the accuracy of your occlusion,\nbut making it too small makes the ambient occlusion disappear entirely."}},{"name":"intensity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"A purely artistic control for the intensity of the AO - runs the ao through the function pow(ao, intensity),\nwhich has the effect of darkening areas with more ambient occlusion.\nUseful to make the effect more pronounced.\nAn intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,\nwhereas one of 5 produces heavily prominent ambient occlusion."}},{"name":"color","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":"The color of the ambient occlusion. By default, it is black, but it can be changed to any color\nto offer a crude approximation of global illumination.\nRecommended in scenes where bounced light has a uniform \"color\",\nfor instance a scene that is predominantly lit by a blue sky.\nThe color is expected to be in the sRGB color space, and is automatically converted to linear space for you.\nKeep the color pretty dark for sensible results."}},{"name":"screenspaceRadius","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If you want the AO to calculate the radius based on screen space, you can do so by setting configuration.screenSpaceRadius to true.\nThis is useful for scenes where the camera is moving across different scales a lot,\nor for scenes where the camera is very close to the objects."}},{"name":"quality","kindString":"Property","propertyType":"ScreenSpaceAmbientOcclusionN8QualityMode","comment":{"kind":"text","shortText":"The quality of the ambient occlusion effect."}}]},{"file":"Sharpening.ts","name":"SharpeningEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Sharpening Post-Processing Effect","text":"Sharpening effect enhances the details and edges in the rendered scene by increasing the contrast between adjacent pixels.\nThis effect can make textures and fine details appear clearer and more defined, improving the overall visual quality of the scene.\nIt is particularly useful in scenes where details may be lost due to blurriness or low resolution."},"children":[{"name":"amount","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"radius","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"TiltShiftEffect.ts","name":"TiltShiftEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Tilt Shift Post-Processing Effect","text":"Tilt Shift effect simulates a miniature scene by applying a selective focus blur to the rendered image.\nThis effect creates a shallow depth of field, making real-world scenes appear as if they are small-scale models.\nIt is often used in photography and cinematography to draw attention to specific areas of the scene while blurring out the rest."},"children":[{"name":"offset","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"rotation","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"focusArea","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"feather","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"kernelSize","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"resolutionScale","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"Tonemapping.ts","name":"ToneMappingEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Tonemapping Post-Processing Effect","text":"Tonemapping effect adjusts the brightness and contrast of the rendered scene to map high dynamic range (HDR) colors to a displayable range.\nThis effect is essential for achieving realistic lighting and color representation in 3D scenes, as it helps to preserve details in both bright and dark areas.\nVarious tonemapping algorithms can be applied to achieve different visual styles and effects."},"children":[{"name":"mode","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"exposure","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"Vignette.ts","name":"Vignette","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Vignette Post-Processing Effect","text":"Vignette effect darkens the edges of the rendered scene to draw attention to the center.\nThis effect simulates the natural vignetting that occurs in photography and cinematography, where the corners of an image are darker than the center.\nIt can be used to enhance the visual focus on the main subject of the scene and create a more immersive viewing experience."},"children":[{"name":"color","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"intensity","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"center","kindString":"Property","propertyType":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"PostProcessingEffect.ts","name":"PostProcessingEffect","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"PostProcessingEffect is a base class for post processing effects that can be applied to the scene.…","text":"PostProcessingEffect is a base class for post processing effects that can be applied to the scene.\nTo create a custom post processing effect, extend this class and override the `onCreateEffect` method and call `registerCustomEffectType` to make it available in the editor."},"children":[{"name":"active","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Whether the effect is active or not. Prefer using `enabled` instead."}}]},{"file":"Volume.ts","name":"Volume","kindString":"Class","category":"Effects","group":"Components","comment":{"kind":"text","shortText":"Manage Post-Processing Effects","text":"The Volume/PostprocessingManager component is responsible for managing post processing effects.\nAdd this component to any object in your scene to enable post processing effects."},"children":[]},{"file":"Spline.ts","name":"SplineContainer","kindString":"Class","category":"Splines","group":"Components","comment":{"kind":"text","shortText":"Holds spline data and generates a spline curve.","text":"Holds spline data and generates a spline curve. Use with SplineWalker to move objects along the spline or call getPointAt to sample points on the spline.\nThe spline is defined by an array of knots (SplineData) which define position, rotation and tangents.\n\nYou can create a SplineContainer from an array of points using the static method 'createFromPoints'."},"children":[]},{"file":"SplineWalker.ts","name":"SplineWalker","kindString":"Class","category":"Splines","group":"Components","comment":{"kind":"text","shortText":"Moves an object along a spline","text":"Moves an object along a spline.\nUse this with a SplineContainer component.\n\n- Example http://samples.needle.tools/splines"},"children":[]},{"file":"PlayableDirector.ts","name":"PlayableDirector","kindString":"Class","category":"Animation and Sequencing","group":"Components","comment":{"kind":"text","shortText":"Controls and plays TimelineAssets","text":"The PlayableDirector component is the main component to control timelines in needle engine.\nIt is used to play, pause, stop and evaluate timelines.\nAssign a TimelineAsset to the `playableAsset` property to start playing a timeline."},"children":[{"name":"playOnAwake","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Set to true to start playing the timeline when the scene starts"}},{"name":"extrapolationMode","kindString":"Property","propertyType":"DirectorWrapMode","comment":{"kind":"text","shortText":"Determines how the timeline behaves when it reaches the end of its duration."}}]},{"file":"SignalAsset.ts","name":"SignalReceiver","kindString":"Class","category":"Sequencing and Timelines","group":"Components","comment":{"kind":"text","shortText":"Receives signals and invokes reactions","text":"SignalReceiver is a component that listens for signals and invokes a reaction when a signal is received.\nSignals can be added to a signal track on a PlayableDirector"},"children":[{"name":"events","kindString":"Property","propertyType":"SignalReceiverEvent[]","comment":{"kind":"text","shortText":""}}]},{"file":"BaseUIComponent.ts","name":"BaseUIComponent","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Derive from this class if you want to implement your own UI components.\nIt provides utility methods…","text":"Derive from this class if you want to implement your own UI components.\nIt provides utility methods and simplifies managing the underlying three-mesh-ui hierarchy."},"children":[]},{"file":"BaseUIComponent.ts","name":"UIRootComponent","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Button.ts","name":"Button","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"UI Button that can be clicked to perform actions","text":"Button is a UI component that can be clicked by the user to perform an action.\nIt supports different visual states such as normal, highlighted, pressed, and disabled.\nYou can customize the button's appearance using colors or animations for each state."},"children":[{"name":"onClick","kindString":"Property","propertyType":"EventList<void>","comment":{"kind":"text","shortText":""}},{"name":"colors","kindString":"Property","propertyType":"ButtonColors","comment":{"kind":"text","shortText":""}},{"name":"transition","kindString":"Property","propertyType":"Transition","comment":{"kind":"text","shortText":""}},{"name":"animationTriggers","kindString":"Property","propertyType":"AnimationTriggers","comment":{"kind":"text","shortText":""}},{"name":"animator","kindString":"Property","propertyType":"Animator","comment":{"kind":"text","shortText":""}},{"name":"interactable","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":""}}]},{"file":"Canvas.ts","name":"Canvas","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Root component for UI elements, managing layout and rendering settings","text":"Canvas is the root component for all UI elements in a scene.\nIt defines the area where UI elements are rendered and manages their layout and rendering settings.\nCanvases can be set to render in world space or screen space (overlay or camera).\nMultiple canvases can exist in a scene, each with its own settings and hierarchy of UI elements."},"children":[{"name":"renderOnTop","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"depthWrite","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"doubleSided","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"castShadows","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"receiveShadows","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"rootCanvas","kindString":"Property","propertyType":"Canvas","comment":{"kind":"text","shortText":""}},{"name":"worldCamera","kindString":"Property","propertyType":"Camera","comment":{"kind":"text","shortText":""}},{"name":"planeDistance","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"CanvasGroup.ts","name":"CanvasGroup","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Group UI elements to control transparency and interactivity","text":"CanvasGroup is a UI component that allows you to control the transparency and interactivity of a group of UI elements.\nBy adjusting the alpha property, you can fade in or out all child UI elements simultaneously.\nThe interactable and blocksRaycasts properties let you enable or disable user interaction for the entire group."},"children":[{"name":"interactable","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"blocksRaycasts","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"EventSystem.ts","name":"EventSystem","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Manages and dispatches input events to UI components","text":"The EventSystem is responsible for managing and dispatching input events to UI components within the scene."},"children":[]},{"file":"Graphic.ts","name":"Graphic","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[{"name":"raycastTarget","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"Graphic.ts","name":"MaskableGraphic","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Image.ts","name":"Image","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Display a 2D image in the UI","text":"Image is a UI component that displays a sprite (2D image) in the user interface.\nYou can set the image property to assign a texture to be displayed.\nThe sprite can be customized with various properties such as color tinting and pixel density."},"children":[{"name":"pixelsPerUnitMultiplier","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"Image.ts","name":"RawImage","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"InputField.ts","name":"InputField","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Text field for user input","text":"InputField is a UI component that allows users to enter and edit text.\nIt provides a text input area where users can type, delete, and modify text.\nThe InputField supports placeholder text, events for value changes, and end edit actions."},"children":[{"name":"textComponent","kindString":"Property","propertyType":"Text","comment":{"kind":"text","shortText":""}},{"name":"placeholder","kindString":"Property","propertyType":"Text","comment":{"kind":"text","shortText":""}},{"name":"onValueChanged","kindString":"Property","propertyType":"EventList<any>","comment":{"kind":"text","shortText":""}},{"name":"onEndEdit","kindString":"Property","propertyType":"EventList<any>","comment":{"kind":"text","shortText":""}}]},{"file":"Layout.ts","name":"LayoutGroup","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"childAlignment","kindString":"Property","propertyType":"TextAnchor","comment":{"kind":"text","shortText":""}},{"name":"reverseArrangement","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"spacing","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"padding","kindString":"Property","propertyType":"Padding","comment":{"kind":"text","shortText":""}},{"name":"minWidth","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"minHeight","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"flexibleHeight","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"flexibleWidth","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"preferredHeight","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"preferredWidth","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"Layout.ts","name":"HorizontalOrVerticalLayoutGroup","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"childControlHeight","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childControlWidth","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childForceExpandHeight","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childForceExpandWidth","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childScaleHeight","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childScaleWidth","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"Layout.ts","name":"VerticalLayoutGroup","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Layout.ts","name":"HorizontalLayoutGroup","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Layout.ts","name":"GridLayoutGroup","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":""},"children":[]},{"file":"Outline.ts","name":"Outline","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Add an outline effect to UI elements","text":"Outline is a UI component that adds an outline effect to UI elements.\nYou can customize the outline color and distance to create a visual border around the UI element."},"children":[{"name":"effectColor","kindString":"Property","propertyType":"RGBAColor","comment":{"kind":"text","shortText":""}},{"name":"effectDistance","kindString":"Property","propertyType":"Vector2","comment":{"kind":"text","shortText":""}}]},{"file":"Raycaster.ts","name":"Raycaster","kindString":"Class","comment":{"kind":"text","shortText":"Derive from this class to create your own custom Raycaster\nIf you override awake, onEnable or onDis…","text":"Derive from this class to create your own custom Raycaster\nIf you override awake, onEnable or onDisable, be sure to call the base class methods\nImplement `performRaycast` to perform your custom raycasting logic"},"children":[]},{"file":"Raycaster.ts","name":"ObjectRaycaster","kindString":"Class","category":"Interaction","group":"Components","comment":{"kind":"text","shortText":"A Raycaster that performs raycasting against its own GameObject."},"children":[{"name":"ignoreSkinnedMeshes","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":""}}]},{"file":"Raycaster.ts","name":"GraphicRaycaster","kindString":"Class","category":"UI","group":"Components","comment":{"kind":"text","shortText":"A Raycaster that performs raycasting against UI elements (objects with a CanvasRenderer component)."},"children":[]},{"file":"Raycaster.ts","name":"SpatialGrabRaycaster","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"A Raycaster that performs sphere overlap raycasting for spatial grab interactions in XR."},"children":[]},{"file":"RectTransform.ts","name":"RectTransform","kindString":"Class","comment":{"kind":"text","shortText":""},"children":[{"name":"sizeDelta","kindString":"Property","propertyType":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"pivot","kindString":"Property","propertyType":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"anchorMin","kindString":"Property","propertyType":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"anchorMax","kindString":"Property","propertyType":"Vector2","comment":{"kind":"text","shortText":""}}]},{"file":"SpatialHtml.ts","name":"SpatialHtml","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Render HTML elements as 3D objects in the scene","text":"SpatialHtml is a component that allows you to integrate HTML elements into a 3D scene.\nBy specifying the ID of an existing HTML element, you can render it as a 3D object within the scene."},"children":[{"name":"id","kindString":"Property","propertyType":"string | null","comment":{"kind":"text","shortText":""}},{"name":"keepAspect","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"Text.ts","name":"Text","kindString":"Class","category":"User Interface","group":"Components","comment":{"kind":"text","shortText":"Display text in the UI"},"children":[{"name":"alignment","kindString":"Property","propertyType":"TextAnchor","comment":{"kind":"text","shortText":""}},{"name":"verticalOverflow","kindString":"Property","propertyType":"VerticalWrapMode","comment":{"kind":"text","shortText":""}},{"name":"horizontalOverflow","kindString":"Property","propertyType":"HorizontalWrapMode","comment":{"kind":"text","shortText":""}},{"name":"lineSpacing","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}},{"name":"supportRichText","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":""}},{"name":"font","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":""}},{"name":"fontStyle","kindString":"Property","propertyType":"FontStyle","comment":{"kind":"text","shortText":""}}]},{"file":"LookAt.ts","name":"LookAt","kindString":"Class","category":"Interactivity, Everywhere Actions","group":"Components","comment":{"kind":"text","shortText":"Makes the object look at a target object or the camera","text":"LookAt behaviour makes the object look at a target object or the camera.\nIt can also invert the forward direction and keep the up direction."},"children":[{"name":"target","kindString":"Property","propertyType":"Object3D","comment":{"kind":"text","shortText":"The target object to look at. If not set, the main camera will be used."}},{"name":"invertForward","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Inverts the forward direction."}},{"name":"keepUpDirection","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Keep the up direction."}},{"name":"copyTargetRotation","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Copy the target rotation."}}]},{"file":"OpenURL.ts","name":"OpenURL","kindString":"Class","category":"Interactivity","group":"Components","comment":{"kind":"text","shortText":"OpenURL behaviour opens a URL in a new tab or window when the object (or any if it's children) is c…","text":"OpenURL behaviour opens a URL in a new tab or window when the object (or any if it's children) is clicked."},"children":[{"name":"url","kindString":"Property","propertyType":"string","comment":{"kind":"text","shortText":"The URL to open."}},{"name":"mode","kindString":"Property","propertyType":"OpenURLMode","comment":{"kind":"text","shortText":"The mode in which the URL should be opened: NewTab, SameTab, NewWindow."}},{"name":"clickable","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the URL will be opened when the object with this component is clicked."}}]},{"file":"Clickthrough.ts","name":"ClickThrough","kindString":"Class","category":"Web","group":"Components","comment":{"kind":"text","shortText":"Allows pointer events to \"click through\" the 3D canvas to HTML elements behind it.","text":"ClickThrough component allows pointer events to \"click through\" the 3D canvas to HTML elements behind it.\n\nThis is useful if you have a transparent canvas overlaying HTML content and want to interact with the HTML content through the transparent areas of the canvas.\n\nUsage Options:\n- Add the ClickThrough component to any GameObject in your scene.\n- Alternatively, add the `clickthrough` attribute to the `<needle-engine>` HTML element (e.g. `<needle-engine clickthrough></needle-engine>`).\n\n- Example https://stackblitz.com/~/github.com/needle-engine/sample-3d-over-html"},"children":[]},{"file":"CursorFollow.ts","name":"CursorFollow","kindString":"Class","category":"Web","group":"Components","comment":{"kind":"text","shortText":"Makes the object follow the cursor position on screen","text":"The CursorFollow component makes the object follow the cursor (or touch) position on screen.\n\n- Example: [Look At Cursor sample](https://engine.needle.tools/samples/look-at-cursor-interactive-3d-header/). This sample combines the CursorFollow component with a LookAt component to create an interactive 3D header that looks at the cursor."},"children":[{"name":"damping","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Damping for the movement, set to 0 for instant movement"}},{"name":"useFullPage","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled the object will follow the cursor even outside of the needle-engine canvas. This is useful for example for look at effects where you have a small needle-engine element on your page and you want the 3D object to keep looking at the cursor even when it's outside of the canvas."}},{"name":"keepDistance","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the initial distance to the camera is maintained when following the cursor."}},{"name":"snapToSurface","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the object will attempt to snap to the surface of other objects in the scene using a raycast."}}]},{"file":"HoverAnimation.ts","name":"HoverAnimation","kindString":"Class","category":"Web","group":"Components","comment":{"kind":"text","shortText":"Hover Animation on Pointer Enter/Exit","text":"Plays a hover animation on the object this component was added to when the mouse pointer (or touch) is over the object or any of it's children.\n\nBy default, a simple scale-up animation is used. You can customize the hover and idle animations by providing your own animation clips."},"children":[{"name":"type","kindString":"Property","propertyType":"ScaleClipType","comment":{"kind":"text","shortText":"Default hover animation type if no custom clip is provided.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"duration","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Duration of the hover animation in seconds.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"scaleFactor","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Scale factor to apply when hovering.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"hovered","kindString":"Property","propertyType":"AnimationClip | null","comment":{"kind":"text","shortText":"Animation clip to play when hovering. If null, a default scale-up animation is used."}},{"name":"idle","kindString":"Property","propertyType":"AnimationClip | null","comment":{"kind":"text","shortText":"Animation clip to play when not hovering. If null, an empty clip is used."}}]},{"file":"ScrollFollow.ts","name":"ScrollFollow","kindString":"Class","category":"Web","group":"Components","comment":{"kind":"text","shortText":"Links scroll position to target objects","text":"The ScrollFollow component allows you to link the scroll position of the page (or a specific element) to one or more target objects.\n\nThis can be used to create scroll-based animations, audio playback, or other effects. For example you can link the scroll position to a timeline (PlayableDirector) to create scroll-based storytelling effects or to an Animator component to change the animation state based on scroll.\n\nAssign target objects to the component to have them updated based on the current scroll position (check the 'target' property for supported types)."},"children":[{"name":"target","kindString":"Property","propertyType":"object[] | object | null","comment":{"kind":"text","shortText":"Target object(s) to follow the scroll position of the page.\n\nSupported target types:\n- PlayableDirector (timeline), the scroll position will be mapped to the timeline time\n- Animator, the scroll position will be set to a float parameter named \"scroll\"\n- Animation, the scroll position will be mapped to the animation time\n- AudioSource, the scroll position will be mapped to the audio time\n- SplineWalker, the scroll position will be mapped to the position01 property\n- Light, the scroll position will be mapped to the intensity property\n- Object3D, the object will move vertically based on the scroll position\n- Any object with a `scroll` property (number or function)"}},{"name":"damping","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Damping for the movement, set to 0 for instant movement"}},{"name":"invert","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the scroll value will be inverted (e.g. scrolling down will result in a value of 0)"}},{"name":"htmlSelector","kindString":"Property","propertyType":"string | null","comment":{"kind":"text","shortText":"**Experimental - might change in future updates**\nIf set, the scroll position will be read from the specified element instead of the window.\nUse a CSS selector to specify the element, e.g. `#my-scrollable-div` or `.scroll-container`."}},{"name":"mode","kindString":"Property","propertyType":"\"window\"","comment":{"kind":"text","shortText":""}},{"name":"changed","kindString":"Property","propertyType":"EventList<ScrollFollowEvent>","comment":{"kind":"text","shortText":"Event fired when the scroll position changes"}}]},{"file":"ViewBox.ts","name":"ViewBox","kindString":"Class","category":"Camera","group":"Components","comment":{"kind":"text","shortText":"Automatically fits a box area into the camera view","text":"This component can be used to automatically fit a certain box area into the camera view - no matter your screen size or aspect ratio.\nThis is useful for example to frame a character or object in the center of the screen and ensure it is always fully visible. You can also animate or scale the viewbox to create zoom or framing effects.\n\n- [Example on needle.run](https://viewbox-demo-z23hmxbz2gkayo-z1nyzm6.needle.run/)\n- [Scrollytelling Demo using animated Viewbox](https://scrollytelling-bike-z23hmxb2gnu5a.needle.run/)\n- [Example on Stackblitz](https://stackblitz.com/edit/needle-engine-view-box-example)"},"children":[{"name":"referenceFieldOfView","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"The reference field of view is used to calculate the box size. This should usually be the same as your camera's fov."}},{"name":"debug","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Enable debug logs and rendering for this component instance"}}]},{"file":"Avatar.ts","name":"Avatar","kindString":"Class","category":"Networking","group":"Components","comment":{"kind":"text","shortText":"WebXR Avatar component for head and hands synchronization","text":"Avatar component to setup a WebXR avatar with head and hand objects.\n\nThe avatar will automatically synchronize the head and hand objects with the XR rig when entering an XR session."},"children":[{"name":"head","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":""}},{"name":"leftHand","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":""}},{"name":"rightHand","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":""}}]},{"file":"TeleportTarget.ts","name":"TeleportTarget","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"This component is just used as a marker on objects for WebXR teleportation\nThe XRControllerMovement…","text":"This component is just used as a marker on objects for WebXR teleportation\nThe XRControllerMovement component can be configured to check if the TeleportTarget component is present on an object to allow teleporting to that object."},"children":[]},{"file":"WebARCameraBackground.ts","name":"WebARCameraBackground","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Displays the camera feed as background in WebAR sessions","text":"WebARCameraBackground is a component that allows to display the camera feed as a background in an AR session to more easily blend the real world with the virtual world or applying effects to the camera feed.\n\n- Example: https://samples.needle.tools/ar-camera-background"},"children":[{"name":"backgroundTint","kindString":"Property","propertyType":"RGBAColor","comment":{"kind":"text","shortText":"The tint color of the camera feed"}}]},{"file":"WebARSessionRoot.ts","name":"WebARSessionRoot","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Root object for WebAR sessions, managing scene placement and user scaling in AR.","text":"The WebARSessionRoot is the root object for a WebAR session and used to place the scene in AR.\nIt is also responsible for scaling the user in AR and to define the center of the AR scene. If not present in the scene it will be created automatically by the WebXR component when entering an AR session."},"children":[]},{"file":"WebXR.ts","name":"WebXR","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"WebXR Component for VR and AR support","text":"Use the WebXR component to enable VR, AR and Quicklook on iOS in your scene.\n\nThe WebXR component is a simple to use wrapper around the NeedleXRSession API and adds some additional features like creating buttons for AR, VR, enabling default movement behaviour (XRControllerMovement) and controller rendering (XRControllerModel), as well as handling AR placement and Quicklook USDZ export.\n\n- Example: https://samples.needle.tools/collaborative-sandbox"},"children":[{"name":"createVRButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a button will be automatically added to NeedleMenu that allows users to enter VR mode."}},{"name":"createARButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a button will be automatically added to NeedleMenu that allows users to enter AR mode."}},{"name":"createSendToQuestButton","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a button to send the experience to an Oculus Quest will be shown if the current device does not support VR.\nThis helps direct users to compatible devices for optimal VR experiences."}},{"name":"createQRCode","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a QR code will be generated and displayed on desktop devices to allow easy opening of the experience on mobile devices."}},{"name":"useDefaultControls","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, default movement controls will be automatically added to the scene when entering VR.\nThis includes teleportation and smooth locomotion options for VR controllers."}},{"name":"showControllerModels","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, 3D models representing the user's VR controllers will be automatically created and rendered in the scene."}},{"name":"showHandModels","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, 3D models representing the user's hands will be automatically created and rendered when hand tracking is available."}},{"name":"usePlacementReticle","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a reticle will be displayed to help place the scene in AR. The user must tap on a detected surface to position the scene."}},{"name":"customARPlacementReticle","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"Optional custom 3D object to use as the AR placement reticle instead of the default one."}},{"name":"usePlacementAdjustment","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, users can adjust the position, rotation, and scale of the AR scene with one or two fingers after initial placement."}},{"name":"arScale","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":"Determines the scale of the user relative to the scene in AR. Larger values make the 3D content appear smaller.\nOnly applies when `usePlacementReticle` is enabled."}},{"name":"useXRAnchor","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, an XRAnchor will be created for the AR scene and its position will be regularly updated to match the anchor.\nThis can help with spatial persistence in AR experiences."}},{"name":"autoPlace","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, the scene will be automatically placed as soon as a suitable surface is detected in AR,\nwithout requiring the user to tap to confirm placement."}},{"name":"autoCenter","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, the AR session root center will be automatically adjusted to place the center of the scene.\nThis helps ensure the scene is properly aligned with detected surfaces."}},{"name":"useQuicklookExport","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a USDZExporter component will be automatically added to the scene if none is found.\nThis allows iOS and visionOS devices to view 3D content using Apple's AR QuickLook."}},{"name":"useDepthSensing","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, the 'depth-sensing' WebXR feature will be requested to provide real-time depth occlusion.\nCurrently only supported on Oculus Quest devices."}},{"name":"useSpatialGrab","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled, a SpatialGrabRaycaster will be added or enabled in the scene,\nallowing users to interact with objects at a distance in VR/AR."}},{"name":"defaultAvatar","kindString":"Property","propertyType":"AssetReference | boolean","comment":{"kind":"text","shortText":"Specifies the avatar representation that will be created when entering a WebXR session.\nCan be a reference to a 3D model or a boolean to use the default avatar."}}]},{"file":"WebXRAvatar.ts","name":"AvatarMarker","kindString":"Class","comment":{"kind":"text","shortText":"This is used to mark an object being controlled / owned by a player\nThis system might be refactored…","text":"This is used to mark an object being controlled / owned by a player\nThis system might be refactored and moved to a more centralized place in a future version"},"children":[]},{"file":"WebXRImageTracking.ts","name":"WebXRImageTracking","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Add this component to a object to enable image tracking in WebXR sessions.\n\nYou need to add at leas…","text":"Add this component to a object to enable image tracking in WebXR sessions.\n\nYou need to add at least one WebXRImageTrackingModel to the `trackedImages` array to define which images to track and which objects to place on top of them.\n\n**NOTE:** For Android devices, image tracking currently requires the user to enable the `chrome://flags/#webxr-incubations` flag in Chrome.\n\n**NOTE:** For iOS only one image can be tracked at a time. If you have multiple images in the `trackedImages` array, only the first one will be tracked. You can use the setPrimaryImage method to change which image is tracked before entering the XR session.\n\n- Example: https://samples.needle.tools/image-tracking"},"children":[{"name":"trackedImages","kindString":"Property","propertyType":"WebXRImageTrackingModel[]","comment":{"kind":"text","shortText":"List of images to track in the WebXR session. Use WebXRImageTrackingModel to define each image and the object to place on top of it.\n\nUse the `addImage()` and `setPrimaryImage()` methods to modify this array at runtime."}},{"name":"smooth","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Applies smoothing based on detected jitter to the tracked image."}}]},{"file":"WebXRPlaneTracking.ts","name":"WebXRPlaneTracking","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Use this component to track planes and meshes in the real world when in immersive-ar (e.g. on Oculu…","text":"Use this component to track planes and meshes in the real world when in immersive-ar (e.g. on Oculus Quest)."},"children":[{"name":"dataTemplate","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"Optional: if assigned it will be instantiated per tracked plane/tracked mesh.\nIf not assigned a simple mesh will be used. Use `occluder` to create occlusion meshes that don't render color but only depth."}},{"name":"occluder","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"If true an occluder material will be applied to the tracked planes/meshes.\nNote: this will only be applied if dataTemplate is not assigned"}},{"name":"initiateRoomCaptureIfNoData","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"If true the system will try to initiate room capture if no planes are detected."}},{"name":"usePlaneData","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true plane tracking will be enabled"}},{"name":"useMeshData","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true mesh tracking will be enabled"}},{"name":"runInVR","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"when enabled mesh or plane tracking will also be used in VR"}}]},{"file":"WebXRRig.ts","name":"XRRig","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"A user in XR (VR or AR) is parented to an XR rig during the session.\nWhen moving through the scene…","text":"A user in XR (VR or AR) is parented to an XR rig during the session.\nWhen moving through the scene the rig is moved instead of the user.\n\nYou can create multiple rigs in your scene and switch between them during an active XR session by calling setAsActiveXRRig on the XRRig instance.\nFor advanced use-cases you can also provide your own XRRig class by implementing the IXRRig interface and adding it to your scene."},"children":[{"name":"priority","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"XRFlag.ts","name":"XRFlag","kindString":"Class","category":"Utilities","group":"Components","comment":{"kind":"text","shortText":"Use the XRFlag component to show or hide objects based on the current XR state or session.\nThis mea…","text":"Use the XRFlag component to show or hide objects based on the current XR state or session.\nThis means you can show or hide objects based on if the user is in VR, AR, using first person view or third person view."},"children":[{"name":"visibleIn","kindString":"Property","propertyType":"number","comment":{"kind":"text","shortText":""}}]},{"file":"XRControllerFollow.ts","name":"XRControllerFollow","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Makes the object follow a specific XR controller or hand","text":"Add this script to an object and set `side` to make the object follow a specific controller.\n\nThis can be useful to attach objects to controllers, for example a laser pointer or a 3D model of a tool."},"children":[{"name":"side","kindString":"Property","propertyType":"XRHandedness | number","comment":{"kind":"text","shortText":"Should this object follow a right hand/controller or left hand/controller.\nWhen a number is provided, the controller with that index is followed."}},{"name":"controller","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"should it follow controllers (the physics controller)"}},{"name":"hands","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"should it follow hands (when using hand tracking in WebXR)"}},{"name":"controlVisibility","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"Disable if you don't want this script to modify the object's visibility\nIf enabled the object will be hidden when the configured controller or hand is not available\nIf disabled this script will not modify the object's visibility"}},{"name":"useGripSpace","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"when true it will use the grip space, otherwise the ray space"}},{"name":"resetTransformAfterXRSession","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"when enabled the position, rotation and scale of this object will be set to the position it was at when it entered the XR session"}}]},{"file":"XRControllerModel.ts","name":"XRControllerModel","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Displays controller or hand models in XR","text":"XRControllerModel is a component that allows to display controller models or hand models in an XR session.\nIt automatically loads the appropriate model for the connected controller or hand.\n\nYou can configure if controller models or hand models should be created."},"children":[{"name":"createControllerModel","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the controller model will be created when a controller is added/connected"}},{"name":"createHandModel","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"If true, the hand model will be created when a hand is \"added\"/tracked"}},{"name":"customLeftHand","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"assign a model or model url to create custom hand models"}},{"name":"customRightHand","kindString":"Property","propertyType":"AssetReference","comment":{"kind":"text","shortText":"assign a model or model url to create custom hand models"}}]},{"file":"XRControllerMovement.ts","name":"XRControllerMovement","kindString":"Class","category":"XR","group":"Components","comment":{"kind":"text","shortText":"Move the XR rig using controller input","text":"XRControllerMovement is a component that allows to move the XR rig using the XR controller input.\n\nIt supports movement using the left controller's thumbstick and rotation using the right controller's thumbstick.\n\nAdditionally it supports teleporting using the right controller's thumbstick or by pinching the index finger tip in front of the hand (if hand tracking is enabled).\nIt also visualizes controller rays and hit points in the scene."},"children":[{"name":"movementSpeed","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"Movement speed in meters per second"}},{"name":"rotationStep","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"How many degrees to rotate the XR rig when using the rotation trigger"}},{"name":"useTeleport","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled you can teleport using the right XR controller's thumbstick by pressing forward"}},{"name":"usePinchToTeleport","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"When enabled you can teleport by pinching the right XR controller's index finger tip in front of the hand"}},{"name":"useTeleportTarget","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"Enable to only allow teleporting on objects with a TeleportTarget component (see TeleportTarget)"}},{"name":"useTeleportFade","kindString":"Property","propertyType":"any","comment":{"kind":"text","shortText":"Enable to fade out the scene when teleporting"}},{"name":"showRays","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"enable to visualize controller rays in the 3D scene"}},{"name":"showHits","kindString":"Property","propertyType":"boolean","comment":{"kind":"text","shortText":"enable to visualize pointer targets in the 3D scene"}}]}]
|
|
1
|
+
[{"file":"src/engine-components/AlignmentConstraint.ts","name":"AlignmentConstraint","kind":"class","categories":["Constraints"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Aligns and scales the object between two target GameObjects","text":"Aligns this GameObject between two other GameObjects, scaling it to fit the distance.\nYou can use this to create dynamic beams or connectors between objects."},"flags":{},"children":[{"name":"from","kind":"property","type":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"to","kind":"property","type":"GameObject | undefined","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Animation.ts","name":"Animation","kind":"class","categories":["Animation and Sequencing"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays animations from AnimationClips"},"flags":{},"children":[{"name":"playAutomatically","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the animation will start playing when the component is enabled"}},{"name":"randomStartTime","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the animation will start at a random time. This is used when the animation component is enabled"}},{"name":"minMaxSpeed","kind":"property","type":"Vec2","comment":{"kind":"text","shortText":"The animation min-max speed range"}},{"name":"minMaxOffsetNormalized","kind":"property","type":"Vec2","comment":{"kind":"text","shortText":"The normalized offset to start the animation at. This will override startTime"}},{"name":"loop","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Set to true to loop the animation"}},{"name":"clampWhenFinished","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the animation will clamp when finished"}},{"name":"clips","kind":"property","type":"AnimationClip[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Animator.ts","name":"Animator","kind":"class","categories":["Animation and Sequencing"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays and manages animations on a GameObject based on an AnimatorController","text":"The Animator component plays and manages animations on a GameObject.\nIt works with an AnimatorController to handle state transitions and animation blending.\nA new AnimatorController can be created from code via `AnimatorController.createFromClips`."},"flags":{},"children":[{"name":"applyRootMotion","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, animation will affect the root transform position and rotation"}},{"name":"hasRootMotion","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Indicates whether this animator contains root motion data"}},{"name":"keepAnimatorControllerStateOnDisable","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, the animator will maintain its state when the component is disabled"}},{"name":"runtimeAnimatorController","kind":"property","type":"AnimatorControllerModel | AnimatorController | undefined | null","comment":{"kind":"text","shortText":"Sets or replaces the animator controller for this component.\nHandles binding the controller to this animator instance and ensures\nproper initialization when the controller changes."}}]},{"file":"src/engine-components/AudioListener.ts","name":"AudioListener","kind":"class","categories":["Multimedia"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Receives audio in the scene and outputs it to speakers","text":"AudioListener represents a listener that can hear audio sources in the scene.\nThis component creates and manages a Three.js three#AudioListener, automatically connecting it\nto the main camera or a Camera in the parent hierarchy."},"flags":{},"children":[]},{"file":"src/engine-components/AudioSource.ts","name":"AudioSource","kind":"class","categories":["Multimedia"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays audio clips from files or media streams","text":"Plays audio clips in the scene, with support for spatial positioning.\n\nThe AudioSource component can play audio files or media streams with\noptions for spatial blending, volume control, looping, and more.\n\nWhen a page loses visibility (tab becomes inactive), audio will automatically\npause unless playInBackground is set to true. On mobile devices, audio always\npauses regardless of this setting. When the page becomes visible again,\npreviously playing audio will resume.\n\nAudioSource also responds to application mute state changes. When the application\nis muted, the volume is set to 0. When unmuted, the volume\nreturns to its previous value."},"flags":{},"children":[{"name":"clip","kind":"property","type":"string | MediaStream","comment":{"kind":"text","shortText":"The audio clip to play. Can be a URL string pointing to an audio file or a MediaStream object."}},{"name":"playOnAwake","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, the audio will automatically start playing when the component is enabled.\nWhen false, you must call play() manually to start audio playback."}},{"name":"preload","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, the audio clip will be loaded during initialization rather than when play() is called.\nThis can reduce playback delay but increases initial loading time."}},{"name":"playInBackground","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, audio will continue playing when the browser tab loses focus.\nWhen false, audio will pause when the tab is minimized or not active."}},{"name":"pitch","kind":"property","type":"number","comment":{"kind":"text","shortText":"Controls the playback rate (speed) of the audio.\nValues greater than 1 increase speed, values less than 1 decrease it.\nThis affects both speed and pitch of the audio."}},{"name":"rollOffMode","kind":"property","type":"AudioRolloffMode","comment":{"kind":"text","shortText":"Determines how audio volume decreases with distance from the listener."}}]},{"file":"src/engine-components/AxesHelper.ts","name":"AxesHelper","kind":"class","categories":["Helpers"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Visualizes object axes in the scene","text":"Component that visualizes the axes of an object in the scene.\nRenders colored lines representing the X (red), Y (green) and Z (blue) axes."},"flags":{},"children":[{"name":"length","kind":"property","type":"number","comment":{"kind":"text","shortText":"The length of each axis line in scene units."}},{"name":"depthTest","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Whether the axes should be occluded by objects in the scene.\nWhen set to false, axes will always appear on top regardless of their depth."}},{"name":"isGizmo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, this helper will only be visible if the debug flag `?gizmos` is enabled."}}]},{"file":"src/engine-components/BasicIKConstraint.ts","name":"BasicIKConstraint","kind":"class","categories":["Animation"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Simple Inverse Kinematics Constraint","text":"BasicIKConstraint positions the GameObject between two target GameObjects (`from` and `to`) with an optional `hint` GameObject to guide the bending direction.\nThis is useful for simple inverse kinematics setups, such as positioning a joint in a limb."},"flags":{},"children":[]},{"file":"src/engine-components/BoxHelperComponent.ts","name":"BoxHelperComponent","kind":"class","categories":["Helpers"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Bounding box helper with intersection tests","text":"A component that creates a bounding box around an object and provides intersection testing functionality.\n\nDebug mode can be enabled with the URL parameter `?debugboxhelper`, which will visualize intersection tests.\nHelper visualization can be enabled with the URL parameter `?gizmos`."},"flags":{},"children":[]},{"file":"src/engine-components/Camera.ts","name":"Camera","kind":"class","categories":["Camera and Controls"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Rendering scenes from a specific viewpoint","text":"Camera component that handles rendering from a specific viewpoint in the scene.\nSupports both perspective and orthographic cameras with various rendering options.\nInternally, this component uses PerspectiveCamera and OrthographicCamera three.js objects."},"flags":{},"children":[{"name":"aspect","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"fieldOfView","kind":"property","type":"number | undefined","comment":{"kind":"text","shortText":""}},{"name":"nearClipPlane","kind":"property","type":"any","comment":{"kind":"text","shortText":""}},{"name":"farClipPlane","kind":"property","type":"any","comment":{"kind":"text","shortText":""}},{"name":"orthographic","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Determines if the camera should use orthographic projection instead of perspective."}},{"name":"orthographicSize","kind":"property","type":"number","comment":{"kind":"text","shortText":"The size of the orthographic camera's view volume when in orthographic mode.\nLarger values show more of the scene."}},{"name":"ARBackgroundAlpha","kind":"property","type":"number","comment":{"kind":"text","shortText":"Controls the transparency level of the camera background in AR mode on supported devices.\nValue from 0 (fully transparent) to 1 (fully opaque)."}},{"name":"cullingMask","kind":"property","type":"number","comment":{"kind":"text","shortText":"Gets or sets the layers mask that determines which objects this camera will render.\nUses the three.js layers mask convention."}},{"name":"backgroundBlurriness","kind":"property","type":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the blurriness of the skybox background.\nValues range from 0 (sharp) to 1 (maximum blur)."}},{"name":"backgroundIntensity","kind":"property","type":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the intensity of the skybox background.\nValues range from 0 (dark) to 10 (very bright)."}},{"name":"backgroundRotation","kind":"property","type":"Euler | undefined","comment":{"kind":"text","shortText":"Gets or sets the rotation of the skybox background.\nControls the orientation of the environment map."}},{"name":"environmentIntensity","kind":"property","type":"number | undefined","comment":{"kind":"text","shortText":"Gets or sets the intensity of the environment lighting.\nControls how strongly the environment map affects scene lighting."}},{"name":"targetTexture","kind":"property","type":"RenderTexture | null","comment":{"kind":"text","shortText":"Gets or sets the texture that the camera should render to instead of the screen.\nUseful for creating effects like mirrors, portals or custom post processing."}}]},{"file":"src/engine-components/CharacterController.ts","name":"CharacterController","kind":"class","categories":["Character"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Character Movement Controller","text":"CharacterController adds a capsule collider and rigidbody to the object, constrains rotation, and provides movement and grounded state.\nIt is designed for typical character movement in 3D environments."},"flags":{},"children":[{"name":"center","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"height","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/CharacterController.ts","name":"CharacterControllerInput","kind":"class","categories":["Character"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"User Input for Character Controller","text":"CharacterControllerInput handles user input to control a CharacterController.\nIt supports movement, looking around, jumping, and double jumping.\nYou can customize movement speed, rotation speed, and jump forces.\nIt also integrates with an Animator component for character animations."},"flags":{},"children":[{"name":"controller","kind":"property","type":"CharacterController","comment":{"kind":"text","shortText":""}},{"name":"movementSpeed","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"rotationSpeed","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"jumpForce","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"doubleJumpForce","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"animator","kind":"property","type":"Animator","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Collider.ts","name":"Collider","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Physics collider","text":"Collider is the base class for all colliders. A collider is a physical shape that is used to detect collisions with other objects in the scene.\nColliders are used in combination with a Rigidbody to create physical interactions between objects.\nColliders are registered with the physics engine when they are enabled and removed when they are disabled.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{"isAbstract":true},"children":[{"name":"attachedRigidbody","kind":"property","type":"Rigidbody | null","comment":{"kind":"text","shortText":"The Rigidbody that this collider is attached to. This handles the physics simulation for this collider."}},{"name":"isTrigger","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When `true` the collider will not be used for collision detection but will still trigger events.\nTrigger colliders can trigger events when other colliders enter their space, without creating a physical response/collision."}},{"name":"sharedMaterial","kind":"property","type":"PhysicsMaterial","comment":{"kind":"text","shortText":"The physics material that defines physical properties of the collider such as friction and bounciness."}},{"name":"membership","kind":"property","type":"number[]","comment":{"kind":"text","shortText":"The layers that this collider belongs to. Used for filtering collision detection."}},{"name":"filter","kind":"property","type":"number[]","comment":{"kind":"text","shortText":"The layers that this collider will interact with. Used for filtering collision detection."}}]},{"file":"src/engine-components/Collider.ts","name":"SphereCollider","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Collider","comment":{"kind":"text","shortText":"SphereCollider represents a sphere-shaped collision volume.\nUseful for objects that are roughly sph…","text":"SphereCollider represents a sphere-shaped collision volume.\nUseful for objects that are roughly spherical in shape or need a simple collision boundary.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{},"children":[{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":"The radius of the sphere collider."}},{"name":"center","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":"The center position of the sphere collider relative to the transform's position."}}]},{"file":"src/engine-components/Collider.ts","name":"BoxCollider","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Collider","comment":{"kind":"text","shortText":"BoxCollider represents a box-shaped collision volume.\nIdeal for rectangular objects or objects that…","text":"BoxCollider represents a box-shaped collision volume.\nIdeal for rectangular objects or objects that need a simple cuboid collision boundary.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{},"children":[{"name":"size","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":"The size of the box collider along each axis."}},{"name":"center","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":"The center position of the box collider relative to the transform's position."}}]},{"file":"src/engine-components/Collider.ts","name":"MeshCollider","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Collider","comment":{"kind":"text","shortText":"MeshCollider creates a collision shape from a mesh geometry.\nAllows for complex collision shapes th…","text":"MeshCollider creates a collision shape from a mesh geometry.\nAllows for complex collision shapes that match the exact geometry of an object.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{},"children":[{"name":"sharedMesh","kind":"property","type":"Mesh","comment":{"kind":"text","shortText":"The mesh that is used to create the collision shape.\nIf not set, the collider will try to use the mesh of the object it's attached to."}},{"name":"convex","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When `true` the collider is treated as a solid object without holes.\nSet to `false` if you want this mesh collider to be able to contain other objects."}}]},{"file":"src/engine-components/Collider.ts","name":"CapsuleCollider","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Collider","comment":{"kind":"text","shortText":"CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).\nId…","text":"CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).\nIdeal for character controllers and objects that need a rounded collision shape.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{},"children":[{"name":"center","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":"The center position of the capsule collider relative to the transform's position."}},{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":"The radius of the capsule's cylindrical body and hemispherical ends."}},{"name":"height","kind":"property","type":"number","comment":{"kind":"text","shortText":"The total height of the capsule including both hemispherical ends."}}]},{"file":"src/engine-components/ContactShadows.ts","name":"ContactShadows","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Display contact shadows on the ground","text":"ContactShadows is a component that allows to display contact shadows in the scene. It has options for darkness, opacity and blur of the shadows.\n\n- Example: https://samples.needle.tools/contact-shadows\n\n## Usage\nYou can use ContactShadows.auto to automatically create a ContactShadows instance for the scene or you can add the component to an object in the scene. Note that the scale of the object will be used to define the size of the shadow area.\n\nContactShadows can also be enabled on the `<needle-engine>` web component directly by adding the `contactshadows` attribute. The value of the attribute will be used as opacity and darkness of the shadows: `<needle-engine contactshadows=\"0.7\">`."},"flags":{},"children":[{"name":"autoFit","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the contact shadows component will be created to fit the whole scene."}},{"name":"darkness","kind":"property","type":"number","comment":{"kind":"text","shortText":"Darkness of the shadows."}},{"name":"opacity","kind":"property","type":"number","comment":{"kind":"text","shortText":"Opacity of the shadows."}},{"name":"blur","kind":"property","type":"number","comment":{"kind":"text","shortText":"Blur of the shadows."}},{"name":"occludeBelowGround","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled objects will not be visible below the shadow plane"}},{"name":"backfaceShadows","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the backfaces of objects will cast shadows as well."}}]},{"file":"src/engine-components/DeleteBox.ts","name":"DeleteBox","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"BoxHelperComponent","comment":{"kind":"text","shortText":"Box area that deletes objects entering it","text":"A box-shaped area that can be used to delete objects that get into it. Useful for sandbox-style builders or physics simulations."},"flags":{},"children":[]},{"file":"src/engine-components/DeleteBox.ts","name":"Deletable","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Objects with this component can be destroyed by the DeleteBox component."},"flags":{},"children":[]},{"file":"src/engine-components/DeviceFlag.ts","name":"DeviceFlag","kind":"class","categories":["Utilities"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Show or hide GameObject based on device type","text":"Enables or disables the GameObject based on the device type (mobile or desktop).\nYou can use this to show or hide objects depending on whether the user is on a mobile device or a desktop."},"flags":{},"children":[{"name":"visibleOn","kind":"property","type":"DeviceType","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/DragControls.ts","name":"DragControls","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Enables dragging of objects in 2D or 3D space","text":"DragControls allows you to drag objects around in the scene. It can be used to move objects in 2D (screen space) or 3D (world space).\nDebug mode can be enabled with the URL parameter `?debugdrag`, which shows visual helpers and logs drag operations."},"flags":{},"children":[{"name":"dragMode","kind":"property","type":"DragMode","comment":{"kind":"text","shortText":"Determines how and where the object is dragged along. Different modes include\ndragging along a plane, attached to the pointer, or following surface normals."}},{"name":"snapGridResolution","kind":"property","type":"number","comment":{"kind":"text","shortText":"Snaps dragged objects to a 3D grid with the specified resolution.\nSet to 0 to disable snapping."}},{"name":"keepRotation","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, maintains the original rotation of the dragged object while moving it.\nWhen false, allows the object to rotate freely during dragging."}},{"name":"xrDragMode","kind":"property","type":"DragMode","comment":{"kind":"text","shortText":"Determines how and where the object is dragged along while dragging in XR.\nUses a separate setting from regular drag mode for better XR interaction."}},{"name":"xrKeepRotation","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, maintains the original rotation of the dragged object during XR dragging.\nWhen false, allows the object to rotate freely during XR dragging."}},{"name":"xrDistanceDragFactor","kind":"property","type":"number","comment":{"kind":"text","shortText":"Multiplier that affects how quickly objects move closer or further away when dragging in XR.\nHigher values make distance changes more pronounced.\nThis is similar to mouse acceleration on a screen."}},{"name":"showGizmo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, draws a visual line from the dragged object downwards to the next raycast hit,\nproviding visual feedback about the object's position relative to surfaces below it."}}]},{"file":"src/engine-components/DropListener.ts","name":"DropListener","kind":"class","categories":["Asset Management"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Component to handle drag and drop of files into the scene","text":"The DropListener component is used to listen for drag and drop events in the browser and add the dropped files to the scene\nIt can be used to allow users to drag and drop glTF files into the scene to add new objects.\n\nIf useNetworking is enabled, the DropListener will automatically synchronize dropped files to other connected clients.\nEnable fitIntoVolume to automatically scale dropped objects to fit within the volume defined by fitVolumeSize.\n\n- Example: [DropListener Sample](https://droplistener-zubcksz1veaoo.needle.run/)\n\nThe following events are dispatched by the DropListener:\n- **object-added** - dispatched when a new object is added to the scene\n- **file-dropped** - dispatched when a file is dropped into the scene"},"flags":{},"children":[{"name":"dropArea","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":"When assigned, the DropListener will only accept files that are dropped on this specific object.\nThis allows creating designated drop zones in your scene."}},{"name":"fitIntoVolume","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, dropped objects will be automatically scaled to fit within the volume defined by fitVolumeSize.\nUseful for ensuring dropped models appear at an appropriate scale.\n\n**Tip**: Use the handy `fitObjectIntoVolume` function (`import { fitObjectIntoVolume } from \"@needle-tools/engine\"`) for custom fitting needs."}},{"name":"fitVolumeSize","kind":"property","type":"any","comment":{"kind":"text","shortText":"Defines the dimensions of the volume that dropped objects will be scaled to fit within.\nOnly used when fitIntoVolume is enabled."}},{"name":"placeAtHitPosition","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, dropped objects will be positioned at the point where the cursor hit the scene.\nWhen disabled, objects will be placed at the origin of the DropListener."}},{"name":"useNetworking","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, the DropListener will automatically synchronize dropped files to other connected clients.\nWhen a file is dropped locally, it will be uploaded to blob storage and the URL will be shared with other clients."}},{"name":"onDropped","kind":"property","type":"EventList<DropListenerOnDropArguments>","comment":{"kind":"text","shortText":"Event list that gets invoked after a file has been successfully added to the scene.\nReceives DropListenerOnDropArguments containing the added object and related information."}}]},{"file":"src/engine-components/Duplicatable.ts","name":"Duplicatable","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Duplicates a GameObject on pointer events","text":"The Duplicatable component is used to duplicate a assigned GameObject when a pointer event occurs on the object."},"flags":{},"children":[{"name":"parent","kind":"property","type":"GameObject | null","comment":{"kind":"text","shortText":"Duplicates will be parented into the set object. If not defined, this GameObject will be used as parent."}},{"name":"object","kind":"property","type":"GameObject | null","comment":{"kind":"text","shortText":"The object to be duplicated. If no object is assigned then the object the Duplicatable component is attached to will be used for cloning."}},{"name":"limitCount","kind":"property","type":"any","comment":{"kind":"text","shortText":"The maximum number of objects that can be duplicated in the interval."}}]},{"file":"src/engine-components/EventTrigger.ts","name":"EventTrigger","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Triggers events on pointer interactions","text":"The EventTrigger component is used to trigger events when certain pointer events occur on the GameObject.\nIt implements the IPointerEventHandler interface and can be used to expose events to the user in the editor without writing code."},"flags":{},"children":[{"name":"triggers","kind":"property","type":"Array<TriggerEvent>","comment":{"kind":"text","shortText":"A list of events that should be triggered when a pointer event occurs on the GameObject."}}]},{"file":"src/engine-components/Fog.ts","name":"Fog","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"near","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"far","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"color","kind":"property","type":"Color","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Gizmos.ts","name":"BoxGizmo","kind":"class","categories":["Helpers"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Display a box around the object","text":"BoxGizmo is a component that displays a box around the object in the scene. It can optionally expand to the object's bounds."},"flags":{},"children":[{"name":"objectBounds","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"color","kind":"property","type":"Color","comment":{"kind":"text","shortText":""}},{"name":"isGizmo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/GridHelper.ts","name":"GridHelper","kind":"class","categories":["Helpers"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"GridHelper is a component that allows to display a grid in the scene."},"flags":{},"children":[{"name":"isGizmo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"color0","kind":"property","type":"Color | ColorRepresentation","comment":{"kind":"text","shortText":""}},{"name":"color1","kind":"property","type":"Color | ColorRepresentation","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/GroundProjection.ts","name":"GroundProjectedEnv","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Projects the environment map onto the ground","text":"GroundProjectedEnv creates a ground projection of the current environment map.\n\n- Example https://engine.needle.tools/samples/ground-projection"},"flags":{},"children":[{"name":"applyOnAwake","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true the projection will be created on awake and onEnable"}},{"name":"autoFit","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the position of the projected environment will be adjusted to be centered in the scene (and ground level)."}},{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":"Radius of the projection sphere. Set it large enough so the camera stays inside (make sure the far plane is also large enough)"}},{"name":"height","kind":"property","type":"number","comment":{"kind":"text","shortText":"How far the camera that took the photo was above the ground. A larger value will magnify the downward part of the image."}},{"name":"arBlending","kind":"property","type":"number","comment":{"kind":"text","shortText":"Blending factor for the AR projection being blended with the scene background.\n0 = not visible in AR - 1 = blended with real world background.\nValues between 0 and 1 control the smoothness of the blend while lower values result in smoother blending."}}]},{"file":"src/engine-components/Interactable.ts","name":"UsageMarker","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Marks an object as currently being interacted with.\nFor example, DragControls set this on the dragg…","text":"Marks an object as currently being interacted with.\nFor example, DragControls set this on the dragged object to prevent DeleteBox from deleting it."},"flags":{},"children":[]},{"file":"src/engine-components/Interactable.ts","name":"Interactable","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/Joints.ts","name":"Joint","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Connect two Rigidbodies"},"flags":{"isAbstract":true},"children":[{"name":"connectedBody","kind":"property","type":"Rigidbody","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Joints.ts","name":"FixedJoint","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Joint","comment":{"kind":"text","shortText":"Connect two Rigidbodies and make them stick together"},"flags":{},"children":[]},{"file":"src/engine-components/Joints.ts","name":"HingeJoint","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Joint","comment":{"kind":"text","shortText":"Connect two Rigidbodies with a hinge","text":"The HingeJoint groups together 2 rigid bodies, constraining them to move like connected by a hinge.\n\nYou can specify the anchor point and axis of rotation for the hinge."},"flags":{},"children":[{"name":"anchor","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"axis","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/LODGroup.ts","name":"LODGroup","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Level of Detail Group for optimizing rendering"},"flags":{},"children":[{"name":"localReferencePoint","kind":"property","type":"Vector3 | undefined","comment":{"kind":"text","shortText":""}},{"name":"lodModels","kind":"property","type":"LODModel[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Light.ts","name":"Light","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Light component for various light types and shadow settings","text":"The Light component creates a light source in the scene.\nSupports directional, spot, and point light types with various customization options.\nLights can cast shadows with configurable settings and can be set to baked or realtime rendering.\n\nDebug mode can be enabled with the URL parameter `?debuglights`, which shows\nadditional console output and visual helpers for lights."},"flags":{},"children":[{"name":"type","kind":"property","type":"LightType","comment":{"kind":"text","shortText":"The type of light (spot, directional, point, etc.)"}},{"name":"color","kind":"property","type":"Color","comment":{"kind":"text","shortText":"The color of the light"}},{"name":"shadowNearPlane","kind":"property","type":"number","comment":{"kind":"text","shortText":"The near plane distance for shadow projection"}},{"name":"shadowBias","kind":"property","type":"number","comment":{"kind":"text","shortText":"Shadow bias value to reduce shadow acne and peter-panning"}},{"name":"shadowNormalBias","kind":"property","type":"number","comment":{"kind":"text","shortText":"Shadow normal bias to reduce shadow acne on sloped surfaces"}},{"name":"shadows","kind":"property","type":"LightShadows","comment":{"kind":"text","shortText":"Shadow casting mode (None, Hard, or Soft)"}},{"name":"lightmapBakeType","kind":"property","type":"LightmapBakeType","comment":{"kind":"text","shortText":"Determines if the light contributes to realtime lighting, baked lighting, or a mix"}},{"name":"intensity","kind":"property","type":"number","comment":{"kind":"text","shortText":"Brightness of the light. In WebXR experiences, the intensity is automatically\nadjusted based on the AR session scale to maintain consistent lighting."}}]},{"file":"src/engine-components/LookAtConstraint.ts","name":"LookAtConstraint","kind":"class","categories":["Camera and Controls"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Look At Constraint for OrbitControls","text":"A LookAtConstraint is used by OrbitControls to make the camera look at a target.\nThis component is used by OrbitControls internally."},"flags":{},"children":[{"name":"constraintActive","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true the constraint is active."}},{"name":"locked","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true the look at is locked to the position of the assigned sources."}},{"name":"sources","kind":"property","type":"Object3D[]","comment":{"kind":"text","shortText":"The sources to look at."}}]},{"file":"src/engine-components/NeedleMenu.ts","name":"NeedleMenu","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Configuration component for the Needle Menu","text":"Provides configuration options for the built-in Needle Menu.\nNeedle Menu uses HTML in 2D mode, and automatically switches to a 3D menu in VR/AR mode.\n\nControls display options, button visibility, and menu positioning.\nFrom code, you can access the menu via Context.menu."},"flags":{},"children":[{"name":"position","kind":"property","type":"\"top\" | \"bottom\"","comment":{"kind":"text","shortText":"Determines the vertical positioning of the menu on the screen"}},{"name":"showNeedleLogo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Controls the visibility of the Needle logo in the menu (requires PRO license)"}},{"name":"showSpatialMenu","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, displays the menu in VR/AR mode when the user looks up"}},{"name":"createFullscreenButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, adds a fullscreen toggle button to the menu"}},{"name":"createMuteButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, adds an audio mute/unmute button to the menu"}},{"name":"createQRCodeButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, adds a button to display a QR code for sharing the application.\nThe QR code is only displayed on desktop devices."}}]},{"file":"src/engine-components/NestedGltf.ts","name":"NestedGltf","kind":"class","categories":["Asset Management"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Loads and instantiates a nested glTF file","text":"The nested gltf is a component that is used to load a gltf file when the component becomes active (start)\nIt will load the gltf file and instantiate it as a child of the parent of the GameObject that has this component"},"flags":{},"children":[{"name":"filePath","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"A reference to the gltf file that should be loaded"}},{"name":"loaded","kind":"property","type":"EventList<{ component: NestedGltf, instance: any, asset: AssetReference }>","comment":{"kind":"text","shortText":"Invoked when the nested glTF file has been instantiated"}}]},{"file":"src/engine-components/Networking.ts","name":"Networking","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Networking configuration","text":"Provides configuration to the built-in networking system.\nThis component supplies websocket URLs for establishing connections.\nIt implements the INetworkingWebsocketUrlProvider interface."},"flags":{},"children":[{"name":"url","kind":"property","type":"string | null","comment":{"kind":"text","shortText":"The websocket URL to connect to for networking functionality.\nCan be a complete URL or a relative path that will be resolved against the current origin."}},{"name":"urlParameterName","kind":"property","type":"string | null","comment":{"kind":"text","shortText":"Name of the URL parameter that can override the websocket connection URL.\nWhen set, the URL will be overridden by the parameter value from the browser URL.\nFor example, with `urlParameterName=\"ws\"`, adding `?ws=ws://localhost:8080` to the browser URL will override the connection URL."}},{"name":"localhost","kind":"property","type":"string | null","comment":{"kind":"text","shortText":"Alternative URL to use when running on a local network.\nThis is particularly useful for development, when the server is running on the same machine as the client."}}]},{"file":"src/engine-components/OffsetConstraint.ts","name":"OffsetConstraint","kind":"class","categories":["Constraints"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Maintains positional and rotational offset relative to another object","text":"OffsetConstraint component allows an object to maintain a specified positional and rotational offset\nrelative to another object, with options for alignment and leveling."},"flags":{},"children":[{"name":"referenceSpace","kind":"property","type":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"from","kind":"property","type":"GameObject | undefined","comment":{"kind":"text","shortText":""}},{"name":"positionOffset","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"rotationOffset","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/OrbitControls.ts","name":"OrbitControls","kind":"class","categories":["Camera and Controls"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Camera controller using three.js OrbitControls","text":"The OrbitControls component is used to control a camera using the [OrbitControls from three.js](https://threejs.org/docs/#examples/en/controls/OrbitControls) library.\nThe three OrbitControls object can be accessed via the `controls` property.\nThe object being controlled by the OrbitControls (usually the camera) can be accessed via the `controllerObject` property."},"flags":{},"children":[{"name":"autoTarget","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled OrbitControls will automatically raycast find a look at target in start"}},{"name":"autoFit","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the scene will be automatically fitted into the camera view in onEnable"}},{"name":"enableRotate","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be rotated"}},{"name":"autoRotate","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera will rotate automatically"}},{"name":"autoRotateSpeed","kind":"property","type":"number","comment":{"kind":"text","shortText":"The speed at which the camera will rotate automatically. Will only be used when `autoRotate` is enabled"}},{"name":"minAzimuthAngle","kind":"property","type":"number","comment":{"kind":"text","shortText":"The minimum azimuth angle in radians"}},{"name":"maxAzimuthAngle","kind":"property","type":"number","comment":{"kind":"text","shortText":"The maximum azimuth angle in radians"}},{"name":"minPolarAngle","kind":"property","type":"number","comment":{"kind":"text","shortText":"The minimum polar angle in radians"}},{"name":"maxPolarAngle","kind":"property","type":"number","comment":{"kind":"text","shortText":"The maximum polar angle in radians"}},{"name":"enableKeys","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be moved using keyboard keys. The keys are defined in the `controls.keys` property"}},{"name":"enableDamping","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera movement will be damped"}},{"name":"dampingFactor","kind":"property","type":"number","comment":{"kind":"text","shortText":"The damping factor for the camera movement. For more information see the [three.js documentation](https://threejs.org/docs/#examples/en/controls/OrbitControls.dampingFactor)"}},{"name":"enableZoom","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be zoomed"}},{"name":"minZoom","kind":"property","type":"number","comment":{"kind":"text","shortText":"The minimum zoom level"}},{"name":"maxZoom","kind":"property","type":"number","comment":{"kind":"text","shortText":"The maximum zoom level"}},{"name":"zoomSpeed","kind":"property","type":"number","comment":{"kind":"text","shortText":"Sets the zoom speed of the OrbitControls"}},{"name":"enablePan","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the camera can be panned"}},{"name":"lookAtConstraint","kind":"property","type":"LookAtConstraint | null","comment":{"kind":"text","shortText":"Assigning a LookAtConstraint will make the camera look at the constraint source"}},{"name":"lookAtConstraint01","kind":"property","type":"number","comment":{"kind":"text","shortText":"The weight of the first lookAtConstraint source"}},{"name":"allowInterrupt","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true user input interrupts the camera from animating to a target"}},{"name":"middleClickToFocus","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true the camera will focus on the target when the middle mouse button is clicked"}},{"name":"doubleClickToFocus","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true the camera will focus on the target when the left mouse button is double clicked"}},{"name":"clickBackgroundToFitScene","kind":"property","type":"number","comment":{"kind":"text","shortText":"When enabled the camera will fit the scene to the camera view when the background is clicked the specified number of times within a short time"}},{"name":"targetBounds","kind":"property","type":"Object3D | null","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/PlayerColor.ts","name":"PlayerColor","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Assigns a unique color to the player object","text":"PlayerColor assigns a unique color for each user in the room to the object it is attached to.\nThe color is generated based on the user's ID."},"flags":{},"children":[]},{"file":"src/engine-components/ReflectionProbe.ts","name":"ReflectionProbe","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Provides reflection data to materials","text":"A ReflectionProbe provides reflection data to materials within its defined area.\n\n- Sample: http://samples.needle.tools/reflection-probes"},"flags":{},"children":[{"name":"center","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}},{"name":"size","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Renderer.ts","name":"Renderer","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"receiveShadows","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"shadowCastingMode","kind":"property","type":"ShadowCastingMode","comment":{"kind":"text","shortText":""}},{"name":"lightmapIndex","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"lightmapScaleOffset","kind":"property","type":"Vector4","comment":{"kind":"text","shortText":""}},{"name":"enableInstancing","kind":"property","type":"boolean | boolean[] | undefined","comment":{"kind":"text","shortText":"If the renderer should use instancing\nIf this is a boolean (true) all materials will be instanced or (false) none of them.\nIf this is an array of booleans the materials will be instanced based on the index of the material."}},{"name":"renderOrder","kind":"property","type":"number[] | undefined","comment":{"kind":"text","shortText":""}},{"name":"allowOcclusionWhenDynamic","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"probeAnchor","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"reflectionProbeUsage","kind":"property","type":"ReflectionProbeUsage","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Renderer.ts","name":"MeshRenderer","kind":"class","categories":[],"groups":[],"inheritedFrom":"Renderer","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/Renderer.ts","name":"SkinnedMeshRenderer","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"MeshRenderer","comment":{"kind":"text","shortText":"Renderer for deformable meshes"},"flags":{},"children":[]},{"file":"src/engine-components/RigidBody.ts","name":"Rigidbody","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Rigidbody for physical interactions","text":"A Rigidbody is used together with a Collider to create physical interactions between objects in the scene.\n\n- Example: https://samples.needle.tools/physics-basic\n- Example: https://samples.needle.tools/physics-playground\n- Example: https://samples.needle.tools/physics-&-animation"},"flags":{},"children":[{"name":"mass","kind":"property","type":"number","comment":{"kind":"text","shortText":"By default the mass will be automatically calculated (see `autoMass`) by the physics engine using the collider sizes\nTo set the mass manually you can either set the `mass` value or set `autoMass` to `false`"}},{"name":"useGravity","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Use gravity is a flag that can be set to false to disable gravity for a specific rigid-body."}},{"name":"centerOfMass","kind":"property","type":"Vector3","comment":{"kind":"text","shortText":"The center of mass is the point around which the mass of the rigid-body is evenly distributed. It is used to compute the torque applied to the rigid-body when forces are applied to it."}},{"name":"constraints","kind":"property","type":"RigidbodyConstraints","comment":{"kind":"text","shortText":"Constraints are used to lock the position or rotation of an object in a specific axis."}},{"name":"isKinematic","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"IsKinematic is a flag that can be set to true to make a rigid-body kinematic. Kinematic rigid-bodies are not affected by forces and collisions. They are meant to be animated by the user."}},{"name":"drag","kind":"property","type":"number","comment":{"kind":"text","shortText":"Drag is a force that resists the motion of the rigid-body. It is applied to the center-of-mass of the rigid-body."}},{"name":"angularDrag","kind":"property","type":"number","comment":{"kind":"text","shortText":"Angular drag is a force that resists the rotation of the rigid-body. It is applied to the center-of-mass of the rigid-body."}},{"name":"detectCollisions","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Detect collisions is a flag that can be set to false to disable collision detection for a specific rigid-body."}},{"name":"sleepThreshold","kind":"property","type":"number","comment":{"kind":"text","shortText":"The sleeping threshold is the minimum velocity below which a dynamic rigid-body will be put to sleep by the physics engine."}},{"name":"collisionDetectionMode","kind":"property","type":"CollisionDetectionMode","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/SceneSwitcher.ts","name":"SceneSwitcher","kind":"class","categories":["Asset Management"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Dynamically loads and switches between multiple scenes","text":"The SceneSwitcher can be used to dynamically load and unload extra content\nAvailable scenes are defined in the `scenes` array.\nLoaded scenes will be added to the SceneSwitcher's GameObject as a child and removed when another scene is loaded by the same SceneSwitcher.\nLive Examples\n- [Multi Scenes Sample](https://engine.needle.tools/samples/multi-scene-example) (source code available)\n- [Needle Website](https://needle.tools)\n- [Songs Of Cultures](https://app.songsofcultures.com)\n\n### Interfaces\nUse the ISceneEventListener interface to listen to scene open and closing events with the ability to modify transitions and stall the scene loading process.\n\n### Events\n- `loadscene-start`: Called when a scene starts loading\n- `loadscene-finished`: Called when a scene finished loading\n- `progress`: Called when a scene is loading and the progress changes\n- `scene-opened`: Called when a scene is loaded and added to the SceneSwitcher's GameObject"},"flags":{},"children":[{"name":"autoLoadFirstScene","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the first scene will be loaded when the SceneSwitcher becomes active"}},{"name":"scenes","kind":"property","type":"AssetReference[]","comment":{"kind":"text","shortText":"The scenes that can be loaded by the SceneSwitcher."}},{"name":"loadingScene","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"The scene that is displayed while a scene is loading."}},{"name":"queryParameterName","kind":"property","type":"string","comment":{"kind":"text","shortText":"the url parameter that is set/used to store the currently loaded scene in, set to \"\" to disable"}},{"name":"useSceneName","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled the scene name will be used as the query parameter (otherwise the scene index will be used)\nNeeds `queryParameterName` set"}},{"name":"clamp","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the current scene index will be clamped to the scenes array bounds.\nFor example when the last scene is loaded and `clamp` is true then trying to load the `next()` scene will not change the scene.\nWhen `clamp` is false and the last scene is loaded then the first scene will be loaded instead."}},{"name":"useHistory","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled the new scene is pushed to the browser navigation history, only works with a valid query parameter set"}},{"name":"useKeyboard","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled you can switch between scenes using keyboard left, right, A and D or number keys"}},{"name":"useSwipe","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled you can switch between scenes using swipe (mobile only)"}},{"name":"useSceneLighting","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled will automatically apply the environment scene lights"}},{"name":"useSceneBackground","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled will automatically apply the skybox from the loaded scene"}},{"name":"preloadNext","kind":"property","type":"number","comment":{"kind":"text","shortText":"how many scenes after the currently active scene should be preloaded"}},{"name":"preloadPrevious","kind":"property","type":"number","comment":{"kind":"text","shortText":"how many scenes before the currently active scene should be preloaded"}},{"name":"preloadConcurrent","kind":"property","type":"number","comment":{"kind":"text","shortText":"how many scenes can be loaded in parallel"}},{"name":"createMenuButtons","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled will create a button for the Needle menu to switch to the next or previous scene"}},{"name":"sceneLoadingStart","kind":"property","type":"EventList<LoadSceneEvent>","comment":{"kind":"text","shortText":"Called when a scene starts loading"}},{"name":"sceneLoadingProgress","kind":"property","type":"EventList<ProgressEvent>","comment":{"kind":"text","shortText":""}},{"name":"sceneLoaded","kind":"property","type":"EventList<SceneSwitcher>","comment":{"kind":"text","shortText":"The sceneLoaded event is called when a scene/glTF is loaded and added to the scene"}}]},{"file":"src/engine-components/ScreenCapture.ts","name":"ScreenCapture","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Share screen, camera or microphone in a networked room","text":"The ScreenCapture component allows you to share your screen, camera or microphone with other users in the networked room.\nWhen the stream is active the video will be displayed on the VideoPlayer component attached to the same GameObject.\n\nNote: For debugging append `?debugscreensharing` to the URL to see more information in the console.\n\nBy default the component will start sharing the screen when the user clicks on the object this component is attached to. You can set device This behaviour can be disabled by setting `allowStartOnClick` to false.\nIt is also possible to start the stream manually from your code by calling the share method."},"flags":{},"children":[{"name":"allowStartOnClick","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the stream will start when the user clicks on the object this component is attached to\nIt is also possible to start the stream manually from your code by calling the share method\nTo modify what type of device is shared you can set the device property."}},{"name":"autoConnect","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the stream will start when this component becomes active (enabled in the scene)"}},{"name":"videoPlayer","kind":"property","type":"VideoPlayer | undefined","comment":{"kind":"text","shortText":"If a VideoPlayer component is assigned to this property the video will be displayed on the VideoPlayer component."}},{"name":"device","kind":"property","type":"ScreenCaptureDeviceTypes","comment":{"kind":"text","shortText":"Which streaming device type should be used when starting to share (if share is called without a device option). Options are Screen, Camera, Microphone.\nThis is e.g. used if `allowStartOnClick` is enabled and the user clicks on the object."}},{"name":"deviceName","kind":"property","type":"string","comment":{"kind":"text","shortText":"If assigned the device the device will be selected by this id or label when starting to share.\nNote: This is only supported for `Camera` devices"}}]},{"file":"src/engine-components/SeeThrough.ts","name":"SeeThrough","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Makes objects fade out when obscuring a reference point from the camera","text":"Makes the object fade out when it is obscuring the reference point from the camera. This component can be put on any object in the scene. It will affect all Renderer components on the same object and child objects.\n\nUseful for e.g. making walls transparent when the camera is outside or hiding object's that would otherwise block the view.\n\nRequires a Renderer component on the same object or a child object.\n\n- Example https://see-through-walls-z23hmxbz1kjfjn.needle.run/"},"flags":{},"children":[{"name":"referencePoint","kind":"property","type":"Object3D | null","comment":{"kind":"text","shortText":"Assign a reference point - if this point will be obscured from the camera by this object then this object will fade out.\nIf no reference point is assigned the scene's root object will be used as reference point."}},{"name":"fadeDuration","kind":"property","type":"number","comment":{"kind":"text","shortText":"Fade Duration in seconds"}},{"name":"minAlpha","kind":"property","type":"number","comment":{"kind":"text","shortText":"Minimum alpha value when fading out (0-1)"}},{"name":"useAlphaHash","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When useAlphaHash is enabled the object will fade out using alpha hashing, this means the object can stay opaque. If disabled the object will set to be transparent when fading out."}},{"name":"overrideAlpha","kind":"property","type":"number","comment":{"kind":"text","shortText":"Override the alpha value, -1 means no override"}},{"name":"autoUpdate","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ShadowCatcher.ts","name":"ShadowCatcher","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Creates a shadow mask or a light occluder","text":"ShadowCatcher can be added to an Object3D to make it render shadows (or light) in the scene. It can also be used to create a shadow mask, or to occlude light.\nIf the GameObject is a Mesh, it will apply a shadow-catching material to it - otherwise it will create a quad with the shadow-catching material.\n\nNote that ShadowCatcher meshes are not raycastable by default; if you want them to be raycastable, change the layers in `onEnable()`."},"flags":{},"children":[{"name":"mode","kind":"property","type":"ShadowMode","comment":{"kind":"text","shortText":""}},{"name":"shadowColor","kind":"property","type":"RGBAColor","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Skybox.ts","name":"RemoteSkybox","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Sets the skybox or environment texture of a scene","text":"RemoteSkybox is a component that allows you to set the skybox or environment texture of a scene from a URL, a local file or a static skybox name.\nIt supports .hdr, .exr, .jpg, .png files.\n\n### Events\n- `dropped-unknown-url`: Emitted when a file is dropped on the scene. The event detail contains the sender, the url and a function to apply the url."},"flags":{},"children":[{"name":"url","kind":"property","type":"MagicSkyboxName | AnyString","comment":{"kind":"text","shortText":"URL to a remote skybox.\nTo update the skybox/environment map use `setSkybox(url)`.\n\nThe url can also be set to a magic skybox name.\nMagic name options are: \"quicklook\", \"quicklook-ar\", \"studio\", \"blurred-skybox\".\nThese will resolve to built-in skyboxes hosted on the Needle CDN that are static, optimized for the web and will never change."}},{"name":"allowDrop","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled a user can drop a link to a skybox image on the scene to set the skybox."}},{"name":"background","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the skybox will be set as the background of the scene."}},{"name":"environment","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the skybox will be set as the environment of the scene (to be used as environment map for reflections and lighting)"}},{"name":"allowNetworking","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled dropped skybox urls (or assigned skybox urls) will be networked to other users in the same networked room."}}]},{"file":"src/engine-components/SmoothFollow.ts","name":"SmoothFollow","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Smoothly follows a target object","text":"SmoothFollow makes the Object3D (`GameObject`) smoothly follow another target Object3D.\nIt can follow the target's position, rotation, or both."},"flags":{},"children":[{"name":"target","kind":"property","type":"Object3D | null","comment":{"kind":"text","shortText":"The target to follow. If null, the GameObject will not move."}},{"name":"followFactor","kind":"property","type":"any","comment":{"kind":"text","shortText":"The factor to smoothly follow the target's position.\nThe value is clamped between 0 and 1. If 0, the GameObject will not follow the target's position."}},{"name":"rotateFactor","kind":"property","type":"any","comment":{"kind":"text","shortText":"The factor to smoothly follow the target's rotation.\nThe value is clamped between 0 and 1. If 0, the GameObject will not follow the target's rotation."}},{"name":"positionAxes","kind":"property","type":"Axes","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/SpatialTrigger.ts","name":"SpatialTriggerReceiver","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Receives spatial trigger events","text":"Component that receives and responds to spatial events, like entering or exiting a trigger zone.\nUsed in conjunction with SpatialTrigger to create interactive spatial events."},"flags":{},"children":[{"name":"triggerMask","kind":"property","type":"number","comment":{"kind":"text","shortText":"Bitmask determining which triggers this receiver responds to\nOnly triggers with matching masks will interact with this receiver"}},{"name":"onEnter","kind":"property","type":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked when this object enters a trigger zone"}},{"name":"onStay","kind":"property","type":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked continuously while this object is inside a trigger zone"}},{"name":"onExit","kind":"property","type":"EventList<any>","comment":{"kind":"text","shortText":"Event invoked when this object exits a trigger zone"}}]},{"file":"src/engine-components/SpatialTrigger.ts","name":"SpatialTrigger","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"A spatial trigger component that detects objects within a box-shaped area.\nUsed to trigger events w…","text":"A spatial trigger component that detects objects within a box-shaped area.\nUsed to trigger events when objects enter, stay in, or exit the defined area"},"flags":{},"children":[{"name":"triggerMask","kind":"property","type":"number","comment":{"kind":"text","shortText":"Bitmask determining which receivers this trigger affects.\nOnly receivers with matching masks will be triggered."}}]},{"file":"src/engine-components/SpectatorCamera.ts","name":"SpectatorCamera","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Spectator camera for following other users","text":"Provides functionality to follow and spectate other users in a networked environment.\nHandles camera switching, following behavior, and network synchronization for spectator mode.\n\nDebug mode can be enabled with the URL parameter `?debugspectator`, which provides additional console output."},"flags":{},"children":[{"name":"useKeys","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, pressing F will send a request to all connected users to follow the local player.\nPressing ESC will stop spectating."}}]},{"file":"src/engine-components/SpriteRenderer.ts","name":"SpriteRenderer","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Renders 2D images from a sprite sheet","text":"The sprite renderer renders a sprite on a GameObject using an assigned spritesheet (SpriteData).\n\n- Example: https://engine.needle.tools/samples/spritesheet-animation"},"flags":{},"children":[{"name":"drawMode","kind":"property","type":"SpriteDrawMode","comment":{"kind":"text","shortText":""}},{"name":"size","kind":"property","type":"Vec2","comment":{"kind":"text","shortText":""}},{"name":"color","kind":"property","type":"RGBAColor","comment":{"kind":"text","shortText":""}},{"name":"sharedMaterial","kind":"property","type":"Material","comment":{"kind":"text","shortText":"The material that is used to render the sprite"}},{"name":"transparent","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"cutoutThreshold","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"castShadows","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"renderOrder","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"toneMapped","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/SyncedCamera.ts","name":"SyncedCamera","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Syncs camera position and rotation of users in a networked room","text":"SyncedCamera is a component that syncs the camera position and rotation of all users in the room.\nA prefab can be set to represent the remote cameras visually in the scene."},"flags":{},"children":[{"name":"cameraPrefab","kind":"property","type":"Object3D | null | AssetReference","comment":{"kind":"text","shortText":"The prefab to visually represent the remote cameras in the scene."}}]},{"file":"src/engine-components/SyncedRoom.ts","name":"SyncedRoom","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Joins a networked room based on URL parameters or a random room","text":"SyncedRoom is a behaviour that will attempt to join a networked room based on the URL parameters or a random room.\nIt will also create a button in the menu to join or leave the room.\nYou can also join a networked room by calling the core methods like `this.context.connection.joinRoom(\"roomName\")`."},"flags":{},"children":[{"name":"roomName","kind":"property","type":"string","comment":{"kind":"text","shortText":"The name of the room to join."}},{"name":"urlParameterName","kind":"property","type":"string","comment":{"kind":"text","shortText":"The URL parameter name to use for the room name. E.g. if set to \"room\" the URL will look like `?room=roomName`."}},{"name":"joinRandomRoom","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the room will be joined automatically when this component becomes active."}},{"name":"requireRoomParameter","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true and no room parameter is found in the URL then no room will be joined."}},{"name":"autoRejoin","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the room will be rejoined automatically when disconnected."}},{"name":"createJoinButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, a join/leave room button will be created in the menu."}},{"name":"createViewOnlyButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, a join/leave room button for the view only URL will be created in the menu."}},{"name":"roomPrefix","kind":"property","type":"string","comment":{"kind":"text","shortText":"The room prefix to use for the room name. E.g. if set to \"room_\" and the room name is \"name\" the final room name will be \"room_name\"."}}]},{"file":"src/engine-components/SyncedTransform.ts","name":"SyncedTransform","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Synchronizes object transform over the network with ownership management","text":"SyncedTransform synchronizes the position and rotation of a game object over the network.\nIt handles ownership transfer, interpolation, and network state updates automatically."},"flags":{},"children":[]},{"file":"src/engine-components/TestRunner.ts","name":"TestRunner","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"The TestRunner component is used to run tests when the scene starts\n @internal"},"flags":{},"children":[]},{"file":"src/engine-components/TestRunner.ts","name":"TestSimulateUserData","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/TransformGizmo.ts","name":"TransformGizmo","kind":"class","categories":["Helpers"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Object manipulation gizmo for translating, rotating, and scaling","text":"TransformGizmo displays manipulation controls for translating, rotating, and scaling objects in the scene.\nIt wraps three.js TransformControls and provides keyboard shortcuts for changing modes and settings."},"flags":{},"children":[{"name":"isGizmo","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true, this is considered a helper gizmo and will only be shown if showGizmos is enabled in engine parameters."}},{"name":"translationSnap","kind":"property","type":"number","comment":{"kind":"text","shortText":"Specifies the translation grid snap value in world units.\nApplied when holding Shift while translating an object."}},{"name":"rotationSnapAngle","kind":"property","type":"number","comment":{"kind":"text","shortText":"Specifies the rotation snap angle in degrees.\nApplied when holding Shift while rotating an object."}},{"name":"scaleSnap","kind":"property","type":"number","comment":{"kind":"text","shortText":"Specifies the scale snapping value.\nApplied when holding Shift while scaling an object."}}]},{"file":"src/engine-components/VideoPlayer.ts","name":"VideoPlayer","kind":"class","categories":["Multimedia"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays video clips from URLs or streams","text":"The VideoPlayer component can be used to playback video clips from urls, streams or m3u8 playlists (livestreams)"},"flags":{},"children":[{"name":"playOnAwake","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When true the video will start playing as soon as the component is enabled"}},{"name":"aspectMode","kind":"property","type":"AspectMode","comment":{"kind":"text","shortText":"The aspect mode to use for the video. If"}},{"name":"clip","kind":"property","type":"string | MediaStream | null","comment":{"kind":"text","shortText":""}},{"name":"source","kind":"property","type":"VideoSource","comment":{"kind":"text","shortText":""}},{"name":"renderMode","kind":"property","type":"VideoRenderMode","comment":{"kind":"text","shortText":""}},{"name":"targetMaterialProperty","kind":"property","type":"string","comment":{"kind":"text","shortText":""}},{"name":"targetMaterialRenderer","kind":"property","type":"Renderer","comment":{"kind":"text","shortText":""}},{"name":"targetTexture","kind":"property","type":"Texture","comment":{"kind":"text","shortText":""}},{"name":"time","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"isLooping","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"audioOutputMode","kind":"property","type":"VideoAudioOutputMode","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/Voip.ts","name":"Voip","kind":"class","categories":["Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Voice over IP for networked audio communication","text":"The Voice over IP component (VoIP) allows you to send and receive audio streams to other users in the same networked room.\nIt requires a networking connection to be working (e.g. by having an active SyncedRoom component in the scene or by connecting to a room manually)."},"flags":{},"children":[{"name":"autoConnect","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, VoIP will start when a room is joined or when this component is enabled while already in a room."}},{"name":"runInBackground","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, VoIP will stay connected even when the browser tab is not focused/active anymore."}},{"name":"createMenuButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a menu button will be created to allow the user to toggle VoIP on and off."}}]},{"file":"src/engine-components/avatar/AvatarBlink_Simple.ts","name":"AvatarBlink_Simple","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"eyes","kind":"property","type":"Object3D[]","comment":{"kind":"text","shortText":""}},{"name":"lastBlinkTime","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"blinkLength","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"eyesOpen","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/avatar/AvatarEyeLook_Rotation.ts","name":"AvatarEyeLook_Rotation","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"head","kind":"property","type":"GameObject | null","comment":{"kind":"text","shortText":""}},{"name":"eyes","kind":"property","type":"GameObject[] | null","comment":{"kind":"text","shortText":""}},{"name":"target","kind":"property","type":"Object3D | null","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/avatar/Avatar_Brain_LookAt.ts","name":"Avatar_Brain_LookAt","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/avatar/Avatar_MouthShapes.ts","name":"Avatar_MouthShapes","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"idle","kind":"property","type":"Object3D[]","comment":{"kind":"text","shortText":""}},{"name":"talking","kind":"property","type":"Object3D[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/avatar/Avatar_MustacheShake.ts","name":"Avatar_MustacheShake","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/debug/LogStats.ts","name":"LogStats","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/export/gltf/GltfExport.ts","name":"GltfExportBox","kind":"class","categories":[],"groups":[],"inheritedFrom":"BoxHelperComponent","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/export/gltf/GltfExport.ts","name":"GltfExport","kind":"class","categories":["Asset Management"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Export selected 3D objects to glTF format","text":"GltfExport is a component that enables exporting selected 3D objects from the scene to the glTF format.\nYou can specify whether to export in binary format (.glb) or JSON format (.gltf), and select specific objects to include in the export.\nThe exported glTF file can be used in various 3D applications and engines that support the glTF standard."},"flags":{},"children":[{"name":"binary","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"objects","kind":"property","type":"Object3D[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/USDZExporter.ts","name":"USDZExporter","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Export 3D objects as USDZ files for QuickLook","text":"Exports the current scene or a specific object as USDZ file and opens it in QuickLook on iOS/iPadOS/visionOS.\nThe USDZ file is generated using the Needle Engine ThreeUSDZExporter.\nThe exporter supports various extensions to add custom behaviors and interactions to the USDZ file.\nThe exporter can automatically collect Animations and AudioSources and export them as playing at the start.\nThe exporter can also add a custom QuickLook overlay with a call to action button and custom branding."},"flags":{},"children":[{"name":"objectToExport","kind":"property","type":"Object3D | null | undefined","comment":{"kind":"text","shortText":"Assign the object to export as USDZ file. If undefined or null, the whole scene will be exported."}},{"name":"autoExportAnimations","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Collect all Animations/Animators automatically on export and emit them as playing at the start.\nAnimator state chains and loops will automatically be collected and exported in order as well.\nIf this setting is off, Animators need to be registered by components – for example from PlayAnimationOnClick."}},{"name":"autoExportAudioSources","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Collect all AudioSources automatically on export and emit them as playing at the start.\nThey will loop according to their settings.\nIf this setting is off, Audio Sources need to be registered by components – for example from PlayAudioOnClick."}},{"name":"exportFileName","kind":"property","type":"string | null | undefined","comment":{"kind":"text","shortText":""}},{"name":"customUsdzFile","kind":"property","type":"string | null | undefined","comment":{"kind":"text","shortText":""}},{"name":"customBranding","kind":"property","type":"CustomBranding","comment":{"kind":"text","shortText":""}},{"name":"anchoringType","kind":"property","type":"\"plane\" | \"image\" | \"face\" | \"none\"","comment":{"kind":"text","shortText":""}},{"name":"maxTextureSize","kind":"property","type":"256 | 512 | 1024 | 2048 | 4096 | 8192","comment":{"kind":"text","shortText":""}},{"name":"planeAnchoringAlignment","kind":"property","type":"\"horizontal\" | \"vertical\" | \"any\"","comment":{"kind":"text","shortText":""}},{"name":"interactive","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Enabling this option will export QuickLook-specific preliminary behaviours along with the USDZ files.\nThese extensions are only supported on QuickLook on iOS/visionOS/MacOS.\nKeep this option off for general USDZ usage."}},{"name":"physics","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Enabling this option will export the USDZ file with RealityKit physics components.\nRigidbody and Collider components will be converted to their RealityKit counterparts.\nPhysics are supported on QuickLook in iOS 18+ and VisionOS 1+.\nPhysics export is automatically turned off when there are no Rigidbody components anywhere on the exported object."}},{"name":"allowCreateQuicklookButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"quickLookCompatible","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"ChangeTransformOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Moves an object to a target transform upon click"},"flags":{},"children":[{"name":"object","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"target","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"duration","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"relativeMotion","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"ChangeMaterialOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Changes the material of objects when clicked"},"flags":{},"children":[{"name":"materialToSwitch","kind":"property","type":"Material","comment":{"kind":"text","shortText":"The material that will be switched to the variant material"}},{"name":"variantMaterial","kind":"property","type":"Material","comment":{"kind":"text","shortText":"The material that will be switched to"}},{"name":"fadeDuration","kind":"property","type":"number","comment":{"kind":"text","shortText":"The duration of the fade effect in seconds (USDZ/Quicklook only)"}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"SetActiveOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Sets the active state of an object when clicked"},"flags":{},"children":[{"name":"target","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"toggleOnClick","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"targetState","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"hideSelf","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"HideOnStart","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Hides the object on scene start"},"flags":{},"children":[]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"EmphasizeOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Emphasizes the target object when clicked"},"flags":{},"children":[{"name":"target","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}},{"name":"duration","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"motionType","kind":"property","type":"EmphasizeActionMotionType","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"PlayAudioOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays an audio clip when clicked"},"flags":{},"children":[{"name":"target","kind":"property","type":"AudioSource","comment":{"kind":"text","shortText":""}},{"name":"clip","kind":"property","type":"string","comment":{"kind":"text","shortText":""}},{"name":"toggleOnClick","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"PlayAnimationOnClick","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Plays an animation when clicked"},"flags":{},"children":[{"name":"animator","kind":"property","type":"Animator","comment":{"kind":"text","shortText":""}},{"name":"stateName","kind":"property","type":"string","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"PreliminaryAction","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"target","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"PreliminaryTrigger","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"target","kind":"property","type":"PreliminaryAction","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"VisibilityAction","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"PreliminaryAction","comment":{"kind":"text","shortText":"Hides or shows the object when clicked"},"flags":{},"children":[{"name":"type","kind":"property","type":"VisibilityActionType","comment":{"kind":"text","shortText":""}},{"name":"duration","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts","name":"TapGestureTrigger","kind":"class","categories":["Everywhere Actions"],"groups":["Components"],"inheritedFrom":"PreliminaryTrigger","comment":{"kind":"text","shortText":"Triggers an action when the object is tapped/clicked"},"flags":{},"children":[]},{"file":"src/engine-components/particlesystem/ParticleSystem.ts","name":"ParticleSystemRenderer","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"renderMode","kind":"property","type":"ParticleSystemRenderMode","comment":{"kind":"text","shortText":""}},{"name":"particleMaterial","kind":"property","type":"SpriteMaterial | MeshBasicMaterial","comment":{"kind":"text","shortText":""}},{"name":"trailMaterial","kind":"property","type":"SpriteMaterial | MeshBasicMaterial","comment":{"kind":"text","shortText":""}},{"name":"maxParticleSize","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"minParticleSize","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"velocityScale","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"cameraVelocityScale","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"lengthScale","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/particlesystem/ParticleSystem.ts","name":"ParticleSystem","kind":"class","categories":["Rendering"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Handles the motion and rendering of many individual particles","text":"The ParticleSystem component efficiently handles the motion and rendering of many individual particles.\n\nYou can add custom behaviours to the particle system to fully customize the behaviour of the particles. See ParticleSystemBaseBehaviour and ParticleSystem.addBehaviour for more information.\n\nNeedle Engine uses [three.quarks](https://github.com/Alchemist0823/three.quarks) under the hood to handle particles."},"flags":{},"children":[{"name":"colorOverLifetime","kind":"property","type":"ColorOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"main","kind":"property","type":"MainModule","comment":{"kind":"text","shortText":""}},{"name":"emission","kind":"property","type":"EmissionModule","comment":{"kind":"text","shortText":""}},{"name":"sizeOverLifetime","kind":"property","type":"SizeOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"shape","kind":"property","type":"ShapeModule","comment":{"kind":"text","shortText":""}},{"name":"noise","kind":"property","type":"NoiseModule","comment":{"kind":"text","shortText":""}},{"name":"trails","kind":"property","type":"TrailModule","comment":{"kind":"text","shortText":""}},{"name":"velocityOverLifetime","kind":"property","type":"VelocityOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"limitVelocityOverLifetime","kind":"property","type":"LimitVelocityOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"inheritVelocity","kind":"property","type":"InheritVelocityModule","comment":{"kind":"text","shortText":""}},{"name":"colorBySpeed","kind":"property","type":"ColorBySpeedModule","comment":{"kind":"text","shortText":""}},{"name":"textureSheetAnimation","kind":"property","type":"TextureSheetAnimationModule","comment":{"kind":"text","shortText":""}},{"name":"rotationOverLifetime","kind":"property","type":"RotationOverLifetimeModule","comment":{"kind":"text","shortText":""}},{"name":"rotationBySpeed","kind":"property","type":"RotationBySpeedModule","comment":{"kind":"text","shortText":""}},{"name":"sizeBySpeed","kind":"property","type":"SizeBySpeedModule","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/physics/Attractor.ts","name":"Attractor","kind":"class","categories":["Physics"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Attract Rigidbodies towards the position of this component","text":"Used to attract Rigidbodies towards the position of this component.\nAdd Rigidbodies to the `targets` array to have them be attracted.\nYou can use negative strength values to create a repulsion effect."},"flags":{},"children":[{"name":"strength","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"targets","kind":"property","type":"Rigidbody[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/Antialiasing.ts","name":"Antialiasing","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"preset","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/BloomEffect.ts","name":"BloomEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Bloom Post-Processing Effect"},"flags":{},"children":[{"name":"threshold","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"The bloom threshold controls at what brightness level the bloom effect will be applied.\nA higher value means the bloom will be applied to brighter areas or lights only"}},{"name":"intensity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"Intensity of the bloom effect. A higher value will increase the intensity of the bloom effect."}},{"name":"scatter","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"Scatter value. The higher the value, the more the bloom will scatter."}}]},{"file":"src/engine-components/postprocessing/Effects/ChromaticAberration.ts","name":"ChromaticAberration","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Chromatic Aberration Post-Processing Effect","text":"Chromatic Aberration effect simulates the color fringing effect seen in real-world cameras.\nIt offsets the red, green, and blue color channels to create a distorted, colorful edge around objects.\nThis effect can enhance the visual appeal of scenes by adding a subtle or pronounced chromatic distortion."},"flags":{},"children":[{"name":"intensity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/ColorAdjustments.ts","name":"ColorAdjustments","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Color Adjustments Post-Processing Effect","text":"Color Adjustments effect allows you to modify the overall color properties of the rendered scene, including post-exposure, contrast, hue shift, and saturation.\nThese adjustments can be used to enhance the visual aesthetics of the scene or to achieve specific artistic effects."},"flags":{},"children":[{"name":"postExposure","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"contrast","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"Range -1 to 1, where 0 is the default value, -1 is the lowest contrast and 1 is the highest contrast."}},{"name":"hueShift","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"saturation","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/DepthOfField.ts","name":"DepthOfField","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Depth of Field Post-Processing Effect","text":"Depth of Field effect simulates the focusing behavior of real-world cameras by blurring objects that are outside the focal plane.\nThis effect enhances the sense of depth in a scene by mimicking how cameras focus on subjects at varying distances, creating a more immersive visual experience.\nIt can be adjusted to achieve different artistic effects, from subtle background blurring to pronounced bokeh effects."},"flags":{},"children":[{"name":"mode","kind":"property","type":"DepthOfFieldMode","comment":{"kind":"text","shortText":""}},{"name":"focusDistance","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"focalLength","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"aperture","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"gaussianMaxRadius","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"resolutionScale","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"bokehScale","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/EffectWrapper.ts","name":"EffectWrapper","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/postprocessing/Effects/Pixelation.ts","name":"PixelationEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Pixelation Post-Processing Effect","text":"Pixelation effect simulates a pixelated look by enlarging pixels in the rendered scene.\nThis effect can be used to achieve a retro or stylized visual aesthetic, reminiscent of early video games or low-resolution graphics."},"flags":{},"children":[{"name":"granularity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts","name":"ScreenSpaceAmbientOcclusion","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Screenspace Ambient Occlusion post-processing effect.\nWe recommend using ScreenSpaceAmbientOcclusio…","text":"Screenspace Ambient Occlusion post-processing effect.\nWe recommend using ScreenSpaceAmbientOcclusionN8 instead."},"flags":{},"children":[{"name":"intensity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"falloff","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"samples","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"color","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"luminanceInfluence","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts","name":"ScreenSpaceAmbientOcclusionN8","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Screen Space Ambient Occlusion (SSAO) Post-Processing Effect","text":"Screen Space Ambient Occlusion (SSAO) effect.\nAmbient Occlusion is a shading method used to calculate how exposed each point in a scene is to ambient lighting.\nThe effect enhances the depth and realism of 3D scenes by simulating the soft shadows that occur in crevices, corners, and areas where objects are close to each other.\nThis implementation uses the N8AO library to provide high-quality SSAO with various quality settings."},"flags":{},"children":[{"name":"gammaCorrection","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"aoRadius","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"The most important parameter for your ambient occlusion effect.\nControls the radius/size of the ambient occlusion in world units.\nShould be set to how far you want the occlusion to extend from a given object.\nSet it too low, and AO becomes an edge detector.\nToo high, and the AO becomes \"soft\" and might not highlight the details you want.\nThe radius should be one or two magnitudes less than scene scale:\nif your scene is 10 units across, the radius should be between 0.1 and 1. If its 100, 1 to 10."}},{"name":"falloff","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"The second most important parameter for your ambient occlusion effect.\nControls how fast the ambient occlusion fades away with distance in proportion to its radius.\nDefaults to 1, and behind-the-scenes, is a calculated as a ratio of your radius (0.2 * distanceFalloff is the size used for attenuation).\nDecreasing it reduces \"haloing\" artifacts and improves the accuracy of your occlusion,\nbut making it too small makes the ambient occlusion disappear entirely."}},{"name":"intensity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"A purely artistic control for the intensity of the AO - runs the ao through the function pow(ao, intensity),\nwhich has the effect of darkening areas with more ambient occlusion.\nUseful to make the effect more pronounced.\nAn intensity of 2 generally produces soft ambient occlusion that isn't too noticeable,\nwhereas one of 5 produces heavily prominent ambient occlusion."}},{"name":"color","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":"The color of the ambient occlusion. By default, it is black, but it can be changed to any color\nto offer a crude approximation of global illumination.\nRecommended in scenes where bounced light has a uniform \"color\",\nfor instance a scene that is predominantly lit by a blue sky.\nThe color is expected to be in the sRGB color space, and is automatically converted to linear space for you.\nKeep the color pretty dark for sensible results."}},{"name":"screenspaceRadius","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If you want the AO to calculate the radius based on screen space, you can do so by setting configuration.screenSpaceRadius to true.\nThis is useful for scenes where the camera is moving across different scales a lot,\nor for scenes where the camera is very close to the objects."}},{"name":"quality","kind":"property","type":"ScreenSpaceAmbientOcclusionN8QualityMode","comment":{"kind":"text","shortText":"The quality of the ambient occlusion effect."}}]},{"file":"src/engine-components/postprocessing/Effects/Sharpening.ts","name":"SharpeningEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Sharpening Post-Processing Effect","text":"Sharpening effect enhances the details and edges in the rendered scene by increasing the contrast between adjacent pixels.\nThis effect can make textures and fine details appear clearer and more defined, improving the overall visual quality of the scene.\nIt is particularly useful in scenes where details may be lost due to blurriness or low resolution."},"flags":{},"children":[{"name":"amount","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"radius","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/TiltShiftEffect.ts","name":"TiltShiftEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Tilt Shift Post-Processing Effect","text":"Tilt Shift effect simulates a miniature scene by applying a selective focus blur to the rendered image.\nThis effect creates a shallow depth of field, making real-world scenes appear as if they are small-scale models.\nIt is often used in photography and cinematography to draw attention to specific areas of the scene while blurring out the rest."},"flags":{},"children":[{"name":"offset","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"rotation","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"focusArea","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"feather","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"kernelSize","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"resolutionScale","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/Tonemapping.ts","name":"ToneMappingEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Tonemapping Post-Processing Effect","text":"Tonemapping effect adjusts the brightness and contrast of the rendered scene to map high dynamic range (HDR) colors to a displayable range.\nThis effect is essential for achieving realistic lighting and color representation in 3D scenes, as it helps to preserve details in both bright and dark areas.\nVarious tonemapping algorithms can be applied to achieve different visual styles and effects."},"flags":{},"children":[{"name":"mode","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"exposure","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/Effects/Vignette.ts","name":"Vignette","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"PostProcessingEffect","comment":{"kind":"text","shortText":"Vignette Post-Processing Effect","text":"Vignette effect darkens the edges of the rendered scene to draw attention to the center.\nThis effect simulates the natural vignetting that occurs in photography and cinematography, where the corners of an image are darker than the center.\nIt can be used to enhance the visual focus on the main subject of the scene and create a more immersive viewing experience."},"flags":{},"children":[{"name":"color","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"intensity","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}},{"name":"center","kind":"property","type":"VolumeParameter","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/postprocessing/PostProcessingEffect.ts","name":"PostProcessingEffect","kind":"class","categories":["Effects"],"groups":["Components"],"inheritedFrom":"Component","comment":{"kind":"text","shortText":"PostProcessingEffect is a base class for post processing effects that can be applied to the scene.…","text":"PostProcessingEffect is a base class for post processing effects that can be applied to the scene.\nTo create a custom post processing effect, extend this class and override the `onCreateEffect` method and call `registerCustomEffectType` to make it available in the editor."},"flags":{"isAbstract":true},"children":[{"name":"active","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Whether the effect is active or not. Prefer using `enabled` instead."}}]},{"file":"src/engine-components/postprocessing/Volume.ts","name":"Volume","kind":"class","categories":["Rendering","Effects"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Manage Post-Processing Effects","text":"The Volume/PostprocessingManager component is responsible for managing post processing effects.\nAdd this component to any object in your scene to enable post processing effects."},"flags":{},"children":[]},{"file":"src/engine-components/splines/Spline.ts","name":"SplineContainer","kind":"class","categories":["Splines"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Holds spline data and generates a spline curve.","text":"Holds spline data and generates a spline curve. Use with SplineWalker to move objects along the spline or call getPointAt to sample points on the spline.\nThe spline is defined by an array of knots (SplineData) which define position, rotation and tangents.\n\nYou can create a SplineContainer from an array of points using the static method 'createFromPoints'."},"flags":{},"children":[]},{"file":"src/engine-components/splines/SplineWalker.ts","name":"SplineWalker","kind":"class","categories":["Splines"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Moves an object along a spline","text":"Moves an object along a spline.\nUse this with a SplineContainer component.\n\n- Example http://samples.needle.tools/splines"},"flags":{},"children":[]},{"file":"src/engine-components/timeline/PlayableDirector.ts","name":"PlayableDirector","kind":"class","categories":["Animation and Sequencing"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Controls and plays TimelineAssets","text":"The PlayableDirector component is the main component to control timelines in needle engine.\nIt is used to play, pause, stop and evaluate timelines.\nAssign a TimelineAsset to the `playableAsset` property to start playing a timeline."},"flags":{},"children":[{"name":"playOnAwake","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Set to true to start playing the timeline when the scene starts"}},{"name":"extrapolationMode","kind":"property","type":"DirectorWrapMode","comment":{"kind":"text","shortText":"Determines how the timeline behaves when it reaches the end of its duration."}}]},{"file":"src/engine-components/timeline/SignalAsset.ts","name":"SignalReceiver","kind":"class","categories":["Animation and Sequencing"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Receives signals and invokes reactions","text":"SignalReceiver is a component that listens for signals and invokes a reaction when a signal is received.\nSignals can be added to a signal track on a PlayableDirector"},"flags":{},"children":[{"name":"events","kind":"property","type":"SignalReceiverEvent[]","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/BaseUIComponent.ts","name":"BaseUIComponent","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Derive from this class if you want to implement your own UI components.\nIt provides utility methods…","text":"Derive from this class if you want to implement your own UI components.\nIt provides utility methods and simplifies managing the underlying three-mesh-ui hierarchy."},"flags":{},"children":[]},{"file":"src/engine-components/ui/BaseUIComponent.ts","name":"UIRootComponent","kind":"class","categories":[],"groups":[],"inheritedFrom":"BaseUIComponent","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/Button.ts","name":"Button","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"UI Button that can be clicked to perform actions","text":"Button is a UI component that can be clicked by the user to perform an action.\nIt supports different visual states such as normal, highlighted, pressed, and disabled.\nYou can customize the button's appearance using colors or animations for each state."},"flags":{},"children":[{"name":"onClick","kind":"property","type":"EventList<void>","comment":{"kind":"text","shortText":""}},{"name":"colors","kind":"property","type":"ButtonColors","comment":{"kind":"text","shortText":""}},{"name":"transition","kind":"property","type":"Transition","comment":{"kind":"text","shortText":""}},{"name":"animationTriggers","kind":"property","type":"AnimationTriggers","comment":{"kind":"text","shortText":""}},{"name":"animator","kind":"property","type":"Animator","comment":{"kind":"text","shortText":""}},{"name":"interactable","kind":"property","type":"any","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Canvas.ts","name":"Canvas","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"UIRootComponent","comment":{"kind":"text","shortText":"Root component for UI elements, managing layout and rendering settings","text":"Canvas is the root component for all UI elements in a scene.\nIt defines the area where UI elements are rendered and manages their layout and rendering settings.\nCanvases can be set to render in world space or screen space (overlay or camera).\nMultiple canvases can exist in a scene, each with its own settings and hierarchy of UI elements."},"flags":{},"children":[{"name":"renderOnTop","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"depthWrite","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"doubleSided","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"castShadows","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"receiveShadows","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"rootCanvas","kind":"property","type":"Canvas","comment":{"kind":"text","shortText":""}},{"name":"worldCamera","kind":"property","type":"Camera","comment":{"kind":"text","shortText":""}},{"name":"planeDistance","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/CanvasGroup.ts","name":"CanvasGroup","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Group UI elements to control transparency and interactivity","text":"CanvasGroup is a UI component that allows you to control the transparency and interactivity of a group of UI elements.\nBy adjusting the alpha property, you can fade in or out all child UI elements simultaneously.\nThe interactable and blocksRaycasts properties let you enable or disable user interaction for the entire group."},"flags":{},"children":[{"name":"interactable","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"blocksRaycasts","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/EventSystem.ts","name":"EventSystem","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Manages and dispatches input events to UI components","text":"The EventSystem is responsible for managing and dispatching input events to UI components within the scene."},"flags":{},"children":[]},{"file":"src/engine-components/ui/Graphic.ts","name":"Graphic","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"BaseUIComponent","comment":{"kind":"text","shortText":""},"flags":{},"children":[{"name":"raycastTarget","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Graphic.ts","name":"MaskableGraphic","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Graphic","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/Image.ts","name":"Image","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"MaskableGraphic","comment":{"kind":"text","shortText":"Display a 2D image in the UI","text":"Image is a UI component that displays a sprite (2D image) in the user interface.\nYou can set the image property to assign a texture to be displayed.\nThe sprite can be customized with various properties such as color tinting and pixel density."},"flags":{},"children":[{"name":"pixelsPerUnitMultiplier","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Image.ts","name":"RawImage","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"MaskableGraphic","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/InputField.ts","name":"InputField","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Text field for user input","text":"InputField is a UI component that allows users to enter and edit text.\nIt provides a text input area where users can type, delete, and modify text.\nThe InputField supports placeholder text, events for value changes, and end edit actions."},"flags":{},"children":[{"name":"textComponent","kind":"property","type":"Text","comment":{"kind":"text","shortText":""}},{"name":"placeholder","kind":"property","type":"Text","comment":{"kind":"text","shortText":""}},{"name":"onValueChanged","kind":"property","type":"EventList<any>","comment":{"kind":"text","shortText":""}},{"name":"onEndEdit","kind":"property","type":"EventList<any>","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Layout.ts","name":"LayoutGroup","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":""},"flags":{"isAbstract":true},"children":[{"name":"childAlignment","kind":"property","type":"TextAnchor","comment":{"kind":"text","shortText":""}},{"name":"reverseArrangement","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"spacing","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"padding","kind":"property","type":"Padding","comment":{"kind":"text","shortText":""}},{"name":"minWidth","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"minHeight","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"flexibleHeight","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"flexibleWidth","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"preferredHeight","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"preferredWidth","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Layout.ts","name":"HorizontalOrVerticalLayoutGroup","kind":"class","categories":[],"groups":[],"inheritedFrom":"LayoutGroup","comment":{"kind":"text","shortText":""},"flags":{"isAbstract":true},"children":[{"name":"childControlHeight","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childControlWidth","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childForceExpandHeight","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childForceExpandWidth","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childScaleHeight","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"childScaleWidth","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Layout.ts","name":"VerticalLayoutGroup","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"HorizontalOrVerticalLayoutGroup","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/Layout.ts","name":"HorizontalLayoutGroup","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"HorizontalOrVerticalLayoutGroup","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/Layout.ts","name":"GridLayoutGroup","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"LayoutGroup","comment":{"kind":"text","shortText":""},"flags":{},"children":[]},{"file":"src/engine-components/ui/Outline.ts","name":"Outline","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Add an outline effect to UI elements","text":"Outline is a UI component that adds an outline effect to UI elements.\nYou can customize the outline color and distance to create a visual border around the UI element."},"flags":{},"children":[{"name":"effectColor","kind":"property","type":"RGBAColor","comment":{"kind":"text","shortText":""}},{"name":"effectDistance","kind":"property","type":"Vector2","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Raycaster.ts","name":"Raycaster","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Derive from this class to create your own custom Raycaster\nIf you override awake, onEnable or onDis…","text":"Derive from this class to create your own custom Raycaster\nIf you override awake, onEnable or onDisable, be sure to call the base class methods\nImplement `performRaycast` to perform your custom raycasting logic"},"flags":{"isAbstract":true},"children":[]},{"file":"src/engine-components/ui/Raycaster.ts","name":"ObjectRaycaster","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Raycaster","comment":{"kind":"text","shortText":"A Raycaster that performs raycasting against its own GameObject."},"flags":{},"children":[{"name":"ignoreSkinnedMeshes","kind":"property","type":"any","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Raycaster.ts","name":"GraphicRaycaster","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"ObjectRaycaster","comment":{"kind":"text","shortText":"Raycaster for UI elements"},"flags":{},"children":[]},{"file":"src/engine-components/ui/Raycaster.ts","name":"SpatialGrabRaycaster","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Raycaster","comment":{"kind":"text","shortText":"A Raycaster that performs sphere overlap raycasting for spatial grab interactions in XR."},"flags":{},"children":[]},{"file":"src/engine-components/ui/RectTransform.ts","name":"RectTransform","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"BaseUIComponent","comment":{"kind":"text","shortText":"UI Rectangle Transform"},"flags":{},"children":[{"name":"sizeDelta","kind":"property","type":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"pivot","kind":"property","type":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"anchorMin","kind":"property","type":"Vector2","comment":{"kind":"text","shortText":""}},{"name":"anchorMax","kind":"property","type":"Vector2","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/SpatialHtml.ts","name":"SpatialHtml","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Render HTML elements as 3D objects in the scene","text":"SpatialHtml is a component that allows you to integrate HTML elements into a 3D scene.\nBy specifying the ID of an existing HTML element, you can render it as a 3D object within the scene."},"flags":{},"children":[{"name":"id","kind":"property","type":"string | null","comment":{"kind":"text","shortText":""}},{"name":"keepAspect","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/ui/Text.ts","name":"Text","kind":"class","categories":["User Interface"],"groups":["Components"],"inheritedFrom":"Graphic","comment":{"kind":"text","shortText":"Display text in the UI"},"flags":{},"children":[{"name":"alignment","kind":"property","type":"TextAnchor","comment":{"kind":"text","shortText":""}},{"name":"verticalOverflow","kind":"property","type":"VerticalWrapMode","comment":{"kind":"text","shortText":""}},{"name":"horizontalOverflow","kind":"property","type":"HorizontalWrapMode","comment":{"kind":"text","shortText":""}},{"name":"lineSpacing","kind":"property","type":"number","comment":{"kind":"text","shortText":""}},{"name":"supportRichText","kind":"property","type":"boolean","comment":{"kind":"text","shortText":""}},{"name":"font","kind":"property","type":"string","comment":{"kind":"text","shortText":""}},{"name":"fontStyle","kind":"property","type":"FontStyle","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/utils/LookAt.ts","name":"LookAt","kind":"class","categories":["Everywhere Actions","Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Makes the object look at a target object or the camera","text":"LookAt behaviour makes the object look at a target object or the camera.\nIt can also invert the forward direction and keep the up direction."},"flags":{},"children":[{"name":"target","kind":"property","type":"Object3D","comment":{"kind":"text","shortText":"The target object to look at. If not set, the main camera will be used."}},{"name":"invertForward","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Inverts the forward direction."}},{"name":"keepUpDirection","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Keep the up direction."}},{"name":"copyTargetRotation","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Copy the target rotation."}}]},{"file":"src/engine-components/utils/OpenURL.ts","name":"OpenURL","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"OpenURL behaviour opens a URL in a new tab or window when the object (or any if it's children) is c…","text":"OpenURL behaviour opens a URL in a new tab or window when the object (or any if it's children) is clicked."},"flags":{},"children":[{"name":"url","kind":"property","type":"string","comment":{"kind":"text","shortText":"The URL to open."}},{"name":"mode","kind":"property","type":"OpenURLMode","comment":{"kind":"text","shortText":"The mode in which the URL should be opened: NewTab, SameTab, NewWindow."}},{"name":"clickable","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the URL will be opened when the object with this component is clicked."}}]},{"file":"src/engine-components/web/Clickthrough.ts","name":"ClickThrough","kind":"class","categories":["Web"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Allows pointer events to \"click through\" the 3D canvas to HTML elements behind it.","text":"ClickThrough component allows pointer events to \"click through\" the 3D canvas to HTML elements behind it.\n\nThis is useful if you have a transparent canvas overlaying HTML content and want to interact with the HTML content through the transparent areas of the canvas.\n\nUsage Options:\n- Add the ClickThrough component to any GameObject in your scene.\n- Alternatively, add the `clickthrough` attribute to the `<needle-engine>` HTML element (e.g. `<needle-engine clickthrough></needle-engine>`).\n\n- Example https://stackblitz.com/~/github.com/needle-engine/sample-3d-over-html"},"flags":{},"children":[]},{"file":"src/engine-components/web/CursorFollow.ts","name":"CursorFollow","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Makes the object follow the cursor position on screen","text":"The CursorFollow component makes the object follow the cursor (or touch) position on screen.\n\n- Example: [Look At Cursor sample](https://engine.needle.tools/samples/look-at-cursor-interactive-3d-header/). This sample combines the CursorFollow component with a LookAt component to create an interactive 3D header that looks at the cursor."},"flags":{},"children":[{"name":"damping","kind":"property","type":"number","comment":{"kind":"text","shortText":"Damping for the movement, set to 0 for instant movement"}},{"name":"useFullPage","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled the object will follow the cursor even outside of the needle-engine canvas. This is useful for example for look at effects where you have a small needle-engine element on your page and you want the 3D object to keep looking at the cursor even when it's outside of the canvas."}},{"name":"keepDistance","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the initial distance to the camera is maintained when following the cursor."}},{"name":"snapToSurface","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the object will attempt to snap to the surface of other objects in the scene using a raycast."}}]},{"file":"src/engine-components/web/HoverAnimation.ts","name":"HoverAnimation","kind":"class","categories":["Interactivity"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Hover Animation on Pointer Enter/Exit","text":"Plays a hover animation on the object this component was added to when the mouse pointer (or touch) is over the object or any of it's children.\n\nBy default, a simple scale-up animation is used. You can customize the hover and idle animations by providing your own animation clips."},"flags":{},"children":[{"name":"type","kind":"property","type":"ScaleClipType","comment":{"kind":"text","shortText":"Default hover animation type if no custom clip is provided.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"duration","kind":"property","type":"number","comment":{"kind":"text","shortText":"Duration of the hover animation in seconds.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"scaleFactor","kind":"property","type":"number","comment":{"kind":"text","shortText":"Scale factor to apply when hovering.\n**Node**: This is only used if no custom hover animation clip is provided."}},{"name":"hovered","kind":"property","type":"AnimationClip | null","comment":{"kind":"text","shortText":"Animation clip to play when hovering. If null, a default scale-up animation is used."}},{"name":"idle","kind":"property","type":"AnimationClip | null","comment":{"kind":"text","shortText":"Animation clip to play when not hovering. If null, an empty clip is used."}}]},{"file":"src/engine-components/web/ScrollFollow.ts","name":"ScrollFollow","kind":"class","categories":["Web"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Links scroll position to target objects","text":"The ScrollFollow component allows you to link the scroll position of the page (or a specific element) to one or more target objects.\n\nThis can be used to create scroll-based animations, audio playback, or other effects. For example you can link the scroll position to a timeline (PlayableDirector) to create scroll-based storytelling effects or to an Animator component to change the animation state based on scroll.\n\nAssign target objects to the component to have them updated based on the current scroll position (check the 'target' property for supported types)."},"flags":{},"children":[{"name":"target","kind":"property","type":"object[] | object | null","comment":{"kind":"text","shortText":"Target object(s) to follow the scroll position of the page.\n\nSupported target types:\n- PlayableDirector (timeline), the scroll position will be mapped to the timeline time\n- Animator, the scroll position will be set to a float parameter named \"scroll\"\n- Animation, the scroll position will be mapped to the animation time\n- AudioSource, the scroll position will be mapped to the audio time\n- SplineWalker, the scroll position will be mapped to the position01 property\n- Light, the scroll position will be mapped to the intensity property\n- Object3D, the object will move vertically based on the scroll position\n- Any object with a `scroll` property (number or function)"}},{"name":"damping","kind":"property","type":"number","comment":{"kind":"text","shortText":"Damping for the movement, set to 0 for instant movement"}},{"name":"invert","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the scroll value will be inverted (e.g. scrolling down will result in a value of 0)"}},{"name":"htmlSelector","kind":"property","type":"string | null","comment":{"kind":"text","shortText":"**Experimental - might change in future updates**\nIf set, the scroll position will be read from the specified element instead of the window.\nUse a CSS selector to specify the element, e.g. `#my-scrollable-div` or `.scroll-container`."}},{"name":"mode","kind":"property","type":"\"window\"","comment":{"kind":"text","shortText":""}},{"name":"changed","kind":"property","type":"EventList<ScrollFollowEvent>","comment":{"kind":"text","shortText":"Event fired when the scroll position changes"}}]},{"file":"src/engine-components/web/ViewBox.ts","name":"ViewBox","kind":"class","categories":["Camera and Controls"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Automatically fits a box area into the camera view","text":"This component can be used to automatically fit a certain box area into the camera view - no matter your screen size or aspect ratio.\nThis is useful for example to frame a character or object in the center of the screen and ensure it is always fully visible. You can also animate or scale the viewbox to create zoom or framing effects.\n\n- [Example on needle.run](https://viewbox-demo-z23hmxbz2gkayo-z1nyzm6.needle.run/)\n- [Scrollytelling Demo using animated Viewbox](https://scrollytelling-bike-z23hmxb2gnu5a.needle.run/)\n- [Example on Stackblitz](https://stackblitz.com/edit/needle-engine-view-box-example)"},"flags":{},"children":[{"name":"referenceFieldOfView","kind":"property","type":"number","comment":{"kind":"text","shortText":"The reference field of view is used to calculate the box size. This should usually be the same as your camera's fov."}},{"name":"debug","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Enable debug logs and rendering for this component instance"}}]},{"file":"src/engine-components/webxr/Avatar.ts","name":"Avatar","kind":"class","categories":["XR","Networking"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"WebXR Avatar component for head and hands synchronization","text":"Avatar component to setup a WebXR avatar with head and hand objects.\n\nThe avatar will automatically synchronize the head and hand objects with the XR rig when entering an XR session."},"flags":{},"children":[{"name":"head","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":""}},{"name":"leftHand","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":""}},{"name":"rightHand","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/webxr/TeleportTarget.ts","name":"TeleportTarget","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"This component is just used as a marker on objects for WebXR teleportation\nThe XRControllerMovement…","text":"This component is just used as a marker on objects for WebXR teleportation\nThe XRControllerMovement component can be configured to check if the TeleportTarget component is present on an object to allow teleporting to that object."},"flags":{},"children":[]},{"file":"src/engine-components/webxr/WebARCameraBackground.ts","name":"WebARCameraBackground","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Displays the camera feed as background in WebAR sessions","text":"WebARCameraBackground is a component that allows to display the camera feed as a background in an AR session to more easily blend the real world with the virtual world or applying effects to the camera feed.\n\n- Example: https://samples.needle.tools/ar-camera-background"},"flags":{},"children":[{"name":"backgroundTint","kind":"property","type":"RGBAColor","comment":{"kind":"text","shortText":"The tint color of the camera feed"}}]},{"file":"src/engine-components/webxr/WebARSessionRoot.ts","name":"WebARSessionRoot","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Root object for WebAR sessions, managing scene placement and user scaling in AR.","text":"The WebARSessionRoot is the root object for a WebAR session and used to place the scene in AR.\nIt is also responsible for scaling the user in AR and to define the center of the AR scene. If not present in the scene it will be created automatically by the WebXR component when entering an AR session."},"flags":{},"children":[]},{"file":"src/engine-components/webxr/WebXR.ts","name":"WebXR","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"WebXR Component for VR and AR support","text":"Use the WebXR component to enable VR, AR and Quicklook on iOS in your scene.\n\nThe WebXR component is a simple to use wrapper around the NeedleXRSession API and adds some additional features like creating buttons for AR, VR, enabling default movement behaviour (XRControllerMovement) and controller rendering (XRControllerModel), as well as handling AR placement and Quicklook USDZ export.\n\n- Example: https://samples.needle.tools/collaborative-sandbox"},"flags":{},"children":[{"name":"createVRButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a button will be automatically added to NeedleMenu that allows users to enter VR mode."}},{"name":"createARButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a button will be automatically added to NeedleMenu that allows users to enter AR mode."}},{"name":"createSendToQuestButton","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a button to send the experience to an Oculus Quest will be shown if the current device does not support VR.\nThis helps direct users to compatible devices for optimal VR experiences."}},{"name":"createQRCode","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a QR code will be generated and displayed on desktop devices to allow easy opening of the experience on mobile devices."}},{"name":"useDefaultControls","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, default movement controls will be automatically added to the scene when entering VR.\nThis includes teleportation and smooth locomotion options for VR controllers."}},{"name":"showControllerModels","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, 3D models representing the user's VR controllers will be automatically created and rendered in the scene."}},{"name":"showHandModels","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, 3D models representing the user's hands will be automatically created and rendered when hand tracking is available."}},{"name":"usePlacementReticle","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a reticle will be displayed to help place the scene in AR. The user must tap on a detected surface to position the scene."}},{"name":"customARPlacementReticle","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"Optional custom 3D object to use as the AR placement reticle instead of the default one."}},{"name":"usePlacementAdjustment","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, users can adjust the position, rotation, and scale of the AR scene with one or two fingers after initial placement."}},{"name":"arScale","kind":"property","type":"number","comment":{"kind":"text","shortText":"Determines the scale of the user relative to the scene in AR. Larger values make the 3D content appear smaller.\nOnly applies when `usePlacementReticle` is enabled."}},{"name":"useXRAnchor","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, an XRAnchor will be created for the AR scene and its position will be regularly updated to match the anchor.\nThis can help with spatial persistence in AR experiences."}},{"name":"autoPlace","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, the scene will be automatically placed as soon as a suitable surface is detected in AR,\nwithout requiring the user to tap to confirm placement."}},{"name":"autoCenter","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, the AR session root center will be automatically adjusted to place the center of the scene.\nThis helps ensure the scene is properly aligned with detected surfaces."}},{"name":"useQuicklookExport","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a USDZExporter component will be automatically added to the scene if none is found.\nThis allows iOS and visionOS devices to view 3D content using Apple's AR QuickLook."}},{"name":"useDepthSensing","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, the 'depth-sensing' WebXR feature will be requested to provide real-time depth occlusion.\nCurrently only supported on Oculus Quest devices."}},{"name":"useSpatialGrab","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled, a SpatialGrabRaycaster will be added or enabled in the scene,\nallowing users to interact with objects at a distance in VR/AR."}},{"name":"defaultAvatar","kind":"property","type":"AssetReference | boolean","comment":{"kind":"text","shortText":"Specifies the avatar representation that will be created when entering a WebXR session.\nCan be a reference to a 3D model or a boolean to use the default avatar."}}]},{"file":"src/engine-components/webxr/WebXRAvatar.ts","name":"AvatarMarker","kind":"class","categories":[],"groups":[],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"This is used to mark an object being controlled / owned by a player\nThis system might be refactored…","text":"This is used to mark an object being controlled / owned by a player\nThis system might be refactored and moved to a more centralized place in a future version"},"flags":{},"children":[]},{"file":"src/engine-components/webxr/WebXRImageTracking.ts","name":"WebXRImageTracking","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Add this component to a object to enable image tracking in WebXR sessions.\n\nYou need to add at leas…","text":"Add this component to a object to enable image tracking in WebXR sessions.\n\nYou need to add at least one WebXRImageTrackingModel to the `trackedImages` array to define which images to track and which objects to place on top of them.\n\n**NOTE:** For Android devices, image tracking currently requires the user to enable the `chrome://flags/#webxr-incubations` flag in Chrome.\n\n**NOTE:** For iOS only one image can be tracked at a time. If you have multiple images in the `trackedImages` array, only the first one will be tracked. You can use the setPrimaryImage method to change which image is tracked before entering the XR session.\n\n- Example: https://samples.needle.tools/image-tracking"},"flags":{},"children":[{"name":"trackedImages","kind":"property","type":"WebXRImageTrackingModel[]","comment":{"kind":"text","shortText":"List of images to track in the WebXR session. Use WebXRImageTrackingModel to define each image and the object to place on top of it.\n\nUse the `addImage()` and `setPrimaryImage()` methods to modify this array at runtime."}},{"name":"smooth","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Applies smoothing based on detected jitter to the tracked image."}}]},{"file":"src/engine-components/webxr/WebXRPlaneTracking.ts","name":"WebXRPlaneTracking","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Use this component to track planes and meshes in the real world when in immersive-ar (e.g. on Oculu…","text":"Use this component to track planes and meshes in the real world when in immersive-ar (e.g. on Oculus Quest)."},"flags":{},"children":[{"name":"dataTemplate","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"Optional: if assigned it will be instantiated per tracked plane/tracked mesh.\nIf not assigned a simple mesh will be used. Use `occluder` to create occlusion meshes that don't render color but only depth."}},{"name":"occluder","kind":"property","type":"any","comment":{"kind":"text","shortText":"If true an occluder material will be applied to the tracked planes/meshes.\nNote: this will only be applied if dataTemplate is not assigned"}},{"name":"initiateRoomCaptureIfNoData","kind":"property","type":"any","comment":{"kind":"text","shortText":"If true the system will try to initiate room capture if no planes are detected."}},{"name":"usePlaneData","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true plane tracking will be enabled"}},{"name":"useMeshData","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true mesh tracking will be enabled"}},{"name":"runInVR","kind":"property","type":"any","comment":{"kind":"text","shortText":"when enabled mesh or plane tracking will also be used in VR"}}]},{"file":"src/engine-components/webxr/WebXRRig.ts","name":"XRRig","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"A user in XR (VR or AR) is parented to an XR rig during the session.\nWhen moving through the scene…","text":"A user in XR (VR or AR) is parented to an XR rig during the session.\nWhen moving through the scene the rig is moved instead of the user.\n\nYou can create multiple rigs in your scene and switch between them during an active XR session by calling setAsActiveXRRig on the XRRig instance.\nFor advanced use-cases you can also provide your own XRRig class by implementing the IXRRig interface and adding it to your scene."},"flags":{},"children":[{"name":"priority","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/webxr/XRFlag.ts","name":"XRFlag","kind":"class","categories":["XR","Utilities"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Use the XRFlag component to show or hide objects based on the current XR state or session.\nThis mea…","text":"Use the XRFlag component to show or hide objects based on the current XR state or session.\nThis means you can show or hide objects based on if the user is in VR, AR, using first person view or third person view."},"flags":{},"children":[{"name":"visibleIn","kind":"property","type":"number","comment":{"kind":"text","shortText":""}}]},{"file":"src/engine-components/webxr/controllers/XRControllerFollow.ts","name":"XRControllerFollow","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Makes the object follow a specific XR controller or hand","text":"Add this script to an object and set `side` to make the object follow a specific controller.\n\nThis can be useful to attach objects to controllers, for example a laser pointer or a 3D model of a tool."},"flags":{},"children":[{"name":"side","kind":"property","type":"XRHandedness | number","comment":{"kind":"text","shortText":"Should this object follow a right hand/controller or left hand/controller.\nWhen a number is provided, the controller with that index is followed."}},{"name":"controller","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"should it follow controllers (the physics controller)"}},{"name":"hands","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"should it follow hands (when using hand tracking in WebXR)"}},{"name":"controlVisibility","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"Disable if you don't want this script to modify the object's visibility\nIf enabled the object will be hidden when the configured controller or hand is not available\nIf disabled this script will not modify the object's visibility"}},{"name":"useGripSpace","kind":"property","type":"any","comment":{"kind":"text","shortText":"when true it will use the grip space, otherwise the ray space"}},{"name":"resetTransformAfterXRSession","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"when enabled the position, rotation and scale of this object will be set to the position it was at when it entered the XR session"}}]},{"file":"src/engine-components/webxr/controllers/XRControllerModel.ts","name":"XRControllerModel","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Displays controller or hand models in XR","text":"XRControllerModel is a component that allows to display controller models or hand models in an XR session.\nIt automatically loads the appropriate model for the connected controller or hand.\n\nYou can configure if controller models or hand models should be created."},"flags":{},"children":[{"name":"createControllerModel","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the controller model will be created when a controller is added/connected"}},{"name":"createHandModel","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"If true, the hand model will be created when a hand is \"added\"/tracked"}},{"name":"customLeftHand","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"assign a model or model url to create custom hand models"}},{"name":"customRightHand","kind":"property","type":"AssetReference","comment":{"kind":"text","shortText":"assign a model or model url to create custom hand models"}}]},{"file":"src/engine-components/webxr/controllers/XRControllerMovement.ts","name":"XRControllerMovement","kind":"class","categories":["XR"],"groups":["Components"],"inheritedFrom":"Behaviour","comment":{"kind":"text","shortText":"Move the XR rig using controller input","text":"XRControllerMovement is a component that allows to move the XR rig using the XR controller input.\n\nIt supports movement using the left controller's thumbstick and rotation using the right controller's thumbstick.\n\nAdditionally it supports teleporting using the right controller's thumbstick or by pinching the index finger tip in front of the hand (if hand tracking is enabled).\nIt also visualizes controller rays and hit points in the scene."},"flags":{},"children":[{"name":"movementSpeed","kind":"property","type":"any","comment":{"kind":"text","shortText":"Movement speed in meters per second"}},{"name":"rotationStep","kind":"property","type":"any","comment":{"kind":"text","shortText":"How many degrees to rotate the XR rig when using the rotation trigger"}},{"name":"useTeleport","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled you can teleport using the right XR controller's thumbstick by pressing forward"}},{"name":"usePinchToTeleport","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"When enabled you can teleport by pinching the right XR controller's index finger tip in front of the hand"}},{"name":"useTeleportTarget","kind":"property","type":"any","comment":{"kind":"text","shortText":"Enable to only allow teleporting on objects with a TeleportTarget component (see TeleportTarget)"}},{"name":"useTeleportFade","kind":"property","type":"any","comment":{"kind":"text","shortText":"Enable to fade out the scene when teleporting"}},{"name":"showRays","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"enable to visualize controller rays in the 3D scene"}},{"name":"showHits","kind":"property","type":"boolean","comment":{"kind":"text","shortText":"enable to visualize pointer targets in the 3D scene"}}]}]
|