Commit Graph

1003 Commits

Author SHA1 Message Date
Szpachlarz e706134ed0 cli: create basic cli application
it is possible to load design and history,
 not yet possible to export results.
2024-07-07 12:05:53 +02:00
Mikolaj Wielgus 2368feded1 egui: fix saving history files 2024-07-06 15:02:59 +02:00
Mikolaj Wielgus 3a7e504c29 egui: implement loading history in WASM 2024-07-06 00:08:35 +02:00
Mikolaj Wielgus 0745604658 egui: put sender and receiver in wrapper objects 2024-07-05 18:02:54 +02:00
Mikolaj Wielgus e9ba5cd9b3 specctra: move file opening code outside, operate on `BufRead` instead 2024-07-04 23:55:58 +02:00
Mikolaj Wielgus fd23be7a8a router: step on successful probes 2024-07-04 13:52:26 +02:00
Mikolaj Wielgus b48ce70aad egui: add timer to control update frequency 2024-07-04 01:02:40 +02:00
Mikolaj Wielgus def3f84d6a egui,autorouter,router: highlight current obstacle 2024-07-04 00:39:08 +02:00
Mikolaj Wielgus b6cb89c017 egui,autorouter,router: display infringement shapes (aka. "ghosts") 2024-07-03 21:00:50 +02:00
Mikolaj Wielgus 727eb37c6e router: have probing and visiting as separate states
This feels overengineered, but I need something like this for better
debuginfo.
2024-07-03 18:12:07 +02:00
Mikolaj Wielgus 806742736a cleanup: get rid of `*Trait` names for traits, use verbs and sentences 2024-07-03 13:40:37 +02:00
Mikolaj Wielgus b1f60847b3 drawing: move head length measurement methods to new refstruct 2024-07-03 03:37:14 +02:00
Mikolaj Wielgus 3c03b2dfa1 geometry: create `MeasureLength` trait to measure lengths 2024-07-02 23:33:29 +02:00
Mikolaj Wielgus 27d1c9e712 router: step on every probe, not only navvertices 2024-07-02 02:36:42 +02:00
Mikolaj Wielgus 3c578ccada egui: display both CW and CCW navvertices separately 2024-07-01 21:21:08 +02:00
Mikolaj Wielgus 47c888d21b egui,autorouter,router: restore highlighting active navmesh edges 2024-07-01 18:56:41 +02:00
Mikolaj Wielgus 03f996721d egui: restore drawing yellow dots at routing source and target 2024-07-01 14:09:17 +02:00
Mikolaj Wielgus edf81feccc egui: restore highlighting selected node shapes 2024-07-01 12:12:27 +02:00
Mikolaj Wielgus 2259a75d92 egui,autorouter: restore displaying navmesh 2024-07-01 00:50:24 +02:00
Mikolaj Wielgus ee6eeac6d8 egui: step through every band routing step, once per frame
At last! We finally have that implemented without concurrency.
2024-06-29 22:40:06 +02:00
Mikolaj Wielgus 6cadcd3b41 egui: remove most of usages of shared-state parallelism 2024-06-29 17:11:29 +02:00
Mikolaj Wielgus fd5a95103d autorouter: step through every band routing step, not merely over bands 2024-06-29 03:07:20 +02:00
Mikolaj Wielgus ea991314b2 board: remove `.remove_band()` method 2024-06-28 19:35:25 +02:00
Mikolaj Wielgus 00b997b60e egui: fix compilation error -- import `Trace` from trace, not tracer 2024-06-28 17:15:52 +02:00
Mikolaj Wielgus da1438195a router: create new `Router` object, a wrapper over `Layout` 2024-06-28 14:46:15 +02:00
Mikolaj Wielgus 244367c4d7 router: rename `Router` to `Route`
`Router`, soon to be written, will be a wrapper over `Board`.
2024-06-28 01:12:37 +02:00
Mikolaj Wielgus 4fa97509e4 router: split out `Trace` to its own file and give it its own methods
We'll be following this pattern:
* `Autorouter` - `Autoroute`,
* `Router` - `Route` (not yet done),
* `Tracer` - `Trace`.

Agent nouns (ending with -er) denote the object that holds large and
"unportable" parts of the state (such as `Board`, `Layout`, `Drawing`,
`Geometry`), while verbs (ending with -e) denote holders of other, more
"portable" parts of the state.
2024-06-27 23:58:02 +02:00
Mikolaj Wielgus 664bbee0b9 router: make `Astar` own the navmesh 2024-06-27 21:24:49 +02:00
Mikolaj Wielgus 0b3ebdbe3c router: make it possible for `Astar` to own its graph
We aren't using this yet however because it requires a substantial
rearrangement of `Router`'s code.
2024-06-27 15:07:58 +02:00
Mikolaj Wielgus 0419904b3f router: re-encapsulate graph in `Navmesh` and vertices in `VertexIndex`
As in previous commit, this was done in the past, but I removed it when
improving `Navmesh` to hold each navvertex instead of calculating tem
during access.
2024-06-26 22:34:59 +02:00
Mikolaj Wielgus 5254f768e5 router: implement (again) graph traversal traits for `Navmesh`
These were implemented in the past, but I removed it when I made
`Navmesh` store each navvertex instead of calculating tem on the fly.
2024-06-26 20:27:29 +02:00
Mikolaj Wielgus 114329a1ef router: don't store `&'a mut Layout` in `Router`
First step towards removing multithreading in code in favor of stepping
over the routing process.
2024-06-26 13:39:57 +02:00
Mikolaj Wielgus 43d84dc29e router: restore calculation of probe length (was temp. hardcoded to 0.0) 2024-06-26 00:47:16 +02:00
Mikolaj Wielgus 3fe305b99a sdl2-demo: fix compilation errors 2024-06-25 15:31:21 +02:00
Mikolaj Wielgus b6cfcc8518 router: don't panic if wraparound navvertex has no cw
This may happen if target's guidecircle is in line of sight but its
center is not.
2024-06-25 15:00:15 +02:00
Mikolaj Wielgus 3ce8cfcabc autorouter: fix redo operation
Redone operation was only dispatched, not truly executed.
2024-06-25 11:20:59 +02:00
Mikolaj Wielgus 514eab683a egui: fix painting bends: circles of these are actually inner circles
I've changed field names to avoid repeating this mistake in the future.
2024-06-25 10:47:49 +02:00
Mikolaj Wielgus bd26f5fef8 layout: fix via placement contract for number of nodes 2024-06-25 00:40:53 +02:00
Mikolaj Wielgus e2552a156b egui: use smaller via size 2024-06-25 00:40:32 +02:00
Mikolaj Wielgus b35e6fc66a egui: fix painted bend direction 2024-06-25 00:40:06 +02:00
Mikolaj Wielgus 1706d5ae8c drawing: add invariant contract for pairwise non-infringement of looses 2024-06-24 16:36:05 +02:00
Mikolaj Wielgus c3fe91aabe drawing: split finding infringers into multiple methods 2024-06-24 13:55:46 +02:00
Mikolaj Wielgus 0777b781f4 router: have two navvertices, CW and CCW, for each trianvertex 2024-06-22 17:33:11 +02:00
Mikolaj Wielgus d34554f075 egui: fix selecting nodes whose bboxes overlap other bboxes 2024-06-21 07:11:41 +02:00
Mikolaj Wielgus 169ddf7d80 egui: add button to toggle showing navmesh 2024-06-20 19:33:18 +02:00
Mikolaj Wielgus 5161eecd49 egui: don't clear navmesh after routing is done 2024-06-20 18:55:57 +02:00
Mikolaj Wielgus 4540f5c96b router: impl. forgotten addition of edges to navmesh 2024-06-20 18:50:50 +02:00
Mikolaj Wielgus c24d748bea autorouter: don't save in history until command is successfully finished 2024-06-20 12:14:51 +02:00
Mikolaj Wielgus ae2a862e0e router: store every vertex (fails tests but almost functional)
Previously, rail vertices were not stored but generated on demand from
data stored in a `Triangulation<...>`. This functionality is removed in
favor of storing every vertex in `Navmesh`'s own graph built from the
`Triangulation<...>`, which is now afterwards discarded.

Tests still fail and rails aren't added yet, but this is close enough to
completion for me to commit so that I can now go to sleep without
worrying.
2024-06-20 01:32:27 +02:00
Mikolaj Wielgus d4a310a5c0 graph: disambiguate naming of different kinds of indices
Disambiguate between node indices and (teir inner) petgraph indices.
Rename "band index" to "band first seg index", as we identify bands by
teir first segs. Rename "trianvertex index" and "navvertex index"
respectively to "trianvertex node index" and "navvertex node index", as
these point to nodes on the geometry graph and only indirectly to
vertices on the vertex graph.
2024-06-18 15:30:33 +02:00