- probably use f32, not f64 everywhere... but after Pt2D becomes fixed size
- undo the y inversion hacks at last!
- ezgui passes EventCtx and DrawCtx with appropriate things exposed.
- maybe move glyph ownership out of canvas entirely. dont need RefCell.
- need to pass around a NonDrawCtx very uniformly first for this to work
- canvas owning text-drawing is maybe a bit weird, at least API-wise
- hide stuff inside the ctx's? canvas and prerender shouldnt even be known outside of crate
- generic World with quadtree should have actions on objects
## Editor layer
- plugin APIs are weird
- ambient_event and one event() indicating done or not. dont express blockingness in that API.
- actually, take away Plugin trait entirely? Except for the stuff that gets all boxed up?
- one API for all modes/plugins doesn't make sense maybe. does primary_plugins need to be in PluginCtx at all?
- can we somehow fold PluginsPerMap into PerMapUI? :D different API that doesnt blindly pass in all of primary field
- yes, we just have to change the API of everything in there to take a different PluginCtx that doesnt hand over entire primary.
- Layers could be stackable modal too, but do that later. low-pri.
- RenderOptions shouldnt need cam_zoom and debug_mode
- make sure keys from any mode dont overlap. activation keys in one place?
- stop following + floodfill from lane...
- some plugin state is a bit weird when loading savestates
- rewrite input to understand the 3: context menu, top menu action, or modal things
- misc keys?
- eventually input won't need to check for dupe keys
- escape is used in two places now... but who cares?
- consider the decentralized->monolithic redesign
- could do callbacks that take PluginCtx and that particular plugin. but it becomes awkward to express an action is invalid. write nice imperative code, use control flow.
- decentralized, stuff like showing original roads is tedious. lots of stackable stuff that can be removed.