forked from StrafesNET/roblox-bot-player
lib: simplify Head internals with InterpolateOutput
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user