1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Beat time, clock time, note scroll position and conversion between them through event tracks.
//!
//! The main values are:
//! - [`BeatTime`], which is musical time measured in beats
//! - [`ClockTime`], which is real clock time measured in seconds
//! - [`ScrollPosition`], which is note position in the scrolling timeline of a typical vertical
//! scrolling rhythm game.
//!
//! Converting between [`BeatTime`] and [`ClockTime`] requires knowing the [`Tempo`] of the song at
//! all point in time, which can be defined by a [`TempoTrack`]. Tempo may be eased by all
//! interpolations provided by [`crate::Easing`]
//!
//! Converting between [`ClockTime`] and [`ScrollPosition`] requires knowing the scroll speed at
//! all point in time, which can be defined by a [`ScrollSpeedTrack`]. Likewise, scroll speed may
//! be eased by all interpolations provided by [`crate::Easing`].
//!
//! Other than that, it also provides other constructs such as
//! - [`Time`]: union of [`BeatTime`] and [`ClockTime`].
//! - [`EventTrack`]: The generic collection of events over time, which [`ScrollSpeedTrack`] is based on.
//! - [`EventTracks`]; Collection of multiple [`EventTrack`], identified by [`TrackId`]. Useful for
//! rhythm games that allow different groups of notes to be affected by different event tracks
//! (notes with different scroll speed simultaneously, etc.)
//! - [`SameUnitTimeVec`]: used by [`TempoTrack`] to guarantee all events sharing the same unit of
//! time.
pub use ;
pub use ;
pub use ;
pub use ;