@guinetik/gcanvas 1.0.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/.github/workflows/release.yaml +70 -0
- package/.jshintrc +4 -0
- package/.vscode/settings.json +22 -0
- package/CLAUDE.md +310 -0
- package/blackhole.jpg +0 -0
- package/demo.png +0 -0
- package/demos/CNAME +1 -0
- package/demos/animations.html +31 -0
- package/demos/basic.html +38 -0
- package/demos/baskara.html +31 -0
- package/demos/bezier.html +35 -0
- package/demos/beziersignature.html +29 -0
- package/demos/blackhole.html +28 -0
- package/demos/blob.html +35 -0
- package/demos/demos.css +289 -0
- package/demos/easing.html +28 -0
- package/demos/events.html +195 -0
- package/demos/fluent.html +647 -0
- package/demos/fractals.html +36 -0
- package/demos/genart.html +26 -0
- package/demos/gendream.html +26 -0
- package/demos/group.html +36 -0
- package/demos/home.html +587 -0
- package/demos/index.html +364 -0
- package/demos/isometric.html +34 -0
- package/demos/js/animations.js +452 -0
- package/demos/js/basic.js +204 -0
- package/demos/js/baskara.js +751 -0
- package/demos/js/bezier.js +692 -0
- package/demos/js/beziersignature.js +241 -0
- package/demos/js/blackhole/accretiondisk.obj.js +379 -0
- package/demos/js/blackhole/blackhole.obj.js +318 -0
- package/demos/js/blackhole/index.js +409 -0
- package/demos/js/blackhole/particle.js +56 -0
- package/demos/js/blackhole/starfield.obj.js +218 -0
- package/demos/js/blob.js +2263 -0
- package/demos/js/easing.js +477 -0
- package/demos/js/fluent.js +183 -0
- package/demos/js/fractals.js +931 -0
- package/demos/js/fractalworker.js +93 -0
- package/demos/js/genart.js +268 -0
- package/demos/js/gendream.js +209 -0
- package/demos/js/group.js +140 -0
- package/demos/js/info-toggle.js +25 -0
- package/demos/js/isometric.js +863 -0
- package/demos/js/kerr.js +1556 -0
- package/demos/js/lavalamp.js +590 -0
- package/demos/js/layout.js +354 -0
- package/demos/js/mondrian.js +285 -0
- package/demos/js/opacity.js +275 -0
- package/demos/js/painter.js +484 -0
- package/demos/js/particles-showcase.js +514 -0
- package/demos/js/particles.js +299 -0
- package/demos/js/patterns.js +397 -0
- package/demos/js/penrose/artifact.js +69 -0
- package/demos/js/penrose/blackhole.js +121 -0
- package/demos/js/penrose/constants.js +73 -0
- package/demos/js/penrose/game.js +943 -0
- package/demos/js/penrose/lore.js +278 -0
- package/demos/js/penrose/penrosescene.js +892 -0
- package/demos/js/penrose/ship.js +216 -0
- package/demos/js/penrose/sounds.js +211 -0
- package/demos/js/penrose/voidparticle.js +55 -0
- package/demos/js/penrose/voidscene.js +258 -0
- package/demos/js/penrose/voidship.js +144 -0
- package/demos/js/penrose/wormhole.js +46 -0
- package/demos/js/pipeline.js +555 -0
- package/demos/js/scene.js +304 -0
- package/demos/js/scenes.js +320 -0
- package/demos/js/schrodinger.js +410 -0
- package/demos/js/schwarzschild.js +1023 -0
- package/demos/js/shapes.js +628 -0
- package/demos/js/space/alien.js +171 -0
- package/demos/js/space/boom.js +98 -0
- package/demos/js/space/boss.js +353 -0
- package/demos/js/space/buff.js +73 -0
- package/demos/js/space/bullet.js +102 -0
- package/demos/js/space/constants.js +85 -0
- package/demos/js/space/game.js +1884 -0
- package/demos/js/space/hud.js +112 -0
- package/demos/js/space/laserbeam.js +179 -0
- package/demos/js/space/lightning.js +277 -0
- package/demos/js/space/minion.js +192 -0
- package/demos/js/space/missile.js +212 -0
- package/demos/js/space/player.js +430 -0
- package/demos/js/space/powerup.js +90 -0
- package/demos/js/space/starfield.js +58 -0
- package/demos/js/space/starpower.js +90 -0
- package/demos/js/spacetime.js +559 -0
- package/demos/js/svgtween.js +204 -0
- package/demos/js/tde/accretiondisk.js +418 -0
- package/demos/js/tde/blackhole.js +219 -0
- package/demos/js/tde/blackholescene.js +209 -0
- package/demos/js/tde/config.js +59 -0
- package/demos/js/tde/index.js +695 -0
- package/demos/js/tde/jets.js +290 -0
- package/demos/js/tde/lensedstarfield.js +147 -0
- package/demos/js/tde/tdestar.js +317 -0
- package/demos/js/tde/tidalstream.js +356 -0
- package/demos/js/tde_old/blackhole.obj.js +354 -0
- package/demos/js/tde_old/debris.obj.js +791 -0
- package/demos/js/tde_old/flare.obj.js +239 -0
- package/demos/js/tde_old/index.js +448 -0
- package/demos/js/tde_old/star.obj.js +812 -0
- package/demos/js/tiles.js +312 -0
- package/demos/js/tweendemo.js +79 -0
- package/demos/js/visibility.js +102 -0
- package/demos/kerr.html +28 -0
- package/demos/lavalamp.html +27 -0
- package/demos/layouts.html +37 -0
- package/demos/logo.svg +4 -0
- package/demos/loop.html +84 -0
- package/demos/mondrian.html +32 -0
- package/demos/og_image.png +0 -0
- package/demos/opacity.html +36 -0
- package/demos/painter.html +39 -0
- package/demos/particles-showcase.html +28 -0
- package/demos/particles.html +24 -0
- package/demos/patterns.html +33 -0
- package/demos/penrose-game.html +31 -0
- package/demos/pipeline.html +737 -0
- package/demos/scene.html +33 -0
- package/demos/scenes.html +96 -0
- package/demos/schrodinger.html +27 -0
- package/demos/schwarzschild.html +27 -0
- package/demos/shapes.html +16 -0
- package/demos/space.html +85 -0
- package/demos/spacetime.html +27 -0
- package/demos/svgtween.html +29 -0
- package/demos/tde.html +28 -0
- package/demos/tiles.html +28 -0
- package/demos/transforms.html +400 -0
- package/demos/tween.html +45 -0
- package/demos/visibility.html +33 -0
- package/disk_example.png +0 -0
- package/docs/README.md +222 -0
- package/docs/concepts/architecture-overview.md +204 -0
- package/docs/concepts/lifecycle.md +255 -0
- package/docs/concepts/rendering-pipeline.md +279 -0
- package/docs/concepts/tde-zorder.md +106 -0
- package/docs/concepts/two-layer-architecture.md +229 -0
- package/docs/getting-started/first-game.md +354 -0
- package/docs/getting-started/hello-world.md +269 -0
- package/docs/getting-started/installation.md +157 -0
- package/docs/modules/collision/README.md +453 -0
- package/docs/modules/fluent/README.md +1075 -0
- package/docs/modules/game/README.md +303 -0
- package/docs/modules/isometric-camera.md +210 -0
- package/docs/modules/isometric.md +275 -0
- package/docs/modules/painter/README.md +328 -0
- package/docs/modules/particle/README.md +559 -0
- package/docs/modules/shapes/README.md +221 -0
- package/docs/modules/shapes/base/euclidian.md +123 -0
- package/docs/modules/shapes/base/geometry2d.md +204 -0
- package/docs/modules/shapes/base/renderable.md +215 -0
- package/docs/modules/shapes/base/shape.md +262 -0
- package/docs/modules/shapes/base/transformable.md +243 -0
- package/docs/modules/shapes/hierarchy.md +218 -0
- package/docs/modules/state/README.md +577 -0
- package/docs/modules/util/README.md +99 -0
- package/docs/modules/util/camera3d.md +412 -0
- package/docs/modules/util/scene3d.md +395 -0
- package/index.html +17 -0
- package/jsdoc.json +50 -0
- package/package.json +55 -0
- package/readme.md +599 -0
- package/scripts/build-demo.js +69 -0
- package/scripts/bundle4llm.js +276 -0
- package/scripts/clearconsole.js +48 -0
- package/src/collision/collision-system.js +332 -0
- package/src/collision/collision.js +303 -0
- package/src/collision/index.js +10 -0
- package/src/fluent/fluent-game.js +430 -0
- package/src/fluent/fluent-go.js +1060 -0
- package/src/fluent/fluent-layer.js +152 -0
- package/src/fluent/fluent-scene.js +291 -0
- package/src/fluent/index.js +98 -0
- package/src/fluent/sketch.js +380 -0
- package/src/game/game.js +467 -0
- package/src/game/index.js +49 -0
- package/src/game/objects/go.js +220 -0
- package/src/game/objects/imagego.js +30 -0
- package/src/game/objects/index.js +54 -0
- package/src/game/objects/isometric-scene.js +260 -0
- package/src/game/objects/layoutscene.js +549 -0
- package/src/game/objects/scene.js +175 -0
- package/src/game/objects/scene3d.js +118 -0
- package/src/game/objects/text.js +221 -0
- package/src/game/objects/wrapper.js +232 -0
- package/src/game/pipeline.js +243 -0
- package/src/game/ui/button.js +396 -0
- package/src/game/ui/cursor.js +93 -0
- package/src/game/ui/fps.js +91 -0
- package/src/game/ui/index.js +5 -0
- package/src/game/ui/togglebutton.js +93 -0
- package/src/game/ui/tooltip.js +249 -0
- package/src/index.js +25 -0
- package/src/io/events.js +20 -0
- package/src/io/index.js +86 -0
- package/src/io/input.js +70 -0
- package/src/io/keys.js +152 -0
- package/src/io/mouse.js +61 -0
- package/src/io/touch.js +39 -0
- package/src/logger/debugtab.js +138 -0
- package/src/logger/index.js +3 -0
- package/src/logger/loggable.js +47 -0
- package/src/logger/logger.js +113 -0
- package/src/math/complex.js +37 -0
- package/src/math/constants.js +1 -0
- package/src/math/fractal.js +1271 -0
- package/src/math/gr.js +201 -0
- package/src/math/heat.js +202 -0
- package/src/math/index.js +12 -0
- package/src/math/noise.js +433 -0
- package/src/math/orbital.js +191 -0
- package/src/math/patterns.js +1339 -0
- package/src/math/penrose.js +259 -0
- package/src/math/quantum.js +115 -0
- package/src/math/random.js +195 -0
- package/src/math/tensor.js +1009 -0
- package/src/mixins/anchor.js +131 -0
- package/src/mixins/draggable.js +72 -0
- package/src/mixins/index.js +2 -0
- package/src/motion/bezier.js +132 -0
- package/src/motion/bounce.js +58 -0
- package/src/motion/easing.js +349 -0
- package/src/motion/float.js +130 -0
- package/src/motion/follow.js +125 -0
- package/src/motion/hop.js +52 -0
- package/src/motion/index.js +82 -0
- package/src/motion/motion.js +1124 -0
- package/src/motion/orbit.js +49 -0
- package/src/motion/oscillate.js +39 -0
- package/src/motion/parabolic.js +141 -0
- package/src/motion/patrol.js +147 -0
- package/src/motion/pendulum.js +48 -0
- package/src/motion/pulse.js +88 -0
- package/src/motion/shake.js +83 -0
- package/src/motion/spiral.js +144 -0
- package/src/motion/spring.js +150 -0
- package/src/motion/swing.js +47 -0
- package/src/motion/tween.js +92 -0
- package/src/motion/tweenetik.js +139 -0
- package/src/motion/waypoint.js +210 -0
- package/src/painter/index.js +8 -0
- package/src/painter/painter.colors.js +331 -0
- package/src/painter/painter.effects.js +230 -0
- package/src/painter/painter.img.js +229 -0
- package/src/painter/painter.js +295 -0
- package/src/painter/painter.lines.js +189 -0
- package/src/painter/painter.opacity.js +41 -0
- package/src/painter/painter.shapes.js +277 -0
- package/src/painter/painter.text.js +273 -0
- package/src/particle/emitter.js +124 -0
- package/src/particle/index.js +11 -0
- package/src/particle/particle-system.js +322 -0
- package/src/particle/particle.js +71 -0
- package/src/particle/updaters.js +170 -0
- package/src/shapes/arc.js +43 -0
- package/src/shapes/arrow.js +33 -0
- package/src/shapes/bezier.js +42 -0
- package/src/shapes/circle.js +62 -0
- package/src/shapes/clouds.js +56 -0
- package/src/shapes/cone.js +219 -0
- package/src/shapes/cross.js +70 -0
- package/src/shapes/cube.js +244 -0
- package/src/shapes/cylinder.js +254 -0
- package/src/shapes/diamond.js +48 -0
- package/src/shapes/euclidian.js +111 -0
- package/src/shapes/figure.js +115 -0
- package/src/shapes/geometry.js +220 -0
- package/src/shapes/group.js +375 -0
- package/src/shapes/heart.js +42 -0
- package/src/shapes/hexagon.js +26 -0
- package/src/shapes/image.js +192 -0
- package/src/shapes/index.js +111 -0
- package/src/shapes/line.js +29 -0
- package/src/shapes/pattern.js +90 -0
- package/src/shapes/pin.js +44 -0
- package/src/shapes/poly.js +31 -0
- package/src/shapes/prism.js +226 -0
- package/src/shapes/rect.js +35 -0
- package/src/shapes/renderable.js +333 -0
- package/src/shapes/ring.js +26 -0
- package/src/shapes/roundrect.js +95 -0
- package/src/shapes/shape.js +117 -0
- package/src/shapes/slice.js +26 -0
- package/src/shapes/sphere.js +314 -0
- package/src/shapes/sphere3d.js +537 -0
- package/src/shapes/square.js +15 -0
- package/src/shapes/star.js +99 -0
- package/src/shapes/svg.js +408 -0
- package/src/shapes/text.js +553 -0
- package/src/shapes/traceable.js +83 -0
- package/src/shapes/transform.js +357 -0
- package/src/shapes/transformable.js +172 -0
- package/src/shapes/triangle.js +26 -0
- package/src/sound/index.js +17 -0
- package/src/sound/sound.js +473 -0
- package/src/sound/synth.analyzer.js +149 -0
- package/src/sound/synth.effects.js +207 -0
- package/src/sound/synth.envelope.js +59 -0
- package/src/sound/synth.js +229 -0
- package/src/sound/synth.musical.js +160 -0
- package/src/sound/synth.noise.js +85 -0
- package/src/sound/synth.oscillators.js +293 -0
- package/src/state/index.js +10 -0
- package/src/state/state-machine.js +371 -0
- package/src/util/camera3d.js +438 -0
- package/src/util/index.js +6 -0
- package/src/util/isometric-camera.js +235 -0
- package/src/util/layout.js +317 -0
- package/src/util/position.js +147 -0
- package/src/util/tasks.js +47 -0
- package/src/util/zindex.js +287 -0
- package/src/webgl/index.js +9 -0
- package/src/webgl/shaders/sphere-shaders.js +994 -0
- package/src/webgl/webgl-renderer.js +388 -0
- package/tde.png +0 -0
- package/test/math/orbital.test.js +61 -0
- package/test/math/tensor.test.js +114 -0
- package/test/particle/emitter.test.js +204 -0
- package/test/particle/particle-system.test.js +310 -0
- package/test/particle/particle.test.js +116 -0
- package/test/particle/updaters.test.js +386 -0
- package/test/setup.js +120 -0
- package/test/shapes/euclidian.test.js +44 -0
- package/test/shapes/geometry.test.js +86 -0
- package/test/shapes/group.test.js +86 -0
- package/test/shapes/rectangle.test.js +64 -0
- package/test/shapes/transform.test.js +379 -0
- package/test/util/camera3d.test.js +428 -0
- package/test/util/scene3d.test.js +352 -0
- package/types/collision.d.ts +249 -0
- package/types/common.d.ts +155 -0
- package/types/game.d.ts +497 -0
- package/types/index.d.ts +309 -0
- package/types/io.d.ts +188 -0
- package/types/logger.d.ts +127 -0
- package/types/math.d.ts +268 -0
- package/types/mixins.d.ts +92 -0
- package/types/motion.d.ts +678 -0
- package/types/painter.d.ts +378 -0
- package/types/shapes.d.ts +864 -0
- package/types/sound.d.ts +672 -0
- package/types/state.d.ts +251 -0
- package/types/util.d.ts +253 -0
- package/vite.config.js +50 -0
- package/vitest.config.js +13 -0
|
@@ -0,0 +1,678 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCanvas Motion Module
|
|
3
|
+
* Animation systems including easing functions, tweening, and stateless motion primitives.
|
|
4
|
+
* @module motion
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
EasingFunction,
|
|
9
|
+
MotionCallbacks,
|
|
10
|
+
MotionState,
|
|
11
|
+
MotionResult,
|
|
12
|
+
MotionPositionResult,
|
|
13
|
+
MotionValueResult,
|
|
14
|
+
SpringResult,
|
|
15
|
+
WaypointResult,
|
|
16
|
+
Point
|
|
17
|
+
} from './common';
|
|
18
|
+
|
|
19
|
+
// ==========================================================================
|
|
20
|
+
// Easing Functions
|
|
21
|
+
// ==========================================================================
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Collection of easing functions for smooth animations.
|
|
25
|
+
* Each function takes a normalized time value (0-1) and returns an eased value.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* const easedT = Easing.easeOutBounce(0.5);
|
|
29
|
+
*/
|
|
30
|
+
export class Easing {
|
|
31
|
+
// Quadratic
|
|
32
|
+
static easeInQuad(t: number): number;
|
|
33
|
+
static easeOutQuad(t: number): number;
|
|
34
|
+
static easeInOutQuad(t: number): number;
|
|
35
|
+
|
|
36
|
+
// Cubic
|
|
37
|
+
static easeInCubic(t: number): number;
|
|
38
|
+
static easeOutCubic(t: number): number;
|
|
39
|
+
static easeInOutCubic(t: number): number;
|
|
40
|
+
|
|
41
|
+
// Quartic
|
|
42
|
+
static easeInQuart(t: number): number;
|
|
43
|
+
static easeOutQuart(t: number): number;
|
|
44
|
+
static easeInOutQuart(t: number): number;
|
|
45
|
+
|
|
46
|
+
// Quintic
|
|
47
|
+
static easeInQuint(t: number): number;
|
|
48
|
+
static easeOutQuint(t: number): number;
|
|
49
|
+
static easeInOutQuint(t: number): number;
|
|
50
|
+
|
|
51
|
+
// Sine
|
|
52
|
+
static easeInSine(t: number): number;
|
|
53
|
+
static easeOutSine(t: number): number;
|
|
54
|
+
static easeInOutSine(t: number): number;
|
|
55
|
+
|
|
56
|
+
// Exponential
|
|
57
|
+
static easeInExpo(t: number): number;
|
|
58
|
+
static easeOutExpo(t: number): number;
|
|
59
|
+
static easeInOutExpo(t: number): number;
|
|
60
|
+
|
|
61
|
+
// Circular
|
|
62
|
+
static easeInCirc(t: number): number;
|
|
63
|
+
static easeOutCirc(t: number): number;
|
|
64
|
+
static easeInOutCirc(t: number): number;
|
|
65
|
+
|
|
66
|
+
// Elastic
|
|
67
|
+
static easeInElastic(t: number, amplitude?: number, period?: number): number;
|
|
68
|
+
static easeOutElastic(t: number, amplitude?: number, period?: number): number;
|
|
69
|
+
static easeInOutElastic(t: number, amplitude?: number, period?: number): number;
|
|
70
|
+
|
|
71
|
+
// Back (overshoot)
|
|
72
|
+
static easeInBack(t: number, overshoot?: number): number;
|
|
73
|
+
static easeOutBack(t: number, overshoot?: number): number;
|
|
74
|
+
static easeInOutBack(t: number, overshoot?: number): number;
|
|
75
|
+
|
|
76
|
+
// Bounce
|
|
77
|
+
static easeInBounce(t: number): number;
|
|
78
|
+
static easeOutBounce(t: number): number;
|
|
79
|
+
static easeInOutBounce(t: number): number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ==========================================================================
|
|
83
|
+
// Tween Utilities
|
|
84
|
+
// ==========================================================================
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Stateless interpolation utilities.
|
|
88
|
+
*/
|
|
89
|
+
export class Tween {
|
|
90
|
+
/**
|
|
91
|
+
* Linear interpolation between two values.
|
|
92
|
+
* @param start - Start value
|
|
93
|
+
* @param end - End value
|
|
94
|
+
* @param t - Normalized time (0-1)
|
|
95
|
+
*/
|
|
96
|
+
static lerp(start: number, end: number, t: number): number;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Interpolate between two angles (handles wraparound).
|
|
100
|
+
* @param start - Start angle in radians
|
|
101
|
+
* @param end - End angle in radians
|
|
102
|
+
* @param t - Normalized time (0-1)
|
|
103
|
+
*/
|
|
104
|
+
static lerpAngle(start: number, end: number, t: number): number;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Interpolate between two colors.
|
|
108
|
+
* @param startColor - Start color (hex string)
|
|
109
|
+
* @param endColor - End color (hex string)
|
|
110
|
+
* @param t - Normalized time (0-1)
|
|
111
|
+
* @returns Interpolated color as hex string
|
|
112
|
+
*/
|
|
113
|
+
static lerpColor(startColor: string, endColor: string, t: number): string;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ==========================================================================
|
|
117
|
+
// Tweenetik - Property Animation System
|
|
118
|
+
// ==========================================================================
|
|
119
|
+
|
|
120
|
+
/** Options for Tweenetik animations */
|
|
121
|
+
export interface TweenetikOptions {
|
|
122
|
+
/** Delay before animation starts (seconds) */
|
|
123
|
+
delay?: number;
|
|
124
|
+
/** Called when animation starts */
|
|
125
|
+
onStart?: () => void;
|
|
126
|
+
/** Called when animation completes */
|
|
127
|
+
onComplete?: () => void;
|
|
128
|
+
/** Called each frame after properties are updated */
|
|
129
|
+
onUpdate?: () => void;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Self-managed property animation system.
|
|
134
|
+
* Mutates target object properties directly over time.
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* // Animate button scale with bounce
|
|
138
|
+
* Tweenetik.to(button, { scaleX: 1.2, scaleY: 1.2 }, 0.5, Easing.easeOutBack);
|
|
139
|
+
*
|
|
140
|
+
* // Must call updateAll in your game loop
|
|
141
|
+
* Tweenetik.updateAll(dt);
|
|
142
|
+
*/
|
|
143
|
+
export class Tweenetik {
|
|
144
|
+
/** The object being animated */
|
|
145
|
+
target: object;
|
|
146
|
+
/** Animation duration in seconds */
|
|
147
|
+
duration: number;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Create a new Tweenetik animation.
|
|
151
|
+
* @param target - Object to animate
|
|
152
|
+
* @param toProps - Target property values
|
|
153
|
+
* @param duration - Duration in seconds
|
|
154
|
+
* @param easingFn - Easing function (default: easeOutQuad)
|
|
155
|
+
* @param options - Additional options
|
|
156
|
+
*/
|
|
157
|
+
constructor(
|
|
158
|
+
target: object,
|
|
159
|
+
toProps: Record<string, number>,
|
|
160
|
+
duration: number,
|
|
161
|
+
easingFn?: EasingFunction,
|
|
162
|
+
options?: TweenetikOptions
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Update this tween by delta time.
|
|
167
|
+
* @param dt - Delta time in seconds
|
|
168
|
+
*/
|
|
169
|
+
update(dt: number): void;
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Create and register a new tween.
|
|
173
|
+
* @param target - Object to animate
|
|
174
|
+
* @param toProps - Target property values
|
|
175
|
+
* @param duration - Duration in seconds
|
|
176
|
+
* @param easingFn - Easing function
|
|
177
|
+
* @param options - Additional options
|
|
178
|
+
* @returns The created Tweenetik instance
|
|
179
|
+
*/
|
|
180
|
+
static to(
|
|
181
|
+
target: object,
|
|
182
|
+
toProps: Record<string, number>,
|
|
183
|
+
duration: number,
|
|
184
|
+
easingFn?: EasingFunction,
|
|
185
|
+
options?: TweenetikOptions
|
|
186
|
+
): Tweenetik;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Update all active tweens.
|
|
190
|
+
* Call this in your game loop.
|
|
191
|
+
* @param dt - Delta time in seconds
|
|
192
|
+
*/
|
|
193
|
+
static updateAll(dt: number): void;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// ==========================================================================
|
|
197
|
+
// Motion - Stateless Animation Primitives
|
|
198
|
+
// ==========================================================================
|
|
199
|
+
|
|
200
|
+
/** Spring physics parameters */
|
|
201
|
+
export interface SpringParams {
|
|
202
|
+
/** Spring stiffness (0-1, default: 0.3) */
|
|
203
|
+
stiffness?: number;
|
|
204
|
+
/** Damping factor (0-1, default: 0.6) */
|
|
205
|
+
damping?: number;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/** Target object with position */
|
|
209
|
+
export interface PositionTarget {
|
|
210
|
+
x: number;
|
|
211
|
+
y: number;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Stateless animation primitive functions.
|
|
216
|
+
* Each method returns interpolated values without storing state.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* function update(dt) {
|
|
220
|
+
* character.animTime += dt;
|
|
221
|
+
* const result = Motion.orbit(200, 200, 50, 50, 0, character.animTime, 2);
|
|
222
|
+
* character.x = result.x;
|
|
223
|
+
* character.y = result.y;
|
|
224
|
+
* }
|
|
225
|
+
*/
|
|
226
|
+
export class Motion {
|
|
227
|
+
/**
|
|
228
|
+
* Oscillate between min and max values.
|
|
229
|
+
* @param min - Minimum value
|
|
230
|
+
* @param max - Maximum value
|
|
231
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
232
|
+
* @param duration - Duration of one oscillation (seconds)
|
|
233
|
+
* @param loop - Whether to loop (default: true)
|
|
234
|
+
* @param easingFn - Optional easing function
|
|
235
|
+
* @param callbacks - Optional callbacks
|
|
236
|
+
* @param state - Internal state
|
|
237
|
+
*/
|
|
238
|
+
static oscillate(
|
|
239
|
+
min: number,
|
|
240
|
+
max: number,
|
|
241
|
+
elapsedTime: number,
|
|
242
|
+
duration: number,
|
|
243
|
+
loop?: boolean,
|
|
244
|
+
easingFn?: EasingFunction | null,
|
|
245
|
+
callbacks?: MotionCallbacks,
|
|
246
|
+
state?: MotionState | null
|
|
247
|
+
): MotionValueResult;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Parabolic arc interpolation.
|
|
251
|
+
* @param start - Start value
|
|
252
|
+
* @param peak - Peak value
|
|
253
|
+
* @param end - End value
|
|
254
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
255
|
+
* @param duration - Duration (seconds)
|
|
256
|
+
* @param loop - Whether to loop
|
|
257
|
+
* @param yoyo - Whether to reverse at end
|
|
258
|
+
* @param easingFn - Optional easing function
|
|
259
|
+
* @param callbacks - Optional callbacks
|
|
260
|
+
* @param state - Internal state
|
|
261
|
+
*/
|
|
262
|
+
static parabolic(
|
|
263
|
+
start: number,
|
|
264
|
+
peak: number,
|
|
265
|
+
end: number,
|
|
266
|
+
elapsedTime: number,
|
|
267
|
+
duration: number,
|
|
268
|
+
loop?: boolean,
|
|
269
|
+
yoyo?: boolean,
|
|
270
|
+
easingFn?: EasingFunction | null,
|
|
271
|
+
callbacks?: MotionCallbacks,
|
|
272
|
+
state?: MotionState | null
|
|
273
|
+
): MotionValueResult;
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Floating/drifting movement within an area.
|
|
277
|
+
* @param target - Object with x,y center point
|
|
278
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
279
|
+
* @param duration - Duration of one cycle (seconds)
|
|
280
|
+
* @param speed - Movement speed (0.1-2.0 recommended)
|
|
281
|
+
* @param randomness - Path randomness (0-1)
|
|
282
|
+
* @param radius - Float area radius
|
|
283
|
+
* @param loop - Whether to loop
|
|
284
|
+
* @param easingFn - Optional easing function
|
|
285
|
+
* @param callbacks - Optional callbacks
|
|
286
|
+
* @param state - Internal state
|
|
287
|
+
*/
|
|
288
|
+
static float(
|
|
289
|
+
target: PositionTarget,
|
|
290
|
+
elapsedTime: number,
|
|
291
|
+
duration: number,
|
|
292
|
+
speed: number,
|
|
293
|
+
randomness: number,
|
|
294
|
+
radius: number,
|
|
295
|
+
loop?: boolean,
|
|
296
|
+
easingFn?: EasingFunction | null,
|
|
297
|
+
callbacks?: MotionCallbacks,
|
|
298
|
+
state?: MotionState | null
|
|
299
|
+
): MotionPositionResult;
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Spring animation with elastic bounce.
|
|
303
|
+
* @param initial - Initial value
|
|
304
|
+
* @param target - Target value
|
|
305
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
306
|
+
* @param duration - Duration (seconds)
|
|
307
|
+
* @param loop - Whether to loop
|
|
308
|
+
* @param yoyo - Whether to return to initial
|
|
309
|
+
* @param springParams - Spring physics parameters
|
|
310
|
+
* @param callbacks - Optional callbacks
|
|
311
|
+
*/
|
|
312
|
+
static spring(
|
|
313
|
+
initial: number,
|
|
314
|
+
target: number,
|
|
315
|
+
elapsedTime: number,
|
|
316
|
+
duration: number,
|
|
317
|
+
loop?: boolean,
|
|
318
|
+
yoyo?: boolean,
|
|
319
|
+
springParams?: SpringParams,
|
|
320
|
+
callbacks?: MotionCallbacks
|
|
321
|
+
): SpringResult;
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Swinging motion around a center point.
|
|
325
|
+
* @param centerX - Center X
|
|
326
|
+
* @param centerY - Center Y
|
|
327
|
+
* @param maxAngle - Maximum swing angle (radians)
|
|
328
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
329
|
+
* @param duration - Duration (seconds)
|
|
330
|
+
* @param loop - Whether to loop
|
|
331
|
+
* @param yoyo - Whether to reverse
|
|
332
|
+
* @param easingFn - Optional easing function
|
|
333
|
+
* @param callbacks - Optional callbacks
|
|
334
|
+
* @param state - Internal state
|
|
335
|
+
*/
|
|
336
|
+
static swing(
|
|
337
|
+
centerX: number,
|
|
338
|
+
centerY: number,
|
|
339
|
+
maxAngle: number,
|
|
340
|
+
elapsedTime: number,
|
|
341
|
+
duration: number,
|
|
342
|
+
loop?: boolean,
|
|
343
|
+
yoyo?: boolean,
|
|
344
|
+
easingFn?: EasingFunction | null,
|
|
345
|
+
callbacks?: MotionCallbacks,
|
|
346
|
+
state?: MotionState | null
|
|
347
|
+
): MotionPositionResult;
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Pendulum motion.
|
|
351
|
+
* @param originAngle - Starting angle (radians)
|
|
352
|
+
* @param amplitude - Swing amplitude
|
|
353
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
354
|
+
* @param duration - Duration (seconds)
|
|
355
|
+
* @param loop - Whether to loop
|
|
356
|
+
* @param damped - Whether to apply damping
|
|
357
|
+
* @param easingFn - Optional easing function
|
|
358
|
+
* @param callbacks - Optional callbacks
|
|
359
|
+
* @param state - Internal state
|
|
360
|
+
*/
|
|
361
|
+
static pendulum(
|
|
362
|
+
originAngle: number,
|
|
363
|
+
amplitude: number,
|
|
364
|
+
elapsedTime: number,
|
|
365
|
+
duration: number,
|
|
366
|
+
loop?: boolean,
|
|
367
|
+
damped?: boolean,
|
|
368
|
+
easingFn?: EasingFunction | null,
|
|
369
|
+
callbacks?: MotionCallbacks,
|
|
370
|
+
state?: MotionState | null
|
|
371
|
+
): MotionValueResult;
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Pulse between min and max values.
|
|
375
|
+
* @param min - Minimum value
|
|
376
|
+
* @param max - Maximum value
|
|
377
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
378
|
+
* @param duration - Duration of one pulse (seconds)
|
|
379
|
+
* @param loop - Whether to loop
|
|
380
|
+
* @param yoyo - Use separate easing for return
|
|
381
|
+
* @param easingFn - Optional easing function
|
|
382
|
+
* @param callbacks - Optional callbacks
|
|
383
|
+
*/
|
|
384
|
+
static pulse(
|
|
385
|
+
min: number,
|
|
386
|
+
max: number,
|
|
387
|
+
elapsedTime: number,
|
|
388
|
+
duration: number,
|
|
389
|
+
loop?: boolean,
|
|
390
|
+
yoyo?: boolean,
|
|
391
|
+
easingFn?: EasingFunction | null,
|
|
392
|
+
callbacks?: MotionCallbacks
|
|
393
|
+
): MotionValueResult;
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Spiral motion animation.
|
|
397
|
+
* @param centerX - Spiral center X
|
|
398
|
+
* @param centerY - Spiral center Y
|
|
399
|
+
* @param startRadius - Starting radius
|
|
400
|
+
* @param endRadius - Ending radius
|
|
401
|
+
* @param startAngle - Starting angle (radians)
|
|
402
|
+
* @param revolutions - Number of revolutions
|
|
403
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
404
|
+
* @param duration - Duration (seconds)
|
|
405
|
+
* @param loop - Whether to loop
|
|
406
|
+
* @param yoyo - Whether to reverse
|
|
407
|
+
* @param easingFn - Optional easing function
|
|
408
|
+
* @param callbacks - Optional callbacks
|
|
409
|
+
* @param state - Internal state
|
|
410
|
+
*/
|
|
411
|
+
static spiral(
|
|
412
|
+
centerX: number,
|
|
413
|
+
centerY: number,
|
|
414
|
+
startRadius: number,
|
|
415
|
+
endRadius: number,
|
|
416
|
+
startAngle: number,
|
|
417
|
+
revolutions: number,
|
|
418
|
+
elapsedTime: number,
|
|
419
|
+
duration: number,
|
|
420
|
+
loop?: boolean,
|
|
421
|
+
yoyo?: boolean,
|
|
422
|
+
easingFn?: EasingFunction | null,
|
|
423
|
+
callbacks?: MotionCallbacks,
|
|
424
|
+
state?: MotionState | null
|
|
425
|
+
): MotionPositionResult;
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Orbital motion (circular or elliptical).
|
|
429
|
+
* @param centerX - Orbit center X
|
|
430
|
+
* @param centerY - Orbit center Y
|
|
431
|
+
* @param radiusX - Horizontal radius
|
|
432
|
+
* @param radiusY - Vertical radius
|
|
433
|
+
* @param startAngle - Starting angle (radians)
|
|
434
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
435
|
+
* @param duration - Duration of one orbit (seconds)
|
|
436
|
+
* @param loop - Whether to loop (default: true)
|
|
437
|
+
* @param clockwise - Direction (default: true)
|
|
438
|
+
* @param easingFn - Optional easing function
|
|
439
|
+
* @param callbacks - Optional callbacks
|
|
440
|
+
* @param state - Internal state
|
|
441
|
+
*/
|
|
442
|
+
static orbit(
|
|
443
|
+
centerX: number,
|
|
444
|
+
centerY: number,
|
|
445
|
+
radiusX: number,
|
|
446
|
+
radiusY: number,
|
|
447
|
+
startAngle: number,
|
|
448
|
+
elapsedTime: number,
|
|
449
|
+
duration: number,
|
|
450
|
+
loop?: boolean,
|
|
451
|
+
clockwise?: boolean,
|
|
452
|
+
easingFn?: EasingFunction | null,
|
|
453
|
+
callbacks?: MotionCallbacks,
|
|
454
|
+
state?: MotionState | null
|
|
455
|
+
): MotionPositionResult;
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Bezier curve motion.
|
|
459
|
+
* @param p0 - Start point [x, y]
|
|
460
|
+
* @param p1 - Control point 1 [x, y]
|
|
461
|
+
* @param p2 - Control point 2 [x, y]
|
|
462
|
+
* @param p3 - End point [x, y]
|
|
463
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
464
|
+
* @param duration - Duration (seconds)
|
|
465
|
+
* @param loop - Whether to loop
|
|
466
|
+
* @param yoyo - Whether to reverse
|
|
467
|
+
* @param easingFn - Optional easing function
|
|
468
|
+
* @param callbacks - Optional callbacks
|
|
469
|
+
* @param state - Internal state
|
|
470
|
+
*/
|
|
471
|
+
static bezier(
|
|
472
|
+
p0: [number, number],
|
|
473
|
+
p1: [number, number],
|
|
474
|
+
p2: [number, number],
|
|
475
|
+
p3: [number, number],
|
|
476
|
+
elapsedTime: number,
|
|
477
|
+
duration: number,
|
|
478
|
+
loop?: boolean,
|
|
479
|
+
yoyo?: boolean,
|
|
480
|
+
easingFn?: EasingFunction | null,
|
|
481
|
+
callbacks?: MotionCallbacks,
|
|
482
|
+
state?: MotionState | null
|
|
483
|
+
): MotionPositionResult;
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Bounce animation with diminishing height.
|
|
487
|
+
* @param maxHeight - Maximum height (negative y)
|
|
488
|
+
* @param groundY - Ground position
|
|
489
|
+
* @param bounceCount - Number of bounces
|
|
490
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
491
|
+
* @param duration - Duration (seconds)
|
|
492
|
+
* @param loop - Whether to loop
|
|
493
|
+
* @param easingFn - Optional easing function
|
|
494
|
+
* @param callbacks - Optional callbacks
|
|
495
|
+
* @param state - Internal state
|
|
496
|
+
*/
|
|
497
|
+
static bounce(
|
|
498
|
+
maxHeight: number,
|
|
499
|
+
groundY: number,
|
|
500
|
+
bounceCount: number,
|
|
501
|
+
elapsedTime: number,
|
|
502
|
+
duration: number,
|
|
503
|
+
loop?: boolean,
|
|
504
|
+
easingFn?: EasingFunction | null,
|
|
505
|
+
callbacks?: MotionCallbacks,
|
|
506
|
+
state?: MotionState | null
|
|
507
|
+
): MotionValueResult;
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Shake animation with decay.
|
|
511
|
+
* @param centerX - Center X
|
|
512
|
+
* @param centerY - Center Y
|
|
513
|
+
* @param maxOffsetX - Maximum X offset
|
|
514
|
+
* @param maxOffsetY - Maximum Y offset
|
|
515
|
+
* @param frequency - Shake frequency
|
|
516
|
+
* @param decay - Decay rate (0-1)
|
|
517
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
518
|
+
* @param duration - Duration (seconds)
|
|
519
|
+
* @param loop - Whether to loop
|
|
520
|
+
* @param easingFn - Optional easing function
|
|
521
|
+
* @param callbacks - Optional callbacks
|
|
522
|
+
* @param state - Internal state
|
|
523
|
+
*/
|
|
524
|
+
static shake(
|
|
525
|
+
centerX: number,
|
|
526
|
+
centerY: number,
|
|
527
|
+
maxOffsetX: number,
|
|
528
|
+
maxOffsetY: number,
|
|
529
|
+
frequency: number,
|
|
530
|
+
decay: number,
|
|
531
|
+
elapsedTime: number,
|
|
532
|
+
duration: number,
|
|
533
|
+
loop?: boolean,
|
|
534
|
+
easingFn?: EasingFunction | null,
|
|
535
|
+
callbacks?: MotionCallbacks,
|
|
536
|
+
state?: MotionState | null
|
|
537
|
+
): MotionPositionResult;
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Follow a path of points.
|
|
541
|
+
* @param points - Array of points [[x,y], ...]
|
|
542
|
+
* @param closed - Whether path is closed
|
|
543
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
544
|
+
* @param duration - Duration (seconds)
|
|
545
|
+
* @param loop - Whether to loop
|
|
546
|
+
* @param easingFn - Optional easing function
|
|
547
|
+
* @param callbacks - Optional callbacks
|
|
548
|
+
* @param state - Internal state
|
|
549
|
+
*/
|
|
550
|
+
static follow(
|
|
551
|
+
points: [number, number][],
|
|
552
|
+
closed: boolean,
|
|
553
|
+
elapsedTime: number,
|
|
554
|
+
duration: number,
|
|
555
|
+
loop?: boolean,
|
|
556
|
+
easingFn?: EasingFunction | null,
|
|
557
|
+
callbacks?: MotionCallbacks,
|
|
558
|
+
state?: MotionState | null
|
|
559
|
+
): MotionPositionResult;
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Waypoint patrol with waiting periods.
|
|
563
|
+
* @param target - Object with x,y (for reference)
|
|
564
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
565
|
+
* @param waypoints - Array of waypoints [[x,y], ...]
|
|
566
|
+
* @param speed - Movement speed (units/second)
|
|
567
|
+
* @param waitTime - Wait time at each waypoint (seconds)
|
|
568
|
+
* @param loop - Whether to loop
|
|
569
|
+
* @param callbacks - Optional callbacks
|
|
570
|
+
* @param state - Internal state
|
|
571
|
+
*/
|
|
572
|
+
static waypoint(
|
|
573
|
+
target: PositionTarget,
|
|
574
|
+
elapsedTime: number,
|
|
575
|
+
waypoints: [number, number][],
|
|
576
|
+
speed: number,
|
|
577
|
+
waitTime: number,
|
|
578
|
+
loop?: boolean,
|
|
579
|
+
callbacks?: MotionCallbacks,
|
|
580
|
+
state?: MotionState | null
|
|
581
|
+
): WaypointResult;
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Random patrol within a radius.
|
|
585
|
+
* @param initialX - Center X
|
|
586
|
+
* @param initialY - Center Y
|
|
587
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
588
|
+
* @param moveTime - Time between points
|
|
589
|
+
* @param waitTime - Wait time at each point
|
|
590
|
+
* @param radius - Patrol radius
|
|
591
|
+
* @param loop - Whether to loop
|
|
592
|
+
* @param state - Internal state
|
|
593
|
+
*/
|
|
594
|
+
static patrol(
|
|
595
|
+
initialX: number,
|
|
596
|
+
initialY: number,
|
|
597
|
+
elapsedTime: number,
|
|
598
|
+
moveTime: number,
|
|
599
|
+
waitTime: number,
|
|
600
|
+
radius: number,
|
|
601
|
+
loop?: boolean,
|
|
602
|
+
state?: MotionState | null
|
|
603
|
+
): MotionPositionResult;
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Hop/jump animation.
|
|
607
|
+
* @param startX - Start X
|
|
608
|
+
* @param startY - Start Y
|
|
609
|
+
* @param endX - End X
|
|
610
|
+
* @param endY - End Y
|
|
611
|
+
* @param height - Jump height
|
|
612
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
613
|
+
* @param duration - Duration (seconds)
|
|
614
|
+
* @param loop - Whether to loop
|
|
615
|
+
* @param easingFn - Optional easing function
|
|
616
|
+
* @param callbacks - Optional callbacks
|
|
617
|
+
* @param state - Internal state
|
|
618
|
+
*/
|
|
619
|
+
static hop(
|
|
620
|
+
startX: number,
|
|
621
|
+
startY: number,
|
|
622
|
+
endX: number,
|
|
623
|
+
endY: number,
|
|
624
|
+
height: number,
|
|
625
|
+
elapsedTime: number,
|
|
626
|
+
duration: number,
|
|
627
|
+
loop?: boolean,
|
|
628
|
+
easingFn?: EasingFunction | null,
|
|
629
|
+
callbacks?: MotionCallbacks,
|
|
630
|
+
state?: MotionState | null
|
|
631
|
+
): MotionPositionResult;
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Group multiple animations together (run in parallel).
|
|
635
|
+
* @param animations - Array of Motion method references
|
|
636
|
+
* @param animationArgs - Array of argument arrays for each animation
|
|
637
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
638
|
+
* @param duration - Duration (seconds)
|
|
639
|
+
* @param loop - Whether to loop
|
|
640
|
+
* @param easingFn - Optional easing function for all
|
|
641
|
+
* @param callbacks - Optional callbacks
|
|
642
|
+
* @param state - Internal state
|
|
643
|
+
*/
|
|
644
|
+
static group(
|
|
645
|
+
animations: Function[],
|
|
646
|
+
animationArgs: any[][],
|
|
647
|
+
elapsedTime: number,
|
|
648
|
+
duration: number,
|
|
649
|
+
loop?: boolean,
|
|
650
|
+
easingFn?: EasingFunction | null,
|
|
651
|
+
callbacks?: MotionCallbacks,
|
|
652
|
+
state?: MotionState | null
|
|
653
|
+
): MotionResult & { [key: string]: MotionResult };
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Sequence multiple animations (run one after another).
|
|
657
|
+
* @param animations - Array of Motion method references
|
|
658
|
+
* @param animationArgs - Array of argument arrays for each animation
|
|
659
|
+
* @param durations - Array of durations for each animation
|
|
660
|
+
* @param elapsedTime - Total elapsed time (seconds)
|
|
661
|
+
* @param loop - Whether to loop the sequence
|
|
662
|
+
* @param easingFns - Optional array of easing functions
|
|
663
|
+
* @param callbacks - Optional callbacks for entire sequence
|
|
664
|
+
* @param animCallbacks - Optional callbacks for individual animations
|
|
665
|
+
* @param state - Internal state
|
|
666
|
+
*/
|
|
667
|
+
static sequence(
|
|
668
|
+
animations: Function[],
|
|
669
|
+
animationArgs: any[][],
|
|
670
|
+
durations: number[],
|
|
671
|
+
elapsedTime: number,
|
|
672
|
+
loop?: boolean,
|
|
673
|
+
easingFns?: (EasingFunction | null)[] | null,
|
|
674
|
+
callbacks?: MotionCallbacks,
|
|
675
|
+
animCallbacks?: MotionCallbacks[] | null,
|
|
676
|
+
state?: MotionState | null
|
|
677
|
+
): MotionResult;
|
|
678
|
+
}
|