]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - protocol.h
fix compile error with .avelocity
[xonotic/darkplaces.git] / protocol.h
index 2729eb5784c3badf3b5a6cce8175cbbc0c9faa61..9fdd636bb8e6b740623deb1366a0e24869b7f52c 100644 (file)
@@ -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