check if targets are not obstructed (eg.: wall)
check for object obstruction(if the object is not a proxy - has no parent)
when the number of obstructed items is higher than OBSTRUCTED_COUNT_THRESHOLD remove do no run obstruction check and skip these items
obstruction check
См. определение в файле ActionTargets.c строка 562
563 {
564 int numObstructed = 0;
565 int mCount = m_VicinityObjects.Count();
567 mCount--;
568
570 for ( int i = mCount; i >= 0; --i )
571 {
572 Object object = m_VicinityObjects.GetObject(i);
573 Object parent = m_VicinityObjects.GetParent(i);
574
576 if (object && !parent)
577 {
581 {
582 m_VicinityObjects.Remove(object);
583 continue;
584 }
585
588 {
589 m_VicinityObjects.Remove(object);
590 numObstructed++;
591 }
592
593 cache.ClearCache();
594 }
595 }
596 }
void IsObjectObstructedCache(vector rayCastStart, int totalObjects)
const int OBSTRUCTED_COUNT_THRESHOLD
misc
bool IsObstructedEx(Object object, IsObjectObstructedCache cache)
vector m_RayStart
objects in vicinity
Перекрестные ссылки IsObjectObstructedCache(), IsObstructedEx(), m_RayStart и OBSTRUCTED_COUNT_THRESHOLD.
Используется в FilterObstructedObjectsEx().