summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-06-01 20:33:00 -0600
committerKiritoDv <kiritodev01@gmail.com>2024-06-01 20:33:00 -0600
commit3b64734201866196e4ca927d9552fb0aef5a3308 (patch)
tree570275d7db0adbf187349e4656c975fd40fd7855
parent7e4c4bca087490960bbd67ecc102a3884adc6788 (diff)
Fixed animation factory
-rw-r--r--src/factories/sm64/AnimationFactory.cpp14
-rw-r--r--src/factories/sm64/AnimationFactory.h6
2 files changed, 10 insertions, 10 deletions
diff --git a/src/factories/sm64/AnimationFactory.cpp b/src/factories/sm64/AnimationFactory.cpp
index e833b60..dec28a2 100644
--- a/src/factories/sm64/AnimationFactory.cpp
+++ b/src/factories/sm64/AnimationFactory.cpp
@@ -3,7 +3,7 @@
#include "utils/Decompressor.h"
-#define ANIMINDEX_COUNT(boneCount) (sizeof(boneCount) + 1) * 6 * sizeof(uint16_t)
+#define ANIMINDEX_COUNT(boneCount) (boneCount + 1) * 6 * sizeof(uint16_t)
ExportResult SM64::AnimationBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
auto writer = LUS::BinaryWriter();
@@ -53,17 +53,17 @@ std::optional<std::shared_ptr<IParsedData>> SM64::AnimationFactory::parse(std::v
LUS::BinaryReader indices = LUS::BinaryReader(data.data + indexAddr, indexLength * sizeof(uint16_t));
indices.SetEndianness(Torch::Endianness::Big);
- std::vector<int16_t> indicesData;
+ std::vector<uint16_t> indicesData;
for (size_t i = 0; i < indexLength; i++) {
- indicesData.push_back(indices.ReadInt16());
+ indicesData.push_back(indices.ReadUInt16());
}
- size_t valuesSize = length * sizeof(uint16_t);
+ size_t valuesSize = length * sizeof(int16_t);
LUS::BinaryReader values = LUS::BinaryReader(data.data + valuesAddr, valuesSize);
values.SetEndianness(Torch::Endianness::Big);
- std::vector<uint16_t> valuesData;
- for (size_t i = 0; i < valuesSize / sizeof(uint16_t); i++) {
- valuesData.push_back(values.ReadUInt16());
+ std::vector<int16_t> valuesData;
+ for (size_t i = 0; i < valuesSize / sizeof(int16_t); i++) {
+ valuesData.push_back(values.ReadInt16());
}
SPDLOG_INFO("Flags: {}", flags);
diff --git a/src/factories/sm64/AnimationFactory.h b/src/factories/sm64/AnimationFactory.h
index 3917516..e5a86dd 100644
--- a/src/factories/sm64/AnimationFactory.h
+++ b/src/factories/sm64/AnimationFactory.h
@@ -12,10 +12,10 @@ public:
int16_t mLoopEnd;
int16_t mUnusedBoneCount;
int16_t mLength;
- std::vector<int16_t> mIndices;
- std::vector<uint16_t> mEntries;
+ std::vector<uint16_t> mIndices;
+ std::vector<int16_t> mEntries;
- AnimationData(int16_t flags, int16_t animYTransDivisor, int16_t startFrame, int16_t loopStart, int16_t loopEnd, int16_t unusedBoneCount, int16_t length, std::vector<int16_t> indices, std::vector<uint16_t> entries) : mFlags(flags), mAnimYTransDivisor(animYTransDivisor), mStartFrame(startFrame), mLoopStart(loopStart), mLoopEnd(loopEnd), mUnusedBoneCount(unusedBoneCount), mLength(length), mIndices(std::move(indices)), mEntries(std::move(entries)) {}
+ AnimationData(int16_t flags, int16_t animYTransDivisor, int16_t startFrame, int16_t loopStart, int16_t loopEnd, int16_t unusedBoneCount, int16_t length, std::vector<uint16_t> indices, std::vector<int16_t> entries) : mFlags(flags), mAnimYTransDivisor(animYTransDivisor), mStartFrame(startFrame), mLoopStart(loopStart), mLoopEnd(loopEnd), mUnusedBoneCount(unusedBoneCount), mLength(length), mIndices(std::move(indices)), mEntries(std::move(entries)) {}
};
class AnimationBinaryExporter : public BaseExporter {