DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ IsPlayerOrientedTowardPos()

static bool IsPlayerOrientedTowardPos ( notnull DayZPlayerImplement player,
vector target_pos,
float cone_angle )
staticprotected

Check if player direction(based on cone of defined angle) is oriented to target position.

dir in cone or in a tip of cone

См. определение в файле MiscGameplayFunctions.c строка 899

900 {
901 if (player)
902 {
903 vector player_dir = player.GetDirection();
904 vector to_target_dir = target_pos - player.GetPosition();
905
906 player_dir[1] = 0;
907 to_target_dir[1] = 0;
908
909 player_dir.Normalize();
910 to_target_dir.Normalize();
911
912 float cos_fi = vector.Dot(player_dir, to_target_dir);
913 vector cross = player_dir * to_target_dir;
914
915 int dir = Math.Acos(cos_fi) * Math.RAD2DEG;
916
917 if( cross[1] < 0 )
918 dir = -dir;
919
921 if( (dir <= cone_angle && dir >= -cone_angle) || Math.AbsFloat(dir) == 90 )
922 {
923 return true;
924 }
925 }
926
927 return false;
928 }
Определения EnMath.c:7
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Определения EnConvert.c:305
proto float Normalize()
Normalizes vector. Returns length.
Определения EnConvert.c:119
static proto float Acos(float c)
Returns angle in radians from cosinus.
static const float RAD2DEG
Определения EnMath.c:16
static proto float AbsFloat(float f)
Returns absolute value.

Перекрестные ссылки Math::AbsFloat(), Math::Acos(), vector::Dot(), vector::Normalize() и Math::RAD2DEG.