From 1fe92f1474de326129cc578d5ca1b35bfc5c35ba Mon Sep 17 00:00:00 2001 From: divverent Date: Sun, 15 Feb 2009 09:53:49 +0000 Subject: [PATCH] support non-uniform -scale git-svn-id: svn://svn.icculus.org/netradiant/trunk@193 61c419a2-8eb2-4b30-bcec-8cead039b335 --- tools/quake3/q3map2/main.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tools/quake3/q3map2/main.c b/tools/quake3/q3map2/main.c index 6d18dd9d..1d01245d 100644 --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@ -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 */ @@ -437,21 +437,34 @@ int ScaleBSPMain( int argc, char **argv ) sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] ); 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 */ -- 2.39.2