156 lines
6.4 KiB
C++
156 lines
6.4 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
|