This commit is contained in:
Quaternions 2023-09-07 20:02:41 -07:00
parent 9428929a99
commit b75046601e

View File

@ -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)
} }