├── .gitignore ├── .gitmodules ├── Engine ├── Binaries │ └── ThirdParty │ │ └── OpenVR │ │ ├── OpenVR.tps │ │ ├── OpenVRv000 │ │ ├── osx32 │ │ │ └── libopenvr_api.dylib │ │ ├── win32 │ │ │ └── openvr_api.dll │ │ └── win64 │ │ │ └── openvr_api.dll │ │ ├── OpenVRv0_9_12 │ │ ├── osx32 │ │ │ └── libopenvr_api.dylib │ │ ├── win32 │ │ │ └── openvr_api.dll │ │ └── win64 │ │ │ └── openvr_api.dll │ │ └── OpenVRv1_0_2 │ │ ├── osx32 │ │ └── libopenvr_api.dylib │ │ ├── win32 │ │ └── openvr_api.dll │ │ └── win64 │ │ └── openvr_api.dll └── Source │ └── ThirdParty │ └── OpenVR │ ├── OpenVR.build.cs │ ├── OpenVR.tps │ ├── OpenVRv000 │ ├── LICENSE │ ├── bin │ │ ├── osx32 │ │ │ └── libopenvr_api.dylib │ │ ├── win32 │ │ │ └── openvr_api.dll │ │ └── win64 │ │ │ └── openvr_api.dll │ ├── headers │ │ ├── openvr.h │ │ ├── openvr_api.cs │ │ ├── openvr_api.json │ │ └── openvr_capi.h │ └── lib │ │ ├── win32 │ │ └── openvr_api.lib │ │ └── win64 │ │ └── openvr_api.lib │ ├── OpenVRv0_9_12 │ ├── LICENSE │ ├── bin │ │ ├── osx32 │ │ │ └── libopenvr_api.dylib │ │ ├── win32 │ │ │ └── openvr_api.dll │ │ └── win64 │ │ │ └── openvr_api.dll │ ├── headers │ │ ├── openvr.h │ │ ├── openvr_api.cs │ │ ├── openvr_api.json │ │ ├── openvr_capi.h │ │ └── openvr_driver.h │ └── lib │ │ ├── win32 │ │ └── openvr_api.lib │ │ └── win64 │ │ └── openvr_api.lib │ └── OpenVRv1_0_2 │ ├── LICENSE │ ├── bin │ ├── osx32 │ │ ├── libopenvr_api.dylib │ │ └── libopenvr_api.dylib.dSYM │ │ │ └── Contents │ │ │ ├── Info.plist │ │ │ └── Resources │ │ │ └── DWARF │ │ │ └── libopenvr_api.dylib │ ├── win32 │ │ └── openvr_api.dll │ └── win64 │ │ └── openvr_api.dll │ ├── headers │ ├── openvr.h │ ├── openvr_api.cs │ ├── openvr_api.json │ ├── openvr_capi.h │ └── openvr_driver.h │ └── lib │ ├── osx32 │ └── libopenvr_api.dylib │ ├── win32 │ └── openvr_api.lib │ └── win64 │ └── openvr_api.lib ├── Icon.ico ├── README.md ├── RoboRecall └── Plugins │ └── RoboRevive │ ├── Binaries │ └── Win64 │ │ ├── RoboRecall-RoboRevive-Win64-Shipping.dll │ │ ├── RoboRecall-RoboRevive-Win64-Shipping.pdb │ │ ├── RoboRecall-RoboRevive.pdb │ │ ├── RoboRecall-SteamVR-Win64-Shipping.dll │ │ ├── RoboRecall-SteamVR-Win64-Shipping.pdb │ │ ├── RoboRecall-SteamVR.pdb │ │ ├── RoboRecall-SteamVRController-Win64-Shipping.dll │ │ ├── RoboRecall-SteamVRController-Win64-Shipping.pdb │ │ ├── RoboRecall-SteamVRController.pdb │ │ ├── RoboRecall-Win64-Shipping.modules │ │ ├── RoboRecall-Win64-Shipping.target │ │ ├── UE4Editor-RoboRevive.dll │ │ ├── UE4Editor-RoboRevive.pdb │ │ ├── UE4Editor-SteamVR.dll │ │ ├── UE4Editor-SteamVR.pdb │ │ ├── UE4Editor-SteamVRController.dll │ │ ├── UE4Editor-SteamVRController.pdb │ │ └── UE4Editor.modules │ ├── Intermediate │ └── Build │ │ └── Win64 │ │ └── RoboRecall │ │ └── Development │ │ ├── RoboRecall-RoboRevive.dll.response │ │ ├── RoboRecall-RoboRevive.exp │ │ ├── RoboRecall-RoboRevive.lib │ │ ├── RoboRecall-RoboRevive.lib.response │ │ └── RoboRecall-SteamVR.dll.response │ ├── Mods │ ├── RoboRevive.vcxproj │ ├── RoboRevive.vcxproj.filters │ └── RoboRevive.vcxproj.user │ ├── Resources │ └── Icon128.png │ └── RoboRevive.uplugin ├── RoboRevive.nsi ├── app.vrmanifest ├── openvr_api.dll ├── small_landscape_image.jpg └── vrappreg.exe /.gitignore: -------------------------------------------------------------------------------- 1 | # ModKit Files 2 | Engine 3 | !Binaries/ThirdParty/OpenVR 4 | !Source/ThirdParty/OpenVR 5 | 6 | RoboRecall/* 7 | !RoboRecall/Plugins 8 | 9 | RoboRecall/Plugins/* 10 | !RoboRecall/Plugins/RoboRevive 11 | 12 | RoboRecall/Plugins/RoboRevive/Intermediate 13 | RoboRecall/Plugins/RoboRevive/Build 14 | 15 | # RoboRecall Mods 16 | *.robo 17 | 18 | # Installer file 19 | RoboRevive.exe 20 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "RoboRecall/Plugins/RoboRevive/Source"] 2 | path = RoboRecall/Plugins/RoboRevive/Source 3 | url = https://github.com/LibreVR/UnrealEngine.git 4 | -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVR.tps: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Redirect: ../../../Source/ThirdParty/OpenVR/OpenVR.tps 5 | Notes: 6 | 7 | -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv000/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv0_9_12/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVR.build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using System; 4 | using System.IO; 5 | using UnrealBuildTool; 6 | 7 | public class OpenVR : ModuleRules 8 | { 9 | public OpenVR(TargetInfo Target) 10 | { 11 | /** Mark the current version of the OpenVR SDK */ 12 | string OpenVRVersion = "v1_0_2"; 13 | Type = ModuleType.External; 14 | 15 | string SdkBase = UEBuildConfiguration.UEThirdPartySourceDirectory + "OpenVR/OpenVR" + OpenVRVersion; 16 | if (!Directory.Exists(SdkBase)) 17 | { 18 | string Err = string.Format("OpenVR SDK not found in {0}", SdkBase); 19 | System.Console.WriteLine(Err); 20 | throw new BuildException(Err); 21 | } 22 | 23 | PublicIncludePaths.Add(SdkBase + "/headers"); 24 | 25 | string LibraryPath = SdkBase + "/lib/"; 26 | 27 | if(Target.Platform == UnrealTargetPlatform.Win32) 28 | { 29 | PublicLibraryPaths.Add(LibraryPath + "win32"); 30 | PublicAdditionalLibraries.Add("openvr_api.lib"); 31 | PublicDelayLoadDLLs.Add("openvr_api.dll"); 32 | 33 | string OpenVRBinariesDir = String.Format("$(EngineDir)/Binaries/ThirdParty/OpenVR/OpenVR{0}/Win32/", OpenVRVersion); 34 | RuntimeDependencies.Add(new RuntimeDependency(OpenVRBinariesDir + "openvr_api.dll")); 35 | } 36 | else if(Target.Platform == UnrealTargetPlatform.Win64) 37 | { 38 | PublicLibraryPaths.Add(LibraryPath + "win64"); 39 | PublicAdditionalLibraries.Add("openvr_api.lib"); 40 | PublicDelayLoadDLLs.Add("openvr_api.dll"); 41 | 42 | string OpenVRBinariesDir = String.Format("$(EngineDir)/Binaries/ThirdParty/OpenVR/OpenVR{0}/Win64/", OpenVRVersion); 43 | RuntimeDependencies.Add(new RuntimeDependency(OpenVRBinariesDir + "openvr_api.dll")); 44 | } 45 | else if (Target.Platform == UnrealTargetPlatform.Mac) 46 | { 47 | string DylibPath = SdkBase + "/bin/osx32/libopenvr_api.dylib"; 48 | PublicDelayLoadDLLs.Add(DylibPath); 49 | PublicAdditionalShadowFiles.Add(DylibPath); 50 | 51 | string OpenVRBinariesDir = String.Format("$(EngineDir)/Binaries/ThirdParty/OpenVR/OpenVR{0}/osx32/", OpenVRVersion); 52 | RuntimeDependencies.Add(new RuntimeDependency(OpenVRBinariesDir + "libopenvr_api.dylib")); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVR.tps: -------------------------------------------------------------------------------- 1 |  2 | 3 | OpenVR 4 | /Engine/Source/ThirdParty/OpenVR/ 5 | 2016-06-13T16:27:50.6824692-04:00 6 | Valve's OpenVR SDK - API for SteamVR, including their HMD and Controllers as well as their support for DK2, etc. 7 | We need to support the SteamVR hardware. 8 | https://github.com/ValveSoftware/openvr/blob/master/LICENSE 9 | 10 | Licensees 11 | Git 12 | P4 13 | 14 | /Engine/Source/ThirdParty/Licenses/OpenVR_License.txt 15 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Valve Corporation 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv000/bin/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/headers/openvr.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // openvr.h 4 | //========= Copyright Valve Corporation ============// 5 | // Dynamically generated file. Do not modify this file directly. 6 | 7 | #ifndef _OPENVR_API 8 | #define _OPENVR_API 9 | 10 | #include 11 | 12 | 13 | // vrtypes.h 14 | namespace vr 15 | { 16 | 17 | #if defined(__linux__) || defined(__APPLE__) 18 | // The 32-bit version of gcc has the alignment requirement for uint64 and double set to 19 | // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. 20 | // The 64-bit version of gcc has the alignment requirement for these types set to 21 | // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. 22 | // The 64-bit structure packing has to match the 32-bit structure packing for each platform. 23 | #pragma pack( push, 4 ) 24 | #else 25 | #pragma pack( push, 8 ) 26 | #endif 27 | 28 | // right-handed system 29 | // +y is up 30 | // +x is to the right 31 | // -z is going away from you 32 | // Distance unit is meters 33 | struct HmdMatrix34_t 34 | { 35 | float m[3][4]; 36 | }; 37 | 38 | struct HmdMatrix44_t 39 | { 40 | float m[4][4]; 41 | }; 42 | 43 | struct HmdVector3_t 44 | { 45 | float v[3]; 46 | }; 47 | 48 | struct HmdVector3d_t 49 | { 50 | double v[3]; 51 | }; 52 | 53 | struct HmdVector2_t 54 | { 55 | float v[2]; 56 | }; 57 | 58 | struct HmdQuaternion_t 59 | { 60 | double w, x, y, z; 61 | }; 62 | 63 | struct HmdQuad_t 64 | { 65 | HmdVector3_t vCorners[ 4 ]; 66 | }; 67 | 68 | /** Used to return the post-distortion UVs for each color channel. 69 | * UVs range from 0 to 1 with 0,0 in the upper left corner of the 70 | * source render target. The 0,0 to 1,1 range covers a single eye. */ 71 | struct DistortionCoordinates_t 72 | { 73 | float rfRed[2]; 74 | float rfGreen[2]; 75 | float rfBlue[2]; 76 | }; 77 | 78 | enum Hmd_Eye 79 | { 80 | Eye_Left = 0, 81 | Eye_Right = 1 82 | }; 83 | 84 | enum GraphicsAPIConvention 85 | { 86 | API_DirectX = 0, // Normalized Z goes from 0 at the viewer to 1 at the far clip plane 87 | API_OpenGL = 1, // Normalized Z goes from 1 at the viewer to -1 at the far clip plane 88 | }; 89 | 90 | enum HmdTrackingResult 91 | { 92 | TrackingResult_Uninitialized = 1, 93 | 94 | TrackingResult_Calibrating_InProgress = 100, 95 | TrackingResult_Calibrating_OutOfRange = 101, 96 | 97 | TrackingResult_Running_OK = 200, 98 | TrackingResult_Running_OutOfRange = 201, 99 | }; 100 | 101 | static const uint32_t k_unTrackingStringSize = 32; 102 | static const uint32_t k_unMaxTrackedDeviceCount = 16; 103 | static const uint32_t k_unTrackedDeviceIndex_Hmd = 0; 104 | 105 | /** Describes what kind of object is being tracked at a given ID */ 106 | enum TrackedDeviceClass 107 | { 108 | TrackedDeviceClass_Invalid = 0, // the ID was not valid. 109 | TrackedDeviceClass_HMD = 1, // Head-Mounted Displays 110 | TrackedDeviceClass_Controller = 2, // Tracked controllers 111 | TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points 112 | 113 | TrackedDeviceClass_Other = 1000, 114 | }; 115 | 116 | 117 | /** describes a single pose for a tracked object */ 118 | struct TrackedDevicePose_t 119 | { 120 | HmdMatrix34_t mDeviceToAbsoluteTracking; 121 | HmdVector3_t vVelocity; // velocity in tracker space in m/s 122 | HmdVector3_t vAngularVelocity; // angular velocity in radians/s (?) 123 | HmdTrackingResult eTrackingResult; 124 | bool bPoseIsValid; 125 | 126 | // This indicates that there is a device connected for this spot in the pose array. 127 | // It could go from true to false if the user unplugs the device. 128 | bool bDeviceIsConnected; 129 | }; 130 | 131 | /** Identifies which style of tracking origin the application wants to use 132 | * for the poses it is requesting */ 133 | enum TrackingUniverseOrigin 134 | { 135 | TrackingUniverseSeated = 0, // Poses are provided relative to the seated zero pose 136 | TrackingUniverseStanding = 1, // Poses are provided relative to the safe bounds configured by the user 137 | TrackingUniverseRawAndUncalibrated = 2, // Poses are provided in the coordinate system defined by the driver. You probably don't want this one. 138 | }; 139 | 140 | 141 | /** Each entry in this enum represents a property that can be retrieved about a 142 | * tracked device. Many fields are only valid for one TrackedDeviceClass. */ 143 | enum TrackedDeviceProperty 144 | { 145 | // general properties that apply to all device classes 146 | Prop_TrackingSystemName_String = 1000, 147 | Prop_ModelNumber_String = 1001, 148 | Prop_SerialNumber_String = 1002, 149 | Prop_RenderModelName_String = 1003, 150 | Prop_WillDriftInYaw_Bool = 1004, 151 | Prop_ManufacturerName_String = 1005, 152 | Prop_TrackingFirmwareVersion_String = 1006, 153 | Prop_HardwareRevision_String = 1007, 154 | 155 | // Properties that are unique to TrackedDeviceClass_HMD 156 | Prop_ReportsTimeSinceVSync_Bool = 2000, 157 | Prop_SecondsFromVsyncToPhotons_Float = 2001, 158 | Prop_DisplayFrequency_Float = 2002, 159 | Prop_UserIpdMeters_Float = 2003, 160 | Prop_CurrentUniverseId_Uint64 = 2004, 161 | Prop_PreviousUniverseId_Uint64 = 2005, 162 | Prop_DisplayFirmwareVersion_String = 2006, 163 | 164 | // Properties that are unique to TrackedDeviceClass_Controller 165 | Prop_AttachedDeviceId_String = 3000, 166 | Prop_SupportedButtons_Uint64 = 3001, 167 | Prop_Axis0Type_Int32 = 3002, // Return value is of type EVRControllerAxisType 168 | Prop_Axis1Type_Int32 = 3003, // Return value is of type EVRControllerAxisType 169 | Prop_Axis2Type_Int32 = 3004, // Return value is of type EVRControllerAxisType 170 | Prop_Axis3Type_Int32 = 3005, // Return value is of type EVRControllerAxisType 171 | Prop_Axis4Type_Int32 = 3006, // Return value is of type EVRControllerAxisType 172 | 173 | // Properties that are unique to TrackedDeviceClass_TrackingReference 174 | Prop_FieldOfViewLeftDegrees_Float = 4000, 175 | Prop_FieldOfViewRightDegrees_Float = 4001, 176 | Prop_FieldOfViewTopDegrees_Float = 4002, 177 | Prop_FieldOfViewBottomDegrees_Float = 4003, 178 | Prop_TrackingRangeMinimumMeters_Float = 4004, 179 | Prop_TrackingRangeMaximumMeters_Float = 4005, 180 | }; 181 | 182 | /** Used to pass device IDs to API calls */ 183 | typedef uint32_t TrackedDeviceIndex_t; 184 | static const uint32_t k_unTrackedDeviceIndexInvalid = 0xFFFFFFFF; 185 | 186 | /** No string property will ever be longer than this length */ 187 | static const uint32_t k_unMaxPropertyStringSize = 32 * 1024; 188 | 189 | /** Used to return errors that occur when reading properties. */ 190 | enum TrackedPropertyError 191 | { 192 | TrackedProp_Success = 0, 193 | TrackedProp_WrongDataType = 1, 194 | TrackedProp_WrongDeviceClass = 2, 195 | TrackedProp_BufferTooSmall = 3, 196 | TrackedProp_UnknownProperty = 4, 197 | TrackedProp_InvalidDevice = 5, 198 | TrackedProp_CouldNotContactServer = 6, 199 | TrackedProp_ValueNotProvidedByDevice = 7, 200 | TrackedProp_StringExceedsMaximumLength = 8, 201 | }; 202 | 203 | 204 | /** a single vertex in a render model */ 205 | struct RenderModel_Vertex_t 206 | { 207 | HmdVector3_t vPosition; // position in meters in device space 208 | HmdVector3_t vNormal; 209 | float rfTextureCoord[ 2 ]; 210 | }; 211 | 212 | /** A texture map for use on a render model */ 213 | struct RenderModel_TextureMap_t 214 | { 215 | uint16_t unWidth, unHeight; // width and height of the texture map in pixels 216 | const uint8_t *rubTextureMapData; // Map texture data. All textures are RGBA with 8 bits per channel per pixel. Data size is width * height * 4ub 217 | }; 218 | 219 | /** Contains everything a game needs to render a single tracked or static object for the user. */ 220 | struct RenderModel_t 221 | { 222 | uint64_t ulInternalHandle; // Used internally by SteamVR 223 | const RenderModel_Vertex_t *rVertexData; // Vertex data for the mesh 224 | uint32_t unVertexCount; // Number of vertices in the vertex data 225 | const uint16_t *rIndexData; // Indices into the vertex data for each triangle 226 | uint32_t unTriangleCount; // Number of triangles in the mesh. Index count is 3 * TriangleCount 227 | RenderModel_TextureMap_t diffuseTexture; // RGBA diffuse texture for the model 228 | }; 229 | 230 | 231 | /** The types of events that could be posted (and what the parameters mean for each event type) */ 232 | enum EVREventType 233 | { 234 | VREvent_None = 0, 235 | 236 | VREvent_TrackedDeviceActivated = 100, 237 | VREvent_TrackedDeviceDeactivated = 101, 238 | VREvent_TrackedDeviceUpdated = 102, 239 | 240 | VREvent_ButtonPress = 200, // data is controller 241 | VREvent_ButtonUnpress = 201, // data is controller 242 | VREvent_ButtonTouch = 202, // data is controller 243 | VREvent_ButtonUntouch = 203, // data is controller 244 | 245 | VREvent_MouseMove = 300, // data is mouse 246 | VREvent_MouseButtonDown = 301, // data is mouse 247 | VREvent_MouseButtonUp = 302, // data is mouse 248 | 249 | VREvent_InputFocusCaptured = 400, // data is process 250 | VREvent_InputFocusReleased = 401, // data is process 251 | }; 252 | 253 | 254 | /** VR controller button and axis IDs */ 255 | enum EVRButtonId 256 | { 257 | k_EButton_System = 0, 258 | k_EButton_ApplicationMenu = 1, 259 | k_EButton_Grip = 2, 260 | 261 | k_EButton_Axis0 = 32, 262 | k_EButton_Axis1 = 33, 263 | k_EButton_Axis2 = 34, 264 | k_EButton_Axis3 = 35, 265 | k_EButton_Axis4 = 36, 266 | 267 | // aliases for well known controllers 268 | k_EButton_SteamVR_Touchpad = k_EButton_Axis0, 269 | k_EButton_SteamVR_Trigger = k_EButton_Axis1, 270 | 271 | k_EButton_Max = 64 272 | }; 273 | 274 | inline uint64_t ButtonMaskFromId( EVRButtonId id ) { return 1ull << id; } 275 | 276 | /** used for controller button events */ 277 | struct VREvent_Controller_t 278 | { 279 | EVRButtonId button; 280 | }; 281 | 282 | 283 | /** used for simulated mouse events in overlay space */ 284 | enum EVRMouseButton 285 | { 286 | VRMouseButton_Left = 0x0001, 287 | VRMouseButton_Right = 0x0002, 288 | VRMouseButton_Middle = 0x0004, 289 | }; 290 | 291 | 292 | /** used for simulated mouse events in overlay space */ 293 | struct VREvent_Mouse_t 294 | { 295 | float x, y; 296 | EVRMouseButton button; 297 | }; 298 | 299 | 300 | /** Used for events about processes */ 301 | struct VREvent_Process_t 302 | { 303 | uint32_t pid; 304 | uint32_t oldPid; 305 | }; 306 | 307 | 308 | /** Not actually used for any events. It is just used to reserve 309 | * space in the union for future event types */ 310 | struct VREvent_Reserved_t 311 | { 312 | uint64_t reserved0; 313 | uint64_t reserved1; 314 | }; 315 | 316 | /** If you change this you must manually update openvr_interop.cs.py */ 317 | typedef union 318 | { 319 | VREvent_Reserved_t reserved; 320 | VREvent_Controller_t controller; 321 | VREvent_Mouse_t mouse; 322 | VREvent_Process_t process; 323 | } VREvent_Data_t; 324 | 325 | /** An event posted by the server to all running applications */ 326 | struct VREvent_t 327 | { 328 | EVREventType eventType; 329 | TrackedDeviceIndex_t trackedDeviceIndex; 330 | VREvent_Data_t data; 331 | float eventAgeSeconds; 332 | }; 333 | 334 | 335 | /** The mesh to draw into the stencil (or depth) buffer to perform 336 | * early stencil (or depth) kills of pixels that will never appear on the HMD. 337 | * This mesh draws on all the pixels that will be hidden after distortion. 338 | * 339 | * If the HMD does not provide a visible area mesh pVertexData will be 340 | * NULL and unTriangleCount will be 0. */ 341 | struct HiddenAreaMesh_t 342 | { 343 | const HmdVector2_t *pVertexData; 344 | uint32_t unTriangleCount; 345 | }; 346 | 347 | 348 | /** Identifies what kind of axis is on the controller at index n. Read this type 349 | * with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n ); 350 | */ 351 | enum EVRControllerAxisType 352 | { 353 | k_eControllerAxis_None = 0, 354 | k_eControllerAxis_TrackPad = 1, 355 | k_eControllerAxis_Joystick = 2, 356 | k_eControllerAxis_Trigger = 3, // Analog trigger data is in the X axis 357 | }; 358 | 359 | 360 | /** contains information about one axis on the controller */ 361 | struct VRControllerAxis_t 362 | { 363 | float x; // Ranges from -1.0 to 1.0 for joysticks and track pads. Ranges from 0.0 to 1.0 for triggers were 0 is fully released. 364 | float y; // Ranges from -1.0 to 1.0 for joysticks and track pads. Is always 0.0 for triggers. 365 | }; 366 | 367 | 368 | /** the number of axes in the controller state */ 369 | static const uint32_t k_unControllerStateAxisCount = 5; 370 | 371 | 372 | /** Holds all the state of a controller at one moment in time. */ 373 | struct VRControllerState001_t 374 | { 375 | // If packet num matches that on your prior call, then the controller state hasn't been changed since 376 | // your last call and there is no need to process it 377 | uint32_t unPacketNum; 378 | 379 | // bit flags for each of the buttons. Use ButtonMaskFromId to turn an ID into a mask 380 | uint64_t ulButtonPressed; 381 | uint64_t ulButtonTouched; 382 | 383 | // Axis data for the controller's analog inputs 384 | VRControllerAxis_t rAxis[ k_unControllerStateAxisCount ]; 385 | }; 386 | 387 | 388 | typedef VRControllerState001_t VRControllerState_t; 389 | 390 | 391 | /** determines how to provide output to the application of various event processing functions. */ 392 | enum EVRControllerEventOutputType 393 | { 394 | ControllerEventOutput_OSEvents = 0, 395 | ControllerEventOutput_VREvents = 1, 396 | }; 397 | 398 | 399 | /** Allows the application to customize how the overlay appears in the compositor */ 400 | struct Compositor_OverlaySettings 401 | { 402 | uint32_t size; // sizeof(Compositor_OverlaySettings) 403 | bool curved, antialias; 404 | float scale, distance, alpha; 405 | float uOffset, vOffset, uScale, vScale; 406 | float gridDivs, gridWidth, gridScale; 407 | HmdMatrix44_t transform; 408 | }; 409 | 410 | 411 | /** error codes returned by Vr_Init */ 412 | enum HmdError 413 | { 414 | HmdError_None = 0, 415 | HmdError_Unknown = 1, 416 | 417 | HmdError_Init_InstallationNotFound = 100, 418 | HmdError_Init_InstallationCorrupt = 101, 419 | HmdError_Init_VRClientDLLNotFound = 102, 420 | HmdError_Init_FileNotFound = 103, 421 | HmdError_Init_FactoryNotFound = 104, 422 | HmdError_Init_InterfaceNotFound = 105, 423 | HmdError_Init_InvalidInterface = 106, 424 | HmdError_Init_UserConfigDirectoryInvalid = 107, 425 | HmdError_Init_HmdNotFound = 108, 426 | HmdError_Init_NotInitialized = 109, 427 | HmdError_Init_PathRegistryNotFound = 110, 428 | HmdError_Init_NoConfigPath = 111, 429 | HmdError_Init_NoLogPath = 112, 430 | HmdError_Init_PathRegistryNotWritable = 113, 431 | 432 | HmdError_Driver_Failed = 200, 433 | HmdError_Driver_Unknown = 201, 434 | HmdError_Driver_HmdUnknown = 202, 435 | HmdError_Driver_NotLoaded = 203, 436 | HmdError_Driver_RuntimeOutOfDate = 204, 437 | HmdError_Driver_HmdInUse = 205, 438 | 439 | HmdError_IPC_ServerInitFailed = 300, 440 | HmdError_IPC_ConnectFailed = 301, 441 | HmdError_IPC_SharedStateInitFailed = 302, 442 | HmdError_IPC_CompositorInitFailed = 303, 443 | HmdError_IPC_MutexInitFailed = 304, 444 | 445 | HmdError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, 446 | 447 | HmdError_Steam_SteamInstallationNotFound = 2000, 448 | 449 | }; 450 | 451 | #pragma pack( pop ) 452 | 453 | } 454 | 455 | // vrannotation.h 456 | #ifdef __clang__ 457 | # define VR_CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) 458 | #else 459 | # define VR_CLANG_ATTR(ATTR) 460 | #endif 461 | 462 | #define VR_METHOD_DESC(DESC) VR_CLANG_ATTR( "desc:" #DESC ";" ) 463 | #define VR_IGNOREATTR() VR_CLANG_ATTR( "ignore" ) 464 | #define VR_OUT_STRUCT() VR_CLANG_ATTR( "out_struct: ;" ) 465 | #define VR_OUT_STRING() VR_CLANG_ATTR( "out_string: ;" ) 466 | #define VR_OUT_ARRAY_CALL(COUNTER,FUNCTION,PARAMS) VR_CLANG_ATTR( "out_array_call:" #COUNTER "," #FUNCTION "," #PARAMS ";" ) 467 | #define VR_OUT_ARRAY_COUNT(COUNTER) VR_CLANG_ATTR( "out_array_count:" #COUNTER ";" ) 468 | #define VR_ARRAY_COUNT(COUNTER) VR_CLANG_ATTR( "array_count:" #COUNTER ";" ) 469 | #define VR_ARRAY_COUNT_D(COUNTER, DESC) VR_CLANG_ATTR( "array_count:" #COUNTER ";desc:" #DESC ) 470 | #define VR_BUFFER_COUNT(COUNTER) VR_CLANG_ATTR( "buffer_count:" #COUNTER ";" ) 471 | #define VR_OUT_BUFFER_COUNT(COUNTER) VR_CLANG_ATTR( "out_buffer_count:" #COUNTER ";" ) 472 | #define VR_OUT_STRING_COUNT(COUNTER) VR_CLANG_ATTR( "out_string_count:" #COUNTER ";" ) 473 | // ivrsystem.h 474 | namespace vr 475 | { 476 | 477 | class IVRSystem 478 | { 479 | public: 480 | 481 | 482 | // ------------------------------------ 483 | // Display Methods 484 | // ------------------------------------ 485 | 486 | /** Size and position that the window needs to be on the VR display. */ 487 | virtual void GetWindowBounds( int32_t *pnX, int32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 488 | 489 | /** Suggested size for the intermediate render target that the distortion pulls from. */ 490 | virtual void GetRecommendedRenderTargetSize( uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 491 | 492 | /** Gets the viewport in the frame buffer to draw the output of the distortion into */ 493 | virtual void GetEyeOutputViewport( Hmd_Eye eEye, uint32_t *pnX, uint32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 494 | 495 | /** The projection matrix for the specified eye */ 496 | virtual HmdMatrix44_t GetProjectionMatrix( Hmd_Eye eEye, float fNearZ, float fFarZ, GraphicsAPIConvention eProjType ) = 0; 497 | 498 | /** The components necessary to build your own projection matrix in case your 499 | * application is doing something fancy like infinite Z */ 500 | virtual void GetProjectionRaw( Hmd_Eye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom ) = 0; 501 | 502 | /** Returns the result of the distortion function for the specified eye and input UVs. UVs go from 0,0 in 503 | * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. */ 504 | virtual DistortionCoordinates_t ComputeDistortion( Hmd_Eye eEye, float fU, float fV ) = 0; 505 | 506 | /** Returns the transform from eye space to the head space. Eye space is the per-eye flavor of head 507 | * space that provides stereo disparity. Instead of Model * View * Projection the sequence is Model * View * Eye^-1 * Projection. 508 | * Normally View and Eye^-1 will be multiplied together and treated as View in your application. 509 | */ 510 | virtual HmdMatrix34_t GetEyeToHeadTransform( Hmd_Eye eEye ) = 0; 511 | 512 | /** Returns the number of elapsed seconds since the last recorded vsync event. This 513 | * will come from a vsync timer event in the timer if possible or from the application-reported 514 | * time if that is not available. If no vsync times are available the function will 515 | * return zero for vsync time and frame counter and return false from the method. */ 516 | virtual bool GetTimeSinceLastVsync( float *pfSecondsSinceLastVsync, uint64_t *pulFrameCounter ) = 0; 517 | 518 | /** [D3D9 Only] 519 | * Returns the adapter index that the user should pass into CreateDevice to set up D3D9 in such 520 | * a way that it can go full screen exclusive on the HMD. Returns -1 if there was an error. 521 | */ 522 | virtual int32_t GetD3D9AdapterIndex() = 0; 523 | 524 | /** [D3D10/11 Only] 525 | * Returns the adapter index and output index that the user should pass into EnumAdapters and EnumOutputs 526 | * to create the device and swap chain in DX10 and DX11. If an error occurs both indices will be set to -1. 527 | */ 528 | virtual void GetDXGIOutputInfo( int32_t *pnAdapterIndex, int32_t *pnAdapterOutputIndex ) = 0; 529 | 530 | /** [Windows Only] 531 | * Notifies the system that the VR output will appear in a particular window. 532 | */ 533 | virtual bool AttachToWindow( void *hWnd ) = 0; 534 | 535 | // ------------------------------------ 536 | // Tracking Methods 537 | // ------------------------------------ 538 | 539 | /** The pose that the tracker thinks that the HMD will be in at the specified number of seconds into the 540 | * future. Pass 0 to get the state at the instant the method is called. Most of the time the application should 541 | * calculate the time until the photons will be emitted from the display and pass that time into the method. 542 | * 543 | * This is roughly analogous to the inverse of the view matrix in most applications, though 544 | * many games will need to do some additional rotation or translation on top of the rotation 545 | * and translation provided by the head pose. 546 | * 547 | * For devices where bPoseIsValid is true the application can use the pose to position the device 548 | * in question. The provided array can be any size up to k_unMaxTrackedDeviceCount. 549 | * 550 | * Seated experiences should call this method with TrackingUniverseSeated and receive poses relative 551 | * to the seated zero pose. Standing experiences should call this method with TrackingUniverseStanding 552 | * and receive poses relative to the chaperone soft bounds. TrackingUniverseRawAndUncalibrated should 553 | * probably not be used unless the application is the chaperone calibration tool itself, but will provide 554 | * poses relative to the hardware-specific coordinate system in the driver. 555 | */ 556 | virtual void GetDeviceToAbsoluteTrackingPose( TrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, VR_ARRAY_COUNT(unTrackedDevicePoseArrayCount) TrackedDevicePose_t *pTrackedDevicePoseArray, uint32_t unTrackedDevicePoseArrayCount ) = 0; 557 | 558 | /** Sets the zero pose for the seated tracker coordinate system to the current position and yaw of the HMD. After 559 | * ResetSeatedZeroPose all GetDeviceToAbsoluteTrackingPose calls that pass TrackingUniverseSeated as the origin 560 | * will be relative to this new zero pose. The new zero coordinate system will not change the fact that the Y axis 561 | * is up in the real world, so the next pose returned from GetDeviceToAbsoluteTrackingPose after a call to 562 | * ResetSeatedZeroPose may not be exactly an identity matrix. */ 563 | virtual void ResetSeatedZeroPose() = 0; 564 | 565 | /** Returns the transform from the seated zero pose to the standing absolute tracking system. This allows 566 | * applications to represent the seated origin to used or transform object positions from one coordinate 567 | * system to the other. 568 | * 569 | * The seated origin may or may not be inside the soft or hard bounds returned by IVRChaperone. Its position 570 | * depends on what the user has set in the chaperone calibration tool and previous calls to ResetSeatedZeroPose. */ 571 | virtual HmdMatrix34_t GetSeatedZeroPoseToStandingAbsoluteTrackingPose() = 0; 572 | 573 | // ------------------------------------ 574 | // RenderModel methods 575 | // ------------------------------------ 576 | 577 | /** Loads and returns a render model for use in the application. pchRenderModelName should be a render model name 578 | * from the Prop_RenderModelName_String property or an absolute path name to a render model on disk. 579 | * 580 | * The resulting render model is valid until VR_Shutdown() is called or until FreeRenderModel() is called. When the 581 | * application is finished with the render model it should call FreeRenderModel() to free the memory associated 582 | * with the model. 583 | * 584 | * The method returns false if the model could not be loaded. 585 | * 586 | * The API expects that this function will be called at startup or when tracked devices are connected and disconnected. 587 | * If it is called every frame it will hurt performance. 588 | */ 589 | virtual bool LoadRenderModel( const char *pchRenderModelName, RenderModel_t *pRenderModel ) = 0; 590 | 591 | 592 | /** Frees a previously returned render model */ 593 | virtual void FreeRenderModel( RenderModel_t *pRenderModel ) = 0; 594 | 595 | // ------------------------------------ 596 | // Property methods 597 | // ------------------------------------ 598 | 599 | /** Returns the device class of a tracked device. If there has not been a device connected in this slot 600 | * since the application started this function will return TrackedDevice_Invalid. For previous detected 601 | * devices the function will return the previously observed device class. 602 | * 603 | * To determine which devices exist on the system, just loop from 0 to k_unMaxTrackedDeviceCount and check 604 | * the device class. Every device with something other than TrackedDevice_Invalid is associated with an 605 | * actual tracked device. */ 606 | virtual TrackedDeviceClass GetTrackedDeviceClass( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; 607 | 608 | /** Returns true if there is a device connected in this slot. */ 609 | virtual bool IsTrackedDeviceConnected( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; 610 | 611 | /** Returns a bool property. If the device index is not valid or the property is not a bool type this function will return false. */ 612 | virtual bool GetBoolTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, TrackedPropertyError *pError = 0L ) = 0; 613 | 614 | /** Returns a float property. If the device index is not valid or the property is not a float type this function will return 0. */ 615 | virtual float GetFloatTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, TrackedPropertyError *pError = 0L ) = 0; 616 | 617 | /** Returns an int property. If the device index is not valid or the property is not a int type this function will return 0. */ 618 | virtual int32_t GetInt32TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, TrackedPropertyError *pError = 0L ) = 0; 619 | 620 | /** Returns a uint64 property. If the device index is not valid or the property is not a uint64 type this function will return 0. */ 621 | virtual uint64_t GetUint64TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, TrackedPropertyError *pError = 0L ) = 0; 622 | 623 | /** Returns a matrix property. If the device index is not valid or the property is not a matrix type, this function will return identity. */ 624 | virtual HmdMatrix34_t GetMatrix34TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, TrackedPropertyError *pError = 0L ) = 0; 625 | 626 | /** Returns a string property. If the device index is not valid or the property is not a float type this function will 627 | * return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing 628 | * null. Strings will generally fit in buffers of k_unTrackingStringSize characters. */ 629 | virtual uint32_t GetStringTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, TrackedDeviceProperty prop, VR_OUT_STRING() char *pchValue, uint32_t unBufferSize, TrackedPropertyError *pError = 0L ) = 0; 630 | 631 | /** returns a string that corresponds with the specified property error. The string will be the name 632 | * of the error enum value for all valid error codes */ 633 | virtual const char *GetPropErrorNameFromEnum( TrackedPropertyError error ) = 0; 634 | 635 | // ------------------------------------ 636 | // Event methods 637 | // ------------------------------------ 638 | 639 | /** Returns true and fills the event with the next event on the queue if there is one. If there are no events 640 | * this method returns false */ 641 | virtual bool PollNextEvent( VREvent_t *pEvent ) = 0; 642 | 643 | /** Returns true and fills the event with the next event on the queue if there is one. If there are no events 644 | * this method returns false. Fills in the pose of the associated tracked device in the provided pose struct. 645 | * This pose will always be older than the call to this function and should not be used to render the device. */ 646 | virtual bool PollNextEventWithPose( TrackingUniverseOrigin eOrigin, vr::VREvent_t *pEvent, vr::TrackedDevicePose_t *pTrackedDevicePose ) = 0; 647 | 648 | /** returns the name of an EVREvent enum value */ 649 | virtual const char *GetEventTypeNameFromEnum( EVREventType eType ) = 0; 650 | 651 | // ------------------------------------ 652 | // Rendering helper methods 653 | // ------------------------------------ 654 | 655 | /** Returns the stencil mesh information for the current HMD. If this HMD does not have a stencil mesh the vertex data and count will be 656 | * NULL and 0 respectively. This mesh is meant to be rendered into the stencil buffer (or into the depth buffer setting nearz) before rendering 657 | * each eye's view. The pixels covered by this mesh will never be seen by the user after the lens distortion is applied and based on visibility to the panels. 658 | * This will improve perf by letting the GPU early-reject pixels the user will never see before running the pixel shader. 659 | * NOTE: Render this mesh with backface culling disabled since the winding order of the vertices can be different per-HMD or per-eye. 660 | */ 661 | virtual HiddenAreaMesh_t GetHiddenAreaMesh( Hmd_Eye eEye ) = 0; 662 | 663 | 664 | // ------------------------------------ 665 | // Controller methods 666 | // ------------------------------------ 667 | 668 | /** Fills the supplied struct with the current state of the controller. Returns false if the controller index 669 | * is invalid. */ 670 | virtual bool GetControllerState( vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t *pControllerState ) = 0; 671 | 672 | /** fills the supplied struct with the current state of the controller and the provided pose with the pose of 673 | * the controller when the controller state was updated most recently. Use this form if you need a precise controller 674 | * pose as input to your application when the user presses or releases a button. */ 675 | virtual bool GetControllerStateWithPose( TrackingUniverseOrigin eOrigin, vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t *pControllerState, TrackedDevicePose_t *pTrackedDevicePose ) = 0; 676 | 677 | /** Trigger a single haptic pulse on a controller. After this call the application may not trigger another haptic pulse on this controller 678 | * and axis combination for 5ms. */ 679 | virtual void TriggerHapticPulse( vr::TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec ) = 0; 680 | 681 | /** returns the name of an EVRButtonId enum value */ 682 | virtual const char *GetButtonIdNameFromEnum( EVRButtonId eButtonId ) = 0; 683 | 684 | /** returns the name of an EVRControllerAxisType enum value */ 685 | virtual const char *GetControllerAxisTypeNameFromEnum( EVRControllerAxisType eAxisType ) = 0; 686 | 687 | /** Processes mouse input from the specified controller as though it were a mouse pointed at a compositor overlay with the 688 | * specified settings. The controller is treated like a laser pointer on the -z axis. The point where the laser pointer would 689 | * intersect with the overlay is the mouse position, the trigger is left mouse, and the track pad is right mouse. When using 690 | * system event output the caller should ensure that it has focus so that it receives the system events. 691 | * 692 | * Return true if the controller is pointed at the overlay and an event was generated. */ 693 | virtual bool HandleControllerOverlayInteractionAsMouse( const vr::Compositor_OverlaySettings & overlaySettings, 694 | vr::HmdVector2_t vecWindowClientPositionOnScreen, vr::HmdVector2_t vecWindowClientSize, 695 | vr::TrackedDeviceIndex_t unControllerDeviceIndex, 696 | vr::EVRControllerEventOutputType eOutputType 697 | ) = 0; 698 | 699 | /** Tells OpenVR that this process wants exclusive access to controller button states and button events. Other apps will be notified that 700 | * they have lost input focus with a VREvent_InputFocusCaptured event. Returns false if input focus could not be captured for 701 | * some reason. */ 702 | virtual bool CaptureInputFocus() = 0; 703 | 704 | /** Tells OpenVR that this process no longer wants exclusive access to button states and button events. Other apps will be notified 705 | * that input focus has been released with a VREvent_InputFocusReleased event. */ 706 | virtual void ReleaseInputFocus() = 0; 707 | 708 | /** Returns true if input focus is captured by another process. */ 709 | virtual bool IsInputFocusCapturedByAnotherProcess() = 0; 710 | }; 711 | 712 | static const char * const IVRSystem_Version = "IVRSystem_003"; 713 | 714 | } 715 | 716 | // ivrchaperone.h 717 | namespace vr 718 | { 719 | 720 | #if defined(__linux__) || defined(__APPLE__) 721 | // The 32-bit version of gcc has the alignment requirement for uint64 and double set to 722 | // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. 723 | // The 64-bit version of gcc has the alignment requirement for these types set to 724 | // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. 725 | // The 64-bit structure packing has to match the 32-bit structure packing for each platform. 726 | #pragma pack( push, 4 ) 727 | #else 728 | #pragma pack( push, 8 ) 729 | #endif 730 | 731 | enum ChaperoneCalibrationState 732 | { 733 | // OK! 734 | ChaperoneCalibrationState_OK = 1, // Chaperone is fully calibrated and working correctly 735 | 736 | // Warnings 737 | ChaperoneCalibrationState_Warning = 100, 738 | ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved = 101, // A base station thinks that it might have moved 739 | ChaperoneCalibrationState_Warning_BaseStationRemoved = 102, // There are less base stations than when calibrated 740 | ChaperoneCalibrationState_Warning_SeatedBoundsInvalid = 103, // Seated bounds haven't been calibrated for the current tracking center 741 | 742 | // Errors 743 | ChaperoneCalibrationState_Error = 200, 744 | ChaperoneCalibrationState_Error_BaseStationUninitalized = 201, // Tracking center hasn't be calibrated for at least one of the base stations 745 | ChaperoneCalibrationState_Error_BaseStationConflict = 202, // Tracking center is calibrated, but base stations disagree on the tracking space 746 | ChaperoneCalibrationState_Error_SoftBoundsInvalid = 203, // Soft bounds haven't been calibrated for the current tracking center 747 | ChaperoneCalibrationState_Error_HardBoundsInvalid = 204, // Hard bounds haven't been calibrated for the current tracking center 748 | }; 749 | 750 | /** SOFT BOUNDS ASSUMPTIONS 751 | * Corners are in clockwise order. 752 | * Tracking space center (0,0,0) is contained within the Soft Bounds. 753 | * Angles of corners are between 25 and 155 degrees. 754 | * Quadrilateral formed is convex. 755 | * One side will run parallel to the X axis. 756 | * Height of every corner is 0Y (on the floor). */ 757 | struct ChaperoneSoftBoundsInfo_t 758 | { 759 | HmdQuad_t quadCorners; 760 | }; 761 | 762 | struct ChaperoneSeatedBoundsInfo_t 763 | { 764 | HmdVector3_t vSeatedHeadPosition; 765 | HmdVector3_t vDeskEdgePositions[ 2 ]; 766 | }; 767 | 768 | /** HIGH LEVEL TRACKING SPACE ASSUMPTIONS: 769 | * 0,0,0 is the preferred standing area center. 770 | * 0Y is the floor height. 771 | * -Z is the preferred forward facing direction. */ 772 | class IVRChaperone 773 | { 774 | public: 775 | 776 | /** Get the current state of Chaperone calibration. This state can change at any time during a session due to physical base station changes. */ 777 | virtual ChaperoneCalibrationState GetCalibrationState() = 0; 778 | 779 | /** Returns the 4 corner positions of the Soft Bounds (also know as Safe Zone and Play Space). */ 780 | virtual bool GetSoftBoundsInfo( ChaperoneSoftBoundsInfo_t *pInfo ) = 0; 781 | 782 | /** Returns the quads representing the Hard Bounds (static physical obstacles). */ 783 | virtual bool GetHardBoundsInfo( VR_OUT_ARRAY_COUNT(punQuadsCount) HmdQuad_t *pQuadsBuffer, uint32_t* punQuadsCount ) = 0; 784 | 785 | /** Returns the preferred seated position and front edge of their desk. */ 786 | virtual bool GetSeatedBoundsInfo( ChaperoneSeatedBoundsInfo_t *pInfo ) = 0; 787 | 788 | }; 789 | 790 | static const char * const IVRChaperone_Version = "IVRChaperone_002"; 791 | 792 | #pragma pack( pop ) 793 | 794 | } 795 | // ivrcompositor.h 796 | namespace vr 797 | { 798 | 799 | #if defined(__linux__) || defined(__APPLE__) 800 | // The 32-bit version of gcc has the alignment requirement for uint64 and double set to 801 | // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. 802 | // The 64-bit version of gcc has the alignment requirement for these types set to 803 | // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. 804 | // The 64-bit structure packing has to match the 32-bit structure packing for each platform. 805 | #pragma pack( push, 4 ) 806 | #else 807 | #pragma pack( push, 8 ) 808 | #endif 809 | 810 | /** Identifies the graphics API for the associated device */ 811 | enum Compositor_DeviceType 812 | { 813 | Compositor_DeviceType_None, 814 | Compositor_DeviceType_D3D9, 815 | Compositor_DeviceType_D3D9Ex, 816 | Compositor_DeviceType_D3D10, 817 | Compositor_DeviceType_D3D11, 818 | Compositor_DeviceType_OpenGL 819 | }; 820 | 821 | 822 | /** Provides a single frame's timing information to the app */ 823 | struct Compositor_FrameTiming 824 | { 825 | uint32_t size; // sizeof(Compositor_FrameTiming) 826 | double frameStart; 827 | float frameVSync; // seconds from frame start 828 | uint32_t droppedFrames; 829 | uint32_t frameIndex; 830 | vr::TrackedDevicePose_t pose; 831 | }; 832 | 833 | 834 | /** Allows the application to control what part of the provided texture will be used in the 835 | * frame buffer. */ 836 | struct Compositor_TextureBounds 837 | { 838 | float uMin, vMin; 839 | float uMax, vMax; 840 | }; 841 | 842 | #pragma pack( pop ) 843 | 844 | 845 | /** Allows the application to interact with the compositor */ 846 | class IVRCompositor 847 | { 848 | public: 849 | /** Returns the last error that occurred in the compositor */ 850 | virtual uint32_t GetLastError( VR_OUT_STRING() char* pchBuffer, uint32_t unBufferSize ) = 0; 851 | 852 | /** Turns vsync on or off on the compositor window */ 853 | virtual void SetVSync( bool bVSync ) = 0; 854 | 855 | /** Returns true if vsync is enabled in the compositor window */ 856 | virtual bool GetVSync() = 0; 857 | 858 | /** Sets gamma for the compositor window */ 859 | virtual void SetGamma( float fGamma ) = 0; 860 | 861 | /** Returns the gamma for the compositor window */ 862 | virtual float GetGamma() = 0; 863 | 864 | /** Sets the graphics device or context for the application that is going to feed 865 | * images to the compositor. The type of the pDevice parameter must match the 866 | * type that is provided: 867 | * Compositor_DeviceType_D3D9 IDirect3DDevice9* 868 | * Compositor_DeviceType_D3D9Ex IDirect3DDevice9Ex* 869 | * Compositor_DeviceType_D3D10 ID3D10Device* 870 | * Compositor_DeviceType_D3D11 ID3D11Device* 871 | * Compositor_DeviceType_OpenGL HGLRC 872 | * 873 | * Note: D3D9 and D3D9Ex are not implemented at this time 874 | */ 875 | virtual void SetGraphicsDevice( Compositor_DeviceType eType, void* pDevice ) = 0; 876 | 877 | /** Returns pose(s) to use to render scene. */ 878 | virtual void WaitGetPoses( VR_ARRAY_COUNT(unPoseArrayCount) TrackedDevicePose_t* pPoseArray, uint32_t unPoseArrayCount ) = 0; 879 | 880 | /** Updated scene texture to display. If pBounds is NULL the entire texture will be used. 881 | * 882 | * OpenGL dirty state: 883 | * glBindTexture 884 | */ 885 | virtual void Submit( Hmd_Eye eEye, void* pTexture, Compositor_TextureBounds* pBounds ) = 0; 886 | 887 | /** Clears the frame that was sent with the last call to Submit. This will cause the 888 | * compositor to show the grid until Submit is called again. */ 889 | virtual void ClearLastSubmittedFrame() = 0; 890 | 891 | /** returns the default settings that will be used for the overlay texture. Fetching these defaults 892 | * can be useful if you mostly want the default values but want to change a few settings. */ 893 | virtual void GetOverlayDefaults( Compositor_OverlaySettings* pSettings ) = 0; 894 | 895 | /** Texture to draw over the scene at distortion time. This texture will appear over the world on a quad. 896 | * The pSettings parameter controls the size and position of the quad. */ 897 | virtual void SetOverlay(void* pTexture, Compositor_OverlaySettings* pSettings ) = 0; 898 | 899 | /** Separate interface for providing the data as a stream of bytes, but there is an upper bound on data that can be sent */ 900 | virtual void SetOverlayRaw(void* buffer, uint32_t width, uint32_t height, uint32_t depth, Compositor_OverlaySettings* pSettings ) = 0; 901 | 902 | /** Separate interface for providing the image through a filename: 903 | * can be png or jpg, and should not be bigger than 1920x1080 */ 904 | virtual void SetOverlayFromFile( const char *pchFilePath, Compositor_OverlaySettings* pSettings ) = 0; 905 | 906 | /** Removes the scene overlay texture. */ 907 | virtual void ClearOverlay() = 0; 908 | 909 | /** Returns true if timing data is filled it. Sets oldest timing info if nFramesAgo is larger than the stored history. 910 | * Be sure to set timing.size = sizeof(Compositor_FrameTiming) on struct passed in before calling this function. */ 911 | virtual bool GetFrameTiming( Compositor_FrameTiming *pTiming, uint32_t unFramesAgo = 0 ) = 0; 912 | 913 | /** Fades the view on the HMD to the specified color. The fade will take fSeconds, and the color values are between 914 | * 0.0 and 1.0. This color is faded on top of the scene based on the alpha parameter. Removing the fade color instantly 915 | * would be FadeToColor( 0.0, 0.0, 0.0, 0.0, 0.0 ). */ 916 | virtual void FadeToColor( float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground = false ) = 0; 917 | 918 | /** Fading the Grid in or out in fSeconds */ 919 | virtual void FadeGrid( float fSeconds, bool bFadeIn ) = 0; 920 | 921 | /** Brings the compositor window to the front. This is useful for covering any other window that may be on the HMD 922 | * and is obscuring the compositor window. */ 923 | virtual void CompositorBringToFront() = 0; 924 | 925 | /** Pushes the compositor window to the back. This is useful for allowing other applications to draw directly to the HMD. */ 926 | virtual void CompositorGoToBack() = 0; 927 | 928 | /** Tells the compositor process to clean up and exit. You do not need to call this function at shutdown. Under normal 929 | * circumstances the compositor will manage its own life cycle based on what applications are running. */ 930 | virtual void CompositorQuit() = 0; 931 | 932 | /** Return whether the compositor is fullscreen */ 933 | virtual bool IsFullscreen() = 0; 934 | 935 | /** Computes the overlay-space pixel coordinates of where the ray intersects the overlay with the 936 | * specified settings. Returns false if there is no intersection. */ 937 | virtual bool ComputeOverlayIntersection( const Compositor_OverlaySettings* pSettings, float fAspectRatio, vr::TrackingUniverseOrigin eOrigin, vr::HmdVector3_t vSource, vr::HmdVector3_t vDirection, vr::HmdVector2_t *pvecIntersectionUV, vr::HmdVector3_t *pvecIntersectionTrackingSpace ) = 0; 938 | 939 | /** Sets tracking space returned by WaitGetPoses */ 940 | virtual void SetTrackingSpace( TrackingUniverseOrigin eOrigin ) = 0; 941 | 942 | /** Gets current tracking space returned by WaitGetPoses */ 943 | virtual TrackingUniverseOrigin GetTrackingSpace() = 0; 944 | }; 945 | 946 | static const char * const IVRCompositor_Version = "IVRCompositor_005"; 947 | 948 | } // namespace vr 949 | 950 | 951 | // ivrcontrolpanel.h 952 | namespace vr 953 | { 954 | 955 | class IVRControlPanel 956 | { 957 | public: 958 | 959 | // ------------------------------------ 960 | // Driver enumeration methods 961 | // ------------------------------------ 962 | 963 | /** the number of active drivers */ 964 | virtual uint32_t GetDriverCount() = 0; 965 | 966 | /** The ID of the specified driver as a UTF-8 string. Returns the length of the ID in bytes. If 967 | * the buffer is not large enough to fit the ID an empty string will be returned. In general, 128 bytes 968 | * will be enough to fit any ID. */ 969 | virtual uint32_t GetDriverId( uint32_t unDriverIndex, char *pchBuffer, uint32_t unBufferLen ) = 0; 970 | 971 | // ------------------------------------ 972 | // Display Enumeration Methods 973 | // ------------------------------------ 974 | 975 | /** the number of active displays on the specified driver */ 976 | virtual uint32_t GetDriverDisplayCount( const char *pchDriverId ) = 0; 977 | 978 | /** The ID of the specified display in the specified driver as a UTF-8 string. Returns the 979 | * length of the ID in bytes. If the buffer is not large enough to fit the ID an empty 980 | * string will be returned. In general, 128 bytes will be enough to fit any ID. */ 981 | virtual uint32_t GetDriverDisplayId( const char *pchDriverId, uint32_t unDisplayIndex, char *pchBuffer, uint32_t unBufferLen ) = 0; 982 | 983 | // ------------------------------------ 984 | // Display Detail Methods 985 | // ------------------------------------ 986 | 987 | /** The model name of the specified driver in the specified driver as a UTF-8 string. Returns the 988 | * length of the model name in bytes. If the buffer is not large enough to fit the model name an empty 989 | * string will be returned. In general, 128 bytes will be enough to fit any model name. Returns 0 if 990 | * the display or driver was not found. */ 991 | virtual uint32_t GetDriverDisplayModelNumber( const char *pchDriverId, const char *pchDisplayId, char *pchBuffer, uint32_t unBufferLen ) = 0; 992 | 993 | /** The serial number of the specified driver in the specified driver as a UTF-8 string. Returns the 994 | * length of the serial number in bytes. If the buffer is not large enough to fit the serial number an empty 995 | * string will be returned. In general, 128 bytes will be enough to fit any model name. Returns 0 if 996 | * the display or driver was not found. */ 997 | virtual uint32_t GetDriverDisplaySerialNumber( const char *pchDriverId, const char *pchDisplayId, char *pchBuffer, uint32_t unBufferLen ) = 0; 998 | 999 | /** Returns the IVRSystem interface for the current display that matches the specified version number. 1000 | * This is usually unnecessary and the return value of VR_Init can be used without calling this method. */ 1001 | VR_IGNOREATTR() 1002 | virtual class IVRSystem *GetCurrentDisplayInterface( const char *pchHmdInterfaceVersion ) = 0; 1003 | 1004 | // ------------------------------------ 1005 | // Shared Resource Methods 1006 | // ------------------------------------ 1007 | 1008 | /** Loads the specified resource into the provided buffer if large enough. 1009 | * Returns the size in bytes of the buffer required to hold the specified resource. */ 1010 | virtual uint32_t LoadSharedResource( const char *pchResourceName, char *pchBuffer, uint32_t unBufferLen ) = 0; 1011 | 1012 | // ------------------------------------ 1013 | // IPD Methods 1014 | // ------------------------------------ 1015 | 1016 | /** Gets the current IPD (Interpupillary Distance) in meters. */ 1017 | virtual float GetIPD() = 0; 1018 | 1019 | /** Sets the current IPD (Interpupillary Distance) in meters. */ 1020 | virtual void SetIPD( float fIPD ) = 0; 1021 | 1022 | // ------------------------------------ 1023 | // Compositor Methods 1024 | // ------------------------------------ 1025 | 1026 | /** Returns the IVRCompositor interface that matches the specified interface version. This will only 1027 | * return the compositor interface if it has already been initialized by the current process. */ 1028 | virtual class IVRCompositor *GetCurrentCompositorInterface( const char *pchInterfaceVersion ) = 0; 1029 | }; 1030 | 1031 | static const char * const IVRControlPanel_Version = "IVRControlPanel_001"; 1032 | 1033 | }// End 1034 | 1035 | #endif // _OPENVR_API 1036 | 1037 | 1038 | namespace vr 1039 | { 1040 | // figure out how to import from the VR API dll 1041 | #if defined(_WIN32) 1042 | 1043 | #ifdef VR_API_EXPORT 1044 | #define VR_INTERFACE extern "C" __declspec( dllexport ) 1045 | #else 1046 | #define VR_INTERFACE extern "C" __declspec( dllimport ) 1047 | #endif 1048 | 1049 | #elif defined(GNUC) || defined(COMPILER_GCC) 1050 | 1051 | #ifdef VR_API_EXPORT 1052 | #define VR_INTERFACE extern "C" __attribute__((visibility("default"))) 1053 | #else 1054 | #define VR_INTERFACE extern "C" 1055 | #endif 1056 | 1057 | #else 1058 | #error "Unsupported Platform." 1059 | #endif 1060 | 1061 | 1062 | #if defined( _WIN32 ) 1063 | #define VR_CALLTYPE __cdecl 1064 | #else 1065 | #define VR_CALLTYPE 1066 | #endif 1067 | 1068 | /** Finds the active installation of the VR API and initializes it. The provided path must be absolute 1069 | * or relative to the current working directory. These are the local install versions of the equivalent 1070 | * functions in steamvr.h and will work without a local Steam install. 1071 | * 1072 | * This path is to the "root" of the VR API install. That's the directory with 1073 | * the "drivers" directory and a platform (i.e. "win32") directory in it, not the directory with the DLL itself. 1074 | */ 1075 | VR_INTERFACE vr::IVRSystem *VR_CALLTYPE VR_Init( vr::HmdError *peError ); 1076 | 1077 | /** unloads vrclient.dll. Any interface pointers from the interface are 1078 | * invalid after this point */ 1079 | VR_INTERFACE void VR_CALLTYPE VR_Shutdown(); 1080 | 1081 | /** Returns true if there is an HMD attached. This check is as lightweight as possible and 1082 | * can be called outside of VR_Init/VR_Shutdown. It should be used when an application wants 1083 | * to know if initializing VR is a possibility but isn't ready to take that step yet. 1084 | */ 1085 | VR_INTERFACE bool VR_CALLTYPE VR_IsHmdPresent(); 1086 | 1087 | /** Returns the string version of an HMD error. This function may be called outside of VR_Init()/VR_Shutdown(). */ 1088 | VR_INTERFACE const char *VR_CALLTYPE VR_GetStringForHmdError( vr::HmdError error ); 1089 | 1090 | /** Returns the interface of the specified version. This method must be called after VR_Init. The 1091 | * pointer returned is valid until VR_Shutdown is called. 1092 | */ 1093 | VR_INTERFACE void *VR_CALLTYPE VR_GetGenericInterface( const char *pchInterfaceVersion, vr::HmdError *peError ); 1094 | 1095 | } -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/headers/openvr_api.json: -------------------------------------------------------------------------------- 1 | {"typedefs":[{"typedef": "vr::TrackedDeviceIndex_t","type": "uint32_t"} 2 | ,{"typedef": "vr::VREvent_Data_t","type": "union VREvent_Data_t"} 3 | ,{"typedef": "vr::VRControllerState_t","type": "struct vr::VRControllerState001_t"} 4 | ], 5 | "enums":[ 6 | {"enumname": "vr::Hmd_Eye","values": [ 7 | {"name": "Eye_Left","value": "0"} 8 | ,{"name": "Eye_Right","value": "1"} 9 | ]} 10 | , {"enumname": "vr::GraphicsAPIConvention","values": [ 11 | {"name": "API_DirectX","value": "0"} 12 | ,{"name": "API_OpenGL","value": "1"} 13 | ]} 14 | , {"enumname": "vr::HmdTrackingResult","values": [ 15 | {"name": "TrackingResult_Uninitialized","value": "1"} 16 | ,{"name": "TrackingResult_Calibrating_InProgress","value": "100"} 17 | ,{"name": "TrackingResult_Calibrating_OutOfRange","value": "101"} 18 | ,{"name": "TrackingResult_Running_OK","value": "200"} 19 | ,{"name": "TrackingResult_Running_OutOfRange","value": "201"} 20 | ]} 21 | , {"enumname": "vr::TrackedDeviceClass","values": [ 22 | {"name": "TrackedDeviceClass_Invalid","value": "0"} 23 | ,{"name": "TrackedDeviceClass_HMD","value": "1"} 24 | ,{"name": "TrackedDeviceClass_Controller","value": "2"} 25 | ,{"name": "TrackedDeviceClass_TrackingReference","value": "4"} 26 | ,{"name": "TrackedDeviceClass_Other","value": "1000"} 27 | ]} 28 | , {"enumname": "vr::TrackingUniverseOrigin","values": [ 29 | {"name": "TrackingUniverseSeated","value": "0"} 30 | ,{"name": "TrackingUniverseStanding","value": "1"} 31 | ,{"name": "TrackingUniverseRawAndUncalibrated","value": "2"} 32 | ]} 33 | , {"enumname": "vr::TrackedDeviceProperty","values": [ 34 | {"name": "Prop_TrackingSystemName_String","value": "1000"} 35 | ,{"name": "Prop_ModelNumber_String","value": "1001"} 36 | ,{"name": "Prop_SerialNumber_String","value": "1002"} 37 | ,{"name": "Prop_RenderModelName_String","value": "1003"} 38 | ,{"name": "Prop_WillDriftInYaw_Bool","value": "1004"} 39 | ,{"name": "Prop_ManufacturerName_String","value": "1005"} 40 | ,{"name": "Prop_TrackingFirmwareVersion_String","value": "1006"} 41 | ,{"name": "Prop_HardwareRevision_String","value": "1007"} 42 | ,{"name": "Prop_ReportsTimeSinceVSync_Bool","value": "2000"} 43 | ,{"name": "Prop_SecondsFromVsyncToPhotons_Float","value": "2001"} 44 | ,{"name": "Prop_DisplayFrequency_Float","value": "2002"} 45 | ,{"name": "Prop_UserIpdMeters_Float","value": "2003"} 46 | ,{"name": "Prop_CurrentUniverseId_Uint64","value": "2004"} 47 | ,{"name": "Prop_PreviousUniverseId_Uint64","value": "2005"} 48 | ,{"name": "Prop_DisplayFirmwareVersion_String","value": "2006"} 49 | ,{"name": "Prop_AttachedDeviceId_String","value": "3000"} 50 | ,{"name": "Prop_SupportedButtons_Uint64","value": "3001"} 51 | ,{"name": "Prop_Axis0Type_Int32","value": "3002"} 52 | ,{"name": "Prop_Axis1Type_Int32","value": "3003"} 53 | ,{"name": "Prop_Axis2Type_Int32","value": "3004"} 54 | ,{"name": "Prop_Axis3Type_Int32","value": "3005"} 55 | ,{"name": "Prop_Axis4Type_Int32","value": "3006"} 56 | ,{"name": "Prop_FieldOfViewLeftDegrees_Float","value": "4000"} 57 | ,{"name": "Prop_FieldOfViewRightDegrees_Float","value": "4001"} 58 | ,{"name": "Prop_FieldOfViewTopDegrees_Float","value": "4002"} 59 | ,{"name": "Prop_FieldOfViewBottomDegrees_Float","value": "4003"} 60 | ,{"name": "Prop_TrackingRangeMinimumMeters_Float","value": "4004"} 61 | ,{"name": "Prop_TrackingRangeMaximumMeters_Float","value": "4005"} 62 | ]} 63 | , {"enumname": "vr::TrackedPropertyError","values": [ 64 | {"name": "TrackedProp_Success","value": "0"} 65 | ,{"name": "TrackedProp_WrongDataType","value": "1"} 66 | ,{"name": "TrackedProp_WrongDeviceClass","value": "2"} 67 | ,{"name": "TrackedProp_BufferTooSmall","value": "3"} 68 | ,{"name": "TrackedProp_UnknownProperty","value": "4"} 69 | ,{"name": "TrackedProp_InvalidDevice","value": "5"} 70 | ,{"name": "TrackedProp_CouldNotContactServer","value": "6"} 71 | ,{"name": "TrackedProp_ValueNotProvidedByDevice","value": "7"} 72 | ,{"name": "TrackedProp_StringExceedsMaximumLength","value": "8"} 73 | ]} 74 | , {"enumname": "vr::EVREventType","values": [ 75 | {"name": "VREvent_None","value": "0"} 76 | ,{"name": "VREvent_TrackedDeviceActivated","value": "100"} 77 | ,{"name": "VREvent_TrackedDeviceDeactivated","value": "101"} 78 | ,{"name": "VREvent_TrackedDeviceUpdated","value": "102"} 79 | ,{"name": "VREvent_ButtonPress","value": "200"} 80 | ,{"name": "VREvent_ButtonUnpress","value": "201"} 81 | ,{"name": "VREvent_ButtonTouch","value": "202"} 82 | ,{"name": "VREvent_ButtonUntouch","value": "203"} 83 | ,{"name": "VREvent_MouseMove","value": "300"} 84 | ,{"name": "VREvent_MouseButtonDown","value": "301"} 85 | ,{"name": "VREvent_MouseButtonUp","value": "302"} 86 | ,{"name": "VREvent_InputFocusCaptured","value": "400"} 87 | ,{"name": "VREvent_InputFocusReleased","value": "401"} 88 | ]} 89 | , {"enumname": "vr::EVRButtonId","values": [ 90 | {"name": "k_EButton_System","value": "0"} 91 | ,{"name": "k_EButton_ApplicationMenu","value": "1"} 92 | ,{"name": "k_EButton_Grip","value": "2"} 93 | ,{"name": "k_EButton_Axis0","value": "32"} 94 | ,{"name": "k_EButton_Axis1","value": "33"} 95 | ,{"name": "k_EButton_Axis2","value": "34"} 96 | ,{"name": "k_EButton_Axis3","value": "35"} 97 | ,{"name": "k_EButton_Axis4","value": "36"} 98 | ,{"name": "k_EButton_SteamVR_Touchpad","value": "32"} 99 | ,{"name": "k_EButton_SteamVR_Trigger","value": "33"} 100 | ,{"name": "k_EButton_Max","value": "64"} 101 | ]} 102 | , {"enumname": "vr::EVRMouseButton","values": [ 103 | {"name": "VRMouseButton_Left","value": "1"} 104 | ,{"name": "VRMouseButton_Right","value": "2"} 105 | ,{"name": "VRMouseButton_Middle","value": "4"} 106 | ]} 107 | , {"enumname": "vr::EVRControllerAxisType","values": [ 108 | {"name": "k_eControllerAxis_None","value": "0"} 109 | ,{"name": "k_eControllerAxis_TrackPad","value": "1"} 110 | ,{"name": "k_eControllerAxis_Joystick","value": "2"} 111 | ,{"name": "k_eControllerAxis_Trigger","value": "3"} 112 | ]} 113 | , {"enumname": "vr::EVRControllerEventOutputType","values": [ 114 | {"name": "ControllerEventOutput_OSEvents","value": "0"} 115 | ,{"name": "ControllerEventOutput_VREvents","value": "1"} 116 | ]} 117 | , {"enumname": "vr::HmdError","values": [ 118 | {"name": "HmdError_None","value": "0"} 119 | ,{"name": "HmdError_Unknown","value": "1"} 120 | ,{"name": "HmdError_Init_InstallationNotFound","value": "100"} 121 | ,{"name": "HmdError_Init_InstallationCorrupt","value": "101"} 122 | ,{"name": "HmdError_Init_VRClientDLLNotFound","value": "102"} 123 | ,{"name": "HmdError_Init_FileNotFound","value": "103"} 124 | ,{"name": "HmdError_Init_FactoryNotFound","value": "104"} 125 | ,{"name": "HmdError_Init_InterfaceNotFound","value": "105"} 126 | ,{"name": "HmdError_Init_InvalidInterface","value": "106"} 127 | ,{"name": "HmdError_Init_UserConfigDirectoryInvalid","value": "107"} 128 | ,{"name": "HmdError_Init_HmdNotFound","value": "108"} 129 | ,{"name": "HmdError_Init_NotInitialized","value": "109"} 130 | ,{"name": "HmdError_Init_PathRegistryNotFound","value": "110"} 131 | ,{"name": "HmdError_Init_NoConfigPath","value": "111"} 132 | ,{"name": "HmdError_Init_NoLogPath","value": "112"} 133 | ,{"name": "HmdError_Init_PathRegistryNotWritable","value": "113"} 134 | ,{"name": "HmdError_Driver_Failed","value": "200"} 135 | ,{"name": "HmdError_Driver_Unknown","value": "201"} 136 | ,{"name": "HmdError_Driver_HmdUnknown","value": "202"} 137 | ,{"name": "HmdError_Driver_NotLoaded","value": "203"} 138 | ,{"name": "HmdError_Driver_RuntimeOutOfDate","value": "204"} 139 | ,{"name": "HmdError_Driver_HmdInUse","value": "205"} 140 | ,{"name": "HmdError_IPC_ServerInitFailed","value": "300"} 141 | ,{"name": "HmdError_IPC_ConnectFailed","value": "301"} 142 | ,{"name": "HmdError_IPC_SharedStateInitFailed","value": "302"} 143 | ,{"name": "HmdError_IPC_CompositorInitFailed","value": "303"} 144 | ,{"name": "HmdError_IPC_MutexInitFailed","value": "304"} 145 | ,{"name": "HmdError_VendorSpecific_UnableToConnectToOculusRuntime","value": "1000"} 146 | ,{"name": "HmdError_Steam_SteamInstallationNotFound","value": "2000"} 147 | ]} 148 | , {"enumname": "vr::CameraImageResult","values": [ 149 | {"name": "CameraImageResult_OK","value": "0"} 150 | ,{"name": "CameraImageResult_Uninitalized","value": "1"} 151 | ,{"name": "CameraImageResult_NotReady","value": "2"} 152 | ,{"name": "CameraImageResult_SameFrame","value": "3"} 153 | ]} 154 | , {"enumname": "vr::ChaperoneCalibrationState","values": [ 155 | {"name": "ChaperoneCalibrationState_OK","value": "1"} 156 | ,{"name": "ChaperoneCalibrationState_Warning","value": "100"} 157 | ,{"name": "ChaperoneCalibrationState_Warning_BaseStationMayHaveMoved","value": "101"} 158 | ,{"name": "ChaperoneCalibrationState_Warning_BaseStationRemoved","value": "102"} 159 | ,{"name": "ChaperoneCalibrationState_Warning_SeatedBoundsInvalid","value": "103"} 160 | ,{"name": "ChaperoneCalibrationState_Error","value": "200"} 161 | ,{"name": "ChaperoneCalibrationState_Error_BaseStationUninitalized","value": "201"} 162 | ,{"name": "ChaperoneCalibrationState_Error_BaseStationConflict","value": "202"} 163 | ,{"name": "ChaperoneCalibrationState_Error_SoftBoundsInvalid","value": "203"} 164 | ,{"name": "ChaperoneCalibrationState_Error_HardBoundsInvalid","value": "204"} 165 | ]} 166 | , {"enumname": "vr::Compositor_DeviceType","values": [ 167 | {"name": "Compositor_DeviceType_None","value": "0"} 168 | ,{"name": "Compositor_DeviceType_D3D9","value": "1"} 169 | ,{"name": "Compositor_DeviceType_D3D9Ex","value": "2"} 170 | ,{"name": "Compositor_DeviceType_D3D10","value": "3"} 171 | ,{"name": "Compositor_DeviceType_D3D11","value": "4"} 172 | ,{"name": "Compositor_DeviceType_OpenGL","value": "5"} 173 | ]} 174 | ], 175 | "consts":[{ 176 | "constname": "k_unTrackingStringSize","consttype": "const uint32_t", "constval": "32"} 177 | ,{ 178 | "constname": "k_unMaxTrackedDeviceCount","consttype": "const uint32_t", "constval": "16"} 179 | ,{ 180 | "constname": "k_unTrackedDeviceIndex_Hmd","consttype": "const uint32_t", "constval": "0"} 181 | ,{ 182 | "constname": "k_unTrackedDeviceIndexInvalid","consttype": "const uint32_t", "constval": "4294967295"} 183 | ,{ 184 | "constname": "k_unMaxPropertyStringSize","consttype": "const uint32_t", "constval": "32768"} 185 | ,{ 186 | "constname": "k_unControllerStateAxisCount","consttype": "const uint32_t", "constval": "5"} 187 | ,{ 188 | "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_003"} 189 | ,{ 190 | "constname": "IVRCameraAccess_Version","consttype": "const char *const", "constval": "IVRCameraAccess_001"} 191 | ,{ 192 | "constname": "IVRChaperone_Version","consttype": "const char *const", "constval": "IVRChaperone_002"} 193 | ,{ 194 | "constname": "IVRChaperoneSetup_Version","consttype": "const char *const", "constval": "IVRChaperoneSetup_001"} 195 | ,{ 196 | "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_005"} 197 | ], 198 | "structs":[{"struct": "vr::HmdMatrix34_t","fields": [ 199 | { "fieldname": "m", "fieldtype": "float [3][4]"}]} 200 | ,{"struct": "vr::HmdMatrix44_t","fields": [ 201 | { "fieldname": "m", "fieldtype": "float [4][4]"}]} 202 | ,{"struct": "vr::HmdVector3_t","fields": [ 203 | { "fieldname": "v", "fieldtype": "float [3]"}]} 204 | ,{"struct": "vr::HmdVector3d_t","fields": [ 205 | { "fieldname": "v", "fieldtype": "double [3]"}]} 206 | ,{"struct": "vr::HmdVector2_t","fields": [ 207 | { "fieldname": "v", "fieldtype": "float [2]"}]} 208 | ,{"struct": "vr::HmdQuaternion_t","fields": [ 209 | { "fieldname": "w", "fieldtype": "double"}, 210 | { "fieldname": "x", "fieldtype": "double"}, 211 | { "fieldname": "y", "fieldtype": "double"}, 212 | { "fieldname": "z", "fieldtype": "double"}]} 213 | ,{"struct": "vr::HmdQuad_t","fields": [ 214 | { "fieldname": "vCorners", "fieldtype": "struct vr::HmdVector3_t [4]"}]} 215 | ,{"struct": "vr::DistortionCoordinates_t","fields": [ 216 | { "fieldname": "rfRed", "fieldtype": "float [2]"}, 217 | { "fieldname": "rfGreen", "fieldtype": "float [2]"}, 218 | { "fieldname": "rfBlue", "fieldtype": "float [2]"}]} 219 | ,{"struct": "vr::TrackedDevicePose_t","fields": [ 220 | { "fieldname": "mDeviceToAbsoluteTracking", "fieldtype": "struct vr::HmdMatrix34_t"}, 221 | { "fieldname": "vVelocity", "fieldtype": "struct vr::HmdVector3_t"}, 222 | { "fieldname": "vAngularVelocity", "fieldtype": "struct vr::HmdVector3_t"}, 223 | { "fieldname": "eTrackingResult", "fieldtype": "enum vr::HmdTrackingResult"}, 224 | { "fieldname": "bPoseIsValid", "fieldtype": "_Bool"}, 225 | { "fieldname": "bDeviceIsConnected", "fieldtype": "_Bool"}]} 226 | ,{"struct": "vr::RenderModel_Vertex_t","fields": [ 227 | { "fieldname": "vPosition", "fieldtype": "struct vr::HmdVector3_t"}, 228 | { "fieldname": "vNormal", "fieldtype": "struct vr::HmdVector3_t"}, 229 | { "fieldname": "rfTextureCoord", "fieldtype": "float [2]"}]} 230 | ,{"struct": "vr::RenderModel_TextureMap_t","fields": [ 231 | { "fieldname": "unWidth", "fieldtype": "uint16_t"}, 232 | { "fieldname": "unHeight", "fieldtype": "uint16_t"}, 233 | { "fieldname": "rubTextureMapData", "fieldtype": "const uint8_t *"}]} 234 | ,{"struct": "vr::RenderModel_t","fields": [ 235 | { "fieldname": "ulInternalHandle", "fieldtype": "uint64_t"}, 236 | { "fieldname": "rVertexData", "fieldtype": "const struct vr::RenderModel_Vertex_t *"}, 237 | { "fieldname": "unVertexCount", "fieldtype": "uint32_t"}, 238 | { "fieldname": "rIndexData", "fieldtype": "const uint16_t *"}, 239 | { "fieldname": "unTriangleCount", "fieldtype": "uint32_t"}, 240 | { "fieldname": "diffuseTexture", "fieldtype": "struct vr::RenderModel_TextureMap_t"}]} 241 | ,{"struct": "vr::VREvent_Controller_t","fields": [ 242 | { "fieldname": "button", "fieldtype": "enum vr::EVRButtonId"}]} 243 | ,{"struct": "vr::VREvent_Mouse_t","fields": [ 244 | { "fieldname": "x", "fieldtype": "float"}, 245 | { "fieldname": "y", "fieldtype": "float"}, 246 | { "fieldname": "button", "fieldtype": "enum vr::EVRMouseButton"}]} 247 | ,{"struct": "vr::VREvent_Process_t","fields": [ 248 | { "fieldname": "pid", "fieldtype": "uint32_t"}, 249 | { "fieldname": "oldPid", "fieldtype": "uint32_t"}]} 250 | ,{"struct": "vr::VREvent_Reserved_t","fields": [ 251 | { "fieldname": "reserved0", "fieldtype": "uint64_t"}, 252 | { "fieldname": "reserved1", "fieldtype": "uint64_t"}]} 253 | ,{"struct": "vr::(anonymous)","fields": [ 254 | { "fieldname": "reserved", "fieldtype": "struct vr::VREvent_Reserved_t"}, 255 | { "fieldname": "controller", "fieldtype": "struct vr::VREvent_Controller_t"}, 256 | { "fieldname": "mouse", "fieldtype": "struct vr::VREvent_Mouse_t"}, 257 | { "fieldname": "process", "fieldtype": "struct vr::VREvent_Process_t"}]} 258 | ,{"struct": "vr::VREvent_t","fields": [ 259 | { "fieldname": "eventType", "fieldtype": "enum vr::EVREventType"}, 260 | { "fieldname": "trackedDeviceIndex", "fieldtype": "TrackedDeviceIndex_t"}, 261 | { "fieldname": "data", "fieldtype": "VREvent_Data_t"}, 262 | { "fieldname": "eventAgeSeconds", "fieldtype": "float"}]} 263 | ,{"struct": "vr::HiddenAreaMesh_t","fields": [ 264 | { "fieldname": "pVertexData", "fieldtype": "const struct vr::HmdVector2_t *"}, 265 | { "fieldname": "unTriangleCount", "fieldtype": "uint32_t"}]} 266 | ,{"struct": "vr::VRControllerAxis_t","fields": [ 267 | { "fieldname": "x", "fieldtype": "float"}, 268 | { "fieldname": "y", "fieldtype": "float"}]} 269 | ,{"struct": "vr::VRControllerState001_t","fields": [ 270 | { "fieldname": "unPacketNum", "fieldtype": "uint32_t"}, 271 | { "fieldname": "ulButtonPressed", "fieldtype": "uint64_t"}, 272 | { "fieldname": "ulButtonTouched", "fieldtype": "uint64_t"}, 273 | { "fieldname": "rAxis", "fieldtype": "struct vr::VRControllerAxis_t [5]"}]} 274 | ,{"struct": "vr::Compositor_OverlaySettings","fields": [ 275 | { "fieldname": "size", "fieldtype": "uint32_t"}, 276 | { "fieldname": "curved", "fieldtype": "_Bool"}, 277 | { "fieldname": "antialias", "fieldtype": "_Bool"}, 278 | { "fieldname": "scale", "fieldtype": "float"}, 279 | { "fieldname": "distance", "fieldtype": "float"}, 280 | { "fieldname": "alpha", "fieldtype": "float"}, 281 | { "fieldname": "uOffset", "fieldtype": "float"}, 282 | { "fieldname": "vOffset", "fieldtype": "float"}, 283 | { "fieldname": "uScale", "fieldtype": "float"}, 284 | { "fieldname": "vScale", "fieldtype": "float"}, 285 | { "fieldname": "gridDivs", "fieldtype": "float"}, 286 | { "fieldname": "gridWidth", "fieldtype": "float"}, 287 | { "fieldname": "gridScale", "fieldtype": "float"}, 288 | { "fieldname": "transform", "fieldtype": "struct vr::HmdMatrix44_t"}]} 289 | ,{"struct": "vr::CameraInfo_t","fields": [ 290 | { "fieldname": "width", "fieldtype": "uint32_t"}, 291 | { "fieldname": "height", "fieldtype": "uint32_t"}, 292 | { "fieldname": "depth", "fieldtype": "uint32_t"}, 293 | { "fieldname": "fx", "fieldtype": "float"}, 294 | { "fieldname": "cx", "fieldtype": "float"}, 295 | { "fieldname": "fy", "fieldtype": "float"}, 296 | { "fieldname": "cy", "fieldtype": "float"}]} 297 | ,{"struct": "vr::CameraImage_t","fields": [ 298 | { "fieldname": "frameID", "fieldtype": "int32_t"}, 299 | { "fieldname": "pose", "fieldtype": "struct vr::HmdMatrix34_t"}, 300 | { "fieldname": "pBuffer", "fieldtype": "unsigned char *"}, 301 | { "fieldname": "unBufferLen", "fieldtype": "uint32_t"}, 302 | { "fieldname": "result", "fieldtype": "enum vr::CameraImageResult"}]} 303 | ,{"struct": "vr::ChaperoneSoftBoundsInfo_t","fields": [ 304 | { "fieldname": "quadCorners", "fieldtype": "struct vr::HmdQuad_t"}]} 305 | ,{"struct": "vr::ChaperoneSeatedBoundsInfo_t","fields": [ 306 | { "fieldname": "vSeatedHeadPosition", "fieldtype": "struct vr::HmdVector3_t"}, 307 | { "fieldname": "vDeskEdgePositions", "fieldtype": "struct vr::HmdVector3_t [2]"}]} 308 | ,{"struct": "vr::Compositor_FrameTiming","fields": [ 309 | { "fieldname": "size", "fieldtype": "uint32_t"}, 310 | { "fieldname": "frameStart", "fieldtype": "double"}, 311 | { "fieldname": "frameVSync", "fieldtype": "float"}, 312 | { "fieldname": "droppedFrames", "fieldtype": "uint32_t"}, 313 | { "fieldname": "frameIndex", "fieldtype": "uint32_t"}, 314 | { "fieldname": "pose", "fieldtype": "vr::TrackedDevicePose_t"}]} 315 | ,{"struct": "vr::Compositor_TextureBounds","fields": [ 316 | { "fieldname": "uMin", "fieldtype": "float"}, 317 | { "fieldname": "vMin", "fieldtype": "float"}, 318 | { "fieldname": "uMax", "fieldtype": "float"}, 319 | { "fieldname": "vMax", "fieldtype": "float"}]} 320 | ], 321 | "methods":[{ 322 | "classname": "vr::IVRSystem", 323 | "methodname": "GetWindowBounds", 324 | "returntype": "void", 325 | "params": [ 326 | { "paramname": "pnX" ,"paramtype": "int32_t *"}, 327 | { "paramname": "pnY" ,"paramtype": "int32_t *"}, 328 | { "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, 329 | { "paramname": "pnHeight" ,"paramtype": "uint32_t *"} 330 | ] 331 | } 332 | ,{ 333 | "classname": "vr::IVRSystem", 334 | "methodname": "GetRecommendedRenderTargetSize", 335 | "returntype": "void", 336 | "params": [ 337 | { "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, 338 | { "paramname": "pnHeight" ,"paramtype": "uint32_t *"} 339 | ] 340 | } 341 | ,{ 342 | "classname": "vr::IVRSystem", 343 | "methodname": "GetEyeOutputViewport", 344 | "returntype": "void", 345 | "params": [ 346 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"}, 347 | { "paramname": "pnX" ,"paramtype": "uint32_t *"}, 348 | { "paramname": "pnY" ,"paramtype": "uint32_t *"}, 349 | { "paramname": "pnWidth" ,"paramtype": "uint32_t *"}, 350 | { "paramname": "pnHeight" ,"paramtype": "uint32_t *"} 351 | ] 352 | } 353 | ,{ 354 | "classname": "vr::IVRSystem", 355 | "methodname": "GetProjectionMatrix", 356 | "returntype": "struct vr::HmdMatrix44_t", 357 | "params": [ 358 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"}, 359 | { "paramname": "fNearZ" ,"paramtype": "float"}, 360 | { "paramname": "fFarZ" ,"paramtype": "float"}, 361 | { "paramname": "eProjType" ,"paramtype": "vr::GraphicsAPIConvention"} 362 | ] 363 | } 364 | ,{ 365 | "classname": "vr::IVRSystem", 366 | "methodname": "GetProjectionRaw", 367 | "returntype": "void", 368 | "params": [ 369 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"}, 370 | { "paramname": "pfLeft" ,"paramtype": "float *"}, 371 | { "paramname": "pfRight" ,"paramtype": "float *"}, 372 | { "paramname": "pfTop" ,"paramtype": "float *"}, 373 | { "paramname": "pfBottom" ,"paramtype": "float *"} 374 | ] 375 | } 376 | ,{ 377 | "classname": "vr::IVRSystem", 378 | "methodname": "ComputeDistortion", 379 | "returntype": "struct vr::DistortionCoordinates_t", 380 | "params": [ 381 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"}, 382 | { "paramname": "fU" ,"paramtype": "float"}, 383 | { "paramname": "fV" ,"paramtype": "float"} 384 | ] 385 | } 386 | ,{ 387 | "classname": "vr::IVRSystem", 388 | "methodname": "GetEyeToHeadTransform", 389 | "returntype": "struct vr::HmdMatrix34_t", 390 | "params": [ 391 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"} 392 | ] 393 | } 394 | ,{ 395 | "classname": "vr::IVRSystem", 396 | "methodname": "GetTimeSinceLastVsync", 397 | "returntype": "bool", 398 | "params": [ 399 | { "paramname": "pfSecondsSinceLastVsync" ,"paramtype": "float *"}, 400 | { "paramname": "pulFrameCounter" ,"paramtype": "uint64_t *"} 401 | ] 402 | } 403 | ,{ 404 | "classname": "vr::IVRSystem", 405 | "methodname": "GetD3D9AdapterIndex", 406 | "returntype": "int32_t" 407 | } 408 | ,{ 409 | "classname": "vr::IVRSystem", 410 | "methodname": "GetDXGIOutputInfo", 411 | "returntype": "void", 412 | "params": [ 413 | { "paramname": "pnAdapterIndex" ,"paramtype": "int32_t *"}, 414 | { "paramname": "pnAdapterOutputIndex" ,"paramtype": "int32_t *"} 415 | ] 416 | } 417 | ,{ 418 | "classname": "vr::IVRSystem", 419 | "methodname": "AttachToWindow", 420 | "returntype": "bool", 421 | "params": [ 422 | { "paramname": "hWnd" ,"paramtype": "void *"} 423 | ] 424 | } 425 | ,{ 426 | "classname": "vr::IVRSystem", 427 | "methodname": "GetDeviceToAbsoluteTrackingPose", 428 | "returntype": "void", 429 | "params": [ 430 | { "paramname": "eOrigin" ,"paramtype": "vr::TrackingUniverseOrigin"}, 431 | { "paramname": "fPredictedSecondsToPhotonsFromNow" ,"paramtype": "float"}, 432 | { "paramname": "pTrackedDevicePoseArray" ,"array_count": "unTrackedDevicePoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, 433 | { "paramname": "unTrackedDevicePoseArrayCount" ,"paramtype": "uint32_t"} 434 | ] 435 | } 436 | ,{ 437 | "classname": "vr::IVRSystem", 438 | "methodname": "ResetSeatedZeroPose", 439 | "returntype": "void" 440 | } 441 | ,{ 442 | "classname": "vr::IVRSystem", 443 | "methodname": "GetSeatedZeroPoseToStandingAbsoluteTrackingPose", 444 | "returntype": "struct vr::HmdMatrix34_t" 445 | } 446 | ,{ 447 | "classname": "vr::IVRSystem", 448 | "methodname": "LoadRenderModel", 449 | "returntype": "bool", 450 | "params": [ 451 | { "paramname": "pchRenderModelName" ,"paramtype": "const char *"}, 452 | { "paramname": "pRenderModel" ,"paramtype": "struct vr::RenderModel_t *"} 453 | ] 454 | } 455 | ,{ 456 | "classname": "vr::IVRSystem", 457 | "methodname": "FreeRenderModel", 458 | "returntype": "void", 459 | "params": [ 460 | { "paramname": "pRenderModel" ,"paramtype": "struct vr::RenderModel_t *"} 461 | ] 462 | } 463 | ,{ 464 | "classname": "vr::IVRSystem", 465 | "methodname": "GetTrackedDeviceClass", 466 | "returntype": "vr::TrackedDeviceClass", 467 | "params": [ 468 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} 469 | ] 470 | } 471 | ,{ 472 | "classname": "vr::IVRSystem", 473 | "methodname": "IsTrackedDeviceConnected", 474 | "returntype": "bool", 475 | "params": [ 476 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"} 477 | ] 478 | } 479 | ,{ 480 | "classname": "vr::IVRSystem", 481 | "methodname": "GetBoolTrackedDeviceProperty", 482 | "returntype": "bool", 483 | "params": [ 484 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 485 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 486 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 487 | ] 488 | } 489 | ,{ 490 | "classname": "vr::IVRSystem", 491 | "methodname": "GetFloatTrackedDeviceProperty", 492 | "returntype": "float", 493 | "params": [ 494 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 495 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 496 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 497 | ] 498 | } 499 | ,{ 500 | "classname": "vr::IVRSystem", 501 | "methodname": "GetInt32TrackedDeviceProperty", 502 | "returntype": "int32_t", 503 | "params": [ 504 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 505 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 506 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 507 | ] 508 | } 509 | ,{ 510 | "classname": "vr::IVRSystem", 511 | "methodname": "GetUint64TrackedDeviceProperty", 512 | "returntype": "uint64_t", 513 | "params": [ 514 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 515 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 516 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 517 | ] 518 | } 519 | ,{ 520 | "classname": "vr::IVRSystem", 521 | "methodname": "GetMatrix34TrackedDeviceProperty", 522 | "returntype": "struct vr::HmdMatrix34_t", 523 | "params": [ 524 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 525 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 526 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 527 | ] 528 | } 529 | ,{ 530 | "classname": "vr::IVRSystem", 531 | "methodname": "GetStringTrackedDeviceProperty", 532 | "returntype": "uint32_t", 533 | "params": [ 534 | { "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 535 | { "paramname": "prop" ,"paramtype": "vr::TrackedDeviceProperty"}, 536 | { "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"}, 537 | { "paramname": "unBufferSize" ,"paramtype": "uint32_t"}, 538 | { "paramname": "pError" ,"paramtype": "vr::TrackedPropertyError *"} 539 | ] 540 | } 541 | ,{ 542 | "classname": "vr::IVRSystem", 543 | "methodname": "GetPropErrorNameFromEnum", 544 | "returntype": "const char *", 545 | "params": [ 546 | { "paramname": "error" ,"paramtype": "vr::TrackedPropertyError"} 547 | ] 548 | } 549 | ,{ 550 | "classname": "vr::IVRSystem", 551 | "methodname": "PollNextEvent", 552 | "returntype": "bool", 553 | "params": [ 554 | { "paramname": "pEvent" ,"paramtype": "struct vr::VREvent_t *"} 555 | ] 556 | } 557 | ,{ 558 | "classname": "vr::IVRSystem", 559 | "methodname": "PollNextEventWithPose", 560 | "returntype": "bool", 561 | "params": [ 562 | { "paramname": "eOrigin" ,"paramtype": "vr::TrackingUniverseOrigin"}, 563 | { "paramname": "pEvent" ,"paramtype": "vr::VREvent_t *"}, 564 | { "paramname": "pTrackedDevicePose" ,"paramtype": "vr::TrackedDevicePose_t *"} 565 | ] 566 | } 567 | ,{ 568 | "classname": "vr::IVRSystem", 569 | "methodname": "GetEventTypeNameFromEnum", 570 | "returntype": "const char *", 571 | "params": [ 572 | { "paramname": "eType" ,"paramtype": "vr::EVREventType"} 573 | ] 574 | } 575 | ,{ 576 | "classname": "vr::IVRSystem", 577 | "methodname": "GetHiddenAreaMesh", 578 | "returntype": "struct vr::HiddenAreaMesh_t", 579 | "params": [ 580 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"} 581 | ] 582 | } 583 | ,{ 584 | "classname": "vr::IVRSystem", 585 | "methodname": "GetControllerState", 586 | "returntype": "bool", 587 | "params": [ 588 | { "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 589 | { "paramname": "pControllerState" ,"paramtype": "vr::VRControllerState_t *"} 590 | ] 591 | } 592 | ,{ 593 | "classname": "vr::IVRSystem", 594 | "methodname": "GetControllerStateWithPose", 595 | "returntype": "bool", 596 | "params": [ 597 | { "paramname": "eOrigin" ,"paramtype": "vr::TrackingUniverseOrigin"}, 598 | { "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 599 | { "paramname": "pControllerState" ,"paramtype": "vr::VRControllerState_t *"}, 600 | { "paramname": "pTrackedDevicePose" ,"paramtype": "struct vr::TrackedDevicePose_t *"} 601 | ] 602 | } 603 | ,{ 604 | "classname": "vr::IVRSystem", 605 | "methodname": "TriggerHapticPulse", 606 | "returntype": "void", 607 | "params": [ 608 | { "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 609 | { "paramname": "unAxisId" ,"paramtype": "uint32_t"}, 610 | { "paramname": "usDurationMicroSec" ,"paramtype": "unsigned short"} 611 | ] 612 | } 613 | ,{ 614 | "classname": "vr::IVRSystem", 615 | "methodname": "GetButtonIdNameFromEnum", 616 | "returntype": "const char *", 617 | "params": [ 618 | { "paramname": "eButtonId" ,"paramtype": "vr::EVRButtonId"} 619 | ] 620 | } 621 | ,{ 622 | "classname": "vr::IVRSystem", 623 | "methodname": "GetControllerAxisTypeNameFromEnum", 624 | "returntype": "const char *", 625 | "params": [ 626 | { "paramname": "eAxisType" ,"paramtype": "vr::EVRControllerAxisType"} 627 | ] 628 | } 629 | ,{ 630 | "classname": "vr::IVRSystem", 631 | "methodname": "HandleControllerOverlayInteractionAsMouse", 632 | "returntype": "bool", 633 | "params": [ 634 | { "paramname": "overlaySettings" ,"paramtype": "const vr::Compositor_OverlaySettings &"}, 635 | { "paramname": "vecWindowClientPositionOnScreen" ,"paramtype": "vr::HmdVector2_t"}, 636 | { "paramname": "vecWindowClientSize" ,"paramtype": "vr::HmdVector2_t"}, 637 | { "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}, 638 | { "paramname": "eOutputType" ,"paramtype": "vr::EVRControllerEventOutputType"} 639 | ] 640 | } 641 | ,{ 642 | "classname": "vr::IVRSystem", 643 | "methodname": "CaptureInputFocus", 644 | "returntype": "bool" 645 | } 646 | ,{ 647 | "classname": "vr::IVRSystem", 648 | "methodname": "ReleaseInputFocus", 649 | "returntype": "void" 650 | } 651 | ,{ 652 | "classname": "vr::IVRSystem", 653 | "methodname": "IsInputFocusCapturedByAnotherProcess", 654 | "returntype": "bool" 655 | } 656 | ,{ 657 | "classname": "vr::IVRCameraAccess", 658 | "methodname": "GetCameraCount", 659 | "returntype": "uint32_t" 660 | } 661 | ,{ 662 | "classname": "vr::IVRCameraAccess", 663 | "methodname": "GetCameraId", 664 | "returntype": "uint32_t", 665 | "params": [ 666 | { "paramname": "unCameraIndex" ,"paramtype": "uint32_t"}, 667 | { "paramname": "pchBuffer" ,"paramtype": "char *"}, 668 | { "paramname": "unBufferLen" ,"paramtype": "uint32_t"} 669 | ] 670 | } 671 | ,{ 672 | "classname": "vr::IVRCameraAccess", 673 | "methodname": "EnableCamera", 674 | "returntype": "bool", 675 | "params": [ 676 | { "paramname": "unCameraIndex" ,"paramtype": "uint32_t"}, 677 | { "paramname": "bEnabled" ,"paramtype": "bool"} 678 | ] 679 | } 680 | ,{ 681 | "classname": "vr::IVRCameraAccess", 682 | "methodname": "GetCameraInfo", 683 | "returntype": "bool", 684 | "params": [ 685 | { "paramname": "unCameraIndex" ,"paramtype": "uint32_t"}, 686 | { "paramname": "pCameraInfo" ,"paramtype": "struct vr::CameraInfo_t *"} 687 | ] 688 | } 689 | ,{ 690 | "classname": "vr::IVRCameraAccess", 691 | "methodname": "GetCameraImage", 692 | "returntype": "bool", 693 | "params": [ 694 | { "paramname": "unCameraIndex" ,"paramtype": "uint32_t"}, 695 | { "paramname": "pCameraImage" ,"paramtype": "struct vr::CameraImage_t *"} 696 | ] 697 | } 698 | ,{ 699 | "classname": "vr::IVRChaperone", 700 | "methodname": "GetCalibrationState", 701 | "returntype": "vr::ChaperoneCalibrationState" 702 | } 703 | ,{ 704 | "classname": "vr::IVRChaperone", 705 | "methodname": "GetSoftBoundsInfo", 706 | "returntype": "bool", 707 | "params": [ 708 | { "paramname": "pInfo" ,"paramtype": "struct vr::ChaperoneSoftBoundsInfo_t *"} 709 | ] 710 | } 711 | ,{ 712 | "classname": "vr::IVRChaperone", 713 | "methodname": "GetHardBoundsInfo", 714 | "returntype": "bool", 715 | "params": [ 716 | { "paramname": "pQuadsBuffer" ,"out_array_count": "punQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, 717 | { "paramname": "punQuadsCount" ,"paramtype": "uint32_t *"} 718 | ] 719 | } 720 | ,{ 721 | "classname": "vr::IVRChaperone", 722 | "methodname": "GetSeatedBoundsInfo", 723 | "returntype": "bool", 724 | "params": [ 725 | { "paramname": "pInfo" ,"paramtype": "struct vr::ChaperoneSeatedBoundsInfo_t *"} 726 | ] 727 | } 728 | ,{ 729 | "classname": "vr::IVRChaperoneSetup", 730 | "methodname": "CommitWorkingCopy", 731 | "returntype": "bool", 732 | "params": [ 733 | { "paramname": "pchCalibrationName" ,"paramtype": "const char *"} 734 | ] 735 | } 736 | ,{ 737 | "classname": "vr::IVRChaperoneSetup", 738 | "methodname": "RevertWorkingCopy", 739 | "returntype": "void" 740 | } 741 | ,{ 742 | "classname": "vr::IVRChaperoneSetup", 743 | "methodname": "GetWorkingSoftBoundsInfo", 744 | "returntype": "bool", 745 | "params": [ 746 | { "paramname": "pInfo" ,"paramtype": "struct vr::ChaperoneSoftBoundsInfo_t *"} 747 | ] 748 | } 749 | ,{ 750 | "classname": "vr::IVRChaperoneSetup", 751 | "methodname": "GetWorkingHardBoundsInfo", 752 | "returntype": "bool", 753 | "params": [ 754 | { "paramname": "pQuadsBuffer" ,"out_array_count": "punQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, 755 | { "paramname": "punQuadsCount" ,"paramtype": "uint32_t *"} 756 | ] 757 | } 758 | ,{ 759 | "classname": "vr::IVRChaperoneSetup", 760 | "methodname": "GetWorkingSeatedZeroPoseToRawTrackingPose", 761 | "returntype": "bool", 762 | "params": [ 763 | { "paramname": "pmatSeatedZeroPoseToRawTrackingPose" ,"paramtype": "struct vr::HmdMatrix34_t *"} 764 | ] 765 | } 766 | ,{ 767 | "classname": "vr::IVRChaperoneSetup", 768 | "methodname": "GetWorkingStandingZeroPoseToRawTrackingPose", 769 | "returntype": "bool", 770 | "params": [ 771 | { "paramname": "pmatStandingZeroPoseToRawTrackingPose" ,"paramtype": "struct vr::HmdMatrix34_t *"} 772 | ] 773 | } 774 | ,{ 775 | "classname": "vr::IVRChaperoneSetup", 776 | "methodname": "SetWorkingSoftBoundsInfo", 777 | "returntype": "void", 778 | "params": [ 779 | { "paramname": "pInfo" ,"paramtype": "const struct vr::ChaperoneSoftBoundsInfo_t *"} 780 | ] 781 | } 782 | ,{ 783 | "classname": "vr::IVRChaperoneSetup", 784 | "methodname": "SetWorkingHardBoundsInfo", 785 | "returntype": "void", 786 | "params": [ 787 | { "paramname": "pQuadsBuffer" ,"array_count": "unQuadsCount" ,"paramtype": "struct vr::HmdQuad_t *"}, 788 | { "paramname": "unQuadsCount" ,"paramtype": "uint32_t"} 789 | ] 790 | } 791 | ,{ 792 | "classname": "vr::IVRChaperoneSetup", 793 | "methodname": "SetWorkingSeatedZeroPoseToRawTrackingPose", 794 | "returntype": "void", 795 | "params": [ 796 | { "paramname": "matSeatedZeroPoseToRawTrackingPose" ,"paramtype": "const struct vr::HmdMatrix34_t &"} 797 | ] 798 | } 799 | ,{ 800 | "classname": "vr::IVRChaperoneSetup", 801 | "methodname": "SetWorkingStandingZeroPoseToRawTrackingPose", 802 | "returntype": "void", 803 | "params": [ 804 | { "paramname": "matStandingZeroPoseToRawTrackingPose" ,"paramtype": "const struct vr::HmdMatrix34_t &"} 805 | ] 806 | } 807 | ,{ 808 | "classname": "vr::IVRCompositor", 809 | "methodname": "GetLastError", 810 | "returntype": "uint32_t", 811 | "params": [ 812 | { "paramname": "pchBuffer" ,"out_string": " " ,"paramtype": "char *"}, 813 | { "paramname": "unBufferSize" ,"paramtype": "uint32_t"} 814 | ] 815 | } 816 | ,{ 817 | "classname": "vr::IVRCompositor", 818 | "methodname": "SetVSync", 819 | "returntype": "void", 820 | "params": [ 821 | { "paramname": "bVSync" ,"paramtype": "bool"} 822 | ] 823 | } 824 | ,{ 825 | "classname": "vr::IVRCompositor", 826 | "methodname": "GetVSync", 827 | "returntype": "bool" 828 | } 829 | ,{ 830 | "classname": "vr::IVRCompositor", 831 | "methodname": "SetGamma", 832 | "returntype": "void", 833 | "params": [ 834 | { "paramname": "fGamma" ,"paramtype": "float"} 835 | ] 836 | } 837 | ,{ 838 | "classname": "vr::IVRCompositor", 839 | "methodname": "GetGamma", 840 | "returntype": "float" 841 | } 842 | ,{ 843 | "classname": "vr::IVRCompositor", 844 | "methodname": "SetGraphicsDevice", 845 | "returntype": "void", 846 | "params": [ 847 | { "paramname": "eType" ,"paramtype": "vr::Compositor_DeviceType"}, 848 | { "paramname": "pDevice" ,"paramtype": "void *"} 849 | ] 850 | } 851 | ,{ 852 | "classname": "vr::IVRCompositor", 853 | "methodname": "WaitGetPoses", 854 | "returntype": "void", 855 | "params": [ 856 | { "paramname": "pPoseArray" ,"array_count": "unPoseArrayCount" ,"paramtype": "struct vr::TrackedDevicePose_t *"}, 857 | { "paramname": "unPoseArrayCount" ,"paramtype": "uint32_t"} 858 | ] 859 | } 860 | ,{ 861 | "classname": "vr::IVRCompositor", 862 | "methodname": "Submit", 863 | "returntype": "void", 864 | "params": [ 865 | { "paramname": "eEye" ,"paramtype": "vr::Hmd_Eye"}, 866 | { "paramname": "pTexture" ,"paramtype": "void *"}, 867 | { "paramname": "pBounds" ,"paramtype": "struct vr::Compositor_TextureBounds *"} 868 | ] 869 | } 870 | ,{ 871 | "classname": "vr::IVRCompositor", 872 | "methodname": "ClearLastSubmittedFrame", 873 | "returntype": "void" 874 | } 875 | ,{ 876 | "classname": "vr::IVRCompositor", 877 | "methodname": "GetOverlayDefaults", 878 | "returntype": "void", 879 | "params": [ 880 | { "paramname": "pSettings" ,"paramtype": "struct vr::Compositor_OverlaySettings *"} 881 | ] 882 | } 883 | ,{ 884 | "classname": "vr::IVRCompositor", 885 | "methodname": "SetOverlay", 886 | "returntype": "void", 887 | "params": [ 888 | { "paramname": "pTexture" ,"paramtype": "void *"}, 889 | { "paramname": "pSettings" ,"paramtype": "struct vr::Compositor_OverlaySettings *"} 890 | ] 891 | } 892 | ,{ 893 | "classname": "vr::IVRCompositor", 894 | "methodname": "SetOverlayRaw", 895 | "returntype": "void", 896 | "params": [ 897 | { "paramname": "buffer" ,"paramtype": "void *"}, 898 | { "paramname": "width" ,"paramtype": "uint32_t"}, 899 | { "paramname": "height" ,"paramtype": "uint32_t"}, 900 | { "paramname": "depth" ,"paramtype": "uint32_t"}, 901 | { "paramname": "pSettings" ,"paramtype": "struct vr::Compositor_OverlaySettings *"} 902 | ] 903 | } 904 | ,{ 905 | "classname": "vr::IVRCompositor", 906 | "methodname": "SetOverlayFromFile", 907 | "returntype": "void", 908 | "params": [ 909 | { "paramname": "pchFilePath" ,"paramtype": "const char *"}, 910 | { "paramname": "pSettings" ,"paramtype": "struct vr::Compositor_OverlaySettings *"} 911 | ] 912 | } 913 | ,{ 914 | "classname": "vr::IVRCompositor", 915 | "methodname": "ClearOverlay", 916 | "returntype": "void" 917 | } 918 | ,{ 919 | "classname": "vr::IVRCompositor", 920 | "methodname": "GetFrameTiming", 921 | "returntype": "bool", 922 | "params": [ 923 | { "paramname": "pTiming" ,"paramtype": "struct vr::Compositor_FrameTiming *"}, 924 | { "paramname": "unFramesAgo" ,"paramtype": "uint32_t"} 925 | ] 926 | } 927 | ,{ 928 | "classname": "vr::IVRCompositor", 929 | "methodname": "FadeToColor", 930 | "returntype": "void", 931 | "params": [ 932 | { "paramname": "fSeconds" ,"paramtype": "float"}, 933 | { "paramname": "fRed" ,"paramtype": "float"}, 934 | { "paramname": "fGreen" ,"paramtype": "float"}, 935 | { "paramname": "fBlue" ,"paramtype": "float"}, 936 | { "paramname": "fAlpha" ,"paramtype": "float"}, 937 | { "paramname": "bBackground" ,"paramtype": "bool"} 938 | ] 939 | } 940 | ,{ 941 | "classname": "vr::IVRCompositor", 942 | "methodname": "FadeGrid", 943 | "returntype": "void", 944 | "params": [ 945 | { "paramname": "fSeconds" ,"paramtype": "float"}, 946 | { "paramname": "bFadeIn" ,"paramtype": "bool"} 947 | ] 948 | } 949 | ,{ 950 | "classname": "vr::IVRCompositor", 951 | "methodname": "CompositorBringToFront", 952 | "returntype": "void" 953 | } 954 | ,{ 955 | "classname": "vr::IVRCompositor", 956 | "methodname": "CompositorGoToBack", 957 | "returntype": "void" 958 | } 959 | ,{ 960 | "classname": "vr::IVRCompositor", 961 | "methodname": "CompositorQuit", 962 | "returntype": "void" 963 | } 964 | ,{ 965 | "classname": "vr::IVRCompositor", 966 | "methodname": "IsFullscreen", 967 | "returntype": "bool" 968 | } 969 | ,{ 970 | "classname": "vr::IVRCompositor", 971 | "methodname": "ComputeOverlayIntersection", 972 | "returntype": "bool", 973 | "params": [ 974 | { "paramname": "pSettings" ,"paramtype": "const struct vr::Compositor_OverlaySettings *"}, 975 | { "paramname": "fAspectRatio" ,"paramtype": "float"}, 976 | { "paramname": "eOrigin" ,"paramtype": "vr::TrackingUniverseOrigin"}, 977 | { "paramname": "vSource" ,"paramtype": "vr::HmdVector3_t"}, 978 | { "paramname": "vDirection" ,"paramtype": "vr::HmdVector3_t"}, 979 | { "paramname": "pvecIntersectionUV" ,"paramtype": "vr::HmdVector2_t *"}, 980 | { "paramname": "pvecIntersectionTrackingSpace" ,"paramtype": "vr::HmdVector3_t *"} 981 | ] 982 | } 983 | ,{ 984 | "classname": "vr::IVRCompositor", 985 | "methodname": "SetTrackingSpace", 986 | "returntype": "void", 987 | "params": [ 988 | { "paramname": "eOrigin" ,"paramtype": "vr::TrackingUniverseOrigin"} 989 | ] 990 | } 991 | ,{ 992 | "classname": "vr::IVRCompositor", 993 | "methodname": "GetTrackingSpace", 994 | "returntype": "vr::TrackingUniverseOrigin" 995 | } 996 | ] 997 | } -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/headers/openvr_capi.h: -------------------------------------------------------------------------------- 1 | //====== Copyright (c) 1996-2014, Valve Corporation, All rights reserved. ======= 2 | // 3 | // Purpose: Header for flatted SteamAPI. Use this for binding to other languages. 4 | // This file is auto-generated, do not edit it. 5 | // 6 | //============================================================================= 7 | 8 | #ifndef __OPENVR_API_FLAT_H__ 9 | #define __OPENVR_API_FLAT_H__ 10 | #ifdef _WIN32 11 | #pragma once 12 | #endif 13 | 14 | // OPENVR API export macro 15 | #if defined( _WIN32 ) && !defined( _X360 ) 16 | #if defined( OPENVR_API_EXPORTS ) 17 | #define S_API extern "C" __declspec( dllexport ) 18 | #elif defined( OPENVR_API_NODLL ) 19 | #define S_API extern "C" 20 | #else 21 | #define S_API extern "C" __declspec( dllimport ) 22 | #endif // OPENVR_API_EXPORTS 23 | #elif defined( GNUC ) 24 | #if defined( OPENVR_API_EXPORTS ) 25 | #define S_API extern "C" __attribute__ ((visibility("default"))) 26 | #else 27 | #define S_API extern "C" 28 | #endif // OPENVR_API_EXPORTS 29 | #else // !WIN32 30 | #if defined( OPENVR_API_EXPORTS ) 31 | #define S_API extern "C" 32 | #else 33 | #define S_API extern "C" 34 | #endif // OPENVR_API_EXPORTS 35 | #endif 36 | 37 | 38 | #include 39 | #include "openvr.h" 40 | #include "ivrsystem.h" 41 | #include "ivrcameraaccess.h" 42 | #include "ivrchaperone.h" 43 | #include "ivrchaperonesetup.h" 44 | #include "ivrcompositor.h" 45 | 46 | 47 | S_API void VR_IVRSystem_GetWindowBounds(intptr_t instancePtr, int32_t * pnX, int32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); 48 | S_API void VR_IVRSystem_GetRecommendedRenderTargetSize(intptr_t instancePtr, uint32_t * pnWidth, uint32_t * pnHeight); 49 | S_API void VR_IVRSystem_GetEyeOutputViewport(intptr_t instancePtr, vr::Hmd_Eye eEye, uint32_t * pnX, uint32_t * pnY, uint32_t * pnWidth, uint32_t * pnHeight); 50 | S_API struct vr::HmdMatrix44_t VR_IVRSystem_GetProjectionMatrix(intptr_t instancePtr, vr::Hmd_Eye eEye, float fNearZ, float fFarZ, vr::GraphicsAPIConvention eProjType); 51 | S_API void VR_IVRSystem_GetProjectionRaw(intptr_t instancePtr, vr::Hmd_Eye eEye, float * pfLeft, float * pfRight, float * pfTop, float * pfBottom); 52 | S_API struct vr::DistortionCoordinates_t VR_IVRSystem_ComputeDistortion(intptr_t instancePtr, vr::Hmd_Eye eEye, float fU, float fV); 53 | S_API struct vr::HmdMatrix34_t VR_IVRSystem_GetEyeToHeadTransform(intptr_t instancePtr, vr::Hmd_Eye eEye); 54 | S_API bool VR_IVRSystem_GetTimeSinceLastVsync(intptr_t instancePtr, float * pfSecondsSinceLastVsync, uint64_t * pulFrameCounter); 55 | S_API int32_t VR_IVRSystem_GetD3D9AdapterIndex(intptr_t instancePtr); 56 | S_API void VR_IVRSystem_GetDXGIOutputInfo(intptr_t instancePtr, int32_t * pnAdapterIndex, int32_t * pnAdapterOutputIndex); 57 | S_API bool VR_IVRSystem_AttachToWindow(intptr_t instancePtr, void * hWnd); 58 | S_API void VR_IVRSystem_GetDeviceToAbsoluteTrackingPose(intptr_t instancePtr, vr::TrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, struct vr::TrackedDevicePose_t * pTrackedDevicePoseArray, uint32_t unTrackedDevicePoseArrayCount); 59 | S_API void VR_IVRSystem_ResetSeatedZeroPose(intptr_t instancePtr); 60 | S_API struct vr::HmdMatrix34_t VR_IVRSystem_GetSeatedZeroPoseToStandingAbsoluteTrackingPose(intptr_t instancePtr); 61 | S_API bool VR_IVRSystem_LoadRenderModel(intptr_t instancePtr, const char * pchRenderModelName, struct vr::RenderModel_t * pRenderModel); 62 | S_API void VR_IVRSystem_FreeRenderModel(intptr_t instancePtr, struct vr::RenderModel_t * pRenderModel); 63 | S_API vr::TrackedDeviceClass VR_IVRSystem_GetTrackedDeviceClass(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex); 64 | S_API bool VR_IVRSystem_IsTrackedDeviceConnected(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex); 65 | S_API bool VR_IVRSystem_GetBoolTrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, vr::TrackedPropertyError * pError); 66 | S_API float VR_IVRSystem_GetFloatTrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, vr::TrackedPropertyError * pError); 67 | S_API int32_t VR_IVRSystem_GetInt32TrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, vr::TrackedPropertyError * pError); 68 | S_API uint64_t VR_IVRSystem_GetUint64TrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, vr::TrackedPropertyError * pError); 69 | S_API struct vr::HmdMatrix34_t VR_IVRSystem_GetMatrix34TrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, vr::TrackedPropertyError * pError); 70 | S_API uint32_t VR_IVRSystem_GetStringTrackedDeviceProperty(intptr_t instancePtr, vr::TrackedDeviceIndex_t unDeviceIndex, vr::TrackedDeviceProperty prop, char * pchValue, uint32_t unBufferSize, vr::TrackedPropertyError * pError); 71 | S_API const char * VR_IVRSystem_GetPropErrorNameFromEnum(intptr_t instancePtr, vr::TrackedPropertyError error); 72 | S_API bool VR_IVRSystem_PollNextEvent(intptr_t instancePtr, struct vr::VREvent_t * pEvent); 73 | S_API bool VR_IVRSystem_PollNextEventWithPose(intptr_t instancePtr, vr::TrackingUniverseOrigin eOrigin, vr::VREvent_t * pEvent, vr::TrackedDevicePose_t * pTrackedDevicePose); 74 | S_API const char * VR_IVRSystem_GetEventTypeNameFromEnum(intptr_t instancePtr, vr::EVREventType eType); 75 | S_API struct vr::HiddenAreaMesh_t VR_IVRSystem_GetHiddenAreaMesh(intptr_t instancePtr, vr::Hmd_Eye eEye); 76 | S_API bool VR_IVRSystem_GetControllerState(intptr_t instancePtr, vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t * pControllerState); 77 | S_API bool VR_IVRSystem_GetControllerStateWithPose(intptr_t instancePtr, vr::TrackingUniverseOrigin eOrigin, vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t * pControllerState, struct vr::TrackedDevicePose_t * pTrackedDevicePose); 78 | S_API void VR_IVRSystem_TriggerHapticPulse(intptr_t instancePtr, vr::TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec); 79 | S_API const char * VR_IVRSystem_GetButtonIdNameFromEnum(intptr_t instancePtr, vr::EVRButtonId eButtonId); 80 | S_API const char * VR_IVRSystem_GetControllerAxisTypeNameFromEnum(intptr_t instancePtr, vr::EVRControllerAxisType eAxisType); 81 | S_API bool VR_IVRSystem_HandleControllerOverlayInteractionAsMouse(intptr_t instancePtr, const vr::Compositor_OverlaySettings & overlaySettings, vr::HmdVector2_t vecWindowClientPositionOnScreen, vr::HmdVector2_t vecWindowClientSize, vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::EVRControllerEventOutputType eOutputType); 82 | S_API bool VR_IVRSystem_CaptureInputFocus(intptr_t instancePtr); 83 | S_API void VR_IVRSystem_ReleaseInputFocus(intptr_t instancePtr); 84 | S_API bool VR_IVRSystem_IsInputFocusCapturedByAnotherProcess(intptr_t instancePtr); 85 | S_API uint32_t VR_IVRCameraAccess_GetCameraCount(intptr_t instancePtr); 86 | S_API uint32_t VR_IVRCameraAccess_GetCameraId(intptr_t instancePtr, uint32_t unCameraIndex, char * pchBuffer, uint32_t unBufferLen); 87 | S_API bool VR_IVRCameraAccess_EnableCamera(intptr_t instancePtr, uint32_t unCameraIndex, bool bEnabled); 88 | S_API bool VR_IVRCameraAccess_GetCameraInfo(intptr_t instancePtr, uint32_t unCameraIndex, struct vr::CameraInfo_t * pCameraInfo); 89 | S_API bool VR_IVRCameraAccess_GetCameraImage(intptr_t instancePtr, uint32_t unCameraIndex, struct vr::CameraImage_t * pCameraImage); 90 | S_API vr::ChaperoneCalibrationState VR_IVRChaperone_GetCalibrationState(intptr_t instancePtr); 91 | S_API bool VR_IVRChaperone_GetSoftBoundsInfo(intptr_t instancePtr, struct vr::ChaperoneSoftBoundsInfo_t * pInfo); 92 | S_API bool VR_IVRChaperone_GetHardBoundsInfo(intptr_t instancePtr, struct vr::HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); 93 | S_API bool VR_IVRChaperone_GetSeatedBoundsInfo(intptr_t instancePtr, struct vr::ChaperoneSeatedBoundsInfo_t * pInfo); 94 | S_API bool VR_IVRChaperoneSetup_CommitWorkingCopy(intptr_t instancePtr, const char * pchCalibrationName); 95 | S_API void VR_IVRChaperoneSetup_RevertWorkingCopy(intptr_t instancePtr); 96 | S_API bool VR_IVRChaperoneSetup_GetWorkingSoftBoundsInfo(intptr_t instancePtr, struct vr::ChaperoneSoftBoundsInfo_t * pInfo); 97 | S_API bool VR_IVRChaperoneSetup_GetWorkingHardBoundsInfo(intptr_t instancePtr, struct vr::HmdQuad_t * pQuadsBuffer, uint32_t * punQuadsCount); 98 | S_API bool VR_IVRChaperoneSetup_GetWorkingSeatedZeroPoseToRawTrackingPose(intptr_t instancePtr, struct vr::HmdMatrix34_t * pmatSeatedZeroPoseToRawTrackingPose); 99 | S_API bool VR_IVRChaperoneSetup_GetWorkingStandingZeroPoseToRawTrackingPose(intptr_t instancePtr, struct vr::HmdMatrix34_t * pmatStandingZeroPoseToRawTrackingPose); 100 | S_API void VR_IVRChaperoneSetup_SetWorkingSoftBoundsInfo(intptr_t instancePtr, const struct vr::ChaperoneSoftBoundsInfo_t * pInfo); 101 | S_API void VR_IVRChaperoneSetup_SetWorkingHardBoundsInfo(intptr_t instancePtr, struct vr::HmdQuad_t * pQuadsBuffer, uint32_t unQuadsCount); 102 | S_API void VR_IVRChaperoneSetup_SetWorkingSeatedZeroPoseToRawTrackingPose(intptr_t instancePtr, const struct vr::HmdMatrix34_t & matSeatedZeroPoseToRawTrackingPose); 103 | S_API void VR_IVRChaperoneSetup_SetWorkingStandingZeroPoseToRawTrackingPose(intptr_t instancePtr, const struct vr::HmdMatrix34_t & matStandingZeroPoseToRawTrackingPose); 104 | S_API uint32_t VR_IVRCompositor_GetLastError(intptr_t instancePtr, char * pchBuffer, uint32_t unBufferSize); 105 | S_API void VR_IVRCompositor_SetVSync(intptr_t instancePtr, bool bVSync); 106 | S_API bool VR_IVRCompositor_GetVSync(intptr_t instancePtr); 107 | S_API void VR_IVRCompositor_SetGamma(intptr_t instancePtr, float fGamma); 108 | S_API float VR_IVRCompositor_GetGamma(intptr_t instancePtr); 109 | S_API void VR_IVRCompositor_SetGraphicsDevice(intptr_t instancePtr, vr::Compositor_DeviceType eType, void * pDevice); 110 | S_API void VR_IVRCompositor_WaitGetPoses(intptr_t instancePtr, struct vr::TrackedDevicePose_t * pPoseArray, uint32_t unPoseArrayCount); 111 | S_API void VR_IVRCompositor_Submit(intptr_t instancePtr, vr::Hmd_Eye eEye, void * pTexture, struct vr::Compositor_TextureBounds * pBounds); 112 | S_API void VR_IVRCompositor_ClearLastSubmittedFrame(intptr_t instancePtr); 113 | S_API void VR_IVRCompositor_GetOverlayDefaults(intptr_t instancePtr, struct vr::Compositor_OverlaySettings * pSettings); 114 | S_API void VR_IVRCompositor_SetOverlay(intptr_t instancePtr, void * pTexture, struct vr::Compositor_OverlaySettings * pSettings); 115 | S_API void VR_IVRCompositor_SetOverlayRaw(intptr_t instancePtr, void * buffer, uint32_t width, uint32_t height, uint32_t depth, struct vr::Compositor_OverlaySettings * pSettings); 116 | S_API void VR_IVRCompositor_SetOverlayFromFile(intptr_t instancePtr, const char * pchFilePath, struct vr::Compositor_OverlaySettings * pSettings); 117 | S_API void VR_IVRCompositor_ClearOverlay(intptr_t instancePtr); 118 | S_API bool VR_IVRCompositor_GetFrameTiming(intptr_t instancePtr, struct vr::Compositor_FrameTiming * pTiming, uint32_t unFramesAgo); 119 | S_API void VR_IVRCompositor_FadeToColor(intptr_t instancePtr, float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); 120 | S_API void VR_IVRCompositor_FadeGrid(intptr_t instancePtr, float fSeconds, bool bFadeIn); 121 | S_API void VR_IVRCompositor_CompositorBringToFront(intptr_t instancePtr); 122 | S_API void VR_IVRCompositor_CompositorGoToBack(intptr_t instancePtr); 123 | S_API void VR_IVRCompositor_CompositorQuit(intptr_t instancePtr); 124 | S_API bool VR_IVRCompositor_IsFullscreen(intptr_t instancePtr); 125 | S_API bool VR_IVRCompositor_ComputeOverlayIntersection(intptr_t instancePtr, const struct vr::Compositor_OverlaySettings * pSettings, float fAspectRatio, vr::TrackingUniverseOrigin eOrigin, vr::HmdVector3_t vSource, vr::HmdVector3_t vDirection, vr::HmdVector2_t * pvecIntersectionUV, vr::HmdVector3_t * pvecIntersectionTrackingSpace); 126 | S_API void VR_IVRCompositor_SetTrackingSpace(intptr_t instancePtr, vr::TrackingUniverseOrigin eOrigin); 127 | S_API vr::TrackingUniverseOrigin VR_IVRCompositor_GetTrackingSpace(intptr_t instancePtr); 128 | #endif // __OPENVR_API_FLAT_H__ 129 | 130 | 131 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/lib/win32/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv000/lib/win32/openvr_api.lib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv000/lib/win64/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv000/lib/win64/openvr_api.lib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Valve Corporation 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/bin/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/headers/openvr_driver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // openvr_driver.h 4 | //========= Copyright Valve Corporation ============// 5 | // Dynamically generated file. Do not modify this file directly. 6 | 7 | #ifndef _OPENVR_DRIVER_API 8 | #define _OPENVR_DRIVER_API 9 | 10 | #include 11 | 12 | 13 | 14 | // vrtypes.h 15 | #ifndef _INCLUDE_VRTYPES_H 16 | #define _INCLUDE_VRTYPES_H 17 | 18 | namespace vr 19 | { 20 | 21 | #if defined(__linux__) || defined(__APPLE__) 22 | // The 32-bit version of gcc has the alignment requirement for uint64 and double set to 23 | // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. 24 | // The 64-bit version of gcc has the alignment requirement for these types set to 25 | // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. 26 | // The 64-bit structure packing has to match the 32-bit structure packing for each platform. 27 | #pragma pack( push, 4 ) 28 | #else 29 | #pragma pack( push, 8 ) 30 | #endif 31 | 32 | // right-handed system 33 | // +y is up 34 | // +x is to the right 35 | // -z is going away from you 36 | // Distance unit is meters 37 | struct HmdMatrix34_t 38 | { 39 | float m[3][4]; 40 | }; 41 | 42 | struct HmdMatrix44_t 43 | { 44 | float m[4][4]; 45 | }; 46 | 47 | struct HmdVector3_t 48 | { 49 | float v[3]; 50 | }; 51 | 52 | struct HmdVector4_t 53 | { 54 | float v[4]; 55 | }; 56 | 57 | struct HmdVector3d_t 58 | { 59 | double v[3]; 60 | }; 61 | 62 | struct HmdVector2_t 63 | { 64 | float v[2]; 65 | }; 66 | 67 | struct HmdQuaternion_t 68 | { 69 | double w, x, y, z; 70 | }; 71 | 72 | struct HmdColor_t 73 | { 74 | float r, g, b, a; 75 | }; 76 | 77 | struct HmdQuad_t 78 | { 79 | HmdVector3_t vCorners[ 4 ]; 80 | }; 81 | 82 | /** Used to return the post-distortion UVs for each color channel. 83 | * UVs range from 0 to 1 with 0,0 in the upper left corner of the 84 | * source render target. The 0,0 to 1,1 range covers a single eye. */ 85 | struct DistortionCoordinates_t 86 | { 87 | float rfRed[2]; 88 | float rfGreen[2]; 89 | float rfBlue[2]; 90 | }; 91 | 92 | enum EVREye 93 | { 94 | Eye_Left = 0, 95 | Eye_Right = 1 96 | }; 97 | 98 | enum EGraphicsAPIConvention 99 | { 100 | API_DirectX = 0, // Normalized Z goes from 0 at the viewer to 1 at the far clip plane 101 | API_OpenGL = 1, // Normalized Z goes from 1 at the viewer to -1 at the far clip plane 102 | }; 103 | 104 | enum EColorSpace 105 | { 106 | ColorSpace_Auto = 0, // Assumes 'gamma' for 8-bit per component formats, otherwise 'linear'. This mirrors the DXGI formats which have _SRGB variants. 107 | ColorSpace_Gamma = 1, // Texture data can be displayed directly on the display without any conversion (a.k.a. display native format). 108 | ColorSpace_Linear = 2, // Same as gamma but has been converted to a linear representation using DXGI's sRGB conversion algorithm. 109 | }; 110 | 111 | struct Texture_t 112 | { 113 | void* handle; // Native d3d texture pointer or GL texture id. 114 | EGraphicsAPIConvention eType; 115 | EColorSpace eColorSpace; 116 | }; 117 | 118 | enum ETrackingResult 119 | { 120 | TrackingResult_Uninitialized = 1, 121 | 122 | TrackingResult_Calibrating_InProgress = 100, 123 | TrackingResult_Calibrating_OutOfRange = 101, 124 | 125 | TrackingResult_Running_OK = 200, 126 | TrackingResult_Running_OutOfRange = 201, 127 | }; 128 | 129 | static const uint32_t k_unTrackingStringSize = 32; 130 | static const uint32_t k_unMaxDriverDebugResponseSize = 32768; 131 | 132 | /** Used to pass device IDs to API calls */ 133 | typedef uint32_t TrackedDeviceIndex_t; 134 | static const uint32_t k_unTrackedDeviceIndex_Hmd = 0; 135 | static const uint32_t k_unMaxTrackedDeviceCount = 16; 136 | static const uint32_t k_unTrackedDeviceIndexInvalid = 0xFFFFFFFF; 137 | 138 | /** Describes what kind of object is being tracked at a given ID */ 139 | enum ETrackedDeviceClass 140 | { 141 | TrackedDeviceClass_Invalid = 0, // the ID was not valid. 142 | TrackedDeviceClass_HMD = 1, // Head-Mounted Displays 143 | TrackedDeviceClass_Controller = 2, // Tracked controllers 144 | TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points 145 | 146 | TrackedDeviceClass_Other = 1000, 147 | }; 148 | 149 | 150 | /** describes a single pose for a tracked object */ 151 | struct TrackedDevicePose_t 152 | { 153 | HmdMatrix34_t mDeviceToAbsoluteTracking; 154 | HmdVector3_t vVelocity; // velocity in tracker space in m/s 155 | HmdVector3_t vAngularVelocity; // angular velocity in radians/s (?) 156 | ETrackingResult eTrackingResult; 157 | bool bPoseIsValid; 158 | 159 | // This indicates that there is a device connected for this spot in the pose array. 160 | // It could go from true to false if the user unplugs the device. 161 | bool bDeviceIsConnected; 162 | }; 163 | 164 | /** Identifies which style of tracking origin the application wants to use 165 | * for the poses it is requesting */ 166 | enum ETrackingUniverseOrigin 167 | { 168 | TrackingUniverseSeated = 0, // Poses are provided relative to the seated zero pose 169 | TrackingUniverseStanding = 1, // Poses are provided relative to the safe bounds configured by the user 170 | TrackingUniverseRawAndUncalibrated = 2, // Poses are provided in the coordinate system defined by the driver. You probably don't want this one. 171 | }; 172 | 173 | 174 | /** Each entry in this enum represents a property that can be retrieved about a 175 | * tracked device. Many fields are only valid for one ETrackedDeviceClass. */ 176 | enum ETrackedDeviceProperty 177 | { 178 | // general properties that apply to all device classes 179 | Prop_TrackingSystemName_String = 1000, 180 | Prop_ModelNumber_String = 1001, 181 | Prop_SerialNumber_String = 1002, 182 | Prop_RenderModelName_String = 1003, 183 | Prop_WillDriftInYaw_Bool = 1004, 184 | Prop_ManufacturerName_String = 1005, 185 | Prop_TrackingFirmwareVersion_String = 1006, 186 | Prop_HardwareRevision_String = 1007, 187 | Prop_AllWirelessDongleDescriptions_String = 1008, 188 | Prop_ConnectedWirelessDongle_String = 1009, 189 | Prop_DeviceIsWireless_Bool = 1010, 190 | Prop_DeviceIsCharging_Bool = 1011, 191 | Prop_DeviceBatteryPercentage_Float = 1012, // 0 is empty, 1 is full 192 | Prop_StatusDisplayTransform_Matrix34 = 1013, 193 | Prop_Firmware_UpdateAvailable_Bool = 1014, 194 | Prop_Firmware_ManualUpdate_Bool = 1015, 195 | Prop_Firmware_ManualUpdateURL_String = 1016, 196 | Prop_HardwareRevision_Uint64 = 1017, 197 | Prop_FirmwareVersion_Uint64 = 1018, 198 | Prop_FPGAVersion_Uint64 = 1019, 199 | Prop_VRCVersion_Uint64 = 1020, 200 | Prop_RadioVersion_Uint64 = 1021, 201 | Prop_DongleVersion_Uint64 = 1022, 202 | Prop_BlockServerShutdown_Bool = 1023, 203 | Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, 204 | Prop_ContainsProximitySensor_Bool = 1025, 205 | Prop_DeviceProvidesBatteryStatus_Bool = 1026, 206 | 207 | // Properties that are unique to TrackedDeviceClass_HMD 208 | Prop_ReportsTimeSinceVSync_Bool = 2000, 209 | Prop_SecondsFromVsyncToPhotons_Float = 2001, 210 | Prop_DisplayFrequency_Float = 2002, 211 | Prop_UserIpdMeters_Float = 2003, 212 | Prop_CurrentUniverseId_Uint64 = 2004, 213 | Prop_PreviousUniverseId_Uint64 = 2005, 214 | Prop_DisplayFirmwareVersion_String = 2006, 215 | Prop_IsOnDesktop_Bool = 2007, 216 | Prop_DisplayMCType_Int32 = 2008, 217 | Prop_DisplayMCOffset_Float = 2009, 218 | Prop_DisplayMCScale_Float = 2010, 219 | Prop_EdidVendorID_Int32 = 2011, 220 | Prop_DisplayMCImageLeft_String = 2012, 221 | Prop_DisplayMCImageRight_String = 2013, 222 | Prop_DisplayGCBlackClamp_Float = 2014, 223 | Prop_EdidProductID_Int32 = 2015, 224 | Prop_CameraToHeadTransform_Matrix34 = 2016, 225 | 226 | // Properties that are unique to TrackedDeviceClass_Controller 227 | Prop_AttachedDeviceId_String = 3000, 228 | Prop_SupportedButtons_Uint64 = 3001, 229 | Prop_Axis0Type_Int32 = 3002, // Return value is of type EVRControllerAxisType 230 | Prop_Axis1Type_Int32 = 3003, // Return value is of type EVRControllerAxisType 231 | Prop_Axis2Type_Int32 = 3004, // Return value is of type EVRControllerAxisType 232 | Prop_Axis3Type_Int32 = 3005, // Return value is of type EVRControllerAxisType 233 | Prop_Axis4Type_Int32 = 3006, // Return value is of type EVRControllerAxisType 234 | 235 | // Properties that are unique to TrackedDeviceClass_TrackingReference 236 | Prop_FieldOfViewLeftDegrees_Float = 4000, 237 | Prop_FieldOfViewRightDegrees_Float = 4001, 238 | Prop_FieldOfViewTopDegrees_Float = 4002, 239 | Prop_FieldOfViewBottomDegrees_Float = 4003, 240 | Prop_TrackingRangeMinimumMeters_Float = 4004, 241 | Prop_TrackingRangeMaximumMeters_Float = 4005, 242 | 243 | // Vendors are free to expose private debug data in this reserved region 244 | Prop_VendorSpecific_Reserved_Start = 10000, 245 | Prop_VendorSpecific_Reserved_End = 10999, 246 | }; 247 | 248 | /** No string property will ever be longer than this length */ 249 | static const uint32_t k_unMaxPropertyStringSize = 32 * 1024; 250 | 251 | /** Used to return errors that occur when reading properties. */ 252 | enum ETrackedPropertyError 253 | { 254 | TrackedProp_Success = 0, 255 | TrackedProp_WrongDataType = 1, 256 | TrackedProp_WrongDeviceClass = 2, 257 | TrackedProp_BufferTooSmall = 3, 258 | TrackedProp_UnknownProperty = 4, 259 | TrackedProp_InvalidDevice = 5, 260 | TrackedProp_CouldNotContactServer = 6, 261 | TrackedProp_ValueNotProvidedByDevice = 7, 262 | TrackedProp_StringExceedsMaximumLength = 8, 263 | TrackedProp_NotYetAvailable = 9, // The property value isn't known yet, but is expected soon. Call again later. 264 | }; 265 | 266 | /** Allows the application to control what part of the provided texture will be used in the 267 | * frame buffer. */ 268 | struct VRTextureBounds_t 269 | { 270 | float uMin, vMin; 271 | float uMax, vMax; 272 | }; 273 | 274 | 275 | /** Allows the applicaiton to control how scene textures are used by the compositor when calling Submit. */ 276 | enum EVRSubmitFlags 277 | { 278 | // Simple render path. App submits rendered left and right eye images with no lens distortion correction applied. 279 | Submit_Default = 0x00, 280 | 281 | // App submits final left and right eye images with lens distortion already applied (lens distortion makes the images appear 282 | // barrel distorted with chromatic aberration correction applied). The app would have used the data returned by 283 | // vr::IVRSystem::ComputeDistortion() to apply the correct distortion to the rendered images before calling Submit(). 284 | Submit_LensDistortionAlreadyApplied = 0x01, 285 | 286 | // If the texture pointer passed in is actually a renderbuffer (e.g. for MSAA in OpenGL) then set this flag. 287 | Submit_GlRenderBuffer = 0x02 288 | }; 289 | 290 | 291 | /** Status of the overall system or tracked objects */ 292 | enum EVRState 293 | { 294 | VRState_Undefined = -1, 295 | VRState_Off = 0, 296 | VRState_Searching = 1, 297 | VRState_Searching_Alert = 2, 298 | VRState_Ready = 3, 299 | VRState_Ready_Alert = 4, 300 | VRState_NotReady = 5, 301 | }; 302 | 303 | /** The types of events that could be posted (and what the parameters mean for each event type) */ 304 | enum EVREventType 305 | { 306 | VREvent_None = 0, 307 | 308 | VREvent_TrackedDeviceActivated = 100, 309 | VREvent_TrackedDeviceDeactivated = 101, 310 | VREvent_TrackedDeviceUpdated = 102, 311 | VREvent_TrackedDeviceUserInteractionStarted = 103, 312 | VREvent_TrackedDeviceUserInteractionEnded = 104, 313 | VREvent_IpdChanged = 105, 314 | 315 | VREvent_ButtonPress = 200, // data is controller 316 | VREvent_ButtonUnpress = 201, // data is controller 317 | VREvent_ButtonTouch = 202, // data is controller 318 | VREvent_ButtonUntouch = 203, // data is controller 319 | 320 | VREvent_MouseMove = 300, // data is mouse 321 | VREvent_MouseButtonDown = 301, // data is mouse 322 | VREvent_MouseButtonUp = 302, // data is mouse 323 | VREvent_FocusEnter = 303, // data is overlay 324 | VREvent_FocusLeave = 304, // data is overlay 325 | 326 | VREvent_InputFocusCaptured = 400, // data is process 327 | VREvent_InputFocusReleased = 401, // data is process 328 | VREvent_SceneFocusLost = 402, // data is process 329 | VREvent_SceneFocusGained = 403, // data is process 330 | VREvent_SceneApplicationChanged = 404, // data is process - The App actually drawing the scene changed (usually to or from the compositor) 331 | VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene 332 | 333 | VREvent_OverlayShown = 500, 334 | VREvent_OverlayHidden = 501, 335 | VREvent_DashboardActivated = 502, 336 | VREvent_DashboardDeactivated = 503, 337 | VREvent_DashboardThumbSelected = 504, // Sent to the overlay manager - data is overlay 338 | VREvent_DashboardRequested = 505, // Sent to the overlay manager - data is overlay 339 | VREvent_ResetDashboard = 506, // Send to the overlay manager 340 | VREvent_RenderToast = 507, // Send to the dashboard to render a toast - data is the notification ID 341 | VREvent_ImageLoaded = 508, // Sent to overlays when a SetOverlayRaw or SetOverlayFromFile call finishes loading 342 | VREvent_ShowKeyboard = 509, // Sent to keyboard renderer in the dashboard to invoke it 343 | VREvent_HideKeyboard = 510, // Sent to keyboard renderer in the dashboard to hide it 344 | VREvent_OverlayGamepadFocusGained = 511, // Sent to an overlay when IVROverlay::SetFocusOverlay is called on it 345 | VREvent_OverlayGamepadFocusLost = 512, // Send to an overlay when it previously had focus and IVROverlay::SetFocusOverlay is called on something else 346 | 347 | VREvent_Notification_Shown = 600, 348 | VREvent_Notification_Hidden = 601, 349 | VREvent_Notification_BeginInteraction = 602, 350 | VREvent_Notification_Destroyed = 603, 351 | 352 | VREvent_Quit = 700, // data is process 353 | VREvent_ProcessQuit = 701, // data is process 354 | VREvent_QuitAborted_UserPrompt = 702, // data is process 355 | VREvent_QuitAcknowledged = 703, // data is process 356 | 357 | VREvent_ChaperoneDataHasChanged = 800, 358 | VREvent_ChaperoneUniverseHasChanged = 801, 359 | VREvent_ChaperoneTempDataHasChanged = 802, 360 | VREvent_ChaperoneSettingsHaveChanged = 803, 361 | 362 | VREvent_StatusUpdate = 900, 363 | 364 | VREvent_MCImageUpdated = 1000, 365 | 366 | VREvent_FirmwareUpdateStarted = 1100, 367 | VREvent_FirmwareUpdateFinished = 1101, 368 | 369 | VREvent_KeyboardClosed = 1200, 370 | VREvent_KeyboardCharInput = 1201, 371 | 372 | VREvent_ApplicationTransitionStarted = 1300, 373 | VREvent_ApplicationTransitionAborted = 1301, 374 | VREvent_ApplicationTransitionNewAppStarted = 1302, 375 | 376 | VREvent_Compositor_MirrorWindowShown = 1400, 377 | VREvent_Compositor_MirrorWindowHidden = 1401, 378 | 379 | VREvent_TrackedCamera_StartVideoStream = 1500, 380 | VREvent_TrackedCamera_StopVideoStream = 1501, 381 | VREvent_TrackedCamera_PauseVideoStream = 1502, 382 | VREvent_TrackedCamera_ResumeVideoStream = 1503, 383 | 384 | // Vendors are free to expose private events in this reserved region 385 | VREvent_VendorSpecific_Reserved_Start = 10000, 386 | VREvent_VendorSpecific_Reserved_End = 19999, 387 | }; 388 | 389 | 390 | /** Level of Hmd activity */ 391 | enum EDeviceActivityLevel 392 | { 393 | k_EDeviceActivityLevel_Unknown = -1, 394 | k_EDeviceActivityLevel_Idle = 0, 395 | k_EDeviceActivityLevel_UserInteraction = 1, 396 | k_EDeviceActivityLevel_UserInteraction_Timeout = 2, 397 | }; 398 | 399 | 400 | /** VR controller button and axis IDs */ 401 | enum EVRButtonId 402 | { 403 | k_EButton_System = 0, 404 | k_EButton_ApplicationMenu = 1, 405 | k_EButton_Grip = 2, 406 | k_EButton_DPad_Left = 3, 407 | k_EButton_DPad_Up = 4, 408 | k_EButton_DPad_Right = 5, 409 | k_EButton_DPad_Down = 6, 410 | k_EButton_A = 7, 411 | 412 | k_EButton_Axis0 = 32, 413 | k_EButton_Axis1 = 33, 414 | k_EButton_Axis2 = 34, 415 | k_EButton_Axis3 = 35, 416 | k_EButton_Axis4 = 36, 417 | 418 | // aliases for well known controllers 419 | k_EButton_SteamVR_Touchpad = k_EButton_Axis0, 420 | k_EButton_SteamVR_Trigger = k_EButton_Axis1, 421 | 422 | k_EButton_Dashboard_Back = k_EButton_Grip, 423 | 424 | k_EButton_Max = 64 425 | }; 426 | 427 | inline uint64_t ButtonMaskFromId( EVRButtonId id ) { return 1ull << id; } 428 | 429 | /** used for controller button events */ 430 | struct VREvent_Controller_t 431 | { 432 | EVRButtonId button; 433 | }; 434 | 435 | 436 | /** used for simulated mouse events in overlay space */ 437 | enum EVRMouseButton 438 | { 439 | VRMouseButton_Left = 0x0001, 440 | VRMouseButton_Right = 0x0002, 441 | VRMouseButton_Middle = 0x0004, 442 | }; 443 | 444 | 445 | /** used for simulated mouse events in overlay space */ 446 | struct VREvent_Mouse_t 447 | { 448 | float x, y; 449 | EVRMouseButton button; 450 | }; 451 | 452 | /** notification related events. Details will still change at this point */ 453 | struct VREvent_Notification_t 454 | { 455 | uint64_t ulUserValue; 456 | uint32_t notificationId; 457 | }; 458 | 459 | 460 | /** Used for events about processes */ 461 | struct VREvent_Process_t 462 | { 463 | uint32_t pid; 464 | uint32_t oldPid; 465 | bool bForced; 466 | }; 467 | 468 | 469 | /** Used for a few events about overlays */ 470 | struct VREvent_Overlay_t 471 | { 472 | uint64_t overlayHandle; 473 | }; 474 | 475 | 476 | /** Used for a few events about overlays */ 477 | struct VREvent_Status_t 478 | { 479 | EVRState statusState; 480 | }; 481 | 482 | /** Used for keyboard events **/ 483 | struct VREvent_Keyboard_t 484 | { 485 | char cNewInput[8]; // Up to 11 bytes of new input 486 | uint64_t uUserValue; // Possible flags about the new input 487 | }; 488 | 489 | struct VREvent_Ipd_t 490 | { 491 | float ipdMeters; 492 | }; 493 | 494 | struct VREvent_Chaperone_t 495 | { 496 | uint64_t m_nPreviousUniverse; 497 | uint64_t m_nCurrentUniverse; 498 | }; 499 | 500 | /** Not actually used for any events. It is just used to reserve 501 | * space in the union for future event types */ 502 | struct VREvent_Reserved_t 503 | { 504 | uint64_t reserved0; 505 | uint64_t reserved1; 506 | }; 507 | 508 | /** If you change this you must manually update openvr_interop.cs.py */ 509 | typedef union 510 | { 511 | VREvent_Reserved_t reserved; 512 | VREvent_Controller_t controller; 513 | VREvent_Mouse_t mouse; 514 | VREvent_Process_t process; 515 | VREvent_Notification_t notification; 516 | VREvent_Overlay_t overlay; 517 | VREvent_Status_t status; 518 | VREvent_Keyboard_t keyboard; 519 | VREvent_Ipd_t ipd; 520 | VREvent_Chaperone_t chaperone; 521 | } VREvent_Data_t; 522 | 523 | /** An event posted by the server to all running applications */ 524 | struct VREvent_t 525 | { 526 | EVREventType eventType; 527 | TrackedDeviceIndex_t trackedDeviceIndex; 528 | VREvent_Data_t data; 529 | float eventAgeSeconds; 530 | }; 531 | 532 | 533 | /** The mesh to draw into the stencil (or depth) buffer to perform 534 | * early stencil (or depth) kills of pixels that will never appear on the HMD. 535 | * This mesh draws on all the pixels that will be hidden after distortion. 536 | * 537 | * If the HMD does not provide a visible area mesh pVertexData will be 538 | * NULL and unTriangleCount will be 0. */ 539 | struct HiddenAreaMesh_t 540 | { 541 | const HmdVector2_t *pVertexData; 542 | uint32_t unTriangleCount; 543 | }; 544 | 545 | 546 | /** Identifies what kind of axis is on the controller at index n. Read this type 547 | * with pVRSystem->Get( nControllerDeviceIndex, Prop_Axis0Type_Int32 + n ); 548 | */ 549 | enum EVRControllerAxisType 550 | { 551 | k_eControllerAxis_None = 0, 552 | k_eControllerAxis_TrackPad = 1, 553 | k_eControllerAxis_Joystick = 2, 554 | k_eControllerAxis_Trigger = 3, // Analog trigger data is in the X axis 555 | }; 556 | 557 | 558 | /** contains information about one axis on the controller */ 559 | struct VRControllerAxis_t 560 | { 561 | float x; // Ranges from -1.0 to 1.0 for joysticks and track pads. Ranges from 0.0 to 1.0 for triggers were 0 is fully released. 562 | float y; // Ranges from -1.0 to 1.0 for joysticks and track pads. Is always 0.0 for triggers. 563 | }; 564 | 565 | 566 | /** the number of axes in the controller state */ 567 | static const uint32_t k_unControllerStateAxisCount = 5; 568 | 569 | 570 | /** Holds all the state of a controller at one moment in time. */ 571 | struct VRControllerState001_t 572 | { 573 | // If packet num matches that on your prior call, then the controller state hasn't been changed since 574 | // your last call and there is no need to process it 575 | uint32_t unPacketNum; 576 | 577 | // bit flags for each of the buttons. Use ButtonMaskFromId to turn an ID into a mask 578 | uint64_t ulButtonPressed; 579 | uint64_t ulButtonTouched; 580 | 581 | // Axis data for the controller's analog inputs 582 | VRControllerAxis_t rAxis[ k_unControllerStateAxisCount ]; 583 | }; 584 | 585 | 586 | typedef VRControllerState001_t VRControllerState_t; 587 | 588 | 589 | /** determines how to provide output to the application of various event processing functions. */ 590 | enum EVRControllerEventOutputType 591 | { 592 | ControllerEventOutput_OSEvents = 0, 593 | ControllerEventOutput_VREvents = 1, 594 | }; 595 | 596 | 597 | 598 | /** Collision Bounds Style */ 599 | enum ECollisionBoundsStyle 600 | { 601 | COLLISION_BOUNDS_STYLE_BEGINNER = 0, 602 | COLLISION_BOUNDS_STYLE_INTERMEDIATE, 603 | COLLISION_BOUNDS_STYLE_SQUARES, 604 | COLLISION_BOUNDS_STYLE_ADVANCED, 605 | COLLISION_BOUNDS_STYLE_NONE, 606 | 607 | COLLISION_BOUNDS_STYLE_COUNT 608 | }; 609 | 610 | /** Allows the application to customize how the overlay appears in the compositor */ 611 | struct Compositor_OverlaySettings 612 | { 613 | uint32_t size; // sizeof(Compositor_OverlaySettings) 614 | bool curved, antialias; 615 | float scale, distance, alpha; 616 | float uOffset, vOffset, uScale, vScale; 617 | float gridDivs, gridWidth, gridScale; 618 | HmdMatrix44_t transform; 619 | }; 620 | 621 | /** used to refer to a single VR overlay */ 622 | typedef uint64_t VROverlayHandle_t; 623 | 624 | static const VROverlayHandle_t k_ulOverlayHandleInvalid = 0; 625 | 626 | /** Errors that can occur around VR overlays */ 627 | enum EVROverlayError 628 | { 629 | VROverlayError_None = 0, 630 | 631 | VROverlayError_UnknownOverlay = 10, 632 | VROverlayError_InvalidHandle = 11, 633 | VROverlayError_PermissionDenied = 12, 634 | VROverlayError_OverlayLimitExceeded = 13, // No more overlays could be created because the maximum number already exist 635 | VROverlayError_WrongVisibilityType = 14, 636 | VROverlayError_KeyTooLong = 15, 637 | VROverlayError_NameTooLong = 16, 638 | VROverlayError_KeyInUse = 17, 639 | VROverlayError_WrongTransformType = 18, 640 | VROverlayError_InvalidTrackedDevice = 19, 641 | VROverlayError_InvalidParameter = 20, 642 | VROverlayError_ThumbnailCantBeDestroyed = 21, 643 | VROverlayError_ArrayTooSmall = 22, 644 | VROverlayError_RequestFailed = 23, 645 | VROverlayError_InvalidTexture = 24, 646 | VROverlayError_UnableToLoadFile = 25, 647 | VROVerlayError_KeyboardAlreadyInUse = 26, 648 | VROverlayError_NoNeighbor = 27, 649 | }; 650 | 651 | /** enum values to pass in to VR_Init to identify whether the application will 652 | * draw a 3D scene. */ 653 | enum EVRApplicationType 654 | { 655 | VRApplication_Other = 0, // Some other kind of application that isn't covered by the other entries 656 | VRApplication_Scene = 1, // Application will submit 3D frames 657 | VRApplication_Overlay = 2, // Application only interacts with overlays 658 | VRApplication_Background = 3, // Application should not start SteamVR if it's not already running, and should not 659 | // keep it running if everything else quits. 660 | }; 661 | 662 | 663 | /** error codes for firmware */ 664 | enum EVRFirmwareError 665 | { 666 | VRFirmwareError_None = 0, 667 | VRFirmwareError_Success = 1, 668 | VRFirmwareError_Fail = 2, 669 | }; 670 | 671 | 672 | /** error codes for notifications */ 673 | enum EVRNotificationError 674 | { 675 | VRNotificationError_OK = 0, 676 | VRNotificationError_InvalidNotificationId = 100, 677 | }; 678 | 679 | 680 | /** error codes returned by Vr_Init */ 681 | 682 | // Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp 683 | enum EVRInitError 684 | { 685 | VRInitError_None = 0, 686 | VRInitError_Unknown = 1, 687 | 688 | VRInitError_Init_InstallationNotFound = 100, 689 | VRInitError_Init_InstallationCorrupt = 101, 690 | VRInitError_Init_VRClientDLLNotFound = 102, 691 | VRInitError_Init_FileNotFound = 103, 692 | VRInitError_Init_FactoryNotFound = 104, 693 | VRInitError_Init_InterfaceNotFound = 105, 694 | VRInitError_Init_InvalidInterface = 106, 695 | VRInitError_Init_UserConfigDirectoryInvalid = 107, 696 | VRInitError_Init_HmdNotFound = 108, 697 | VRInitError_Init_NotInitialized = 109, 698 | VRInitError_Init_PathRegistryNotFound = 110, 699 | VRInitError_Init_NoConfigPath = 111, 700 | VRInitError_Init_NoLogPath = 112, 701 | VRInitError_Init_PathRegistryNotWritable = 113, 702 | VRInitError_Init_AppInfoInitFailed = 114, 703 | VRInitError_Init_Retry = 115, // Used internally to cause retries to vrserver 704 | VRInitError_Init_InitCanceledByUser = 116, // The calling application should silently exit. The user canceled app startup 705 | VRInitError_Init_AnotherAppLaunching = 117, 706 | VRInitError_Init_SettingsInitFailed = 118, 707 | VRInitError_Init_ShuttingDown = 119, 708 | VRInitError_Init_TooManyObjects = 120, 709 | VRInitError_Init_NoServerForBackgroundApp = 121, 710 | VRInitError_Init_NotSupportedWithCompositor = 122, 711 | 712 | VRInitError_Driver_Failed = 200, 713 | VRInitError_Driver_Unknown = 201, 714 | VRInitError_Driver_HmdUnknown = 202, 715 | VRInitError_Driver_NotLoaded = 203, 716 | VRInitError_Driver_RuntimeOutOfDate = 204, 717 | VRInitError_Driver_HmdInUse = 205, 718 | VRInitError_Driver_NotCalibrated = 206, 719 | VRInitError_Driver_CalibrationInvalid = 207, 720 | VRInitError_Driver_HmdDisplayNotFound = 208, 721 | 722 | VRInitError_IPC_ServerInitFailed = 300, 723 | VRInitError_IPC_ConnectFailed = 301, 724 | VRInitError_IPC_SharedStateInitFailed = 302, 725 | VRInitError_IPC_CompositorInitFailed = 303, 726 | VRInitError_IPC_MutexInitFailed = 304, 727 | VRInitError_IPC_Failed = 305, 728 | 729 | VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, 730 | 731 | VRInitError_VendorSpecific_HmdFound_But = 1100, 732 | VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, 733 | VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, 734 | VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103, 735 | VRInitError_VendorSpecific_HmdFound_ConfigTooBig = 1104, 736 | VRInitError_VendorSpecific_HmdFound_ConfigTooSmall = 1105, 737 | VRInitError_VendorSpecific_HmdFound_UnableToInitZLib = 1106, 738 | VRInitError_VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, 739 | VRInitError_VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, 740 | VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, 741 | VRInitError_VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, 742 | VRInitError_VendorSpecific_HmdFound_UserDataAddressRange = 1111, 743 | VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, 744 | 745 | VRInitError_Steam_SteamInstallationNotFound = 2000, 746 | 747 | }; 748 | 749 | #pragma pack( pop ) 750 | 751 | // figure out how to import from the VR API dll 752 | #if defined(_WIN32) 753 | 754 | #ifdef VR_API_EXPORT 755 | #define VR_INTERFACE extern "C" __declspec( dllexport ) 756 | #else 757 | #define VR_INTERFACE extern "C" __declspec( dllimport ) 758 | #endif 759 | 760 | #elif defined(GNUC) || defined(COMPILER_GCC) || defined(__APPLE__) 761 | 762 | #ifdef VR_API_EXPORT 763 | #define VR_INTERFACE extern "C" __attribute__((visibility("default"))) 764 | #else 765 | #define VR_INTERFACE extern "C" 766 | #endif 767 | 768 | #else 769 | #error "Unsupported Platform." 770 | #endif 771 | 772 | 773 | #if defined( _WIN32 ) 774 | #define VR_CALLTYPE __cdecl 775 | #else 776 | #define VR_CALLTYPE 777 | #endif 778 | 779 | } 780 | 781 | #endif // _INCLUDE_VRTYPES_H 782 | 783 | 784 | // vrtrackedcameratypes.h 785 | #ifndef _VRTRACKEDCAMERATYPES_H 786 | #define _VRTRACKEDCAMERATYPES_H 787 | 788 | namespace vr 789 | { 790 | 791 | #if defined(__linux__) || defined(__APPLE__) 792 | // The 32-bit version of gcc has the alignment requirement for uint64 and double set to 793 | // 4 meaning that even with #pragma pack(8) these types will only be four-byte aligned. 794 | // The 64-bit version of gcc has the alignment requirement for these types set to 795 | // 8 meaning that unless we use #pragma pack(4) our structures will get bigger. 796 | // The 64-bit structure packing has to match the 32-bit structure packing for each platform. 797 | #pragma pack( push, 4 ) 798 | #else 799 | #pragma pack( push, 8 ) 800 | #endif 801 | 802 | enum ECameraVideoStreamFormat 803 | { 804 | CVS_FORMAT_UNKNOWN = 0, 805 | CVS_FORMAT_RAW10 = 1, // 10 bits per pixel 806 | CVS_FORMAT_NV12 = 2, // 12 bits per pixel 807 | CVS_FORMAT_RGB24 = 3, // 24 bits per pixel 808 | CVS_MAX_FORMATS 809 | }; 810 | 811 | #ifdef _MSC_VER 812 | #define VR_CAMERA_DECL_ALIGN( x ) __declspec( align( x ) ) 813 | #else 814 | #define VR_CAMERA_DECL_ALIGN( x ) // 815 | #endif 816 | 817 | VR_CAMERA_DECL_ALIGN( 8 ) struct CameraVideoStreamFrame_t 818 | { 819 | ECameraVideoStreamFormat m_nStreamFormat; 820 | 821 | uint32_t m_nWidth; 822 | uint32_t m_nHeight; 823 | 824 | uint32_t m_nFrameSequence; // Starts from 0 when stream starts. 825 | uint32_t m_nTimeStamp; // Driver provided time stamp per driver centric time base 826 | 827 | uint32_t m_nBufferIndex; // Identifies which buffer the image data is hosted 828 | uint32_t m_nBufferCount; // Total number of configured buffers 829 | 830 | uint32_t m_nImageDataSize; // Based on stream format, width, height 831 | 832 | double m_flFrameElapsedTime; // Starts from 0 when stream starts. In seconds. 833 | double m_flFrameCaptureTime; // Relative to when the frame was exposed/captured. 834 | 835 | bool m_bPoseIsValid; // Supplied by HMD layer when used as a tracked camera 836 | vr::HmdMatrix34_t m_matDeviceToAbsoluteTracking; 837 | 838 | float m_Pad[4]; 839 | 840 | void *m_pImageData; 841 | }; 842 | 843 | #pragma pack( pop ) 844 | 845 | } 846 | 847 | #endif // _VRTRACKEDCAMERATYPES_H 848 | // ivrsettings.h 849 | namespace vr 850 | { 851 | enum EVRSettingsError 852 | { 853 | VRSettingsError_None = 0, 854 | VRSettingsError_IPCFailed = 1, 855 | VRSettingsError_WriteFailed = 2, 856 | VRSettingsError_ReadFailed = 3, 857 | }; 858 | 859 | // The maximum length of a settings key 860 | static const uint32_t k_unMaxSettingsKeyLength = 128; 861 | 862 | class IVRSettings 863 | { 864 | public: 865 | virtual const char *GetSettingsErrorNameFromEnum( EVRSettingsError eError ) = 0; 866 | 867 | virtual void Sync( EVRSettingsError *peError = nullptr ) = 0; 868 | 869 | virtual bool GetBool( const char *pchSection, const char *pchSettingsKey, bool bDefaultValue, EVRSettingsError *peError = nullptr ) = 0; 870 | virtual void SetBool( const char *pchSection, const char *pchSettingsKey, bool bValue, EVRSettingsError *peError = nullptr ) = 0; 871 | virtual int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nDefaultValue, EVRSettingsError *peError = nullptr ) = 0; 872 | virtual void SetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError = nullptr ) = 0; 873 | virtual float GetFloat( const char *pchSection, const char *pchSettingsKey, float flDefaultValue, EVRSettingsError *peError = nullptr ) = 0; 874 | virtual void SetFloat( const char *pchSection, const char *pchSettingsKey, float flValue, EVRSettingsError *peError = nullptr ) = 0; 875 | virtual void GetString( const char *pchSection, const char *pchSettingsKey, char *pchValue, uint32_t unValueLen, const char *pchDefaultValue, EVRSettingsError *peError = nullptr ) = 0; 876 | virtual void SetString( const char *pchSection, const char *pchSettingsKey, const char *pchValue, EVRSettingsError *peError = nullptr ) = 0; 877 | }; 878 | 879 | //----------------------------------------------------------------------------- 880 | // steamvr keys 881 | 882 | static const char * const k_pch_SteamVR_Section = "steamvr"; 883 | static const char * const k_pch_SteamVR_RequireHmd_String = "requireHmd"; 884 | static const char * const k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; 885 | static const char * const k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; 886 | static const char * const k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; 887 | static const char * const k_pch_SteamVR_EnableDistortion_Bool = "enableDistortion"; 888 | static const char * const k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; 889 | static const char * const k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; 890 | static const char * const k_pch_SteamVR_SendSystemButtonToAllApps_Bool= "sendSystemButtonToAllApps"; 891 | static const char * const k_pch_SteamVR_LogLevel_Int32 = "loglevel"; 892 | static const char * const k_pch_SteamVR_IPD_Float = "ipd"; 893 | static const char * const k_pch_SteamVR_Background_String = "background"; 894 | static const char * const k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; 895 | 896 | //----------------------------------------------------------------------------- 897 | // lighthouse keys 898 | 899 | static const char * const k_pch_Lighthouse_Section = "driver_lighthouse"; 900 | static const char * const k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; 901 | static const char * const k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; 902 | static const char * const k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; 903 | 904 | static const char * const k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; 905 | static const char * const k_pch_Lighthouse_LighthouseName_String = "lighthousename"; 906 | static const char * const k_pch_Lighthouse_MaxIncidenceAngleDegrees_Float = "maxincidenceangledegrees"; 907 | static const char * const k_pch_Lighthouse_UseLighthouseDirect_Bool = "uselighthousedirect"; 908 | static const char * const k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; 909 | static const char * const k_pch_Lighthouse_OriginOffsetX_Float = "originoffsetx"; 910 | static const char * const k_pch_Lighthouse_OriginOffsetY_Float = "originoffsety"; 911 | static const char * const k_pch_Lighthouse_OriginOffsetZ_Float = "originoffsetz"; 912 | static const char * const k_pch_Lighthouse_HeadingOffset_Float = "headingoffset"; 913 | 914 | //----------------------------------------------------------------------------- 915 | // null keys 916 | 917 | static const char * const k_pch_Null_Section = "driver_null"; 918 | static const char * const k_pch_Null_EnableNullDriver_Bool = "enable"; 919 | static const char * const k_pch_Null_Id_String = "id"; 920 | static const char * const k_pch_Null_SerialNumber_String = "serialNumber"; 921 | static const char * const k_pch_Null_ModelNumber_String = "modelNumber"; 922 | static const char * const k_pch_Null_WindowX_Int32 = "windowX"; 923 | static const char * const k_pch_Null_WindowY_Int32 = "windowY"; 924 | static const char * const k_pch_Null_WindowWidth_Int32 = "windowWidth"; 925 | static const char * const k_pch_Null_WindowHeight_Int32 = "windowHeight"; 926 | static const char * const k_pch_Null_RenderWidth_Int32 = "renderWidth"; 927 | static const char * const k_pch_Null_RenderHeight_Int32 = "renderHeight"; 928 | static const char * const k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; 929 | static const char * const k_pch_Null_DisplayFrequency_Float = "displayFrequency"; 930 | 931 | //----------------------------------------------------------------------------- 932 | // notification keys 933 | static const char * const k_pch_Notifications_Section = "notifications"; 934 | static const char * const k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; 935 | 936 | //----------------------------------------------------------------------------- 937 | // perf keys 938 | static const char * const k_pch_Perf_Section = "perfcheck"; 939 | static const char * const k_pch_Perf_HeuristicActive_Bool = "heuristicActive"; 940 | static const char * const k_pch_Perf_NotifyInHMD_Bool = "warnInHMD"; 941 | static const char * const k_pch_Perf_NotifyOnlyOnce_Bool = "warnOnlyOnce"; 942 | static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; 943 | static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; 944 | 945 | //----------------------------------------------------------------------------- 946 | 947 | static const char * const IVRSettings_Version = "IVRSettings_001"; 948 | 949 | /** Returns the current IVRSettings pointer or NULL the interface could not be found. */ 950 | VR_INTERFACE vr::IVRSettings *VR_CALLTYPE VRSettings(); 951 | 952 | } // namespace vr 953 | 954 | // iservertrackeddevicedriver.h 955 | namespace vr 956 | { 957 | 958 | /** describes the high level state of the tracked object */ 959 | struct TrackedDeviceDriverInfo_t 960 | { 961 | char rchTrackingSystemId[ k_unTrackingStringSize ]; // Name of the underlying tracking system 962 | char rchSerialNumber[ k_unTrackingStringSize ]; // Serial number of the tracked object 963 | char rchModelNumber[ k_unTrackingStringSize ]; // Model number of the tracked object 964 | char rchRenderModelName[ k_unTrackingStringSize ]; // Pass this to GetRenderModel to get the mesh and texture to render this device 965 | 966 | ETrackedDeviceClass eClass; 967 | 968 | // This indicates that there is a device connected for this spot in the info array. 969 | // It could go from true to false if the user unplugs the device. 970 | bool bDeviceIsConnected; 971 | 972 | // This will be true for gyro-only tracking systems 973 | // with no ground truth. 974 | bool bWillDriftInYaw; 975 | 976 | // ---- HMD capabilities ---- 977 | 978 | // This is true if the device (or SteamVR's software layer) supports reporting precise 979 | // times for vsync 980 | bool bReportsTimeSinceVSync; 981 | 982 | // The number of seconds that pass between when the video card sends vsync 983 | // and when photons hit the wearer's eyes. Use this with GetSecondsSinceLastVsync() 984 | // to figure out what to pass to GetTrackerFromDevicePose() 985 | float fSecondsFromVsyncToPhotons; 986 | 987 | // The number of frames per second on the display itself. Applications should 988 | // target this frame rate to keep up with the display 989 | float fDisplayFrequency; 990 | 991 | bool m_bHasCamera; 992 | }; 993 | 994 | 995 | 996 | struct DriverPoseQuaternion_t 997 | { 998 | double w, x, y, z; 999 | }; 1000 | 1001 | struct DriverPose_t 1002 | { 1003 | /* Time offset of this pose, in seconds from the actual time of the pose, 1004 | * relative to the time of the PoseUpdated() call made by the driver. 1005 | */ 1006 | double poseTimeOffset; 1007 | 1008 | /* Generally, the pose maintained by a driver 1009 | * is in an inertial coordinate system different 1010 | * from the world system of x+ right, y+ up, z+ back. 1011 | * Also, the driver is not usually tracking the "head" position, 1012 | * but instead an internal IMU or another reference point in the HMD. 1013 | * The following two transforms transform positions and orientations 1014 | * to app world space from driver world space, 1015 | * and to HMD head space from driver local body space. 1016 | * 1017 | * We maintain the driver pose state in its internal coordinate system, 1018 | * so we can do the pose prediction math without having to 1019 | * use angular acceleration. A driver's angular acceleration is generally not measured, 1020 | * and is instead calculated from successive samples of angular velocity. 1021 | * This leads to a noisy angular acceleration values, which are also 1022 | * lagged due to the filtering required to reduce noise to an acceptable level. 1023 | */ 1024 | vr::HmdQuaternion_t qWorldFromDriverRotation; 1025 | double vecWorldFromDriverTranslation[ 3 ]; 1026 | 1027 | vr::HmdQuaternion_t qDriverFromHeadRotation; 1028 | double vecDriverFromHeadTranslation[ 3 ]; 1029 | 1030 | /* State of driver pose, in meters and radians. */ 1031 | /* Position of the driver tracking reference in driver world space 1032 | * +[0] (x) is right 1033 | * +[1] (y) is up 1034 | * -[2] (z) is forward 1035 | */ 1036 | double vecPosition[ 3 ]; 1037 | 1038 | /* Velocity of the pose in meters/second */ 1039 | double vecVelocity[ 3 ]; 1040 | 1041 | /* Acceleration of the pose in meters/second */ 1042 | double vecAcceleration[ 3 ]; 1043 | 1044 | /* Orientation of the tracker, represented as a quaternion */ 1045 | vr::HmdQuaternion_t qRotation; 1046 | 1047 | /* Angular velocity of the pose in axis-angle 1048 | * representation. The direction is the angle of 1049 | * rotation and the magnitude is the angle around 1050 | * that axis in radians/second. */ 1051 | double vecAngularVelocity[ 3 ]; 1052 | 1053 | /* Angular acceleration of the pose in axis-angle 1054 | * representation. The direction is the angle of 1055 | * rotation and the magnitude is the angle around 1056 | * that axis in radians/second^2. */ 1057 | double vecAngularAcceleration[ 3 ]; 1058 | 1059 | ETrackingResult result; 1060 | 1061 | bool poseIsValid; 1062 | bool willDriftInYaw; 1063 | bool shouldApplyHeadModel; 1064 | }; 1065 | 1066 | 1067 | // ---------------------------------------------------------------------------------------------- 1068 | // Purpose: Represents a single tracked device in a driver 1069 | // ---------------------------------------------------------------------------------------------- 1070 | class ITrackedDeviceServerDriver 1071 | { 1072 | public: 1073 | 1074 | // ------------------------------------ 1075 | // Management Methods 1076 | // ------------------------------------ 1077 | /** This is called before an HMD is returned to the application. It will always be 1078 | * called before any display or tracking methods. Memory and processor use by the 1079 | * ITrackedDeviceServerDriver object should be kept to a minimum until it is activated. 1080 | * The pose listener is guaranteed to be valid until Deactivate is called, but 1081 | * should not be used after that point. */ 1082 | virtual EVRInitError Activate( uint32_t unObjectId ) = 0; 1083 | 1084 | /** This is called when The VR system is switching from this Hmd being the active display 1085 | * to another Hmd being the active display. The driver should clean whatever memory 1086 | * and thread use it can when it is deactivated */ 1087 | virtual void Deactivate() = 0; 1088 | 1089 | /** returns the ID of this particular HMD. This value is opaque to the VR system itself, 1090 | * but should be unique within the driver because it will be passed back in via FindHmd */ 1091 | virtual const char *GetId() = 0; 1092 | 1093 | /** A VR Client has made this debug request of the driver. The set of valid requests is entirely 1094 | * up to the driver and the client to figure out, as is the format of the response. Responses that 1095 | * exceed the length of the supplied buffer should be truncated and null terminated */ 1096 | virtual void DebugRequest( const char *pchRequest, char *pchResponseBuffer, uint32_t unResponseBufferSize ) = 0; 1097 | 1098 | // ------------------------------------ 1099 | // Display Methods 1100 | // ------------------------------------ 1101 | 1102 | /** Size and position that the window needs to be on the VR display. */ 1103 | virtual void GetWindowBounds( int32_t *pnX, int32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 1104 | 1105 | /** Returns true if the display is extending the desktop. */ 1106 | virtual bool IsDisplayOnDesktop() = 0; 1107 | 1108 | /** Returns true if the display is real and not a fictional display. */ 1109 | virtual bool IsDisplayRealDisplay() = 0; 1110 | 1111 | /** Suggested size for the intermediate render target that the distortion pulls from. */ 1112 | virtual void GetRecommendedRenderTargetSize( uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 1113 | 1114 | /** Gets the viewport in the frame buffer to draw the output of the distortion into */ 1115 | virtual void GetEyeOutputViewport( EVREye eEye, uint32_t *pnX, uint32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) = 0; 1116 | 1117 | /** The components necessary to build your own projection matrix in case your 1118 | * application is doing something fancy like infinite Z */ 1119 | virtual void GetProjectionRaw( EVREye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom ) = 0; 1120 | 1121 | /** Returns the result of the distortion function for the specified eye and input UVs. UVs go from 0,0 in 1122 | * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. */ 1123 | virtual DistortionCoordinates_t ComputeDistortion( EVREye eEye, float fU, float fV ) = 0; 1124 | 1125 | // ----------------------------------- 1126 | // Direct mode methods 1127 | // ----------------------------------- 1128 | 1129 | /** Specific to Oculus compositor support, textures supplied must be created using this method. */ 1130 | virtual void CreateSwapTextureSet( uint32_t unPid, uint32_t unFormat, uint32_t unWidth, uint32_t unHeight, void *( *pSharedTextureHandles )[2] ) {} 1131 | 1132 | /** Used to textures created using CreateSwapTextureSet. Only one of the set's handles needs to be used to destroy the entire set. */ 1133 | virtual void DestroySwapTextureSet( void *pSharedTextureHandle ) {} 1134 | 1135 | /** Used to purge all texture sets for a given process. */ 1136 | virtual void DestroyAllSwapTextureSets( uint32_t unPid ) {} 1137 | 1138 | /** Call once per layer to draw for this frame. One shared texture handle per eye. Textures must be created 1139 | * using CreateSwapTextureSet and should be alternated per frame. Call Present once all layers have been submitted. */ 1140 | virtual void SubmitLayer( void *pSharedTextureHandles[2], const vr::VRTextureBounds_t * pBounds, const vr::HmdMatrix34_t * pPose ) {} 1141 | 1142 | /** Submits queued layers for display. */ 1143 | virtual void Present() {} 1144 | 1145 | // ----------------------------------- 1146 | // Assorted capability methods 1147 | // ----------------------------------- 1148 | 1149 | /** Returns all the static information that will be reported to the clients */ 1150 | virtual TrackedDeviceDriverInfo_t GetTrackedDeviceDriverInfo() = 0; 1151 | 1152 | // ----------------------------------- 1153 | // Administrative Methods 1154 | // ----------------------------------- 1155 | 1156 | /** Returns the model number of this HMD */ 1157 | virtual const char *GetModelNumber() = 0; 1158 | 1159 | /** Returns the serial number of this HMD */ 1160 | virtual const char *GetSerialNumber() = 0; 1161 | 1162 | // ------------------------------------ 1163 | // Tracking Methods 1164 | // ------------------------------------ 1165 | virtual DriverPose_t GetPose() = 0; 1166 | 1167 | // ------------------------------------ 1168 | // Property Methods 1169 | // ------------------------------------ 1170 | 1171 | /** Returns a bool property. If the property is not available this function will return false. */ 1172 | virtual bool GetBoolTrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; 1173 | 1174 | /** Returns a float property. If the property is not available this function will return 0. */ 1175 | virtual float GetFloatTrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; 1176 | 1177 | /** Returns an int property. If the property is not available this function will return 0. */ 1178 | virtual int32_t GetInt32TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; 1179 | 1180 | /** Returns a uint64 property. If the property is not available this function will return 0. */ 1181 | virtual uint64_t GetUint64TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; 1182 | 1183 | /** Returns a matrix property. If the device index is not valid or the property is not a matrix type, this function will return identity. */ 1184 | virtual HmdMatrix34_t GetMatrix34TrackedDeviceProperty( ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) = 0; 1185 | 1186 | /** Returns a string property. If the property is not available this function will return 0 and pError will be 1187 | * set to an error. Otherwise it returns the length of the number of bytes necessary to hold this string including 1188 | * the trailing null. If the buffer is too small the error will be TrackedProp_BufferTooSmall. Strings will 1189 | * generally fit in buffers of k_unTrackingStringSize characters. Drivers may not return strings longer than 1190 | * k_unMaxPropertyStringSize. */ 1191 | virtual uint32_t GetStringTrackedDeviceProperty( ETrackedDeviceProperty prop, char *pchValue, uint32_t unBufferSize, ETrackedPropertyError *pError ) = 0; 1192 | 1193 | // ------------------------------------ 1194 | // Controller Methods 1195 | // ------------------------------------ 1196 | 1197 | /** Gets the current state of a controller. */ 1198 | virtual VRControllerState_t GetControllerState() = 0; 1199 | 1200 | /** Returns a uint64 property. If the property is not available this function will return 0. */ 1201 | virtual bool TriggerHapticPulse( uint32_t unAxisId, uint16_t usPulseDurationMicroseconds ) = 0; 1202 | 1203 | // ------------------------------------ 1204 | // Camera Methods 1205 | // ------------------------------------ 1206 | virtual bool HasCamera() = 0; 1207 | virtual bool GetCameraFirmwareDescription( char *pBuffer, uint32_t nBufferLen ) = 0; 1208 | virtual bool GetCameraFrameDimensions( vr::ECameraVideoStreamFormat nVideoStreamFormat, uint32_t *pWidth, uint32_t *pHeight ) = 0; 1209 | virtual bool GetCameraFrameBufferingRequirements( int *pDefaultFrameQueueSize, uint32_t *pFrameBufferDataSize ) = 0; 1210 | virtual bool SetCameraFrameBuffering( int nFrameBufferCount, void **ppFrameBuffers, uint32_t nFrameBufferDataSize ) = 0; 1211 | virtual bool SetCameraVideoStreamFormat( vr::ECameraVideoStreamFormat nVideoStreamFormat ) = 0; 1212 | virtual vr::ECameraVideoStreamFormat GetCameraVideoStreamFormat() = 0; 1213 | virtual bool StartVideoStream() = 0; 1214 | virtual void StopVideoStream() = 0; 1215 | virtual bool IsVideoStreamActive() = 0; 1216 | virtual float GetVideoStreamElapsedTime() = 0; 1217 | virtual const vr::CameraVideoStreamFrame_t *GetVideoStreamFrame() = 0; 1218 | virtual void ReleaseVideoStreamFrame( const vr::CameraVideoStreamFrame_t *pFrameImage ) = 0; 1219 | virtual bool SetAutoExposure( bool bEnable ) = 0; 1220 | virtual bool SupportsPauseResume() = 0; 1221 | virtual bool PauseVideoStream() = 0; 1222 | virtual bool ResumeVideoStream() = 0; 1223 | virtual bool IsVideoStreamPaused() = 0; 1224 | virtual bool GetCameraDistortion( float flInputU, float flInputV, float *pflOutputU, float *pflOutputV ) = 0; 1225 | virtual bool GetCameraProjection( float flWidthPixels, float flHeightPixels, float flZNear, float flZFar, vr::HmdMatrix44_t *pProjection ) = 0; 1226 | }; 1227 | 1228 | 1229 | 1230 | static const char *ITrackedDeviceServerDriver_Version = "ITrackedDeviceServerDriver_002"; 1231 | 1232 | } 1233 | // itrackeddevicedriverprovider.h 1234 | namespace vr 1235 | { 1236 | 1237 | class ITrackedDeviceServerDriver; 1238 | struct TrackedDeviceDriverInfo_t; 1239 | struct DriverPose_t; 1240 | 1241 | class IDriverLog 1242 | { 1243 | public: 1244 | /** Writes a log message to the log file prefixed with the driver name */ 1245 | virtual void Log( const char *pchLogMessage ) = 0; 1246 | }; 1247 | 1248 | /** This interface is provided by vrserver to allow the driver to notify 1249 | * the system when something changes about a device. These changes must 1250 | * not change the serial number or class of the device because those values 1251 | * are permanently associated with the device's index. */ 1252 | class IServerDriverHost 1253 | { 1254 | public: 1255 | /** Notifies the server that a tracked device has been added. If this function returns true 1256 | * the server will call Activate on the device. If it returns false some kind of error 1257 | * has occurred and the device will not be activated. */ 1258 | virtual bool TrackedDeviceAdded( const TrackedDeviceDriverInfo_t & info ) = 0; 1259 | 1260 | /** Notifies the server that a tracked device info has changed. These changes must not 1261 | * change the serial number or class of the device because those values are permanently associated with the device's 1262 | * index. */ 1263 | virtual void TrackedDeviceInfoUpdated( uint32_t unWhichDevice, const TrackedDeviceDriverInfo_t & info ) = 0; 1264 | 1265 | /** Notifies the server that a tracked device's pose has been updated */ 1266 | virtual void TrackedDevicePoseUpdated( uint32_t unWhichDevice, const DriverPose_t & newPose ) = 0; 1267 | 1268 | /** Notifies the server that the property cache for the specified device should be invalidated */ 1269 | virtual void TrackedDevicePropertiesChanged( uint32_t unWhichDevice ) = 0; 1270 | 1271 | /** Notifies the server that vsync has occurred on the the display attached to the device. This is 1272 | * only permitted on devices of the HMD class. */ 1273 | virtual void VsyncEvent( double vsyncTimeOffsetSeconds ) = 0; 1274 | 1275 | /** notifies the server that the button was pressed */ 1276 | virtual void TrackedDeviceButtonPressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; 1277 | 1278 | /** notifies the server that the button was unpressed */ 1279 | virtual void TrackedDeviceButtonUnpressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; 1280 | 1281 | /** notifies the server that the button was pressed */ 1282 | virtual void TrackedDeviceButtonTouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; 1283 | 1284 | /** notifies the server that the button was unpressed */ 1285 | virtual void TrackedDeviceButtonUntouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0; 1286 | 1287 | /** notifies the server than a controller axis changed */ 1288 | virtual void TrackedDeviceAxisUpdated( uint32_t unWhichDevice, uint32_t unWhichAxis, const VRControllerAxis_t & axisState ) = 0; 1289 | 1290 | /** Notifies the server that the MC image has been updated for the display attached to the device. This is 1291 | * only permitted on devices of the HMD class. */ 1292 | virtual void MCImageUpdated() = 0; 1293 | 1294 | /** always returns a pointer to a valid interface pointer of IVRSettings */ 1295 | virtual IVRSettings *GetSettings() = 0; 1296 | 1297 | /** Notifies the server that the physical IPD adjustment has been moved on the HMD */ 1298 | virtual void PhysicalIpdSet( uint32_t unWhichDevice, float fPhysicalIpdMeters ) = 0; 1299 | 1300 | /** Notifies the server that the proximity sensor on the specified device */ 1301 | virtual void ProximitySensorState( uint32_t unWhichDevice, bool bProximitySensorTriggered ) = 0; 1302 | 1303 | /** Sends a vendor specific event (VREvent_VendorSpecific_Reserved_Start..VREvent_VendorSpecific_Reserved_End */ 1304 | virtual void VendorSpecificEvent( uint32_t unWhichDevice, vr::EVREventType eventType, const VREvent_Data_t & eventData, double eventTimeOffset ) = 0; 1305 | }; 1306 | 1307 | 1308 | /** This interface must be implemented in each driver. It will be loaded in vrserver.exe */ 1309 | class IServerTrackedDeviceProvider 1310 | { 1311 | public: 1312 | /** initializes the driver. This will be called before any other methods are called. 1313 | * If Init returns anything other than VRInitError_None the driver DLL will be unloaded. 1314 | * 1315 | * pDriverHost will never be NULL, and will always be a pointer to a IServerDriverHost interface 1316 | * 1317 | * pchUserDriverConfigDir - The absolute path of the directory where the driver should store user 1318 | * config files. 1319 | * pchDriverInstallDir - The absolute path of the root directory for the driver. 1320 | */ 1321 | virtual EVRInitError Init( IDriverLog *pDriverLog, vr::IServerDriverHost *pDriverHost, const char *pchUserDriverConfigDir, const char *pchDriverInstallDir ) = 0; 1322 | 1323 | /** cleans up the driver right before it is unloaded */ 1324 | virtual void Cleanup() = 0; 1325 | 1326 | /** returns the number of HMDs that this driver manages that are physically connected. */ 1327 | virtual uint32_t GetTrackedDeviceCount() = 0; 1328 | 1329 | /** returns a single HMD */ 1330 | virtual ITrackedDeviceServerDriver *GetTrackedDeviceDriver( uint32_t unWhich ) = 0; 1331 | 1332 | /** returns a single HMD by ID */ 1333 | virtual ITrackedDeviceServerDriver* FindTrackedDeviceDriver( const char *pchId ) = 0; 1334 | 1335 | /** Allows the driver do to some work in the main loop of the server. */ 1336 | virtual void RunFrame() = 0; 1337 | 1338 | }; 1339 | 1340 | 1341 | static const char *IServerTrackedDeviceProvider_Version = "IServerTrackedDeviceProvider_001"; 1342 | 1343 | 1344 | /** This interface is provided by vrclient to allow the driver call back and query various information */ 1345 | class IClientDriverHost 1346 | { 1347 | public: 1348 | /** Returns the device class of a tracked device. If there has not been a device connected in this slot 1349 | * since the application started this function will return TrackedDevice_Invalid. For previous detected 1350 | * devices the function will return the previously observed device class. 1351 | * 1352 | * To determine which devices exist on the system, just loop from 0 to k_unMaxTrackedDeviceCount and check 1353 | * the device class. Every device with something other than TrackedDevice_Invalid is associated with an 1354 | * actual tracked device. */ 1355 | virtual ETrackedDeviceClass GetTrackedDeviceClass( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; 1356 | 1357 | /** Returns true if there is a device connected in this slot. */ 1358 | virtual bool IsTrackedDeviceConnected( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0; 1359 | 1360 | /** Returns a bool property. If the device index is not valid or the property is not a bool type this function will return false. */ 1361 | virtual bool GetBoolTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; 1362 | 1363 | /** Returns a float property. If the device index is not valid or the property is not a float type this function will return 0. */ 1364 | virtual float GetFloatTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; 1365 | 1366 | /** Returns an int property. If the device index is not valid or the property is not a int type this function will return 0. */ 1367 | virtual int32_t GetInt32TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; 1368 | 1369 | /** Returns a uint64 property. If the device index is not valid or the property is not a uint64 type this function will return 0. */ 1370 | virtual uint64_t GetUint64TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0; 1371 | 1372 | /** Returns a string property. If the device index is not valid or the property is not a float type this function will 1373 | * return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing 1374 | * null. Strings will generally fit in buffers of k_unTrackingStringSize characters. */ 1375 | virtual uint32_t GetStringTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char *pchValue, uint32_t unBufferSize, ETrackedPropertyError *pError = 0L ) = 0; 1376 | 1377 | /** always returns a pointer to a valid interface pointer of IVRSettings */ 1378 | virtual IVRSettings *GetSettings() = 0; 1379 | }; 1380 | 1381 | 1382 | 1383 | /** This interface must be implemented in each driver. It will be loaded in vrclient.dll */ 1384 | class IClientTrackedDeviceProvider 1385 | { 1386 | public: 1387 | /** initializes the driver. This will be called before any other methods are called, 1388 | * except BIsHmdPresent(). BIsHmdPresent is called outside of the Init/Cleanup pair. 1389 | * If Init returns anything other than VRInitError_None the driver DLL will be unloaded. 1390 | * 1391 | * pDriverHost will never be NULL, and will always be a pointer to a IClientDriverHost interface 1392 | * 1393 | * pchUserDriverConfigDir - The absolute path of the directory where the driver should store user 1394 | * config files. 1395 | * pchDriverInstallDir - The absolute path of the root directory for the driver. 1396 | */ 1397 | virtual EVRInitError Init( IDriverLog *pDriverLog, vr::IClientDriverHost *pDriverHost, const char *pchUserDriverConfigDir, const char *pchDriverInstallDir ) = 0; 1398 | 1399 | /** cleans up the driver right before it is unloaded */ 1400 | virtual void Cleanup() = 0; 1401 | 1402 | /** Called when the client needs to inform an application if an HMD is attached that uses 1403 | * this driver. This method should be as lightweight as possible and should have no side effects 1404 | * such as hooking process functions or leaving resources loaded. Init will not be called before 1405 | * this method and Cleanup will not be called after it. 1406 | */ 1407 | virtual bool BIsHmdPresent( const char *pchUserConfigDir ) = 0; 1408 | 1409 | /** called when the client inits an HMD to let the client driver know which one is in use */ 1410 | virtual EVRInitError SetDisplayId( const char *pchDisplayId ) = 0; 1411 | 1412 | /** Returns the stencil mesh information for the current HMD. If this HMD does not have a stencil mesh the vertex data and count will be 1413 | * NULL and 0 respectively. This mesh is meant to be rendered into the stencil buffer (or into the depth buffer setting nearz) before rendering 1414 | * each eye's view. The pixels covered by this mesh will never be seen by the user after the lens distortion is applied and based on visibility to the panels. 1415 | * This will improve perf by letting the GPU early-reject pixels the user will never see before running the pixel shader. 1416 | * NOTE: Render this mesh with backface culling disabled since the winding order of the vertices can be different per-HMD or per-eye. 1417 | */ 1418 | virtual HiddenAreaMesh_t GetHiddenAreaMesh( EVREye eEye ) = 0; 1419 | 1420 | /** Get the MC image for the current HMD. 1421 | * Returns the size in bytes of the buffer required to hold the specified resource. */ 1422 | virtual uint32_t GetMCImage( uint32_t *pImgWidth, uint32_t *pImgHeight, uint32_t *pChannels, void *pDataBuffer, uint32_t unBufferLen ) = 0; 1423 | }; 1424 | 1425 | static const char *IClientTrackedDeviceProvider_Version = "IClientTrackedDeviceProvider_002"; 1426 | 1427 | }// End 1428 | 1429 | #endif // _OPENVR_DRIVER_API 1430 | 1431 | 1432 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/lib/win32/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/lib/win32/openvr_api.lib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/lib/win64/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv0_9_12/lib/win64/openvr_api.lib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Valve Corporation 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its contributors 15 | may be used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.libopenvr_api.dylib 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/win32/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/win32/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/win64/openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/bin/win64/openvr_api.dll -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/osx32/libopenvr_api.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/osx32/libopenvr_api.dylib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/win32/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/win32/openvr_api.lib -------------------------------------------------------------------------------- /Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/win64/openvr_api.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Engine/Source/ThirdParty/OpenVR/OpenVRv1_0_2/lib/win64/openvr_api.lib -------------------------------------------------------------------------------- /Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/Icon.ico -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RoboRevive 2 | 3 | This is a Robo Recall mod that adds native Vive support. It's called RoboRevive, but it doesn't actually use the Revive compatibility layer itself. Instead it uses the native SteamVR plugin from the Unreal Engine. 4 | 5 | # Installation 6 | 7 | ## Oculus Home 8 | 9 | The full version of the game is [available from Oculus Home](https://www.oculus.com/experiences/rift/1081190428622821/). 10 | 11 | 1. [Install the Oculus Store](https://oculus.com/setup) and download Robo Recall. 12 | 2. Download the installer from the [releases page](https://github.com/LibreVR/RoboRevive/releases). 13 | 3. Run the installation, the directory for Robo Recall will be automatically detected. 14 | 4. At the end of the installation, Robo Recall will prompt you to install the RoboRevive mod. 15 | 5. Accept the installation and click "Play Now" to start playing Robo Recall on the Vive. 16 | 17 | Do **not** start Robo Recall through the Revive Dashboard, if you do it will use the Oculus support instead of the native Vive support. Either start Robo Recall through the shortcut on your desktop or start `Robo Recall (RoboRevive)` from your Steam Library while SteamVR is running. 18 | 19 | ## Robo Recall Editor 20 | 21 | If you want to use the Robo Recall Mod Kit on your Vive follow these instructions. The Mod Kit only contains the first mission, so it does **not** contain the full game. 22 | 23 | 1. Download the Robo Recall Editor through the Epic Games Launcher. 24 | 2. [Download this repository](https://github.com/LibreVR/RoboRevive/archive/master.zip) as a zip file. 25 | 3. Go to the directory where the Robo Recall Editor is installed, by default this is `C:\Program Files\Epic Games\RoboRecallModKit`. 26 | 4. Extract the contents of the zip file into the directory, be sure to merge it with the existing folders. 27 | 5. Start the Robo Recall Editor. 28 | 29 | # FAQ 30 | 31 | ## How do I turn the sticky grip button mode on/off? 32 | 33 | By default RoboRevive will use a hybrid sticky grip that will toggle the grip if the button is released within a 500ms window. You can customize this behaviour by installing [OpenVR-AdvancedSettings](https://github.com/matzman666/OpenVR-AdvancedSettings/) in the Revive tab. If you do not have Revive installed you will need to enable `Force Revive Page` in the Settings tab. 34 | 35 | **Note:** Having Revive installed will cause the sticky grip to be turned off by default, you can re-enable it using OpenVR-AdvancedSettings as described above. 36 | 37 | ## Can I still participate in the leaderboards and play the story mode while using this mod? 38 | 39 | Yes you can! RoboRevive is a code-only mod and does not need to be enabled through the mod menu like other content mods. Therefore you can participate in the leadboards and the story mode like normal. 40 | 41 | ## Why do I still see Oculus Touch controllers sometimes? 42 | 43 | Unfortunately it's not possible to change these models in a code-only mod like RoboRevive. 44 | 45 | ## Do I need to have Revive installed? 46 | 47 | No, this mod does not require any part of Revive to work. 48 | 49 | ## Do I need to have the Oculus software installed? 50 | 51 | The Oculus Store is the only place where you can purchase and download Robo Recall, thus you will need to have it installed. 52 | 53 | The installer also expects the Oculus software to be installed or else it will not be able to detect Robo Recall. 54 | -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-Win64-Shipping.modules: -------------------------------------------------------------------------------- 1 | { 2 | "Changelist" : 3792635, 3 | "CompatibleChangelist" : 3313651, 4 | "BuildId" : "", 5 | "Modules" : 6 | { 7 | "RoboRevive" : "RoboRecall-RoboRevive-Win64-Shipping.dll", 8 | "SteamVR" : "RoboRecall-SteamVR-Win64-Shipping.dll", 9 | "SteamVRController" : "RoboRecall-SteamVRController-Win64-Shipping.dll" 10 | } 11 | } -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/RoboRecall-Win64-Shipping.target: -------------------------------------------------------------------------------- 1 | { 2 | "TargetName" : "RoboRecall", 3 | "Platform" : "Win64", 4 | "Configuration" : "Shipping", 5 | "BuildId" : "", 6 | "Version" : 7 | { 8 | "MajorVersion" : 4, 9 | "MinorVersion" : 16, 10 | "PatchVersion" : 0, 11 | "Changelist" : 3792635, 12 | "CompatibleChangelist" : 3313651, 13 | "IsLicenseeVersion" : 0, 14 | "IsPromotedBuild" : 1, 15 | "BranchName" : "++Odin+Release" 16 | }, 17 | "BuildProducts" : 18 | [ 19 | { 20 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.dll", 21 | "Type" : "DynamicLibrary" 22 | }, 23 | { 24 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-RoboRevive-Win64-Shipping.pdb", 25 | "Type" : "SymbolFile" 26 | }, 27 | { 28 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Shipping/RoboRecall-RoboRevive-Win64-Shipping.lib", 29 | "Type" : "ImportLibrary" 30 | }, 31 | { 32 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.dll", 33 | "Type" : "DynamicLibrary" 34 | }, 35 | { 36 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVR-Win64-Shipping.pdb", 37 | "Type" : "SymbolFile" 38 | }, 39 | { 40 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Shipping/RoboRecall-SteamVR-Win64-Shipping.lib", 41 | "Type" : "ImportLibrary" 42 | }, 43 | { 44 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.dll", 45 | "Type" : "DynamicLibrary" 46 | }, 47 | { 48 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-SteamVRController-Win64-Shipping.pdb", 49 | "Type" : "SymbolFile" 50 | }, 51 | { 52 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Shipping/RoboRecall-SteamVRController-Win64-Shipping.lib", 53 | "Type" : "ImportLibrary" 54 | }, 55 | { 56 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/Binaries/Win64/RoboRecall-Win64-Shipping.modules", 57 | "Type" : "RequiredResource" 58 | } 59 | ], 60 | "RuntimeDependencies" : 61 | [ 62 | { 63 | "Path" : "$(ProjectDir)/RoboRecall.uproject", 64 | "Type" : "UFS" 65 | }, 66 | { 67 | "Path" : "$(ProjectDir)/Plugins/FortniteWeapons/FortniteWeapons.uplugin", 68 | "Type" : "UFS" 69 | }, 70 | { 71 | "Path" : "$(ProjectDir)/Plugins/OdinEditor/OdinEditor.uplugin", 72 | "Type" : "UFS" 73 | }, 74 | { 75 | "Path" : "$(ProjectDir)/Plugins/Paragon_Kallari/Paragon_Kallari.uplugin", 76 | "Type" : "UFS" 77 | }, 78 | { 79 | "Path" : "$(ProjectDir)/Plugins/RoboRevive/RoboRevive.uplugin", 80 | "Type" : "UFS" 81 | }, 82 | { 83 | "Path" : "$(ProjectDir)/Plugins/UnrealTournament/UnrealTournament.uplugin", 84 | "Type" : "UFS" 85 | }, 86 | { 87 | "Path" : "$(EngineDir)/Plugins/2D/Paper2D/Paper2D.uplugin", 88 | "Type" : "UFS" 89 | }, 90 | { 91 | "Path" : "$(EngineDir)/Plugins/Blendables/LightPropagationVolume/LightPropagationVolume.uplugin", 92 | "Type" : "UFS" 93 | }, 94 | { 95 | "Path" : "$(EngineDir)/Plugins/Editor/FacialAnimation/FacialAnimation.uplugin", 96 | "Type" : "UFS" 97 | }, 98 | { 99 | "Path" : "$(EngineDir)/Plugins/EpicGameAnalytics/EpicGameAnalytics.uplugin", 100 | "Type" : "UFS" 101 | }, 102 | { 103 | "Path" : "$(EngineDir)/Plugins/Experimental/CharacterAI/CharacterAI.uplugin", 104 | "Type" : "UFS" 105 | }, 106 | { 107 | "Path" : "$(EngineDir)/Plugins/Experimental/HTML5Networking/HTML5Networking.uplugin", 108 | "Type" : "UFS" 109 | }, 110 | { 111 | "Path" : "$(EngineDir)/Plugins/Media/AndroidMedia/AndroidMedia.uplugin", 112 | "Type" : "UFS" 113 | }, 114 | { 115 | "Path" : "$(EngineDir)/Plugins/Media/AvfMedia/AvfMedia.uplugin", 116 | "Type" : "UFS" 117 | }, 118 | { 119 | "Path" : "$(EngineDir)/Plugins/Media/WmfMedia/WmfMedia.uplugin", 120 | "Type" : "UFS" 121 | }, 122 | { 123 | "Path" : "$(EngineDir)/Plugins/Messaging/TcpMessaging/TcpMessaging.uplugin", 124 | "Type" : "UFS" 125 | }, 126 | { 127 | "Path" : "$(EngineDir)/Plugins/Messaging/UdpMessaging/UdpMessaging.uplugin", 128 | "Type" : "UFS" 129 | }, 130 | { 131 | "Path" : "$(EngineDir)/Plugins/Online/OnlineSubsystem/OnlineSubsystem.uplugin", 132 | "Type" : "UFS" 133 | }, 134 | { 135 | "Path" : "$(EngineDir)/Plugins/Online/OnlineSubsystemNull/OnlineSubsystemNull.uplugin", 136 | "Type" : "UFS" 137 | }, 138 | { 139 | "Path" : "$(EngineDir)/Plugins/Online/OnlineSubsystemOculus/OnlineSubsystemOculus.uplugin", 140 | "Type" : "UFS" 141 | }, 142 | { 143 | "Path" : "$(EngineDir)/Plugins/Online/OnlineSubsystemUtils/OnlineSubsystemUtils.uplugin", 144 | "Type" : "UFS" 145 | }, 146 | { 147 | "Path" : "$(EngineDir)/Plugins/Runtime/ArchVisCharacter/ArchVisCharacter.uplugin", 148 | "Type" : "UFS" 149 | }, 150 | { 151 | "Path" : "$(EngineDir)/Plugins/Runtime/CableComponent/CableComponent.uplugin", 152 | "Type" : "UFS" 153 | }, 154 | { 155 | "Path" : "$(EngineDir)/Plugins/Runtime/CustomMeshComponent/CustomMeshComponent.uplugin", 156 | "Type" : "UFS" 157 | }, 158 | { 159 | "Path" : "$(EngineDir)/Plugins/Runtime/ExampleDeviceProfileSelector/ExampleDeviceProfileSelector.uplugin", 160 | "Type" : "UFS" 161 | }, 162 | { 163 | "Path" : "$(EngineDir)/Plugins/Runtime/LocationServicesBPLibrary/LocationServicesBPLibrary.uplugin", 164 | "Type" : "UFS" 165 | }, 166 | { 167 | "Path" : "$(EngineDir)/Plugins/Runtime/MobilePatchingUtils/MobilePatchingUtils.uplugin", 168 | "Type" : "UFS" 169 | }, 170 | { 171 | "Path" : "$(EngineDir)/Plugins/Runtime/OculusAudio/OculusAudio.uplugin", 172 | "Type" : "UFS" 173 | }, 174 | { 175 | "Path" : "$(EngineDir)/Plugins/Runtime/OculusInput/OculusInput.uplugin", 176 | "Type" : "UFS" 177 | }, 178 | { 179 | "Path" : "$(EngineDir)/Plugins/Runtime/OculusLibrary/OculusLibrary.uplugin", 180 | "Type" : "UFS" 181 | }, 182 | { 183 | "Path" : "$(EngineDir)/Plugins/Runtime/OculusRift/OculusRift.uplugin", 184 | "Type" : "UFS" 185 | }, 186 | { 187 | "Path" : "$(EngineDir)/Plugins/Runtime/PhysXVehicles/PhysXVehicles.uplugin", 188 | "Type" : "UFS" 189 | }, 190 | { 191 | "Path" : "$(EngineDir)/Plugins/Runtime/ProceduralMeshComponent/ProceduralMeshComponent.uplugin", 192 | "Type" : "UFS" 193 | }, 194 | { 195 | "Path" : "$(EngineDir)/Plugins/Runtime/WindowsMoviePlayer/WindowsMoviePlayer.uplugin", 196 | "Type" : "UFS" 197 | }, 198 | { 199 | "Path" : "$(EngineDir)/Content/Slate/...", 200 | "Type" : "UFS" 201 | }, 202 | { 203 | "Path" : "$(ProjectDir)/Content/Slate/...", 204 | "Type" : "UFS" 205 | }, 206 | { 207 | "Path" : "$(EngineDir)/Binaries/ThirdParty/OpenVR/OpenVRv1_0_2/Win64/openvr_api.dll", 208 | "Type" : "NonUFS" 209 | } 210 | ] 211 | } -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-RoboRevive.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-RoboRevive.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-RoboRevive.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-RoboRevive.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVR.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVR.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVR.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVR.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVRController.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVRController.dll -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVRController.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor-SteamVRController.pdb -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Binaries/Win64/UE4Editor.modules: -------------------------------------------------------------------------------- 1 | { 2 | "Changelist" : 3792635, 3 | "CompatibleChangelist" : 3313651, 4 | "BuildId" : "b9148a0c-19ba-47c0-b207-d358b2ae3f4f", 5 | "Modules" : 6 | { 7 | "RoboRevive" : "UE4Editor-RoboRevive.dll", 8 | "SteamVR" : "UE4Editor-SteamVR.dll", 9 | "SteamVRController" : "UE4Editor-SteamVRController.dll" 10 | } 11 | } -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.dll.response: -------------------------------------------------------------------------------- 1 | /MANIFEST:NO 2 | /NOLOGO 3 | /DEBUG 4 | /errorReport:prompt 5 | /MACHINE:x64 6 | /SUBSYSTEM:WINDOWS 7 | /FIXED:No 8 | /NXCOMPAT 9 | /STACK:5000000 10 | /DELAY:UNLOAD 11 | /DLL 12 | /PDBALTPATH:%_PDB% 13 | /OPT:NOREF 14 | /OPT:NOICF 15 | /INCREMENTAL:NO 16 | /ignore:4199 17 | /ignore:4099 18 | /DELAYLOAD:"d3d12.dll" 19 | /NODEFAULTLIB:"LIBCMT" 20 | /NODEFAULTLIB:"LIBCPMT" 21 | /NODEFAULTLIB:"LIBCMTD" 22 | /NODEFAULTLIB:"LIBCPMTD" 23 | /NODEFAULTLIB:"MSVCRTD" 24 | /NODEFAULTLIB:"MSVCPRTD" 25 | /NODEFAULTLIB:"LIBC" 26 | /NODEFAULTLIB:"LIBCP" 27 | /NODEFAULTLIB:"LIBCD" 28 | /NODEFAULTLIB:"LIBCPD" 29 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\Module.RoboRevive.cpp.obj" 30 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\buffer.c.obj" 31 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hook.c.obj" 32 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\trampoline.c.obj" 33 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hde32.c.obj" 34 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hde64.c.obj" 35 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\PCLaunch.rc.res" 36 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\ModuleVersionResource.rc.inl.res" 37 | "delayimp.lib" 38 | "wininet.lib" 39 | "rpcrt4.lib" 40 | "ws2_32.lib" 41 | "dbghelp.lib" 42 | "comctl32.lib" 43 | "Winmm.lib" 44 | "kernel32.lib" 45 | "user32.lib" 46 | "gdi32.lib" 47 | "winspool.lib" 48 | "comdlg32.lib" 49 | "advapi32.lib" 50 | "shell32.lib" 51 | "ole32.lib" 52 | "oleaut32.lib" 53 | "uuid.lib" 54 | "odbc32.lib" 55 | "odbccp32.lib" 56 | "netapi32.lib" 57 | "iphlpapi.lib" 58 | "setupapi.lib" 59 | "dwmapi.lib" 60 | "imm32.lib" 61 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-AIModule.lib" 62 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Slate.lib" 63 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-SlateCore.lib" 64 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Odin.lib" 65 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Core.lib" 66 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-CoreUObject.lib" 67 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Engine.lib" 68 | /OUT:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Binaries\Win64\RoboRecall-RoboRevive.dll" 69 | /IMPLIB:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-RoboRevive.suppressed.lib" 70 | /PDB:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Binaries\Win64\RoboRecall-RoboRevive.pdb" 71 | /ignore:4078 -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.exp -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.lib -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-RoboRevive.lib.response: -------------------------------------------------------------------------------- 1 | /NOLOGO 2 | /errorReport:prompt 3 | /MACHINE:x64 4 | /SUBSYSTEM:WINDOWS 5 | /DEF 6 | /NAME:"RoboRecall-RoboRevive.dll" 7 | /IGNORE:4221 8 | /NODEFAULTLIB:"LIBCMT" 9 | /NODEFAULTLIB:"LIBCPMT" 10 | /NODEFAULTLIB:"LIBCMTD" 11 | /NODEFAULTLIB:"LIBCPMTD" 12 | /NODEFAULTLIB:"MSVCRTD" 13 | /NODEFAULTLIB:"MSVCPRTD" 14 | /NODEFAULTLIB:"LIBC" 15 | /NODEFAULTLIB:"LIBCP" 16 | /NODEFAULTLIB:"LIBCD" 17 | /NODEFAULTLIB:"LIBCPD" 18 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\Module.RoboRevive.cpp.obj" 19 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\buffer.c.obj" 20 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hook.c.obj" 21 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\trampoline.c.obj" 22 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hde32.c.obj" 23 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\hde64.c.obj" 24 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\RoboRevive\PCLaunch.rc.res" 25 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\ModuleVersionResource.rc.inl.res" 26 | /OUT:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-RoboRevive.lib" -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Intermediate/Build/Win64/RoboRecall/Development/RoboRecall-SteamVR.dll.response: -------------------------------------------------------------------------------- 1 | /MANIFEST:NO 2 | /NOLOGO 3 | /DEBUG 4 | /errorReport:prompt 5 | /MACHINE:x64 6 | /SUBSYSTEM:WINDOWS 7 | /FIXED:No 8 | /NXCOMPAT 9 | /STACK:5000000 10 | /DELAY:UNLOAD 11 | /DLL 12 | /PDBALTPATH:%_PDB% 13 | /OPT:NOREF 14 | /OPT:NOICF 15 | /INCREMENTAL:NO 16 | /ignore:4199 17 | /ignore:4099 18 | /DELAYLOAD:"d3d12.dll" 19 | /DELAYLOAD:"openvr_api.dll" 20 | /LIBPATH:"ThirdParty/OpenVR/OpenVRv1_0_2/lib/win64" 21 | /NODEFAULTLIB:"LIBCMT" 22 | /NODEFAULTLIB:"LIBCPMT" 23 | /NODEFAULTLIB:"LIBCMTD" 24 | /NODEFAULTLIB:"LIBCPMTD" 25 | /NODEFAULTLIB:"MSVCRTD" 26 | /NODEFAULTLIB:"MSVCPRTD" 27 | /NODEFAULTLIB:"LIBC" 28 | /NODEFAULTLIB:"LIBCP" 29 | /NODEFAULTLIB:"LIBCD" 30 | /NODEFAULTLIB:"LIBCPD" 31 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\SteamVR\PCH.SteamVR.h.obj" 32 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\SteamVR\Module.SteamVR.cpp.obj" 33 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\SteamVR\SteamVR.generated.cpp.obj" 34 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\SteamVR\PCLaunch.rc.res" 35 | "C:\Program Files\Epic Games\RoboRecallModKit\Engine\Intermediate\Build\Win64\RoboRecall\Development\ModuleVersionResource.rc.inl.res" 36 | "delayimp.lib" 37 | "wininet.lib" 38 | "rpcrt4.lib" 39 | "ws2_32.lib" 40 | "dbghelp.lib" 41 | "comctl32.lib" 42 | "Winmm.lib" 43 | "kernel32.lib" 44 | "user32.lib" 45 | "gdi32.lib" 46 | "winspool.lib" 47 | "comdlg32.lib" 48 | "advapi32.lib" 49 | "shell32.lib" 50 | "ole32.lib" 51 | "oleaut32.lib" 52 | "uuid.lib" 53 | "odbc32.lib" 54 | "odbccp32.lib" 55 | "netapi32.lib" 56 | "iphlpapi.lib" 57 | "setupapi.lib" 58 | "dwmapi.lib" 59 | "imm32.lib" 60 | "openvr_api.lib" 61 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Core.lib" 62 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-CoreUObject.lib" 63 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Engine.lib" 64 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-RHI.lib" 65 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-RenderCore.lib" 66 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Renderer.lib" 67 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-ShaderCore.lib" 68 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-InputCore.lib" 69 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-HeadMountedDisplay.lib" 70 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-Slate.lib" 71 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-SlateCore.lib" 72 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-D3D11RHI.lib" 73 | /OUT:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Binaries\Win64\RoboRecall-SteamVR.dll" 74 | /IMPLIB:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Intermediate\Build\Win64\RoboRecall\Development\RoboRecall-SteamVR.suppressed.lib" 75 | /PDB:"C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\Plugins\RoboRevive\Binaries\Win64\RoboRecall-SteamVR.pdb" 76 | /ignore:4078 -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Mods/RoboRevive.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | {F5306DFB-2E5E-43D1-A386-07D200A8B239} 8 | 9 | 10 | Resources 11 | 12 | 13 | {71925D67-DDE7-473B-80FF-53BF99861CAF} 14 | 15 | 16 | {78A261BD-CE0A-44E0-B053-4C0722195D64} 17 | 18 | 19 | Source\OpenVR 20 | 21 | 22 | Source\OpenVR 23 | 24 | 25 | {8474527A-83FB-46A3-AC94-9FD418A05238} 26 | 27 | 28 | Source\RoboRevive 29 | 30 | 31 | {1FDCB012-59AC-4F65-B62D-7245A1B03317} 32 | 33 | 34 | Source\RoboRevive\Private 35 | 36 | 37 | Source\RoboRevive\Private 38 | 39 | 40 | Source\RoboRevive\Private 41 | 42 | 43 | Source\RoboRevive\Private 44 | 45 | 46 | Source\RoboRevive\Private 47 | 48 | 49 | Source\RoboRevive\Private 50 | 51 | 52 | Source\RoboRevive\Private 53 | 54 | 55 | Source\RoboRevive\Private 56 | 57 | 58 | {53151892-21E1-4E7D-819D-7FD4E4D6CADE} 59 | 60 | 61 | Source\RoboRevive\Private\hde 62 | 63 | 64 | Source\RoboRevive\Private\hde 65 | 66 | 67 | Source\RoboRevive\Private\hde 68 | 69 | 70 | Source\RoboRevive\Private\hde 71 | 72 | 73 | Source\RoboRevive\Private\hde 74 | 75 | 76 | Source\RoboRevive\Private\hde 77 | 78 | 79 | Source\RoboRevive\Private\hde 80 | 81 | 82 | {8924BC80-F4C9-420F-BA86-E96AA4197687} 83 | 84 | 85 | Source\RoboRevive\Public 86 | 87 | 88 | {21481FC6-70CF-4723-992D-1258507322E1} 89 | 90 | 91 | Source\SteamVR 92 | 93 | 94 | {2D01FB6F-C2A6-4E95-82F6-FEA3CFFA3887} 95 | 96 | 97 | Source\SteamVR\Classes 98 | 99 | 100 | Source\SteamVR\Classes 101 | 102 | 103 | {3D05756D-FD2E-43CC-BE4E-DC769852A0F5} 104 | 105 | 106 | Source\SteamVR\Private 107 | 108 | 109 | Source\SteamVR\Private 110 | 111 | 112 | Source\SteamVR\Private 113 | 114 | 115 | Source\SteamVR\Private 116 | 117 | 118 | Source\SteamVR\Private 119 | 120 | 121 | Source\SteamVR\Private 122 | 123 | 124 | Source\SteamVR\Private 125 | 126 | 127 | Source\SteamVR\Private 128 | 129 | 130 | Source\SteamVR\Private 131 | 132 | 133 | Source\SteamVR\Private 134 | 135 | 136 | {DC27DB2B-D3C0-4DF1-BC63-3530F8BA5E0B} 137 | 138 | 139 | Source\SteamVR\Public 140 | 141 | 142 | {46A5A050-F3BB-4EDB-B4DF-5D4974D36796} 143 | 144 | 145 | Source\SteamVRController 146 | 147 | 148 | {831C21C0-E3B5-4C57-A3B1-FA1322269FB2} 149 | 150 | 151 | Source\SteamVRController\Private 152 | 153 | 154 | {A1C916D4-E5F0-4B5D-87F9-AD410E5903ED} 155 | 156 | 157 | Source\SteamVRController\Public 158 | 159 | 160 | 161 | -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Mods/RoboRevive.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WindowsLocalDebugger 5 | F:\Oculus Apps\Software\epic-games-odin\RoboRecall\Binaries\Win64\RoboRecall-Win64-Shipping.exe 6 | F:\Oculus Apps\Software\epic-games-odin\RoboRecall\Binaries\Win64 7 | 8 | 9 | "C:\Program Files\Epic Games\RoboRecallModKit\RoboRecall\RoboRecall.uproject" -skipcompile 10 | WindowsLocalDebugger 11 | 12 | -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/RoboRecall/Plugins/RoboRevive/Resources/Icon128.png -------------------------------------------------------------------------------- /RoboRecall/Plugins/RoboRevive/RoboRevive.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.1", 5 | "FriendlyName": "RoboRevive", 6 | "Description": "Support for the SteamVR API", 7 | "Category": "Other", 8 | "CreatedBy": "LibreVR", 9 | "CreatedByURL": "https://github.com/LibreVR/RoboRevive", 10 | "DocsURL": "", 11 | "MarketplaceURL": "", 12 | "SupportURL": "", 13 | "CanContainContent": true, 14 | "IsBetaVersion": false, 15 | "IsMod": true, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "RoboRevive", 20 | "Type": "Runtime", 21 | "LoadingPhase": "Default" 22 | }, 23 | { 24 | "Name": "SteamVR", 25 | "Type": "Runtime", 26 | "LoadingPhase": "Default" 27 | }, 28 | { 29 | "Name": "SteamVRController", 30 | "Type": "Runtime", 31 | "LoadingPhase": "Default" 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /RoboRevive.nsi: -------------------------------------------------------------------------------- 1 | ;-------------------------------- 2 | ;Include Modern UI 3 | 4 | !include "MUI2.nsh" 5 | 6 | ;-------------------------------- 7 | ;General 8 | 9 | ;Name and file 10 | Name "RoboRevive" 11 | OutFile "RoboRevive.exe" 12 | 13 | ;Default installation folder 14 | InstallDir "$PROGRAMFILES64\Oculus\Software\Software\epic-games-odin" 15 | 16 | ;Get installation folder from registry if available 17 | InstallDirRegKey HKCU "Software\RoboRevive" "" 18 | 19 | ;Request application privileges for Windows Vista 20 | RequestExecutionLevel admin 21 | 22 | ;Immediately close after installation 23 | AutoCloseWindow true 24 | 25 | ;-------------------------------- 26 | ;Variables 27 | 28 | Var StartMenuFolder 29 | 30 | ;-------------------------------- 31 | ; Oculus Library detection 32 | Function GetVolumePathNames 33 | !define GetVolumePathNamesForVolumeName "Kernel32::GetVolumePathNamesForVolumeName(t,t,i,*i) i" 34 | System::Call '${GetVolumePathNamesForVolumeName}("$0",.r0,${NSIS_MAX_STRLEN},)' 35 | FunctionEnd ;GetDiskVolumeSerialNumber 36 | 37 | Function .onInit 38 | ReadRegStr $0 HKCU "Software\Oculus VR, LLC\Oculus\Libraries" "DefaultLibrary" 39 | StrCmp $0 "" 0 OculusFound 40 | MessageBox MB_OK "Oculus Software not found. Go to oculus.com/setup to install it." 41 | Abort ; causes installer to quit. 42 | OculusFound: 43 | StrCpy $0 "Software\Oculus VR, LLC\Oculus\Libraries\$0" 44 | ReadRegStr $0 HKCU $0 "Path" 45 | StrCmp $0 "" 0 LibraryFound 46 | MessageBox MB_OK "Oculus Library not found. Unable to get install path." 47 | Abort ; causes installer to quit. 48 | LibraryFound: 49 | StrCpy $1 $0 "" 49 50 | StrCpy $0 $0 49 51 | Call GetVolumePathNames 52 | StrCpy $INSTDIR "$0$1\Software\epic-games-odin" 53 | IfFileExists $INSTDIR\*.* NoAbort 0 54 | MessageBox MB_OK "Robo Recall not found. Did you download it from the Oculus Store?" 55 | Abort ; causes installer to quit. 56 | NoAbort: 57 | FunctionEnd 58 | 59 | ;-------------------------------- 60 | ;Interface Settings 61 | 62 | !define MUI_ABORTWARNING 63 | 64 | ;-------------------------------- 65 | ;Pages 66 | 67 | !insertmacro MUI_PAGE_DIRECTORY 68 | 69 | ;Start Menu Folder Page Configuration 70 | !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" 71 | !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\RoboRevive" 72 | !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" 73 | 74 | !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder 75 | 76 | !insertmacro MUI_PAGE_INSTFILES 77 | 78 | !insertmacro MUI_UNPAGE_CONFIRM 79 | !insertmacro MUI_UNPAGE_INSTFILES 80 | 81 | ;-------------------------------- 82 | ;Languages 83 | 84 | !insertmacro MUI_LANGUAGE "English" 85 | 86 | ;-------------------------------- 87 | ;Installer Sections 88 | 89 | Section "RoboRevive Mod" SecRevive 90 | 91 | ; Restart Oculus Service to prevent entitlement errors 92 | DetailPrint "Restarting Oculus Service..." 93 | ReadRegStr $0 HKLM "Software\Oculus VR, LLC\Oculus" "Base" 94 | StrCmp $0 "" NoRestart 95 | ExecWait '"$0Support\oculus-runtime\OVRServiceLauncher.exe" -stop' 96 | ExecWait '"$0Support\oculus-runtime\OVRServiceLauncher.exe" -start' 97 | NoRestart: 98 | 99 | ; Icon for the Robo Recall shortcuts 100 | SetOutPath "$INSTDIR" 101 | File Icon.ico 102 | File small_landscape_image.jpg 103 | File app.vrmanifest 104 | 105 | ; Delete previous version of Revive 106 | IfFileExists "$INSTDIR\RoboRecall\Plugins\Revive\*.*" 0 NoDelete 107 | DetailPrint "Deleting old version of RoboRevive..." 108 | RMDir /r "$INSTDIR\RoboRecall\Plugins\Revive" 109 | NoDelete: 110 | 111 | ; Add a Robo Recall shortcut to the desktop 112 | CreateShortCut "$DESKTOP\Robo Recall.lnk" "$INSTDIR\RoboRecall\Binaries\Win64\RoboRecall-Win64-Shipping.exe" "" "$INSTDIR\Icon.ico" 113 | 114 | ; OpenVR dependency for the Unreal Engine 115 | SetOutPath "$INSTDIR\Engine\Binaries\ThirdParty" 116 | File /r Engine\Binaries\ThirdParty\OpenVR 117 | 118 | ;Store installation folder 119 | WriteRegStr HKCU "Software\RoboRevive" "" $INSTDIR 120 | 121 | ;Create uninstaller 122 | WriteUninstaller "$INSTDIR\UninstallRoboRevive.exe" 123 | 124 | !insertmacro MUI_STARTMENU_WRITE_BEGIN Application 125 | 126 | ;Create shortcuts 127 | CreateDirectory "$SMPROGRAMS\$StartMenuFolder" 128 | CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\UninstallRoboRevive.exe" 129 | CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Robo Recall.lnk" "$INSTDIR\RoboRecall\Binaries\Win64\RoboRecall-Win64-Shipping.exe" "" "$INSTDIR\Icon.ico" 130 | 131 | !insertmacro MUI_STARTMENU_WRITE_END 132 | 133 | ; Register the application manifest with OpenVR 134 | InitPluginsDir 135 | File /oname=$PLUGINSDIR\openvr_api.dll openvr_api.dll 136 | File /oname=$PLUGINSDIR\vrappreg.exe vrappreg.exe 137 | ExecWait '"$PLUGINSDIR\vrappreg.exe" "$INSTDIR\app.vrmanifest"' 138 | 139 | ; Extract the mod package to the temp folder and install it 140 | File /oname=$TEMP\RoboRevive.robo RoboRecall\Plugins\RoboRevive\RoboRevive.robo 141 | DetailPrint "Continue installation in Robo Recall Mod Installer dialog" 142 | ExecWait '"$INSTDIR\RoboRecall\Binaries\Win64\RoboRecallModInstaller.exe" "$TEMP\RoboRevive.robo"' 143 | Delete $TEMP\RoboRevive.robo 144 | 145 | SectionEnd 146 | 147 | ;-------------------------------- 148 | ;Uninstaller Section 149 | 150 | Section "Uninstall" 151 | 152 | RMDir /r "$INSTDIR\Engine\Binaries\ThirdParty\OpenVR" 153 | RMDir /r "$INSTDIR\RoboRecall\Plugins\RoboRevive" 154 | 155 | Delete "$INSTDIR\Icon.ico" 156 | Delete "$INSTDIR\app.vrmanifest" 157 | Delete "$INSTDIR\small_landscape_image.jpg" 158 | Delete "$DESKTOP\Robo Recall.lnk" 159 | Delete "$INSTDIR\Uninstall.exe" 160 | 161 | !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder 162 | 163 | Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" 164 | RMDir "$SMPROGRAMS\$StartMenuFolder" 165 | 166 | DeleteRegKey /ifempty HKCU "Software\RoboRevive" 167 | 168 | SectionEnd 169 | -------------------------------------------------------------------------------- /app.vrmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "applications": [ 3 | { 4 | "app_key": "roborevive.app.epic-games-odin", 5 | "binary_path_windows": "RoboRecall\\Binaries\\Win64\\RoboRecall-Win64-Shipping.exe", 6 | "image_path": "small_landscape_image.jpg", 7 | "launch_type": "binary", 8 | "strings": { 9 | "en_us": { 10 | "name": "Robo Recall (RoboRevive)" 11 | } 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /openvr_api.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/openvr_api.dll -------------------------------------------------------------------------------- /small_landscape_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/small_landscape_image.jpg -------------------------------------------------------------------------------- /vrappreg.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibreVR/RoboRevive/709a919862841faa0e25843d22953a7bd4518d37/vrappreg.exe --------------------------------------------------------------------------------