/// <summary>
        /// Add chain point with offset from previous point position.
        /// If not already set, the first point will be offset from (0, 0).
        /// </summary>
        /// <param name="offset">Offset vector</param>
        /// <param name="configurator">Point configurator</param>
        /// <returns>Builder</returns>
        public VerletChainBuilder AddPointWithOffset(Vector2 offset, PointConfiguratorFunc configurator = null)
        {
            Vector2 prevPosition = Vector2.Zero;

            if (points.Count > 0)
            {
                prevPosition = points[^ 1].GlobalPosition;
        /// <summary>
        /// Add chain point at a specific position.
        /// </summary>
        /// <param name="position">Position vector</param>
        /// <param name="configurator">Point configurator</param>
        /// <returns>Builder</returns>
        public VerletChainBuilder AddPointAtPosition(Vector2 position, PointConfiguratorFunc configurator = null)
        {
            var point = world.CreatePoint();

            point.MoveToPosition(position);

            if (points.Count == 0 && pinFirst)
            {
                point.PinToCurrentPosition();
            }
            else if (!drawIntermediatePoints)
            {
                point.Visible = false;
            }

            configurator?.Invoke(point);
            points.Add(point);
            return(this);
        }
 /// <summary>
 /// Add chain point with offset from previous point position.
 /// If not already set, the first point will be offset from (0, 0).
 /// </summary>
 /// <param name="x">X coordinate</param>
 /// <param name="y">Y coordinate</param>
 /// <param name="configurator">Point configurator</param>
 /// <returns>Builder</returns>
 public VerletChainBuilder AddPointWithOffset(float x, float y, PointConfiguratorFunc configurator = null)
 {
     return(AddPointWithOffset(new Vector2(x, y), configurator));
 }
 /// <summary>
 /// Add chain point at a specific position.
 /// </summary>
 /// <param name="x">X coordinate</param>
 /// <param name="y">Y coordinate</param>
 /// <param name="configurator">Point configurator</param>
 /// <returns>Builder</returns>
 public VerletChainBuilder AddPointAtPosition(float x, float y, PointConfiguratorFunc configurator = null)
 {
     return(AddPointAtPosition(new Vector2(x, y), configurator));
 }