void CheckCollisions() { size_t nEnems = redCones.size(); for(int enemInd = nEnems-1; enemInd>=0; enemInd--) { AABoundingBox enemBox = redCones[enemInd].GetAABB(); size_t nBulls = game.heroBullets.size(); Bullet b(redCones[enemInd].p, redCones[enemInd].v); b.pinit = redCones[enemInd].pinit; b.vinit = redCones[enemInd].vinit; for(int bullInd = nBulls-1; bullInd>=0; bullInd--) { if(game.heroBullets[bullInd].GetAABB().IntersectsWith(enemBox)) { //game.healthPCs.push_back(HealthPacket(enemBox.Center, 20)); //greenBullets.push_back(b); game.heroBullets.erase(game.heroBullets.begin() + bullInd); redCones.erase(redCones.begin() + enemInd); game.heroScore += 100; break; } } } //Check collisons with green bullets AABoundingBox heroBox(game.GetHeroPos(), Vector3(10, 10, 10)); size_t numGB = greenBullets.size(); for(int i=numGB-1; i>=0; i--) { AABoundingBox hpBox = greenBullets[i].GetAABB(); if(hpBox.IntersectsWith(heroBox)) { greenBullets.erase(greenBullets.begin() + i); game.heroHealth += 20; //game.healthPCs.erase(game.healthPCs.begin() + i); } } //Check hero collisons size_t redConesCount = redCones.size(); for(int bInd = redConesCount-1; bInd>=0; bInd--) if(redCones[bInd].GetAABB().IntersectsWith(heroBox)) { game.heroHealth = max(game.heroHealth - 20, 0); redCones.erase(redCones.begin() + bInd); if(game.heroHealth == 0) game.gameOver = true; } AdvancedBulletsWithRedCones(); //size_t greenBulletsCount = greenBullets.size(); //for( greenBulletsCount = greenBulletsCount-1; greenBulletsCount>=0; greenBulletsCount--) { // for(int bullInd = nBulls-1; bullInd>=0; bullInd--) { // AABoundingBox greenBuleetBox = greenBullets[greenBulletsCount].GetAABB(); // if(game.heroBullets[bullInd].GetAABB().IntersectsWith(greenBuleetBox)) { // //game.healthPCs.push_back(HealthPacket(enemBox.Center, 20)); // // size_t nBulls = game.heroBullets.size(); // RedCone rc(greenBullets[greenBulletsCount].P, greenBullets[greenBulletsCount].V); // rc.pinit = greenBullets[greenBulletsCount].pinit; // rc.vinit = greenBullets[greenBulletsCount].vinit; // redCones.push_back(rc); // game.heroBullets.erase(game.heroBullets.begin() + bullInd); // greenBullets.erase(greenBullets.begin() + greenBulletsCount); // game.heroScore -= 20; // break; // } // } //} }