Merge branch 'type-cleanup' of https://github.com/Paril/ericw-tools into type-cleanup
This commit is contained in:
commit
1f28be4a4c
12
qbsp/qbsp.cc
12
qbsp/qbsp.cc
|
|
@ -437,6 +437,14 @@ static void ApplyArea_r(node_t *node)
|
|||
|
||||
static mapentity_t *AreanodeEntityForLeaf(node_t *node)
|
||||
{
|
||||
// if detail cluster, search the children recursively
|
||||
if (node->planenum != PLANENUM_LEAF) {
|
||||
if (auto *child0result = AreanodeEntityForLeaf(node->children[0]); child0result) {
|
||||
return child0result;
|
||||
}
|
||||
return AreanodeEntityForLeaf(node->children[1]);
|
||||
}
|
||||
|
||||
for (auto *face : node->markfaces) {
|
||||
const char *classname = ValueForKey(face->src_entity, "classname");
|
||||
if (0 == Q_strcasecmp(classname, "func_areaportal")) {
|
||||
|
|
@ -453,7 +461,7 @@ FloodAreas_r
|
|||
*/
|
||||
static void FloodAreas_r(node_t *node)
|
||||
{
|
||||
if (node->planenum == PLANENUM_LEAF && node->contents.native == Q2_CONTENTS_AREAPORTAL) {
|
||||
if ((node->planenum == PLANENUM_LEAF || node->detail_separator) && (ClusterContents(node).native & Q2_CONTENTS_AREAPORTAL)) {
|
||||
// grab the func_areanode entity
|
||||
mapentity_t *entity = AreanodeEntityForLeaf(node);
|
||||
|
||||
|
|
@ -529,7 +537,7 @@ static void FindAreas(node_t *node)
|
|||
|
||||
// area portals are always only flooded into, never
|
||||
// out of
|
||||
if (leaf->contents.native == Q2_CONTENTS_AREAPORTAL)
|
||||
if (ClusterContents(leaf).native & Q2_CONTENTS_AREAPORTAL)
|
||||
return;
|
||||
|
||||
map.c_areas++;
|
||||
|
|
|
|||
|
|
@ -1021,6 +1021,24 @@ TEST_CASE("areaportal", "[testmaps_q2]")
|
|||
REQUIRE("1" == it->get("style"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to above test, but there's a detail brush sticking into the area portal
|
||||
*/
|
||||
TEST_CASE("areaportal_with_detail", "[testmaps_q2]")
|
||||
{
|
||||
const mbsp_t bsp = LoadTestmap("qbsp_q2_areaportal_with_detail.map", {"-q2bsp"});
|
||||
|
||||
CHECK_FALSE(map.leakfile);
|
||||
CHECK(GAME_QUAKE_II == bsp.loadversion->game->id);
|
||||
|
||||
// area 0 is a placeholder
|
||||
// areaportal 0 is a placeholder
|
||||
//
|
||||
// the conceptual area portal has portalnum 1, and consists of two dareaportals entries with connections to area 1 and 2
|
||||
CHECK_THAT(bsp.dareaportals, Catch::UnorderedEquals(std::vector<dareaportal_t>{{0, 0}, {1, 1}, {1, 2}}));
|
||||
CHECK_THAT(bsp.dareas, Catch::UnorderedEquals(std::vector<darea_t>{{0, 0}, {1, 1}, {1, 2}}));
|
||||
}
|
||||
|
||||
TEST_CASE("nodraw_light", "[testmaps_q2]") {
|
||||
const mbsp_t bsp = LoadTestmap("qbsp_q2_nodraw_light.map", {"-q2bsp", "-includeskip"});
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,121 @@
|
|||
// Game: Quake 2
|
||||
// Format: Quake2 (Valve)
|
||||
// entity 0
|
||||
{
|
||||
"mapversion" "220"
|
||||
"classname" "worldspawn"
|
||||
"_tb_textures" "textures/e1u1"
|
||||
// brush 0
|
||||
{
|
||||
( -176 -256 64 ) ( -176 -255 64 ) ( -176 -256 65 ) e1u1/ggrat4_2 [ 0 1.0000000000000002 0 -16 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( -176 -432 64 ) ( -176 -432 65 ) ( -175 -432 64 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -176 -256 96 ) ( -175 -256 96 ) ( -176 -255 96 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -48 ] 0 1 1
|
||||
( -160 192 352 ) ( -160 193 352 ) ( -159 192 352 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 -80 ] 0 1 1
|
||||
( -160 176 80 ) ( -159 176 80 ) ( -160 176 81 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 192 80 ) ( -160 192 81 ) ( -160 193 80 ) e1u1/ggrat4_2 [ 0 -1.0000000000000002 0 64 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -160 176 88 ) ( -160 177 88 ) ( -160 176 89 ) e1u1/ggrat4_2 [ 0 1.0000000000000002 0 -32 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( -160 176 88 ) ( -160 176 89 ) ( -159 176 88 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 176 96 ) ( -159 176 96 ) ( -160 177 96 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -40 ] 0 1 1
|
||||
( 288 192 352 ) ( 288 193 352 ) ( 289 192 352 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 48 ] 0 1 1
|
||||
( 288 192 96 ) ( 289 192 96 ) ( 288 192 97 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( 288 192 96 ) ( 288 192 97 ) ( 288 193 96 ) e1u1/ggrat4_2 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -160 -112 96 ) ( -160 -111 96 ) ( -160 -112 97 ) e1u1/florr1_8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -80 -432 80 ) ( -81 -432 80 ) ( -80 -432 81 ) e1u1/florr1_8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( -80 -432 80 ) ( -80 -431 80 ) ( -81 -432 80 ) e1u1/florr1_8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 -112 96 ) ( -161 -112 96 ) ( -160 -111 96 ) e1u1/florr1_8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 176 96 ) ( -160 176 97 ) ( -161 176 96 ) e1u1/florr1_8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 288 -432 80 ) ( 288 -432 81 ) ( 288 -431 80 ) e1u1/florr1_8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( -160 -448 88 ) ( -160 -447 88 ) ( -160 -448 89 ) e1u1/ggrat4_2 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 -448 88 ) ( -160 -448 89 ) ( -159 -448 88 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -32 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( -160 -448 96 ) ( -159 -448 96 ) ( -160 -447 96 ) e1u1/ggrat4_2 [ 0 1.0000000000000002 0 0 ] [ 1.0000000000000002 0 0 -32 ] 0 1 1
|
||||
( 288 -432 352 ) ( 288 -431 352 ) ( 289 -432 352 ) e1u1/ggrat4_2 [ 0 1.0000000000000002 0 0 ] [ -1.0000000000000002 0 0 -96 ] 0 1 1
|
||||
( 288 -432 96 ) ( 289 -432 96 ) ( 288 -432 97 ) e1u1/ggrat4_2 [ 1.0000000000000002 0 0 -80 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( 288 -432 96 ) ( 288 -432 97 ) ( 288 -431 96 ) e1u1/ggrat4_2 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -160 -256 352 ) ( -160 -255 352 ) ( -160 -256 353 ) e1u1/florr1_8 [ 0 0 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1
|
||||
( 288 -432 360 ) ( 288 -432 361 ) ( 289 -432 360 ) e1u1/florr1_8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1
|
||||
( -160 -256 352 ) ( -159 -256 352 ) ( -160 -255 352 ) e1u1/florr1_8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 368 ) ( 288 177 368 ) ( 289 176 368 ) e1u1/florr1_8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 360 ) ( 289 176 360 ) ( 288 176 361 ) e1u1/florr1_8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1
|
||||
( 288 176 360 ) ( 288 176 361 ) ( 288 177 360 ) e1u1/florr1_8 [ 0 0 1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( 288 192 80 ) ( 288 193 80 ) ( 288 192 81 ) e1u1/ggrat4_2 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( 304 -432 64 ) ( 303 -432 64 ) ( 304 -432 65 ) e1u1/ggrat4_2 [ -1 0 0 16 ] [ 0 0 -1 -32 ] 180 1 1
|
||||
( 304 -256 96 ) ( 304 -255 96 ) ( 303 -256 96 ) e1u1/ggrat4_2 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 304 -256 352 ) ( 303 -256 352 ) ( 304 -255 352 ) e1u1/ggrat4_2 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 80 ) ( 288 176 81 ) ( 287 176 80 ) e1u1/ggrat4_2 [ 1 0 0 -16 ] [ 0 0 -1 -32 ] 180 1 1
|
||||
( 304 -256 64 ) ( 304 -256 65 ) ( 304 -255 64 ) e1u1/ggrat4_2 [ 0 -1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( 16 -48 96 ) ( 16 -47 96 ) ( 16 -48 97 ) e1u1/caution1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 32 -48 96 ) ( 32 -48 97 ) ( 33 -48 96 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 32 -48 96 ) ( 33 -48 96 ) ( 32 -47 96 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 48 -16 192 ) ( 48 -15 192 ) ( 49 -16 192 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 48 176 112 ) ( 49 176 112 ) ( 48 176 113 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 48 -16 112 ) ( 48 -16 113 ) ( 48 -15 112 ) e1u1/caution1_1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( 16 -240 96 ) ( 16 -239 96 ) ( 16 -240 97 ) e1u1/caution1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 32 -432 96 ) ( 32 -432 97 ) ( 33 -432 96 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 32 -240 96 ) ( 33 -240 96 ) ( 32 -239 96 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 -1 0 -64 ] 0 1 1
|
||||
( 48 -208 192 ) ( 48 -207 192 ) ( 49 -208 192 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 -1 0 -64 ] 0 1 1
|
||||
( 48 -208 112 ) ( 49 -208 112 ) ( 48 -208 113 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 48 -208 112 ) ( 48 -208 113 ) ( 48 -207 112 ) e1u1/caution1_1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 8
|
||||
{
|
||||
( 16 -48 192 ) ( 16 -47 192 ) ( 16 -48 193 ) e1u1/caution1_1 [ 0 -1 0 0 ] [ 0 0 -1 96 ] 0 1 1
|
||||
( 32 -432 192 ) ( 32 -432 193 ) ( 33 -432 192 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 0 -1 96 ] 0 1 1
|
||||
( 32 -48 192 ) ( 33 -48 192 ) ( 32 -47 192 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 48 -16 352 ) ( 48 -15 352 ) ( 49 -16 352 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 48 176 208 ) ( 49 176 208 ) ( 48 176 209 ) e1u1/caution1_1 [ -1 0 0 0 ] [ 0 0 -1 96 ] 0 1 1
|
||||
( 48 -16 208 ) ( 48 -16 209 ) ( 48 -15 208 ) e1u1/caution1_1 [ 0 1 0 0 ] [ 0 0 -1 96 ] 0 1 1
|
||||
}
|
||||
// brush 9
|
||||
{
|
||||
( 16 -128 112 ) ( 16 -144 96 ) ( 16 -112 96 ) e1u1/caution1_1 [ 0 1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1 134217728 0 0
|
||||
( 16 -128 112 ) ( 48 -128 112 ) ( 48 -144 96 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 134217728 0 0
|
||||
( 48 -144 96 ) ( 48 -112 96 ) ( 16 -112 96 ) e1u1/caution1_1 [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 0 -16 ] 0 1 1 134217728 0 0
|
||||
( 48 -128 112 ) ( 16 -128 112 ) ( 16 -112 96 ) e1u1/caution1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 134217728 0 0
|
||||
( 48 -128 112 ) ( 48 -112 96 ) ( 48 -144 96 ) e1u1/caution1_1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1 134217728 0 0
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "72 -136 168"
|
||||
"light" "3000"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-88 -112 120"
|
||||
}
|
||||
// entity 3
|
||||
{
|
||||
"classname" "func_areaportal"
|
||||
// brush 0
|
||||
{
|
||||
( 16 -136 96 ) ( 16 -135 96 ) ( 16 -136 97 ) e1u1/trigger [ 0 0 -1.0000000000000002 16 ] [ 0 -1.0000000000000002 0 -8 ] 180 1 1 65536 128 0
|
||||
( 80 -208 96 ) ( 80 -208 97 ) ( 81 -208 96 ) e1u1/trigger [ -1.0000000000000002 0 0 0 ] [ 0 0 -1.0000000000000002 16 ] 180 1 1 65536 128 0
|
||||
( 80 -136 96 ) ( 81 -136 96 ) ( 80 -135 96 ) e1u1/trigger [ -1 0 0 0 ] [ 0 -1 0 -8 ] 180 1 1 65536 128 0
|
||||
( 144 -56 192 ) ( 144 -55 192 ) ( 145 -56 192 ) e1u1/trigger [ -1 0 0 0 ] [ 0 -1 0 -8 ] 180 1 1 65536 128 0
|
||||
( 144 -48 112 ) ( 145 -48 112 ) ( 144 -48 113 ) e1u1/trigger [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1 65536 128 0
|
||||
( 48 -56 112 ) ( 48 -56 113 ) ( 48 -55 112 ) e1u1/trigger [ 0 0 1.0000000000000002 -16 ] [ 0 -1.0000000000000002 0 -8 ] 180 1 1 65536 128 0
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue