Skip to content

Commit 76d6228

Browse files
committed
Fix control type not being used with random physbone trigger
1 parent 6e9785f commit 76d6228

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

ShockOsc/Config/ShockOscConfig.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public sealed class ShockOscConfig
1111

1212
public T GetGroupOrGlobal<T>(ProgramGroup group, Func<SharedBehaviourConfig, T> selector, Func<Group, bool> groupOverrideSelector)
1313
{
14-
if(group.ConfigGroup == null) return selector(Behaviour);
14+
if(group.ConfigGroup is null) return selector(Behaviour);
1515

1616
var groupOverride = groupOverrideSelector(group.ConfigGroup);
1717
SharedBehaviourConfig config = groupOverride ? group.ConfigGroup : Behaviour;

ShockOsc/Services/ShockOsc.cs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -411,17 +411,6 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed)
411411

412412
// Check all preconditions, maybe send stop command here aswell?
413413
if (!await HandlePrecondition(CheckAndSetAllPreconditions(programGroup), programGroup)) return;
414-
415-
var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup,
416-
behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior,
417-
group => group.OnPullTriggerRandomBehavior);
418-
419-
if (pullTriggerBehavior)
420-
{
421-
SendCommand(programGroup, GetDuration(programGroup), GetIntensity(programGroup), ControlType.Shock, false);
422-
423-
return;
424-
}
425414

426415
var releaseAction = _moduleConfig.Config.GetGroupOrGlobal(programGroup,
427416
behaviourConfig => behaviourConfig.WhenBoneReleased,
@@ -436,11 +425,21 @@ private async Task PhysboneHandling(ProgramGroup programGroup, bool isGrabbed)
436425
_logger.LogDebug("Physbone released, sending {Action} to group {Group}", releaseAction, programGroup.Name);
437426
_logger.LogDebug("Physbone stretch value: {StretchValue}", programGroup.LastStretchValue);
438427

439-
var physBoneIntensity = GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue);
428+
// Random intensity for physbone release
429+
var pullTriggerBehavior = _moduleConfig.Config.GetGroupOrGlobal(programGroup,
430+
behaviourConfig => behaviourConfig.OnPullTriggerRandomBehavior,
431+
group => group.OnPullTriggerRandomBehavior);
432+
433+
var isRandomMode = _moduleConfig.Config.GetGroupOrGlobal(programGroup,
434+
behaviourConfig => behaviourConfig.RandomIntensity,
435+
group => group.RandomIntensity);
436+
437+
var physBoneIntensity = pullTriggerBehavior && isRandomMode
438+
? GetIntensity(programGroup)
439+
: GetPhysbonePullIntensity(programGroup, programGroup.LastStretchValue);
440440
programGroup.LastStretchValue = 0;
441441

442-
SendCommand(programGroup, GetDuration(programGroup), physBoneIntensity, releaseAction.ToControlType(),
443-
true);
442+
SendCommand(programGroup, GetDuration(programGroup), physBoneIntensity, releaseAction.ToControlType(), true);
444443

445444
return;
446445
}

0 commit comments

Comments
 (0)