private static int Main( string[] args ) { // Changes the CurrentCulture of the current thread to the invariant // culture. Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; ParameterInfo paramInfo = new ParameterInfo(); string argsString = ""; foreach( string arg in args ) { if( argsString.Length == 0 ) argsString = arg; else argsString = argsString + " " + arg; } args = paramInfo.ParseArgumentString( argsString ); paramInfo.ProcessArgs( args ); if( paramInfo.abort ) return 0; ConfigureLogDefaults( paramInfo.log_file ); try { // get a reference to the engine singleton Axiom.Core.Root engine = new Root( EngineConfigFile, null ); Configure(); Skeleton skeleton = null; if( paramInfo.skeleton_file != null ) skeleton = ReadSkeleton( paramInfo.srcDir, paramInfo.skeleton_file ); if( paramInfo.test_physics ) TestPhysics( paramInfo.srcDir, paramInfo.dstDir, "test.physics" ); else if( paramInfo.build_skeleton ) BuildSkeletonMesh( paramInfo.dstDir, paramInfo.last_arg ); else if( paramInfo.animations.Count > 0 ) // we are merging animations AddAnimations( paramInfo.srcDir, paramInfo.dstDir, paramInfo.out_skeleton_file, paramInfo.transform, skeleton, paramInfo.animations ); else if( paramInfo.attachPoints.Count > 0 ) AddAttachments( paramInfo.dstDir, paramInfo.out_skeleton_file, skeleton, paramInfo.attachPoints ); else if( paramInfo.manualLodEntries.Count > 0 ) SetupManualLodLevels( paramInfo.srcDir, paramInfo.dstDir, paramInfo.last_arg, paramInfo.manualLodEntries ); else if( paramInfo.lodlevels > 0 ) GenerateLodLevels( paramInfo.srcDir, paramInfo.dstDir, paramInfo.last_arg, paramInfo.lodlevels, paramInfo.loddist, paramInfo.lodpercent * 0.01f ); else { // we are either transforming a collada or ogre mesh, or just getting skeleton and // mesh data out of one. ConvertFile( paramInfo.srcDir, paramInfo.dstDir, paramInfo.last_arg, paramInfo.transform, paramInfo.build_tangents, paramInfo.extract_collision_volumes, paramInfo.optimize_mesh, paramInfo.skeleton_file ); } } catch( Exception e ) { log.ErrorFormat( "Error converting files: {0}", e ); if( paramInfo.rethrow ) throw; return 1; } return 0; }