Skip to content

Commit b435d72

Browse files
author
lawwong
committed
Add Wave Hand Tracking Gesture control option
1 parent a2c6d44 commit b435d72

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

Assets/HTC.UnityPlugin/VRModule/Submodules/PartialSettings/WaveHandTrackingSubmoduleSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public partial class VRModule : SingletonBehaviour<VRModule>
1717

1818
public partial class VRModuleSettings : ScriptableObject
1919
{
20-
public const bool ACTIVATE_WAVE_HAND_TRACKING_SUBMODULE_DEFAULT_VALUE = false;
21-
public const bool ENABLE_WAVE_HAND_GESTURE_DEFAULT_VALUE = false;
20+
public const bool ACTIVATE_WAVE_HAND_TRACKING_SUBMODULE_DEFAULT_VALUE = true;
21+
public const bool ENABLE_WAVE_HAND_GESTURE_DEFAULT_VALUE = true;
2222
public const bool ENABLE_WAVE_NATURAL_HAND_DEFAULT_VALUE = false;
2323
public const bool ENABLE_WAVE_ELECTRONIC_HAND_DEFAULT_VALUE = false;
2424
public const bool SHOW_WAVE_ELECTRONIC_HAND_WITH_CONTROLLER = false;

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ private struct DeviceFeature
2222
{
2323
private ulong featuresField;
2424

25-
public bool supportedTracking
25+
public bool supportTracking
2626
{
2727
get { return (featuresField & (ulong)WVR_SupportedFeature.WVR_SupportedFeature_HandTracking) > 0ul; }
2828
}
2929

30-
public bool supportedGesture
30+
public bool supportGesture
3131
{
3232
get { return (featuresField & (ulong)WVR_SupportedFeature.WVR_SupportedFeature_HandGesture) > 0ul; }
3333
}
@@ -57,12 +57,13 @@ protected override void OnActivated()
5757

5858
protected override void OnDeactivated()
5959
{
60-
//GestureInterface.StopGestureDetection();
60+
trackingActivator.SetActive(false);
61+
gestureActivator.SetActive(false);
6162
}
6263

6364
protected override void OnUpdateDeviceConnectionAndPoses()
6465
{
65-
trackingActivator.SetActive(VRModuleSettings.activateWaveHandTrackingSubmodule);
66+
trackingActivator.SetActive(deviceFeature.supportTracking);
6667

6768
if (VRModule.trackingSpaceType == VRModuleTrackingSpaceType.RoomScale)
6869
{
@@ -143,7 +144,7 @@ protected override void OnUpdateDeviceConnectionAndPoses()
143144

144145
protected override void OnUpdateDeviceInput()
145146
{
146-
gestureActivator.SetActive(VRModuleSettings.enableWaveHandGesture);
147+
gestureActivator.SetActive(VRModuleSettings.enableWaveHandGesture && deviceFeature.supportGesture);
147148

148149
gestureActivator.TryFetchData();
149150

@@ -787,11 +788,13 @@ public void UpdateGestureInput(IVRModuleDeviceStateRW state, bool isLeft)
787788
state.SetButtonPress(VRModuleRawButton.GestureIndexUp, gesture == WVR_HandGestureType.WVR_HandGestureType_IndexUp);
788789
state.SetButtonPress(VRModuleRawButton.GestureOk, gesture == WVR_HandGestureType.WVR_HandGestureType_OK);
789790
state.SetButtonPress(VRModuleRawButton.GestureThumbUp, gesture == WVR_HandGestureType.WVR_HandGestureType_ThumbUp);
791+
state.SetButtonPress(VRModuleRawButton.System, gesture == WVR_HandGestureType.WVR_HandGestureType_Inverse);
790792
state.SetButtonTouch(VRModuleRawButton.GestureFist, gesture == WVR_HandGestureType.WVR_HandGestureType_Fist);
791793
state.SetButtonTouch(VRModuleRawButton.GestureFive, gesture == WVR_HandGestureType.WVR_HandGestureType_Five);
792794
state.SetButtonTouch(VRModuleRawButton.GestureIndexUp, gesture == WVR_HandGestureType.WVR_HandGestureType_IndexUp);
793795
state.SetButtonTouch(VRModuleRawButton.GestureOk, gesture == WVR_HandGestureType.WVR_HandGestureType_OK);
794796
state.SetButtonTouch(VRModuleRawButton.GestureThumbUp, gesture == WVR_HandGestureType.WVR_HandGestureType_ThumbUp);
797+
state.SetButtonTouch(VRModuleRawButton.System, gesture == WVR_HandGestureType.WVR_HandGestureType_Inverse);
795798
}
796799

797800
public bool isLeftValid { get { return gestureData.left != WVR_HandGestureType.WVR_HandGestureType_Invalid; } }

Assets/HTC.UnityPlugin/ViveInputUtility/Scripts/Editor/VRPlatformSettings/WaveVRSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,10 @@ public override void OnPreferenceGUI()
324324
{
325325
Wave.XR.BuildCheck.CheckIfHandTrackingEnabled.PerformAction(shouldSupport);
326326
VRModuleSettings.activateWaveHandTrackingSubmodule = shouldSupport;
327+
// can manually disable gesture data fetching by setting enableWaveHandGesture to false if needed
328+
// so far the hardware/runtime will start gesture detaction whenever hand tracking detaction is started,
329+
// disabling enableWaveHandGesture only save some data fetching time, it doesn't stop hardware/runtime gesture detaction
330+
if (shouldSupport) { VRModuleSettings.enableWaveHandGesture = true; }
327331
}
328332
}
329333
#elif UNITY_2018_1_OR_NEWER

0 commit comments

Comments
 (0)