feat: added trail color easing
This commit is contained in:
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user