typedef struct cshift_s
{
- int destcolor[3];
- int percent; // 0-256
+ float destcolor[3];
+ float percent; // 0-256
} cshift_t;
#define CSHIFT_CONTENTS 0
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)
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)
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;
// 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;
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);