logo
pub struct Time { /* private fields */ }
Expand description

A clock that tracks how much it has advanced (and how much real time has elapsed) since its previous update and since its creation.

Implementations

Constructs a new Time instance with a specific startup Instant.

Updates the internal time measurements.

Calling this method as part of your app will most likely result in inaccurate timekeeping, as the Time resource is ordinarily managed by the TimePlugin.

Updates time with a specified Instant.

This method is provided for use in tests. Calling this method as part of your app will most likely result in inaccurate timekeeping, as the Time resource is ordinarily managed by the TimePlugin.

Examples
#[derive(Resource)]
struct Health {
    // Health value between 0.0 and 1.0
    health_value: f32,
}

fn health_system(time: Res<Time>, mut health: ResMut<Health>) {
    // Increase health value by 0.1 per second, independent of frame rate,
    // but not beyond 1.0
    health.health_value = (health.health_value + 0.1 * time.delta_seconds()).min(1.0);
}

// Mock time in tests
fn test_health_system() {
    let mut world = World::default();
    let mut time = Time::default();
    time.update();
    world.insert_resource(time);
    world.insert_resource(Health { health_value: 0.2 });

    let mut update_stage = SystemStage::parallel();
    update_stage.add_system(health_system);

    // Simulate that 30 ms have passed
    let mut time = world.resource_mut::<Time>();
    let last_update = time.last_update().unwrap();
    time.update_with_instant(last_update + Duration::from_millis(30));

    // Run system
    update_stage.run(&mut world);

    // Check that 0.003 has been added to the health value
    let expected_health_value = 0.2 + 0.1 * 0.03;
    let actual_health_value = world.resource::<Health>().health_value;
    assert_eq!(expected_health_value, actual_health_value);
}

Returns the Instant the clock was created.

This usually represents when the app was started.

Returns the Instant when update was first called, if it exists.

This usually represents when the first app update started.

Returns the Instant when update was last called, if it exists.

This usually represents when the current app update started.

Returns how much time has advanced since the last update, as a Duration.

Returns how much time has advanced since the last update, as f32 seconds.

Returns how much time has advanced since the last update, as f64 seconds.

Returns how much time has advanced since startup, as Duration.

Returns how much time has advanced since startup, as f32 seconds.

Note: This is a monotonically increasing value. It’s precision will degrade over time. If you need an f32 but that precision loss is unacceptable, use elapsed_seconds_wrapped.

Returns how much time has advanced since startup, as f64 seconds.

Returns how much time has advanced since startup modulo the wrap_period, as Duration.

Returns how much time has advanced since startup modulo the wrap_period, as f32 seconds.

This method is intended for applications (e.g. shaders) that require an f32 value but suffer from the gradual precision loss of elapsed_seconds.

Returns how much time has advanced since startup modulo the wrap_period, as f64 seconds.

Returns how much real time has elapsed since the last update, as a Duration.

Returns how much real time has elapsed since the last update, as f32 seconds.

Returns how much real time has elapsed since the last update, as f64 seconds.

Returns how much real time has elapsed since startup, as Duration.

Returns how much real time has elapsed since startup, as f32 seconds.

Note: This is a monotonically increasing value. It’s precision will degrade over time. If you need an f32 but that precision loss is unacceptable, use raw_elapsed_seconds_wrapped.

Returns how much real time has elapsed since startup, as f64 seconds.

Returns how much real time has elapsed since startup modulo the wrap_period, as Duration.

Returns how much real time has elapsed since startup modulo the wrap_period, as f32 seconds.

This method is intended for applications (e.g. shaders) that require an f32 value but suffer from the gradual precision loss of raw_elapsed_seconds.

Returns how much real time has elapsed since startup modulo the wrap_period, as f64 seconds.

Returns the modulus used to calculate elapsed_wrapped and raw_elapsed_wrapped.

Note: The default modulus is one hour.

Sets the modulus used to calculate elapsed_wrapped and raw_elapsed_wrapped.

Note: This will not take effect until the next update.

Panics

Panics if wrap_period is a zero-length duration.

Returns the speed the clock advances relative to your system clock, as f32. This is known as “time scaling” or “time dilation” in other engines.

Note: This function will return zero when time is paused.

Returns the speed the clock advances relative to your system clock, as f64. This is known as “time scaling” or “time dilation” in other engines.

Note: This function will return zero when time is paused.

Sets the speed the clock advances relative to your system clock, given as an f32.

For example, setting this to 2.0 will make the clock advance twice as fast as your system clock.

Note: This does not affect the raw_* measurements.

Panics

Panics if ratio is negative or not finite.

Sets the speed the clock advances relative to your system clock, given as an f64.

For example, setting this to 2.0 will make the clock advance twice as fast as your system clock.

Note: This does not affect the raw_* measurements.

Panics

Panics if ratio is negative or not finite.

Stops the clock, preventing it from advancing until resumed.

Note: This does affect the raw_* measurements.

Resumes the clock if paused.

Returns true if the clock is currently paused.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Constructs a concrete instance of Self from a reflected value.
Returns the type name of the underlying type.
Returns the TypeInfo of the underlying type. Read more
Returns the value as a Box<dyn Any>.
Returns the value as a &dyn Any.
Returns the value as a &mut dyn Any.
Casts this type to a boxed reflected value.
Casts this type to a reflected value.
Casts this type to a mutable reflected value.
Clones the value as a Reflect trait object. Read more
Performs a type-checked assignment of a reflected value to this value. Read more
Applies a reflected value to this value. Read more
Returns an enumeration of “kinds” of type. Read more
Returns a mutable enumeration of “kinds” of type. Read more
Returns an owned enumeration of “kinds” of type. Read more
Returns a “partial equality” comparison result. Read more
Returns a hash of the value (which includes the type). Read more
Debug formatter for the value. Read more
Returns a serializable version of the value. Read more
Returns a reference to the value of the field named name as a &dyn Reflect. Read more
Returns a mutable reference to the value of the field named name as a &mut dyn Reflect. Read more
Returns a reference to the value of the field with index index as a &dyn Reflect. Read more
Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect. Read more
Returns the name of the field with index index.
Returns the number of fields in the struct.
Returns an iterator over the values of the reflectable fields for this struct.
Clones the struct into a DynamicStruct.
Returns the compile-time info for the underlying type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more
Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Returns the argument unchanged.

Creates Self using data from the given World
Returns a reference to the value of the field named name, downcast to T. Read more
Returns a mutable reference to the value of the field named name, downcast to T. Read more
Returns a reference to the value specified by path. Read more
Returns a mutable reference to the value specified by path. Read more
Returns a statically typed reference to the value specified by path.
Returns a statically typed mutable reference to the value specified by path. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more