From cfe26ae1a6ab2358367bf7a062c61a386f908d18 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 25 May 2020 11:44:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DRoomObstacle=E6=9E=90?= =?UTF-8?q?=E6=9E=84=E5=87=BD=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/entity.cc | 1 - server/gameserver/entity.h | 5 +++-- server/gameserver/roomobstacle.cc | 26 ++++++++++++-------------- server/gameserver/roomobstacle.h | 2 -- 4 files changed, 15 insertions(+), 19 deletions(-) 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; - };