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
Mikolaj Wielgus
7f46d436af
egui: fix sign of Y displayed on the bottom bar
2024-06-18 02:07:38 +02:00
Mikolaj Wielgus
e15e1efe5e
router: remove observers
...
The observer "pattern", arguably, is an anti-pattern that managed to get
into textbooks. It causes a lot of problems, it was a bad idea to use
it.
2024-06-18 01:37:45 +02:00
Mikolaj Wielgus
d193ea6565
drawing: rename "segbends" to "canes"
...
In addition to a seg and a bend, a segbend actually also contains a dot,
so let's rename it to "cane", which is also easier to translate.
2024-06-18 01:16:12 +02:00