Skip to content

Commit 7a480f0

Browse files
committed
let ball_filter forget last ball after time
1 parent 185de1b commit 7a480f0

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

crates/world_state/src/ball_filter.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::time::Duration;
2+
13
use color_eyre::{eyre::OptionExt, Result};
24
use linear_algebra::Vector2;
35
use serde::{Deserialize, Serialize};
@@ -14,6 +16,7 @@ use types::{
1416
#[derive(Deserialize, Serialize)]
1517
pub struct BallFilter {
1618
last_ball_position: Option<BallPosition<Ground>>,
19+
last_ball_time: Option<CycleTime>,
1720
}
1821

1922
#[context]
@@ -36,6 +39,7 @@ impl BallFilter {
3639
pub fn new(_context: CreationContext) -> Result<Self> {
3740
Ok(Self {
3841
last_ball_position: None,
42+
last_ball_time: None,
3943
})
4044
}
4145

@@ -53,9 +57,22 @@ impl BallFilter {
5357
last_seen: context.cycle_time.start_time,
5458
});
5559
self.last_ball_position = ball_position;
60+
self.last_ball_time = Some(*context.cycle_time);
5661
ball_position
5762
}
58-
(None, Some(last_ball_position)) => Some(last_ball_position),
63+
(None, Some(last_ball_position)) => {
64+
if self.last_ball_time.is_some()
65+
&& Duration::from_secs_f32(2.0)
66+
< context
67+
.cycle_time
68+
.start_time
69+
.duration_since(self.last_ball_time.unwrap().start_time)?
70+
{
71+
self.last_ball_position = None;
72+
self.last_ball_time = None;
73+
}
74+
Some(last_ball_position)
75+
}
5976
_ => None,
6077
};
6178

0 commit comments

Comments
 (0)