49 lines
1.4 KiB
C++
49 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
|