From d9836f86a380b1de598d1af9e41575037b93d475 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 20 Jul 2019 11:08:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=95=E6=9C=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/entity.cc | 10 ++++++++++ server/gameserver/entity.h | 1 + server/gameserver/room.cc | 3 +++ 3 files changed, 14 insertions(+) diff --git a/server/gameserver/entity.cc b/server/gameserver/entity.cc index 0494b20..5a07714 100644 --- a/server/gameserver/entity.cc +++ b/server/gameserver/entity.cc @@ -6,6 +6,7 @@ #include "building.h" #include "human.h" #include "app.h" +#include "mapservice.h" Entity::Entity() { @@ -191,3 +192,12 @@ void Entity::NotifyDelObject() } } } + +void Entity::RemoveFromMapService() +{ + if (room) { + for (ColliderComponent* collider : colliders) { + room->map_service.RemoveCollider(collider); + } + } +} diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index 6cc60bc..0950374 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -48,6 +48,7 @@ class Entity void BroadcastDeleteState(); void AddCollider(ColliderComponent* collider); void NotifyDelObject(); + void RemoveFromMapService(); private: std::list colliders; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a9d963f..3e6688d 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -598,6 +598,9 @@ void Room::RemoveObjectLater(Entity* entity) break; case ET_Obstacle: { + entity->BroadcastDeleteState(); + entity->room->grid_service.DelEntity(entity); + entity->RemoveFromMapService(); } break; default: