Files
songbird/src/tracks/state.rs
Kyle Simpson 94157b12bc Docs: Move to new intra-doc links, make events non-exhaustive. (#19)
Far cleaner and more reliable than the old doc-link pattern. Also allowed me to spot some event types and sources which should have been made non_exhaustive.
2020-11-24 19:52:23 +00:00

31 lines
963 B
Rust

use super::*;
/// State of an [`Track`] object, designed to be passed to event handlers
/// and retrieved remotely via [`TrackHandle::get_info`].
///
/// [`Track`]: Track
/// [`TrackHandle::get_info`]: TrackHandle::get_info
#[derive(Copy, Clone, Debug, Default, PartialEq)]
pub struct TrackState {
/// Play status (e.g., active, paused, stopped) of this track.
pub playing: PlayMode,
/// Current volume of this track.
pub volume: f32,
/// Current playback position in the source.
///
/// This is altered by loops and seeks, and represents this track's
/// position in its underlying input stream.
pub position: Duration,
/// Total playback time, increasing monotonically.
pub play_time: Duration,
/// Remaining loops on this track.
pub loops: LoopState,
}
impl TrackState {
pub(crate) fn step_frame(&mut self) {
self.position += TIMESTEP_LENGTH;
self.play_time += TIMESTEP_LENGTH;
}
}