style.hitbox

This commit is contained in:
Quaternions 2023-11-15 22:52:51 -08:00
parent ea9c2efc7f
commit 5c2aad268f

View File

@ -327,6 +327,32 @@ struct StrafeSettings{
tick_rate:Ratio64, tick_rate:Ratio64,
} }
struct Hitbox{
halfsize:Planar64Vec3,
mesh:PhysicsMesh,
transform:crate::integer::Planar64Affine3,
normal_transform:Planar64Mat3,
}
impl Hitbox{
fn from_mesh_scale(mesh:PhysicsMesh,scale:Planar64Vec3)->Self{
Self{
halfsize:scale,
mesh,
transform:crate::integer::Planar64Affine3::new(Planar64Mat3::from_diagonal(scale),Planar64Vec3::ZERO),
normal_transform:Planar64Mat3::from_diagonal(scale).inverse().transpose(),
}
}
fn roblox()->Self{
Self::from_mesh_scale(PhysicsMesh::from(&crate::primitives::unit_cylinder()),Planar64Vec3::int(2,5,2)/2)
}
fn source()->Self{
Self::from_mesh_scale(PhysicsMesh::from(&crate::primitives::unit_cube()),Planar64Vec3::raw(33<<28,73<<28,33<<28)/2)
}
fn transformed_mesh(&self)->TransformedMesh{
TransformedMesh::new(&self.mesh,&self.transform,&self.normal_transform)
}
}
struct StyleModifiers{ struct StyleModifiers{
controls_used:u32,//controls which are allowed to pass into gameplay controls_used:u32,//controls which are allowed to pass into gameplay
controls_mask:u32,//controls which are masked from control state (e.g. jump in scroll style) controls_mask:u32,//controls which are masked from control state (e.g. jump in scroll style)
@ -346,7 +372,7 @@ struct StyleModifiers{
surf_slope:Option<Planar64>, surf_slope:Option<Planar64>,
rocket_force:Option<Planar64>, rocket_force:Option<Planar64>,
gravity:Planar64Vec3, gravity:Planar64Vec3,
hitbox_halfsize:Planar64Vec3, hitbox:Hitbox,
camera_offset:Planar64Vec3, camera_offset:Planar64Vec3,
} }
impl std::default::Default for StyleModifiers{ impl std::default::Default for StyleModifiers{
@ -368,14 +394,14 @@ impl StyleModifiers{
const UP_DIR:Planar64Vec3=Planar64Vec3::Y; const UP_DIR:Planar64Vec3=Planar64Vec3::Y;
const FORWARD_DIR:Planar64Vec3=Planar64Vec3::NEG_Z; const FORWARD_DIR:Planar64Vec3=Planar64Vec3::NEG_Z;
fn new()->Self{ fn neo()->Self{
Self{ Self{
controls_used:!0, controls_used:!0,
controls_mask:!0,//&!(Self::CONTROL_MOVEUP|Self::CONTROL_MOVEDOWN), controls_mask:!0,//&!(Self::CONTROL_MOVEUP|Self::CONTROL_MOVEDOWN),
strafe:Some(StrafeSettings{ strafe:Some(StrafeSettings{
enable:EnableStrafe::Always, enable:EnableStrafe::Always,
air_accel_limit:None, air_accel_limit:None,
tick_rate:Ratio64::new(128,Time::ONE_SECOND.nanos() as u64).unwrap(), tick_rate:Ratio64::new(64,Time::ONE_SECOND.nanos() as u64).unwrap(),
}), }),
jump_impulse:JumpImpulse::FromEnergy(Planar64::int(512)), jump_impulse:JumpImpulse::FromEnergy(Planar64::int(512)),
jump_calculation:JumpCalculation::Energy, jump_calculation:JumpCalculation::Energy,
@ -383,7 +409,7 @@ impl StyleModifiers{
static_friction:Planar64::int(2), static_friction:Planar64::int(2),
kinetic_friction:Planar64::int(3),//unrealistic: kinetic friction is typically lower than static kinetic_friction:Planar64::int(3),//unrealistic: kinetic friction is typically lower than static
mass:Planar64::int(1), mass:Planar64::int(1),
mv:Planar64::int(2), mv:Planar64::int(3),
rocket_force:None, rocket_force:None,
walk_speed:Planar64::int(16), walk_speed:Planar64::int(16),
walk_accel:Planar64::int(80), walk_accel:Planar64::int(80),
@ -392,7 +418,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(), ladder_dot:(Planar64::int(1)/2).sqrt(),
swim_speed:Planar64::int(12), swim_speed:Planar64::int(12),
surf_slope:Some(Planar64::raw(7)/8), surf_slope:Some(Planar64::raw(7)/8),
hitbox_halfsize:Planar64Vec3::int(2,5,2)/2, hitbox:Hitbox::roblox(),
camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2 camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2
} }
} }
@ -421,7 +447,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(), ladder_dot:(Planar64::int(1)/2).sqrt(),
swim_speed:Planar64::int(12), swim_speed:Planar64::int(12),
surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75 surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75
hitbox_halfsize:Planar64Vec3::int(2,5,2)/2, hitbox:Hitbox::roblox(),
camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2 camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2
} }
} }
@ -449,7 +475,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(), ladder_dot:(Planar64::int(1)/2).sqrt(),
swim_speed:Planar64::int(12), swim_speed:Planar64::int(12),
surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75 surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75
hitbox_halfsize:Planar64Vec3::int(2,5,2)/2, hitbox:Hitbox::roblox(),
camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2 camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2
} }
} }
@ -478,7 +504,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(),//? ladder_dot:(Planar64::int(1)/2).sqrt(),//?
swim_speed:Planar64::int(12),//? swim_speed:Planar64::int(12),//?
surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75 surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75
hitbox_halfsize:Planar64Vec3::raw(33<<28,73<<28,33<<28)/2, hitbox:Hitbox::source(),
camera_offset:Planar64Vec3::raw(0,(64<<28)-(73<<27),0), camera_offset:Planar64Vec3::raw(0,(64<<28)-(73<<27),0),
} }
} }
@ -506,7 +532,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(),//? ladder_dot:(Planar64::int(1)/2).sqrt(),//?
swim_speed:Planar64::int(12),//? swim_speed:Planar64::int(12),//?
surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75 surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75
hitbox_halfsize:Planar64Vec3::raw(33<<28,73<<28,33<<28)/2, hitbox:Hitbox::source(),
camera_offset:Planar64Vec3::raw(0,(64<<28)-(73<<27),0), camera_offset:Planar64Vec3::raw(0,(64<<28)-(73<<27),0),
} }
} }
@ -530,7 +556,7 @@ impl StyleModifiers{
ladder_dot:(Planar64::int(1)/2).sqrt(), ladder_dot:(Planar64::int(1)/2).sqrt(),
swim_speed:Planar64::int(12), swim_speed:Planar64::int(12),
surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75 surf_slope:Some(Planar64::raw(3787805118)),// normal.y=0.75
hitbox_halfsize:Planar64Vec3::int(2,5,2)/2, hitbox:Hitbox::roblox(),
camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2 camera_offset:Planar64Vec3::int(0,2,0),//4.5-2.5=2
} }
} }