Skip to content

Commit 47bddd6

Browse files
authored
Merge pull request #261 from alex1998ander/master
added pickup button configuration
2 parents 700808d + 4e37b24 commit 47bddd6

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

Packages/webxr-interactions/Runtime/Scripts/ControllerInteraction.cs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ public class ControllerInteraction : MonoBehaviour
3333
private Dictionary<int, Transform> handJoints = new Dictionary<int, Transform>();
3434
public GameObject inputProfileHandModelParent;
3535

36+
[Header("Input Bindings")]
37+
[SerializeField] private WebXRController.ButtonTypes[] defaultPickupButtons = new WebXRController.ButtonTypes[] {
38+
WebXRController.ButtonTypes.Trigger,
39+
WebXRController.ButtonTypes.Grip,
40+
WebXRController.ButtonTypes.ButtonA
41+
};
42+
private WebXRController.ButtonTypes[] pickupButtons;
43+
3644
private Vector3 currentVelocity;
3745
private Vector3 previousPos;
3846

@@ -55,6 +63,7 @@ private void Awake()
5563
attachJoint = GetComponent<FixedJoint>();
5664
hasAnimator = animator != null;
5765
controller = gameObject.GetComponent<WebXRController>();
66+
pickupButtons = defaultPickupButtons;
5867
#if WEBXR_INPUT_PROFILES
5968
if (inputProfileObject != null)
6069
{
@@ -113,17 +122,21 @@ private void Update()
113122
float normalizedTime = controller.GetButton(WebXRController.ButtonTypes.ButtonA) ? 1 :
114123
Mathf.Max(controller.GetAxis(WebXRController.AxisTypes.Trigger),
115124
controller.GetAxis(WebXRController.AxisTypes.Grip));
116-
117-
if (controller.GetButtonDown(WebXRController.ButtonTypes.Trigger)
118-
|| controller.GetButtonDown(WebXRController.ButtonTypes.Grip)
119-
|| controller.GetButtonDown(WebXRController.ButtonTypes.ButtonA))
125+
126+
bool pickup = false;
127+
for (int i = 0; i < pickupButtons.Length; i++) {
128+
pickup = pickup || controller.GetButtonDown(pickupButtons[i]);
129+
}
130+
if (pickup)
120131
{
121132
Pickup();
122133
}
123134

124-
if (controller.GetButtonUp(WebXRController.ButtonTypes.Trigger)
125-
|| controller.GetButtonUp(WebXRController.ButtonTypes.Grip)
126-
|| controller.GetButtonUp(WebXRController.ButtonTypes.ButtonA))
135+
bool drop = false;
136+
for (int i = 0; i < pickupButtons.Length; i++) {
137+
drop = drop || controller.GetButtonUp(pickupButtons[i]);
138+
}
139+
if (drop)
127140
{
128141
Drop();
129142
}
@@ -563,5 +576,10 @@ private Rigidbody GetNearestRigidBody()
563576

564577
return nearestRigidBody;
565578
}
579+
580+
public void SetPickupButtons(params WebXRController.ButtonTypes[] pickupButtons)
581+
{
582+
this.pickupButtons = pickupButtons != null ? pickupButtons : defaultPickupButtons;
583+
}
566584
}
567585
}

0 commit comments

Comments
 (0)