This commit is contained in:
aozhiwei 2023-03-12 10:10:38 +08:00
parent d1ac2f3f54
commit ed71405708
3 changed files with 19 additions and 17 deletions

View File

@ -179,7 +179,7 @@ namespace mt
void Map::LoadWorldObjects()
{
auto parse_func =
[] (std::shared_ptr<a8::XObject> node, WorldObject* obj)
[] (std::shared_ptr<a8::XObject> node, std::shared_ptr<WorldObject> 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<WorldObject>();
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<WorldObject>();
obj->object_type = WorldObjectType_e::kLootType;
parse_func(thing->At(i), obj);
_world_objects.push_back(obj);
}
}
}

View File

@ -33,7 +33,7 @@ namespace mt
glm::vec3 first_safearea_center_;
std::map<int, int> car_num_limit_;
std::vector<int> safearea_list;
std::vector<WorldObject> _world_objects;
std::vector<std::shared_ptr<WorldObject>> _world_objects;
MapCollider* collider_info = nullptr;
std::string RandTemplate() const;

View File

@ -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;