From 9c669016d1578a5c62f932c6ccb7a2b4b1e21f0a Mon Sep 17 00:00:00 2001 From: Lars Hofhansl Date: Wed, 6 Dec 2017 12:21:46 -0800 Subject: Add an active object step time budget #6721 This can be set via the active_object_interval option. --- src/util/numeric.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/util') diff --git a/src/util/numeric.h b/src/util/numeric.h index 8ee2d585c..be3e49c56 100644 --- a/src/util/numeric.h +++ b/src/util/numeric.h @@ -230,7 +230,7 @@ inline u32 calc_parity(u32 v) u64 murmur_hash_64_ua(const void *key, int len, unsigned int seed); bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, - f32 camera_fov, f32 range, f32 *distance_ptr=NULL); + f32 camera_fov, f32 range, f32 *distance_ptr = NULL); s16 adjustDist(s16 dist, float zoom_fov); @@ -291,18 +291,24 @@ public: return value: true: action should be skipped false: action should be done + if passed, the elapsed time since this method last returned true + is written to elapsed_ptr */ - bool step(float dtime, float wanted_interval) + bool step(float dtime, float wanted_interval, float *elapsed_ptr = NULL) { m_accumulator += dtime; + if (elapsed_ptr) + *elapsed_ptr = m_accumulator - m_last_accumulator; if (m_accumulator < wanted_interval) return false; m_accumulator -= wanted_interval; + m_last_accumulator = m_accumulator; return true; } private: float m_accumulator = 0.0f; + float m_last_accumulator = 0.0f; }; -- cgit v1.2.3