adjustments for animation/penumbra update
This commit is contained in:
@@ -266,7 +266,7 @@ public class CharacterDataFactory
|
|||||||
|
|
||||||
foreach (var item in previousData.FileReplacements[objectKind])
|
foreach (var item in previousData.FileReplacements[objectKind])
|
||||||
{
|
{
|
||||||
transientResourceManager.RemoveTransientResource((IntPtr)human, item);
|
transientResourceManager.RemoveTransientResource(charaPointer, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (objectKind == ObjectKind.Player)
|
if (objectKind == ObjectKind.Player)
|
||||||
@@ -281,7 +281,7 @@ public class CharacterDataFactory
|
|||||||
|
|
||||||
foreach (var item in previousData.FileReplacements[objectKind])
|
foreach (var item in previousData.FileReplacements[objectKind])
|
||||||
{
|
{
|
||||||
transientResourceManager.RemoveTransientResource((IntPtr)weaponObject, item);
|
transientResourceManager.RemoveTransientResource(charaPointer, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in transientResourceManager.GetTransientResources((IntPtr)weaponObject))
|
foreach (var item in transientResourceManager.GetTransientResources((IntPtr)weaponObject))
|
||||||
@@ -329,11 +329,11 @@ public class CharacterDataFactory
|
|||||||
|
|
||||||
foreach (var item in previousData.FileReplacements[objectKind])
|
foreach (var item in previousData.FileReplacements[objectKind])
|
||||||
{
|
{
|
||||||
transientResourceManager.RemoveTransientResource((IntPtr)human, item);
|
transientResourceManager.RemoveTransientResource(charaPointer, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in transientResourceManager.GetTransientResources((IntPtr)human))
|
foreach (var item in transientResourceManager.GetTransientResources(charaPointer))
|
||||||
{
|
{
|
||||||
Logger.Verbose("Found transient resource: " + item);
|
Logger.Verbose("Found transient resource: " + item);
|
||||||
AddReplacement(item, objectKind, previousData, 1);
|
AddReplacement(item, objectKind, previousData, 1);
|
||||||
|
|||||||
@@ -348,6 +348,8 @@ public class CachedPlayer
|
|||||||
_dalamudUtil.FrameworkUpdate -= DalamudUtilOnFrameworkUpdate;
|
_dalamudUtil.FrameworkUpdate -= DalamudUtilOnFrameworkUpdate;
|
||||||
_ipcManager.PenumbraRedrawEvent -= IpcManagerOnPenumbraRedrawEvent;
|
_ipcManager.PenumbraRedrawEvent -= IpcManagerOnPenumbraRedrawEvent;
|
||||||
_ipcManager.PenumbraRemoveTemporaryCollection(PlayerName);
|
_ipcManager.PenumbraRemoveTemporaryCollection(PlayerName);
|
||||||
|
_downloadCancellationTokenSource?.Cancel();
|
||||||
|
_downloadCancellationTokenSource?.Dispose();
|
||||||
if (PlayerCharacter != null && PlayerCharacter.IsValid())
|
if (PlayerCharacter != null && PlayerCharacter.IsValid())
|
||||||
{
|
{
|
||||||
foreach (var item in _cachedData.FileReplacements)
|
foreach (var item in _cachedData.FileReplacements)
|
||||||
@@ -355,9 +357,6 @@ public class CachedPlayer
|
|||||||
RevertCustomizationData(item.Key);
|
RevertCustomizationData(item.Key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_downloadCancellationTokenSource?.Cancel();
|
|
||||||
_downloadCancellationTokenSource?.Dispose();
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ namespace MareSynchronos.Managers
|
|||||||
foreach (var deletion in fileCachesToDelete)
|
foreach (var deletion in fileCachesToDelete)
|
||||||
{
|
{
|
||||||
var entries = db.FileCaches.Where(f =>
|
var entries = db.FileCaches.Where(f =>
|
||||||
f.Hash == deletion.Hash && f.Filepath.ToLowerInvariant() == deletion.Filepath.ToLowerInvariant());
|
f.Hash == deletion.Hash && f.Filepath.ToLower() == deletion.Filepath.ToLower());
|
||||||
if (await entries.AnyAsync(ct))
|
if (await entries.AnyAsync(ct))
|
||||||
{
|
{
|
||||||
Logger.Verbose("Removing file from DB: " + deletion.Filepath);
|
Logger.Verbose("Removing file from DB: " + deletion.Filepath);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace MareSynchronos.Managers
|
|||||||
{
|
{
|
||||||
foreach (var obj in playerRelatedObjects)
|
foreach (var obj in playerRelatedObjects)
|
||||||
{
|
{
|
||||||
if (obj.DrawObjectAddress == drawObj && !obj.HasUnprocessedUpdate)
|
if (obj.Address == drawObj && !obj.HasUnprocessedUpdate)
|
||||||
{
|
{
|
||||||
obj.HasUnprocessedUpdate = true;
|
obj.HasUnprocessedUpdate = true;
|
||||||
OnPlayerOrAttachedObjectsChanged();
|
OnPlayerOrAttachedObjectsChanged();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace MareSynchronos.Managers
|
|||||||
{
|
{
|
||||||
foreach (var item in TransientResources.ToList())
|
foreach (var item in TransientResources.ToList())
|
||||||
{
|
{
|
||||||
if (!dalamudUtil.IsDrawObjectPresent(item.Key))
|
if (!dalamudUtil.IsGameObjectPresent(item.Key))
|
||||||
{
|
{
|
||||||
Logger.Debug("Object not present anymore: " + item.Key);
|
Logger.Debug("Object not present anymore: " + item.Key);
|
||||||
TransientResources.Remove(item.Key);
|
TransientResources.Remove(item.Key);
|
||||||
@@ -37,9 +37,9 @@ namespace MareSynchronos.Managers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> GetTransientResources(IntPtr drawObject)
|
public List<string> GetTransientResources(IntPtr gameObject)
|
||||||
{
|
{
|
||||||
if (TransientResources.TryGetValue(drawObject, out var result))
|
if (TransientResources.TryGetValue(gameObject, out var result))
|
||||||
{
|
{
|
||||||
return result.ToList();
|
return result.ToList();
|
||||||
}
|
}
|
||||||
@@ -47,11 +47,11 @@ namespace MareSynchronos.Managers
|
|||||||
return new List<string>();
|
return new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Manager_PenumbraResourceLoadEvent(IntPtr drawObject, string gamePath, string filePath)
|
private void Manager_PenumbraResourceLoadEvent(IntPtr gameObject, string gamePath, string filePath)
|
||||||
{
|
{
|
||||||
if (!TransientResources.ContainsKey(drawObject))
|
if (!TransientResources.ContainsKey(gameObject))
|
||||||
{
|
{
|
||||||
TransientResources[drawObject] = new();
|
TransientResources[gameObject] = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filePath.StartsWith("|"))
|
if (filePath.StartsWith("|"))
|
||||||
@@ -61,11 +61,11 @@ namespace MareSynchronos.Managers
|
|||||||
|
|
||||||
var newPath = filePath.ToLowerInvariant().Replace("\\", "/");
|
var newPath = filePath.ToLowerInvariant().Replace("\\", "/");
|
||||||
|
|
||||||
if (filePath != gamePath && !TransientResources[drawObject].Contains(newPath))
|
if (filePath != gamePath && !TransientResources[gameObject].Contains(newPath))
|
||||||
{
|
{
|
||||||
TransientResources[drawObject].Add(newPath);
|
TransientResources[gameObject].Add(newPath);
|
||||||
Logger.Debug($"Adding {filePath.ToLowerInvariant().Replace("\\", "/")} for {drawObject}");
|
Logger.Debug($"Adding {filePath.ToLowerInvariant().Replace("\\", "/")} for {gameObject}");
|
||||||
TransientResourceLoaded?.Invoke(drawObject);
|
TransientResourceLoaded?.Invoke(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors></Authors>
|
<Authors></Authors>
|
||||||
<Company></Company>
|
<Company></Company>
|
||||||
<Version>0.3.10</Version>
|
<Version>0.4.0</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,18 @@ 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 => getAddress.Invoke();
|
private IntPtr CurrentAddress
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return getAddress.Invoke();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{ return IntPtr.Zero; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public PlayerRelatedObject(ObjectKind objectKind, IntPtr address, IntPtr drawObjectAddress, Func<IntPtr> getAddress)
|
public PlayerRelatedObject(ObjectKind objectKind, IntPtr address, IntPtr drawObjectAddress, Func<IntPtr> getAddress)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ namespace MareSynchronos.Utils
|
|||||||
public event LogOut? LogOut;
|
public event LogOut? LogOut;
|
||||||
public event FrameworkUpdate? FrameworkUpdate;
|
public event FrameworkUpdate? FrameworkUpdate;
|
||||||
|
|
||||||
public unsafe bool IsDrawObjectPresent(IntPtr key)
|
public unsafe bool IsGameObjectPresent(IntPtr key)
|
||||||
{
|
{
|
||||||
foreach (var obj in _objectTable)
|
foreach (var obj in _objectTable)
|
||||||
{
|
{
|
||||||
if ((IntPtr)((GameObject*)obj.Address)->GetDrawObject() == key)
|
if (obj.Address == key)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -105,7 +105,7 @@ namespace MareSynchronos.Utils
|
|||||||
|
|
||||||
public string PlayerName => _clientState.LocalPlayer?.Name.ToString() ?? "--";
|
public string PlayerName => _clientState.LocalPlayer?.Name.ToString() ?? "--";
|
||||||
|
|
||||||
public IntPtr PlayerPointer => _clientState.LocalPlayer!.Address;
|
public IntPtr PlayerPointer => _clientState.LocalPlayer?.Address ?? IntPtr.Zero;
|
||||||
|
|
||||||
public PlayerCharacter PlayerCharacter => _clientState.LocalPlayer!;
|
public PlayerCharacter PlayerCharacter => _clientState.LocalPlayer!;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user