support non-uniform -scale

git-svn-id: svn://svn.icculus.org/netradiant/trunk@193 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
divverent 2009-02-15 09:53:49 +00:00
parent d17571c17c
commit 1fe92f1474

View File

@ -384,7 +384,7 @@ int ScaleBSPMain( int argc, char **argv )
vec3_t scale;
vec3_t vec;
char str[ 1024 ];
int uniform;
int uniform, axis;
/* arg checking */
@ -438,20 +438,33 @@ int ScaleBSPMain( int argc, char **argv )
SetKeyValue( &entities[ i ], "origin", str );
}
a = FloatForKey( &entities[ i ], "angle" );
if(a == -1 || a == -2) // z scale
axis = 2;
else if(fabs(sin(DEG2RAD(a))) < 0.707)
axis = 0;
else
axis = 1;
/* scale door lip */
f = FloatForKey( &entities[ i ], "lip" );
a = FloatForKey( &entities[ i ], "angle" );
if( f )
{
if(a == -1 || a == -2) // z scale
f *= scale[2];
else if(fabs(sin(DEG2RAD(a))) < 0.707)
f *= scale[0];
else
f *= scale[1];
f *= scale[axis];
sprintf( str, "%f", f );
SetKeyValue( &entities[ i ], "lip", str );
}
/* scale plat height */
f = FloatForKey( &entities[ i ], "height" );
if( f )
{
f *= scale[2];
sprintf( str, "%f", f );
SetKeyValue( &entities[ i ], "height", str );
}
// TODO maybe allow a definition file for entities to specify which values are scaled how?
}
/* scale models */