]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
improved setinfo handling so that quakeworld works much better now (name/topcolor...
[xonotic/darkplaces.git] / client.h
index 6c12f5e3abc8a337ff12fee87e24db90b0dd7b1b..246d425eb4fdb2aa990daeff040c1d88b8b6f34a 100644 (file)
--- a/client.h
+++ b/client.h
@@ -366,8 +366,8 @@ typedef struct scoreboard_s
 
 typedef struct cshift_s
 {
-       int             destcolor[3];
-       int             percent;                // 0-256
+       float   destcolor[3];
+       float   percent;                // 0-256
 } cshift_t;
 
 #define        CSHIFT_CONTENTS 0
@@ -583,12 +583,14 @@ typedef struct particle_s
        vec3_t          org;
        vec3_t          vel; // velocity of particle, or orientation of decal, or end point of beam
        float           size;
+       float           sizeincrease; // rate of size change per second
        float           alpha; // 0-255
        float           alphafade; // how much alpha reduces per second
        float           time2; // used for snow fluttering and decal fade
        float           bounce; // how much bounce-back from a surface the particle hits (0 = no physics, 1 = stop and slide, 2 = keep bouncing forever, 1.5 is typical)
        float           gravity; // how much gravity affects this particle (1.0 = normal gravity, 0.0 = none)
-       float           friction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction)
+       float           airfriction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction)
+       float           liquidfriction; // how much liquid friction affects this object (objects with a low mass/size ratio tend to get more liquid friction)
        unsigned char           color[4];
        unsigned short owner; // decal stuck to this entity
        model_t         *ownermodel; // model the decal is stuck to (used to make sure the entity is still alive)
@@ -651,6 +653,12 @@ typedef struct client_state_s
        vec3_t mvelocity[2], velocity;
        // update by server, can be used by mods for zooming
        vec_t mviewzoom[2], viewzoom;
+       // if true interpolation the mviewangles and other interpolation of the
+       // player is disabled until the next network packet
+       // this is used primarily by teleporters, and when spectating players
+       // special checking of the old fixangle[1] is used to differentiate
+       // between teleporting and spectating
+       qboolean fixangle[2];
 
        // client movement simulation
        // these fields are only updated by CL_ClientMovement (called by CL_SendMove after parsing each network packet)
@@ -660,6 +668,8 @@ typedef struct client_state_s
        qboolean movement_needupdate;
        // indicates the queue has been updated and should be replayed
        qboolean movement_replay;
+       // timestamps of latest two predicted moves for interpolation
+       double movement_time[2];
        // simulated data (this is valid even if cl.movement is false)
        vec3_t movement_origin;
        vec3_t movement_oldorigin;
@@ -707,7 +717,10 @@ typedef struct client_state_s
        // clients view of time, time should be between mtime[0] and mtime[1] to
        // generate a lerp point for other data, oldtime is the previous frame's
        // value of time, frametime is the difference between time and oldtime
-       double time, oldtime, frametime;
+       double time, oldtime;
+       // how long it has been since the previous client frame in real time
+       // (not game time, for that use cl.time - cl.oldtime)
+       double realframetime;
 
        // copy of realtime from last recieved message, for net trouble icon
        float last_received_message;
@@ -981,6 +994,7 @@ void CL_Effect(vec3_t org, int modelindex, int startframe, int framecount, float
 
 void CL_ClearState (void);
 void CL_ExpandEntities(int num);
+void CL_SetInfo(const char *key, const char *value, qboolean send, qboolean allowstarkey, qboolean allowmodel, qboolean quiet);
 
 
 int  CL_ReadFromServer (void);