Skip to main content

subtr_actor/stats/analysis_graph/nodes/
ball_frame_state.rs

1use super::*;
2use crate::stats::calculators::*;
3use crate::*;
4
5/// Exposes per-frame ball state (position/velocity) extracted from raw frame input.
6pub struct BallFrameStateNode {
7    state: BallFrameState,
8}
9
10impl BallFrameStateNode {
11    pub fn new() -> Self {
12        Self {
13            state: BallFrameState::default(),
14        }
15    }
16}
17
18impl_analysis_node! {
19    node = BallFrameStateNode,
20    state = BallFrameState,
21    name = "ball_frame_state",
22    dependencies = [AnalysisDependency::required::<FrameInput>()],
23    inputs = { frame_input: FrameInput },
24    evaluate = |node| {
25        node.state = frame_input.ball_frame_state();
26        Ok(())
27    },
28    state_ref = |node| &node.state,
29}