From 4c11600eb3632d1150cec5c9f2b4688f134f7cac Mon Sep 17 00:00:00 2001 From: NekoTiki <17910933+nekotiki@users.noreply.github.com> Date: Fri, 1 Aug 2025 23:24:31 +0200 Subject: [PATCH 1/7] feat: Add option for random behavior on pull trigger Signed-off-by: NekoTiki <17910933+nekotiki@users.noreply.github.com> --- ShockOsc/Config/SharedBehaviourConfig.cs | 1 + ShockOsc/Services/ShockOsc.cs | 12 ++++++++++++ ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor | 10 ++++++++++ ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor | 10 ++++++++++ 4 files changed, 33 insertions(+) diff --git a/ShockOsc/Config/SharedBehaviourConfig.cs b/ShockOsc/Config/SharedBehaviourConfig.cs index cf9cd18..8b4ecff 100644 --- a/ShockOsc/Config/SharedBehaviourConfig.cs +++ b/ShockOsc/Config/SharedBehaviourConfig.cs @@ -16,4 +16,5 @@ public class SharedBehaviourConfig public BoneAction WhenBoneReleased { get; set; } = BoneAction.Shock; public uint? BoneHeldDurationLimit { get; set; } = null; + public bool OnPullTriggerRandomBehavior { get; set; } } \ No newline at end of file diff --git a/ShockOsc/Services/ShockOsc.cs b/ShockOsc/Services/ShockOsc.cs index 122e0f8..837e6a7 100644 --- a/ShockOsc/Services/ShockOsc.cs +++ b/ShockOsc/Services/ShockOsc.cs @@ -14,6 +14,7 @@ using OpenShock.ShockOSC.Utils; using OscQueryLibrary; using OscQueryLibrary.Utils; +using Serilog; #pragma warning disable CS4014 @@ -404,6 +405,17 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) { programGroup.TriggerMethod = TriggerMethod.None; + var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup, + behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior, + group => group.OverrideIntensity); + + if (pullTriggerBehavior) + { + SendCommand(programGroup, GetDuration(programGroup), GetIntensity(programGroup), ControlType.Shock, false); + + return; + } + // When the stretch value is not 0, we send the action if (programGroup.LastStretchValue != 0) { diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor index b4035bb..26f80d2 100644 --- a/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor +++ b/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor @@ -68,6 +68,16 @@ OnSaveAction="_ => OnSettingsValueChange()"> Max Intensity: @ModuleConfig.Config.Behaviour.IntensityRange.Max% + +
+ +
+ + + + + +
} diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor index b0a183d..e1b135c 100644 --- a/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor +++ b/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor @@ -228,6 +228,16 @@ OnSaveAction="_ => ModuleConfig.SaveDeferred()"> Max Intensity: @CurrentGroup.IntensityRange.Max% + +
+ +
+ + + + + +
} From d6f6c5d5e28e5a2d4c41044f9ac6d528c464fbd1 Mon Sep 17 00:00:00 2001 From: NekoTiki <17910933+NekoTiki@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:39:37 +0200 Subject: [PATCH 2/7] fix: pull trigger random behavior was skipping the check for the Preconditions being met Signed-off-by: NekoTiki <17910933+NekoTiki@users.noreply.github.com> --- ShockOsc/Services/ShockOsc.cs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/ShockOsc/Services/ShockOsc.cs b/ShockOsc/Services/ShockOsc.cs index 837e6a7..c8c5ebe 100644 --- a/ShockOsc/Services/ShockOsc.cs +++ b/ShockOsc/Services/ShockOsc.cs @@ -405,17 +405,6 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) { programGroup.TriggerMethod = TriggerMethod.None; - var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup, - behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior, - group => group.OverrideIntensity); - - if (pullTriggerBehavior) - { - SendCommand(programGroup, GetDuration(programGroup), GetIntensity(programGroup), ControlType.Shock, false); - - return; - } - // When the stretch value is not 0, we send the action if (programGroup.LastStretchValue != 0) { @@ -423,6 +412,17 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) // Check all preconditions, maybe send stop command here aswell? if (!await HandlePrecondition(CheckAndSetAllPreconditions(programGroup), programGroup)) return; + var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup, + behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior, + group => group.OverrideIntensity); + + if (pullTriggerBehavior) + { + SendCommand(programGroup, GetDuration(programGroup), GetIntensity(programGroup), ControlType.Shock, false); + + return; + } + var releaseAction = _moduleConfig.Config.GetGroupOrGlobal(programGroup, behaviourConfig => behaviourConfig.WhenBoneReleased, group => group.OverrideBoneReleasedAction); @@ -433,6 +433,9 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) return; } + _logger.LogInformation("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name); + _logger.LogInformation("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue); + var physBoneIntensity = GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue); programGroup.LastStretchValue = 0; From 6fb06760fd3feabdb467f073ad705537c9155de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=20=E2=99=A5?= Date: Mon, 4 Aug 2025 01:32:17 +0200 Subject: [PATCH 3/7] Update ShockOsc/Services/ShockOsc.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ShockOsc/Services/ShockOsc.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShockOsc/Services/ShockOsc.cs b/ShockOsc/Services/ShockOsc.cs index c8c5ebe..77f04cd 100644 --- a/ShockOsc/Services/ShockOsc.cs +++ b/ShockOsc/Services/ShockOsc.cs @@ -414,7 +414,7 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup, behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior, - group => group.OverrideIntensity); + group => group.OnPullTriggerRandomBehavior); if (pullTriggerBehavior) { From adca85dd9327487199165c3f47c2b76b5066ebc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=20=E2=99=A5?= Date: Mon, 4 Aug 2025 01:32:28 +0200 Subject: [PATCH 4/7] Update ShockOsc/Services/ShockOsc.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ShockOsc/Services/ShockOsc.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShockOsc/Services/ShockOsc.cs b/ShockOsc/Services/ShockOsc.cs index 77f04cd..ec419bd 100644 --- a/ShockOsc/Services/ShockOsc.cs +++ b/ShockOsc/Services/ShockOsc.cs @@ -433,7 +433,7 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) return; } - _logger.LogInformation("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name); + _logger.LogDebug("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name); _logger.LogInformation("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue); var physBoneIntensity = GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue); From bbce08f49a58e5d4ad76e9f3b94cd19d3df537e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=20=E2=99=A5?= Date: Mon, 4 Aug 2025 01:32:41 +0200 Subject: [PATCH 5/7] Update ShockOsc/Services/ShockOsc.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ShockOsc/Services/ShockOsc.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShockOsc/Services/ShockOsc.cs b/ShockOsc/Services/ShockOsc.cs index ec419bd..8638344 100644 --- a/ShockOsc/Services/ShockOsc.cs +++ b/ShockOsc/Services/ShockOsc.cs @@ -434,7 +434,7 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed) } _logger.LogDebug("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name); - _logger.LogInformation("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue); + _logger.LogDebug("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue); var physBoneIntensity = GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue); programGroup.LastStretchValue = 0; From 120b5c1245b7b2bdca1d9499ac46f15b8eb4aed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=20=E2=99=A5?= Date: Mon, 4 Aug 2025 01:32:50 +0200 Subject: [PATCH 6/7] Update ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor index 26f80d2..1cde69c 100644 --- a/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor +++ b/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor @@ -74,7 +74,7 @@
- +
From 708edc9ee33a2e4b9bd10800ee4e7ba6779cf4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=20=E2=99=A5?= Date: Mon, 4 Aug 2025 01:33:07 +0200 Subject: [PATCH 7/7] Update ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor index e1b135c..27f2713 100644 --- a/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor +++ b/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor @@ -234,7 +234,7 @@
- +