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 строка 607
608 {
609 int numObstructed = 0;
610 int mCount = m_VicinityObjects.Count();
612 mCount--;
613
615 for ( int i = mCount; i >= 0; --i )
616 {
617 Object object = m_VicinityObjects.GetObject(i);
618 Object parent = m_VicinityObjects.GetParent(i);
619
621 if (object && !parent)
622 {
626 {
627 m_VicinityObjects.Remove(object);
628 continue;
629 }
630
633 {
634 m_VicinityObjects.Remove(object);
635 numObstructed++;
636 }
637
638 cache.ClearCache();
639 }
640 }
641 }
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().