Allow filtering healthbars to only allies.

This commit is contained in:
Mari the Deer 2022-09-26 20:53:20 +02:00
commit bd25598655
6 changed files with 21 additions and 8 deletions

View file

@ -1480,6 +1480,7 @@ Class SWWMStatusBar : BaseStatusBar
if ( !cti ) cti = ThinkerIterator.Create("SWWMQuickCombatTracker",Thinker.STAT_INVENTORY);
else cti.Reinit();
SWWMQuickCombatTracker ct;
bool onlyfriends = (swwm_targeter >= 2);
while ( ct = SWWMQuickCombatTracker(cti.Next()) )
{
// this ensures that projection data isn't cached if there are no target array elements, to avoid needless GC thrashing
@ -1499,6 +1500,8 @@ Class SWWMStatusBar : BaseStatusBar
if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue;
// ignore trackers not of this player
if ( ct.myplayer != CPlayer ) continue;
// ignore enemies if filtering friends
if ( onlyfriends && (!ct.Owner.IsFriend(CPlayer.mo) || ct.Owner.player) ) continue;
// ignore trackers clearly outside of player view
Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight));
Vector3 tdir = level.Vec3Diff(viewpos,smpos);
@ -1565,6 +1568,8 @@ Class SWWMStatusBar : BaseStatusBar
if ( (ct.Owner == CPlayer.mo) || (ct.Owner == cam) ) continue;
// ignore trackers not of this player
if ( ct.myplayer != CPlayer ) continue;
// ignore enemies if filtering friends
if ( onlyfriends && !ct.Owner.IsFriend(CPlayer.mo) ) continue;
// ignore trackers clearly outside of player view
Vector3 smpos = level.Vec3Offset(SWWMUtility.LerpVector3(ct.Owner.prev,ct.Owner.pos,fractic),(0,0,ct.lvheight));
Vector3 tdir = level.Vec3Diff(viewpos,smpos);