diff --git a/armoury/src/gearview.cpp b/armoury/src/gearview.cpp index 3fdbaef..b830415 100644 --- a/armoury/src/gearview.cpp +++ b/armoury/src/gearview.cpp @@ -348,14 +348,23 @@ void GearView::updatePart() } for (auto &queuedRemoval : queuedGearRemovals) { - mdlPart->removeModel(queuedRemoval.mdl); - loadedGears.erase(std::remove_if(loadedGears.begin(), - loadedGears.end(), - [queuedRemoval](const LoadedGear &other) { - return queuedRemoval.info == other.info; - }), - loadedGears.end()); + auto it = std::find_if(loadedGears.cbegin(), loadedGears.cend(), [queuedRemoval](const LoadedGear &other) { + return queuedRemoval.info == other.info; + }); + + if (it != loadedGears.cend()) { + mdlPart->removeModel((*it).mdl); + loadedGears.erase(std::remove_if(loadedGears.begin(), + loadedGears.end(), + [queuedRemoval](const LoadedGear &other) { + return queuedRemoval.info == other.info; + }), + loadedGears.end()); + } } + + queuedGearAdditions.clear(); + queuedGearRemovals.clear(); } if (face) { diff --git a/parts/mdl/mdlpart.cpp b/parts/mdl/mdlpart.cpp index 04c0620..60128a2 100644 --- a/parts/mdl/mdlpart.cpp +++ b/parts/mdl/mdlpart.cpp @@ -278,9 +278,10 @@ void MDLPart::removeModel(const physis_MDL &mdl) models.erase(std::remove_if(models.begin(), models.end(), [mdl](const RenderModel &other) { - return mdl.lods == other.model.lods; + return mdl.p_ptr == other.model.p_ptr; }), models.end()); + Q_EMIT modelChanged(); } #include "moc_mdlpart.cpp" \ No newline at end of file