X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fshownames.qc;h=d5e24888d34a79e03d2de8db4a8c19ca22c8219f;hb=0d98d1fe4a18429be415db1c8d98ea44580509d7;hp=b13f6122c268cdaaa1b4cd18a0783ff70387d82d;hpb=4337dab09bbbe024bcc77db446ed76962fb17f0d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/shownames.qc b/qcsrc/client/shownames.qc index b13f6122c..d5e24888d 100644 --- a/qcsrc/client/shownames.qc +++ b/qcsrc/client/shownames.qc @@ -4,15 +4,20 @@ // self.armorvalue // self.sameteam = player is on same team as local client // self.fadedelay = time to wait before name tag starts fading in for enemies +// self.pointtime = last time you pointed at this player // const float SHOWNAMES_FADESPEED = 4; -const float SHOWNAMES_FADEDELAY = 0.5; +const float SHOWNAMES_FADEDELAY = 0.4; void Draw_ShowNames(entity ent) { if(!autocvar_hud_shownames) return; +#ifdef COMPAT_XON050_ENGINE if((ent.sv_entnum == player_localentnum) || (ent.sv_entnum == spectatee_status)) // ent is me or person i'm spectating +#else + if(ent.sv_entnum == player_localentnum) // ent is me or person i'm spectating +#endif if not (autocvar_hud_shownames_self && autocvar_chase_active) return; @@ -21,9 +26,9 @@ void Draw_ShowNames(entity ent) if(ent.sameteam || (!ent.sameteam && autocvar_hud_shownames_enemies)) { ent.origin_z += autocvar_hud_shownames_offset; - + float hit; - if(ent.sameteam) + if(ent.sameteam && !autocvar_hud_shownames_crosshairdistance) { hit = 1; } @@ -36,10 +41,12 @@ void Draw_ShowNames(entity ent) hit = 1; } + // handle tag fading + float overlap, onscreen, crosshairdistance; vector o, eo; + o = project_3d_to_2d(ent.origin); - float overlap, onscreen; - + if(autocvar_hud_shownames_antioverlap) { // fade tag out if another tag that is closer to you overlaps @@ -62,6 +69,18 @@ void Draw_ShowNames(entity ent) } onscreen = (o_z >= 0 && o_x >= 0 && o_y >= 0 && o_x <= vid_conwidth && o_y <= vid_conheight); + crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) ); + + if(autocvar_hud_shownames_crosshairdistance) + { + if(autocvar_hud_shownames_crosshairdistance > crosshairdistance) + ent.pointtime = time; + + if not(ent.pointtime + autocvar_hud_shownames_crosshairdistance_time > time) + overlap = TRUE; + else + overlap = (autocvar_hud_shownames_crosshairdistance_antioverlap ? overlap : FALSE); // override what antioverlap says unless allowed by cvar. + } if(!ent.fadedelay) ent.fadedelay = time + SHOWNAMES_FADEDELAY;