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

◆ IsPositionNearCurrentCameraRay()

bool CCTLiquid::IsPositionNearCurrentCameraRay ( vector position,
float maxPerpendicularDistance )
inlineprotected

Cached point must be in front of camera.

Do not allow using a cached point far beyond the active aim range.

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

878 {
879 if (position == vector.Zero)
880 return false;
881
882 vector cameraPos = g_Game.GetCurrentCameraPosition();
883 vector cameraDir = g_Game.GetCurrentCameraDirection();
884
885 if (cameraPos == vector.Zero || cameraDir == vector.Zero)
886 return false;
887
888 cameraDir.Normalize();
889
890 vector cameraToPosition = position - cameraPos;
891 float projectedDistance = vector.Dot(cameraToPosition, cameraDir);
892
894 if (projectedDistance <= 0.0)
895 return false;
896
898
899 if (safeDistance <= 1.0)
900 safeDistance = m_MaxActionDistance * 0.8;
901
903 if (projectedDistance > safeDistance + maxPerpendicularDistance)
904 return false;
905
906 vector closestPointOnRay = cameraPos + cameraDir * projectedDistance;
907 float maxPerpendicularDistanceSq = maxPerpendicularDistance * maxPerpendicularDistance;
908
909 return vector.DistanceSq(position, closestPointOnRay) <= maxPerpendicularDistanceSq;
910 }
DayZGame g_Game
Определения DayZGame.c:4074
vector position
Определения DustKickupEffects.c:20
static const float SYNTHETIC_CURSOR_DISTANCE_BUFFER
Определения CCTLiquid.c:9
float m_MaxActionDistance
Определения CCTLiquid.c:23
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Определения EnConvert.c:305
static const vector Zero
Определения EnConvert.c:123
proto float Normalize()
Normalizes vector. Returns length.

Перекрестные ссылки vector::DistanceSq(), vector::Dot(), g_Game, m_MaxActionDistance, vector::Normalize(), position, SYNTHETIC_CURSOR_DISTANCE_BUFFER и vector::Zero.

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