DayZ 1.27
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 строка 1165

1166 {
1167 float playerToProjectionDistance = vector.Distance(startPosition, contactPosition);
1168 vector playerToProjection;
1169
1170 #ifdef DIAG_DEVELOPER
1171 DebugText("SetHologramPosition::startPosition: ", false, m_IsHidden, string.Format(" | %1", startPosition));
1172 DebugText("SetHologramPosition::contactPosition [in]: ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1173 DebugText("SetHologramPosition::minProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", minProjectionDistance));
1174 DebugText("SetHologramPosition::maxProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", maxProjectionDistance));
1175 DebugText("SetHologramPosition::playerToProjectionDistance: ", false, m_IsHidden, string.Format(" | %1", playerToProjectionDistance));
1176 #endif
1177
1178 //hologram is at min distance from player
1179 if (playerToProjectionDistance <= minProjectionDistance)
1180 {
1181 playerToProjection = contactPosition - startPosition;
1182 playerToProjection.Normalize();
1183 //prevents the hologram to go underground/floor while hologram exceeds minProjectionDistance
1184 playerToProjection[1] = playerToProjection[1] + PROJECTION_TRANSITION_MIN;
1185
1186 contactPosition = startPosition + (playerToProjection * minProjectionDistance);
1187
1188 #ifdef DIAG_DEVELOPER
1189 DebugText("SetHologramPosition::contactPosition[out] (< minProjectDistance): ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1190 #endif
1191
1192 return true;
1193 }
1194 //hologram is at max distance from player
1195 else if (playerToProjectionDistance >= maxProjectionDistance)
1196 {
1197 playerToProjection = contactPosition - startPosition;
1198 playerToProjection.Normalize();
1199 //prevents the hologram to go underground/floor while hologram exceeds maxProjectionDistance
1200 playerToProjection[1] = playerToProjection[1] + PROJECTION_TRANSITION_MAX;
1201
1202 contactPosition = startPosition + (playerToProjection * maxProjectionDistance);
1203
1204 #ifdef DIAG_DEVELOPER
1205 DebugText("SetHologramPosition::contactPosition[out] (< maxProjectionDistance): ", false, m_IsHidden, string.Format(" | %1", contactPosition));
1206 #endif
1207
1208 return true;
1209 }
1210
1211 return false;
1212 }
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().