From c2aa755e86fe36fe13083e351234284e5426564f Mon Sep 17 00:00:00 2001 From: Spoike Date: Wed, 1 Mar 2006 20:47:24 +0000 Subject: [PATCH] Fixes the TF teleporter skin bug (which was a general problem with skingroups). git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2040 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/gl/gl_alias.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/engine/gl/gl_alias.c b/engine/gl/gl_alias.c index ea5340c7c..261c909db 100644 --- a/engine/gl/gl_alias.c +++ b/engine/gl/gl_alias.c @@ -3078,7 +3078,7 @@ static void *Q1_LoadFrameGroup (daliasframetype_t *pframetype, int *seamremaps) pframetype = (daliasframetype_t *)pinframe; break; default: - Sys_Error("Bad frame type\n"); + Sys_Error("Bad frame type in %s\n", loadmodel->name); } frame++; } @@ -3124,8 +3124,8 @@ static void *Q1_LoadSkins (daliasskintype_t *pskintype, qboolean alpha) char skinname[MAX_QPATH]; int i; int s, t; - int *count; - float *intervals; + daliasskingroup_t *count; + daliasskininterval_t *intervals; qbyte *data, *saved; galiasskin_t *outskin = (galiasskin_t *)((char *)galias + galias->ofsskins); @@ -3219,13 +3219,15 @@ static void *Q1_LoadSkins (daliasskintype_t *pskintype, qboolean alpha) default: outskin->skinwidth = pq1inmodel->skinwidth; outskin->skinheight = pq1inmodel->skinheight; - count = (int *)(pskintype+1); - intervals = (float *)(count+1); - outskin->texnums = LittleLong(*count); + count = (daliasskingroup_t*)(pskintype+1); + intervals = (daliasskininterval_t *)(count+1); + outskin->texnums = LittleLong(count->numskins); data = (qbyte *)(intervals + outskin->texnums); texnums = Hunk_Alloc(sizeof(*texnums)*outskin->texnums); outskin->ofstexnums = (char *)texnums - (char *)outskin; outskin->ofstexels = 0; + outskin->skinspeed = 1/LittleFloat(intervals[0].interval); + for (t = 0; t < outskin->texnums; t++,data+=s, texnums++) { texture = 0; @@ -3264,7 +3266,7 @@ static void *Q1_LoadSkins (daliasskintype_t *pskintype, qboolean alpha) } else saved = BZ_Malloc(s); - memcpy(saved, pskintype+1, s); + memcpy(saved, data, s); GLMod_FloodFillSkin(saved, outskin->skinwidth, outskin->skinheight); if (!texture) { @@ -3385,8 +3387,8 @@ void GL_LoadQ1Model (model_t *mod, void *buffer) galias->ofs_st_array = (char *)st_array - (char *)galias; for (j=pq1inmodel->numverts,i = 0; i < pq1inmodel->numverts; i++) { - st_array[i][0] = LittleLong(pinstverts[i].s)/(float)pq1inmodel->skinwidth; - st_array[i][1] = LittleLong(pinstverts[i].t)/(float)pq1inmodel->skinheight; + st_array[i][0] = (LittleLong(pinstverts[i].s)+0.5)/(float)pq1inmodel->skinwidth; + st_array[i][1] = (LittleLong(pinstverts[i].t)+0.5)/(float)pq1inmodel->skinheight; if (pinstverts[i].onseam) {