diff --git a/trunk/fcl/src/broad_phase_collision.cpp b/trunk/fcl/src/broad_phase_collision.cpp index f600d4ee362605ad7de3d52dde57bb2dd159874e..ca3b2f8fcd1c5a882a82ebf5d38d2709a744ef8b 100644 --- a/trunk/fcl/src/broad_phase_collision.cpp +++ b/trunk/fcl/src/broad_phase_collision.cpp @@ -41,6 +41,8 @@ #include <set> #include <deque> +#include <iostream> + namespace fcl { @@ -139,7 +141,6 @@ void SSaPCollisionManager::unregisterObject(CollisionObject* obj) DummyCollisionObject dummyHigh(AABB(obj->getCachedAABB().max_)); - CollisionObject* found = NULL; std::vector<CollisionObject*>::iterator pos_start1 = objs_x.begin(); std::vector<CollisionObject*>::iterator pos_end1 = std::upper_bound(pos_start1, objs_x.end(), &dummyHigh, SortByXLow()); @@ -147,7 +148,6 @@ void SSaPCollisionManager::unregisterObject(CollisionObject* obj) { if(*pos_start1 == obj) { - found = *pos_start1; objs_x.erase(pos_start1); break; } @@ -156,6 +156,7 @@ void SSaPCollisionManager::unregisterObject(CollisionObject* obj) std::vector<CollisionObject*>::iterator pos_start2 = objs_y.begin(); std::vector<CollisionObject*>::iterator pos_end2 = std::upper_bound(pos_start2, objs_y.end(), &dummyHigh, SortByYLow()); + while(pos_start2 < pos_end2) { if(*pos_start2 == obj) @@ -168,6 +169,7 @@ void SSaPCollisionManager::unregisterObject(CollisionObject* obj) std::vector<CollisionObject*>::iterator pos_start3 = objs_z.begin(); std::vector<CollisionObject*>::iterator pos_end3 = std::upper_bound(pos_start3, objs_z.end(), &dummyHigh, SortByZLow()); + while(pos_start3 < pos_end3) { if(*pos_start3 == obj) @@ -201,6 +203,7 @@ void SSaPCollisionManager::setup() void SSaPCollisionManager::update() { + setup_ = false; setup(); }