124 lines
3.5 KiB
Ucode
124 lines
3.5 KiB
Ucode
class u_RenderHelper extends Object;
|
|
|
|
var float LastRunTime;
|
|
|
|
|
|
//=============================================================================
|
|
// stalker and Pat visibility hax
|
|
final static function RevealStalkers(out KFHumanPawn p)
|
|
{
|
|
local KFMonster m;
|
|
|
|
if (p == none || p.Level.TimeSeconds < default.LastRunTime)
|
|
return;
|
|
|
|
default.LastRunTime = p.Level.TimeSeconds + 1.0f;
|
|
|
|
// VisibleCollidingActors must be as fast
|
|
foreach p.CollidingActors(class'KFMonster', m, 2000)
|
|
{
|
|
if (m == none || m.Health <= 0 || M.bDeleteMe || m.IsInState('Dying'))
|
|
continue;
|
|
|
|
if (ClassIsChildOf(m.class, class'ZombieStalker'))
|
|
m.SetOverlayMaterial(Material'KFX.StalkerGlow', 999, true);
|
|
if (ClassIsChildOf(m.class, class'ZombieBoss'))
|
|
m.SetOverlayMaterial(Material'KFZED_FX_T.Energy.ZED_overlay_Hit_Shdr', 999, true);
|
|
}
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// zed health
|
|
final static function DrawHealthBars(out KFHumanPawn p, out Canvas C, out float f)
|
|
{
|
|
local HUDKillingFloor KFH;
|
|
local KFMonster m;
|
|
|
|
KFH = HUDKillingFloor(C.ViewPort.Actor.myHUD);
|
|
// this draws debug sphere for pawns
|
|
// HKF.DrawPointSphere();
|
|
// draw dem bars, using the fastest iterator at least up to 2000UU
|
|
if (p == none || KFH == none)
|
|
return;
|
|
|
|
foreach p.CollidingActors(class'KFMonster', m, f)
|
|
{
|
|
if(m == none || m.Health <= 0)
|
|
continue;
|
|
KFH.DrawHealthBar(C, m, m.Health, m.HealthMax , 50.0);
|
|
}
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// crosshair
|
|
final static function DrawXhair(out Canvas C, out Color cl, out float l, out float w)
|
|
{
|
|
C.SetPos((float(C.sizeX) - w) / 2, (float(C.sizeY) - l) / 2);
|
|
C.DrawColor = cl;
|
|
C.DrawTile(Texture'Engine.WhiteSquareTexture', w, l, 0, 0, 2, 2);
|
|
C.SetPos((float(C.sizeX) - l) / 2, (float(C.sizeY) - w) / 2);
|
|
C.DrawTile(Texture'Engine.WhiteSquareTexture', l, w, 0, 0, 2, 2);
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
// paths
|
|
final static function ShowPaths(out KFPlayerController pc, optional bool b)
|
|
{
|
|
local NavigationPoint P;
|
|
local int i;
|
|
local ReachSpec Spec;
|
|
local vector SpecColor;
|
|
|
|
if (!b)
|
|
{
|
|
pc.ClearStayingDebugLines();
|
|
return;
|
|
}
|
|
|
|
for (P = pc.Level.NavigationPointList; P != none; P = P.NextNavigationPoint )
|
|
{
|
|
log( "Checking "$P$" with pathlist length "$P.Pathlist.Length );
|
|
for( i = 0; i < P.PathList.Length; i++ )
|
|
{
|
|
Spec = P.PathList[ i ];
|
|
SpecColor = vect( 0,255,0 );
|
|
// 260 = MAXVEHICLERADIUS 80 = MINCOMMONHEIGHT
|
|
if (( Spec.CollisionRadius >= 260 ) && (Spec.CollisionHeight >= 80))
|
|
{
|
|
SpecColor = vect( 255,255,255 );
|
|
}
|
|
// Jump spec
|
|
else if( ( Spec.reachFlags & 8 ) == Spec.reachFlags )
|
|
{
|
|
SpecColor = vect( 191, 165, 99 );
|
|
}
|
|
// Proscribed
|
|
else if( ( Spec.reachFlags & 128 ) == Spec.reachFlags )
|
|
{
|
|
SpecColor = vect( 255, 0, 0 );
|
|
}
|
|
// Forced
|
|
else if( ( Spec.reachFlags & 256 ) == Spec.reachFlags )
|
|
{
|
|
SpecColor = vect( 255, 255, 0 );
|
|
}
|
|
// Blue (narrow)
|
|
else if( ( Spec.CollisionRadius < 72 || Spec.CollisionHeight < 80 ) )
|
|
{
|
|
SpecColor = vect( 0, 0, 255 );
|
|
}
|
|
|
|
pc.DrawStayingDebugLine( P.PathList[ i ].Start.Location, P.PathList[ i ].End.Location, SpecColor.X, SpecColor.Y, SpecColor.Z );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//=============================================================================
|
|
defaultproperties
|
|
{
|
|
LastRunTime=1.0
|
|
} |