solveColorMixing method
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;
}
}
}