From d1d5820e882176a7e01b67e909875f0723cf9954 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 7 Jun 2019 21:07:17 +0800 Subject: [PATCH] add GetAabbBox GetCircleBox --- server/gameserver/entity.cc | 13 +++++++++++++ server/gameserver/entity.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/server/gameserver/entity.cc b/server/gameserver/entity.cc index e50233d..150943a 100644 --- a/server/gameserver/entity.cc +++ b/server/gameserver/entity.cc @@ -29,6 +29,19 @@ ColliderComponent* Entity::GetBoxBound() return collider; } +void Entity::GetAabbBox(AabbCollider& aabb_box) +{ + aabb_box.active = true; + aabb_box.owner = this; +} + +void Entity::GetCircleBox(CircleCollider& circle_box) +{ + circle_box.active = true; + circle_box.owner = this; + circle_box.rad = 1; +} + bool Entity::TestCollision(Entity* b) { for (auto& a_collider : colliders) { diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index 63c671b..c17de48 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -38,6 +38,8 @@ enum EntitySubType_e class Room; class Obstacle; class ColliderComponent; +class AabbCollider; +class CircleCollider; class Entity { public: @@ -64,6 +66,8 @@ class Entity virtual void FillMFObjectFull(cs::MFObjectFull* full_data) {}; virtual float GetSpeed() { return 1.0f;}; virtual ColliderComponent* GetBoxBound(); + virtual void GetAabbBox(AabbCollider& aabb_box); + virtual void GetCircleBox(CircleCollider& circle_box); bool TestCollision(Entity* b); void ClearColliders(); void FindLocationWithTarget(Entity* target);