qbsp: allow _litwater/_splitturb as a bmodel key
supports both opt-in and opt-out
This commit is contained in:
parent
f6d5e6e24d
commit
d38ef2d8af
22
qbsp/map.cc
22
qbsp/map.cc
|
|
@ -551,9 +551,13 @@ static bool IsNoExpandName(const char *name)
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool IsSpecialName(const char *name)
|
||||
/**
|
||||
* "Special" refers to TEX_SPECIAL, which means "non-lightmapped" and
|
||||
* therefore non-subdivided.
|
||||
*/
|
||||
static bool IsSpecialName(const char *name, bool allow_litwater)
|
||||
{
|
||||
if (name[0] == '*' && !qbsp_options.splitturb.value())
|
||||
if (name[0] == '*' && !allow_litwater)
|
||||
return true;
|
||||
if (!Q_strncasecmp(name, "sky", 3) && !qbsp_options.splitsky.value())
|
||||
return true;
|
||||
|
|
@ -626,6 +630,18 @@ static surfflags_t SurfFlagsForEntity(
|
|||
const int shadow = entity.epairs.get_int("_shadow");
|
||||
bool is_translucent = false;
|
||||
|
||||
// lit water: use worldspawn key by default, but allow overriding with bmodel keys
|
||||
// TODO: use a setting_container for these things, rather than custom parsing
|
||||
// TODO: support lit water opt-out in Q2 mode
|
||||
bool allow_litwater = false;
|
||||
if (entity.epairs.has("_litwater")) {
|
||||
allow_litwater = (entity.epairs.get_int("_litwater") > 0);
|
||||
} else if (entity.epairs.has("_splitturb")) {
|
||||
allow_litwater = (entity.epairs.get_int("_splitturb") > 0);
|
||||
} else {
|
||||
allow_litwater = qbsp_options.splitturb.value();
|
||||
}
|
||||
|
||||
// These flags are pulled from surf flags in Q2.
|
||||
// TODO: the Q1 version of this block can now be moved into texinfo
|
||||
// loading by shoving them inside of texinfo.flags like
|
||||
|
|
@ -640,7 +656,7 @@ static surfflags_t SurfFlagsForEntity(
|
|||
flags.is_nodraw = true;
|
||||
if (IsHintName(texname))
|
||||
flags.is_hint = true;
|
||||
if (IsSpecialName(texname))
|
||||
if (IsSpecialName(texname, allow_litwater))
|
||||
flags.native |= TEX_SPECIAL;
|
||||
} else {
|
||||
flags.native = texinfo.flags.native;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,139 @@
|
|||
// Game: Quake
|
||||
// Format: Valve
|
||||
// entity 0
|
||||
{
|
||||
"classname" "worldspawn"
|
||||
"wad" "deprecated/free_wad.wad"
|
||||
"_tb_def" "builtin:Quake.fgd"
|
||||
"_litwater" "1"
|
||||
// brush 0
|
||||
{
|
||||
( -416 -128 32 ) ( -416 -127 32 ) ( -416 -128 33 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -208 32 ) ( -416 -208 33 ) ( -415 -208 32 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -128 32 ) ( -415 -128 32 ) ( -416 -127 32 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 48 ) ( 128 273 48 ) ( 129 272 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 48 ) ( 129 272 48 ) ( 128 272 49 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 48 ) ( 128 272 49 ) ( 128 273 48 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -416 -128 288 ) ( -416 -127 288 ) ( -416 -128 289 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -208 288 ) ( -416 -208 289 ) ( -415 -208 288 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -128 288 ) ( -415 -128 288 ) ( -416 -127 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 304 ) ( 128 273 304 ) ( 129 272 304 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 304 ) ( 129 272 304 ) ( 128 272 305 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 304 ) ( 128 272 305 ) ( 128 273 304 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -432 -128 272 ) ( -432 -127 272 ) ( -432 -128 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 -208 272 ) ( -432 -208 273 ) ( -431 -208 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 -128 48 ) ( -431 -128 48 ) ( -432 -127 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 112 272 288 ) ( 112 273 288 ) ( 113 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 112 272 288 ) ( 113 272 288 ) ( 112 272 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 272 288 ) ( -416 272 289 ) ( -416 273 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( 128 -128 272 ) ( 128 -127 272 ) ( 128 -128 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 -208 272 ) ( 128 -208 273 ) ( 129 -208 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 -128 48 ) ( 129 -128 48 ) ( 128 -127 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 672 272 288 ) ( 672 273 288 ) ( 673 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 672 272 288 ) ( 673 272 288 ) ( 672 272 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 144 272 288 ) ( 144 272 289 ) ( 144 273 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -416 -144 272 ) ( -416 -143 272 ) ( -416 -144 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 96 -224 272 ) ( 96 -224 273 ) ( 97 -224 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 96 -144 48 ) ( 97 -144 48 ) ( 96 -143 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 640 256 288 ) ( 640 257 288 ) ( 641 256 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 640 -208 288 ) ( 641 -208 288 ) ( 640 -208 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 256 288 ) ( 128 256 289 ) ( 128 257 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( -416 256 48 ) ( -416 257 48 ) ( -416 256 49 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 256 48 ) ( -432 256 49 ) ( -431 256 48 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 256 48 ) ( -431 256 48 ) ( -432 257 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 288 ) ( 128 273 288 ) ( 129 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 64 ) ( 129 272 64 ) ( 128 272 65 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 64 ) ( 128 272 65 ) ( 128 273 64 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( -320 96 52 ) ( -320 97 52 ) ( -320 96 53 ) *lava_s2 [ 0 0 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1
|
||||
( -320 96 52 ) ( -320 96 53 ) ( -319 96 52 ) *lava_s2 [ 1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 0 ] 0 1 1
|
||||
( -320 96 48 ) ( -319 96 48 ) ( -320 97 48 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -256 156 128 ) ( -256 157 128 ) ( -255 156 128 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -256 160 56 ) ( -255 160 56 ) ( -256 160 57 ) *lava_s2 [ 1.0000000000000002 0 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
|
||||
( -256 156 56 ) ( -256 156 57 ) ( -256 157 56 ) *lava_s2 [ 0 0 1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( -320 -28 128 ) ( -320 -27 128 ) ( -320 -28 129 ) bolt3 [ 0 0 -1.0000000000000002 60 ] [ 0 -1.0000000000000002 0 -28 ] 0 1 1
|
||||
( -320 -32 128 ) ( -320 -32 129 ) ( -319 -32 128 ) bolt3 [ 1.0000000000000002 0 0 60 ] [ 0 0 1.0000000000000002 0 ] 0 1 1
|
||||
( -320 -28 128 ) ( -319 -28 128 ) ( -320 -27 128 ) bolt3 [ 1 0 0 60 ] [ 0 -1 0 -28 ] 0 1 1
|
||||
( -256 32 132 ) ( -256 33 132 ) ( -255 32 132 ) bolt3 [ 1 0 0 60 ] [ 0 -1 0 -28 ] 0 1 1
|
||||
( -256 32 132 ) ( -255 32 132 ) ( -256 32 133 ) bolt3 [ 1.0000000000000002 0 0 60 ] [ 0 0 -1.0000000000000002 4 ] 0 1 1
|
||||
( 16 32 132 ) ( 16 32 133 ) ( 16 33 132 ) bolt3 [ 0 0 1.0000000000000002 -4 ] [ 0 -1.0000000000000002 0 -28 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-292 0 156"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-284 124 212"
|
||||
"_color" "0 0 1"
|
||||
}
|
||||
// entity 3
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-156 124 212"
|
||||
"_color" "0 0 1"
|
||||
}
|
||||
// entity 4
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-28 124 212"
|
||||
"_color" "0 0 1"
|
||||
}
|
||||
// entity 5
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-28 124 84"
|
||||
"_color" "0 1 0"
|
||||
}
|
||||
// entity 6
|
||||
{
|
||||
"classname" "func_group"
|
||||
"_splitturb" "0"
|
||||
// brush 0
|
||||
{
|
||||
( -192 96 52 ) ( -192 97 52 ) ( -192 96 53 ) *lava_s2 [ 0 -1 0 -32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -192 96 52 ) ( -192 96 53 ) ( -191 96 52 ) *lava_s2 [ 1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -192 96 48 ) ( -191 96 48 ) ( -192 97 48 ) *lava_s2 [ -1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -128 156 128 ) ( -128 157 128 ) ( -127 156 128 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -128 160 56 ) ( -127 160 56 ) ( -128 160 57 ) *lava_s2 [ -1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -128 156 56 ) ( -128 156 57 ) ( -128 157 56 ) *lava_s2 [ 0 1 0 32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 7
|
||||
{
|
||||
"classname" "func_group"
|
||||
"_lightignore" "1"
|
||||
"_minlight" "100"
|
||||
// brush 0
|
||||
{
|
||||
( -64 96 52 ) ( -64 97 52 ) ( -64 96 53 ) *zwater1 [ 0 -1 0 -32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -64 96 52 ) ( -64 96 53 ) ( -63 96 52 ) *zwater1 [ 1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -64 96 48 ) ( -63 96 48 ) ( -64 97 48 ) *zwater1 [ -1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 0 156 128 ) ( 0 157 128 ) ( 1 156 128 ) *zwater1 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 0 160 56 ) ( 1 160 56 ) ( 0 160 57 ) *zwater1 [ -1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( 0 156 56 ) ( 0 156 57 ) ( 0 157 56 ) *zwater1 [ 0 1 0 32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
// Game: Quake
|
||||
// Format: Valve
|
||||
// entity 0
|
||||
{
|
||||
"classname" "worldspawn"
|
||||
"wad" "deprecated/free_wad.wad"
|
||||
"_tb_def" "builtin:Quake.fgd"
|
||||
"_litwater" "0"
|
||||
// brush 0
|
||||
{
|
||||
( -416 -128 32 ) ( -416 -127 32 ) ( -416 -128 33 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -208 32 ) ( -416 -208 33 ) ( -415 -208 32 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -128 32 ) ( -415 -128 32 ) ( -416 -127 32 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 48 ) ( 128 273 48 ) ( 129 272 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 48 ) ( 129 272 48 ) ( 128 272 49 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 48 ) ( 128 272 49 ) ( 128 273 48 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -416 -128 288 ) ( -416 -127 288 ) ( -416 -128 289 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -208 288 ) ( -416 -208 289 ) ( -415 -208 288 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 -128 288 ) ( -415 -128 288 ) ( -416 -127 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 304 ) ( 128 273 304 ) ( 129 272 304 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 304 ) ( 129 272 304 ) ( 128 272 305 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 304 ) ( 128 272 305 ) ( 128 273 304 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -432 -128 272 ) ( -432 -127 272 ) ( -432 -128 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 -208 272 ) ( -432 -208 273 ) ( -431 -208 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 -128 48 ) ( -431 -128 48 ) ( -432 -127 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 112 272 288 ) ( 112 273 288 ) ( 113 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 112 272 288 ) ( 113 272 288 ) ( 112 272 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -416 272 288 ) ( -416 272 289 ) ( -416 273 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( 128 -128 272 ) ( 128 -127 272 ) ( 128 -128 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 -208 272 ) ( 128 -208 273 ) ( 129 -208 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 -128 48 ) ( 129 -128 48 ) ( 128 -127 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 672 272 288 ) ( 672 273 288 ) ( 673 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 672 272 288 ) ( 673 272 288 ) ( 672 272 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 144 272 288 ) ( 144 272 289 ) ( 144 273 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -416 -144 272 ) ( -416 -143 272 ) ( -416 -144 273 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 96 -224 272 ) ( 96 -224 273 ) ( 97 -224 272 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 96 -144 48 ) ( 97 -144 48 ) ( 96 -143 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 640 256 288 ) ( 640 257 288 ) ( 641 256 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 640 -208 288 ) ( 641 -208 288 ) ( 640 -208 289 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 256 288 ) ( 128 256 289 ) ( 128 257 288 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( -416 256 48 ) ( -416 257 48 ) ( -416 256 49 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 256 48 ) ( -432 256 49 ) ( -431 256 48 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -432 256 48 ) ( -431 256 48 ) ( -432 257 48 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 288 ) ( 128 273 288 ) ( 129 272 288 ) bolt3 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( 128 272 64 ) ( 129 272 64 ) ( 128 272 65 ) bolt3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 128 272 64 ) ( 128 272 65 ) ( 128 273 64 ) bolt3 [ 0 1 0 32 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( -320 -28 128 ) ( -320 -27 128 ) ( -320 -28 129 ) bolt3 [ 0 0 -1.0000000000000002 60 ] [ 0 -1.0000000000000002 0 -28 ] 0 1 1
|
||||
( -320 -32 128 ) ( -320 -32 129 ) ( -319 -32 128 ) bolt3 [ 1.0000000000000002 0 0 60 ] [ 0 0 1.0000000000000002 0 ] 0 1 1
|
||||
( -320 -28 128 ) ( -319 -28 128 ) ( -320 -27 128 ) bolt3 [ 1 0 0 60 ] [ 0 -1 0 -28 ] 0 1 1
|
||||
( -256 32 132 ) ( -256 33 132 ) ( -255 32 132 ) bolt3 [ 1 0 0 60 ] [ 0 -1 0 -28 ] 0 1 1
|
||||
( -256 32 132 ) ( -255 32 132 ) ( -256 32 133 ) bolt3 [ 1.0000000000000002 0 0 60 ] [ 0 0 -1.0000000000000002 4 ] 0 1 1
|
||||
( 16 32 132 ) ( 16 32 133 ) ( 16 33 132 ) bolt3 [ 0 0 1.0000000000000002 -4 ] [ 0 -1.0000000000000002 0 -28 ] 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( -192 96 52 ) ( -192 97 52 ) ( -192 96 53 ) *lava_s2 [ 0 -1 0 -32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -192 96 52 ) ( -192 96 53 ) ( -191 96 52 ) *lava_s2 [ 1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -192 96 48 ) ( -191 96 48 ) ( -192 97 48 ) *lava_s2 [ -1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -128 156 128 ) ( -128 157 128 ) ( -127 156 128 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -128 160 56 ) ( -127 160 56 ) ( -128 160 57 ) *lava_s2 [ -1 0 0 0 ] [ 0 0 -1 4 ] 0 1 1
|
||||
( -128 156 56 ) ( -128 156 57 ) ( -128 157 56 ) *lava_s2 [ 0 1 0 32 ] [ 0 0 -1 4 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-292 0 156"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-284 124 212"
|
||||
"_color" "0 0 1"
|
||||
}
|
||||
// entity 3
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "-156 124 212"
|
||||
"_color" "0 0 1"
|
||||
}
|
||||
// entity 4
|
||||
{
|
||||
"classname" "func_group"
|
||||
"_litwater" "1"
|
||||
// brush 0
|
||||
{
|
||||
( -320 96 52 ) ( -320 97 52 ) ( -320 96 53 ) *lava_s2 [ 0 0 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1
|
||||
( -320 96 52 ) ( -320 96 53 ) ( -319 96 52 ) *lava_s2 [ 1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 0 ] 0 1 1
|
||||
( -320 96 48 ) ( -319 96 48 ) ( -320 97 48 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -256 156 128 ) ( -256 157 128 ) ( -255 156 128 ) *lava_s2 [ 1 0 0 0 ] [ 0 -1 0 -32 ] 0 1 1
|
||||
( -256 160 56 ) ( -255 160 56 ) ( -256 160 57 ) *lava_s2 [ 1.0000000000000002 0 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
|
||||
( -256 156 56 ) ( -256 156 57 ) ( -256 157 56 ) *lava_s2 [ 0 0 1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1
|
||||
}
|
||||
}
|
||||
|
|
@ -739,4 +739,43 @@ TEST_CASE("q2_minlight_inherited + -noextendedsurfflags")
|
|||
INFO("check that func_wall can override worldspawn minlight color");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[3], {0, 64, 0}, {208, -248, 16}, {0, 0, 1}, nullptr, &bspx);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("lit water")
|
||||
{
|
||||
auto [bsp, bspx, lit] = QbspVisLight_Q1("q1_litwater.map", {});
|
||||
|
||||
{
|
||||
INFO("cube 1: lava has blue lightmap");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {0, 10, 171}, {-288, 120, 128}, {0, 0, 1}, &lit);
|
||||
}
|
||||
|
||||
{
|
||||
INFO("cube 2: non-lightmapped via _splitturb 0 func_group key");
|
||||
auto *f = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {-160, 120, 128}, {0, 0, 1});
|
||||
auto *ti = Face_Texinfo(&bsp, f);
|
||||
CHECK(ti->flags.native == TEX_SPECIAL);
|
||||
}
|
||||
|
||||
{
|
||||
INFO("cube 3: lightmapped, but using minlight only via _lightignore and _minlight func_group keys");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {50, 50, 50}, {-32, 120, 128}, {0, 0, 1}, &lit);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("lit water opt-in")
|
||||
{
|
||||
auto [bsp, bspx, lit] = QbspVisLight_Q1("q1_litwater_opt_in.map", {});
|
||||
|
||||
{
|
||||
INFO("cube 1: lava has blue lightmap (opt-in via _litwater 1)");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {0, 0, 162}, {-288, 120, 128}, {0, 0, 1}, &lit);
|
||||
}
|
||||
|
||||
{
|
||||
INFO("cube 2: non-lightmapped");
|
||||
auto *f = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {-160, 120, 128}, {0, 0, 1});
|
||||
auto *ti = Face_Texinfo(&bsp, f);
|
||||
CHECK(ti->flags.native == TEX_SPECIAL);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue