mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 20:16:10 +08:00
Added original SDK code for Alien Swarm.
This commit is contained in:
153
game/client/entityoriginmaterialproxy.cpp
Normal file
153
game/client/entityoriginmaterialproxy.cpp
Normal file
@ -0,0 +1,153 @@
|
||||
//========= Copyright <20> 1996-2006, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: A base class for all material proxies in the client dll
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
// identifier was truncated to '255' characters in the debug information
|
||||
//#pragma warning(disable: 4786)
|
||||
|
||||
#include "ProxyEntity.h"
|
||||
#include "materialsystem/IMaterialVar.h"
|
||||
#include "imaterialproxydict.h"
|
||||
|
||||
// NOTE: This has to be the last file included!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
|
||||
class CEntityOriginMaterialProxy : public CEntityMaterialProxy
|
||||
{
|
||||
public:
|
||||
CEntityOriginMaterialProxy()
|
||||
{
|
||||
m_pMaterial = NULL;
|
||||
m_pOriginVar = NULL;
|
||||
}
|
||||
virtual ~CEntityOriginMaterialProxy()
|
||||
{
|
||||
}
|
||||
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues )
|
||||
{
|
||||
m_pMaterial = pMaterial;
|
||||
bool found;
|
||||
m_pOriginVar = m_pMaterial->FindVar( "$entityorigin", &found );
|
||||
if( !found )
|
||||
{
|
||||
m_pOriginVar = NULL;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
virtual void OnBind( C_BaseEntity *pC_BaseEntity )
|
||||
{
|
||||
const Vector &origin = pC_BaseEntity->GetAbsOrigin();
|
||||
m_pOriginVar->SetVecValue( origin.x, origin.y, origin.z );
|
||||
}
|
||||
|
||||
virtual IMaterial *GetMaterial()
|
||||
{
|
||||
return m_pMaterial;
|
||||
}
|
||||
|
||||
protected:
|
||||
IMaterial *m_pMaterial;
|
||||
IMaterialVar *m_pOriginVar;
|
||||
};
|
||||
|
||||
EXPOSE_MATERIAL_PROXY( CEntityOriginMaterialProxy, EntityOrigin );
|
||||
|
||||
//=================================================================================================================
|
||||
// This is a last-minute hack to ship Orange Box on the 360!
|
||||
//=================================================================================================================
|
||||
class CEntityOriginAlyxMaterialProxy : public CEntityMaterialProxy
|
||||
{
|
||||
public:
|
||||
CEntityOriginAlyxMaterialProxy()
|
||||
{
|
||||
m_pMaterial = NULL;
|
||||
m_pOriginVar = NULL;
|
||||
}
|
||||
virtual ~CEntityOriginAlyxMaterialProxy()
|
||||
{
|
||||
}
|
||||
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues )
|
||||
{
|
||||
m_pMaterial = pMaterial;
|
||||
bool found;
|
||||
m_pOriginVar = m_pMaterial->FindVar( "$entityorigin", &found );
|
||||
if( !found )
|
||||
{
|
||||
m_pOriginVar = NULL;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
virtual void OnBind( C_BaseEntity *pC_BaseEntity )
|
||||
{
|
||||
const Vector &origin = pC_BaseEntity->GetAbsOrigin();
|
||||
m_pOriginVar->SetVecValue( origin.x - 15.0f, origin.y, origin.z );
|
||||
}
|
||||
|
||||
virtual IMaterial *GetMaterial()
|
||||
{
|
||||
return m_pMaterial;
|
||||
}
|
||||
|
||||
protected:
|
||||
IMaterial *m_pMaterial;
|
||||
IMaterialVar *m_pOriginVar;
|
||||
};
|
||||
|
||||
EXPOSE_MATERIAL_PROXY( CEntityOriginAlyxMaterialProxy, EntityOriginAlyx );
|
||||
|
||||
//=================================================================================================================
|
||||
// This is a last-minute hack to ship Orange Box on the 360!
|
||||
//=================================================================================================================
|
||||
class CEp1IntroVortRefractMaterialProxy : public CEntityMaterialProxy
|
||||
{
|
||||
public:
|
||||
CEp1IntroVortRefractMaterialProxy()
|
||||
{
|
||||
m_pMaterial = NULL;
|
||||
m_pOriginVar = NULL;
|
||||
}
|
||||
virtual ~CEp1IntroVortRefractMaterialProxy()
|
||||
{
|
||||
}
|
||||
virtual bool Init( IMaterial *pMaterial, KeyValues *pKeyValues )
|
||||
{
|
||||
m_pMaterial = pMaterial;
|
||||
bool found;
|
||||
m_pOriginVar = m_pMaterial->FindVar( "$refractamount", &found );
|
||||
if( !found )
|
||||
{
|
||||
m_pOriginVar = NULL;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
virtual void OnBind( C_BaseEntity *pC_BaseEntity )
|
||||
{
|
||||
if ( m_pOriginVar != NULL)
|
||||
{
|
||||
float flTmp = ( 1.0f - m_pOriginVar->GetFloatValue() );
|
||||
flTmp *= flTmp;
|
||||
flTmp *= flTmp;
|
||||
flTmp = ( 1.0f - flTmp ) * 0.25f;
|
||||
m_pOriginVar->SetFloatValue( flTmp );
|
||||
}
|
||||
}
|
||||
|
||||
virtual IMaterial *GetMaterial()
|
||||
{
|
||||
return m_pMaterial;
|
||||
}
|
||||
|
||||
protected:
|
||||
IMaterial *m_pMaterial;
|
||||
IMaterialVar *m_pOriginVar;
|
||||
};
|
||||
|
||||
EXPOSE_MATERIAL_PROXY( CEp1IntroVortRefractMaterialProxy, Ep1IntroVortRefract );
|
Reference in New Issue
Block a user