Skip to content

Commit 933d8e3

Browse files
author
ChengNan Yang
committed
Add pinch ray API and update pinched threshold value
* Pinch ray to use origin and direction values from engine * Update pinched threshold value to >= 0.5
1 parent de83d2b commit 933d8e3

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

Assets/HTC.UnityPlugin/VRModule/Submodules/WaveHandTrackingSubmodule.cs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void Fetch()
3939
}
4040

4141
private DeviceFeature deviceFeature;
42-
private TrackingActivator trackingActivator = TrackingActivator.Default;
42+
private static TrackingActivator trackingActivator = TrackingActivator.Default;
4343
private GestureActivator gestureActivator = GestureActivator.Default;
4444
private uint leftDeviceIndex = VRModule.INVALID_DEVICE_INDEX;
4545
private uint rightDeviceIndex = VRModule.INVALID_DEVICE_INDEX;
@@ -186,6 +186,40 @@ protected override void OnUpdateDeviceInput()
186186

187187
public override uint GetRightHandedIndex() { return rightDeviceIndex; }
188188

189+
public static bool TryGetLeftPinchRay(out Vector3 origin, out Vector3 direction)
190+
{
191+
if (!trackingActivator.isLeftValid)
192+
{
193+
origin = Vector3.zero;
194+
direction = Vector3.zero;
195+
196+
return false;
197+
}
198+
199+
var pinch = trackingActivator.getLeftPinchData;
200+
Coordinate.GetVectorFromGL(pinch.pinch.origin, out origin);
201+
Coordinate.GetVectorFromGL(pinch.pinch.direction, out direction);
202+
203+
return true;
204+
}
205+
206+
public static bool TryGetRightPinchRay(out Vector3 origin, out Vector3 direction)
207+
{
208+
if (!trackingActivator.isRightValid)
209+
{
210+
origin = Vector3.zero;
211+
direction = Vector3.zero;
212+
213+
return false;
214+
}
215+
216+
var pinch = trackingActivator.getRightPinchData;
217+
Coordinate.GetVectorFromGL(pinch.pinch.origin, out origin);
218+
Coordinate.GetVectorFromGL(pinch.pinch.direction, out direction);
219+
220+
return true;
221+
}
222+
189223
private enum FeatureActivity
190224
{
191225
Stopped,
@@ -462,6 +496,10 @@ public bool TryFetchData(WVR_PoseOriginModel originModel)
462496

463497
public bool isRightValid { get { return trackingData.right.isValidPose; } }
464498

499+
public WVR_HandPoseState_t getLeftPinchData { get { return pinchData.left; } }
500+
501+
public WVR_HandPoseState_t getRightPinchData { get { return pinchData.right; } }
502+
465503
public void UpdateJoints(IVRModuleDeviceStateRW state, bool isLeft)
466504
{
467505
var data = isLeft ? trackingData.left : trackingData.right;
@@ -482,7 +520,7 @@ public void UpdateJoints(IVRModuleDeviceStateRW state, bool isLeft)
482520
public void UpdateDeviceInput(IVRModuleDeviceStateRW state, bool isLeft)
483521
{
484522
var pinch = isLeft ? pinchData.left : pinchData.right;
485-
var pinched = pinch.pinch.strength >= 0.95f;
523+
var pinched = pinch.pinch.strength >= 0.5f;
486524

487525
state.SetButtonPress(VRModuleRawButton.GestureIndexPinch, pinched);
488526
state.SetButtonTouch(VRModuleRawButton.GestureIndexPinch, pinched);

0 commit comments

Comments
 (0)