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;
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);