From b7ffa811bfc23a5d1be8d7f9370b42faab8fa6fe Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Sat, 7 May 2022 17:04:52 +1000 Subject: [PATCH] Clean up callback spaghetti when resetting `VirtualPadAnalogStick` --- .../tools/VirtualPads/controls/VirtualPadAnalogStick.cs | 7 ++----- .../VirtualPads/controls/components/AnalogStickPanel.cs | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs index 500969efa1..9777ecc590 100644 --- a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs +++ b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/VirtualPadAnalogStick.cs @@ -129,15 +129,12 @@ namespace BizHawk.Client.EmuHawk public void ClearCallback() { - ManualX.Value = 0; - ManualY.Value = 0; - manualR.Value = 0; - manualTheta.Value = 0; + AnalogStick.Clear(fromCallback: true); + SetNumericsFromAnalog(); _inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.XName, false); _inputManager.StickyXorAdapter.Unset(AnalogStick.XName); _inputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.YName, false); _inputManager.StickyXorAdapter.Unset(AnalogStick.YName); - AnalogStick.HasValue = false; } public void Clear() => AnalogStick.Clear(); diff --git a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs index 8b365c2b40..976ad383aa 100644 --- a/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs +++ b/src/BizHawk.Client.EmuHawk/tools/VirtualPads/controls/components/AnalogStickPanel.cs @@ -257,12 +257,12 @@ namespace BizHawk.Client.EmuHawk Refresh(); } - public void Clear() + public void Clear(bool fromCallback = false) { if (!HasValue && X == 0 && Y == 0) return; X = Y = 0; HasValue = false; - ClearCallback?.Invoke(); + if (!fromCallback) ClearCallback?.Invoke(); Refresh(); }