applyTouchPhysics method

void applyTouchPhysics(
  1. List<int> visibleParticles,
  2. AccelerationTracker tracker
)

Applies touch physics to visible particles visibleParticles - List of indices of currently visible particles tracker - Acceleration tracker to record accelerated particles

Implementation

void applyTouchPhysics(
  List<int> visibleParticles,
  AccelerationTracker tracker,
) {
  final Offset? touch = touchPoint;
  if (touch == null) return; // Exit if no current touch

  for (final int i in visibleParticles) {
    final Particle p = particles[i];
    // Calculate distance from particle to touch point
    final double distance = (p.position - touch).distance - test;

    // Only affect particles within the interaction distance
    if (distance < lineDistance) {
      const double force = 0.00111; // Strength of the pull effect
      // Calculate pull vector towards touch point
      final Offset pull = (touch - p.position) * force;
      // Apply the pull to particle's velocity
      p.velocity += pull;
      // Mark particle as accelerated for visual feedback
      p.wasAccelerated = true;
      // Record acceleration for efficient shouldRepaint
      tracker.recordAcceleration();
    }
  }
}