Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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; } }
|