]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
greatly improved chances of an entity being visible (in traceline test), checks neare...
authorlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 13 Mar 2002 23:56:41 +0000 (23:56 +0000)
committerlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 13 Mar 2002 23:56:41 +0000 (23:56 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1641 d7cf8633-e32d-0410-b094-e92efae38249

sv_main.c

index 5e886884e58078a6e9e3c750982827221cc63add..642eb5c40aeea79f97b183c0a91510a8272174a7 100644 (file)
--- 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;