]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - collision.c
SDL: reduce the sound buffer size (too much lag otherwise)
[xonotic/darkplaces.git] / collision.c
index 94c39843f59ae594588836de7ecef3df46829ab1..73a1bd0a5b374fa1d2c1a847d0150242c8ffae74 100644 (file)
@@ -823,14 +823,23 @@ void Collision_TraceLineBrushFloat(trace_t *trace, const vec3_t linestart, const
        }
 }
 
-void Collision_TracePointBrushFloat(trace_t *trace, const vec3_t point, const colbrushf_t *thatbrush)
+qboolean Collision_PointInsideBrushFloat(const vec3_t point, const colbrushf_t *brush)
 {
        int nplane;
        const colplanef_t *plane;
 
-       for (nplane = 0, plane = thatbrush->planes;nplane < thatbrush->numplanes;nplane++, plane++)
+       if (!BoxesOverlap(point, point, brush->mins, brush->maxs))
+               return false;
+       for (nplane = 0, plane = brush->planes;nplane < brush->numplanes;nplane++, plane++)
                if (DotProduct(plane->normal, point) > plane->dist)
-                       return;
+                       return false;
+       return true;
+}
+
+void Collision_TracePointBrushFloat(trace_t *trace, const vec3_t point, const colbrushf_t *thatbrush)
+{
+       if (!Collision_PointInsideBrushFloat(point, thatbrush))
+               return;
 
        trace->startsupercontents |= thatbrush->supercontents;
        if (trace->hitsupercontentsmask & thatbrush->supercontents)
@@ -1456,7 +1465,7 @@ void Collision_BoundingBoxOfBrushTraceSegment(const colbrushf_t *start, const co
 
 //===========================================
 
-void Collision_ClipToGenericEntity(trace_t *trace, model_t *model, int frame, const vec3_t bodymins, const vec3_t bodymaxs, int bodysupercontents, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int hitsupercontentsmask)
+void Collision_ClipToGenericEntity(trace_t *trace, dp_model_t *model, int frame, const vec3_t bodymins, const vec3_t bodymaxs, int bodysupercontents, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int hitsupercontentsmask)
 {
        float tempnormal[3], starttransformed[3], endtransformed[3];
 
@@ -1486,7 +1495,7 @@ void Collision_ClipToGenericEntity(trace_t *trace, model_t *model, int frame, co
        }
 }
 
-void Collision_ClipToWorld(trace_t *trace, model_t *model, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int hitsupercontents)
+void Collision_ClipToWorld(trace_t *trace, dp_model_t *model, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int hitsupercontents)
 {
        memset(trace, 0, sizeof(*trace));
        trace->fraction = trace->realfraction = 1;