@codexo/exojs 0.6.11 → 0.7.11

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 (189) hide show
  1. package/CHANGELOG.md +1356 -0
  2. package/dist/esm/audio/AbstractMedia.d.ts +18 -0
  3. package/dist/esm/audio/AbstractMedia.js +66 -0
  4. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  5. package/dist/esm/audio/AudioAnalyser.d.ts +62 -23
  6. package/dist/esm/audio/AudioAnalyser.js +261 -57
  7. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  8. package/dist/esm/audio/AudioBus.d.ts +45 -0
  9. package/dist/esm/audio/AudioBus.js +219 -0
  10. package/dist/esm/audio/AudioBus.js.map +1 -0
  11. package/dist/esm/audio/AudioFilter.d.ts +9 -0
  12. package/dist/esm/audio/AudioFilter.js +7 -0
  13. package/dist/esm/audio/AudioFilter.js.map +1 -0
  14. package/dist/esm/audio/AudioListener.d.ts +20 -0
  15. package/dist/esm/audio/AudioListener.js +86 -0
  16. package/dist/esm/audio/AudioListener.js.map +1 -0
  17. package/dist/esm/audio/AudioManager.d.ts +31 -0
  18. package/dist/esm/audio/AudioManager.js +102 -0
  19. package/dist/esm/audio/AudioManager.js.map +1 -0
  20. package/dist/esm/audio/BeatDetector.d.ts +121 -0
  21. package/dist/esm/audio/BeatDetector.js +936 -0
  22. package/dist/esm/audio/BeatDetector.js.map +1 -0
  23. package/dist/esm/audio/Envelope.d.ts +44 -0
  24. package/dist/esm/audio/Envelope.js +60 -0
  25. package/dist/esm/audio/Envelope.js.map +1 -0
  26. package/dist/esm/audio/Music.d.ts +8 -0
  27. package/dist/esm/audio/Music.js +33 -4
  28. package/dist/esm/audio/Music.js.map +1 -1
  29. package/dist/esm/audio/OscillatorSound.d.ts +98 -0
  30. package/dist/esm/audio/OscillatorSound.js +342 -0
  31. package/dist/esm/audio/OscillatorSound.js.map +1 -0
  32. package/dist/esm/audio/Sound.d.ts +94 -9
  33. package/dist/esm/audio/Sound.js +283 -117
  34. package/dist/esm/audio/Sound.js.map +1 -1
  35. package/dist/esm/audio/crossFade.d.ts +19 -0
  36. package/dist/esm/audio/crossFade.js +26 -0
  37. package/dist/esm/audio/crossFade.js.map +1 -0
  38. package/dist/esm/audio/dsp/fft.d.ts +22 -0
  39. package/dist/esm/audio/dsp/mel.d.ts +43 -0
  40. package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
  41. package/dist/esm/audio/filters/ChorusFilter.d.ts +47 -0
  42. package/dist/esm/audio/filters/ChorusFilter.js +139 -0
  43. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
  44. package/dist/esm/audio/filters/CompressorFilter.d.ts +31 -0
  45. package/dist/esm/audio/filters/CompressorFilter.js +97 -0
  46. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
  47. package/dist/esm/audio/filters/DelayFilter.d.ts +23 -0
  48. package/dist/esm/audio/filters/DelayFilter.js +100 -0
  49. package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
  50. package/dist/esm/audio/filters/DuckingFilter.d.ts +31 -0
  51. package/dist/esm/audio/filters/DuckingFilter.js +152 -0
  52. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
  53. package/dist/esm/audio/filters/EqualizerFilter.d.ts +29 -0
  54. package/dist/esm/audio/filters/EqualizerFilter.js +94 -0
  55. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
  56. package/dist/esm/audio/filters/GranularFilter.d.ts +56 -0
  57. package/dist/esm/audio/filters/GranularFilter.js +170 -0
  58. package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
  59. package/dist/esm/audio/filters/HighpassFilter.d.ts +19 -0
  60. package/dist/esm/audio/filters/HighpassFilter.js +62 -0
  61. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
  62. package/dist/esm/audio/filters/LowpassFilter.d.ts +19 -0
  63. package/dist/esm/audio/filters/LowpassFilter.js +62 -0
  64. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
  65. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +42 -0
  66. package/dist/esm/audio/filters/PitchShiftFilter.js +130 -0
  67. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
  68. package/dist/esm/audio/filters/ReverbFilter.d.ts +24 -0
  69. package/dist/esm/audio/filters/ReverbFilter.js +107 -0
  70. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
  71. package/dist/esm/audio/filters/VocoderFilter.d.ts +38 -0
  72. package/dist/esm/audio/filters/VocoderFilter.js +163 -0
  73. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
  74. package/dist/esm/audio/filters/WorkletFilter.d.ts +46 -0
  75. package/dist/esm/audio/filters/WorkletFilter.js +101 -0
  76. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
  77. package/dist/esm/audio/filters/index.d.ts +12 -0
  78. package/dist/esm/audio/index.d.ts +15 -1
  79. package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
  80. package/dist/esm/audio/worklet/registerWorklet.js +44 -0
  81. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
  82. package/dist/esm/core/Application.d.ts +19 -0
  83. package/dist/esm/core/Application.js +76 -2
  84. package/dist/esm/core/Application.js.map +1 -1
  85. package/dist/esm/core/SceneNode.d.ts +9 -1
  86. package/dist/esm/core/SceneNode.js +44 -6
  87. package/dist/esm/core/SceneNode.js.map +1 -1
  88. package/dist/esm/core/Time.js +1 -1
  89. package/dist/esm/core/index.d.ts +0 -1
  90. package/dist/esm/debug/BoundingBoxesLayer.d.ts +18 -0
  91. package/dist/esm/debug/BoundingBoxesLayer.js +128 -0
  92. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
  93. package/dist/esm/debug/DebugLayer.d.ts +29 -0
  94. package/dist/esm/debug/DebugLayer.js +26 -0
  95. package/dist/esm/debug/DebugLayer.js.map +1 -0
  96. package/dist/esm/debug/DebugOverlay.d.ts +48 -0
  97. package/dist/esm/debug/DebugOverlay.js +117 -0
  98. package/dist/esm/debug/DebugOverlay.js.map +1 -0
  99. package/dist/esm/debug/HitTestLayer.d.ts +23 -0
  100. package/dist/esm/debug/HitTestLayer.js +109 -0
  101. package/dist/esm/debug/HitTestLayer.js.map +1 -0
  102. package/dist/esm/debug/PerformanceLayer.d.ts +21 -0
  103. package/dist/esm/debug/PerformanceLayer.js +175 -0
  104. package/dist/esm/debug/PerformanceLayer.js.map +1 -0
  105. package/dist/esm/debug/PointerStackLayer.d.ts +23 -0
  106. package/dist/esm/debug/PointerStackLayer.js +152 -0
  107. package/dist/esm/debug/PointerStackLayer.js.map +1 -0
  108. package/dist/esm/debug/index.d.ts +6 -0
  109. package/dist/esm/debug/index.js +7 -0
  110. package/dist/esm/debug/index.js.map +1 -0
  111. package/dist/esm/index.js +29 -2
  112. package/dist/esm/index.js.map +1 -1
  113. package/dist/esm/input/InputManager.d.ts +10 -0
  114. package/dist/esm/input/InputManager.js +35 -5
  115. package/dist/esm/input/InputManager.js.map +1 -1
  116. package/dist/esm/input/InteractionEvent.d.ts +18 -0
  117. package/dist/esm/input/InteractionEvent.js +29 -0
  118. package/dist/esm/input/InteractionEvent.js.map +1 -0
  119. package/dist/esm/input/InteractionManager.d.ts +134 -0
  120. package/dist/esm/input/InteractionManager.js +546 -0
  121. package/dist/esm/input/InteractionManager.js.map +1 -0
  122. package/dist/esm/input/index.d.ts +2 -0
  123. package/dist/esm/input/interaction-hooks.d.ts +34 -0
  124. package/dist/esm/input/interaction-hooks.js +35 -0
  125. package/dist/esm/input/interaction-hooks.js.map +1 -0
  126. package/dist/esm/math/Circle.d.ts +12 -2
  127. package/dist/esm/math/Circle.js +82 -14
  128. package/dist/esm/math/Circle.js.map +1 -1
  129. package/dist/esm/math/Interval.js +1 -1
  130. package/dist/esm/math/ObservableVector.d.ts +2 -2
  131. package/dist/esm/math/ObservableVector.js +4 -2
  132. package/dist/esm/math/ObservableVector.js.map +1 -1
  133. package/dist/esm/math/Polygon.d.ts +15 -1
  134. package/dist/esm/math/Polygon.js +58 -6
  135. package/dist/esm/math/Polygon.js.map +1 -1
  136. package/dist/esm/math/Quadtree.d.ts +47 -0
  137. package/dist/esm/math/Quadtree.js +168 -0
  138. package/dist/esm/math/Quadtree.js.map +1 -0
  139. package/dist/esm/math/Random.js +1 -1
  140. package/dist/esm/math/Size.js +1 -1
  141. package/dist/esm/math/Vector.js +1 -1
  142. package/dist/esm/math/collision-detection.js +4 -1
  143. package/dist/esm/math/collision-detection.js.map +1 -1
  144. package/dist/esm/math/index.d.ts +2 -0
  145. package/dist/esm/math/swept-collision.d.ts +90 -0
  146. package/dist/esm/math/swept-collision.js +255 -0
  147. package/dist/esm/math/swept-collision.js.map +1 -0
  148. package/dist/esm/particles/ParticleSystem.js +1 -0
  149. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  150. package/dist/esm/particles/affectors/TorqueAffector.js +1 -1
  151. package/dist/esm/rendering/Container.d.ts +1 -0
  152. package/dist/esm/rendering/Container.js +19 -0
  153. package/dist/esm/rendering/Container.js.map +1 -1
  154. package/dist/esm/rendering/RenderNode.d.ts +27 -0
  155. package/dist/esm/rendering/RenderNode.js +44 -0
  156. package/dist/esm/rendering/RenderNode.js.map +1 -1
  157. package/dist/esm/rendering/View.d.ts +6 -4
  158. package/dist/esm/rendering/View.js +12 -2
  159. package/dist/esm/rendering/View.js.map +1 -1
  160. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +109 -0
  161. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +268 -0
  162. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
  163. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +111 -0
  164. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +397 -0
  165. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
  166. package/dist/esm/rendering/index.d.ts +3 -0
  167. package/dist/esm/rendering/mesh/Mesh.js +1 -0
  168. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  169. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
  170. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
  171. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
  172. package/dist/esm/rendering/sprite/Sprite.d.ts +6 -1
  173. package/dist/esm/rendering/sprite/Sprite.js +41 -19
  174. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  175. package/dist/esm/rendering/video/Video.d.ts +4 -0
  176. package/dist/esm/rendering/video/Video.js +32 -4
  177. package/dist/esm/rendering/video/Video.js.map +1 -1
  178. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +4 -4
  179. package/dist/esm/rendering/webgl2/WebGl2Backend.js +7 -16
  180. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  181. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +10 -8
  182. package/dist/esm/rendering/webgpu/WebGpuBackend.js +30 -40
  183. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  184. package/dist/exo.esm.js +8021 -2459
  185. package/dist/exo.esm.js.map +1 -1
  186. package/package.json +14 -2
  187. package/dist/esm/core/Quadtree.d.ts +0 -20
  188. package/dist/esm/core/Quadtree.js +0 -86
  189. package/dist/esm/core/Quadtree.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import type { Pointer } from './Pointer';
2
+ import type { RenderNode } from '@/rendering/RenderNode';
3
+ export type InteractionEventType = 'pointerdown' | 'pointerup' | 'pointermove' | 'pointerover' | 'pointerout' | 'pointertap' | 'dragstart' | 'drag' | 'dragend';
4
+ export declare class InteractionEvent {
5
+ readonly type: InteractionEventType;
6
+ /** The node that was originally hit (deepest interactive). Stable across bubble. */
7
+ target: RenderNode;
8
+ /** The node currently dispatching this event during bubbling. Changes per bubble step. */
9
+ currentTarget: RenderNode;
10
+ readonly pointer: Pointer;
11
+ /** Canvas-space coordinates (same space as Pointer.x/y). */
12
+ readonly worldX: number;
13
+ readonly worldY: number;
14
+ private _stopped;
15
+ constructor(type: InteractionEventType, target: RenderNode, pointer: Pointer, worldX: number, worldY: number);
16
+ get propagationStopped(): boolean;
17
+ stopPropagation(): void;
18
+ }
@@ -0,0 +1,29 @@
1
+ class InteractionEvent {
2
+ type;
3
+ /** The node that was originally hit (deepest interactive). Stable across bubble. */
4
+ target;
5
+ /** The node currently dispatching this event during bubbling. Changes per bubble step. */
6
+ currentTarget;
7
+ pointer;
8
+ /** Canvas-space coordinates (same space as Pointer.x/y). */
9
+ worldX;
10
+ worldY;
11
+ _stopped = false;
12
+ constructor(type, target, pointer, worldX, worldY) {
13
+ this.type = type;
14
+ this.target = target;
15
+ this.currentTarget = target;
16
+ this.pointer = pointer;
17
+ this.worldX = worldX;
18
+ this.worldY = worldY;
19
+ }
20
+ get propagationStopped() {
21
+ return this._stopped;
22
+ }
23
+ stopPropagation() {
24
+ this._stopped = true;
25
+ }
26
+ }
27
+
28
+ export { InteractionEvent };
29
+ //# sourceMappingURL=InteractionEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractionEvent.js","sources":["../../../../src/input/InteractionEvent.ts"],"sourcesContent":[null],"names":[],"mappings":"MAca,gBAAgB,CAAA;AACT,IAAA,IAAI;;AAEb,IAAA,MAAM;;AAEN,IAAA,aAAa;AACJ,IAAA,OAAO;;AAEP,IAAA,MAAM;AACN,IAAA,MAAM;IACd,QAAQ,GAAY,KAAK;IAEjC,WAAA,CACI,IAA0B,EAC1B,MAAkB,EAClB,OAAgB,EAChB,MAAc,EACd,MAAc,EAAA;AAEd,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB;AAEA,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB;AACH;;;;"}
@@ -0,0 +1,134 @@
1
+ import { Quadtree } from '@/math/Quadtree';
2
+ import type { RenderNode } from '@/rendering/RenderNode';
3
+ import type { Application } from '@/core/Application';
4
+ export declare class InteractionManager {
5
+ private readonly _app;
6
+ private _quadtree;
7
+ private _interactiveNodes;
8
+ private _staleNodes;
9
+ private _quadtreeItems;
10
+ private _quadtreeOrderCounter;
11
+ private readonly _quadtreeQueryBuffer;
12
+ /** Maps pointerId → the deepest interactive RenderNode that pointer is currently over. */
13
+ private readonly _lastHit;
14
+ /** Pending per-pointer event queues, filled by signal handlers each frame. */
15
+ private readonly _pending;
16
+ /** Active pointer captures set up by drag-start. Maps pointerId → the captured node. */
17
+ private readonly _capturedPointers;
18
+ /** Active drag states. Maps pointerId → drag metadata. */
19
+ private readonly _drags;
20
+ /** Whether any pointer enqueued events since the last update(). */
21
+ private _dirty;
22
+ private readonly _onPointerDownHandler;
23
+ private readonly _onPointerMoveHandler;
24
+ private readonly _onPointerUpHandler;
25
+ private readonly _onPointerTapHandler;
26
+ private readonly _onPointerCancelHandler;
27
+ private readonly _onPointerLeaveHandler;
28
+ constructor(app: Application);
29
+ /**
30
+ * Returns the RenderNode currently hovered by the given pointer, or null.
31
+ * If pointerId is omitted, returns the hovered node for the first pointer
32
+ * in iteration order (typically the primary mouse pointer).
33
+ */
34
+ getHoveredNode(pointerId?: number): RenderNode | null;
35
+ /**
36
+ * Returns all currently captured RenderNodes (nodes that have an active
37
+ * drag / pointer-capture in progress). Used by debug layers.
38
+ */
39
+ getCapturedNodes(): ReadonlyArray<RenderNode>;
40
+ /**
41
+ * Returns the internal quadtree used for spatial hit-testing, or null when
42
+ * no interactive nodes are present. The quadtree is automatically created
43
+ * when the first interactive node is registered and disposed when the last
44
+ * interactive node is removed. Prefixed with underscore to signal
45
+ * "internal-but-public" (debug use only).
46
+ */
47
+ _getDebugQuadtree(): Quadtree<{
48
+ node: RenderNode;
49
+ order: number;
50
+ }> | null;
51
+ destroy(): void;
52
+ /**
53
+ * Process all pending pointer events accumulated since the last frame.
54
+ * Must be called once per frame from {@link Application.update}, after
55
+ * `inputManager.update()` has run (so signals are already dispatched and
56
+ * queued here) and before game-state updates so that user listeners on
57
+ * `onPointerDown` etc. fire before per-frame logic mutates state.
58
+ *
59
+ * The dirty flag ensures this is a no-op on frames with no pointer
60
+ * activity; every signal handler that enqueues an event sets `_dirty =
61
+ * true`, and `update()` clears it at the top before draining the queue.
62
+ */
63
+ update(): void;
64
+ /**
65
+ * Called when a subtree rooted at `node` has been added to the scene.
66
+ * Walks the subtree and registers any interactive nodes found.
67
+ *
68
+ * @internal
69
+ */
70
+ _notifyNodeAdded(node: RenderNode): void;
71
+ /**
72
+ * Called when a subtree rooted at `node` is about to be removed from the
73
+ * scene. Walks the subtree and unregisters any interactive nodes found.
74
+ *
75
+ * @internal
76
+ */
77
+ _notifyNodeRemoved(node: RenderNode): void;
78
+ /**
79
+ * Called when a node's `interactive` property changes.
80
+ *
81
+ * @internal
82
+ */
83
+ _notifyInteractiveChanged(node: RenderNode, becameInteractive: boolean): void;
84
+ /**
85
+ * Called when a node's world transform / bounds are invalidated. If the
86
+ * node is currently tracked as interactive, mark it stale so its quadtree
87
+ * entry is refreshed on the next query.
88
+ *
89
+ * @internal
90
+ */
91
+ _notifyBoundsInvalidated(node: RenderNode): void;
92
+ private _handlePointerDown;
93
+ private _handlePointerMove;
94
+ private _handlePointerUp;
95
+ private _handlePointerTap;
96
+ private _handlePointerCancel;
97
+ private _handlePointerLeave;
98
+ private _enqueue;
99
+ private _processQueue;
100
+ private _endDrag;
101
+ private _hitTest;
102
+ private _hitTestIndexed;
103
+ private _hitTestNode;
104
+ /**
105
+ * Register an interactive node: add it to the tracking set, create the
106
+ * quadtree if this is the first interactive node, and insert the node.
107
+ */
108
+ private _registerNode;
109
+ /**
110
+ * Unregister an interactive node: remove from the quadtree and tracking
111
+ * set. Dispose the quadtree when it becomes empty.
112
+ */
113
+ private _unregisterNode;
114
+ /**
115
+ * Insert a single node into the quadtree (or mark it stale to be inserted
116
+ * at next flush if the quadtree is not yet ready).
117
+ */
118
+ private _insertNode;
119
+ /**
120
+ * Flush stale entries: remove each stale node's old quadtree entry and
121
+ * re-insert it with fresh bounds. Called at the start of update().
122
+ */
123
+ private _flushStaleEntries;
124
+ /** Build a fresh Quadtree sized to encompass the canvas + current scene root. */
125
+ private _createQuadtree;
126
+ /** Walk a subtree, calling `callback` for every RenderNode (including root). */
127
+ private _walkSubtree;
128
+ private _dispatchBubble;
129
+ /** Dispatch an event directly on a single node without bubbling. */
130
+ private _dispatchDirect;
131
+ private _signalFor;
132
+ private _setLastHit;
133
+ private _updateCursor;
134
+ }