Torch
Loading...
Searching...
No Matches
ShapeFactory.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4#include "types/RawBuffer.h"
5#include <vector>
6
7// Display list info collected during parsing
9 uint32_t offset; // Offset in shape file
10 std::vector<uint32_t> commands; // N64 display list commands (pairs of w0, w1)
11};
12
13// Custom parsed data that holds both shape buffer and display list info
14class PM64ShapeData : public IParsedData {
15public:
16 std::vector<uint8_t> mBuffer;
17 std::vector<PM64DisplayListInfo> mDisplayLists;
18 uint32_t mVertexTableOffset; // Offset of vertex table in shape blob
19 uint32_t mVertexDataSize; // Size of vertex data in bytes
20
21 PM64ShapeData(std::vector<uint8_t>&& buffer, std::vector<PM64DisplayListInfo>&& displayLists,
22 uint32_t vtxTableOffset, uint32_t vtxDataSize)
23 : mBuffer(std::move(buffer)), mDisplayLists(std::move(displayLists)),
24 mVertexTableOffset(vtxTableOffset), mVertexDataSize(vtxDataSize) {
25 }
26};
27
29 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
30};
31
33 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
34};
35
37public:
38 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
39 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
40 return {
41 REGISTER(Header, PM64ShapeHeaderExporter)
42 REGISTER(Binary, PM64ShapeBinaryExporter)
43 };
44 }
45};
Definition BaseFactory.h:88
Definition BaseFactory.h:94
Definition BaseFactory.h:80
Definition ShapeFactory.h:28
Definition ShapeFactory.h:36
Definition ShapeFactory.h:32
Definition ShapeFactory.h:8