resource stuff

This commit is contained in:
max
2026-04-28 19:17:23 +02:00
parent fec2cd8d24
commit 059638e6e0
9 changed files with 386 additions and 45 deletions
+38 -6
View File
@@ -1,4 +1,6 @@
using System.Diagnostics;
using System.Text.Json;
using Nerfed.Builder.Meta;
namespace Nerfed.Builder;
@@ -57,15 +59,45 @@ public class Builder : IDisposable
string outFile = $"{args.ResourceOutPath}/{relativeFile}{PathUtil.ImportedFileExtension}";
FileInfo inFileInfo = new FileInfo(inFile);
FileInfo outFileInfo = new FileInfo(outFile);
if (!FileUtil.IsNewer(inFileInfo, outFileInfo))
// =========================================================================
// STEP 1: GUID META FILE SYNC
// Ensure the source file has a backing .meta file generating its Guid
// =========================================================================
string metaFile = inFile + ".meta";
AssetMeta metaData;
if (!File.Exists(metaFile))
{
// Generate a brand new meta file to track this asset permanently
metaData = new AssetMeta(Guid.NewGuid());
string json = JsonSerializer.Serialize(metaData, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(metaFile, json);
Console.WriteLine($"[Meta] Generated new tracking ID '{metaData.Id}' for {relativeFile}");
}
else
{
// Load the existing guid
metaData = JsonSerializer.Deserialize<AssetMeta>(File.ReadAllText(metaFile))!;
}
// Change output file from Name.ext.bin -> /GUID.bin to completely anonymize the actual game package!
string cacheOutFile = $"{args.ResourceOutPath}/{metaData.Id}.bin";
FileInfo outFileInfo = new FileInfo(cacheOutFile);
// Rebuild if the source file changed, or if the meta file changed!
FileInfo metaFileInfo = new FileInfo(metaFile);
bool requiresCompile = !outFileInfo.Exists ||
FileUtil.IsNewer(inFileInfo, outFileInfo) ||
FileUtil.IsNewer(metaFileInfo, outFileInfo);
if (!requiresCompile)
{
// File has not changed since last build, no need to build this one.
return;
}
string outDir = Path.GetDirectoryName(outFile);
string outDir = Path.GetDirectoryName(cacheOutFile)!;
if (!Directory.Exists(outDir))
{
Directory.CreateDirectory(outDir);
@@ -74,14 +106,14 @@ public class Builder : IDisposable
string ext = Path.GetExtension(inFile).ToLower();
if (importers.TryGetValue(ext, out IImporter importer))
{
importer.Import(inFile, outFile);
importer.Import(inFile, cacheOutFile); // Compile source directly to hash.bin
}
else
{
rawFileImporter.Import(inFile, outFile);
rawFileImporter.Import(inFile, cacheOutFile);
}
Console.WriteLine(relativeFile);
Console.WriteLine($"Compiled {relativeFile} -> {metaData.Id}.bin");
}
catch (Exception e)
{