mirror of
https://github.com/oliverbooth/VpSharp
synced 2024-11-09 23:35:41 +00:00
Fix object query
VP's calculation for coordinate -> cell was not quite floor(n)
This commit is contained in:
parent
26766389ad
commit
0563e45511
@ -119,6 +119,21 @@ public readonly struct Cell : IEquatable<Cell>, IFormattable
|
||||
return FromVector3d(vector);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calculates the cell number for a specified coordinate value.
|
||||
/// </summary>
|
||||
/// <param name="value">The coordinate value.</param>
|
||||
/// <returns>The cell number.</returns>
|
||||
/// <remarks>
|
||||
/// The way VP calculates cell number isn't a <c>floor(n)</c> as one might have thought, but instead
|
||||
/// <c>n < 0 ? (int)value - 1 : (int)value</c>. This helper method exists because of this idiosyncrasy of the world
|
||||
/// server.
|
||||
/// </remarks>
|
||||
public static int CellFromCoordinate(double value)
|
||||
{
|
||||
return value < 0 ? (int)value - 1 : (int)value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts an instance of <see cref="Vector2" /> to a new instance of <see cref="Cell" />.
|
||||
/// </summary>
|
||||
|
@ -51,12 +51,7 @@ public readonly struct Location : IEquatable<Location>
|
||||
/// </summary>
|
||||
public Cell Cell
|
||||
{
|
||||
get
|
||||
{
|
||||
var x = (int)Math.Floor(Position.X);
|
||||
var z = (int)Math.Floor(Position.Z);
|
||||
return new Cell(x, z);
|
||||
}
|
||||
get => new(Cell.CellFromCoordinate(Position.X), Cell.CellFromCoordinate(Position.Z));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user