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..8638344 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
@@ -411,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.OnPullTriggerRandomBehavior);
+
+ if (pullTriggerBehavior)
+ {
+ SendCommand(programGroup, GetDuration(programGroup), GetIntensity(programGroup), ControlType.Shock, false);
+
+ return;
+ }
+
var releaseAction = _moduleConfig.Config.GetGroupOrGlobal(programGroup,
behaviourConfig => behaviourConfig.WhenBoneReleased,
group => group.OverrideBoneReleasedAction);
@@ -421,6 +433,9 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed)
return;
}
+ _logger.LogDebug("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name);
+ _logger.LogDebug("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue);
+
var physBoneIntensity = GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue);
programGroup.LastStretchValue = 0;
diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/ConfigTab.razor
index b4035bb..1cde69c 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%
+
+
+
+