added has_most_recent_timestamp, avoids invalid timestamps after reset

This commit is contained in:
Darren Ranalli 2007-08-09 19:32:29 +00:00
parent b421580c9b
commit 0680a3d796
3 changed files with 19 additions and 16 deletions

View File

@ -306,6 +306,7 @@ INLINE void SmoothMover::
set_phony_timestamp() {
double now = ClockObject::get_global_clock()->get_frame_time();
_sample._timestamp = now;
_has_most_recent_timestamp = true;
_most_recent_timestamp = now;
}
@ -324,33 +325,31 @@ set_timestamp(double timestamp) {
}
*/
_sample._timestamp = timestamp;
_has_most_recent_timestamp = true;
_most_recent_timestamp = timestamp;
record_timestamp_delay(timestamp);
}
////////////////////////////////////////////////////////////////////
// Function: SmoothMover::has_most_recent_timestamp
// Access: Published
// Description: Returns true if we have most recently recorded timestamp
////////////////////////////////////////////////////////////////////
INLINE bool SmoothMover::
has_most_recent_timestamp() const {
return _has_most_recent_timestamp;
}
////////////////////////////////////////////////////////////////////
// Function: SmoothMover::get_most_recent_timestamp
// Access: Published
// Description: Returns most recently recorded timestamp
////////////////////////////////////////////////////////////////////
INLINE double SmoothMover::
get_most_recent_timestamp() {
get_most_recent_timestamp() const {
return _most_recent_timestamp;
}
////////////////////////////////////////////////////////////////////
// Function: SmoothMover::set_most_recent_timestamp
// Access: Published
// Description: Specifies the time that the current position report
// applies. This should be called after a call to
// mark_position().
////////////////////////////////////////////////////////////////////
INLINE void SmoothMover::
set_most_recent_timestamp(double timestamp) {
_points.back()._timestamp = timestamp;
_most_recent_timestamp = timestamp;
}
////////////////////////////////////////////////////////////////////
// Function: SmoothMover::compute_smooth_position
// Access: Published

View File

@ -46,6 +46,8 @@ SmoothMover() {
_smooth_lateral_velocity = 0.0;
_smooth_rotational_velocity = 0.0;
_has_most_recent_timestamp = false;
_last_point_before = -1;
_last_point_after = -1;
@ -207,6 +209,7 @@ clear_positions(bool reset_velocity) {
_last_point_before = -1;
_last_point_after = -1;
_smooth_position_known = false;
_has_most_recent_timestamp = false;
if (reset_velocity) {
_smooth_forward_velocity = 0.0;

View File

@ -87,8 +87,8 @@ PUBLISHED:
INLINE void set_phony_timestamp();
INLINE void set_timestamp(double timestamp);
INLINE double get_most_recent_timestamp();
void set_most_recent_timestamp(double timestamp);
INLINE bool has_most_recent_timestamp() const;
INLINE double get_most_recent_timestamp() const;
void mark_position();
void clear_positions(bool reset_velocity);
@ -201,6 +201,7 @@ private:
double _smooth_lateral_velocity;
double _smooth_rotational_velocity;
bool _has_most_recent_timestamp;
double _most_recent_timestamp;
// typedef CircBuffer<SamplePoint, max_position_reports> Points;