Add -visdist param from bjptools (#300)

* Add support for -visdist param from bjp tools

* add mention to man

Co-authored-by: Shpuld Shpuldson <shp@cock.li>
This commit is contained in:
tk 2020-09-19 04:11:38 +03:00 committed by GitHub
parent 2f92681ba6
commit 19f8ac8110
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 0 deletions

View File

@ -124,6 +124,7 @@ extern qboolean ambientsky;
extern qboolean ambientwater;
extern qboolean ambientslime;
extern qboolean ambientlava;
extern int visdist;
extern byte *uncompressed;
extern int leafbytes;

View File

@ -51,6 +51,8 @@ Disable ambient sound generation for textures with names beginning
with '*LAVA'.
.IP "\fB-noambient\fP"
Disable all ambient sound generation.
.IP "\fB-visdist n\fP"
Allow culling of areas further than n units.
.SH AUTHOR
Kevin Shanahan (aka Tyrann) - http://disenchant.net

View File

@ -417,6 +417,28 @@ SimpleFlood(portal_t *srcportal, int leafnum, byte *portalsee)
}
}
/*
============================================================================
Used for visdist to get the distance from a winding to a portal
============================================================================
*/
float
distFromWinding(winding_t *w, portal_t *p)
{
float dist, mindist;
mindist = 1e20;
for (int i = 0; i < w->numpoints; ++i) {
dist = fabs(DotProduct(w->points[i], p->plane.normal) - p->plane.dist);
if (dist < mindist)
mindist = dist;
}
return mindist;
}
/*
==============
BasePortalVis
@ -479,6 +501,11 @@ BasePortalThread(void *dummy)
if (j == w->numpoints)
continue; // no points on back
if (visdist > 0) {
if (distFromWinding(tp->winding, p) > visdist || distFromWinding(p->winding, tp) > visdist)
continue;
}
portalsee[i] = 1;
}

View File

@ -47,6 +47,7 @@ qboolean ambientsky = true;
qboolean ambientwater = true;
qboolean ambientslime = true;
qboolean ambientlava = true;
int visdist = 0;
#if 0
void
@ -1269,6 +1270,10 @@ main(int argc, char **argv)
ambientwater = false;
ambientslime = false;
ambientlava = false;
} else if (!strcmp(argv[i], "-visdist")) {
visdist = atoi(argv[i+1]);
i++;
logprint("visdist = %i\n", visdist);
} else if (argv[i][0] == '-')
Error("Unknown option \"%s\"", argv[i]);
else