-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathOpenVRSystem.h
58 lines (39 loc) · 1.53 KB
/
OpenVRSystem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#pragma once
#include "UserProjectSettings.h"
#include "CommonTypes.h"
#include "Singleton.h"
#include "UnityInterfaces.h"
#include "ProviderInterface/IUnityGraphics.h"
#include "ProviderInterface/IUnityInterface.h"
#include "ProviderInterface/IUnityXRPreInit.h"
extern "C" typedef void( *TickCallback )( int );
class OpenVRSystem : public Singleton<OpenVRSystem>
{
public:
OpenVRSystem();
~OpenVRSystem();
bool Initialize();
bool Shutdown();
bool GetInitialized();
bool GetGraphicsAdapterId( void *userData, UnityXRPreInitRenderer renderer, uint64_t rendererData, uint64_t *adapterId );
bool GetVulkanInstanceExtensions( void *userData, uint32_t namesCapacityIn, uint32_t *namesCountOut, char *namesString );
bool GetVulkanDeviceExtensions( void *userData, uint32_t namesCapacityIn, uint32_t *namesCountOut, char *namesString );
int GetFrameIndex() { return m_FrameIndex; }
void SetFrameIndex( int frameIndex ) { m_FrameIndex = frameIndex; }
bool Update();
vr::EVRInitError GetInitializationResult();
vr::IVRSystem *GetSystem() { return m_VRSystem; }
vr::IVRCompositor *GetCompositor() { return m_VRCompositor; }
vr::IVROverlay* GetOverlay() { return m_VROverlay; }
void SetTickCallback( TickCallback newTickCallback ) { tickCallback = newTickCallback; }
private:
uint64_t graphicsAdapterId;
int m_FrameIndex;
// OpenVR interfaces
vr::IVRSystem *m_VRSystem;
vr::IVRCompositor *m_VRCompositor;
vr::IVROverlay* m_VROverlay;
vr::EVRInitError initError;
vr::IVRCompositor *StartVRCompositor();
TickCallback tickCallback;
};