Skip to content
Snippets Groups Projects
Commit e37af671 authored by Tazpn's avatar Tazpn
Browse files

Fix issue when importing Nifs without a scene NiNode

parent fc4f3c86
No related branches found
No related tags found
Loading
......@@ -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
......
......@@ -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"
......
......@@ -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));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment