Ejemplo n.º 1
0
	static void checkCollisionsSelf(GameEntityList& list) {
		for(GameEntityList::iterator i = list.begin(); i != list.end(); ++i) {
NEXT_I:
			GameEntityList::iterator j = i;
			for(++j; j != list.end(); ++j) {
NEXT_J:
				//if one occurs then complete the action for both
				if((*i)->didCollide(**j)){
					(*i)->onCollide(**j);
					(*j)->onCollide(**i);

					const bool deleteI = (*i)->toDelete(),
					           deleteJ = (*j)->toDelete();
					if(deleteJ) {
						delete *j;
						j = list.erase(j);
					}
					if(deleteI) {
						delete *i;
						i = list.erase(i);
						if(i == list.end()) return;
						goto NEXT_I;
					} else if(deleteJ) {
						if(j == list.end()) break;
						goto NEXT_J;
					}
				}
			}
		}
	}
Ejemplo n.º 2
0
	static void updateEntities(GameEntityList& list) {
		GameEntityList::iterator i = list.begin();
		while(i != list.end()) {
			(*i)->update();
			
			if((*i)->toDelete()) {
				delete *i;
				i = list.erase(i);
				continue;
			}

			++i;
		}
	}
Ejemplo n.º 3
0
	GameEntityList::iterator deleteSoftEntity(GameEntityList::iterator b) {
		delete *b;
		std::cerr<<"Soft entities alive: "<<wSoftEntities.size() - 1<<'\n';
		return wSoftEntities.erase(b);
	}
Ejemplo n.º 4
0
	GameEntityList::iterator deleteEntity(GameEntityList::iterator g){
		//Removes a entities to the scene
		delete *g;
		return wEntities.erase(g);
	}
Ejemplo n.º 5
0
	GameEntityList::iterator deleteWall(GameEntityList::iterator w){
		//Removes a wall to the scene
		delete *w;
		return wWalls.erase(w);
	}