87 lines
2.7 KiB
Ucode
87 lines
2.7 KiB
Ucode
|
///=============================================================================
|
||
|
// WallReachSpec
|
||
|
//=============================================================================
|
||
|
//
|
||
|
//=============================================================================
|
||
|
// Killing Floor 2
|
||
|
// Copyright (C) 2015 Tripwire Interactive LLC
|
||
|
//=============================================================================
|
||
|
|
||
|
class WallReachSpec extends KFReachSpec
|
||
|
native(Waypoint);
|
||
|
|
||
|
var() editconst bool bMustJump;
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
/*
|
||
|
supports() -
|
||
|
returns true if it supports the requirements of aPawn. Distance is not considered.
|
||
|
*/
|
||
|
virtual UBOOL supports (INT iRadius, INT iHeight, INT moveFlags, INT iMaxFallVelocity)
|
||
|
{
|
||
|
#if 0
|
||
|
UBOOL bSupports = CollisionRadius >= iRadius * 0.5 && CollisionHeight >= iHeight;
|
||
|
if( !bSupports )
|
||
|
{
|
||
|
debugf( TEXT("%s SUPPORTS returning FALSE 1 [radii failure][ColRadius: %i ColHeight: %i] [iRadius: %i iHeight: %i moveFlags: %i iMaxFallVelocity: %i]"), *GetName(), CollisionRadius, CollisionHeight, iRadius, iHeight, moveFlags, iMaxFallVelocity );
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
INT Test = (reachFlags & moveFlags);
|
||
|
bSupports = ((reachFlags & moveFlags) == reachFlags);
|
||
|
if( !bSupports )
|
||
|
{
|
||
|
debugf( TEXT("%s SUPPORTS returning FALSE 2 [reachflags failure, test: %i] [iRadius: %i iHeight: %i moveFlags: %i iMaxFallVelocity: %i]"), *GetName(), Test, iRadius, iHeight, moveFlags, iMaxFallVelocity );
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
bSupports = (MaxLandingVelocity <= iMaxFallVelocity);
|
||
|
if( !bSupports )
|
||
|
{
|
||
|
debugf( TEXT("%s SUPPORTS returning FALSE [MaxLandingVelocity failure (MaxLandingVelocity: %i)] [iRadius: %i iHeight: %i moveFlags: %i iMaxFallVelocity: %i]"), *GetName(), MaxLandingVelocity, iRadius, iHeight, moveFlags, iMaxFallVelocity );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
debugf( TEXT("%s SUPPORTS returning TRUE"), *GetName() );
|
||
|
}
|
||
|
return bSupports;
|
||
|
#else
|
||
|
return ( (CollisionRadius >= iRadius * 0.5 )
|
||
|
&& (CollisionHeight >= iHeight)
|
||
|
&& ((reachFlags & moveFlags) == reachFlags)
|
||
|
&& (MaxLandingVelocity <= iMaxFallVelocity) );
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
virtual UBOOL IsForced() { return bManuallyForced; }
|
||
|
virtual INT CostFor( APawn* P );
|
||
|
virtual INT AdjustedCostFor( APawn* P, const FVector& StartToGoalDir, ANavigationPoint* Goal, INT Cost );
|
||
|
virtual FPlane PathColor()
|
||
|
{
|
||
|
if( bMustJump )
|
||
|
{
|
||
|
return FPlane( 0.545f, 0.909f, 0.137f, 1.f );
|
||
|
}
|
||
|
else if( !bManuallyForced )
|
||
|
{
|
||
|
return FPlane( 0.89f, 0.565f, 0.294f, 1.f );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return FPlane( 0.909f, 0.709f, 0.137f, 1.f );
|
||
|
}
|
||
|
}
|
||
|
virtual UBOOL CanBeSkipped(APawn* P)
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DefaultProperties
|
||
|
{
|
||
|
bSkipPrune=false
|
||
|
bCanCutCorners=false
|
||
|
bCheckForObstructions=true
|
||
|
}
|