![]() |
DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
|
|
Go to the source code of this file.
Data Structures | |
struct | collision_cachedtrace_parameters_t |
struct | collision_cachedtrace_t |
struct | extendtraceinfo_t |
Macros | |
#define | COLLISION_EDGECROSS_MINLENGTH2 (1.0f / 4194304.0f) |
#define | COLLISION_EDGEDIR_DOT_EPSILON (0.999f) |
#define | COLLISION_PLANE_DIST_EPSILON (2.0f / COLLISION_SNAPSCALE) |
#define | COLLISION_SNAP (1.0f / COLLISION_SNAPSCALE) |
#define | COLLISION_SNAP2 (2.0f / COLLISION_SNAPSCALE) |
#define | COLLISION_SNAPSCALE (32.0f) |
Functions | |
void | Collision_BoundingBoxOfBrushTraceSegment (const colbrushf_t *start, const colbrushf_t *end, vec3_t mins, vec3_t maxs, float startfrac, float endfrac) |
void | Collision_BrushForBox (colboxbrushf_t *boxbrush, const vec3_t mins, const vec3_t maxs, int supercontents, int q3surfaceflags, const texture_t *texture) |
void | Collision_Cache_ClipLineToGenericEntitySurfaces (trace_t *trace, model_t *model, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t start, const vec3_t end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask) |
void | Collision_Cache_ClipLineToWorldSurfaces (trace_t *trace, model_t *model, const vec3_t start, const vec3_t end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask) |
static unsigned int | Collision_Cache_HashIndexForArray (unsigned int *array, unsigned int size) |
void | Collision_Cache_Init (mempool_t *mempool) |
static collision_cachedtrace_t * | Collision_Cache_Lookup (model_t *model, const matrix4x4_t *matrix, const matrix4x4_t *inversematrix, const vec3_t start, const vec3_t end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask) |
void | Collision_Cache_NewFrame (void) |
static void | Collision_Cache_RebuildHash (void) |
void | Collision_Cache_Reset (qbool resetlimits) |
static void | Collision_CalcEdgeDirsForPolygonBrushFloat (colbrushf_t *brush) |
void | Collision_CalcPlanesForTriangleBrushFloat (colbrushf_t *brush) |
static void | Collision_ClipExtendFinish (extendtraceinfo_t *extendtraceinfo) |
static void | Collision_ClipExtendPrepare (extendtraceinfo_t *extendtraceinfo, trace_t *trace, const vec3_t tstart, const vec3_t tend, float textend) |
void | Collision_ClipLineToGenericEntity (trace_t *trace, model_t *model, const frameblend_t *frameblend, const skeleton_t *skeleton, const vec3_t bodymins, const vec3_t bodymaxs, int bodysupercontents, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t tstart, const vec3_t tend, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend, qbool hitsurfaces) |
void | Collision_ClipLineToWorld (trace_t *trace, model_t *model, const vec3_t tstart, const vec3_t tend, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend, qbool hitsurfaces) |
void | Collision_ClipPointToGenericEntity (trace_t *trace, model_t *model, const frameblend_t *frameblend, const skeleton_t *skeleton, const vec3_t bodymins, const vec3_t bodymaxs, int bodysupercontents, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t start, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask) |
void | Collision_ClipPointToWorld (trace_t *trace, model_t *model, const vec3_t start, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask) |
void | Collision_ClipToGenericEntity (trace_t *trace, model_t *model, const frameblend_t *frameblend, const skeleton_t *skeleton, const vec3_t bodymins, const vec3_t bodymaxs, int bodysupercontents, matrix4x4_t *matrix, matrix4x4_t *inversematrix, const vec3_t tstart, const vec3_t mins, const vec3_t maxs, const vec3_t tend, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend) |
void | Collision_ClipToWorld (trace_t *trace, model_t *model, const vec3_t tstart, const vec3_t mins, const vec3_t maxs, const vec3_t tend, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend) |
float | Collision_ClipTrace_Line_Sphere (double *linestart, double *lineend, double *sphereorigin, double sphereradius, double *impactpoint, double *impactnormal) |
void | Collision_CombineTraces (trace_t *cliptrace, const trace_t *trace, void *touch, qbool isbmodel) |
void | Collision_Init (void) |
colbrushf_t * | Collision_NewBrushFromPlanes (mempool_t *mempool, int numoriginalplanes, const colplanef_t *originalplanes, int supercontents, int q3surfaceflags, const texture_t *texture, int hasaabbplanes) |
qbool | Collision_PointInsideBrushFloat (const vec3_t point, const colbrushf_t *brush) |
static void | Collision_PrintBrushAsQHull (colbrushf_t *brush, const char *name) |
static void | Collision_SnapCopyPoints (int numpoints, const colpointf_t *in, colpointf_t *out, float fractionprecision, float invfractionprecision) |
void | Collision_TraceBrushBrushFloat (trace_t *trace, const colbrushf_t *trace_start, const colbrushf_t *trace_end, const colbrushf_t *other_start, const colbrushf_t *other_end) |
void | Collision_TraceBrushTriangleFloat (trace_t *trace, const colbrushf_t *thisbrush_start, const colbrushf_t *thisbrush_end, const float *v0, const float *v1, const float *v2, int supercontents, int q3surfaceflags, const texture_t *texture) |
void | Collision_TraceBrushTriangleMeshFloat (trace_t *trace, const colbrushf_t *thisbrush_start, const colbrushf_t *thisbrush_end, int numtriangles, const int *element3i, const float *vertex3f, int stride, float *bbox6f, int supercontents, int q3surfaceflags, const texture_t *texture, const vec3_t segmentmins, const vec3_t segmentmaxs) |
void | Collision_TraceLineBrushFloat (trace_t *trace, const vec3_t linestart, const vec3_t lineend, const colbrushf_t *other_start, const colbrushf_t *other_end) |
void | Collision_TraceLineTriangleFloat (trace_t *trace, const vec3_t linestart, const vec3_t lineend, const float *point0, const float *point1, const float *point2, int supercontents, int q3surfaceflags, const texture_t *texture) |
void | Collision_TraceLineTriangleMeshFloat (trace_t *trace, const vec3_t linestart, const vec3_t lineend, int numtriangles, const int *element3i, const float *vertex3f, int stride, float *bbox6f, int supercontents, int q3surfaceflags, const texture_t *texture, const vec3_t segmentmins, const vec3_t segmentmaxs) |
void | Collision_TracePointBrushFloat (trace_t *trace, const vec3_t linestart, const colbrushf_t *other_start) |
static void | Collision_TransformBrush (const matrix4x4_t *matrix, colbrushf_t *brush) |
static void | Collision_TranslateBrush (const vec3_t shift, colbrushf_t *brush) |
static void | Collision_ValidateBrush (colbrushf_t *brush) |
static float | furthestplanedist_float (const float *normal, const colpointf_t *points, int numpoints) |
static float | nearestplanedist_float (const float *normal, const colpointf_t *points, int numpoints) |
Variables | |
cvar_t | collision_bih_fullrecursion = {CF_CLIENT | CF_SERVER, "collision_bih_fullrecursion", "0", "debugging option to disable the bih recursion optimizations by iterating the entire tree"} |
cvar_t | collision_cache = {CF_CLIENT | CF_SERVER, "collision_cache", "1", "store results of collision traces for next frame to reuse if possible (optimization)"} |
static collision_cachedtrace_t * | collision_cachedtrace_array |
static unsigned int * | collision_cachedtrace_arrayfullhashindex |
static unsigned int * | collision_cachedtrace_arrayhashindex |
static unsigned int * | collision_cachedtrace_arraynext |
static unsigned char * | collision_cachedtrace_arrayused |
static int | collision_cachedtrace_firstfree |
static int * | collision_cachedtrace_hash |
static int | collision_cachedtrace_hashsize |
static int | collision_cachedtrace_lastused |
static int | collision_cachedtrace_max |
static mempool_t * | collision_cachedtrace_mempool |
static qbool | collision_cachedtrace_rebuildhash |
static unsigned char | collision_cachedtrace_sequence |
cvar_t | collision_debug_tracelineasbox = {CF_CLIENT | CF_SERVER, "collision_debug_tracelineasbox", "0", "workaround for any bugs in Collision_TraceLineBrushFloat by using Collision_TraceBrushBrushFloat"} |
cvar_t | collision_extendmovelength = {CF_CLIENT | CF_SERVER, "collision_extendmovelength", "16", "internal bias on trace length to ensure detection of collisions within the collision_impactnudge distance so that short moves do not degrade across frames (this does not alter the final trace length)"} |
cvar_t | collision_extendtraceboxlength = {CF_CLIENT | CF_SERVER, "collision_extendtraceboxlength", "1", "internal bias for tracebox() qc builtin to account for collision_impactnudge (this does not alter the final trace length)"} |
cvar_t | collision_extendtracelinelength = {CF_CLIENT | CF_SERVER, "collision_extendtracelinelength", "1", "internal bias for traceline() qc builtin to account for collision_impactnudge (this does not alter the final trace length)"} |
cvar_t | collision_impactnudge = {CF_CLIENT | CF_SERVER, "collision_impactnudge", "0.03125", "how much to back off from the impact"} |
mempool_t * | collision_mempool |
cvar_t | collision_triangle_axialsides = {CF_CLIENT | CF_SERVER, "collision_triangle_axialsides", "1", "generate axially-aligned edge planes on triangles - otherwise use perpendicular edge planes"} |
cvar_t | collision_triangle_bevelsides = {CF_CLIENT | CF_SERVER, "collision_triangle_bevelsides", "0", "generate sloped edge planes on triangles - if 0, see axialedgeplanes"} |
#define COLLISION_EDGECROSS_MINLENGTH2 (1.0f / 4194304.0f) |
Definition at line 7 of file collision.c.
Referenced by Collision_TraceBrushBrushFloat().
#define COLLISION_EDGEDIR_DOT_EPSILON (0.999f) |
Definition at line 6 of file collision.c.
Referenced by Collision_NewBrushFromPlanes().
#define COLLISION_PLANE_DIST_EPSILON (2.0f / COLLISION_SNAPSCALE) |
Definition at line 11 of file collision.c.
Referenced by Collision_CalcPlanesForTriangleBrushFloat(), Collision_NewBrushFromPlanes(), and Collision_ValidateBrush().
#define COLLISION_SNAP (1.0f / COLLISION_SNAPSCALE) |
Definition at line 9 of file collision.c.
Referenced by Collision_TraceBrushTriangleFloat(), and Collision_TraceBrushTriangleMeshFloat().
#define COLLISION_SNAP2 (2.0f / COLLISION_SNAPSCALE) |
Definition at line 10 of file collision.c.
Referenced by Collision_NewBrushFromPlanes().
#define COLLISION_SNAPSCALE (32.0f) |
Definition at line 8 of file collision.c.
Referenced by Collision_TraceBrushTriangleFloat(), and Collision_TraceBrushTriangleMeshFloat().
void Collision_BoundingBoxOfBrushTraceSegment | ( | const colbrushf_t * | start, |
const colbrushf_t * | end, | ||
vec3_t | mins, | ||
vec3_t | maxs, | ||
float | startfrac, | ||
float | endfrac ) |
Definition at line 1367 of file collision.c.
References i, maxs, min, mins, colbrushf_t::points, colpointf_t::v, VectorCopy, and VectorLerp.
void Collision_BrushForBox | ( | colboxbrushf_t * | boxbrush, |
const vec3_t | mins, | ||
const vec3_t | maxs, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture ) |
Definition at line 1141 of file collision.c.
References colboxbrushf_t::brush, colplanef_t::dist, colboxbrushf_t::edgedirs, colbrushf_t::edgedirs, colbrushf_t::hasaabbplanes, i, colbrushf_t::isaabb, colbrushf_t::maxs, maxs, colbrushf_t::mins, mins, colplanef_t::normal, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, colboxbrushf_t::planes, colbrushf_t::planes, colboxbrushf_t::points, colbrushf_t::points, colbrushf_t::q3surfaceflags, colplanef_t::q3surfaceflags, colbrushf_t::supercontents, colbrushf_t::texture, colplanef_t::texture, texture, colpointf_t::v, VectorCompare, VectorCopy, and VectorSet.
Referenced by Collision_ClipToGenericEntity(), Collision_TraceLineBrushFloat(), Mod_CollisionBIH_TraceBox(), and Mod_MDLMD2MD3_TraceBox().
void Collision_Cache_ClipLineToGenericEntitySurfaces | ( | trace_t * | trace, |
model_t * | model, | ||
matrix4x4_t * | matrix, | ||
matrix4x4_t * | inversematrix, | ||
const vec3_t | start, | ||
const vec3_t | end, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask ) |
Definition at line 1691 of file collision.c.
References Collision_Cache_Lookup(), Collision_ClipLineToGenericEntity(), collision_extendmovelength, model, NULL, collision_cachedtrace_t::result, collision_cachedtrace_t::valid, cvar_t::value, and vec3_origin.
Referenced by CL_Cache_TraceLineSurfaces().
void Collision_Cache_ClipLineToWorldSurfaces | ( | trace_t * | trace, |
model_t * | model, | ||
const vec3_t | start, | ||
const vec3_t | end, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask ) |
Definition at line 1705 of file collision.c.
References Collision_Cache_Lookup(), Collision_ClipLineToWorld(), collision_extendmovelength, identitymatrix, model, collision_cachedtrace_t::result, collision_cachedtrace_t::valid, and cvar_t::value.
Referenced by CL_Cache_TraceLineSurfaces().
|
static |
Definition at line 1573 of file collision.c.
Referenced by Collision_Cache_Lookup().
Definition at line 1509 of file collision.c.
References Collision_Cache_Reset(), and collision_cachedtrace_mempool.
Referenced by Collision_Init().
|
static |
Definition at line 1583 of file collision.c.
References collision_cache, Collision_Cache_HashIndexForArray(), Collision_Cache_RebuildHash(), Collision_Cache_Reset(), collision_cachedtrace_array, collision_cachedtrace_arrayfullhashindex, collision_cachedtrace_arrayhashindex, collision_cachedtrace_arraynext, collision_cachedtrace_arrayused, collision_cachedtrace_firstfree, collision_cachedtrace_hash, collision_cachedtrace_hashsize, collision_cachedtrace_lastused, collision_cachedtrace_max, collision_cachedtrace_sequence, collision_cachedtrace_parameters_t::end, collision_cachedtrace_parameters_t::hitsupercontentsmask, index, int(), cvar_t::integer, matrix4x4_t::m, collision_cachedtrace_parameters_t::matrix, collision_cachedtrace_parameters_t::model, model, collision_cachedtrace_t::p, params, r_refdef, r_stat_photoncache_cached, r_stat_photoncache_traced, collision_cachedtrace_parameters_t::skipmaterialflagsmask, collision_cachedtrace_parameters_t::skipsupercontentsmask, collision_cachedtrace_parameters_t::start, r_refdef_t::stats, collision_cachedtrace_t::valid, and VectorCopy.
Referenced by Collision_Cache_ClipLineToGenericEntitySurfaces(), and Collision_Cache_ClipLineToWorldSurfaces().
Definition at line 1548 of file collision.c.
References collision_cache, Collision_Cache_RebuildHash(), Collision_Cache_Reset(), collision_cachedtrace_max, collision_cachedtrace_rebuildhash, collision_cachedtrace_sequence, and cvar_t::integer.
Referenced by CL_Frame().
Definition at line 1515 of file collision.c.
References collision_cachedtrace_arrayhashindex, collision_cachedtrace_arraynext, collision_cachedtrace_arrayused, collision_cachedtrace_firstfree, collision_cachedtrace_hash, collision_cachedtrace_hashsize, collision_cachedtrace_lastused, collision_cachedtrace_max, collision_cachedtrace_rebuildhash, collision_cachedtrace_sequence, and index.
Referenced by Collision_Cache_Lookup(), and Collision_Cache_NewFrame().
Definition at line 1480 of file collision.c.
References collision_cache, collision_cachedtrace_array, collision_cachedtrace_arrayfullhashindex, collision_cachedtrace_arrayhashindex, collision_cachedtrace_arraynext, collision_cachedtrace_arrayused, collision_cachedtrace_firstfree, collision_cachedtrace_hash, collision_cachedtrace_hashsize, collision_cachedtrace_lastused, collision_cachedtrace_max, collision_cachedtrace_mempool, collision_cachedtrace_rebuildhash, collision_cachedtrace_sequence, cvar_t::integer, Mem_Alloc, and Mem_Free.
Referenced by CL_ParseServerInfo(), Collision_Cache_Init(), Collision_Cache_Lookup(), Collision_Cache_NewFrame(), gl_main_start(), and SV_SpawnServer().
|
static |
Definition at line 156 of file collision.c.
References colbrushf_t::edgedirs, i, colbrushf_t::numpoints, colbrushf_t::points, colpointf_t::v, and VectorSubtract.
Referenced by Collision_TraceBrushTriangleFloat(), and Collision_TraceBrushTriangleMeshFloat().
void Collision_CalcPlanesForTriangleBrushFloat | ( | colbrushf_t * | brush | ) |
Definition at line 451 of file collision.c.
References COLLISION_PLANE_DIST_EPSILON, collision_triangle_axialsides, collision_triangle_bevelsides, Collision_ValidateBrush(), Con_DPrintf(), CrossProduct, developer_extra, colplanef_t::dist, DotProduct, colbrushf_t::edgedirs, fabs(), i, cvar_t::integer, colplanef_t::normal, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::planes, colbrushf_t::points, TriangleNormal, colpointf_t::v, VectorAdd, VectorClear, VectorCopy, VectorNegate, VectorNormalize, and VectorSubtract.
Referenced by Collision_TraceBrushTriangleFloat(), and Collision_TraceBrushTriangleMeshFloat().
|
static |
Definition at line 1762 of file collision.c.
References bound, plane_t::dist, trace_t::endpos, trace_t::ent, trace_t::fraction, trace_t::hitq3surfaceflags, trace_t::hitsupercontents, trace_t::hittexture, plane_t::normal, NULL, trace_t::plane, extendtraceinfo_t::realdelta, extendtraceinfo_t::realstart, extendtraceinfo_t::scaletoextend, extendtraceinfo_t::trace, VectorClear, and VectorMA.
Referenced by Collision_ClipLineToGenericEntity(), Collision_ClipLineToWorld(), Collision_ClipToGenericEntity(), and Collision_ClipToWorld().
|
static |
Definition at line 1735 of file collision.c.
References extendtraceinfo_t::extend, extendtraceinfo_t::extenddelta, extendtraceinfo_t::extendend, extendtraceinfo_t::extendlength, extendtraceinfo_t::extendstart, trace_t::fraction, extendtraceinfo_t::realdelta, extendtraceinfo_t::realend, extendtraceinfo_t::reallength, extendtraceinfo_t::realstart, extendtraceinfo_t::scaletoextend, extendtraceinfo_t::trace, VectorCopy, VectorLength, VectorMA, and VectorSubtract.
Referenced by Collision_ClipLineToGenericEntity(), Collision_ClipLineToWorld(), Collision_ClipToGenericEntity(), and Collision_ClipToWorld().
void Collision_ClipLineToGenericEntity | ( | trace_t * | trace, |
model_t * | model, | ||
const frameblend_t * | frameblend, | ||
const skeleton_t * | skeleton, | ||
const vec3_t | bodymins, | ||
const vec3_t | bodymaxs, | ||
int | bodysupercontents, | ||
matrix4x4_t * | matrix, | ||
matrix4x4_t * | inversematrix, | ||
const vec3_t | tstart, | ||
const vec3_t | tend, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask, | ||
float | extend, | ||
qbool | hitsurfaces ) |
Definition at line 1844 of file collision.c.
References Collision_ClipExtendFinish(), Collision_ClipExtendPrepare(), Collision_ClipTrace_Box(), Con_Printf(), plane_t::dist, extendtraceinfo_t::extendend, extendtraceinfo_t::extendstart, Matrix4x4_Transform(), Matrix4x4_TransformPositivePlane(), model, plane_t::normal, plane_t::normal_and_dist, NULL, trace_t::plane, and vec3_origin.
Referenced by CL_TraceLine(), Collision_Cache_ClipLineToGenericEntitySurfaces(), and SV_TraceLine().
void Collision_ClipLineToWorld | ( | trace_t * | trace, |
model_t * | model, | ||
const vec3_t | tstart, | ||
const vec3_t | tend, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask, | ||
float | extend, | ||
qbool | hitsurfaces ) |
Definition at line 1870 of file collision.c.
References Collision_ClipExtendFinish(), Collision_ClipExtendPrepare(), extendtraceinfo_t::extendend, extendtraceinfo_t::extendstart, model, and NULL.
Referenced by CL_TraceLine(), Collision_Cache_ClipLineToWorldSurfaces(), and SV_TraceLine().
void Collision_ClipPointToGenericEntity | ( | trace_t * | trace, |
model_t * | model, | ||
const frameblend_t * | frameblend, | ||
const skeleton_t * | skeleton, | ||
const vec3_t | bodymins, | ||
const vec3_t | bodymaxs, | ||
int | bodysupercontents, | ||
matrix4x4_t * | matrix, | ||
matrix4x4_t * | inversematrix, | ||
const vec3_t | start, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask ) |
Definition at line 1883 of file collision.c.
References Collision_ClipTrace_Point(), Con_Printf(), plane_t::dist, trace_t::endpos, trace_t::fraction, Matrix4x4_Transform(), Matrix4x4_TransformPositivePlane(), model, plane_t::normal, plane_t::normal_and_dist, NULL, trace_t::plane, and VectorCopy.
Referenced by CL_TracePoint(), and SV_TracePoint().
void Collision_ClipPointToWorld | ( | trace_t * | trace, |
model_t * | model, | ||
const vec3_t | start, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask ) |
Definition at line 1905 of file collision.c.
References trace_t::endpos, trace_t::fraction, model, NULL, and VectorCopy.
Referenced by CL_TracePoint(), and SV_TracePoint().
void Collision_ClipToGenericEntity | ( | trace_t * | trace, |
model_t * | model, | ||
const frameblend_t * | frameblend, | ||
const skeleton_t * | skeleton, | ||
const vec3_t | bodymins, | ||
const vec3_t | bodymaxs, | ||
int | bodysupercontents, | ||
matrix4x4_t * | matrix, | ||
matrix4x4_t * | inversematrix, | ||
const vec3_t | tstart, | ||
const vec3_t | mins, | ||
const vec3_t | maxs, | ||
const vec3_t | tend, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask, | ||
float | extend ) |
Definition at line 1791 of file collision.c.
References colboxbrushf_t::brush, Collision_BrushForBox(), Collision_ClipExtendFinish(), Collision_ClipExtendPrepare(), Collision_ClipTrace_Box(), Collision_TransformBrush(), Collision_TranslateBrush(), Con_Printf(), plane_t::dist, extendtraceinfo_t::extendend, extendtraceinfo_t::extendstart, matrix4x4_t::m, Matrix4x4_Transform(), Matrix4x4_TransformPositivePlane(), maxs, mins, model, plane_t::normal, plane_t::normal_and_dist, NULL, and trace_t::plane.
Referenced by CL_TraceBox(), CL_TraceLine(), CL_TracePoint(), SV_PushMove(), SV_TraceBox(), SV_TraceLine(), and SV_TracePoint().
void Collision_ClipToWorld | ( | trace_t * | trace, |
model_t * | model, | ||
const vec3_t | tstart, | ||
const vec3_t | mins, | ||
const vec3_t | maxs, | ||
const vec3_t | tend, | ||
int | hitsupercontentsmask, | ||
int | skipsupercontentsmask, | ||
int | skipmaterialflagsmask, | ||
float | extend ) |
Definition at line 1834 of file collision.c.
References Collision_ClipExtendFinish(), Collision_ClipExtendPrepare(), extendtraceinfo_t::extendend, extendtraceinfo_t::extendstart, maxs, mins, model, and NULL.
Referenced by CL_TraceBox(), and SV_TraceBox().
float Collision_ClipTrace_Line_Sphere | ( | double * | linestart, |
double * | lineend, | ||
double * | sphereorigin, | ||
double | sphereradius, | ||
double * | impactpoint, | ||
double * | impactnormal ) |
Definition at line 1207 of file collision.c.
References dir, DotProduct, scale, sqrt(), v, VectorClear, VectorCopy, VectorLength, VectorLength2, VectorMA, VectorNormalize, VectorScale, and VectorSubtract.
void Collision_CombineTraces | ( | trace_t * | cliptrace, |
const trace_t * | trace, | ||
void * | touch, | ||
qbool | isbmodel ) |
Definition at line 1914 of file collision.c.
References trace_t::allsolid, trace_t::bmodelstartsolid, trace_t::endpos, trace_t::ent, trace_t::fraction, trace_t::hitq3surfaceflags, trace_t::hitsupercontents, trace_t::hittexture, trace_t::inwater, plane_t::normal, trace_t::plane, trace_t::startdepth, trace_t::startdepthnormal, trace_t::startsolid, trace_t::startsupercontents, VectorCopy, and VectorLength2.
Referenced by CL_Cache_TraceLineSurfaces(), CL_TraceBox(), CL_TraceLine(), CL_TracePoint(), SV_TraceBox(), SV_TraceLine(), and SV_TracePoint().
Definition at line 25 of file collision.c.
References collision_bih_fullrecursion, collision_cache, Collision_Cache_Init(), collision_debug_tracelineasbox, collision_extendmovelength, collision_extendtraceboxlength, collision_extendtracelinelength, collision_impactnudge, collision_mempool, collision_triangle_axialsides, collision_triangle_bevelsides, Cvar_RegisterVariable(), Mem_AllocPool, and NULL.
Referenced by World_Init().
colbrushf_t * Collision_NewBrushFromPlanes | ( | mempool_t * | mempool, |
int | numoriginalplanes, | ||
const colplanef_t * | originalplanes, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture, | ||
int | hasaabbplanes ) |
Definition at line 163 of file collision.c.
References COLLISION_EDGEDIR_DOT_EPSILON, COLLISION_PLANE_DIST_EPSILON, COLLISION_SNAP2, Collision_ValidateBrush(), Con_DPrint(), Con_DPrintf(), dir, colplanef_t::dist, DotProduct, colbrushf_t::edgedirs, colbrushf_t::elements, fabs(), floor(), furthestplanedist_float(), colbrushf_t::hasaabbplanes, colbrushf_t::isaabb, max, colbrushf_t::maxs, Mem_Alloc, min, colbrushf_t::mins, n, colplanef_t::normal, normal, NULL, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::numtriangles, colbrushf_t::planes, colbrushf_t::points, PolygonD_Divide(), PolygonD_QuadForPlane(), colbrushf_t::q3surfaceflags, colplanef_t::q3surfaceflags, colbrushf_t::supercontents, colbrushf_t::texture, colplanef_t::texture, texture, colpointf_t::v, v, VectorClear, VectorCopy, VectorDistance2, VectorNegate, VectorNormalize, VectorSubtract, and w.
Referenced by Mod_Q2BSP_LoadBrushes(), and Mod_Q3BSP_LoadBrushes().
qbool Collision_PointInsideBrushFloat | ( | const vec3_t | point, |
const colbrushf_t * | brush ) |
Definition at line 910 of file collision.c.
References BoxesOverlap, colplanef_t::dist, DotProduct, colbrushf_t::maxs, colbrushf_t::mins, colplanef_t::normal, and colbrushf_t::planes.
|
static |
Definition at line 53 of file collision.c.
References Con_Printf(), colplanef_t::dist, i, name, colplanef_t::normal, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, and colpointf_t::v.
Referenced by Collision_ValidateBrush().
|
static |
Definition at line 985 of file collision.c.
References floor(), i, colpointf_t::v, and v.
Referenced by Collision_TraceBrushTriangleFloat(), and Collision_TraceBrushTriangleMeshFloat().
void Collision_TraceBrushBrushFloat | ( | trace_t * | trace, |
const colbrushf_t * | trace_start, | ||
const colbrushf_t * | trace_end, | ||
const colbrushf_t * | other_start, | ||
const colbrushf_t * | other_end ) |
Definition at line 559 of file collision.c.
References trace_t::allsolid, bound, COLLISION_EDGECROSS_MINLENGTH2, collision_impactnudge, CrossProduct, texture_t::currentmaterialflags, plane_t::dist, colbrushf_t::edgedirs, f, trace_t::fraction, furthestplanedist_float(), colbrushf_t::hasaabbplanes, trace_t::hitq3surfaceflags, trace_t::hitsupercontents, trace_t::hitsupercontentsmask, trace_t::hittexture, colbrushf_t::isaabb, nearestplanedist_float(), colplanef_t::normal, plane_t::normal, NULL, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, trace_t::plane, colbrushf_t::planes, colbrushf_t::points, colbrushf_t::q3surfaceflags, colplanef_t::q3surfaceflags, trace_t::skipmaterialflagsmask, trace_t::skipsupercontentsmask, trace_t::startdepth, trace_t::startdepthnormal, trace_t::startsolid, trace_t::startsupercontents, trace_t::starttexture, colbrushf_t::supercontents, colbrushf_t::texture, colplanef_t::texture, colpointf_t::v, cvar_t::value, Vector4Clear, VectorClear, VectorCopy, VectorLength2, and VectorNormalize.
Referenced by Collision_TraceBrushTriangleFloat(), Collision_TraceBrushTriangleMeshFloat(), Collision_TraceLineBrushFloat(), and Mod_CollisionBIH_TraceBrush().
void Collision_TraceBrushTriangleFloat | ( | trace_t * | trace, |
const colbrushf_t * | thisbrush_start, | ||
const colbrushf_t * | thisbrush_end, | ||
const float * | v0, | ||
const float * | v1, | ||
const float * | v2, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture ) |
Definition at line 1107 of file collision.c.
References Collision_CalcEdgeDirsForPolygonBrushFloat(), Collision_CalcPlanesForTriangleBrushFloat(), COLLISION_SNAP, Collision_SnapCopyPoints(), COLLISION_SNAPSCALE, Collision_TraceBrushBrushFloat(), colbrushf_t::edgedirs, colbrushf_t::hasaabbplanes, i, colbrushf_t::isaabb, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, colbrushf_t::q3surfaceflags, colplanef_t::q3surfaceflags, colbrushf_t::supercontents, colbrushf_t::texture, colplanef_t::texture, texture, v, v0, v1, v2, and VectorCopy.
Referenced by Mod_CollisionBIH_TraceBrush().
void Collision_TraceBrushTriangleMeshFloat | ( | trace_t * | trace, |
const colbrushf_t * | thisbrush_start, | ||
const colbrushf_t * | thisbrush_end, | ||
int | numtriangles, | ||
const int * | element3i, | ||
const float * | vertex3f, | ||
int | stride, | ||
float * | bbox6f, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture, | ||
const vec3_t | segmentmins, | ||
const vec3_t | segmentmaxs ) |
Definition at line 996 of file collision.c.
References BoxesOverlap, Collision_CalcEdgeDirsForPolygonBrushFloat(), Collision_CalcPlanesForTriangleBrushFloat(), COLLISION_SNAP, Collision_SnapCopyPoints(), COLLISION_SNAPSCALE, Collision_TraceBrushBrushFloat(), colbrushf_t::edgedirs, colbrushf_t::hasaabbplanes, i, colbrushf_t::isaabb, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, colbrushf_t::q3surfaceflags, colplanef_t::q3surfaceflags, stride, colbrushf_t::supercontents, colbrushf_t::texture, colplanef_t::texture, texture, TriangleBBoxOverlapsBox, v, and VectorCopy.
Referenced by Mod_MDLMD2MD3_TraceBox().
void Collision_TraceLineBrushFloat | ( | trace_t * | trace, |
const vec3_t | linestart, | ||
const vec3_t | lineend, | ||
const colbrushf_t * | other_start, | ||
const colbrushf_t * | other_end ) |
Definition at line 760 of file collision.c.
References trace_t::allsolid, bound, colboxbrushf_t::brush, Collision_BrushForBox(), collision_debug_tracelineasbox, collision_impactnudge, Collision_TraceBrushBrushFloat(), texture_t::currentmaterialflags, colplanef_t::dist, plane_t::dist, DotProduct, f, trace_t::fraction, trace_t::hitq3surfaceflags, trace_t::hitsupercontents, trace_t::hitsupercontentsmask, trace_t::hittexture, cvar_t::integer, colplanef_t::normal, plane_t::normal, NULL, colbrushf_t::numplanes, trace_t::plane, colbrushf_t::planes, colplanef_t::q3surfaceflags, trace_t::skipmaterialflagsmask, trace_t::skipsupercontentsmask, trace_t::startdepth, trace_t::startdepthnormal, trace_t::startsolid, trace_t::startsupercontents, trace_t::starttexture, colbrushf_t::supercontents, colplanef_t::texture, cvar_t::value, Vector4Clear, VectorClear, and VectorCopy.
Referenced by Collision_ClipTrace_Box(), and Mod_CollisionBIH_TraceLineShared().
void Collision_TraceLineTriangleFloat | ( | trace_t * | trace, |
const vec3_t | linestart, | ||
const vec3_t | lineend, | ||
const float * | point0, | ||
const float * | point1, | ||
const float * | point2, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture ) |
Definition at line 1251 of file collision.c.
References collision_impactnudge, CrossProduct, plane_t::dist, DotProduct, f, trace_t::fraction, trace_t::hitq3surfaceflags, trace_t::hitsupercontents, trace_t::hitsupercontentsmask, trace_t::hittexture, plane_t::normal, trace_t::plane, trace_t::skipmaterialflagsmask, trace_t::skipsupercontentsmask, sqrt(), texture, cvar_t::value, VectorScale, and VectorSubtract.
Referenced by Collision_TraceLineTriangleMeshFloat(), and Mod_CollisionBIH_TraceLineShared().
void Collision_TraceLineTriangleMeshFloat | ( | trace_t * | trace, |
const vec3_t | linestart, | ||
const vec3_t | lineend, | ||
int | numtriangles, | ||
const int * | element3i, | ||
const float * | vertex3f, | ||
int | stride, | ||
float * | bbox6f, | ||
int | supercontents, | ||
int | q3surfaceflags, | ||
const texture_t * | texture, | ||
const vec3_t | segmentmins, | ||
const vec3_t | segmentmaxs ) |
Definition at line 1078 of file collision.c.
References BoxesOverlap, Collision_TraceLineTriangleFloat(), i, stride, and texture.
Referenced by Mod_MDLMD2MD3_TraceLine().
void Collision_TracePointBrushFloat | ( | trace_t * | trace, |
const vec3_t | linestart, | ||
const colbrushf_t * | other_start ) |
Definition at line 923 of file collision.c.
References trace_t::allsolid, texture_t::currentmaterialflags, colplanef_t::dist, plane_t::dist, DotProduct, trace_t::hitsupercontentsmask, colplanef_t::normal, plane_t::normal, NULL, colbrushf_t::numplanes, trace_t::plane, colbrushf_t::planes, trace_t::skipmaterialflagsmask, trace_t::skipsupercontentsmask, trace_t::startdepth, trace_t::startdepthnormal, trace_t::startsolid, trace_t::startsupercontents, trace_t::starttexture, colbrushf_t::supercontents, colplanef_t::texture, Vector4Clear, VectorClear, and VectorCopy.
Referenced by Mod_CollisionBIH_TracePoint().
|
static |
Definition at line 1411 of file collision.c.
References colplanef_t::dist, colbrushf_t::edgedirs, colbrushf_t::hasaabbplanes, i, colbrushf_t::isaabb, Matrix4x4_Transform(), Matrix4x4_TransformPositivePlane(), colbrushf_t::maxs, colbrushf_t::mins, colplanef_t::normal, colplanef_t::normal_and_dist, colbrushf_t::numedgedirs, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, colpointf_t::v, v, and VectorCopy.
Referenced by Collision_ClipToGenericEntity().
|
static |
Definition at line 1395 of file collision.c.
References colplanef_t::dist, DotProduct, i, colbrushf_t::maxs, colbrushf_t::mins, colplanef_t::normal, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, colpointf_t::v, and VectorAdd.
Referenced by Collision_ClipToGenericEntity().
|
static |
Definition at line 65 of file collision.c.
References COLLISION_PLANE_DIST_EPSILON, Collision_PrintBrushAsQHull(), Con_Print(), Con_Printf(), colplanef_t::dist, DotProduct, fabs(), colplanef_t::normal, colbrushf_t::numplanes, colbrushf_t::numpoints, colbrushf_t::planes, colbrushf_t::points, and colpointf_t::v.
Referenced by Collision_CalcPlanesForTriangleBrushFloat(), and Collision_NewBrushFromPlanes().
|
static |
Definition at line 140 of file collision.c.
References DotProduct, max, normal, and colpointf_t::v.
Referenced by Collision_NewBrushFromPlanes(), and Collision_TraceBrushBrushFloat().
|
static |
Definition at line 124 of file collision.c.
References DotProduct, min, normal, and colpointf_t::v.
Referenced by Collision_TraceBrushBrushFloat().
cvar_t collision_bih_fullrecursion = {CF_CLIENT | CF_SERVER, "collision_bih_fullrecursion", "0", "debugging option to disable the bih recursion optimizations by iterating the entire tree"} |
Definition at line 21 of file collision.c.
Referenced by Collision_Init(), and Mod_CollisionBIH_TraceLineShared().
cvar_t collision_cache = {CF_CLIENT | CF_SERVER, "collision_cache", "1", "store results of collision traces for next frame to reuse if possible (optimization)"} |
Definition at line 18 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_NewFrame(), Collision_Cache_Reset(), and Collision_Init().
|
static |
Definition at line 1467 of file collision.c.
Referenced by Collision_Cache_Lookup(), and Collision_Cache_Reset().
|
static |
Definition at line 1474 of file collision.c.
Referenced by Collision_Cache_Lookup(), and Collision_Cache_Reset().
|
static |
Definition at line 1475 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1476 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1477 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1468 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1473 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1472 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1469 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1470 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_NewFrame(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1466 of file collision.c.
Referenced by Collision_Cache_Init(), and Collision_Cache_Reset().
|
static |
Definition at line 1478 of file collision.c.
Referenced by Collision_Cache_NewFrame(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
|
static |
Definition at line 1471 of file collision.c.
Referenced by Collision_Cache_Lookup(), Collision_Cache_NewFrame(), Collision_Cache_RebuildHash(), and Collision_Cache_Reset().
cvar_t collision_debug_tracelineasbox = {CF_CLIENT | CF_SERVER, "collision_debug_tracelineasbox", "0", "workaround for any bugs in Collision_TraceLineBrushFloat by using Collision_TraceBrushBrushFloat"} |
Definition at line 17 of file collision.c.
Referenced by Collision_Init(), and Collision_TraceLineBrushFloat().
cvar_t collision_extendmovelength = {CF_CLIENT | CF_SERVER, "collision_extendmovelength", "16", "internal bias on trace length to ensure detection of collisions within the collision_impactnudge distance so that short moves do not degrade across frames (this does not alter the final trace length)"} |
Definition at line 14 of file collision.c.
Referenced by CL_CheckBottom(), CL_ClientMovement_Move(), CL_ClientMovement_Physics_Walk(), CL_ClientMovement_Unstick(), CL_ClientMovement_UpdateStatus(), CL_LinkNetworkEntity(), CL_movestep(), CL_NewParticle(), CL_ParticleExplosion(), CL_SpawnDecalParticleForPoint(), CL_Trace_Toss(), Collision_Cache_ClipLineToGenericEntitySurfaces(), Collision_Cache_ClipLineToWorldSurfaces(), Collision_Init(), PHYS_NudgeOutOfSolid(), PHYS_TestEntityPosition(), R_CompleteLightPoint(), R_DrawParticles(), R_MoveExplosion(), R_NewExplosion(), R_Shadow_BounceGrid_TracePhotons_Shot(), R_Shadow_SelectLightInView(), R_Shadow_SetCursorLocationForView(), Sbar_ShowFPS(), SV_CheckBottom(), SV_Ent_Create_f(), SV_Ent_Remove_f(), SV_movestep(), SV_NudgeOutOfSolid_PivotIsKnownGood(), SV_PushEntity(), SV_PushMove(), SV_SetIdealPitch(), SV_Trace_Toss(), SV_UserFriction(), SV_WalkMove(), V_CalcRefdefUsing(), VM_CL_checkbottom(), VM_CL_droptofloor(), VM_SV_aim(), and VM_SV_droptofloor().
cvar_t collision_extendtraceboxlength = {CF_CLIENT | CF_SERVER, "collision_extendtraceboxlength", "1", "internal bias for tracebox() qc builtin to account for collision_impactnudge (this does not alter the final trace length)"} |
Definition at line 15 of file collision.c.
Referenced by Collision_Init(), VM_CL_tracebox(), and VM_SV_tracebox().
cvar_t collision_extendtracelinelength = {CF_CLIENT | CF_SERVER, "collision_extendtracelinelength", "1", "internal bias for traceline() qc builtin to account for collision_impactnudge (this does not alter the final trace length)"} |
Definition at line 16 of file collision.c.
Referenced by Collision_Init(), VM_CL_traceline(), and VM_SV_traceline().
cvar_t collision_impactnudge = {CF_CLIENT | CF_SERVER, "collision_impactnudge", "0.03125", "how much to back off from the impact"} |
Definition at line 13 of file collision.c.
Referenced by Collision_Init(), Collision_TraceBrushBrushFloat(), Collision_TraceLineBrushFloat(), Collision_TraceLineTriangleFloat(), Mod_Q1BSP_RecursiveHullCheck(), and Mod_Q1BSP_TraceLineAgainstSurfacesFindTextureOnNode().
mempool_t* collision_mempool |
Definition at line 23 of file collision.c.
Referenced by Collision_Init().
cvar_t collision_triangle_axialsides = {CF_CLIENT | CF_SERVER, "collision_triangle_axialsides", "1", "generate axially-aligned edge planes on triangles - otherwise use perpendicular edge planes"} |
Definition at line 20 of file collision.c.
Referenced by Collision_CalcPlanesForTriangleBrushFloat(), and Collision_Init().
cvar_t collision_triangle_bevelsides = {CF_CLIENT | CF_SERVER, "collision_triangle_bevelsides", "0", "generate sloped edge planes on triangles - if 0, see axialedgeplanes"} |
Definition at line 19 of file collision.c.
Referenced by Collision_CalcPlanesForTriangleBrushFloat(), and Collision_Init().