bool Level::areConnected(Vec2 p1, Vec2 p2, const MovementType& movement) const { if (!sectors.count(movement)) { sectors[movement] = Sectors(getBounds()); Sectors& newSectors = sectors.at(movement); for (Vec2 v : getBounds()) if (getSafeSquare(v)->canNavigate(movement)) newSectors.add(v); } return sectors.at(movement).same(p1, p2); }
Sectors& Level::getSectors(const MovementType& movement) const { if (!sectors.count(movement)) { sectors[movement] = Sectors(getBounds()); Sectors& newSectors = sectors.at(movement); for (Vec2 v : getBounds()) if (getSafeSquare(v)->canNavigate(movement)) newSectors.add(v); } return sectors.at(movement); }