]> git.lizzy.rs Git - minetest.git/blobdiff - src/collision.cpp
Settings: Fix game minetest.conf flags overriding defaults (#9404)
[minetest.git] / src / collision.cpp
index e911e6f8ce772cc00a695e0cba1631513469934a..a4c5454aeb601a63ecf03e9edca5e42508999bfe 100644 (file)
@@ -220,8 +220,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
 {
        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()", SPT_AVG);
 
        collisionMoveResult result;
 
@@ -255,7 +255,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
        std::vector<NearbyCollisionInfo> cinfo;
        {
        //TimeTaker tt2("collisionMoveSimple collect boxes");
-       ScopeProfiler sp2(g_profiler, "collisionMoveSimple collect boxes avg", SPT_AVG);
+       ScopeProfiler sp2(g_profiler, "collisionMoveSimple(): collect boxes", SPT_AVG);
 
        v3f newpos_f = *pos_f + *speed_f * dtime;
        v3f minpos_f(
@@ -351,9 +351,6 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
 
        if(collideWithObjects)
        {
-               ScopeProfiler sp2(g_profiler, "collisionMoveSimple objects avg", SPT_AVG);
-               //TimeTaker tt3("collisionMoveSimple collect object boxes");
-
                /* add object boxes to cinfo */
 
                std::vector<ActiveObject*> objects;
@@ -418,19 +415,16 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef,
                Collision uncertainty radius
                Make it a bit larger than the maximum distance of movement
        */
-       f32 d = pos_max_d * 1.1f;
-       // A fairly large value in here makes moving smoother
-       //f32 d = 0.15*BS;
+       //f32 d = pos_max_d * 1.1f;
 
-       // This should always apply, otherwise there are glitches
-       assert(d > pos_max_d);  // invariant
+
+       f32 d = 0.3f;   // Temporary fix, any nonzero d causes collision glitches, the more the greater it is.
+       // ultimately it has to be determined if any uncertainty is involved, and if it is, eliminated
+       // and d & pos_max_d params removed from function calls.
 
        int loopcount = 0;
 
        while(dtime > BS * 1e-10f) {
-               //TimeTaker tt3("collisionMoveSimple dtime loop");
-               ScopeProfiler sp2(g_profiler, "collisionMoveSimple dtime loop avg", SPT_AVG);
-
                // Avoid infinite loop
                loopcount++;
                if (loopcount >= 100) {