mirror of
https://github.com/Gigaslav/HL2Overcharged.git
synced 2026-09-15 20:12:37 +03:00
115 lines
2.7 KiB
C++
115 lines
2.7 KiB
C++
//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef C_ENVPROJECTED_TEXTURE_H
|
|
#define C_ENVPROJECTED_TEXTURE_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "c_baseentity.h"
|
|
#include "basetypes.h"
|
|
#include "../../materialsystem/stdshaders/IShaderExtension.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
//-----------------------------------------------------------------------------
|
|
class C_EnvProjectedTexture : public C_BaseEntity
|
|
{
|
|
DECLARE_CLASS(C_EnvProjectedTexture, C_BaseEntity);
|
|
public:
|
|
DECLARE_CLIENTCLASS();
|
|
|
|
virtual void OnDataChanged(DataUpdateType_t updateType);
|
|
void ShutDownLightHandle(void);
|
|
|
|
virtual void Simulate();
|
|
|
|
void UpdateLight(bool bForceUpdate);
|
|
|
|
// GSTRINGMIGRATION
|
|
virtual void UpdateOnRemove()
|
|
{
|
|
if (m_pVolmetricMesh != NULL)
|
|
{
|
|
CMatRenderContextPtr pRenderContext(materials);
|
|
pRenderContext->DestroyStaticMesh(m_pVolmetricMesh);
|
|
m_pVolmetricMesh = NULL;
|
|
}
|
|
BaseClass::UpdateOnRemove();
|
|
}
|
|
|
|
virtual bool IsTransparent() { return true; }
|
|
virtual bool IsTwoPass() { return false; }
|
|
|
|
virtual void GetRenderBoundsWorldspace(Vector& mins, Vector& maxs)
|
|
{
|
|
if (m_bEnableVolumetrics)
|
|
{
|
|
mins = m_vecRenderBoundsMin;
|
|
maxs = m_vecRenderBoundsMax;
|
|
}
|
|
else
|
|
{
|
|
BaseClass::GetRenderBoundsWorldspace(mins, maxs);
|
|
}
|
|
}
|
|
virtual bool ShouldDraw() { return true; }
|
|
virtual int DrawModel(int flags);
|
|
|
|
virtual bool ShouldReceiveProjectedTextures(int flags) { return false; }
|
|
|
|
void ClearVolumetricsMesh();
|
|
|
|
C_EnvProjectedTexture();
|
|
~C_EnvProjectedTexture();
|
|
|
|
private:
|
|
|
|
void RebuildVolumetricMesh();
|
|
void GetShadowViewSetup(CViewSetup &setup);
|
|
|
|
CTextureReference m_SpotlightTexture;
|
|
|
|
IMesh *m_pVolmetricMesh;
|
|
CMaterialReference m_matVolumetricsMaterial;
|
|
|
|
ClientShadowHandle_t m_LightHandle;
|
|
|
|
EHANDLE m_hTargetEntity;
|
|
|
|
bool m_bState;
|
|
float m_flLightFOV;
|
|
bool m_bEnableShadows;
|
|
bool m_bLightOnlyTarget;
|
|
bool m_bLightWorld;
|
|
bool m_bCameraSpace;
|
|
Vector m_LinearFloatLightColor;
|
|
float m_flAmbient;
|
|
float m_flNearZ;
|
|
float m_flFarZ;
|
|
char m_SpotlightTextureName[MAX_PATH];
|
|
int m_nSpotlightTextureFrame;
|
|
int m_nShadowQuality;
|
|
|
|
FlashlightState_t m_FlashlightState;
|
|
UberlightState_t m_UberlightState;
|
|
Vector m_vecRenderBoundsMin, m_vecRenderBoundsMax;
|
|
|
|
bool m_bEnableVolumetrics;
|
|
bool m_bEnableVolumetricsLOD;
|
|
float m_flVolumetricsFadeDistance;
|
|
int m_iVolumetricsQuality;
|
|
float m_flVolumetricsMultiplier;
|
|
float m_flVolumetricsQualityBias;
|
|
|
|
float m_flLastFOV;
|
|
int m_iCurrentVolumetricsSubDiv;
|
|
};
|
|
|
|
#endif // C_ENV_PROJECTED_TEXTURE_H
|