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

◆ SetHologramPosition()

bool Hologram::SetHologramPosition ( vector startPosition,
float minProjectionDistance,
float maxProjectionDistance,
inout vector contactPosition )
inlineprotected

Sets hologram position based on player and projection distance.

Аргументы
startPositionstart position
minProjectionDistancelower distance limit
maxProjectionDistancehigher distance limit
inoutcontactPosition is position of the hologram contact with ground/object
Возвращает
true if hologram is floating (is on the near or far edge)

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

1215 {
1216 float playerToProjectionDistance = vector.Distance(startPosition, contactPosition);
1217 vector playerToProjection;
1218
1219 #ifdef DIAG_DEVELOPER
1220 DebugLog("SetHologramPosition::startPosition: ", false, m_IsHidden, string.Format(" | %1", startPosition));
1221 DebugLog("SetHologramPosition::contactPosition [in]: ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1222 DebugLog("SetHologramPosition::minProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", minProjectionDistance));
1223 DebugLog("SetHologramPosition::maxProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", maxProjectionDistance));
1224 DebugLog("SetHologramPosition::playerToProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", playerToProjectionDistance));
1225 #endif
1226
1227 //hologram is at min distance from player
1228 if (playerToProjectionDistance <= minProjectionDistance)
1229 {
1230 playerToProjection = contactPosition - startPosition;
1231 playerToProjection.Normalize();
1232 //prevents the hologram to go underground/floor while hologram exceeds minProjectionDistance
1233 playerToProjection[1] = playerToProjection[1] + PROJECTION_TRANSITION_MIN;
1234
1235 contactPosition = startPosition + (playerToProjection * minProjectionDistance);
1236
1237 #ifdef DIAG_DEVELOPER
1238 DebugLog("SetHologramPosition::contactPosition[out] (< minProjectDistance): ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1239 #endif
1240
1241 return true;
1242 }
1243 //hologram is at max distance from player
1244 else if (playerToProjectionDistance >= maxProjectionDistance)
1245 {
1246 playerToProjection = contactPosition - startPosition;
1247 playerToProjection.Normalize();
1248 //prevents the hologram to go underground/floor while hologram exceeds maxProjectionDistance
1249 playerToProjection[1] = playerToProjection[1] + PROJECTION_TRANSITION_MAX;
1250
1251 contactPosition = startPosition + (playerToProjection * maxProjectionDistance);
1252
1253 #ifdef DIAG_DEVELOPER
1254 DebugLog("SetHologramPosition::contactPosition[out] (< maxProjectionDistance): ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1255 #endif
1256
1257 return true;
1258 }
1259
1260 return false;
1261 }
bool m_IsHidden
Определения Hologram.c:33
const float PROJECTION_TRANSITION_MAX
Определения Hologram.c:50
const float PROJECTION_TRANSITION_MIN
Определения Hologram.c:49
proto float Normalize()
Normalizes vector. Returns length.

Перекрестные ссылки vector::Distance(), m_IsHidden, vector::Normalize(), PROJECTION_TRANSITION_MAX и PROJECTION_TRANSITION_MIN.

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