const things and code moves
This commit is contained in:
parent
73cd6b74fc
commit
12907fa4a9
@ -170,10 +170,17 @@ pub struct StrafeSettings{
|
|||||||
tick_rate:Ratio64,
|
tick_rate:Ratio64,
|
||||||
}
|
}
|
||||||
impl StrafeSettings{
|
impl StrafeSettings{
|
||||||
|
pub fn tick_velocity(&self,velocity:Planar64Vec3,control_dir:Planar64Vec3)->Option<Planar64Vec3>{
|
||||||
|
let d=velocity.dot(control_dir);
|
||||||
|
match d<self.mv{
|
||||||
|
true=>Some(velocity+control_dir*self.air_accel_limit.map_or(self.mv-d,|limit|limit.min(self.mv-d))),
|
||||||
|
false=>None,
|
||||||
|
}
|
||||||
|
}
|
||||||
pub fn next_tick(&self,time:Time)->Time{
|
pub fn next_tick(&self,time:Time)->Time{
|
||||||
Time::from_nanos(self.tick_rate.rhs_div_int(self.tick_rate.mul_int(time.nanos())+1))
|
Time::from_nanos(self.tick_rate.rhs_div_int(self.tick_rate.mul_int(time.nanos())+1))
|
||||||
}
|
}
|
||||||
pub fn allow_strafe(&self,controls:Controls)->bool{
|
pub const fn allow_strafe(&self,controls:Controls)->bool{
|
||||||
self.enable.activates(controls)
|
self.enable.activates(controls)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,9 +191,12 @@ pub struct PropulsionSettings{
|
|||||||
magnitude:Planar64,
|
magnitude:Planar64,
|
||||||
}
|
}
|
||||||
impl PropulsionSettings{
|
impl PropulsionSettings{
|
||||||
pub fn activates(&self,controls:Controls)->bool{
|
pub const fn activates(&self,controls:Controls)->bool{
|
||||||
self.enable.activates(controls)
|
self.enable.activates(controls)
|
||||||
}
|
}
|
||||||
|
pub fn acceleration(&self,control_dir:Planar64Vec3)->Planar64Vec3{
|
||||||
|
control_dir*self.magnitude
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
@ -91,7 +91,7 @@ const fn gcd(mut a:u64,mut b:u64)->u64{
|
|||||||
};
|
};
|
||||||
a
|
a
|
||||||
}
|
}
|
||||||
#[derive(Clone,Hash)]
|
#[derive(Clone,Copy,Hash)]
|
||||||
pub struct Ratio64{
|
pub struct Ratio64{
|
||||||
num:i64,
|
num:i64,
|
||||||
den:u64,
|
den:u64,
|
||||||
@ -109,15 +109,15 @@ impl Ratio64{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn mul_int(&self,rhs:i64)->i64{
|
pub const fn mul_int(&self,rhs:i64)->i64{
|
||||||
rhs*self.num/(self.den as i64)
|
rhs*self.num/(self.den as i64)
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn rhs_div_int(&self,rhs:i64)->i64{
|
pub const fn rhs_div_int(&self,rhs:i64)->i64{
|
||||||
rhs*(self.den as i64)/self.num
|
rhs*(self.den as i64)/self.num
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn mul_ref(&self,rhs:&Ratio64)->Ratio64{
|
pub const fn mul_ref(&self,rhs:&Ratio64)->Ratio64{
|
||||||
let (num,den)=(self.num*rhs.num,self.den*rhs.den);
|
let (num,den)=(self.num*rhs.num,self.den*rhs.den);
|
||||||
let d=gcd(num.unsigned_abs(),den);
|
let d=gcd(num.unsigned_abs(),den);
|
||||||
Self{
|
Self{
|
||||||
@ -259,7 +259,7 @@ impl std::ops::Div<u64> for Ratio64{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[derive(Clone,Hash)]
|
#[derive(Clone,Copy,Hash)]
|
||||||
pub struct Ratio64Vec2{
|
pub struct Ratio64Vec2{
|
||||||
pub x:Ratio64,
|
pub x:Ratio64,
|
||||||
pub y:Ratio64,
|
pub y:Ratio64,
|
||||||
@ -267,11 +267,11 @@ pub struct Ratio64Vec2{
|
|||||||
impl Ratio64Vec2{
|
impl Ratio64Vec2{
|
||||||
pub const ONE:Self=Self{x:Ratio64::ONE,y:Ratio64::ONE};
|
pub const ONE:Self=Self{x:Ratio64::ONE,y:Ratio64::ONE};
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(x:Ratio64,y:Ratio64)->Self{
|
pub const fn new(x:Ratio64,y:Ratio64)->Self{
|
||||||
Self{x,y}
|
Self{x,y}
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn mul_int(&self,rhs:glam::I64Vec2)->glam::I64Vec2{
|
pub const fn mul_int(&self,rhs:glam::I64Vec2)->glam::I64Vec2{
|
||||||
glam::i64vec2(
|
glam::i64vec2(
|
||||||
self.x.mul_int(rhs.x),
|
self.x.mul_int(rhs.x),
|
||||||
self.y.mul_int(rhs.y),
|
self.y.mul_int(rhs.y),
|
||||||
@ -846,7 +846,7 @@ impl Default for Planar64Mat3{
|
|||||||
}
|
}
|
||||||
impl Planar64Mat3{
|
impl Planar64Mat3{
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn from_cols(x_axis:Planar64Vec3,y_axis:Planar64Vec3,z_axis:Planar64Vec3)->Self{
|
pub const fn from_cols(x_axis:Planar64Vec3,y_axis:Planar64Vec3,z_axis:Planar64Vec3)->Self{
|
||||||
Self{
|
Self{
|
||||||
x_axis,
|
x_axis,
|
||||||
y_axis,
|
y_axis,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user