mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-01 03:21:41 +00:00
Merge branch 'fix_world_model' into 'master'
Fix WorldModel (#7474) Closes #7474 See merge request OpenMW/openmw!3270
This commit is contained in:
commit
09e1ff9a4b
@ -32,10 +32,10 @@ namespace MWWorld
|
||||
CellStore& emplaceCellStore(ESM::RefId id, const T& cell, ESMStore& store, ESM::ReadersCache& readers,
|
||||
std::unordered_map<ESM::RefId, CellStore>& cells)
|
||||
{
|
||||
return cells
|
||||
.emplace(std::piecewise_construct, std::forward_as_tuple(id),
|
||||
std::forward_as_tuple(Cell(cell), store, readers))
|
||||
.first->second;
|
||||
const auto [it, inserted] = cells.emplace(
|
||||
std::piecewise_construct, std::forward_as_tuple(id), std::forward_as_tuple(Cell(cell), store, readers));
|
||||
assert(inserted);
|
||||
return it->second;
|
||||
}
|
||||
|
||||
const ESM::Cell* createEsmCell(ESM::ExteriorCellLocation location, ESMStore& store)
|
||||
@ -205,6 +205,7 @@ namespace MWWorld
|
||||
cellStore = &emplaceCellStore(cell4->mId, *cell4, mStore, mReaders, mCells);
|
||||
else
|
||||
return nullptr;
|
||||
mInteriors.emplace(name, cellStore);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -230,7 +231,12 @@ namespace MWWorld
|
||||
{
|
||||
auto it = mCells.find(id);
|
||||
if (it != mCells.end())
|
||||
return &it->second;
|
||||
{
|
||||
CellStore& cellStore = it->second;
|
||||
if (forceLoad && cellStore.getState() != CellStore::State_Loaded)
|
||||
cellStore.load();
|
||||
return &cellStore;
|
||||
}
|
||||
|
||||
if (id == draftCellId)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user