]> git.tdb.fi Git - libs/vr.git/blobdiff - source/system.cpp
Add a system creation function with automatic backend detection
[libs/vr.git] / source / system.cpp
index 436862e8fbde8e96dfea3d4588a5b24caf4d62e7..c8354561489ffba0bf1b1711c7ed38db97264eb8 100644 (file)
@@ -4,7 +4,7 @@
 #include "openvr/openvrsystem.h"
 #endif
 #ifdef WITH_LIBOVR
-#include "ovr/oculusriftsystem.h"
+#include "libovr/libovrsystem.h"
 #endif
 
 using namespace std;
@@ -20,10 +20,36 @@ System *System::create(const string &type)
 #endif
 #ifdef WITH_LIBOVR
        if(type=="libovr")
-               return new OculusRiftSystem;
+               return new LibOVRSystem;
 #endif
        throw invalid_argument(format("system '%s' not supported", type));
 }
 
+System *System::create_autodetect()
+{
+#ifdef WITH_OPENVR
+       if(OpenVRSystem::is_maybe_available())
+       {
+               try
+               {
+                       return new OpenVRSystem;
+               }
+               catch(const runtime_error &)
+               { }
+       }
+#endif
+
+#ifdef WITH_LIBOVR
+       try
+       {
+               return new LibOVRSystem;
+       }
+       catch(const runtime_error &)
+       { }
+#endif
+
+       return 0;
+}
+
 } // namespace VR
 } // namespace Msp