Monado OpenXR Runtime
Loading...
Searching...
No Matches
XRTVRClientCore.hpp
Go to the documentation of this file.
1// Copyright 2026, Beyley Cardellio
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Implementation of the latest IVRClientCore interface version.
6 *
7 * @author Beyley Cardellio <ep1cm1n10n123@gmail.com>
8 * @ingroup openvr_interfaces
9 */
10
11#pragma once
12
13#include "xrt/xrt_instance.h"
14#include "xrt/xrt_system.h"
15#include "xrt/xrt_session.h"
16#include "xrt/xrt_compositor.h"
17
18#include "openvr_devices.hpp"
19#include "openvr_events.hpp"
20
22
23#include "openvr_interfaces_unified.h"
24#include "IVRClientCore_003.h"
25
26#include <memory>
27
28
29namespace xrt::state_trackers::openvr {
30
31#define SUPPORTED_CORE_INTERFACES(_) _(VRClientCore, _003)
32#define SUPPORTED_INTERFACES(_) _(VRCompositor, _029) _(VRRenderModels, _006) _(VRSystem, _026) _(VRSystem, _023)
33
34class XRTVRClientCore_003 : public vr::IVRClientCore_003
35{
36public: // Fields
37 xrt_instance *xinst{nullptr};
38
39 xrt_system *xsys{nullptr};
40 xrt_system_devices *xsysd{nullptr};
41 xrt_space_overseer *xso{nullptr};
42 xrt_system_compositor *xsysc{nullptr};
43
44 xrt_session *xs{nullptr};
45 xrt_compositor_native *xcn{nullptr};
46
47 std::shared_ptr<Compositor> compositor{};
48 std::shared_ptr<Devices> devices{};
49 std::shared_ptr<Events> events{};
50
51#define XRTVR_INTERFACE_MEMBER(name, version) std::shared_ptr<vr::I##name##version> name##version{nullptr};
52 SUPPORTED_INTERFACES(XRTVR_INTERFACE_MEMBER)
53#undef XRTVR_INTERFACE_MEMBER
54
55public: // Methods
56 vr::EVRInitError
57 Init(vr::EVRApplicationType eApplicationType, const char *pStartupInfo) override;
58
59 void
60 Cleanup() override;
61
62 vr::EVRInitError
63 IsInterfaceVersionValid(const char *pchInterfaceVersion) override;
64
65 void *
66 GetGenericInterface(const char *pchNameAndVersion, vr::EVRInitError *peError) override;
67
68 bool
69 BIsHmdPresent() override;
70
71 const char *
72 GetEnglishStringForHmdError(vr::EVRInitError eError) override;
73
74 const char *
75 GetIDForVRInitError(vr::EVRInitError eError) override;
76};
77
78}; // namespace xrt::state_trackers::openvr
Definition XRTVRClientCore.hpp:35
Implementation of compositor-related functionality for OpenVR.
Implementation of a dynamic OpenVR devices array using the xrt_system_devices interface.
Implementation of OpenVR event handling and related functionality.
Main compositor server interface.
Definition xrt_compositor.h:2268
This interface acts as a root object for Monado.
Definition xrt_instance.h:121
The XRT representation of XrSession, this object does not have all of the functionality of a session,...
Definition xrt_session.h:277
Object that oversees and manages spaces, one created for each XR system.
Definition xrt_space.h:97
The system compositor handles composition for a system.
Definition xrt_compositor.h:2496
A collection of xrt_device, and an interface for identifying the roles they have been assigned.
Definition xrt_system.h:215
A system is a collection of devices, policies and optionally a compositor that is organised into a ch...
Definition xrt_system.h:64
Header declaring XRT graphics interfaces.
Header for xrt_instance object.
Header for session object.
Header for system objects.