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

◆ SetOnGround()

vector Hologram::SetOnGround ( vector position)
inlineprotected

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

1427 {
1428 vector from = position;
1429 vector ground;
1430 vector player_to_projection_vector;
1431 float projection_diameter = GetProjectionDiameter();
1432
1433 ground = Vector(0, -Math.Max(projection_diameter, SMALL_PROJECTION_GROUND), 0);
1434
1435 vector to = from + ground;
1436 vector contact_pos = to;
1437
1438 RaycastRVParams rayInput = new RaycastRVParams(from, to, m_Projection);
1439 rayInput.flags = CollisionFlags.ALLOBJECTS;
1440 array<ref RaycastRVResult> results = new array<ref RaycastRVResult>;
1441
1442 if (DayZPhysics.RaycastRVProxy(rayInput, results))
1443 {
1444 RaycastRVResult res;
1445 for (int i = 0; i < results.Count(); i++)
1446 {
1447 res = results.Get(i);
1448 if (res.entry || (!res.obj && !res.parent))
1449 {
1450 contact_pos = res.pos;
1451 break;
1452 }
1453 }
1454 }
1455
1456 //LOS check
1457 if (contact_pos != "0 0 0")
1458 {
1459 vector check_pos;
1460 vector check_dir;
1461 int check_component = -1;
1462 set<Object> hit_object = new set<Object>;
1463 to = contact_pos;
1464 to[1] = to[1] + 0.1;
1465 from = m_FromAdjusted;
1466
1467 if (DayZPhysics.RaycastRV(from, to, check_pos, check_dir, check_component, hit_object, null, m_Player, false, false, ObjIntersectFire))
1468 {
1469 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))))
1470 {
1471 contact_pos = "0 0 0";
1472 }
1473 }
1474 }
1475
1476 HideWhenClose(contact_pos);
1477
1478 return contact_pos;
1479 }
EntityAI m_Projection
Определения Hologram.c:22
vector HideWhenClose(vector pos)
Определения Hologram.c:1481
PlayerBase m_Player
Определения Hologram.c:23
vector m_FromAdjusted
Определения Hologram.c:39
const float SMALL_PROJECTION_GROUND
Определения Hologram.c:46
float GetProjectionDiameter()
Определения Hologram.c:1283
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().