Do not add NAME subrecords while saving magic effects or scripts.

celladd
cc9cii 10 years ago
parent 8b84fa5579
commit a8427c2efb

@ -103,19 +103,14 @@ namespace CSMDoc
if (state==CSMWorld::RecordBase::State_Modified || if (state==CSMWorld::RecordBase::State_Modified ||
state==CSMWorld::RecordBase::State_ModifiedOnly) state==CSMWorld::RecordBase::State_ModifiedOnly)
{ {
// FIXME: A quick Workaround to support SKIL records which should not write NAME. // FIXME: A quick Workaround to support records which should not write
// If there are more idcollection records that don't use NAME then a more // NAME, including SKIL, MGEF and SCPT. If there are many more
// generic solution may be required. The conversion code was simply // idcollection records that doesn't use NAME then a more generic
// copied from esmwriter. There's room for improving speed a little bit // solution may be required.
// here if it turns out to be an issue.
uint32_t name = mCollection.getRecord (stage).mModified.sRecordId; uint32_t name = mCollection.getRecord (stage).mModified.sRecordId;
mState.getWriter().startRecord (name); mState.getWriter().startRecord (name);
std::string type;
for (int i=0; i<4; ++i)
/// \todo make endianess agnostic
type += reinterpret_cast<const char *> (&name)[i];
if(type != "SKIL") if(name != ESM::REC_SKIL && name != ESM::REC_MGEF && name != ESM::REC_SCPT)
mState.getWriter().writeHNCString ("NAME", mCollection.getId (stage)); mState.getWriter().writeHNCString ("NAME", mCollection.getId (stage));
mCollection.getRecord (stage).mModified.save (mState.getWriter()); mCollection.getRecord (stage).mModified.save (mState.getWriter());
mState.getWriter().endRecord (mCollection.getRecord (stage).mModified.sRecordId); mState.getWriter().endRecord (mCollection.getRecord (stage).mModified.sRecordId);

Loading…
Cancel
Save