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().