X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcsqcprojectile.qc;h=d5b6697f25932c34ca6936951f6283fd235f9acd;hb=55384b17f6ad8154f79eeeefa17a1be3f060304a;hp=aecdcf7f2f186b7091123ee7253fcb02753edf9f;hpb=d6bc3b20a5d8977eae46b6af38191e178aeaae8d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/csqcprojectile.qc b/qcsrc/server/csqcprojectile.qc index aecdcf7f2..d5b6697f2 100644 --- a/qcsrc/server/csqcprojectile.qc +++ b/qcsrc/server/csqcprojectile.qc @@ -3,10 +3,9 @@ float CSQCProjectile_SendEntity(entity to, float sf) { float ft, fr; - float s; - // note: flag 0x10 = no trail please - sf = sf & 0x1F; + // note: flag 0x08 = no trail please (teleport bit) + sf = sf & 0x0F; if(self.csqcprojectile_clientanimate) sf |= 0x80; // client animated, not interpolated @@ -14,7 +13,7 @@ float CSQCProjectile_SendEntity(entity to, float sf) if(self.flags & FL_ONGROUND) sf |= 0x40; - if(self.fade_time != 0 && self.fade_rate != 0) + if(self.fade_time != 0 || self.fade_rate != 0) { ft = (self.fade_time - time) / sys_frametime; fr = (1 / self.fade_rate) / sys_frametime; @@ -22,12 +21,8 @@ float CSQCProjectile_SendEntity(entity to, float sf) sf |= 0x20; } - // HACK: subflags for sendflags = 0x80 - - s = 0; - - if (self.movetype == MOVETYPE_BOUNCEMISSILE || self.movetype == MOVETYPE_BOUNCE) - s |= 1; + if(self.gravity != 0) + sf |= 0x10; WriteByte(MSG_ENTITY, ENT_CLIENT_PROJECTILE); WriteByte(MSG_ENTITY, sf); @@ -43,15 +38,8 @@ float CSQCProjectile_SendEntity(entity to, float sf) WriteCoord(MSG_ENTITY, self.velocity_x); WriteCoord(MSG_ENTITY, self.velocity_y); WriteCoord(MSG_ENTITY, self.velocity_z); - WriteCoord(MSG_ENTITY, self.gravity); - - WriteByte(MSG_ENTITY, s); - - if (s & 1) - { - WriteCoord(MSG_ENTITY, self.bouncefactor); - WriteCoord(MSG_ENTITY, self.bouncestop); - } + if(sf & 0x10) + WriteCoord(MSG_ENTITY, self.gravity); } if(sf & 0x20) @@ -101,7 +89,7 @@ void UpdateCSQCProjectile(entity e) if(e.SendEntity == CSQCProjectile_SendEntity) { // send new origin data - e.SendFlags |= 1; + e.SendFlags |= 0x01; } } @@ -109,29 +97,9 @@ void UpdateCSQCProjectileAfterTeleport(entity e) { if(e.SendEntity == CSQCProjectile_SendEntity) { - // send new origin data and mark as teleported - e.SendFlags |= 0x11; - } -} - -.void(void) csqcprojectile_oldthink; -.float csqcprojectile_oldnextthink; - -void CSQCProjectile_Update_Think() -{ - UpdateCSQCProjectile(self); - self.think = self.csqcprojectile_oldthink; - self.nextthink = max(time, self.csqcprojectile_oldnextthink); -} - -void UpdateCSQCProjectileNextFrame(entity e) -{ - if(e.SendEntity == CSQCProjectile_SendEntity) - if(e.think != CSQCProjectile_Update_Think) - { - e.csqcprojectile_oldthink = e.think; - e.csqcprojectile_oldnextthink = e.nextthink; - e.think = CSQCProjectile_Update_Think; - e.nextthink = time; + // send new origin data + e.SendFlags |= 0x01; + // mark as teleported + e.SendFlags |= 0x08; } }