oxiphysics_softbody/constraint/
collisionconstraint_traits.rs1use crate::particle::SoftParticle;
12use oxiphysics_core::math::Real;
13
14use super::functions::SoftConstraint;
15use super::types::CollisionConstraint;
16
17impl SoftConstraint for CollisionConstraint {
18 fn project(&mut self, particles: &mut [SoftParticle], _dt_sub: Real) {
19 let p = &mut particles[self.particle_index];
20 if p.is_static() {
21 return;
22 }
23 let d = self.normal.dot(&(p.position - self.point_on_plane));
24 if d < 0.0 {
25 p.position -= self.normal * d;
26 }
27 }
28}