mirror of https://github.com/OpenMW/openmw.git
Empty Pathgrid record is considered as the modder's intention to delete any existing record.
parent
802a202455
commit
bd3ef506cd
@ -0,0 +1,43 @@
|
||||
#include "idcollection.hpp"
|
||||
|
||||
namespace CSMWorld
|
||||
{
|
||||
template<>
|
||||
int IdCollection<Pathgrid, IdAccessor<Pathgrid> >::load (ESM::ESMReader& reader, bool base)
|
||||
{
|
||||
Pathgrid record;
|
||||
bool isDeleted = false;
|
||||
|
||||
loadRecord (record, reader, isDeleted);
|
||||
|
||||
std::string id = IdAccessor<Pathgrid>().getId (record);
|
||||
int index = this->searchId (id);
|
||||
|
||||
if (record.mPoints.empty() || record.mEdges.empty())
|
||||
isDeleted = true;
|
||||
|
||||
if (isDeleted)
|
||||
{
|
||||
if (index==-1)
|
||||
{
|
||||
// deleting a record that does not exist
|
||||
// ignore it for now
|
||||
/// \todo report the problem to the user
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (base)
|
||||
{
|
||||
this->removeRows (index, 1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::unique_ptr<Record<Pathgrid> > baseRecord(new Record<Pathgrid>(this->getRecord(index)));
|
||||
baseRecord->mState = RecordBase::State_Deleted;
|
||||
this->setRecord(index, std::move(baseRecord));
|
||||
return index;
|
||||
}
|
||||
|
||||
return load (record, base, index);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue