From ed71405708a70c6b788ad9e0f61151819f27c8ec Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 12 Mar 2023 10:10:38 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/Map.cc | 16 +++++++++------- server/gameserver/mt/Map.h | 2 +- server/gameserver/room.cc | 18 +++++++++--------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/server/gameserver/mt/Map.cc b/server/gameserver/mt/Map.cc index a9f76705..419aa2f2 100644 --- a/server/gameserver/mt/Map.cc +++ b/server/gameserver/mt/Map.cc @@ -179,7 +179,7 @@ namespace mt void Map::LoadWorldObjects() { auto parse_func = - [] (std::shared_ptr node, WorldObject* obj) + [] (std::shared_ptr node, std::shared_ptr obj) { obj->object_id = node->At("id")->AsXValue(); auto bounds = node->At("bounds"); @@ -199,17 +199,19 @@ namespace mt { auto thing = root.At("thing"); for (int i = 0; i < thing->Size(); ++i) { - auto& obj = a8::FastAppend(_world_objects); - obj.object_type = WorldObjectType_e::kBoxType; - parse_func(thing->At(i), &obj); + auto obj = std::make_shared(); + obj->object_type = WorldObjectType_e::kBoxType; + parse_func(thing->At(i), obj); + _world_objects.push_back(obj); } } { auto thing = root.At("loot"); for (int i = 0; i < thing->Size(); ++i) { - auto& obj = a8::FastAppend(_world_objects); - obj.object_type = WorldObjectType_e::kLootType; - parse_func(thing->At(i), &obj); + auto obj = std::make_shared(); + obj->object_type = WorldObjectType_e::kLootType; + parse_func(thing->At(i), obj); + _world_objects.push_back(obj); } } } diff --git a/server/gameserver/mt/Map.h b/server/gameserver/mt/Map.h index 900a96a5..6fd48606 100644 --- a/server/gameserver/mt/Map.h +++ b/server/gameserver/mt/Map.h @@ -33,7 +33,7 @@ namespace mt glm::vec3 first_safearea_center_; std::map car_num_limit_; std::vector safearea_list; - std::vector _world_objects; + std::vector> _world_objects; MapCollider* collider_info = nullptr; std::string RandTemplate() const; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index b18c4d41..8706f435 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3725,13 +3725,13 @@ int Room::GetPolyExtFlag(int poly_idx) void Room::CreateWorldObjects() { for (auto& obj : GetMapMeta()->_world_objects) { - switch ((WorldObjectType_e)obj.object_type) { + switch ((WorldObjectType_e)obj->object_type) { case WorldObjectType_e::kLootType: { CreateLoot ( - obj.object_id, - obj.pos, + obj->object_id, + obj->pos, 1, 1 ); @@ -3741,10 +3741,10 @@ void Room::CreateWorldObjects() { CreateObstacle ( - obj.object_id, - obj.pos.x, - obj.pos.y, - obj.pos.z + obj->object_id, + obj->pos.x, + obj->pos.y, + obj->pos.z ); } break; @@ -3752,8 +3752,8 @@ void Room::CreateWorldObjects() { CreateAndTakeonCar ( - obj.object_id, - obj.pos + obj->object_id, + obj->pos ); } break;