X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=model_alias.c;h=d7bbd8bf44d59883a586d955a9114f1b728cae84;hb=2b75d82853369832232c5e7e4c93d2d673cecd0c;hp=6c3a83ebb790bf755d88bd88ae35519187f358f4;hpb=f46ef7b1924dbe527039c5bab3b68351182a8bf2;p=xonotic%2Fdarkplaces.git diff --git a/model_alias.c b/model_alias.c index 6c3a83eb..d7bbd8bf 100644 --- a/model_alias.c +++ b/model_alias.c @@ -787,6 +787,7 @@ static void Mod_BuildAliasSkinFromSkinFrame(texture_t *texture, skinframe_t *ski texture->currentmaterialflags = texture->basematerialflags; texture->offsetmapping = OFFSETMAPPING_DEFAULT; texture->offsetscale = 1; + texture->offsetbias = 0; texture->specularscalemod = 1; texture->specularpowermod = 1; texture->surfaceflags = 0; @@ -3002,7 +3003,7 @@ void Mod_INTERQUAKEMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend) pend = (unsigned char *)bufferend; if (pbase + sizeof(iqmheader_t) > pend) - Host_Error ("Mod_INTERQUAKEMODEL_Load: %s is not an Inter-Quake Model %d", loadmodel->name, pend - pbase); + Host_Error ("Mod_INTERQUAKEMODEL_Load: %s is not an Inter-Quake Model %d", loadmodel->name, (int)(pend - pbase)); // copy struct (otherwise it may be misaligned) // LordHavoc: okay it's definitely not misaligned here, but for consistency... @@ -3318,20 +3319,18 @@ void Mod_INTERQUAKEMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend) biggestorigin = 0; if (header.version == 1) { + iqmpose1_t *inpose1 = (iqmpose1_t *)(pbase + header.ofs_poses); if (header.num_poses) - { pose1 = (iqmpose1_t *)Mem_Alloc(loadmodel->mempool, header.num_poses * sizeof(iqmpose1_t)); - memcpy(pose1, pbase + header.ofs_poses, header.num_poses * sizeof(iqmpose1_t)); - } for (i = 0;i < (int)header.num_poses;i++) { float f; - pose1[i].parent = LittleLong(pose1[i].parent); - pose1[i].channelmask = LittleLong(pose1[i].channelmask); + pose1[i].parent = LittleLong(inpose1[i].parent); + pose1[i].channelmask = LittleLong(inpose1[i].channelmask); for (j = 0;j < 9;j++) { - pose1[i].channeloffset[j] = LittleFloat(pose1[i].channeloffset[j]); - pose1[i].channelscale[j] = LittleFloat(pose1[i].channelscale[j]); + pose1[i].channeloffset[j] = LittleFloat(inpose1[i].channeloffset[j]); + pose1[i].channelscale[j] = LittleFloat(inpose1[i].channelscale[j]); } f = fabs(pose1[i].channeloffset[0]); biggestorigin = max(biggestorigin, f); f = fabs(pose1[i].channeloffset[1]); biggestorigin = max(biggestorigin, f); @@ -3353,20 +3352,18 @@ void Mod_INTERQUAKEMODEL_Load(dp_model_t *mod, void *buffer, void *bufferend) } else { + iqmpose_t *inpose = (iqmpose_t *)(pbase + header.ofs_poses); if (header.num_poses) - { pose = (iqmpose_t *)Mem_Alloc(loadmodel->mempool, header.num_poses * sizeof(iqmpose_t)); - memcpy(pose, pbase + header.ofs_poses, header.num_poses * sizeof(iqmpose_t)); - } for (i = 0;i < (int)header.num_poses;i++) { float f; - pose[i].parent = LittleLong(pose[i].parent); - pose[i].channelmask = LittleLong(pose[i].channelmask); + pose[i].parent = LittleLong(inpose[i].parent); + pose[i].channelmask = LittleLong(inpose[i].channelmask); for (j = 0;j < 10;j++) { - pose[i].channeloffset[j] = LittleFloat(pose[i].channeloffset[j]); - pose[i].channelscale[j] = LittleFloat(pose[i].channelscale[j]); + pose[i].channeloffset[j] = LittleFloat(inpose[i].channeloffset[j]); + pose[i].channelscale[j] = LittleFloat(inpose[i].channelscale[j]); } f = fabs(pose[i].channeloffset[0]); biggestorigin = max(biggestorigin, f); f = fabs(pose[i].channeloffset[1]); biggestorigin = max(biggestorigin, f);