MCDO fixes

fix ipc probably

add individual syncshells and shit

don't show shared data from paused people

change text

fix reverting

Use InputText/Combo hybrids for MCDO ACLs (#81)

* Use InputText/Combo hybrids for MCDO ACLs

* Hybrid combo factoring, filtering, ordering, caching

fix selecting latest created data on creation

rename close to direct pairs

add toggle to keep nearby poses active constantly

fix gpose hanging

fix potential cancelaltion on updateshareddata
This commit is contained in:
Stanley Dimant
2025-01-12 02:55:22 +01:00
committed by Loporrit
parent 30caedbf3a
commit 8f9528879d
16 changed files with 280 additions and 114 deletions

View File

@@ -8,7 +8,7 @@ using Microsoft.Extensions.Logging;
namespace MareSynchronos.Services;
internal sealed class CharaDataCharacterHandler : DisposableMediatorSubscriberBase
public sealed class CharaDataCharacterHandler : DisposableMediatorSubscriberBase
{
private readonly GameObjectHandlerFactory _gameObjectHandlerFactory;
private readonly DalamudUtilService _dalamudUtilService;
@@ -71,22 +71,8 @@ internal sealed class CharaDataCharacterHandler : DisposableMediatorSubscriberBa
using var handler = await _gameObjectHandlerFactory.Create(ObjectKind.Player,
() => _dalamudUtilService.GetGposeCharacterFromObjectTableByName(name, _dalamudUtilService.IsInGpose)?.Address ?? IntPtr.Zero, false)
.ConfigureAwait(false);
if (handler.Address != IntPtr.Zero)
{
var poseData = string.Empty;
API.Dto.CharaData.WorldData? worldData = null;
if (_dalamudUtilService.IsInGpose && reapplyPose)
{
poseData = await _ipcManager.Brio.GetPoseAsync(handler.Address).ConfigureAwait(false);
worldData = await _ipcManager.Brio.GetTransformAsync(handler.Address).ConfigureAwait(false);
}
if (handler.Address != nint.Zero)
await _ipcManager.Penumbra.RedrawAsync(Logger, handler, applicationId, CancellationToken.None).ConfigureAwait(false);
if (_dalamudUtilService.IsInGpose && reapplyPose)
{
await _ipcManager.Brio.SetPoseAsync(handler.Address, poseData ?? "{}").ConfigureAwait(false);
await _ipcManager.Brio.ApplyTransformAsync(handler.Address, worldData!.Value).ConfigureAwait(false);
}
}
}
public async Task<bool> RevertHandledChara(string name, bool reapplyPose = true)