Commit Graph

2951 Commits

Author SHA1 Message Date
Dustin Carlino
be57975a91 Start to shape the LTN impact tool into something more general to plug a
demand model into routing and compare throughput before/after some
change.

Add in a bunch of filters for trips. (Most even work!)
2022-01-26 14:17:24 +00:00
Dustin Carlino
cabffc7f47 Similar refactor for ColorDiscrete. Anywhere separately managed a zoomed
and unzoomed batch should just migrate to this.
2022-01-26 11:35:40 +00:00
Dustin Carlino
5dfb8f26f0 Refactor ColorNetwork to use ToggleZoomed 2022-01-26 11:31:33 +00:00
Dustin Carlino
dfbd9785f3 While merging adjacent perimeters for the LTN tool, don't proceed if
intermediate results can't be turned into a polygon. It'll break
something later. #841

There's a particular bug where a perimeter can be turned into a polygon,
but after collapsing internal dead-ends, it can't.

If we don't do this, the LTN select boundary UI crashes, and reasoning
about block -> neighborhood mappings gets very hairy. I'd like to
address all the root causes of failing to make a polygon, but until
then...

TRADE-OFF: it _really_ slows down the select boundary UI.
2022-01-25 18:12:15 +00:00
Dustin Carlino
9192c6364b Avoid crash in the blockfinder when merging partitions manually 2022-01-25 14:01:24 +00:00
Dustin Carlino
847ca07bc6 Add the quick-select feature to the blockfinder debugging too 2022-01-25 13:54:30 +00:00
Dustin Carlino
deb775b409 Debug block partitioning by color, to sanity check why some blocks are vanishing when merged 2022-01-25 13:39:40 +00:00
Dustin Carlino
e36337a91f Use an enum for a more clear API to handle caching temporary
pathfinders. Should be no behavior changes yet
2022-01-23 09:37:45 +00:00
Dustin Carlino
e0965db22b Switch LTN impact to World 2022-01-23 09:37:45 +00:00
Dustin Carlino
c6e26e5e20 Flesh out the LTN impact tool -- calculate impact after, add tooltips 2022-01-23 09:37:45 +00:00
Dustin Carlino
fc705318a9 Start a simple prediction of how vehicle traffic will be affected by an LTN scheme, based on a travel demand model. Super similar to Ungap's equivalent. 2022-01-23 09:37:45 +00:00
Dustin Carlino
2271924d2d Fix build break from the refactor a moment ago 2022-01-21 14:19:53 +00:00
Dustin Carlino
9c1e04de0c Refactor Ungap's trip file management, use it in the LTN tool. Now you
don't constantly lose the example routes you're trying out
2022-01-21 14:05:48 +00:00
Dustin Carlino
913c4874fe Fix Ungap's label for unprotected turns -- depends on the driving side 2022-01-21 09:41:36 +00:00
Dustin Carlino
a6cd58346f Move some misc stuff from game/common to map_gui, so LTN can use it
LTN crate builds, and appears to work!
2022-01-18 17:33:04 +00:00
Dustin Carlino
8dc2c68760 Move LTN code from game to its own crate. game crate builds, ltn doesn't
quite...

Changes along the way:
- take away the convenient jump to debug mode
2022-01-18 17:33:04 +00:00
Dustin Carlino
a22a38051f Set up the boilerplate for splitting the LTN tool into its crate 2022-01-18 17:33:04 +00:00
Dustin Carlino
a14d6b3810 Better errors when core Line stuff breaks.
... and plumbing it everywhere
2022-01-18 10:26:33 +00:00
Dustin Carlino
bd340a1970 Switch from std::fs to fs_err. When files aren't found, the error message actually includes the path! 2022-01-17 17:30:51 +00:00
Dustin Carlino
cfddc5be1b Properly clear LTN state when switching maps, even from different apps. [rebuild] [release] 2022-01-16 09:41:50 +00:00
Dustin Carlino
215ca3438d Color neighborhoods based on quietness (same metric shown in the rat run tab) 2022-01-15 19:04:20 +00:00
Dustin Carlino
973f733d36 Preview cell connectivity from the browse neighborhoods screen 2022-01-15 18:23:13 +00:00
Dustin Carlino
6b79201d21 Fix an edge case for cell connectivity 2022-01-15 18:00:11 +00:00
Dustin Carlino
3a60a465e0 Remove blocks from the current neighborhood, possibly creating a new one
The code is quite a mess, but it works...
2022-01-15 17:52:38 +00:00
Dustin Carlino
78a32f28f7 Fix neighborhood colors after adjusting boundaries 2022-01-15 17:15:34 +00:00
Dustin Carlino
e2621c40f4 Speed up the select boundary UI by caching single blocks 2022-01-15 17:04:31 +00:00
Dustin Carlino
c18cc762bb Finally make the select boundary UI properly update the partitioning as
we make changes! So far, just handling "stealing" a block from another
neighborhood. The other neighborhood can wind up being totally deleted.
2022-01-15 16:57:59 +00:00
Dustin Carlino
6376a74c7a Initially draw the red outline in the LTN select boundary mode 2022-01-15 15:58:45 +00:00
Dustin Carlino
b5e540d588 Fix state management in the LTN tool. Previously, changing maps, then going back to home screen from browse was broken 2022-01-15 15:42:01 +00:00
Dustin Carlino
f82ee8e1fa Show how many streets in a neighborhood allow through-traffic 2022-01-15 15:32:17 +00:00
Dustin Carlino
2a154bd679 Avoid crashign when drawing cells. Bridges and tunnels can leak out of
boundary polygons.
2022-01-14 17:03:19 +00:00
Dustin Carlino
3cf846f870 Include LTN cells in the geojson export. Very slow, but working,
implementation
2022-01-13 17:52:56 +00:00
Dustin Carlino
509217b024 Start a simple GeoJSON export for LTNs. Cells are missing. 2022-01-13 15:37:47 +00:00
Dustin Carlino
412e0d585d Refactor cells -> grid, in preparation to generate cell outlines 2022-01-13 12:56:51 +00:00
Dustin Carlino
c6ec390d0e Pass around NeighborhoodID when switching between states. This
1) will support modifying boundaries and not getting state out-of-sync
2) vastly simplifies switching tabs
2022-01-12 14:55:56 +00:00
Dustin Carlino
cb501933fd Implement LTN undo/redo... and actually just handle undo, for
simplicity, and because repeating an undid (??) action is easy
2022-01-12 14:34:10 +00:00
Dustin Carlino
e0b18d6d07 Organize modal filter code before big changes 2022-01-12 13:55:50 +00:00
Dustin Carlino
6826145de2 Stub out a UI for undo/redo in LTN
(Rebuilding panels at the right time is the bulk of the change here)
2022-01-12 13:47:49 +00:00
Dustin Carlino
7d4a377173 Draw cell borders in different styles -- kind of necessary with the only-one-border schemes. 2022-01-12 13:07:35 +00:00
Dustin Carlino
c6787f0a80 Fix an edge case in the only-one-border LTN heuristic 2022-01-12 12:33:55 +00:00
Dustin Carlino
c024a484e3 Fix too-quick push on last commit, and restore the draw streets toggle broken a few commits ago 2022-01-12 12:25:36 +00:00
Dustin Carlino
30fc96bdd0 An automatic LTN heuristic that closes all but one border 2022-01-12 12:23:20 +00:00
Dustin Carlino
47930e714f Emphasize boundary roads in the browse neighborhood view 2022-01-11 10:35:59 +00:00
Dustin Carlino
5f3bb8897d Draw disconnected cells as red, to shout 'problem' 2022-01-11 10:05:16 +00:00
Dustin Carlino
c3b74d1358 Stop using red as a cell color; it really shouts 'problem' 2022-01-11 10:02:48 +00:00
Dustin Carlino
b28093f2a8 Draw all filters in the browse neighborhood screen 2022-01-11 09:58:23 +00:00
Dustin Carlino
afc9846c1c Try a brute-force search for the best single filter placement. Also not
great.
2022-01-11 09:40:54 +00:00
Dustin Carlino
65899f3a79 First tentative experiments in automatic filter placement -- the greedy
approach
2022-01-11 08:40:56 +00:00
Dustin Carlino
8ff4c41ea1 Some useful debugging / correctness steps towards more robust blockfinding. [rebuild] [release]
I have another branch that handles roads without sidewalks on one side
-- it helps in some cases, but regresses in others, so not merging it
yet. But taking a smaller step and bringing in some stricter common
endpoint logic from there.

Bringing in some useful intermediate changes
2022-01-09 11:07:10 +00:00
Dustin Carlino
e1d88f10ad Detect bad intersection polygons 2022-01-06 11:08:22 +00:00