Added a (temp) collision solver for Axis-Aligned rectangles

This commit is contained in:
Bram Verhulst
2024-03-12 12:21:17 +01:00
parent e474a7815a
commit d0781db9f0
11 changed files with 252 additions and 38 deletions

View File

@@ -6,6 +6,15 @@ namespace utils
{
const float g_Pi{ 3.1415926535f };
struct MovingRectf
{
Point2f bottomLeft;
float width;
float height;
Point2f velocity;
};
#pragma region OpenGLDrawFunctionality
void SetColor( const Color4f& color );
@@ -75,6 +84,7 @@ namespace utils
bool IsOverlapping( const Circlef& c1, const Circlef& c2 );
bool IsOverlapping( const std::vector<Point2f>& vertices, const Circlef& c );
bool IsOverlapping( const Point2f* vertices, size_t nrVertices, const Circlef& c );
bool Raycast( const Point2f* vertices, const size_t nrVertices, const Point2f& rayP1, const Point2f& rayP2, HitInfo& hitInfo );
bool Raycast( const std::vector<Point2f>& vertices, const Point2f& rayP1, const Point2f& rayP2, HitInfo& hitInfo );
@@ -82,8 +92,19 @@ namespace utils
float DistPointLineSegment(const Point2f& p, const Point2f& a, const Point2f& b);
bool IsPointOnLineSegment(const Point2f& p, const Point2f& a, const Point2f& b);
bool IntersectRectLine(const Rectf& r, const Point2f& p1, const Point2f& p2, float& intersectMin, float& intersectMax);
bool IsRectInRect(const Rectf& r1, const Rectf& r2);
bool RayVsRect(const Point2f& rayOrigin, const Point2f& rayDir, const Rectf& target,
Point2f& contactPoint, Point2f& contactNormal, float& contactTime);
bool DynamicRectVsRect(const MovingRectf& in, const Rectf& target, Point2f& contactPoint, Point2f& contactNormal, float& contactTime, float dt);
float DotProduct(const Point2f& a, const Point2f& b);
int randRange(int min, int max);
#pragma endregion CollisionFunctionality
bool isKeyDown(SDL_Keycode keycode);
bool isMouseDown(int button);
}