summaryrefslogtreecommitdiff
path: root/ZAPD/ZLimb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ZAPD/ZLimb.cpp')
-rw-r--r--ZAPD/ZLimb.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/ZAPD/ZLimb.cpp b/ZAPD/ZLimb.cpp
index 9eb7eac..d0c3ffe 100644
--- a/ZAPD/ZLimb.cpp
+++ b/ZAPD/ZLimb.cpp
@@ -4,12 +4,15 @@
#include "Globals.h"
#include "Utils/BitConverter.h"
+#include "Utils/StringHelper.h"
#include "WarningHandler.h"
+#include "ZSkeleton.h"
REGISTER_ZFILENODE(Limb, ZLimb);
ZLimb::ZLimb(ZFile* nParent) : ZResource(nParent), segmentStruct(nParent)
{
+ RegisterOptionalAttribute("EnumName");
RegisterOptionalAttribute("LimbType");
RegisterOptionalAttribute("Type");
}
@@ -30,6 +33,12 @@ void ZLimb::ParseXML(tinyxml2::XMLElement* reader)
{
ZResource::ParseXML(reader);
+ auto& enumNameXml = registeredAttributes.at("EnumName").value;
+ if (enumNameXml != "")
+ {
+ enumName = enumNameXml;
+ }
+
// Reading from a <Skeleton/>
std::string limbType = registeredAttributes.at("LimbType").value;
if (limbType == "") // Reading from a <Limb/>
@@ -247,11 +256,24 @@ std::string ZLimb::GetBodySourceCode() const
}
else
{
+ std::string childStr;
+ std::string siblingStr;
+ if (limbsTable != nullptr)
+ {
+ childStr = limbsTable->GetLimbEnumName(childIndex);
+ siblingStr = limbsTable->GetLimbEnumName(siblingIndex);
+ }
+ else
+ {
+ childStr = StringHelper::Sprintf("0x%02X", childIndex);
+ siblingStr = StringHelper::Sprintf("0x%02X", siblingIndex);
+ }
+
if (type != ZLimbType::Curve)
{
entryStr += StringHelper::Sprintf("{ %i, %i, %i }, ", transX, transY, transZ);
}
- entryStr += StringHelper::Sprintf("0x%02X, 0x%02X,\n", childIndex, siblingIndex);
+ entryStr += StringHelper::Sprintf("%s, %s,\n", childStr.c_str(), siblingStr.c_str());
switch (type)
{
@@ -360,6 +382,11 @@ ZLimbType ZLimb::GetTypeByAttributeName(const std::string& attrName)
return ZLimbType::Invalid;
}
+void ZLimb::SetLimbIndex(uint8_t nLimbIndex)
+{
+ limbIndex = nLimbIndex;
+}
+
void ZLimb::DeclareDList(segptr_t dListSegmentedPtr, const std::string& prefix,
const std::string& limbSuffix)
{