X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fcollision.cpp;h=76696e90db7deb8db0fd431f1a17b35d19c39743;hb=eda9214f81b32d9606f425e3777616e8cfc0a44f;hp=df3878f4c6c26dcdb638bbcb6cf4a179021d9727;hpb=37ca8854f7d1b16f3b561edd8bf19eaf6dd264d2;p=dragonfireclient.git diff --git a/src/collision.cpp b/src/collision.cpp index df3878f4c..76696e90d 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -32,7 +32,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "profiler.h" // float error is 10 - 9.96875 = 0.03125 -#define COLL_ZERO 0.032 +//#define COLL_ZERO 0.032 // broken unit tests +#define COLL_ZERO 0 // Helper function: // Checks for collision of a moving aabbox with a static aabbox @@ -195,7 +196,9 @@ bool wouldCollideWithCeiling( collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, f32 pos_max_d, const aabb3f &box_0, f32 stepheight, f32 dtime, - v3f &pos_f, v3f &speed_f, v3f &accel_f,ActiveObject* self) + v3f &pos_f, v3f &speed_f, + v3f &accel_f,ActiveObject* self, + bool collideWithObjects) { Map *map = &env->getMap(); //TimeTaker tt("collisionMoveSimple"); @@ -286,6 +289,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, } } // tt2 + if(collideWithObjects) { ScopeProfiler sp(g_profiler, "collisionMoveSimple objects avg", SPT_AVG); //TimeTaker tt3("collisionMoveSimple collect object boxes"); @@ -333,7 +337,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, if (object != NULL) { aabb3f object_collisionbox; - if (object->getCollisionBox(&object_collisionbox)) + if (object->getCollisionBox(&object_collisionbox) && + object->collideWithObjects()) { cboxes.push_back(object_collisionbox); is_unloaded.push_back(false);