@asciiz/atoolkit 0.1.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.
- package/LICENSE +21 -0
- package/ReadMe.md +198 -0
- package/dist/acircuit/chip.d.ts +46 -0
- package/dist/acircuit/chip.d.ts.map +1 -0
- package/dist/acircuit/chip.js +104 -0
- package/dist/acircuit/chip.js.map +1 -0
- package/dist/acircuit/circuit.d.ts +86 -0
- package/dist/acircuit/circuit.d.ts.map +1 -0
- package/dist/acircuit/circuit.js +606 -0
- package/dist/acircuit/circuit.js.map +1 -0
- package/dist/acircuit/composite.d.ts +32 -0
- package/dist/acircuit/composite.d.ts.map +1 -0
- package/dist/acircuit/composite.js +88 -0
- package/dist/acircuit/composite.js.map +1 -0
- package/dist/acircuit/index.d.ts +7 -0
- package/dist/acircuit/index.d.ts.map +1 -0
- package/dist/acircuit/index.js +6 -0
- package/dist/acircuit/index.js.map +1 -0
- package/dist/acircuit/socket.d.ts +20 -0
- package/dist/acircuit/socket.d.ts.map +1 -0
- package/dist/acircuit/socket.js +23 -0
- package/dist/acircuit/socket.js.map +1 -0
- package/dist/acircuit/types.d.ts +94 -0
- package/dist/acircuit/types.d.ts.map +1 -0
- package/dist/acircuit/types.js +2 -0
- package/dist/acircuit/types.js.map +1 -0
- package/dist/acircuit/wire.d.ts +26 -0
- package/dist/acircuit/wire.d.ts.map +1 -0
- package/dist/acircuit/wire.js +23 -0
- package/dist/acircuit/wire.js.map +1 -0
- package/dist/adiag/bus.d.ts +65 -0
- package/dist/adiag/bus.d.ts.map +1 -0
- package/dist/adiag/bus.js +225 -0
- package/dist/adiag/bus.js.map +1 -0
- package/dist/adiag/index.d.ts +3 -0
- package/dist/adiag/index.d.ts.map +1 -0
- package/dist/adiag/index.js +2 -0
- package/dist/adiag/index.js.map +1 -0
- package/dist/aecs/ComponentSet.d.ts +33 -0
- package/dist/aecs/ComponentSet.d.ts.map +1 -0
- package/dist/aecs/ComponentSet.js +127 -0
- package/dist/aecs/ComponentSet.js.map +1 -0
- package/dist/aecs/Entity.d.ts +43 -0
- package/dist/aecs/Entity.d.ts.map +1 -0
- package/dist/aecs/Entity.js +82 -0
- package/dist/aecs/Entity.js.map +1 -0
- package/dist/aecs/FloatSet.d.ts +34 -0
- package/dist/aecs/FloatSet.d.ts.map +1 -0
- package/dist/aecs/FloatSet.js +147 -0
- package/dist/aecs/FloatSet.js.map +1 -0
- package/dist/aecs/Query.d.ts +90 -0
- package/dist/aecs/Query.d.ts.map +1 -0
- package/dist/aecs/Query.js +304 -0
- package/dist/aecs/Query.js.map +1 -0
- package/dist/aecs/index.d.ts +6 -0
- package/dist/aecs/index.d.ts.map +1 -0
- package/dist/aecs/index.js +6 -0
- package/dist/aecs/index.js.map +1 -0
- package/dist/aecs/join.d.ts +2 -0
- package/dist/aecs/join.d.ts.map +1 -0
- package/dist/aecs/join.js +2 -0
- package/dist/aecs/join.js.map +1 -0
- package/dist/alm/constants.d.ts +11 -0
- package/dist/alm/constants.d.ts.map +1 -0
- package/dist/alm/constants.js +17 -0
- package/dist/alm/constants.js.map +1 -0
- package/dist/alm/index.d.ts +9 -0
- package/dist/alm/index.d.ts.map +1 -0
- package/dist/alm/index.js +12 -0
- package/dist/alm/index.js.map +1 -0
- package/dist/alm/mat3.d.ts +63 -0
- package/dist/alm/mat3.d.ts.map +1 -0
- package/dist/alm/mat3.js +393 -0
- package/dist/alm/mat3.js.map +1 -0
- package/dist/alm/mat4.d.ts +157 -0
- package/dist/alm/mat4.d.ts.map +1 -0
- package/dist/alm/mat4.js +1448 -0
- package/dist/alm/mat4.js.map +1 -0
- package/dist/alm/quat.d.ts +89 -0
- package/dist/alm/quat.d.ts.map +1 -0
- package/dist/alm/quat.js +543 -0
- package/dist/alm/quat.js.map +1 -0
- package/dist/alm/spatial.d.ts +102 -0
- package/dist/alm/spatial.d.ts.map +1 -0
- package/dist/alm/spatial.js +389 -0
- package/dist/alm/spatial.js.map +1 -0
- package/dist/alm/vec2.d.ts +97 -0
- package/dist/alm/vec2.d.ts.map +1 -0
- package/dist/alm/vec2.js +369 -0
- package/dist/alm/vec2.js.map +1 -0
- package/dist/alm/vec3.d.ts +117 -0
- package/dist/alm/vec3.d.ts.map +1 -0
- package/dist/alm/vec3.js +547 -0
- package/dist/alm/vec3.js.map +1 -0
- package/dist/alm/vec4.d.ts +95 -0
- package/dist/alm/vec4.d.ts.map +1 -0
- package/dist/alm/vec4.js +452 -0
- package/dist/alm/vec4.js.map +1 -0
- package/dist/atempo/cadence.d.ts +58 -0
- package/dist/atempo/cadence.d.ts.map +1 -0
- package/dist/atempo/cadence.js +110 -0
- package/dist/atempo/cadence.js.map +1 -0
- package/dist/atempo/clip.d.ts +37 -0
- package/dist/atempo/clip.d.ts.map +1 -0
- package/dist/atempo/clip.js +92 -0
- package/dist/atempo/clip.js.map +1 -0
- package/dist/atempo/curve.d.ts +6 -0
- package/dist/atempo/curve.d.ts.map +1 -0
- package/dist/atempo/curve.js +2 -0
- package/dist/atempo/curve.js.map +1 -0
- package/dist/atempo/curves/bezier.d.ts +7 -0
- package/dist/atempo/curves/bezier.d.ts.map +1 -0
- package/dist/atempo/curves/bezier.js +46 -0
- package/dist/atempo/curves/bezier.js.map +1 -0
- package/dist/atempo/curves/bounce.d.ts +6 -0
- package/dist/atempo/curves/bounce.d.ts.map +1 -0
- package/dist/atempo/curves/bounce.js +22 -0
- package/dist/atempo/curves/bounce.js.map +1 -0
- package/dist/atempo/curves/cubic.d.ts +14 -0
- package/dist/atempo/curves/cubic.d.ts.map +1 -0
- package/dist/atempo/curves/cubic.js +22 -0
- package/dist/atempo/curves/cubic.js.map +1 -0
- package/dist/atempo/curves/elastic.d.ts +6 -0
- package/dist/atempo/curves/elastic.d.ts.map +1 -0
- package/dist/atempo/curves/elastic.js +12 -0
- package/dist/atempo/curves/elastic.js.map +1 -0
- package/dist/atempo/curves/expo.d.ts +14 -0
- package/dist/atempo/curves/expo.d.ts.map +1 -0
- package/dist/atempo/curves/expo.js +26 -0
- package/dist/atempo/curves/expo.js.map +1 -0
- package/dist/atempo/curves/holdSnap.d.ts +6 -0
- package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
- package/dist/atempo/curves/holdSnap.js +15 -0
- package/dist/atempo/curves/holdSnap.js.map +1 -0
- package/dist/atempo/curves/index.d.ts +14 -0
- package/dist/atempo/curves/index.d.ts.map +1 -0
- package/dist/atempo/curves/index.js +14 -0
- package/dist/atempo/curves/index.js.map +1 -0
- package/dist/atempo/curves/linear.d.ts +6 -0
- package/dist/atempo/curves/linear.d.ts.map +1 -0
- package/dist/atempo/curves/linear.js +5 -0
- package/dist/atempo/curves/linear.js.map +1 -0
- package/dist/atempo/curves/overshoot.d.ts +6 -0
- package/dist/atempo/curves/overshoot.d.ts.map +1 -0
- package/dist/atempo/curves/overshoot.js +16 -0
- package/dist/atempo/curves/overshoot.js.map +1 -0
- package/dist/atempo/curves/quad.d.ts +14 -0
- package/dist/atempo/curves/quad.d.ts.map +1 -0
- package/dist/atempo/curves/quad.js +22 -0
- package/dist/atempo/curves/quad.js.map +1 -0
- package/dist/atempo/curves/step.d.ts +6 -0
- package/dist/atempo/curves/step.d.ts.map +1 -0
- package/dist/atempo/curves/step.js +11 -0
- package/dist/atempo/curves/step.js.map +1 -0
- package/dist/atempo/index.d.ts +17 -0
- package/dist/atempo/index.d.ts.map +1 -0
- package/dist/atempo/index.js +18 -0
- package/dist/atempo/index.js.map +1 -0
- package/dist/atempo/phase.d.ts +66 -0
- package/dist/atempo/phase.d.ts.map +1 -0
- package/dist/atempo/phase.js +121 -0
- package/dist/atempo/phase.js.map +1 -0
- package/dist/atempo/spring.d.ts +20 -0
- package/dist/atempo/spring.d.ts.map +1 -0
- package/dist/atempo/spring.js +71 -0
- package/dist/atempo/spring.js.map +1 -0
- package/dist/atempo/track.d.ts +69 -0
- package/dist/atempo/track.d.ts.map +1 -0
- package/dist/atempo/track.js +184 -0
- package/dist/atempo/track.js.map +1 -0
- package/dist/atempo/tracks/color.d.ts +20 -0
- package/dist/atempo/tracks/color.d.ts.map +1 -0
- package/dist/atempo/tracks/color.js +52 -0
- package/dist/atempo/tracks/color.js.map +1 -0
- package/dist/atempo/tracks/float.d.ts +9 -0
- package/dist/atempo/tracks/float.d.ts.map +1 -0
- package/dist/atempo/tracks/float.js +13 -0
- package/dist/atempo/tracks/float.js.map +1 -0
- package/dist/atempo/tracks/index.d.ts +8 -0
- package/dist/atempo/tracks/index.d.ts.map +1 -0
- package/dist/atempo/tracks/index.js +8 -0
- package/dist/atempo/tracks/index.js.map +1 -0
- package/dist/atempo/tracks/quat.d.ts +16 -0
- package/dist/atempo/tracks/quat.d.ts.map +1 -0
- package/dist/atempo/tracks/quat.js +72 -0
- package/dist/atempo/tracks/quat.js.map +1 -0
- package/dist/atempo/tracks/vec.d.ts +11 -0
- package/dist/atempo/tracks/vec.d.ts.map +1 -0
- package/dist/atempo/tracks/vec.js +27 -0
- package/dist/atempo/tracks/vec.js.map +1 -0
- package/dist/awasm/abi/index.d.ts +4 -0
- package/dist/awasm/abi/index.d.ts.map +1 -0
- package/dist/awasm/abi/index.js +4 -0
- package/dist/awasm/abi/index.js.map +1 -0
- package/dist/awasm/abi/layout.d.ts +40 -0
- package/dist/awasm/abi/layout.d.ts.map +1 -0
- package/dist/awasm/abi/layout.js +100 -0
- package/dist/awasm/abi/layout.js.map +1 -0
- package/dist/awasm/abi/slice.d.ts +28 -0
- package/dist/awasm/abi/slice.d.ts.map +1 -0
- package/dist/awasm/abi/slice.js +68 -0
- package/dist/awasm/abi/slice.js.map +1 -0
- package/dist/awasm/abi/string-buffer.d.ts +23 -0
- package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
- package/dist/awasm/abi/string-buffer.js +52 -0
- package/dist/awasm/abi/string-buffer.js.map +1 -0
- package/dist/awasm/index.d.ts +5 -0
- package/dist/awasm/index.d.ts.map +1 -0
- package/dist/awasm/index.js +8 -0
- package/dist/awasm/index.js.map +1 -0
- package/dist/awasm/memory/block-pool.d.ts +31 -0
- package/dist/awasm/memory/block-pool.d.ts.map +1 -0
- package/dist/awasm/memory/block-pool.js +98 -0
- package/dist/awasm/memory/block-pool.js.map +1 -0
- package/dist/awasm/memory/index.d.ts +5 -0
- package/dist/awasm/memory/index.d.ts.map +1 -0
- package/dist/awasm/memory/index.js +5 -0
- package/dist/awasm/memory/index.js.map +1 -0
- package/dist/awasm/memory/linear-arena.d.ts +36 -0
- package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
- package/dist/awasm/memory/linear-arena.js +94 -0
- package/dist/awasm/memory/linear-arena.js.map +1 -0
- package/dist/awasm/memory/memory-view.d.ts +51 -0
- package/dist/awasm/memory/memory-view.d.ts.map +1 -0
- package/dist/awasm/memory/memory-view.js +110 -0
- package/dist/awasm/memory/memory-view.js.map +1 -0
- package/dist/awasm/memory/wasm-memory.d.ts +40 -0
- package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
- package/dist/awasm/memory/wasm-memory.js +88 -0
- package/dist/awasm/memory/wasm-memory.js.map +1 -0
- package/dist/awasm/runtime/host-bridge.d.ts +30 -0
- package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
- package/dist/awasm/runtime/host-bridge.js +57 -0
- package/dist/awasm/runtime/host-bridge.js.map +1 -0
- package/dist/awasm/runtime/index.d.ts +5 -0
- package/dist/awasm/runtime/index.d.ts.map +1 -0
- package/dist/awasm/runtime/index.js +5 -0
- package/dist/awasm/runtime/index.js.map +1 -0
- package/dist/awasm/runtime/module-inspector.d.ts +32 -0
- package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
- package/dist/awasm/runtime/module-inspector.js +43 -0
- package/dist/awasm/runtime/module-inspector.js.map +1 -0
- package/dist/awasm/runtime/module-loader.d.ts +17 -0
- package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
- package/dist/awasm/runtime/module-loader.js +99 -0
- package/dist/awasm/runtime/module-loader.js.map +1 -0
- package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
- package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
- package/dist/awasm/runtime/wasm-instance.js +60 -0
- package/dist/awasm/runtime/wasm-instance.js.map +1 -0
- package/dist/awasm/thread/atomic-queue.d.ts +33 -0
- package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
- package/dist/awasm/thread/atomic-queue.js +78 -0
- package/dist/awasm/thread/atomic-queue.js.map +1 -0
- package/dist/awasm/thread/index.d.ts +4 -0
- package/dist/awasm/thread/index.d.ts.map +1 -0
- package/dist/awasm/thread/index.js +4 -0
- package/dist/awasm/thread/index.js.map +1 -0
- package/dist/awasm/thread/shared-memory.d.ts +38 -0
- package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
- package/dist/awasm/thread/shared-memory.js +74 -0
- package/dist/awasm/thread/shared-memory.js.map +1 -0
- package/dist/awasm/thread/worker-pool.d.ts +43 -0
- package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
- package/dist/awasm/thread/worker-pool.js +118 -0
- package/dist/awasm/thread/worker-pool.js.map +1 -0
- package/dist/awgpu/binding.d.ts +108 -0
- package/dist/awgpu/binding.d.ts.map +1 -0
- package/dist/awgpu/binding.js +251 -0
- package/dist/awgpu/binding.js.map +1 -0
- package/dist/awgpu/device.d.ts +68 -0
- package/dist/awgpu/device.d.ts.map +1 -0
- package/dist/awgpu/device.js +150 -0
- package/dist/awgpu/device.js.map +1 -0
- package/dist/awgpu/graph.d.ts +77 -0
- package/dist/awgpu/graph.d.ts.map +1 -0
- package/dist/awgpu/graph.js +288 -0
- package/dist/awgpu/graph.js.map +1 -0
- package/dist/awgpu/index.d.ts +10 -0
- package/dist/awgpu/index.d.ts.map +1 -0
- package/dist/awgpu/index.js +19 -0
- package/dist/awgpu/index.js.map +1 -0
- package/dist/awgpu/memory.d.ts +231 -0
- package/dist/awgpu/memory.d.ts.map +1 -0
- package/dist/awgpu/memory.js +547 -0
- package/dist/awgpu/memory.js.map +1 -0
- package/dist/awgpu/pipeline.d.ts +114 -0
- package/dist/awgpu/pipeline.d.ts.map +1 -0
- package/dist/awgpu/pipeline.js +335 -0
- package/dist/awgpu/pipeline.js.map +1 -0
- package/dist/awgpu/sequence.d.ts +83 -0
- package/dist/awgpu/sequence.d.ts.map +1 -0
- package/dist/awgpu/sequence.js +273 -0
- package/dist/awgpu/sequence.js.map +1 -0
- package/dist/awgpu/state.d.ts +27 -0
- package/dist/awgpu/state.d.ts.map +1 -0
- package/dist/awgpu/state.js +43 -0
- package/dist/awgpu/state.js.map +1 -0
- package/dist/awgpu/stream.d.ts +57 -0
- package/dist/awgpu/stream.d.ts.map +1 -0
- package/dist/awgpu/stream.js +139 -0
- package/dist/awgpu/stream.js.map +1 -0
- package/dist/awgpu/target.d.ts +98 -0
- package/dist/awgpu/target.d.ts.map +1 -0
- package/dist/awgpu/target.js +357 -0
- package/dist/awgpu/target.js.map +1 -0
- package/dist/awgpu_old/buffer.d.ts +78 -0
- package/dist/awgpu_old/buffer.d.ts.map +1 -0
- package/dist/awgpu_old/buffer.js +220 -0
- package/dist/awgpu_old/buffer.js.map +1 -0
- package/dist/awgpu_old/device.d.ts +69 -0
- package/dist/awgpu_old/device.d.ts.map +1 -0
- package/dist/awgpu_old/device.js +121 -0
- package/dist/awgpu_old/device.js.map +1 -0
- package/dist/awgpu_old/frame.d.ts +17 -0
- package/dist/awgpu_old/frame.d.ts.map +1 -0
- package/dist/awgpu_old/frame.js +29 -0
- package/dist/awgpu_old/frame.js.map +1 -0
- package/dist/awgpu_old/index.d.ts +8 -0
- package/dist/awgpu_old/index.d.ts.map +1 -0
- package/dist/awgpu_old/index.js +18 -0
- package/dist/awgpu_old/index.js.map +1 -0
- package/dist/awgpu_old/layout.d.ts +70 -0
- package/dist/awgpu_old/layout.d.ts.map +1 -0
- package/dist/awgpu_old/layout.js +137 -0
- package/dist/awgpu_old/layout.js.map +1 -0
- package/dist/awgpu_old/pass.d.ts +97 -0
- package/dist/awgpu_old/pass.d.ts.map +1 -0
- package/dist/awgpu_old/pass.js +302 -0
- package/dist/awgpu_old/pass.js.map +1 -0
- package/dist/awgpu_old/pipeline.d.ts +73 -0
- package/dist/awgpu_old/pipeline.d.ts.map +1 -0
- package/dist/awgpu_old/pipeline.js +226 -0
- package/dist/awgpu_old/pipeline.js.map +1 -0
- package/dist/awgpu_old/target.d.ts +186 -0
- package/dist/awgpu_old/target.d.ts.map +1 -0
- package/dist/awgpu_old/target.js +428 -0
- package/dist/awgpu_old/target.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Temporal stepping, decay convergence, and damping operators.
|
|
3
|
+
*/
|
|
4
|
+
export class Cadence {
|
|
5
|
+
/**
|
|
6
|
+
* Quantizes continuous timestamp into discrete stepped intervals.
|
|
7
|
+
*/
|
|
8
|
+
static quantizeTime(time, targetFps) {
|
|
9
|
+
if (targetFps <= 0)
|
|
10
|
+
return time;
|
|
11
|
+
return Math.floor(time * targetFps) / targetFps;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Exponential half-life decay.
|
|
15
|
+
* Converges toward target such that remaining distance halves every halfLife seconds.
|
|
16
|
+
*
|
|
17
|
+
* @param current Current value
|
|
18
|
+
* @param target Destination value
|
|
19
|
+
* @param halfLife Duration in seconds to close half the remaining gap
|
|
20
|
+
* @param deltaSec Elapsed frame time in seconds
|
|
21
|
+
*/
|
|
22
|
+
static decay(current, target, halfLife, deltaSec) {
|
|
23
|
+
if (halfLife <= 0)
|
|
24
|
+
return target;
|
|
25
|
+
const decayFactor = Math.exp((-0.69314718056 * deltaSec) / halfLife);
|
|
26
|
+
return target + (current - target) * decayFactor;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Critically damped spring follower.
|
|
30
|
+
* Drives current towards target over smoothTime. Mutates velocityRef[0] in-place.
|
|
31
|
+
*
|
|
32
|
+
* @param current Current position
|
|
33
|
+
* @param target Target position
|
|
34
|
+
* @param velocityRef Array containing velocity at index 0
|
|
35
|
+
* @param smoothTime Expected duration in seconds to reach target
|
|
36
|
+
* @param deltaSec Elapsed time in seconds
|
|
37
|
+
* @param maxSpeed Maximum velocity clamp
|
|
38
|
+
*/
|
|
39
|
+
static damp(current, target, velocityRef, smoothTime, deltaSec, maxSpeed = Number.POSITIVE_INFINITY) {
|
|
40
|
+
const omega = 2 / Math.max(0.0001, smoothTime);
|
|
41
|
+
const x = omega * deltaSec;
|
|
42
|
+
const exp = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x);
|
|
43
|
+
let change = current - target;
|
|
44
|
+
const originalTo = target;
|
|
45
|
+
const maxChange = maxSpeed * smoothTime;
|
|
46
|
+
change = Math.max(-maxChange, Math.min(maxChange, change));
|
|
47
|
+
target = current - change;
|
|
48
|
+
const temp = (velocityRef[0] + omega * change) * deltaSec;
|
|
49
|
+
velocityRef[0] = (velocityRef[0] - omega * temp) * exp;
|
|
50
|
+
let output = target + (change + temp) * exp;
|
|
51
|
+
if (originalTo - current > 0 === output > originalTo) {
|
|
52
|
+
output = originalTo;
|
|
53
|
+
velocityRef[0] = (output - originalTo) / deltaSec;
|
|
54
|
+
}
|
|
55
|
+
return output;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Rejects updates where value change is below threshold.
|
|
59
|
+
*/
|
|
60
|
+
static hysteresis(current, target, threshold) {
|
|
61
|
+
return Math.abs(target - current) >= threshold ? target : current;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Checks whether elapsed duration exceeds cooldown interval.
|
|
65
|
+
*/
|
|
66
|
+
static debounce(time, lastTriggerTime, cooldown) {
|
|
67
|
+
return time - lastTriggerTime >= cooldown;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Fixed timestep simulation accumulator.
|
|
72
|
+
* Accumulates variable delta times into deterministic discrete steps with fractional alpha.
|
|
73
|
+
*/
|
|
74
|
+
export class FixedCadence {
|
|
75
|
+
fixedDelta;
|
|
76
|
+
maxSubSteps;
|
|
77
|
+
accumulator = 0;
|
|
78
|
+
simulationTime = 0;
|
|
79
|
+
constructor(targetHz = 60, maxSubSteps = 5) {
|
|
80
|
+
this.fixedDelta = 1 / Math.max(1, targetHz);
|
|
81
|
+
this.maxSubSteps = Math.max(1, maxSubSteps);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Accumulates deltaSec and invokes stepCallback for each discrete step.
|
|
85
|
+
* Returns fractional alpha in [0, 1) for state interpolation.
|
|
86
|
+
*/
|
|
87
|
+
update(deltaSec, stepCallback) {
|
|
88
|
+
const clampedDelta = Math.min(0.2, Math.max(0, deltaSec));
|
|
89
|
+
this.accumulator += clampedDelta;
|
|
90
|
+
let steps = 0;
|
|
91
|
+
while (this.accumulator >= this.fixedDelta && steps < this.maxSubSteps) {
|
|
92
|
+
stepCallback(this.fixedDelta, this.simulationTime);
|
|
93
|
+
this.simulationTime += this.fixedDelta;
|
|
94
|
+
this.accumulator -= this.fixedDelta;
|
|
95
|
+
steps++;
|
|
96
|
+
}
|
|
97
|
+
if (steps >= this.maxSubSteps) {
|
|
98
|
+
this.accumulator = 0;
|
|
99
|
+
}
|
|
100
|
+
return this.accumulator / this.fixedDelta;
|
|
101
|
+
}
|
|
102
|
+
get totalSimulationTime() {
|
|
103
|
+
return this.simulationTime;
|
|
104
|
+
}
|
|
105
|
+
reset() {
|
|
106
|
+
this.accumulator = 0;
|
|
107
|
+
this.simulationTime = 0;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=cadence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadence.js","sourceRoot":"","sources":["../../atempo/cadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Track } from "./track.js";
|
|
2
|
+
export interface ClipMarker {
|
|
3
|
+
time: number;
|
|
4
|
+
label: string;
|
|
5
|
+
data?: any;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parallel track orchestrator.
|
|
9
|
+
* Evaluates multiple named tracks at common timestamp and tracks timeline marker crossings.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Clip {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
private _tracks;
|
|
14
|
+
private _markers;
|
|
15
|
+
constructor(name?: string);
|
|
16
|
+
addTrack<TTrack extends Track<any, any>>(name: string, track: TTrack): TTrack;
|
|
17
|
+
getTrack<TTrack extends Track<any, any>>(name: string): TTrack | undefined;
|
|
18
|
+
removeTrack(name: string): boolean;
|
|
19
|
+
hasTrack(name: string): boolean;
|
|
20
|
+
get trackNames(): string[];
|
|
21
|
+
get duration(): number;
|
|
22
|
+
get startTime(): number;
|
|
23
|
+
get endTime(): number;
|
|
24
|
+
addMarker(time: number, label: string, data?: any): this;
|
|
25
|
+
get markers(): ReadonlyArray<ClipMarker>;
|
|
26
|
+
getMarkersInRange(start: number, end: number): ClipMarker[];
|
|
27
|
+
/**
|
|
28
|
+
* Identifies markers crossed between previousTime and currentTime.
|
|
29
|
+
* Supports forward and reverse timeline traversal.
|
|
30
|
+
*/
|
|
31
|
+
sampleCrossedMarkers(previousTime: number, currentTime: number): ClipMarker[];
|
|
32
|
+
/**
|
|
33
|
+
* Evaluates all registered tracks at time, writing values to target map.
|
|
34
|
+
*/
|
|
35
|
+
sample(time: number, target?: Record<string, any>): Record<string, any>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=clip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../atempo/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,IAAI;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,QAAQ,CAAoB;gBAExB,IAAI,SAAiB;IAIjC,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAK7E,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1E,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,IAAI,UAAU,IAAI,MAAM,EAAE,CAEzB;IAED,IAAI,QAAQ,IAAI,MAAM,CASrB;IAED,IAAI,SAAS,IAAI,MAAM,CAStB;IAED,IAAI,OAAO,IAAI,MAAM,CASpB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMxD,IAAI,OAAO,IAAI,aAAa,CAAC,UAAU,CAAC,CAEvC;IAED,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3D;;;OAGG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE;IAO7E;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAM9E"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parallel track orchestrator.
|
|
3
|
+
* Evaluates multiple named tracks at common timestamp and tracks timeline marker crossings.
|
|
4
|
+
*/
|
|
5
|
+
export class Clip {
|
|
6
|
+
name;
|
|
7
|
+
_tracks = new Map();
|
|
8
|
+
_markers = [];
|
|
9
|
+
constructor(name = "UntitledClip") {
|
|
10
|
+
this.name = name;
|
|
11
|
+
}
|
|
12
|
+
addTrack(name, track) {
|
|
13
|
+
this._tracks.set(name, track);
|
|
14
|
+
return track;
|
|
15
|
+
}
|
|
16
|
+
getTrack(name) {
|
|
17
|
+
return this._tracks.get(name);
|
|
18
|
+
}
|
|
19
|
+
removeTrack(name) {
|
|
20
|
+
return this._tracks.delete(name);
|
|
21
|
+
}
|
|
22
|
+
hasTrack(name) {
|
|
23
|
+
return this._tracks.has(name);
|
|
24
|
+
}
|
|
25
|
+
get trackNames() {
|
|
26
|
+
return Array.from(this._tracks.keys());
|
|
27
|
+
}
|
|
28
|
+
get duration() {
|
|
29
|
+
let maxDur = 0;
|
|
30
|
+
for (const track of this._tracks.values()) {
|
|
31
|
+
if (track.count > 0) {
|
|
32
|
+
const d = track.duration;
|
|
33
|
+
if (d > maxDur)
|
|
34
|
+
maxDur = d;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return maxDur;
|
|
38
|
+
}
|
|
39
|
+
get startTime() {
|
|
40
|
+
let minStart = Infinity;
|
|
41
|
+
for (const track of this._tracks.values()) {
|
|
42
|
+
if (track.count > 0) {
|
|
43
|
+
const s = track.startTime;
|
|
44
|
+
if (s < minStart)
|
|
45
|
+
minStart = s;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return minStart === Infinity ? 0 : minStart;
|
|
49
|
+
}
|
|
50
|
+
get endTime() {
|
|
51
|
+
let maxEnd = -Infinity;
|
|
52
|
+
for (const track of this._tracks.values()) {
|
|
53
|
+
if (track.count > 0) {
|
|
54
|
+
const e = track.endTime;
|
|
55
|
+
if (e > maxEnd)
|
|
56
|
+
maxEnd = e;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return maxEnd === -Infinity ? 0 : maxEnd;
|
|
60
|
+
}
|
|
61
|
+
addMarker(time, label, data) {
|
|
62
|
+
this._markers.push({ time, label, data });
|
|
63
|
+
this._markers.sort((a, b) => a.time - b.time);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
get markers() {
|
|
67
|
+
return this._markers;
|
|
68
|
+
}
|
|
69
|
+
getMarkersInRange(start, end) {
|
|
70
|
+
return this._markers.filter(m => m.time >= start && m.time <= end);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Identifies markers crossed between previousTime and currentTime.
|
|
74
|
+
* Supports forward and reverse timeline traversal.
|
|
75
|
+
*/
|
|
76
|
+
sampleCrossedMarkers(previousTime, currentTime) {
|
|
77
|
+
if (currentTime >= previousTime) {
|
|
78
|
+
return this._markers.filter(m => m.time > previousTime && m.time <= currentTime);
|
|
79
|
+
}
|
|
80
|
+
return this._markers.filter(m => m.time < previousTime && m.time >= currentTime);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Evaluates all registered tracks at time, writing values to target map.
|
|
84
|
+
*/
|
|
85
|
+
sample(time, target = {}) {
|
|
86
|
+
for (const [name, track] of this._tracks.entries()) {
|
|
87
|
+
target[name] = track.sample(time, target[name]);
|
|
88
|
+
}
|
|
89
|
+
return target;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=clip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clip.js","sourceRoot":"","sources":["../../atempo/clip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../../atempo/curve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../../atempo/curve.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Curve } from "../curve.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates cubic Bezier curve from control points (x1, y1) and (x2, y2).
|
|
4
|
+
* Solves parametric polynomial via Newton-Raphson with bisection fallback.
|
|
5
|
+
*/
|
|
6
|
+
export declare const bezier: (x1: number, y1: number, x2: number, y2: number) => Curve;
|
|
7
|
+
//# sourceMappingURL=bezier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bezier.d.ts","sourceRoot":"","sources":["../../../atempo/curves/bezier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,KAAG,KA4CvE,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates cubic Bezier curve from control points (x1, y1) and (x2, y2).
|
|
3
|
+
* Solves parametric polynomial via Newton-Raphson with bisection fallback.
|
|
4
|
+
*/
|
|
5
|
+
export const bezier = (x1, y1, x2, y2) => {
|
|
6
|
+
const cx1 = Math.max(0, Math.min(1, x1));
|
|
7
|
+
const cx2 = Math.max(0, Math.min(1, x2));
|
|
8
|
+
const sampleX = (u) => (((1 - 3 * cx2 + 3 * cx1) * u + (3 * cx2 - 6 * cx1)) * u + 3 * cx1) * u;
|
|
9
|
+
const sampleY = (u) => (((1 - 3 * y2 + 3 * y1) * u + (3 * y2 - 6 * y1)) * u + 3 * y1) * u;
|
|
10
|
+
const derivativeX = (u) => 3 * (1 - 3 * cx2 + 3 * cx1) * u * u + 2 * (3 * cx2 - 6 * cx1) * u + 3 * cx1;
|
|
11
|
+
return (t) => {
|
|
12
|
+
if (t <= 0)
|
|
13
|
+
return 0;
|
|
14
|
+
if (t >= 1)
|
|
15
|
+
return 1;
|
|
16
|
+
let u = t;
|
|
17
|
+
for (let i = 0; i < 8; i++) {
|
|
18
|
+
const currentX = sampleX(u) - t;
|
|
19
|
+
if (Math.abs(currentX) < 1e-6)
|
|
20
|
+
break;
|
|
21
|
+
const dX = derivativeX(u);
|
|
22
|
+
if (Math.abs(dX) < 1e-6)
|
|
23
|
+
break;
|
|
24
|
+
u -= currentX / dX;
|
|
25
|
+
}
|
|
26
|
+
if (u < 0 || u > 1) {
|
|
27
|
+
let low = 0;
|
|
28
|
+
let high = 1;
|
|
29
|
+
u = t;
|
|
30
|
+
while (low < high) {
|
|
31
|
+
const currentX = sampleX(u);
|
|
32
|
+
if (Math.abs(currentX - t) < 1e-6)
|
|
33
|
+
break;
|
|
34
|
+
if (t > currentX) {
|
|
35
|
+
low = u;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
high = u;
|
|
39
|
+
}
|
|
40
|
+
u = (high + low) * 0.5;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return sampleY(u);
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=bezier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bezier.js","sourceRoot":"","sources":["../../../atempo/curves/bezier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounce.d.ts","sourceRoot":"","sources":["../../../atempo/curves/bounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAcpB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-stage ground bounce curve.
|
|
3
|
+
*/
|
|
4
|
+
export const bounce = (t) => {
|
|
5
|
+
let c = Math.max(0, Math.min(1, t));
|
|
6
|
+
if (c < 1 / 2.75) {
|
|
7
|
+
return 7.5625 * c * c;
|
|
8
|
+
}
|
|
9
|
+
else if (c < 2 / 2.75) {
|
|
10
|
+
c -= 1.5 / 2.75;
|
|
11
|
+
return 7.5625 * c * c + 0.75;
|
|
12
|
+
}
|
|
13
|
+
else if (c < 2.5 / 2.75) {
|
|
14
|
+
c -= 2.25 / 2.75;
|
|
15
|
+
return 7.5625 * c * c + 0.9375;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
c -= 2.625 / 2.75;
|
|
19
|
+
return 7.5625 * c * c + 0.984375;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=bounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounce.js","sourceRoot":"","sources":["../../../atempo/curves/bounce.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAU,CAAC,CAAS,EAAU,EAAE;IAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACf,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACtB,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;QAChB,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjC,CAAC;SAAM,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QACxB,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACnC,CAAC;SAAM,CAAC;QACJ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACrC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Curve } from "../curve.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cubic ease-in curve.
|
|
4
|
+
*/
|
|
5
|
+
export declare const cubicIn: Curve;
|
|
6
|
+
/**
|
|
7
|
+
* Cubic ease-out curve.
|
|
8
|
+
*/
|
|
9
|
+
export declare const cubicOut: Curve;
|
|
10
|
+
/**
|
|
11
|
+
* Cubic ease-in-out curve.
|
|
12
|
+
*/
|
|
13
|
+
export declare const cubicInOut: Curve;
|
|
14
|
+
//# sourceMappingURL=cubic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cubic.d.ts","sourceRoot":"","sources":["../../../atempo/curves/cubic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAGrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAGtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAGxB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cubic ease-in curve.
|
|
3
|
+
*/
|
|
4
|
+
export const cubicIn = (t) => {
|
|
5
|
+
const c = Math.max(0, Math.min(1, t));
|
|
6
|
+
return c * c * c;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Cubic ease-out curve.
|
|
10
|
+
*/
|
|
11
|
+
export const cubicOut = (t) => {
|
|
12
|
+
const c = Math.max(0, Math.min(1, t)) - 1;
|
|
13
|
+
return c * c * c + 1;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Cubic ease-in-out curve.
|
|
17
|
+
*/
|
|
18
|
+
export const cubicInOut = (t) => {
|
|
19
|
+
const c = Math.max(0, Math.min(1, t));
|
|
20
|
+
return c < 0.5 ? 4 * c * c * c : (c - 1) * (2 * c - 2) * (2 * c - 2) + 1;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=cubic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cubic.js","sourceRoot":"","sources":["../../../atempo/curves/cubic.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAU,CAAC,CAAS,EAAU,EAAE;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAU,CAAC,CAAS,EAAU,EAAE;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAU,CAAC,CAAS,EAAU,EAAE;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elastic.d.ts","sourceRoot":"","sources":["../../../atempo/curves/elastic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponentially decaying elastic oscillation curve.
|
|
3
|
+
*/
|
|
4
|
+
export const elastic = (t) => {
|
|
5
|
+
const c = Math.max(0, Math.min(1, t));
|
|
6
|
+
if (c === 0 || c === 1)
|
|
7
|
+
return c;
|
|
8
|
+
const p = 0.3;
|
|
9
|
+
const s = p / 4;
|
|
10
|
+
return Math.pow(2, -10 * c) * Math.sin(((c - s) * (2 * Math.PI)) / p) + 1;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=elastic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../../atempo/curves/elastic.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAU,CAAC,CAAS,EAAU,EAAE;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC;IACd,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Curve } from "../curve.js";
|
|
2
|
+
/**
|
|
3
|
+
* Exponential ease-in curve.
|
|
4
|
+
*/
|
|
5
|
+
export declare const expoIn: Curve;
|
|
6
|
+
/**
|
|
7
|
+
* Exponential ease-out curve.
|
|
8
|
+
*/
|
|
9
|
+
export declare const expoOut: Curve;
|
|
10
|
+
/**
|
|
11
|
+
* Exponential ease-in-out curve.
|
|
12
|
+
*/
|
|
13
|
+
export declare const expoInOut: Curve;
|
|
14
|
+
//# sourceMappingURL=expo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../atempo/curves/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAGpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAGrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponential ease-in curve.
|
|
3
|
+
*/
|
|
4
|
+
export const expoIn = (t) => {
|
|
5
|
+
const c = Math.max(0, Math.min(1, t));
|
|
6
|
+
return c === 0 ? 0 : Math.pow(2, 10 * (c - 1));
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Exponential ease-out curve.
|
|
10
|
+
*/
|
|
11
|
+
export const expoOut = (t) => {
|
|
12
|
+
const c = Math.max(0, Math.min(1, t));
|
|
13
|
+
return c === 1 ? 1 : 1 - Math.pow(2, -10 * c);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Exponential ease-in-out curve.
|
|
17
|
+
*/
|
|
18
|
+
export const expoInOut = (t) => {
|
|
19
|
+
const c = Math.max(0, Math.min(1, t));
|
|
20
|
+
if (c === 0)
|
|
21
|
+
return 0;
|
|
22
|
+
if (c === 1)
|
|
23
|
+
return 1;
|
|
24
|
+
return c < 0.5 ? 0.5 * Math.pow(2, 20 * c - 10) : 1 - 0.5 * Math.pow(2, -20 * c + 10);
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=expo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo.js","sourceRoot":"","sources":["../../../atempo/curves/expo.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAU,CAAC,CAAS,EAAU,EAAE;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAU,CAAC,CAAS,EAAU,EAAE;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAU,CAAC,CAAS,EAAU,EAAE;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holdSnap.d.ts","sourceRoot":"","sources":["../../../atempo/curves/holdSnap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,qBAAkB,EAAE,kBAAe,KAAG,KAQ9D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates hold threshold and snap curve.
|
|
3
|
+
*/
|
|
4
|
+
export const holdSnap = (holdFraction = 0.5, overshoot = 1.1) => {
|
|
5
|
+
return (t) => {
|
|
6
|
+
const c = Math.max(0, Math.min(1, t));
|
|
7
|
+
if (c < holdFraction)
|
|
8
|
+
return 0;
|
|
9
|
+
const norm = (c - holdFraction) / (1 - holdFraction);
|
|
10
|
+
if (norm < 0.25)
|
|
11
|
+
return overshoot;
|
|
12
|
+
return 1.0;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=holdSnap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holdSnap.js","sourceRoot":"","sources":["../../../atempo/curves/holdSnap.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAS,EAAE;IACnE,OAAO,CAAC,CAAS,EAAU,EAAE;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,YAAY;YAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;QACrD,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,SAAS,CAAC;QAClC,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curve presets catalog.
|
|
3
|
+
*/
|
|
4
|
+
export { linear } from "./linear.js";
|
|
5
|
+
export { step } from "./step.js";
|
|
6
|
+
export { quadIn, quadOut, quadInOut } from "./quad.js";
|
|
7
|
+
export { cubicIn, cubicOut, cubicInOut } from "./cubic.js";
|
|
8
|
+
export { expoIn, expoOut, expoInOut } from "./expo.js";
|
|
9
|
+
export { overshoot } from "./overshoot.js";
|
|
10
|
+
export { bounce } from "./bounce.js";
|
|
11
|
+
export { elastic } from "./elastic.js";
|
|
12
|
+
export { holdSnap } from "./holdSnap.js";
|
|
13
|
+
export { bezier } from "./bezier.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../atempo/curves/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curve presets catalog.
|
|
3
|
+
*/
|
|
4
|
+
export { linear } from "./linear.js";
|
|
5
|
+
export { step } from "./step.js";
|
|
6
|
+
export { quadIn, quadOut, quadInOut } from "./quad.js";
|
|
7
|
+
export { cubicIn, cubicOut, cubicInOut } from "./cubic.js";
|
|
8
|
+
export { expoIn, expoOut, expoInOut } from "./expo.js";
|
|
9
|
+
export { overshoot } from "./overshoot.js";
|
|
10
|
+
export { bounce } from "./bounce.js";
|
|
11
|
+
export { elastic } from "./elastic.js";
|
|
12
|
+
export { holdSnap } from "./holdSnap.js";
|
|
13
|
+
export { bezier } from "./bezier.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../atempo/curves/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../atempo/curves/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,KAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../atempo/curves/linear.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAU,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overshoot.d.ts","sourceRoot":"","sources":["../../../atempo/curves/overshoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,eAAa,KAAG,KASzC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates back overshoot curve expanding past 1.0 by specified amount before settling.
|
|
3
|
+
*/
|
|
4
|
+
export const overshoot = (amount = 1.15) => {
|
|
5
|
+
const s = amount * 1.70158;
|
|
6
|
+
return (t) => {
|
|
7
|
+
const c = Math.max(0, Math.min(1, t));
|
|
8
|
+
if (c <= 0)
|
|
9
|
+
return 0;
|
|
10
|
+
if (c >= 1)
|
|
11
|
+
return 1;
|
|
12
|
+
const p = c - 1;
|
|
13
|
+
return p * p * ((s + 1) * p + s) + 1;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=overshoot.js.map
|