Создание логической сущности/Код

From Valve Developer Community
Jump to: navigation, search
//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ========
//
// Назначение: Простая логическая сущность со счетчиком
// посылающая команды на output при достижении порога.
//
//=============================================================================

#include "cbase.h"

class CMyLogicalEntity : public CLogicalEntity
{
	public:
	DECLARE_CLASS( CMyLogicalEntity, CLogicalEntity );
	DECLARE_DATADESC();

	// Конструктор
	CMyLogicalEntity ()
	{
		m_nCounter = 0;
	}

	// Input функция
	void InputTick( inputdata_t &inputData );

	private:

	int	m_nThreshold;	// Пороговое значение, по достижению которого активируется output
	int	m_nCounter;	// Внутренний счётчик

	COutputEvent	m_OnThreshold;	// Output событие, когда счётчик достигает порогового значения
};

LINK_ENTITY_TO_CLASS( my_logical_entity, CMyLogicalEntity  );

// Начало описания наших данных для класса
BEGIN_DATADESC( CMyLogicalEntity  )

// Для сохранения/загрузки
DEFINE_FIELD( m_nCounter, FIELD_INTEGER ),

// Связывает наши переменные с ключевыми значениями из Hammer
DEFINE_KEYFIELD( m_nThreshold, FIELD_INTEGER, "threshold" ),

// Связывает наше input название из Hammer с нашей input функцией
DEFINE_INPUTFUNC( FIELD_VOID, "Tick", InputTick ),

// Связывает наш ouput с output названием, используемым Hammer
DEFINE_OUTPUT( m_OnThreshold, "OnThreshold" ),

END_DATADESC()

//-----------------------------------------------------------------------------
// Назначение: Обработка входящих значений (tick input) от других сущностей
//-----------------------------------------------------------------------------
void CMyLogicalEntity::InputTick( inputdata_t &inputData )
{
	// Увеличение нашего счетчика
	m_nCounter++;

	// Проверяем достиг ли счетчик порогового значения
	if ( m_nCounter >= m_nThreshold )
	{
		// Запуск output события
		m_OnThreshold.FireOutput( inputData.pActivator, this );
		
		// Сбрасывание нашего счетчика
		m_nCounter = 0;
	}
}

См. Также