*/
+cvar_t sv_useareanodes = {CVAR_NOTIFY, "sv_useareanodes", "1"};
+
+void SV_World_Init(void)
+{
+ Cvar_RegisterVariable(&sv_useareanodes);
+ Collision_Init ();
+}
+
void ClearLink (link_t *l);
void RemoveLink (link_t *l);
*/
void SV_ClearWorld (void)
{
- Collision_Init ();
-
memset (sv_areanodes, 0, sizeof(sv_areanodes));
sv_numareanodes = 0;
Mod_CheckLoaded(sv.worldmodel);
if (ent->v.solid == SOLID_BSP)
{
if (ent->v.modelindex < 0 || ent->v.modelindex > MAX_MODELS)
- PR_RunError("SOLID_BSP with invalid modelindex!\n");
+ Host_Error("SOLID_BSP with invalid modelindex!\n");
model = sv.models[(int) ent->v.modelindex];
if (model != NULL)
{
if (model->type != mod_brush)
- PR_RunError("SOLID_BSP with non-BSP model\n");
+ Host_Error("SOLID_BSP with non-BSP model\n");
if (ent->v.angles[0] || ent->v.angles[2] || ent->v.avelocity[0] || ent->v.avelocity[2])
{
i = ent->v.modelindex;
if ((unsigned int) i >= MAX_MODELS)
- PR_RunError("SV_ClipMoveToEntity: invalid modelindex\n");
+ Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
model = sv.models[i];
if (i != 0 && model == NULL)
- PR_RunError("SV_ClipMoveToEntity: invalid modelindex\n");
+ Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
if ((int) ent->v.solid == SOLID_BSP)
{
if (touch == clip->passedict)
continue;
if (touch->v.solid == SOLID_TRIGGER)
+ {
+ ED_Print(touch);
Host_Error ("Trigger in clipping list");
+ }
if (clip->type == MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP)
continue;
}
// might interact, so do an exact clip
- if ((int)touch->v.flags & FL_MONSTER)
- trace = SV_ClipMoveToEntity (touch, clip->start, clip->mins2, clip->maxs2, clip->end);
- else if (touch->v.solid == SOLID_BSP)
+ if (touch->v.solid == SOLID_BSP)
trace = SV_ClipMoveToEntity (touch, clip->start, clip->hullmins, clip->hullmaxs, clip->end);
+ else if ((int)touch->v.flags & FL_MONSTER)
+ trace = SV_ClipMoveToEntity (touch, clip->start, clip->mins2, clip->maxs2, clip->end);
else
trace = SV_ClipMoveToEntity (touch, clip->start, clip->mins, clip->maxs, clip->end);
// LordHavoc: take the 'best' answers from the new trace and combine with existing data
*/
void SV_MoveBounds (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, vec3_t boxmins, vec3_t boxmaxs)
{
-#if 0
-// debug to test against everything
-boxmins[0] = boxmins[1] = boxmins[2] = -999999999;
-boxmaxs[0] = boxmaxs[1] = boxmaxs[2] = 999999999;
-#else
- int i;
-
- for (i=0 ; i<3 ; i++)
+ if (sv_useareanodes.integer)
{
- if (end[i] > start[i])
- {
- boxmins[i] = start[i] + mins[i] - 1;
- boxmaxs[i] = end[i] + maxs[i] + 1;
- }
- else
+ int i;
+
+ for (i=0 ; i<3 ; i++)
{
- boxmins[i] = end[i] + mins[i] - 1;
- boxmaxs[i] = start[i] + maxs[i] + 1;
+ if (end[i] > start[i])
+ {
+ boxmins[i] = start[i] + mins[i] - 1;
+ boxmaxs[i] = end[i] + maxs[i] + 1;
+ }
+ else
+ {
+ boxmins[i] = end[i] + mins[i] - 1;
+ boxmaxs[i] = start[i] + maxs[i] + 1;
+ }
}
}
-#endif
+ else
+ {
+ // debug to test against everything
+ boxmins[0] = boxmins[1] = boxmins[2] = -999999999;
+ boxmaxs[0] = boxmaxs[1] = boxmaxs[2] = 999999999;
+ }
}
/*