]> git.tdb.fi Git - libs/vr.git/blobdiff - source/openvr/openvrcontroller.cpp
Provide objects for visualizing controllers
[libs/vr.git] / source / openvr / openvrcontroller.cpp
index 9ab957de11c5d5fe41031902548fed66c503253c..e757221d2911a76b144977989a35f10bce512661 100644 (file)
@@ -10,7 +10,8 @@ namespace VR {
 
 OpenVRController::OpenVRController(OpenVRSystem &s):
        system(s),
-       index(-1)
+       index(-1),
+       last_packet_number(0)
 {
        name = "OpenVR Controller";
 
@@ -58,9 +59,11 @@ void OpenVRController::event(const Event &ev)
        {
        case vr::VREvent_TrackedDeviceActivated:
                index = ev.trackedDeviceIndex;
+               signal_tracking_state_changed.emit(true);
                break;
        case vr::VREvent_TrackedDeviceDeactivated:
                index = -1;
+               signal_tracking_state_changed.emit(false);
                break;
        case vr::VREvent_ButtonPress:
                set_button_state(ev.data.controller.button, true, true);
@@ -98,5 +101,15 @@ void OpenVRController::update_input_state()
        }
 }
 
+const GL::Object *OpenVRController::get_object() const
+{
+       char buf[1024];
+       unsigned len = vr::VRSystem()->GetStringTrackedDeviceProperty(index, vr::Prop_RenderModelName_String, buf, sizeof(buf));
+       if(len>1)
+               return system.get_render_model(string(buf, len-1));
+
+       return 0;
+}
+
 } // namespace VR
 } // namespace Msp