X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=protocol.h;h=98cd54e8be0a432cce8fa955ac0f9b0ee045b5f7;hb=b4617522b3a3401b30e9c95b125a706d0a8113c0;hp=ddc9542c16f6466c1e02a2e78a31b4bb80adb29b;hpb=ad5cb10c4f5822f86287b97f46eca90ca67ca82c;p=xonotic%2Fdarkplaces.git diff --git a/protocol.h b/protocol.h index ddc9542c..98cd54e8 100644 --- a/protocol.h +++ b/protocol.h @@ -57,12 +57,12 @@ void Protocol_Names(char *buffer, size_t buffersize); #define EF_NODEPTHTEST 8192 // LordHavoc: shows through walls #define EF_SELECTABLE 16384 // LordHavoc: highlights when PRYDON_CLIENTCURSOR mouse is over it #define EF_DOUBLESIDED 32768 //[515]: disable cull face for this entity -#define EF_UNUSED16 65536 +#define EF_NOSELFSHADOW 65536 // LordHavoc: does not cast a shadow on itself (or any other EF_NOSELFSHADOW entities) #define EF_UNUSED17 131072 #define EF_UNUSED18 262144 #define EF_UNUSED19 524288 #define EF_UNUSED20 1048576 -#define EF_UNUSED21 2197152 +#define EF_TELEPORT_BIT 2197152 // 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 @@ -252,7 +252,7 @@ void Protocol_Names(char *buffer, size_t buffersize); #define svc_spawnstaticsound2 59 // [coord3] [short] samp [byte] vol [byte] aten #define svc_trailparticles 60 // [short] entnum [short] effectnum [vector] start [vector] end #define svc_pointparticles 61 // [short] effectnum [vector] start [vector] velocity [short] count -#define svc_pointparticles1 62 // [short] effectnum [vector] start, same as svc_pointparticles except velocity is zero and count is 1 (PROTOCOL_DARKPLACES8) +#define svc_pointparticles1 62 // [short] effectnum [vector] start, same as svc_pointparticles except velocity is zero and count is 1 // // client to server @@ -337,7 +337,7 @@ void Protocol_Names(char *buffer, size_t buffersize); #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) -// this is 80 bytes +// this is 96 bytes typedef struct entity_state_s { // ! means this is not sent to client @@ -346,10 +346,16 @@ typedef struct entity_state_s float origin[3]; float angles[3]; int effects; + unsigned int customizeentityforclient; // ! unsigned short number; // entity number this state is for unsigned short modelindex; unsigned short frame; unsigned short tagentity; + unsigned short specialvisibilityradius; // ! larger if it has effects/light + unsigned short viewmodelforclient; // ! + unsigned short exteriormodelforclient; // ! not shown if first person viewing from this entity, shown in all other cases + unsigned short nodrawtoclient; // ! + unsigned short drawonlytoclient; // ! unsigned short light[4]; // color*256 (0.00 to 255.996), and radius*1 unsigned char active; // true if a valid state unsigned char lightstyle; @@ -365,7 +371,7 @@ typedef struct entity_state_s unsigned char tagindex; unsigned char colormod[3]; // padding to a multiple of 8 bytes (to align the double time) - unsigned char unused; + unsigned char unused[5]; } entity_state_t; @@ -382,7 +388,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 numstates, const entity_state_t *states); +void 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); @@ -571,7 +577,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, entityframe_database_t *d, int numstates, const entity_state_t *states, int viewentnum); +void 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 @@ -625,7 +631,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, entityframe4_database_t *d, int numstates, const entity_state_t *states); +void 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); @@ -782,7 +788,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, entityframe5_database_t *d, int numstates, const entity_state_t *states, int viewentnum, int movesequence); +void 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; @@ -961,5 +967,9 @@ void EntityFrameQW_FreeDatabase(entityframeqw_database_t *d); void EntityStateQW_ReadPlayerUpdate(void); void EntityFrameQW_CL_ReadFrame(qboolean delta); +struct client_s; +void EntityFrameCSQC_LostFrame(struct client_s *client, int framenum); +qboolean EntityFrameCSQC_WriteFrame (sizebuf_t *msg, int maxsize, int numstates, const entity_state_t *states, int framenum); + #endif