diff --git a/src/external/blizzard-archive-library b/src/external/blizzard-archive-library index c3958b6f..9990612b 160000 --- a/src/external/blizzard-archive-library +++ b/src/external/blizzard-archive-library @@ -1 +1 @@ -Subproject commit c3958b6f9592dc2e8a2ce71dd0c30e30766a4591 +Subproject commit 9990612b67654df7d7c6630de9d62d1e3edcc287 diff --git a/src/noggit/World.cpp b/src/noggit/World.cpp index a66fe2d3..7de4606b 100755 --- a/src/noggit/World.cpp +++ b/src/noggit/World.cpp @@ -3004,7 +3004,8 @@ void World::select_objects_in_area( for (auto& pair : tile->getObjectInstances()) { - if (pair.second[0]->which() == eMODEL) + auto objectType = pair.second[0]->which(); + if (objectType == eMODEL || objectType == eWMO) { for (auto& instance : pair.second) { @@ -3031,11 +3032,24 @@ void World::select_objects_in_area( auto modelInstance = _model_instance_storage.get_instance(uid); if (modelInstance && modelInstance.value().index() == eEntry_Object) { auto obj = std::get(modelInstance.value()); - auto model_instance = static_cast(obj); - - if (!is_selected(obj) && !model_instance->model->is_hidden()) + auto which = std::get(modelInstance.value())->which(); + if (which == eWMO) { - this->add_to_selection(obj); + auto model_instance = static_cast(obj); + + if (!is_selected(obj) && !model_instance->wmo->is_hidden()) + { + this->add_to_selection(obj); + } + } + else if (which == eMODEL) + { + auto model_instance = static_cast(obj); + + if (!is_selected(obj) && !model_instance->model->is_hidden()) + { + this->add_to_selection(obj); + } } } }