Skip to main content

ControlFollowTracker

Struct ControlFollowTracker 

Source
pub struct ControlFollowTracker { /* private fields */ }
Expand description

Watches the window after a touch to decide, by outcome, whether the touch was a control touch: did the toucher stay with the ball (close and speed-matched) or earn the follow-up touch? Resolutions are applied retroactively to the already-emitted touch event, mirroring how ball-movement credit is finalized.

At most one window is open at a time: any new touch closes the previous window, so the tracker never accumulates state.

Implementations§

Source§

impl ControlFollowTracker

Source

pub fn window_player(&self) -> Option<&PlayerId>

The player whose follow window is open, so the caller can supply that player’s frame sample to Self::advance.

Source

pub fn open(&mut self, touch_index: usize, player_id: &PlayerId, time: f32)

Open a follow window for a just-emitted touch event. Only call this for touches whose action watches the possession axis (pass/neutral/clear/boom).

Source

pub fn observe_touch( &mut self, player_id: &PlayerId, time: f32, ) -> Option<PossessionResolution>

Resolve any open window against a new touch. A follow-up touch by the same player within the window confirms possession directly (the touch enabled a follow-up) — control if the ball stayed close, advance if it was played into space first; a touch by anyone else, or a late follow-up, closes the window on the stay-close criterion.

Source

pub fn advance( &mut self, frame: &FrameInfo, ball_position: Option<Vec3>, ball_velocity: Option<Vec3>, player_position: Option<Vec3>, player_velocity: Option<Vec3>, ) -> Option<PossessionResolution>

Accumulate one frame of follow data for the open window and resolve it once it ages out. Missing ball or player data counts as uncontrolled time (a demolished toucher is not in control of anything).

Source

pub fn flush(&mut self) -> Option<PossessionResolution>

Close any open window immediately (live-play boundary or end of replay) on the stay-close criterion.

Trait Implementations§

Source§

impl Clone for ControlFollowTracker

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ControlFollowTracker

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ControlFollowTracker

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for ControlFollowTracker

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ControlFollowTracker

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.