From 38e27a38ecb524d400e502148ad62089be445ea3 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Sun, 24 Oct 2021 23:23:05 -0600 Subject: [PATCH 1/3] testmaps: add q2 detail/playerclip testmaps --- testmaps/qbsp_q2_detail.map | 91 +++++++++++++++++++++++++++++ testmaps/qbsp_q2_playerclip.map | 100 ++++++++++++++++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 testmaps/qbsp_q2_detail.map create mode 100644 testmaps/qbsp_q2_playerclip.map diff --git a/testmaps/qbsp_q2_detail.map b/testmaps/qbsp_q2_detail.map new file mode 100644 index 00000000..c73d4241 --- /dev/null +++ b/testmaps/qbsp_q2_detail.map @@ -0,0 +1,91 @@ +// 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 +{ +( 56 -8 96 ) ( 56 -7 96 ) ( 56 -8 97 ) e1u1/ggrat4_2 [ 0 1.0000000000000002 0 -120 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +( 56 -8 96 ) ( 56 -8 97 ) ( 57 -8 96 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( 56 -8 96 ) ( 57 -8 96 ) ( 56 -7 96 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -48 ] 0 1 1 +( 72 176 168 ) ( 72 177 168 ) ( 73 176 168 ) e1u1/ggrat4_2 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 -24 ] 0 1 1 +( 72 176 104 ) ( 73 176 104 ) ( 72 176 105 ) e1u1/ggrat4_2 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( 72 176 104 ) ( 72 176 105 ) ( 72 177 104 ) e1u1/ggrat4_2 [ 0 -1.0000000000000002 0 88 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +} +// brush 7 +{ +( 32 -120 96 ) ( 32 -119 96 ) ( 32 -120 97 ) e1u1/box3_8 [ 0 0 -1.0000000000000002 48 ] [ 0 -1.0000000000000002 0 -24 ] 180 1 1 134217728 0 0 +( 16 -88 96 ) ( 16 -88 97 ) ( 17 -88 96 ) e1u1/box3_8 [ -1.0000000000000002 0 0 -32 ] [ 0 0 -1.0000000000000002 48 ] 180 1 1 134217728 0 0 +( 16 -120 96 ) ( 17 -120 96 ) ( 16 -119 96 ) e1u1/box3_8 [ -1 0 0 -32 ] [ 0 -1 0 -24 ] 180 1 1 134217728 0 0 +( 80 -40 104 ) ( 80 -39 104 ) ( 81 -40 104 ) e1u1/box3_8 [ -1 0 0 -32 ] [ 0 -1 0 -24 ] 180 1 1 134217728 0 0 +( 80 -24 112 ) ( 81 -24 112 ) ( 80 -24 113 ) e1u1/box3_8 [ -1.0000000000000002 0 0 -32 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1 134217728 0 0 +( 96 -40 112 ) ( 96 -40 113 ) ( 96 -39 112 ) e1u1/box3_8 [ 0 0 1.0000000000000002 -16 ] [ 0 -1.0000000000000002 0 -24 ] 180 1 1 134217728 0 0 +} +} +// entity 1 +{ +"classname" "light" +"origin" "72 -136 168" +"light" "3000" +} +// entity 2 +{ +"classname" "info_player_start" +"origin" "-88 -64 120" +} diff --git a/testmaps/qbsp_q2_playerclip.map b/testmaps/qbsp_q2_playerclip.map new file mode 100644 index 00000000..57f159f6 --- /dev/null +++ b/testmaps/qbsp_q2_playerclip.map @@ -0,0 +1,100 @@ +// 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 -136 96 ) ( 16 -135 96 ) ( 16 -136 97 ) e1u1/clip [ 0 0 -1.0000000000000002 16 ] [ 0 -1.0000000000000002 0 -8 ] 180 1 1 65536 128 0 +( 80 -224 96 ) ( 80 -224 97 ) ( 81 -224 96 ) e1u1/clip [ -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/clip [ -1 0 0 0 ] [ 0 -1 0 -8 ] 180 1 1 65536 128 0 +( 144 -56 192 ) ( 144 -55 192 ) ( 145 -56 192 ) e1u1/clip [ -1 0 0 0 ] [ 0 -1 0 -8 ] 180 1 1 65536 128 0 +( 144 -40 112 ) ( 145 -40 112 ) ( 144 -40 113 ) e1u1/clip [ -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/clip [ 0 0 1.0000000000000002 -16 ] [ 0 -1.0000000000000002 0 -8 ] 180 1 1 65536 128 0 +} +// brush 7 +{ +( 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 -16 112 ) ( 49 -16 112 ) ( 48 -16 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 8 +{ +( 16 -240 96 ) ( 16 -239 96 ) ( 16 -240 97 ) e1u1/caution1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 32 -240 96 ) ( 32 -240 97 ) ( 33 -240 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 +} +} +// entity 1 +{ +"classname" "light" +"origin" "72 -136 168" +"light" "3000" +} +// entity 2 +{ +"classname" "info_player_start" +"origin" "-88 -112 120" +} From 02d32840453781ea9d1b12a6c4051403bed88704 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Mon, 25 Oct 2021 00:05:11 -0600 Subject: [PATCH 2/3] bspfile: get rid of default implementations of contents_are_empty/solid/sky --- common/bspfile.cc | 15 +++++++++++++++ include/common/bspfile.hh | 15 +++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/common/bspfile.cc b/common/bspfile.cc index 12862401..0742c356 100644 --- a/common/bspfile.cc +++ b/common/bspfile.cc @@ -169,6 +169,21 @@ struct gamedef_q1_like_t : public gamedef_t return {liquid_type, cflags}; } + bool contents_are_empty(const contentflags_t &contents) const + { + return contents.native == CONTENTS_EMPTY; + } + + bool contents_are_solid(const contentflags_t& contents) const + { + return contents.native == CONTENTS_SOLID; + } + + bool contents_are_sky(const contentflags_t& contents) const + { + return contents.native == CONTENTS_SKY; + } + bool contents_are_liquid(const contentflags_t &contents) const { return contents.native <= CONTENTS_WATER && contents.native >= CONTENTS_LAVA; diff --git a/include/common/bspfile.hh b/include/common/bspfile.hh index 83f0711c..41676e56 100644 --- a/include/common/bspfile.hh +++ b/include/common/bspfile.hh @@ -1743,18 +1743,9 @@ struct gamedef_t virtual contentflags_t create_solid_contents(const int32_t &cflags = 0) const = 0; virtual contentflags_t create_sky_contents(const int32_t &cflags = 0) const = 0; virtual contentflags_t create_liquid_contents(const int32_t &liquid_type, const int32_t &cflags = 0) const = 0; - virtual bool contents_are_empty(const contentflags_t &contents) const - { - return contents.native == create_empty_contents().native; - } - virtual bool contents_are_solid(const contentflags_t &contents) const - { - return contents.native == create_solid_contents().native; - } - virtual bool contents_are_sky(const contentflags_t &contents) const - { - return contents.native == create_sky_contents().native; - } + virtual bool contents_are_empty(const contentflags_t &contents) const = 0; + virtual bool contents_are_solid(const contentflags_t &contents) const = 0; + virtual bool contents_are_sky(const contentflags_t &contents) const = 0; virtual bool contents_are_liquid(const contentflags_t &contents) const = 0; virtual bool contents_are_valid(const contentflags_t &contents, bool strict = true) const = 0; virtual bool portal_can_see_through(const contentflags_t &contents0, const contentflags_t &contents1) const = 0; From d2837eb58c71b0cfc60aebb7a76d02e4ce92bdfc Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Mon, 25 Oct 2021 01:11:09 -0600 Subject: [PATCH 3/3] bspfile: contents_are_[empty/solid/sky/liquid]: return false if an extended content type --- common/bspfile.cc | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/common/bspfile.cc b/common/bspfile.cc index 0742c356..b8485725 100644 --- a/common/bspfile.cc +++ b/common/bspfile.cc @@ -171,21 +171,33 @@ struct gamedef_q1_like_t : public gamedef_t bool contents_are_empty(const contentflags_t &contents) const { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + return contents.native == CONTENTS_EMPTY; } bool contents_are_solid(const contentflags_t& contents) const { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + return contents.native == CONTENTS_SOLID; } bool contents_are_sky(const contentflags_t& contents) const { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + return contents.native == CONTENTS_SKY; } bool contents_are_liquid(const contentflags_t &contents) const { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + return contents.native <= CONTENTS_WATER && contents.native >= CONTENTS_LAVA; } @@ -346,14 +358,29 @@ struct gamedef_q2_t : public gamedef_t bool contents_are_empty(const contentflags_t &contents) const { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + return !(contents.native & ((Q2_LAST_VISIBLE_CONTENTS << 1) - 1)); } - bool contents_are_solid(const contentflags_t &contents) const { return contents.native & Q2_CONTENTS_SOLID; } + bool contents_are_solid(const contentflags_t &contents) const + { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + + return contents.native & Q2_CONTENTS_SOLID; + } bool contents_are_sky(const contentflags_t &contents) const { return false; } - bool contents_are_liquid(const contentflags_t &contents) const { return contents.native & Q2_CONTENTS_LIQUID; } + bool contents_are_liquid(const contentflags_t &contents) const + { + if (contents.extended & CFLAGS_CONTENTS_MASK) + return false; + + return contents.native & Q2_CONTENTS_LIQUID; + } bool contents_are_valid(const contentflags_t &contents, bool strict) const {