use boxcars;
use crate::*;
#[derive(Debug, Clone)]
pub struct BallSample {
pub rigid_body: boxcars::RigidBody,
}
impl BallSample {
pub fn position(&self) -> glam::Vec3 {
vec_to_glam(&self.rigid_body.location)
}
pub fn velocity(&self) -> glam::Vec3 {
self.rigid_body
.linear_velocity
.as_ref()
.map(vec_to_glam)
.unwrap_or(glam::Vec3::ZERO)
}
}
#[derive(Debug, Clone)]
pub struct PlayerSample {
pub player_id: PlayerId,
pub is_team_0: bool,
pub rigid_body: Option<boxcars::RigidBody>,
pub boost_amount: Option<f32>,
pub last_boost_amount: Option<f32>,
pub boost_active: bool,
pub dodge_active: bool,
pub powerslide_active: bool,
pub match_goals: Option<i32>,
pub match_assists: Option<i32>,
pub match_saves: Option<i32>,
pub match_shots: Option<i32>,
pub match_score: Option<i32>,
}
impl PlayerSample {
pub fn position(&self) -> Option<glam::Vec3> {
self.rigid_body.as_ref().map(|rb| vec_to_glam(&rb.location))
}
pub fn velocity(&self) -> Option<glam::Vec3> {
self.rigid_body
.as_ref()
.and_then(|rb| rb.linear_velocity.as_ref().map(vec_to_glam))
}
pub fn speed(&self) -> Option<f32> {
self.velocity().map(|velocity| velocity.length())
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DemoEventSample {
pub attacker: PlayerId,
pub victim: PlayerId,
}