//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //===========================================================================// #ifndef WEAPON_IFMBASECAMERA_H #define WEAPON_IFMBASECAMERA_H #ifdef _WIN32 #pragma once #endif #include "weapon_ifmbase.h" #ifdef CLIENT_DLL #include "materialsystem/MaterialSystemUtil.h" #endif #if defined( CLIENT_DLL ) #define CWeaponIFMBaseCamera C_WeaponIFMBaseCamera #endif class CWeaponIFMBaseCamera : public CWeaponIFMBase { public: DECLARE_CLASS( CWeaponIFMBaseCamera, CWeaponIFMBase ); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE(); #ifdef GAME_DLL DECLARE_DATADESC(); #endif // Shared code public: CWeaponIFMBaseCamera(); #ifdef CLIENT_DLL // Client code public: virtual void ViewModelDrawn( CBaseViewModel *pBaseViewModel ); virtual void DrawCrosshair( ); virtual int DrawModel( int flags ); virtual void OnDataChanged( DataUpdateType_t updateType ); protected: // Gets the abs orientation of the camera virtual void ComputeAbsCameraTransform( Vector &vecAbsOrigin, QAngle &angAbsRotation ); // Gets the bounds of the overlay to draw void GetOverlayBounds( int &x, int &y, int &w, int &h ); // Gets the size of the overlay to draw void GetViewportSize( int &w, int &h ); void TransmitRenderInfo(); float m_flFOV; float m_flArmLength; Vector m_vecRelativePosition; QAngle m_angRelativeAngles; int m_nScreenWidth; int m_nScreenHeight; bool m_bFullScreen; CMaterialReference m_FrustumMaterial; CMaterialReference m_FrustumWireframeMaterial; #endif #ifdef GAME_DLL // Server code public: void SetRenderInfo( float flAspectRatio, float flFOV, float flArmLength, const Vector &vecPosition, const QAngle &angles ); #endif private: CNetworkVar( float, m_flRenderAspectRatio ); CNetworkVar( float, m_flRenderFOV ); CNetworkVar( float, m_flRenderArmLength ); CNetworkVector( m_vecRenderPosition ); CNetworkQAngle( m_angRenderAngles ); CWeaponIFMBaseCamera( const CWeaponIFMBaseCamera & ); }; #endif // WEAPON_IFMBASECAMERA_H