@needle-tools/engine 5.0.3 → 5.1.0-alpha.1

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 (173) hide show
  1. package/CHANGELOG.md +31 -4
  2. package/README.md +6 -7
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-BXk8jYW3.js → needle-engine.bundle-BGyKqxBH.js} +12394 -11786
  5. package/dist/needle-engine.bundle-CiYtOO2O.min.js +1732 -0
  6. package/dist/needle-engine.bundle-DzVx9Z8D.umd.cjs +1732 -0
  7. package/dist/needle-engine.d.ts +660 -63
  8. package/dist/needle-engine.js +579 -566
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/{vendor-vHLk8sXu.js → vendor-CAcsI0eU.js} +116 -115
  12. package/dist/{vendor-CntUvmJu.umd.cjs → vendor-CEM38hLE.umd.cjs} +2 -2
  13. package/dist/{vendor-DPbfJJ4d.min.js → vendor-HRlxIBga.min.js} +2 -2
  14. package/lib/engine/api.d.ts +2 -0
  15. package/lib/engine/api.js +2 -0
  16. package/lib/engine/api.js.map +1 -1
  17. package/lib/engine/engine_addressables.js +5 -1
  18. package/lib/engine/engine_addressables.js.map +1 -1
  19. package/lib/engine/engine_animation.d.ts +14 -7
  20. package/lib/engine/engine_animation.js +49 -9
  21. package/lib/engine/engine_animation.js.map +1 -1
  22. package/lib/engine/engine_components.js +33 -4
  23. package/lib/engine/engine_components.js.map +1 -1
  24. package/lib/engine/engine_context.d.ts +7 -2
  25. package/lib/engine/engine_context.js +10 -2
  26. package/lib/engine/engine_context.js.map +1 -1
  27. package/lib/engine/engine_gameobject.d.ts +4 -0
  28. package/lib/engine/engine_gameobject.js.map +1 -1
  29. package/lib/engine/engine_init.js +4 -0
  30. package/lib/engine/engine_init.js.map +1 -1
  31. package/lib/engine/engine_input.js +4 -1
  32. package/lib/engine/engine_input.js.map +1 -1
  33. package/lib/engine/engine_materialpropertyblock.js +0 -19
  34. package/lib/engine/engine_materialpropertyblock.js.map +1 -1
  35. package/lib/engine/engine_networking.d.ts +11 -8
  36. package/lib/engine/engine_networking.js +43 -26
  37. package/lib/engine/engine_networking.js.map +1 -1
  38. package/lib/engine/engine_networking_instantiate.d.ts +100 -5
  39. package/lib/engine/engine_networking_instantiate.js +150 -16
  40. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  41. package/lib/engine/engine_networking_prefabs.d.ts +59 -0
  42. package/lib/engine/engine_networking_prefabs.js +67 -0
  43. package/lib/engine/engine_networking_prefabs.js.map +1 -0
  44. package/lib/engine/engine_physics_rapier.d.ts +3 -0
  45. package/lib/engine/engine_physics_rapier.js +13 -9
  46. package/lib/engine/engine_physics_rapier.js.map +1 -1
  47. package/lib/engine/engine_utils.js +2 -2
  48. package/lib/engine/engine_utils.js.map +1 -1
  49. package/lib/engine/postprocessing/api.d.ts +2 -0
  50. package/lib/engine/postprocessing/api.js +2 -0
  51. package/lib/engine/postprocessing/api.js.map +1 -0
  52. package/lib/engine/postprocessing/index.d.ts +2 -0
  53. package/lib/engine/postprocessing/index.js +2 -0
  54. package/lib/engine/postprocessing/index.js.map +1 -0
  55. package/lib/engine/postprocessing/postprocessing.d.ts +83 -0
  56. package/lib/engine/postprocessing/postprocessing.js +280 -0
  57. package/lib/engine/postprocessing/postprocessing.js.map +1 -0
  58. package/lib/engine/postprocessing/types.d.ts +39 -0
  59. package/lib/engine/postprocessing/types.js +2 -0
  60. package/lib/engine/postprocessing/types.js.map +1 -0
  61. package/lib/engine/webcomponents/WebXRButtons.js +17 -3
  62. package/lib/engine/webcomponents/WebXRButtons.js.map +1 -1
  63. package/lib/engine/xr/NeedleXRSession.d.ts +2 -0
  64. package/lib/engine/xr/NeedleXRSession.js +47 -14
  65. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  66. package/lib/engine/xr/events.d.ts +30 -3
  67. package/lib/engine/xr/events.js +38 -0
  68. package/lib/engine/xr/events.js.map +1 -1
  69. package/lib/engine/xr/init.d.ts +4 -0
  70. package/lib/engine/xr/init.js +43 -0
  71. package/lib/engine/xr/init.js.map +1 -0
  72. package/lib/engine-components/AnimationUtils.d.ts +4 -1
  73. package/lib/engine-components/AnimationUtils.js +7 -19
  74. package/lib/engine-components/AnimationUtils.js.map +1 -1
  75. package/lib/engine-components/AnimatorController.d.ts +135 -2
  76. package/lib/engine-components/AnimatorController.js +216 -13
  77. package/lib/engine-components/AnimatorController.js.map +1 -1
  78. package/lib/engine-components/SeeThrough.d.ts +0 -2
  79. package/lib/engine-components/SeeThrough.js +0 -89
  80. package/lib/engine-components/SeeThrough.js.map +1 -1
  81. package/lib/engine-components/SyncedRoom.d.ts +4 -0
  82. package/lib/engine-components/SyncedRoom.js +23 -8
  83. package/lib/engine-components/SyncedRoom.js.map +1 -1
  84. package/lib/engine-components/SyncedTransform.js +5 -5
  85. package/lib/engine-components/SyncedTransform.js.map +1 -1
  86. package/lib/engine-components/Voip.d.ts +46 -0
  87. package/lib/engine-components/Voip.js +126 -2
  88. package/lib/engine-components/Voip.js.map +1 -1
  89. package/lib/engine-components/api.d.ts +1 -0
  90. package/lib/engine-components/api.js +1 -0
  91. package/lib/engine-components/api.js.map +1 -1
  92. package/lib/engine-components/codegen/components.d.ts +1 -0
  93. package/lib/engine-components/codegen/components.js +1 -0
  94. package/lib/engine-components/codegen/components.js.map +1 -1
  95. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +5 -2
  96. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +11 -18
  97. package/lib/engine-components/postprocessing/Effects/Tonemapping.js.map +1 -1
  98. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +3 -4
  99. package/lib/engine-components/postprocessing/PostProcessingEffect.js +6 -15
  100. package/lib/engine-components/postprocessing/PostProcessingEffect.js.map +1 -1
  101. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +2 -1
  102. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  103. package/lib/engine-components/postprocessing/Volume.d.ts +18 -11
  104. package/lib/engine-components/postprocessing/Volume.js +61 -140
  105. package/lib/engine-components/postprocessing/Volume.js.map +1 -1
  106. package/lib/engine-components/postprocessing/index.d.ts +1 -0
  107. package/lib/engine-components/postprocessing/index.js +1 -0
  108. package/lib/engine-components/postprocessing/index.js.map +1 -1
  109. package/lib/engine-components/postprocessing/utils.d.ts +2 -0
  110. package/lib/engine-components/postprocessing/utils.js +2 -0
  111. package/lib/engine-components/postprocessing/utils.js.map +1 -1
  112. package/lib/engine-components/ui/Canvas.js +2 -2
  113. package/lib/engine-components/ui/Canvas.js.map +1 -1
  114. package/lib/engine-components/ui/Graphic.d.ts +3 -3
  115. package/lib/engine-components/ui/Graphic.js +6 -2
  116. package/lib/engine-components/ui/Graphic.js.map +1 -1
  117. package/lib/engine-components/ui/Text.d.ts +64 -11
  118. package/lib/engine-components/ui/Text.js +154 -45
  119. package/lib/engine-components/ui/Text.js.map +1 -1
  120. package/lib/engine-components/ui/index.d.ts +1 -0
  121. package/lib/engine-components/ui/index.js +1 -0
  122. package/lib/engine-components/ui/index.js.map +1 -1
  123. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +25 -3
  124. package/lib/engine-components-experimental/networking/PlayerSync.js +60 -11
  125. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
  126. package/package.json +5 -4
  127. package/plugins/common/logger.js +42 -19
  128. package/plugins/vite/ai.d.ts +11 -10
  129. package/plugins/vite/ai.js +305 -31
  130. package/plugins/vite/logger.client.js +4 -3
  131. package/src/engine/api.ts +3 -0
  132. package/src/engine/engine_addressables.ts +4 -1
  133. package/src/engine/engine_animation.ts +47 -9
  134. package/src/engine/engine_components.ts +36 -7
  135. package/src/engine/engine_context.ts +11 -2
  136. package/src/engine/engine_gameobject.ts +5 -0
  137. package/src/engine/engine_init.ts +4 -0
  138. package/src/engine/engine_input.ts +2 -1
  139. package/src/engine/engine_materialpropertyblock.ts +0 -19
  140. package/src/engine/engine_networking.ts +46 -23
  141. package/src/engine/engine_networking_instantiate.ts +160 -18
  142. package/src/engine/engine_networking_prefabs.ts +80 -0
  143. package/src/engine/engine_physics_rapier.ts +14 -9
  144. package/src/engine/engine_utils.ts +2 -2
  145. package/src/engine/postprocessing/api.ts +2 -0
  146. package/src/engine/postprocessing/index.ts +2 -0
  147. package/src/engine/postprocessing/postprocessing.ts +322 -0
  148. package/src/engine/postprocessing/types.ts +43 -0
  149. package/src/engine/webcomponents/WebXRButtons.ts +21 -4
  150. package/src/engine/xr/NeedleXRSession.ts +55 -20
  151. package/src/engine/xr/events.ts +44 -1
  152. package/src/engine/xr/init.ts +49 -0
  153. package/src/engine-components/AnimationUtils.ts +7 -17
  154. package/src/engine-components/AnimatorController.ts +288 -18
  155. package/src/engine-components/SeeThrough.ts +0 -116
  156. package/src/engine-components/SyncedRoom.ts +28 -9
  157. package/src/engine-components/SyncedTransform.ts +5 -5
  158. package/src/engine-components/Voip.ts +129 -2
  159. package/src/engine-components/api.ts +1 -0
  160. package/src/engine-components/codegen/components.ts +1 -0
  161. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +16 -24
  162. package/src/engine-components/postprocessing/PostProcessingEffect.ts +9 -16
  163. package/src/engine-components/postprocessing/PostProcessingHandler.ts +2 -1
  164. package/src/engine-components/postprocessing/Volume.ts +72 -163
  165. package/src/engine-components/postprocessing/index.ts +1 -0
  166. package/src/engine-components/postprocessing/utils.ts +2 -0
  167. package/src/engine-components/ui/Canvas.ts +2 -2
  168. package/src/engine-components/ui/Graphic.ts +7 -3
  169. package/src/engine-components/ui/Text.ts +170 -52
  170. package/src/engine-components/ui/index.ts +2 -1
  171. package/src/engine-components-experimental/networking/PlayerSync.ts +64 -11
  172. package/dist/needle-engine.bundle-CNH61kLA.umd.cjs +0 -1730
  173. package/dist/needle-engine.bundle-Dvh1jROn.min.js +0 -1730
package/CHANGELOG.md CHANGED
@@ -4,10 +4,37 @@ All notable changes to this package will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [5.0.3] - 2026-04-08
8
- - Add: PMREM / FastHDR support for GroundProjection with shader-based blurriness, blending, and alpha controls
9
- - Fix: MaterialPropertyBlock multi-material change from opaque to transparent
10
- - Improved: OrbitControls JSDoc for `targetBounds`
7
+ ## [5.1.0-alpha.1] - 2026-04-10
8
+ - Add: `AnimatorControllerBuilder` for building animator controllers from code (experimental)
9
+ - Add: XR global events now return an unsubscribe function + `onBeforeXRSessionRequest` event
10
+ - Add: `getComponent` by string name (experimental)
11
+ - Add: FastHDR (PMREM) support for `GroundProjection`
12
+ - Fix: `setParamWithoutReload` losing URL hash
13
+ - Fix: Physics treeshaking when used in code-only projects
14
+ - Improved: Vite logger with "latest" symlink, mobile fix, and more readable timestamps (at `node_modules/.needle/logs`). This is useful for local AI to help debug
15
+
16
+ ## [5.1.0-alpha] - 2026-04-07
17
+ #### Networking
18
+ - Add: VOIP `volume` property and `speaking` event
19
+ - Add: `onSyncInstantiate` and `onSyncDestroy` callbacks
20
+ - Change: `requestOwnership` now returns a `Promise`
21
+ - Change: `addComponent` generates deterministic component GUIDs for reliable networking of runtime-added components
22
+ - Change: `syncInstantiate` automatically adds to prefabProvider and assigns GUID
23
+
24
+ #### Rendering
25
+ - Add: MaterialX Voronoi node "cell" output
26
+ - Add: Postprocessing tests
27
+ - Change: Postprocessing moved to core — accessible via `context.postprocessing` and exported from `@needle-tools/engine`
28
+ - Improved: Tonemapping without other postprocessing effects is now applied directly to the renderer, avoiding an unnecessary postprocessing pass
29
+ - Fix: MaterialPropertyBlock multimaterial change from opaque to transparent
30
+
31
+ #### XR
32
+ - Improved: iOS AppClip AR session now opens reliably on first visit and first tap
33
+ - Fix: XR light intensity in scaled sessions
34
+
35
+ #### UI
36
+ - Fix: HTML mobile icon not rendering
37
+ - Fix: UI `Text` component absolute font URL handling
11
38
 
12
39
  ## [5.0.2] - 2026-04-03
13
40
  - Updated `@needle-tools/materialx` to 1.6.0:
package/README.md CHANGED
@@ -92,19 +92,17 @@ onUpdate((context) => {
92
92
 
93
93
  **WebXR & AR** — immersive experiences on Android and iOS
94
94
  - WebXR support including [WebXR on iOS](https://engine.needle.tools/docs/how-to-guides/xr/ios-webxr-app-clip.html)
95
- - `WebXRImageTracking` — AR image targets with full tracking lifecycle
95
+ - [`WebXRImageTracking`](https://engine.needle.tools/docs/api/WebXRImageTracking) — AR image targets with full tracking lifecycle
96
96
  - `WebXRPlaneTracking` — AR surface detection
97
97
  - Interactive QuickLook for AR on Vision Pro
98
98
 
99
99
  **Scene & Asset Management**
100
- - `SceneSwitcher` — load different scenes by URL
100
+ - `SceneSwitcher` — load different scenes / hierarchies by URL
101
101
  - `AssetReference` — runtime asset loading by URL
102
- - `NestedGltf` — lazy-load GLB files on demand within a scene
103
102
  - Multi-scene support with dynamic content loading
104
103
 
105
104
  **Physics & Interaction** — Built-in [Rapier](https://rapier.rs/) physics engine
106
105
  - `Rigidbody`, `BoxCollider`, `SphereCollider`, `MeshCollider` — full physics simulation
107
- - `CharacterController` — movement with gravity, slopes, and steps
108
106
  - `DragControls` — click-and-drag 3D objects with zero code
109
107
  - `SpatialTrigger` — proximity and enter-zone detection
110
108
 
@@ -113,17 +111,18 @@ onUpdate((context) => {
113
111
  - `Voip` — built-in WebRTC voice chat
114
112
  - `PlayerSync` — player object sync on join/leave
115
113
  - `SyncedCamera` — camera sync for observer sessions
114
+ - Low level networking events for full control
116
115
 
117
116
  **Rendering & Effects**
118
117
  - Advanced PBR rendering with lightmap support
119
- - Post-processing (Bloom, DepthOfField, SSAO, ChromaticAberration, and more)
120
- - Progressive texture and mesh loading with automatic LOD generation
118
+ - Post-processing (Bloom, DepthOfField, SSAO, ChromaticAberration, Tonemapping and more)
119
+ - [Progressive texture and mesh loading](https://engine.needle.tools/docs/gltf-progressive/) with automatic LOD generation
121
120
 
122
121
  **Animation & Media**
123
122
  - Animation state machines and timeline animations
124
123
  - `VideoPlayer` — full video playback component
125
124
  - `AudioSource` — 3D spatial audio
126
- - Animate anything via [KHR_animation_pointer](https://github.com/nicolo-ribaudo/glTF/tree/animation-pointer/extensions/2.0/Khronos/KHR_animation_pointer)
125
+ - Animate anything via [KHR_animation_pointer](https://www.npmjs.com/package/@needle-tools/three-animation-pointer)
127
126
 
128
127
  **Framework Integration** — works with React, Vue, Svelte, or vanilla JS/TS
129
128