57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//========= Copyright Valve Corporation, All rights reserved. ============//
 | 
						|
//
 | 
						|
// Purpose: 
 | 
						|
//
 | 
						|
// $NoKeywords: $
 | 
						|
//=============================================================================//
 | 
						|
 | 
						|
#ifndef TEST_STRESSENTITIES_H
 | 
						|
#define TEST_STRESSENTITIES_H
 | 
						|
#ifdef _WIN32
 | 
						|
#pragma once
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
class CBaseEntity;
 | 
						|
 | 
						|
 | 
						|
typedef CBaseEntity* (*StressEntityFn)();	// Function to create an entity for the stress test.
 | 
						|
 | 
						|
 | 
						|
// Each game DLL can instantiate these to register types of entities it can create
 | 
						|
// for the entity stress test.
 | 
						|
class CStressEntityReg
 | 
						|
{
 | 
						|
public:
 | 
						|
 | 
						|
							CStressEntityReg( StressEntityFn fn )
 | 
						|
							{
 | 
						|
								m_pFn = fn;
 | 
						|
								m_pNext = s_pHead;
 | 
						|
								s_pHead = this;
 | 
						|
							}
 | 
						|
 | 
						|
	static CStressEntityReg*GetListHead()	{ return s_pHead; }
 | 
						|
	CStressEntityReg*		GetNext()		{ return m_pNext; }
 | 
						|
	StressEntityFn			GetFn()			{ return m_pFn; }
 | 
						|
 | 
						|
 | 
						|
private:
 | 
						|
	static CStressEntityReg	*s_pHead;	// List of all CStressEntityReg's.
 | 
						|
	CStressEntityReg		*m_pNext;
 | 
						|
	StressEntityFn			m_pFn;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// Use this macro to register a function to create stresstest entities.
 | 
						|
#define REGISTER_STRESS_ENTITY( fnName ) static CStressEntityReg s_##fnName##__( fnName );
 | 
						|
 | 
						|
 | 
						|
// Helper function for the functions that create the stress entities.
 | 
						|
// Moves the entity to a random place in the level and returns the entity.
 | 
						|
CBaseEntity*	MoveToRandomSpot( CBaseEntity *pEnt );
 | 
						|
Vector			GetRandomSpot();
 | 
						|
 | 
						|
 | 
						|
#endif // TEST_STRESSENTITIES_H
 |