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; }
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; }