|
|
//=========== Copyright Valve Corporation, All rights reserved. ===============//
//
// Purpose:
//=============================================================================//
#ifndef UITOPLEVELWINDOWOPENVROVERLAY_H
#define UITOPLEVELWINDOWOPENVROVERLAY_H
#ifdef _WIN32
#pragma once
#endif
#include <openvr.h>
namespace panorama { class CTopLevelWindowOverlay;
class CTopLevelWindowOpenVROverlay : public CTopLevelWindow { typedef CTopLevelWindow BaseClass; public: CTopLevelWindowOpenVROverlay( CUIEngine *pUIEngineParent ); virtual ~CTopLevelWindowOpenVROverlay();
// Initialize backing surface for window
virtual bool BInitializeSurface( int nWidth, int nHeight, vr::VROverlayHandle_t ulOverlayHandle );
// Run any per window frame func logic
virtual void RunPlatformFrame();
// Resize the window to specified dimensions
virtual void OnWindowResize( uint32 nWidth, uint32 nHeight );
// Window position management
virtual void SetWindowPosition( float x, float y ); virtual void GetWindowPosition( float &x, float &y ); virtual void GetWindowBounds( float &left, float &top, float &right, float &bottom ); virtual void GetClientDimensions( float &width, float &height ); virtual void Activate( bool bForceful ); virtual bool BHasFocus() { return m_bFocus; } virtual bool BIsFullscreen() { return m_bFullScreen; } virtual void* GetNativeWindowHandle() { return 0; }
virtual bool BAllowInput( InputMessage_t &msg ); virtual bool BIsVisible() { return m_bVisible; } virtual void SetVisible( bool bVisible ) { AssertMsg( false, "SetVisible not implemented on CTopLevelWindowOverlay" ); }
void SetInputEnabled( bool bEnabled ) { m_bInputEnabled = bEnabled; }
// Clear color for the window, normally black, transparent for overlay
virtual Color GetClearColor() { return Color( 0, 0, 0, 0 ); }
// Necessary for generating mouse enter & leave events on windows
bool IsMouseOver() { return m_bMouseOverWindow; } void OnMouseEnter(); void OnMouseLeave() { m_bMouseOverWindow = false; }
void SetMouseCursor( EMouseCursors eCursor ); bool SetGameProcessInfo( AppId_t nAppId, bool bCanSharedSurfaces, int32 eTextureFormat ); void ProcessInputEvents();
bool BVisiblityChanged() const { return m_bVisibleThisFrame != m_bVisibleLastFrame; }
void PushOverlayRenderCmdStream( CSharedMemStream *pRenderStream, unsigned long dwPID, float flOpacity, EOverlayWindowAlignment alignment );
void SetGameWindowSize( uint32 nWidth, uint32 nHeight ); void SetFixedSurfaceSize( uint32 unSurfaceWidth, uint32 unSurfaceHeight );
void OnMouseMove( float x, float y );
void SetFocus( bool bFocus );
#ifdef DBGFLAG_VALIDATE
virtual void Validate( CValidator &validator, const tchar *pchName ); #endif
protected: virtual void Shutdown();
private:
IUI3DSurface *m_p3DSurface; bool m_bMouseOverWindow;
bool m_bInputEnabled; bool m_bFocus; bool m_bCanShareSurfaces;
bool m_bVisibleThisFrame; bool m_bVisibleLastFrame;
uint32 m_unGameWidth; uint32 m_unGameHeight;
bool m_bFullScreen; bool m_bVisible;
vr::VROverlayHandle_t m_ulOverlayHandle; };
} // namespace panorama
#endif // UITOPLEVELWINDOWOPENVROVERLAY_H
|