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
use alga::general::Real;
use integration::Integrator;
use object::RigidBody;
pub struct BodyDamping<N: Real> {
linear_damping: N,
angular_damping: N
}
impl<N: Real> BodyDamping<N> {
#[inline]
pub fn new(linear_damping: N, angular_damping: N) -> BodyDamping<N> {
BodyDamping {
linear_damping: linear_damping,
angular_damping: angular_damping,
}
}
}
impl<N: Real> Integrator<N, RigidBody<N>> for BodyDamping<N> {
fn update(&mut self, _: N, rb: &mut RigidBody<N>) {
let new_lin = rb.lin_vel() * self.linear_damping;
rb.set_lin_vel_internal(new_lin);
let new_ang = rb.ang_vel() * self.angular_damping;
rb.set_ang_vel_internal(new_ang);
}
}