drawLight method
void
drawLight(
- Canvas canvas,
- Size size
)
override
Implementation
void drawLight(Canvas canvas, Size size) {
canvas.saveLayer(null, Paint()..blendMode = BlendMode.screen);
for (EParticle eParticle in _flameParticleList) {
//make new Color list with new alpha values
List<Color> lightGradientColors = [];
_radialLightGradient.colors.forEach((color) {
lightGradientColors.add(Color.fromARGB(
(color.alpha * (eParticle.radius / eParticle.initRadius))
.toInt(), //smaller particles produce less light => lower alpha
color.red,
color.green,
color.blue));
});
RadialGradient lightGradient =
RadialGradient(colors: lightGradientColors);
Offset eParticlePos =
eParticle.position.getAbsolutePair(size).getOffset();
double absLightRadius = lightRadius.getAbsoluteValue(size);
Rect lightGradientRect =
Rect.fromCircle(center: eParticlePos, radius: absLightRadius);
_lightPaint.shader = lightGradient.createShader(lightGradientRect);
canvas.drawCircle(eParticlePos, absLightRadius, _lightPaint);
}
canvas.restore();
}