applyTouchPhysics method
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();
}
}
}