diff --git a/dZoneManager/Raw.cpp b/dZoneManager/Raw.cpp index bc97a583e..28e302d0d 100644 --- a/dZoneManager/Raw.cpp +++ b/dZoneManager/Raw.cpp @@ -69,7 +69,7 @@ NiPoint3 Chunk::GridToWorldPos(uint32_t i, uint32_t j) const { BinaryIO::BinaryRead(stream, flair.colorR); BinaryIO::BinaryRead(stream, flair.colorG); BinaryIO::BinaryRead(stream, flair.colorB); - BinaryIO::BinaryRead(stream, flair.colorA); + BinaryIO::BinaryRead(stream, flair.padding); return true; } catch (const std::exception&) { return false; diff --git a/dZoneManager/Raw.h b/dZoneManager/Raw.h index 33de6fa83..eb83d8a90 100644 --- a/dZoneManager/Raw.h +++ b/dZoneManager/Raw.h @@ -25,8 +25,10 @@ struct FlairAttributes { uint8_t colorR; uint8_t colorG; uint8_t colorB; - uint8_t colorA; + // Padding: never set when a flair is placed, so it holds leftover memory; nothing reads it + uint8_t padding; }; +static_assert(sizeof(FlairAttributes) == 36, "a flair record in the .raw is 36 bytes"); /** * @brief Mesh triangle structure diff --git a/tests/dGameTests/dZoneManagerTests/RawTests.cpp b/tests/dGameTests/dZoneManagerTests/RawTests.cpp index 52b381057..4050f0d4d 100644 --- a/tests/dGameTests/dZoneManagerTests/RawTests.cpp +++ b/tests/dGameTests/dZoneManagerTests/RawTests.cpp @@ -104,7 +104,7 @@ TEST_F(RawTest, ReadsEveryPartOfVersion32) { EXPECT_EQ(flair.colorR, 10); EXPECT_EQ(flair.colorG, 20); EXPECT_EQ(flair.colorB, 30); - EXPECT_EQ(flair.colorA, 40); + EXPECT_EQ(flair.padding, 40); EXPECT_TRUE(raw.chunks[2].flairs.empty()); EXPECT_EQ(chunk.vertSize, 4); diff --git a/tests/dGameTests/dZoneManagerTests/TerrainTestWriter.h b/tests/dGameTests/dZoneManagerTests/TerrainTestWriter.h index ac7c2d8a2..d9ea5a117 100644 --- a/tests/dGameTests/dZoneManagerTests/TerrainTestWriter.h +++ b/tests/dGameTests/dZoneManagerTests/TerrainTestWriter.h @@ -76,7 +76,7 @@ namespace TerrainTestWriter { WriteBytes(stream, chunk.blendMapSize); } - // Flair: id, scale, position, rotation, RGBA (36 bytes) + // Flair: id, scale, position, rotation, RGB, padding byte (36 bytes) Write(stream, chunk.flairCount); for (uint32_t i = 0; i < chunk.flairCount; ++i) { Write(stream, 500 + i);