fix rounding error when constructing position with negatives
parent
960f4626f9
commit
982de6a910
|
@ -38,8 +38,8 @@ namespace MoonTools.Core.Structs
|
||||||
|
|
||||||
public Position2D(float X, float Y)
|
public Position2D(float X, float Y)
|
||||||
{
|
{
|
||||||
_x = Floor(X);
|
_x = Truncate(X);
|
||||||
_y = Floor(Y);
|
_y = Truncate(Y);
|
||||||
remainder = new Vector2(Remainder(X), Remainder(Y));
|
remainder = new Vector2(Remainder(X), Remainder(Y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +147,11 @@ namespace MoonTools.Core.Structs
|
||||||
return (int)Math.Floor(value);
|
return (int)Math.Floor(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int Truncate(float value)
|
||||||
|
{
|
||||||
|
return (int)Math.Truncate(value);
|
||||||
|
}
|
||||||
|
|
||||||
public override bool Equals(object other)
|
public override bool Equals(object other)
|
||||||
{
|
{
|
||||||
if (other is Position2D otherPosition)
|
if (other is Position2D otherPosition)
|
||||||
|
|
|
@ -8,6 +8,17 @@ namespace Tests
|
||||||
{
|
{
|
||||||
public class Position2DTest
|
public class Position2DTest
|
||||||
{
|
{
|
||||||
|
[Test]
|
||||||
|
public void Negatives()
|
||||||
|
{
|
||||||
|
var position = new Position2D(-3.6f, -4.2f);
|
||||||
|
|
||||||
|
position.X.Should().Be(-3);
|
||||||
|
position.Y.Should().Be(-4);
|
||||||
|
position.ToVector2().X.Should().Be(-3.6f);
|
||||||
|
position.ToVector2().Y.Should().Be(-4.2f);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void PositionVectorAddition()
|
public void PositionVectorAddition()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue