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.
57 lines
1.4 KiB
57 lines
1.4 KiB
5 years ago
|
//========= 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
|