fix some random texture loading issues I don't understand, fix loading issues
This commit is contained in:
@@ -39,6 +39,7 @@ public class CachedPlayer
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isDisposed = false;
|
||||
private CancellationTokenSource? _downloadCancellationTokenSource;
|
||||
|
||||
private string _lastGlamourerData = string.Empty;
|
||||
@@ -172,7 +173,8 @@ public class CachedPlayer
|
||||
|
||||
public void DisposePlayer()
|
||||
{
|
||||
Logger.Debug("Disposing " + PlayerNameHash);
|
||||
Logger.Debug("Disposing " + PlayerName + " (" + PlayerNameHash + ")");
|
||||
if (_isDisposed) return;
|
||||
if (string.IsNullOrEmpty(PlayerName)) return;
|
||||
try
|
||||
{
|
||||
@@ -199,6 +201,7 @@ public class CachedPlayer
|
||||
PlayerName = string.Empty;
|
||||
PlayerCharacter = null;
|
||||
IsVisible = false;
|
||||
_isDisposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,6 +215,7 @@ public class CachedPlayer
|
||||
_ipcManager.PenumbraRedrawEvent += IpcManagerOnPenumbraRedrawEvent;
|
||||
_originalGlamourerData = _ipcManager.GlamourerGetCharacterCustomization(PlayerCharacter);
|
||||
_currentCharacterEquipment = new CharacterEquipment(PlayerCharacter);
|
||||
_isDisposed = false;
|
||||
if (cache != null)
|
||||
{
|
||||
ApplyCharacterData(cache);
|
||||
|
||||
@@ -7,6 +7,7 @@ using MareSynchronos.API;
|
||||
using MareSynchronos.Utils;
|
||||
using MareSynchronos.WebAPI;
|
||||
using MareSynchronos.WebAPI.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MareSynchronos.Managers;
|
||||
|
||||
@@ -70,7 +71,7 @@ public class OnlinePlayerManager : IDisposable
|
||||
|
||||
private void PlayerManagerOnPlayerHasChanged(CharacterCacheDto characterCache)
|
||||
{
|
||||
_ = _apiController.PushCharacterData(characterCache, OnlineVisiblePlayerHashes);
|
||||
PushCharacterData(OnlineVisiblePlayerHashes);
|
||||
}
|
||||
|
||||
private void ApiControllerOnConnected(object? sender, EventArgs e)
|
||||
@@ -215,16 +216,22 @@ public class OnlinePlayerManager : IDisposable
|
||||
var newlyVisiblePlayers = _onlineCachedPlayers
|
||||
.Where(p => p.PlayerCharacter != null && p.IsVisible && !p.WasVisible).Select(p => p.PlayerNameHash)
|
||||
.ToList();
|
||||
if (newlyVisiblePlayers.Any() && _playerManager.LastSentCharacterData != null)
|
||||
PushCharacterData(newlyVisiblePlayers);
|
||||
|
||||
_lastPlayerObjectCheck = DateTime.Now;
|
||||
}
|
||||
|
||||
private void PushCharacterData(List<string> visiblePlayers)
|
||||
{
|
||||
if (visiblePlayers.Any() && _playerManager.LastSentCharacterData != null)
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
Logger.Verbose(JsonConvert.SerializeObject(_playerManager.LastSentCharacterData!.ToCharacterCacheDto(), Formatting.Indented));
|
||||
await _apiController.PushCharacterData(_playerManager.LastSentCharacterData.ToCharacterCacheDto(),
|
||||
newlyVisiblePlayers);
|
||||
visiblePlayers);
|
||||
});
|
||||
}
|
||||
|
||||
_lastPlayerObjectCheck = DateTime.Now;
|
||||
}
|
||||
|
||||
private CachedPlayer CreateCachedPlayer(string hashedName)
|
||||
|
||||
Reference in New Issue
Block a user