iMSTK
Interactive Medical Simulation Toolkit
imstkVTKInteractorStyleVR.h
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #include <vtkInteractorStyle3D.h>
8 #include <memory>
9 
10 namespace imstk
11 {
12 class OpenVRDeviceClient;
13 } // namespace imstk
14 
20 class vtkInteractorStyleVR : public vtkInteractorStyle3D
21 {
22 public:
23  static vtkInteractorStyleVR* New();
24  vtkTypeMacro(vtkInteractorStyleVR, vtkInteractorStyle3D);
25 
26  void OnMove3D(vtkEventData* edata) override;
27 
31  void addButtonActions();
32 
36  void addMovementActions();
37 
38  std::shared_ptr<imstk::OpenVRDeviceClient> getLeftControllerDeviceClient() const { return m_leftControllerDeviceClient; }
39  std::shared_ptr<imstk::OpenVRDeviceClient> getRightControllerDeviceClient() const { return m_rightControllerDeviceClient; }
40  std::shared_ptr<imstk::OpenVRDeviceClient> getHmdDeviceClient() const { return m_hmdDeviceClient; }
41 
43 
44 protected:
45  void OnButtonPress(vtkEventData* data, int buttonId);
46 
47 public:
48  std::shared_ptr<imstk::OpenVRDeviceClient> m_leftControllerDeviceClient;
49  std::shared_ptr<imstk::OpenVRDeviceClient> m_rightControllerDeviceClient;
50  std::shared_ptr<imstk::OpenVRDeviceClient> m_hmdDeviceClient;
51 };
Compound Geometry.
VTK Interactor style for VR.