X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=cl_collision.c;h=1bc60f72a26ae88411683ccd7e507654d87179dd;hb=e5b201e7175b0c9bd5676115ea41693b4e3b55cb;hp=22d846af766e056f3f19fc222929dc4d6c99e2ac;hpb=1019743b2072b60aa1a2897b04c7cbb8f94454d1;p=xonotic%2Fdarkplaces.git diff --git a/cl_collision.c b/cl_collision.c index 22d846af..1bc60f72 100644 --- a/cl_collision.c +++ b/cl_collision.c @@ -28,53 +28,9 @@ typedef struct physentity_s physentity_t; */ -static entity_render_t *traceline_entity[MAX_EDICTS]; -static int traceline_entities; - -// builds list of entities for TraceLine to check later -void CL_TraceLine_ScanForBModels(void) -{ - int i; - entity_render_t *ent; - model_t *model; - traceline_entities = 0; - for (i = 1;i < MAX_EDICTS;i++) - { - ent = &cl_entities[i].render; - model = ent->model; - // look for embedded brush models only - if (model && model->name[0] == '*') - { - // this does nothing for * models currently... - //Mod_CheckLoaded(model); - if (model->type == mod_brush) - { - traceline_entity[traceline_entities++] = ent; - if (ent->angles[0] || ent->angles[2]) - { - // pitch or roll - VectorAdd(ent->origin, model->rotatedmins, ent->mins); - VectorAdd(ent->origin, model->rotatedmaxs, ent->maxs); - } - else if (ent->angles[1]) - { - // yaw - VectorAdd(ent->origin, model->yawmins, ent->mins); - VectorAdd(ent->origin, model->yawmaxs, ent->maxs); - } - else - { - VectorAdd(ent->origin, model->normalmins, ent->mins); - VectorAdd(ent->origin, model->normalmaxs, ent->maxs); - } - } - } - } -} - int cl_traceline_endcontents; -float CL_TraceLine (vec3_t start, vec3_t end, vec3_t impact, vec3_t normal, int contents, int hitbmodels) +float CL_TraceLine (const vec3_t start, const vec3_t end, vec3_t impact, vec3_t normal, int contents, int hitbmodels) { double maxfrac; trace_t trace; @@ -89,11 +45,11 @@ float CL_TraceLine (vec3_t start, vec3_t end, vec3_t impact, vec3_t normal, int cl_traceline_endcontents = trace.endcontents; maxfrac = trace.fraction; - if (hitbmodels && traceline_entities) + if (hitbmodels && cl_num_brushmodel_entities) { int n; entity_render_t *ent; - double /*start2[3], end2[3], */tracemins[3], tracemaxs[3]; + double tracemins[3], tracemaxs[3]; tracemins[0] = min(start[0], end[0]); tracemaxs[0] = max(start[0], end[0]); tracemins[1] = min(start[1], end[1]); @@ -102,9 +58,9 @@ float CL_TraceLine (vec3_t start, vec3_t end, vec3_t impact, vec3_t normal, int tracemaxs[2] = max(start[2], end[2]); // look for embedded bmodels - for (n = 0;n < traceline_entities;n++) + for (n = 0;n < cl_num_brushmodel_entities;n++) { - ent = traceline_entity[n]; + ent = cl_brushmodel_entities[n]; if (ent->mins[0] > tracemaxs[0] || ent->maxs[0] < tracemins[0] || ent->mins[1] > tracemaxs[1] || ent->maxs[1] < tracemins[1] || ent->mins[2] > tracemaxs[2] || ent->maxs[2] < tracemins[2]) @@ -125,3 +81,4 @@ float CL_TraceLine (vec3_t start, vec3_t end, vec3_t impact, vec3_t normal, int } return maxfrac; } +