diff --git a/Engine/source/ts/loader/tsShapeLoader.cpp b/Engine/source/ts/loader/tsShapeLoader.cpp index 49567d7e99..23e91a13ae 100644 --- a/Engine/source/ts/loader/tsShapeLoader.cpp +++ b/Engine/source/ts/loader/tsShapeLoader.cpp @@ -1228,8 +1228,11 @@ void TSShapeLoader::install() shape->mRadius = (shape->mBounds.maxExtents - shape->center).len(); shape->tubeRadius = shape->mRadius; - shape->init(); - shape->finalizeEditable(); + if (TSShape::smInitOnRead) + { + shape->init(); + shape->finalizeEditable(); + } } void TSShapeLoader::computeBounds(Box3F& bounds) diff --git a/Tools/dae2dts/source/main.cpp b/Tools/dae2dts/source/main.cpp index f92b9fa245..a9b072390c 100644 --- a/Tools/dae2dts/source/main.cpp +++ b/Tools/dae2dts/source/main.cpp @@ -122,6 +122,10 @@ S32 TorqueMain( S32 argc, const char **argv ) { Con::errorf( "Error: no DAE file specified.\n" ); printUsage(); + + // Clean everything up. + StandardMainLoop::shutdown(); + return -1; } @@ -152,67 +156,71 @@ S32 TorqueMain( S32 argc, const char **argv ) if ( verbose ) Con::printf( "Reading dae file...\n" ); + TSShape::smInitOnRead = false; + // Attempt to load the DAE file - Resource shape = ResourceManager::get().load( srcPath ); - if ( !shape ) - { - Con::errorf( "Failed to convert DAE file: %s\n", srcPath.getFullPath() ); - failed = 1; - } - else { - if ( compatMode && !shape->canWriteOldFormat() ) + Resource shape = ResourceManager::get().load( srcPath ); + if ( !shape ) { - Con::errorf( "Warning: Attempting to save to DTS v24 but the shape " - "contains v26 features. Resulting DTS file may not be valid." ); + Con::errorf( "Failed to convert DAE file: %s\n", srcPath.getFullPath() ); + failed = 1; } + else + { + if ( compatMode && !shape->canWriteOldFormat() ) + { + Con::errorf( "Warning: Attempting to save to DTS v24 but the shape " + "contains v26 features. Resulting DTS file may not be valid." ); + } - FileStream outStream; + FileStream outStream; - if ( saveDSQ ) - { - Torque::Path dsqPath( destPath ); - dsqPath.setExtension( "dsq" ); + if ( saveDSQ ) + { + Torque::Path dsqPath( destPath ); + dsqPath.setExtension( "dsq" ); - for ( S32 i = 0; i < shape->sequences.size(); i++ ) + for ( S32 i = 0; i < shape->sequences.size(); i++ ) + { + const String& seqName = shape->getName( shape->sequences[i].nameIndex ); + if ( verbose ) + Con::printf( "Writing DSQ file for sequence '%s'...\n", seqName.c_str() ); + + dsqPath.setFileName( destPath.getFileName() + "_" + seqName ); + + if ( outStream.open( dsqPath, Torque::FS::File::Write ) ) + { + shape->exportSequence( &outStream, shape->sequences[i], compatMode ); + outStream.close(); + } + else + { + Con::errorf( "Failed to save sequence to %s\n", dsqPath.getFullPath().c_str() ); + failed = 1; + } + } + } + if ( saveDTS ) { - const String& seqName = shape->getName( shape->sequences[i].nameIndex ); if ( verbose ) - Con::printf( "Writing DSQ file for sequence '%s'...\n", seqName.c_str() ); - - dsqPath.setFileName( destPath.getFileName() + "_" + seqName ); + Con::printf( "Writing DTS file...\n" ); - if ( outStream.open( dsqPath, Torque::FS::File::Write ) ) + if ( outStream.open( destPath, Torque::FS::File::Write ) ) { - shape->exportSequence( &outStream, shape->sequences[i], compatMode ); + if ( saveDSQ ) + shape->sequences.setSize(0); + + shape->write( &outStream, compatMode ); outStream.close(); } else { - Con::errorf( "Failed to save sequence to %s\n", dsqPath.getFullPath().c_str() ); + Con::errorf( "Failed to save shape to %s\n", destPath.getFullPath().c_str() ); failed = 1; } } } - if ( saveDTS ) - { - if ( verbose ) - Con::printf( "Writing DTS file...\n" ); - - if ( outStream.open( destPath, Torque::FS::File::Write ) ) - { - if ( saveDSQ ) - shape->sequences.setSize(0); - - shape->write( &outStream, compatMode ); - outStream.close(); - } - else - { - Con::errorf( "Failed to save shape to %s\n", destPath.getFullPath().c_str() ); - failed = 1; - } - } } // Clean everything up.