From e1e4906eafdf776b16e540de6c522ab4299b34eb Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sun, 17 Oct 2010 21:59:02 +0200 Subject: [PATCH] misc_laser: add a spawn flag to disable collision testing of the laser (laser then passes through stuff and is not blocked), should speed up rendering --- qcsrc/client/laser.qc | 24 +++++++++++++++++++----- qcsrc/server/g_triggers.qc | 4 +++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/qcsrc/client/laser.qc b/qcsrc/client/laser.qc index 6703b1b11f..32119283e9 100644 --- a/qcsrc/client/laser.qc +++ b/qcsrc/client/laser.qc @@ -22,14 +22,28 @@ void Draw_Laser() InterpolateOrigin_Do(); if(self.count & 0x80) { - traceline(self.origin, self.velocity, 0, self); + if(self.count & 0x10) + { + trace_endpos = self.velocity, + trace_dphitq3surfaceflags = 0; + } + else + traceline(self.origin, self.velocity, 0, self); } else { - makevectors(self.angles); - traceline(self.origin, self.origin + v_forward * 32768, 0, self); - if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY) + if(self.count & 0x10) + { trace_endpos = self.origin + v_forward * 1048576; + trace_dphitq3surfaceflags = Q3SURFACEFLAG_SKY; + } + else + { + makevectors(self.angles); + traceline(self.origin, self.origin + v_forward * 32768, 0, self); + if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY) + trace_endpos = self.origin + v_forward * 1048576; + } } if(self.scale != 0) { @@ -58,7 +72,7 @@ void Ent_Laser() // 30 bytes, or 13 bytes for just moving f = ReadByte(); - self.count = (f & 0xE0); + self.count = (f & 0xF0); if(self.count & 0x80) self.iflags = IFLAG_VELOCITY; diff --git a/qcsrc/server/g_triggers.qc b/qcsrc/server/g_triggers.qc index 1f50a1b818..d627cd86e8 100644 --- a/qcsrc/server/g_triggers.qc +++ b/qcsrc/server/g_triggers.qc @@ -1076,13 +1076,15 @@ void misc_laser_think() float laser_SendEntity(entity to, float fl) { WriteByte(MSG_ENTITY, ENT_CLIENT_LASER); - fl = fl - (fl & 0xE0); // use that bit to indicate finite length laser + fl = fl - (fl & 0xF0); // use that bit to indicate finite length laser if(self.spawnflags & 2) fl |= 0x80; if(self.alpha) fl |= 0x40; if(self.scale != 1 || self.modelscale != 1) fl |= 0x20; + if(self.spawnflags & 4) + fl |= 0x10; WriteByte(MSG_ENTITY, fl); if(fl & 1) { -- 2.39.2