egui: display both CW and CCW navvertices separately

This commit is contained in:
Mikolaj Wielgus 2024-07-01 21:21:08 +02:00
parent 47c888d21b
commit 3c578ccada
1 changed files with 20 additions and 4 deletions

View File

@ -158,15 +158,31 @@ impl Viewport {
if let Some(execute) = maybe_execute { if let Some(execute) = maybe_execute {
if let Some(navmesh) = execute.maybe_navmesh() { if let Some(navmesh) = execute.maybe_navmesh() {
for edge in navmesh.edge_references() { for edge in navmesh.edge_references() {
let from = PrimitiveIndex::from(navmesh.node_weight(edge.source()).unwrap().node) let mut from = PrimitiveIndex::from(navmesh.node_weight(edge.source()).unwrap().node)
.primitive(board.layout().drawing()) .primitive(board.layout().drawing())
.shape() .shape()
.center(); .center();
let to = PrimitiveIndex::from(navmesh.node_weight(edge.target()).unwrap().node) let mut to = PrimitiveIndex::from(navmesh.node_weight(edge.target()).unwrap().node)
.primitive(board.layout().drawing()) .primitive(board.layout().drawing())
.shape() .shape()
.center(); .center();
if let Some(from_cw) = navmesh.node_weight(edge.source()).unwrap().maybe_cw {
if from_cw {
from -= [0.0, 150.0].into();
} else {
from += [0.0, 150.0].into();
}
}
if let Some(to_cw) = navmesh.node_weight(edge.target()).unwrap().maybe_cw {
if to_cw {
to -= [0.0, 150.0].into();
} else {
to += [0.0, 150.0].into();
}
}
let stroke = 'blk: { let stroke = 'blk: {
if let (Some(source_pos), Some(target_pos)) = ( if let (Some(source_pos), Some(target_pos)) = (
execute.maybe_trace().map(|trace| execute.maybe_trace().map(|trace|
@ -207,14 +223,14 @@ impl Viewport {
painter.paint_dot( painter.paint_dot(
Circle { Circle {
pos: board.layout().drawing().primitive(origin).shape().center(), pos: board.layout().drawing().primitive(origin).shape().center(),
r: 60.0, r: 150.0,
}, },
egui::Color32::from_rgb(255, 255, 100), egui::Color32::from_rgb(255, 255, 100),
); );
painter.paint_dot( painter.paint_dot(
Circle { Circle {
pos: board.layout().drawing().primitive(destination).shape().center(), pos: board.layout().drawing().primitive(destination).shape().center(),
r: 60.0, r: 150.0,
}, },
egui::Color32::from_rgb(255, 255, 100), egui::Color32::from_rgb(255, 255, 100),
); );