@@ -33,6 +33,14 @@ public class ControllerInteraction : MonoBehaviour
33
33
private Dictionary < int , Transform > handJoints = new Dictionary < int , Transform > ( ) ;
34
34
public GameObject inputProfileHandModelParent ;
35
35
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
+
36
44
private Vector3 currentVelocity ;
37
45
private Vector3 previousPos ;
38
46
@@ -55,6 +63,7 @@ private void Awake()
55
63
attachJoint = GetComponent < FixedJoint > ( ) ;
56
64
hasAnimator = animator != null ;
57
65
controller = gameObject . GetComponent < WebXRController > ( ) ;
66
+ pickupButtons = defaultPickupButtons ;
58
67
#if WEBXR_INPUT_PROFILES
59
68
if ( inputProfileObject != null )
60
69
{
@@ -113,17 +122,21 @@ private void Update()
113
122
float normalizedTime = controller . GetButton ( WebXRController . ButtonTypes . ButtonA ) ? 1 :
114
123
Mathf . Max ( controller . GetAxis ( WebXRController . AxisTypes . Trigger ) ,
115
124
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 )
120
131
{
121
132
Pickup ( ) ;
122
133
}
123
134
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 )
127
140
{
128
141
Drop ( ) ;
129
142
}
@@ -563,5 +576,10 @@ private Rigidbody GetNearestRigidBody()
563
576
564
577
return nearestRigidBody ;
565
578
}
579
+
580
+ public void SetPickupButtons ( params WebXRController . ButtonTypes [ ] pickupButtons )
581
+ {
582
+ this . pickupButtons = pickupButtons != null ? pickupButtons : defaultPickupButtons ;
583
+ }
566
584
}
567
585
}
0 commit comments