-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathServerDriverHost.h
115 lines (87 loc) · 4.14 KB
/
ServerDriverHost.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/** @file
@brief Header
@date 2016
@author
Sensics, Inc.
<http://sensics.com/osvr>
*/
// Copyright 2016 Razer Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef INCLUDED_ServerDriverHost_h_GUID_CD530D68_1639_42B7_9B06_BA9E59464E9C
#define INCLUDED_ServerDriverHost_h_GUID_CD530D68_1639_42B7_9B06_BA9E59464E9C
// Internal Includes
#include <Settings.h>
// Library/third-party includes
#include <openvr_driver.h>
#include <osvr/Util/Logger.h>
// Standard includes
#include <functional>
// refer to IVRServerDriverHost for details on each function
namespace vr {
class ServerDriverHost : public vr::IVRServerDriverHost {
public:
ServerDriverHost();
/// Sets our "IsExiting()" flag to true.
void setExiting() { isExiting_ = true; }
IVRSettings *GetSettings(const char *pchInterfaceVersion) {
return vrSettings;
}
virtual bool TrackedDeviceAdded(const char *pchDeviceSerialNumber,
ETrackedDeviceClass eDeviceClass,
ITrackedDeviceServerDriver *pDriver);
std::function<bool(const char *, ETrackedDeviceClass,
ITrackedDeviceServerDriver *)>
onTrackedDeviceAdded;
virtual void TrackedDevicePoseUpdated(uint32_t unWhichDevice,
const DriverPose_t &newPose,
uint32_t unPoseStructSize);
virtual void VsyncEvent(double vsyncTimeOffsetSeconds);
virtual void TrackedDeviceButtonPressed(uint32_t unWhichDevice,
EVRButtonId eButtonId,
double eventTimeOffset);
virtual void TrackedDeviceButtonUnpressed(uint32_t unWhichDevice,
EVRButtonId eButtonId,
double eventTimeOffset);
virtual void TrackedDeviceButtonTouched(uint32_t unWhichDevice,
EVRButtonId eButtonId,
double eventTimeOffset);
virtual void TrackedDeviceButtonUntouched(uint32_t unWhichDevice,
EVRButtonId eButtonId,
double eventTimeOffset);
virtual void TrackedDeviceAxisUpdated(uint32_t unWhichDevice,
uint32_t unWhichAxis,
const VRControllerAxis_t &axisState);
virtual void ProximitySensorState(uint32_t unWhichDevice,
bool bProximitySensorTriggered);
virtual void VendorSpecificEvent(uint32_t unWhichDevice,
vr::EVREventType eventType,
const VREvent_Data_t &eventData,
double eventTimeOffset);
virtual bool IsExiting();
virtual bool PollNextEvent(VREvent_t *pEvent, uint32_t uncbVREvent);
virtual void
GetRawTrackedDevicePoses(float fPredictedSecondsFromNow,
TrackedDevicePose_t *pTrackedDevicePoseArray,
uint32_t unTrackedDevicePoseArrayCount);
virtual void
TrackedDeviceDisplayTransformUpdated(uint32_t unWhichDevice,
HmdMatrix34_t eyeToHeadLeft,
HmdMatrix34_t eyeToHeadRight);
IVRSettings *vrSettings = nullptr;
private:
bool isExiting_ = false;
osvr::util::log::LoggerPtr logger_;
};
} // namespace vr
#endif // INCLUDED_ViveServerDriverHost_h_GUID_CD530D68_1639_42B7_9B06_BA9E59464E9C