Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef GLOW_OVERLAY_H
#define GLOW_OVERLAY_H
#ifdef _WIN32
#pragma once
#endif
#include "mathlib/vector.h"
#include "materialsystem/imaterial.h"
#include "sun_shared.h"
#include "c_pixel_visibility.h"
#ifdef PORTAL
#include "c_prop_portal.h" //MAX_PORTAL_RECURSIVE_VIEWS
#endif
extern float g_flOverlayRange;
class CGlowSprite { public: Vector m_vColor; // 0-1
float m_flHorzSize; // Horizontal and vertical sizes.
float m_flVertSize; // 1 = size of the sun
IMaterial *m_pMaterial; // Material to use
};
class CGlowOverlay { public:
CGlowOverlay(); virtual ~CGlowOverlay();
// Return false to remove (and delete) the overlay.
virtual bool Update();
// Data the creator should fill in.
public:
// Position of the light source. If m_bDirectional is set, then it ignores
// this and uses m_vDirection as the direction of the light source.
Vector m_vPos;
// Optional direction. Used for really far away things like the sun.
// The direction should point AT the light source.
bool m_bDirectional; Vector m_vDirection;
// If this is set, then the overlay is only visible if the ray to it hits the sky.
bool m_bInSky; float m_skyObstructionScale; #ifdef PORTAL
float m_skyObstructionScaleBackups[MAX_PORTAL_RECURSIVE_VIEWS]; //used in portal mod during stencil rendering to maintain obstructions while rendering recursive views
#endif
CGlowSprite m_Sprites[MAX_SUN_LAYERS]; int m_nSprites;
float m_flProxyRadius;
float m_flHDRColorScale;
public:
// After creating the overlay, call this to add it to the active list.
// You can also call Activate and Deactivate as many times as you want.
void Activate(); void Deactivate(); // Render all the active overlays.
static void DrawOverlays( bool bCacheFullSceneState ); static void UpdateSkyOverlays( float zFar, bool bCacheFullSceneState );
#ifdef PORTAL
static void BackupSkyOverlayData( int iBackupToSlot ); static void RestoreSkyOverlayData( int iRestoreFromSlot ); #endif
protected:
void UpdateGlowObstruction( const Vector &vToGlow, bool bCacheFullSceneState ); void UpdateSkyGlowObstruction( float zFar, bool bCacheFullSceneState );
virtual void CalcSpriteColorAndSize( float flDot, CGlowSprite *pSprite, float *flHorzSize, float *flVertSize, Vector *vColor );
virtual void CalcBasis( const Vector &vToGlow, float flHorzSize, float flVertSize, Vector &vBasePt, Vector &vUp, Vector &vRight );
virtual void Draw( bool bCacheFullSceneState ); float CalcGlowAspect(); float m_flGlowObstructionScale; bool m_bCacheGlowObstruction; // Flags to cache obstruction scales
bool m_bCacheSkyObstruction; // Used in IFM poster rendering
private: short m_bActivated; unsigned short m_ListIndex; // index into s_GlowOverlays.
pixelvis_handle_t m_queryHandle; };
//Override for warping
class CWarpOverlay : public CGlowOverlay { protected: virtual void Draw( bool bCacheFullSceneState ); };
#endif // GLOW_OVERLAY_H
|