solveColorMixing method

void solveColorMixing(
  1. TimeStep step
)

Implementation

void solveColorMixing(TimeStep step) {
  // mixes color between contacting particles
  final colorMixing256 = (256 * colorMixingStrength).toInt();
  for (final contact in contactBuffer) {
    final particleA = contact.particleA;
    final particleB = contact.particleA;
    if ((particleA.flags &
            particleB.flags &
            ParticleType.colorMixingParticle) !=
        0) {
      final colorA = particleA.color;
      final colorB = particleB.color;
      final dr = (colorMixing256 * (colorB.r - colorA.r)) >> 8;
      final dg = (colorMixing256 * (colorB.g - colorA.g)) >> 8;
      final db = (colorMixing256 * (colorB.b - colorA.b)) >> 8;
      final da = (colorMixing256 * (colorB.a - colorA.a)).toInt() >> 8;
      colorA.r += dr;
      colorA.g += dg;
      colorA.b += db;
      colorA.a += da;
      colorB.r -= dr;
      colorB.g -= dg;
      colorB.b -= db;
      colorB.a -= da;
    }
  }
}