Skip to main content

subtr_actor/stats/analysis_graph/nodes/
gameplay_state.rs

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