├── .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
--------------------------------------------------------------------------------