From 05e904e0a6101bffc8b543fd673c1d06434bff2f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 5 Aug 2022 10:07:49 +0800 Subject: [PATCH] 1 --- server/gameserver/collider.cc | 14 ++++++++++++++ server/gameserver/collider.h | 11 ++++++++++- third_party/a8engine | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/server/gameserver/collider.cc b/server/gameserver/collider.cc index 8f780816..40a28c74 100644 --- a/server/gameserver/collider.cc +++ b/server/gameserver/collider.cc @@ -62,6 +62,15 @@ bool ColliderComponent::Intersect(ColliderComponent* b) b_circle->rad); } break; + case CT_Obb: + { + ObbCollider* b_obb = (ObbCollider*)b; + return a8::IntersectAabbObb(a_aabb->owner->GetPos() + a_aabb->_min, + a_aabb->owner->GetPos() + a_aabb->_max, + b_obb->owner->GetPos(), + b_obb->rotate); + } + break; } }; break; @@ -325,6 +334,11 @@ void DestoryCollider(ColliderComponent* collider) delete (CircleCollider*)collider; } break; + case CT_Obb: + { + delete (ObbCollider*)collider; + } + break; default: { delete collider; diff --git a/server/gameserver/collider.h b/server/gameserver/collider.h index 5a389f13..448e2572 100644 --- a/server/gameserver/collider.h +++ b/server/gameserver/collider.h @@ -4,7 +4,8 @@ enum ColliderType_e { CT_None, CT_Aabb, - CT_Circle + CT_Circle, + CT_Obb, }; class Entity; @@ -35,6 +36,14 @@ public: void MoveCenter(float x, float y); }; +class ObbCollider : public ColliderComponent +{ +public: + float rotate = 0; + + ObbCollider() { type = CT_Obb; }; +}; + class CircleCollider : public ColliderComponent { public: diff --git a/third_party/a8engine b/third_party/a8engine index 600bba2b..cc57f691 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit 600bba2be22c46844b15e8b728dd00bec55e51c2 +Subproject commit cc57f69109cae63a1cfda69df474ffc328c012cc