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.
150 lines
5.8 KiB
150 lines
5.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: provides an interface for plugins to query information about entities from the game dll |
|
// |
|
//===============================================================================================// |
|
#ifndef IENTITYINFO_H |
|
#define IENTITYINFO_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "mathlib/vector.h" |
|
#include "pluginvariant.h" |
|
|
|
abstract_class IEntityInfo |
|
{ |
|
public: |
|
// returns true if entity is a player |
|
virtual const int EntityIndex() = 0; |
|
virtual const char *GetEntityName() = 0; |
|
virtual const char *GetClassname() = 0; |
|
virtual const char *GetModelName() = 0; |
|
//TODO |
|
virtual const char *GetTargetName() = 0; |
|
virtual void SetModel(const char *modelName) = 0; |
|
virtual bool IsPlayer() = 0; |
|
virtual bool IsNPC() = 0; |
|
virtual bool IsDead() = 0; |
|
virtual bool IsAlive() = 0; |
|
virtual bool IsInWorld() = 0; |
|
virtual bool IsTemplate() = 0; |
|
virtual int GetEFlags() = 0; |
|
virtual void SetEFlags( int iEFlags ) = 0; |
|
virtual void AddEFlags( int nEFlagMask ) = 0; |
|
virtual bool IsEFlagSet( int EFlagMask ) = 0; |
|
|
|
virtual const int GetEffects( void ) = 0; |
|
virtual void AddEffects( int nEffects ) = 0; |
|
virtual void RemoveEffects( int nEffects ) = 0; |
|
virtual void ClearEffects( void ) = 0; |
|
virtual void SetEffects( int nEffects ) = 0; |
|
virtual bool IsEffectActive( int nEffects ) = 0; |
|
virtual int GetRenderMode() = 0; |
|
virtual void SetRenderMode( int nRenderMode ) = 0; |
|
|
|
virtual void SetBlocksLOS( bool bBlocksLOS ) = 0; |
|
virtual bool BlocksLOS( void ) = 0; |
|
|
|
virtual const int GetHealth() = 0; |
|
virtual const int GetMaxHealth() = 0; |
|
virtual void SetHealth( int iHealth ) = 0; |
|
virtual void SetMaxHealth( int iMaxHealth ) = 0; |
|
|
|
// returns the team the entity is on |
|
virtual int GetTeamIndex() = 0; |
|
// changes the entity to a new team (if the game dll logic allows it) |
|
virtual void ChangeTeam( int iTeamNum ) = 0; |
|
|
|
// positioning and sizes |
|
virtual const Vector GetAbsOrigin() = 0; |
|
virtual void SetAbsOrigin( Vector & vec ) = 0; |
|
virtual const QAngle GetAbsAngles() = 0; |
|
virtual void SetAbsAngles( QAngle & ang ) = 0; |
|
virtual const Vector GetLocalOrigin() = 0; |
|
virtual void SetLocalOrigin( const Vector& origin ) = 0; |
|
virtual const QAngle GetLocalAngles() = 0; |
|
virtual void SetLocalAngles( const QAngle& angles ) = 0; |
|
virtual const Vector GetAbsVelocity() = 0; |
|
virtual const Vector GetLocalVelocity() = 0; |
|
virtual const QAngle GetLocalAngularVelocity() = 0; |
|
virtual void EntityToWorldSpace( const Vector &in, Vector *pOut ) = 0; |
|
virtual void WorldToEntitySpace( const Vector &in, Vector *pOut ) = 0; |
|
virtual Vector EyePosition() = 0; |
|
virtual QAngle EyeAngles() = 0; |
|
virtual QAngle LocalEyeAngles() = 0; |
|
virtual Vector EarPosition() = 0; |
|
|
|
// returns world aligned mins/maxs of this entity |
|
virtual const Vector GetWorldMins() = 0; |
|
virtual const Vector GetWorldMaxs() = 0; |
|
virtual const Vector WorldSpaceCenter() = 0; |
|
|
|
virtual int GetWaterLevel() = 0; |
|
|
|
// if this entity has an owner, it returns their edict_t. |
|
virtual edict_t *GetOwner() = 0; |
|
virtual edict_t *GetParent() = 0; |
|
virtual edict_t *GetMoveParent() = 0; |
|
virtual edict_t *GetRootMoveParent() = 0; |
|
|
|
// if this entity is following another, returns that entities edict_t. |
|
virtual edict_t *GetFollowedEntity() = 0; |
|
virtual edict_t *GetGroundEntity() = 0; //returns the entity that this one is standing on - if set. |
|
|
|
// accessor to hook mod specific information about the entity. |
|
virtual bool GetCustomInfo(int valueType, pluginvariant &outValue, pluginvariant options) = 0; |
|
|
|
// entity debugging stuff. |
|
virtual const char *GetDebugName() = 0; |
|
virtual void EntityText( int text_offset, const char *text, float flDuration, int r = 255, int g = 255, int b = 255, int a = 255 ) = 0; |
|
|
|
//Keyvalues |
|
virtual bool GetKeyValue( const char *szKeyName, char *szValue, int iMaxLen ) = 0; |
|
|
|
|
|
}; |
|
|
|
|
|
#define INTERFACEVERSION_ENTITYINFOMANAGER "EntityInfoManager001" |
|
abstract_class IEntityInfoManager |
|
{ |
|
public: |
|
virtual IEntityInfo *GetEntityInfo( edict_t *pEdict ) = 0; |
|
virtual IEntityInfo *GetEntityInfo( int index ) = 0; //Retrieves the info |
|
|
|
//Experiment.. |
|
virtual IServerUnknown *GetServerEntity( edict_t *pEdict ) = 0; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Iterates the entities with a given classname. |
|
// Input : pStartEntity - Last entity found, NULL to start a new iteration. |
|
// szName - Classname to search for. |
|
//----------------------------------------------------------------------------- |
|
virtual edict_t *FindEntityByClassname( edict_t *pStartEntity, const char *szName ) = 0; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Iterates the entities with a given name. |
|
// Input : pStartEntity - Last entity found, NULL to start a new iteration. |
|
// szName - Name to search for. |
|
//----------------------------------------------------------------------------- |
|
virtual edict_t *FindEntityByName( edict_t *pStartEntity, const char *szName ) = 0; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Iterates the entities with a given model name. |
|
// Input : pStartEntity - Last entity found, NULL to start a new iteration. |
|
// szModelName - Model Name to search for. |
|
//----------------------------------------------------------------------------- |
|
virtual edict_t *FindEntityByModel( edict_t *pStartEntity, const char *szModelName ) = 0; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Used to iterate all the entities within a sphere. |
|
// Input : pStartEntity - |
|
// vecCenter - |
|
// flRadius - |
|
//----------------------------------------------------------------------------- |
|
virtual edict_t *FindEntityInSphere( edict_t *pStartEntity, const Vector &vecCenter, float flRadius ) = 0; |
|
|
|
virtual void GetWorldBounds( Vector &mins, Vector &maxs ) = 0; |
|
}; |
|
#endif // IENTITYINFO_H
|
|
|