From 8dc525e53fd74ae79cc4246e5a002b2e3f26fb3b Mon Sep 17 00:00:00 2001 From: Spoike Date: Fri, 6 Mar 2015 03:20:59 +0000 Subject: [PATCH] fix brushlist clipping issue with submodels. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4845 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/common/q1bsp.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/engine/common/q1bsp.c b/engine/common/q1bsp.c index 4c4e21c3d..31f1bec9d 100644 --- a/engine/common/q1bsp.c +++ b/engine/common/q1bsp.c @@ -757,12 +757,11 @@ void Q1BSP_LoadBrushes(model_t *model) if (permodel->ver != 1 || lumpsizeremaining < sizeof(*permodel) + permodel->numbrushes*sizeof(*perbrush) + permodel->numplanes*sizeof(*perplane)) return; - //find the correct rootnode for the model + //find the correct rootnode for the submodel (submodels are not set up yet). rootnode = model->nodes; if (permodel->modelnum > model->numsubmodels) return; - if (permodel->modelnum) - rootnode += model->submodels[permodel->modelnum-1].headnode[0]; + rootnode += model->submodels[permodel->modelnum].headnode[0]; brush = ZG_Malloc(&model->memgroup, (sizeof(*brush) - sizeof(brush->planes[0]))*permodel->numbrushes + sizeof(brush->planes[0])*(permodel->numbrushes*6+permodel->numplanes)); remainingplanes = permodel->numplanes; @@ -909,7 +908,7 @@ qboolean Q1BSP_Trace(model_t *model, int forcehullnum, int frame, vec3_t axis[3] traceinfo.maxs[2] = traceinfo.radius; */ traceinfo.solidcontents = hitcontentsmask; - Q1BSP_RecursiveBrushCheck(&traceinfo, model->nodes, 0, 1, start, end); + Q1BSP_RecursiveBrushCheck(&traceinfo, model->rootnode, 0, 1, start, end); memcpy(trace, &traceinfo.trace, sizeof(trace_t)); if (trace->fraction < 1) {