mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-16 08:42:23 +00:00
Revert "Move reference to the right cell according to its geographical position"
This reverts commit d0677c3f07678a5eb351572c4eb9b14b0e1f03e4.
This commit is contained in:
parent
7dfaef7644
commit
c99bddc8dc
@ -434,7 +434,6 @@ namespace MWRender
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (std::find(cell->mMovedRefs.begin(), cell->mMovedRefs.end(), ref.mRefNum) != cell->mMovedRefs.end()) continue;
|
if (std::find(cell->mMovedRefs.begin(), cell->mMovedRefs.end(), ref.mRefNum) != cell->mMovedRefs.end()) continue;
|
||||||
if (std::find(cell->mMovedRefsByPos.begin(), cell->mMovedRefsByPos.end(), ref.mRefNum) != cell->mMovedRefsByPos.end()) continue;
|
|
||||||
Misc::StringUtils::lowerCaseInPlace(ref.mRefID);
|
Misc::StringUtils::lowerCaseInPlace(ref.mRefID);
|
||||||
int type = store.findStatic(ref.mRefID);
|
int type = store.findStatic(ref.mRefID);
|
||||||
if (!typeFilter(type,size>=2)) continue;
|
if (!typeFilter(type,size>=2)) continue;
|
||||||
@ -456,15 +455,6 @@ namespace MWRender
|
|||||||
if (!typeFilter(type,size>=2)) continue;
|
if (!typeFilter(type,size>=2)) continue;
|
||||||
refs[ref.mRefNum] = std::move(ref);
|
refs[ref.mRefNum] = std::move(ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto [ref, deleted] : cell->mLeasedRefsByPos)
|
|
||||||
{
|
|
||||||
if (deleted) { refs.erase(ref.mRefNum); continue; }
|
|
||||||
Misc::StringUtils::lowerCaseInPlace(ref.mRefID);
|
|
||||||
int type = store.findStatic(ref.mRefID);
|
|
||||||
if (!typeFilter(type, size >= 2)) continue;
|
|
||||||
refs[ref.mRefNum] = std::move(ref);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,15 +478,6 @@ namespace MWWorld
|
|||||||
// implementation when the oher implementation works as well.
|
// implementation when the oher implementation works as well.
|
||||||
while (cell->getNextRef(esm, ref, deleted, cMRef, moved))
|
while (cell->getNextRef(esm, ref, deleted, cMRef, moved))
|
||||||
{
|
{
|
||||||
|
|
||||||
auto x = static_cast<int>(std::floor(ref.mPos.pos[0] / float(ESM::Land::REAL_SIZE)));
|
|
||||||
auto y = static_cast<int>(std::floor(ref.mPos.pos[1] / float(ESM::Land::REAL_SIZE)));
|
|
||||||
if (x != cell->getGridX() || y != cell->getGridY())
|
|
||||||
{
|
|
||||||
ESM::Cell* cellAlt = const_cast<ESM::Cell*>(searchOrCreate(x, y));
|
|
||||||
cellAlt->mLeasedRefsByPos.emplace_back(ref, deleted);
|
|
||||||
cell->mMovedRefsByPos.push_back(ref.mRefNum);
|
|
||||||
}
|
|
||||||
if (!moved)
|
if (!moved)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -687,9 +678,6 @@ namespace MWWorld
|
|||||||
oldcell->mMovedRefs.push_back(*it);
|
oldcell->mMovedRefs.push_back(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
oldcell->mLeasedRefsByPos.splice(oldcell->mLeasedRefsByPos.end(), cell.mLeasedRefsByPos);
|
|
||||||
oldcell->mMovedRefsByPos.splice(oldcell->mMovedRefsByPos.end(), cell.mMovedRefsByPos);
|
|
||||||
|
|
||||||
// We don't need to merge mLeasedRefs of cell / oldcell. This list is filled when another cell moves a
|
// We don't need to merge mLeasedRefs of cell / oldcell. This list is filled when another cell moves a
|
||||||
// reference to this cell, so the list for the new cell should be empty. The list for oldcell,
|
// reference to this cell, so the list for the new cell should be empty. The list for oldcell,
|
||||||
// however, could have leased refs in it and so should be kept.
|
// however, could have leased refs in it and so should be kept.
|
||||||
|
@ -124,11 +124,6 @@ struct Cell
|
|||||||
CellRefTracker mLeasedRefs;
|
CellRefTracker mLeasedRefs;
|
||||||
MovedCellRefTracker mMovedRefs;
|
MovedCellRefTracker mMovedRefs;
|
||||||
|
|
||||||
// References "adopted" from another cell (i.e. a different cell
|
|
||||||
// introduced this ref, and it has been moved here as it geographically in this cell)
|
|
||||||
CellRefTracker mLeasedRefsByPos;
|
|
||||||
std::list<RefNum> mMovedRefsByPos;
|
|
||||||
|
|
||||||
void postLoad(ESMReader &esm);
|
void postLoad(ESMReader &esm);
|
||||||
|
|
||||||
// This method is left in for compatibility with esmtool. Parsing moved references currently requires
|
// This method is left in for compatibility with esmtool. Parsing moved references currently requires
|
||||||
|
Loading…
x
Reference in New Issue
Block a user