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

◆ ComputeUtility()

float ActionTargets::ComputeUtility ( Object pTarget,
vector pRayStart,
vector pRayEnd,
Object cursorTarget,
vector hitPos,
SurfaceInfo surfaceInfo )
inlineprivate

computes utility of target

out of reach

ground and static objects

basebuilding objects

surfaces with liquid source

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

466 {
468 if (vector.DistanceSq(hitPos, m_Player.GetPosition()) > c_MaxTargetDistance * c_MaxTargetDistance)
469 return -1;
470
471 if (pTarget)
472 {
473 if (pTarget == cursorTarget)
474 {
476 if (pTarget.GetType() == string.Empty)
477 return 0.01;
478
479 if (pTarget.IsBuilding())
480 return 0.25;
481
482 if (pTarget.IsTransport())
483 return 0.25;
484
486 if (pTarget.CanUseConstruction())
487 return 0.85;
488
489 if (pTarget.IsWell())
490 return 0.9;
491
492 vector playerPosXZ = m_Player.GetPosition();
493 vector hitPosXZ = hitPos;
494 playerPosXZ[1] = 0;
495 hitPosXZ[1] = 0;
496 if (vector.DistanceSq(playerPosXZ, hitPosXZ) <= c_MaxTargetDistance * c_MaxTargetDistance)
497 return c_UtilityMaxValue;
498 }
499
500 if ( PlayerBase.Cast(pTarget) && PlayerBase.Cast(pTarget).IsInVehicle() ) // utility in vehicle should be below base vehicle val
501 return 0.20;
502
503 float distSqr = DistSqrPoint2Line(pTarget.GetPosition(), pRayStart, pRayEnd);
505 }
506
508 if (surfaceInfo && surfaceInfo.GetLiquidType() != LIQUID_NONE)
509 return 0.01;
510
511 return -1;
512 }
const float c_UtilityMaxDistFromRaySqr
Определения ActionTargets.c:804
const float c_MaxTargetDistance
Определения ActionTargets.c:795
float DistSqrPoint2Line(vector pPoint, vector pL1, vector pL2)
distance between point and line
Определения ActionTargets.c:515
PlayerBase m_Player
player owner
Определения ActionTargets.c:774
const float c_UtilityMaxValue
utility constants
Определения ActionTargets.c:803
proto int GetLiquidType()
See 'LiquidTypes' in 'constants.c'.
const int LIQUID_NONE
Определения 3_Game/constants.c:529

Перекрестные ссылки c_MaxTargetDistance, c_UtilityMaxDistFromRaySqr, c_UtilityMaxValue, vector::DistanceSq(), DistSqrPoint2Line(), SurfaceInfo::GetLiquidType(), LIQUID_NONE и m_Player.

Используется в Update().