forked from StrafesNET/strafe-client
relabel
This commit is contained in:
parent
9428929a99
commit
b75046601e
12
src/body.rs
12
src/body.rs
@ -1,12 +1,12 @@
|
|||||||
pub struct Body {
|
pub struct Body {
|
||||||
pub position: glam::Vec3,//I64 where 2^32 = 1 u
|
pub position: glam::Vec3,//I64 where 2^32 = 1 u
|
||||||
pub velocity: glam::Vec3,//I64 where 2^32 = 1 u/s
|
pub velocity: glam::Vec3,//I64 where 2^32 = 1 u/s
|
||||||
pub time: TIMESTAMP,//nanoseconds x xxxxD!
|
pub time: TIME,//nanoseconds x xxxxD!
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct PhysicsState {
|
pub struct PhysicsState {
|
||||||
pub body: Body,
|
pub body: Body,
|
||||||
pub time: i64,
|
pub time: TIME,
|
||||||
pub tick: u32,
|
pub tick: u32,
|
||||||
pub gravity: glam::Vec3,
|
pub gravity: glam::Vec3,
|
||||||
pub friction: f32,
|
pub friction: f32,
|
||||||
@ -15,12 +15,12 @@ pub struct PhysicsState {
|
|||||||
pub walkspeed: f32,
|
pub walkspeed: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type TIMESTAMP = i64;
|
pub type TIME = i64;
|
||||||
|
|
||||||
const CONTROL_JUMP:u32 = 0b01000000;//temp
|
const CONTROL_JUMP:u32 = 0b01000000;//temp
|
||||||
impl PhysicsState {
|
impl PhysicsState {
|
||||||
//delete this, we are tickless gamers
|
//delete this, we are tickless gamers
|
||||||
pub fn run(&mut self, time: TIMESTAMP, control_dir: glam::Vec3, controls: u32){
|
pub fn run(&mut self, time: TIME, control_dir: glam::Vec3, controls: u32){
|
||||||
let target_tick = (time/10_000_000) as u32;//100t
|
let target_tick = (time/10_000_000) as u32;//100t
|
||||||
//the game code can run for 1 month before running out of ticks
|
//the game code can run for 1 month before running out of ticks
|
||||||
while self.tick<target_tick {
|
while self.tick<target_tick {
|
||||||
@ -53,11 +53,11 @@ impl PhysicsState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.body.time=target_tick as TIMESTAMP*10_000_000;
|
self.body.time=target_tick as TIME*10_000_000;
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete this
|
//delete this
|
||||||
pub fn extrapolate_position(&self, time: TIMESTAMP) -> glam::Vec3 {
|
pub fn extrapolate_position(&self, time: TIME) -> glam::Vec3 {
|
||||||
let dt=(time-self.body.time) as f64/1_000_000_000f64;
|
let dt=(time-self.body.time) as f64/1_000_000_000f64;
|
||||||
self.body.position+self.body.velocity*(dt as f32)+self.gravity*((0.5*dt*dt) as f32)
|
self.body.position+self.body.velocity*(dt as f32)+self.gravity*((0.5*dt*dt) as f32)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user