Skip to content

Commit 94f09f1

Browse files
authored
Allow button and toggle interaction via grab (#138)
1 parent 7278338 commit 94f09f1

File tree

2 files changed

+44
-8
lines changed

2 files changed

+44
-8
lines changed

Runtime/Input/InteractionBehaviours/ButtonBehaviour.cs

+22-4
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,36 @@ public class ButtonClickEvent : UnityEvent { }
3434
public ButtonClickEvent Click => click;
3535

3636
/// <inheritdoc/>
37-
protected override void OnSelectEntered(InteractionEventArgs eventArgs)
37+
protected override void OnFirstSelectEntered(InteractionEventArgs eventArgs)
3838
{
39-
if (raiseOnInputDown)
39+
if (raiseOnInputDown && !Interactable.IsGrabbed)
4040
{
4141
Click?.Invoke();
4242
}
4343
}
4444

4545
/// <inheritdoc/>
46-
protected override void OnSelectExited(InteractionExitEventArgs eventArgs)
46+
protected override void OnLastSelectExited(InteractionExitEventArgs eventArgs)
4747
{
48-
if (!raiseOnInputDown)
48+
if (!raiseOnInputDown && !Interactable.IsGrabbed)
49+
{
50+
Click?.Invoke();
51+
}
52+
}
53+
54+
/// <inheritdoc/>
55+
protected override void OnFirstGrabEntered(InteractionEventArgs eventArgs)
56+
{
57+
if (raiseOnInputDown && !Interactable.IsSelected)
58+
{
59+
Click?.Invoke();
60+
}
61+
}
62+
63+
/// <inheritdoc/>
64+
protected override void OnLastGrabExited(InteractionExitEventArgs eventArgs)
65+
{
66+
if (!raiseOnInputDown && !Interactable.IsSelected)
4967
{
5068
Click?.Invoke();
5169
}

Runtime/Input/InteractionBehaviours/ToggleBehaviour.cs

+22-4
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,36 @@ public bool IsOn
6161
public void SetIsOnWithoutNotify(bool isOn) => this.isOn = isOn;
6262

6363
/// <inheritdoc/>
64-
protected override void OnSelectEntered(InteractionEventArgs eventArgs)
64+
protected override void OnFirstSelectEntered(InteractionEventArgs eventArgs)
6565
{
66-
if (raiseOnInputDown)
66+
if (raiseOnInputDown && !Interactable.IsGrabbed)
6767
{
6868
IsOn = !IsOn;
6969
}
7070
}
7171

7272
/// <inheritdoc/>
73-
protected override void OnSelectExited(InteractionExitEventArgs eventArgs)
73+
protected override void OnLastSelectExited(InteractionExitEventArgs eventArgs)
7474
{
75-
if (!raiseOnInputDown)
75+
if (!raiseOnInputDown && !Interactable.IsGrabbed)
76+
{
77+
IsOn = !IsOn;
78+
}
79+
}
80+
81+
/// <inheritdoc/>
82+
protected override void OnFirstGrabEntered(InteractionEventArgs eventArgs)
83+
{
84+
if (raiseOnInputDown && !Interactable.IsSelected)
85+
{
86+
IsOn = !IsOn;
87+
}
88+
}
89+
90+
/// <inheritdoc/>
91+
protected override void OnLastGrabExited(InteractionExitEventArgs eventArgs)
92+
{
93+
if (!raiseOnInputDown && !Interactable.IsSelected)
7694
{
7795
IsOn = !IsOn;
7896
}

0 commit comments

Comments
 (0)