1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-20 07:23:51 +00:00

Merge pull request #2757 from Capostrophic/land

Fix ESM::Land oversights
This commit is contained in:
Andrei Kortunov 2020-04-04 19:52:18 +04:00 committed by GitHub
commit 0ce953ff7d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -75,6 +75,7 @@ namespace ESM
mContext = esm.getContext();
mLandData = nullptr;
std::fill(std::begin(mWnam), std::end(mWnam), 0);
// Skip the land data here. Load it when the cell is loaded.
while (esm.hasMoreSubs())
@ -156,8 +157,6 @@ namespace ESM
}
esm.writeHNT("VHGT", offsets, sizeof(VHGT));
}
}
if (mDataTypes & Land::DATA_WNAM)
{
// Generate WNAM record
@ -177,9 +176,6 @@ namespace ESM
}
esm.writeHNT("WNAM", wnam);
}
if (mLandData)
{
if (mDataTypes & Land::DATA_VCLR) {
esm.writeHNT("VCLR", mLandData->mColours);
}
@ -196,15 +192,13 @@ namespace ESM
{
mPlugin = 0;
for (int i = 0; i < LAND_GLOBAL_MAP_LOD_SIZE; ++i)
mWnam[0] = 0;
std::fill(std::begin(mWnam), std::end(mWnam), 0);
if (!mLandData)
mLandData = new LandData;
mLandData->mHeightOffset = 0;
for (int i = 0; i < LAND_NUM_VERTS; ++i)
mLandData->mHeights[i] = 0;
std::fill(std::begin(mLandData->mHeights), std::end(mLandData->mHeights), 0);
mLandData->mMinHeight = 0;
mLandData->mMaxHeight = 0;
for (int i = 0; i < LAND_NUM_VERTS; ++i)
@ -213,14 +207,8 @@ namespace ESM
mLandData->mNormals[i*3+1] = 0;
mLandData->mNormals[i*3+2] = 127;
}
for (int i = 0; i < LAND_NUM_TEXTURES; ++i)
mLandData->mTextures[i] = 0;
for (int i = 0; i < LAND_NUM_VERTS; ++i)
{
mLandData->mColours[i*3+0] = 255;
mLandData->mColours[i*3+1] = 255;
mLandData->mColours[i*3+2] = 255;
}
std::fill(std::begin(mLandData->mTextures), std::end(mLandData->mTextures), 0);
std::fill(std::begin(mLandData->mColours), std::end(mLandData->mColours), 255);
mLandData->mUnk1 = 0;
mLandData->mUnk2 = 0;
mLandData->mDataLoaded = Land::DATA_VNML | Land::DATA_VHGT | Land::DATA_WNAM |
@ -338,7 +326,7 @@ namespace ESM
Land::Land (const Land& land)
: mFlags (land.mFlags), mX (land.mX), mY (land.mY), mPlugin (land.mPlugin),
mContext (land.mContext), mDataTypes (land.mDataTypes),
mLandData (land.mLandData ? new LandData (*land.mLandData) : 0)
mLandData (land.mLandData ? new LandData (*land.mLandData) : nullptr)
{
std::copy(land.mWnam, land.mWnam + LAND_GLOBAL_MAP_LOD_SIZE, mWnam);
}
@ -364,7 +352,7 @@ namespace ESM
const Land::LandData *Land::getLandData (int flags) const
{
if (!(flags & mDataTypes))
return 0;
return nullptr;
loadData (flags);
return mLandData;
@ -400,7 +388,7 @@ namespace ESM
if (!mLandData->mDataLoaded)
{
delete mLandData;
mLandData = 0;
mLandData = nullptr;
}
}
}