All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jme3.system.jopenvr.OpenVRUtil Maven / Gradle / Ivy

There is a newer version: 3.7.0-stable
Show newest version
package com.jme3.system.jopenvr;

import com.jme3.input.vr.openvr.OpenVRInput;
import com.jme3.system.jopenvr.JOpenVRLibrary.EColorSpace;
import com.jme3.system.jopenvr.JOpenVRLibrary.ETextureType;
import com.jme3.system.jopenvr.JOpenVRLibrary.ETrackedDeviceProperty;
import com.jme3.system.jopenvr.JOpenVRLibrary.ETrackedPropertyError;
import com.jme3.system.jopenvr.JOpenVRLibrary.EVRCompositorError;
import com.jme3.system.jopenvr.JOpenVRLibrary.EVRInitError;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;

/**
 * A utility class that provide helper methods for OpenVR system.
 * @author Julien Seinturier - 2017 - http://www.seinturier.fr
 */
public class OpenVRUtil {
        /**
         * A private constructor to inhibit instantiation of this class.
         */
        private OpenVRUtil() {
        }

	/**
	 * Get the value of the given string {@link JOpenVRLibrary.ETrackedDeviceProperty property} attached to the given device.
	 * @param system the underlying OpenVR system.
	 * @param deviceIndex the index of the device to query.
	 * @param property the property to query.
	 * @param bufferSize the size of the buffer to use for storing native string.
	 * @return the value of the given string property attached to the given device.
	 * @see OpenVRInput#getTrackedControllerCount()
	 * @see JOpenVRLibrary.ETrackedDeviceProperty
	 * @see #getTrackedDeviceStringProperty(VR_IVRSystem_FnTable, int, int)
	 */
	public static String getTrackedDeviceStringProperty(VR_IVRSystem_FnTable system, int deviceIndex, int property, int bufferSize){
		String str ="";
		
		int unBufferSize = 256;
		Pointer pchValue = new Memory(unBufferSize); 
		IntByReference pError = new IntByReference();
		
		system.GetStringTrackedDeviceProperty.apply(deviceIndex, property, pchValue, unBufferSize, pError);
		
		if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_Success){
			str = pchValue.getString(0);
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_BufferTooSmall){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_CouldNotContactServer){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_InvalidDevice){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_InvalidOperation){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_NotYetAvailable){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_PermissionDenied){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_StringExceedsMaximumLength){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_UnknownProperty){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_ValueNotProvidedByDevice){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_WrongDataType){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else if (pError.getValue() == ETrackedPropertyError.ETrackedPropertyError_TrackedProp_WrongDeviceClass){
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		} else {
			throw new IllegalArgumentException("Cannot access property \""+getETrackedDevicePropertyString(property)+"\" ("+property+") for device "+deviceIndex+": "+getETrackedPropertyErrorString(pError.getValue())+" ("+pError.getValue()+")");
		}
		
		return str;
	}
	
	/**
	 * Get the value of the given string {@link JOpenVRLibrary.ETrackedDeviceProperty property} attached to the given device.
	 * @param system the underlying OpenVR system.
	 * @param deviceIndex the index of the device to query.
	 * @param property the property to query.
	 * @return the value of the given string property attached to the given device.
	 * @see OpenVRInput#getTrackedControllerCount()
	 * @see JOpenVRLibrary.ETrackedDeviceProperty
	 * @see #getTrackedDeviceStringProperty(VR_IVRSystem_FnTable, int, int, int)
	 */
	public static String getTrackedDeviceStringProperty(VR_IVRSystem_FnTable system, int deviceIndex, int property){
      return getTrackedDeviceStringProperty(system, deviceIndex, property, 256);
	}
	
	/**
	 * Get the String description of the given {@link ETrackedPropertyError string tracked property error}.
	 * @param error the string tracked property error.
	 * @return the String description of the given string tracked property error.
	 */
	public static String getETrackedPropertyErrorString(int error){
		String str ="";
		
		switch(error){
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_Success:
			str = "Success";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_WrongDataType:
			str = "Wrong data type";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_WrongDeviceClass:
			str = "Wrong device class";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_BufferTooSmall:
			str = "Buffer too small";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_UnknownProperty:
			str = "Unknown property";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_InvalidDevice:
			str = "Invalid device";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_CouldNotContactServer:
			str = "Could not contact server";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_ValueNotProvidedByDevice:
			str = "Value not provided by device";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_StringExceedsMaximumLength:
			str = "String exceed maximum length";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_NotYetAvailable:
			str = "Not yet available";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_PermissionDenied:
			str = "Permission denied";
			break;
		case ETrackedPropertyError.ETrackedPropertyError_TrackedProp_InvalidOperation:
			str = "Invalid operation";
			break;
		default:
			str = "Not handled error";
		}
		
		return str;
	}
	
	/**
	 * Get the description of the given {@link EColorSpace color space}.
	 * @param eColorSpace the color space.
	 * @return the description of the given color space.
	 */
	public static String getEColorSpaceString(int eColorSpace){
		String str = "";
		
		switch(eColorSpace){
		  case EColorSpace.EColorSpace_ColorSpace_Auto:
			  str = "Auto";
			  break;
		  case EColorSpace.EColorSpace_ColorSpace_Gamma:
			  str = "Gamma";
			  break;
		  case EColorSpace.EColorSpace_ColorSpace_Linear:
			  str = "Linear";
			  break;
		  default:
			  str = "Unknown ("+eColorSpace+")";
		}
		
		return str;
	}
	
	/**
	 * Get the description of the given {@link ETextureType texture type}.
	 * @param type the texture type
	 * @return the description of the given texture type.
	 */
	public static String getETextureTypeString(int type){
		
		String str = "";
		
		switch(type){
		  case ETextureType.ETextureType_TextureType_DirectX:
			  str = "DirectX";
			  break;
		  case ETextureType.ETextureType_TextureType_OpenGL:
			  str = "OpenGL";
			  break;
		  case ETextureType.ETextureType_TextureType_Vulkan:
			  str = "Vulkan";
			  break;
		  case ETextureType.ETextureType_TextureType_IOSurface:
			  str = "IOSurface";
			  break;
		  case ETextureType.ETextureType_TextureType_DirectX12:
			  str = "DirectX12";
			  break;
		  default: 
			  str = "Unknown ("+type+")";
		}
		
		return str;
	}
	
	/**
	 * Get the description of the given {@link EVRCompositorError EVR compositor error}.
	 * @param error the EVR compositor error.
	 * @return the description of the given EVR compositor error.
	 */
	public static String getEVRCompositorErrorString(int error){
		String str ="";
		
		switch(error){
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_None: 
			  str = "None"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_RequestFailed: 
			  str = "Request failed"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_IncompatibleVersion: 
			  str = "Incompatible version"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_DoNotHaveFocus: 
			  str = "Do not have focus"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_InvalidTexture: 
             str = "Invalid texture"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_IsNotSceneApplication: 
			  str = "Is not scene application"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_TextureIsOnWrongDevice: 
			  str = "Texture is on wrong device"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_TextureUsesUnsupportedFormat: 
			  str = "Texture uses unsupported format"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_SharedTexturesNotSupported: 
			  str = "Shared textures not supported"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_IndexOutOfRange: 
			  str = "Index out of range"; 
		  break;
		  case EVRCompositorError.EVRCompositorError_VRCompositorError_AlreadySubmitted: 
			  str = "Already submitted"; 
		  break;
		}
		return str;
	}
	
	/**
	 * Get the description of the given {@link EVRInitError EVR init error}.
	 * @param error the EVR init error.
	 * @return the description of the given EVR init error.
	 */
	public static String getEVRInitErrorString(int error){
		String str = "";
		
		switch(error){
		
		
		case EVRInitError.EVRInitError_VRInitError_None: 
			str="None"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Unknown: 
			str="Unknown"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InstallationNotFound: 
			str="Installation not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InstallationCorrupt: 
			str="Installation corrupt"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_VRClientDLLNotFound: 
			str="VR Client DLL not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_FileNotFound: 
			str="File not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_FactoryNotFound: 
			str="Factory not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InterfaceNotFound: 
			str="Interface not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InvalidInterface: 
			str="Invalid interface"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_UserConfigDirectoryInvalid: 
			str="User config directory invalid"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_HmdNotFound: 
			str="HMD not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NotInitialized: 
			str="Not initialized"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_PathRegistryNotFound: 
			str="Path registry not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NoConfigPath: 
			str="No config path"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NoLogPath: 
			str="No log path"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_PathRegistryNotWritable: 
			str="Path registry not writable"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_AppInfoInitFailed: 
			str="AppInfo init failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_Retry: 
			str="Init retry";
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InitCanceledByUser: 
			str="Init canceled by user"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_AnotherAppLaunching: 
			str="Another app launching"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_SettingsInitFailed: 
			str="Setting init failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_ShuttingDown: 
			str="Shutting down"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_TooManyObjects: 
			str="Too many objects"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NoServerForBackgroundApp: 
			str="No server background app"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NotSupportedWithCompositor: 
			str="Not supported with compositor"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NotAvailableToUtilityApps: 
			str="Not available to utility apps"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_Internal: 
			str="Internal"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_HmdDriverIdIsNone: 
			str="Driver Id is None"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_HmdNotFoundPresenceFailed: 
			str="HMD not found presence failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_VRMonitorNotFound: 
			str="VR monitor not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_VRMonitorStartupFailed: 
			str="VR monitor startup failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_LowPowerWatchdogNotSupported: 
			str="Low power watchdog not supported"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_InvalidApplicationType: 
			str="Invalid application type"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_NotAvailableToWatchdogApps: 
			str="Not available to watchdog apps"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_WatchdogDisabledInSettings: 
			str="Watchdog disabled in settings"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_VRDashboardNotFound: 
			str="VR dashboard not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Init_VRDashboardStartupFailed: 
			str="VR dashboard setup failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_Failed: 
			str="Driver failed"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_Unknown: 
			str="Driver unknown"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_HmdUnknown: 
			str="HMD unknown"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_NotLoaded: 
			str="Driver not loaded"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_RuntimeOutOfDate: 
			str="Driver runtime out of date"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_HmdInUse: 
			str="HMD in use"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_NotCalibrated: 
			str="Not calibrated"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_CalibrationInvalid: 
			str="Calibration invalid"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_HmdDisplayNotFound: 
			str="HMD display not found"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown: 
			str="Tracked device interface unknown"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds: 
			str="HMD driver Id out of bounds"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_Driver_HmdDisplayMirrored: 
			str="HMD display mirrored"; 
			break;
		case EVRInitError.EVRInitError_VRInitError_IPC_ServerInitFailed: 
			str=""; 
			break;
		case EVRInitError.EVRInitError_VRInitError_IPC_ConnectFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_SharedStateInitFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_CompositorInitFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_MutexInitFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_Failed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_CompositorConnectFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_CompositorInvalidConnectResponse: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_IPC_ConnectFailedAfterMultipleAttempts: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Compositor_Failed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Compositor_D3D11HardwareRequired: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Compositor_FirmwareRequiresUpdate: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Compositor_OverlayInitFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Compositor_ScreenshotsInitFailed: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_UnableToConnectToOculusRuntime: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_CantOpenDevice: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_NoStoredConfig: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooBig: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigTooSmall: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToInitZLib: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataAddressRange: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_UserDataError: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck: str=""; break;
		case EVRInitError.EVRInitError_VRInitError_Steam_SteamInstallationNotFound: str=""; break;
		default:
	    }
		
		return str;
	}
	
	/**
	 * Get the description of the given tracked device property.
	 * @param property the tracked device property.
	 * @return the description of the given tracked device property.
	 */
	public static String getETrackedDevicePropertyString(int property){
		String str = "";

		switch(property){
		
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Invalid:
			str = "Invalid";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_TrackingSystemName_String:
			str = "Tracking system name";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ModelNumber_String:
			str = "Model number";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_SerialNumber_String:
			str = "Serial number";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_RenderModelName_String:
			str = "Render model name";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_WillDriftInYaw_Bool:
			str = "Will drift in yaw";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ManufacturerName_String:
			str = "Manufacturer name";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_TrackingFirmwareVersion_String:
			str = "Tracking firmware version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_HardwareRevision_String:
			str = "Hardware revision";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_AllWirelessDongleDescriptions_String:
			str = "All wireless dongle descriptions";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ConnectedWirelessDongle_String:
			str = "Connect wireless dongle";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceIsWireless_Bool:
			str = "Device is wireless";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceIsCharging_Bool:
			str = "Device is charging";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceBatteryPercentage_Float:
			str = "Device battery percentage";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_StatusDisplayTransform_Matrix34:
			str = "Status display transform";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Firmware_UpdateAvailable_Bool:
			str = "Update available";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Firmware_ManualUpdate_Bool:
			str = "Firmware manual update";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Firmware_ManualUpdateURL_String:
			str = "Firmware manual update URL";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_HardwareRevision_Uint64:
			str = "Hardware revision";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FirmwareVersion_Uint64:
			str = "Firmware version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FPGAVersion_Uint64:
			str = "FPGA version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_VRCVersion_Uint64:
			str = "VRC version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_RadioVersion_Uint64:
			str = "Radio version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DongleVersion_Uint64:
			str = "Dongle version";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_BlockServerShutdown_Bool:
			str = "Block server shutdown";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CanUnifyCoordinateSystemWithHmd_Bool:
			str = "Can unify coordinate system with HMD";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ContainsProximitySensor_Bool:
			str = "Contains proximity sensor";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceProvidesBatteryStatus_Bool:
			str = "Device provides battery status";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceCanPowerOff_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Firmware_ProgrammingTarget_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DeviceClass_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_HasCamera_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DriverVersion_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Firmware_ForceUpdateRequired_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ViveSystemButtonFixRequired_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ParentDriver_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayFrequency_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_UserIpdMeters_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CurrentUniverseId_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_PreviousUniverseId_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayFirmwareVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_IsOnDesktop_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCType_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCOffset_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCScale_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_EdidVendorID_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageLeft_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageRight_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCBlackClamp_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_EdidProductID_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CameraToHeadTransform_Matrix34:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCType_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCOffset_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCScale_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCPrescale_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayGCImage_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_LensCenterLeftU_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_LensCenterLeftV_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_LensCenterRightU_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_LensCenterRightV_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_UserHeadToEyeDepthMeters_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CameraFirmwareVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CameraFirmwareDescription_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayFPGAVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayBootloaderVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayHardwareVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_AudioFirmwareVersion_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_CameraCompatibilityMode_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ScreenshotHorizontalFieldOfViewDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ScreenshotVerticalFieldOfViewDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplaySuppressed_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayAllowNightMode_Bool:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageWidth_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageHeight_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageNumChannels_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayMCImageData_Binary:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_AttachedDeviceId_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_SupportedButtons_Uint64:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Axis0Type_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Axis1Type_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Axis2Type_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Axis3Type_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_Axis4Type_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ControllerRoleHint_Int32:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FieldOfViewLeftDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FieldOfViewRightDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FieldOfViewTopDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_FieldOfViewBottomDegrees_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_TrackingRangeMinimumMeters_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_TrackingRangeMaximumMeters_Float:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_ModeLabel_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_IconPathName_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceOff_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearching_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceSearchingAlert_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceReady_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceReadyAlert_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceNotReady_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceStandby_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_NamedIconPathDeviceAlertLow_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_Start:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_End:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_UserConfigPath_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_InstallPath_String:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start:
			str = "";
			break;
		case ETrackedDeviceProperty.ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End:
			str = "";
			break;
		}
		
		
		return str;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy