Code/General/Vector2Extensions.cs
using ExtendedBox.Maths;
using Sandbox;
using System;

namespace ExtendedBox.General;

public static class Vector2Extensions
{
    public static Vector2 SnapToGrid(this Vector2Int vector, float gridSize, bool sx = true, bool sy = true) =>
        ((Vector2)vector).SnapToGrid(gridSize, sx, sy);


    public static Vector2Int FloorToInt(this Vector2 vector) =>
        new(vector.x.FloorToInt(), vector.y.FloorToInt());

    public static Vector2Int CeilToInt(this Vector2 vector) =>
        new(vector.x.CeilToInt(), vector.y.CeilToInt());

    public static Vector2Int RoundToInt(this Vector2 vector) =>
        new(vector.x.RoundToInt(), vector.y.RoundToInt());

    public static string ToString(this Vector2 vector, string? format)
    {
        return $"{vector.x.ToString(format)},{vector.y.ToString(format)}";
    }

    public static string ToString(this Vector2 vector, string? format, IFormatProvider? formatProvider)
    {
        return $"{vector.x.ToString(format, formatProvider)},{vector.y.ToString(format, formatProvider)}";
    }

    public static string ToString(this Vector2 vector, IFormatProvider? formatProvider)
    {
        return $"{vector.x.ToString(formatProvider)},{vector.y.ToString(formatProvider)}";
    }

    public static string ToString(this Vector2Int vector, string? format)
    {
        return $"{vector.x.ToString(format)},{vector.y.ToString(format)}";
    }

    public static string ToString(this Vector2Int vector, string? format, IFormatProvider? formatProvider)
    {
        return $"{vector.x.ToString(format, formatProvider)},{vector.y.ToString(format, formatProvider)}";
    }

    public static string ToString(this Vector2Int vector, IFormatProvider? formatProvider)
    {
        return $"{vector.x.ToString(formatProvider)},{vector.y.ToString(formatProvider)}";
    }
}