From aae438b6c7340167adbe2e628b6add08ded63a4b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 16 Mar 2019 11:20:45 +0800 Subject: [PATCH] 1 --- server/gameserver/collider.cc | 4 ++++ server/gameserver/collider.h | 7 +++++-- server/gameserver/entity.cc | 19 ++++++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/server/gameserver/collider.cc b/server/gameserver/collider.cc index a660a84..0d17fb2 100644 --- a/server/gameserver/collider.cc +++ b/server/gameserver/collider.cc @@ -3,3 +3,7 @@ #include "entity.h" #include "collider.h" +bool ColliderComponent::Intersect(ColliderComponent* b) +{ + return false; +} diff --git a/server/gameserver/collider.h b/server/gameserver/collider.h index c968d8c..0fdf3d1 100644 --- a/server/gameserver/collider.h +++ b/server/gameserver/collider.h @@ -13,13 +13,16 @@ class ColliderComponent public: Entity* owner = nullptr; ColliderType_e type = CT_None; + bool active = true; + + bool Intersect(ColliderComponent* b); }; class AabbCollider : public ColliderComponent { public: - Vector2D center; - Vector2D size; + Vector2D _min; + Vector2D _max; }; class CircleCollider : public ColliderComponent diff --git a/server/gameserver/entity.cc b/server/gameserver/entity.cc index 7c5fb2a..181d5f4 100644 --- a/server/gameserver/entity.cc +++ b/server/gameserver/entity.cc @@ -1,12 +1,29 @@ #include "precompile.h" #include "entity.h" +#include "collider.h" Entity::~Entity() { for (auto& itr : colliders) { ColliderComponent* collider = itr; - delete collider; + switch (collider->type) { + case CT_Aabb: + { + delete (AabbCollider*)collider; + } + break; + case CT_Circle: + { + delete (CircleCollider*)collider; + } + break; + default: + { + delete collider; + } + break; + } } colliders.clear(); }