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: f32,
 | 
			
		||||
    seconds_since_startup: f64,
 | 
			
		||||
    time_since_startup: Duration,
 | 
			
		||||
    startup: Instant,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -20,6 +21,7 @@ impl Default for Time {
 | 
			
		||||
            startup: Instant::now(),
 | 
			
		||||
            delta_seconds_f64: 0.0,
 | 
			
		||||
            seconds_since_startup: 0.0,
 | 
			
		||||
            time_since_startup: Duration::from_secs(0),
 | 
			
		||||
            delta_seconds: 0.0,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -38,8 +40,8 @@ impl Time {
 | 
			
		||||
            self.delta_seconds = self.delta.as_secs_f32();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let duration_since_startup = instant - self.startup;
 | 
			
		||||
        self.seconds_since_startup = duration_since_startup.as_secs_f64();
 | 
			
		||||
        self.time_since_startup = instant - self.startup;
 | 
			
		||||
        self.seconds_since_startup = self.time_since_startup.as_secs_f64();
 | 
			
		||||
        self.last_update = Some(instant);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -61,7 +63,7 @@ impl Time {
 | 
			
		||||
        self.delta_seconds_f64
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// The time since startup in seconds
 | 
			
		||||
    /// The time from startup to the last update in seconds
 | 
			
		||||
    #[inline]
 | 
			
		||||
    pub fn seconds_since_startup(&self) -> f64 {
 | 
			
		||||
        self.seconds_since_startup
 | 
			
		||||
@ -79,8 +81,10 @@ impl Time {
 | 
			
		||||
        self.last_update
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// The ['Duration'] from startup to the last update
 | 
			
		||||
    #[inline]
 | 
			
		||||
    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.delta_seconds_f64(), 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);
 | 
			
		||||
 | 
			
		||||
        // Update `time` and check results
 | 
			
		||||
@ -125,6 +130,10 @@ mod tests {
 | 
			
		||||
            time.seconds_since_startup(),
 | 
			
		||||
            (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);
 | 
			
		||||
 | 
			
		||||
        // Update `time` again and check results
 | 
			
		||||
@ -142,6 +151,10 @@ mod tests {
 | 
			
		||||
            time.seconds_since_startup(),
 | 
			
		||||
            (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());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user