Esempio n. 1
0
bool check_collision(SDL_Rect* rect, Line line) {
        double left, right, top, bottom;
        left = rect->x;
	right = rect->x + rect->w;
	top = rect->y;
	bottom = rect->y + rect->h;

        bool has_collision = false;

        Line side = {left, top, right, top};
        has_collision |= check_collision_line(line, side);
        side = {right, top, right, bottom};
        has_collision |= check_collision_line(line, side);
        side = {left, bottom, right, bottom};
        has_collision |= check_collision_line(line, side);
        side = {left, top, left, bottom};
        has_collision |= check_collision_line(line, side);

        return has_collision;
}
Esempio n. 2
0
/*
* check_collision() - Return whether the given rectangle and given line intersect
* @rect: the rectangle to operate on
* @line: the line to operate on
*/
bool check_collision(const SDL_Rect& rect, const Line& line) {
	// Define the boundaries for the given rectangle
	double left = rect.x;
	double right = rect.x + rect.w;
	double top = rect.y;
	double bottom = rect.y + rect.h;

	bool has_collision = false; // Define whether the tests show a collision

	// Check the top border
	Line side = {left, top, right, top};
	has_collision |= check_collision_line(line, side);
	// Check the right border
	side = {right, top, right, bottom};
	has_collision |= check_collision_line(line, side);
	// Check the bottom border
	side = {left, bottom, right, bottom};
	has_collision |= check_collision_line(line, side);
	// Check the left border
	side = {left, top, left, bottom};
	has_collision |= check_collision_line(line, side);

	return has_collision; // Return whether the tested lines collide
}