mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-21 13:53:49 -07:00
[OTR] Initial support for PNG textures (#1634)
This commit is contained in:
parent
fba4839705
commit
ec88b90ed8
15 changed files with 59 additions and 327 deletions
|
@ -119,6 +119,26 @@ void Globals::AddExternalFile(ZFile* file, int workerID)
|
|||
workerData[workerID]->externalFiles.push_back(file);
|
||||
}
|
||||
|
||||
void Globals::BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath)
|
||||
{
|
||||
std::string name = outPath.stem().string();
|
||||
|
||||
ZTexture tex(nullptr);
|
||||
|
||||
if (name.find("u32") != std::string::npos)
|
||||
tex.dWordAligned = false;
|
||||
|
||||
tex.FromPNG(pngFilePath.string(), texType);
|
||||
std::string cfgPath = StringHelper::Split(pngFilePath.string(), ".")[0] + ".cfg";
|
||||
|
||||
if (File::Exists(cfgPath))
|
||||
name = File::ReadAllText(cfgPath);
|
||||
|
||||
std::string src = tex.GetBodySourceCode();
|
||||
|
||||
File::WriteAllText(outPath.string(), src);
|
||||
}
|
||||
|
||||
std::map<std::string, ExporterSet*>& Globals::GetExporterMap()
|
||||
{
|
||||
static std::map<std::string, ExporterSet*> exporters;
|
||||
|
|
|
@ -64,6 +64,7 @@ public:
|
|||
bool forceStatic = false;
|
||||
bool forceUnaccountedStatic = false;
|
||||
bool otrMode = true;
|
||||
bool buildRawTexture = false;
|
||||
|
||||
ZRom* rom;
|
||||
std::vector<ZFile*> files;
|
||||
|
@ -85,6 +86,7 @@ public:
|
|||
std::map<int32_t, std::vector<ZFile*>> GetSegmentRefFiles(int workerID);
|
||||
void AddFile(ZFile* file, int workerID);
|
||||
void AddExternalFile(ZFile* file, int workerID);
|
||||
void BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath);
|
||||
|
||||
ZResourceExporter* GetExporter(ZResourceType resType);
|
||||
ExporterSet* GetExporterSet();
|
||||
|
|
|
@ -147,7 +147,7 @@ void ImageBackend::ReadPng(const char* filename)
|
|||
|
||||
void ImageBackend::ReadPng(const fs::path& filename)
|
||||
{
|
||||
ReadPng(filename.c_str());
|
||||
ReadPng(filename.string().c_str());
|
||||
}
|
||||
|
||||
void ImageBackend::WritePng(const char* filename)
|
||||
|
|
|
@ -256,6 +256,10 @@ int main(int argc, char* argv[])
|
|||
{
|
||||
Globals::Instance->forceUnaccountedStatic = true;
|
||||
}
|
||||
else if (arg == "-brt" || arg == "--build-raw-texture")
|
||||
{
|
||||
Globals::Instance->buildRawTexture = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Parse File Mode
|
||||
|
@ -590,22 +594,7 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path
|
|||
|
||||
void BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath)
|
||||
{
|
||||
std::string name = outPath.stem().string();
|
||||
|
||||
ZTexture tex(nullptr);
|
||||
|
||||
if (name.find("u32") != std::string::npos)
|
||||
tex.dWordAligned = false;
|
||||
|
||||
tex.FromPNG(pngFilePath.string(), texType);
|
||||
std::string cfgPath = StringHelper::Split(pngFilePath.string(), ".")[0] + ".cfg";
|
||||
|
||||
if (File::Exists(cfgPath))
|
||||
name = File::ReadAllText(cfgPath);
|
||||
|
||||
std::string src = tex.GetBodySourceCode();
|
||||
|
||||
File::WriteAllText(outPath.string(), src);
|
||||
return Globals::Instance->BuildAssetTexture(pngFilePath, texType, outPath);
|
||||
}
|
||||
|
||||
void BuildAssetBackground(const fs::path& imageFilePath, const fs::path& outPath)
|
||||
|
|
|
@ -830,6 +830,8 @@ std::string ZTexture::GetBodySourceCode() const
|
|||
// Please don't remove this line, unless you somehow made a way to prevent
|
||||
// that warning when building the OoT repo.
|
||||
sourceOutput += "\n";
|
||||
} else if (Globals::Instance->buildRawTexture) {
|
||||
sourceOutput += std::string(textureDataRaw.begin(), textureDataRaw.end());
|
||||
}
|
||||
|
||||
return sourceOutput;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue