fix some random texture loading issues I don't understand, fix loading issues

This commit is contained in:
Stanley Dimant
2022-07-01 00:16:43 +02:00
parent afbb3eea8e
commit 320b80e3ae
5 changed files with 47 additions and 31 deletions

View File

@@ -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);

View File

@@ -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)