cctcursornoobject.c 782 B

1234567891011121314151617181920212223242526
  1. class CCTCursorNoObject : CCTBase
  2. {
  3. protected float m_MaximalActionDistanceSq;
  4. void CCTCursorNoObject ( float maximal_target_distance )
  5. {
  6. m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
  7. }
  8. override bool Can( PlayerBase player, ActionTarget target )
  9. {
  10. if ( !target )
  11. return false;
  12. if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
  13. return true;
  14. vector playerHeadPos;
  15. MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
  16. float distanceRoot = vector.DistanceSq(target.GetCursorHitPos(), player.GetPosition());
  17. float distanceHead = vector.DistanceSq(target.GetCursorHitPos(), playerHeadPos);
  18. return ( distanceRoot <= m_MaximalActionDistanceSq || distanceHead <= m_MaximalActionDistanceSq );
  19. }
  20. };