mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 03:56:10 +08:00
First version of the SOurce SDK 2013
This commit is contained in:
129
game/client/glow_overlay.h
Normal file
129
game/client/glow_overlay.h
Normal file
@ -0,0 +1,129 @@
|
||||
//========= Copyright 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
|
Reference in New Issue
Block a user