rendering, physics, player and camera WIP
This commit is contained in:
82
src/components/jump.rs
Normal file
82
src/components/jump.rs
Normal file
@@ -0,0 +1,82 @@
|
||||
use glam::Vec3;
|
||||
use kurbo::CubicBez;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct JumpComponent
|
||||
{
|
||||
pub jump_config: JumpConfig,
|
||||
}
|
||||
|
||||
impl JumpComponent
|
||||
{
|
||||
pub fn new() -> Self
|
||||
{
|
||||
Self {
|
||||
jump_config: JumpConfig::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct JumpConfig
|
||||
{
|
||||
pub jump_height: f32,
|
||||
pub jump_duration: f32,
|
||||
pub air_control_force: f32,
|
||||
pub max_air_momentum: f32,
|
||||
pub air_damping_active: f32,
|
||||
pub air_damping_passive: f32,
|
||||
pub jump_curve: CubicBez,
|
||||
pub jump_context: JumpContext,
|
||||
}
|
||||
|
||||
impl Default for JumpConfig
|
||||
{
|
||||
fn default() -> Self
|
||||
{
|
||||
Self {
|
||||
jump_height: 2.0,
|
||||
jump_duration: 0.15,
|
||||
air_control_force: 10.0,
|
||||
max_air_momentum: 8.0,
|
||||
air_damping_active: 0.4,
|
||||
air_damping_passive: 0.9,
|
||||
jump_curve: CubicBez::new(
|
||||
(0.0, 0.0),
|
||||
(0.4, 0.75),
|
||||
(0.7, 0.9),
|
||||
(1.0, 1.0),
|
||||
),
|
||||
jump_context: JumpContext::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Copy)]
|
||||
pub struct JumpContext
|
||||
{
|
||||
pub in_progress: bool,
|
||||
pub duration: f32,
|
||||
pub execution_time: f32,
|
||||
pub origin_height: f32,
|
||||
pub normal: Vec3,
|
||||
}
|
||||
|
||||
impl JumpContext
|
||||
{
|
||||
fn start(time: f32, current_height: f32, surface_normal: Vec3) -> Self
|
||||
{
|
||||
Self {
|
||||
in_progress: false,
|
||||
duration: 0.0,
|
||||
execution_time: time,
|
||||
origin_height: current_height,
|
||||
normal: surface_normal,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn stop(&mut self)
|
||||
{
|
||||
self.in_progress = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user