Torch
Loading...
Searching...
No Matches
AnimFactory.h
1#pragma once
2
3#include <factories/BaseFactory.h>
4
5namespace BK64 {
6
7typedef union { // transform structure [xx xx] -> [DE FF FF FF FF FF FF FF]
8 struct {
9 uint8_t unk0_15 : 1; // bit flag 1 [D]
10 uint8_t unk0_14 : 1; // bit flag 2 [E]
11 uint16_t unk0_13 : 14; // frame of transformation [FF FF FF FF FF FF FF];
12 // ends up 87.59375 (0x15E6) after the bitwise ops
13 int16_t unk2;
14 };
16
17class AnimationFile {
18 public:
19 int16_t mBoneIndex;
20 int16_t mTransformType;
21 std::vector<AnimationFileData> mData;
22
23 AnimationFile(int16_t boneIndex, int16_t transformType, std::vector<AnimationFileData> data)
24 : mBoneIndex(boneIndex), mTransformType(transformType), mData(std::move(data)) {
25 }
26};
27
28class AnimData : public IParsedData {
29 public:
30 int16_t mStartFrame;
31 int16_t mEndFrame;
32 std::vector<AnimationFile> mFiles;
33
34 AnimData(int16_t startFrame, int16_t endFrame, std::vector<AnimationFile> files)
35 : mStartFrame(startFrame), mEndFrame(endFrame), mFiles(std::move(files)) {
36 }
37};
38
40 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
41 YAML::Node& node, std::string* replacement) override;
42};
43
45 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
46 YAML::Node& node, std::string* replacement) override;
47};
48
50 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
51 YAML::Node& node, std::string* replacement) override;
52};
53
55 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
56 YAML::Node& node, std::string* replacement) override;
57};
58
59class AnimFactory : public BaseFactory {
60 public:
61 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
62 std::optional<std::shared_ptr<IParsedData>> parse_modding(std::vector<uint8_t>& buffer, YAML::Node& data) override;
63 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
64 return { REGISTER(Code, AnimCodeExporter) REGISTER(Header, AnimHeaderExporter)
65 REGISTER(Binary, AnimBinaryExporter) REGISTER(Modding, AnimModdingExporter) };
66 }
67 bool SupportModdedAssets() override {
68 return true;
69 }
70};
71} // namespace BK64
Definition AnimFactory.h:44
Definition AnimFactory.h:49
Definition AnimFactory.h:59
Definition AnimFactory.h:39
Definition AnimFactory.h:54
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition BaseFactory.h:88
Definition AnimFactory.h:7