feat: added trail color easing
This commit is contained in:
2
Engine
2
Engine
Submodule Engine updated: c11aced8d2...816d6e1846
@@ -11,10 +11,14 @@ namespace Pong.Behaviours;
|
|||||||
public class BallTrail : Behaviour2D, IPostPhysicsUpdate, IDrawableTriangle
|
public class BallTrail : Behaviour2D, IPostPhysicsUpdate, IDrawableTriangle
|
||||||
{
|
{
|
||||||
private float width = 10f;
|
private float width = 10f;
|
||||||
private ColorRGBA colorBase = new ColorRGBA(255, 255, 255);
|
|
||||||
private int trailTickPeriod = 20;
|
|
||||||
private IEasing widthCurve = EaseInCirc.Instance;
|
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();
|
private readonly LinkedList<Vector2D> trailPoints = new();
|
||||||
|
|
||||||
public void PostPhysicsUpdate(float delta)
|
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));
|
Line2D line = new(trailPoints.ElementAt(i), trailPoints.ElementAt(i + 1));
|
||||||
Vector2D perpendicularDirection = line.Direction.Perpendicular();
|
Vector2D perpendicularDirection = line.Direction.Perpendicular();
|
||||||
|
|
||||||
float t = widthCurve.Evaluate(1f - ((float)i / trailPoints.Count));
|
float t = (float)i / trailPoints.Count;
|
||||||
float tPlus = widthCurve.Evaluate(1f - ((float)(i + 1) / trailPoints.Count));
|
float tPlus = (float)(i + 1) / trailPoints.Count;
|
||||||
|
|
||||||
float firstWidth = t * width;
|
float firstWidth = width * widthCurve.Evaluate(1f - t);
|
||||||
float endWidth = tPlus * width;
|
float endWidth = width * widthCurve.Evaluate(1f - tPlus);
|
||||||
|
|
||||||
|
ColorRGBA color = colorBase.Lerp(colorEnd, colorEasing.Evaluate(t));
|
||||||
|
|
||||||
triangleBatch.Draw(
|
triangleBatch.Draw(
|
||||||
new(line.From + perpendicularDirection * firstWidth,
|
new(line.From + perpendicularDirection * firstWidth,
|
||||||
line.From - perpendicularDirection * firstWidth,
|
line.From - perpendicularDirection * firstWidth,
|
||||||
line.To + perpendicularDirection * endWidth),
|
line.To + perpendicularDirection * endWidth),
|
||||||
colorBase
|
color
|
||||||
);
|
);
|
||||||
|
|
||||||
triangleBatch.Draw(
|
triangleBatch.Draw(
|
||||||
new(line.From - perpendicularDirection * firstWidth,
|
new(line.From - perpendicularDirection * firstWidth,
|
||||||
line.To - perpendicularDirection * endWidth,
|
line.To - perpendicularDirection * endWidth,
|
||||||
line.To + perpendicularDirection * endWidth),
|
line.To + perpendicularDirection * endWidth),
|
||||||
colorBase
|
color
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user