Commit Graph

2905 Commits

Author SHA1 Message Date
Michael Kirk
84b3d87c37 refactor uninted to be builder method, not constructor. it composes better this way 2021-09-10 15:17:15 -07:00
Michael Kirk
a0ea2ba14e use btn_close instead of "X"s 2021-09-10 15:17:15 -07:00
Dustin Carlino
2387975fac Fix crash in road editor when changing speed limit while not selecting any lane. 2021-09-10 14:24:11 -07:00
Dustin Carlino
2598f2a15d Workaround spinners with f64s that wind up with 0.0000001 drift 2021-09-08 08:00:49 -07:00
Dustin Carlino
27a712bcc3 Remove buttons from map_editor map loader -- very slow and not useful 2021-09-07 15:39:55 -07:00
Dustin Carlino
a8645bd9ed Refactor places setting camera from URL 2021-09-07 11:21:56 -07:00
Dustin Carlino
4068986c58 Refactor URLManager -- on errors, always warn 2021-09-07 11:14:31 -07:00
Dustin Carlino
570cd2de84 Make map_editor more web-friendly:
- adjust the panel
- hide some controls on the web
- keep the URL up-to-date with the map and camera
2021-09-07 11:00:27 -07:00
Dustin Carlino
d1e60c888a Handle broken RawMaps, which're more likely to happen in the web
deployment, since I'm not planning to version input data.

As part of this, prepare to lift the PopupMsg helper from map_gui to
widgetry, removing dependencies on AppLike.
2021-09-07 09:41:17 -07:00
Dustin Carlino
b7d010058c Store Movements per Intersection, instead of constantly calculating them! #746
Regenerating everything...
2021-09-06 14:53:37 -07:00
Dustin Carlino
6dcf417cd0 Fix some clippy warnings, and now regenerate everything...
Green Lake sim crashes, not investigating.

[rebuild] [release]
2021-09-05 19:53:10 -07:00
Dustin Carlino
9300470c6b Lane offset comes for free now 2021-09-05 19:53:10 -07:00
Dustin Carlino
442523ae6c Simplify some lane lookups that just needed to find the parent 2021-09-05 19:53:10 -07:00
Dustin Carlino
112bc38e0c Get rid of the now redundant lanes_ltr 2021-09-05 19:53:10 -07:00
Dustin Carlino
4c46510342 Cleaning up a few APIs, now that lanes belong to roads... 2021-09-05 19:53:10 -07:00
Dustin Carlino
0f4a31e915 Moving lanes from a BTreeMap to be stored inlined in their parent Roads. #746
Somewhat invasive API change internal to map_model, but not much impact
elsewhere.

Not regenerating anything yet.
2021-09-05 19:53:10 -07:00
Dustin Carlino
cea0ad2541 Change LaneID to encode (RoadID, offset), still in one u32. #746
Not regenerating yet.
2021-09-05 19:53:10 -07:00
Dustin Carlino
8c2c0e2e65 Start some new RoutingParams for bikes to avoid steep hills and
stressful roads. Initially experiment in the route debugger UI. #743

This is a binary map format change, but temporarily working around
that...
2021-09-05 17:04:54 -07:00
Dustin Carlino
b231ba602f Drag-n-drop for waypoints! #743
Also some drag-n-drop API tweaks:
- Don't require the caller to set `named()`
- Vertical card layout!

Some UX issues:
- deletion button alignment
- horizontal card alignment off
- sync up highlighting between map and cards
- selection state for a waypoint is meaningless
2021-09-03 13:23:17 -07:00
Dustin Carlino
2234c52cc6 Allow routes to be saved in the bike network tool. #743
Some UX clunkiness:
- not allowing custom names yet
- no autosave
- the left/right arrows can silently eat the current route
2021-09-03 12:23:58 -07:00
Dustin Carlino
1c756befa8 Hover on route, to show elevation on line plot. #743
Some messiness, but step forward.
2021-09-01 18:20:48 -07:00
Dustin Carlino
30a114a483 Improve the bike network tool's colors. Always draw the fog-of-war, and
highlight road types better.  #743
2021-09-01 17:07:57 -07:00
Dustin Carlino
e419ad4788 At least a start to the inverse: when hovering on the route, show the position along the elevation line plot. #743 2021-09-01 13:33:37 -07:00
Dustin Carlino
ba6f9f4a14 When hovering on the elevation line plot, show the equivalent position
on the route. #743
2021-09-01 13:18:30 -07:00
Dustin Carlino
d123322d0e Splitting out RouteResults too. #743 2021-09-01 12:10:11 -07:00
Dustin Carlino
470ac4f0a9 Split waypoint input management into its own component. Better
organization, insulates from the upcoming complexity increase for
viewing the route result, and paves the way for using this component in
something like a better tool for spawning a simulation agent to visit
waypoints. #743
2021-09-01 11:50:37 -07:00
Dustin Carlino
0587fa44d7 Fix delete waypoint buttons, broken by previous commit. #743 2021-09-01 11:11:16 -07:00
Dustin Carlino
c5671557de Improve route UI from feedback: click to add waypoints, instead of a button. #743 2021-08-31 12:47:57 -07:00
Dustin Carlino
e2fc59a31a Let the bike network tool's massive bottom right panel be minimized. Specialized an implementation just for this one case, not for Panels in general. 2021-08-30 10:58:16 -07:00
Dustin Carlino
69d965ea3e Use the new drag-drop widget for traffic signal editor stages! 2021-08-30 09:02:00 -07:00
Dustin Carlino
e924e9d7df Simplify the buttons for picking a stage in the traffic signal editor,
in preparation for dragon-drop.

These were using MultiButtons, a widgetry concept kind of redundant with
DrawWithTooltips. I think at some point we had more visual mapping
between the stage icon and the intersection on the map, to help when
synchronizing many intersections. But the functionality remaining today
just looks like clicking one intersection inside the icon, which is
barely noticeable and not helpful, so sacrifice this to proceed.
2021-08-30 08:41:29 -07:00
Dustin Carlino
1c9aaac17f Show drop position on the map while dragging lane cards 2021-08-29 16:40:54 -07:00
Dustin Carlino
7aae626fca Avoid crash in bike network layer when unzooming completely in huge_seattle 2021-08-26 17:13:51 -07:00
Dustin Carlino
8f93ff26b0 נשימת החיים: That skeleton is ready for the world. [rebuild] [release] [mic-drop] 2021-08-26 12:08:47 -07:00
Dustin Carlino
fb35c55cb9 Make quick sketch heuristic less wrong near bus lanes 2021-08-26 12:01:08 -07:00
Dustin Carlino
a5b905992e Ungap tweaks:
- use nonconflicting keybindings for the 3 tabs
- fix the vanishing steep street legend
2021-08-26 11:40:43 -07:00
Dustin Carlino
3a9246e3d0 Use cross-hatch pattern for the 'edit similar roads' tool; the previous color is basically invisible in the new color scheme 2021-08-26 11:28:31 -07:00
Dustin Carlino
deb4a202d9 Retain tab when changing maps 2021-08-26 10:17:08 -07:00
Dustin Carlino
5b7523b2c4 Split ExploreMap to a module 2021-08-26 10:05:43 -07:00
Dustin Carlino
0a03887eab Refactor common event handlers for the 3 modes 2021-08-26 09:56:41 -07:00
Dustin Carlino
57d1cba40c Share the logo / map changer in the 3 modes too 2021-08-26 09:18:13 -07:00
Dustin Carlino
d2afeb05ef Organize the 3 modes a bit more explicitly.
Still need to share the logo / map switcher
2021-08-26 09:07:45 -07:00
Michael Kirk
f7703c0a43 label perf: other cleanup 2021-08-26 08:25:16 -07:00
Michael Kirk
9b527f1904 label perf: cheaper sloppier collision check 2021-08-26 08:25:16 -07:00
Dustin Carlino
0ad93819f7 Strip out some not-yet-ready stuff from the ungap tool:
- share proposal
- magnifying glass
- the "miles of new bike lanes" emphasis

and add:

- contents in the "about" popup
- address/business search
2021-08-26 08:20:41 -07:00
Dustin Carlino
b14d2d2bbf Rebrand the tool, create new launch scripts for the binary release,
clippy.

[rebuild] [release]
(I'm not done just yet, but want to check the launch scripts)
2021-08-25 16:52:43 -07:00
Dustin Carlino
93fb9a274f
Organize bike lane buffer types into a dropdown (#724)
Organize lane types in the editor. All buffer types expressed as a dropdown, and lanes for moving/not moving are grouped.
2021-08-25 14:12:17 -07:00
Dustin Carlino
59f9c443d5 We need to recalculate the road editor fog of war upon edits, since the road width may change 2021-08-25 13:36:05 -07:00
Dustin Carlino
0b8e4d07dd
Road lane width card (#736)
* Show lane width in each lane card

* Stretch lane cards based on lane width, too

* lane sizing: adjust padding only - keep icon size (#738)

* road editor design tweaks (#737)

- regroup sections to avoid undesirable inner rounding
- move panel away from edge
- make tabs more obvious with "shadow" on bottom of unselected tabs

* Recalculate pathfinding before starting the route tool, since we lazily avoid doing that in the other ungap edit modes. This may become unnecessary when the route tool always does Dijkstra's with custom routing params, but we're not there yet, so it crashes currently

* Show lane width in each lane card

* Stretch lane cards based on lane width, too

* lane sizing: adjust padding only - keep icon size

previously when scaling the icons to fit, the size of the cards was
a little less obvious - plus the icons could become illegible.

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>

Co-authored-by: Michael Kirk <michael.code@endoftheworl.de>
2021-08-25 13:35:07 -07:00
Dustin Carlino
25b5ac2037 Recalculate pathfinding before starting the route tool, since we lazily avoid doing that in the other ungap edit modes. This may become unnecessary when the route tool always does Dijkstra's with custom routing params, but we're not there yet, so it crashes currently 2021-08-25 12:31:47 -07:00
Michael Kirk
ae80eb2509
road editor design tweaks (#737)
- regroup sections to avoid undesirable inner rounding
- move panel away from edge
- make tabs more obvious with "shadow" on bottom of unselected tabs
2021-08-25 12:21:05 -07:00
Dustin Carlino
9761373c4b Don't recalculate map hover state in the middle of dragging 2021-08-25 11:47:10 -07:00
Dustin Carlino
718725c671 Fix #731, weird lane swap 2021-08-25 11:26:48 -07:00
Dustin Carlino
c298124dcc
Ditch the outline showing the current road being edited. Instead, focus a cone of light on the road and add fog-of-war to the rest of the map. (#735) 2021-08-25 11:19:49 -07:00
Dustin Carlino
dd27098ca8
Recalculate the hovered lane in the road editor very carefully. Any time (#734)
* Recalculate the hovered lane in the road editor very carefully. Any time
the map is edited, lane IDs change. There were many possible crashes
before.

* Don't deselect lane when clicking in screen-space
2021-08-25 11:16:16 -07:00
Dustin Carlino
f64cd89f26 When no lane is selected, the hotkeys add a new lane. When a lane is selected, those hotkeys modify the current lane. (It's very disorienting to click a lane, hit 'b', and see a new bike lane instead of the modified one. 2021-08-25 10:51:57 -07:00
Dustin Carlino
2443479ad2 Flatten the lane width controls into a single row, now that there's more room 2021-08-25 10:15:51 -07:00
Michael Kirk
f211713235 road editor style changes
1. "drill down" - so attributes applying to the entire road are up top,
   while attributes applying to only a single lane are below.

2. use "tab" metaphor to treat each lane as a tab, showing the lane
   attributes beneath the "active" lane-tab.
2021-08-25 09:58:06 -07:00
Michael Kirk
fc901c3d2f sections should have padding 2021-08-25 09:36:16 -07:00
Michael Kirk
f15a40efd9 Uniform heights for legend items 2021-08-25 09:33:51 -07:00
Dustin Carlino
6c3ce23e5f Use a cross-hatch pattern to show edited roads, instead of that bizarre
cyan.

For the moment, just to simplify things, bake the edited color into the
bike network layer. Probably will split it out later, maybe moving the
proposal management to the legend row.
2021-08-24 15:50:19 -07:00
Dustin Carlino
78222ffadb Preserve the same Layers object through all the states of the ungap tool. Do this by a "new" Transition that's allowed to consume the current state.
Alternatives considered:
- put Layers in the App struct, since it's shared -- but only for the
  ungap tool. It'd be nice to split it into its own standalone crate now,
  but it'll be some work to refactor edit mode out of game.
- put Layers in App session
2021-08-24 14:37:16 -07:00
Dustin Carlino
f5c47d6c8f Make the layers panel only show bike network legend when enabled.
(Steep streets legend still gets lost sometimes)
2021-08-24 13:45:49 -07:00
Dustin Carlino
640489459a Splitting out code for managing the bottom-right panel with all of the layers.
Then we can include it in the quick sketch and route planner tools.
2021-08-24 13:22:58 -07:00
Dustin Carlino
06b74dbe55 Refactor the steep streets layer, add it as an option to the ungap tool.
Code and usability issues accumulating as more things cram into this
view... tackling that next.
2021-08-24 11:52:16 -07:00
Dustin Carlino
bddbe8af99 Followup to #728: highlight lanes on map when hovering on the cards 2021-08-24 10:58:04 -07:00
Dustin Carlino
b5015143cb Small drag-and-drop typo fixes 2021-08-24 10:27:43 -07:00
Michael Kirk
4e93b34ded restore proper shape/size/color/highlights of lane cards 2021-08-24 10:27:43 -07:00
Dustin Carlino
b9b0ac5bb7 Very roughly express the road editor lane cards with DragDrop 2021-08-24 10:27:43 -07:00
Dustin Carlino
d4e19a990e Better default placement of new routing waypoints 2021-08-23 19:21:41 -07:00
Dustin Carlino
b2f30fa192 Add some more metrics for a route, related to safety 2021-08-23 19:02:44 -07:00
Dustin Carlino
7e3802a519 Add elevation details to routing results 2021-08-23 18:02:29 -07:00
Dustin Carlino
a05a4f534c Plug in the routing, with a basic results info panel 2021-08-23 16:44:49 -07:00
Dustin Carlino
8f485667fd Start a new UI for routing. Just managing waypoints 2021-08-23 13:44:21 -07:00
Dustin Carlino
fbd173408e Import new Seattle OSM data with a bunch of fixes around Aurora, and actually disable parking in the Aurora maps
Remove Queen Anne from prebaking -- it trips some crash with waking up
following vehicles that I'm not going to dig into right now.
2021-08-22 19:50:47 -07:00
Dustin Carlino
996a3f30b3 Enable hotkeys for adding a new lane to a road. I don't remember why we weren't doing this before; it's really useful. 2021-08-21 19:23:19 -07:00
Dustin Carlino
790bdc2ef9 Show change to total road width, with disclaimers 2021-08-21 16:57:56 -07:00
Dustin Carlino
047ced16be Improve heuristics for adding buffers to a bike lane 2021-08-21 16:24:26 -07:00
Dustin Carlino
b276178b4b Refactor add_new_lane heuristics, hopefully without changing behavior... 2021-08-21 15:38:54 -07:00
Dustin Carlino
f8a209724c Add some tests for adding a new lane to a road, in preparation to refactor / improve the heuristics. Closes #635 2021-08-21 15:32:14 -07:00
Dustin Carlino
7f9205598a Just split out road editing heuristics, to keep the main module focused on the UI 2021-08-21 15:22:32 -07:00
Dustin Carlino
816e125cbe Refactor some stuff related to unit tests for a road's lanes. #635 2021-08-21 15:17:57 -07:00
Dustin Carlino
657185c035 Fix a road editor crash:
1) click a lane
2) press left/right arrow key to move it
3) don't move the mouse! click

The current selection was never refreshed, but the lane IDs change
2021-08-21 10:44:23 -07:00
Dustin Carlino
ed7cf8515f Make it more obvious the route can be dragged 2021-08-20 15:39:43 -07:00
Dustin Carlino
c08645011d The street name rewriting case I was afraid of has ALREADY turned up,
because of course it has

(and fix rebase)
2021-08-20 15:18:54 -07:00
Dustin Carlino
4ad652fce5 Use SVG to create a text outline for labels 2021-08-20 15:14:41 -07:00
Dustin Carlino
e302100a9a Space out labels more aggressively: no overlapping 2021-08-20 15:14:41 -07:00
Dustin Carlino
28b9702032 Scale text at low zoom 2021-08-20 15:14:41 -07:00
Dustin Carlino
f584603065 Fix label backgrounds when rotated.
And make the labels an optional layer -- at least for temporary
development.
2021-08-20 15:14:41 -07:00
Dustin Carlino
d5a28a745f Shorten road names 2021-08-20 15:13:31 -07:00
Dustin Carlino
b575a0d346 Quick heuristic for spacing labels out a bit 2021-08-20 15:13:31 -07:00
Dustin Carlino
0931b0f245 The absolute mvp of unzoomed road labels 2021-08-20 15:13:31 -07:00
Dustin Carlino
cb2617ce1e UX feedback on the quick-sketch tool:
- name it more clearly
- don't show the "finalize" button until it's possible to use it
2021-08-20 15:12:26 -07:00
Dustin Carlino
c3e35a9a3f Stop accidentally overwriting Seattle collision data in the KML viewer 2021-08-20 12:49:25 -07:00
Michael Kirk
e124f21317
map explorer: add zoom buttons near legend (#726) 2021-08-20 12:47:19 -07:00
Dustin Carlino
cbc5820d4f UX feedback: for the contour layer, less opacity and less bold contour lines 2021-08-20 09:39:05 -07:00
Dustin Carlino
f3a216e935 Toggle bike network layer too in the new tool; we're probably using this
for a workshop presentation mode, and it's not always necessary

And also, remove the 'nearby stuff' layer -- the isochrone is super
broken, and it's unclear how this is supposed to help contextualize.
2021-08-20 09:31:50 -07:00
Dustin Carlino
135e85d06d Force some distance spinners to render in feet 2021-08-19 10:49:10 -07:00
Dustin Carlino
a297937ffa Add a free-form lane width spinner, alongside the dropdown with presets.
Achieves immediate goal of more control, but:
1) it reveals how painfully slow lane editing is!
2) the units are always meters in the spinner, which don't look great
2021-08-19 10:38:19 -07:00
Dustin Carlino
5bd9d1d711 Only enter road editor from zoomed view. It's too easy to accidentally click while unzoomed. 2021-08-18 13:44:17 -07:00
Dustin Carlino
70c6d47c13 Track locally which proposals have been uploaded, to avoid uploading copies of stuff uselessly. Not quite working, but big step forwards. 2021-08-18 10:23:20 -07:00
Dustin Carlino
1285b44668 Highlight road types when hovering on the legend 2021-08-17 10:55:36 -07:00
Dustin Carlino
b5a42ea448 Improve the bike network legend's layout, to show hierarchy 2021-08-17 10:37:19 -07:00
Dustin Carlino
c716dc3b2c Cutover proposal host to the prod appengine one! 2021-08-16 20:49:14 -07:00
Dustin Carlino
3d710afba2 Update the URL for the new bike network tool, including with edits. 2021-08-16 16:30:47 -07:00
Dustin Carlino
90a1d2ff83 Initially launch with edits loaded remotely 2021-08-16 16:00:01 -07:00
Dustin Carlino
090256668e Get the HTTP POST working on wasm too 2021-08-16 14:22:57 -07:00
Dustin Carlino
01fbfd37ae Hook up ungap tool to YIMBYhoodlum, saving proposals.
(Native only, might need some work to get this working on wasm...)
2021-08-16 13:26:49 -07:00
Dustin Carlino
07e738905c Color intersections in the ungap tool, so the coloring looks less
choppy.

Remove the "click to zoom" -- it's too easy to accidentally do this.
2021-08-15 11:05:17 -07:00
Dustin Carlino
5287308f6f Fix broken web build.
- I accidentally enabled something to debug map serialization, which
  broke in wasm -- fast_paths not meant to be serialized there, only
  deserialized.
- makefile for interactive development copied directories slightly wrong

Also picking up a slight UI panel change to the bike network tool from
days ago.

Also probably time to [rebuild] [release]
2021-08-15 09:05:41 -07:00
Dustin Carlino
8101324fa5 Improve heuristics slightly for quick sketching a bike network on roads without parking, but with many lanes. 2021-08-12 10:31:59 -07:00
Dustin Carlino
d392c67c00 Start unit tests for the quick bike sketch tool, to understand how lane transformations work
(And fix bucketize tests, which just haven't been run in a bit)
2021-08-12 09:47:40 -07:00
Dustin Carlino
19134163dc Fix ungap crash -- no need to explain what changed/edited roads are. 2021-08-10 09:20:54 -07:00
Dustin Carlino
207f91a018 Thicken lines in unzoomed view; stop trying to show which side of the road has lanes. 2021-08-08 11:37:23 -07:00
Dustin Carlino
1787611f56 More ergonomic route sketcher:
- still zoom when hovering on points
- more clearly show nodes being dragged
2021-08-08 10:00:44 -07:00
Dustin Carlino
9b4107f061 Track when a map is edited and update things better, in both the game's edit mode and the new tool. 2021-08-08 09:22:32 -07:00
Dustin Carlino
a393f4f66c Merge view/edit mode 2021-08-07 21:33:51 -07:00
Dustin Carlino
b59419ea84 Just rearrange code, in preparation for merging edit mode and the main explore map mode 2021-08-07 10:35:54 -07:00
Dustin Carlino
22dfb616a3 Split the route sketching out to a dedicated state, instead of squishing into edit mode. The dropdown value changing and being able to suddenly open a proposal in the middle doesn't make any sense. 2021-08-07 10:21:18 -07:00
Dustin Carlino
fdea0c8a91 Sort edits better -- untitled's to the back of the line, please 2021-08-07 10:02:49 -07:00
Dustin Carlino
51367088df Adding a 'nearby houses and shops' feature to the bike network tool
Results have major issues, probably going to leave this out of v1.
2021-08-06 20:05:04 -07:00
Dustin Carlino
e9aaeb8675 Load/save edits from new tool 2021-08-06 15:42:35 -07:00
Dustin Carlino
fe4adb9691 A thin veil of mist... 2021-08-06 15:19:20 -07:00
Dustin Carlino
20b8e7f94a Show edits. Regenerate layers on changes. 2021-08-06 14:47:05 -07:00
Dustin Carlino
96c55a067b Magnify while editing. Not feeling skeletal commit messages... 2021-08-06 14:20:03 -07:00
Dustin Carlino
190eaef251 Swap a femur with a tibia. A questionable trade, but I'm calling it
progress.
2021-08-05 18:51:19 -07:00
Dustin Carlino
116198e863 Revive the ability to render in greyscale with the fragment shader, for quicker color scheme tuning... 2021-08-05 15:37:49 -07:00
Dustin Carlino
b080c70d83 Sinew is meant to stretch. 2021-08-05 14:06:11 -07:00
Dustin Carlino
85b46e2dfa Set the default width of a newly added lane better. #597 2021-08-04 16:46:05 -07:00
Dustin Carlino
4bc8421066 There's more than devils in these details 2021-08-04 16:32:26 -07:00
Dustin Carlino
3bddceb275 Skeleton hands can't grasp the tip of tools, but they can refract the
gaze of the living...
2021-08-04 15:56:44 -07:00
Dustin Carlino
78f37e68e9 Broad strokes for fleshless folks 2021-08-04 13:46:34 -07:00
Dustin Carlino
1585eed66f Don't keep jamming the same button for the skeletonvator, that doesn't help 2021-08-04 10:51:31 -07:00
Dustin Carlino
4935ea4fd6 Come take a ride on my skele-skeletonvator
(I am so sorry)
2021-08-03 22:33:06 -07:00
Dustin Carlino
82865b4e08 The skeleton is already feeling conscious about its appearance, so early 2021-08-03 22:08:10 -07:00
Dustin Carlino
46eb26fd5c The skeleton begins to cover some of its bones 2021-08-03 19:23:28 -07:00
Dustin Carlino
a12c894eb5 The skeleton is implored to peek at its innards... (but skeleton bones
aren't polished)
2021-08-03 19:23:28 -07:00
Dustin Carlino
c019304ee3 A skeleton emerges, from whatever sort of place skeletons lurk 2021-08-03 19:23:28 -07:00
Dustin Carlino
e687dd0391 Automatically collapse more degenerate intersections. Manually tested
around the university bridge. Still far to go, but progress.

Not regenerating yet.
2021-08-02 12:06:47 -07:00
Dustin Carlino
314bed3d83 Adjust traffic signal editor icons, since they blended into the new grey scheme. #715 2021-08-01 12:36:37 -07:00
Dustin Carlino
2ae6dea692 Upgrade to rust 1.54, fix new clippy warnings 2021-07-30 09:48:31 -07:00
Dustin Carlino
c98b4f293e Regenerate all maps after last few changes. Split out the actdev scripts to more easily regenerate actdev scenarios. This is necessary if map intersection IDs change, for instance.
Rainier Valley starts crashing in the simulation! Not sure why the
regression happened, disabling for now, will look into it later.
2021-07-29 14:19:46 -07:00
Dustin Carlino
4547395067 Move the cycleway snapping step to happen just before RawMap->Map, so we can play with it in the map_editor. #330 2021-07-27 11:20:57 -07:00
Dustin Carlino
163244ace9 Trim dead-end cycleway and service road stubs. Not regenerating yet, but
spot checked in Tempe and the UDistrict.
2021-07-27 11:13:47 -07:00
Dustin Carlino
de5b7e7d43 Adjust colors and tooltips for multi road editor. #718 2021-07-26 12:59:45 -07:00
Dustin Carlino
9366116c9b Add a location button to the road / multi road editor. #718 2021-07-26 12:50:20 -07:00
Dustin Carlino
c5e769d276 Start a very basic binary classifier for high-stress cycling road, with a layer to check it. Use this to filter the mode shift dashboard -- effectively revealing PCT-esque gaps in the infrastructure. #448, #494 2021-07-26 10:48:00 -07:00
Dustin Carlino
06429d0d5f In the mode shift dashboard, show roads that might be highly used by converted trips... but that're missing bike infrastructure. #448 2021-07-26 10:41:51 -07:00
Dustin Carlino
d03d1b1305
When you change a lane type, also adjust to the default width for the new type. #597 (#714) 2021-07-25 16:05:51 -07:00
Dustin Carlino
0bce76e172 Parallelize commuter pattern calculation, to speed up the new concave hull algorithm on native 2021-07-25 10:20:27 -07:00
Michael Kirk
760d75e12a
Use concave hull for neighborhoods (#716)
Also, for sidewalks, interpolate points every n-meters to get a better
concave hull.
2021-07-25 10:11:12 -07:00
Dustin Carlino
b45f9e0134
Create new lane types to express different types of buffers for prote… (#704)
* Create new lane types to express different types of buffers for protected bike lanes. They're only created manually right now, to explore rendering.

* Update planter rendering

* Update planter - simplify

* fmt after merge

* Fixing up existing rendering

* Add curb buffer

* Adjust stripes

Co-authored-by: Robin Lovelace <rob00x@gmail.com>
2021-07-23 11:31:36 -07:00
Dustin Carlino
c5210e9887 Actually, keep the broken list of ways, to manually run with backtraces 2021-07-20 11:36:53 -07:00
Dustin Carlino
8dff4c5da5 If we fail to merge a road from debug mode, rollback the change to the JSON list of ways to merge. #654 2021-07-20 11:21:38 -07:00
Dustin Carlino
d10d8ceb33 Clean up code and regenerate everything with new the consolidation algorithm... #654
Phinney gridlocks again; 68daa6884a was
too ambitious. Otherwise all fine!
2021-07-19 15:07:10 -07:00
Dustin Carlino
68daa6884a Phinney and Wallingfjord don't gridlock right now, so opt them back into prebaked results 2021-07-18 22:58:22 -07:00
Dustin Carlino
9b40186c9c Avoid crashing when editing a stop sign near a tiny road. #707 [rebuild] [release] 2021-07-18 14:20:24 -07:00
Dustin Carlino
98978fa600 Remember which dashboard was open, and return to it when pressing 'more
data.' This makes it slightly less jarring to click on a specific trip
in a table or matrix, then return to the dashboard. Future work will
also remember filters/pagination of individual tables, maybe! (Since the
dashboards change over time, this might be weird.)

This also required adding a proper way to pick the dashboard from two of
the full-screen map dashboards. Otherwise, somebody would pick them and
get stuck!
2021-07-18 14:14:19 -07:00
Dustin Carlino
f6a94e8a58 Allow DrawWithTooltip to return custom data instead of string labels.
CloneableAny revived from e35c69f6f3
2021-07-18 14:14:19 -07:00
Dustin Carlino
ceff520ff4 Use the unedited map for elevation when viewing before edits. Fixes a crash when turns don't exist. 2021-07-18 14:14:19 -07:00
Dustin Carlino
2354ffa59d Don't make cells with 0 entries clickable 2021-07-18 14:14:19 -07:00
Dustin Carlino
942f2292fc Steps towards clicking cells in the problem matrix to explore trips with differences. #600
- Add optional clickable labels to DrawWithTooltips
- Wire up problem_matrix to remember the list of trips associated with
  each cell
- When clicking a cell, just open one arbitrary example trip
2021-07-18 14:14:19 -07:00
Dustin Carlino
d142b4fbd0 Refactor lots of the places walking along a PolyLine with a step size
Verified no behavioral change using the screenshot test. (Which only had
the driveway diff from b3ce53aa5f)
2021-07-16 14:17:08 -07:00
Dustin Carlino
9828006bcc Avoid a crash when editing very short roads. #703 2021-07-16 12:53:37 -07:00
Dustin Carlino
16f7796c68 Comparing paths before/after edits requires the unedited map.
Previously, this was done through an incredibly complicated dance of
loading the map file again when needed. This was slow (especially on
web!), made the InfoPanel API have a bizarre edge case, and even had
some way of crashing if you open a trip panel in some situation.

Rip all that nonsense out. The unedited map can just be cloned before
applying the first edit.
2021-07-15 23:01:35 -07:00
Dustin Carlino
ff310af3d1 Consistently follow rules for whether a lane can be edited. #597
Allow sidewalks, shoulders, and center turn lanes to be edited now.
Still don't touch service roads or light rail.
2021-07-15 18:21:49 -07:00
Dustin Carlino
b3ce53aa5f Draw building driveways per zoomed-in road, rather than as one map-wide batch. Otherwise, every single edit to road width needs to redraw all driveways. This doesn't scale with larger maps!
When zoomed in on just a building but not its road, this means the driveway won't show up until the road is in view. Acceptable trade-off.
2021-07-15 18:05:04 -07:00
Dustin Carlino
10fdaa8e92 estimate_duration already knows the mode, from the PathRequest 2021-07-14 12:38:19 -07:00
Dustin Carlino
9c3fe9e229 Add filters to the mode shift table. #448 2021-07-14 12:31:54 -07:00
Dustin Carlino
03d21c4fe9 A first mode-shift experiment: create a table of trips showing expected
time to drive/bike, the elevation profile, and the distance. #448
2021-07-14 12:17:03 -07:00
Dustin Carlino
149df630d4 Fix web build -- have to WASM-guard the debug tool that calls the importer 2021-07-13 23:00:45 -07:00
Dustin Carlino
38be4c0f68 Fixing small style/clippy problems and kicking off a [rebuild] [release] 2021-07-13 22:52:56 -07:00
Michael Kirk
7bf3f03251 add y-axis to aggregate duration table 2021-07-13 22:51:18 -07:00
Michael Kirk
43a3f2cdc2 round duration strings to largest unit 2021-07-13 22:51:18 -07:00
Dustin Carlino
14a0e005c8 Make sliders trigger Outcome::Changed, except for scrollbars. Manually
verified this doesn't break or slow down existing uses of sliders.
2021-07-13 12:36:54 -07:00
Dustin Carlino
e20ce2d041 While modifying a scenario, show how many trips match the filter.
(Except not updating the filter when changing sliders yet...)
2021-07-13 10:44:20 -07:00
Dustin Carlino
3d5955c2b6 Hardcode infinite parking option for a few maps. #688
This is an interim option until we decide whether this setting belongs
on the map, the scenario, or something else.
2021-07-13 09:03:07 -07:00
Dustin Carlino
aa5baa57de Get less confused when switching back&forth between two debugged maps 2021-07-11 15:21:59 -07:00
Dustin Carlino
e750048141 Improve intersection merging workflow by hiding popup msg for successful imports #654 2021-07-11 13:41:29 -07:00
Dustin Carlino
2224dccda9 Add a tool in the main UI to try to merge junctions. #654
It maintains a JSON file of ways to merge that the importer also uses.
For maps fast to import, this is the nicest workflow. Unlike map_editor,
turns and trimmed roads can also be checked.
2021-07-11 13:19:00 -07:00
Dustin Carlino
2d16f5d878 Get the crazy pathfinding revamp to work
- initialization order
- reusing node ordering and applying edits

Importing, editing the map, and the basic scenario seem OK! --skip_ch
breaks, because of the lack of serialization
2021-07-10 17:14:10 -07:00
Dustin Carlino
da704b4546 Extend the parking thought bubbles to handle people climbing steep hills.
(And some clippy fixes)
2021-07-10 17:14:10 -07:00
Dustin Carlino
184593094e Also round up the X axis for the elevation plot, and lower the number of
line plot labels by default
2021-07-09 09:23:56 -07:00
Dustin Carlino
2fad01d729 Use a fixed maximum for the Y scale of the elevation profile, based on a
map's max height. This helps compare elevation profiles before/after map
edits.
2021-07-09 09:23:56 -07:00
Dustin Carlino
c5113b868c Let one vehicle attempt to lane-change around another vehicle on every
lane that they're stuck behind them. Only record a risk exposure event
the first time, but let passing happen anywhere. #382

Also add scenario name to PrebakeSummary, to disambiguate the Poundbury
results.
2021-07-07 21:20:06 -07:00
Dustin Carlino
fffd323cb4 Refactor the monstrosity that is App setup 2021-07-07 11:26:55 -07:00
Dustin Carlino
2d1368fe13 Revive some form of the ancient A/B test mode, where two maps can be swapped quickly. Using this for more rapidly testing intersection consolidation algorithms. #654 2021-07-07 10:14:48 -07:00
Dustin Carlino
ed59a8a386 Reimport all actdev scenarios, and restore Poundbury prebaked data. This was temporarily broken by a JSON format change (a-b-street/abstr#29) 2021-07-06 15:29:51 -07:00
Dustin Carlino
964cc23df8 Improve 3-way signal timing by explicitly specifying crosswalks. This
fixes a very dramatic problem in the Green Lake map.

Regenerating everything...

Also added total trip time to the prebaked summary, to get a quick sense
if a change net helps or hurts and have a record in version control.
2021-07-06 14:37:50 -07:00
Dustin Carlino
fe49a093e6 Add a revert button to the road editor. #597 2021-07-06 13:00:11 -07:00
Dustin Carlino
3a53380c46 Don't block after launching JSON viewer. Often I want to find an ID in
the JSON somewhere, then warp to it.
2021-07-06 11:49:44 -07:00
Dustin Carlino
3db4c827b8 Draw building outlines in unzoomed view also. It's a subtle effect, but important in dense areas like Sao Paulo. 2021-07-06 09:53:13 -07:00
Dustin Carlino
f37e71236f Some fixups to the regenerated data from the past two commits:
- handle when the equiv_pos of a driveway gets too close to the edge of
  another lane
- make the updater workflow handle files from S3 that're a bit older
- remove pathfinding_avoiding_roads
- strip out old vehicle capping from map edit JSON, then fix up
  proposals
- delete old capping API example
- temporarily give up on phinney; it starts gridlocking
- add broadmoor proposal link in-game
2021-07-05 17:51:40 -07:00
Dustin Carlino
a0dcc255c3 Rip out all congestion capping code. #325
This collaboration is abandoned, the code slows down refactoring, and
if we started this idea again today, it'd be better to do it from
scratch anyway.

Regenerating everything.
2021-07-05 11:15:31 -07:00
Dustin Carlino
bae86bf885 Add a debug tool to visualize equiv_pos, before trying to improve this for curvy roads. 2021-07-05 10:16:39 -07:00
Dustin Carlino
6039063d28 Add a debug tool to dump JSON for different objects and open up with an external viewer. [rebuild] [release]
And fix some clippy problems
2021-07-04 15:32:49 -07:00
Dustin Carlino
95ffa62218 Fix the unparking position. When we exit a driveway in EITHER direction,
we need to adjust the start position to account for the vehicle's
length.

Also add a very convenient debug tool to understand positions along
lanes.

This probably breaks static blockages; I'll check into that next.
2021-07-04 14:34:20 -07:00
Dustin Carlino
bf316fa99c Fix a crash in the trip info panel. If you happen to open a trip of a
car waiting to spawn, its total path distance is briefly 0.

Also silence the lane-changing info for the moment, until work resumes
there.
2021-07-03 08:28:16 -07:00
Dustin Carlino
160d65ca28 Try loading a built-in proposal with --edits, if player data is missing. 2021-07-02 13:14:08 -07:00
Dustin Carlino
6c1c6a3235 Fix crash when changing speed limit. At some point, we started changing lane IDs for every road edit and never updated this. Closes #685 2021-07-02 11:54:59 -07:00
Dustin Carlino
4fd86c8a41 Entering edit mode is slow on large maps, because clearing the simulation recreates parking state for every building. Parallelize it to speed it up at least a bit. 2021-07-02 11:47:05 -07:00
Dustin Carlino
866ecd5f88 Fix a bug in efaf6085e4 that was using walking paths for vehicles. Now prebaked data doesn't budge.
And add some more timing to demonstrate why editing a single lane in a
huge map is so slow...
2021-07-02 11:25:02 -07:00
Dustin Carlino
f4c8a508da Keep a JSON file with a summary of prebaked simulations, to more easily detect regressions with broken trips. 2021-07-02 10:07:37 -07:00
Dustin Carlino
4f00c8d2bb Phinney runs without gridlock again, so re-enable it. Pretty sure
f57278e9cd fixed it.
2021-06-30 16:51:03 -07:00
Dustin Carlino
efaf6085e4 Prepare for exiting driveways on the off-side by switching to
specialized PathRequest constructors
2021-06-30 12:35:22 -07:00
Dustin Carlino
137e9a0c2c Fix up some places affected by the f64 serialization:
- offstreet_parking_length in importer config
- backwards compatibility for map edits
- fixing up the baked-in proposals
- working around a few PolyLine bugs that happen with the new rounding
- Don't regenerate actdev scenarios yet -- the upstream JSON format is
  out of date, will have to fix separately.
2021-06-30 06:35:42 -07:00
Dustin Carlino
44171500b7 Get the Green Lake map to complete without gridlock!!!
- Allow blocking the box around two complex intersections in Green Lake.
  This makes the vehicle behavior much more realistic there, by visual
  inspection.
- Amp up offstreet parking to 10 per building. I noticed the simulation
  completes easily with --infinite_parking. This is an approximation of
  that. We make really bad guesses about carpooling and the amount of
  parking available around here, so effectively just remove it from
  consideration for now.
2021-06-23 13:56:42 -07:00
Dustin Carlino
8c2b84c37c Keep the trip info panel open when the user clicks before/after and has to initially load the unedited map. #684 2021-06-23 12:52:18 -07:00
Dustin Carlino
9f22d4893a Fix a crash with time-warping to the past when the map is edited. See #684 for an explanation.
Verified working on native. It should also be fine on web -- loading the
unedited map has to be a whole separate state because of web IO in the
first place.
2021-06-23 10:29:10 -07:00
Michael Kirk
321c9d9c40 Label contingency matrix axes 2021-06-23 10:13:51 -07:00
Dustin Carlino
d8cdfaba05 Make the multi-road editor only check and edit lanes_ltr, not speed limit. The Aurora cycletrack edit stopped matching because the speed limit happens to change along Aurora. We can think through a better UX to handle both, but I suspect most use cases will focus on lane configuration. #597 2021-06-20 10:00:05 -07:00
Dustin Carlino
e6e6fb267d Reset current selection after editing multiple roads. This sometimes crashes if the selected lane gets deleted or assigned a new ID. Fixes a crash trying to make the West Green Lake cycletrack. #597 2021-06-20 09:50:33 -07:00
Dustin Carlino
8f199177f5 Upgrade to Rust 1.53
- arrays are now iterable directly
- switch to using BTree{Set,Map}::retain!
- a round of clippy
- regenerate scenarios and prebaked data; not sure why, but there's a
  diff
2021-06-17 23:04:35 -07:00
Rémi Lauzier
1a4b997818 Fix some clippy warnings 2021-06-16 16:21:35 -07:00
Dustin Carlino
d42c1310b0 CLI flag to start in the KML viewer for convenience 2021-06-16 11:14:17 -07:00
Dustin Carlino
01a2dfe215 Create a new panel to show how trips are distributed through the day.
Refactor some of the sliding window code along the way.
2021-06-14 17:32:18 -07:00
Dustin Carlino
d272b745f2 Add a simple Python script to run grid2demand. I need to produce a scenario for Tempe, and it's also useful for #608 2021-06-14 11:00:02 -07:00
Dustin Carlino
96aa09edd0 Small steps towards matching more GMNS signals: #626
- toss a loading screen around it
- allow jump to ID in edit mode
- break down failure types more
2021-06-13 11:59:37 -07:00
Dustin Carlino
59597708ec Draw polylines as arrows in the KML viewer; it's pretty much always useful to see the direction of the raw data 2021-06-13 11:32:02 -07:00
Dustin Carlino
500f14869f Le Fournil special: don't redraw KML text constantly; it was sluggish for signal timing. 2021-06-13 11:26:08 -07:00
Dustin Carlino
76aba75082 Update links to docs after some reorg in the other repo 2021-06-12 13:38:38 -07:00
Dustin Carlino
972f5b0187 Lower the priority of service roads when placing stop signs
Regenerate all data. Wallingford started gridlocking due to this change;
plowing ahead and will follow up and fix it.
2021-06-11 09:40:44 -07:00
Dustin Carlino
18ff0eefc0 Store Turns per Intersection, instead of a massive BTreeMap. #368
Minimal file size savings, but substantial runtime improvement!
2021-06-11 09:40:44 -07:00
Dustin Carlino
cabee219db Fix some crashing spinners; the rust compiler inferred the wrong numeric type. #674 2021-06-10 18:21:24 -07:00
Dustin Carlino
fc4f0a8c8e Some Tempe fixes:
- Stop importing rail in Tempe. Not simulating anything on it yet, and it complicates gridlock. #672
- Update the GMNS timing.csv import based on slight format change. #626
2021-06-09 16:35:46 -07:00
Dustin Carlino
d827673ace Periodically free memory in the middle of screenshot test, to avoid
running out on my current machine. Fixes #671.

Finally regenerate screenshots for the first time in ages... just
blindly accepting everything, because the slightly different screen size
means everything was slightly shifted down.
2021-06-09 14:31:40 -07:00
Dustin Carlino
889c500eb1 Force geojson to use geo-types feature everywhere. This lets different
binaries properly share workspace dependencies.

See
https://www.reddit.com/r/rust/comments/nvd6y7/common_crates_in_cargo_workspace_recompiled_due/
for the full story behind this mess.

I'm going to keep repeating this process until I get game and importer
to share dependencies again.
2021-06-09 09:48:53 -07:00
Dustin Carlino
a38125ad2c Adjust multi road editor more -- custom cursor icons for select/unselect 2021-06-03 15:23:55 -07:00
Dustin Carlino
8721c4f6d9 When the desktop version is old, have a button to go directly to the releases page to grab a new one 2021-06-03 09:14:17 -07:00
Dustin Carlino
bf2e4be2a2 Adjust road editor based on real live coffeeshop feedback:
- "x/y similar segments" to relate to explanatory text about lane
  configurations below
- "edit multiple" -> "apply to multiple", since you have to change the
  road first
- start with all candidates selected
2021-06-03 09:02:12 -07:00
Dustin Carlino
b1150c9524 Export raw CSV data about problems per trip, for a data analyst to explore possible dataviz in their more familiar tools 2021-06-02 19:23:48 -07:00
Dustin Carlino
c9e4f754e1 Fix a crash in the problem map layer, caused by checkboxes getting out of sync 2021-06-02 16:26:04 -07:00
Dustin Carlino
ef4ea01c71 Add a button to import all traffic signals map-wide from a timing.csv file, reporting the total number of successes and failures. #626 2021-06-02 12:18:24 -07:00
Dustin Carlino
d2ecab44a7 Be sure to validate signals before committing the results, since GMNS imports aren't validated upfront. #626 2021-06-02 11:40:54 -07:00
Dustin Carlino
cd66d7209e Automatically fill out crosswalks to the GMNS signal import. #626 2021-06-02 11:13:30 -07:00
Dustin Carlino
dc1ce15c30 Heavily penalize GMNS snapping if the bearing doesn't match the movement. #626
University/Mill looks great now.
2021-05-28 15:56:04 -07:00
Dustin Carlino
30a317cf94 Make the KML viewer be able to inspect multiple overlapping objects. Useful for GMNS timing.csv files. #626 2021-05-28 15:21:07 -07:00
Dustin Carlino
4227371bbe Rewrite the GMNS signal movement snapping algorithm. Instead of
independently picking the best match for "from" and "to", it considers
all vehicle movements, and minimizes "turn_type_cost * (from_cost +
to_cost)", using a hint about turn type to correct for geometry
mismatches at consolidated intersections. #626

Gets better results in Tempe at University and Mill, at least.
2021-05-28 14:55:53 -07:00
Dustin Carlino
5aa00955f9 Clean up the timer.parallelize API, getting rid of the weird enum to
toggle how many CPUs to thrash. We always use all of them, except for
one case, where a separately named method is more clear. Also make that
variation use all but 1 CPU, instead of just half.
2021-05-27 17:47:22 -07:00
Dustin Carlino
53430319b1 Filter out trips between the same place. Regenerate all Britain background scenarios. Fixes #664 2021-05-27 07:57:25 -07:00
Dustin Carlino
455399b90e Collapse degenerate intersections between cycle+footpaths. At various
times in the past, I've also tried doing this for other roads, but wound
up reverting for reasons only git remembers. But it seems like an
obvious win for bike paths; especially around Seattle, the ways are
split because of all of this raised curb data we're ignoring anyway.

Tested manually around Montlake.

Finally regenerating all data... Only Phinney breaks. One for tomorrow.
2021-05-26 22:27:29 -07:00
Dustin Carlino
3a68e5677f Allow all vehicles to use bus-only lanes that also happen to be turn lanes. #555
There are some caveats with the implementation commented inside.
Verified manually in Montlake -- down to just 122 cancelled turns!

Still not regenerating...
2021-05-26 19:13:14 -07:00
Dustin Carlino
e4a95b604e Fix Rainier Valley gridlock, fallout from #664.
https://www.openstreetmap.org/changeset/105381427 mapping a turn lane is
the fix, preventing crazy U-turns using the service road. Not sure how I
missed that lane when looking here before. I made the edit to .osm
locally instead of grabbing fresh data for all of Seattle.
2021-05-26 15:02:20 -07:00
Dustin Carlino
9fc79b1089 Use explicit start/endpoints for trips in scenarios. This is necessary
for people that leave one border, then re-enter a different one. #664

Alternative considered: insert a dummy remote trip between the two
borders. We used to do something like this at non-trivial code
complexity expense and having to explain the trip in the UI.

Regenerated all scenarios and prebaked data.

- Modest file size increase, as expected. Montlake scenario goes from
  1.3MB to 1.5, downtown from 37MB to 43MB, all Seattle scenarios from
  280MB to 327MB
- Eyeballed a few of the previously broken trips; they work now!
- Montlake goes from 3127 cancelled trips to just 302!
- No new gridlock, except in Rainier Valley -- disabling that for now
- I discovered missing validation in Poundbury for no-op trips between
  the same building. I'll filter those out and restore prebaked results
  there in a followup.
2021-05-26 14:30:01 -07:00
Dustin Carlino
3b375078b1 Prebake data until the simulation is done, not just until midnight. That
way, we have trip stats for people starting near the end of the day, and
we stop incorrectly showing failed trips when comparing.

Prebaked data: no change in size (245MB)
Montlake: 3135 "cancelled" trips -> 3127
Lakeslice: 6766 "cancelled" trips -> 6647
2021-05-26 10:22:09 -07:00
Dustin Carlino
c95a0b0f64 Handle another case for creating multiple left/right turns at an intersection. Use the new validation for connectivity at an intersection and give up on using OSM turn restrictions in some cases.
39 problems in Montlake down to 33, but regressions on some of the LCing unit tests...
2021-05-25 20:24:11 -07:00
Michael Kirk
93c56f4ded make clippy happy 2021-05-25 16:06:39 -07:00
Michael Kirk
cba8ba761b update drawn problems when switching before/after 2021-05-25 16:02:26 -07:00
Michael Kirk
11a49e7c55 Add "arterial crossing" risk for pedestrians.
Also:clarify "Complex" vs "Large" intersection, which is now ambiguous.
2021-05-25 16:02:26 -07:00
Dustin Carlino
2f71751929
Add support for tooltips on disabled buttons. Use this to explain a f… (#661)
* Add support for tooltips on disabled buttons. Use this to explain a few pecularities of the road editor UI.

* Consistent tooltip storage
2021-05-24 15:05:32 -07:00