mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-23 01:59:43 +08:00
73 lines
2.1 KiB
C
73 lines
2.1 KiB
C
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Point entity used to create templates out of other entities or groups of entities
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef POINT_TEMPLATE_H
|
||
|
#define POINT_TEMPLATE_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#define MAX_NUM_TEMPLATES 16
|
||
|
|
||
|
struct template_t
|
||
|
{
|
||
|
int iTemplateIndex;
|
||
|
VMatrix matEntityToTemplate;
|
||
|
|
||
|
DECLARE_SIMPLE_DATADESC();
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CPointTemplate : public CLogicalEntity
|
||
|
{
|
||
|
DECLARE_CLASS( CPointTemplate, CLogicalEntity );
|
||
|
public:
|
||
|
DECLARE_DATADESC();
|
||
|
|
||
|
virtual void Spawn( void );
|
||
|
virtual void Precache();
|
||
|
|
||
|
// Template initialization
|
||
|
void StartBuildingTemplates( void );
|
||
|
void FinishBuildingTemplates( void );
|
||
|
|
||
|
// Template Entity accessors
|
||
|
int GetNumTemplateEntities( void );
|
||
|
CBaseEntity *GetTemplateEntity( int iTemplateNumber );
|
||
|
void AddTemplate( CBaseEntity *pEntity, const char *pszMapData, int nLen );
|
||
|
bool ShouldRemoveTemplateEntities( void );
|
||
|
bool AllowNameFixup();
|
||
|
|
||
|
// Templates accessors
|
||
|
int GetNumTemplates( void );
|
||
|
int GetTemplateIndexForTemplate( int iTemplate );
|
||
|
|
||
|
// Template instancing
|
||
|
bool CreateInstance( const Vector &vecOrigin, const QAngle &vecAngles, CUtlVector<CBaseEntity*> *pEntities );
|
||
|
|
||
|
// Inputs
|
||
|
void InputForceSpawn( inputdata_t &inputdata );
|
||
|
|
||
|
virtual void PerformPrecache();
|
||
|
|
||
|
private:
|
||
|
string_t m_iszTemplateEntityNames[MAX_NUM_TEMPLATES];
|
||
|
|
||
|
// List of map entities this template targets. Built inside our Spawn().
|
||
|
// It's only valid between Spawn() & Activate(), because the map entity parsing
|
||
|
// code removes all the entities in it once it finishes turning them into templates.
|
||
|
CUtlVector< CBaseEntity * > m_hTemplateEntities;
|
||
|
|
||
|
// List of templates, generated from our template entities.
|
||
|
CUtlVector< template_t > m_hTemplates;
|
||
|
|
||
|
COutputEvent m_pOutputOnSpawned;
|
||
|
};
|
||
|
|
||
|
#endif // POINT_TEMPLATE_H
|