2019-07-10 18:02:42 +08:00

53 lines
907 B
C++

#pragma once
enum ColliderType_e
{
CT_None,
CT_Aabb,
CT_Circle,
CT_Sector
};
class Entity;
class ColliderComponent
{
public:
Entity* owner = nullptr;
ColliderType_e type = CT_None;
bool active = true;
bool Intersect(ColliderComponent* b);
bool IntersectSegment(a8::Vec2& p0, a8::Vec2& p1);
bool CalcSafePoint(ColliderComponent* b, a8::Vec2& new_pos);
};
class AabbCollider : public ColliderComponent
{
public:
a8::Vec2 _min;
a8::Vec2 _max;
AabbCollider() { type = CT_Aabb; };
};
class CircleCollider : public ColliderComponent
{
public:
a8::Vec2 pos;
float rad = 0.0f;
CircleCollider() { type = CT_Circle; };
};
class SectorCollider : public ColliderComponent
{
public:
a8::Vec2 pos;
float rad = 0.0f;
float angle = 0.0f;
SectorCollider() { type = CT_Sector; };
};
void DestoryCollider(ColliderComponent* collider);