CCTObject.c
class CCTObject : CCTBase
{
protected float m_MaximalActionDistanceSq;
void CCTObject ( float maximal_target_distance = UAMaxDistances.DEFAULT )
{
m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
}
override bool Can( PlayerBase player, ActionTarget target )
{
Object targetObject = target.GetObject();
if ( !targetObject || !player )
return false;
vector playerHeadPos;
MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
float distanceRoot = vector.DistanceSq(targetObject.GetPosition(), player.GetPosition());
float distanceHead = vector.DistanceSq(targetObject.GetPosition(), playerHeadPos);
return ( distanceRoot <= m_MaximalActionDistanceSq || distanceHead <= m_MaximalActionDistanceSq );
}
};
class CCTParent : CCTBase
{
protected float m_MaximalActionDistanceSq;
void CCTParent ( float maximal_target_distance = UAMaxDistances.DEFAULT )
{
m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
}
override bool Can( PlayerBase player, ActionTarget target )
{
Object targetParent = target.GetParent();
if ( !targetParent || !player )
return false;
vector playerHeadPos;
MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
float distanceRoot = vector.DistanceSq(targetParent.GetPosition(), player.GetPosition());
float distanceHead = vector.DistanceSq(targetParent.GetPosition(), playerHeadPos);
return ( distanceRoot <= m_MaximalActionDistanceSq || distanceHead <= m_MaximalActionDistanceSq );
}
};