Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualNumberXaero

Posted 11 October 2012 - 01:54 PM

Where is "bulletIterator" defined? I dont see it, I see "bulletIT", is bulletIterator a typo? or another variable that shouldnt be there?
I would call the line "(*bossIT).hit();" before doing any list clean up just so that the logic of your if statement collision check is done before things start getting deleted and moved around. erase removes the current element and returns an iterator to the next, which is end() if you erase the last element.
   for (std::vector<bullet>::iterator bulletIT = aBullet.begin(); bulletIT != aBullet.end(); ) // Loops around each bullet
   {
	if((*bossIT).xPosition() + 32 >= (*bulletIT).xPosition() && (*bossIT).xPosition() <= (*bulletIT).xPosition() + 10 && // Detects Collision
		 (*bossIT).yPosition() + 32 >= (*bulletIT).yPosition() && (*bossIT).yPosition() <= (*bulletIT).yPosition() + 10)
	{
		 (*bossIT).hit();
	 bulletIT = aBullet.erase(bulletIT);   // update iterator with next if collision
	}
	else
	   ++ bulletIT;   // no collision go to next bullet
   }

#3NumberXaero

Posted 11 October 2012 - 01:53 PM

Where is "bulletIterator" defined? I dont see it, I see "bulletIT", is bulletIterator a typo? or another variable that shouldnt be there?
I would call the line "(*bossIT).hit();" before doing any list clean up just so that the logic of your if statement collision check is done before things start getting deleted and moved around. erase removes the current element and returns an iterator to the next, which is end() if you erase the last element.
   for (std::vector<bullet>::iterator bulletIT = aBullet.begin(); bulletIT != aBullet.end(); ) // Loops around each bullet
   {
    if((*bossIT).xPosition() + 32 >= (*bulletIT).xPosition() && (*bossIT).xPosition() <= (*bulletIT).xPosition() + 10 && // Detects Collision
		 (*bossIT).yPosition() + 32 >= (*bulletIT).yPosition() && (*bossIT).yPosition() <= (*bulletIT).yPosition() + 10)
    {
		 (*bossIT).hit();
	 aBullet.begin() = aBullet.erase(aBullet.begin());   // update iterator with next if collision
    }
    else
	   ++ bulletIT;   // no collision go to next bullet
   }

#2NumberXaero

Posted 11 October 2012 - 01:49 PM

Where is "bulletIterator" defined? I dont see it, I see "bulletIT", is bulletIterator a typo? or another variable that shouldnt be there?

I would call the line "(*bossIT).hit();" before doing any list clean up just so that the logic of your if statement collision check is done before things start getting deleted and moved around. erase removes the current element and returns an iterator to the next, which is end() if you erase the last element.

#1NumberXaero

Posted 11 October 2012 - 01:46 PM

Where is "bulletIterator" defined? I dont see it, I see "bulletIT", is bulletIterator a typo? or another variable that shouldnt be there?

I would call the line "(*bossIT).hit();" before doing any list clean up just so that the logic of your if statement collision check is done before things start getting deleted and moved around. erase removes the current element and returns an iterator to the next, which is end() if you erase the last element, try

(*bossIT).hit();
bulletIT = aBullet.erase(bulletIT);

PARTNERS