adjustments for animation/penumbra update

This commit is contained in:
Stanley Dimant
2022-09-03 17:42:59 +02:00
parent 8dc4dd26e2
commit 8d6b7346ec
8 changed files with 34 additions and 24 deletions

View File

@@ -266,7 +266,7 @@ public class CharacterDataFactory
foreach (var item in previousData.FileReplacements[objectKind])
{
transientResourceManager.RemoveTransientResource((IntPtr)human, item);
transientResourceManager.RemoveTransientResource(charaPointer, item);
}
if (objectKind == ObjectKind.Player)
@@ -281,7 +281,7 @@ public class CharacterDataFactory
foreach (var item in previousData.FileReplacements[objectKind])
{
transientResourceManager.RemoveTransientResource((IntPtr)weaponObject, item);
transientResourceManager.RemoveTransientResource(charaPointer, item);
}
foreach (var item in transientResourceManager.GetTransientResources((IntPtr)weaponObject))
@@ -329,11 +329,11 @@ public class CharacterDataFactory
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);
AddReplacement(item, objectKind, previousData, 1);

View File

@@ -348,6 +348,8 @@ public class CachedPlayer
_dalamudUtil.FrameworkUpdate -= DalamudUtilOnFrameworkUpdate;
_ipcManager.PenumbraRedrawEvent -= IpcManagerOnPenumbraRedrawEvent;
_ipcManager.PenumbraRemoveTemporaryCollection(PlayerName);
_downloadCancellationTokenSource?.Cancel();
_downloadCancellationTokenSource?.Dispose();
if (PlayerCharacter != null && PlayerCharacter.IsValid())
{
foreach (var item in _cachedData.FileReplacements)
@@ -355,9 +357,6 @@ public class CachedPlayer
RevertCustomizationData(item.Key);
}
}
_downloadCancellationTokenSource?.Cancel();
_downloadCancellationTokenSource?.Dispose();
}
catch (Exception ex)
{

View File

@@ -316,7 +316,7 @@ namespace MareSynchronos.Managers
foreach (var deletion in fileCachesToDelete)
{
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))
{
Logger.Verbose("Removing file from DB: " + deletion.Filepath);

View File

@@ -65,7 +65,7 @@ namespace MareSynchronos.Managers
{
foreach (var obj in playerRelatedObjects)
{
if (obj.DrawObjectAddress == drawObj && !obj.HasUnprocessedUpdate)
if (obj.Address == drawObj && !obj.HasUnprocessedUpdate)
{
obj.HasUnprocessedUpdate = true;
OnPlayerOrAttachedObjectsChanged();

View File

@@ -29,7 +29,7 @@ namespace MareSynchronos.Managers
{
foreach (var item in TransientResources.ToList())
{
if (!dalamudUtil.IsDrawObjectPresent(item.Key))
if (!dalamudUtil.IsGameObjectPresent(item.Key))
{
Logger.Debug("Object not present anymore: " + 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();
}
@@ -47,11 +47,11 @@ namespace MareSynchronos.Managers
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("|"))
@@ -61,11 +61,11 @@ namespace MareSynchronos.Managers
var newPath = filePath.ToLowerInvariant().Replace("\\", "/");
if (filePath != gamePath && !TransientResources[drawObject].Contains(newPath))
if (filePath != gamePath && !TransientResources[gameObject].Contains(newPath))
{
TransientResources[drawObject].Add(newPath);
Logger.Debug($"Adding {filePath.ToLowerInvariant().Replace("\\", "/")} for {drawObject}");
TransientResourceLoaded?.Invoke(drawObject);
TransientResources[gameObject].Add(newPath);
Logger.Debug($"Adding {filePath.ToLowerInvariant().Replace("\\", "/")} for {gameObject}");
TransientResourceLoaded?.Invoke(gameObject);
}
}

View File

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

View File

@@ -19,7 +19,18 @@ namespace MareSynchronos.Models
public IntPtr Address { 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)
{

View File

@@ -28,11 +28,11 @@ namespace MareSynchronos.Utils
public event LogOut? LogOut;
public event FrameworkUpdate? FrameworkUpdate;
public unsafe bool IsDrawObjectPresent(IntPtr key)
public unsafe bool IsGameObjectPresent(IntPtr key)
{
foreach (var obj in _objectTable)
{
if ((IntPtr)((GameObject*)obj.Address)->GetDrawObject() == key)
if (obj.Address == key)
{
return true;
}
@@ -105,7 +105,7 @@ namespace MareSynchronos.Utils
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!;