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.
46 lines
1.7 KiB
46 lines
1.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef IHASATTRIBUTES_H |
|
#define IHASATTRIBUTES_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
//#include "attribute_manager.h" |
|
|
|
class CAttributeManager; |
|
class CAttributeContainer; |
|
class CBaseEntity; |
|
class CAttributeList; |
|
|
|
// To allow an entity to have attributes, derive it from IHasAttributes and |
|
// contain an CAttributeManager in it. Then: |
|
// - Call InitializeAttributes() before your entity's Spawn() |
|
// - Call AddAttribute() to add attributes to the entity |
|
// - Call all the CAttributeManager hooks at the appropriate times in your entity. |
|
// To get networking of the attributes to work on your entity: |
|
// - Add this to your entity's send table: |
|
// SendPropDataTable( SENDINFO_DT( m_AttributeManager ), &REFERENCE_SEND_TABLE(DT_AttributeManager) ), |
|
// - Call this inside your entity's OnDataChanged(): |
|
// GetAttributeManager()->OnDataChanged( updateType ); |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Derive from this if your entity wants to contain attributes. |
|
//----------------------------------------------------------------------------- |
|
class IHasAttributes |
|
{ |
|
public: |
|
virtual CAttributeManager *GetAttributeManager( void ) = 0; |
|
virtual CAttributeContainer *GetAttributeContainer( void ) = 0; |
|
virtual CBaseEntity *GetAttributeOwner( void ) = 0; |
|
virtual CAttributeList *GetAttributeList( void ) = 0; |
|
|
|
// Reapply yourself to whoever you should be providing attributes to. |
|
virtual void ReapplyProvision( void ) = 0; |
|
}; |
|
|
|
#endif // IHASATTRIBUTES_H
|
|
|