Fix SnapToGrid to skip when grid component is 0

This commit is contained in:
Wojtek Figat
2025-01-30 17:26:34 +01:00
parent fc98b5f1f0
commit 4057dc189d
4 changed files with 20 additions and 10 deletions

View File

@@ -1263,8 +1263,10 @@ namespace FlaxEngine
/// <returns>The position snapped to the grid.</returns>
public static Double2 SnapToGrid(Double2 pos, Double2 gridSize)
{
pos.X = Mathd.Ceil((pos.X - (gridSize.X * 0.5)) / gridSize.Y) * gridSize.X;
pos.Y = Mathd.Ceil((pos.Y - (gridSize.Y * 0.5)) / gridSize.X) * gridSize.Y;
if (Mathd.Abs(gridSize.X) > Mathd.Epsilon)
pos.X = Mathd.Ceil((pos.X - (gridSize.X * 0.5)) / gridSize.Y) * gridSize.X;
if (Mathd.Abs(gridSize.Y) > Mathd.Epsilon)
pos.Y = Mathd.Ceil((pos.Y - (gridSize.Y * 0.5)) / gridSize.X) * gridSize.Y;
return pos;
}

View File

@@ -1544,9 +1544,12 @@ namespace FlaxEngine
/// <returns>The position snapped to the grid.</returns>
public static Double3 SnapToGrid(Double3 pos, Double3 gridSize)
{
pos.X = Mathd.Ceil((pos.X - (gridSize.X * 0.5)) / gridSize.X) * gridSize.X;
pos.Y = Mathd.Ceil((pos.Y - (gridSize.Y * 0.5)) / gridSize.Y) * gridSize.Y;
pos.Z = Mathd.Ceil((pos.Z - (gridSize.Z * 0.5)) / gridSize.Z) * gridSize.Z;
if (Mathd.Abs(gridSize.X) > Mathd.Epsilon)
pos.X = Mathd.Ceil((pos.X - (gridSize.X * 0.5)) / gridSize.X) * gridSize.X;
if (Mathd.Abs(gridSize.Y) > Mathd.Epsilon)
pos.Y = Mathd.Ceil((pos.Y - (gridSize.Y * 0.5)) / gridSize.Y) * gridSize.Y;
if (Mathd.Abs(gridSize.Z) > Mathd.Epsilon)
pos.Z = Mathd.Ceil((pos.Z - (gridSize.Z * 0.5)) / gridSize.Z) * gridSize.Z;
return pos;
}

View File

@@ -1291,8 +1291,10 @@ namespace FlaxEngine
/// <returns>The position snapped to the grid.</returns>
public static Float2 SnapToGrid(Float2 pos, Float2 gridSize)
{
pos.X = Mathf.Ceil((pos.X - (gridSize.X * 0.5f)) / gridSize.X) * gridSize.X;
pos.Y = Mathf.Ceil((pos.Y - (gridSize.Y * 0.5f)) / gridSize.Y) * gridSize.Y;
if (Mathf.Abs(gridSize.X) > Mathf.Epsilon)
pos.X = Mathf.Ceil((pos.X - (gridSize.X * 0.5f)) / gridSize.X) * gridSize.X;
if (Mathf.Abs(gridSize.Y) > Mathf.Epsilon)
pos.Y = Mathf.Ceil((pos.Y - (gridSize.Y * 0.5f)) / gridSize.Y) * gridSize.Y;
return pos;
}

View File

@@ -1528,9 +1528,12 @@ namespace FlaxEngine
/// <returns>The position snapped to the grid.</returns>
public static Float3 SnapToGrid(Float3 pos, Float3 gridSize)
{
pos.X = Mathf.Ceil((pos.X - (gridSize.X * 0.5f)) / gridSize.X) * gridSize.X;
pos.Y = Mathf.Ceil((pos.Y - (gridSize.Y * 0.5f)) / gridSize.Y) * gridSize.Y;
pos.Z = Mathf.Ceil((pos.Z - (gridSize.Z * 0.5f)) / gridSize.Z) * gridSize.Z;
if (Mathf.Abs(gridSize.X) > Mathf.Epsilon)
pos.X = Mathf.Ceil((pos.X - (gridSize.X * 0.5f)) / gridSize.X) * gridSize.X;
if (Mathf.Abs(gridSize.Y) > Mathf.Epsilon)
pos.Y = Mathf.Ceil((pos.Y - (gridSize.Y * 0.5f)) / gridSize.Y) * gridSize.Y;
if (Mathf.Abs(gridSize.Z) > Mathf.Epsilon)
pos.Z = Mathf.Ceil((pos.Z - (gridSize.Z * 0.5f)) / gridSize.Z) * gridSize.Z;
return pos;
}