35#ifndef vtkOpenXRRenderWindowInteractor_h
36#define vtkOpenXRRenderWindowInteractor_h
38#include "vtkRenderingOpenXRModule.h"
49VTK_ABI_NAMESPACE_BEGIN
90 const std::string& path,
bool isAnalog,
const std::function<
void(
vtkEventData*)>&)
override;
104 bool ApplyVibration(
const std::string& actionName,
int hand,
float amplitude = 0.5,
105 float duration = 25000000.0,
float frequency = XR_FREQUENCY_UNSPECIFIED);
154 bool UseFunction =
false;
a simple class to control print indentation
Allocate and hold a VTK object.
implements OpenXR specific functions required by vtkRenderWindowInteractor.
void AddAction(const std::string &path, bool isAnalog, const std::function< void(vtkEventData *)> &) override
Assign an event or std::function to an event path.
void HandlePoseAction(const ActionData &actionData, int hand, vtkEventDataDevice3D *ed)
void ProcessXrEvents()
Process OpenXR specific events.
void DoOneEvent(vtkVRRenderWindow *renWin, vtkRenderer *ren) override
Implements the event loop.
void AddAction(const std::string &path, const std::function< void(vtkEventData *)> &)
Assign an event or std::function to an event path.
vtkNew< vtkMatrix4x4 > PoseToWorldMatrix
void AddAction(const std::string &path, const vtkCommand::EventIds &)
Assign an event or std::function to an event path.
ActionData * GetActionDataFromName(const std::string &actionName)
bool LoadDefaultBinding(const std::string &bindingFilename)
XrActionType GetActionTypeFromString(const std::string &type)
void ApplyAction(const ActionData &actionData, vtkEventDataDevice3D *ed)
void PollXrActions()
Update the action states using the OpenXRManager and handle all actions.
std::map< std::string, ActionData * > MapAction
~vtkOpenXRRenderWindowInteractor() override
void HandleBooleanAction(const ActionData &actionData, int hand, vtkEventDataDevice3D *ed)
bool ApplyVibration(const std::string &actionName, int hand, float amplitude=0.5, float duration=25000000.0, float frequency=XR_FREQUENCY_UNSPECIFIED)
Apply haptic vibration using the provided action action to emit vibration on hand to emit on amplitud...
void AddAction(const std::string &path, const vtkCommand::EventIds &, bool isAnalog) override
Assign an event or std::function to an event path.
MapAction MapActionStruct_Name
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ConvertOpenXRPoseToWorldCoordinates(const XrPosef &xrPose, double pos[3], double wxyz[4], double ppos[3], double wdir[3])
void HandleAction(const ActionData &actionData, int hand, vtkEventDataDevice3D *ed)
XrPosef * GetHandPose(uint32_t hand)
Return the XrPosef for the action named "handpose" and the hand hand or return nullptr if "handpose" ...
static vtkOpenXRRenderWindowInteractor * New()
void Initialize() override
Initialize the event handler.
bool LoadActions(const std::string &actionFilename)
vtkOpenXRRenderWindowInteractor()
Create and set the openxr style on this Set ActionManifestFileName to vtk_openxr_actions....
void HandleVector2fAction(const ActionData &actionData, int hand, vtkEventDataDevice3D *ed)
abstract specification for renderers
Implements VR specific functions required by vtkRenderWindowInteractor.
std::function< void(vtkEventData *)> Function
vtkCommand::EventIds EventId
vtkOpenXRManager::Action_t Action_t