Select WMOs during drag selection

This commit is contained in:
Kaev
2022-11-15 20:00:48 +00:00
parent 926f44c092
commit 0b47b77101
2 changed files with 20 additions and 6 deletions

View File

@@ -3004,7 +3004,8 @@ void World::select_objects_in_area(
for (auto& pair : tile->getObjectInstances()) 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) for (auto& instance : pair.second)
{ {
@@ -3031,6 +3032,18 @@ void World::select_objects_in_area(
auto modelInstance = _model_instance_storage.get_instance(uid); auto modelInstance = _model_instance_storage.get_instance(uid);
if (modelInstance && modelInstance.value().index() == eEntry_Object) { if (modelInstance && modelInstance.value().index() == eEntry_Object) {
auto obj = std::get<selected_object_type>(modelInstance.value()); auto obj = std::get<selected_object_type>(modelInstance.value());
auto which = std::get<selected_object_type>(modelInstance.value())->which();
if (which == eWMO)
{
auto model_instance = static_cast<WMOInstance*>(obj);
if (!is_selected(obj) && !model_instance->wmo->is_hidden())
{
this->add_to_selection(obj);
}
}
else if (which == eMODEL)
{
auto model_instance = static_cast<ModelInstance*>(obj); auto model_instance = static_cast<ModelInstance*>(obj);
if (!is_selected(obj) && !model_instance->model->is_hidden()) if (!is_selected(obj) && !model_instance->model->is_hidden())
@@ -3045,3 +3058,4 @@ void World::select_objects_in_area(
} }
} }
} }
}