123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #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
|