From d5233d7bd07970bcab212ebe859573241da95f4a Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Mon, 13 Jan 2025 22:10:27 +0100 Subject: [PATCH] add toggle to keep nearby poses active constantly --- .../MareConfiguration/Configurations/CharaDataConfig.cs | 1 + .../Services/CharaData/CharaDataNearbyManager.cs | 6 +++--- MareSynchronos/UI/CharaDataHubUi.NearbyPoses.cs | 8 ++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/MareSynchronos/MareConfiguration/Configurations/CharaDataConfig.cs b/MareSynchronos/MareConfiguration/Configurations/CharaDataConfig.cs index 6a99c1d..e773b37 100644 --- a/MareSynchronos/MareConfiguration/Configurations/CharaDataConfig.cs +++ b/MareSynchronos/MareConfiguration/Configurations/CharaDataConfig.cs @@ -15,4 +15,5 @@ public class CharaDataConfig : IMareConfiguration public int NearbyDistanceFilter { get; set; } = 100; public bool NearbyShowOwnData { get; set; } = false; public bool ShowHelpTexts { get; set; } = true; + public bool NearbyShowAlways { get; set; } = false; } \ No newline at end of file diff --git a/MareSynchronos/Services/CharaData/CharaDataNearbyManager.cs b/MareSynchronos/Services/CharaData/CharaDataNearbyManager.cs index 44a00b5..a5407fa 100644 --- a/MareSynchronos/Services/CharaData/CharaDataNearbyManager.cs +++ b/MareSynchronos/Services/CharaData/CharaDataNearbyManager.cs @@ -227,7 +227,7 @@ public sealed class CharaDataNearbyManager : DisposableMediatorSubscriberBase } } - if (_charaDataConfigService.Current.NearbyDrawWisps && !_dalamudUtilService.IsInGpose) + if (_charaDataConfigService.Current.NearbyDrawWisps && !_dalamudUtilService.IsInGpose && !_dalamudUtilService.IsInCombatOrPerforming) await _dalamudUtilService.RunOnFrameworkThread(() => ManageWispsNearby(previousPoses)).ConfigureAwait(false); } @@ -235,7 +235,7 @@ public sealed class CharaDataNearbyManager : DisposableMediatorSubscriberBase { if (_lastExecutionTime.AddSeconds(0.5) > DateTime.UtcNow) return; _lastExecutionTime = DateTime.UtcNow; - if (!ComputeNearbyData) + if (!ComputeNearbyData && !_charaDataConfigService.Current.NearbyShowAlways) { if (_nearbyData.Any()) _nearbyData.Clear(); @@ -244,7 +244,7 @@ public sealed class CharaDataNearbyManager : DisposableMediatorSubscriberBase return; } - if (!_charaDataConfigService.Current.NearbyDrawWisps || _dalamudUtilService.IsInGpose) + if (!_charaDataConfigService.Current.NearbyDrawWisps || _dalamudUtilService.IsInGpose || _dalamudUtilService.IsInCombatOrPerforming) ClearAllVfx(); var camera = CameraManager.Instance()->CurrentCamera; diff --git a/MareSynchronos/UI/CharaDataHubUi.NearbyPoses.cs b/MareSynchronos/UI/CharaDataHubUi.NearbyPoses.cs index 750fc71..0a78cc3 100644 --- a/MareSynchronos/UI/CharaDataHubUi.NearbyPoses.cs +++ b/MareSynchronos/UI/CharaDataHubUi.NearbyPoses.cs @@ -65,6 +65,14 @@ internal partial class CharaDataHubUi _configService.Save(); } _uiSharedService.DrawHelpText("This setting allows you to change the maximum distance in which poses will be shown. Set it to the maximum if you want to see all poses on the current map."); + bool alwaysShow = _configService.Current.NearbyShowAlways; + if (ImGui.Checkbox("Keep active outside Poses Nearby tab", ref alwaysShow)) + { + _configService.Current.NearbyShowAlways = alwaysShow; + _configService.Save(); + } + _uiSharedService.DrawHelpText("This will allow Mare to continue the calculation of position of wisps etc. active outside of the 'Poses Nearby' tab." + UiSharedService.TooltipSeparator + + "Note: The wisps etc. will disappear during combat and performing."); }); if (!_uiSharedService.IsInGpose)