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

◆ IsFacingPlayer() [3/3]

override bool BaseBuildingBase::IsFacingPlayer ( PlayerBase player,
string selection )
inlineprivate

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

430 {
431 vector ref_pos;
432 vector ref_dir;
433 vector player_dir;
434 float dot;
435 bool has_memory_point = MemoryPointExists( selection );
436
437 if ( has_memory_point )
438 {
439 ref_pos = ModelToWorld( GetMemoryPointPos( selection ) );
440 ref_dir = ref_pos - GetPosition();
441 }
442 else
443 {
444 ref_pos = GetPosition();
445 ref_dir = ref_pos - player.GetPosition();
446 }
447
448 ref_dir.Normalize();
449 ref_dir[1] = 0; //ignore height
450
451 player_dir = player.GetDirection();
452 player_dir.Normalize();
453 player_dir[1] = 0; //ignore height
454
455 if ( ref_dir.Length() != 0 )
456 {
457 dot = vector.Dot( player_dir, ref_dir );
458 }
459
460 if ( has_memory_point )
461 {
462 if ( dot < 0 && Math.AbsFloat( dot ) > MIN_ACTION_DETECTION_ANGLE_RAD )
463 {
464 return true;
465 }
466 }
467 else
468 {
469 if ( dot > 0 && Math.AbsFloat( dot ) > MIN_ACTION_DETECTION_ANGLE_RAD )
470 {
471 return true;
472 }
473 }
474
475 return false;
476 }
const float MIN_ACTION_DETECTION_ANGLE_RAD
Определения Watchtower.c:8
proto native float Length()
Returns length of vector (magnitude)
proto float Normalize()
Normalizes vector. Returns length.
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9

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