1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
//! # Jump Action
//!
//! This module provides jumping functionality for kinematic character controllers.
//! It handles jump impulses, air jumping, and platform interaction management.
use Scalar;
use ;
use crate;
/// Action for applying jump impulses to a character.
///
/// This action handles vertical movement through jumping mechanics. It provides:
///
/// * **Ground-based jumping**: Standard jumping that only works when grounded
/// * **Air jumping**: Optional ability to jump while airborne
/// * **External force handling**: Reduces downward forces when jumping for better feel
/// * **Platform interaction**: Temporarily disables platform syncing after jumps
///
/// The jump system sets the Y velocity directly to the jump impulse value,
/// providing consistent jump height regardless of current velocity.
///
/// ## Example
///
/// ```rust
/// use your_crate::actions::JumpAction;
///
/// // Standard ground-only jump
/// let ground_jump = JumpAction::new(500.0);
///
/// // Double jump (can jump in air)
/// let double_jump = JumpAction::new(400.0)
/// .with_allow_in_air(true);
/// ```