feat: added trail color easing

This commit is contained in:
2026-03-31 23:32:41 +03:00
parent 14d42ff7dc
commit e9651b7317
2 changed files with 15 additions and 9 deletions

View File

@@ -11,10 +11,14 @@ namespace Pong.Behaviours;
public class BallTrail : Behaviour2D, IPostPhysicsUpdate, IDrawableTriangle
{
private float width = 10f;
private ColorRGBA colorBase = new ColorRGBA(255, 255, 255);
private int trailTickPeriod = 20;
private IEasing widthCurve = EaseInCirc.Instance;
private ColorRGBA colorBase = new ColorRGBA(255, 255, 255, 255);
private ColorRGBA colorEnd = new ColorRGBA(255, 255, 255, 0);
private IEasing colorEasing = EaseOutSine.Instance;
private int trailTickPeriod = 20;
private readonly LinkedList<Vector2D> trailPoints = new();
public void PostPhysicsUpdate(float delta)
@@ -31,24 +35,26 @@ public class BallTrail : Behaviour2D, IPostPhysicsUpdate, IDrawableTriangle
Line2D line = new(trailPoints.ElementAt(i), trailPoints.ElementAt(i + 1));
Vector2D perpendicularDirection = line.Direction.Perpendicular();
float t = widthCurve.Evaluate(1f - ((float)i / trailPoints.Count));
float tPlus = widthCurve.Evaluate(1f - ((float)(i + 1) / trailPoints.Count));
float t = (float)i / trailPoints.Count;
float tPlus = (float)(i + 1) / trailPoints.Count;
float firstWidth = t * width;
float endWidth = tPlus * width;
float firstWidth = width * widthCurve.Evaluate(1f - t);
float endWidth = width * widthCurve.Evaluate(1f - tPlus);
ColorRGBA color = colorBase.Lerp(colorEnd, colorEasing.Evaluate(t));
triangleBatch.Draw(
new(line.From + perpendicularDirection * firstWidth,
line.From - perpendicularDirection * firstWidth,
line.To + perpendicularDirection * endWidth),
colorBase
color
);
triangleBatch.Draw(
new(line.From - perpendicularDirection * firstWidth,
line.To - perpendicularDirection * endWidth,
line.To + perpendicularDirection * endWidth),
colorBase
color
);
}
}