Compare commits
2 Commits
delete-rat
...
minterp-bu
| Author | SHA1 | Date | |
|---|---|---|---|
|
e053139ffb
|
|||
|
d343056664
|
@@ -1873,7 +1873,8 @@ fn atomic_input_instruction(state:&mut PhysicsState,data:&PhysicsData,ins:TimedI
|
||||
state.input_state.set_next_mouse(m);
|
||||
},
|
||||
Instruction::Mouse(MouseInstruction::ReplaceMouse{m0,m1})=>{
|
||||
state.camera.move_mouse(m0.pos-state.input_state.mouse.pos);
|
||||
state.camera.move_mouse(state.input_state.mouse_delta());
|
||||
state.camera.move_mouse(m0.pos-state.input_state.next_mouse.pos);
|
||||
state.input_state.replace_mouse(m0,m1);
|
||||
},
|
||||
Instruction::Misc(MiscInstruction::SetSensitivity(sensitivity))=>state.camera.sensitivity=sensitivity,
|
||||
|
||||
@@ -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()),
|
||||
|
||||
@@ -221,6 +221,7 @@ impl InstructionConsumer<Instruction<'_>> for Session{
|
||||
};
|
||||
}
|
||||
|
||||
println!("=== PRE-PROCESS ===");
|
||||
// process any timeouts that occured since the last instruction
|
||||
self.process_exhaustive(ins.time);
|
||||
|
||||
@@ -422,6 +423,7 @@ impl InstructionConsumer<Instruction<'_>> for Session{
|
||||
}
|
||||
};
|
||||
|
||||
println!("=== POST-PROCESS ===");
|
||||
// process all emitted output instructions
|
||||
self.process_exhaustive(ins.time);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user