resolve material issues

This commit is contained in:
Stanley Dimant
2022-09-13 23:10:44 +02:00
parent 78c6d7e594
commit b4792138ae
4 changed files with 14 additions and 6 deletions

View File

@@ -121,7 +121,7 @@ public class CharacterDataFactory
Logger.Warn("Could not get model data for " + objectKind);
return;
}
//Logger.Verbose("Adding File Replacement for Model " + mdlPath);
//Logger.Verbose("Checking File Replacement for Model " + mdlPath);
FileReplacement mdlFileReplacement = CreateFileReplacement(mdlPath);
DebugPrint(mdlFileReplacement, objectKind, "Model", inheritanceLevel);
@@ -151,6 +151,7 @@ public class CharacterDataFactory
return;
}
Logger.Verbose("Check File Replacement for Material " + fileName);
var mtrlPath = fileName.Split("|")[2];
if (cache.FileReplacements.ContainsKey(objectKind))
@@ -181,6 +182,8 @@ public class CharacterDataFactory
if (string.IsNullOrEmpty(texPath)) continue;
Logger.Verbose("Check File Replacement for Texture " + texPath);
AddReplacementsFromTexture(texPath, objectKind, cache, inheritanceLevel + 1);
}
}

View File

@@ -19,6 +19,7 @@ namespace MareSynchronos.Managers
public event TransientResourceLoadedEvent? TransientResourceLoaded;
public IntPtr[] PlayerRelatedPointers = Array.Empty<IntPtr>();
private readonly string[] FileTypesToHandle = new[] { "tmb", "pap", "avfx", "atex", "sklb", "eid", "phyb", "scd", "skp" };
private ConcurrentDictionary<IntPtr, HashSet<string>> TransientResources { get; } = new();
private ConcurrentDictionary<ObjectKind, HashSet<FileReplacement>> SemiTransientResources { get; } = new();
@@ -81,6 +82,10 @@ namespace MareSynchronos.Managers
private void Manager_PenumbraResourceLoadEvent(IntPtr gameObject, string gamePath, string filePath)
{
if (!FileTypesToHandle.Any(type => gamePath.ToLowerInvariant().EndsWith(type)))
{
return;
}
if (!PlayerRelatedPointers.Contains(gameObject))
{
return;

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<Authors></Authors>
<Company></Company>
<Version>0.4.3</Version>
<Version>0.4.4</Version>
<Description></Description>
<Copyright></Copyright>
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>

View File

@@ -35,7 +35,7 @@ namespace MareSynchronos.Models
public void SetResolvedPath(string path)
{
ResolvedPath = path.ToLowerInvariant();//.Replace('/', '\\').Replace(_penumbraDirectory, "").Replace('\\', '/');
ResolvedPath = path.ToLowerInvariant().Replace('\\', '/');//.Replace('/', '\\').Replace(_penumbraDirectory, "").Replace('\\', '/');
if (!HasFileReplacement || IsFileSwap) return;
_ = Task.Run(() =>
@@ -43,7 +43,7 @@ namespace MareSynchronos.Models
FileCache? fileCache;
using (FileCacheContext db = new())
{
fileCache = db.FileCaches.FirstOrDefault(f => f.Filepath == path.ToLowerInvariant());
fileCache = db.FileCaches.FirstOrDefault(f => f.Filepath == path.Replace('/', '\\').ToLowerInvariant());
}
if (fileCache != null)
@@ -57,7 +57,7 @@ namespace MareSynchronos.Models
{
Hash = ComputeHash(fi);
using var db = new FileCacheContext();
var newTempCache = db.FileCaches.Single(f => f.Filepath == path.ToLowerInvariant());
var newTempCache = db.FileCaches.Single(f => f.Filepath == path.Replace('/', '\\').ToLowerInvariant());
newTempCache.Hash = Hash;
db.Update(newTempCache);
db.SaveChanges();
@@ -65,7 +65,7 @@ namespace MareSynchronos.Models
}
else
{
Hash = ComputeHash(new FileInfo(path));
Hash = ComputeHash(new FileInfo(path.Replace('/', '\\').ToLowerInvariant()));
}
});
}