Browse Source

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

Sapier 8 years ago
parent
commit
61cb4d52a6
1 changed files with 10 additions and 3 deletions
  1. 10 3
      src/collision.cpp

+ 10 - 3
src/collision.cpp

@@ -199,18 +199,25 @@ 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);
+	ScopeProfiler sp(g_profiler, "collisionMoveSimple avg", SPT_AVG);
 
 	collisionMoveResult result;
 
 	/*
 		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;