Struct bevy_core::prelude::Timer[][src]

pub struct Timer { /* fields omitted */ }

Tracks elapsed time. Enters the finished state once duration is reached.

Non repeating timers will stop tracking and stay in the finished state until reset. Repeating timers will only be in the finished state on each tick duration is reached or exceeded, and can still be reset at any given point.

Paused timers will not have elapsed time increased.

Implementations

impl Timer[src]

pub fn new(duration: Duration, repeating: bool) -> Self[src]

Creates a new timer with a given duration.

See also Timer::from_seconds.

pub fn from_seconds(duration: f32, repeating: bool) -> Self[src]

Creates a new timer with a given duration in seconds.

Example

let mut timer = Timer::from_seconds(1.0, false);

pub fn finished(&self) -> bool[src]

Returns true if the timer has reached its duration.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
assert!(timer.finished());
timer.tick(Duration::from_secs_f32(0.5));
assert!(timer.finished());

pub fn just_finished(&self) -> bool[src]

Returns true only on the tick the timer reached its duration.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
assert!(timer.just_finished());
timer.tick(Duration::from_secs_f32(0.5));
assert!(!timer.just_finished());

pub fn elapsed(&self) -> Duration[src]

Returns the time elapsed on the timer. Guaranteed to be between 0.0 and duration. Will only equal duration when the timer is finished and non repeating.

See also Stopwatch::elapsed.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed(), Duration::from_secs_f32(0.5));

pub fn elapsed_secs(&self) -> f32[src]

Returns the time elapsed on the timer as a f32. See also Timer::elapsed.

pub fn set_elapsed(&mut self, time: Duration)[src]

Sets the elapsed time of the timer without any other considerations.

See also Stopwatch::set.

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.set_elapsed(Duration::from_secs(2));
assert_eq!(timer.elapsed(), Duration::from_secs(2));
// the timer is not finished even if the elapsed time is greater than the duration.
assert!(!timer.finished());

pub fn duration(&self) -> Duration[src]

Returns the duration of the timer.

Examples

use std::time::Duration;
let timer = Timer::new(Duration::from_secs(1), false);
assert_eq!(timer.duration(), Duration::from_secs(1));

pub fn set_duration(&mut self, duration: Duration)[src]

Sets the duration of the timer.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.5, false);
timer.set_duration(Duration::from_secs(1));
assert_eq!(timer.duration(), Duration::from_secs(1));

pub fn repeating(&self) -> bool[src]

Returns true if the timer is repeating.

Examples

let mut timer = Timer::from_seconds(1.0, true);
assert!(timer.repeating());

pub fn set_repeating(&mut self, repeating: bool)[src]

Sets whether the timer is repeating or not.

Examples

let mut timer = Timer::from_seconds(1.0, true);
timer.set_repeating(false);
assert!(!timer.repeating());

pub fn tick(&mut self, delta: Duration) -> &Self[src]

Advance the timer by delta seconds. Non repeating timer will clamp at duration. Repeating timer will wrap around.

See also Stopwatch::tick.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
let mut repeating = Timer::from_seconds(1.0, true);
timer.tick(Duration::from_secs_f32(1.5));
repeating.tick(Duration::from_secs_f32(1.5));
assert_eq!(timer.elapsed_secs(), 1.0);
assert_eq!(repeating.elapsed_secs(), 0.5);

pub fn pause(&mut self)[src]

Pauses the Timer. Disables the ticking of the timer.

See also Stopwatch::pause.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.pause();
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed_secs(), 0.0);

pub fn unpause(&mut self)[src]

Unpauses the Timer. Resumes the ticking of the timer.

See also Stopwatch::unpause().

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.pause();
timer.tick(Duration::from_secs_f32(0.5));
timer.unpause();
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed_secs(), 0.5);

pub fn paused(&self) -> bool[src]

Returns true if the timer is paused.

See also Stopwatch::paused.

Examples

let mut timer = Timer::from_seconds(1.0, false);
assert!(!timer.paused());
timer.pause();
assert!(timer.paused());
timer.unpause();
assert!(!timer.paused());

pub fn reset(&mut self)[src]

Resets the timer. the reset doesn’t affect the paused state of the timer.

See also Stopwatch::reset.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
timer.reset();
assert!(!timer.finished());
assert!(!timer.just_finished());
assert_eq!(timer.elapsed_secs(), 0.0);

pub fn percent(&self) -> f32[src]

Returns the percentage of the timer elapsed time (goes from 0.0 to 1.0).

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(2.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.percent(), 0.25);

pub fn percent_left(&self) -> f32[src]

Returns the percentage of the timer remaining time (goes from 0.0 to 1.0).

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(2.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.percent_left(), 0.75);

pub fn times_finished(&self) -> u32[src]

Returns the number of times a repeating timer finished during the last tick call.

For non repeating-timers, this method will only ever return 0 or 1.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, true);
timer.tick(Duration::from_secs_f32(6.0));
assert_eq!(timer.times_finished(), 6);
timer.tick(Duration::from_secs_f32(2.0));
assert_eq!(timer.times_finished(), 2);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.times_finished(), 0);

Trait Implementations

impl Clone for Timer[src]

impl Debug for Timer[src]

impl Default for Timer[src]

impl GetTypeRegistration for Timer[src]

impl Reflect for Timer[src]

impl Struct for Timer[src]

Auto Trait Implementations

impl RefUnwindSafe for Timer

impl Send for Timer

impl Sync for Timer

impl Unpin for Timer

impl UnwindSafe for Timer

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Component for T where
    T: 'static + Send + Sync
[src]

impl<T> Downcast for T where
    T: Any

impl<T> DowncastSync for T where
    T: Any + Send + Sync

impl<T> From<T> for T[src]

impl<T> FromWorld for T where
    T: Default
[src]

impl<S> GetField for S where
    S: Struct
[src]

impl<T> GetPath for T where
    T: Reflect
[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> TypeData for T where
    T: 'static + Send + Sync + Clone
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,