add shpk compatibility

This commit is contained in:
Stanley Dimant
2022-12-16 11:32:32 +01:00
parent 581e9370aa
commit d01b68b50a
3 changed files with 30 additions and 2 deletions

View File

@@ -188,6 +188,17 @@ public class CharacterDataFactory
AddReplacementsFromTexture(texPath, objectKind, cache, inheritanceLevel + 1);
}
try
{
var shpkPath = "shader/sm5/shpk/" + new Utf8String(mtrlResourceHandle->ShpkString).ToString();
Logger.Verbose("Checking File Replacement for Shader " + shpkPath);
AddReplacementsFromShader(shpkPath, objectKind, cache, inheritanceLevel + 1);
}
catch
{
Logger.Verbose("Could not find shpk for Material " + fileName);
}
}
private void AddReplacement(string varPath, ObjectKind objectKind, CharacterData cache, int inheritanceLevel = 0, bool doNotReverseResolve = false)
@@ -208,6 +219,23 @@ public class CharacterDataFactory
cache.AddFileReplacement(objectKind, variousReplacement);
}
private void AddReplacementsFromShader(string shpkPath, ObjectKind objectKind, CharacterData cache, int inheritanceLevel = 0)
{
if (string.IsNullOrEmpty(shpkPath)) return;
if (cache.FileReplacements.ContainsKey(objectKind))
{
if (cache.FileReplacements[objectKind].Any(c => c.GamePaths.Contains(shpkPath, StringComparer.Ordinal)))
{
return;
}
}
var shpkFileReplacement = CreateFileReplacement(shpkPath, true);
DebugPrint(shpkFileReplacement, objectKind, "Shader", inheritanceLevel);
cache.AddFileReplacement(objectKind, shpkFileReplacement);
}
private void AddReplacementsFromTexture(string texPath, ObjectKind objectKind, CharacterData cache, int inheritanceLevel = 0, bool doNotReverseResolve = true)
{
if (string.IsNullOrEmpty(texPath)) return;