From 2abaf5bc469ceeb7a59f2969d2a23a424a6a4e3f Mon Sep 17 00:00:00 2001 From: T1ti <40864460+T1ti@users.noreply.github.com> Date: Sat, 25 May 2024 08:18:35 +0200 Subject: [PATCH] fix from adspartan https://github.com/wowdev/noggit3/commit/1d8ba26a3adbfda34ceffe01766643a1e3a8dcbf noggit: texture_set: fix eraseUnusedTextures issue preventing from erasing textures when using the temp alphamaps and remove the correct texture --- src/noggit/texture_set.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/noggit/texture_set.cpp b/src/noggit/texture_set.cpp index f8e476e5..1170ab4e 100755 --- a/src/noggit/texture_set.cpp +++ b/src/noggit/texture_set.cpp @@ -233,8 +233,8 @@ void TextureSet::eraseTexture(size_t id) alphamaps[nTextures - 2] = std::nullopt; } - textures.erase(textures.begin()+id); nTextures--; + textures.erase(textures.begin() + nTextures); // erase the old info as a precaution but it's overriden when adding a new texture _layers_info[nTextures] = layer_info(); @@ -285,13 +285,14 @@ bool TextureSet::eraseUnusedTextures() { auto& amaps = tmp_edit_values.value(); - for (int i = 0; i < 4096 && visible_tex.size() < nTextures; ++i) + for (int layer = 0; layer < nTextures && visible_tex.size() < nTextures; ++layer) { - for (int layer = 0; layer < nTextures; ++layer) + for (int i = 0; i < 4096; ++i) { if (amaps[layer][i] > 0.f) { - visible_tex.emplace(i); + visible_tex.emplace(layer); + break; // texture visible, go to the next layer } } }