7 #ifndef vtkOpenVRRenderWindowInteractorImstk_h 8 #define vtkOpenVRRenderWindowInteractorImstk_h 10 #include "vtkEventData.h" 12 #include "vtkRenderWindowInteractor3D.h" 13 #include "vtkRenderingOpenVRModule.h" 22 class vtkOpenVROverlay;
23 class vtkOpenVRRenderWindow;
34 void PrintSelf(ostream& os, vtkIndent indent);
49 static void SetClassExitMethodArgDelete(
void (* f)(
void*));
64 virtual double* GetPhysicalTranslation(vtkCamera*);
65 virtual void SetPhysicalScale(
double);
66 virtual double GetPhysicalScale();
82 virtual void DoOneEvent(vtkOpenVRRenderWindow* renWin, vtkRenderer* ren,
bool doRender);
87 vtkEventDataDevice GetPointerDevice();
94 void ConvertOpenVRPoseToMatrices(
const vr::TrackedDevicePose_t& tdPose,
95 vtkMatrix4x4* poseMatrixWorld, vtkMatrix4x4* poseMatrixPhysical =
nullptr);
104 void ConvertPoseToWorldCoordinates(
const vr::TrackedDevicePose_t& tdPose,
double pos[3],
105 double wxyz[4],
double ppos[3],
double wdir[3]);
106 void ConvertPoseMatrixToWorldCoordinates(
107 const float poseMatrix[3][4],
double pos[3],
double wxyz[4],
double ppos[3],
double wdir[3]);
125 void AddAction(std::string path, vtkCommand::EventIds,
bool isAnalog);
126 void AddAction(std::string path,
bool isAnalog, std::function<
void(vtkEventData*)>);
136 vtkSetMacro(ActionManifestFileName, std::string);
144 vtkSetMacro(ActionSetName, std::string);
158 static void (* ClassExitMethodArgDelete)(
void*);
159 static void* ClassExitMethodArg;
168 virtual int InternalDestroyTimer(
int platformTimerId);
183 virtual void RecognizeComplexGesture(vtkEventDataDevice3D* edata);
193 vr::VRActionHandle_t ActionHandle;
194 vtkCommand::EventIds EventId;
195 std::function<void(vtkEventData*)> Function;
196 bool UseFunction =
false;
197 bool IsAnalog =
false;
200 std::map<std::string, ActionData> ActionMap;
202 std::string ActionManifestFileName;
203 std::string ActionSetName;
205 vr::VRActionSetHandle_t ActionsetVTK = vr::k_ulInvalidActionSetHandle;
217 vr::VRInputValueHandle_t Source = vr::k_ulInvalidInputValueHandle;
220 vr::TrackedDevicePose_t LastPose;
224 void HandleGripEvents(vtkEventData* ed);
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
static vtkOpenVRRenderWindowInteractorImstk * New()
virtual void SetPhysicalTranslation(vtkCamera *, double, double, double)
void ProcessEvents() override
static void SetClassExitMethod(void(*f)(void *), void *arg)
vtkNew< vtkMatrix4x4 > StartingPhysicalToWorldMatrix
virtual void StartEventLoop()
virtual void ExitCallback()
void GetStartingPhysicalToWorldMatrix(vtkMatrix4x4 *startingPhysicalToWorldMatrix)
int DeviceInputDownCount[vtkEventDataNumberOfDevices]
virtual void Initialize()
void AddAction(std::string path, vtkCommand::EventIds, bool isAnalog)
vtkGetMacro(ActionManifestFileName, std::string)
static void(* ClassExitMethod)(void *)
virtual void DoOneEvent(vtkOpenVRRenderWindow *renWin, vtkRenderer *ren, bool doRender)