/* pm_debug.c - player move debugging code Copyright (C) 2017 Uncle Mike This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #include "common.h" #include "xash3d_mathlib.h" #include "pm_local.h" #if !XASH_DEDICATED #include "client.h" // CL_Particle #endif // expand debugging BBOX particle hulls by this many units. #define BOX_GAP 0.0f /* =============== PM_ParticleLine draw line from particles ================ */ void PM_ParticleLine( const vec3_t start, const vec3_t end, int pcolor, float life, float zvel ) { #if !XASH_DEDICATED float len, curdist; vec3_t diff, pos; // determine distance VectorSubtract( end, start, diff ); len = VectorNormalizeLength( diff ); curdist = 0; while( curdist <= len ) { VectorMA( start, curdist, diff, pos ); CL_Particle( pos, pcolor, life, 0, zvel ); curdist += 2.0f; } #endif // XASH_DEDICATED } /* ================ PM_DrawRectangle ================ */ static void PM_DrawRectangle( const vec3_t tl, const vec3_t bl, const vec3_t tr, const vec3_t br, int pcolor, float life ) { PM_ParticleLine( tl, bl, pcolor, life, 0 ); PM_ParticleLine( bl, br, pcolor, life, 0 ); PM_ParticleLine( br, tr, pcolor, life, 0 ); PM_ParticleLine( tr, tl, pcolor, life, 0 ); } /* ================ PM_DrawBBox ================ */ void PM_DrawBBox( const vec3_t mins, const vec3_t maxs, const vec3_t origin, int pcolor, float life ) { #if !XASH_DEDICATED vec3_t p[8], tmp; float gap = BOX_GAP; int i; for( i = 0; i < 8; i++ ) { tmp[0] = (i & 1) ? mins[0] - gap : maxs[0] + gap; tmp[1] = (i & 2) ? mins[1] - gap : maxs[1] + gap ; tmp[2] = (i & 4) ? mins[2] - gap : maxs[2] + gap ; VectorAdd( tmp, origin, tmp ); VectorCopy( tmp, p[i] ); } for( i = 0; i < 6; i++ ) { PM_DrawRectangle( p[boxpnt[i][1]], p[boxpnt[i][0]], p[boxpnt[i][2]], p[boxpnt[i][3]], pcolor, life ); } #endif // XASH_DEDICATED }