+ if ctrl.mov.to_point().length() < 0.1 {
+ self.vel = wall.normal().into();
+ } else {
+ self.vel = ctrl.mov.to_point();
+ }
+ self.vel *= 5.0;
+ self.pos += self.vel * 0.1;
+ self.standing_on = None;
+ } else {
+ self.vel *= 0.9;
+ }
+ },
+ None => {
+ self.vel += lvl.gravity;
+ self.pos += self.vel;
+
+ match ctrl.mov.x {
+ v if v < -0.9 && self.vel.x > -5.0 => { self.vel.x -= 0.5 }
+ v if v > 0.9 && self.vel.x < 5.0 => { self.vel.x += 0.5 }
+ _ => {}
+ }
+
+ if let Intersection(wall, pos) = lvl.intersect_walls(self.pos - self.vel, self.pos) {
+ self.standing_on = Some(wall);
+ self.pos = pos;
+ self.vel = point!(0.0, 0.0);