diff options
| -rw-r--r-- | OTRExporter/SkeletonExporter.cpp | 10 | ||||
| -rw-r--r-- | OTRExporter/SkeletonLimbExporter.cpp | 55 |
2 files changed, 50 insertions, 15 deletions
diff --git a/OTRExporter/SkeletonExporter.cpp b/OTRExporter/SkeletonExporter.cpp index 338466c..23ae853 100644 --- a/OTRExporter/SkeletonExporter.cpp +++ b/OTRExporter/SkeletonExporter.cpp @@ -1,5 +1,6 @@ #include "SkeletonExporter.h" #include <Resource.h> +#include <Globals.h> void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) { @@ -20,9 +21,14 @@ void OTRExporter_Skeleton::Save(ZResource* res, const fs::path& outPath, BinaryW { Declaration* skelDecl = skel->parent->GetDeclarationRanged(GETSEGOFFSET(skel->limbsTable.limbsAddresses[i])); - if (skelDecl != nullptr) + std::string name; + bool foundDecl = Globals::Instance->GetSegmentedPtrName(skel->limbsTable.limbsAddresses[i], skel->parent, "", name); + if (foundDecl) { - std::string fName = StringHelper::Sprintf("%s\\%s", skel->parent->GetOutName().c_str(), skelDecl->varName.c_str()); + if (name.at(0) == '&') + name.erase(0, 1); + + std::string fName = StringHelper::Sprintf("%s\\%s", skel->parent->GetOutName().c_str(), name.c_str()); writer->Write(fName); } else diff --git a/OTRExporter/SkeletonLimbExporter.cpp b/OTRExporter/SkeletonLimbExporter.cpp index 9a602f8..d22c3d0 100644 --- a/OTRExporter/SkeletonLimbExporter.cpp +++ b/OTRExporter/SkeletonLimbExporter.cpp @@ -1,6 +1,7 @@ #include "SkeletonLimbExporter.h" #include "DisplayListExporter.h" #include <Resource.h> +#include <Globals.h> void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, BinaryWriter* writer) { @@ -84,12 +85,19 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->childPtr != 0) { - auto childDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->childPtr)); - - if (childDecl != nullptr) - writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, childDecl->varName)); + std::string name; + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->childPtr, limb->parent, "", name); + if (foundDecl) + { + if (name.at(0) == '&') + name.erase(0, 1); + + writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name)); + } else + { writer->Write(""); + } } else { @@ -98,12 +106,19 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->siblingPtr != 0) { - auto siblingDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->siblingPtr)); + std::string name; + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->siblingPtr, limb->parent, "", name); + if (foundDecl) + { + if (name.at(0) == '&') + name.erase(0, 1); - if (siblingDecl != nullptr) - writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, siblingDecl->varName)); + writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name)); + } else + { writer->Write(""); + } } else { @@ -112,12 +127,19 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->dListPtr != 0) { - auto dlDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->dListPtr)); + std::string name; + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dListPtr, limb->parent, "", name); + if (foundDecl) + { + if (name.at(0) == '&') + name.erase(0, 1); - if (dlDecl != nullptr) - writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, dlDecl->varName)); + writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name)); + } else + { writer->Write(""); + } } else { @@ -126,12 +148,19 @@ void OTRExporter_SkeletonLimb::Save(ZResource* res, const fs::path& outPath, Bin if (limb->dList2Ptr != 0) { - auto dlDecl = limb->parent->GetDeclaration(GETSEGOFFSET(limb->dList2Ptr)); + std::string name; + bool foundDecl = Globals::Instance->GetSegmentedPtrName(limb->dList2Ptr, limb->parent, "", name); + if (foundDecl) + { + if (name.at(0) == '&') + name.erase(0, 1); - if (dlDecl != nullptr) - writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, dlDecl->varName)); + writer->Write(OTRExporter_DisplayList::GetPathToRes(limb, name)); + } else + { writer->Write(""); + } } else { |
