void SV_LinkEdict_AreaGrid(edict_t *ent)
{
areagrid_t *grid;
- int igrid[3], igridmins[3], igridmaxs[3], gridnum;
+ int igrid[3], igridmins[3], igridmaxs[3], gridnum, entitynumber = NUM_FOR_EDICT(ent);
+
+ if (entitynumber <= 0 || entitynumber >= sv.max_edicts || EDICT_NUM(entitynumber) != ent)
+ Host_Error("SV_LinkEdict_AreaGrid: invalid edict %p (sv.edicts is %p, edict compared to sv.edicts is %i)\n", ent, sv.edicts, entitynumber);
igridmins[0] = (int) ((ent->v->absmin[0] + sv_areagrid_bias[0]) * sv_areagrid_scale[0]);
igridmins[1] = (int) ((ent->v->absmin[1] + sv_areagrid_bias[1]) * sv_areagrid_scale[1]);
{
// wow, something outside the grid, store it as such
if (ent->v->solid == SOLID_TRIGGER)
- InsertLinkBefore (&ent->e->areagrid[0], &sv_areagrid_outside.trigger_edicts, NUM_FOR_EDICT(ent));
+ InsertLinkBefore (&ent->e->areagrid[0], &sv_areagrid_outside.trigger_edicts, entitynumber);
else
- InsertLinkBefore (&ent->e->areagrid[0], &sv_areagrid_outside.solid_edicts, NUM_FOR_EDICT(ent));
+ InsertLinkBefore (&ent->e->areagrid[0], &sv_areagrid_outside.solid_edicts, entitynumber);
return;
}
for (igrid[0] = igridmins[0];igrid[0] < igridmaxs[0];igrid[0]++, grid++, gridnum++)
{
if (ent->v->solid == SOLID_TRIGGER)
- InsertLinkBefore (&ent->e->areagrid[gridnum], &grid->trigger_edicts, NUM_FOR_EDICT(ent));
+ InsertLinkBefore (&ent->e->areagrid[gridnum], &grid->trigger_edicts, entitynumber);
else
- InsertLinkBefore (&ent->e->areagrid[gridnum], &grid->solid_edicts, NUM_FOR_EDICT(ent));
+ InsertLinkBefore (&ent->e->areagrid[gridnum], &grid->solid_edicts, entitynumber);
}
}
}
model = sv.models[(int) ent->v->modelindex];
if (model != NULL)
{
+ Mod_CheckLoaded(model);
if (model->type != mod_brush)
Host_Error("SOLID_BSP with non-BSP model\n");
{
int i;
trace_t trace;
- model_t *model;
-
- i = ent->v->modelindex;
- if ((unsigned int) i >= MAX_MODELS)
- Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
- model = sv.models[i];
- if (i != 0 && model == NULL)
- Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
+ model_t *model = NULL;
if ((int) ent->v->solid == SOLID_BSP)
{
+ i = ent->v->modelindex;
+ if ((unsigned int) i >= MAX_MODELS)
+ Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
+ model = sv.models[i];
+ if (i != 0 && model == NULL)
+ Host_Error("SV_ClipMoveToEntity: invalid modelindex\n");
+
Mod_CheckLoaded(model);
if (model->type != mod_brush)
{