solveCollision method

void solveCollision(
  1. TimeStep step
)

Implementation

void solveCollision(TimeStep step) {
  final aabb = _temp;
  final lowerBound = aabb.lowerBound;
  final upperBound = aabb.upperBound;
  lowerBound.x = double.maxFinite;
  lowerBound.y = double.maxFinite;
  upperBound.x = -double.maxFinite;
  upperBound.y = -double.maxFinite;
  for (final particle in _particles) {
    final v = particle.velocity;
    final p1 = particle.position;
    final p2x = p1.x + step.dt * v.x;
    final p2y = p1.y + step.dt * v.y;
    final bx = p1.x < p2x ? p1.x : p2x;
    final by = p1.y < p2y ? p1.y : p2y;
    lowerBound.x = lowerBound.x < bx ? lowerBound.x : bx;
    lowerBound.y = lowerBound.y < by ? lowerBound.y : by;
    final b1x = p1.x > p2x ? p1.x : p2x;
    final b1y = p1.y > p2y ? p1.y : p2y;
    upperBound.x = upperBound.x > b1x ? upperBound.x : b1x;
    upperBound.y = upperBound.y > b1y ? upperBound.y : b1y;
  }
  _solveCollisionCallback.step = step;
  _solveCollisionCallback.system = this;
  world.queryAABB(_solveCollisionCallback, aabb);
}