pull instruction types out of physics
This commit is contained in:
parent
a819f93fa9
commit
62a6af9261
@ -3,9 +3,11 @@ pub mod map;
|
|||||||
pub mod run;
|
pub mod run;
|
||||||
pub mod aabb;
|
pub mod aabb;
|
||||||
pub mod model;
|
pub mod model;
|
||||||
|
pub mod mouse;
|
||||||
pub mod timer;
|
pub mod timer;
|
||||||
pub mod zeroes;
|
pub mod zeroes;
|
||||||
pub mod integer;
|
pub mod integer;
|
||||||
|
pub mod physics;
|
||||||
pub mod updatable;
|
pub mod updatable;
|
||||||
pub mod instruction;
|
pub mod instruction;
|
||||||
pub mod gameplay_attributes;
|
pub mod gameplay_attributes;
|
||||||
|
26
src/mouse.rs
Normal file
26
src/mouse.rs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
21
src/physics.rs
Normal file
21
src/physics.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#[derive(Debug)]
|
||||||
|
pub enum Instruction{
|
||||||
|
ReplaceMouse(crate::mouse::MouseState,crate::mouse::MouseState),
|
||||||
|
SetNextMouse(crate::mouse::MouseState),
|
||||||
|
SetMoveRight(bool),
|
||||||
|
SetMoveUp(bool),
|
||||||
|
SetMoveBack(bool),
|
||||||
|
SetMoveLeft(bool),
|
||||||
|
SetMoveDown(bool),
|
||||||
|
SetMoveForward(bool),
|
||||||
|
SetJump(bool),
|
||||||
|
SetZoom(bool),
|
||||||
|
Restart,
|
||||||
|
Spawn(crate::gameplay_modes::ModeId,crate::gameplay_modes::StageId),
|
||||||
|
Idle,
|
||||||
|
//Idle: there were no input events, but the simulation is safe to advance to this timestep
|
||||||
|
//for interpolation / networking / playback reasons, most playback heads will always want
|
||||||
|
//to be 1 instruction ahead to generate the next state for interpolation.
|
||||||
|
PracticeFly,
|
||||||
|
SetSensitivity(crate::integer::Ratio64Vec2),
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user