Made Time::time_since_startup return from last tick. (#3264)
Also added unit tests for it. # Objective - Fixes #3259 ## Solution - As discussed in #3259 Co-authored-by: Alex Helfet <alex.helfet@gmail.com>
This commit is contained in:
		
							parent
							
								
									a636145d90
								
							
						
					
					
						commit
						5e516ab398
					
				@ -9,6 +9,7 @@ pub struct Time {
 | 
				
			|||||||
    delta_seconds_f64: f64,
 | 
					    delta_seconds_f64: f64,
 | 
				
			||||||
    delta_seconds: f32,
 | 
					    delta_seconds: f32,
 | 
				
			||||||
    seconds_since_startup: f64,
 | 
					    seconds_since_startup: f64,
 | 
				
			||||||
 | 
					    time_since_startup: Duration,
 | 
				
			||||||
    startup: Instant,
 | 
					    startup: Instant,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -20,6 +21,7 @@ impl Default for Time {
 | 
				
			|||||||
            startup: Instant::now(),
 | 
					            startup: Instant::now(),
 | 
				
			||||||
            delta_seconds_f64: 0.0,
 | 
					            delta_seconds_f64: 0.0,
 | 
				
			||||||
            seconds_since_startup: 0.0,
 | 
					            seconds_since_startup: 0.0,
 | 
				
			||||||
 | 
					            time_since_startup: Duration::from_secs(0),
 | 
				
			||||||
            delta_seconds: 0.0,
 | 
					            delta_seconds: 0.0,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -38,8 +40,8 @@ impl Time {
 | 
				
			|||||||
            self.delta_seconds = self.delta.as_secs_f32();
 | 
					            self.delta_seconds = self.delta.as_secs_f32();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let duration_since_startup = instant - self.startup;
 | 
					        self.time_since_startup = instant - self.startup;
 | 
				
			||||||
        self.seconds_since_startup = duration_since_startup.as_secs_f64();
 | 
					        self.seconds_since_startup = self.time_since_startup.as_secs_f64();
 | 
				
			||||||
        self.last_update = Some(instant);
 | 
					        self.last_update = Some(instant);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -61,7 +63,7 @@ impl Time {
 | 
				
			|||||||
        self.delta_seconds_f64
 | 
					        self.delta_seconds_f64
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// The time since startup in seconds
 | 
					    /// The time from startup to the last update in seconds
 | 
				
			||||||
    #[inline]
 | 
					    #[inline]
 | 
				
			||||||
    pub fn seconds_since_startup(&self) -> f64 {
 | 
					    pub fn seconds_since_startup(&self) -> f64 {
 | 
				
			||||||
        self.seconds_since_startup
 | 
					        self.seconds_since_startup
 | 
				
			||||||
@ -79,8 +81,10 @@ impl Time {
 | 
				
			|||||||
        self.last_update
 | 
					        self.last_update
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// The ['Duration'] from startup to the last update
 | 
				
			||||||
 | 
					    #[inline]
 | 
				
			||||||
    pub fn time_since_startup(&self) -> Duration {
 | 
					    pub fn time_since_startup(&self) -> Duration {
 | 
				
			||||||
        Instant::now() - self.startup
 | 
					        self.time_since_startup
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -110,6 +114,7 @@ mod tests {
 | 
				
			|||||||
        assert_eq!(time.startup(), start_instant);
 | 
					        assert_eq!(time.startup(), start_instant);
 | 
				
			||||||
        assert_eq!(time.delta_seconds_f64(), 0.0);
 | 
					        assert_eq!(time.delta_seconds_f64(), 0.0);
 | 
				
			||||||
        assert_eq!(time.seconds_since_startup(), 0.0);
 | 
					        assert_eq!(time.seconds_since_startup(), 0.0);
 | 
				
			||||||
 | 
					        assert_eq!(time.time_since_startup(), Duration::from_secs(0));
 | 
				
			||||||
        assert_eq!(time.delta_seconds(), 0.0);
 | 
					        assert_eq!(time.delta_seconds(), 0.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Update `time` and check results
 | 
					        // Update `time` and check results
 | 
				
			||||||
@ -125,6 +130,10 @@ mod tests {
 | 
				
			|||||||
            time.seconds_since_startup(),
 | 
					            time.seconds_since_startup(),
 | 
				
			||||||
            (first_update_instant - start_instant).as_secs_f64()
 | 
					            (first_update_instant - start_instant).as_secs_f64()
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            time.time_since_startup(),
 | 
				
			||||||
 | 
					            (first_update_instant - start_instant)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
        assert_eq!(time.delta_seconds, 0.0);
 | 
					        assert_eq!(time.delta_seconds, 0.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Update `time` again and check results
 | 
					        // Update `time` again and check results
 | 
				
			||||||
@ -142,6 +151,10 @@ mod tests {
 | 
				
			|||||||
            time.seconds_since_startup(),
 | 
					            time.seconds_since_startup(),
 | 
				
			||||||
            (second_update_instant - start_instant).as_secs_f64()
 | 
					            (second_update_instant - start_instant).as_secs_f64()
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            time.time_since_startup(),
 | 
				
			||||||
 | 
					            (second_update_instant - start_instant)
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
        assert_eq!(time.delta_seconds(), time.delta().as_secs_f32());
 | 
					        assert_eq!(time.delta_seconds(), time.delta().as_secs_f32());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user