diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 54425e0..adbbded 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -45,7 +45,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum) #endif } for (auto& itr : hum->part_objects) { - Entity* entity = itr; + Entity* entity = itr.first; if (entity->IsDead(room) && hum->room->GetFrameNo() - entity->GetDeadFrameNo(room) > 10) { continue; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 7cf2cf5..1cfd37a 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -963,7 +963,11 @@ void Human::AddToNewObjects(Entity* entity) void Human::AddToPartObjects(Entity* entity) { - part_objects.insert(entity); + PartObject part_obj; + part_obj.entity_uniid = entity->GetEntityUniId(); + part_obj.entity_type = entity->GetEntityType(); + part_obj.entity_subtype = entity->GetEntitySubType(); + part_objects[entity] = part_obj; } void Human::RemovePartObjects(Entity* entity) diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 5b75910..011aa19 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -31,6 +31,13 @@ struct SpecMapObject struct xtimer_list* enter_timer = nullptr; }; +struct PartObject +{ + int entity_uniid = 0; + int entity_type = 0; + int entity_subtype = 0; +}; + struct xtimer_list; class CircleCollider; class AabbCollider; @@ -308,7 +315,7 @@ protected: std::array volume_ = {}; std::set new_objects; - std::set part_objects; + std::map part_objects; std::set del_objects; std::set out_objects; std::vector shots_;