Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

69 lines
1.7 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// TF Entity Spawner
//
//=============================================================================
#ifndef TF_ENTITY_SPAWNER_H
#define TF_ENTITY_SPAWNER_H
#ifdef _WIN32
#pragma once
#endif
class CEntitySpawnPoint;
class CEntitySpawnManager;
class CEntitySpawnPoint : public CServerOnlyPointEntity, public IEntityListener
{
public:
DECLARE_CLASS( CEntitySpawnPoint, CServerOnlyPointEntity );
DECLARE_DATADESC();
CEntitySpawnPoint() {}
virtual void Spawn( void );
virtual void UpdateOnRemove( void );
bool IsUsed( void ) { return (m_hMyEntity.Get() != NULL); }
void SetEntity( CBaseEntity* pEnt ) { m_hMyEntity = pEnt; }
void RespawnNotifyThink( void );
virtual void OnEntityDeleted( CBaseEntity* pEntity );
private:
string_t m_iszSpawnManagerName;
float m_flNodeFree;
CHandle< CEntitySpawnManager > m_hSpawnManager;
CHandle< CBaseEntity > m_hMyEntity;
};
class CEntitySpawnManager : public CLogicalEntity
{
public:
DECLARE_CLASS( CEntitySpawnManager, CLogicalEntity );
DECLARE_DATADESC();
CEntitySpawnManager() {}
virtual void Spawn( void );
void RegisterSpawnPoint( CEntitySpawnPoint* pNewPoint );
virtual void Activate( void );
void SpawnAllEntities( void );
bool SpawnEntity( void );
int GetRespawnTime( void ) { return m_iRespawnTime; }
private:
int GetRandomUnusedIndex( void );
bool SpawnEntityAt( int iIndex );
private:
string_t m_iszEntityName;
int m_iEntityCount;
int m_iRespawnTime;
bool m_bDropToGround;
bool m_bRandomRotation;
int m_iMaxSpawnedEntities;
CUtlVector< CHandle< CEntitySpawnPoint > > m_SpawnPoints;
};
#endif //TF_ENTITY_SPAWNER_H