Make collisionMoveSimple time overflow message written to log/show up at max once per step

This commit is contained in:
Sapier 2015-12-18 19:20:06 +01:00
parent 91bafceee6
commit 61cb4d52a6

@ -199,6 +199,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
v3f &accel_f,ActiveObject* self, v3f &accel_f,ActiveObject* self,
bool collideWithObjects) bool collideWithObjects)
{ {
static bool time_notification_done = false;
Map *map = &env->getMap(); Map *map = &env->getMap();
//TimeTaker tt("collisionMoveSimple"); //TimeTaker tt("collisionMoveSimple");
ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG); ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG);
@ -209,8 +210,14 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
Calculate new velocity Calculate new velocity
*/ */
if (dtime > 0.5) { if (dtime > 0.5) {
warningstream<<"collisionMoveSimple: maximum step interval exceeded, lost movement details!"<<std::endl; if (!time_notification_done) {
time_notification_done = true;
infostream << "collisionMoveSimple: maximum step interval exceeded,"
" lost movement details!"<<std::endl;
}
dtime = 0.5; dtime = 0.5;
} else {
time_notification_done = false;
} }
speed_f += accel_f * dtime; speed_f += accel_f * dtime;