qbsp: don't write 0 size textures

write them as offset -1 in dmiptexlump_t::stream_write()
This commit is contained in:
Eric Wasylishen 2023-07-17 23:32:38 -06:00
parent a5c0f0e768
commit f93a36c295
2 changed files with 5 additions and 5 deletions

View File

@ -185,7 +185,7 @@ void dmiptexlump_t::stream_write(std::ostream &stream) const
// write out the miptex offsets
for (auto &texture : textures) {
if (!texture.name[0]) {
if (!texture.name[0] || texture.width == 0 || texture.height == 0) {
// dummy texture
stream <= static_cast<int32_t>(-1);
continue;
@ -203,7 +203,7 @@ void dmiptexlump_t::stream_write(std::ostream &stream) const
}
for (auto &texture : textures) {
if (texture.name[0]) {
if (texture.name[0] && texture.width && texture.height) {
// fix up the padding to match the above conditions
if (stream.tellp() % 4) {
constexpr const char pad[4]{};

View File

@ -1449,8 +1449,8 @@ TEST_CASE("q1_wad_mapname" * doctest::test_suite("testmaps_q1"))
CHECK(GAME_QUAKE == bsp.loadversion->game->id);
CHECK(bsp.dtex.textures.size() == 2);
CHECK(bsp.dtex.textures[0].name == "skip");
CHECK(bsp.dtex.textures[0].data.size() == sizeof(dmiptex_t)); // no texture data
CHECK(bsp.dtex.textures[0].name == ""); // skip
CHECK(bsp.dtex.textures[0].data.size() == 0); // no texture data
CHECK(bsp.dtex.textures[1].name == "{trigger");
CHECK(bsp.dtex.textures[1].data.size() > sizeof(dmiptex_t));
@ -1763,7 +1763,7 @@ TEST_CASE("textures search relative to current directory")
const auto [bsp, bspx, prt] = LoadTestmapQ1("q1_cwd_relative_wad.map");
REQUIRE(2 == bsp.dtex.textures.size());
// FIXME: we shouldn't really be writing skip
CHECK("skip" == bsp.dtex.textures[0].name);
CHECK("" == bsp.dtex.textures[0].name);
// make sure the texture was written
CHECK("orangestuff8" == bsp.dtex.textures[1].name);