Class WrappedWorldPosition3i
Represents wrapped world position which doesn't require any further conversions. It prevents multiple checks everywhere for position to be actually wrapped or multiple conversions for same data.
Comparing to WorldPosition3i it isn't packed, so doesn't require extra packing/unpacking operations and also readonly what allows to apply some optimizations and makes it thread-safe.
This is limited in Y along with XZ wrapping, if you are looking for Position without y limitation use WrappedPosition3i
Inheritance
System.Object
WrappedWorldPosition3i
Assembly: Eco.Shared.dll
Syntax
public sealed class WrappedWorldPosition3i : ValueType, IWrappedPosition3<int>, IPosition3<int>
Properties
HasBoundedY
Declaration
public bool HasBoundedY { get; }
Property Value
Type |
Description |
System.Boolean |
|
Space
Declaration
public ref readonly WrappedSpace Space { get; }
Property Value
X
Declaration
Property Value
Type |
Description |
System.Int32 |
|
Y
Declaration
Property Value
Type |
Description |
System.Int32 |
|
Z
Declaration
Property Value
Type |
Description |
System.Int32 |
|
Methods
AddX(Int32)
Adds x
to X component and returns new value. The value should be not less than -WrappedVoxelSize.X.
Declaration
public WrappedWorldPosition3i AddX(int x)
Parameters
Type |
Name |
Description |
System.Int32 |
x |
|
Returns
AddYUnchecked(WrappedWorldPosition3i, Int32)
Adds y
to wrapped
and returns value. In result of that operation it may produce invalid WrappedWorldPosition3i with Y out of world grid bounds.
Only use it if you sure result of that operation won't overflow Y bounds if you want to skip checks for optimization purposes!
Declaration
public static WrappedWorldPosition3i AddYUnchecked(WrappedWorldPosition3i wrapped, int y)
Parameters
Returns
AddZ(Int32)
Adds z
to Z component and returns new value. The value should be not less than -WrappedVoxelSize.Z.
Declaration
public WrappedWorldPosition3i AddZ(int z)
Parameters
Type |
Name |
Description |
System.Int32 |
z |
|
Returns
Clamp(WrappedPosition3i)
Clumps wrapped
position in Y space. If Y less 0 then it will be 0, if Y greater or equal to World Space Y then it will be World Space Y - 1.
Declaration
public static WrappedWorldPosition3i Clamp(WrappedPosition3i wrapped)
Parameters
Returns
Create(Int32, Int32, Int32)
Declaration
public static WrappedWorldPosition3i Create(int x, int y, int z)
Parameters
Type |
Name |
Description |
System.Int32 |
x |
|
System.Int32 |
y |
|
System.Int32 |
z |
|
Returns
Create(Single, Single, Single)
Declaration
public static WrappedWorldPosition3i Create(float x, float y, float z)
Parameters
Type |
Name |
Description |
System.Single |
x |
|
System.Single |
y |
|
System.Single |
z |
|
Returns
Equals(WrappedWorldPosition3i)
Declaration
public bool Equals(WrappedWorldPosition3i other)
Parameters
Returns
Type |
Description |
System.Boolean |
|
Equals(Object)
Declaration
public override bool Equals(object obj)
Parameters
Type |
Name |
Description |
System.Object |
obj |
|
Returns
Type |
Description |
System.Boolean |
|
Full26Neighbors(Boolean)
Returns all orthogonal and diagonal neighbors by X, Y, Z axes. It won't return Y axis neighbors if they out of bounds (bellow zero or above MaxY) and wrap X, Z neighbors (if they crossing zero coordinate).
Declaration
public IEnumerable<WrappedWorldPosition3i> Full26Neighbors(bool includeSelf = true)
Parameters
Type |
Name |
Description |
System.Boolean |
includeSelf |
|
Returns
GetHashCode()
Declaration
public override int GetHashCode()
Returns
Type |
Description |
System.Int32 |
|
ToString()
Declaration
public override string ToString()
Returns
Type |
Description |
System.String |
|
TryAdd(Vector3i, out WrappedWorldPosition3i)
Declaration
public bool TryAdd(Vector3i delta, out WrappedWorldPosition3i result)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryCreate(Vector3i, out WrappedWorldPosition3i)
Declaration
public static bool TryCreate(Vector3i worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryCreate(WrappedPosition3i, out WrappedWorldPosition3i)
Declaration
public static bool TryCreate(WrappedPosition3i worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryCreate(Int32, Int32, Int32, out WrappedWorldPosition3i)
Declaration
public static bool TryCreate(int x, int y, int z, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryCreate(Vector3, out WrappedWorldPosition3i)
Declaration
public static bool TryCreate(Vector3 worldPos, out WrappedWorldPosition3i wrappedWorldPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryDecreaseY(Int32, out WrappedWorldPosition3i)
Declaration
public bool TryDecreaseY(int decrement, out WrappedWorldPosition3i decreasedPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryGetNeighbor(Direction, out WrappedWorldPosition3i)
Returns neighbor world position for dir
if possible. It may return false
for invalid dir
value or if Y will go out of world bounds.
Declaration
public bool TryGetNeighbor(Direction dir, out WrappedWorldPosition3i neighborPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryGetSides(Axis, out WrappedWorldPosition3i, out WrappedWorldPosition3i)
If possible, returns two positions using passed axis. It may be impossible if it will be outside of world by Y coor.
Declaration
public bool TryGetSides(Axis axis, out WrappedWorldPosition3i side1, out WrappedWorldPosition3i side2)
Parameters
Returns
Type |
Description |
System.Boolean |
|
TryIncreaseY(Int32, out WrappedWorldPosition3i)
Declaration
public bool TryIncreaseY(int increment, out WrappedWorldPosition3i increasedPos)
Parameters
Returns
Type |
Description |
System.Boolean |
|
XYZNeighbors()
Returns all orthogonal neighbors by X, Y, Z axes. It won't return Y axis neighbors if they out of bounds (bellow zero or above MaxY) and wrap X, Z neighbors (if they crossing zero coordinate).
Declaration
public IEnumerable<WrappedWorldPosition3i> XYZNeighbors()
Returns
XYZNeighborsWithDirection()
Returns all orthogonal neighbors by X, Y, Z axes. It won't return Y axis neighbors if they out of bounds (bellow zero or above MaxY) and wrap X, Z neighbors (if they crossing zero coordinate).
Declaration
public IEnumerable<(WrappedWorldPosition3i, Direction)> XYZNeighborsWithDirection()
Returns
Operators
Equality(WrappedWorldPosition3i, WrappedWorldPosition3i)
Declaration
public static bool operator ==(WrappedWorldPosition3i left, WrappedWorldPosition3i right)
Parameters
Returns
Type |
Description |
System.Boolean |
|
Explicit(WorldPosition3i to WrappedWorldPosition3i)
Declaration
public static explicit operator WrappedWorldPosition3i(WorldPosition3i pos)
Parameters
Returns
Explicit(WrappedPosition3i to WrappedWorldPosition3i)
Declaration
public static explicit operator WrappedWorldPosition3i(WrappedPosition3i pos)
Parameters
Returns
Explicit(WrappedWorldPosition3i to Vector3i)
Declaration
public static explicit operator Vector3i(WrappedWorldPosition3i pos)
Parameters
Returns
Explicit(WrappedWorldPosition3i to WorldPosition3i)
Declaration
public static explicit operator WorldPosition3i(WrappedWorldPosition3i pos)
Parameters
Returns
Explicit(WrappedWorldPosition3i to Vector3)
Declaration
public static explicit operator Vector3(WrappedWorldPosition3i pos)
Parameters
Returns
Type |
Description |
System.Numerics.Vector3 |
|
Explicit(Vector3 to WrappedWorldPosition3i)
Declaration
public static explicit operator WrappedWorldPosition3i(Vector3 pos)
Parameters
Type |
Name |
Description |
System.Numerics.Vector3 |
pos |
|
Returns
Implicit(Vector3i to WrappedWorldPosition3i)
Declaration
public static implicit operator WrappedWorldPosition3i(Vector3i pos)
Parameters
Returns
Inequality(WrappedWorldPosition3i, WrappedWorldPosition3i)
Declaration
public static bool operator !=(WrappedWorldPosition3i left, WrappedWorldPosition3i right)
Parameters
Returns
Type |
Description |
System.Boolean |
|
Implements
Extension Methods