csgo-2018-source/game/server/test_stressentities.h
2021-07-24 21:11:47 -07:00

57 lines
1.4 KiB
C++

//========= Copyright © 1996-2005, 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