It is in this function (collision detection), when I introduced my addEntity(...) on row 61.
I started to randomly get the error in the title, and I don't know why! It works sometimes and won't work others. Anyone has any idea how to do this correctly?
void EntityManager::collitionDetection() { double r1 = 0, r2 = 0, x1 = 0, x2 = 0, y1 = 0, y2 = 0, xDelta = 0, yDelta = 0, d = 0; bool hit = false; if(vecEntity.size() > 1) { for(std::vector<Entity*>::iterator i = vecEntity.begin(); i != vecEntity.end(); i++) { r1 = vecEntity[0]->getRadie(); x1 = vecEntity[0]->getX(); y1 = vecEntity[0]->getY(); x2 = (*i)->getX(); y2 = (*i)->getY(); r2 = (*i)->getRadie(); xDelta = (x1 - x2); yDelta = (y1 - y2); if(sqrt(pow(xDelta,2) + pow(yDelta, 2)) <= (r1+r2)) { if(dynamic_cast<Enemy*>(*i)) { (*i)->setAlive(false); //addEntity(new Explosion(((*i)->getX()), (*i)->getY(), true)); dynamic_cast<Player*>(vecEntity[0])->updateLife(); } } } } for(std::vector<Entity*>::iterator i = vecEntity.begin(); i != vecEntity.end(); i++) { for(std::vector<Entity*>::iterator j = vecEntity.begin(); j != vecEntity.end(); j++) { if(i != j) { r1 = (*i)->getRadie(); x1 = (*i)->getX(); y1 = (*i)->getY(); r2 = (*j)->getRadie(); x2 = (*j)->getX(); y2 = (*j)->getY(); xDelta = x1-x2; yDelta = y1-y2; if(sqrt(pow(xDelta,2) + pow(yDelta, 2)) <= (r1+r2)) { if(dynamic_cast<Enemy*>(*j) && dynamic_cast<Bullet*>(*i)) { if(dynamic_cast<Bullet*>(*i)->isFriendly()) { (*j)->setAlive(false); (*i)->setAlive(false); if(dynamic_cast<Enemy*>(*j)) { dynamic_cast<Player*>(vecEntity[0])->updateScore(); addEntity(new Explosion(((*j)->getX()), (*j)->getY(), true)); } } /*if(!(*i)->checkStatus()) { addEntity(new Explosion(((*i)->getX()), (*i)->getY())); }*/ } if(dynamic_cast<Player*>(*j) && (dynamic_cast<Bullet*>(*i)->isFriendly() == false)) { dynamic_cast<Player*>(vecEntity[0])->updateLife(); (*i)->setAlive(false); } } } } for(std::vector<Entity*>::iterator i = vecEntity.begin(); i != vecEntity.end(); i++) { if(!(*i)->checkStatus()) { delete *i; i = vecEntity.erase(i); return; } } } }Here is the function addEntity
void EntityManager::addEntity(Entity *entity) { vecEntity.push_back(entity); }
This post has been edited by FrozenSnake: 03 October 2012 - 03:18 AM