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

◆ IsObjectObstructedFilterEx()

static bool IsObjectObstructedFilterEx ( Object object,
IsObjectObstructedCache cache,
PlayerBase player,
int geometryTypeOverride = -1 )
staticprotected

groups 'RaycastRVProxy' and 'RaycastRV' approaches into one method, allowes for comprehensive geometry override, if desired

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

1520 {
1521 //first proxy geometries
1522 RaycastRVParams rayInput = new RaycastRVParams(cache.RaycastStart, cache.ObjectCenterPos, player);
1523 rayInput.flags = CollisionFlags.ALLOBJECTS;
1524 if (geometryTypeOverride != -1)
1525 rayInput.type = geometryTypeOverride; //default 'ObjIntersectView'
1526 DayZPhysics.RaycastRVProxy(rayInput, cache.HitProxyObjects);
1527 int count;
1528 int i;
1529
1530 if (cache.HitProxyObjects)
1531 {
1532 count = cache.HitProxyObjects.Count();
1533 Object parent;
1534 for (i = 0; i < count; ++i)
1535 {
1536 if (cache.HitProxyObjects[i].hierLevel > 0) //parent has to exist, skipping nullcheck
1537 {
1538 parent = cache.HitProxyObjects[i].parent;
1539 if (parent && !parent.IsMan() && parent.CanProxyObstruct())
1540 {
1541 if (parent != object || (parent == object && object.CanProxyObstructSelf()))
1542 return true;
1543 }
1544 }
1545 }
1546 }
1547
1548 //second, regular raycast
1549 int geometry = ObjIntersectFire; //default for the RV raycast
1550 if (geometryTypeOverride != -1)
1551 geometry = geometryTypeOverride;
1552 DayZPhysics.RaycastRV(cache.RaycastStart, cache.ObjectCenterPos, cache.ObjectContactPos, cache.ObjectContactDir, cache.ContactComponent, cache.HitObjects, object, GetGame().GetPlayer(), false, false, geometry, 0.0, CollisionFlags.ALLOBJECTS);
1553 count = cache.HitObjects.Count();
1554 for (i = 0; i < count; ++i)
1555 {
1556 if (cache.HitObjects[i].CanObstruct())
1557 return true;
1558 }
1559
1560 return false;
1561 }
PlayerBase GetPlayer()
Определения ModifierBase.c:51
static proto bool RaycastRV(vector begPos, vector endPos, out vector contactPos, out vector contactDir, out int contactComponent, set< Object > results=NULL, Object with=NULL, Object ignore=NULL, bool sorted=false, bool ground_only=false, int iType=ObjIntersectView, float radius=0.0, CollisionFlags flags=CollisionFlags.NEARESTCONTACT)
Raycasts world by given parameters.
static proto bool RaycastRVProxy(notnull RaycastRVParams in, out notnull array< ref RaycastRVResult > results, array< Object > excluded=null)
Определения DayZPhysics.c:124
Определения ObjectTyped.c:2
int type
Определения DayZPhysics.c:73
CollisionFlags flags
Определения DayZPhysics.c:63
Определения DayZPhysics.c:50
proto native CGame GetGame()
CollisionFlags
Определения EnDebug.c:141

Перекрестные ссылки RaycastRVParams::flags, GetGame(), GetPlayer(), IsObjectObstructedCache(), DayZPhysics::RaycastRV(), DayZPhysics::RaycastRVProxy() и RaycastRVParams::type.

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