//アナログ軸の状態を取得する(生データ) private void GetAnalogActionDataRaw(string ActionPath, out InputAnalogActionData_t data, string RestrictToDevicePath = "") { ReadyCheck(); //実行可能な状態かチェック EVRInputError inputError = EVRInputError.None; data = new InputAnalogActionData_t(); var size = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(InputAnalogActionData_t)); ulong handle = GetActionHandle(ActionPath); //無効なハンドルならthrowされる //制約デバイス指定されていれば適用 ulong DeviceHandle = OpenVR.k_ulInvalidInputValueHandle; if (RestrictToDevicePath != "") { DeviceHandle = GetInputSourceHandle(RestrictToDevicePath); //無効なハンドルならthrowされる } //取得処理 inputError = vrinput.GetAnalogActionData(handle, ref data, size, DeviceHandle); if (inputError == EVRInputError.WrongType) { //アナログ軸ではない throw new ArgumentException(inputError.ToString()); } if (inputError != EVRInputError.None) { //致命的エラー throw new IOException(inputError.ToString()); } return; }
private EVRInputError TryGetAnalogValue(CVRInput vrInput, ulong actionHandle, ulong devicePathHandle, out Vector3 value) { var data = default(InputAnalogActionData_t); var error = vrInput.GetAnalogActionData(actionHandle, ref data, m_analogDataSize, devicePathHandle); value.x = data.x; value.y = data.y; value.z = data.z; return(error); }
private Vector3 GetAnalogState(ulong handle, ulong hand) { var dataSize = Marshal.SizeOf <InputAnalogActionData_t>(); var data = new InputAnalogActionData_t(); var error = input.GetAnalogActionData(handle, ref data, (uint)dataSize, hand); #if UNITY_EDITOR if (error != EVRInputError.None && error != EVRInputError.NoData) { Debug.LogError("GetAnalogActionData: " + error.ToString()); return(Vector3.zero); } #endif return(new Vector3(data.x, data.y, data.z)); }
public bool TryGetCurrentAnalogData(CVRInput vrInput, out IVRModuleDeviceState prevState, out IVRModuleDeviceStateRW currState, ref InputAnalogActionData_t data) { ulong originDevicePath; if (!TryGetCurrentOriginDataAndDeviceState(vrInput, out prevState, out currState, out originDevicePath)) { return(false); } var error = vrInput.GetAnalogActionData(CurrentHandle, ref data, s_moduleInstance.m_analogDataSize, originDevicePath); if (error != EVRInputError.None) { Debug.LogError("GetAnalogActionData failed! action=" + CurrentPath + " error=" + error); return(false); } return(true); }