diff options
author | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-07-27 21:52:31 +0000 |
---|---|---|
committer | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-07-27 21:52:31 +0000 |
commit | 81367544d5b547642fdeaacb469ad4f59e82ab37 (patch) | |
tree | a2b310e88f67e2e02720ce570514dd4fce14e892 /code/qcommon/q_math.c | |
parent | d6e4128e9f2ca4f71fa1612c45f84bc45b82a5a2 (diff) | |
download | ioquake3-aero-81367544d5b547642fdeaacb469ad4f59e82ab37.tar.gz ioquake3-aero-81367544d5b547642fdeaacb469ad4f59e82ab37.zip |
* Early out AABB collision optimisation from Robert Beckebans (Xreal)
git-svn-id: svn://svn.icculus.org/quake3/trunk@1121 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/qcommon/q_math.c')
-rw-r--r-- | code/qcommon/q_math.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/code/qcommon/q_math.c b/code/qcommon/q_math.c index 5ddd81f..ae2de69 100644 --- a/code/qcommon/q_math.c +++ b/code/qcommon/q_math.c @@ -1037,6 +1037,53 @@ void AddPointToBounds( const vec3_t v, vec3_t mins, vec3_t maxs ) { } } +qboolean BoundsIntersect(const vec3_t mins, const vec3_t maxs, + const vec3_t mins2, const vec3_t maxs2) +{ + if ( maxs[0] < mins2[0] || + maxs[1] < mins2[1] || + maxs[2] < mins2[2] || + mins[0] > maxs2[0] || + mins[1] > maxs2[1] || + mins[2] > maxs2[2]) + { + return qfalse; + } + + return qtrue; +} + +qboolean BoundsIntersectSphere(const vec3_t mins, const vec3_t maxs, + const vec3_t origin, vec_t radius) +{ + if ( origin[0] - radius > maxs[0] || + origin[0] + radius < mins[0] || + origin[1] - radius > maxs[1] || + origin[1] + radius < mins[1] || + origin[2] - radius > maxs[2] || + origin[2] + radius < mins[2]) + { + return qfalse; + } + + return qtrue; +} + +qboolean BoundsIntersectPoint(const vec3_t mins, const vec3_t maxs, + const vec3_t origin) +{ + if ( origin[0] > maxs[0] || + origin[0] < mins[0] || + origin[1] > maxs[1] || + origin[1] < mins[1] || + origin[2] > maxs[2] || + origin[2] < mins[2]) + { + return qfalse; + } + + return qtrue; +} vec_t VectorNormalize( vec3_t v ) { // NOTE: TTimo - Apple G4 altivec source uses double? |