summaryrefslogtreecommitdiff
path: root/src/utils/Decompressor.cpp
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-01-31 11:17:29 -0600
committerLywx <kiritodev01@gmail.com>2024-01-31 12:05:40 -0600
commit7c93abed9a0fd82de1b5b05abf27e60d245c3509 (patch)
tree5f4ff74d3ba29b2f372f260b75fa770e336fe507 /src/utils/Decompressor.cpp
parent6e5414f704cc26c9d45649188d1b6e51fcad46c3 (diff)
Added auto texture size calculation
Diffstat (limited to 'src/utils/Decompressor.cpp')
-rw-r--r--src/utils/Decompressor.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/utils/Decompressor.cpp b/src/utils/Decompressor.cpp
index 7de4338..a53177b 100644
--- a/src/utils/Decompressor.cpp
+++ b/src/utils/Decompressor.cpp
@@ -35,7 +35,7 @@ DataChunk* Decompressor::Decode(const std::vector<uint8_t>& buffer, const uint32
}
}
-DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t>& buffer) {
+DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t>& buffer, std::optional<size_t> manualSize) {
if(!node["offset"]){
throw std::runtime_error("Failed to find offset");
}
@@ -45,7 +45,7 @@ DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t>
if(node["mio0"]){
const auto mio0 = node["mio0"].as<uint32_t>();
auto decoded = Decode(buffer, offset, CompressionType::MIO0);
- auto size = node["size"] ? node["size"].as<size_t>() : decoded->size - mio0;
+ auto size = node["size"] ? node["size"].as<size_t>() : manualSize.value_or(decoded->size - mio0);
return {
.root = decoded,
@@ -63,7 +63,7 @@ DecompressedData Decompressor::AutoDecode(YAML::Node& node, std::vector<uint8_t>
return {
.root = nullptr,
- .segment = { buffer.data() + offset, node["size"] ? node["size"].as<size_t>() : buffer.size() - offset }
+ .segment = { buffer.data() + offset, node["size"] ? node["size"].as<size_t>() : manualSize.value_or(buffer.size() - offset) }
};
}