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");
|
Logger.Verbose("Character is null but it shouldn't be, waiting");
|
||||||
Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
_dalamudUtil.WaitWhileCharacterIsDrawing(charaPointer);
|
_dalamudUtil.WaitWhileCharacterIsDrawing(charaPointer);
|
||||||
|
|
||||||
Stopwatch st = Stopwatch.StartNew();
|
Stopwatch st = Stopwatch.StartNew();
|
||||||
@@ -342,21 +342,31 @@ public class CharacterDataFactory
|
|||||||
|
|
||||||
foreach (var item in transientResourceManager.GetTransientResources(charaPointer))
|
foreach (var item in transientResourceManager.GetTransientResources(charaPointer))
|
||||||
{
|
{
|
||||||
Logger.Verbose("Found transient resource: " + item);
|
if (!previousData.FileReplacements[objectKind].Any(f => f.GamePaths.Any(p => p.ToLowerInvariant() == item.ToLowerInvariant())))
|
||||||
AddReplacement(item, objectKind, previousData, 1, true);
|
{
|
||||||
|
Logger.Verbose("Found transient resource: " + item);
|
||||||
|
AddReplacement(item, objectKind, previousData, 1, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in transientResourceManager.GetSemiTransientResources(objectKind))
|
foreach (var item in transientResourceManager.GetSemiTransientResources(objectKind))
|
||||||
{
|
{
|
||||||
Logger.Verbose("Found semi transient resource: " + item);
|
|
||||||
if (!previousData.FileReplacements.ContainsKey(objectKind))
|
if (!previousData.FileReplacements.ContainsKey(objectKind))
|
||||||
{
|
{
|
||||||
previousData.FileReplacements.Add(objectKind, new());
|
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);
|
var resolvedPath = _penumbraResolvePlayer!.InvokeFunc(path);
|
||||||
return resolvedPath;
|
return resolvedPath ?? path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string[] PenumbraReverseResolvePlayer(string path)
|
public string[] PenumbraReverseResolvePlayer(string path)
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ namespace MareSynchronos.Managers
|
|||||||
if (address == item.Address)
|
if (address == item.Address)
|
||||||
{
|
{
|
||||||
Logger.Debug("Penumbra redraw Event for " + item.ObjectKind);
|
Logger.Debug("Penumbra redraw Event for " + item.ObjectKind);
|
||||||
_transientResourceManager.CleanSemiTransientResources(item.ObjectKind);
|
//_transientResourceManager.CleanSemiTransientResources(item.ObjectKind);
|
||||||
item.HasUnprocessedUpdate = true;
|
item.HasUnprocessedUpdate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user