mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-07-06 00:18:35 -07:00
Fixed GBI Floats
This commit is contained in:
@@ -1032,6 +1032,7 @@ void Companion::Process() {
|
||||
this->gAssetPath = rom["path"].as<std::string>();
|
||||
auto opath = cfg["output"];
|
||||
auto gbi = cfg["gbi"];
|
||||
auto gbi_floats = cfg["gbi_floats"];
|
||||
auto modding_path = opath && opath["modding"] ? opath["modding"].as<std::string>() : "modding";
|
||||
|
||||
this->gConfig.moddingPath = modding_path;
|
||||
@@ -1086,6 +1087,10 @@ void Companion::Process() {
|
||||
SPDLOG_ERROR("Invalid GBI version");
|
||||
return;
|
||||
}
|
||||
|
||||
if(gbi_floats) {
|
||||
this->gConfig.gbi.useFloats = gbi_floats.as<bool>();
|
||||
}
|
||||
}
|
||||
|
||||
if(auto sort = cfg["sort"]) {
|
||||
|
||||
@@ -76,6 +76,7 @@ struct WriteEntry {
|
||||
struct GBIConfig {
|
||||
GBIVersion version = GBIVersion::f3d;
|
||||
GBIMinorVersion subversion = GBIMinorVersion::None;
|
||||
bool useFloats = false;
|
||||
};
|
||||
|
||||
struct TorchConfig {
|
||||
|
||||
@@ -105,7 +105,7 @@ ExportResult MtxCodeExporter::Export(std::ostream &write, std::shared_ptr<IParse
|
||||
ExportResult MtxBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
|
||||
auto mtx = std::static_pointer_cast<MtxData>(raw);
|
||||
auto writer = LUS::BinaryWriter();
|
||||
auto floats = GetSafeNode(node, "floats", false);
|
||||
auto floats = Companion::Instance->GetConfig().gbi.useFloats;
|
||||
|
||||
WriteHeader(writer, Torch::ResourceType::Matrix, 0);
|
||||
|
||||
|
||||
@@ -128,9 +128,15 @@ ExportResult VtxBinaryExporter::Export(std::ostream &write, std::shared_ptr<IPar
|
||||
WriteHeader(writer, Torch::ResourceType::Vertex, 0);
|
||||
writer.Write((uint32_t) vtx->mVtxs.size());
|
||||
for(auto v : vtx->mVtxs) {
|
||||
writer.Write(v.ob[0]);
|
||||
writer.Write(v.ob[1]);
|
||||
writer.Write(v.ob[2]);
|
||||
if(Companion::Instance->GetConfig().gbi.useFloats){
|
||||
writer.Write((float) v.ob[0]);
|
||||
writer.Write((float) v.ob[1]);
|
||||
writer.Write((float) v.ob[2]);
|
||||
} else {
|
||||
writer.Write((int16_t) v.ob[0]);
|
||||
writer.Write((int16_t) v.ob[1]);
|
||||
writer.Write((int16_t) v.ob[2]);
|
||||
}
|
||||
writer.Write(v.flag);
|
||||
writer.Write(v.tc[0]);
|
||||
writer.Write(v.tc[1]);
|
||||
|
||||
Reference in New Issue
Block a user