mirror of
https://github.com/HowestDAE/dae16-VerhulstBram.git
synced 2025-12-16 12:41:48 +01:00
Collision reworked into a Collision Namespace
Added basic player (Needs work)
This commit is contained in:
44
Engine/Collision.h
Normal file
44
Engine/Collision.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#pragma once
|
||||
#include <array>
|
||||
#include <cmath>
|
||||
|
||||
#include "structs.h"
|
||||
#include "utils.h"
|
||||
|
||||
class WorldTile;
|
||||
|
||||
namespace Collision
|
||||
{
|
||||
|
||||
struct CollisionRect
|
||||
{
|
||||
|
||||
Point2f pos;
|
||||
Point2f size;
|
||||
Point2f vel;
|
||||
|
||||
std::array<Collision::CollisionRect*, 4> contact;
|
||||
};
|
||||
|
||||
struct TileCollisionRect : public CollisionRect
|
||||
{
|
||||
TileCollisionRect(const Point2f& pos, const Point2f& size, WorldTile* tile)
|
||||
: CollisionRect{ pos, size, Point2f{ 0, 0 }, { nullptr, nullptr, nullptr, nullptr } }
|
||||
, tile{ tile }
|
||||
{}
|
||||
WorldTile* tile;
|
||||
bool Contains(Point2f point2_f) {
|
||||
return utils::IsPointInRect(point2_f, Rectf{ pos.x, pos.y, size.x, size.y });
|
||||
}
|
||||
};
|
||||
|
||||
bool PointVsRect(const Point2f p, const CollisionRect& r);
|
||||
|
||||
bool RectVsRect(const CollisionRect& r1, const CollisionRect r2);
|
||||
|
||||
bool RayVsRect(const Point2f& rayOrigin, const Point2f& rayDirection, const Collision::CollisionRect target, Point2f& contactPoint, Point2f& contactNormal, float& t_HitNear);
|
||||
|
||||
bool DynamicRectVsRect(const CollisionRect& dynamicRectangle, float ElapsedTime, const CollisionRect& staticRectangle, Point2f& contactPoint, Point2f& contactNormal, float& contactTime);
|
||||
|
||||
bool ResolveDynamicRectVsRect(CollisionRect& dynamicRectangle, float ElapsedTime, CollisionRect* staticRectangle);
|
||||
}
|
||||
Reference in New Issue
Block a user