diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /app/legion/rendermanager.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'app/legion/rendermanager.h')
| -rw-r--r-- | app/legion/rendermanager.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/app/legion/rendermanager.h b/app/legion/rendermanager.h new file mode 100644 index 0000000..555d7b8 --- /dev/null +++ b/app/legion/rendermanager.h @@ -0,0 +1,94 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: The main manager of rendering +// +// $Revision: $ +// $NoKeywords: $ +//===========================================================================// + +#ifndef RENDERMANAGER_H +#define RENDERMANAGER_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "gamemanager.h" +#include "tier1/mempool.h" +#include "mathlib/mathlib.h" + + +//----------------------------------------------------------------------------- +// Physics property for entities +//----------------------------------------------------------------------------- +class CCameraProperty +{ + DECLARE_FIXEDSIZE_ALLOCATOR( CCameraProperty ); + +public: + CCameraProperty(); + void GetForward( Vector *pForward ); + + // Array used for fixed-timestep simulation + Vector m_Origin; + QAngle m_Angles; + Vector m_Velocity; + QAngle m_AngVelocity; + +private: + friend class CRenderManager; +}; + + +//----------------------------------------------------------------------------- +// Rendering management +//----------------------------------------------------------------------------- +class CRenderManager : public CGameManager<> +{ +public: + // Inherited from IGameManager + virtual bool Init(); + virtual LevelRetVal_t LevelInit( bool bFirstCall ); + virtual void Update( ); + virtual LevelRetVal_t LevelShutdown( bool bFirstCall ); + virtual void Shutdown(); + + // Property allocation + CCameraProperty *CreateCameraProperty(); + void DestroyCameraProperty( CCameraProperty *pProperty ); + + void RenderWorldInRect( int x, int y, int nWidth, int nHeight ); + void RenderWorldFullscreen(); + +private: + // Set up a projection matrix for a 90 degree fov + void SetupProjectionMatrix( int nWidth, int nHeight, float flFOV ); + + // Set up a orthographic projection matrix + void SetupOrthoMatrix( int nWidth, int nHeight ); + + // Sets up the camera + void SetupCameraRenderState( ); + + // Draws the world + void RenderWorld(); + + // Done completely client-side, want total smoothness, so simulate at render interval + void UpdateLocalPlayerCamera(); + + bool m_bRenderWorldFullscreen; + int m_nRenderX; + int m_nRenderY; + int m_nRenderWidth; + int m_nRenderHeight; +}; + + +//----------------------------------------------------------------------------- +// Singleton accessor +//----------------------------------------------------------------------------- +extern CRenderManager *g_pRenderManager; + + +#endif // RENDERMANAGER_H + |