//======================================================================= // Copyright XashXT Group 2007 © // sv_edict.h - server prvm edict //======================================================================= #ifndef SV_EDICT_H #define SV_EDICT_H // game.h -- game dll information visible to server #include "savefile.h" #define MAX_ENT_CLUSTERS 16 #define AI_FLY (1<<0) // monster is flying #define AI_SWIM (1<<1) // swimming monster #define AI_ONGROUND (1<<2) // monster is onground #define AI_PARTIALONGROUND (1<<3) // monster is partially onground #define AI_GODMODE (1<<4) // monster don't give damage at all #define AI_NOTARGET (1<<5) // monster will no searching enemy's #define AI_NOSTEP (1<<6) // Lazarus stuff #define AI_DUCKED (1<<7) // monster (or player) is ducked #define AI_JUMPING (1<<8) // monster (or player) is jumping #define AI_FROZEN (1<<9) // stop moving, but continue thinking #define AI_ACTOR (1<<10) // disable ai for actor #define AI_DRIVER (1<<11) // npc or player driving vehcicle or train #define AI_SPECTATOR (1<<12) // spectator mode for clients // edict->solid values typedef enum { SOLID_NOT, // no interaction with other objects SOLID_TRIGGER, // only touch when inside, after moving SOLID_BBOX, // touch on edge SOLID_BSP // bsp clip, touch on edge } solid_t; // link_t is only used for entity area links now typedef struct link_s { struct link_s *prev; struct link_s *next; int entnum; // get edict by number } link_t; struct gclient_s { player_state_t ps; // communicated by server to clients int ping; pmove_state_t old_pmove; // for detecting out-of-pmove changes vec3_t v_angle; // aiming direction vec3_t oldviewangles; vec3_t oldvelocity; float bobtime; // so off-ground doesn't change it }; struct sv_edict_s { // generic_edict_t (don't move these fields!) bool free; float freetime; // sv.time when the object was freed // sv_private_edict_t link_t area; // linked to a division node or leaf int clipmask; // trace info int headnode; // unused if num_clusters != -1 int linkcount; int num_clusters; // if -1, use headnode instead int clusternums[MAX_ENT_CLUSTERS]; int areanum, areanum2; // baselines entity_state_t s; struct gclient_s *client; //get rid of this }; #endif//SV_EDICT_H