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.
66 lines
1.8 KiB
66 lines
1.8 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Simple logical entity that counts up to a threshold value, then
|
||
|
// fires an output when reached.
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "cbase.h"
|
||
|
|
||
|
class CMyLogicalEntity : public CLogicalEntity
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_CLASS( CMyLogicalEntity , CLogicalEntity );
|
||
|
DECLARE_DATADESC();
|
||
|
|
||
|
// Constructor
|
||
|
CMyLogicalEntity ( void ) : m_nCounter( 0 ) {}
|
||
|
|
||
|
// Input function
|
||
|
void InputTick( inputdata_t &inputData );
|
||
|
|
||
|
private:
|
||
|
|
||
|
int m_nThreshold; // Count at which to fire our output
|
||
|
int m_nCounter; // Internal counter
|
||
|
|
||
|
COutputEvent m_OnThreshold; // Output even when the counter reaches the threshold
|
||
|
};
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS( my_logical_entity, CMyLogicalEntity );
|
||
|
|
||
|
// Start of our data description for the class
|
||
|
BEGIN_DATADESC( CMyLogicalEntity )
|
||
|
|
||
|
// For save/load
|
||
|
DEFINE_FIELD( m_nCounter, FIELD_INTEGER ),
|
||
|
|
||
|
// Links our member variable to our keyvalue from Hammer
|
||
|
DEFINE_KEYFIELD( m_nThreshold, FIELD_INTEGER, "threshold" ),
|
||
|
|
||
|
// Links our input name from Hammer to our input member function
|
||
|
DEFINE_INPUTFUNC( FIELD_VOID, "Tick", InputTick ),
|
||
|
|
||
|
// Links our output member to the output name used by Hammer
|
||
|
DEFINE_OUTPUT( m_OnThreshold, "OnThreshold" ),
|
||
|
|
||
|
END_DATADESC()
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Handle a tick input from another entity
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CMyLogicalEntity ::InputTick( inputdata_t &inputData )
|
||
|
{
|
||
|
// Increment our counter
|
||
|
m_nCounter++;
|
||
|
|
||
|
// See if we've met or crossed our threshold value
|
||
|
if ( m_nCounter >= m_nThreshold )
|
||
|
{
|
||
|
// Fire an output event
|
||
|
m_OnThreshold.FireOutput( inputData.pActivator, this );
|
||
|
|
||
|
// Reset our counter
|
||
|
m_nCounter = 0;
|
||
|
}
|
||
|
}
|