forked from StrafesNET/strafe-client
time must advance! (2 bugs related to this)
global.mouse.time physics.time
This commit is contained in:
parent
a24f8f5ff1
commit
17331ba609
@ -996,9 +996,11 @@ impl framework::Example for GlobalState {
|
|||||||
//do not step the physics because the mouse polling rate is higher than the physics can run.
|
//do not step the physics because the mouse polling rate is higher than the physics can run.
|
||||||
//essentially the previous input will be overwritten until a true step runs
|
//essentially the previous input will be overwritten until a true step runs
|
||||||
//which is fine because they run all the time.
|
//which is fine because they run all the time.
|
||||||
|
let delta=glam::ivec2(delta.0 as i32,delta.1 as i32);
|
||||||
|
self.mouse.pos+=delta;
|
||||||
self.physics_thread.send(TimedInstruction{
|
self.physics_thread.send(TimedInstruction{
|
||||||
time,
|
time,
|
||||||
instruction:InputInstruction::MoveMouse(glam::ivec2(delta.0 as i32,delta.1 as i32)),
|
instruction:InputInstruction::MoveMouse(self.mouse.pos),
|
||||||
}).unwrap();
|
}).unwrap();
|
||||||
},
|
},
|
||||||
winit::event::DeviceEvent::MouseWheel {
|
winit::event::DeviceEvent::MouseWheel {
|
||||||
@ -1033,12 +1035,14 @@ impl framework::Example for GlobalState {
|
|||||||
queue: &wgpu::Queue,
|
queue: &wgpu::Queue,
|
||||||
_spawner: &framework::Spawner,
|
_spawner: &framework::Spawner,
|
||||||
) {
|
) {
|
||||||
|
//ideally this would be scheduled to execute and finish right before the render.
|
||||||
let time=self.start_time.elapsed().as_nanos() as i64;
|
let time=self.start_time.elapsed().as_nanos() as i64;
|
||||||
|
|
||||||
self.physics_thread.send(TimedInstruction{
|
self.physics_thread.send(TimedInstruction{
|
||||||
time,
|
time,
|
||||||
instruction:InputInstruction::Idle,
|
instruction:InputInstruction::Idle,
|
||||||
}).unwrap();
|
}).unwrap();
|
||||||
|
//update time lol
|
||||||
|
self.mouse.time=time;
|
||||||
|
|
||||||
let mut encoder =
|
let mut encoder =
|
||||||
device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
|
device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
|
||||||
|
@ -1136,14 +1136,14 @@ impl crate::instruction::InstructionEmitter<PhysicsInstruction> for PhysicsState
|
|||||||
impl crate::instruction::InstructionConsumer<PhysicsInstruction> for PhysicsState {
|
impl crate::instruction::InstructionConsumer<PhysicsInstruction> for PhysicsState {
|
||||||
fn process_instruction(&mut self, ins:TimedInstruction<PhysicsInstruction>) {
|
fn process_instruction(&mut self, ins:TimedInstruction<PhysicsInstruction>) {
|
||||||
match &ins.instruction {
|
match &ins.instruction {
|
||||||
PhysicsInstruction::Input(InputInstruction::Idle)|
|
PhysicsInstruction::Input(InputInstruction::Idle)
|
||||||
PhysicsInstruction::StrafeTick => (),
|
|PhysicsInstruction::Input(InputInstruction::MoveMouse(_))
|
||||||
PhysicsInstruction::Input(InputInstruction::MoveMouse(_)) => (),
|
|PhysicsInstruction::StrafeTick => (),
|
||||||
_=>println!("{:?}",ins),
|
_=>println!("{:?}",ins),
|
||||||
}
|
}
|
||||||
//selectively update body
|
//selectively update body
|
||||||
match &ins.instruction {
|
match &ins.instruction {
|
||||||
PhysicsInstruction::Input(InputInstruction::MoveMouse(_)) => (),//dodge time for mouse movement
|
//PhysicsInstruction::Input(InputInstruction::MoveMouse(_)) => (),//dodge time for mouse movement
|
||||||
PhysicsInstruction::Input(_)
|
PhysicsInstruction::Input(_)
|
||||||
|PhysicsInstruction::ReachWalkTargetVelocity
|
|PhysicsInstruction::ReachWalkTargetVelocity
|
||||||
|PhysicsInstruction::CollisionStart(_)
|
|PhysicsInstruction::CollisionStart(_)
|
||||||
|
Loading…
Reference in New Issue
Block a user