.float silent;
.float traileffect;
+void Projectile_ResetTrail(vector to)
+{
+ self.trail_oldorigin = to;
+ self.trail_oldtime = time;
+}
void Projectile_DrawTrail(vector to)
{
vector from;
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);
}
}
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);
}
if(drawn)
Projectile_DrawTrail(trailorigin);
else
- {
- self.trail_oldorigin = trailorigin;
- self.trail_oldtime = time;
- }
+ Projectile_ResetTrail(trailorigin);
if(!drawn)
return;
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;