]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - collision.c
changed r_speeds 2 and 3 reports to only list time spent during a single
[xonotic/darkplaces.git] / collision.c
index 1e8895606a939c9f79dbbba3028f4ce4c83d3e01..94c39843f59ae594588836de7ecef3df46829ab1 100644 (file)
@@ -1002,7 +1002,9 @@ void Collision_TraceBrushPolygonTransformFloat(trace_t *trace, const colbrushf_t
 
 
 #define MAX_BRUSHFORBOX 16
-static int brushforbox_index = 0;
+static unsigned int brushforbox_index = 0;
+// note: this relies on integer overflow to be consistent with modulo
+// MAX_BRUSHFORBOX, or in other words, MAX_BRUSHFORBOX must be a power of two!
 static colpointf_t brushforbox_point[MAX_BRUSHFORBOX*8];
 static colplanef_t brushforbox_plane[MAX_BRUSHFORBOX*6];
 static colbrushf_t brushforbox_brush[MAX_BRUSHFORBOX];
@@ -1145,7 +1147,7 @@ float Collision_ClipTrace_Line_Sphere(double *linestart, double *lineend, double
        if (deviationdist > sphereradius*sphereradius)
                return 1; // miss (off to the side)
        // nudge back to find the correct impact distance
-       impactdist += deviationdist - sphereradius;
+       impactdist -= sphereradius - deviationdist/sphereradius;
        if (impactdist >= linelength)
                return 1; // miss (not close enough)
        if (impactdist < 0)