Skip to main content

subtr_actor/stats/analysis_graph/nodes/
live_play.rs

1use super::*;
2use crate::stats::calculators::*;
3use crate::*;
4
5pub struct LivePlayNode {
6    tracker: LivePlayTracker,
7    state: LivePlayState,
8}
9
10impl LivePlayNode {
11    pub fn new() -> Self {
12        Self {
13            tracker: LivePlayTracker::default(),
14            state: LivePlayState::default(),
15        }
16    }
17}
18
19impl_analysis_node! {
20    node = LivePlayNode,
21    state = LivePlayState,
22    name = "live_play",
23    dependencies = [
24        AnalysisDependency::required::<FrameInput>(),
25        gameplay_state_dependency(),
26        frame_events_state_dependency(),
27    ],
28    inputs = {
29        frame_input: FrameInput,
30        gameplay: GameplayState,
31        events: FrameEventsState,
32    },
33    evaluate = |node| {
34        node.state = frame_input
35            .live_play_state()
36            .unwrap_or_else(|| node.tracker.state_parts(gameplay, events));
37        Ok(())
38    },
39    state_ref = |node| &node.state,
40}