qbsp/light: implement _phong_group key, equivalent to Q2 "value" field

This commit is contained in:
Eric Wasylishen 2022-12-01 00:16:03 -07:00
parent 9fa9124404
commit 1065adecc6
7 changed files with 194 additions and 22 deletions

View File

@ -1725,13 +1725,13 @@ const bspversion_t bspver_qbism{Q2_QBISMIDENT, Q2_BSPVERSION, "qbism", "Quake II
bool surfflags_t::needs_write() const
{
return no_dirt || no_shadow || no_bounce || no_minlight || no_expand || light_ignore || !surflight_rescale || phong_angle ||
phong_angle_concave || minlight || !qv::emptyExact(minlight_color) || light_alpha || maxlight || lightcolorscale != 1.0;
phong_angle_concave || phong_group || minlight || !qv::emptyExact(minlight_color) || light_alpha || maxlight || lightcolorscale != 1.0;
}
static auto as_tuple(const surfflags_t &flags)
{
return std::tie(flags.native, flags.is_nodraw, flags.is_hintskip, flags.is_hint, flags.no_dirt, flags.no_shadow, flags.no_bounce, flags.no_minlight, flags.no_expand,
flags.light_ignore, flags.surflight_rescale, flags.phong_angle, flags.phong_angle_concave, flags.minlight, flags.minlight_color, flags.light_alpha, flags.maxlight, flags.lightcolorscale);
flags.light_ignore, flags.surflight_rescale, flags.phong_angle, flags.phong_angle_concave, flags.phong_group, flags.minlight, flags.minlight_color, flags.light_alpha, flags.maxlight, flags.lightcolorscale);
}
bool surfflags_t::operator<(const surfflags_t &other) const

View File

@ -195,6 +195,9 @@ struct surfflags_t
// if non zero, overrides _phong_angle for concave joints
vec_t phong_angle_concave;
// _phong_group key, equivalent q2 map format's use of the "value" field
int phong_group;
// minlight value for this face
vec_t minlight;

View File

@ -1092,6 +1092,9 @@ static void LoadExtendedTexinfoFlags(const fs::path &sourcefilename, const mbsp_
if (val.contains("phong_angle_concave")) {
flags.phong_angle_concave = val.at("phong_angle_concave").get<vec_t>();
}
if (val.contains("phong_group")) {
flags.phong_group = val.at("phong_group").get<int>();
}
if (val.contains("minlight")) {
flags.minlight = val.at("minlight").get<vec_t>();
}

View File

@ -392,6 +392,12 @@ int Q2_FacePhongValue(const mbsp_t *bsp, const mface_t *face)
{
const mtexinfo_t *texinfo = BSP_GetTexinfo(bsp, face->texinfo);
if (texinfo != nullptr) {
// FIXME: would be more convenient if common code loaded texinfo file
// so we could access these in mtexinfo_t rather than extended_texinfo_flags
if (auto phong_group = extended_texinfo_flags[face->texinfo].phong_group) {
// Q1 _phong_group syntax (also works in Q2 maps)
return phong_group;
}
if (texinfo->value != 0 && ((texinfo->flags.native & Q2_SURF_LIGHT) == 0)) {
return texinfo->value;
}

View File

@ -616,6 +616,8 @@ static surfflags_t SurfFlagsForEntity(const maptexinfo_t &texinfo, const mapenti
const vec_t phong_angle_concave = entity.epairs.get_float("_phong_angle_concave");
flags.phong_angle_concave = clamp(phong_angle_concave, 0.0, 360.0);
flags.phong_group = entity.epairs.get_int("_phong_group");
// handle "_minlight"
const vec_t minlight = entity.epairs.get_float("_minlight");
if (minlight > 0) {

View File

@ -377,6 +377,9 @@ static void WriteExtendedTexinfoFlags(void)
if (tx.flags.phong_angle_concave) {
t["phong_angle_concave"] = tx.flags.phong_angle_concave;
}
if (tx.flags.phong_group) {
t["phong_group"] = tx.flags.phong_group;
}
if (tx.flags.minlight) {
t["minlight"] = tx.flags.minlight;
}

View File

@ -8,17 +8,17 @@
"_phong" "1"
// brush 0
{
( 368 64 112 ) ( 368 -64 112 ) ( 368 64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 -16 ) ( 368 -64 -16 ) ( 384 -64 112 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 384 64 -16 ) ( 368 64 -16 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 -1 0 0 ] 0 1 1
( 384 -64 272 ) ( 368 -64 272 ) ( 384 64 272 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 -1 0 0 ] 0 1 1
( 384 224 112 ) ( 368 224 112 ) ( 384 224 -16 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 112 ) ( 384 64 112 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1328 64 112 ) ( 1328 -64 112 ) ( 1328 64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 -240 -16 ) ( 1328 -240 -16 ) ( 1344 -240 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 64 -16 ) ( 1328 64 -16 ) ( 1344 -64 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1344 -64 272 ) ( 1328 -64 272 ) ( 1344 64 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1344 224 112 ) ( 1328 224 112 ) ( 1344 224 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 -64 112 ) ( 1344 64 112 ) ( 1344 -64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( -496 112 -16 ) ( -496 240 -16 ) ( -496 112 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -496 -48 112 ) ( -480 -48 112 ) ( -496 -48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -496 -256 112 ) ( -480 -256 112 ) ( -496 -256 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -496 112 -16 ) ( -480 112 -16 ) ( -496 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -496 240 272 ) ( -480 240 272 ) ( -496 112 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -496 240 -16 ) ( -480 240 -16 ) ( -496 240 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
@ -31,34 +31,34 @@
( -480 240 -16 ) ( -480 224 -16 ) ( -384 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -384 240 272 ) ( -384 224 272 ) ( -480 240 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -384 240 112 ) ( -480 240 112 ) ( -384 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 240 -16 ) ( 384 224 -16 ) ( 384 240 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 240 -16 ) ( 1344 224 -16 ) ( 1344 240 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 3
{
( -480 -64 -16 ) ( -480 -48 -16 ) ( -480 -64 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -64 -16 ) ( -48 -64 -16 ) ( 48 -64 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -64 -16 ) ( 48 -48 -16 ) ( -48 -64 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -64 272 ) ( -48 -48 272 ) ( 48 -64 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -48 -16 ) ( 48 -48 -16 ) ( -48 -48 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 112 ) ( 384 -48 112 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -480 -256 -16 ) ( -480 -240 -16 ) ( -480 -256 112 ) e1u1/c_met11_2 [ 0 1 0 64 ] [ 0 0 -1 0 ] 0 1 1
( 48 -256 -16 ) ( -48 -256 -16 ) ( 48 -256 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -256 -16 ) ( 48 -240 -16 ) ( -48 -256 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 -64 ] 0 1 1
( -48 -256 272 ) ( -48 -240 272 ) ( 48 -256 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 -64 ] 0 1 1
( -48 -240 -16 ) ( 48 -240 -16 ) ( -48 -240 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 -256 112 ) ( 1344 -240 112 ) ( 1344 -256 -16 ) e1u1/c_met11_2 [ 0 1 0 64 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 4
{
( -480 -48 288 ) ( -480 -48 272 ) ( -480 48 288 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -48 288 ) ( 48 -48 272 ) ( -48 -48 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -240 288 ) ( 48 -240 272 ) ( -48 -240 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 48 272 ) ( -48 48 272 ) ( 48 -48 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 48 48 288 ) ( 48 -48 288 ) ( -48 48 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 224 288 ) ( -48 224 272 ) ( 48 224 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 48 288 ) ( 384 48 272 ) ( 384 -48 288 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 48 288 ) ( 1344 48 272 ) ( 1344 -48 288 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 5
{
( -480 48 -16 ) ( -480 48 0 ) ( -480 -48 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -48 -48 -16 ) ( -48 -48 0 ) ( 48 -48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -48 -256 -16 ) ( -48 -256 0 ) ( 48 -256 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -48 48 -16 ) ( -48 -48 -16 ) ( 48 48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -48 0 ) ( -48 48 0 ) ( 48 -48 0 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 48 224 -16 ) ( 48 224 0 ) ( -48 224 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -48 -16 ) ( 384 -48 0 ) ( 384 48 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1344 -48 -16 ) ( 1344 -48 0 ) ( 1344 48 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 6
{
@ -162,12 +162,167 @@
( -1024 -64 92 ) ( -1023 -64 92 ) ( -1024 -63 92 ) e1u1/c_met11_2 [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 0 -112 ] 0 1 1
( 224 -32 96 ) ( 224 -31 96 ) ( 225 -32 96 ) e1u1/c_met11_2 [ 1.0000000000000002 0 0 0 ] [ 0 1.0000000000000002 0 -48 ] 0 1 1
( 224 -8 96 ) ( 225 -8 96 ) ( 224 -8 97 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 224 -32 96 ) ( 224 -32 97 ) ( 224 -31 96 ) e1u1/c_met11_2 [ 0 -1.0000000000000002 0 48 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
( 1328 -32 96 ) ( 1328 -32 97 ) ( 1328 -31 96 ) e1u1/c_met11_2 [ 0 -1.0000000000000002 0 48 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
}
}
// entity 1
{
"classname" "info_player_start"
"origin" "188.686 -28.4041 120"
"origin" "668.686 -28.4041 120"
"angle" "165"
}
// entity 2
{
"classname" "func_group"
"_phong_angle" "50"
// brush 0
{
( 152 144 0 ) ( 152 144 36 ) ( 152 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 232 77 0 ) ( 152 77 0 ) ( 152 144 36 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 -1 0 0 ] 0 1 1
( 232 77 0 ) ( 232 144 0 ) ( 152 144 0 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 -1 0 0 ] 0 1 1
( 232 144 0 ) ( 232 144 36 ) ( 152 144 36 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
( 232 77 0 ) ( 232 144 36 ) ( 232 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( 152 220 128 ) ( 152 144 36 ) ( 152 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 152 144 36 ) ( 232 144 36 ) ( 232 144 0 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
( 152 220 128 ) ( 232 220 128 ) ( 232 144 36 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
( 232 144 0 ) ( 232 220 0 ) ( 152 220 0 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 -1 0 0 ] 0 1 1
( 232 220 0 ) ( 232 220 128 ) ( 152 220 128 ) e1u1/c_met11_2 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
( 232 144 36 ) ( 232 220 128 ) ( 232 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 2
{
( 232 78 0 ) ( 312 78 32 ) ( 312 11 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 1 0 -27 ] 340.68057 1 1 0 0 1
( 232 11 0 ) ( 312 11 32 ) ( 312 11 0 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 312 11 0 ) ( 312 18 0 ) ( 232 78 0 ) e1u1/c_met11_2 [ -1 0 0 -72 ] [ 0 -1 0 -27 ] 0 1 1 0 0 1
( 312 77 27 ) ( 312 77 23 ) ( 440 77 23 ) e1u1/c_met11_2 [ -1 0 0 -82.63385 ] [ 0 0 -1 -41.17846 ] 0 1 1 0 0 1
( 312 11 32 ) ( 312 78 32 ) ( 312 18 0 ) e1u1/c_met11_2 [ 0 -1 0 27 ] [ 0 0 -1 0 ] 180 1 1 0 0 1
}
// brush 3
{
( 232 220 128 ) ( 232 144 36 ) ( 232 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 232 220 128 ) ( 312 220 160 ) ( 312 144 68 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 232 144 36 ) ( 312 144 68 ) ( 312 144 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( -48 -48 0 ) ( 48 -48 0 ) ( -48 48 0 ) e1u1/c_met11_2 [ -1 0 0 -97.19815 ] [ 0 -1 0 0 ] 0 1 1 0 0 1
( 312 220 32 ) ( 312 220 160 ) ( 232 220 128 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 312 144 68 ) ( 312 220 160 ) ( 312 220 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
}
// brush 4
{
( 232 144 0 ) ( 232 144 36 ) ( 232 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 232 144 36 ) ( 312 144 68 ) ( 312 77 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 -1 0 0 ] 0 1 1 0 0 1
( 312 77 13 ) ( 440 77 11 ) ( 312 77 11 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( -48 -48 0 ) ( 48 -48 0 ) ( -48 48 0 ) e1u1/c_met11_2 [ -1 0 0 -97.19815 ] [ 0 -1 0 0 ] 0 1 1 0 0 1
( 312 144 32 ) ( 312 144 68 ) ( 232 144 36 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
( 312 77 32 ) ( 312 144 68 ) ( 312 144 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 0 1
}
}
// entity 3
{
"classname" "func_group"
"_phong_angle" "50"
// brush 0
{
( 344 144 0 ) ( 344 144 36 ) ( 344 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 424 77 0 ) ( 344 77 0 ) ( 344 144 36 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 -1 0 0 ] 0 1 1
( 424 77 0 ) ( 424 144 0 ) ( 344 144 0 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 -1 0 0 ] 0 1 1
( 424 144 0 ) ( 424 144 36 ) ( 344 144 36 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 0 -1 0 ] 0 1 1
( 424 77 0 ) ( 424 144 36 ) ( 424 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( 344 220 128 ) ( 344 144 36 ) ( 344 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 344 144 36 ) ( 424 144 36 ) ( 424 144 0 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 0 -1 0 ] 0 1 1
( 344 220 128 ) ( 424 220 128 ) ( 424 144 36 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 0 -1 0 ] 0 1 1
( 424 144 0 ) ( 424 220 0 ) ( 344 220 0 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 -1 0 0 ] 0 1 1
( 424 220 0 ) ( 424 220 128 ) ( 344 220 128 ) e1u1/c_met11_2 [ 1 0 0 -56 ] [ 0 0 -1 0 ] 0 1 1
( 424 144 36 ) ( 424 220 128 ) ( 424 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
}
// entity 4
{
"classname" "func_group"
"_phong_angle" "50"
"_phong_group" "1"
// brush 0
{
( 424 220 128 ) ( 424 144 36 ) ( 424 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 424 220 128 ) ( 504 220 160 ) ( 504 144 68 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 424 144 36 ) ( 504 144 68 ) ( 504 144 32 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 144 -48 0 ) ( 240 -48 0 ) ( 144 48 0 ) e1u1/c_met11_2 [ -1 0 0 94.80185 ] [ 0 -1 0 0 ] 0 1 1
( 504 220 32 ) ( 504 220 160 ) ( 424 220 128 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 504 144 68 ) ( 504 220 160 ) ( 504 220 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( 424 78 0 ) ( 504 78 32 ) ( 504 11 32 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 1 0 -27 ] 340.68057 1 1
( 424 11 0 ) ( 504 11 32 ) ( 504 11 0 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 504 11 0 ) ( 504 18 0 ) ( 424 78 0 ) e1u1/c_met11_2 [ -1 0 0 120 ] [ 0 -1 0 -27 ] 0 1 1
( 504 77 27 ) ( 504 77 23 ) ( 632 77 23 ) e1u1/c_met11_2 [ -1 0 0 109.36615 ] [ 0 0 -1 -41.17846 ] 0 1 1
( 504 11 32 ) ( 504 78 32 ) ( 504 18 0 ) e1u1/c_met11_2 [ 0 -1 0 27 ] [ 0 0 -1 0 ] 180 1 1
}
// brush 2
{
( 424 144 0 ) ( 424 144 36 ) ( 424 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 424 144 36 ) ( 504 144 68 ) ( 504 77 32 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 -1 0 0 ] 0 1 1
( 504 77 13 ) ( 632 77 11 ) ( 504 77 11 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 144 -48 0 ) ( 240 -48 0 ) ( 144 48 0 ) e1u1/c_met11_2 [ -1 0 0 94.80185 ] [ 0 -1 0 0 ] 0 1 1
( 504 144 32 ) ( 504 144 68 ) ( 424 144 36 ) e1u1/c_met11_2 [ 1 0 0 -8 ] [ 0 0 -1 0 ] 0 1 1
( 504 77 32 ) ( 504 144 68 ) ( 504 144 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
}
// entity 5
{
"classname" "func_group"
"_phong_angle" "50"
// brush 0
{
( 536 144 0 ) ( 536 144 36 ) ( 536 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 616 77 0 ) ( 536 77 0 ) ( 536 144 36 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 -1 0 0 ] 0 1 1
( 616 77 0 ) ( 616 144 0 ) ( 536 144 0 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 -1 0 0 ] 0 1 1
( 616 144 0 ) ( 616 144 36 ) ( 536 144 36 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 0 -1 0 ] 0 1 1
( 616 77 0 ) ( 616 144 36 ) ( 616 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( 536 220 128 ) ( 536 144 36 ) ( 536 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 536 144 36 ) ( 616 144 36 ) ( 616 144 0 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 0 -1 0 ] 0 1 1
( 536 220 128 ) ( 616 220 128 ) ( 616 144 36 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 0 -1 0 ] 0 1 1
( 616 144 0 ) ( 616 220 0 ) ( 536 220 0 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 -1 0 0 ] 0 1 1
( 616 220 0 ) ( 616 220 128 ) ( 536 220 128 ) e1u1/c_met11_2 [ 1 0 0 -120 ] [ 0 0 -1 0 ] 0 1 1
( 616 144 36 ) ( 616 220 128 ) ( 616 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
}
// entity 6
{
"classname" "func_group"
"_phong_angle" "50"
// brush 0
{
( 616 220 128 ) ( 616 144 36 ) ( 616 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 616 220 128 ) ( 696 220 160 ) ( 696 144 68 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1
( 616 144 36 ) ( 696 144 68 ) ( 696 144 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1
( 336 -48 0 ) ( 432 -48 0 ) ( 336 48 0 ) e1u1/c_met11_2 [ -1 0 0 30.80185 ] [ 0 -1 0 0 ] 0 1 1
( 696 220 32 ) ( 696 220 160 ) ( 616 220 128 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1
( 696 144 68 ) ( 696 220 160 ) ( 696 220 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( 616 78 0 ) ( 696 78 32 ) ( 696 11 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 1 0 -27 ] 340.68057 1 1
( 616 11 0 ) ( 696 11 32 ) ( 696 11 0 ) e1u1/c_met11_2 [ 1 0 0 -71.99994 ] [ 0 0 -1 0 ] 0 1 1
( 696 11 0 ) ( 696 18 0 ) ( 616 78 0 ) e1u1/c_met11_2 [ -1 0 0 56 ] [ 0 -1 0 -27 ] 0 1 1
( 696 77 27 ) ( 696 77 23 ) ( 824 77 23 ) e1u1/c_met11_2 [ -1 0 0 45.36615 ] [ 0 0 -1 -41.17846 ] 0 1 1
( 696 11 32 ) ( 696 78 32 ) ( 696 18 0 ) e1u1/c_met11_2 [ 0 -1 0 27 ] [ 0 0 -1 0 ] 180 1 1
}
// brush 2
{
( 616 144 0 ) ( 616 144 36 ) ( 616 77 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 616 144 36 ) ( 696 144 68 ) ( 696 77 32 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 -1 0 0 ] 0 1 1
( 696 77 13 ) ( 824 77 11 ) ( 696 77 11 ) e1u1/c_met11_2 [ 1 0 0 -71.99994 ] [ 0 0 -1 0 ] 0 1 1
( 336 -48 0 ) ( 432 -48 0 ) ( 336 48 0 ) e1u1/c_met11_2 [ -1 0 0 30.80185 ] [ 0 -1 0 0 ] 0 1 1
( 696 144 32 ) ( 696 144 68 ) ( 616 144 36 ) e1u1/c_met11_2 [ 1 0 0 -72 ] [ 0 0 -1 0 ] 0 1 1
( 696 77 32 ) ( 696 144 68 ) ( 696 144 32 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
}