1 #ifndef MSP_VR_OPENVRSYSTEM_H_
2 #define MSP_VR_OPENVRSYSTEM_H_
4 #include <msp/gl/matrix.h>
5 #include <msp/vr/system.h>
6 #include "openvrcamera.h"
7 #include "openvrcombiner.h"
8 #include "openvrcontroller.h"
13 class OpenVRSystem: public System
16 unsigned n_tracked_devices;
17 std::vector<GL::Matrix> tracking_matrices;
18 std::vector<OpenVRController *> controllers;
19 std::vector<unsigned> unclaimed_controllers;
21 static unsigned n_instances;
27 static bool is_maybe_available();
29 virtual void configure_window(Graphics::Window &) const { }
30 virtual void configure_view(StereoView &) const;
31 virtual bool is_absolute_tracking_supported() const { return true; }
32 virtual void set_absolute_tracking(bool);
33 virtual bool get_absolute_tracking() const;
34 virtual OpenVRCamera *create_camera(const GL::Camera &);
35 virtual OpenVRCombiner *create_combiner(GL::View &);
36 virtual OpenVRController *create_controller();
40 void update_pose_matrices();
41 const GL::Matrix &get_tracking_matrix(unsigned) const;
42 const GL::Matrix &get_hmd_matrix() const;
43 void add_controller(OpenVRController &);
44 void remove_controller(OpenVRController &);