diff options
author | Michael Smith <mikesmiffy128@gmail.com> | 2023-05-17 23:27:05 +0100 |
---|---|---|
committer | Michael Smith <mikesmiffy128@gmail.com> | 2023-05-17 23:33:33 +0100 |
commit | d03e4138f637027908b52764a2ce3669097947c6 (patch) | |
tree | c6596f4169a11410679bbd3add4415b4cc6cc002 /src/ent.h | |
parent | ec85df6d2cbb25211613e550bcc21422ee5eb78e (diff) |
Add some server entity code-crawling machinery
Diffstat (limited to 'src/ent.h')
-rw-r--r-- | src/ent.h | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -18,6 +18,7 @@ #define INC_ENT_H #include "engineapi.h" +#include "vcall.h" /* Returns a server-side edict pointer, or null if not found. */ struct edict *ent_getedict(int idx); @@ -25,6 +26,28 @@ struct edict *ent_getedict(int idx); /* Returns an opaque pointer to a server-side entity, or null if not found. */ void *ent_get(int idx); +struct CEntityFactory; // opaque for now, can move out of ent.c if needed later + +/* + * Returns the CEntityFactory for a given entity name, or null if not found or + * unavailable. This provides a means to create and destroy entities of that + * type on the server, as well as opportunities to dig through instructions to + * find useful stuff. + */ +const struct CEntityFactory *ent_getfactory(const char *name); + +/* + * Attempts to find the virtual table of an entity class given only its factory. + * Returns null if that couldn't be done. Can be used to hook things without + * having an instance of the class up-front, or perform further snooping to get + * even deeper into an entity's code. + * + * The classname parameter is used for error messages on failed instruction + * searches and isn't used for the search itself. + */ +void **ent_findvtable(const struct CEntityFactory *factory, + const char *classname); + #endif // vi: sw=4 ts=4 noet tw=80 cc=80 |