@needle-tools/engine 5.1.0-alpha.4 → 5.1.0-alpha.6

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 (133) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{needle-engine.bundle-DQCuBTVp.umd.cjs → needle-engine.bundle-5avtTUMM.umd.cjs} +149 -148
  4. package/dist/{needle-engine.bundle-AjVIot3d.min.js → needle-engine.bundle-BHcw4C8f.min.js} +187 -186
  5. package/dist/{needle-engine.bundle-B7cqsI4c.js → needle-engine.bundle-C0gPOq4m.js} +7522 -7092
  6. package/dist/needle-engine.d.ts +715 -176
  7. package/dist/needle-engine.js +595 -593
  8. package/dist/needle-engine.min.js +1 -1
  9. package/dist/needle-engine.umd.cjs +1 -1
  10. package/dist/three.js +1 -0
  11. package/dist/three.min.js +21 -21
  12. package/dist/three.umd.cjs +16 -16
  13. package/lib/engine/api.d.ts +3 -1
  14. package/lib/engine/api.js +3 -1
  15. package/lib/engine/api.js.map +1 -1
  16. package/lib/engine/codegen/register_types.js +10 -10
  17. package/lib/engine/codegen/register_types.js.map +1 -1
  18. package/lib/engine/engine_camera.fit.js +16 -4
  19. package/lib/engine/engine_camera.fit.js.map +1 -1
  20. package/lib/engine/engine_context.d.ts +20 -7
  21. package/lib/engine/engine_context.js +36 -14
  22. package/lib/engine/engine_context.js.map +1 -1
  23. package/lib/engine/engine_context_eventbus.d.ts +47 -0
  24. package/lib/engine/engine_context_eventbus.js +47 -0
  25. package/lib/engine/engine_context_eventbus.js.map +1 -0
  26. package/lib/engine/engine_init.js +2 -2
  27. package/lib/engine/engine_init.js.map +1 -1
  28. package/lib/engine/engine_input.d.ts +23 -4
  29. package/lib/engine/engine_input.js +2 -1
  30. package/lib/engine/engine_input.js.map +1 -1
  31. package/lib/engine/engine_license.d.ts +7 -7
  32. package/lib/engine/engine_license.js +185 -57
  33. package/lib/engine/engine_license.js.map +1 -1
  34. package/lib/engine/engine_networking_blob.js +3 -3
  35. package/lib/engine/engine_networking_blob.js.map +1 -1
  36. package/lib/engine/engine_physics_rapier.d.ts +10 -0
  37. package/lib/engine/engine_physics_rapier.js +6 -0
  38. package/lib/engine/engine_physics_rapier.js.map +1 -1
  39. package/lib/engine/engine_types.d.ts +10 -0
  40. package/lib/engine/engine_utils_qrcode.js +2 -2
  41. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  42. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
  43. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
  44. package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
  45. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  46. package/lib/engine/webcomponents/needle-engine.js +2 -2
  47. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  48. package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
  49. package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
  50. package/lib/engine/xr/TempXRContext.js +2 -2
  51. package/lib/engine/xr/TempXRContext.js.map +1 -1
  52. package/lib/engine-components/AnimationBuilder.d.ts +158 -0
  53. package/lib/engine-components/AnimationBuilder.js +305 -0
  54. package/lib/engine-components/AnimationBuilder.js.map +1 -0
  55. package/lib/engine-components/Animator.js +6 -1
  56. package/lib/engine-components/Animator.js.map +1 -1
  57. package/lib/engine-components/AnimatorController.builder.d.ts +101 -23
  58. package/lib/engine-components/AnimatorController.builder.js +88 -20
  59. package/lib/engine-components/AnimatorController.builder.js.map +1 -1
  60. package/lib/engine-components/AnimatorController.js +2 -0
  61. package/lib/engine-components/AnimatorController.js.map +1 -1
  62. package/lib/engine-components/ContactShadows.d.ts +1 -0
  63. package/lib/engine-components/ContactShadows.js +14 -1
  64. package/lib/engine-components/ContactShadows.js.map +1 -1
  65. package/lib/engine-components/DropListener.js +3 -0
  66. package/lib/engine-components/DropListener.js.map +1 -1
  67. package/lib/engine-components/OrbitControls.d.ts +0 -2
  68. package/lib/engine-components/OrbitControls.js +14 -1
  69. package/lib/engine-components/OrbitControls.js.map +1 -1
  70. package/lib/engine-components/SceneSwitcher.js +3 -0
  71. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  72. package/lib/engine-components/api.d.ts +1 -0
  73. package/lib/engine-components/api.js +1 -0
  74. package/lib/engine-components/api.js.map +1 -1
  75. package/lib/engine-components/codegen/components.d.ts +6 -6
  76. package/lib/engine-components/codegen/components.js +6 -6
  77. package/lib/engine-components/codegen/components.js.map +1 -1
  78. package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
  79. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  80. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  81. package/lib/engine-components/timeline/PlayableDirector.d.ts +7 -7
  82. package/lib/engine-components/timeline/PlayableDirector.js +6 -6
  83. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  84. package/lib/engine-components/timeline/TimelineBuilder.d.ts +175 -9
  85. package/lib/engine-components/timeline/TimelineBuilder.js +108 -2
  86. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -1
  87. package/lib/engine-components/timeline/TimelineTracks.d.ts +15 -7
  88. package/lib/engine-components/timeline/TimelineTracks.js +22 -14
  89. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  90. package/lib/engine-components/web/CursorFollow.d.ts +0 -1
  91. package/lib/engine-components/web/CursorFollow.js +0 -1
  92. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  93. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +62 -1
  94. package/lib/engine-components/webxr/WebXRImageTracking.js +55 -2
  95. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  96. package/package.json +1 -1
  97. package/plugins/common/cloud.js +6 -1
  98. package/plugins/common/license.js +26 -8
  99. package/plugins/vite/license.js +42 -7
  100. package/src/engine/api.ts +4 -1
  101. package/src/engine/codegen/register_types.ts +10 -10
  102. package/src/engine/engine_camera.fit.ts +15 -4
  103. package/src/engine/engine_context.ts +41 -16
  104. package/src/engine/engine_context_eventbus.ts +73 -0
  105. package/src/engine/engine_init.ts +2 -2
  106. package/src/engine/engine_input.ts +27 -6
  107. package/src/engine/engine_license.ts +201 -55
  108. package/src/engine/engine_networking_blob.ts +3 -3
  109. package/src/engine/engine_physics_rapier.ts +20 -6
  110. package/src/engine/engine_types.ts +22 -12
  111. package/src/engine/engine_utils_qrcode.ts +2 -2
  112. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
  113. package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
  114. package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
  115. package/src/engine/webcomponents/needle-engine.ts +2 -2
  116. package/src/engine/xr/TempXRContext.ts +2 -2
  117. package/src/engine-components/AnimationBuilder.ts +472 -0
  118. package/src/engine-components/Animator.ts +6 -1
  119. package/src/engine-components/AnimatorController.builder.ts +163 -37
  120. package/src/engine-components/AnimatorController.ts +1 -0
  121. package/src/engine-components/ContactShadows.ts +15 -1
  122. package/src/engine-components/DropListener.ts +3 -0
  123. package/src/engine-components/OrbitControls.ts +16 -5
  124. package/src/engine-components/SceneSwitcher.ts +3 -0
  125. package/src/engine-components/api.ts +1 -0
  126. package/src/engine-components/codegen/components.ts +6 -6
  127. package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
  128. package/src/engine-components/timeline/PlayableDirector.ts +20 -20
  129. package/src/engine-components/timeline/TimelineBuilder.ts +277 -17
  130. package/src/engine-components/timeline/TimelineTracks.ts +24 -16
  131. package/src/engine-components/web/CursorFollow.ts +0 -1
  132. package/src/engine-components/webxr/WebXRImageTracking.ts +77 -7
  133. package/src/vite-env.d.ts +0 -16
package/CHANGELOG.md CHANGED
@@ -4,6 +4,45 @@ 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.1.0-alpha.6] - 2026-05-12
8
+ - `WebXRImageTracking.imageTracked` event — invoked every frame an image is tracked, with typed access to the tracked object instance:
9
+ ```ts
10
+ imageTracking.imageTracked.addEventListener(evt => {
11
+ console.log(evt.object, evt.image);
12
+ });
13
+ ```
14
+ - `?stats` URL parameter now also logs renderer info (DPR, window DPR, antialias, MSAA samples, drawing buffer resolution)
15
+
16
+
17
+ ## [5.1.0-alpha.5] - 2026-05-08
18
+ **Added**
19
+ - `Context.events` — typed event bus for decoupled component communication. Known events get autocomplete; custom events can be typed at the call site:
20
+ ```ts
21
+ context.events.on("scene-content-changed", e => console.log(e.object));
22
+ context.events.emit<{ pts: number }>("scored", { pts: 10 });
23
+ ```
24
+ - `ContactShadows` auto-refit — when `autoFit` is enabled, shadows automatically refit when scene content changes (e.g. SceneSwitcher load, DropListener asset loading)
25
+ - `Input.addEventListener` now returns an unsubscribe function (works with `autoCleanup`):
26
+ ```ts
27
+ this.autoCleanup(this.context.input.addEventListener("pointerdown", (evt) => { ... }));
28
+ ```
29
+ - `AnimationBuilder` — low-level API for defining animation tracks with typed keyframes and tween shorthands. Used by `AnimatorControllerBuilder` and `TimelineBuilder` for inline `.track()` calls
30
+ - `TimelineBuilder` typed track builder interfaces per track type (`AnimationTrackBuilder`, `AudioTrackBuilder`, etc.) with inline `.track()` support for keyframe animation
31
+ - `AnimatorControllerBuilder`: inline `.track()` for defining animation directly on states, support for `TrackDescriptor` arrays as clip sources, simplified `exitTime` (replaces separate `hasExitTime` flag)
32
+ - Physics raycast `includeTriggers` option — opt-in to hitting trigger/sensor colliders (skipped by default)
33
+
34
+ **Changed**
35
+ - Timeline track classes renamed for consistency: `AnimationTrackHandler` → `TimelineAnimationTrack`, `AudioTrackHandler` → `TimelineAudioTrack`, `ActivationTrackHandler` → `TimelineActivationTrack`, `ControlTrackHandler` → `TimelineControlTrack`, `MarkerTrackHandler` → `TimelineMarkerTrack`, `TrackHandler` → `TimelineTrackHandler`
36
+ - `OrbitControls.fitCamera` deprecated overload removed from type declarations (runtime still accepts `Object3D` for backwards compat — use `fitCamera({ objects: [...] })` instead)
37
+
38
+ **Fixed**
39
+ - `OrbitControls`: programmatic camera transitions (e.g. `fitCamera`) no longer interrupted continuously during an ongoing drag — only at interaction start
40
+ - `fitCamera` with `centerCamera: "y"` producing incorrect camera elevation when camera was above the scene center
41
+ - `Animator`: switching `runtimeAnimatorController` now properly disposes the previous controller
42
+ - `AnimatorController.dispose()` guard against missing mixer
43
+ - `CursorFollow.snapToSurface` incorrect property description removed
44
+ - Vite 8 compatibility fixes
45
+
7
46
  ## [5.1.0-alpha.4] - 2026-05-06
8
47
  #### Added
9
48
  - `autoCleanup` on `Behaviour` — register disposables or cleanup functions tied to the component lifecycle. Automatically cleaned up on disable or destroy depending on when registered: