X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fprojectile.qc;h=407b86c746db7eb8bce41e948ff88b2f186ad1d6;hb=f60724df0f2a635ef1eeb4b8522059feed5e0236;hp=b67cc76aadc206c591f8f1f3f249ecc394f9af6b;hpb=73d37c2a5dfce462d6f5872055b8d461eb78219f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/projectile.qc b/qcsrc/client/projectile.qc index b67cc76aa..407b86c74 100644 --- a/qcsrc/client/projectile.qc +++ b/qcsrc/client/projectile.qc @@ -22,6 +22,11 @@ void SUB_Stop() .float silent; .float traileffect; +void Projectile_ResetTrail(vector to) +{ + self.trail_oldorigin = to; + self.trail_oldtime = time; +} void Projectile_DrawTrail(vector to) { vector from; @@ -38,20 +43,8 @@ void Projectile_DrawTrail(vector to) if (self.traileffect) { - if(checkextension("DP_CSQC_BOXPARTICLES")) - { - /* looks good, but we can do better with particle count - particles_alphamin = particles_alphamax = self.alpha; - boxparticles(self.traileffect, self, from, to, self.velocity, self.velocity, 1, PARTICLES_USEALPHA); - */ - /* looks bad - boxparticles(self.traileffect, self, from, to, self.velocity, self.velocity, self.alpha, 0); - */ - particles_alphamin = particles_alphamax = sqrt(self.alpha); - boxparticles(self.traileffect, self, from, to, self.velocity, self.velocity, sqrt(self.alpha), PARTICLES_USEALPHA); - } - else - trailparticles(self, self.traileffect, from, to); + particles_alphamin = particles_alphamax = sqrt(self.alpha); + boxparticles(self.traileffect, self, from, to, self.velocity, self.velocity, sqrt(self.alpha), PARTICLES_USEALPHA); } } @@ -69,7 +62,15 @@ void Projectile_Draw() if(self.count & 0x80) { //self.move_flags &~= FL_ONGROUND; - Movetype_Physics_MatchServer(autocvar_cl_projectiles_sloppy); + if(self.move_movetype == MOVETYPE_NONE || self.move_movetype == MOVETYPE_FLY) + Movetype_Physics_NoMatchServer(); + // the trivial movetypes do not have to match the + // server's ticrate as they are ticrate independent + // NOTE: this assumption is only true if MOVETYPE_FLY + // projectiles detonate on impact. If they continue + // moving, we might still be ticrate dependent. + else + Movetype_Physics_MatchServer(autocvar_cl_projectiles_sloppy); if(!(self.move_flags & FL_ONGROUND)) self.angles = vectoangles(self.velocity); } @@ -135,10 +136,7 @@ void Projectile_Draw() if(drawn) Projectile_DrawTrail(trailorigin); else - { - self.trail_oldorigin = trailorigin; - self.trail_oldtime = time; - } + Projectile_ResetTrail(trailorigin); if(!drawn) return; @@ -309,8 +307,8 @@ void Ent_Projectile() case PROJECTILE_ELECTRO: // only new engines support sound moving with object loopsound(self, CHAN_PROJECTILE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM); - self.mins = '0 0 -3'; - self.maxs = '0 0 -3'; + self.mins = '0 0 -4'; + self.maxs = '0 0 -4'; self.move_movetype = MOVETYPE_BOUNCE; self.move_touch = SUB_Null; break;