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.
81 lines
2.5 KiB
81 lines
2.5 KiB
//========= Copyright © 1996-2005, 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(); |
|
}; |
|
|
|
void PrecachePointTemplates(); |
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
void ScriptInstallPreSpawnHook(); |
|
bool ScriptPreInstanceSpawn( CScriptScope *pScriptScope, CBaseEntity *pChild, string_t iszKeyValueData ); |
|
void ScriptPostSpawn( CScriptScope *pScriptScope, CBaseEntity **ppEntities, int nEntities ); |
|
|
|
//----------------------------------------------------------------------------- |
|
// 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, CBaseEntity *pEntityMaker = NULL, bool bCreateTime = false ); |
|
void CreationComplete( const CUtlVector<CBaseEntity*> &entities ); |
|
|
|
// 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
|
|
|