diff options
Diffstat (limited to 'src/Companion.cpp')
| -rw-r--r-- | src/Companion.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp index 441f596..81044b3 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -14,6 +14,7 @@ #include "factories/VtxFactory.h" #include "factories/TextureFactory.h" #include "factories/DisplayListFactory.h" +#include "factories/DisplayListOverrides.h" #include "factories/BlobFactory.h" #include "factories/LightsFactory.h" #include "factories/mk64/CourseVtx.h" @@ -482,6 +483,7 @@ void Companion::Process() { this->gConfig.segment.local.clear(); this->gFileHeader.clear(); this->gCurrentPad = 0; + GFXDOverride::ClearVtx(); if(root[":config"]) { this->ParseCurrentFileConfig(root[":config"]); @@ -783,6 +785,25 @@ std::optional<std::tuple<std::string, YAML::Node>> Companion::GetNodeByAddr(cons return this->gAddrMap[this->gCurrentFile][addr]; } +std::optional<std::vector<std::tuple<std::string, YAML::Node>>> Companion::GetNodesByType(const std::string& type){ + std::vector<std::tuple<std::string, YAML::Node>> nodes; + + if(!this->gAddrMap.contains(this->gCurrentFile)){ + return nodes; + } + + for(auto& [addr, tpl] : this->gAddrMap[this->gCurrentFile]){ + auto [name, node] = tpl; + const auto n_type = GetSafeNode<std::string>(node, "type"); + if(n_type == type){ + nodes.push_back(tpl); + } + } + + return nodes; + +} + std::string Companion::NormalizeAsset(const std::string& name) const { auto path = fs::path(this->gCurrentFile).stem().string() + "_" + name; return path; |
