1 .float csqcprojectile_type;
3 float CSQCProjectile_SendEntity(entity to, float sf)
7 if(self.csqcprojectile_clientanimate)
8 sf |= 0x80; // client animated, not interpolated
10 if((self.scale != 0 && self.scale != 1) || self.effects != 0)
11 sf |= 0x40; // scale used
13 WriteByte(MSG_ENTITY, ENT_CLIENT_PROJECTILE);
14 WriteByte(MSG_ENTITY, sf);
18 WriteCoord(MSG_ENTITY, self.origin_x);
19 WriteCoord(MSG_ENTITY, self.origin_y);
20 WriteCoord(MSG_ENTITY, self.origin_z);
24 WriteCoord(MSG_ENTITY, self.velocity_x);
25 WriteCoord(MSG_ENTITY, self.velocity_y);
26 WriteCoord(MSG_ENTITY, self.velocity_z);
27 WriteCoord(MSG_ENTITY, self.gravity);
33 WriteShort(MSG_ENTITY, self.modelindex);
36 WriteByte(MSG_ENTITY, bound(0, self.scale / 16.0, 255));
37 WriteShort(MSG_ENTITY, self.effects & 65535);
38 WriteByte(MSG_ENTITY, floor(self.effects / 65536));
40 WriteShort(MSG_ENTITY, self.csqcprojectile_type);
46 void CSQCProjectile(entity e, float clientanimate, float type)
48 e.SendEntity = CSQCProjectile_SendEntity;
50 e.csqcprojectile_clientanimate = clientanimate;
52 if(e.movetype == MOVETYPE_TOSS || e.movetype == MOVETYPE_BOUNCE)
60 e.csqcprojectile_type = type;
63 void UpdateCSQCProjectile(entity e)
65 if(e.SendEntity == CSQCProjectile_SendEntity)
66 e.SendFlags |= 1; // send new origin data