mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
106 lines
2.6 KiB
C++
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
|