re-check semi-persistent transient resources validity instead of clearing on redraw
This commit is contained in:
@@ -238,7 +238,7 @@ public class CharacterDataFactory
|
||||
Logger.Verbose("Character is null but it shouldn't be, waiting");
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
|
||||
|
||||
_dalamudUtil.WaitWhileCharacterIsDrawing(charaPointer);
|
||||
|
||||
Stopwatch st = Stopwatch.StartNew();
|
||||
@@ -342,21 +342,31 @@ public class CharacterDataFactory
|
||||
|
||||
foreach (var item in transientResourceManager.GetTransientResources(charaPointer))
|
||||
{
|
||||
Logger.Verbose("Found transient resource: " + item);
|
||||
AddReplacement(item, objectKind, previousData, 1, true);
|
||||
if (!previousData.FileReplacements[objectKind].Any(f => f.GamePaths.Any(p => p.ToLowerInvariant() == item.ToLowerInvariant())))
|
||||
{
|
||||
Logger.Verbose("Found transient resource: " + item);
|
||||
AddReplacement(item, objectKind, previousData, 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in transientResourceManager.GetSemiTransientResources(objectKind))
|
||||
{
|
||||
Logger.Verbose("Found semi transient resource: " + item);
|
||||
if (!previousData.FileReplacements.ContainsKey(objectKind))
|
||||
{
|
||||
previousData.FileReplacements.Add(objectKind, new());
|
||||
}
|
||||
|
||||
if (!previousData.FileReplacements[objectKind].Any(k => k.ResolvedPath == item.ResolvedPath))
|
||||
if (!previousData.FileReplacements[objectKind].Any(k => k.ResolvedPath.ToLowerInvariant() == item.ResolvedPath.ToLowerInvariant()))
|
||||
{
|
||||
previousData.FileReplacements[objectKind].Add(item);
|
||||
if (_ipcManager.PenumbraResolvePath(item.GamePaths.First()).ToLowerInvariant() == item.GamePaths.First().ToLowerInvariant())
|
||||
{
|
||||
transientResourceManager.RemoveTransientResource(charaPointer, item);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Verbose("Found semi transient resource: " + item);
|
||||
previousData.FileReplacements[objectKind].Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -254,11 +254,11 @@ namespace MareSynchronos.Managers
|
||||
});
|
||||
}
|
||||
|
||||
public string? PenumbraResolvePath(string path)
|
||||
public string PenumbraResolvePath(string path)
|
||||
{
|
||||
if (!CheckPenumbraApi()) return null;
|
||||
if (!CheckPenumbraApi()) return path;
|
||||
var resolvedPath = _penumbraResolvePlayer!.InvokeFunc(path);
|
||||
return resolvedPath;
|
||||
return resolvedPath ?? path;
|
||||
}
|
||||
|
||||
public string[] PenumbraReverseResolvePlayer(string path)
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace MareSynchronos.Managers
|
||||
if (address == item.Address)
|
||||
{
|
||||
Logger.Debug("Penumbra redraw Event for " + item.ObjectKind);
|
||||
_transientResourceManager.CleanSemiTransientResources(item.ObjectKind);
|
||||
//_transientResourceManager.CleanSemiTransientResources(item.ObjectKind);
|
||||
item.HasUnprocessedUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user