Torque3D/Engine/source/platform/input/openVR/openVROverlay.h

106 lines
2.6 KiB
C++

#ifndef _OPENVROVERLAY_H_
#define _OPENVROVERLAY_H_
#ifndef _GUIOFFSCREENCANVAS_H_
#include "gui/core/guiOffscreenCanvas.h"
#endif
#ifndef _OPENVRDEVICE_H_
#include "platform/input/openVR/openVRProvider.h"
#endif
#ifndef _COLLISION_H_
#include "collision/collision.h"
#endif
typedef vr::VROverlayInputMethod OpenVROverlayInputMethod;
typedef vr::VROverlayTransformType OpenVROverlayTransformType;
typedef vr::EGamepadTextInputMode OpenVRGamepadTextInputMode;
typedef vr::EGamepadTextInputLineMode OpenVRGamepadTextInputLineMode;
typedef vr::ETrackingResult OpenVRTrackingResult;
typedef vr::ETrackingUniverseOrigin OpenVRTrackingUniverseOrigin;
typedef vr::EOverlayDirection OpenVROverlayDirection;
typedef vr::EVRState OpenVRState;
class OpenVROverlay : public GuiOffscreenCanvas
{
public:
typedef GuiOffscreenCanvas Parent;
enum OverlayType
{
OVERLAYTYPE_OVERLAY,
OVERLAYTYPE_DASHBOARD,
};
vr::VROverlayHandle_t mOverlayHandle;
vr::VROverlayHandle_t mThumbOverlayHandle;
// Desired OpenVR state
U32 mOverlayFlags;
F32 mOverlayWidth;
vr::VROverlayTransformType mOverlayTransformType;
MatrixF mTransform;
vr::TrackedDeviceIndex_t mTransformDeviceIndex;
String mTransformDeviceComponent;
vr::VROverlayInputMethod mInputMethod;
Point2F mMouseScale;
vr::ETrackingUniverseOrigin mTrackingOrigin;
vr::TrackedDeviceIndex_t mControllerDeviceIndex;
GFXTexHandle mStagingTexture; ///< Texture used by openvr
LinearColorF mOverlayColor;
bool mOverlayTypeDirty; ///< Overlay type is dirty
bool mOverlayDirty; ///< Overlay properties are dirty
bool mManualMouseHandling;
OverlayType mOverlayType;
//
OpenVROverlay();
virtual ~OpenVROverlay();
static void initPersistFields();
DECLARE_CONOBJECT(OpenVROverlay);
bool onAdd();
void onRemove();
void resetOverlay();
void updateOverlay();
void showOverlay();
void hideOverlay();
bool isOverlayVisible();
bool isOverlayHoverTarget();
bool isGamepadFocussed();
bool isActiveDashboardOverlay();
MatrixF getTransformForOverlayCoordinates(const Point2F &pos);
bool castRay(const Point3F &origin, const Point3F &direction, RayInfo *info);
void moveGamepadFocusToNeighbour();
void handleOpenVREvents();
void updateTextControl(GuiControl* ctrl);
void onFrameRendered();
virtual void enableKeyboardTranslation();
virtual void disableKeyboardTranslation();
virtual void setNativeAcceleratorsEnabled(bool enabled);
};
typedef OpenVROverlay::OverlayType OpenVROverlayType;
DefineEnumType(OpenVROverlayType);
#endif