cctcursor.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. class CCTCursor : CCTBase
  2. {
  3. protected float m_MaximalActionDistanceSq;
  4. //approximate head heights
  5. const float HEIGHT_ERECT = 1.6;
  6. const float HEIGHT_CROUCH = 1.05;
  7. const float HEIGHT_PRONE = 0.66;
  8. void CCTCursor( float maximal_target_distance = UAMaxDistances.DEFAULT )
  9. {
  10. m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
  11. }
  12. override bool Can( PlayerBase player, ActionTarget target )
  13. {
  14. if (!target)
  15. return false;
  16. Object targetObject = target.GetObject();
  17. if (!targetObject)
  18. targetObject = target.GetParent();
  19. if (!player || !targetObject || targetObject.IsDamageDestroyed())
  20. return false;
  21. vector playerHeadPos;
  22. MiscGameplayFunctions.GetHeadBonePos(player, playerHeadPos);
  23. float distanceRoot = vector.DistanceSq(target.GetCursorHitPos(), player.GetPosition());
  24. float distanceHead = vector.DistanceSq(target.GetCursorHitPos(), playerHeadPos);
  25. return (distanceRoot <= m_MaximalActionDistanceSq || distanceHead <= m_MaximalActionDistanceSq);
  26. }
  27. };