Fix Remap::invert() when a tile is moved out of the range

This commit is contained in:
David Capello 2020-07-20 16:25:36 -03:00
parent 9f09fbe01a
commit a2e2337b23

View File

@ -137,12 +137,23 @@ void Remap::merge(const Remap& other)
Remap Remap::invert() const Remap Remap::invert() const
{ {
Remap inv(size()); Remap inv(size());
for (int i=0; i<size(); ++i)
inv.m_map[i] = kNoMap;
for (int i=0; i<size(); ++i) { for (int i=0; i<size(); ++i) {
int j = m_map[i]; int j = m_map[i];
if (j == kNoMap) if (j == kNoMap ||
// Already mapped
inv.m_map[j] != kNoMap)
continue; continue;
inv.map(j, i); inv.map(j, i);
} }
for (int i=0; i<size(); ++i)
if (inv.m_map[i] == kNoMap)
inv.m_map[i] = i;
return inv; return inv;
} }