mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-30 08:44:31 +00:00
utils: mdldec: small update.
This commit is contained in:
parent
3e7e251828
commit
299e3fe957
@ -4,7 +4,7 @@
|
||||
MODULE = mdldec
|
||||
|
||||
CC ?= gcc
|
||||
CFLAGS ?= -O3 -pipe -DHAVE_TGMATH_H
|
||||
CFLAGS ?= -O3 -pipe -DHAVE_TGMATH_H -DSTDINT_H=\<stdint.h\>
|
||||
LDFLAGS ?= -Wl,--no-undefined
|
||||
|
||||
SYS = $(shell $(CC) -dumpmachine)
|
||||
|
@ -145,23 +145,20 @@ static void GetMotionTypeString( int type, char *str, qboolean is_composite )
|
||||
if( type & STUDIO_LZ )
|
||||
Q_strcat( str, " LZ" );
|
||||
|
||||
if( type & STUDIO_AX )
|
||||
Q_strcat( str, " AX" );
|
||||
if( type & STUDIO_LXR )
|
||||
Q_strcat( str, " LXR" );
|
||||
|
||||
if( type & STUDIO_AY )
|
||||
Q_strcat( str, " AY" );
|
||||
if( type & STUDIO_LYR )
|
||||
Q_strcat( str, " LYR" );
|
||||
|
||||
if( type & STUDIO_AZ )
|
||||
Q_strcat( str, " AZ" );
|
||||
if( type & STUDIO_LZR )
|
||||
Q_strcat( str, " LZR" );
|
||||
|
||||
if( type & STUDIO_AXR )
|
||||
Q_strcat( str, " AXR" );
|
||||
if( type & STUDIO_LINEAR )
|
||||
Q_strcat( str, " LM" );
|
||||
|
||||
if( type & STUDIO_AYR )
|
||||
Q_strcat( str, " AYR" );
|
||||
|
||||
if( type & STUDIO_AZR )
|
||||
Q_strcat( str, " AZR" );
|
||||
if( type & STUDIO_QUADRATIC_MOTION )
|
||||
Q_strcat( str, " LQ" );
|
||||
|
||||
return;
|
||||
}
|
||||
@ -170,21 +167,20 @@ static void GetMotionTypeString( int type, char *str, qboolean is_composite )
|
||||
|
||||
switch( type )
|
||||
{
|
||||
case STUDIO_X: p = "X"; break;
|
||||
case STUDIO_Y: p = "Y"; break;
|
||||
case STUDIO_Z: p = "Z"; break;
|
||||
case STUDIO_XR: p = "XR"; break;
|
||||
case STUDIO_YR: p = "YR"; break;
|
||||
case STUDIO_ZR: p = "ZR"; break;
|
||||
case STUDIO_LX: p = "LX"; break;
|
||||
case STUDIO_LY: p = "LY"; break;
|
||||
case STUDIO_LZ: p = "LZ"; break;
|
||||
case STUDIO_AX: p = "AX"; break;
|
||||
case STUDIO_AY: p = "AY"; break;
|
||||
case STUDIO_AZ: p = "AZ"; break;
|
||||
case STUDIO_AXR: p = "AXR"; break;
|
||||
case STUDIO_AYR: p = "AYR"; break;
|
||||
case STUDIO_AZR: p = "AZR"; break;
|
||||
case STUDIO_X: p = "X"; break;
|
||||
case STUDIO_Y: p = "Y"; break;
|
||||
case STUDIO_Z: p = "Z"; break;
|
||||
case STUDIO_XR: p = "XR"; break;
|
||||
case STUDIO_YR: p = "YR"; break;
|
||||
case STUDIO_ZR: p = "ZR"; break;
|
||||
case STUDIO_LX: p = "LX"; break;
|
||||
case STUDIO_LY: p = "LY"; break;
|
||||
case STUDIO_LZ: p = "LZ"; break;
|
||||
case STUDIO_LXR: p = "LXR"; break;
|
||||
case STUDIO_LYR: p = "LYR"; break;
|
||||
case STUDIO_LZR: p = "LZR"; break;
|
||||
case STUDIO_LINEAR: p = "LM"; break;
|
||||
case STUDIO_QUADRATIC_MOTION: p = "LQ"; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
@ -218,7 +214,7 @@ static void WriteTextureRenderMode( FILE *fp )
|
||||
if( texture->flags & STUDIO_NF_NOMIPS )
|
||||
fprintf( fp, "$texrendermode \"%s\" \"nomips\" \n", texture->name ); // sven-coop extension
|
||||
|
||||
if( texture->flags & STUDIO_NF_NOSMOOTH )
|
||||
if( texture->flags & STUDIO_NF_SMOOTH )
|
||||
{
|
||||
fprintf( fp, "$texrendermode \"%s\" \"alpha\" \n", texture->name ); // sven-coop extension
|
||||
fprintf( fp, "$texrendermode \"%s\" \"nosmooth\" \n", texture->name ); // xash3d extension
|
||||
@ -230,7 +226,7 @@ static void WriteTextureRenderMode( FILE *fp )
|
||||
if( texture->flags & STUDIO_NF_MASKED )
|
||||
fprintf( fp, "$texrendermode \"%s\" \"masked\" \n", texture->name );
|
||||
|
||||
if( texture->flags & ( STUDIO_NF_MASKED | STUDIO_NF_SOLID ) )
|
||||
if( texture->flags & ( STUDIO_NF_MASKED | STUDIO_NF_ALPHASOLID ) )
|
||||
fprintf( fp, "$texrendermode \"%s\" \"masked_solid\" \n", texture->name ); // xash3d extension
|
||||
|
||||
if( texture->flags & STUDIO_NF_TWOSIDE )
|
||||
@ -557,10 +553,6 @@ static void WriteSequenceInfo( FILE *fp )
|
||||
|
||||
if( seqdesc->numblends > 2 )
|
||||
fputs( "}\n", fp );
|
||||
|
||||
if( seqdesc->numpivots )
|
||||
printf( "WARNING: Sequence %s uses %i foot pivots, feature not supported.\n",
|
||||
seqdesc->label, seqdesc->numpivots );
|
||||
}
|
||||
}
|
||||
|
||||
@ -573,11 +565,11 @@ void WriteQCScript( void )
|
||||
{
|
||||
FILE *fp;
|
||||
char filename[MAX_SYSPATH];
|
||||
size_t len;
|
||||
int len;
|
||||
|
||||
len = Q_snprintf( filename, MAX_SYSPATH, "%s%s.qc", destdir, modelfile );
|
||||
|
||||
if( len >= MAX_SYSPATH )
|
||||
if( len == -1 )
|
||||
{
|
||||
fprintf( stderr, "ERROR: Destination path is too long. Can't write %s.qc\n", modelfile );
|
||||
return;
|
||||
|
@ -107,15 +107,11 @@ static void ClipRotations( vec3_t angle )
|
||||
ProperBoneRotationZ
|
||||
============
|
||||
*/
|
||||
static void ProperBoneRotationZ( mstudioseqdesc_t *seqdesc, vec_t *motion, int frame, float angle )
|
||||
static void ProperBoneRotationZ( vec_t *motion, float angle )
|
||||
{
|
||||
int i;
|
||||
float c, s, x, y;
|
||||
float rot;
|
||||
|
||||
for( i = 0; i < 3; i++ )
|
||||
motion[i] += frame * 1.0f / seqdesc->numframes * seqdesc->linearmovement[i];
|
||||
|
||||
rot = DEG2RAD( angle );
|
||||
|
||||
s = sin( rot );
|
||||
@ -302,7 +298,7 @@ static void WriteTriangles( FILE *fp, mstudiomodel_t *model )
|
||||
{
|
||||
if( j >= 0 )
|
||||
{
|
||||
// triangle fan
|
||||
// triangle strip
|
||||
for( k = 0; j > 0; j--, k++, tricmds += 4 )
|
||||
{
|
||||
if( k == 0 )
|
||||
@ -337,7 +333,7 @@ static void WriteTriangles( FILE *fp, mstudiomodel_t *model )
|
||||
}
|
||||
else
|
||||
{
|
||||
// triangle strip
|
||||
// triangle fan
|
||||
j = abs( j );
|
||||
|
||||
for( k = 0; j > 0; j--, k++, tricmds += 4 )
|
||||
@ -391,7 +387,12 @@ static void WriteFrameInfo( FILE *fp, mstudioanim_t *anim, mstudioseqdesc_t *seq
|
||||
CalcBonePosition( anim, bone, motion, frame );
|
||||
|
||||
if( bone->parent == -1 )
|
||||
ProperBoneRotationZ( seqdesc, motion, frame, 270.0f );
|
||||
{
|
||||
for( j = 0; j < 3; j++ )
|
||||
motion[j] += frame * 1.0f / seqdesc->numframes * seqdesc->linearmovement[j];
|
||||
|
||||
ProperBoneRotationZ( motion, 270.0f );
|
||||
}
|
||||
|
||||
ClipRotations( &motion[3] );
|
||||
|
||||
@ -433,7 +434,7 @@ WriteReferences
|
||||
static void WriteReferences( void )
|
||||
{
|
||||
int i, j;
|
||||
size_t len;
|
||||
int len;
|
||||
FILE *fp;
|
||||
mstudiomodel_t *model;
|
||||
mstudiobodyparts_t *bodypart;
|
||||
@ -460,7 +461,7 @@ static void WriteReferences( void )
|
||||
|
||||
len = Q_snprintf( filename, MAX_SYSPATH, "%s%s.smd", destdir, name );
|
||||
|
||||
if( len >= MAX_SYSPATH )
|
||||
if( len == -1 )
|
||||
{
|
||||
fprintf( stderr, "ERROR: Destination path is too long. Can't write %s.smd\n", name );
|
||||
RemoveBoneTransformMatrices();
|
||||
@ -499,7 +500,7 @@ WriteSequences
|
||||
static void WriteSequences( void )
|
||||
{
|
||||
int i, j;
|
||||
size_t len;
|
||||
int len;
|
||||
FILE *fp;
|
||||
char filename[MAX_SYSPATH];
|
||||
mstudioseqdesc_t *seqdesc;
|
||||
@ -515,7 +516,7 @@ static void WriteSequences( void )
|
||||
else
|
||||
len = Q_snprintf( filename, MAX_SYSPATH, "%s%s_blend%i.smd", destdir, seqdesc->label, j + 1 );
|
||||
|
||||
if( len >= MAX_SYSPATH )
|
||||
if( len == -1 )
|
||||
{
|
||||
fprintf( stderr, "ERROR: Destination path is too long. Can't write %s.smd\n", seqdesc->label );
|
||||
return;
|
||||
|
@ -30,19 +30,19 @@ WriteBMP
|
||||
*/
|
||||
static void WriteBMP( mstudiotexture_t *texture )
|
||||
{
|
||||
int i;
|
||||
int i, len;
|
||||
FILE *fp;
|
||||
const byte *p;
|
||||
byte *palette, *pic, *buf;
|
||||
char filename[MAX_SYSPATH], texturename[64];
|
||||
rgba_t rgba_palette[256];
|
||||
bmp_t bmp_hdr = {0,};
|
||||
size_t texture_size, len;
|
||||
size_t texture_size;
|
||||
|
||||
COM_FileBase( texture->name, texturename );
|
||||
len = Q_snprintf( filename, MAX_SYSPATH, "%s%s.bmp", destdir, texturename );
|
||||
|
||||
if( len >= MAX_SYSPATH )
|
||||
if( len == -1 )
|
||||
{
|
||||
fprintf( stderr, "ERROR: Destination path is too long. Can't write %s.bmp\n", texturename );
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user