Skip to content

Commit 454d39d

Browse files
committed
engine: temporarily disable swapping extended header
1 parent d2de181 commit 454d39d

1 file changed

Lines changed: 12 additions & 62 deletions

File tree

engine/common/mod_studio.c

Lines changed: 12 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,6 @@ le_struct_begin( studiohdr_swap )
9494
le_struct_field( studiohdr_t, transitionindex )
9595
le_struct_end();
9696

97-
le_struct_begin( studiohdr2_swap )
98-
le_struct_field( studiohdr2_t, numposeparameters )
99-
le_struct_field( studiohdr2_t, poseparamindex )
100-
le_struct_field( studiohdr2_t, numikautoplaylocks )
101-
le_struct_field( studiohdr2_t, ikautoplaylockindex )
102-
le_struct_field( studiohdr2_t, numikchains )
103-
le_struct_field( studiohdr2_t, ikchainindex )
104-
le_struct_field( studiohdr2_t, keyvalueindex )
105-
le_struct_field( studiohdr2_t, keyvaluesize )
106-
le_struct_field( studiohdr2_t, numhitboxsets )
107-
le_struct_field( studiohdr2_t, hitboxsetindex )
108-
le_struct_end();
109-
11097
le_struct_begin( mstudiobone_swap )
11198
le_struct_field( mstudiobone_t, parent )
11299
le_struct_field( mstudiobone_t, unused )
@@ -132,6 +119,7 @@ le_struct_begin( mstudiobbox_swap )
132119
le_struct_end();
133120

134121
le_struct_begin( mstudioseqgroup_swap )
122+
// should we even swap seqgroup?
135123
le_struct_field( mstudioseqgroup_t, unused )
136124
le_struct_field( mstudioseqgroup_t, unused2 )
137125
le_struct_end();
@@ -174,9 +162,7 @@ le_struct_begin( mstudioattachment_swap )
174162
le_struct_field( mstudioattachment_t, flags )
175163
le_struct_field( mstudioattachment_t, bone )
176164
le_struct_array( mstudioattachment_t, org, 3 )
177-
le_struct_array( mstudioattachment_t, vectors[0], 3 )
178-
le_struct_array( mstudioattachment_t, vectors[1], 3 )
179-
le_struct_array( mstudioattachment_t, vectors[2], 3 )
165+
le_struct_array( mstudioattachment_t, vectors, 3 * 3 )
180166
le_struct_end();
181167

182168
le_struct_begin( mstudiobodyparts_swap )
@@ -219,29 +205,6 @@ le_struct_begin( mstudioanim_swap )
219205
le_struct_array( mstudioanim_t, offset, 6 )
220206
le_struct_end();
221207

222-
le_struct_begin( mstudioposeparamdesc_swap )
223-
le_struct_field( mstudioposeparamdesc_t, flags )
224-
le_struct_field( mstudioposeparamdesc_t, start )
225-
le_struct_field( mstudioposeparamdesc_t, end )
226-
le_struct_field( mstudioposeparamdesc_t, loop )
227-
le_struct_end();
228-
229-
le_struct_begin( mstudioikchain_swap )
230-
le_struct_field( mstudioikchain_t, linktype )
231-
le_struct_field( mstudioikchain_t, numlinks )
232-
le_struct_field( mstudioikchain_t, linkindex )
233-
le_struct_end();
234-
235-
le_struct_begin( mstudioiklink_swap )
236-
le_struct_field( mstudioiklink_t, bone )
237-
le_struct_array( mstudioiklink_t, kneeDir, 3 )
238-
le_struct_end();
239-
240-
le_struct_begin( mstudiohitboxset_swap )
241-
le_struct_field( mstudiohitboxset_t, numhitboxes )
242-
le_struct_field( mstudiohitboxset_t, hitboxindex )
243-
le_struct_end();
244-
245208
/*
246209
====================
247210
Mod_InitStudioHull
@@ -1004,7 +967,7 @@ static int Mod_StudioBodyVariations( model_t *mod )
1004967
return count;
1005968
}
1006969

1007-
static qboolean Mod_SwapStudioModel( void *buffer, size_t buffersize )
970+
static qboolean Mod_SwapStudioModel( const char *name, void *buffer, size_t buffersize )
1008971
{
1009972
studiohdr_t *phdr = buffer;
1010973
byte *mod_base = buffer;
@@ -1017,6 +980,14 @@ static qboolean Mod_SwapStudioModel( void *buffer, size_t buffersize )
1017980
if( phdr->ident != IDSTUDIOHEADER || phdr->version != STUDIO_VERSION )
1018981
return false;
1019982

983+
#if XASH_BIG_ENDIAN
984+
if( phdr->studiohdr2index > 0 && phdr->studiohdr2index < phdr->length )
985+
{
986+
Con_Printf( S_ERROR "byteswapping extended studio model \"%s\" is unsupoprted\n", name );
987+
return false;
988+
}
989+
#endif
990+
1020991
for( int i = 0; i < phdr->numbones; i++ )
1021992
le_struct_swap( mstudiobone_swap, (mstudiobone_t *)( mod_base + phdr->boneindex ) + i );
1022993

@@ -1065,27 +1036,6 @@ static qboolean Mod_SwapStudioModel( void *buffer, size_t buffersize )
10651036
for( int i = 0; i < phdr->numskinfamilies * phdr->numskinref; i++ )
10661037
pskinref[i] = LittleShort( pskinref[i] );
10671038

1068-
if( phdr->studiohdr2index > 0 && phdr->studiohdr2index < phdr->length )
1069-
{
1070-
studiohdr2_t *phdr2 = (studiohdr2_t *)( mod_base + phdr->studiohdr2index );
1071-
le_struct_swap( studiohdr2_swap, phdr2 );
1072-
1073-
for( int i = 0; i < phdr2->numposeparameters; i++ )
1074-
le_struct_swap( mstudioposeparamdesc_swap, (mstudioposeparamdesc_t *)( mod_base + phdr2->poseparamindex ) + i );
1075-
1076-
for( int i = 0; i < phdr2->numhitboxsets; i++ )
1077-
le_struct_swap( mstudiohitboxset_swap, (mstudiohitboxset_t *)( mod_base + phdr2->hitboxsetindex ) + i );
1078-
1079-
for( int i = 0; i < phdr2->numikchains; i++ )
1080-
{
1081-
mstudioikchain_t *pikchain = (mstudioikchain_t *)( mod_base + phdr2->ikchainindex ) + i;
1082-
le_struct_swap( mstudioikchain_swap, pikchain );
1083-
1084-
for( int j = 0; j < pikchain->numlinks; j++ )
1085-
le_struct_swap( mstudioiklink_swap, (mstudioiklink_t *)( mod_base + pikchain->linkindex ) + j );
1086-
}
1087-
}
1088-
10891039
return true;
10901040
}
10911041

@@ -1101,7 +1051,7 @@ static studiohdr_t *R_StudioLoadHeader( model_t *mod, void *buffer, size_t buffe
11011051
if( !buffer )
11021052
return NULL;
11031053

1104-
if( !Mod_SwapStudioModel( buffer, buffersize ))
1054+
if( !Mod_SwapStudioModel( mod->name, buffer, buffersize ))
11051055
{
11061056
phdr = (studiohdr_t *)buffer;
11071057
Con_Printf( S_ERROR "%s has wrong version number (%i should be %i)\n", mod->name, phdr->version, STUDIO_VERSION );

0 commit comments

Comments
 (0)