+ Vec opforce_direction = opposing_force_by_sides(sides);
+
+ solid_apply_force(
+ solid,
+ vec_scala_mult(
+ vec_neg(vec_norm(opforce_direction)),
+ vec_length(
+ vec_sum(
+ rigid_rect->velocity,
+ rigid_rect->movement)) * 8.0f));
+
+ if (fabs(opforce_direction.x) > 1e-6 && (opforce_direction.x < 0.0f) != ((rigid_rect->velocity.x + rigid_rect->movement.x) < 0.0f)) {
+ rigid_rect->velocity.x = 0.0f;
+ rigid_rect->movement.x = 0.0f;
+ }
+
+ if (fabs(opforce_direction.y) > 1e-6 && (opforce_direction.y < 0.0f) != ((rigid_rect->velocity.y + rigid_rect->movement.y) < 0.0f)) {
+ rigid_rect->velocity.y = 0.0f;
+ rigid_rect->movement.y = 0.0f;