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

◆ SetOnGround()

vector Hologram::SetOnGround ( vector position)
inlineprotected

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

1378 {
1379 vector from = position;
1380 vector ground;
1381 vector player_to_projection_vector;
1382 float projection_diameter = GetProjectionDiameter();
1383
1384 ground = Vector(0, -Math.Max(projection_diameter, SMALL_PROJECTION_GROUND), 0);
1385
1386 vector to = from + ground;
1387 vector contact_pos = to;
1388
1389 RaycastRVParams rayInput = new RaycastRVParams(from, to, m_Projection);
1390 rayInput.flags = CollisionFlags.ALLOBJECTS;
1391 array<ref RaycastRVResult> results = new array<ref RaycastRVResult>;
1392
1393 if (DayZPhysics.RaycastRVProxy(rayInput, results))
1394 {
1395 RaycastRVResult res;
1396 for (int i = 0; i < results.Count(); i++)
1397 {
1398 res = results.Get(i);
1399 if (res.entry || (!res.obj && !res.parent))
1400 {
1401 contact_pos = res.pos;
1402 break;
1403 }
1404 }
1405 }
1406
1407 //LOS check
1408 if (contact_pos != "0 0 0")
1409 {
1410 vector check_pos;
1411 vector check_dir;
1412 int check_component = -1;
1413 set<Object> hit_object = new set<Object>;
1414 to = contact_pos;
1415 to[1] = to[1] + 0.1;
1416 from = m_FromAdjusted;
1417
1418 if (DayZPhysics.RaycastRV(from, to, check_pos, check_dir, check_component, hit_object, null, m_Player, false, false, ObjIntersectFire))
1419 {
1420 if ((hit_object.Count() > 0)&& (!hit_object[0].IsInherited(Watchtower) || (hit_object[0].IsInherited(Watchtower) && (m_WatchtowerIgnoreComponentNames.Find(hit_object[0].GetActionComponentName(check_component, LOD.NAME_VIEW)) == -1))))
1421 {
1422 contact_pos = "0 0 0";
1423 }
1424 }
1425 }
1426
1427 HideWhenClose(contact_pos);
1428
1429 return contact_pos;
1430 }
EntityAI m_Projection
Определения Hologram.c:22
vector HideWhenClose(vector pos)
Определения Hologram.c:1432
PlayerBase m_Player
Определения Hologram.c:23
vector m_FromAdjusted
Определения Hologram.c:39
const float SMALL_PROJECTION_GROUND
Определения Hologram.c:46
float GetProjectionDiameter()
Определения Hologram.c:1234
ref array< string > m_WatchtowerIgnoreComponentNames
Определения Hologram.c:63
CollisionFlags flags
Определения DayZPhysics.c:63
Object obj
object,that we collide with (NULL if none), If hierLevel > 0 object is the proxy object
Определения DayZPhysics.c:100
bool entry
is false if begining point was TriggerInsider
Определения DayZPhysics.c:111
vector pos
position of collision (in world coord)
Определения DayZPhysics.c:103
Object parent
if hierLevel > 0 most parent of the proxy object
Определения DayZPhysics.c:101
CollisionFlags
Определения EnDebug.c:141
proto native vector Vector(float x, float y, float z)
Vector constructor from components.

Перекрестные ссылки RaycastRVResult::entry, RaycastRVParams::flags, GetProjectionDiameter(), HideWhenClose(), m_FromAdjusted, m_Player, m_Projection, m_WatchtowerIgnoreComponentNames, Math::Max(), LOD::NAME_VIEW, RaycastRVResult::obj, RaycastRVResult::parent, RaycastRVResult::pos, DayZPhysics::RaycastRV(), DayZPhysics::RaycastRVProxy(), SMALL_PROJECTION_GROUND и Vector().

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