diff --git a/NifImport/MaxNifImport.rc b/NifImport/MaxNifImport.rc index d343520627b5dc708226e02ad93f12e29dccf4ce..06f8df207660ee5a1dc89b7a577eabb935420ed5 100644 --- a/NifImport/MaxNifImport.rc +++ b/NifImport/MaxNifImport.rc @@ -88,8 +88,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,1,4,6 - PRODUCTVERSION 0,1,4,0 + FILEVERSION 0,1,6,8 + PRODUCTVERSION 0,1,6,0 FILEFLAGSMASK 0x37L #ifdef _DEBUG FILEFLAGS 0x21L @@ -105,12 +105,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "3ds Max Nif Importer" - VALUE "FileVersion", "0, 1, 4, 6" + VALUE "FileVersion", "0, 1, 6, 8" VALUE "InternalName", "MaxNifImport.dli" VALUE "LegalCopyright", "Copyright (c) 2006, NIF File Format Library and Tools\r\nAll rights reserved." VALUE "OriginalFilename", "MaxNifImport.dli" VALUE "ProductName", "3ds Max Nif Importer" - VALUE "ProductVersion", "0, 1, 4, 0" + VALUE "ProductVersion", "0, 1, 6, 0" VALUE "SpecialBuild", "Alpha" END END diff --git a/NifImport/MaxNifImport.vcproj b/NifImport/MaxNifImport.vcproj index cbd0c7babdb3fa7975bf00ee9e75d3f78e44e95a..652b00789a92e393416b6df2867596348a94dd03 100644 --- a/NifImport/MaxNifImport.vcproj +++ b/NifImport/MaxNifImport.vcproj @@ -58,9 +58,9 @@ ForceConformanceInForLoopScope="false" UsePrecompiledHeader="2" PrecompiledHeaderFile=".\Release\MaxNifImport.pch" - AssemblerListingLocation=".\Release\" - ObjectFile=".\Release\" - ProgramDataBaseFileName=".\Release\" + AssemblerListingLocation=".\Release7\" + ObjectFile=".\Release7\" + ProgramDataBaseFileName=".\Release7\" WarningLevel="3" SuppressStartupBanner="true" DebugInformationFormat="3" @@ -86,13 +86,13 @@ SuppressStartupBanner="true" AdditionalLibraryDirectories="C:\3dsmax7\maxsdk\lib" ModuleDefinitionFile=".\MaxNifImport.def" - ProgramDatabaseFile=".\Release\MaxNifImport.pdb" + ProgramDatabaseFile=".\Release7\MaxNifImport.pdb" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" SetChecksum="true" BaseAddress="0x16860000" - ImportLibrary=".\Release\MaxNifImport.lib" + ImportLibrary=".\Release7\MaxNifImport.lib" /> <Tool Name="VCALinkTool" @@ -160,10 +160,10 @@ RuntimeLibrary="1" ForceConformanceInForLoopScope="false" UsePrecompiledHeader="2" - PrecompiledHeaderFile=".\Debug\MaxNifImport.pch" - AssemblerListingLocation=".\Debug\" - ObjectFile=".\Debug\" - ProgramDataBaseFileName=".\Debug\" + PrecompiledHeaderFile=".\Debug7\MaxNifImport.pch" + AssemblerListingLocation=".\Debug7\" + ObjectFile=".\Debug7\" + ProgramDataBaseFileName=".\Debug7\" WarningLevel="3" SuppressStartupBanner="true" DebugInformationFormat="3" @@ -191,10 +191,10 @@ IgnoreDefaultLibraryNames="msvcrtd.lib" ModuleDefinitionFile=".\MaxNifImport.def" GenerateDebugInformation="true" - ProgramDatabaseFile=".\Debug\MaxNifImport.pdb" + ProgramDatabaseFile=".\Debug7\MaxNifImport.pdb" SubSystem="2" BaseAddress="0x16860000" - ImportLibrary=".\Debug\MaxNifImport.lib" + ImportLibrary=".\Debug7\MaxNifImport.lib" /> <Tool Name="VCALinkTool" diff --git a/NifImport/NIFImport.cpp b/NifImport/NIFImport.cpp index c59900b7c6776221bb7ad057c4cd04b08a11ee4d..954e4cf2e46920f723a2361f7cab550fccf61ff4 100644 --- a/NifImport/NIFImport.cpp +++ b/NifImport/NIFImport.cpp @@ -182,8 +182,6 @@ INode *NifImporter::GetNode(Niflib::NiNodeRef node) bool NifImporter::DoImport() { bool ok = true; - NiNodeRef rootNode = root; - vector<string> importedBones; if (!isBiped && importSkeleton && importBones) { @@ -233,30 +231,44 @@ bool NifImporter::DoImport() } if (isValid()) { - if (importBones) { - if (strmatch(rootNode->GetName(), "Scene Root")) - ImportBones(DynamicCast<NiNode>(rootNode->GetChildren())); - else - ImportBones(rootNode); - } - ok = ImportMeshes(rootNode); - - if (importSkeleton && removeUnusedImportedBones){ - vector<string> importedNodes = GetNamesOfNodes(nodes); - sort(importedBones.begin(), importedBones.end()); - sort(importedNodes.begin(), importedNodes.end()); - vector<string> results; - results.resize(importedBones.size()); - vector<string>::iterator end = set_difference ( - importedBones.begin(), importedBones.end(), - importedNodes.begin(), importedNodes.end(), results.begin()); - for (vector<string>::iterator itr = results.begin(); itr != end; ++itr){ - if (INode *node = gi->GetINodeByName((*itr).c_str())){ - node->Delete(0, TRUE); + if (root->IsDerivedType(NiNode::TypeConst())) + { + NiNodeRef rootNode = root; + + if (importBones) { + if (strmatch(rootNode->GetName(), "Scene Root")) + ImportBones(DynamicCast<NiNode>(rootNode->GetChildren())); + else + ImportBones(rootNode); + } + + ok = ImportMeshes(rootNode); + + if (importSkeleton && removeUnusedImportedBones){ + vector<string> importedNodes = GetNamesOfNodes(nodes); + sort(importedBones.begin(), importedBones.end()); + sort(importedNodes.begin(), importedNodes.end()); + vector<string> results; + results.resize(importedBones.size()); + vector<string>::iterator end = set_difference ( + importedBones.begin(), importedBones.end(), + importedNodes.begin(), importedNodes.end(), results.begin()); + for (vector<string>::iterator itr = results.begin(); itr != end; ++itr){ + if (INode *node = gi->GetINodeByName((*itr).c_str())){ + node->Delete(0, TRUE); + } } } } + else if (root->IsDerivedType(NiTriShape::TypeConst())) + { + ok |= ImportMesh(NiTriShapeRef(root)); + } + else if (root->IsDerivedType(NiTriStrips::TypeConst())) + { + ok |= ImportMesh(NiTriStripsRef(root)); + } }