# IsPointInPoly(point polyList) :IsPointInPoly ->ipip_polyList ->ipip_point false ->ipip_retval GetListCount(<-ipip_polyList) 1 - ->ipip_prev <-ipip_polyList 0 do <-ipip_polyList[I] ->ipip_linept1 <-ipip_polyList[<-ipip_prev] ->ipip_linept2 if (<-ipip_linept1.y <-ipip_point.y gt <-ipip_linept2.y <-ipip_point.y gt neq) <-ipip_linept2.x <-ipip_linept1.x - <-ipip_point.y <-ipip_linept1.y - * ->ipip_tempval <-ipip_tempval <-ipip_linept2.y <-ipip_linept1.y - / ->ipip_tempval <-ipip_tempval <-ipip_linept1.x + ->ipip_tempval if (<-ipip_point.x <-ipip_tempval lt) <-ipip_retval ! ->ipip_retval endif endif I ->ipip_prev loop <-ipip_retval # GetUnitsInPolygon(unitType polyList enemyState builtState imperviousState) :GetUnitsInPolygon ->guip_imperviousState ->guip_builtState ->guip_enemyState ->guip_polyList ->guip_unitType # Get all units on the map that match the non-position requirements. GetUnits(<-guip_unitType V3(128 128 128) 512 false false false <-guip_enemyState <-guip_builtState <-guip_imperviousState) ->guip_units CreateList ->guip_retval <-guip_units 0 do <-guip_units[I] ->guip_tempunit if (@IsPointInPoly(V2(GetUnitCell(<-guip_tempunit)) <-guip_polyList)) AppendToList(<-guip_retval <-guip_tempunit) endif loop <-guip_retval