hl2_src-leak-2017/src/public/game/server/ientityinfo.h

151 lines
5.8 KiB
C++

//========= 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