X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=protocol.h;h=9fdd636bb8e6b740623deb1366a0e24869b7f52c;hb=2a0508542fefcd4635626511f844f2fb0909ce09;hp=2729eb5784c3badf3b5a6cce8175cbbc0c9faa61;hpb=01485e57cf2f7bc57c9d3cd4a52a3645eed8b729;p=xonotic%2Fdarkplaces.git diff --git a/protocol.h b/protocol.h index 2729eb57..9fdd636b 100644 --- a/protocol.h +++ b/protocol.h @@ -62,7 +62,7 @@ void Protocol_Names(char *buffer, size_t buffersize); #define EF_UNUSED18 262144 #define EF_UNUSED19 524288 #define EF_UNUSED20 1048576 -#define EF_UNUSED21 2197152 +#define EF_TELEPORT_BIT 2097152 // div0: teleport bit (toggled when teleporting, prevents lerping when the bit has changed) #define EF_LOWPRECISION 4194304 // LordHavoc: entity is low precision (integer coordinates) to save network bandwidth (serverside only) #define EF_NOMODELFLAGS 8388608 // indicates the model's .effects should be ignored (allows overriding them) #define EF_ROCKET 16777216 // leave a trail @@ -332,11 +332,21 @@ void Protocol_Names(char *buffer, size_t buffersize); #define RENDER_EXTERIORMODEL 8 #define RENDER_LOWPRECISION 16 // send as low precision coordinates to save bandwidth #define RENDER_COLORMAPPED 32 +#define RENDER_NOCULL 64 // do not cull this entity with r_cullentities + #define RENDER_SHADOW 65536 // cast shadow #define RENDER_LIGHT 131072 // receive light #define RENDER_NOSELFSHADOW 262144 // render lighting on this entity before its own shadow is added to the scene // (note: all RENDER_NOSELFSHADOW entities are grouped together and rendered in a batch before their shadows are rendered, so they can not shadow eachother either) +typedef enum entity_state_active_e +{ + ACTIVE_NOT = 0, + ACTIVE_NETWORK = 1, + ACTIVE_SHARED = 2 +} +entity_state_active_t; + // this is 96 bytes typedef struct entity_state_s { @@ -370,8 +380,9 @@ typedef struct entity_state_s unsigned char internaleffects; // INTEF_FLAG1QW and so on unsigned char tagindex; unsigned char colormod[3]; + unsigned char glowmod[3]; // padding to a multiple of 8 bytes (to align the double time) - unsigned char unused[5]; + unsigned char unused[2]; } entity_state_t; @@ -388,7 +399,7 @@ void Protocol_UpdateClientStats(const int *stats); void Protocol_WriteStatsReliable(void); // writes a list of quake entities to the network stream // (or as many will fit) -void EntityFrameQuake_WriteFrame(sizebuf_t *msg, int maxsize, int numstates, const entity_state_t *states); +qboolean EntityFrameQuake_WriteFrame(sizebuf_t *msg, int maxsize, int numstates, const entity_state_t *states); // cleans up dead entities each frame after ReadEntity (which doesn't clear unused entities) void EntityFrameQuake_ISeeDeadEntities(void); @@ -577,7 +588,7 @@ void EntityFrame_FetchFrame(entityframe_database_t *d, int framenum, entity_fram // reference void EntityFrame_AddFrame(entityframe_database_t *d, vec3_t eye, int framenum, int numentities, const entity_state_t *entitydata); // (server) writes a frame to network stream -void EntityFrame_WriteFrame(sizebuf_t *msg, int maxsize, entityframe_database_t *d, int numstates, const entity_state_t *states, int viewentnum); +qboolean EntityFrame_WriteFrame(sizebuf_t *msg, int maxsize, entityframe_database_t *d, int numstates, const entity_state_t *states, int viewentnum); // (client) reads a frame from network stream void EntityFrame_CL_ReadFrame(void); // (client) returns the frame number of the most recent frame recieved @@ -631,7 +642,7 @@ void EntityFrame4_ResetDatabase(entityframe4_database_t *d); // updates database to account for a frame-received acknowledgment int EntityFrame4_AckFrame(entityframe4_database_t *d, int framenum, int servermode); // writes a frame to the network stream -void EntityFrame4_WriteFrame(sizebuf_t *msg, int maxsize, entityframe4_database_t *d, int numstates, const entity_state_t *states); +qboolean EntityFrame4_WriteFrame(sizebuf_t *msg, int maxsize, entityframe4_database_t *d, int numstates, const entity_state_t *states); // reads a frame from the network stream void EntityFrame4_CL_ReadFrame(void); @@ -697,8 +708,8 @@ void EntityFrame4_CL_ReadFrame(void); // bits >= (1<<24) #define E5_EXTEND3 (1<<23) -// unused -#define E5_UNUSED24 (1<<24) +// byte[3] = s->glowmod[0], s->glowmod[1], s->glowmod[2] +#define E5_GLOWMOD (1<<24) // unused #define E5_UNUSED25 (1<<25) // unused @@ -788,7 +799,7 @@ int EntityState5_DeltaBitsForState(entity_state_t *o, entity_state_t *n); void EntityFrame5_CL_ReadFrame(void); void EntityFrame5_LostFrame(entityframe5_database_t *d, int framenum); void EntityFrame5_AckFrame(entityframe5_database_t *d, int framenum); -void EntityFrame5_WriteFrame(sizebuf_t *msg, int maxsize, entityframe5_database_t *d, int numstates, const entity_state_t *states, int viewentnum, int movesequence); +qboolean EntityFrame5_WriteFrame(sizebuf_t *msg, int maxsize, entityframe5_database_t *d, int numstates, const entity_state_t *states, int viewentnum, int movesequence, qboolean need_empty); extern cvar_t developer_networkentities; @@ -969,7 +980,7 @@ void EntityFrameQW_CL_ReadFrame(qboolean delta); struct client_s; void EntityFrameCSQC_LostFrame(struct client_s *client, int framenum); -void EntityFrameCSQC_WriteFrame (sizebuf_t *msg, int maxsize, int numstates, const entity_state_t *states, int framenum); +qboolean EntityFrameCSQC_WriteFrame (sizebuf_t *msg, int maxsize, int numnumbers, const unsigned short *numbers, int framenum); #endif