1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//! Replay analysis: detect gameplay mechanics, accumulate stats, and export
//! them.
//!
//! This module ties together four layers:
//!
//! - [`analysis_graph`] — the [`AnalysisNode`](analysis_graph::AnalysisNode)
//! dependency DAG that drives everything. Start here for the runtime model.
//! - **Calculators** — the detection logic wrapped by analysis nodes. Each
//! detects one mechanic or maintains one piece of derived state and emits
//! typed events implementing [`StatsEvent`]. They are re-exported at this
//! module's root (the `*Calculator` / `*Event` types in the item list below).
//! - [`accumulators`] — plain structs that fold a calculator's events into
//! running per-player / per-team / per-match totals over the replay.
//! - [`export`] — the report-facing stat-field model: each accumulator
//! implements [`StatFieldProvider`] to publish its
//! values as labeled, unit-tagged [`ExportedStat`]s.
//! - [`timeline`] — assembles per-frame stat timelines for playback UIs.
//!
//! # The calculators
//!
//! Calculators group by what they produce (browse them via the [`StatsEvent`]
//! *Implementors* list, or the `*Calculator` entries in the item list):
//!
//! - **Mechanics** — [`FlickCalculator`], [`HalfFlipCalculator`],
//! [`SpeedFlipCalculator`], [`WavedashCalculator`],
//! [`PowerslideCalculator`], [`FlipImpulseCalculator`],
//! [`DodgeResetCalculator`], [`WallAerialCalculator`],
//! [`WallAerialShotCalculator`], [`CeilingShotCalculator`],
//! [`DoubleTapCalculator`], [`HalfVolleyCalculator`], [`OneTimerCalculator`],
//! [`BallCarryCalculator`] (carries / air dribbles).
//! - **Play & contests** — [`TouchCalculator`], [`PassCalculator`],
//! [`CenterCalculator`], [`KickoffCalculator`], [`BumpCalculator`],
//! [`DemoCalculator`], [`RushCalculator`], [`ControlledPlayCalculator`],
//! [`TerritorialPressureCalculator`], [`WhiffCalculator`],
//! [`FiftyFiftyCalculator`], [`BackboardCalculator`].
//! - **Derived state** — [`PossessionCalculator`],
//! [`PlayerPossessionCalculator`], [`PositioningCalculator`],
//! [`RotationCalculator`], [`MovementCalculator`], [`BoostCalculator`],
//! [`PlayerVerticalStateCalculator`], [`LivePlayTracker`].
//! - **Match-level** — [`MatchStatsCalculator`] and the goal-tag calculators
//! (the `*GoalCalculator` types).
//!
//! See the [stats-runtime guide](crate::guides::calculators_and_analysis_nodes)
//! and the [confidence guide](crate::guides::stat_confidence).
pub
pub
pub use *;
pub use *;
pub use *;
pub use *;