summaryrefslogtreecommitdiff
path: root/src/util/numeric.h
diff options
context:
space:
mode:
authorLars Hofhansl <larsh@apache.org>2017-12-06 12:21:46 -0800
committerLars Hofhansl <larsh@apache.org>2017-12-06 12:21:54 -0800
commit9c669016d1578a5c62f932c6ccb7a2b4b1e21f0a (patch)
treef241b088f72e4477d42556c4440432482339b590 /src/util/numeric.h
parente049405fdc688a4d619f3ae88008bbe5ee85b569 (diff)
downloadminetest-9c669016d1578a5c62f932c6ccb7a2b4b1e21f0a.tar.gz
minetest-9c669016d1578a5c62f932c6ccb7a2b4b1e21f0a.tar.bz2
minetest-9c669016d1578a5c62f932c6ccb7a2b4b1e21f0a.zip
Add an active object step time budget #6721
This can be set via the active_object_interval option.
Diffstat (limited to 'src/util/numeric.h')
-rw-r--r--src/util/numeric.h10
1 files changed, 8 insertions, 2 deletions
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;
};