lib: simplify Head internals with InterpolateOutput

This commit is contained in:
2026-03-06 09:25:33 -08:00
parent 7ce2ca8b0a
commit 006a70a18b

View File

@@ -113,29 +113,15 @@ impl PlaybackHead{
}
pub fn get_position_angles(&self,bot:&CompleteBot,time:SessionTime)->(glam::Vec3,glam::Vec2){
let interp=self.interpolate_output(bot,time);
let p0=vector3_to_glam(&interp.event0.position)-bot.world_offset();
let p1=vector3_to_glam(&interp.event1.position)-bot.world_offset();
// let v0=vector3_to_glam(&event0.event.velocity);
// let v1=vector3_to_glam(&event1.event.velocity);
// let a0=vector3_to_glam(&event0.event.acceleration);
// let a1=vector3_to_glam(&event1.event.acceleration);
let p=p0.lerp(p1,interp.t);
// let v=v0.lerp(v1,t);
// let a=a0.lerp(a1,t);
//println!("position={:?}",p);
let p=interp.position();
let a=interp.angles();
let angles0=vector3_to_glam(&interp.event0.angles);
let angles1=vector3_to_glam(&interp.event1.angles);
let angles=angles0.lerp(angles1,interp.t);
(p+CompleteBot::CAMERA_OFFSET,angles.yx())
(p-bot.world_offset()+CompleteBot::CAMERA_OFFSET,a)
}
pub fn get_velocity(&self,bot:&CompleteBot,time:SessionTime)->glam::Vec3{
let interp=self.interpolate_output(bot,time);
let v0=vector3_to_glam(&interp.event0.velocity);
let v1=vector3_to_glam(&interp.event1.velocity);
v0.lerp(v1,interp.t)
interp.velocity()
}
}
@@ -144,3 +130,20 @@ struct InterpolateOutput<'a>{
event1:&'a strafesnet_roblox_bot_file::v0::OutputEvent,
t:f32,
}
impl InterpolateOutput<'_>{
fn position(&self)->glam::Vec3{
let p0=vector3_to_glam(&self.event0.position);
let p1=vector3_to_glam(&self.event1.position);
p0.lerp(p1,self.t)
}
fn velocity(&self)->glam::Vec3{
let v0=vector3_to_glam(&self.event0.velocity);
let v1=vector3_to_glam(&self.event1.velocity);
v0.lerp(v1,self.t)
}
fn angles(&self)->glam::Vec2{
let a0=vector3_to_glam(&self.event0.angles);
let a1=vector3_to_glam(&self.event1.angles);
a0.lerp(a1,self.t).yx()
}
}