qbsp: change outside.cc to not fill leafs that have faces that are
straddling in and out of the void. Previously, we were just deleting these faces, leaving HOMs. Keeping them but filling the leaf in as solid doesn't work either, because if they are the only faces left in the leaf it messes up the content type determination later. Fixes test_tjunc01.map test case from Qmaster.
This commit is contained in:
parent
8a47233bbf
commit
0ac4909396
|
|
@ -250,6 +250,7 @@ typedef struct visfacet_s {
|
|||
struct visfacet_s *original; // face on node
|
||||
int outputnumber; // only valid for original faces after
|
||||
// write surfaces
|
||||
bool touchesOccupiedLeaf; // internal use in outside.cc
|
||||
vec3_t origin;
|
||||
vec_t radius;
|
||||
|
||||
|
|
|
|||
105
qbsp/outside.cc
105
qbsp/outside.cc
|
|
@ -273,30 +273,81 @@ FindOccupiedLeafs(node_t *headnode)
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
ResetFacesTouchingOccupiedLeafs
|
||||
|
||||
Set f->touchesOccupiedLeaf=false on all faces.
|
||||
==================
|
||||
*/
|
||||
static void
|
||||
ResetFacesTouchingOccupiedLeafs(node_t *node)
|
||||
{
|
||||
if (node->planenum == PLANENUM_LEAF) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (face_t *face = node->faces; face; face = face->next) {
|
||||
face->touchesOccupiedLeaf = false;
|
||||
}
|
||||
|
||||
ResetFacesTouchingOccupiedLeafs(node->children[0]);
|
||||
ResetFacesTouchingOccupiedLeafs(node->children[1]);
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
MarkFacesTouchingOccupiedLeafs
|
||||
|
||||
Set f->touchesOccupiedLeaf=true on faces that are touching occupied leafs
|
||||
==================
|
||||
*/
|
||||
static void
|
||||
MarkFacesTouchingOccupiedLeafs(node_t *node)
|
||||
{
|
||||
if (node->planenum != PLANENUM_LEAF) {
|
||||
MarkFacesTouchingOccupiedLeafs(node->children[0]);
|
||||
MarkFacesTouchingOccupiedLeafs(node->children[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
// visit the leaf
|
||||
|
||||
if (node->occupied > 0) {
|
||||
// This is an occupied leaf, so we need to keep all of the faces touching it.
|
||||
for (face_t **markface = node->markfaces; *markface; markface++) {
|
||||
(*markface)->touchesOccupiedLeaf = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
ClearOutFaces
|
||||
|
||||
Deletes (by setting f->w.numpoints=0) faces in solid nodes
|
||||
==================
|
||||
*/
|
||||
static void
|
||||
ClearOutFaces(node_t *node)
|
||||
{
|
||||
face_t **markfaces;
|
||||
|
||||
if (node->planenum != PLANENUM_LEAF) {
|
||||
ClearOutFaces(node->children[0]);
|
||||
ClearOutFaces(node->children[1]);
|
||||
return;
|
||||
}
|
||||
if (node->contents != CONTENTS_SOLID)
|
||||
return;
|
||||
|
||||
// FIXME: Hacky, should delete these faces from the nodes they belong to as well (?)
|
||||
for (markfaces = node->markfaces; *markfaces; markfaces++) {
|
||||
// mark all the original faces that are removed
|
||||
(*markfaces)->w.numpoints = 0;
|
||||
// visit the leaf
|
||||
if (node->contents != CONTENTS_SOLID) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (face_t **markface = node->markfaces; *markface; markface++) {
|
||||
// NOTE: This is how faces are deleted here, kind of ugly
|
||||
(*markface)->w.numpoints = 0;
|
||||
}
|
||||
|
||||
// FIXME: Shouldn't be needed here
|
||||
node->faces = NULL;
|
||||
}
|
||||
|
||||
|
|
@ -317,7 +368,21 @@ OutLeafsToSolid_r(node_t *node, int *outleafs_count)
|
|||
if (node->contents == CONTENTS_SKY
|
||||
|| node->contents == CONTENTS_SOLID)
|
||||
return;
|
||||
|
||||
|
||||
// Now check all faces touching the leaf. If any of them are partially going into the occupied part of the map,
|
||||
// don't fill the leaf (see comment in FillOutside).
|
||||
bool skipFill = false;
|
||||
for (face_t **markface = node->markfaces; *markface; markface++) {
|
||||
if ((*markface)->touchesOccupiedLeaf) {
|
||||
skipFill = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (skipFill) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Finally, we can fill it in as void.
|
||||
node->contents = CONTENTS_SOLID;
|
||||
*outleafs_count += 1;
|
||||
}
|
||||
|
|
@ -391,6 +456,28 @@ FillOutside(node_t *node, const int hullnum)
|
|||
return false;
|
||||
}
|
||||
|
||||
// At this point, leafs not reachable from entities have (node->occupied == 0).
|
||||
// The two final tasks are:
|
||||
// 1. Mark the leafs that are not reachable as CONTENTS_SOLID (i.e. filling them in as the void).
|
||||
// 2. Delete faces in those leafs
|
||||
|
||||
|
||||
// An annoying wrinkle here: there may be leafs with (node->occupied == 0), which means they should be filled in as void,
|
||||
// but they have faces straddling between them and occupied leafs (i.e. leafs which will be CONTENTS_EMPTY because
|
||||
// they're in playable space). See missing_face_simple.map for an example.
|
||||
//
|
||||
// The subtlety is, if we fill these leafs in as solid and delete the inward-facing faces, the only face left
|
||||
// will be the void-and-non-void-straddling face. This face will mess up LinkConvexFaces, since we need to rebuild the
|
||||
// BSP and recalculate the leaf contents, unaware of the fact that we wanted this leaf to be void (CONTENTS_SOLID),
|
||||
// and this face will cause it to be marked as CONTENTS_EMPTY which will manifest as messed up hull0 collision in game
|
||||
// (weapons shoot through the leaf.)
|
||||
//
|
||||
// In order to avoid this scenario, we need to detect those "void-and-non-void-straddling" faces and not fill those leafs
|
||||
// in as solid. This will keep some extra faces around but keep the content types consistent.
|
||||
|
||||
ResetFacesTouchingOccupiedLeafs(node);
|
||||
MarkFacesTouchingOccupiedLeafs(node);
|
||||
|
||||
/* now go back and fill outside with solid contents */
|
||||
const int outleafs = OutLeafsToSolid(node);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,109 @@
|
|||
// Game: Quake
|
||||
// Format: Standard
|
||||
// entity 0
|
||||
{
|
||||
"classname" "worldspawn"
|
||||
"wad" "quake.wad"
|
||||
"message" "Missing Faces TJunc BspStd"
|
||||
// brush 0
|
||||
{
|
||||
( -0 -0 -0 ) ( -0 -0 1 ) ( -0 1 -0 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -128 -32 ) ( -128 -127 -32 ) ( -128 -128 -31 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -0 -0 -0 ) ( 1 -0 -0 ) ( -0 -0 1 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -128 -32 ) ( -128 -128 -31 ) ( -127 -128 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -0 -0 -0 ) ( -0 1 -0 ) ( 1 -0 -0 ) afloor1_3 -0 -0 -0 1 1
|
||||
( -128 -128 -32 ) ( -127 -128 -32 ) ( -128 -127 -32 ) afloor1_3 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -0 80 16 ) ( -0 80 17 ) ( -0 81 16 ) city1_4 -0 48 -0 1 1
|
||||
( -16 -128 -0 ) ( -16 -127 -0 ) ( -16 -128 1 ) city1_4 -0 48 -0 1 1
|
||||
( -0 -0 16 ) ( 1 -0 16 ) ( -0 -0 17 ) city1_4 16 48 -0 1 1
|
||||
( -16 -128 -0 ) ( -16 -128 1 ) ( -15 -128 -0 ) city1_4 16 48 -0 1 1
|
||||
( -0 80 16 ) ( -0 81 16 ) ( 1 80 16 ) city1_4 16 -0 -0 1 1
|
||||
( -16 -128 -0 ) ( -15 -128 -0 ) ( -16 -127 -0 ) city1_4 16 -0 -0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -16 80 16 ) ( -16 80 17 ) ( -16 81 16 ) city1_4 -0 48 -0 1 1
|
||||
( -128 -128 -0 ) ( -128 -127 -0 ) ( -128 -128 1 ) city1_4 -0 48 -0 1 1
|
||||
( -16 -0 16 ) ( -15 -0 16 ) ( -16 -0 17 ) city1_4 32 48 -0 1 1
|
||||
( -32 -16 -0 ) ( -32 -16 1 ) ( -31 -16 -0 ) city1_4 32 48 -0 1 1
|
||||
( -16 80 16 ) ( -16 81 16 ) ( -15 80 16 ) city1_4 32 -0 -0 1 1
|
||||
( -32 -128 -0 ) ( -31 -128 -0 ) ( -32 -127 -0 ) city1_4 32 -0 -0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( -16 -16 8 ) ( -48 -128 16 ) ( -48 -16 16 ) maya2_2 -0 -0 0 1 1
|
||||
( -16 -16 8 ) ( -16 -128 -0 ) ( -48 -128 16 ) maya2_2 -0 -0 0 1 1
|
||||
( -48 -16 -0 ) ( -16 -128 -0 ) ( -16 -16 8 ) maya2_2 -0 -0 0 1 1
|
||||
( -48 -16 16 ) ( -48 -128 16 ) ( -48 -128 -0 ) maya2_2 0 0 0 1 1
|
||||
( -16 -16 8 ) ( -48 -16 16 ) ( -48 -16 -0 ) maya2_2 0 0 0 1 1
|
||||
( -48 -128 16 ) ( -16 -128 -0 ) ( -48 -128 -0 ) maya2_2 0 0 0 1 1
|
||||
( -48 -128 -0 ) ( -16 -128 -0 ) ( -48 -16 -0 ) maya2_2 -0 -0 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -416 -416 -48 ) ( -416 -416 264 ) ( -416 272 -48 ) sky4 -16 16 -0 1 1
|
||||
( -424 -416 -48 ) ( -424 272 -48 ) ( -424 -416 264 ) sky4 -16 16 -0 1 1
|
||||
( -416 272 -48 ) ( -416 272 264 ) ( -424 272 -48 ) sky4 40 16 -0 1 1
|
||||
( -416 -416 264 ) ( -416 -416 -48 ) ( -424 -416 264 ) sky4 40 16 -0 1 1
|
||||
( -416 272 264 ) ( -416 -416 264 ) ( -424 272 264 ) sky4 40 16 -0 1 1
|
||||
( -416 -416 -48 ) ( -416 272 -48 ) ( -424 -416 -48 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( 304 264 -48 ) ( 304 264 264 ) ( 304 272 -48 ) sky4 0 0 0 1 1
|
||||
( -416 264 264 ) ( -416 264 -48 ) ( -416 272 264 ) sky4 0 0 0 1 1
|
||||
( -416 272 264 ) ( -416 272 -48 ) ( 304 272 264 ) sky4 40 16 -0 1 1
|
||||
( 304 264 264 ) ( 304 264 -48 ) ( -416 264 264 ) sky4 40 16 -0 1 1
|
||||
( 304 264 264 ) ( -416 264 264 ) ( 304 272 264 ) sky4 40 16 -0 1 1
|
||||
( -416 264 -48 ) ( 304 264 -48 ) ( -416 272 -48 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( 304 -408 264 ) ( 304 -408 -48 ) ( 304 -416 264 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -48 ) ( -416 -408 264 ) ( -416 -416 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -48 ) ( 304 -408 -48 ) ( -416 -408 264 ) sky4 40 16 -0 1 1
|
||||
( -416 -416 -48 ) ( -416 -416 264 ) ( 304 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( -416 -408 264 ) ( 304 -408 264 ) ( -416 -416 264 ) sky4 40 16 -0 1 1
|
||||
( 304 -408 -48 ) ( -416 -408 -48 ) ( 304 -416 -48 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( 304 264 256 ) ( 304 -408 256 ) ( 304 264 264 ) sky4 0 0 0 1 1
|
||||
( -416 -408 256 ) ( -416 264 256 ) ( -416 -408 264 ) sky4 0 0 0 1 1
|
||||
( -416 264 256 ) ( 304 264 256 ) ( -416 264 264 ) sky4 0 0 0 1 1
|
||||
( 304 -408 256 ) ( -416 -408 256 ) ( 304 -408 264 ) sky4 0 0 0 1 1
|
||||
( 304 -408 264 ) ( -416 -408 264 ) ( 304 264 264 ) sky4 40 16 -0 1 1
|
||||
( 304 264 256 ) ( -416 264 256 ) ( 304 -408 256 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 8
|
||||
{
|
||||
( 304 -408 -40 ) ( 304 264 -40 ) ( 304 -408 -48 ) sky4 0 0 0 1 1
|
||||
( -416 264 -40 ) ( -416 -408 -40 ) ( -416 264 -48 ) sky4 0 0 0 1 1
|
||||
( 304 264 -40 ) ( -416 264 -40 ) ( 304 264 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -40 ) ( 304 -408 -40 ) ( -416 -408 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -40 ) ( -416 264 -40 ) ( 304 -408 -40 ) sky4 40 16 -0 1 1
|
||||
( -416 -408 -48 ) ( 304 -408 -48 ) ( -416 264 -48 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 9
|
||||
{
|
||||
( 312 272 -48 ) ( 312 -416 -48 ) ( 312 272 264 ) sky4 -16 16 -0 1 1
|
||||
( 304 272 264 ) ( 304 -416 264 ) ( 304 272 -48 ) sky4 -16 16 -0 1 1
|
||||
( 304 272 264 ) ( 304 272 -48 ) ( 312 272 264 ) sky4 40 16 -0 1 1
|
||||
( 304 -416 -48 ) ( 304 -416 264 ) ( 312 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 -416 288 ) ( 304 272 288 ) ( 312 -416 288 ) sky4 -0 -0 -0 1 1
|
||||
( 304 272 -48 ) ( 304 -416 -48 ) ( 312 272 -48 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-96 -64 24"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "ambient_drip"
|
||||
"origin" "-136 -72 144"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,337 @@
|
|||
// Game: Quake
|
||||
// Format: Standard
|
||||
// entity 0
|
||||
{
|
||||
"classname" "worldspawn"
|
||||
"wad" "quake.wad"
|
||||
"message" "Missing Faces TJunc BspStd"
|
||||
// brush 0
|
||||
{
|
||||
( -128 -128 -32 ) ( -128 -127 -32 ) ( -128 -128 -31 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -0 -0 -0 ) ( -0 -0 1 ) ( -0 1 -0 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -128 -32 ) ( -128 -128 -31 ) ( -127 -128 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -0 -0 -0 ) ( 1 -0 -0 ) ( -0 -0 1 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -0 -0 -0 ) ( -0 1 -0 ) ( 1 -0 -0 ) afloor1_3 -0 -0 -0 1 1
|
||||
( -128 -128 -32 ) ( -127 -128 -32 ) ( -128 -127 -32 ) afloor1_3 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -16 -128 -0 ) ( -16 -127 -0 ) ( -16 -128 1 ) city1_4 -0 48 -0 1 1
|
||||
( -0 80 16 ) ( -0 80 17 ) ( -0 81 16 ) city1_4 -0 48 -0 1 1
|
||||
( -16 -128 -0 ) ( -16 -128 1 ) ( -15 -128 -0 ) city1_4 16 48 -0 1 1
|
||||
( -0 -0 16 ) ( 1 -0 16 ) ( -0 -0 17 ) city1_4 16 48 -0 1 1
|
||||
( -0 80 16 ) ( -0 81 16 ) ( 1 80 16 ) city1_4 16 -0 -0 1 1
|
||||
( -16 -128 -0 ) ( -15 -128 -0 ) ( -16 -127 -0 ) city1_4 16 -0 -0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -128 -128 -0 ) ( -128 -127 -0 ) ( -128 -128 1 ) city1_4 -0 48 -0 1 1
|
||||
( -16 80 16 ) ( -16 80 17 ) ( -16 81 16 ) city1_4 -0 48 -0 1 1
|
||||
( -32 -16 -0 ) ( -32 -16 1 ) ( -31 -16 -0 ) city1_4 32 48 -0 1 1
|
||||
( -16 -0 16 ) ( -15 -0 16 ) ( -16 -0 17 ) city1_4 32 48 -0 1 1
|
||||
( -16 80 16 ) ( -16 81 16 ) ( -15 80 16 ) city1_4 32 -0 -0 1 1
|
||||
( -32 -128 -0 ) ( -31 -128 -0 ) ( -32 -127 -0 ) city1_4 32 -0 -0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( -16 -16 8 ) ( -48 -128 16 ) ( -48 -16 16 ) maya2_2 -0 -0 0 1 1
|
||||
( -48 -16 16 ) ( -48 -128 16 ) ( -48 -128 -0 ) maya2_2 0 0 0 1 1
|
||||
( -16 -16 8 ) ( -48 -16 16 ) ( -48 -16 -0 ) maya2_2 0 0 0 1 1
|
||||
( -48 -128 -0 ) ( -16 -128 -0 ) ( -48 -16 -0 ) maya2_2 -0 -0 0 1 1
|
||||
( -48 -16 -0 ) ( -16 -128 -0 ) ( -16 -16 8 ) maya2_2 -0 -0 0 1 1
|
||||
( -16 -16 8 ) ( -16 -128 -0 ) ( -48 -128 16 ) maya2_2 -0 -0 0 1 1
|
||||
( -48 -128 16 ) ( -16 -128 -0 ) ( -48 -128 -0 ) maya2_2 0 0 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( 312 272 -48 ) ( 312 -416 -48 ) ( 312 272 264 ) sky4 -16 16 -0 1 1
|
||||
( 304 -416 -48 ) ( 304 -416 264 ) ( 312 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 272 264 ) ( 304 272 -48 ) ( 312 272 264 ) sky4 40 16 -0 1 1
|
||||
( 304 -416 264 ) ( 304 272 264 ) ( 312 -416 264 ) sky4 40 16 -0 1 1
|
||||
( 304 272 -48 ) ( 304 -416 -48 ) ( 312 272 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 272 264 ) ( 304 -416 264 ) ( 304 272 -48 ) sky4 -16 16 -0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( -424 -416 -48 ) ( -424 272 -48 ) ( -424 -416 264 ) sky4 -16 16 -0 1 1
|
||||
( -416 -416 264 ) ( -416 -416 -48 ) ( -424 -416 264 ) sky4 40 16 -0 1 1
|
||||
( -416 272 -48 ) ( -416 272 264 ) ( -424 272 -48 ) sky4 40 16 -0 1 1
|
||||
( -416 272 264 ) ( -416 -416 264 ) ( -424 272 264 ) sky4 40 16 -0 1 1
|
||||
( -416 -416 -48 ) ( -416 272 -48 ) ( -424 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( -416 -416 -48 ) ( -416 -416 264 ) ( -416 272 -48 ) sky4 -16 16 -0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( -416 272 264 ) ( -416 272 -48 ) ( 304 272 264 ) sky4 40 16 -0 1 1
|
||||
( 304 264 264 ) ( -416 264 264 ) ( 304 272 264 ) sky4 40 16 -0 1 1
|
||||
( -416 264 -48 ) ( 304 264 -48 ) ( -416 272 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 264 -48 ) ( 304 264 264 ) ( 304 272 -48 ) sky4 0 0 0 1 1
|
||||
( -416 264 264 ) ( -416 264 -48 ) ( -416 272 264 ) sky4 0 0 0 1 1
|
||||
( 304 264 264 ) ( 304 264 -48 ) ( -416 264 264 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( -416 -416 -48 ) ( -416 -416 264 ) ( 304 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( -416 -408 264 ) ( 304 -408 264 ) ( -416 -416 264 ) sky4 40 16 -0 1 1
|
||||
( 304 -408 -48 ) ( -416 -408 -48 ) ( 304 -416 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 -408 264 ) ( 304 -408 -48 ) ( 304 -416 264 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -48 ) ( -416 -408 264 ) ( -416 -416 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -48 ) ( 304 -408 -48 ) ( -416 -408 264 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 8
|
||||
{
|
||||
( 304 -408 264 ) ( -416 -408 264 ) ( 304 264 264 ) sky4 40 16 -0 1 1
|
||||
( 304 264 256 ) ( 304 -408 256 ) ( 304 264 264 ) sky4 0 0 0 1 1
|
||||
( -416 -408 256 ) ( -416 264 256 ) ( -416 -408 264 ) sky4 0 0 0 1 1
|
||||
( -416 264 256 ) ( 304 264 256 ) ( -416 264 264 ) sky4 0 0 0 1 1
|
||||
( 304 -408 256 ) ( -416 -408 256 ) ( 304 -408 264 ) sky4 0 0 0 1 1
|
||||
( 304 264 256 ) ( -416 264 256 ) ( 304 -408 256 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 9
|
||||
{
|
||||
( -416 -408 -48 ) ( 304 -408 -48 ) ( -416 264 -48 ) sky4 40 16 -0 1 1
|
||||
( 304 -408 -40 ) ( 304 264 -40 ) ( 304 -408 -48 ) sky4 0 0 0 1 1
|
||||
( -416 264 -40 ) ( -416 -408 -40 ) ( -416 264 -48 ) sky4 0 0 0 1 1
|
||||
( 304 264 -40 ) ( -416 264 -40 ) ( 304 264 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -40 ) ( 304 -408 -40 ) ( -416 -408 -48 ) sky4 0 0 0 1 1
|
||||
( -416 -408 -40 ) ( -416 264 -40 ) ( 304 -408 -40 ) sky4 40 16 -0 1 1
|
||||
}
|
||||
// brush 10
|
||||
{
|
||||
( -48 -168 16 ) ( -48 -168 -0 ) ( -16 -168 8 ) maya2_2 -0 -0 -0 1 1
|
||||
( -16 -168 8 ) ( -48 -168 -0 ) ( -16 -200 -0 ) maya2_2 -0 -24 -0 1 1
|
||||
( -16 -168 8 ) ( -48 -200 16 ) ( -48 -168 16 ) maya2_2 -0 -24 -0 1 1
|
||||
( -16 -168 8 ) ( -16 -200 -0 ) ( -48 -200 16 ) maya2_2 -0 -24 -0 1 1
|
||||
( -48 -200 16 ) ( -48 -200 -0 ) ( -48 -168 -0 ) maya2_2 24 -0 -0 1 1
|
||||
( -48 -168 -0 ) ( -48 -200 -0 ) ( -16 -200 -0 ) maya2_2 -0 -24 -0 1 1
|
||||
( -16 -200 -0 ) ( -48 -200 -0 ) ( -48 -200 16 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 11
|
||||
{
|
||||
( -0 -152 16 ) ( -0 -152 -0 ) ( -0 -200 -0 ) city1_4 24 48 -0 1 1
|
||||
( -0 -152 16 ) ( -16 -152 16 ) ( -16 -152 -0 ) city1_4 16 48 -0 1 1
|
||||
( -16 -200 16 ) ( -16 -152 16 ) ( -0 -152 16 ) city1_4 16 -24 -0 1 1
|
||||
( -16 -152 -0 ) ( -16 -200 -0 ) ( -0 -200 -0 ) city1_4 16 -24 -0 1 1
|
||||
( -0 -200 -0 ) ( -16 -200 -0 ) ( -16 -200 16 ) city1_4 16 48 -0 1 1
|
||||
( -16 -200 16 ) ( -16 -200 -0 ) ( -16 -152 -0 ) city1_4 24 48 -0 1 1
|
||||
}
|
||||
// brush 12
|
||||
{
|
||||
( -128 -280 -0 ) ( -128 -279 -0 ) ( -128 -280 1 ) city1_4 24 48 -0 1 1
|
||||
( -16 -72 16 ) ( -16 -72 17 ) ( -16 -71 16 ) city1_4 24 48 -0 1 1
|
||||
( -32 -168 -0 ) ( -32 -168 1 ) ( -31 -168 -0 ) city1_4 32 48 -0 1 1
|
||||
( -16 -152 16 ) ( -15 -152 16 ) ( -16 -152 17 ) city1_4 32 48 -0 1 1
|
||||
( -16 -72 16 ) ( -16 -71 16 ) ( -15 -72 16 ) city1_4 32 -24 -0 1 1
|
||||
( -32 -280 -0 ) ( -31 -280 -0 ) ( -32 -279 -0 ) city1_4 32 -24 -0 1 1
|
||||
}
|
||||
// brush 13
|
||||
{
|
||||
( -0 -152 -0 ) ( -0 -152 -32 ) ( -0 -200 -32 ) afloor1_3 24 -16 -0 1 1
|
||||
( -0 -152 -0 ) ( -128 -152 -0 ) ( -128 -152 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -200 -0 ) ( -128 -152 -0 ) ( -0 -152 -0 ) afloor1_3 -0 -24 -0 1 1
|
||||
( -128 -152 -32 ) ( -128 -200 -32 ) ( -0 -200 -32 ) afloor1_3 -0 -24 -0 1 1
|
||||
( -0 -200 -32 ) ( -128 -200 -32 ) ( -128 -200 -0 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -200 -0 ) ( -128 -200 -32 ) ( -128 -152 -32 ) afloor1_3 24 -16 -0 1 1
|
||||
}
|
||||
// brush 14
|
||||
{
|
||||
( -0 -216 16 ) ( -0 -216 -0 ) ( -0 -264 -0 ) city1_4 24 48 -0 1 1
|
||||
( -0 -216 16 ) ( -16 -216 16 ) ( -16 -216 -0 ) city1_4 16 48 -0 1 1
|
||||
( -16 -264 16 ) ( -16 -216 16 ) ( -0 -216 16 ) city1_4 16 -24 -0 1 1
|
||||
( -16 -216 -0 ) ( -16 -264 -0 ) ( -0 -264 -0 ) city1_4 16 -24 -0 1 1
|
||||
( -0 -304 -0 ) ( -16 -304 -0 ) ( -16 -304 16 ) city1_4 16 48 -0 1 1
|
||||
( -16 -264 16 ) ( -16 -264 -0 ) ( -16 -216 -0 ) city1_4 24 48 -0 1 1
|
||||
}
|
||||
// brush 15
|
||||
{
|
||||
( -128 -344 -0 ) ( -128 -343 -0 ) ( -128 -344 1 ) city1_4 24 48 -0 1 1
|
||||
( -16 -136 16 ) ( -16 -136 17 ) ( -16 -135 16 ) city1_4 24 48 -0 1 1
|
||||
( -32 -232 -0 ) ( -32 -232 1 ) ( -31 -232 -0 ) city1_4 32 48 -0 1 1
|
||||
( -16 -216 16 ) ( -15 -216 16 ) ( -16 -216 17 ) city1_4 32 48 -0 1 1
|
||||
( -16 -136 16 ) ( -16 -135 16 ) ( -15 -136 16 ) city1_4 32 -24 -0 1 1
|
||||
( -32 -344 -0 ) ( -31 -344 -0 ) ( -32 -343 -0 ) city1_4 32 -24 -0 1 1
|
||||
}
|
||||
// brush 16
|
||||
{
|
||||
( -48 -232 16 ) ( -48 -232 -0 ) ( -16 -232 8 ) maya2_2 -0 -0 -0 1 1
|
||||
( -16 -232 8 ) ( -48 -232 -0 ) ( -16 -264 -0 ) maya2_2 -0 -88 -0 1 1
|
||||
( -16 -232 8 ) ( -48 -264 16 ) ( -48 -232 16 ) maya2_2 -0 -88 -0 1 1
|
||||
( -16 -232 8 ) ( -16 -264 -0 ) ( -48 -264 16 ) maya2_2 -0 -88 -0 1 1
|
||||
( -48 -264 16 ) ( -48 -264 -0 ) ( -48 -232 -0 ) maya2_2 88 -0 -0 1 1
|
||||
( -48 -232 -0 ) ( -48 -264 -0 ) ( -16 -264 -0 ) maya2_2 -0 -88 -0 1 1
|
||||
( -16 -264 -0 ) ( -48 -264 -0 ) ( -48 -264 16 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 17
|
||||
{
|
||||
( -0 -216 -0 ) ( -0 -216 -32 ) ( -0 -264 -32 ) afloor1_3 24 -16 -0 1 1
|
||||
( -0 -216 -0 ) ( -128 -216 -0 ) ( -128 -216 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -264 -0 ) ( -128 -216 -0 ) ( -0 -216 -0 ) afloor1_3 -0 -24 -0 1 1
|
||||
( -128 -216 -32 ) ( -128 -264 -32 ) ( -0 -264 -32 ) afloor1_3 -0 -24 -0 1 1
|
||||
( -0 -304 -32 ) ( -128 -304 -32 ) ( -128 -304 -0 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 -264 -0 ) ( -128 -264 -32 ) ( -128 -216 -32 ) afloor1_3 24 -16 -0 1 1
|
||||
}
|
||||
// brush 18
|
||||
{
|
||||
( -0 120 -0 ) ( -0 120 -32 ) ( -0 72 -32 ) afloor1_3 -56 -16 -0 1 1
|
||||
( -0 120 -0 ) ( -128 120 -0 ) ( -128 120 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -128 72 -0 ) ( -128 120 -0 ) ( -0 120 -0 ) afloor1_3 -0 56 -0 1 1
|
||||
( -128 120 -32 ) ( -128 72 -32 ) ( -0 72 -32 ) afloor1_3 -0 56 -0 1 1
|
||||
( -0 72 -32 ) ( -128 72 -32 ) ( -128 72 -0 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -48 72 -0 ) ( -48 72 -32 ) ( -48 120 -32 ) afloor1_3 -56 -16 -0 1 1
|
||||
}
|
||||
// brush 19
|
||||
{
|
||||
( -48 -8 -0 ) ( -48 -7 -0 ) ( -48 -8 1 ) city1_4 -56 48 -0 1 1
|
||||
( -16 200 16 ) ( -16 200 17 ) ( -16 201 16 ) city1_4 -56 48 -0 1 1
|
||||
( -32 104 -0 ) ( -32 104 1 ) ( -31 104 -0 ) city1_4 32 48 -0 1 1
|
||||
( -16 120 16 ) ( -15 120 16 ) ( -16 120 17 ) city1_4 32 48 -0 1 1
|
||||
( -16 200 16 ) ( -16 201 16 ) ( -15 200 16 ) city1_4 32 56 -0 1 1
|
||||
( -32 -8 -0 ) ( -31 -8 -0 ) ( -32 -7 -0 ) city1_4 32 56 -0 1 1
|
||||
}
|
||||
// brush 20
|
||||
{
|
||||
( -48 104 16 ) ( -48 104 -0 ) ( -16 104 8 ) maya2_2 -0 -0 -0 1 1
|
||||
( -16 104 8 ) ( -48 104 -0 ) ( -16 72 -0 ) maya2_2 -0 120 -0 1 1
|
||||
( -16 104 8 ) ( -48 72 16 ) ( -48 104 16 ) maya2_2 -0 120 -0 1 1
|
||||
( -16 104 8 ) ( -16 72 -0 ) ( -48 72 16 ) maya2_2 -0 120 -0 1 1
|
||||
( -48 72 16 ) ( -48 72 -0 ) ( -48 104 -0 ) maya2_2 -120 -0 -0 1 1
|
||||
( -48 104 -0 ) ( -48 72 -0 ) ( -16 72 -0 ) maya2_2 -0 120 -0 1 1
|
||||
( -16 72 -0 ) ( -48 72 -0 ) ( -48 72 16 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 21
|
||||
{
|
||||
( -0 120 16 ) ( -0 120 -0 ) ( -0 72 -0 ) city1_4 -56 48 -0 1 1
|
||||
( -0 120 16 ) ( -16 120 16 ) ( -16 120 -0 ) city1_4 16 48 -0 1 1
|
||||
( -16 72 16 ) ( -16 120 16 ) ( -0 120 16 ) city1_4 16 56 -0 1 1
|
||||
( -16 120 -0 ) ( -16 72 -0 ) ( -0 72 -0 ) city1_4 16 56 -0 1 1
|
||||
( -0 72 -0 ) ( -16 72 -0 ) ( -16 72 16 ) city1_4 16 48 -0 1 1
|
||||
( -16 72 16 ) ( -16 72 -0 ) ( -16 120 -0 ) city1_4 -56 48 -0 1 1
|
||||
}
|
||||
// brush 22
|
||||
{
|
||||
( -120 -8 -0 ) ( -120 -7 -0 ) ( -120 -8 1 ) city1_4 8 48 -0 1 1
|
||||
( -88 200 16 ) ( -88 200 17 ) ( -88 201 16 ) city1_4 8 48 -0 1 1
|
||||
( -104 104 -0 ) ( -104 104 1 ) ( -103 104 -0 ) city1_4 40 48 -0 1 1
|
||||
( -88 120 16 ) ( -87 120 16 ) ( -88 120 17 ) city1_4 40 48 -0 1 1
|
||||
( -88 200 16 ) ( -88 201 16 ) ( -87 200 16 ) city1_4 40 -8 -0 1 1
|
||||
( -104 -8 -0 ) ( -103 -8 -0 ) ( -104 -7 -0 ) city1_4 40 -8 -0 1 1
|
||||
}
|
||||
// brush 23
|
||||
{
|
||||
( -72 120 16 ) ( -72 120 -0 ) ( -72 72 -0 ) city1_4 8 48 -0 1 1
|
||||
( -72 120 16 ) ( -88 120 16 ) ( -88 120 -0 ) city1_4 24 48 -0 1 1
|
||||
( -88 72 16 ) ( -88 120 16 ) ( -72 120 16 ) city1_4 24 -8 -0 1 1
|
||||
( -88 120 -0 ) ( -88 72 -0 ) ( -72 72 -0 ) city1_4 24 -8 -0 1 1
|
||||
( -72 72 -0 ) ( -88 72 -0 ) ( -88 72 16 ) city1_4 24 48 -0 1 1
|
||||
( -88 72 16 ) ( -88 72 -0 ) ( -88 120 -0 ) city1_4 8 48 -0 1 1
|
||||
}
|
||||
// brush 24
|
||||
{
|
||||
( -72 120 -0 ) ( -72 120 -32 ) ( -72 72 -32 ) afloor1_3 8 -16 -0 1 1
|
||||
( -72 120 -0 ) ( -200 120 -0 ) ( -200 120 -32 ) afloor1_3 8 -16 -0 1 1
|
||||
( -200 72 -0 ) ( -200 120 -0 ) ( -72 120 -0 ) afloor1_3 8 -8 -0 1 1
|
||||
( -200 120 -32 ) ( -200 72 -32 ) ( -72 72 -32 ) afloor1_3 8 -8 -0 1 1
|
||||
( -72 72 -32 ) ( -200 72 -32 ) ( -200 72 -0 ) afloor1_3 8 -16 -0 1 1
|
||||
( -120 72 -0 ) ( -120 72 -32 ) ( -120 120 -32 ) afloor1_3 8 -16 -0 1 1
|
||||
}
|
||||
// brush 25
|
||||
{
|
||||
( -88 104 8 ) ( -120 104 -0 ) ( -88 72 -0 ) maya2_2 72 -8 -0 1 1
|
||||
( -88 104 8 ) ( -88 72 -0 ) ( -120 72 16 ) maya2_2 72 -8 -0 1 1
|
||||
( -120 104 -0 ) ( -120 72 -0 ) ( -88 72 -0 ) maya2_2 72 -8 -0 1 1
|
||||
( -88 72 -0 ) ( -120 72 -0 ) ( -120 72 16 ) maya2_2 72 -0 -0 1 1
|
||||
( -120 72 16 ) ( -88 104 16 ) ( -88 104 144 ) maya2_2 72 0 0 1 1
|
||||
}
|
||||
// brush 26
|
||||
{
|
||||
( -120 104 16 ) ( -120 104 -0 ) ( -88 104 8 ) maya2_2 72 -0 -0 1 1
|
||||
( -88 104 8 ) ( -120 104 -0 ) ( -88 72 -0 ) maya2_2 72 -8 -0 1 1
|
||||
( -88 104 8 ) ( -120 72 16 ) ( -120 104 16 ) maya2_2 72 -8 -0 1 1
|
||||
( -120 72 16 ) ( -120 72 -0 ) ( -120 104 -0 ) maya2_2 8 -0 -0 1 1
|
||||
( -120 104 -0 ) ( -120 72 -0 ) ( -88 72 -0 ) maya2_2 72 -8 -0 1 1
|
||||
( -120 72 16 ) ( -88 104 144 ) ( -88 104 16 ) maya2_2 72 0 0 1 1
|
||||
}
|
||||
// brush 27
|
||||
{
|
||||
( -72 192 -0 ) ( -72 192 -32 ) ( -72 144 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -72 192 -0 ) ( -200 192 -0 ) ( -200 192 -32 ) afloor1_3 8 -16 -0 1 1
|
||||
( -200 144 -0 ) ( -200 192 -0 ) ( -72 192 -0 ) afloor1_3 8 -0 -0 1 1
|
||||
( -200 192 -32 ) ( -200 144 -32 ) ( -72 144 -32 ) afloor1_3 8 -0 -0 1 1
|
||||
( -72 144 -32 ) ( -200 144 -32 ) ( -200 144 -0 ) afloor1_3 8 -16 -0 1 1
|
||||
( -120 144 -0 ) ( -120 144 -32 ) ( -120 192 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
}
|
||||
// brush 28
|
||||
{
|
||||
( -120 176 16 ) ( -120 176 -0 ) ( -88 176 8 ) maya2_2 72 -0 -0 1 1
|
||||
( -88 176 8 ) ( -120 176 -0 ) ( -88 144 -0 ) maya2_2 72 64 -0 1 1
|
||||
( -88 176 8 ) ( -120 144 16 ) ( -120 176 16 ) maya2_2 72 64 -0 1 1
|
||||
( -120 144 16 ) ( -120 144 -0 ) ( -120 176 -0 ) maya2_2 -64 -0 -0 1 1
|
||||
( -120 176 -0 ) ( -120 144 -0 ) ( -88 144 -0 ) maya2_2 72 64 -0 1 1
|
||||
( -120 144 16 ) ( -88 176 144 ) ( -88 176 16 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 29
|
||||
{
|
||||
( -88 176 8 ) ( -120 176 -0 ) ( -88 144 -0 ) maya2_2 72 64 -0 1 1
|
||||
( -88 176 8 ) ( -88 144 -0 ) ( -120 144 16 ) maya2_2 72 64 -0 1 1
|
||||
( -120 176 -0 ) ( -120 144 -0 ) ( -88 144 -0 ) maya2_2 72 64 -0 1 1
|
||||
( -88 144 -0 ) ( -120 144 -0 ) ( -120 144 16 ) maya2_2 72 -0 -0 1 1
|
||||
( -120 144 16 ) ( -88 176 16 ) ( -88 176 144 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 30
|
||||
{
|
||||
( -72 192 16 ) ( -72 192 -0 ) ( -72 144 -0 ) city1_4 -0 48 -0 1 1
|
||||
( -72 192 16 ) ( -88 192 16 ) ( -88 192 -0 ) city1_4 24 48 -0 1 1
|
||||
( -88 144 16 ) ( -88 192 16 ) ( -72 192 16 ) city1_4 24 -0 -0 1 1
|
||||
( -88 192 -0 ) ( -88 144 -0 ) ( -72 144 -0 ) city1_4 24 -0 -0 1 1
|
||||
( -72 144 -0 ) ( -88 144 -0 ) ( -88 144 16 ) city1_4 24 48 -0 1 1
|
||||
( -88 144 16 ) ( -88 144 -0 ) ( -88 192 -0 ) city1_4 -0 48 -0 1 1
|
||||
}
|
||||
// brush 31
|
||||
{
|
||||
( -88 240 -0 ) ( -88 208 -0 ) ( -88 240 8 ) maya2_2 -32 -0 -0 1 1
|
||||
( -88 240 -0 ) ( -120 208 -0 ) ( -88 208 -0 ) maya2_2 -0 32 -0 1 1
|
||||
( -88 240 8 ) ( -120 208 16 ) ( -120 208 -0 ) maya2_2 -32 -0 -0 1 1
|
||||
( -120 208 -0 ) ( -120 208 16 ) ( -88 208 -0 ) maya2_2 -0 -0 -0 1 1
|
||||
( -88 208 -0 ) ( -120 208 16 ) ( -88 240 8 ) maya2_2 -0 32 -0 1 1
|
||||
}
|
||||
// brush 32
|
||||
{
|
||||
( -120 240 -0 ) ( -120 208 -0 ) ( -88 240 -0 ) maya2_2 -0 32 -0 1 1
|
||||
( -120 240 16 ) ( -120 208 16 ) ( -120 208 -0 ) maya2_2 -32 -0 -0 1 1
|
||||
( -120 240 16 ) ( -88 240 8 ) ( -120 208 16 ) maya2_2 -0 32 -0 1 1
|
||||
( -120 208 16 ) ( -88 240 8 ) ( -88 240 -0 ) maya2_2 -32 -0 -0 1 1
|
||||
( -88 240 -0 ) ( -88 240 8 ) ( -120 240 16 ) maya2_2 -0 -0 -0 1 1
|
||||
}
|
||||
// brush 33
|
||||
{
|
||||
( -120 128 -0 ) ( -120 129 -0 ) ( -120 128 1 ) city1_4 -0 48 -0 1 1
|
||||
( -88 336 16 ) ( -88 336 17 ) ( -88 337 16 ) city1_4 -0 48 -0 1 1
|
||||
( -104 240 -0 ) ( -104 240 1 ) ( -103 240 -0 ) city1_4 40 48 -0 1 1
|
||||
( -88 256 16 ) ( -87 256 16 ) ( -88 256 17 ) city1_4 40 48 -0 1 1
|
||||
( -88 336 16 ) ( -88 337 16 ) ( -87 336 16 ) city1_4 40 -0 -0 1 1
|
||||
( -104 128 -0 ) ( -103 128 -0 ) ( -104 129 -0 ) city1_4 40 -0 -0 1 1
|
||||
}
|
||||
// brush 34
|
||||
{
|
||||
( -72 256 16 ) ( -72 256 -0 ) ( -72 208 -0 ) city1_4 -0 48 -0 1 1
|
||||
( -72 256 16 ) ( -88 256 16 ) ( -88 256 -0 ) city1_4 24 48 -0 1 1
|
||||
( -88 208 16 ) ( -88 256 16 ) ( -72 256 16 ) city1_4 24 -0 -0 1 1
|
||||
( -88 256 -0 ) ( -88 208 -0 ) ( -72 208 -0 ) city1_4 24 -0 -0 1 1
|
||||
( -72 208 -0 ) ( -88 208 -0 ) ( -88 208 16 ) city1_4 24 48 -0 1 1
|
||||
( -88 208 16 ) ( -88 208 -0 ) ( -88 256 -0 ) city1_4 -0 48 -0 1 1
|
||||
}
|
||||
// brush 35
|
||||
{
|
||||
( -72 256 -0 ) ( -72 256 -32 ) ( -72 208 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
( -72 256 -0 ) ( -200 256 -0 ) ( -200 256 -32 ) afloor1_3 8 -16 -0 1 1
|
||||
( -200 208 -0 ) ( -200 256 -0 ) ( -72 256 -0 ) afloor1_3 8 -0 -0 1 1
|
||||
( -200 256 -32 ) ( -200 208 -32 ) ( -72 208 -32 ) afloor1_3 8 -0 -0 1 1
|
||||
( -72 208 -32 ) ( -200 208 -32 ) ( -200 208 -0 ) afloor1_3 8 -16 -0 1 1
|
||||
( -120 208 -0 ) ( -120 208 -32 ) ( -120 256 -32 ) afloor1_3 -0 -16 -0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-96 -64 24"
|
||||
}
|
||||
Loading…
Reference in New Issue