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
|