cctsurface.c 645 B

123456789101112131415161718192021222324
  1. class CCTSurface : CCTBase
  2. {
  3. protected float m_MaximalActionDistanceSq;
  4. void CCTSurface ( float maximal_target_distance = UAMaxDistances.DEFAULT )
  5. {
  6. m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
  7. }
  8. override bool Can( PlayerBase player, ActionTarget target )
  9. {
  10. if( !target || (target && target.GetObject()) )
  11. return false;
  12. if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
  13. return true;
  14. vector hit_pos = target.GetCursorHitPos();
  15. if (hit_pos == vector.Zero)
  16. return false;
  17. return ( vector.DistanceSq(hit_pos, player.GetPosition()) <= m_MaximalActionDistanceSq );
  18. }
  19. };