inline void moveImpl(int mDir) { auto speed(crouching ? fc.speedCrouching : fc.speedStanding); auto crSpd(toCr(speed)); auto diff((crSpd * mDir) - body->getVelocity().x); ssvu::clamp(diff, -crSpd, crSpd); body->applyAccel(Vec2f(diff, 0.f)); dir = mDir > 0 ? Dir::Right : Dir::Left; }
inline void jump() { if(isInAir() || crouching) return; body->applyAccel(Vec2f(0.f, -toCr(fc.jumpStrength))); }
inline void stop() { auto diff(0 - body->getVelocity().x); body->applyAccel(Vec2f(diff * 0.9f, 0.f)); }