diff --git a/server/gameserver/collider.cc b/server/gameserver/collider.cc index 15aff08..0965d2d 100644 --- a/server/gameserver/collider.cc +++ b/server/gameserver/collider.cc @@ -4,6 +4,27 @@ #include "collider.h" #include "collision.h" +bool ColliderComponent::IntersectSegment(Vector2D& p0, Vector2D& p1) +{ + switch (type) { + case CT_None: + break; + case CT_Aabb: + { + AabbCollider* a_aabb = (AabbCollider*)this; + return IntersectSegmentAabb(p0, p1, a_aabb->_min, a_aabb->_max); + } + break; + case CT_Circle: + { + CircleCollider* a_circle = (CircleCollider*)this; + return IntersectSegmentCircle(p0, p1, a_circle->pos, a_circle->rad); + } + break; + } + return false; +} + bool ColliderComponent::Intersect(ColliderComponent* b) { switch (type) { diff --git a/server/gameserver/collider.h b/server/gameserver/collider.h index 0fdf3d1..592ba9e 100644 --- a/server/gameserver/collider.h +++ b/server/gameserver/collider.h @@ -16,6 +16,7 @@ class ColliderComponent bool active = true; bool Intersect(ColliderComponent* b); + bool IntersectSegment(Vector2D& p0, Vector2D& p1); }; class AabbCollider : public ColliderComponent