X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fopenvr%2Fopenvrsystem.h;h=7799ad298405914f198d41c7ddd676eae902b59b;hb=ee7031ad49618ac199adb506f78b2ca0d2bea2fc;hp=498865992fdaa8c5a886e3f3e2bb8bdb1d3f128d;hpb=e21e0b80154afe4a62480efca61a07d4c2f2b0ef;p=libs%2Fvr.git diff --git a/source/openvr/openvrsystem.h b/source/openvr/openvrsystem.h index 4988659..7799ad2 100644 --- a/source/openvr/openvrsystem.h +++ b/source/openvr/openvrsystem.h @@ -5,6 +5,7 @@ #include #include "openvrcamera.h" #include "openvrcombiner.h" +#include "openvrcontroller.h" namespace Msp { namespace VR { @@ -12,7 +13,10 @@ namespace VR { class OpenVRSystem: public System { private: - GL::Matrix hmd_matrix; + unsigned n_tracked_devices; + std::vector tracking_matrices; + std::vector controllers; + std::vector unclaimed_controllers; static unsigned n_instances; @@ -24,12 +28,20 @@ public: virtual void configure_window(Graphics::Window &) const { } virtual void configure_view(StereoView &) const; + virtual bool is_absolute_tracking_supported() const { return true; } virtual void set_absolute_tracking(bool); + virtual bool get_absolute_tracking() const; virtual OpenVRCamera *create_camera(const GL::Camera &); virtual OpenVRCombiner *create_combiner(GL::View &); + virtual OpenVRController *create_controller(); + + virtual void tick(); void update_pose_matrices(); - const GL::Matrix &get_hmd_matrix() const { return hmd_matrix; } + const GL::Matrix &get_tracking_matrix(unsigned) const; + const GL::Matrix &get_hmd_matrix() const; + void add_controller(OpenVRController &); + void remove_controller(OpenVRController &); }; } // namespace VR