From 79914005af26f5547c6df3b1f092153aacae0e1f Mon Sep 17 00:00:00 2001 From: kekkels Date: Sat, 26 Sep 2026 17:00:55 -0400 Subject: [PATCH] trigger _Any_Active when shock is sent from VRChat --- ShockOsc/Services/OscHandler.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ShockOsc/Services/OscHandler.cs b/ShockOsc/Services/OscHandler.cs index 64ae828..100d453 100644 --- a/ShockOsc/Services/OscHandler.cs +++ b/ShockOsc/Services/OscHandler.cs @@ -77,8 +77,10 @@ public async Task SendParams() { // TODO: maybe force resend on avatar change - await UpdateAnyActive(); + var (anyActiveRemote, maxIntensityRemote) = GetRemoteAnyActive(); + var anyActiveLocal = false; + var maxIntensityLocal = 0f; var anyCooldown = false; var anyCooldownPercentage = 0f; @@ -111,15 +113,23 @@ public async Task SendParams() await shocker.ParamCooldownPercentage.SetValue(cooldownPercentage); await shocker.ParamIntensity.SetValue(intensity); + if (isActive) + { + anyActiveLocal = true; + maxIntensityLocal = MathF.Max(maxIntensityLocal, intensity); + } + if (onCoolDown) anyCooldown = true; anyCooldownPercentage = MathF.Max(anyCooldownPercentage, cooldownPercentage); } + await _paramAnyActive.SetValue(anyActiveRemote || anyActiveLocal); + await _paramAnyIntensity.SetValue(MathF.Max(maxIntensityRemote, maxIntensityLocal)); await _paramAnyCooldown.SetValue(anyCooldown); await _paramAnyCooldownPercentage.SetValue(anyCooldownPercentage); } - private async Task UpdateAnyActive() + private (bool AnyActive, float MaxIntensity) GetRemoteAnyActive() { var now = DateTimeOffset.UtcNow; var anyActive = false; @@ -137,8 +147,7 @@ private async Task UpdateAnyActive() maxIntensity = MathF.Max(maxIntensity, intensity); } - await _paramAnyActive.SetValue(anyActive); - await _paramAnyIntensity.SetValue(maxIntensity); + return (anyActive, maxIntensity); } public void SetLastControlCommand(LastControlLogEntry controlLogs)