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
//========= 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; |
|
} |
|
} |