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.
191 lines
4.8 KiB
191 lines
4.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include "fire_smoke.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
//--------------------------------------------------------- |
|
// Save/Restore |
|
//--------------------------------------------------------- |
|
BEGIN_DATADESC( CBaseFire ) |
|
|
|
DEFINE_FIELD( m_flStartScale, FIELD_FLOAT ), |
|
DEFINE_FIELD( m_flScale, FIELD_FLOAT ), |
|
DEFINE_FIELD( m_flScaleTime, FIELD_TIME ), |
|
DEFINE_FIELD( m_nFlags, FIELD_INTEGER ), |
|
|
|
END_DATADESC() |
|
|
|
|
|
//================================================== |
|
// CBaseFire |
|
//================================================== |
|
|
|
CBaseFire::CBaseFire( void ) |
|
{ |
|
m_flStartScale = 0.0f; |
|
m_flScale = 0.0f; |
|
m_flScaleTime = 0.0f; |
|
m_nFlags = bitsFIRE_NONE; |
|
} |
|
|
|
CBaseFire::~CBaseFire( void ) |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Take the current scale of the flame and move it towards a destination |
|
// Input : size - destination size |
|
// time - time to scale across |
|
//----------------------------------------------------------------------------- |
|
void CBaseFire::Scale( float size, float time ) |
|
{ |
|
//Send to the client |
|
m_flScale = size; |
|
m_flScaleTime = time; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Overloaded Scale() function to set size |
|
// Input : start - beginning sizek |
|
// size - destination size |
|
// time - time to scale across |
|
//----------------------------------------------------------------------------- |
|
void CBaseFire::Scale( float start, float size, float time ) |
|
{ |
|
//Send to the client |
|
m_flStartScale = start; |
|
m_flScale = size; |
|
m_flScaleTime = time; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : state - |
|
//----------------------------------------------------------------------------- |
|
void CBaseFire::Enable( int state ) |
|
{ |
|
if ( state ) |
|
{ |
|
m_nFlags |= bitsFIRE_ACTIVE; |
|
} |
|
else |
|
{ |
|
m_nFlags &= ~bitsFIRE_ACTIVE; |
|
} |
|
} |
|
|
|
//================================================== |
|
// CFireSmoke |
|
//================================================== |
|
|
|
//Link the entity |
|
LINK_ENTITY_TO_CLASS( _firesmoke, CFireSmoke ); |
|
|
|
//Send datatable |
|
IMPLEMENT_SERVERCLASS_ST( CFireSmoke, DT_FireSmoke ) |
|
SendPropFloat( SENDINFO( m_flStartScale ), 0, SPROP_NOSCALE), |
|
SendPropFloat( SENDINFO( m_flScale ), 0, SPROP_NOSCALE), |
|
SendPropFloat( SENDINFO( m_flScaleTime ), 0, SPROP_NOSCALE), |
|
SendPropInt( SENDINFO( m_nFlags ), 8, SPROP_UNSIGNED ), |
|
SendPropModelIndex( SENDINFO( m_nFlameModelIndex ) ), |
|
SendPropModelIndex( SENDINFO( m_nFlameFromAboveModelIndex ) ), |
|
END_SEND_TABLE() |
|
|
|
//Data description |
|
BEGIN_DATADESC( CFireSmoke ) |
|
|
|
DEFINE_FIELD( m_flStartScale, FIELD_FLOAT ), |
|
DEFINE_FIELD( m_flScale, FIELD_FLOAT ), |
|
DEFINE_FIELD( m_flScaleTime, FIELD_FLOAT ), |
|
DEFINE_FIELD( m_nFlags, FIELD_INTEGER ), |
|
DEFINE_FIELD( m_nFlameModelIndex, FIELD_MODELINDEX ), |
|
DEFINE_FIELD( m_nFlameFromAboveModelIndex, FIELD_MODELINDEX ), |
|
|
|
END_DATADESC() |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : *name - |
|
//----------------------------------------------------------------------------- |
|
CFireSmoke::CFireSmoke( void ) |
|
{ |
|
//Client-side |
|
m_flScale = 0.0f; |
|
m_flScaleTime = 0.0f; |
|
m_nFlags = bitsFIRE_NONE; |
|
|
|
//Server-side |
|
AddEFlags( EFL_FORCE_CHECK_TRANSMIT ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
CFireSmoke::~CFireSmoke( void ) |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CFireSmoke::Precache() |
|
{ |
|
BaseClass::Precache(); |
|
} |
|
|
|
void CFireSmoke::Spawn() |
|
{ |
|
Precache(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : state - |
|
//----------------------------------------------------------------------------- |
|
void CFireSmoke::EnableSmoke( int state ) |
|
{ |
|
if ( state ) |
|
{ |
|
m_nFlags |= bitsFIRESMOKE_SMOKE; |
|
} |
|
else |
|
{ |
|
m_nFlags &= ~bitsFIRESMOKE_SMOKE; |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : state - |
|
//----------------------------------------------------------------------------- |
|
void CFireSmoke::EnableGlow( int state ) |
|
{ |
|
if ( state ) |
|
{ |
|
m_nFlags |= bitsFIRESMOKE_GLOW; |
|
} |
|
else |
|
{ |
|
m_nFlags &= ~bitsFIRESMOKE_GLOW; |
|
} |
|
} |
|
|
|
void CFireSmoke::EnableVisibleFromAbove( int state ) |
|
{ |
|
if ( state ) |
|
{ |
|
m_nFlags |= bitsFIRESMOKE_VISIBLE_FROM_ABOVE; |
|
} |
|
else |
|
{ |
|
m_nFlags &= ~bitsFIRESMOKE_VISIBLE_FROM_ABOVE; |
|
} |
|
} |