public override void Paint(float cx, float cy, ICanvas canvas)
{
// TODO: this method seems to be quite heavy according to the profiler, why?
var scoreRenderer = (ScoreBarRenderer)Renderer;
//
// Note Effects only painted once
//
var effectY = BeamingHelper.Direction == BeamDirection.Up
? scoreRenderer.GetScoreY(MaxNote.Line, 1.5f * NoteHeadGlyph.NoteHeadHeight)
: scoreRenderer.GetScoreY(MinNote.Line, -1.0f * NoteHeadGlyph.NoteHeadHeight);
// TODO: take care of actual glyph height
var effectSpacing = (BeamingHelper.Direction == BeamDirection.Up)
? 7 * Scale
: -7 * Scale;
foreach (var effectKey in BeatEffects)
{
var g = BeatEffects[effectKey];
g.Y = effectY;
g.X = Width / 2;
g.Paint(cx + X, cy + Y, canvas);
effectY += effectSpacing;
}
base.Paint(cx, cy, canvas);
if (_tremoloPicking != null)
{
_tremoloPicking.Paint(cx, cy, canvas);
}
}