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
1 changed files with 10 additions and 3 deletions

View File

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