You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.5 KiB
130 lines
4.5 KiB
3 years ago
|
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. ===========
|
||
|
|
||
|
using UnityEngine;
|
||
|
using HTC.UnityPlugin.Vive;
|
||
|
|
||
|
#if UNITY_2017_2_OR_NEWER
|
||
|
using UnityEngine.XR;
|
||
|
#else
|
||
|
using XRSettings = UnityEngine.VR.VRSettings;
|
||
|
using XRDevice = UnityEngine.VR.VRDevice;
|
||
|
#endif
|
||
|
|
||
|
namespace HTC.UnityPlugin.VRModuleManagement
|
||
|
{
|
||
|
public sealed partial class UnityEngineVRModule : VRModule.ModuleBase
|
||
|
{
|
||
|
public static class ButtonKeyCode
|
||
|
{
|
||
|
private static KeyCode[] s_codes = new KeyCode[]
|
||
|
{
|
||
|
KeyCode.JoystickButton0,
|
||
|
KeyCode.JoystickButton2,
|
||
|
KeyCode.JoystickButton10,
|
||
|
KeyCode.JoystickButton12,
|
||
|
KeyCode.JoystickButton9,
|
||
|
KeyCode.JoystickButton8,
|
||
|
KeyCode.JoystickButton17,
|
||
|
KeyCode.JoystickButton16,
|
||
|
KeyCode.JoystickButton1,
|
||
|
KeyCode.JoystickButton3,
|
||
|
KeyCode.JoystickButton11,
|
||
|
KeyCode.JoystickButton13,
|
||
|
KeyCode.JoystickButton15,
|
||
|
KeyCode.JoystickButton14,
|
||
|
};
|
||
|
|
||
|
public static int Count = s_codes.Length;
|
||
|
|
||
|
public static KeyCode RMenuPress = s_codes[0];
|
||
|
public static KeyCode LMenuPress = s_codes[1];
|
||
|
public static KeyCode RMenuTouch = s_codes[2];
|
||
|
public static KeyCode LMenuTouch = s_codes[3];
|
||
|
public static KeyCode RPadPress = s_codes[4];
|
||
|
public static KeyCode LPadPress = s_codes[5];
|
||
|
public static KeyCode RPadTouch = s_codes[6];
|
||
|
public static KeyCode LPadTouch = s_codes[7];
|
||
|
public static KeyCode RAKeyPress = s_codes[8];
|
||
|
public static KeyCode LAKeyPress = s_codes[9];
|
||
|
public static KeyCode RAKeyTouch = s_codes[10];
|
||
|
public static KeyCode LAKeyTouch = s_codes[11];
|
||
|
public static KeyCode RTriggerTouch = s_codes[12];
|
||
|
public static KeyCode LTriggerTouch = s_codes[13];
|
||
|
|
||
|
public static KeyCode Index(int i) { return s_codes[i]; }
|
||
|
}
|
||
|
|
||
|
public static class ButtonAxisName
|
||
|
{
|
||
|
private static readonly string[] s_names = new string[]
|
||
|
{
|
||
|
"HTC_VIU_LeftTrackpadHorizontal",
|
||
|
"HTC_VIU_LeftTrackpadVertical",
|
||
|
"HTC_VIU_RightTrackpadHorizontal",
|
||
|
"HTC_VIU_RightTrackpadVertical",
|
||
|
"HTC_VIU_LeftTrigger",
|
||
|
"HTC_VIU_RightTrigger",
|
||
|
"HTC_VIU_LeftGrip",
|
||
|
"HTC_VIU_RightGrip",
|
||
|
};
|
||
|
|
||
|
public static int Count = s_names.Length;
|
||
|
|
||
|
public static string LPadX = s_names[0];
|
||
|
public static string LPadY = s_names[1];
|
||
|
public static string RPadX = s_names[2];
|
||
|
public static string RPadY = s_names[3];
|
||
|
public static string LTrigger = s_names[4];
|
||
|
public static string RTrigger = s_names[5];
|
||
|
public static string LGrip = s_names[6];
|
||
|
public static string RGrip = s_names[7];
|
||
|
|
||
|
public static string Index(int i) { return s_names[i]; }
|
||
|
}
|
||
|
|
||
|
#if UNITY_EDITOR
|
||
|
public static class ButtonAxisID
|
||
|
{
|
||
|
private static readonly int[] s_ids = new int[]
|
||
|
{
|
||
|
0,
|
||
|
1,
|
||
|
3,
|
||
|
4,
|
||
|
8,
|
||
|
9,
|
||
|
10,
|
||
|
11,
|
||
|
};
|
||
|
|
||
|
public static int Count = s_ids.Length;
|
||
|
|
||
|
public static int LPadX = s_ids[0];
|
||
|
public static int LPadY = s_ids[1];
|
||
|
public static int RPadX = s_ids[2];
|
||
|
public static int RPadY = s_ids[3];
|
||
|
public static int LTrigger = s_ids[4];
|
||
|
public static int RTrigger = s_ids[5];
|
||
|
public static int LGtip = s_ids[6];
|
||
|
public static int RGtip = s_ids[7];
|
||
|
|
||
|
public static int Index(int i) { return s_ids[i]; }
|
||
|
}
|
||
|
#endif
|
||
|
public override bool ShouldActiveModule() { return VIUSettings.activateUnityNativeVRModule && XRSettings.enabled; }
|
||
|
|
||
|
public override void Update()
|
||
|
{
|
||
|
// set physics update rate to vr render rate
|
||
|
if (VRModule.lockPhysicsUpdateRateToRenderFrequency && Time.timeScale > 0.0f)
|
||
|
{
|
||
|
// FIXME: VRDevice.refreshRate returns zero in Unity 5.6.0 or older version
|
||
|
#if UNITY_5_6_OR_NEWER
|
||
|
Time.fixedDeltaTime = 1f / XRDevice.refreshRate;
|
||
|
#else
|
||
|
Time.fixedDeltaTime = 1f / 90f;
|
||
|
#endif
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|