- 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].channeloffset[0] = LittleFloat(pose[i].channeloffset[0]);
- pose[i].channeloffset[1] = LittleFloat(pose[i].channeloffset[1]);
- pose[i].channeloffset[2] = LittleFloat(pose[i].channeloffset[2]);
- pose[i].channeloffset[3] = LittleFloat(pose[i].channeloffset[3]);
- pose[i].channeloffset[4] = LittleFloat(pose[i].channeloffset[4]);
- pose[i].channeloffset[5] = LittleFloat(pose[i].channeloffset[5]);
- pose[i].channeloffset[6] = LittleFloat(pose[i].channeloffset[6]);
- pose[i].channeloffset[7] = LittleFloat(pose[i].channeloffset[7]);
- pose[i].channeloffset[8] = LittleFloat(pose[i].channeloffset[8]);
- pose[i].channelscale[0] = LittleFloat(pose[i].channelscale[0]);
- pose[i].channelscale[1] = LittleFloat(pose[i].channelscale[1]);
- pose[i].channelscale[2] = LittleFloat(pose[i].channelscale[2]);
- pose[i].channelscale[3] = LittleFloat(pose[i].channelscale[3]);
- pose[i].channelscale[4] = LittleFloat(pose[i].channelscale[4]);
- pose[i].channelscale[5] = LittleFloat(pose[i].channelscale[5]);
- pose[i].channelscale[6] = LittleFloat(pose[i].channelscale[6]);
- pose[i].channelscale[7] = LittleFloat(pose[i].channelscale[7]);
- pose[i].channelscale[8] = LittleFloat(pose[i].channelscale[8]);
- f = fabs(pose[i].channeloffset[0]); biggestorigin = max(biggestorigin, f);
- f = fabs(pose[i].channeloffset[1]); biggestorigin = max(biggestorigin, f);
- f = fabs(pose[i].channeloffset[2]); biggestorigin = max(biggestorigin, f);
- f = fabs(pose[i].channeloffset[0] + 0xFFFF*pose[i].channelscale[0]); biggestorigin = max(biggestorigin, f);
- f = fabs(pose[i].channeloffset[1] + 0xFFFF*pose[i].channelscale[1]); biggestorigin = max(biggestorigin, f);
- f = fabs(pose[i].channeloffset[2] + 0xFFFF*pose[i].channelscale[2]); biggestorigin = max(biggestorigin, f);
+ if (header->version == 1)
+ {
+ pose1 = (iqmpose1_t *) (pbase + header->ofs_poses);
+ 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);
+ for (j = 0;j < 9;j++)
+ {
+ pose1[i].channeloffset[j] = LittleFloat(pose1[i].channeloffset[j]);
+ pose1[i].channelscale[j] = LittleFloat(pose1[i].channelscale[j]);
+ }
+ f = fabs(pose1[i].channeloffset[0]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose1[i].channeloffset[1]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose1[i].channeloffset[2]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose1[i].channeloffset[0] + 0xFFFF*pose1[i].channelscale[0]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose1[i].channeloffset[1] + 0xFFFF*pose1[i].channelscale[1]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose1[i].channeloffset[2] + 0xFFFF*pose1[i].channelscale[2]); biggestorigin = max(biggestorigin, f);
+ }
+ }
+ else
+ {
+ pose = (iqmpose_t *) (pbase + header->ofs_poses);
+ 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);
+ for (j = 0;j < 10;j++)
+ {
+ pose[i].channeloffset[j] = LittleFloat(pose[i].channeloffset[j]);
+ pose[i].channelscale[j] = LittleFloat(pose[i].channelscale[j]);
+ }
+ f = fabs(pose[i].channeloffset[0]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose[i].channeloffset[1]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose[i].channeloffset[2]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose[i].channeloffset[0] + 0xFFFF*pose[i].channelscale[0]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose[i].channeloffset[1] + 0xFFFF*pose[i].channelscale[1]); biggestorigin = max(biggestorigin, f);
+ f = fabs(pose[i].channeloffset[2] + 0xFFFF*pose[i].channelscale[2]); biggestorigin = max(biggestorigin, f);
+ }