Fixed decails (RecursiveHullCheck bug)

This commit is contained in:
cholleme 2003-02-16 20:02:36 +00:00
parent bf614426f3
commit b3c239b585
2 changed files with 13 additions and 5 deletions

View file

@ -54,7 +54,7 @@ ParticleEffect_t *particleEffects;
vec3_t r_pright, r_pup, r_ppn;
// <AWE> missing prototypes
extern qboolean SV_RecursiveHullCheck (hull_t *hull, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace);
extern qboolean SV_RecursiveHullCheck (model_t *m, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace);
ParticleEffect_t *ParticleEffectDefinedForName(const char *name);
@ -1409,10 +1409,12 @@ void R_DrawParticles (void)
memset (&trace, 0, sizeof(trace));
trace.fraction = 1;
SV_RecursiveHullCheck (cl.worldmodel->hulls, 0, 0, 1, p->org, neworg, &trace);
SV_RecursiveHullCheck (cl.worldmodel, 0, 0, 1, p->org, neworg, &trace);
if (trace.fraction < 1) {
vec3_t tangent;
//calc reflection vector
d = DotProduct (p->vel, trace.plane.normal);
VectorMA (p->vel, -2*d, trace.plane.normal, p->vel);

12
world.c
View file

@ -633,14 +633,14 @@ extern vec3_t trace_mins, trace_maxs;
extern vec3_t trace_extents;
extern int trace_contents;
extern qboolean trace_ispoint; // optimized case
void CM_RecursiveHullCheck (int num, float p1f, float p2f, vec3_t p1, vec3_t p2);
void CM_RecursiveHullCheck (model_t *m, int num, float p1f, float p2f, vec3_t p1, vec3_t p2);
/*
==================
SV_RecursiveHullCheck
==================
*/
qboolean SV_RecursiveHullCheck (hull_t *hull, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace)
qboolean SV_RecursiveHullCheck (model_t *m, int num, float p1f, float p2f, vec3_t p1, vec3_t p2, trace_t *trace)
{
VectorCopy (p1, trace_start);
VectorCopy (p2, trace_end);
@ -650,8 +650,14 @@ qboolean SV_RecursiveHullCheck (hull_t *hull, int num, float p1f, float p2f, vec
trace_contents = CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_MONSTERCLIP;
trace_trace = *trace;
CM_RecursiveHullCheck (0, p1f, p2f, p1, p2);
CM_RecursiveHullCheck (m, 0, p1f, p2f, p1, p2);
*trace = trace_trace;
trace->endpos[0] = p1[0] + trace->fraction * (p2[0] - p1[0]);
trace->endpos[1] = p1[1] + trace->fraction * (p2[1] - p1[1]);
trace->endpos[2] = p1[2] + trace->fraction * (p2[2] - p1[2]);
return false;
/*
dclipnode_t *node;