From da07f11a3630208c1b8761a1d9c3bafd7e65871b Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Wed, 13 Mar 2002 23:56:41 +0000 Subject: [PATCH] greatly improved chances of an entity being visible (in traceline test), checks nearest point (typically corner) on bbox as well as a random trace git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1641 d7cf8633-e32d-0410-b094-e92efae38249 --- sv_main.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/sv_main.c b/sv_main.c index 5e886884..642eb5c4 100644 --- a/sv_main.c +++ b/sv_main.c @@ -680,7 +680,25 @@ void SV_WriteEntitiesToClient (client_t *client, edict_t *clent, sizebuf_t *msg) client->visibletime[e] = realtime + 1; else { - if (realtime > client->visibletime[e]) + //test nearest point on bbox + testorigin[0] = bound(entmins[0], org[0], entmaxs[0]); + testorigin[1] = bound(entmins[1], org[1], entmaxs[1]); + testorigin[2] = bound(entmins[2], org[2], entmaxs[2]); + + memset (&trace, 0, sizeof(trace_t)); + trace.fraction = 1; + trace.allsolid = true; + VectorCopy(testorigin, trace.endpos); + + VectorCopy(org, RecursiveHullCheckInfo.start); + VectorSubtract(testorigin, testeye, RecursiveHullCheckInfo.dist); + RecursiveHullCheckInfo.hull = sv.worldmodel->hulls; + RecursiveHullCheckInfo.trace = &trace; + SV_RecursiveHullCheck (sv.worldmodel->hulls->firstclipnode, 0, 1, testeye, testorigin); + + if (trace.fraction == 1) + client->visibletime[e] = realtime + 1; + else if (realtime > client->visibletime[e]) { culled_trace++; continue; -- 2.39.2