forked from StrafesNET/strafe-project
27 lines
548 B
Rust
27 lines
548 B
Rust
|
use crate::integer::Time;
|
||
|
|
||
|
#[derive(Clone,Debug)]
|
||
|
pub struct MouseState{
|
||
|
pub pos:glam::IVec2,
|
||
|
pub time:Time,
|
||
|
}
|
||
|
impl Default for MouseState{
|
||
|
fn default()->Self{
|
||
|
Self{
|
||
|
time:Time::ZERO,
|
||
|
pos:glam::IVec2::ZERO,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
impl MouseState{
|
||
|
pub fn lerp(&self,target:&MouseState,time:Time)->glam::IVec2{
|
||
|
let m0=self.pos.as_i64vec2();
|
||
|
let m1=target.pos.as_i64vec2();
|
||
|
//these are deltas
|
||
|
let t1t=(target.time-time).nanos();
|
||
|
let tt0=(time-self.time).nanos();
|
||
|
let dt=(target.time-self.time).nanos();
|
||
|
((m0*t1t+m1*tt0)/dt).as_ivec2()
|
||
|
}
|
||
|
}
|