+ VectorCopy(start, clip.start);
+ VectorCopy(end, clip.end);
+ VectorCopy(mins, clip.mins);
+ VectorCopy(maxs, clip.maxs);
+ VectorCopy(mins, clip.mins2);
+ VectorCopy(maxs, clip.maxs2);
+ clip.type = type;
+ clip.passedict = passedict;
+#if COLLISIONPARANOID >= 3
+ Con_Printf("move(%f %f %f,%f %f %f)", clip.start[0], clip.start[1], clip.start[2], clip.end[0], clip.end[1], clip.end[2]);
+#endif
+
+ // clip to world
+ clip.trace = SV_ClipMoveToEntity(sv.edicts, clip.start, clip.mins, clip.maxs, clip.end, clip.type);
+ if (clip.trace.startsolid || clip.trace.fraction < 1)
+ clip.trace.ent = sv.edicts;
+ if (clip.type == MOVE_WORLDONLY)
+ return clip.trace;
+
+ if (clip.type == MOVE_MISSILE)
+ {
+ // LordHavoc: modified this, was = -15, now -= 15
+ for (i = 0;i < 3;i++)
+ {
+ clip.mins2[i] -= 15;
+ clip.maxs2[i] += 15;
+ }
+ }
+
+ // get adjusted box for bmodel collisions if the world is q1bsp or hlbsp
+ if (sv.worldmodel && sv.worldmodel->brush.RoundUpToHullSize)
+ sv.worldmodel->brush.RoundUpToHullSize(sv.worldmodel, clip.mins, clip.maxs, hullmins, hullmaxs);
+ else
+ {
+ VectorCopy(clip.mins, hullmins);
+ VectorCopy(clip.maxs, hullmaxs);
+ }
+
+ // create the bounding box of the entire move
+ for (i = 0;i < 3;i++)
+ {
+ clip.boxmins[i] = min(clip.start[i], clip.trace.endpos[i]) + min(hullmins[i], clip.mins2[i]) - 1;
+ clip.boxmaxs[i] = max(clip.start[i], clip.trace.endpos[i]) + max(hullmaxs[i], clip.maxs2[i]) + 1;
+ }
+
+ // debug override to test against everything
+ if (sv_debugmove.integer)
+ {
+ clip.boxmins[0] = clip.boxmins[1] = clip.boxmins[2] = -999999999;
+ clip.boxmaxs[0] = clip.boxmaxs[1] = clip.boxmaxs[2] = 999999999;
+ }
+
+ // clip to enttiies