Beispiel #1
0
bool Agent::collideWithLevel(const std::vector<std::string>& levelData) {
	std::vector<glm::vec2> collideTilePositions;

	// Check four corners
	checkTilePosition(levelData, collideTilePositions, _position.x, _position.y);
	checkTilePosition(levelData, collideTilePositions, _position.x + AGENT_SIZE, _position.y);
	checkTilePosition(levelData, collideTilePositions, _position.x, _position.y + AGENT_SIZE);
	checkTilePosition(levelData, collideTilePositions, _position.x + AGENT_SIZE, _position.y + AGENT_SIZE);

	if (collideTilePositions.size() == 0) { return false; }

	for (int i = 0; i < collideTilePositions.size(); i++) {
		collideWithTile(collideTilePositions[i]);
	}
	return true;
}
Beispiel #2
0
bool Agent::collideWithLevel(const std::vector<std::string>& levelData){
	std::vector<glm::vec2> collideTilePositions;

	//Check the four corners
	//First corner
	checkTilePosition(levelData,
		collideTilePositions,
		m_position.x,
		m_position.y);

	//Second corner
	checkTilePosition(levelData,
		collideTilePositions,
		m_position.x + AGENT_WIDTH,
		m_position.y);

	//Third corner
	checkTilePosition(levelData,
		collideTilePositions,
		m_position.x,
		m_position.y + AGENT_WIDTH);

	//Fourth corner
	checkTilePosition(levelData,
		collideTilePositions,
		m_position.x + AGENT_WIDTH,
		m_position.y + AGENT_WIDTH);

	if (collideTilePositions.size() == 0)
	{
		return false;
	}

	//Do the collision
	for (int i = 0; i < collideTilePositions.size(); i++)
	{
		collideWithTile(collideTilePositions[i]);
	}

	return true;
}