X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Farc.qc;h=ff663e3045b76e63c9794b441de08fa26ec0e579;hp=5948d6a12e2831e0fcaf2f340cd7ae781ee72ce7;hb=f44756b967eea3cb1fd45e4e5129abbe83ef9080;hpb=37b3d02a3583ada75dd373d067a8ab6a0ce109a1 diff --git a/qcsrc/common/weapons/weapon/arc.qc b/qcsrc/common/weapons/weapon/arc.qc index 5948d6a12..ff663e304 100644 --- a/qcsrc/common/weapons/weapon/arc.qc +++ b/qcsrc/common/weapons/weapon/arc.qc @@ -809,7 +809,7 @@ void Draw_ArcBeam_callback(vector start, vector hit, vector end) Draw_CylindricLine(start, end, thickness, beam.beam_image, 0.25, -time * 3, beam.beam_color, beam.beam_alpha, DRAWFLAG_NORMAL, transformed_view_org); else { - R_BeginPolygon(beam.beam_image, DRAWFLAG_NORMAL); // DRAWFLAG_ADDITIVE + R_BeginPolygon(beam.beam_image, DRAWFLAG_NORMAL, false); // DRAWFLAG_ADDITIVE R_PolygonVertex( top, '0 0.5 0' + ('0 0.5 0' * (thickness / beam.beam_thickness)), @@ -892,16 +892,12 @@ void Draw_ArcBeam(entity this) // into a weapon system for client code. // find where we are aiming - makevectors(((autocvar_chase_active) ? warpzone_save_view_angles : view_angles)); - vector forward = v_forward; - vector right = v_right; - vector up = v_up; + vector myviewangle = ((autocvar_chase_active) ? warpzone_save_view_angles : view_angles); + vector forward, right, up; + MAKE_VECTORS(myviewangle, forward, right, up); entity wepent = viewmodels[this.beam_slot]; - if(autocvar_chase_active) - this.beam_usevieworigin = 1; - else - this.beam_usevieworigin = 2; + this.beam_usevieworigin = (autocvar_chase_active) ? 1 : 2; // decide upon start position if(this.beam_usevieworigin == 2) @@ -911,11 +907,6 @@ void Draw_ArcBeam(entity this) else { start_pos = this.origin; } - int v_shot_idx; // used later - (v_shot_idx = gettagindex(wepent, "shot")) || (v_shot_idx = gettagindex(wepent, "tag_shot")); - if(v_shot_idx && this.beam_usevieworigin == 2) - start_pos = gettaginfo(wepent, v_shot_idx) - '0 0 2'; - // trace forward with an estimation WarpZone_TraceLine( start_pos, @@ -924,6 +915,11 @@ void Draw_ArcBeam(entity this) this ); + int v_shot_idx; // used later + (v_shot_idx = gettagindex(wepent, "shot")) || (v_shot_idx = gettagindex(wepent, "tag_shot")); + if(v_shot_idx && this.beam_usevieworigin == 2) + start_pos = gettaginfo(wepent, v_shot_idx) - '0 0 2'; + // untransform in case our trace went through a warpzone vector end_pos = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos); @@ -956,6 +952,8 @@ void Draw_ArcBeam(entity this) { this.beam_dir = wantdir; this.beam_initialized = true; + + this.beam_muzzleentity.drawmask = MASK_NORMAL; // NOTE: this works around the muzzle entity flashing on the middle of the screen for a frame } if(this.beam_dir != wantdir) @@ -972,7 +970,7 @@ void Draw_ArcBeam(entity this) // if the angle is greater than maxangle, force the blendfactor to make this the maximum factor float blendfactor = bound( 0, - (1 - (this.beam_returnspeed * frametime)), + (1 - (this.beam_returnspeed * dt)), min(this.beam_maxangle / angle, 1) ); this.beam_dir = normalize((wantdir * (1 - blendfactor)) + (this.beam_dir * blendfactor)); @@ -982,7 +980,7 @@ void Draw_ArcBeam(entity this) // the radius is not too far yet, no worries :D float blendfactor = bound( 0, - (1 - (this.beam_returnspeed * frametime)), + (1 - (this.beam_returnspeed * dt)), 1 ); this.beam_dir = normalize((wantdir * (1 - blendfactor)) + (this.beam_dir * blendfactor)); @@ -1132,7 +1130,7 @@ void Draw_ArcBeam(entity this) this.beam_hiteffect, last_origin, beamdir * -1, - frametime * 2 + dt * 2 ); } if(this.beam_hitlight[0]) @@ -1153,7 +1151,7 @@ void Draw_ArcBeam(entity this) this.beam_muzzleeffect, original_start_pos + wantdir * 20, wantdir * 1000, - frametime * 0.1 + dt * 0.1 ); } if(this.beam_muzzlelight[0]) @@ -1206,7 +1204,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) flash = spawn(); flash.owner = this; flash.effects = EF_ADDITIVE | EF_FULLBRIGHT; - flash.drawmask = MASK_NORMAL; + //flash.drawmask = MASK_NORMAL; flash.solid = SOLID_NOT; flash.avelocity_z = 5000; setattachment(flash, this, ""); @@ -1230,10 +1228,7 @@ NET_HANDLE(ENT_CLIENT_ARC_BEAM, bool isnew) if(ReadByte()) { - if(autocvar_chase_active) - { this.beam_usevieworigin = 1; } - else // use view origin - { this.beam_usevieworigin = 2; } + this.beam_usevieworigin = (autocvar_chase_active) ? 1 : 2; } else {