@needle-tools/engine 4.14.0-next.52fdb13 → 4.14.0

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.
Files changed (79) hide show
  1. package/components.needle.json +1 -1
  2. package/dist/{needle-engine.bundle-DJE-Bjpa.umd.cjs → needle-engine.bundle-COL2Bar3.umd.cjs} +120 -128
  3. package/dist/{needle-engine.bundle-BwfaInTa.min.js → needle-engine.bundle-NolzHLqO.min.js} +129 -137
  4. package/dist/{needle-engine.bundle-TmE5-_na.js → needle-engine.bundle-Z_gAD7Kg.js} +5214 -5459
  5. package/dist/needle-engine.d.ts +42 -299
  6. package/dist/needle-engine.js +569 -570
  7. package/dist/needle-engine.min.js +1 -1
  8. package/dist/needle-engine.umd.cjs +1 -1
  9. package/lib/engine/engine_context.d.ts +0 -2
  10. package/lib/engine/engine_context.js +0 -7
  11. package/lib/engine/engine_context.js.map +1 -1
  12. package/lib/engine/engine_materialpropertyblock.d.ts +4 -90
  13. package/lib/engine/engine_materialpropertyblock.js +7 -97
  14. package/lib/engine/engine_materialpropertyblock.js.map +1 -1
  15. package/lib/engine/engine_math.d.ts +1 -34
  16. package/lib/engine/engine_math.js +1 -34
  17. package/lib/engine/engine_math.js.map +1 -1
  18. package/lib/engine/engine_networking.js +1 -1
  19. package/lib/engine/engine_networking.js.map +1 -1
  20. package/lib/engine/engine_types.d.ts +0 -2
  21. package/lib/engine/engine_types.js +0 -2
  22. package/lib/engine/engine_types.js.map +1 -1
  23. package/lib/engine/webcomponents/icons.js +0 -3
  24. package/lib/engine/webcomponents/icons.js.map +1 -1
  25. package/lib/engine/webcomponents/logo-element.d.ts +0 -1
  26. package/lib/engine/webcomponents/logo-element.js +1 -3
  27. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  28. package/lib/engine/webcomponents/needle-button.d.ts +11 -37
  29. package/lib/engine/webcomponents/needle-button.js +11 -42
  30. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  31. package/lib/engine/webcomponents/needle-engine.d.ts +2 -10
  32. package/lib/engine/webcomponents/needle-engine.js +3 -13
  33. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  34. package/lib/engine-components/Component.d.ts +2 -1
  35. package/lib/engine-components/Component.js +2 -1
  36. package/lib/engine-components/Component.js.map +1 -1
  37. package/lib/engine-components/DragControls.d.ts +0 -1
  38. package/lib/engine-components/DragControls.js +0 -21
  39. package/lib/engine-components/DragControls.js.map +1 -1
  40. package/lib/engine-components/NeedleMenu.d.ts +0 -2
  41. package/lib/engine-components/NeedleMenu.js +0 -2
  42. package/lib/engine-components/NeedleMenu.js.map +1 -1
  43. package/lib/engine-components/Networking.d.ts +3 -28
  44. package/lib/engine-components/Networking.js +3 -28
  45. package/lib/engine-components/Networking.js.map +1 -1
  46. package/lib/engine-components/ReflectionProbe.d.ts +0 -1
  47. package/lib/engine-components/ReflectionProbe.js +2 -20
  48. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  49. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +0 -15
  50. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +0 -77
  51. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -1
  52. package/lib/engine-components/ui/Button.d.ts +0 -1
  53. package/lib/engine-components/ui/Button.js +0 -11
  54. package/lib/engine-components/ui/Button.js.map +1 -1
  55. package/lib/engine-components/ui/Text.d.ts +0 -1
  56. package/lib/engine-components/ui/Text.js +0 -11
  57. package/lib/engine-components/ui/Text.js.map +1 -1
  58. package/package.json +2 -2
  59. package/src/engine/engine_context.ts +0 -9
  60. package/src/engine/engine_materialpropertyblock.ts +11 -102
  61. package/src/engine/engine_math.ts +1 -34
  62. package/src/engine/engine_networking.ts +1 -1
  63. package/src/engine/engine_types.ts +0 -5
  64. package/src/engine/webcomponents/icons.ts +0 -3
  65. package/src/engine/webcomponents/logo-element.ts +1 -4
  66. package/src/engine/webcomponents/needle-button.ts +13 -44
  67. package/src/engine/webcomponents/needle-engine.ts +7 -18
  68. package/src/engine-components/Component.ts +3 -1
  69. package/src/engine-components/DragControls.ts +4 -29
  70. package/src/engine-components/NeedleMenu.ts +3 -5
  71. package/src/engine-components/Networking.ts +4 -29
  72. package/src/engine-components/ReflectionProbe.ts +2 -21
  73. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +32 -108
  74. package/src/engine-components/ui/Button.ts +0 -12
  75. package/src/engine-components/ui/Text.ts +0 -13
  76. package/lib/engine/engine_accessibility.d.ts +0 -58
  77. package/lib/engine/engine_accessibility.js +0 -143
  78. package/lib/engine/engine_accessibility.js.map +0 -1
  79. package/src/engine/engine_accessibility.ts +0 -178
@@ -111,7 +111,7 @@ import { XRControllerModelFactory } from 'three/examples/jsm/webxr/XRControllerM
111
111
  import { XRHandMeshModel } from 'three/examples/jsm/webxr/XRHandMeshModel.js';
112
112
  import { XRHandSpace } from 'three';
113
113
 
114
- export declare const $componentName: unique symbol;
114
+ declare const $componentName: unique symbol;
115
115
 
116
116
  export declare const $physicsKey: unique symbol;
117
117
 
@@ -120,62 +120,6 @@ export declare class __Ignore {
120
120
 
121
121
  export declare function __internalNotifyObjectDestroyed(obj: Object3D): void;
122
122
 
123
- /** Data describing the accessible semantics for a 3D object or component. */
124
- declare type AccessibilityData = {
125
- /** ARIA role (e.g. `"button"`, `"img"`, `"region"`). */
126
- role: string;
127
- /** Human-readable label announced by screen readers. */
128
- label: string;
129
- /** When `true`, the element is hidden from the accessibility tree. */
130
- hidden?: boolean;
131
- /** When `true`, indicates the element's content is being updated. */
132
- busy?: boolean;
133
- };
134
-
135
- /**
136
- * Manages an accessible, screen-reader-friendly overlay for a Needle Engine {@link Context}.
137
- *
138
- * The manager maintains a visually-hidden DOM tree that mirrors relevant 3D scene objects
139
- * with appropriate ARIA roles and labels. It also provides a live region so that hover
140
- * events in the 3D scene can be announced to assistive technology without stealing focus.
141
- */
142
- declare class AccessibilityManager {
143
- private readonly context;
144
- private static readonly _managers;
145
- /** Returns the {@link AccessibilityManager} associated with the given context or component. */
146
- static get(obj: Context | IComponent): AccessibilityManager | undefined;
147
- constructor(context: Context);
148
- private _enabled;
149
- /** Enables or disables the accessibility overlay. When disabled, the overlay DOM is removed. */
150
- set enabled(value: boolean);
151
- /** Removes all tracked accessibility elements, keeping only the live region. */
152
- clear(): void;
153
- /** Removes the overlay from the DOM and unregisters this manager from the context. */
154
- dispose(): void;
155
- private readonly root;
156
- private readonly liveRegion;
157
- private readonly treeElements;
158
- /**
159
- * Creates or updates the accessible DOM element for a 3D object or component.
160
- * @param obj - The scene object or component to represent.
161
- * @param data - Partial accessibility data (role, label, hidden, busy) to apply.
162
- */
163
- updateElement<T extends Object3D | IComponent>(obj: T, data: Partial<AccessibilityData>): void;
164
- /** Moves keyboard focus to the accessible element representing the given object. */
165
- focus<T extends Object3D | IComponent>(obj: T): void;
166
- /** Removes keyboard focus from the accessible element representing the given object. */
167
- unfocus<T extends Object3D | IComponent>(obj: T): void;
168
- /**
169
- * Announces a hover event to screen readers via the ARIA live region.
170
- * @param obj - The hovered object (used to look up its label if `text` is not provided).
171
- * @param text - Optional text to announce. Falls back to the element's `aria-label`.
172
- */
173
- hover<T extends Object3D | IComponent>(obj: T, text?: string): void;
174
- /** Removes the accessible DOM element for the given object and stops tracking it. */
175
- removeElement(obj: Object3D | IComponent): void;
176
- private set liveRegionMode(value);
177
- }
178
-
179
123
  export declare class ActionBuilder {
180
124
  static sequence(...params: IBehaviorElement[]): GroupActionModel;
181
125
  static parallel(...params: IBehaviorElement[]): GroupActionModel;
@@ -2323,7 +2267,6 @@ export declare class Button extends Component implements IPointerEventHandler {
2323
2267
  awake(): void;
2324
2268
  start(): void;
2325
2269
  onEnable(): void;
2326
- onDisable(): void;
2327
2270
  onDestroy(): void;
2328
2271
  private _requestedAnimatorTrigger?;
2329
2272
  private setAnimatorTriggerAtEndOfFrame;
@@ -2900,9 +2843,6 @@ export declare class ChangeMaterialOnClick extends Component implements IPointer
2900
2843
  */
2901
2844
  fadeDuration: number;
2902
2845
  start(): void;
2903
- onEnable(): void;
2904
- onDisable(): void;
2905
- onDestroy(): void;
2906
2846
  onPointerEnter(_args: PointerEventData): void;
2907
2847
  onPointerExit(_: PointerEventData): void;
2908
2848
  onPointerClick(args: PointerEventData): void;
@@ -2947,9 +2887,6 @@ export declare class ChangeTransformOnClick extends Component implements IPointe
2947
2887
  private targetPos;
2948
2888
  private targetRot;
2949
2889
  private targetScale;
2950
- onEnable(): void;
2951
- onDisable(): void;
2952
- onDestroy(): void;
2953
2890
  onPointerEnter(): void;
2954
2891
  onPointerExit(): void;
2955
2892
  onPointerClick(args: PointerEventData): void;
@@ -4355,7 +4292,6 @@ export declare class Context implements IContext {
4355
4292
  readonly lodsManager: LODsManager;
4356
4293
  /** Access the needle menu to add or remove buttons to the menu element */
4357
4294
  readonly menu: NeedleMenu_2;
4358
- readonly accessibility: AccessibilityManager;
4359
4295
  /**
4360
4296
  * Checks if the context is fully created and ready
4361
4297
  * @returns true if the context is fully created and ready
@@ -5346,7 +5282,6 @@ export declare class DragControls extends Component implements IPointerEventHand
5346
5282
  /* Excluded from this release type: start */
5347
5283
  /* Excluded from this release type: onEnable */
5348
5284
  /* Excluded from this release type: onDisable */
5349
- onDestroy(): void;
5350
5285
  /**
5351
5286
  * Checks if editing is allowed for the current networking connection.
5352
5287
  * @param _obj Optional object to check edit permissions for
@@ -5738,9 +5673,6 @@ export declare class EmphasizeOnClick extends Component implements UsdzBehaviour
5738
5673
  duration: number;
5739
5674
  /** The type of motion to use for the emphasis effect (e.g. `"bounce"`, `"jiggle"`). */
5740
5675
  motionType: EmphasizeActionMotionType;
5741
- onEnable(): void;
5742
- onDisable(): void;
5743
- onDestroy(): void;
5744
5676
  beforeCreateDocument(): void;
5745
5677
  createBehaviours(ext: any, model: any, _context: any): void;
5746
5678
  afterCreateDocument(_ext: any, _context: any): void;
@@ -7844,7 +7776,6 @@ export declare type ICollisionContext = {
7844
7776
 
7845
7777
  export declare interface IComponent extends IHasGuid {
7846
7778
  get isComponent(): boolean;
7847
- get [$componentName](): string | undefined;
7848
7779
  /** the object this component is attached to */
7849
7780
  gameObject: IGameObject;
7850
7781
  enabled: boolean;
@@ -10162,22 +10093,13 @@ export declare class MaskableGraphic extends Graphic {
10162
10093
  * This is useful for rendering multiple objects with the same base material but different properties
10163
10094
  * (e.g., different colors, textures, or shader parameters).
10164
10095
  *
10165
- * ## How Property Blocks Work
10166
- *
10167
- * **Important**: Overrides are registered on the **Object3D**, not on the material.
10168
- * This means:
10169
- * - If you change the object's material, the overrides will still be applied to the new material
10170
- * - Multiple objects can share the same material but have different property overrides
10171
- * - If you don't want overrides applied after changing a material, you must remove them using {@link removeOveride}, {@link clearAllOverrides}, or {@link dispose}
10172
- *
10173
10096
  * The property block system works by:
10174
10097
  * - Temporarily applying overrides in onBeforeRender
10175
10098
  * - Restoring original values in onAfterRender
10176
10099
  * - Managing shader defines and program cache keys for correct shader compilation
10177
10100
  * - Supporting texture coordinate transforms per object
10178
10101
  *
10179
- * ## Common Use Cases
10180
- *
10102
+ * Common use cases:
10181
10103
  * - **Lightmaps**: Apply unique lightmap textures to individual objects sharing the same material
10182
10104
  * - **Reflection Probes**: Apply different environment maps per object for localized reflections
10183
10105
  * - **See-through effects**: Temporarily override transparency/transmission properties for X-ray effects
@@ -10215,26 +10137,6 @@ export declare class MaskableGraphic extends Graphic {
10215
10137
  * block.setDefine("USE_CUSTOM_FEATURE", 1);
10216
10138
  * ```
10217
10139
  *
10218
- * @example Material swapping behavior
10219
- * ```typescript
10220
- * const mesh = new Mesh(geometry, materialA);
10221
- * const block = MaterialPropertyBlock.get(mesh);
10222
- * block.setOverride("color", new Color(1, 0, 0));
10223
- *
10224
- * // The color override is red for materialA
10225
- *
10226
- * // Swap the material - overrides persist and apply to the new material!
10227
- * mesh.material = materialB;
10228
- * // The color override is now red for materialB too
10229
- *
10230
- * // If you don't want overrides on the new material, remove them:
10231
- * block.clearAllOverrides(); // Remove all overrides
10232
- * // or
10233
- * block.removeOveride("color"); // Remove specific override
10234
- * // or
10235
- * block.dispose(); // Remove the entire property block
10236
- * ```
10237
- *
10238
10140
  * @example Lightmap usage
10239
10141
  * ```typescript
10240
10142
  * const block = MaterialPropertyBlock.get(mesh);
@@ -10342,69 +10244,12 @@ export declare class MaterialPropertyBlock<T extends Material = Material> {
10342
10244
  getOverride<K extends NonFunctionPropertyNames<T>>(name: K): PropertyBlockOverride<T[K] & MaterialPropertyType> | undefined;
10343
10245
  getOverride<V extends MaterialPropertyType = MaterialPropertyType>(name: string): PropertyBlockOverride<V> | undefined;
10344
10246
  /**
10345
- * Removes a specific property override.
10346
- * After removal, the material will use its original property value for this property.
10347
- *
10348
- * @param name The property name to remove the override for
10349
- *
10350
- * @example
10351
- * ```typescript
10352
- * const block = MaterialPropertyBlock.get(mesh);
10353
- *
10354
- * // Set some overrides
10355
- * block.setOverride("color", new Color(1, 0, 0));
10356
- * block.setOverride("roughness", 0.5);
10357
- * block.setOverride("lightMap", lightmapTexture);
10358
- *
10359
- * // Remove a specific override - the material will now use its original color
10360
- * block.removeOveride("color");
10361
- *
10362
- * // Other overrides (roughness, lightMap) remain active
10363
- * ```
10247
+ * Removes a specific property override
10248
+ * @param name The property name to clear
10364
10249
  */
10365
10250
  removeOveride<K extends NonFunctionPropertyNames<T>>(name: K | ({} & string)): void;
10366
10251
  /**
10367
- * Removes all property overrides from this block.
10368
- * After calling this, the material will use its original values for all properties.
10369
- *
10370
- * **Note**: This does NOT remove shader defines. Use {@link clearDefine} or {@link dispose} for that.
10371
- *
10372
- * @example Remove all overrides but keep the property block
10373
- * ```typescript
10374
- * const block = MaterialPropertyBlock.get(mesh);
10375
- *
10376
- * // Set multiple overrides
10377
- * block.setOverride("color", new Color(1, 0, 0));
10378
- * block.setOverride("roughness", 0.5);
10379
- * block.setOverride("lightMap", lightmapTexture);
10380
- *
10381
- * // Later, remove all overrides at once
10382
- * block.clearAllOverrides();
10383
- *
10384
- * // The material now uses its original values
10385
- * // The property block still exists and can be reused with new overrides
10386
- * ```
10387
- *
10388
- * @example Temporarily disable all overrides
10389
- * ```typescript
10390
- * const block = MaterialPropertyBlock.get(mesh);
10391
- *
10392
- * // Save current overrides if you want to restore them later
10393
- * const savedOverrides = [...block.overrides];
10394
- *
10395
- * // Clear all overrides temporarily
10396
- * block.clearAllOverrides();
10397
- *
10398
- * // Do some rendering without overrides...
10399
- *
10400
- * // Restore overrides
10401
- * savedOverrides.forEach(override => {
10402
- * block.setOverride(override.name, override.value, override.textureTransform);
10403
- * });
10404
- * ```
10405
- *
10406
- * @see {@link removeOveride} - To remove a single override
10407
- * @see {@link dispose} - To completely remove the property block and clean up resources
10252
+ * Removes all property overrides from this block
10408
10253
  */
10409
10254
  clearAllOverrides(): void;
10410
10255
  /**
@@ -10805,58 +10650,32 @@ export declare namespace NEEDLE_ENGINE_MODULES {
10805
10650
  export { NEEDLE_progressive }
10806
10651
 
10807
10652
  /**
10808
- * [&lt;needle-button&gt;](https://engine.needle.tools/docs/api/NeedleButtonElement) is a web component for easily adding AR, VR, Quicklook, or QR code buttons to your website without writing JavaScript code.
10809
- *
10810
- * The button automatically handles session management and displays appropriate UI based on device capabilities.
10811
- * It comes with default styling (glassmorphism design) but can be fully customized with CSS.
10812
- *
10813
- * **Supported button types:**
10814
- * - `ar` - WebXR AR session button
10815
- * - `vr` - WebXR VR session button
10816
- * - `quicklook` - Apple AR Quick Look button (iOS only)
10817
- * - `qrcode` - QR code sharing button
10818
- *
10819
- * @example Basic AR/VR buttons
10653
+ * A <needle-button> can be used to simply add VR, AR or Quicklook buttons to your website without having to write any code.
10654
+ * @example
10820
10655
  * ```html
10821
- * <needle-engine src="scene.glb"></needle-engine>
10822
10656
  * <needle-button ar></needle-button>
10823
10657
  * <needle-button vr></needle-button>
10824
10658
  * <needle-button quicklook></needle-button>
10825
10659
  * ```
10826
10660
  *
10827
- * @example Custom button labels
10661
+ * @example custom label
10828
10662
  * ```html
10829
- * <needle-button ar>Start AR Experience</needle-button>
10830
- * <needle-button vr>Enter VR Mode</needle-button>
10663
+ * <needle-button ar>Start AR</needle-button>
10664
+ * <needle-button vr>Start VR</needle-button>
10831
10665
  * <needle-button quicklook>View in AR</needle-button>
10832
10666
  * ```
10833
10667
  *
10834
- * @example Custom styling
10668
+ * @example custom styling
10835
10669
  * ```html
10670
+ * <!-- You can either style the element directly or use a CSS stylesheet -->
10836
10671
  * <style>
10837
- * needle-button {
10838
- * background-color: #ff6b6b;
10839
- * color: white;
10840
- * border-radius: 8px;
10841
- * padding: 1rem 2rem;
10842
- * }
10843
- * needle-button:hover {
10844
- * background-color: #ff5252;
10845
- * }
10672
+ * needle-button {
10673
+ * background-color: red;
10674
+ * color: white;
10675
+ * }
10846
10676
  * </style>
10847
10677
  * <needle-button ar>Start AR</needle-button>
10848
10678
  * ```
10849
- *
10850
- * @example Unstyled button (for complete custom styling)
10851
- * ```html
10852
- * <needle-button ar unstyled>
10853
- * <span class="my-icon">🥽</span>
10854
- * Launch AR
10855
- * </needle-button>
10856
- * ```
10857
- *
10858
- * @see {@link NeedleEngineWebComponent} for the main &lt;needle-engine&gt; element
10859
- * @see {@link NeedleMenu} for the built-in menu component that can display similar buttons
10860
10679
  */
10861
10680
  export declare class NeedleButtonElement extends HTMLElement {
10862
10681
  #private;
@@ -10933,18 +10752,10 @@ export declare namespace NeedleEngineModelLoader {
10933
10752
  * The context is accessible from the `<needle-engine>` element: `document.querySelector("needle-engine").context`.
10934
10753
  * See {@link https://engine.needle.tools/docs/reference/needle-engine-attributes}
10935
10754
  *
10936
- * @example Basic usage
10937
- * ```html
10755
+ * @example
10938
10756
  * <needle-engine src="https://example.com/scene.glb"></needle-engine>
10939
- * ```
10940
- *
10941
- * @example With camera controls disabled
10942
- * ```html
10757
+ * @example
10943
10758
  * <needle-engine src="https://example.com/scene.glb" camera-controls="false"></needle-engine>
10944
- * ```
10945
- *
10946
- * @see {@link NeedleButtonElement} for adding AR/VR/Quicklook buttons via &lt;needle-button&gt;
10947
- * @see {@link NeedleMenu} for the built-in menu configuration component
10948
10759
  */
10949
10760
  export declare class NeedleEngineWebComponent extends HTMLElement implements INeedleEngineComponent {
10950
10761
  static get observedAttributes(): string[];
@@ -11271,8 +11082,6 @@ declare class NeedleGamepadButton {
11271
11082
  * @category User Interface
11272
11083
  * @group Components
11273
11084
  * @see {@link Context.menu} for programmatic menu control
11274
- * @see {@link NeedleButtonElement} for standalone &lt;needle-button&gt; web component
11275
- * @see {@link NeedleEngineWebComponent} for the main &lt;needle-engine&gt; element
11276
11085
  * @see {@link Voip} adds a microphone button to the menu
11277
11086
  * @see {@link ScreenCapture} adds a screen sharing button
11278
11087
  **/
@@ -12494,34 +12303,10 @@ export declare class NetworkedStreams extends EventDispatcher<any> {
12494
12303
  }
12495
12304
 
12496
12305
  /**
12497
- * Provides websocket URL configuration for the built-in networking system.
12498
- * Add this component to override the default networking backend URL used by {@link NetworkConnection} (`this.context.connection`).
12499
- *
12500
- * The component registers itself as a URL provider on `awake()`. When the networking system connects,
12501
- * it queries this provider for the websocket URL to use instead of the default Needle networking backend.
12502
- *
12503
- * **URL resolution order:**
12504
- * 1. If `urlParameterName` is set and the corresponding URL parameter exists in the browser URL, that value is used
12505
- * 2. If running on a local network and `localhost` is set, the `localhost` URL is used
12506
- * 3. Otherwise, the `url` field is used
12306
+ * Provides configuration to the built-in networking system.
12307
+ * This component supplies websocket URLs for establishing connections.
12308
+ * It implements the {@link INetworkingWebsocketUrlProvider} interface.
12507
12309
  *
12508
- * Without this component, the default backend URL `wss://networking-2.needle.tools/socket` is used.
12509
- *
12510
- * **Note:** This component only configures the websocket URL. To actually join a networked room,
12511
- * use a `SyncedRoom` component or call `this.context.connection.joinRoom("room-name")` directly.
12512
- *
12513
- * @example Overriding the URL via browser parameter
12514
- * ```ts
12515
- * // With urlParameterName="server", visiting:
12516
- * // https://myapp.com/?server=wss://my-server.com/socket
12517
- * // will connect to that server instead
12518
- * ```
12519
- *
12520
- * @see {@link NetworkConnection} for the main networking API (`this.context.connection`)
12521
- * @see {@link SyncedRoom} for automatic room joining
12522
- * @see {@link OwnershipModel} for networked object ownership
12523
- * @see {@link RoomEvents} for room lifecycle events
12524
- * @link https://engine.needle.tools/docs/how-to-guides/networking/
12525
12310
  * @summary Networking configuration
12526
12311
  * @category Networking
12527
12312
  * @group Components
@@ -12530,7 +12315,6 @@ export declare class Networking extends Component implements INetworkingWebsocke
12530
12315
  /**
12531
12316
  * The websocket URL to connect to for networking functionality.
12532
12317
  * Can be a complete URL or a relative path that will be resolved against the current origin.
12533
- * @default null
12534
12318
  */
12535
12319
  url: string | null;
12536
12320
  /**
@@ -12904,40 +12688,7 @@ export declare function onClear(cb: LifecycleMethod, opts?: LifecycleMethodOptio
12904
12688
  export declare function onDestroy(cb: LifecycleMethod, opts?: LifecycleMethodOptions): () => void;
12905
12689
 
12906
12690
  /**
12907
- * [OneEuroFilter](https://engine.needle.tools/docs/api/OneEuroFilter) is a low-pass filter designed to reduce jitter in noisy signals while maintaining low latency.
12908
- * It's particularly useful for smoothing tracking data from XR controllers, hand tracking, or other input devices where the signal contains noise but responsiveness is important.
12909
- *
12910
- * The filter automatically adapts its smoothing strength based on the signal's velocity:
12911
- * - When the signal moves slowly, it applies strong smoothing to reduce jitter
12912
- * - When the signal moves quickly, it reduces smoothing to maintain responsiveness
12913
- *
12914
- * Based on the research paper: [1€ Filter: A Simple Speed-based Low-pass Filter for Noisy Input](http://cristal.univ-lille.fr/~casiez/1euro/)
12915
- *
12916
- * @example Basic usage with timestamp
12917
- * ```ts
12918
- * const filter = new OneEuroFilter(120, 1.0, 0.0);
12919
- *
12920
- * // In your update loop:
12921
- * const smoothedValue = filter.filter(noisyValue, this.context.time.time);
12922
- * ```
12923
- *
12924
- * @example Without timestamps (using frequency estimate)
12925
- * ```ts
12926
- * // Assuming 60 FPS update rate
12927
- * const filter = new OneEuroFilter(60, 1.0, 0.5);
12928
- *
12929
- * // Call without timestamp - uses the frequency estimate
12930
- * const smoothedValue = filter.filter(noisyValue);
12931
- * ```
12932
- *
12933
- * @example Smoothing 3D positions
12934
- * ```ts
12935
- * const posFilter = new OneEuroFilterXYZ(90, 0.5, 0.0);
12936
- *
12937
- * posFilter.filter(trackedPosition, smoothedPosition, this.context.time.time);
12938
- * ```
12939
- *
12940
- * @see {@link OneEuroFilterXYZ} for filtering 3D vectors
12691
+ * OneEuroFilter is a simple low-pass filter for noisy signals. It uses a one-euro filter to smooth the signal.
12941
12692
  */
12942
12693
  export declare class OneEuroFilter {
12943
12694
  /**
@@ -14448,9 +14199,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
14448
14199
  trigger: "tap" | "start";
14449
14200
  animation?: Animation_2;
14450
14201
  private get target();
14451
- onEnable(): void;
14452
- onDisable(): void;
14453
- onDestroy(): void;
14454
14202
  onPointerEnter(): void;
14455
14203
  onPointerExit(): void;
14456
14204
  onPointerClick(args: PointerEventData): void;
@@ -14497,9 +14245,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
14497
14245
  toggleOnClick: boolean;
14498
14246
  trigger: "tap" | "start";
14499
14247
  ensureAudioSource(): void;
14500
- onEnable(): void;
14501
- onDisable(): void;
14502
- onDestroy(): void;
14503
14248
  onPointerEnter(): void;
14504
14249
  onPointerExit(): void;
14505
14250
  onPointerClick(args: PointerEventData): void;
@@ -15630,7 +15375,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
15630
15375
  */
15631
15376
  static get(object: Object3D | null | undefined, context: Context, isAnchor: boolean, anchor?: Object3D): ReflectionProbe | null;
15632
15377
  private _texture;
15633
- private _textureUrlInFlight?;
15634
15378
  set texture(tex: Texture);
15635
15379
  get texture(): Texture;
15636
15380
  intensity: number;
@@ -19744,7 +19488,6 @@ export declare class OrbitControls extends Component implements ICameraControlle
19744
19488
  private getTextOpts;
19745
19489
  onEnable(): void;
19746
19490
  onDisable(): void;
19747
- onDestroy(): void;
19748
19491
  private getAlignment;
19749
19492
  private feedText;
19750
19493
  private _didHandleTextRenderOnTop;
@@ -22936,6 +22679,12 @@ export declare namespace MaterialX {
22936
22679
  }): Promise<import("three").Material | null>;
22937
22680
  }
22938
22681
 
22682
+ declare global {
22683
+ interface HTMLElementTagNameMap {
22684
+ "needle-button": NeedleButtonElement;
22685
+ }
22686
+ }
22687
+
22939
22688
  /**
22940
22689
  * @internal
22941
22690
  */
@@ -22985,10 +22734,20 @@ export declare namespace InternalAttributeUtils {
22985
22734
  }): false | string | null;
22986
22735
  }
22987
22736
 
22988
- declare global {
22989
- interface HTMLElementTagNameMap {
22990
- "needle-button": NeedleButtonElement;
22991
- }
22737
+
22738
+ /**
22739
+ * @category Splines
22740
+ * @see {@link SplineContainer} for the main spline component that defines the path and knots
22741
+ */
22742
+ export declare namespace SplineUtils {
22743
+ /**
22744
+ * Creates a SplineContainer from an array of points.
22745
+ * @param positions The positions of the knots.
22746
+ * @param closed Whether the spline is closed (the last knot connects to the first).
22747
+ * @param tension The tension of the spline. 0 is no tension, 1 is high tension (straight lines between knots). Default is 0.75.
22748
+ * @return The created SplineContainer component - add it to an Object3D to use it.
22749
+ */
22750
+ function createFromPoints(positions: Vector3[], closed?: boolean, tension?: number): SplineContainer;
22992
22751
  }
22993
22752
 
22994
22753
 
@@ -23131,22 +22890,6 @@ declare module 'three' {
23131
22890
  }
23132
22891
  }
23133
22892
 
23134
-
23135
- /**
23136
- * @category Splines
23137
- * @see {@link SplineContainer} for the main spline component that defines the path and knots
23138
- */
23139
- export declare namespace SplineUtils {
23140
- /**
23141
- * Creates a SplineContainer from an array of points.
23142
- * @param positions The positions of the knots.
23143
- * @param closed Whether the spline is closed (the last knot connects to the first).
23144
- * @param tension The tension of the spline. 0 is no tension, 1 is high tension (straight lines between knots). Default is 0.75.
23145
- * @return The created SplineContainer component - add it to an Object3D to use it.
23146
- */
23147
- function createFromPoints(positions: Vector3[], closed?: boolean, tension?: number): SplineContainer;
23148
- }
23149
-
23150
22893
  declare global {
23151
22894
  interface HTMLElementTagNameMap {
23152
22895
  "needle-logo-element": NeedleLogoElement;