work on openxr controllers
This commit is contained in:
133
public/ixr.h
133
public/ixr.h
@@ -15,6 +15,131 @@ struct XRRenderSurface_t
|
||||
float m_fFov;
|
||||
};
|
||||
|
||||
enum EXRControllerType_t
|
||||
{
|
||||
k_EXR_HandController,
|
||||
k_EXR_Hand,
|
||||
};
|
||||
|
||||
enum EXRControllerSide_t
|
||||
{
|
||||
k_EXRController_Left,
|
||||
k_EXRController_Right,
|
||||
};
|
||||
/* defined by openxr + steam frame */
|
||||
enum EXRInputType_t
|
||||
{
|
||||
k_EXRInput_FromString,
|
||||
|
||||
k_EXRInput_Trackpad,
|
||||
k_EXRInput_Thumbstick,
|
||||
k_EXRInput_Joystick,
|
||||
k_EXRInput_Trigger,
|
||||
k_EXRInput_Trackball,
|
||||
k_EXRInput_Pedal,
|
||||
k_EXRInput_System,
|
||||
k_EXRInput_Dpad_Up,
|
||||
k_EXRInput_Dpad_Down,
|
||||
k_EXRInput_Dpad_Left,
|
||||
k_EXRInput_Dpad_Right,
|
||||
k_EXRInput_Diamond_Up,
|
||||
k_EXRInput_Diamond_Down,
|
||||
k_EXRInput_Diamond_Left,
|
||||
k_EXRInput_Diamond_Right,
|
||||
|
||||
k_EXRInput_A,
|
||||
k_EXRInput_B,
|
||||
k_EXRInput_X,
|
||||
k_EXRInput_Y,
|
||||
k_EXRInput_Start,
|
||||
k_EXRInput_Home,
|
||||
k_EXRInput_End,
|
||||
k_EXRInput_Select,
|
||||
k_EXRInput_Volume_Up,
|
||||
k_EXRInput_Volume_Down,
|
||||
k_EXRInput_Mute_Mic,
|
||||
k_EXRInput_Play_Pause,
|
||||
k_EXRInput_Menu,
|
||||
k_EXRInput_View,
|
||||
k_EXRInput_Back,
|
||||
k_EXRInput_ThumbRest,
|
||||
k_EXRInput_Shoulder,
|
||||
k_EXRInput_Squeeze,
|
||||
k_EXRInput_Wheel,
|
||||
k_EXRInput_ThumbRestingSurfaces,
|
||||
|
||||
|
||||
k_EXRInput_Grip,
|
||||
k_EXRInput_Aim,
|
||||
};
|
||||
|
||||
enum EXRInputActionType_t
|
||||
{
|
||||
k_EXRInputAction_Touch,
|
||||
k_EXRInputAction_Click,
|
||||
k_EXRInputAction_Force,
|
||||
k_EXRInputAction_Value,
|
||||
k_EXRInputAction_X,
|
||||
k_EXRInputAction_Y,
|
||||
k_EXRInputAction_Twist,
|
||||
k_EXRInputAction_Pose,
|
||||
k_EXRInputAction_Proximity,
|
||||
};
|
||||
|
||||
enum EXRValueType_t
|
||||
{
|
||||
k_EXRValue_Bool,
|
||||
k_EXRValue_Float,
|
||||
k_EXRValue_Vector2,
|
||||
k_EXRValue_Pose,
|
||||
};
|
||||
|
||||
|
||||
|
||||
union EXRInputValue_t
|
||||
{
|
||||
EXRValueType_t type;
|
||||
struct
|
||||
{
|
||||
EXRValueType_t type;
|
||||
bool value;
|
||||
} b;
|
||||
|
||||
struct
|
||||
{
|
||||
EXRValueType_t type;
|
||||
float value;
|
||||
} f32;
|
||||
|
||||
struct
|
||||
{
|
||||
EXRValueType_t type;
|
||||
float x;
|
||||
float y;
|
||||
} f32x2;
|
||||
|
||||
struct
|
||||
{
|
||||
EXRInputType_t type;
|
||||
Vector pos;
|
||||
Quat rot;
|
||||
} pose;
|
||||
};
|
||||
|
||||
class IXRController;
|
||||
class IXRHeadset;
|
||||
|
||||
typedef void ( *XRInputCallbackFn )( IXRController *pController, EXRInputType_t eType, const char *szType, EXRInputActionType_t action, EXRInputValue_t value );
|
||||
|
||||
abstract_class IXRController
|
||||
{
|
||||
public:
|
||||
virtual EXRControllerType_t GetControllerType() = 0;
|
||||
virtual EXRControllerSide_t GetControllerSide() = 0;
|
||||
virtual IXRHeadset *GetHeadset() = 0;
|
||||
virtual void SetInputCallback( XRInputCallbackFn fn ) = 0;
|
||||
};
|
||||
|
||||
abstract_class IXRHeadset
|
||||
{
|
||||
public:
|
||||
@@ -22,12 +147,8 @@ public:
|
||||
virtual XRRenderSurface_t GetSurface( uint32_t i ) = 0;
|
||||
virtual void SetSurfaceImage( uint32_t i, IImage *pImage ) = 0;
|
||||
|
||||
};
|
||||
|
||||
abstract_class IXRController
|
||||
{
|
||||
public:
|
||||
|
||||
virtual uint32_t GetControllerCount() = 0;
|
||||
virtual IXRController *GetController( uint32_t i ) = 0;
|
||||
};
|
||||
|
||||
abstract_class IXRManager: public IAppSystem2
|
||||
|
||||
Reference in New Issue
Block a user