fix from adspartan 1d8ba26a3a
noggit: texture_set: fix eraseUnusedTextures issue preventing from erasing textures when using the temp alphamaps and remove the correct texture
This commit is contained in:
@@ -233,8 +233,8 @@ void TextureSet::eraseTexture(size_t id)
|
|||||||
alphamaps[nTextures - 2] = std::nullopt;
|
alphamaps[nTextures - 2] = std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
textures.erase(textures.begin()+id);
|
|
||||||
nTextures--;
|
nTextures--;
|
||||||
|
textures.erase(textures.begin() + nTextures);
|
||||||
|
|
||||||
// erase the old info as a precaution but it's overriden when adding a new texture
|
// erase the old info as a precaution but it's overriden when adding a new texture
|
||||||
_layers_info[nTextures] = layer_info();
|
_layers_info[nTextures] = layer_info();
|
||||||
@@ -285,13 +285,14 @@ bool TextureSet::eraseUnusedTextures()
|
|||||||
{
|
{
|
||||||
auto& amaps = tmp_edit_values.value();
|
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)
|
if (amaps[layer][i] > 0.f)
|
||||||
{
|
{
|
||||||
visible_tex.emplace(i);
|
visible_tex.emplace(layer);
|
||||||
|
break; // texture visible, go to the next layer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user