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

◆ ComputeUtility()

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

computes utility of target

out of reach

ground and static objects

basebuilding objects

surfaces with liquid source

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

491 {
493 if (vector.DistanceSq(hitPos, m_Player.GetPosition()) > c_MaxTargetDistance * c_MaxTargetDistance)
494 return -1;
495
496 if (pTarget)
497 {
498 if (pTarget == cursorTarget)
499 {
501 if (pTarget.GetType() == string.Empty)
502 return 0.01;
503
504 if (pTarget.IsBuilding())
505 return 0.25;
506
507 if (pTarget.IsTransport())
508 return 0.25;
509
511 if (pTarget.CanUseConstruction())
512 return 0.85;
513
514 if (pTarget.IsWell())
515 return 0.9;
516
517 vector playerPosXZ = m_Player.GetPosition();
518 vector hitPosXZ = hitPos;
519 playerPosXZ[1] = 0;
520 hitPosXZ[1] = 0;
521 if (vector.DistanceSq(playerPosXZ, hitPosXZ) <= c_MaxTargetDistance * c_MaxTargetDistance)
522 return c_UtilityMaxValue;
523 }
524
525 if ( PlayerBase.Cast(pTarget) && PlayerBase.Cast(pTarget).IsInVehicle() ) // utility in vehicle should be below base vehicle val
526 return 0.20;
527
528 float distSqr = DistSqrPoint2Line(pTarget.GetPosition(), pRayStart, pRayEnd);
530 }
531
533 if (m_SurfaceInfo && m_SurfaceInfo.GetLiquidType() != LIQUID_NONE)
534 return 0.01;
535
536 return -1;
537 }
SurfaceInfo m_SurfaceInfo
first valid hitpos! Used only as rough reference value for conecasted results.
Определения ActionTargets.c:834
const float c_UtilityMaxDistFromRaySqr
Определения ActionTargets.c:850
const float c_MaxTargetDistance
Определения ActionTargets.c:841
const float c_UtilityValueCoef
Определения ActionTargets.c:851
float DistSqrPoint2Line(vector pPoint, vector pL1, vector pL2)
distance between point and line
Определения ActionTargets.c:540
PlayerBase m_Player
player owner
Определения ActionTargets.c:820
const float c_UtilityMaxValue
utility constants
Определения ActionTargets.c:849
const int LIQUID_NONE
Определения 3_Game/DayZ/constants.c:566

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

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