fixes for materials
This commit is contained in:
@@ -9,7 +9,6 @@ using FFXIVClientStructs.FFXIV.Client.Game.Character;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using MareSynchronos.Models;
|
using MareSynchronos.Models;
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace MareSynchronos.Managers
|
namespace MareSynchronos.Managers
|
||||||
{
|
{
|
||||||
@@ -47,6 +46,7 @@ namespace MareSynchronos.Managers
|
|||||||
_transientResourceManager.TransientResourceLoaded += HandleTransientResourceLoad;
|
_transientResourceManager.TransientResourceLoaded += HandleTransientResourceLoad;
|
||||||
_dalamudUtil.DelayedFrameworkUpdate += DalamudUtilOnDelayedFrameworkUpdate;
|
_dalamudUtil.DelayedFrameworkUpdate += DalamudUtilOnDelayedFrameworkUpdate;
|
||||||
_ipcManager.HeelsOffsetChangeEvent += HeelsOffsetChanged;
|
_ipcManager.HeelsOffsetChangeEvent += HeelsOffsetChanged;
|
||||||
|
_dalamudUtil.FrameworkUpdate += DalamudUtilOnFrameworkUpdate;
|
||||||
|
|
||||||
|
|
||||||
Logger.Debug("Watching Player, ApiController is Connected: " + _apiController.IsConnected);
|
Logger.Debug("Watching Player, ApiController is Connected: " + _apiController.IsConnected);
|
||||||
@@ -64,6 +64,11 @@ namespace MareSynchronos.Managers
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DalamudUtilOnFrameworkUpdate()
|
||||||
|
{
|
||||||
|
_transientResourceManager.PlayerRelatedPointers = playerRelatedObjects.Select(f => f.CurrentAddress).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public void HandleTransientResourceLoad(IntPtr gameObj)
|
public void HandleTransientResourceLoad(IntPtr gameObj)
|
||||||
{
|
{
|
||||||
foreach (var obj in playerRelatedObjects)
|
foreach (var obj in playerRelatedObjects)
|
||||||
@@ -106,6 +111,7 @@ namespace MareSynchronos.Managers
|
|||||||
|
|
||||||
_ipcManager.PenumbraRedrawEvent -= IpcManager_PenumbraRedrawEvent;
|
_ipcManager.PenumbraRedrawEvent -= IpcManager_PenumbraRedrawEvent;
|
||||||
_dalamudUtil.DelayedFrameworkUpdate -= DalamudUtilOnDelayedFrameworkUpdate;
|
_dalamudUtil.DelayedFrameworkUpdate -= DalamudUtilOnDelayedFrameworkUpdate;
|
||||||
|
_dalamudUtil.FrameworkUpdate -= DalamudUtilOnFrameworkUpdate;
|
||||||
|
|
||||||
_transientResourceManager.TransientResourceLoaded -= HandleTransientResourceLoad;
|
_transientResourceManager.TransientResourceLoaded -= HandleTransientResourceLoad;
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ namespace MareSynchronos.Managers
|
|||||||
private readonly DalamudUtil dalamudUtil;
|
private readonly DalamudUtil dalamudUtil;
|
||||||
|
|
||||||
public event TransientResourceLoadedEvent? TransientResourceLoaded;
|
public event TransientResourceLoadedEvent? TransientResourceLoaded;
|
||||||
|
public IntPtr[] PlayerRelatedPointers = Array.Empty<IntPtr>();
|
||||||
|
|
||||||
private ConcurrentDictionary<IntPtr, HashSet<string>> TransientResources { get; } = new();
|
private ConcurrentDictionary<IntPtr, HashSet<string>> TransientResources { get; } = new();
|
||||||
private ConcurrentDictionary<ObjectKind, HashSet<FileReplacement>> SemiTransientResources { get; } = new();
|
private ConcurrentDictionary<ObjectKind, HashSet<FileReplacement>> SemiTransientResources { get; } = new();
|
||||||
private CancellationTokenSource transientInvokeDelayCts = new CancellationTokenSource();
|
|
||||||
public TransientResourceManager(IpcManager manager, DalamudUtil dalamudUtil)
|
public TransientResourceManager(IpcManager manager, DalamudUtil dalamudUtil)
|
||||||
{
|
{
|
||||||
manager.PenumbraResourceLoadEvent += Manager_PenumbraResourceLoadEvent;
|
manager.PenumbraResourceLoadEvent += Manager_PenumbraResourceLoadEvent;
|
||||||
@@ -81,6 +81,11 @@ namespace MareSynchronos.Managers
|
|||||||
|
|
||||||
private void Manager_PenumbraResourceLoadEvent(IntPtr gameObject, string gamePath, string filePath)
|
private void Manager_PenumbraResourceLoadEvent(IntPtr gameObject, string gamePath, string filePath)
|
||||||
{
|
{
|
||||||
|
if (!PlayerRelatedPointers.Contains(gameObject))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!TransientResources.ContainsKey(gameObject))
|
if (!TransientResources.ContainsKey(gameObject))
|
||||||
{
|
{
|
||||||
TransientResources[gameObject] = new();
|
TransientResources[gameObject] = new();
|
||||||
@@ -115,7 +120,7 @@ namespace MareSynchronos.Managers
|
|||||||
{
|
{
|
||||||
if (TransientResources.ContainsKey(gameObject))
|
if (TransientResources.ContainsKey(gameObject))
|
||||||
{
|
{
|
||||||
TransientResources[gameObject].RemoveWhere(f => fileReplacement.ResolvedPath.ToLowerInvariant() == f.ToLowerInvariant());
|
TransientResources[gameObject].RemoveWhere(f => fileReplacement.GamePaths.Any(g => g.ToLowerInvariant() == f.ToLowerInvariant()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,14 +151,17 @@ namespace MareSynchronos.Managers
|
|||||||
{
|
{
|
||||||
if (!SemiTransientResources[objectKind].Any(f => f.GamePaths.First().ToLowerInvariant() == item.ToLowerInvariant()))
|
if (!SemiTransientResources[objectKind].Any(f => f.GamePaths.First().ToLowerInvariant() == item.ToLowerInvariant()))
|
||||||
{
|
{
|
||||||
Logger.Debug("Persisting " + item.ToLowerInvariant());
|
|
||||||
|
|
||||||
var fileReplacement = createFileReplacement(item.ToLowerInvariant(), true);
|
var fileReplacement = createFileReplacement(item.ToLowerInvariant(), true);
|
||||||
if (!fileReplacement.HasFileReplacement)
|
if (!fileReplacement.HasFileReplacement)
|
||||||
fileReplacement = createFileReplacement(item.ToLowerInvariant(), false);
|
fileReplacement = createFileReplacement(item.ToLowerInvariant(), false);
|
||||||
|
if (fileReplacement.HasFileReplacement)
|
||||||
|
{
|
||||||
|
Logger.Debug("Persisting " + item.ToLowerInvariant());
|
||||||
SemiTransientResources[objectKind].Add(fileReplacement);
|
SemiTransientResources[objectKind].Add(fileReplacement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Warn("Issue during transient file persistence");
|
Logger.Warn("Issue during transient file persistence");
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors></Authors>
|
<Authors></Authors>
|
||||||
<Company></Company>
|
<Company></Company>
|
||||||
<Version>0.4.2</Version>
|
<Version>0.4.3</Version>
|
||||||
<Description></Description>
|
<Description></Description>
|
||||||
<Copyright></Copyright>
|
<Copyright></Copyright>
|
||||||
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace MareSynchronos.Models
|
|||||||
public IntPtr Address { get; set; }
|
public IntPtr Address { get; set; }
|
||||||
public IntPtr DrawObjectAddress { get; set; }
|
public IntPtr DrawObjectAddress { get; set; }
|
||||||
|
|
||||||
private IntPtr CurrentAddress
|
public IntPtr CurrentAddress
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user