Gamedev Framework (gf) 1.2.0
A C++17 framework for 2D games
Collision.h
1/*
2 * Gamedev Framework (gf)
3 * Copyright (C) 2016-2022 Julien Bernard
4 *
5 * This software is provided 'as-is', without any express or implied
6 * warranty. In no event will the authors be held liable for any damages
7 * arising from the use of this software.
8 *
9 * Permission is granted to anyone to use this software for any purpose,
10 * including commercial applications, and to alter it and redistribute it
11 * freely, subject to the following restrictions:
12 *
13 * 1. The origin of this software must not be misrepresented; you must not
14 * claim that you wrote the original software. If you use this software
15 * in a product, an acknowledgment in the product documentation would be
16 * appreciated but is not required.
17 * 2. Altered source versions must be plainly marked as such, and must not be
18 * misrepresented as being the original software.
19 * 3. This notice may not be removed or altered from any source distribution.
20 */
21#ifndef GF_COLLISION_H
22#define GF_COLLISION_H
23
24#include "Circ.h"
25#include "CoreApi.h"
26#include "Polygon.h"
27#include "Rect.h"
28#include "Vector.h"
29
30namespace gf {
31#ifndef DOXYGEN_SHOULD_SKIP_THIS
32inline namespace v1 {
33#endif
34
35 struct Transform;
36
43 struct GF_CORE_API Penetration {
45 float depth;
46 };
47
59 GF_CORE_API bool collides(const CircF& lhs, const Transform& lhsTrans, const CircF& rhs, const Transform& rhsTrans, Penetration& p);
60
70 GF_CORE_API bool collides(const CircF& lhs, const CircF& rhs, Penetration& p);
71
81 GF_CORE_API bool collides(const RectF& lhs, const CircF& rhs, Penetration& p);
82
92 GF_CORE_API bool collides(const CircF& lhs, const RectF& rhs, Penetration& p);
93
103 GF_CORE_API bool collides(const RectF& lhs, const RectF& rhs, Penetration& p);
104
116 GF_CORE_API bool collides(const CircF& lhs, const Transform& lhsTrans, const Polygon& rhs, const Transform& rhsTrans, Penetration& p);
117
127 GF_CORE_API bool collides(const CircF& lhs, const Polygon& rhs, Penetration& p);
128
140 GF_CORE_API bool collides(const Polygon& lhs, const Transform& lhsTrans, const CircF& rhs, const Transform& rhsTrans, Penetration& p);
141
151 GF_CORE_API bool collides(const Polygon& lhs, const CircF& rhs, Penetration& p);
152
164 GF_CORE_API bool collides(const Polygon& lhs, const Transform& lhsTrans, const Polygon& rhs, const Transform& rhsTrans, Penetration& p);
165
175 GF_CORE_API bool collides(const Polygon& lhs, const Polygon& rhs, Penetration& p);
176
177#ifndef DOXYGEN_SHOULD_SKIP_THIS
178}
179#endif
180}
181
182#endif // GF_COLLISION_H
A convex polygon.
Definition: Polygon.h:47
The namespace for gf classes.
Utility class for manipulating circles.
Definition: Circ.h:61
Data about the collision between two objects.
Definition: Collision.h:43
GF_CORE_API bool collides(const CircF &lhs, const Polygon &rhs, Penetration &p)
Check if a circle collides with a polygon.
float depth
Penetration depth.
Definition: Collision.h:45
GF_CORE_API bool collides(const RectF &lhs, const CircF &rhs, Penetration &p)
Check if a rectangle collides with a circle.
GF_CORE_API bool collides(const Polygon &lhs, const Transform &lhsTrans, const CircF &rhs, const Transform &rhsTrans, Penetration &p)
Check if a polygon collides with a circle.
GF_CORE_API bool collides(const CircF &lhs, const Transform &lhsTrans, const Polygon &rhs, const Transform &rhsTrans, Penetration &p)
Check if a circle collides with a polygon.
GF_CORE_API bool collides(const CircF &lhs, const RectF &rhs, Penetration &p)
Check if a circle collides with a rectangle.
GF_CORE_API bool collides(const RectF &lhs, const RectF &rhs, Penetration &p)
Check if two rectangles collides.
GF_CORE_API bool collides(const Polygon &lhs, const Transform &lhsTrans, const Polygon &rhs, const Transform &rhsTrans, Penetration &p)
Check if two polygons collides.
GF_CORE_API bool collides(const CircF &lhs, const Transform &lhsTrans, const CircF &rhs, const Transform &rhsTrans, Penetration &p)
Check if two circles collides.
GF_CORE_API bool collides(const Polygon &lhs, const Polygon &rhs, Penetration &p)
Check if two polygons collides.
GF_CORE_API bool collides(const CircF &lhs, const CircF &rhs, Penetration &p)
Check if two circles collides.
Vector2f normal
Collision normal.
Definition: Collision.h:44
GF_CORE_API bool collides(const Polygon &lhs, const CircF &rhs, Penetration &p)
Check if a polygon collides with a circle.
A simple transformation (rotation then translation)
Definition: Transform.h:203