diff --git a/server/gameserver/entity.cc b/server/gameserver/entity.cc index ce6f124..657daea 100644 --- a/server/gameserver/entity.cc +++ b/server/gameserver/entity.cc @@ -85,7 +85,6 @@ void Entity::ClearColliders() { for (auto& itr : colliders) { ColliderComponent* collider = itr; - OnRemoveCollider(collider); DestoryCollider(collider); } colliders.clear(); diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index a246fa8..89b79a0 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -39,7 +39,6 @@ class Entity virtual bool IsDead(Room* room) { return false;}; virtual long long GetDeadFrameNo(Room* room) { return 0;}; virtual void OnPreCollision(Room* room) {}; - virtual void OnRemoveCollider(ColliderComponent* collider) {}; bool TestCollision(Room* room, Entity* b); bool TestCollision(Room* room, ColliderComponent* b); bool TestCollisionEx(Room* room, const a8::Vec2& aabb_pos, AabbCollider& aabb_box); @@ -78,9 +77,11 @@ class Entity pos_.y = y; } +protected: + std::list colliders; + private: a8::Vec2 pos_; - std::list colliders; void ClearColliders(); }; diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 146ce9a..a66144c 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -18,7 +18,18 @@ RoomObstacle::RoomObstacle():Obstacle() RoomObstacle::~RoomObstacle() { - + for (auto& itr : colliders) { + ColliderComponent* collider = itr; +#ifdef DEBUG + a8::UdpLog::Instance()->Debug("OnRemoveCollider %d %d %d", + { + room->room_idx, + entity_uniid, + (long long)collider + }); +#endif + room->map_service->RemoveCollider(collider); + } } void RoomObstacle::Initialize() @@ -68,16 +79,3 @@ void RoomObstacle::RecalcSelfCollider() #endif } } - -void RoomObstacle::OnRemoveCollider(ColliderComponent* collider) -{ - #ifdef DEBUG - a8::UdpLog::Instance()->Debug("OnRemoveCollider %d %d %d", - { - room->room_idx, - entity_uniid, - (long long)collider - }); - #endif - room->map_service->RemoveCollider(collider); -} diff --git a/server/gameserver/roomobstacle.h b/server/gameserver/roomobstacle.h index 1ae7415..18d796c 100644 --- a/server/gameserver/roomobstacle.h +++ b/server/gameserver/roomobstacle.h @@ -13,6 +13,4 @@ class RoomObstacle : public Obstacle virtual ~RoomObstacle() override; virtual void Initialize() override; virtual void RecalcSelfCollider() override; - virtual void OnRemoveCollider(ColliderComponent* collider) override; - };