|
|
|
|
@@ -138,6 +138,7 @@ impl MouseInterpolator{
|
|
|
|
|
match buffer_state{
|
|
|
|
|
BufferState::Unbuffered=>(),
|
|
|
|
|
BufferState::Initializing(_time,mouse_state)=>{
|
|
|
|
|
println!("{timeout_time} Time out Initializing");
|
|
|
|
|
// only a single mouse move was sent in 10ms, this is very much an edge case!
|
|
|
|
|
self.push_mouse_and_flush_buffer(TimedInstruction{
|
|
|
|
|
time:mouse_state.time,
|
|
|
|
|
@@ -148,6 +149,7 @@ impl MouseInterpolator{
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
BufferState::Buffered(_time,mouse_state)=>{
|
|
|
|
|
println!("{timeout_time} Time out Buffered");
|
|
|
|
|
// duplicate the currently buffered mouse state but at a later (future, from the physics perspective) time
|
|
|
|
|
self.push_mouse_and_flush_buffer(TimedInstruction{
|
|
|
|
|
time:mouse_state.time,
|
|
|
|
|
@@ -157,6 +159,7 @@ impl MouseInterpolator{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fn push_unbuffered_input(&mut self,session_time:SessionTime,physics_time:PhysicsTime,ins:UnbufferedInstruction){
|
|
|
|
|
println!("helo");
|
|
|
|
|
// new input
|
|
|
|
|
// if there is zero instruction buffered, it means the mouse is not moving
|
|
|
|
|
// case 1: unbuffered
|
|
|
|
|
@@ -177,9 +180,11 @@ impl MouseInterpolator{
|
|
|
|
|
let next_mouse_state=MouseState{pos,time:physics_time};
|
|
|
|
|
match buffer_state{
|
|
|
|
|
BufferState::Unbuffered=>{
|
|
|
|
|
println!("{session_time} Unbuffered -> Initializing");
|
|
|
|
|
((None,None),BufferState::Initializing(session_time,next_mouse_state))
|
|
|
|
|
},
|
|
|
|
|
BufferState::Initializing(_time,mouse_state)=>{
|
|
|
|
|
println!("{session_time} Initializing -> Buffered");
|
|
|
|
|
let ins_mouse=TimedInstruction{
|
|
|
|
|
time:mouse_state.time,
|
|
|
|
|
instruction:MouseInstruction::ReplaceMouse{
|
|
|
|
|
@@ -190,6 +195,7 @@ impl MouseInterpolator{
|
|
|
|
|
((Some(ins_mouse),None),BufferState::Buffered(session_time,next_mouse_state))
|
|
|
|
|
},
|
|
|
|
|
BufferState::Buffered(_time,mouse_state)=>{
|
|
|
|
|
println!("{session_time} Buffered");
|
|
|
|
|
let ins_mouse=TimedInstruction{
|
|
|
|
|
time:mouse_state.time,
|
|
|
|
|
instruction:MouseInstruction::SetNextMouse(next_mouse_state.clone()),
|
|
|
|
|
|