by squeezing some start-up performance of huge maps. #746
Shaving at least 1 second off quadtree initialization in huge_seattle
from this, no noticeable effects otherwise.
Previously, the undirected graph search would switch sides sporadically.
Now it sticks to one side.
Now we probably just need an option to also include the other direction,
to avoid having to sketch over Aurora twice.
Let the map be panned even when we're snapped to an intersection.
Previously it's super obnoxious to start drawing a route in a huge map.
Also I'd love to switch to the new World API and stop with this ad-hoc
logic, but slightly confused about how to do that here...
Also add a reset button, otherwise I just switch tabs to force a reset,
which is silly.
lots in one big batch, instead of after every single command.
A batch of 300 edited road segments in huge_seattle went from over 70
seconds to apply down to... 0.6 seconds. Embarrassing.
lakeslice gridlocks, because a traffic signal marked on a footway near
23rd and Judkins gets assigned to an alleyway. Worth fixing later.
And wallingford crashes the sim; I think more lane-changing bugs
exposed. It's kind of freeing to not worry about maintaining the
simulation right now...
The pattern is somewhat similar to how different components share a
Panel. The "outer-most" piece owns the World, calls into InputWaypoints
to fill out the World, and plumbs un-handled events to it.
Also handle a tricky low-level bug with ctx.normal_left_click() and
detecting drags vs clicks.
Now finally there's no buggy conflicts between dragging waypoints and
hovering on the alternate routes!
This one is the most complicated, and it's still not done, but it's not
any buggier than the ad-hoc implementation. I still need to figure out
how to merge the two worlds of waypoints and routes.
This one also required a large, but mechanical, refactor to lift
ToggleZoomed and the concept of unzoomed/zoomed from map_gui to
widgetry.
- Procedurally generate houses there, so the automatic travel demand
model doesn't produce totally silly patterns.
- Disable parking
- Allow vehicles to enter the intersection even when it looks like they
might get stuck; this lets the default scenario complete without
gridlock.
- Prebake the scenario, so a researcher can make edits and use all of
the A/B testing data viz.
The home-to-work scenario produces laughably bogus patterns... everyone
working at Bank Sepah.