summaryrefslogtreecommitdiff
path: root/ZAPD/ZVtx.cpp
diff options
context:
space:
mode:
authorNicholas Estelami <NEstelami@users.noreply.github.com>2021-01-19 15:08:29 -0500
committerGitHub <noreply@github.com>2021-01-19 15:08:29 -0500
commit2e1174063f3ed6bcf929bc7093cd2d1b05f8518b (patch)
treed62ac506b1017296dba708030745743da90a5b2d /ZAPD/ZVtx.cpp
parentfda77edbcfcee7675fd1549553114d690d4fcd39 (diff)
Added in support for ZArray (WIP) and ZVtx. Also cleaned up some of the virtual functions. (#73)
Diffstat (limited to 'ZAPD/ZVtx.cpp')
-rw-r--r--ZAPD/ZVtx.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/ZAPD/ZVtx.cpp b/ZAPD/ZVtx.cpp
new file mode 100644
index 0000000..b951310
--- /dev/null
+++ b/ZAPD/ZVtx.cpp
@@ -0,0 +1,78 @@
+#include "ZVtx.h"
+#include "ZFile.h"
+#include "StringHelper.h"
+#include "BitConverter.h"
+
+ZVtx::ZVtx()
+{
+ x = 0;
+ y = 0;
+ z = 0;
+ flag = 0;
+ s = 0;
+ t = 0;
+ r = 0;
+ g = 0;
+ b = 0;
+ a = 0;
+}
+
+void ZVtx::ParseXML(tinyxml2::XMLElement* reader)
+{
+}
+
+std::string ZVtx::GetSourceTypeName()
+{
+ return "Vtx";
+}
+
+std::string ZVtx::GetSourceOutputCode(const std::string& prefix)
+{
+ std::string output = StringHelper::Sprintf("VTX(%i, %i, %i, %i, %i, %i, %i, %i, %i)", x, y, z, s, t, r, g, b, a);
+
+ if (parent != nullptr)
+ parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align16, GetRawDataSize(), GetSourceTypeName(), name, output);
+
+ return "";
+}
+
+void ZVtx::ParseRawData()
+{
+ const uint8_t* data = rawData.data();
+
+ x = BitConverter::ToInt16BE(data, rawDataIndex + 0);
+ y = BitConverter::ToInt16BE(data, rawDataIndex + 2);
+ z = BitConverter::ToInt16BE(data, rawDataIndex + 4);
+ flag = BitConverter::ToInt16BE(data, rawDataIndex + 6);
+ s = BitConverter::ToInt16BE(data, rawDataIndex + 8);
+ t = BitConverter::ToInt16BE(data, rawDataIndex + 10);
+ r = data[rawDataIndex + 12];
+ g = data[rawDataIndex + 13];
+ b = data[rawDataIndex + 14];
+ a = data[rawDataIndex + 15];
+}
+
+int ZVtx::GetRawDataSize()
+{
+ return 16;
+}
+
+bool ZVtx::DoesSupportArray()
+{
+ return true;
+}
+
+ZResourceType ZVtx::GetResourceType()
+{
+ return ZResourceType::Vertex;
+}
+
+ZVtx* ZVtx::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector<uint8_t>& nRawData, const int rawDataIndex, const std::string& nRelPath)
+{
+ ZVtx* vtx = new ZVtx();
+ vtx->rawData = nRawData;
+ vtx->rawDataIndex = rawDataIndex;
+ vtx->ParseRawData();
+
+ return vtx;
+}