From b6de7d24475dec8f5d6b8148a69cf8b561bc0761 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 3 Oct 2016 15:35:38 +0300 Subject: [PATCH] Rename DisplayDevice to System Motion controllers are going to be supported too so the top-level class shouldn't be tied to display. --- source/displaydevice.cpp | 29 ------------------- source/openvr/openvrcamera.cpp | 4 +-- source/openvr/openvrcamera.h | 6 ++-- source/openvr/openvrcombiner.cpp | 4 +-- source/openvr/openvrcombiner.h | 6 ++-- .../{openvrdevice.cpp => openvrsystem.cpp} | 16 +++++----- .../openvr/{openvrdevice.h => openvrsystem.h} | 12 ++++---- source/ovr/oculusriftcamera.cpp | 6 ++-- source/ovr/oculusriftcamera.h | 6 ++-- source/ovr/oculusriftcombiner.cpp | 6 ++-- source/ovr/oculusriftcombiner.h | 6 ++-- ...lusriftdevice.cpp => oculusriftsystem.cpp} | 28 +++++++++--------- ...{oculusriftdevice.h => oculusriftsystem.h} | 12 ++++---- ...e_private.h => oculusriftsystem_private.h} | 8 ++--- source/system.cpp | 29 +++++++++++++++++++ source/{displaydevice.h => system.h} | 12 ++++---- 16 files changed, 95 insertions(+), 95 deletions(-) delete mode 100644 source/displaydevice.cpp rename source/openvr/{openvrdevice.cpp => openvrsystem.cpp} (85%) rename source/openvr/{openvrdevice.h => openvrsystem.h} (76%) rename source/ovr/{oculusriftdevice.cpp => oculusriftsystem.cpp} (76%) rename source/ovr/{oculusriftdevice.h => oculusriftsystem.h} (79%) rename source/ovr/{oculusriftdevice_private.h => oculusriftsystem_private.h} (50%) create mode 100644 source/system.cpp rename source/{displaydevice.h => system.h} (71%) diff --git a/source/displaydevice.cpp b/source/displaydevice.cpp deleted file mode 100644 index 5e11266..0000000 --- a/source/displaydevice.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include "displaydevice.h" -#ifdef WITH_OPENVR -#include "openvr/openvrdevice.h" -#endif -#ifdef WITH_LIBOVR -#include "ovr/oculusriftdevice.h" -#endif - -using namespace std; - -namespace Msp { -namespace VR { - -DisplayDevice *DisplayDevice::create_device(const string &type) -{ -#ifdef WITH_OPENVR - if(type=="openvr") - return new OpenVRDevice; -#endif -#ifdef WITH_LIBOVR - if(type=="libovr") - return new OculusRiftDevice; -#endif - throw invalid_argument(format("device type '%s' not supported", type)); -} - -} // namespace VR -} // namespace Msp diff --git a/source/openvr/openvrcamera.cpp b/source/openvr/openvrcamera.cpp index 6166d3a..d6a0fe6 100644 --- a/source/openvr/openvrcamera.cpp +++ b/source/openvr/openvrcamera.cpp @@ -1,11 +1,11 @@ #include #include "openvrcamera.h" -#include "openvrdevice.h" +#include "openvrsystem.h" namespace Msp { namespace VR { -OpenVRCamera::OpenVRCamera(const OpenVRDevice &d, const GL::Camera &c): +OpenVRCamera::OpenVRCamera(const OpenVRSystem &d, const GL::Camera &c): HeadTrackingCamera(c), device(d) { } diff --git a/source/openvr/openvrcamera.h b/source/openvr/openvrcamera.h index ff86817..ab14d3d 100644 --- a/source/openvr/openvrcamera.h +++ b/source/openvr/openvrcamera.h @@ -6,15 +6,15 @@ namespace Msp { namespace VR { -class OpenVRDevice; +class OpenVRSystem; class OpenVRCamera: public HeadTrackingCamera { private: - const OpenVRDevice &device; + const OpenVRSystem &device; public: - OpenVRCamera(const OpenVRDevice &, const GL::Camera &); + OpenVRCamera(const OpenVRSystem &, const GL::Camera &); virtual void reset_tracking(); virtual void update(); diff --git a/source/openvr/openvrcombiner.cpp b/source/openvr/openvrcombiner.cpp index 9bdf4b0..fa5a8ac 100644 --- a/source/openvr/openvrcombiner.cpp +++ b/source/openvr/openvrcombiner.cpp @@ -1,6 +1,6 @@ #include #include "openvrcombiner.h" -#include "openvrdevice.h" +#include "openvrsystem.h" namespace Msp { namespace VR { @@ -11,7 +11,7 @@ struct OpenVRCombiner::Private }; -OpenVRCombiner::OpenVRCombiner(OpenVRDevice &d, GL::View &v): +OpenVRCombiner::OpenVRCombiner(OpenVRSystem &d, GL::View &v): device(d), view(v) { diff --git a/source/openvr/openvrcombiner.h b/source/openvr/openvrcombiner.h index 58a24c9..94ccce3 100644 --- a/source/openvr/openvrcombiner.h +++ b/source/openvr/openvrcombiner.h @@ -7,18 +7,18 @@ namespace Msp { namespace VR { -class OpenVRDevice; +class OpenVRSystem; class OpenVRCombiner: public StereoCombiner { private: struct Private; - OpenVRDevice &device; + OpenVRSystem &device; GL::View &view; public: - OpenVRCombiner(OpenVRDevice &, GL::View &); + OpenVRCombiner(OpenVRSystem &, GL::View &); virtual void prepare() const; virtual void render(const GL::Texture2D &, const GL::Texture2D &) const; diff --git a/source/openvr/openvrdevice.cpp b/source/openvr/openvrsystem.cpp similarity index 85% rename from source/openvr/openvrdevice.cpp rename to source/openvr/openvrsystem.cpp index b4ff20b..ec6b418 100644 --- a/source/openvr/openvrdevice.cpp +++ b/source/openvr/openvrsystem.cpp @@ -1,6 +1,6 @@ #include #include -#include "openvrdevice.h" +#include "openvrsystem.h" using namespace std; @@ -21,9 +21,9 @@ Msp::GL::Matrix convert_matrix(const vr::HmdMatrix34_t &m) namespace Msp { namespace VR { -unsigned OpenVRDevice::n_instances = 0; +unsigned OpenVRSystem::n_instances = 0; -OpenVRDevice::OpenVRDevice() +OpenVRSystem::OpenVRSystem() { if(!n_instances) { @@ -41,13 +41,13 @@ OpenVRDevice::OpenVRDevice() vr::VRCompositor()->SetTrackingSpace(vr::TrackingUniverseSeated); } -OpenVRDevice::~OpenVRDevice() +OpenVRSystem::~OpenVRSystem() { if(!--n_instances) vr::VR_Shutdown(); } -void OpenVRDevice::configure_view(StereoView &view) const +void OpenVRSystem::configure_view(StereoView &view) const { vr::IVRSystem *vr_sys = vr::VRSystem(); @@ -69,17 +69,17 @@ void OpenVRDevice::configure_view(StereoView &view) const view.set_eye_matrices(convert_matrix(left), convert_matrix(right)); } -OpenVRCamera *OpenVRDevice::create_camera(const GL::Camera &bc) +OpenVRCamera *OpenVRSystem::create_camera(const GL::Camera &bc) { return new OpenVRCamera(*this, bc); } -OpenVRCombiner *OpenVRDevice::create_combiner(GL::View &v) +OpenVRCombiner *OpenVRSystem::create_combiner(GL::View &v) { return new OpenVRCombiner(*this, v); } -void OpenVRDevice::update_pose_matrices() +void OpenVRSystem::update_pose_matrices() { vector poses; poses.resize(vr::k_unTrackedDeviceIndex_Hmd+1); diff --git a/source/openvr/openvrdevice.h b/source/openvr/openvrsystem.h similarity index 76% rename from source/openvr/openvrdevice.h rename to source/openvr/openvrsystem.h index ee00942..98ad556 100644 --- a/source/openvr/openvrdevice.h +++ b/source/openvr/openvrsystem.h @@ -1,15 +1,15 @@ -#ifndef MSP_VR_OPENVRDEVICE_H_ -#define MSP_VR_OPENVRDEVICE_H_ +#ifndef MSP_VR_OPENVRSYSTEM_H_ +#define MSP_VR_OPENVRSYSTEM_H_ #include -#include +#include #include "openvrcamera.h" #include "openvrcombiner.h" namespace Msp { namespace VR { -class OpenVRDevice: public DisplayDevice +class OpenVRSystem: public System { private: GL::Matrix hmd_matrix; @@ -17,8 +17,8 @@ private: static unsigned n_instances; public: - OpenVRDevice(); - ~OpenVRDevice(); + OpenVRSystem(); + ~OpenVRSystem(); virtual void configure_window(Graphics::Window &) const { } virtual void configure_view(StereoView &) const; diff --git a/source/ovr/oculusriftcamera.cpp b/source/ovr/oculusriftcamera.cpp index 713ae3c..4da732b 100644 --- a/source/ovr/oculusriftcamera.cpp +++ b/source/ovr/oculusriftcamera.cpp @@ -1,11 +1,11 @@ #include "oculusriftcamera.h" -#include "oculusriftdevice.h" -#include "oculusriftdevice_private.h" +#include "oculusriftsystem.h" +#include "oculusriftsystem_private.h" namespace Msp { namespace VR { -OculusRiftCamera::OculusRiftCamera(const OculusRiftDevice &d, const GL::Camera &c): +OculusRiftCamera::OculusRiftCamera(const OculusRiftSystem &d, const GL::Camera &c): HeadTrackingCamera(c), device(d) { diff --git a/source/ovr/oculusriftcamera.h b/source/ovr/oculusriftcamera.h index b6acae1..6abb116 100644 --- a/source/ovr/oculusriftcamera.h +++ b/source/ovr/oculusriftcamera.h @@ -6,15 +6,15 @@ namespace Msp { namespace VR { -class OculusRiftDevice; +class OculusRiftSystem; class OculusRiftCamera: public HeadTrackingCamera { private: - const OculusRiftDevice &device; + const OculusRiftSystem &device; public: - OculusRiftCamera(const OculusRiftDevice &, const GL::Camera &); + OculusRiftCamera(const OculusRiftSystem &, const GL::Camera &); virtual void reset_tracking(); virtual void update(); diff --git a/source/ovr/oculusriftcombiner.cpp b/source/ovr/oculusriftcombiner.cpp index 2d40ea9..e0c2c4d 100644 --- a/source/ovr/oculusriftcombiner.cpp +++ b/source/ovr/oculusriftcombiner.cpp @@ -1,8 +1,8 @@ #include #include #include "oculusriftcombiner.h" -#include "oculusriftdevice.h" -#include "oculusriftdevice_private.h" +#include "oculusriftsystem.h" +#include "oculusriftsystem_private.h" using namespace std; @@ -81,7 +81,7 @@ struct OculusRiftCombiner::Frustum: StereoCombiner::Frustum }; -OculusRiftCombiner::OculusRiftCombiner(OculusRiftDevice &d, GL::View &v): +OculusRiftCombiner::OculusRiftCombiner(OculusRiftSystem &d, GL::View &v): device(d), view(v), left_mesh((GL::VERTEX2, GL::TEXCOORD2,0, GL::TEXCOORD2,1, GL::TEXCOORD2,2, GL::TEXCOORD2,3)), diff --git a/source/ovr/oculusriftcombiner.h b/source/ovr/oculusriftcombiner.h index 14f0e4c..418c569 100644 --- a/source/ovr/oculusriftcombiner.h +++ b/source/ovr/oculusriftcombiner.h @@ -10,7 +10,7 @@ namespace Msp { namespace VR { -class OculusRiftDevice; +class OculusRiftSystem; /** Presents a stereo view in a way suitable for an Oculus Rift HMD. All distances @@ -21,7 +21,7 @@ class OculusRiftCombiner: public StereoCombiner private: struct Frustum; - OculusRiftDevice &device; + OculusRiftSystem &device; GL::View &view; GL::Mesh left_mesh; GL::Mesh right_mesh; @@ -30,7 +30,7 @@ private: mutable GL::ProgramData right_shdata; public: - OculusRiftCombiner(OculusRiftDevice &, GL::View &); + OculusRiftCombiner(OculusRiftSystem &, GL::View &); virtual void prepare() const; virtual void render(const GL::Texture2D &, const GL::Texture2D &) const; diff --git a/source/ovr/oculusriftdevice.cpp b/source/ovr/oculusriftsystem.cpp similarity index 76% rename from source/ovr/oculusriftdevice.cpp rename to source/ovr/oculusriftsystem.cpp index 38fd20e..4a85383 100644 --- a/source/ovr/oculusriftdevice.cpp +++ b/source/ovr/oculusriftsystem.cpp @@ -1,16 +1,16 @@ #include #include -#include "oculusriftdevice.h" -#include "oculusriftdevice_private.h" +#include "oculusriftsystem.h" +#include "oculusriftsystem_private.h" using namespace std; namespace Msp { namespace VR { -unsigned OculusRiftDevice::n_instances = 0; +unsigned OculusRiftSystem::n_instances = 0; -OculusRiftDevice::OculusRiftDevice(): +OculusRiftSystem::OculusRiftSystem(): priv(new Private), frame_index(0) { @@ -26,7 +26,7 @@ OculusRiftDevice::OculusRiftDevice(): } } -OculusRiftDevice::~OculusRiftDevice() +OculusRiftSystem::~OculusRiftSystem() { ovrHmd_Destroy(priv->ovr_hmd); delete priv; @@ -36,7 +36,7 @@ OculusRiftDevice::~OculusRiftDevice() ovr_Shutdown(); } -void OculusRiftDevice::configure_window(Graphics::Window &window) const +void OculusRiftSystem::configure_window(Graphics::Window &window) const { Graphics::WindowOptions win_opts = window.get_options(); win_opts.width = priv->ovr_hmd->Resolution.w; @@ -55,7 +55,7 @@ void OculusRiftDevice::configure_window(Graphics::Window &window) const window.reconfigure(win_opts); } -void OculusRiftDevice::configure_view(StereoView &view) const +void OculusRiftSystem::configure_view(StereoView &view) const { ovrEyeRenderDesc left_desc = ovrHmd_GetRenderDesc(priv->ovr_hmd, ovrEye_Left, priv->ovr_hmd->DefaultEyeFov[ovrEye_Left]); ovrEyeRenderDesc right_desc = ovrHmd_GetRenderDesc(priv->ovr_hmd, ovrEye_Right, priv->ovr_hmd->DefaultEyeFov[ovrEye_Left]); @@ -64,44 +64,44 @@ void OculusRiftDevice::configure_view(StereoView &view) const view.set_eye_matrices(GL::Matrix::translation(GL::Vector3(l.x, l.y, l.z)), GL::Matrix::translation(GL::Vector3(r.x, r.y, r.z))); } -OculusRiftCamera *OculusRiftDevice::create_camera(const GL::Camera &bc) +OculusRiftCamera *OculusRiftSystem::create_camera(const GL::Camera &bc) { return new OculusRiftCamera(*this, bc); } -OculusRiftCombiner *OculusRiftDevice::create_combiner(GL::View &view) +OculusRiftCombiner *OculusRiftSystem::create_combiner(GL::View &view) { return new OculusRiftCombiner(*this, view); } -void OculusRiftDevice::begin_frame() +void OculusRiftSystem::begin_frame() { priv->frame_timing = ovrHmd_BeginFrameTiming(priv->ovr_hmd, ++frame_index); timing_active = true; } -void OculusRiftDevice::end_frame() +void OculusRiftSystem::end_frame() { glFinish(); ovrHmd_EndFrameTiming(priv->ovr_hmd); timing_active = false; } -double OculusRiftDevice::get_tracking_time() const +double OculusRiftSystem::get_tracking_time() const { if(!timing_active) throw logic_error("timing not active"); return priv->frame_timing.ScanoutMidpointSeconds; } -double OculusRiftDevice::get_timewarp_time() const +double OculusRiftSystem::get_timewarp_time() const { if(!timing_active) throw logic_error("timing not active"); return priv->frame_timing.TimewarpPointSeconds; } -double OculusRiftDevice::get_current_time() const +double OculusRiftSystem::get_current_time() const { return ovr_GetTimeInSeconds(); } diff --git a/source/ovr/oculusriftdevice.h b/source/ovr/oculusriftsystem.h similarity index 79% rename from source/ovr/oculusriftdevice.h rename to source/ovr/oculusriftsystem.h index 02f8016..20a4a5e 100644 --- a/source/ovr/oculusriftdevice.h +++ b/source/ovr/oculusriftsystem.h @@ -1,14 +1,14 @@ -#ifndef MSP_VR_OCULUSRIFTDEVICE_H_ -#define MSP_VR_OCULUSRIFTDEVICE_H_ +#ifndef MSP_VR_OCULUSRIFTSYSTEM_H_ +#define MSP_VR_OCULUSRIFTSYSTEM_H_ -#include +#include #include "oculusriftcamera.h" #include "oculusriftcombiner.h" namespace Msp { namespace VR { -class OculusRiftDevice: public DisplayDevice +class OculusRiftSystem: public System { public: struct Private; @@ -21,8 +21,8 @@ private: static unsigned n_instances; public: - OculusRiftDevice(); - virtual ~OculusRiftDevice(); + OculusRiftSystem(); + virtual ~OculusRiftSystem(); const Private &get_private() const { return *priv; } diff --git a/source/ovr/oculusriftdevice_private.h b/source/ovr/oculusriftsystem_private.h similarity index 50% rename from source/ovr/oculusriftdevice_private.h rename to source/ovr/oculusriftsystem_private.h index 26587ff..2f91fdf 100644 --- a/source/ovr/oculusriftdevice_private.h +++ b/source/ovr/oculusriftsystem_private.h @@ -1,13 +1,13 @@ -#ifndef MSP_VR_OCULUSRIFTDEVICE_PRIVATE_H_ -#define MSP_VR_OCULUSRIFTDEVICE_PRIVATE_H_ +#ifndef MSP_VR_OCULUSRIFTSYSTEM_PRIVATE_H_ +#define MSP_VR_OCULUSRIFTSYSTEM_PRIVATE_H_ #include -#include "oculusriftdevice.h" +#include "oculusriftsystem.h" namespace Msp { namespace VR { -struct OculusRiftDevice::Private +struct OculusRiftSystem::Private { ovrHmd ovr_hmd; ovrFrameTiming frame_timing; diff --git a/source/system.cpp b/source/system.cpp new file mode 100644 index 0000000..436862e --- /dev/null +++ b/source/system.cpp @@ -0,0 +1,29 @@ +#include +#include "system.h" +#ifdef WITH_OPENVR +#include "openvr/openvrsystem.h" +#endif +#ifdef WITH_LIBOVR +#include "ovr/oculusriftsystem.h" +#endif + +using namespace std; + +namespace Msp { +namespace VR { + +System *System::create(const string &type) +{ +#ifdef WITH_OPENVR + if(type=="openvr") + return new OpenVRSystem; +#endif +#ifdef WITH_LIBOVR + if(type=="libovr") + return new OculusRiftSystem; +#endif + throw invalid_argument(format("system '%s' not supported", type)); +} + +} // namespace VR +} // namespace Msp diff --git a/source/displaydevice.h b/source/system.h similarity index 71% rename from source/displaydevice.h rename to source/system.h index 46dfbae..0610e29 100644 --- a/source/displaydevice.h +++ b/source/system.h @@ -1,5 +1,5 @@ -#ifndef MSP_VR_DISPLAYDEVICE_H_ -#define MSP_VR_DISPLAYDEVICE_H_ +#ifndef MSP_VR_SYSTEM_H_ +#define MSP_VR_SYSTEM_H_ #include #include @@ -12,14 +12,14 @@ class HeadTrackingCamera; class StereoCombiner; class StereoView; -class DisplayDevice +class System { protected: - DisplayDevice() { } + System() { } public: - virtual ~DisplayDevice() { } + virtual ~System() { } - static DisplayDevice *create_device(const std::string &); + static System *create(const std::string &); virtual void configure_window(Graphics::Window &) const = 0; virtual void configure_view(StereoView &) const = 0; -- 2.43.0