From 7f955a52475ad12100dd2ef17d8ba4d2eeee5d7a Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Wed, 13 Jul 2022 00:59:46 -0600 Subject: [PATCH] testmaps: add q1_tjunc_angled_face --- testmaps/q1_tjunc_angled_face.map | 102 ++++++++++++++++++++++++++++++ tests/test_qbsp.cc | 23 +++++++ 2 files changed, 125 insertions(+) create mode 100644 testmaps/q1_tjunc_angled_face.map diff --git a/testmaps/q1_tjunc_angled_face.map b/testmaps/q1_tjunc_angled_face.map new file mode 100644 index 00000000..64186fd5 --- /dev/null +++ b/testmaps/q1_tjunc_angled_face.map @@ -0,0 +1,102 @@ +// Game: Quake +// Format: Standard +// entity 0 +{ +"classname" "worldspawn" +"wad" "deprecated/free_wad.wad;deprecated/hintskip.wad" +// brush 0 +{ +( -304 32 16 ) ( -304 256 16 ) ( -304 32 192 ) bolt9 0 0 0 1 1 +( -304 32 192 ) ( -288 32 192 ) ( -304 32 16 ) bolt9 0 0 0 1 1 +( -304 32 16 ) ( -288 32 16 ) ( -304 256 16 ) bolt9 0 0 0 1 1 +( -304 256 192 ) ( -288 256 192 ) ( -304 32 192 ) bolt9 0 0 0 1 1 +( -304 256 16 ) ( -288 256 16 ) ( -304 256 192 ) bolt9 0 0 0 1 1 +( -288 32 16 ) ( -288 32 192 ) ( -288 256 16 ) bolt9 0 0 0 1 1 +} +// brush 1 +{ +( -288 256 192 ) ( -288 240 192 ) ( -288 256 16 ) bolt9 0 0 0 1 1 +( -64 240 192 ) ( -64 240 16 ) ( -288 240 192 ) bolt9 0 0 0 1 1 +( -288 256 16 ) ( -288 240 16 ) ( -64 256 16 ) bolt9 0 0 0 1 1 +( -64 256 192 ) ( -64 240 192 ) ( -288 256 192 ) bolt9 0 0 0 1 1 +( -64 256 192 ) ( -288 256 192 ) ( -64 256 16 ) bolt9 0 0 0 1 1 +( 224 256 16 ) ( 224 240 16 ) ( 224 256 192 ) bolt9 0 0 0 1 1 +} +// brush 2 +{ +( -288 32 16 ) ( -288 48 16 ) ( -288 32 192 ) bolt9 0 0 0 1 1 +( -64 32 16 ) ( -288 32 16 ) ( -64 32 192 ) bolt9 0 0 0 1 1 +( -64 32 16 ) ( -64 48 16 ) ( -288 32 16 ) bolt9 0 0 0 1 1 +( -288 32 192 ) ( -288 48 192 ) ( -64 32 192 ) bolt9 0 0 0 1 1 +( -288 48 16 ) ( -64 48 16 ) ( -288 48 192 ) bolt9 0 0 0 1 1 +( 224 32 192 ) ( 224 48 192 ) ( 224 32 16 ) bolt9 0 0 0 1 1 +} +// brush 3 +{ +( -288 48 192 ) ( -288 48 176 ) ( -288 240 192 ) bolt9 0 0 0 1 1 +( -64 48 192 ) ( -64 48 176 ) ( -288 48 192 ) bolt9 0 0 0 1 1 +( -64 240 176 ) ( -288 240 176 ) ( -64 48 176 ) bolt9 0 0 0 1 1 +( -64 240 192 ) ( -64 48 192 ) ( -288 240 192 ) bolt9 0 0 0 1 1 +( -288 240 192 ) ( -288 240 176 ) ( -64 240 192 ) bolt9 0 0 0 1 1 +( 224 240 192 ) ( 224 240 176 ) ( 224 48 192 ) bolt9 0 0 0 1 1 +} +// brush 4 +{ +( -288 240 16 ) ( -288 240 32 ) ( -288 48 16 ) bolt9 0 0 0 1 1 +( -288 48 16 ) ( -288 48 32 ) ( -64 48 16 ) bolt9 0 0 0 1 1 +( -288 240 16 ) ( -288 48 16 ) ( -64 240 16 ) bolt9 0 0 0 1 1 +( -288 48 32 ) ( -288 240 32 ) ( -64 48 32 ) bolt9 0 0 0 1 1 +( -64 240 16 ) ( -64 240 32 ) ( -288 240 16 ) bolt9 0 0 0 1 1 +( 224 48 16 ) ( 224 48 32 ) ( 224 240 16 ) bolt9 0 0 0 1 1 +} +// brush 5 +{ +( 208 48 32 ) ( 208 49 32 ) ( 208 48 33 ) bolt9 0 0 0 1 1 +( 208 48 32 ) ( 208 48 33 ) ( 209 48 32 ) bolt9 0 0 0 1 1 +( 208 48 32 ) ( 209 48 32 ) ( 208 49 32 ) bolt9 0 0 0 1 1 +( 224 240 192 ) ( 224 241 192 ) ( 225 240 192 ) bolt9 0 0 0 1 1 +( 224 240 40 ) ( 225 240 40 ) ( 224 240 41 ) bolt9 0 0 0 1 1 +( 224 240 40 ) ( 224 240 41 ) ( 224 241 40 ) bolt9 0 0 0 1 1 +} +} +// entity 1 +{ +"classname" "info_player_start" +"origin" "-240 80 56" +} +// entity 2 +{ +"classname" "light" +"origin" "-24 136 88" +} +// entity 3 +{ +"classname" "func_detail_illusionary" +// brush 0 +{ +( -188.10813251266572 218.17443700772375 29.189087697669024 ) ( -188.08344933943835 219.1400896531907 29.44774907720233 ) ( -188.15085495684698 217.91695210157323 30.154425108043164 ) skip -2.6057358 -15.070322 14.995332 3.9987814 3.99635 +( 128.47925076604355 201.86505104409426 121.722501544933 ) ( 128.5039339392709 202.83070368956123 121.98116292446629 ) ( 129.47803279117343 201.8301728072222 121.75740104163549 ) skip 1.6292086 -2.6000519 358.00003 3.9975634 3.8642104 +( -188.10813251266572 218.17443700772375 29.189087697669024 ) ( -188.15085495684698 217.91695210157323 30.154425108043164 ) ( -187.1093504875358 218.1395587708517 29.223987194371524 ) bolt6 -1.1053715 1.2317715 1.9999777 4.002436 3.869836 +( 131.21348719364374 218.344085037727 59.94090728098833 ) ( 132.21226921877363 218.30920680085495 59.97580677769082 ) ( 131.17076474946248 218.08660013157652 60.90624469136245 ) skip -1.24013 2.297655 1.9999777 4.002436 3.869836 +( -189.4752507264658 209.93492001090735 60.079884829641365 ) ( -188.4764687013359 209.9000417740353 60.11478432634385 ) ( -189.45056755323844 210.90057265637432 60.33854620917466 ) skip 1.224124 0.61686707 358.00003 3.9975634 3.8642104 +( 131.21348719364374 218.344085037727 59.94090728098833 ) ( 131.17076474946248 218.08660013157652 60.90624469136245 ) ( 131.2381703668711 219.309737683194 60.199568660521635 ) skip -0.63228226 -11.648362 14.995332 3.9987814 3.99635 +} +// brush 1 +{ +( -191.13099727552836 213.0260868431543 110.55466260013269 ) ( -193.97153613950366 169.7659266929867 148.61369415302556 ) ( -194.36646691114126 154.31548436551515 144.47511208049275 ) skip -2.6183968 -15.070335 14.995332 3.9987814 3.99635 +( -193.97153613950366 169.7659266929867 148.61369415302556 ) ( -66.12743692287489 165.3015123733627 153.08082973094565 ) ( -66.5223676945125 149.85107004589113 148.9422476584129 ) skip 1.9767227 -5.8202477 358.00003 3.9975634 3.8642104 +( -191.13099727552836 213.0260868431543 110.55466260013269 ) ( -63.28689805889961 208.5616725235303 115.0217981780528 ) ( -66.12743692287489 165.3015123733627 153.08082973094565 ) skip 1.8283157 -21.069065 358.00003 3.9975634 -3.616177 +( -66.5223676945125 149.85107004589113 148.9422476584129 ) ( -63.681828830537185 193.11123019605878 110.88321610551998 ) ( -191.52592804716593 197.5756445156828 106.41608052759985 ) bolt9 0 0 0 1 1 +( -63.681828830537185 193.11123019605878 110.88321610551998 ) ( -63.28689805889961 208.5616725235303 115.0217981780528 ) ( -191.13099727552836 213.0260868431543 110.55466260013269 ) skip 1.6438179 -2.5995102 358.00003 3.9975634 3.8642104 +( -66.12743692287489 165.3015123733627 153.08082973094565 ) ( -63.28689805889961 208.5616725235303 115.0217981780528 ) ( -63.681828830537185 193.11123019605878 110.88321610551998 ) skip -1.8290176 -13.701551 14.995332 3.9987814 3.99635 +} +// brush 2 +{ +( -63.28689805889961 208.5616725235303 115.0217981780528 ) ( -66.12743692287489 165.3015123733627 153.08082973094565 ) ( -66.5223676945125 149.85107004589113 148.9422476584129 ) skip -1.8290176 -13.701551 14.995332 3.9987814 3.99635 +( -66.12743692287489 165.3015123733627 153.08082973094565 ) ( 125.63871190206825 158.60489089392667 159.7815330978258 ) ( 125.24378113043065 143.1544485664551 155.6429510252931 ) skip 1.9523721 -5.821148 358.00003 3.9975634 3.8642104 +( -63.28689805889961 208.5616725235303 115.0217981780528 ) ( 128.47925076604355 201.86505104409426 121.722501544933 ) ( 125.63871190206825 158.60489089392667 159.7815330978258 ) skip 1.8039656 -21.068104 358.00003 3.9975634 -3.616177 +( 125.24378113043065 143.1544485664551 155.6429510252931 ) ( 128.08431999440594 186.41460871662275 117.58391947240015 ) ( -63.681828830537185 193.11123019605878 110.88321610551998 ) bolt8 1.7678752 -16.791702 358.00003 3.9975634 -3.616177 +( 128.08431999440594 186.41460871662275 117.58391947240015 ) ( 128.47925076604355 201.86505104409426 121.722501544933 ) ( -63.28689805889961 208.5616725235303 115.0217981780528 ) skip 1.6194682 -2.6004105 358.00003 3.9975634 3.8642104 +( 125.63871190206825 158.60489089392667 159.7815330978258 ) ( 128.47925076604355 201.86505104409426 121.722501544933 ) ( 128.08431999440594 186.41460871662275 117.58391947240015 ) skip -0.64494705 -11.648375 14.995332 3.9987814 3.99635 +} +} diff --git a/tests/test_qbsp.cc b/tests/test_qbsp.cc index 7d0ac1d3..1ce20a4a 100644 --- a/tests/test_qbsp.cc +++ b/tests/test_qbsp.cc @@ -314,6 +314,17 @@ static std::vector TexNames(const mbsp_t &bsp, std::vector FacesWithTextureName(const mbsp_t &bsp, const std::string &name) +{ + std::vector result; + for (auto &face : bsp.dfaces) { + if (Face_TextureName(&bsp, &face) == name) { + result.push_back(&face); + } + } + return result; +} + // https://github.com/ericwa/ericw-tools/issues/158 TEST_CASE("testTextureIssue", "[qbsp]") { @@ -915,6 +926,18 @@ TEST_CASE("tjunc_many_sided_face", "[testmaps_q1][!mayfail]") CHECK(2 == (faces_by_normal.at({0, 0, -1}).size())); } +TEST_CASE("tjunc_angled_face", "[testmaps_q1]") +{ + const auto [bsp, bspx, prt] = LoadTestmapQ1("q1_tjunc_angled_face.map"); + CheckFilled(bsp); + + auto faces = FacesWithTextureName(bsp, "bolt6"); + REQUIRE(faces.size() == 1); + + auto *bolt6_face = faces.at(0); + CHECK(bolt6_face->numedges == 5); +} + /** * Because it comes second, the sbutt2 brush should "win" in clipping against the floor, * in both a worldspawn test case, as well as a func_wall.