This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/server/test_stressentities.h
2020-08-04 13:13:01 -04:00

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