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% + +
+ +
+ + + + + +
} diff --git a/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor b/ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor index b0a183d..27f2713 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% + +
+ +
+ + + + + +
}