int ret;
mplane_t *plane;
double t1, t2;
- //double frac;
- //double mid[3];
// variables that need to be stored on the stack when recursing
dclipnode_t *node;
return HULLCHECKSTATE_DONE;
}
+/*
// used if start and end are the same
static void RecursiveHullCheckPoint (RecursiveHullCheckTraceInfo_t *t, int num)
{
+ // If you can read this, you understand BSP trees
while (num >= 0)
num = t->hull->clipnodes[num].children[((t->hull->planes[t->hull->clipnodes[num].planenum].type < 3) ? (t->start[t->hull->planes[t->hull->clipnodes[num].planenum].type]) : (DotProduct(t->hull->planes[t->hull->clipnodes[num].planenum].normal, t->start))) < t->hull->planes[t->hull->clipnodes[num].planenum].dist];
}
}
}
+*/
void Collision_RoundUpToHullSize(const model_t *cmodel, const vec3_t inmins, const vec3_t inmaxs, vec3_t outmins, vec3_t outmaxs)
{
VectorCopy(endd, rhc.end);
VectorCopy(rhc.end, rhc.trace->endpos);
VectorSubtract(rhc.end, rhc.start, rhc.dist);
- if (DotProduct(rhc.dist, rhc.dist) > 0.00001)
+ //if (DotProduct(rhc.dist, rhc.dist) > 0.00001)
RecursiveHullCheck (&rhc, rhc.hull->firstclipnode, 0, 1, rhc.start, rhc.end);
- else
- RecursiveHullCheckPoint (&rhc, rhc.hull->firstclipnode);
+ //else
+ // RecursiveHullCheckPoint (&rhc, rhc.hull->firstclipnode);
// if we hit, unrotate endpos and normal, and store the entity we hit
if (rhc.trace->fraction != 1)
rhc.trace->plane.normal[1] = DotProduct (tempd, left);
rhc.trace->plane.normal[2] = DotProduct (tempd, up);
}
- // fix offset
- VectorAdd (rhc.trace->endpos, offset, rhc.trace->endpos);
rhc.trace->ent = (void *) cent;
}
else if (rhc.trace->allsolid || rhc.trace->startsolid)
rhc.trace->ent = (void *) cent;
+ // fix offset
+ VectorAdd (rhc.trace->endpos, offset, rhc.trace->endpos);
}
else
{
rhc.hull = HullForBBoxEntity (corigin, cmins, cmaxs, mins, maxs, offset);
// trace a line through the generated clipping hull
- VectorCopy(start, rhc.start);
- VectorCopy(end, rhc.end);
+ VectorSubtract(start, offset, rhc.start);
+ VectorSubtract(end, offset, rhc.end);
VectorCopy(rhc.end, rhc.trace->endpos);
VectorSubtract(rhc.end, rhc.start, rhc.dist);
- if (DotProduct(rhc.dist, rhc.dist) > 0.00001)
+ //if (DotProduct(rhc.dist, rhc.dist) > 0.00001)
RecursiveHullCheck (&rhc, rhc.hull->firstclipnode, 0, 1, rhc.start, rhc.end);
- else
- RecursiveHullCheckPoint (&rhc, rhc.hull->firstclipnode);
+ //else
+ // RecursiveHullCheckPoint (&rhc, rhc.hull->firstclipnode);
// if we hit, store the entity we hit
if (rhc.trace->fraction != 1)
rhc.trace->ent = (void *) cent;
}
}
+