This repository has been archived on 2022-06-27. You can view files and clone it, but cannot push or open issues or pull requests.
Xash3DArchive/engine/server/sv_edict.h

77 lines
2.4 KiB
C

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