| 2436 | } |
| 2437 | |
| 2438 | void RebuildViewportKdtree() |
| 2439 | { |
| 2440 | /* Reset biggest size sign seen */ |
| 2441 | _viewport_sign_maxwidth = 0; |
| 2442 | |
| 2443 | std::vector<ViewportSignKdtreeItem> items; |
| 2444 | items.reserve(BaseStation::GetNumItems() + Town::GetNumItems() + Sign::GetNumItems()); |
| 2445 | |
| 2446 | for (const Station *st : Station::Iterate()) { |
| 2447 | if (st->sign.kdtree_valid) items.push_back(ViewportSignKdtreeItem::MakeStation(st->index)); |
| 2448 | } |
| 2449 | |
| 2450 | for (const Waypoint *wp : Waypoint::Iterate()) { |
| 2451 | if (wp->sign.kdtree_valid) items.push_back(ViewportSignKdtreeItem::MakeWaypoint(wp->index)); |
| 2452 | } |
| 2453 | |
| 2454 | for (const Town *town : Town::Iterate()) { |
| 2455 | if (town->cache.sign.kdtree_valid) items.push_back(ViewportSignKdtreeItem::MakeTown(town->index)); |
| 2456 | } |
| 2457 | |
| 2458 | for (const Sign *sign : Sign::Iterate()) { |
| 2459 | if (sign->sign.kdtree_valid) items.push_back(ViewportSignKdtreeItem::MakeSign(sign->index)); |
| 2460 | } |
| 2461 | |
| 2462 | _viewport_sign_kdtree.Build(items.begin(), items.end()); |
| 2463 | } |
| 2464 | |
| 2465 | |
| 2466 | static bool CheckClickOnLandscape(const Viewport &vp, int x, int y) |
no test coverage detected