mirror of
https://github.com/a-b-street/abstreet.git
synced 2024-12-25 23:43:25 +03:00
add some logging to debug #19
This commit is contained in:
parent
dc2cc81249
commit
ed2f703e85
@ -330,6 +330,8 @@ impl<'a> Timer<'a> {
|
|||||||
for (idx, req) in requests.into_iter().enumerate() {
|
for (idx, req) in requests.into_iter().enumerate() {
|
||||||
let tx = tx.clone();
|
let tx = tx.clone();
|
||||||
scope.execute(move || {
|
scope.execute(move || {
|
||||||
|
// TODO Can we catch panics here, dump a better stacktrace? ezgui runner does
|
||||||
|
// this
|
||||||
tx.send((idx, cb(req))).unwrap();
|
tx.send((idx, cb(req))).unwrap();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -298,6 +298,11 @@ pub fn spawn_agents_around(i: IntersectionID, ui: &mut UI, ctx: &EventCtx) {
|
|||||||
let sim = &mut ui.primary.sim;
|
let sim = &mut ui.primary.sim;
|
||||||
let mut rng = ui.primary.current_flags.sim_flags.make_rng();
|
let mut rng = ui.primary.current_flags.sim_flags.make_rng();
|
||||||
|
|
||||||
|
let mut timer = Timer::new(format!(
|
||||||
|
"spawning agents around {} (rng seed {:?})",
|
||||||
|
i, ui.primary.current_flags.sim_flags.rng_seed
|
||||||
|
));
|
||||||
|
|
||||||
for l in &map.get_i(i).incoming_lanes {
|
for l in &map.get_i(i).incoming_lanes {
|
||||||
let lane = map.get_l(*l);
|
let lane = map.get_l(*l);
|
||||||
if lane.is_driving() || lane.is_biking() {
|
if lane.is_driving() || lane.is_biking() {
|
||||||
@ -348,7 +353,7 @@ pub fn spawn_agents_around(i: IntersectionID, ui: &mut UI, ctx: &EventCtx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sim.spawn_all_trips(map, &mut Timer::throwaway(), false);
|
sim.spawn_all_trips(map, &mut timer, false);
|
||||||
sim.step(map, SMALL_DT);
|
sim.step(map, SMALL_DT);
|
||||||
ui.recalculate_current_selection(ctx);
|
ui.recalculate_current_selection(ctx);
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
use fast_paths::{NodeId, ShortestPath};
|
use fast_paths::{NodeId, ShortestPath};
|
||||||
use serde::{Deserialize, Deserializer, Serialize};
|
use serde::{Deserialize, Deserializer, Serialize};
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
use std::fmt::Debug;
|
||||||
|
|
||||||
// TODO Upstream this in fast_paths when this is more solid.
|
// TODO Upstream this in fast_paths when this is more solid.
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
pub struct NodeMap<T: Copy + Ord + Serialize> {
|
pub struct NodeMap<T: Copy + Ord + Debug + Serialize> {
|
||||||
#[serde(skip_serializing)]
|
#[serde(skip_serializing)]
|
||||||
node_to_id: BTreeMap<T, NodeId>,
|
node_to_id: BTreeMap<T, NodeId>,
|
||||||
id_to_node: Vec<T>,
|
id_to_node: Vec<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Copy + Ord + Serialize> NodeMap<T> {
|
impl<T: Copy + Ord + Debug + Serialize> NodeMap<T> {
|
||||||
pub fn new() -> NodeMap<T> {
|
pub fn new() -> NodeMap<T> {
|
||||||
NodeMap {
|
NodeMap {
|
||||||
node_to_id: BTreeMap::new(),
|
node_to_id: BTreeMap::new(),
|
||||||
@ -29,7 +30,11 @@ impl<T: Copy + Ord + Serialize> NodeMap<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(&self, node: T) -> NodeId {
|
pub fn get(&self, node: T) -> NodeId {
|
||||||
self.node_to_id[&node]
|
if let Some(id) = self.node_to_id.get(&node) {
|
||||||
|
*id
|
||||||
|
} else {
|
||||||
|
panic!("{:?} not in NodeMap", node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn translate(&self, path: &ShortestPath) -> Vec<T> {
|
pub fn translate(&self, path: &ShortestPath) -> Vec<T> {
|
||||||
@ -44,7 +49,7 @@ impl<T: Copy + Ord + Serialize> NodeMap<T> {
|
|||||||
pub fn deserialize_nodemap<
|
pub fn deserialize_nodemap<
|
||||||
'de,
|
'de,
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
T: Deserialize<'de> + Copy + Ord + Serialize,
|
T: Deserialize<'de> + Copy + Ord + Debug + Serialize,
|
||||||
>(
|
>(
|
||||||
d: D,
|
d: D,
|
||||||
) -> Result<NodeMap<T>, D::Error> {
|
) -> Result<NodeMap<T>, D::Error> {
|
||||||
|
@ -17,7 +17,7 @@ pub struct SidewalkPathfinder {
|
|||||||
path_calc: ThreadLocal<RefCell<PathCalculator>>,
|
path_calc: ThreadLocal<RefCell<PathCalculator>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
|
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, Serialize, Deserialize)]
|
||||||
enum Node {
|
enum Node {
|
||||||
// false is src_i, true is dst_i
|
// false is src_i, true is dst_i
|
||||||
SidewalkEndpoint(LaneID, bool),
|
SidewalkEndpoint(LaneID, bool),
|
||||||
|
Loading…
Reference in New Issue
Block a user